| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- package com.ydtech.modules.esm.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.ydtech.exception.SystemException;
- import com.ydtech.modules.admin.model.SysUser;
- import com.ydtech.modules.admin.model.vo.SysReferrerVo;
- import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
- import com.ydtech.modules.admin.service.SysUserService;
- import com.ydtech.modules.base.model.dto.PageDto;
- import com.ydtech.modules.base.model.vo.PageVo;
- import com.ydtech.modules.esm.dao.EsmUserReferrerMapper;
- import com.ydtech.modules.esm.model.EsmUserReferrer;
- import com.ydtech.modules.esm.model.vo.EsmTeamPolicyVO;
- import com.ydtech.modules.esm.model.vo.EsmUserPolicyVO;
- import com.ydtech.modules.esm.service.EsmUserReferrerService;
- import com.ydtech.utils.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.core.RowCallbackHandler;
- import org.springframework.stereotype.Service;
- import javax.sql.DataSource;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.*;
- @Service
- public class EsmUserReferrerServiceImpl extends ServiceImpl<EsmUserReferrerMapper, EsmUserReferrer>
- implements EsmUserReferrerService {
- @Autowired
- public DataSource dataSource;
- @Autowired
- private SysUserService sysUserService;
- @Autowired
- private EsmUserReferrerService esmUserReferrerService;
- @Override
- public Map buildLevelInfo(SysUser agent) {
- Map m = new HashMap();
- LambdaQueryWrapper<EsmUserReferrer> lqw = new LambdaQueryWrapper<>();
- lqw.eq(EsmUserReferrer::getReferrerId, agent.getId());
- List<EsmUserReferrer> listAll = esmUserReferrerService.list(lqw);
- List<SysUser> oneList = new ArrayList<>();
- List<SysUser> oneTempList = new ArrayList<>();
- listAll.stream().forEach(a -> {
- SysUser sysUser = sysUserService.getById(a.getId());
- if (sysUser.getStatus() == 1) {
- oneList.add(sysUser);
- } else {
- oneTempList.add(sysUser);
- }
- });
- m.put("list1", oneList);
- m.put("list2", oneTempList);
- return m;
- }
- @Override
- public void buildLevelList(SysUser user, List<SysUser> oneList, List<SysUser> oneTempList) {
- Map<String, List<SysUser>> oneMap = buildLevelInfo(user);
- oneList.addAll(oneMap.get("list1"));
- oneTempList.addAll(oneMap.get("list2"));
- }
- @Override
- public void addReferrer(String referrerId, String nextPK) {
- if(referrerId.equals(nextPK)) throw new SystemException("推荐人不能是自己");
- //推荐人信息
- EsmUserReferrer referrer = getById(referrerId);
- EsmUserReferrer eur = new EsmUserReferrer();
- if (null == referrer) {
- //推荐人是团队长的时候,先固定队长是首级
- eur.setId(referrerId);
- eur.setLevel(0);
- eur.setAffiliation(referrerId);
- SysUser user = sysUserService.getById(referrerId);
- eur.setReferrerId(referrerId);
- eur.setReferrerName(user.getName());
- esmUserReferrerService.save(eur);
- //查询团队长的id,并将团队长作为推荐人
- referrer = getById(referrerId);
- eur.setId(nextPK);
- eur.setReferrerName(referrer.getReferrerName());
- eur.setReferrerId(referrer.getReferrerId());
- eur.setLevel(referrer.getLevel() + 1);
- eur.setAffiliation(referrer.getAffiliation());
- esmUserReferrerService.saveOrUpdate(eur);
- }else{
- //已经级联过的代理再作为推荐人的时候,推荐人是传入的推荐人信息
- SysUser user = sysUserService.getById(referrerId);
- eur.setId(nextPK);
- eur.setReferrerId(referrerId);
- eur.setReferrerName(user.getName());
- eur.setLevel(referrer.getLevel() + 1);
- eur.setAffiliation(referrer.getAffiliation());
- esmUserReferrerService.saveOrUpdate(eur);
- }
- }
- @Override
- public boolean deldeleteByReferrerId(String userId) {
- LambdaQueryWrapper<EsmUserReferrer> queryWrapper = new LambdaQueryWrapper();
- queryWrapper.eq(EsmUserReferrer::getId, userId);
- return remove(queryWrapper);
- }
- @Override
- public PageVo gainReferrerPage(PageDto pageDto) {
- PageVo<SysReferrerVo> pageVo = new PageVo();
- //获取分页数量
- int total = super.baseMapper.countReferrerByAffiliation(pageDto);
- pageVo.setTotalSize(total);
- PageVo.buildPageInfo(pageDto,pageVo);
- // //计算mysql分页起索引
- // int firstIndex = pageDto.getPageNum() == 1 ? 0 : (pageDto.getPageNum() - 1) * pageDto.getPageSize();
- //
- //
- // //计算mysql分页总页数
- // int totalPages = total % pageDto.getPageSize() == 0 ? total / pageDto.getPageSize() : total / pageDto.getPageSize() + 1;
- //
- //
- // //响应
- //
- // pageVo.setPageNum(pageDto.getPageNum());
- // pageVo.setPageSize(pageDto.getPageSize());
- // pageVo.setTotalPages(totalPages);
- //
- //
- // //请求替换分页开始索引
- // pageDto.setPageNum(firstIndex);
- pageVo.setContent(super.baseMapper.selectReferrerByAffiliation(pageDto));
- return pageVo;
- }
- /**
- * 人员业绩统计
- * @param whereCase
- * @param paramValues
- * @return
- */
- public List<EsmUserPolicyVO> countUserPolicy(String whereCase, Object[] paramValues){
- List<EsmUserPolicyVO> recordList = new ArrayList<EsmUserPolicyVO>();
- String sql = "select a.`level` teamlevel,b.name username,\n" +
- "sum(case when orderstatus in (1,2,3,4) then 1 else 0 end) ordernum,\n" +
- "sum(case when orderstatus=3 then 1 else 0 end) policynum,\n" +
- "sum(case when orderstatus=3 then sumpremium else 0 end) sumpremium\n" +
- "from v_user_order a left join sys_user b on a.id=b.id " + whereCase;
- sql += " group by a.`level`,b.name order by a.`level`";
- JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
- jdbcTemplate.query(sql, paramValues,
- new RowCallbackHandler() {
- @Override
- public void processRow(ResultSet resultSet) throws SQLException {
- EsmUserPolicyVO model = new EsmUserPolicyVO();
- model.setTeamlevel(resultSet.getString("teamlevel"));
- model.setUsername(resultSet.getString("username"));
- model.setOrdernum(resultSet.getInt("ordernum"));
- model.setPolicynum(resultSet.getInt("policynum"));
- model.setSumpremium(resultSet.getDouble("sumpremium"));
- recordList.add(model);
- }
- });
- return recordList;
- }
- /**
- * 团队业绩统计
- * @param whereCase
- * @param paramValues
- * @return
- */
- public List<EsmTeamPolicyVO> countTeamPolicy(String whereCase, Object[] paramValues){
- List<EsmTeamPolicyVO> recordList = new ArrayList<EsmTeamPolicyVO>();
- String sql = "select teamlevel,sum(teamnum) teamnum, sum(sumpremium) sumpremium,sum(usernum) usernum from \n" +
- "(select a.`level` teamlevel,count(distinct id) teamnum, 0 sumpremium,0 usernum\n" +
- "from v_user_order a\n" +
- "where a.affiliation=?\n" +
- "group by a.`level`\n" +
- "union all \n" +
- "select a.`level` teamlevel,0 teamnum, sum(sumpremium) sumpremium,count(distinct id) usernum\n" +
- "from v_user_order a\n" +
- "where a.affiliation=? and a.orderstatus=3\n" +
- "and a.createtime between ? and ? \n" +
- "group by a.`level`) t group by teamlevel";
- JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
- jdbcTemplate.query(sql, paramValues,
- new RowCallbackHandler() {
- @Override
- public void processRow(ResultSet resultSet) throws SQLException {
- EsmTeamPolicyVO model = new EsmTeamPolicyVO();
- model.setTeamlevel(resultSet.getString("teamlevel"));
- model.setTeamnum(resultSet.getInt("teamnum"));
- model.setUsernum(resultSet.getInt("usernum"));
- model.setSumpremium(resultSet.getDouble("sumpremium"));
- recordList.add(model);
- }
- });
- return recordList;
- }
- }
|