SysUserServiceImpl.java 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. package com.fdkankan.sale.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.dynamic.datasource.annotation.DS;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.fdkankan.common.util.Base64Converter;
  8. import com.fdkankan.common.util.SecurityUtil;
  9. import com.fdkankan.redis.util.RedisUtil;
  10. import com.fdkankan.sale.common.PageInfo;
  11. import com.fdkankan.sale.common.ResultCode;
  12. import com.fdkankan.sale.entity.RepairLog;
  13. import com.fdkankan.sale.entity.SysRole;
  14. import com.fdkankan.sale.entity.SysUser;
  15. import com.fdkankan.sale.entity.User;
  16. import com.fdkankan.sale.exception.BusinessException;
  17. import com.fdkankan.sale.mapper.ISysUserMapper;
  18. import com.fdkankan.sale.service.*;
  19. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  20. import com.fdkankan.sale.vo.request.SysUserParam;
  21. import com.fdkankan.sale.vo.response.ManageLoginResponse;
  22. import com.fdkankan.sale.vo.response.RepairerVo;
  23. import com.fdkankan.sale.vo.response.SysRoleVo;
  24. import com.fdkankan.sale.vo.response.SysUserVo;
  25. import org.apache.commons.lang3.StringUtils;
  26. import org.springframework.beans.BeanUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.stereotype.Service;
  29. import java.util.HashMap;
  30. import java.util.List;
  31. import java.util.Set;
  32. import java.util.stream.Collectors;
  33. /**
  34. * <p>
  35. * 服务实现类
  36. * </p>
  37. *
  38. * @author
  39. * @since 2022-12-09
  40. */
  41. @Service
  42. public class SysUserServiceImpl extends ServiceImpl<ISysUserMapper, SysUser> implements ISysUserService {
  43. @Autowired
  44. private ISysRoleService roleService;
  45. @Autowired
  46. private ISysMenuService sysMenuService;
  47. @Autowired
  48. private RedisUtil redisUtil;
  49. @Autowired
  50. private IRepairLogService repairLogService;
  51. @Override
  52. public SysUser getByUserName(String userName) {
  53. LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
  54. wrapper.eq(SysUser::getUserName,userName);
  55. List<SysUser> list = this.list(wrapper);
  56. if(list == null || list.size() <=0){
  57. return null;
  58. }
  59. return list.get(0);
  60. }
  61. @DS("db2")
  62. public SysUser getByUserNameDb2(String userName) {
  63. LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
  64. wrapper.eq(SysUser::getUserName,userName);
  65. List<SysUser> list = this.list(wrapper);
  66. if(list == null || list.size() <=0){
  67. return null;
  68. }
  69. return list.get(0);
  70. }
  71. @Override
  72. public ManageLoginResponse getUserByUserNameAndPassword(String userName, String password) {
  73. LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
  74. wrapper.eq(SysUser::getUserName,userName)
  75. .eq(SysUser::getPassword,password);
  76. List<SysUser> list = this.list(wrapper);
  77. if(list == null || list.size() <=0){
  78. return null;
  79. }
  80. SysUser sysUser = list.get(0);
  81. SysRole role = roleService.getById(sysUser.getRoleId());
  82. ManageLoginResponse loginVO = new ManageLoginResponse();
  83. BeanUtils.copyProperties(sysUser,loginVO);
  84. loginVO.setRoleId(role.getId());
  85. loginVO.setRoleName(role.getRoleName());
  86. sysMenuService.setRoleAndMenuCache(role,sysUser);
  87. return loginVO;
  88. }
  89. @Override
  90. @DS("db1")
  91. public void addOrUpdate(SysUser user,SysUserParam param) {
  92. SysUser user2 = this.getByUserName(param.getUserName());
  93. if(user2 !=null){
  94. throw new BusinessException(ResultCode.USER_EXIST);
  95. }
  96. user.setManageId(user.getId());
  97. user.setId(null);
  98. user.setRoleId(param.getRoleId());
  99. user.setCreateUserId(param.getCreateUserId());
  100. user.setUpdateTime(null);
  101. user.setDingAccount(param.getDingAccount());
  102. this.save(user);
  103. }
  104. @Override
  105. public PageInfo pageList(SysUserParam param) {
  106. Page<SysUserVo> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(),param.getPageSize()),param);
  107. return PageInfo.PageInfo(page);
  108. }
  109. @Override
  110. public HashMap<Long, Long> groupByRoleId() {
  111. HashMap<Long, Long> map = new HashMap<>();
  112. List<SysRoleVo> roleVos = this.getBaseMapper().groupByRoleId();
  113. for (SysRoleVo roleVo : roleVos) {
  114. map.put(roleVo.getId(),roleVo.getAdminCount());
  115. }
  116. return map;
  117. }
  118. @Override
  119. public HashMap<Long, SysUser> getByIds(Set<Long> sysUserIds) {
  120. HashMap<Long, SysUser> map = new HashMap<>();
  121. if(sysUserIds.size() >0){
  122. List<SysUser> sysUsers = this.listByIds(sysUserIds);
  123. sysUsers.forEach(entity-> map.put(entity.getId(),entity));
  124. }
  125. return map;
  126. }
  127. @Override
  128. public void saveByRedisKey(String redisKey) {
  129. String value = redisUtil.get(redisKey);
  130. if(StringUtils.isBlank(value)){
  131. return;
  132. }
  133. ManageLoginResponse manageLoginResponse = JSONObject.parseObject(value, ManageLoginResponse.class);
  134. SysUser sysUser = this.getByManageId(manageLoginResponse.getId());
  135. if(sysUser == null){
  136. sysUser= new SysUser();
  137. BeanUtils.copyProperties(manageLoginResponse,sysUser);
  138. sysUser.setId(null);
  139. sysUser.setRoleId(null);
  140. sysUser.setManageId(manageLoginResponse.getId());
  141. sysUser.setCreateTime(null);
  142. this.save(sysUser);
  143. }
  144. }
  145. @Override
  146. public SysUser getByManageId(Long userId) {
  147. LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
  148. wrapper.eq(SysUser::getManageId,userId);
  149. return this.getOne(wrapper);
  150. }
  151. @Override
  152. public HashMap<Long, SysUser> getMapByIds(Set<Long> userIds) {
  153. HashMap<Long,SysUser> map = new HashMap<>();
  154. if(userIds == null || userIds.size() <= 0){
  155. return map;
  156. }
  157. LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
  158. wrapper.in(SysUser::getId,userIds);
  159. List<SysUser> list = this.list(wrapper);
  160. list.forEach(entity -> map.put(entity.getId(),entity));
  161. return map;
  162. }
  163. @Override
  164. @DS("db2")
  165. public Object allList(String userName) {
  166. LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
  167. if(StringUtils.isNotBlank(userName)){
  168. wrapper.like(SysUser::getUserName,userName);
  169. }
  170. wrapper.eq(SysUser::getStatus,1);
  171. return this.list(wrapper);
  172. }
  173. @Override
  174. public void setSaleNameAndRepairManName(List<RepairerVo> records) {
  175. Set<Long> saleIds =records.stream().map(RepairerVo::getSaleId).collect(Collectors.toSet());
  176. Set<Long> repairManIds =records.stream().map(RepairerVo::getRepairManId).collect(Collectors.toSet());
  177. saleIds.addAll(repairManIds);
  178. HashMap<Long, SysUser> userHashMap = this.getMapByIds(saleIds);
  179. for (RepairerVo record : records) {
  180. if(record.getSaleId() != null && userHashMap.get(record.getSaleId()) !=null){
  181. record.setSaleName(userHashMap.get(record.getSaleId()).getNickName());
  182. }
  183. if(record.getRepairManId() != null && userHashMap.get(record.getRepairManId()) !=null){
  184. record.setRepairManName(userHashMap.get(record.getRepairManId()).getNickName());
  185. }
  186. }
  187. }
  188. @Override
  189. public void delUser(Long id) {
  190. List<RepairLog> list = repairLogService.getBySysUserId(id);
  191. HashMap<String,Integer> statusMap = new HashMap<>();
  192. for (RepairLog repairLog : list) {
  193. if(statusMap.get(repairLog.getRepairId()) == null){
  194. statusMap.put(repairLog.getRepairId(),repairLog.getRepairStatus());
  195. }else {
  196. Integer status = statusMap.get(repairLog.getRepairId());
  197. if(repairLog.getRepairStatus() > status ){
  198. statusMap.put(repairLog.getRepairId(),repairLog.getRepairStatus());
  199. }
  200. }
  201. }
  202. for (Integer maxStatus : statusMap.values()) {
  203. if(maxStatus != null && maxStatus <11 ){
  204. throw new BusinessException(ResultCode.DEL_USER_REPAIR);
  205. }
  206. }
  207. this.removeById(id);
  208. }
  209. @Override
  210. public void updateUser(SysUserParam param) {
  211. if(param.getId() == null || param.getStatus() == null){
  212. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  213. }
  214. LambdaUpdateWrapper<SysUser> wrapper = new LambdaUpdateWrapper<>();
  215. wrapper.eq(SysUser::getId,param.getId());
  216. wrapper.set(SysUser::getStatus,param.getStatus());
  217. wrapper.set(SysUser::getDingAccount,param.getDingAccount());
  218. this.update(wrapper);
  219. }
  220. @Override
  221. public List<SysUser> getByRoleType(Integer roleType) {
  222. List<SysRole> roles = roleService.getByRoleType(roleType);
  223. if(roles == null || roles.size()<=0){
  224. return null;
  225. }
  226. List<Long> collect = roles.stream().map(SysRole::getId).collect(Collectors.toList());
  227. LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
  228. wrapper.in(SysUser::getRoleId,collect);
  229. return this.list(wrapper);
  230. }
  231. @Override
  232. public Long getU8UserId() {
  233. List<SysUser> sysUsers = this.getByRoleType(6);
  234. if(sysUsers == null || sysUsers.size() <= 0 ){
  235. return null;
  236. }
  237. return sysUsers.get(0).getId();
  238. }
  239. @Override
  240. public void updateByDb2(SysUser data) {
  241. LambdaUpdateWrapper<SysUser> wrapper = new LambdaUpdateWrapper<>();
  242. wrapper.eq(SysUser::getManageId,data.getId());
  243. wrapper.set(SysUser::getNickName,data.getNickName());
  244. this.update(wrapper);
  245. }
  246. }