EsmUserController.java 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. package com.ydtech.modules.esm.controller;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.ydtech.core.page.HttpResult;
  7. import com.ydtech.core.page.PageRequest;
  8. import com.ydtech.modules.admin.model.SysDept;
  9. import com.ydtech.modules.admin.model.SysUser;
  10. import com.ydtech.modules.admin.model.SysUserRole;
  11. import com.ydtech.modules.admin.model.dto.SysUserDto;
  12. import com.ydtech.modules.admin.service.SysDeptService;
  13. import com.ydtech.modules.admin.service.SysUserRoleService;
  14. import com.ydtech.modules.admin.service.SysUserService;
  15. import com.ydtech.modules.base.controller.BaseController;
  16. import com.ydtech.modules.esm.model.EsmUserReferrer;
  17. import com.ydtech.modules.esm.model.QueryChannel;
  18. import com.ydtech.modules.esm.model.QueryChannelParam;
  19. import com.ydtech.modules.esm.model.vo.*;
  20. import com.ydtech.modules.esm.service.EsmUserReferrerService;
  21. import com.ydtech.utils.StringUtils;
  22. import io.swagger.annotations.Api;
  23. import io.swagger.annotations.ApiOperation;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.web.bind.annotation.PostMapping;
  26. import org.springframework.web.bind.annotation.RequestBody;
  27. import org.springframework.web.bind.annotation.RequestMapping;
  28. import org.springframework.web.bind.annotation.RestController;
  29. import javax.annotation.Resource;
  30. import java.util.ArrayList;
  31. import java.util.List;
  32. import java.util.Map;
  33. import java.util.function.Function;
  34. import java.util.stream.Collectors;
  35. @RestController
  36. @Api(tags = "业务用户控制器")
  37. @RequestMapping("esm/user")
  38. public class EsmUserController extends BaseController {
  39. @Resource
  40. private SysUserService sysUserService;
  41. @Resource
  42. private EsmUserReferrerService esmUserReferrerService;
  43. @Resource
  44. private SysDeptService sysDeptService;
  45. @Resource
  46. private SysUserRoleService sysUserRoleService;
  47. /**
  48. * 查询团队人数:我的团队人数,一级团队人数,二级团队人数,三级团队人数,临时用户人数
  49. *
  50. * @author: lig
  51. * @date: 2023年07月03日 0003
  52. */
  53. @ApiOperation(value = "查询团队人数")
  54. @PostMapping("/queryTeamNum")
  55. public HttpResult queryTeamNum(@RequestBody SysUserDto dto) {
  56. List<TeamUserVO> teamList = new ArrayList<>();
  57. LambdaQueryWrapper<SysUserRole> userRoleLqw = new LambdaQueryWrapper<>();
  58. userRoleLqw.select(SysUserRole::getUserId);
  59. //添加团队长角色
  60. userRoleLqw.in(SysUserRole::getRoleId,20,21);
  61. userRoleLqw.eq(StringUtils.isNotEmpty(dto.getUserId()),SysUserRole::getUserId,dto.getUserId());
  62. // List<SysUserRole> userRoleList = sysUserRoleService.list(userRoleLqw);
  63. // List<String> strings = userRoleList.stream().map(x -> x.getUserId() + "").collect(Collectors.toList());
  64. Page page = new Page(dto.getPageNum(), dto.getPageSize());
  65. Page<SysUser> pageData = esmUserReferrerService.getUserPage(page,dto);
  66. //用户ID 代理人角色
  67. //Page<SysUserRole> pageData = sysUserRoleService.page(page, userRoleLqw);
  68. List<String> longs = new ArrayList<>();
  69. pageData.getRecords().forEach(x ->{
  70. longs.add(x.getId());
  71. });
  72. List<SysUser> userList = new ArrayList<>();
  73. userList = pageData.getRecords();
  74. userList.forEach(a ->{
  75. TeamUserVO vo = new TeamUserVO();
  76. List<SysUser> oneList = new ArrayList<>();
  77. List<SysUser> oneTempList = new ArrayList<>();
  78. List<SysUser> twoList = new ArrayList<>();
  79. List<SysUser> twoTempList = new ArrayList<>();
  80. List<SysUser> threeList = new ArrayList<>();
  81. List<SysUser> threeTempList = new ArrayList<>();
  82. //一级
  83. esmUserReferrerService.buildLevelList(a,oneList,oneTempList);
  84. oneList.forEach(b ->{
  85. //二级
  86. esmUserReferrerService.buildLevelList(b,twoList,twoTempList);
  87. });
  88. vo.setLevel1num(oneList.size());
  89. vo.setLevel2num(twoList.size());
  90. //临时人数
  91. vo.setTempnum(oneTempList.size() + twoTempList.size() );
  92. //我的团队数
  93. vo.setTeamnum(vo.getTempnum() + oneList.size() + twoList.size());
  94. vo.setId(a.getId());
  95. vo.setName(a.getName());
  96. vo.setMobile(a.getMobile());
  97. // vo.setSex(a.getSex());
  98. SysDept sysDept = sysDeptService.getById(a.getDeptId());
  99. if(null != sysDept){
  100. vo.setDeptId(sysDept.getId());
  101. vo.setDeptName(sysDept.getName());
  102. }
  103. teamList.add(vo);
  104. });
  105. pageData.setRecords(userList);
  106. Page<TeamUserVO> resultData = new Page<TeamUserVO>();
  107. resultData.setCurrent(pageData.getCurrent());
  108. resultData.setSize(pageData.getSize());
  109. resultData.setTotal(pageData.getTotal());
  110. resultData.setPages(pageData.getPages());
  111. resultData.setRecords(teamList);
  112. return HttpResult.ok(resultData);
  113. }
  114. @ApiOperation(value = "查询渠道人数")
  115. @PostMapping(value = "/queryChannelNum")
  116. public HttpResult queryChannelNum(@RequestBody QueryChannelParam queryChannelParam){
  117. Page page = new Page(queryChannelParam.getPageNum(), queryChannelParam.getPageSize());
  118. QueryChannel queryChannel = new QueryChannel().convert(queryChannelParam);
  119. Page<QueryChannel> pageData = esmUserReferrerService.getQueryChannelPage(page,queryChannel);
  120. return HttpResult.ok(pageData);
  121. }
  122. /**
  123. * 团队业绩统计
  124. *
  125. * @param record
  126. * @return
  127. */
  128. @PostMapping("/queryUserCount")
  129. public HttpResult<EsmUserCountVO> queryUserCount(@RequestBody TeamUserQryVO record){
  130. if (StringUtils.isNullOrEmpty(record.getStartdate()) || StringUtils.isNullOrEmpty(record.getEnddate())) {
  131. return HttpResult.error("起止时间不能为空!");
  132. }
  133. String userid =getUserId();//获取登录用户
  134. record.setId(userid);
  135. SysUserRole sysUser=sysUserRoleService.query().eq("user_id",userid).list().get(0);
  136. if(!"20".equals(String.valueOf(sysUser.getRoleId()))&&!"21".equals(String.valueOf(sysUser.getRoleId()))){
  137. return HttpResult.error("只有团队长和代理角色可以查询");
  138. }
  139. // 修改时间查询问题
  140. record.setStartdate(record.getStartdate() + " 00:00:00");
  141. record.setEnddate(record.getEnddate() + " 23:59:59");
  142. EsmUserCountVO esmUserCountVO = esmUserReferrerService.queryUserCount(record);
  143. return HttpResult.ok(esmUserCountVO);
  144. }
  145. /**
  146. * 团队业绩统计
  147. *
  148. * @param record
  149. * @return
  150. */
  151. @PostMapping("/queryTeamPolicy")
  152. public HttpResult queryTeamPolicy(@RequestBody TeamUserQryVO record){
  153. StringBuffer whereStr = new StringBuffer();
  154. ArrayList<String> params = new ArrayList<String>();
  155. if (StringUtils.isNullOrEmpty(record.getId())) {
  156. return HttpResult.error("用户ID不能为空!");
  157. }
  158. if (StringUtils.isNullOrEmpty(record.getStartdate()) || StringUtils.isNullOrEmpty(record.getEnddate())) {
  159. return HttpResult.error("起止时间不能为空!");
  160. }
  161. params.add(record.getId());
  162. params.add(record.getId());
  163. params.add(record.getId());
  164. params.add(record.getStartdate());
  165. params.add(record.getEnddate());
  166. List<EsmTeamPolicyVO> list = esmUserReferrerService.countTeamPolicy(whereStr.toString(), params.toArray());
  167. return HttpResult.ok(list);
  168. }
  169. /**
  170. * 人员业绩统计
  171. *
  172. * @param record
  173. * @return
  174. */
  175. @PostMapping("/queryUserPolicy")
  176. public HttpResult countUserPolicy(@RequestBody TeamUserQryVO record){
  177. StringBuffer whereStr = new StringBuffer();
  178. ArrayList<String> params = new ArrayList<String>();
  179. if (StringUtils.isNullOrEmpty(record.getId())) {
  180. return HttpResult.error("用户ID不能为空!");
  181. }
  182. if (StringUtils.isNullOrEmpty(record.getStartdate()) || StringUtils.isNullOrEmpty(record.getEnddate())) {
  183. return HttpResult.error("起止时间不能为空!");
  184. }
  185. params.add(record.getStartdate());
  186. params.add(record.getEnddate());
  187. params.add(record.getId());
  188. List<EsmUserPolicyVO> list = esmUserReferrerService.countUserPolicy(whereStr.toString(), params.toArray());
  189. return HttpResult.ok(list);
  190. }
  191. /**
  192. * 团队业绩统计-指定用户查询
  193. *
  194. * @param record
  195. * @return
  196. */
  197. @PostMapping("/queryUserCountForUser")
  198. public HttpResult<List<EsmUserPolicyForUserVO>> queryUserCountForUser(@RequestBody TeamUserQryVO record){
  199. if (StringUtils.isNullOrEmpty(record.getId()) || StringUtils.isNullOrEmpty(record.getStartdate()) ||
  200. StringUtils.isNullOrEmpty(record.getEnddate())) {
  201. return HttpResult.error("起止时间/用户id不能为空!");
  202. }
  203. return HttpResult.ok(esmUserReferrerService.queryUserCountForUser(record));
  204. }
  205. }