| | |
| | | package cn.huge.module.ctuser.service; |
| | | |
| | | import cn.huge.base.common.exception.MethodException; |
| | | import cn.huge.base.common.exception.ServiceException; |
| | | import cn.huge.base.common.utils.DateUtils; |
| | | import cn.huge.base.common.utils.IdUtils; |
| | | import cn.huge.base.common.utils.ObjectUtils; |
| | | import cn.huge.module.client.api.impl.UtilsClientImpl; |
| | | import cn.huge.module.constant.BaseConsts; |
| | | import cn.huge.module.ctuser.dao.mapper.CtUserMapper; |
| | | import cn.huge.module.ctuser.domain.po.CtUnit; |
| | | import cn.huge.module.ctuser.domain.po.CtUser; |
| | | import cn.huge.module.cust.constant.UserBaseConsts; |
| | | import cn.huge.module.cust.dto.CtUserDTO; |
| | | import cn.huge.module.redis.constant.RedisKeyConsts; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.apache.commons.collections.CollectionUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.data.domain.PageImpl; |
| | | import org.springframework.data.domain.PageRequest; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.DigestUtils; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @title: 客户用户表业务逻辑处理 |
| | | * @Description 客户用户表业务逻辑处理 |
| | | * @company hugeinfo |
| | | * @author liyj |
| | | * @Time 2024-08-17 15:30:57 |
| | | * @Time 2024-08-19 20:04:19 |
| | | * @version 1.0.0 |
| | | */ |
| | | @Slf4j |
| | |
| | | public class CtUserService extends ServiceImpl<CtUserMapper, CtUser>{ |
| | | |
| | | @Autowired |
| | | private RedisTemplate<String, Object> redisTemplate; |
| | | |
| | | @Autowired |
| | | private CtUserMapper mapper; |
| | | |
| | | @Autowired |
| | | private UtilsClientImpl utilsClient; |
| | | |
| | | @Autowired |
| | | private CtUnitService ctUnitService; |
| | | |
| | | @Autowired |
| | | private CtUseroleService ctUseroleService; |
| | | |
| | | /** |
| | | * 更新对象 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 新增或更新对象 |
| | | * @param ctUser 实体对象 |
| | | */ |
| | | public void saveCtUser(CtUser ctUser){ |
| | | * 新增对象 |
| | | * @param ctUser 实体对象 |
| | | */ |
| | | public void saveToRedis(CtUser ctUser){ |
| | | try{ |
| | | Date nowDate = DateUtils.getMowDate(); |
| | | // 判断是否新增 |
| | | if (IdUtils.checkNewId(ctUser.getId())){ |
| | | ctUser.setId(utilsClient.getNewTimeId()); |
| | | ctUser.setCreateTime(nowDate); |
| | | } |
| | | ctUser.setUpdateTime(nowDate); |
| | | this.saveOrUpdate(ctUser); |
| | | mapper.insert(ctUser); |
| | | // 清楚redis缓存 |
| | | String key = RedisKeyConsts.CTUSER + ctUser.getId(); |
| | | redisTemplate.delete(key); |
| | | // 重新set |
| | | redisTemplate.opsForValue().set(key, ctUser); |
| | | }catch (Exception e){ |
| | | log.error("[CtUserService.saveCtUser]调用失败,异常信息:"+e, e); |
| | | throw new ServiceException("CtUserService.saveCtUser", e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 更新对象 |
| | | * @param ctUser 实体对象 |
| | | */ |
| | | public void updateToRedis(CtUser ctUser){ |
| | | try{ |
| | | mapper.updateById(ctUser); |
| | | // 清楚redis缓存 |
| | | String key = RedisKeyConsts.CTUSER + ctUser.getId(); |
| | | redisTemplate.delete(key); |
| | | // 重新set |
| | | redisTemplate.opsForValue().set(key, ctUser); |
| | | }catch (Exception e){ |
| | | log.error("[CtUserService.saveCtUser]调用失败,异常信息:"+e, e); |
| | | throw new ServiceException("CtUserService.saveCtUser", e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 根据id查询 |
| | | * @param id 编号 |
| | | * @return |
| | | */ |
| | | public CtUser getByIdFromRedis(String id){ |
| | | String key = RedisKeyConsts.CTUSER + id; |
| | | // 从redis获取 |
| | | CtUser ctUser = (CtUser) redisTemplate.opsForValue().get(key); |
| | | if (ObjectUtils.isEmpty(ctUser)){ |
| | | ctUser = mapper.selectById(id); |
| | | if (ObjectUtils.isNotEmpty(ctUser)){ |
| | | redisTemplate.opsForValue().set(key, ctUser); |
| | | } |
| | | } |
| | | return ctUser; |
| | | } |
| | | |
| | | /** |
| | | * web端-人员信息管理-新增/新用户信息 |
| | | * @param ctUser |
| | | * @param userId |
| | | */ |
| | | public void webSaveCtUser(CtUser ctUser, String userId) { |
| | | try { |
| | | // 获取当前登录用户 |
| | | CtUser loginUser = this.getByIdFromRedis(userId); |
| | | Date nowDate = DateUtils.getNowDate(); |
| | | |
| | | } catch (Exception e) { |
| | | log.error("service方法[CtUserService.webSaveCtUser]调用异常:" + e, e); |
| | | throw new MethodException(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 重写根据id获取用户 |
| | | * @param userId 登录用户编号 |
| | | * @return Object |
| | | */ |
| | | public CtUser getById(String userId) { |
| | | String loginUserId = ""; |
| | | if (userId.indexOf(BaseConsts.AND) != -1){ |
| | | String[] userIds = userId.split(BaseConsts.AND); |
| | | loginUserId = userIds[0]; |
| | | }else { |
| | | loginUserId = userId; |
| | | } |
| | | return mapper.selectById(loginUserId); |
| | | } |
| | | |
| | | /** |
| | | * 按条件分页查询 |
| | | * |
| | | * @param page 分页对象 |
| | | * @param terms 条件 |
| | | * @return Page |
| | | */ |
| | | public Page<CtUser> pageUserAndRole(PageRequest page, Map<String, Object> terms) { |
| | | long total = mapper.countQueryCtUser(terms); |
| | | List<CtUser> content = mapper.pageQueryCtUser(page, terms); |
| | | return new PageImpl<CtUser>(content, page, total); |
| | | } |
| | | |
| | | /** |
| | | * 获取当前登录用户,获取用户所有信息(用户信息、角色等) |
| | | * @param userId 登录用户编号 |
| | | * @return Object |
| | | */ |
| | | public CtUserDTO clientGetUserAll(String userId) { |
| | | String loginUserId = ""; |
| | | String loginRoleCode = ""; |
| | | if (userId.indexOf(BaseConsts.AND) != -1){ |
| | | String[] userIds = userId.split(BaseConsts.AND); |
| | | loginUserId = userIds[0]; |
| | | loginRoleCode = userIds[1]; |
| | | }else { |
| | | loginUserId = userId; |
| | | } |
| | | // 用户信息 |
| | | CtUser ctUser = mapper.selectById(loginUserId); |
| | | if (ObjectUtils.isNotEmpty(ctUser)){ |
| | | CtUnit ctUnit = ctUnitService.getById(ctUser.getUnitId()); |
| | | CtUserDTO ctUserDTO = new CtUserDTO(); |
| | | BeanUtils.copyProperties(ctUser, ctUserDTO); |
| | | if(ObjectUtils.isNotEmpty(ctUnit)){ |
| | | ctUserDTO.setUnitType(ctUnit.getUnitType()); |
| | | } |
| | | // 角色代码 |
| | | if (StringUtils.isEmpty(loginRoleCode)) { |
| | | List<String> roleCodeList = ctUseroleService.listRoleCode(loginUserId); |
| | | String userRole = roleCodeList.stream().map(String::valueOf).collect(Collectors.joining(",")); |
| | | ctUserDTO.setRoleCodes(userRole); |
| | | }else { |
| | | ctUserDTO.setRoleCodes(loginRoleCode); |
| | | } |
| | | return ctUserDTO; |
| | | }else { |
| | | return null; |
| | | } |
| | | } |
| | | } |