UserServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. package com.fdkankan.manage.service.impl;
  2. import java.util.Date;
  3. import java.util.*;
  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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  8. import com.fdkankan.common.util.Base64Converter;
  9. import com.fdkankan.common.util.SecurityUtil;
  10. import com.fdkankan.manage.common.CacheUtil;
  11. import com.fdkankan.manage.common.OssPath;
  12. import com.fdkankan.manage.common.ResultCode;
  13. import com.fdkankan.manage.entity.*;
  14. import com.fdkankan.manage.exception.BusinessException;
  15. import com.fdkankan.manage.common.PageInfo;
  16. import com.fdkankan.manage.httpClient.service.LaserService;
  17. import com.fdkankan.manage.mapper.IUserMapper;
  18. import com.fdkankan.manage.service.*;
  19. import com.fdkankan.manage.util.AesUtil;
  20. import com.fdkankan.manage.util.Dateutils;
  21. import com.fdkankan.manage.vo.request.SceneParam;
  22. import com.fdkankan.manage.vo.request.UserIncrementParam;
  23. import com.fdkankan.manage.vo.request.UserParam;
  24. import com.fdkankan.manage.vo.response.UserVo;
  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.beans.factory.annotation.Value;
  29. import org.springframework.stereotype.Service;
  30. import java.util.stream.Collectors;
  31. /**
  32. * <p>
  33. * 用户信息表 服务实现类
  34. * </p>
  35. *
  36. * @author
  37. * @since 2022-06-16
  38. */
  39. @Service
  40. public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements IUserService {
  41. @Autowired
  42. private IUserIncrementService userIncrementService;
  43. @Autowired
  44. private ICameraDetailService cameraDetailService;
  45. @Autowired
  46. private ISceneService sceneService;
  47. @Autowired
  48. private ISceneProService sceneProService;
  49. @Autowired
  50. private IScenePlusService scenePlusService;
  51. @Autowired
  52. private LaserService laserService;
  53. @Autowired
  54. private ISysUserService sysUserService;
  55. @Value("${fyun.host:https://4dkk.4dage.com/}")
  56. private String host;
  57. @Autowired
  58. private IJyUserService jyUserService;
  59. @Override
  60. public PageInfo pageList(UserParam param) {
  61. LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
  62. if(StringUtils.isNotBlank(param.getUserName())){
  63. wrapper.like(User::getUserName,param.getUserName());
  64. }
  65. if(StringUtils.isNotBlank(param.getEmail())){
  66. wrapper.like(User::getEmail,param.getEmail());
  67. }
  68. wrapper.orderByDesc(User::getCreateTime);
  69. Page<User> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
  70. List<User> records = page.getRecords();
  71. List<UserVo> userVo = getUserVo(records);
  72. Page<UserVo> pageVo = new Page<>(page.getCurrent(),page.getSize());
  73. pageVo.setTotal(page.getTotal());
  74. pageVo.setRecords(userVo);
  75. return PageInfo.PageInfo(pageVo);
  76. }
  77. @Override
  78. public void addDownNum(UserIncrementParam param) {
  79. User user = this.getById(param.getUserId());
  80. if(user == null){
  81. throw new BusinessException(ResultCode.USER_NOT_EXIST);
  82. }
  83. Integer totalNum = user.getDownloadNumTotal() == null ? 0 : user.getDownloadNumTotal() + param.getCount();
  84. user.setDownloadNumTotal(totalNum);
  85. this.updateById(user);
  86. }
  87. @Override
  88. public List<UserVo> userDetail(Integer userId) {
  89. User user = this.getById(userId);
  90. if(user!=null){
  91. return getUserVo(Arrays.asList(user));
  92. }
  93. return new ArrayList<>();
  94. }
  95. private List<UserVo> getUserVo(List<User> userList){
  96. List<UserVo> voList = new ArrayList<>();
  97. if(userList.size() >0){
  98. List<Long> userIdList = userList.parallelStream().map(User::getId).collect(Collectors.toList());
  99. Set<Long> sysUserIds = userList.stream().map(User::getSysUserId).collect(Collectors.toSet());
  100. HashMap<Long, SysUser> sysMap = sysUserService.getByIds(sysUserIds);
  101. HashMap<Long,Long> incrementCountMap = userIncrementService.getValidCountGroupByUserId(userIdList);
  102. HashMap<Long,Long> cameraCountMap = cameraDetailService.getCountGroupByUserId(userIdList);
  103. HashMap<Long,Long> sceneCountMap = sceneService.getCountGroupByUserId(userIdList);
  104. HashMap<Long,Long> sceneProCountMap = sceneProService.getCountGroupByUserId(userIdList,0);
  105. HashMap<Long,Long> scenePlusCountMap = scenePlusService.getCountGroupByUserId(userIdList,0);
  106. // HashMap<Long,Long> sceneProCountObjMap = sceneProService.getCountGroupByUserId(userIdList,1);
  107. // HashMap<Long,Long> scenePlusCountObjMap = scenePlusService.getCountGroupByUserId(userIdList,1);
  108. for (User user :userList) {
  109. long incrementCount = incrementCountMap.get(user.getId()) == null ? 0 : incrementCountMap.get(user.getId());
  110. long cameraCount = cameraCountMap.get(user.getId()) == null ? 0 : cameraCountMap.get(user.getId());
  111. long sceneCount = sceneCountMap.get(user.getId()) == null ? 0 : sceneCountMap.get(user.getId());
  112. long sceneProCount = sceneProCountMap.get(user.getId()) == null ? 0 : sceneProCountMap.get(user.getId());
  113. long scenePlusCount = scenePlusCountMap.get(user.getId()) == null ? 0 : scenePlusCountMap.get(user.getId());
  114. // long sceneProObjCount = sceneProCountObjMap.get(user.getId()) == null ? 0 : sceneProCountObjMap.get(user.getId());
  115. // long scenePlusObjCount = scenePlusCountObjMap.get(user.getId()) == null ? 0 : scenePlusCountObjMap.get(user.getId());
  116. Long ssNum = 0L;
  117. if(!CacheUtil.uploadType.equals("local")){
  118. SceneParam param = new SceneParam();
  119. param.setUserName(user.getUserName());
  120. PageInfo pageInfo = laserService.pageList(param);
  121. ssNum = pageInfo.getTotal();
  122. }
  123. UserVo vo = new UserVo();
  124. BeanUtils.copyProperties(user,vo);
  125. vo.setVip(incrementCount > 0 ? 1: 0);
  126. vo.setIncrementCount(incrementCount);
  127. vo.setSurDownNum(user.getDownloadNumTotal() - user.getDownloadNum());
  128. vo.setCameraCount(cameraCount);
  129. vo.setSceneNum(sceneCount + sceneProCount + scenePlusCount + ssNum);
  130. if(user.getSysUserId() != null){
  131. SysUser sysUser = sysMap.get(user.getSysUserId());
  132. if(sysUser != null){
  133. vo.setSysUserName(sysUser.getNickName());
  134. }
  135. }
  136. voList.add(vo);
  137. }
  138. }
  139. return voList;
  140. }
  141. @Override
  142. public HashMap<Long, User> getByIds(List<Long> userIds) {
  143. LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
  144. wrapper.in(User::getId,userIds);
  145. List<User> list = this.list(wrapper);
  146. HashMap<Long,User> map = new HashMap<>();
  147. list.forEach(entity -> map.put(entity.getId(),entity));
  148. return map;
  149. }
  150. @Override
  151. public List<User> getByUserName(String userName) {
  152. LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
  153. wrapper.eq(User::getUserName,userName);
  154. return this.list(wrapper);
  155. }
  156. @Override
  157. public Boolean checkUserName(String userName) {
  158. List<User> userList = this.getByUserName(userName);
  159. if(userList == null || userList.size() <=0){
  160. return false;
  161. }
  162. return true;
  163. }
  164. @Override
  165. public synchronized void addUcenterUser(UserParam param) {
  166. if( StringUtils.isBlank(param.getNickName()) || StringUtils.isBlank(param.getPassword())
  167. || StringUtils.isBlank(param.getRyId()) || StringUtils.isBlank(param.getRyNo())){
  168. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  169. }
  170. String password = AesUtil.desEncrypt(param.getPassword());
  171. String passwordMd5 = SecurityUtil.MD5(password);
  172. String passwordMd52 = SecurityUtil.MD52(password);
  173. JyUser jyUser = jyUserService.getByRyId(param.getRyId());
  174. if(jyUser == null){
  175. jyUser = new JyUser();
  176. }
  177. User user = this.addUser(jyUser.getUserId(),passwordMd5, param.getRyNo(), param.getNickName());
  178. SysUser sysUser = this.addSysUser(jyUser.getSysUserId(),passwordMd52, param.getRyNo(), param.getNickName());
  179. jyUser.setRyId(param.getRyId());
  180. jyUser.setRyPassword(passwordMd52);
  181. jyUser.setRyNo(param.getRyNo());
  182. jyUser.setRyNickName(param.getNickName());
  183. jyUser.setUserId(user.getId());
  184. jyUser.setSysUserId(sysUser.getId());
  185. jyUser.setUpdateTime(null);
  186. jyUserService.saveOrUpdate(jyUser);
  187. }
  188. private User addUser(Long userId,String passwordMd5,String userName,String nickName){
  189. User user = new User();
  190. user.setId(userId);
  191. user.setHead(host + OssPath.default_head);
  192. user.setPassword(passwordMd5);
  193. user.setStatus(1);
  194. user.setIsNotice(1);
  195. user.setRegisterTime(new Date());
  196. user.setUserName(userName);
  197. user.setNickName(nickName);
  198. user.setCountry("86");
  199. user.setDownloadNumTotal(1000);
  200. user.setDownloadNum(0);
  201. user.setCreateTime(Dateutils.getDate(new Date()));
  202. user.setRecStatus("A");
  203. user.setUpdateTime(Dateutils.getDate(new Date()));
  204. user.setUpdateTime(null);
  205. this.saveOrUpdate(user);
  206. return user;
  207. }
  208. private SysUser addSysUser(Long sysUserId,String passwordMd5, String ryNo, String nickName) {
  209. SysUser sysUser = new SysUser();
  210. sysUser.setId(sysUserId);
  211. sysUser.setUserName(ryNo);
  212. sysUser.setPassword(passwordMd5);
  213. sysUser.setNickName(nickName);
  214. if(sysUserId == null){
  215. sysUser.setRoleId(45L);
  216. }
  217. sysUser.setUpdateTime(null);
  218. sysUserService.saveOrUpdate(sysUser);
  219. return sysUser;
  220. }
  221. @Override
  222. public void delUcenterUser(UserParam userParam) {
  223. if(StringUtils.isNotBlank(userParam.getRyId())){
  224. throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
  225. }
  226. JyUser jyuser = jyUserService.getByRyId(userParam.getRyId());
  227. if(jyuser == null){
  228. throw new BusinessException(ResultCode.JY_ID_NO_EXIST);
  229. }
  230. //将相机和场景归属超管
  231. cameraDetailService.giveSuperAdmin(jyuser.getUserId());
  232. this.removeById(jyuser.getUserId());
  233. jyUserService.removeById(jyuser.getId());
  234. sysUserService.removeById(jyuser.getSysUserId());
  235. }
  236. }