|
@@ -16,21 +16,19 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollStreamUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
|
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
|
-import vip.xiaonuo.coldchain.modular.push.entity.WeChatUser;
|
|
|
-import vip.xiaonuo.coldchain.modular.push.utils.PushUtil;
|
|
|
-import vip.xiaonuo.common.enums.CommonDeleteFlagEnum;
|
|
|
-import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
|
|
-import vip.xiaonuo.common.exception.CommonException;
|
|
|
-import vip.xiaonuo.common.page.CommonPageRequest;
|
|
|
+import vip.xiaonuo.coldchain.modular.alarmuser.dto.ExtendUserDTO;
|
|
|
import vip.xiaonuo.coldchain.modular.alarmuser.entity.AlarmUser;
|
|
|
import vip.xiaonuo.coldchain.modular.alarmuser.mapper.AlarmUserMapper;
|
|
|
import vip.xiaonuo.coldchain.modular.alarmuser.param.AlarmUserAddParam;
|
|
@@ -38,35 +36,87 @@ import vip.xiaonuo.coldchain.modular.alarmuser.param.AlarmUserEditParam;
|
|
|
import vip.xiaonuo.coldchain.modular.alarmuser.param.AlarmUserIdParam;
|
|
|
import vip.xiaonuo.coldchain.modular.alarmuser.param.AlarmUserPageParam;
|
|
|
import vip.xiaonuo.coldchain.modular.alarmuser.service.AlarmUserService;
|
|
|
+import vip.xiaonuo.coldchain.modular.push.entity.WeChatUser;
|
|
|
+import vip.xiaonuo.coldchain.modular.push.utils.PushUtil;
|
|
|
+import vip.xiaonuo.common.enums.CommonDeleteFlagEnum;
|
|
|
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
|
|
+import vip.xiaonuo.common.exception.CommonException;
|
|
|
+import vip.xiaonuo.common.listener.CommonDataChangeEventCenter;
|
|
|
+import vip.xiaonuo.common.page.CommonPageRequest;
|
|
|
+import vip.xiaonuo.common.util.CommonAvatarUtil;
|
|
|
+import vip.xiaonuo.common.util.CommonCryptogramUtil;
|
|
|
+import vip.xiaonuo.dev.api.DevConfigApi;
|
|
|
+import vip.xiaonuo.sys.core.enums.SysDataTypeEnum;
|
|
|
+import vip.xiaonuo.sys.modular.user.entity.SysUser;
|
|
|
+import vip.xiaonuo.sys.modular.user.enums.SysUserStatusEnum;
|
|
|
+import vip.xiaonuo.sys.modular.user.service.SysUserService;
|
|
|
+import vip.xiaonuo.sys.modular.user.service.impl.SysUserServiceImpl;
|
|
|
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 报警接收人Service接口实现类
|
|
|
*
|
|
|
* @author 黄渊昊
|
|
|
- * @date 2024/12/02 15:41
|
|
|
+ * @date 2024/12/02 15:41
|
|
|
**/
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
public class AlarmUserServiceImpl extends ServiceImpl<AlarmUserMapper, AlarmUser> implements AlarmUserService {
|
|
|
|
|
|
+ @Resource
|
|
|
+ private SysUserService sysUserService;
|
|
|
+ @Resource
|
|
|
+ private DevConfigApi devConfigApi;
|
|
|
+
|
|
|
@Override
|
|
|
- public Page<AlarmUser> page(AlarmUserPageParam alarmUserPageParam) {
|
|
|
+ public Page<ExtendUserDTO> page(AlarmUserPageParam alarmUserPageParam) {
|
|
|
SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
|
|
|
QueryWrapper<AlarmUser> queryWrapper = new QueryWrapper<AlarmUser>().checkSqlInjection();
|
|
|
- if(ObjectUtil.isNotEmpty(alarmUserPageParam.getNickName())) {
|
|
|
- queryWrapper.lambda().like(AlarmUser::getNickName, alarmUserPageParam.getNickName());
|
|
|
- }
|
|
|
- if(ObjectUtil.isAllNotEmpty(alarmUserPageParam.getSortField(), alarmUserPageParam.getSortOrder())) {
|
|
|
+ queryWrapper.lambda().like(StrUtil.isNotBlank(alarmUserPageParam.getNickName()), AlarmUser::getNickName, alarmUserPageParam.getNickName());
|
|
|
+ if (ObjectUtil.isAllNotEmpty(alarmUserPageParam.getSortField(), alarmUserPageParam.getSortOrder())) {
|
|
|
CommonSortOrderEnum.validate(alarmUserPageParam.getSortOrder());
|
|
|
queryWrapper.orderBy(true, alarmUserPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
|
|
|
StrUtil.toUnderlineCase(alarmUserPageParam.getSortField()));
|
|
|
} else {
|
|
|
- queryWrapper.lambda().orderByAsc(AlarmUser::getId);
|
|
|
+ queryWrapper.lambda().orderByDesc(AlarmUser::getCreateTime);
|
|
|
+ }
|
|
|
+ queryWrapper.lambda().eq(AlarmUser::getCreateOrg, loginUser.getOrgId()).eq(AlarmUser::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
|
|
|
+ Page<AlarmUser> page = this.page(CommonPageRequest.defaultPage(), queryWrapper);
|
|
|
+ if (page.getTotal() < 1) {
|
|
|
+ return Page.of(page.getCurrent(), page.getSize());
|
|
|
+ }
|
|
|
+
|
|
|
+ Page<ExtendUserDTO> extendUserDTOPage = Page.of(page.getCurrent(), page.getSize(), page.getTotal());
|
|
|
+ extendUserDTOPage.setRecords(alarmUser2ExtendUserDTO(page.getRecords()));
|
|
|
+ return extendUserDTOPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将AlarmUser转为ExtendUserDTO
|
|
|
+ */
|
|
|
+ private List<ExtendUserDTO> alarmUser2ExtendUserDTO(List<AlarmUser> alarmUserList) {
|
|
|
+ List<ExtendUserDTO> dtoList = BeanUtil.copyToList(alarmUserList, ExtendUserDTO.class);
|
|
|
+ Set<String> userIdSet = dtoList.stream().map(AlarmUser::getUserId).filter(StrUtil::isNotBlank).collect(Collectors.toSet());
|
|
|
+ if (userIdSet.isEmpty()) {
|
|
|
+ return dtoList;
|
|
|
}
|
|
|
- queryWrapper.lambda().eq(AlarmUser::getCreateOrg,loginUser.getOrgId()).eq(AlarmUser::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
|
|
|
- return this.page(CommonPageRequest.defaultPage(), queryWrapper);
|
|
|
+
|
|
|
+ //获取用户真实姓名
|
|
|
+ List<SysUser> sysUserList = sysUserService.list(new LambdaQueryWrapper<>(SysUser.class)
|
|
|
+ .in(SysUser::getId, userIdSet)
|
|
|
+ .eq(SysUser::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE));
|
|
|
+ Map<String, String> userNameMap = sysUserList.stream().collect(Collectors.toMap(SysUser::getId, SysUser::getName));
|
|
|
+ dtoList.forEach(dto -> {
|
|
|
+ if (StrUtil.isNotBlank(dto.getUserId())) {
|
|
|
+ dto.setName(userNameMap.get(dto.getUserId()));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return dtoList;
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@@ -81,6 +131,19 @@ public class AlarmUserServiceImpl extends ServiceImpl<AlarmUserMapper, AlarmUser
|
|
|
public void edit(AlarmUserEditParam alarmUserEditParam) {
|
|
|
AlarmUser alarmUser = this.queryEntity(alarmUserEditParam.getId());
|
|
|
BeanUtil.copyProperties(alarmUserEditParam, alarmUser);
|
|
|
+
|
|
|
+ // 判断是否有系统用户关联
|
|
|
+ if (StrUtil.isBlank(alarmUser.getUserId())) {
|
|
|
+ // 如果没有关联,则创建用户
|
|
|
+ SysUser sysUser = createSysUser(alarmUser, null, alarmUserEditParam.getName());
|
|
|
+ alarmUser.setUserId(sysUser.getId());
|
|
|
+ } else {
|
|
|
+ // 如果有关联,则修改用户姓名
|
|
|
+ SysUser sysUser = sysUserService.getById(alarmUser.getUserId());
|
|
|
+ sysUser.setName(alarmUserEditParam.getName());
|
|
|
+ sysUserService.updateById(sysUser);
|
|
|
+ }
|
|
|
+
|
|
|
this.updateById(alarmUser);
|
|
|
}
|
|
|
|
|
@@ -99,49 +162,95 @@ public class AlarmUserServiceImpl extends ServiceImpl<AlarmUserMapper, AlarmUser
|
|
|
@Override
|
|
|
public AlarmUser queryEntity(String id) {
|
|
|
AlarmUser alarmUser = this.getById(id);
|
|
|
- if(ObjectUtil.isEmpty(alarmUser)) {
|
|
|
+ if (ObjectUtil.isEmpty(alarmUser)) {
|
|
|
throw new CommonException("报警接收人不存在,id值为:{}", id);
|
|
|
}
|
|
|
return alarmUser;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<AlarmUser> myList() {
|
|
|
+ public List<ExtendUserDTO> myList() {
|
|
|
SaBaseLoginUser loginUser = StpLoginUserUtil.getLoginUser();
|
|
|
LambdaQueryWrapper<AlarmUser> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(AlarmUser::getCreateOrg,loginUser.getOrgId()).eq(AlarmUser::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
|
|
|
+ queryWrapper.eq(AlarmUser::getCreateOrg, loginUser.getOrgId()).eq(AlarmUser::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
|
|
|
List<AlarmUser> list = list(queryWrapper);
|
|
|
- return list;
|
|
|
+ return alarmUser2ExtendUserDTO(list);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public String getUserInfo(String code) {
|
|
|
+ public String getUserInfo(String code, String orgId, String name) {
|
|
|
WeChatUser userInfo = PushUtil.getUserInfo(code);
|
|
|
- log.info("获取用户信息……:{}", userInfo.getOpenid());
|
|
|
- if(ObjectUtil.isEmpty(userInfo)) {
|
|
|
- throw new CommonException("获取用户信息失败");
|
|
|
- }
|
|
|
+ log.info("获取用户信息openId:{}", userInfo.getOpenid());
|
|
|
+
|
|
|
List<AlarmUser> userList = getByOpenId(userInfo.getOpenid());
|
|
|
AlarmUser alarmUser = BeanUtil.copyProperties(userInfo, AlarmUser.class);
|
|
|
alarmUser.setOpenId(userInfo.getOpenid());
|
|
|
alarmUser.setUnionId(userInfo.getUnionid());
|
|
|
alarmUser.setNickName(userInfo.getNickname());
|
|
|
- if (!userList.isEmpty()) {
|
|
|
- for (AlarmUser user : userList) {
|
|
|
- alarmUser.setId(user.getId());
|
|
|
- updateById(alarmUser);
|
|
|
+ if (userList.isEmpty()) {
|
|
|
+ SysUser sysUser = createSysUser(alarmUser, orgId, name);
|
|
|
+ alarmUser.setUserId(sysUser.getId());
|
|
|
+ if (StrUtil.isNotEmpty(orgId)) {
|
|
|
+ alarmUser.setCreateOrg(orgId);
|
|
|
}
|
|
|
- return "您已绑定过该组织,已为您更新个人信息";
|
|
|
- } else {
|
|
|
- this.save(alarmUser);
|
|
|
+ save(alarmUser);
|
|
|
return "绑定成功!";
|
|
|
}
|
|
|
+
|
|
|
+ //更新用户信息
|
|
|
+ Map<String, SysUser> sysUserMap = new HashMap<>();
|
|
|
+ for (AlarmUser user : userList) {
|
|
|
+ String alarmUserId = user.getId();
|
|
|
+
|
|
|
+ //如果没有创建系统用户,则进行创建
|
|
|
+ if (StrUtil.isBlank(user.getUserId())) {
|
|
|
+ if (sysUserMap.containsKey(alarmUserId)) {
|
|
|
+ alarmUser.setUserId(sysUserMap.get(alarmUserId).getId());
|
|
|
+ } else {
|
|
|
+ SysUser sysUser = createSysUser(user, orgId, name);
|
|
|
+ sysUserMap.put(alarmUserId, sysUser);
|
|
|
+ alarmUser.setUserId(sysUser.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StrUtil.isNotEmpty(orgId)) {
|
|
|
+ alarmUser.setCreateOrg(orgId);
|
|
|
+ }
|
|
|
+ alarmUser.setId(alarmUserId);
|
|
|
+ updateById(alarmUser);
|
|
|
+ }
|
|
|
+ return "您已绑定过该组织,已为您更新个人信息";
|
|
|
}
|
|
|
|
|
|
- List<AlarmUser> getByOpenId(String openId) {
|
|
|
+ private List<AlarmUser> getByOpenId(String openId) {
|
|
|
LambdaQueryWrapper<AlarmUser> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(AlarmUser::getOpenId, openId)
|
|
|
.eq(AlarmUser::getDeleteFlag, CommonDeleteFlagEnum.NOT_DELETE);
|
|
|
return list(queryWrapper);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增系统用户
|
|
|
+ */
|
|
|
+ private SysUser createSysUser(AlarmUser alarmUser, String orgId, String name) {
|
|
|
+ //创建系统用户
|
|
|
+ SysUser sysUser = BeanUtil.copyProperties(alarmUser, SysUser.class);
|
|
|
+ sysUser.setId(IdWorker.getIdStr());
|
|
|
+ sysUser.setName(name);
|
|
|
+ if (StrUtil.isNotEmpty(orgId)) {
|
|
|
+ sysUser.setOrgId(orgId);
|
|
|
+ }
|
|
|
+ sysUser.setAvatar(CommonAvatarUtil.generateImg(sysUser.getName()));
|
|
|
+ // 设置默认密码
|
|
|
+ sysUser.setPassword(CommonCryptogramUtil.doHashValue(devConfigApi.getValueByKey(SysUserServiceImpl.SNOWY_SYS_DEFAULT_PASSWORD_KEY)));
|
|
|
+ // 设置排序码
|
|
|
+ sysUser.setSortCode(99);
|
|
|
+ // 设置状态
|
|
|
+ sysUser.setUserStatus(SysUserStatusEnum.ENABLE.getValue());
|
|
|
+ // 发布增加事件
|
|
|
+ CommonDataChangeEventCenter.doAddWithData(SysDataTypeEnum.USER.getValue(), JSONUtil.createArray().put(sysUser));
|
|
|
+ sysUserService.save(sysUser);
|
|
|
+
|
|
|
+ return sysUser;
|
|
|
+ }
|
|
|
}
|