EsmUserReferrerServiceImpl.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. package com.ydtech.modules.esm.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.ydtech.exception.SystemException;
  6. import com.ydtech.modules.admin.model.SysUser;
  7. import com.ydtech.modules.admin.model.vo.SysReferrerVo;
  8. import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
  9. import com.ydtech.modules.admin.service.SysUserService;
  10. import com.ydtech.modules.base.model.dto.PageDto;
  11. import com.ydtech.modules.base.model.vo.PageVo;
  12. import com.ydtech.modules.esm.dao.EsmUserReferrerMapper;
  13. import com.ydtech.modules.esm.model.EsmUserReferrer;
  14. import com.ydtech.modules.esm.model.vo.EsmTeamPolicyVO;
  15. import com.ydtech.modules.esm.model.vo.EsmUserPolicyVO;
  16. import com.ydtech.modules.esm.service.EsmUserReferrerService;
  17. import com.ydtech.utils.StringUtils;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.jdbc.core.JdbcTemplate;
  20. import org.springframework.jdbc.core.RowCallbackHandler;
  21. import org.springframework.stereotype.Service;
  22. import javax.sql.DataSource;
  23. import java.sql.ResultSet;
  24. import java.sql.SQLException;
  25. import java.util.*;
  26. @Service
  27. public class EsmUserReferrerServiceImpl extends ServiceImpl<EsmUserReferrerMapper, EsmUserReferrer>
  28. implements EsmUserReferrerService {
  29. @Autowired
  30. public DataSource dataSource;
  31. @Autowired
  32. private SysUserService sysUserService;
  33. @Autowired
  34. private EsmUserReferrerService esmUserReferrerService;
  35. @Override
  36. public Map buildLevelInfo(SysUser agent) {
  37. Map m = new HashMap();
  38. LambdaQueryWrapper<EsmUserReferrer> lqw = new LambdaQueryWrapper<>();
  39. lqw.eq(EsmUserReferrer::getReferrerId, agent.getId());
  40. List<EsmUserReferrer> listAll = esmUserReferrerService.list(lqw);
  41. List<SysUser> oneList = new ArrayList<>();
  42. List<SysUser> oneTempList = new ArrayList<>();
  43. listAll.stream().forEach(a -> {
  44. SysUser sysUser = sysUserService.getById(a.getId());
  45. if (sysUser.getStatus() == 1) {
  46. oneList.add(sysUser);
  47. } else {
  48. oneTempList.add(sysUser);
  49. }
  50. });
  51. m.put("list1", oneList);
  52. m.put("list2", oneTempList);
  53. return m;
  54. }
  55. @Override
  56. public void buildLevelList(SysUser user, List<SysUser> oneList, List<SysUser> oneTempList) {
  57. Map<String, List<SysUser>> oneMap = buildLevelInfo(user);
  58. oneList.addAll(oneMap.get("list1"));
  59. oneTempList.addAll(oneMap.get("list2"));
  60. }
  61. @Override
  62. public void addReferrer(String referrerId, String nextPK) {
  63. if(referrerId.equals(nextPK)) throw new SystemException("推荐人不能是自己");
  64. //推荐人信息
  65. EsmUserReferrer referrer = getById(referrerId);
  66. EsmUserReferrer eur = new EsmUserReferrer();
  67. if (null == referrer) {
  68. //推荐人是团队长的时候,先固定队长是首级
  69. eur.setId(referrerId);
  70. eur.setLevel(0);
  71. eur.setAffiliation(referrerId);
  72. SysUser user = sysUserService.getById(referrerId);
  73. eur.setReferrerId(referrerId);
  74. eur.setReferrerName(user.getName());
  75. esmUserReferrerService.save(eur);
  76. //查询团队长的id,并将团队长作为推荐人
  77. referrer = getById(referrerId);
  78. eur.setId(nextPK);
  79. eur.setReferrerName(referrer.getReferrerName());
  80. eur.setReferrerId(referrer.getReferrerId());
  81. eur.setLevel(referrer.getLevel() + 1);
  82. eur.setAffiliation(referrer.getAffiliation());
  83. esmUserReferrerService.saveOrUpdate(eur);
  84. }else{
  85. //已经级联过的代理再作为推荐人的时候,推荐人是传入的推荐人信息
  86. SysUser user = sysUserService.getById(referrerId);
  87. eur.setId(nextPK);
  88. eur.setReferrerId(referrerId);
  89. eur.setReferrerName(user.getName());
  90. eur.setLevel(referrer.getLevel() + 1);
  91. eur.setAffiliation(referrer.getAffiliation());
  92. esmUserReferrerService.saveOrUpdate(eur);
  93. }
  94. }
  95. @Override
  96. public boolean deldeleteByReferrerId(String userId) {
  97. LambdaQueryWrapper<EsmUserReferrer> queryWrapper = new LambdaQueryWrapper();
  98. queryWrapper.eq(EsmUserReferrer::getId, userId);
  99. return remove(queryWrapper);
  100. }
  101. @Override
  102. public PageVo gainReferrerPage(PageDto pageDto) {
  103. PageVo<SysReferrerVo> pageVo = new PageVo();
  104. //获取分页数量
  105. int total = super.baseMapper.countReferrerByAffiliation(pageDto);
  106. pageVo.setTotalSize(total);
  107. PageVo.buildPageInfo(pageDto,pageVo);
  108. // //计算mysql分页起索引
  109. // int firstIndex = pageDto.getPageNum() == 1 ? 0 : (pageDto.getPageNum() - 1) * pageDto.getPageSize();
  110. //
  111. //
  112. // //计算mysql分页总页数
  113. // int totalPages = total % pageDto.getPageSize() == 0 ? total / pageDto.getPageSize() : total / pageDto.getPageSize() + 1;
  114. //
  115. //
  116. // //响应
  117. //
  118. // pageVo.setPageNum(pageDto.getPageNum());
  119. // pageVo.setPageSize(pageDto.getPageSize());
  120. // pageVo.setTotalPages(totalPages);
  121. //
  122. //
  123. // //请求替换分页开始索引
  124. // pageDto.setPageNum(firstIndex);
  125. pageVo.setContent(super.baseMapper.selectReferrerByAffiliation(pageDto));
  126. return pageVo;
  127. }
  128. /**
  129. * 人员业绩统计
  130. * @param whereCase
  131. * @param paramValues
  132. * @return
  133. */
  134. public List<EsmUserPolicyVO> countUserPolicy(String whereCase, Object[] paramValues){
  135. List<EsmUserPolicyVO> recordList = new ArrayList<EsmUserPolicyVO>();
  136. String sql = "select a.`level` teamlevel,b.name username,\n" +
  137. "sum(case when orderstatus in (1,2,3,4) then 1 else 0 end) ordernum,\n" +
  138. "sum(case when orderstatus=3 then 1 else 0 end) policynum,\n" +
  139. "sum(case when orderstatus=3 then sumpremium else 0 end) sumpremium\n" +
  140. "from v_user_order a left join sys_user b on a.id=b.id " + whereCase;
  141. sql += " group by a.`level`,b.name order by a.`level`";
  142. JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  143. jdbcTemplate.query(sql, paramValues,
  144. new RowCallbackHandler() {
  145. @Override
  146. public void processRow(ResultSet resultSet) throws SQLException {
  147. EsmUserPolicyVO model = new EsmUserPolicyVO();
  148. model.setTeamlevel(resultSet.getString("teamlevel"));
  149. model.setUsername(resultSet.getString("username"));
  150. model.setOrdernum(resultSet.getInt("ordernum"));
  151. model.setPolicynum(resultSet.getInt("policynum"));
  152. model.setSumpremium(resultSet.getDouble("sumpremium"));
  153. recordList.add(model);
  154. }
  155. });
  156. return recordList;
  157. }
  158. /**
  159. * 团队业绩统计
  160. * @param whereCase
  161. * @param paramValues
  162. * @return
  163. */
  164. public List<EsmTeamPolicyVO> countTeamPolicy(String whereCase, Object[] paramValues){
  165. List<EsmTeamPolicyVO> recordList = new ArrayList<EsmTeamPolicyVO>();
  166. String sql = "select teamlevel,sum(teamnum) teamnum, sum(sumpremium) sumpremium,sum(usernum) usernum from \n" +
  167. "(select a.`level` teamlevel,count(distinct id) teamnum, 0 sumpremium,0 usernum\n" +
  168. "from v_user_order a\n" +
  169. "where a.affiliation=?\n" +
  170. "group by a.`level`\n" +
  171. "union all \n" +
  172. "select a.`level` teamlevel,0 teamnum, sum(sumpremium) sumpremium,count(distinct id) usernum\n" +
  173. "from v_user_order a\n" +
  174. "where a.affiliation=? and a.orderstatus=3\n" +
  175. "and a.createtime between ? and ? \n" +
  176. "group by a.`level`) t group by teamlevel";
  177. JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
  178. jdbcTemplate.query(sql, paramValues,
  179. new RowCallbackHandler() {
  180. @Override
  181. public void processRow(ResultSet resultSet) throws SQLException {
  182. EsmTeamPolicyVO model = new EsmTeamPolicyVO();
  183. model.setTeamlevel(resultSet.getString("teamlevel"));
  184. model.setTeamnum(resultSet.getInt("teamnum"));
  185. model.setUsernum(resultSet.getInt("usernum"));
  186. model.setSumpremium(resultSet.getDouble("sumpremium"));
  187. recordList.add(model);
  188. }
  189. });
  190. return recordList;
  191. }
  192. }