UserServiceImpl.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. package com.fdkankan.agent.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.fdkankan.agent.common.PageInfo;
  5. import com.fdkankan.agent.entity.User;
  6. import com.fdkankan.agent.mapper.IUserMapper;
  7. import com.fdkankan.agent.request.UserParam;
  8. import com.fdkankan.agent.response.UserVo;
  9. import com.fdkankan.agent.response.UserVoEn;
  10. import com.fdkankan.agent.service.*;
  11. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  12. import org.apache.commons.lang3.StringUtils;
  13. import org.springframework.beans.BeanUtils;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import javax.servlet.http.HttpServletRequest;
  17. import javax.servlet.http.HttpServletResponse;
  18. import java.time.LocalDateTime;
  19. import java.time.YearMonth;
  20. import java.util.*;
  21. import java.util.stream.Collectors;
  22. /**
  23. * <p>
  24. * 用户信息表 服务实现类
  25. * </p>
  26. *
  27. * @author
  28. * @since 2022-11-09
  29. */
  30. @Service
  31. public class UserServiceImpl extends ServiceImpl<IUserMapper, User> implements IUserService {
  32. @Autowired
  33. private IUserIncrementService userIncrementService;
  34. @Autowired
  35. private ICameraDetailService cameraDetailService;
  36. @Autowired
  37. private ISceneService sceneService;
  38. @Autowired
  39. private ISceneProService sceneProService;
  40. @Autowired
  41. private IScenePlusService scenePlusService;
  42. @Autowired
  43. IExcelService excelService;
  44. @Override
  45. public Boolean checkUserName(String userName) {
  46. User user = this.getByUserName(userName);
  47. if(user == null ){
  48. return false;
  49. }
  50. return true;
  51. }
  52. @Override
  53. public User getByUserName(String userName) {
  54. LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
  55. wrapper.eq(User::getUserName,userName);
  56. List<User> list = this.list(wrapper);
  57. if(list == null || list.size() <=0){
  58. return null;
  59. }
  60. return list.get(0);
  61. }
  62. @Override
  63. public List<User> getLikeByUserName(String userName) {
  64. LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
  65. wrapper.like(User::getUserName,userName);
  66. return this.list(wrapper);
  67. }
  68. @Override
  69. public HashMap<Long, User> getByIds(List<Long> userIds) {
  70. HashMap<Long,User> map = new HashMap<>();
  71. if(userIds.isEmpty()){
  72. return map;
  73. }
  74. LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
  75. wrapper.in(User::getId,userIds);
  76. List<User> list = this.list(wrapper);
  77. list.forEach(entity -> map.put(entity.getId(),entity));
  78. return map;
  79. }
  80. @Override
  81. public PageInfo pageList(UserParam param) {
  82. Page<User> page = this.getBaseMapper().pageList(new Page<>(param.getPageNum(), param.getPageSize()), param);
  83. List<User> records = page.getRecords();
  84. List<UserVo> userVo = getUserVo(records,param.getAgentId());
  85. Page<UserVo> pageVo = new Page<>(page.getCurrent(),page.getSize());
  86. pageVo.setTotal(page.getTotal());
  87. pageVo.setRecords(userVo);
  88. return PageInfo.PageInfo(pageVo);
  89. }
  90. @Override
  91. public void exportUserList(UserParam param, HttpServletRequest req, HttpServletResponse resp) {
  92. Page<User> page = this.getBaseMapper().pageList(new Page<>(1,100000), param);
  93. List<User> records = page.getRecords();
  94. List<Long> userIdList = records.parallelStream().map(User::getId).collect(Collectors.toList());
  95. HashMap<Long,Long> incrementCountMap = userIncrementService.getValidCountGroupByUserId(userIdList);
  96. List<UserVo> voList = new ArrayList<>();
  97. List<UserVoEn> voListEn = new ArrayList<>();
  98. for (User user : records) {
  99. long incrementCount = incrementCountMap.get(user.getId()) == null ? 0 : incrementCountMap.get(user.getId());
  100. if("en".equals(param.getLang())){
  101. UserVoEn vo = new UserVoEn();
  102. BeanUtils.copyProperties(user,vo);
  103. vo.setVip(incrementCount > 0 ? 1: 0);
  104. voListEn.add(vo);
  105. }else {
  106. UserVo vo = new UserVo();
  107. BeanUtils.copyProperties(user,vo);
  108. vo.setVip(incrementCount > 0 ? 1: 0);
  109. voList.add(vo);
  110. }
  111. }
  112. try {
  113. if("en".equals(param.getLang())){
  114. excelService.commonExport(req,resp,new Date().getTime()/1000 +"user",voListEn, UserVoEn.class);
  115. }else {
  116. excelService.commonExport(req,resp,new Date().getTime()/1000 +"用户管理",voList, UserVo.class);
  117. }
  118. } catch (Exception e) {
  119. throw new RuntimeException(e);
  120. }
  121. }
  122. private List<UserVo> getUserVo(List<User> userList, Integer agentId){
  123. List<UserVo> voList = new ArrayList<>();
  124. if(userList.size() >0){
  125. List<Long> userIdList = userList.parallelStream().map(User::getId).collect(Collectors.toList());
  126. HashMap<Long,Long> incrementCountMap = userIncrementService.getValidCountGroupByUserId(userIdList);
  127. HashMap<Long,Long> cameraCountMap = cameraDetailService.getCountGroupByUserId(userIdList,agentId);
  128. HashMap<Long,Long> sceneCountMap = sceneService.getCountGroupByUserId(userIdList);
  129. HashMap<Long,Long> sceneProCountMap = sceneProService.getCountGroupByUserId(userIdList,agentId);
  130. HashMap<Long,Long> scenePlusCountMap = scenePlusService.getCountGroupByUserId(userIdList,agentId);
  131. for (User user :userList) {
  132. long incrementCount = incrementCountMap.get(user.getId()) == null ? 0 : incrementCountMap.get(user.getId());
  133. long cameraCount = cameraCountMap.get(user.getId()) == null ? 0 : cameraCountMap.get(user.getId());
  134. long sceneCount = sceneCountMap.get(user.getId()) == null ? 0 : sceneCountMap.get(user.getId());
  135. long sceneProCount = sceneProCountMap.get(user.getId()) == null ? 0 : sceneProCountMap.get(user.getId());
  136. long scenePlusCount = scenePlusCountMap.get(user.getId()) == null ? 0 : scenePlusCountMap.get(user.getId());
  137. UserVo vo = new UserVo();
  138. BeanUtils.copyProperties(user,vo);
  139. vo.setVip(incrementCount > 0 ? 1: 0);
  140. vo.setIncrementCount(incrementCount);
  141. vo.setSurDownNum(user.getDownloadNumTotal() - user.getDownloadNum());
  142. vo.setCameraCount(cameraCount);
  143. vo.setSceneNum(sceneCount + sceneProCount + scenePlusCount );
  144. voList.add(vo);
  145. }
  146. }
  147. return voList;
  148. }
  149. @Override
  150. public Long countByLastM() {
  151. YearMonth lastMonth = YearMonth.now().minusMonths(1);
  152. LocalDateTime startDateTime = lastMonth.atDay(1).atStartOfDay(); // 上个月1号 00:00:00
  153. LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
  154. wrapper.isNotNull(User::getAgentKey);
  155. wrapper.between(User::getCreateTime, startDateTime, new Date());
  156. return this.count(wrapper);
  157. }
  158. }