SysPartnerServiceImpl.java 124 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179
  1. package com.ydtech.modules.admin.service.impl;
  2. import cn.dev33.satoken.session.SaSession;
  3. import cn.dev33.satoken.stp.StpUtil;
  4. import cn.hutool.core.bean.BeanUtil;
  5. import cn.hutool.core.collection.CollectionUtil;
  6. import com.alipay.api.AlipayApiException;
  7. import com.alipay.api.AlipayClient;
  8. import com.alipay.api.AlipayConfig;
  9. import com.alipay.api.DefaultAlipayClient;
  10. import com.alipay.api.request.AlipaySystemOauthTokenRequest;
  11. import com.alipay.api.response.AlipaySystemOauthTokenResponse;
  12. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  13. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  14. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  15. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  16. import com.ydtech.aop.exception.DescribeException;
  17. import com.ydtech.core.page.HttpResult;
  18. import com.ydtech.exception.SystemException;
  19. import com.ydtech.modules.admin.dao.*;
  20. import com.ydtech.modules.admin.model.*;
  21. import com.ydtech.modules.admin.model.dto.*;
  22. import com.ydtech.modules.admin.model.po.SysUserAccountHistory;
  23. import com.ydtech.modules.admin.model.vo.*;
  24. import com.ydtech.modules.admin.service.SysAgencyLeaderService;
  25. import com.ydtech.modules.admin.service.SysPartnerService;
  26. import com.ydtech.modules.admin.service.SysPremiumDetailsService;
  27. import com.ydtech.modules.admin.service.SysUserService;
  28. import com.ydtech.modules.base.controller.BaseController;
  29. import com.ydtech.modules.esm.dao.EsmUserReferrerMapper;
  30. import com.ydtech.modules.esm.model.EsmUserReferrer;
  31. import com.ydtech.modules.order.entity.BasePageResult;
  32. import com.ydtech.utils.StringUtils;
  33. import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
  34. import me.chanjar.weixin.common.error.WxErrorException;
  35. import me.chanjar.weixin.mp.api.WxMpService;
  36. import org.springframework.stereotype.Service;
  37. import org.springframework.transaction.annotation.Transactional;
  38. import org.springframework.util.ObjectUtils;
  39. import javax.annotation.Resource;
  40. import java.math.BigDecimal;
  41. import java.math.RoundingMode;
  42. import java.text.SimpleDateFormat;
  43. import java.util.*;
  44. import java.util.stream.Collectors;
  45. /**
  46. * 配置机构合伙人表(SysPartner)表服务实现类
  47. *
  48. * @author makejava
  49. * @since 2024-08-01 11:20:57
  50. */
  51. @Service("sysPartnerService")
  52. public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPartner> implements SysPartnerService {
  53. @Resource
  54. private SysPartnerMapper sysPartnerMapper;
  55. @Resource
  56. private SysRelationPersonMapper sysRelationPersonMapper;
  57. @Resource
  58. private SysAgencyLeaderMapper sysAgencyLeaderMapper;
  59. @Resource
  60. private SysDeptMapper sysDeptMapper;
  61. @Resource
  62. private SysUserMapper sysUserMapper;
  63. @Resource
  64. private SysUserService sysUserService;
  65. @Resource
  66. private SysAgencyFeeApprovalMapper sysAgencyFeeApprovalMapper;
  67. @Resource
  68. private SysAgencyLeaderService sysAgencyLeaderService;
  69. @Resource
  70. private SysPartnerAccountMapper sysPartnerAccountMapper;
  71. @Resource
  72. private SysPremiumDetailsMapper sysPremiumDetailsMapper;
  73. @Resource
  74. private SysPremiumDetailsService sysPremiumDetailsService;
  75. @Resource
  76. private SysUserAccountHistoryMapper sysUserAccountHistoryMapper;
  77. @Resource
  78. private SysPartnerConfigMapper sysPartnerConfigMapper;
  79. @Resource
  80. private SysProportionConfigMapper sysProportionConfigMapper;
  81. @Resource
  82. private EsmUserReferrerMapper esmUserReferrerMapper;
  83. @Resource
  84. private WxMpService wxMpService;
  85. @Override
  86. public List<SysPartner> queryRecommendAndPartner(String id) {
  87. List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1)
  88. .likeRight(SysPartner::getUserId, id).orderByDesc(SysPartner::getId));
  89. if (sysPartnerList.size() > 0) {
  90. for (SysPartner sysPartner : sysPartnerList) {
  91. SysUser sysUser = sysUserMapper.selectById(sysPartner.getUserId());
  92. sysPartner.setUserName(sysUser.getName());
  93. }
  94. }
  95. return sysPartnerList;
  96. }
  97. @Override
  98. public BasePageResult<SysUserPartner> queryByPage(SysPartnerPageDto sysPartnerPageDto) {
  99. Page<SysPartner> page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize());
  100. LambdaQueryWrapper<SysPartner> wrapper = new LambdaQueryWrapper<>();
  101. wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId());
  102. wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysPartner::getUserName, sysPartnerPageDto.getUserName());
  103. wrapper.likeRight(StringUtils.isNotEmpty(sysPartnerPageDto.getDeptId()), SysPartner::getUserId, sysPartnerPageDto.getDeptId());
  104. wrapper.eq(sysPartnerPageDto.getLevel() != null, SysPartner::getType, sysPartnerPageDto.getLevel());
  105. wrapper.orderByDesc(SysPartner::getId);
  106. Page<SysPartner> insOrdersPage = page(page, wrapper);
  107. List<SysPartner> records = insOrdersPage.getRecords();
  108. List<SysUserPartner> sysUserPartners = BeanUtil.copyToList(records, SysUserPartner.class);
  109. if (sysUserPartners.size() > 0) {
  110. for (SysUserPartner user : sysUserPartners) {
  111. SysUser sysUser1 = sysUserMapper.selectById(user.getUserId());
  112. user.setUserName(sysUser1.getName());
  113. user.setDeptId(sysUser1.getDeptId());
  114. SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
  115. .eq(SysDept::getId, sysUser1.getDeptId()).eq(SysDept::getDelFlag, 0));
  116. user.setParentId(sysDept.getParentId());
  117. user.setDeptName(sysDept.getName());
  118. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  119. .eq(SysPartner::getUserId, user.getUserId()));
  120. if (sysPartner != null) {
  121. user.setType(sysPartner.getType());
  122. String suggestId = sysPartner.getSuggestId();
  123. if (suggestId != null) {
  124. user.setSuggestId(sysPartner.getSuggestId());
  125. SysUser sysUser = sysUserMapper.selectById(sysPartner.getSuggestId());
  126. if (sysUser != null) {
  127. user.setSuggestName(sysUser.getName());
  128. }
  129. }
  130. //查看等级
  131. int type = sysPartner.getType();
  132. if (type == 1) {
  133. SysProportionConfig sysProportionConfig = sysProportionConfigMapper.selectOne(new LambdaQueryWrapper<SysProportionConfig>()
  134. .eq(SysProportionConfig::getUserId, sysPartner.getUserId()));
  135. if (sysProportionConfig == null) continue;
  136. user.setProportional(sysProportionConfig.getOneProportion());
  137. } else {
  138. SysRelationPerson sysRelationPeople = sysRelationPersonMapper.selectOne(new LambdaQueryWrapper<SysRelationPerson>()
  139. .eq(SysRelationPerson::getAgencyLeaderId, user.getUserId())
  140. .eq(SysRelationPerson::getType, 0)
  141. .eq(SysRelationPerson::getSuggestLevel, 1));
  142. if (sysRelationPeople == null) continue;
  143. SysProportionConfig sysProportionConfig = sysProportionConfigMapper.selectOne(new LambdaQueryWrapper<SysProportionConfig>()
  144. .eq(SysProportionConfig::getUserId, sysRelationPeople.getSuggestId()));
  145. if (sysProportionConfig == null) continue;
  146. if (type == 2) {
  147. user.setProportional(sysProportionConfig.getTwoProportion());
  148. } else if (type == 3) {
  149. user.setProportional(sysProportionConfig.getThreeProportion());
  150. } else if (type == 4) {
  151. user.setProportional(sysProportionConfig.getFourProportion());
  152. } else if (type == 5) {
  153. user.setProportional(sysProportionConfig.getFiveProportion());
  154. }
  155. }
  156. }
  157. }
  158. }
  159. return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  160. sysUserPartners);
  161. }
  162. @Override
  163. @Transactional(rollbackFor = Exception.class)
  164. public boolean insert(SysPartnerDto sysPartnerDto) {
  165. SysPartner sysPartner = BeanUtil.copyProperties(sysPartnerDto, SysPartner.class);
  166. sysPartner.setCreateTime(new Date());
  167. sysPartner.setCreateBy(BaseController.getUser().getId());
  168. sysPartner.setType(sysPartnerDto.getLevel());
  169. boolean b = false;
  170. b = sysPartnerMapper.insert(sysPartner) > 0;
  171. //一级合伙人添加默认比例
  172. if (sysPartnerDto.getLevel() == 1) {
  173. SysProportionConfig sysProportionConfig = new SysProportionConfig(null, sysPartner.getUserId(), "0.5", "0.1", "0.1", "0.1", "0.1", "0.1");
  174. sysProportionConfigMapper.insert(sysProportionConfig);
  175. }
  176. if (sysPartnerDto.getSuggestId() != null) {
  177. SysPartner sysPartner1 = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  178. .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getSuggestId()));
  179. //保存关系
  180. SysRelationPerson sysRelationPerson = new SysRelationPerson();
  181. sysRelationPerson.setAgencyLeaderId(sysPartnerDto.getUserId());
  182. sysRelationPerson.setSuggestId(sysPartnerDto.getSuggestId());
  183. sysRelationPerson.setSuggestLevel(sysPartner1.getType());
  184. //'推荐等级(0:直接推荐;1:间接推荐)
  185. sysRelationPerson.setSource(0);
  186. //推荐类型(0:合伙人 1:机构负责人)
  187. sysRelationPerson.setType(0);
  188. sysRelationPerson.setCreateBy(BaseController.getUser().getId());
  189. sysRelationPerson.setCreateTime(new Date());
  190. b = sysRelationPersonMapper.insert(sysRelationPerson) > 0;
  191. //查询合伙人的推荐人是否有上级
  192. List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  193. .eq(SysRelationPerson::getAgencyLeaderId, sysPartnerDto.getSuggestId())
  194. .eq(SysRelationPerson::getType, 0));
  195. if (sysRelationPeople.size() > 0) {
  196. for (SysRelationPerson relationPerson : sysRelationPeople) {
  197. SysRelationPerson sysRelationPerson1 = new SysRelationPerson();
  198. SysPartner sysPartner2 = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  199. .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, relationPerson.getSuggestId()));
  200. sysRelationPerson1.setAgencyLeaderId(sysPartnerDto.getUserId());
  201. sysRelationPerson1.setSuggestId(relationPerson.getSuggestId());
  202. sysRelationPerson1.setSuggestLevel(sysPartner2.getType());
  203. sysRelationPerson1.setSource(1);
  204. //推荐类型(0:合伙人 1:机构负责人)
  205. sysRelationPerson1.setType(0);
  206. sysRelationPerson1.setCreateBy(BaseController.getUser().getId());
  207. sysRelationPerson1.setCreateTime(new Date());
  208. sysRelationPersonMapper.insert(sysRelationPerson1);
  209. }
  210. }
  211. }
  212. return b;
  213. }
  214. @Override
  215. public boolean checkPartner(String userId) {
  216. List<SysPartner> sysPartners = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1));
  217. if (sysPartners.size() > 0) {
  218. List<String> userIdList = sysPartners.stream().map(SysPartner::getUserId).collect(Collectors.toList());
  219. return userIdList.contains(userId);
  220. }
  221. return false;
  222. }
  223. @Override
  224. public boolean deleteById(String id) {
  225. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, id));
  226. List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new UpdateWrapper<SysRelationPerson>().lambda()
  227. .eq(SysRelationPerson::getAgencyLeaderId, id)
  228. .eq(SysRelationPerson::getDelFlag, 1)
  229. .eq(SysRelationPerson::getType, 0));
  230. if (sysRelationPeople.size() > 0) {
  231. if (sysRelationPeople.get(0).getSuggestId() != null) {
  232. throw new DescribeException(sysPartner.getUserName() + "有推荐人,不允许删除");
  233. }
  234. }
  235. List<SysRelationPerson> sysRelationPeople1 = sysRelationPersonMapper.selectList(new UpdateWrapper<SysRelationPerson>().lambda()
  236. .eq(SysRelationPerson::getSuggestId, id)
  237. .eq(SysRelationPerson::getDelFlag, 1)
  238. .eq(SysRelationPerson::getType, 0));
  239. if (sysRelationPeople1.size() > 0) {
  240. if (sysRelationPeople1.get(0).getSuggestId() != null) {
  241. throw new DescribeException(sysPartner.getUserName() + "是推荐人,不允许删除");
  242. }
  243. }
  244. SysPartner partner = new SysPartner();
  245. partner.setId(sysPartner.getId());
  246. partner.setDelFlag(0);
  247. return sysPartnerMapper.updateById(partner) > 0;
  248. }
  249. @Override
  250. public BasePageResult<AgencyExtractFeeVo> queryPartnerByPages(SysPartnerPageDto sysPartnerPageDto) {
  251. List<AgencyExtractFeeVo> agencyExtractFeeList = new ArrayList<>();
  252. Page<SysPartner> page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize());
  253. LambdaQueryWrapper<SysPartner> wrapper = new LambdaQueryWrapper<>();
  254. wrapper.eq(SysPartner::getDelFlag, 1);
  255. wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId());
  256. wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysPartner::getUserName, sysPartnerPageDto.getUserName());
  257. wrapper.orderByDesc(SysPartner::getId);
  258. Page<SysPartner> insOrdersPage = page(page, wrapper);
  259. List<SysPartner> sysPartnerList = insOrdersPage.getRecords();
  260. if (sysPartnerList.size() > 0) {
  261. for (SysPartner sysPartner : sysPartnerList) {
  262. AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
  263. //总保费
  264. BigDecimal bigDecimal = BigDecimal.ZERO;
  265. BigDecimal extractFee = BigDecimal.ZERO;
  266. //已提现抽成费用
  267. BigDecimal historyFee = BigDecimal.ZERO;
  268. //填充查询人的姓名和机构
  269. agencyExtractFee.setProportional(sysPartner.getProportional());
  270. agencyExtractFee.setUserId(sysPartner.getUserId());
  271. //SysUser sysUser = sysUserMapper.selectById(sysPartner.getUserId());
  272. SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
  273. .eq(SysUser::getId, sysPartner.getUserId())
  274. .ne(SysUser::getStatus, 0));
  275. if (sysUser == null) {
  276. continue;
  277. }
  278. agencyExtractFee.setUserName(sysUser.getName());
  279. agencyExtractFee.setDeptId(sysUser.getDeptId());
  280. SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
  281. .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
  282. agencyExtractFee.setDeptName(sysDept.getName());
  283. //查询所有推荐的机构负责人核算总保费
  284. List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  285. .eq(SysRelationPerson::getSuggestId, sysPartner.getUserId()).eq(SysRelationPerson::getType, 1));
  286. if (sysRelationPeople.size() > 0) {
  287. List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  288. for (String agencyLeaderId : agencyLeaderIds) {
  289. SysAgencyLeader sysAgencyLeaders = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
  290. .eq(SysAgencyLeader::getUserId, agencyLeaderId)
  291. .eq(SysAgencyLeader::getDelFlag, 1));
  292. if (sysAgencyLeaders != null) {
  293. agencyExtractFee.setProportional(sysPartner.getProportional());
  294. //筛选订单,选择时间
  295. Date updateTime = sysAgencyLeaders.getUpdateTime();
  296. Date createTime = sysAgencyLeaders.getCreateTime();
  297. String dateStr = "";
  298. if (updateTime != null) {
  299. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime);
  300. } else {
  301. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
  302. }
  303. HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr, null, null);
  304. if (CollectionUtil.isNotEmpty(map)) {
  305. bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
  306. }
  307. }
  308. }
  309. // 填充 已提现抽成费用和可提现抽成费用
  310. List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
  311. .eq(SysAgencyFeeApproval::getUserId, sysPartner.getUserId())
  312. .eq(SysAgencyFeeApproval::getStatus, 1));
  313. if (sysAgencyFeeApprovals.size() > 0) {
  314. for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
  315. historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
  316. }
  317. }
  318. agencyExtractFee.setSumpremium(bigDecimal);
  319. if (!bigDecimal.equals(BigDecimal.ZERO)) {
  320. BigDecimal multiply = bigDecimal.multiply(new BigDecimal(agencyExtractFee.getProportional())
  321. .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
  322. agencyExtractFee.setExtractFee(multiply);
  323. //已提现
  324. agencyExtractFee.setHistoryFee(historyFee);
  325. extractFee = agencyExtractFee.getExtractFee();
  326. //可提现 = 总抽成-已提现
  327. agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
  328. } else {
  329. agencyExtractFee.setExtractFee(BigDecimal.ZERO);
  330. agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
  331. agencyExtractFee.setCashFee(extractFee);
  332. }
  333. } else {
  334. agencyExtractFee.setSumpremium(BigDecimal.ZERO);
  335. agencyExtractFee.setExtractFee(BigDecimal.ZERO);
  336. agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
  337. agencyExtractFee.setCashFee(BigDecimal.ZERO);
  338. }
  339. agencyExtractFeeList.add(agencyExtractFee);
  340. }
  341. }
  342. return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  343. agencyExtractFeeList);
  344. }
  345. @Override
  346. public BasePageResult<AgencyExtractFeeVo> queryPartnerByPage(SysPartnerPageDto sysPartnerPageDto) {
  347. List<AgencyExtractFeeVo> agencyExtractFeeList = new ArrayList<>();
  348. Page<SysPartner> page = new Page<>(sysPartnerPageDto.getPageNum(), sysPartnerPageDto.getPageSize());
  349. LambdaQueryWrapper<SysPartner> wrapper = new LambdaQueryWrapper<>();
  350. wrapper.eq(SysPartner::getDelFlag, 1);
  351. wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysPartner::getUserId, sysPartnerPageDto.getUserId());
  352. wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysPartner::getUserName, sysPartnerPageDto.getUserName());
  353. wrapper.orderByDesc(SysPartner::getId);
  354. Page<SysPartner> insOrdersPage = page(page, wrapper);
  355. List<SysPartner> sysPartnerList = insOrdersPage.getRecords();
  356. if (sysPartnerList.size() > 0) {
  357. for (SysPartner sysPartner : sysPartnerList) {
  358. String userId = sysPartner.getUserId();
  359. AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
  360. //已提现抽成费用
  361. BigDecimal historyFee = BigDecimal.ZERO;
  362. SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
  363. .eq(SysUser::getId, userId)
  364. .ne(SysUser::getStatus, 0));
  365. //填充查询人的姓名和机构
  366. agencyExtractFee.setUserId(userId);
  367. agencyExtractFee.setUserName(sysUser.getName());
  368. agencyExtractFee.setDeptId(sysUser.getDeptId());
  369. SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
  370. .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
  371. agencyExtractFee.setDeptName(sysDept.getName());
  372. SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
  373. .eq(SysPartnerAccount::getUserId, userId));
  374. if (sysPartnerAccount != null) {
  375. BigDecimal sumPremium = sysPartnerAccount.getSumPremium();
  376. BigDecimal extractFee = sysPartnerAccount.getExtractFee();
  377. agencyExtractFee.setSumpremium(sumPremium);
  378. agencyExtractFee.setExtractFee(extractFee);
  379. // 填充 已提现抽成费用和可提现抽成费用
  380. List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
  381. .eq(SysAgencyFeeApproval::getUserId, sysPartner.getUserId())
  382. .eq(SysAgencyFeeApproval::getStatus, 1));
  383. if (sysAgencyFeeApprovals.size() > 0) {
  384. for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
  385. historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
  386. }
  387. }
  388. agencyExtractFee.setHistoryFee(Optional.ofNullable(extractFee.subtract(historyFee)).orElse(BigDecimal.ZERO));
  389. //可提现 = 总抽成-已提现
  390. agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
  391. } else {
  392. agencyExtractFee.setSumpremium(BigDecimal.ZERO);
  393. agencyExtractFee.setExtractFee(BigDecimal.ZERO);
  394. agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
  395. agencyExtractFee.setCashFee(BigDecimal.ZERO);
  396. }
  397. agencyExtractFeeList.add(agencyExtractFee);
  398. }
  399. }
  400. return new BasePageResult<>(sysPartnerPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  401. agencyExtractFeeList);
  402. }
  403. @Override
  404. public BasePageResult<SysPartnerAPPPageVo> SysPartnerAPPPage(SysPartnerAPPPageDto sysPartnerAPPPageDto) {
  405. List<SysPartnerAPPPageVo> sysPartnerAPPPageVoList = new ArrayList<>();
  406. String userId = BaseController.getUserId();
  407. int source = sysPartnerAPPPageDto.getSource();
  408. List<SysRelationPerson> sysRelationPersonList = null;
  409. //判断是0:直接推荐;1:间接推荐
  410. if (source == 0) {
  411. sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  412. .eq(SysRelationPerson::getSuggestId, userId)
  413. .eq(SysRelationPerson::getDelFlag, 1)
  414. .eq(SysRelationPerson::getSource, 0)
  415. .eq(SysRelationPerson::getType, 0));
  416. } else {
  417. sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  418. .eq(SysRelationPerson::getSuggestId, userId)
  419. .eq(SysRelationPerson::getDelFlag, 1)
  420. .eq(SysRelationPerson::getSource, 1)
  421. .eq(SysRelationPerson::getType, 0));
  422. }
  423. List<String> ids = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  424. if (CollectionUtil.isNotEmpty(ids)) {
  425. //分页查询合伙人信息
  426. Page<SysPartner> page = new Page<>(sysPartnerAPPPageDto.getPageNum(), sysPartnerAPPPageDto.getPageSize());
  427. LambdaQueryWrapper<SysPartner> wrapper = new LambdaQueryWrapper<>();
  428. wrapper.like(StringUtils.isNotEmpty(sysPartnerAPPPageDto.getUserName()), SysPartner::getUserName, sysPartnerAPPPageDto.getUserName());
  429. wrapper.in(SysPartner::getUserId, ids);
  430. wrapper.eq(SysPartner::getDelFlag, 1);
  431. wrapper.orderByDesc(SysPartner::getId);
  432. Page<SysPartner> insOrdersPage = page(page, wrapper);
  433. List<SysPartner> sysPartnerList = insOrdersPage.getRecords();
  434. if (sysPartnerList.size() > 0) {
  435. for (SysPartner sysPartner : sysPartnerList) {
  436. //总保费
  437. BigDecimal bigDecimal = new BigDecimal("0.00");
  438. SysPartnerAPPPageVo sysPartnerAPPPageVo = new SysPartnerAPPPageVo();
  439. sysPartnerAPPPageVo.setUserId(sysPartner.getUserId());
  440. //填充机构信息
  441. SysUser sysUser = sysUserMapper.selectOne(new LambdaQueryWrapper<SysUser>()
  442. .eq(SysUser::getId, sysPartner.getUserId())
  443. .ne(SysUser::getStatus, 0));
  444. sysPartnerAPPPageVo.setUserName(sysUser.getName());
  445. SysDept sysDept = sysDeptMapper.selectOne(new LambdaQueryWrapper<SysDept>()
  446. .eq(SysDept::getId, sysUser.getDeptId()).eq(SysDept::getDelFlag, 0));
  447. sysPartnerAPPPageVo.setDeptId(sysDept.getId());
  448. sysPartnerAPPPageVo.setDeptName(sysDept.getName());
  449. sysPartnerAPPPageVo.setProportional(sysPartner.getProportional());
  450. List<SysRelationPerson> relationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  451. .eq(SysRelationPerson::getSuggestId, sysPartner.getUserId())
  452. .eq(SysRelationPerson::getDelFlag, 1)
  453. .eq(SysRelationPerson::getType, 1));
  454. if (relationPersonList.size() > 0) {
  455. List<String> agencyLeaderIds = relationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  456. List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  457. .eq(SysAgencyLeader::getDelFlag, 1).in(SysAgencyLeader::getUserId, agencyLeaderIds));
  458. for (SysAgencyLeader sysAgencyLeader : leaderList) {
  459. //获取机构下的团队
  460. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  461. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  462. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  463. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  464. if (sysDeptList.size() > 0) {
  465. for (SysDept sysDept1 : sysDeptList) {
  466. //筛选订单,选择时间
  467. Date updateTime = sysAgencyLeader.getUpdateTime();
  468. Date createTime = sysAgencyLeader.getCreateTime();
  469. String dateStr = "";
  470. if (updateTime != null) {
  471. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(updateTime);
  472. } else {
  473. dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
  474. }
  475. HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysDept1.getId(), dateStr, null, null);
  476. if (CollectionUtil.isNotEmpty(map)) {
  477. bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
  478. }
  479. }
  480. }
  481. }
  482. }
  483. sysPartnerAPPPageVo.setSumpremium(bigDecimal);
  484. if (!bigDecimal.equals(new BigDecimal("0.00"))) {
  485. BigDecimal multiply = bigDecimal.multiply(new BigDecimal(sysPartner.getProportional())
  486. .divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN);
  487. sysPartnerAPPPageVo.setExtractFee(multiply);
  488. } else {
  489. sysPartnerAPPPageVo.setExtractFee(new BigDecimal("0.00"));
  490. }
  491. sysPartnerAPPPageVoList.add(sysPartnerAPPPageVo);
  492. }
  493. }
  494. return new BasePageResult<>(sysPartnerAPPPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  495. sysPartnerAPPPageVoList);
  496. }
  497. return new BasePageResult<>(sysPartnerAPPPageDto.getPageNum(), sysPartnerAPPPageDto.getPageSize(), 0L, 0L,
  498. sysPartnerAPPPageVoList);
  499. }
  500. @Override
  501. public boolean edit(SysPartnerDto sysPartnerDto) {
  502. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  503. .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getUserId()));
  504. if (sysPartner == null) throw new DescribeException("系统错误,请联系管理员!");
  505. SysPartner partner = new SysPartner();
  506. partner.setId(sysPartner.getId());
  507. partner.setUserName(sysPartnerDto.getUserName());
  508. return sysPartnerMapper.updateById(partner) > 0;
  509. }
  510. @Override
  511. public BasePageResult<AgencyExtractFeeVo> queryAgencyLeaderById(SysAgencyLeaderPageDto sysAgencyLeaderPageDto) {
  512. List<AgencyExtractFeeVo> agencyExtractFeeList = new ArrayList<>();
  513. List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  514. .eq(SysRelationPerson::getSuggestId, sysAgencyLeaderPageDto.getUserId()).eq(SysRelationPerson::getType, 1));
  515. if (CollectionUtil.isEmpty(sysRelationPeople)) return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(),
  516. sysAgencyLeaderPageDto.getPageSize(), 0L, 0L, agencyExtractFeeList);
  517. //获取所有推荐的机构负责人id
  518. List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  519. Page<SysAgencyLeader> page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize());
  520. LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
  521. wrapper.in(SysAgencyLeader::getUserId, agencyLeaderIds);
  522. wrapper.eq(SysAgencyLeader::getDelFlag, 1);
  523. wrapper.orderByDesc(SysAgencyLeader::getId);
  524. Page<SysAgencyLeader> insOrdersPage = sysAgencyLeaderService.page(page, wrapper);
  525. List<SysAgencyLeader> records = insOrdersPage.getRecords();
  526. if (records.size() > 0) {
  527. for (SysAgencyLeader sysAgencyLeaders : records) {
  528. AgencyExtractFeeVo agencyExtractFee = new AgencyExtractFeeVo();
  529. String userId = sysAgencyLeaders.getUserId();
  530. //已提现抽成费用
  531. BigDecimal historyFee = BigDecimal.ZERO;
  532. SysUser sysUser = sysUserMapper.selectById(userId);
  533. SysDept sysDept = sysDeptMapper.selectById(sysAgencyLeaders.getDeptId());
  534. agencyExtractFee.setUserId(userId);
  535. agencyExtractFee.setUserName(sysUser.getName());
  536. agencyExtractFee.setDeptId(sysAgencyLeaders.getDeptId());
  537. agencyExtractFee.setDeptName(sysDept.getName());
  538. SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
  539. .eq(SysPartnerAccount::getUserId, userId));
  540. if (sysPartnerAccount != null) {
  541. BigDecimal sumPremium = sysPartnerAccount.getSumPremium();
  542. BigDecimal extractFee = sysPartnerAccount.getExtractFee();
  543. agencyExtractFee.setSumpremium(sumPremium);
  544. agencyExtractFee.setExtractFee(extractFee);
  545. // 填充 已提现抽成费用和可提现抽成费用
  546. List<SysAgencyFeeApproval> sysAgencyFeeApprovals = sysAgencyFeeApprovalMapper.selectList(new LambdaQueryWrapper<SysAgencyFeeApproval>()
  547. .eq(SysAgencyFeeApproval::getUserId, sysAgencyLeaders.getUserId())
  548. .eq(SysAgencyFeeApproval::getStatus, 1));
  549. if (sysAgencyFeeApprovals.size() > 0) {
  550. for (SysAgencyFeeApproval sysAgencyFeeApproval : sysAgencyFeeApprovals) {
  551. historyFee = historyFee.add(sysAgencyFeeApproval.getHistoryFee());
  552. }
  553. }
  554. if (!extractFee.equals(BigDecimal.ZERO)) {
  555. //已提现
  556. agencyExtractFee.setHistoryFee(historyFee);
  557. //可提现 = 总抽成-已提现
  558. agencyExtractFee.setCashFee(extractFee.subtract(historyFee));
  559. } else {
  560. agencyExtractFee.setHistoryFee(BigDecimal.ZERO);
  561. agencyExtractFee.setCashFee(extractFee.subtract(BigDecimal.ZERO));
  562. }
  563. }else {
  564. agencyExtractFee.setSumpremium(BigDecimal.ZERO);
  565. }
  566. agencyExtractFeeList.add(agencyExtractFee);
  567. }
  568. }
  569. return new BasePageResult<>(sysAgencyLeaderPageDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  570. agencyExtractFeeList);
  571. }
  572. @Override
  573. public APPPartnerInfoFreeVo getTeamInfo(PartnerGradeInfo partnerGradeInfo) {
  574. APPPartnerInfoFreeVo appPartnerInfoFreeVo = new APPPartnerInfoFreeVo();
  575. List<APPPartnerInfo> appPartnerInfoList = new ArrayList<>();
  576. List<String> deptIds = partnerGradeInfo.getDeptIds();
  577. if (CollectionUtil.isEmpty(deptIds)) {
  578. return appPartnerInfoFreeVo;
  579. }
  580. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  581. .in(SysDept::getId, deptIds).eq(SysDept::getDelFlag, 0));
  582. if (sysDeptList.size() == 0) {
  583. return appPartnerInfoFreeVo;
  584. }
  585. for (SysDept sysDept : sysDeptList) {
  586. APPPartnerInfo appPartnerInfo = new APPPartnerInfo();
  587. appPartnerInfo.setDeptId(sysDept.getId());
  588. appPartnerInfo.setDeptName(sysDept.getName());
  589. String leaderId = sysDept.getLeaderId();
  590. if (StringUtils.isNotEmpty(leaderId)) {
  591. appPartnerInfo.setLeaderId(leaderId);
  592. SysUser sysUser = sysUserMapper.selectById(leaderId);
  593. appPartnerInfo.setLeaderName(sysUser.getName());
  594. }
  595. //获取机构下的团队
  596. List<SysDept> sysDepTeam = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  597. .likeRight(SysDept::getId, sysDept.getId())
  598. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  599. .eq(SysDept::getManagementSource, sysDept.getManagementSource()));
  600. //机构下每个团队人数id集合
  601. List<String> userIdList = new ArrayList<>();
  602. int deptManNum = 0;
  603. if (sysDepTeam.size() > 0) {
  604. for (SysDept sysDept1 : sysDepTeam) {
  605. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  606. .likeRight(SysUser::getId, sysDept1.getId()).ne(SysUser::getStatus, 0));
  607. deptManNum = deptManNum + sysUsers.size();
  608. if (sysUsers.size() > 0) {
  609. List<String> collect = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
  610. userIdList.addAll(collect);
  611. }
  612. }
  613. }
  614. appPartnerInfo.setTeamManNum(deptManNum);
  615. appPartnerInfo.setUserIds(userIdList);
  616. if (CollectionUtil.isEmpty(userIdList)) continue;
  617. //查团队的保费
  618. List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  619. .in(SysPremiumDetails::getUserId, userIdList)
  620. .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
  621. SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
  622. .eq(SysPremiumDetails::getStatus, 1)
  623. .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
  624. BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  625. appPartnerInfo.setSumPremium(sumPremium);
  626. List<SysUserAccountHistory> sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
  627. .in(SysUserAccountHistory::getUserId, userIdList).eq(SysUserAccountHistory::getProperty, 3));
  628. if (CollectionUtil.isNotEmpty(sysUserAccountHistories)) {
  629. BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
  630. appPartnerInfo.setExtractFee(extractFee);
  631. } else {
  632. appPartnerInfo.setExtractFee(BigDecimal.ZERO);
  633. }
  634. appPartnerInfoList.add(appPartnerInfo);
  635. }
  636. List<String> ids = new ArrayList<>();
  637. List<List<String>> collect = appPartnerInfoList.stream().map(APPPartnerInfo::getUserIds).collect(Collectors.toList());
  638. if (collect.size() > 0) {
  639. for (List<String> list : collect) {
  640. ids.addAll(list);
  641. }
  642. }
  643. if (CollectionUtil.isEmpty(ids)) return appPartnerInfoFreeVo;
  644. List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  645. .in(SysPremiumDetails::getUserId, ids)
  646. .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
  647. SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
  648. .eq(SysPremiumDetails::getStatus, 1)
  649. .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
  650. BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  651. appPartnerInfoFreeVo.setSumPremium(sumPremium);
  652. List<SysUserAccountHistory> sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
  653. .in(SysUserAccountHistory::getUserId, ids).eq(SysUserAccountHistory::getProperty, 3));
  654. if (CollectionUtil.isNotEmpty(sysUserAccountHistories)) {
  655. BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
  656. appPartnerInfoFreeVo.setExtractFee(extractFee);
  657. } else {
  658. appPartnerInfoFreeVo.setExtractFee(BigDecimal.ZERO);
  659. }
  660. int sum = appPartnerInfoList.stream().mapToInt(APPPartnerInfo::getTeamManNum).sum();
  661. appPartnerInfoFreeVo.setTeamManNum(sum);
  662. appPartnerInfoFreeVo.setAppPartnerInfos(appPartnerInfoList);
  663. return appPartnerInfoFreeVo;
  664. }
  665. @Override
  666. public AppPartnerNumVo getHomePage(Integer type) {
  667. AppPartnerNumVo appPartnerNumVo = new AppPartnerNumVo();
  668. //合伙人:1 ;工作室管理员:2
  669. String userId = BaseController.getUserId();
  670. SysPartnerAccount sysPartnerAccount = sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>()
  671. .eq(SysPartnerAccount::getUserId, userId));
  672. if (sysPartnerAccount != null) {
  673. appPartnerNumVo.setSumPremium(sysPartnerAccount.getSumPremium());
  674. appPartnerNumVo.setExtractFee(sysPartnerAccount.getExtractFee());
  675. }
  676. if (type == 1) {
  677. //下面合伙人(直接+间接)数量
  678. List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  679. .eq(SysRelationPerson::getSuggestId, userId)
  680. .eq(SysRelationPerson::getDelFlag, 1)
  681. .eq(SysRelationPerson::getType, 0));
  682. appPartnerNumVo.setPartnerNum(sysRelationPersonList1.size());
  683. //直接工作室数量
  684. List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  685. .eq(SysRelationPerson::getSuggestId, userId)
  686. .eq(SysRelationPerson::getDelFlag, 1)
  687. .eq(SysRelationPerson::getSource, 0)
  688. .eq(SysRelationPerson::getType, 1));
  689. appPartnerNumVo.setWorkroomNum(sysRelationPersonList.size());
  690. List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  691. appPartnerNumVo.setLeaderIds(collect);
  692. //登录人下面的所有团队人数
  693. List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  694. .eq(SysRelationPerson::getSuggestId, userId)
  695. .eq(SysRelationPerson::getDelFlag, 1)
  696. .eq(SysRelationPerson::getType, 1));
  697. if (sysRelationPersonList2.size() > 0) {
  698. List<String> ids = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  699. List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  700. .in(CollectionUtil.isNotEmpty(ids), SysAgencyLeader::getUserId, ids).eq(SysAgencyLeader::getDelFlag, 1));
  701. int deptManNum = 0;
  702. if (leaderList.size() > 0) {
  703. for (SysAgencyLeader sysAgencyLeader : leaderList) {
  704. //获取机构下的团队
  705. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  706. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  707. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  708. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  709. if (sysDeptList.size() > 0) {
  710. for (SysDept sysDept : sysDeptList) {
  711. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  712. .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
  713. deptManNum = deptManNum + sysUsers.size();
  714. }
  715. }
  716. }
  717. appPartnerNumVo.setTeamManNum(deptManNum);
  718. }
  719. }
  720. } else {
  721. int deptManNum = 0;
  722. SysAgencyLeader sysAgencyLeader = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
  723. .in(SysAgencyLeader::getUserId, userId).eq(SysAgencyLeader::getDelFlag, 1));
  724. //获取机构下的团队
  725. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  726. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  727. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  728. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  729. appPartnerNumVo.setWorkroomTeamNum(sysDeptList.size());
  730. List<String> deptIds = new ArrayList<>();
  731. if (sysDeptList.size() > 0) {
  732. for (SysDept sysDept : sysDeptList) {
  733. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  734. .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
  735. deptManNum = deptManNum + sysUsers.size();
  736. deptIds.add(sysDept.getId());
  737. }
  738. appPartnerNumVo.setWorkroomManNum(deptManNum);
  739. appPartnerNumVo.setTeamManNum(deptManNum);
  740. appPartnerNumVo.setDeptIds(deptIds);
  741. }
  742. }
  743. return appPartnerNumVo;
  744. }
  745. @Override
  746. public AppUserInfoVo getUserInfo(Integer type) {
  747. String userId = BaseController.getUserId();
  748. AppUserInfoVo appUserInfoVo = sysUserMapper.queryByUserId(userId);
  749. if (type == 1) {
  750. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  751. .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, userId));
  752. SysPartnerConfig sysPartnerConfig = sysPartnerConfigMapper.selectOne(new LambdaQueryWrapper<SysPartnerConfig>()
  753. .eq(SysPartnerConfig::getDelFlag, 1).eq(SysPartnerConfig::getLevel, sysPartner.getType()));
  754. appUserInfoVo.setSysPartnerConfig(sysPartnerConfig);
  755. appUserInfoVo.setLevel(sysPartner.getType());
  756. } else {
  757. SysPartnerConfig sysPartnerConfig = sysPartnerConfigMapper.selectOne(new LambdaQueryWrapper<SysPartnerConfig>()
  758. .eq(SysPartnerConfig::getDelFlag, 1).eq(SysPartnerConfig::getLevel, 0));
  759. appUserInfoVo.setSysPartnerConfig(sysPartnerConfig);
  760. }
  761. // 获取当前日期
  762. // LocalDate currentDate = LocalDate.now();
  763. // ZoneId zoneId = ZoneId.systemDefault();
  764. // Date entryTime = appUserInfoVo.getEntryTime();
  765. // if (entryTime != null) {
  766. // LocalDate localDate = entryTime.toInstant().atZone(zoneId).toLocalDate();
  767. // // 计算年数
  768. // long years = ChronoUnit.YEARS.between(localDate, currentDate);
  769. // appUserInfoVo.setYears(years);
  770. // }
  771. return appUserInfoVo;
  772. }
  773. @Override
  774. public SysPartnerAccount getFee() {
  775. String userId = BaseController.getUserId();
  776. return sysPartnerAccountMapper.selectOne(new LambdaQueryWrapper<SysPartnerAccount>().eq(SysPartnerAccount::getUserId, userId));
  777. }
  778. @Override
  779. public List<AppSysPartnerVo> partnerInfo(PartnerInfoDto partnerInfoDto) {
  780. List<AppSysPartnerVo> appSysPartnerVos = new ArrayList<>();
  781. String userId = BaseController.getUserId();
  782. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  783. .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
  784. //查询登陆人下所有合伙人
  785. List<SysPartner> sysPartnerList = sysPartnerMapper.queryByLoginId(userId);
  786. Map<Integer, List<SysPartner>> listMap = sysPartnerList.stream().sorted(Comparator.comparing(SysPartner::getId))
  787. .collect(Collectors.groupingBy(SysPartner::getType));
  788. //按等级查询
  789. Integer partnerType = partnerInfoDto.getPartnerType();
  790. if (partnerType != null) {
  791. List<SysPartner> sysPartnerList1 = listMap.get(partnerType + 1);
  792. if (sysPartnerList1 != null) {
  793. AppSysPartnerVo appSysPartnerVo = new AppSysPartnerVo();
  794. appSysPartnerVo.setPartnerType(partnerType + 1);
  795. //下级合伙人数
  796. appSysPartnerVo.setPartnerNumber(sysPartnerList1.size());
  797. List<String> ids = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
  798. appSysPartnerVo.setPartnerIds(ids);
  799. List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  800. .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, ids)
  801. .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()),
  802. SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime())
  803. .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector())
  804. .eq(SysPremiumDetails::getStatus, 1));
  805. BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  806. BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
  807. appSysPartnerVo.setSumPremium(sumPremium);
  808. appSysPartnerVo.setExtractFee(extractFee);
  809. //二级以下团队的总人数
  810. List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  811. .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids)
  812. .eq(SysRelationPerson::getDelFlag, 1)
  813. .eq(SysRelationPerson::getType, 1));
  814. int deptManNum = 0;
  815. if (sysRelationPersonList.size() > 0) {
  816. List<String> idList = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  817. List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  818. .in(CollectionUtil.isNotEmpty(idList), SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
  819. if (leaderList.size() > 0) {
  820. for (SysAgencyLeader sysAgencyLeader : leaderList) {
  821. //获取机构下的团队
  822. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  823. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  824. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  825. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  826. if (sysDeptList.size() > 0) {
  827. for (SysDept sysDept : sysDeptList) {
  828. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  829. .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
  830. deptManNum = deptManNum + sysUsers.size();
  831. }
  832. }
  833. }
  834. }
  835. }
  836. appSysPartnerVo.setTeamManNum(deptManNum);
  837. List<SysRelationPerson> sysRelationPersons = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  838. .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids)
  839. .eq(SysRelationPerson::getDelFlag, 1)
  840. .eq(SysRelationPerson::getSource, 0)
  841. .eq(SysRelationPerson::getType, 1));
  842. appSysPartnerVo.setWorkNumber(sysRelationPersons.size());
  843. if (sysRelationPersons.size() > 0) {
  844. List<String> list1 = sysRelationPersons.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  845. appSysPartnerVo.setLeaderIds(list1);
  846. }
  847. //每一级存入map
  848. appSysPartnerVos.add(appSysPartnerVo);
  849. }
  850. return appSysPartnerVos;
  851. }
  852. int start = 0;
  853. int type = sysPartner.getType();
  854. if (type == 1) {
  855. start = start + 2;
  856. } else if (type == 2) {
  857. start = start + 3;
  858. } else if (type == 3) {
  859. start = start + 4;
  860. } else if (type == 4) {
  861. start = start + 5;
  862. }
  863. for (int i = start; i < 6; i++) {
  864. //二级
  865. List<SysPartner> sysPartnerList1 = listMap.get(i);
  866. if (CollectionUtil.isNotEmpty(sysPartnerList1)) {
  867. AppSysPartnerVo appSysPartnerVo = new AppSysPartnerVo();
  868. appSysPartnerVo.setPartnerType(i);
  869. //下级合伙人数
  870. appSysPartnerVo.setPartnerNumber(sysPartnerList1.size());
  871. List<String> ids = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
  872. appSysPartnerVo.setPartnerIds(ids);
  873. List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  874. .in(CollectionUtil.isNotEmpty(ids), SysPremiumDetails::getUserId, ids)
  875. .between(StringUtils.isNotEmpty(partnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(partnerInfoDto.getEndTime()),
  876. SysPremiumDetails::getCreateTime, partnerInfoDto.getBeginTime(), partnerInfoDto.getEndTime())
  877. .eq(partnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerInfoDto.getIndustrySector())
  878. .eq(SysPremiumDetails::getStatus, 1));
  879. BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  880. BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
  881. appSysPartnerVo.setSumPremium(sumPremium);
  882. appSysPartnerVo.setExtractFee(extractFee);
  883. //同等级合伙人团队的总人数:
  884. List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  885. .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids)
  886. .eq(SysRelationPerson::getDelFlag, 1)
  887. .eq(SysRelationPerson::getType, 1));
  888. int deptManNum = 0;
  889. if (sysRelationPersonList.size() > 0) {
  890. List<String> idList = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  891. List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  892. .in(CollectionUtil.isNotEmpty(idList), SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
  893. if (leaderList.size() > 0) {
  894. for (SysAgencyLeader sysAgencyLeader : leaderList) {
  895. //获取机构下的团队
  896. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  897. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  898. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  899. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  900. if (sysDeptList.size() > 0) {
  901. for (SysDept sysDept : sysDeptList) {
  902. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  903. .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
  904. deptManNum = deptManNum + sysUsers.size();
  905. }
  906. }
  907. }
  908. }
  909. }
  910. appSysPartnerVo.setTeamManNum(deptManNum);
  911. List<SysRelationPerson> sysRelationPersons = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  912. .in(CollectionUtil.isNotEmpty(ids), SysRelationPerson::getSuggestId, ids)
  913. .eq(SysRelationPerson::getDelFlag, 1)
  914. .eq(SysRelationPerson::getSource, 0)
  915. .eq(SysRelationPerson::getType, 1));
  916. appSysPartnerVo.setWorkNumber(sysRelationPersons.size());
  917. if (sysRelationPersons.size() > 0) {
  918. List<String> list1 = sysRelationPersons.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  919. appSysPartnerVo.setLeaderIds(list1);
  920. }
  921. //每一级存入map
  922. appSysPartnerVos.add(appSysPartnerVo);
  923. }
  924. }
  925. return appSysPartnerVos;
  926. }
  927. @Override
  928. public PartnerInfoFreeVo queryPartnerInfo(PartnerGradeInfo partnerGradeInfo) {
  929. PartnerInfoFreeVo partnerInfoFreeVo = new PartnerInfoFreeVo();
  930. List<PartnerInfoVo> partnerInfoVoList = new ArrayList<>();
  931. //合伙人:1;工作室:2
  932. Integer type = partnerGradeInfo.getType();
  933. if (type == 1) {
  934. List<String> partnerIds = partnerGradeInfo.getPartnerIds();
  935. if (CollectionUtil.isEmpty(partnerIds)) {
  936. return partnerInfoFreeVo;
  937. }
  938. //费用
  939. List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  940. .in(SysPremiumDetails::getUserId, partnerIds)
  941. .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
  942. SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
  943. .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector())
  944. .eq(SysPremiumDetails::getStatus, 1));
  945. BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  946. BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
  947. partnerInfoFreeVo.setSumPremium(sumPremium);
  948. partnerInfoFreeVo.setExtractFee(extractFee);
  949. //合伙人
  950. List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
  951. .in(SysPartner::getUserId, partnerGradeInfo.getPartnerIds()).eq(SysPartner::getDelFlag, 1));
  952. if (sysPartnerList.size() > 0) {
  953. for (SysPartner sysPartner : sysPartnerList) {
  954. PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
  955. partnerInfoVo.setLevel(partnerGradeInfo.getLevel());
  956. String userId = sysPartner.getUserId();
  957. partnerInfoVo.setUserId(userId);
  958. SysUser sysUser = sysUserMapper.selectById(userId);
  959. partnerInfoVo.setUserName(sysUser.getName());
  960. SysUser sysUser1 = sysUserMapper.selectById(sysPartner.getSuggestId());
  961. partnerInfoVo.setSuggestName(sysUser1.getName());
  962. //费用
  963. List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  964. .eq(SysPremiumDetails::getUserId, userId)
  965. .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
  966. SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
  967. .eq(SysPremiumDetails::getStatus, 1)
  968. .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
  969. BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  970. BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
  971. partnerInfoVo.setSumPremium(sumPremium1);
  972. partnerInfoVo.setExtractFee(extractFee1);
  973. //直接合伙人
  974. List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  975. .eq(SysRelationPerson::getSuggestId, userId)
  976. .eq(SysRelationPerson::getDelFlag, 1)
  977. .eq(SysRelationPerson::getType, 0)
  978. .eq(SysRelationPerson::getSource, 0));
  979. List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  980. partnerInfoVo.setPartnerIds(collect);
  981. partnerInfoVo.setPartnerNumber(collect.size());
  982. //直接管理员
  983. List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  984. .eq(SysRelationPerson::getSuggestId, userId)
  985. .eq(SysRelationPerson::getDelFlag, 1)
  986. .eq(SysRelationPerson::getType, 1)
  987. .eq(SysRelationPerson::getSource, 0));
  988. List<String> collects = sysRelationPersonList1.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  989. partnerInfoVo.setLeaderIds(collects);
  990. partnerInfoVo.setWorkNumber(collects.size());
  991. //合伙人下所有工作室数 核算总代理人数
  992. List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  993. .eq(SysRelationPerson::getSuggestId, userId)
  994. .eq(SysRelationPerson::getDelFlag, 1)
  995. .eq(SysRelationPerson::getType, 1));
  996. int deptManNum = 0;
  997. if (sysRelationPersonList2.size() > 0) {
  998. List<String> idList = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  999. List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  1000. .in(SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
  1001. if (leaderList.size() > 0) {
  1002. for (SysAgencyLeader sysAgencyLeader : leaderList) {
  1003. //获取机构下的团队
  1004. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  1005. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  1006. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  1007. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  1008. if (sysDeptList.size() > 0) {
  1009. for (SysDept sysDept : sysDeptList) {
  1010. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  1011. .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
  1012. deptManNum = deptManNum + sysUsers.size();
  1013. }
  1014. }
  1015. }
  1016. }
  1017. }
  1018. partnerInfoVo.setTeamManNum(deptManNum);
  1019. partnerInfoVoList.add(partnerInfoVo);
  1020. }
  1021. partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList);
  1022. }
  1023. } else {
  1024. //工作室
  1025. List<String> leaderIds = partnerGradeInfo.getLeaderIds();
  1026. if (CollectionUtil.isEmpty(leaderIds)) {
  1027. return partnerInfoFreeVo;
  1028. }
  1029. //费用
  1030. List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  1031. .in(SysPremiumDetails::getUserId, leaderIds)
  1032. .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
  1033. SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
  1034. .eq(SysPremiumDetails::getStatus, 1)
  1035. .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
  1036. BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  1037. BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
  1038. partnerInfoFreeVo.setSumPremium(sumPremium);
  1039. partnerInfoFreeVo.setExtractFee(extractFee);
  1040. List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  1041. .in(SysAgencyLeader::getUserId, leaderIds).eq(SysAgencyLeader::getDelFlag, 1));
  1042. for (SysAgencyLeader sysAgencyLeader : leaderList) {
  1043. PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
  1044. String userId = sysAgencyLeader.getUserId();
  1045. partnerInfoVo.setUserId(userId);
  1046. SysUser sysUser = sysUserMapper.selectById(userId);
  1047. partnerInfoVo.setUserName(sysUser.getName());
  1048. SysUser sysUser1 = sysUserMapper.selectById(sysAgencyLeader.getSuggestId());
  1049. partnerInfoVo.setSuggestName(sysUser1.getName());
  1050. //费用
  1051. List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  1052. .eq(SysPremiumDetails::getUserId, userId)
  1053. .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
  1054. SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
  1055. .eq(SysPremiumDetails::getStatus, 1)
  1056. .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
  1057. BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  1058. BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
  1059. partnerInfoVo.setSumPremium(sumPremium1);
  1060. partnerInfoVo.setExtractFee(extractFee1);
  1061. int deptManNum = 0;
  1062. //获取机构下的团队
  1063. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  1064. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  1065. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  1066. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  1067. partnerInfoVo.setDeptNum(sysDeptList.size());
  1068. List<String> collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
  1069. partnerInfoVo.setDeptIds(collect);
  1070. if (sysDeptList.size() > 0) {
  1071. for (SysDept sysDept : sysDeptList) {
  1072. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  1073. .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
  1074. deptManNum = deptManNum + sysUsers.size();
  1075. }
  1076. }
  1077. partnerInfoVo.setTeamManNum(deptManNum);
  1078. partnerInfoVoList.add(partnerInfoVo);
  1079. }
  1080. }
  1081. int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum();
  1082. partnerInfoFreeVo.setTeamManNum(sum);
  1083. partnerInfoFreeVo.setPartnerInfoVoList(partnerInfoVoList);
  1084. return partnerInfoFreeVo;
  1085. }
  1086. @Override
  1087. public BasePageResult<SysPremiumDetails> getCommissionInfo(CommissionInfoDto commissionInfoDto) {
  1088. String userId = BaseController.getUserId();
  1089. Page<SysPremiumDetails> page = new Page<>(commissionInfoDto.getPageNum(), commissionInfoDto.getPageSize());
  1090. LambdaQueryWrapper<SysPremiumDetails> wrapper = new LambdaQueryWrapper<>();
  1091. wrapper.eq(SysPremiumDetails::getUserId, userId);
  1092. wrapper.eq(commissionInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, commissionInfoDto.getIndustrySector());
  1093. wrapper.between(StringUtils.isNotEmpty(commissionInfoDto.getBeginTime()) && StringUtils.isNotEmpty(commissionInfoDto.getEndTime()),
  1094. SysPremiumDetails::getCreateTime, commissionInfoDto.getBeginTime(), commissionInfoDto.getEndTime());
  1095. wrapper.orderByDesc(SysPremiumDetails::getId);
  1096. Page<SysPremiumDetails> insOrdersPage = sysPremiumDetailsService.page(page, wrapper);
  1097. return new BasePageResult<>(commissionInfoDto.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),
  1098. insOrdersPage.getRecords());
  1099. }
  1100. @Override
  1101. public List<SysPremiumDetailsVo> getCommissionInfos(CommissionInfoDto commissionInfoDto) {
  1102. List<SysPremiumDetailsVo> list = new ArrayList<>();
  1103. String userId = BaseController.getUserId();
  1104. List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  1105. .eq(SysPremiumDetails::getUserId, userId)
  1106. .eq(commissionInfoDto.getIndustrySector() != 0, SysPremiumDetails::getIndustrySector, commissionInfoDto.getIndustrySector())
  1107. .between(StringUtils.isNotEmpty(commissionInfoDto.getBeginTime()) && StringUtils.isNotEmpty(commissionInfoDto.getEndTime()),
  1108. SysPremiumDetails::getCreateTime, commissionInfoDto.getBeginTime(), commissionInfoDto.getEndTime())
  1109. .orderByDesc(SysPremiumDetails::getId).eq(SysPremiumDetails::getStatus,1));
  1110. if (CollectionUtil.isEmpty(sysPremiumDetails)) return list;
  1111. Map<String, List<SysPremiumDetails>> listMap = sysPremiumDetails.stream().sorted(Comparator.comparing(SysPremiumDetails::getId))
  1112. .collect(Collectors.groupingBy(SysPremiumDetails::getCompanyId));
  1113. for (String key : listMap.keySet()) {
  1114. List<SysPremiumInfoVo> proportionList = new ArrayList<>();
  1115. SysPremiumDetailsVo sysPremiumDetailsVo = new SysPremiumDetailsVo();
  1116. sysPremiumDetailsVo.setCompanyId(key);
  1117. List<SysPremiumDetails> detailsList = listMap.get(key);
  1118. BigDecimal extractFee = detailsList.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
  1119. sysPremiumDetailsVo.setExtractFee(extractFee);
  1120. SysPremiumDetails sysPremiumDetails1 = detailsList.get(0);
  1121. String issuerId = sysPremiumDetails1.getIssuerId();
  1122. if (issuerId != null) {
  1123. SysUser sysUser1 = sysUserMapper.selectById(issuerId);
  1124. SysDept sysDept = sysDeptMapper.selectById(sysUser1.getDeptId());
  1125. SysAgencyLeader sysAgencyLeader = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
  1126. .eq(SysAgencyLeader::getDelFlag, 1).eq(SysAgencyLeader::getDeptId, sysDept.getParentId()));
  1127. SysRelationPerson sysRelationPerson = sysRelationPersonMapper.selectOne(new LambdaQueryWrapper<SysRelationPerson>()
  1128. .eq(SysRelationPerson::getAgencyLeaderId,sysAgencyLeader.getUserId())
  1129. .eq(SysRelationPerson::getSource,0).eq(SysRelationPerson::getType,1));
  1130. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  1131. .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysRelationPerson.getSuggestId()));
  1132. sysPremiumDetailsVo.setProfferLevel(sysPartner.getType());
  1133. SysUser sysUser = sysUserMapper.selectById(sysPartner.getUserId());
  1134. sysPremiumDetailsVo.setProfferName(sysUser.getName());
  1135. }
  1136. sysPremiumDetailsVo.setSumpremium(sysPremiumDetails1.getSumpremium());
  1137. SysUser sysUser = sysUserMapper.selectById(sysPremiumDetails1.getIssuerId());
  1138. sysPremiumDetailsVo.setIssuerName(sysUser.getName());
  1139. sysPremiumDetailsVo.setIssuerId(sysPremiumDetails1.getIssuerId());
  1140. sysPremiumDetailsVo.setCreateTime(sysPremiumDetails1.getCreateTime());
  1141. sysPremiumDetailsVo.setLicenseno(sysPremiumDetails1.getLicenseno());
  1142. sysPremiumDetailsVo.setIndustrySector(sysPremiumDetails1.getIndustrySector());
  1143. sysPremiumDetailsVo.setStatus(sysPremiumDetails1.getStatus());
  1144. for (SysPremiumDetails premiumDetails : detailsList) {
  1145. SysPremiumInfoVo sysPremiumInfoVo = new SysPremiumInfoVo();
  1146. sysPremiumInfoVo.setSource(premiumDetails.getSource());
  1147. sysPremiumInfoVo.setSumpremium(premiumDetails.getSumpremium());
  1148. sysPremiumInfoVo.setProportional(premiumDetails.getProportional());
  1149. sysPremiumInfoVo.setExtractFee(premiumDetails.getExtractFee());
  1150. proportionList.add(sysPremiumInfoVo);
  1151. }
  1152. proportionList = proportionList.stream().sorted(Comparator.comparingInt(SysPremiumInfoVo::getSource)).collect(Collectors.toList());
  1153. sysPremiumDetailsVo.setProfferList(proportionList);
  1154. list.add(sysPremiumDetailsVo);
  1155. }
  1156. // if (commissionInfoDto.getType() != 0) {
  1157. // return list.stream().filter(SysPremiumDetailsVo-> SysPremiumDetailsVo.getProfferLevel() == commissionInfoDto.getType()).collect(Collectors.toList());
  1158. // }
  1159. return list;
  1160. }
  1161. @Override
  1162. public TeamUserInfosFreeVo getTeamUserInfo(TeamUserInfosDto teamUserInfosDto) {
  1163. TeamUserInfosFreeVo teamUserInfosFreeVo = new TeamUserInfosFreeVo();
  1164. List<TeamUserInfosVo> userInfosVoList = new ArrayList<>();
  1165. List<String> userIds = teamUserInfosDto.getUserIds();
  1166. if (CollectionUtil.isEmpty(userIds)) {
  1167. return teamUserInfosFreeVo;
  1168. }
  1169. //费用
  1170. List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  1171. .in(SysPremiumDetails::getUserId, userIds)
  1172. .between(StringUtils.isNotEmpty(teamUserInfosDto.getBeginTime()) && StringUtils.isNotEmpty(teamUserInfosDto.getEndTime()),
  1173. SysPremiumDetails::getCreateTime, teamUserInfosDto.getBeginTime(), teamUserInfosDto.getEndTime())
  1174. .eq(SysPremiumDetails::getStatus, 1)
  1175. .eq(teamUserInfosDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, teamUserInfosDto.getIndustrySector()));
  1176. BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  1177. teamUserInfosFreeVo.setSumPremium(sumPremium);
  1178. List<SysUserAccountHistory> sysUserAccountHistories = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
  1179. .in(SysUserAccountHistory::getUserId, userIds).eq(SysUserAccountHistory::getProperty, 3)
  1180. .eq(teamUserInfosDto.getIndustrySector() != null, SysUserAccountHistory::getBusinessSegmentsType, teamUserInfosDto.getIndustrySector()));
  1181. if (CollectionUtil.isNotEmpty(sysUserAccountHistories)) {
  1182. BigDecimal extractFee = sysUserAccountHistories.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
  1183. teamUserInfosFreeVo.setExtractFee(extractFee);
  1184. } else {
  1185. teamUserInfosFreeVo.setExtractFee(BigDecimal.ZERO);
  1186. }
  1187. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  1188. .ne(SysUser::getStatus, 0).in(SysUser::getId, teamUserInfosDto.getUserIds()));
  1189. for (SysUser sysUser : sysUsers) {
  1190. TeamUserInfosVo teamUserInfosVo = new TeamUserInfosVo();
  1191. teamUserInfosVo.setUserId(sysUser.getId());
  1192. teamUserInfosVo.setUserName(sysUser.getName());
  1193. EsmUserReferrer esmUserReferrer = esmUserReferrerMapper.selectById(sysUser.getId());
  1194. if (esmUserReferrer != null) {
  1195. teamUserInfosVo.setLeaderId(esmUserReferrer.getReferrerId());
  1196. SysUser sysUser1 = sysUserMapper.selectById(esmUserReferrer.getReferrerId());
  1197. teamUserInfosVo.setLeaderName(sysUser1.getName());
  1198. }
  1199. //费用
  1200. List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  1201. .eq(SysPremiumDetails::getUserId, sysUser.getId())
  1202. .between(StringUtils.isNotEmpty(teamUserInfosDto.getBeginTime()) && StringUtils.isNotEmpty(teamUserInfosDto.getEndTime()),
  1203. SysPremiumDetails::getCreateTime, teamUserInfosDto.getBeginTime(), teamUserInfosDto.getEndTime())
  1204. .eq(SysPremiumDetails::getStatus, 1)
  1205. .eq(teamUserInfosDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, teamUserInfosDto.getIndustrySector()));
  1206. BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  1207. teamUserInfosVo.setSumPremium(sumPremium1);
  1208. List<SysUserAccountHistory> sysUserAccountHistorie = sysUserAccountHistoryMapper.selectList(new LambdaQueryWrapper<SysUserAccountHistory>()
  1209. .in(SysUserAccountHistory::getUserId, sysUser.getId()).eq(SysUserAccountHistory::getProperty, 3)
  1210. .eq(teamUserInfosDto.getIndustrySector() != null, SysUserAccountHistory::getBusinessSegmentsType, teamUserInfosDto.getIndustrySector()));
  1211. if (CollectionUtil.isNotEmpty(sysUserAccountHistorie)) {
  1212. BigDecimal extractFee1 = sysUserAccountHistorie.stream().map(SysUserAccountHistory::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
  1213. teamUserInfosVo.setExtractFee(extractFee1);
  1214. } else {
  1215. teamUserInfosVo.setExtractFee(BigDecimal.ZERO);
  1216. }
  1217. userInfosVoList.add(teamUserInfosVo);
  1218. }
  1219. teamUserInfosFreeVo.setTeamManNum(userIds.size());
  1220. teamUserInfosFreeVo.setTeamUserInfosVoList(userInfosVoList);
  1221. return teamUserInfosFreeVo;
  1222. }
  1223. @Override
  1224. public FilterPartnerInfoVo queryFilterPartnerInfo(FilterPartnerInfoDto filterPartnerInfoDto) {
  1225. FilterPartnerInfoVo filterPartnerInfoVo = new FilterPartnerInfoVo();
  1226. String userId = BaseController.getUserId();
  1227. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  1228. .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
  1229. //查询登陆人下所有合伙人
  1230. List<SysPartner> sysPartnerList = sysPartnerMapper.queryByLoginId(userId);
  1231. Map<Integer, List<SysPartner>> listMap = sysPartnerList.stream().sorted(Comparator.comparing(SysPartner::getId))
  1232. .collect(Collectors.groupingBy(SysPartner::getType));
  1233. Integer partnerType = filterPartnerInfoDto.getPartnerType();
  1234. List<SysPartner> sysPartnerList1 = listMap.get(sysPartner.getType() + partnerType);
  1235. List<String> collect1 = sysPartnerList1.stream().map(SysPartner::getUserId).collect(Collectors.toList());
  1236. if (collect1.size() == 0) {
  1237. return filterPartnerInfoVo;
  1238. }
  1239. //费用
  1240. List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  1241. .in(CollectionUtil.isNotEmpty(collect1), SysPremiumDetails::getUserId, collect1)
  1242. .between(StringUtils.isNotEmpty(filterPartnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(filterPartnerInfoDto.getEndTime()),
  1243. SysPremiumDetails::getCreateTime, filterPartnerInfoDto.getBeginTime(), filterPartnerInfoDto.getEndTime())
  1244. .eq(SysPremiumDetails::getStatus, 1)
  1245. .eq(filterPartnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, filterPartnerInfoDto.getIndustrySector()));
  1246. BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  1247. BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
  1248. filterPartnerInfoVo.setSumPremium(sumPremium);
  1249. filterPartnerInfoVo.setExtractFee(extractFee);
  1250. if (sysPartnerList1.size() > 0) {
  1251. List<PartnerInfoVo> partnerInfoVoList = new ArrayList<>();
  1252. for (SysPartner partner : sysPartnerList1) {
  1253. PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
  1254. String id = partner.getUserId();
  1255. partnerInfoVo.setUserId(id);
  1256. SysUser sysUser = sysUserMapper.selectById(id);
  1257. partnerInfoVo.setUserName(sysUser.getName());
  1258. SysUser sysUser1 = sysUserMapper.selectById(partner.getSuggestId());
  1259. partnerInfoVo.setSuggestName(sysUser1.getName());
  1260. //费用
  1261. List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  1262. .eq(SysPremiumDetails::getUserId, id)
  1263. .between(StringUtils.isNotEmpty(filterPartnerInfoDto.getBeginTime()) && StringUtils.isNotEmpty(filterPartnerInfoDto.getEndTime()),
  1264. SysPremiumDetails::getCreateTime, filterPartnerInfoDto.getBeginTime(), filterPartnerInfoDto.getEndTime())
  1265. .eq(SysPremiumDetails::getStatus, 1)
  1266. .eq(filterPartnerInfoDto.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, filterPartnerInfoDto.getIndustrySector()));
  1267. BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  1268. BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
  1269. partnerInfoVo.setSumPremium(sumPremium1);
  1270. partnerInfoVo.setExtractFee(extractFee1);
  1271. //直接合伙人
  1272. List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  1273. .eq(SysRelationPerson::getSuggestId, id)
  1274. .eq(SysRelationPerson::getDelFlag, 1)
  1275. .eq(SysRelationPerson::getType, 0)
  1276. .eq(SysRelationPerson::getSource, 0));
  1277. List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  1278. partnerInfoVo.setPartnerIds(collect);
  1279. //直接管理员
  1280. List<SysRelationPerson> sysRelationPersonList1 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  1281. .eq(SysRelationPerson::getSuggestId, id)
  1282. .eq(SysRelationPerson::getDelFlag, 1)
  1283. .eq(SysRelationPerson::getType, 1)
  1284. .eq(SysRelationPerson::getSource, 0));
  1285. List<String> collects = sysRelationPersonList1.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  1286. partnerInfoVo.setLeaderIds(collects);
  1287. partnerInfoVo.setPartnerNumber(collects.size() + collect.size());
  1288. //工作室数
  1289. List<SysRelationPerson> sysRelationPersonList2 = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  1290. .eq(SysRelationPerson::getSuggestId, id)
  1291. .eq(SysRelationPerson::getDelFlag, 1)
  1292. .eq(SysRelationPerson::getType, 1));
  1293. int deptManNum = 0;
  1294. if (sysRelationPersonList2.size() > 0) {
  1295. List<String> idList = sysRelationPersonList2.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  1296. List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  1297. .in(SysAgencyLeader::getUserId, idList).eq(SysAgencyLeader::getDelFlag, 1));
  1298. if (leaderList.size() > 0) {
  1299. for (SysAgencyLeader sysAgencyLeader : leaderList) {
  1300. //获取机构下的团队
  1301. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  1302. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  1303. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  1304. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  1305. if (sysDeptList.size() > 0) {
  1306. for (SysDept sysDept : sysDeptList) {
  1307. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  1308. .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
  1309. deptManNum = deptManNum + sysUsers.size();
  1310. }
  1311. }
  1312. }
  1313. }
  1314. partnerInfoVo.setTeamManNum(deptManNum);
  1315. }
  1316. partnerInfoVoList.add(partnerInfoVo);
  1317. }
  1318. int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum();
  1319. filterPartnerInfoVo.setPartnerInfoVoList(partnerInfoVoList);
  1320. filterPartnerInfoVo.setTeamManNum(sum);
  1321. }
  1322. return filterPartnerInfoVo;
  1323. }
  1324. @Override
  1325. public PartnerLeaderInfoVo partnerLeaderInfo(PartnerGradeInfo partnerGradeInfo) {
  1326. PartnerLeaderInfoVo partnerLeaderInfoVo = new PartnerLeaderInfoVo();
  1327. List<PartnerInfoVo> partnerInfoVoList = new ArrayList<>();
  1328. //工作室
  1329. List<String> leaderIds = partnerGradeInfo.getLeaderIds();
  1330. if (CollectionUtil.isEmpty(leaderIds)) {
  1331. return partnerLeaderInfoVo;
  1332. }
  1333. //费用
  1334. List<SysPremiumDetails> sysPremiumDetails = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  1335. .in(SysPremiumDetails::getUserId, leaderIds)
  1336. .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
  1337. SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
  1338. .eq(SysPremiumDetails::getStatus, 1)
  1339. .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
  1340. BigDecimal sumPremium = sysPremiumDetails.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  1341. BigDecimal extractFee = sysPremiumDetails.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
  1342. partnerLeaderInfoVo.setSumPremium(sumPremium);
  1343. partnerLeaderInfoVo.setExtractFee(extractFee);
  1344. List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  1345. .in(SysAgencyLeader::getUserId, leaderIds).eq(SysAgencyLeader::getDelFlag, 1));
  1346. List<String> userIds = new ArrayList<>();
  1347. for (SysAgencyLeader sysAgencyLeader : leaderList) {
  1348. PartnerInfoVo partnerInfoVo = new PartnerInfoVo();
  1349. String userId = sysAgencyLeader.getUserId();
  1350. partnerInfoVo.setUserId(userId);
  1351. SysUser sysUser = sysUserMapper.selectById(userId);
  1352. partnerInfoVo.setUserName(sysUser.getName());
  1353. SysUser sysUser1 = sysUserMapper.selectById(sysAgencyLeader.getSuggestId());
  1354. partnerInfoVo.setSuggestName(sysUser1.getName());
  1355. partnerInfoVo.setDeptId(sysAgencyLeader.getDeptId());
  1356. SysDept sysDept1 = sysDeptMapper.selectById(sysAgencyLeader.getDeptId());
  1357. partnerInfoVo.setDeptName(sysDept1.getName());
  1358. //费用
  1359. List<SysPremiumDetails> sysPremiumDetail = sysPremiumDetailsMapper.selectList(new LambdaQueryWrapper<SysPremiumDetails>()
  1360. .eq(SysPremiumDetails::getUserId, userId)
  1361. .between(StringUtils.isNotEmpty(partnerGradeInfo.getBeginTime()) && StringUtils.isNotEmpty(partnerGradeInfo.getEndTime()),
  1362. SysPremiumDetails::getCreateTime, partnerGradeInfo.getBeginTime(), partnerGradeInfo.getEndTime())
  1363. .eq(SysPremiumDetails::getStatus, 1)
  1364. .eq(partnerGradeInfo.getIndustrySector() != null, SysPremiumDetails::getIndustrySector, partnerGradeInfo.getIndustrySector()));
  1365. BigDecimal sumPremium1 = sysPremiumDetail.stream().map(SysPremiumDetails::getSumpremium).reduce(BigDecimal.ZERO, BigDecimal::add);
  1366. BigDecimal extractFee1 = sysPremiumDetail.stream().map(SysPremiumDetails::getExtractFee).reduce(BigDecimal.ZERO, BigDecimal::add);
  1367. partnerInfoVo.setSumPremium(sumPremium1);
  1368. partnerInfoVo.setExtractFee(extractFee1);
  1369. int deptManNum = 0;
  1370. //获取机构下的团队
  1371. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  1372. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  1373. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  1374. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  1375. partnerInfoVo.setDeptNum(sysDeptList.size());
  1376. List<String> collect = sysDeptList.stream().map(SysDept::getId).collect(Collectors.toList());
  1377. partnerInfoVo.setDeptIds(collect);
  1378. if (sysDeptList.size() > 0) {
  1379. for (SysDept sysDept : sysDeptList) {
  1380. List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  1381. .likeRight(SysUser::getId, sysDept.getId()).ne(SysUser::getStatus, 0));
  1382. deptManNum = deptManNum + sysUsers.size();
  1383. if (sysUsers.size() > 0) {
  1384. List<String> collect1 = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
  1385. userIds.addAll(collect1);
  1386. }
  1387. }
  1388. }
  1389. partnerInfoVo.setTeamManNum(deptManNum);
  1390. partnerInfoVo.setLevel(partnerGradeInfo.getLevel());
  1391. partnerInfoVoList.add(partnerInfoVo);
  1392. }
  1393. int sum = partnerInfoVoList.stream().mapToInt(PartnerInfoVo::getTeamManNum).sum();
  1394. partnerLeaderInfoVo.setUserIds(userIds);
  1395. partnerLeaderInfoVo.setTeamManNum(sum);
  1396. partnerLeaderInfoVo.setPartnerInfoVoList(partnerInfoVoList);
  1397. return partnerLeaderInfoVo;
  1398. }
  1399. @Override
  1400. public List<SysPartnerVo> getRelationInfo(String userId) {
  1401. List<SysPartnerVo> sysPartners = new ArrayList<>();
  1402. //登陆人的上三级合伙人信息
  1403. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  1404. .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
  1405. SysPartnerVo sysPartnerVo = BeanUtil.copyProperties(sysPartner, SysPartnerVo.class);
  1406. sysPartners.add(sysPartnerVo);
  1407. List<String> ids = new ArrayList<>();
  1408. List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  1409. .eq(SysRelationPerson::getAgencyLeaderId, userId).eq(SysRelationPerson::getType, 0).orderByDesc(SysRelationPerson::getId));
  1410. if (sysRelationPersonList.size() > 0) {
  1411. List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getSuggestId).collect(Collectors.toList());
  1412. if (collect.size() > 4) {
  1413. List<String> collect1 = collect.stream().limit(4).collect(Collectors.toList());
  1414. ids.addAll(collect1);
  1415. } else {
  1416. ids.addAll(collect);
  1417. }
  1418. }
  1419. List<SysRelationPerson> sysRelationList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  1420. .eq(SysRelationPerson::getSuggestId, userId).eq(SysRelationPerson::getType, 0));
  1421. if (sysRelationList.size() > 0) {
  1422. List<String> collect1 = sysRelationList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  1423. if (collect1.size() > 4) {
  1424. List<String> collect2 = collect1.stream().limit(4).collect(Collectors.toList());
  1425. ids.addAll(collect2);
  1426. } else {
  1427. ids.addAll(collect1);
  1428. }
  1429. }
  1430. if (CollectionUtil.isNotEmpty(ids)) {
  1431. List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
  1432. .in(SysPartner::getUserId, ids).eq(SysPartner::getDelFlag, 1));
  1433. List<SysPartnerVo> sysPartnerVos = BeanUtil.copyToList(sysPartnerList, SysPartnerVo.class);
  1434. sysPartners.addAll(sysPartnerVos);
  1435. }
  1436. List<SysPartnerVo> sysPartnerVoList = sysPartners.stream().sorted(Comparator.comparing(SysPartner::getId)).collect(Collectors.toList());
  1437. if (sysPartnerVoList.size() > 0) {
  1438. for (SysPartnerVo partner : sysPartnerVoList) {
  1439. SysUser sysUser1 = sysUserMapper.selectById(partner.getUserId());
  1440. partner.setMobile(sysUser1.getMobile());
  1441. partner.setUserName(sysUser1.getName());
  1442. SysDept sysDept = sysDeptMapper.selectById(sysUser1.getDeptId());
  1443. partner.setDeptName(sysDept.getName());
  1444. SysDept sysDept1 = sysDeptMapper.selectById(sysDept.getParentId());
  1445. partner.setAgencyName(sysDept1.getName());
  1446. String suggestId = partner.getSuggestId();
  1447. if (StringUtils.isNotEmpty(suggestId)) {
  1448. SysUser sysUser = sysUserMapper.selectById(partner.getSuggestId());
  1449. partner.setSuggestName(sysUser.getName());
  1450. }
  1451. }
  1452. }
  1453. return sysPartnerVoList;
  1454. }
  1455. @Override
  1456. public CountUserVo getCountUser(CountUserDto countUserDto) {
  1457. CountUserVo countUserVo = new CountUserVo();
  1458. String userId = BaseController.getUserId();
  1459. //原始参数
  1460. String startTime1 = countUserDto.getBeginTime();
  1461. String endTime1 = countUserDto.getEndTime();
  1462. int deptSum = 0;
  1463. int deptManSum = 0;
  1464. List<String> deptIds = new ArrayList<>();
  1465. //查工作室下的团队
  1466. SysAgencyLeader sysAgencyLeader = sysAgencyLeaderMapper.selectOne(new LambdaQueryWrapper<SysAgencyLeader>()
  1467. .eq(SysAgencyLeader::getDelFlag, 1).in(SysAgencyLeader::getUserId, userId));
  1468. List<SysUser> userList = new ArrayList<>();
  1469. //根据机构id查下面团队
  1470. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  1471. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  1472. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  1473. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  1474. deptSum = deptSum + sysDeptList.size();
  1475. if (sysDeptList.size() > 0) {
  1476. for (SysDept sysDept : sysDeptList) {
  1477. deptIds.add(sysDept.getId());
  1478. //团队下的人数
  1479. List<SysUser> sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  1480. .likeRight(SysUser::getId, sysDept.getId())
  1481. .in(SysUser::getStatus, Arrays.asList(1, 4, 5, 6, 7)));
  1482. userList.addAll(sysUserList);
  1483. deptManSum = deptManSum + sysUserList.size();
  1484. }
  1485. countUserVo.setDeptSum(deptSum);
  1486. countUserVo.setDeptManSum(deptManSum);
  1487. List<SysUser> collect;
  1488. if (CollectionUtil.isNotEmpty(userList)) {
  1489. try {
  1490. if (StringUtils.isNotEmpty(startTime1)) {
  1491. SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1492. Date parse = simpleDateFormat1.parse(startTime1);
  1493. Date parse1 = simpleDateFormat1.parse(endTime1);
  1494. collect = userList.stream().filter(SysUser -> SysUser.getCreateTime().after(parse)
  1495. && SysUser.getCreateTime().before(parse1)).collect(Collectors.toList());
  1496. } else {
  1497. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  1498. Date date = new Date();
  1499. String format = simpleDateFormat.format(date);
  1500. String start = format + " 00:00:01";
  1501. String end = format + " 23:59:59";
  1502. SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1503. Date parse = simpleDateFormat1.parse(start);
  1504. Date parse1 = simpleDateFormat1.parse(end);
  1505. collect = userList.stream().filter(SysUser -> SysUser.getCreateTime().after(parse)
  1506. && SysUser.getCreateTime().before(parse1)).collect(Collectors.toList());
  1507. }
  1508. countUserVo.setCountSum(collect.size());
  1509. } catch (Exception e) {
  1510. throw new SystemException("系统繁忙,请联系管理员");
  1511. }
  1512. } else {
  1513. countUserVo.setCountSum(0);
  1514. }
  1515. //曲线图
  1516. List<CountUserNumVo> countUserNumVoList = null;
  1517. int type = countUserDto.getType();
  1518. //类型:1:团队 2:代理人
  1519. if (type == 1) {
  1520. if (StringUtils.isNotEmpty(startTime1)) {
  1521. String s = startTime1.split(" ")[0];
  1522. String s1 = endTime1.split(" ")[0];
  1523. if (s.equals(s1)) {
  1524. //查一天的数据
  1525. countUserNumVoList = sysPartnerMapper.queryDeptByTimes(deptIds, countUserDto);
  1526. } else {
  1527. countUserNumVoList = sysPartnerMapper.queryDeptByTime(deptIds, countUserDto);
  1528. }
  1529. } else {
  1530. countUserNumVoList = sysPartnerMapper.queryDeptByTime(deptIds, countUserDto);
  1531. }
  1532. } else {
  1533. if (StringUtils.isNotEmpty(startTime1)) {
  1534. String s = startTime1.split(" ")[0];
  1535. String s1 = endTime1.split(" ")[0];
  1536. if (s.equals(s1)) {
  1537. countUserNumVoList = sysPartnerMapper.queryUserByTimes(deptIds, countUserDto);
  1538. } else {
  1539. countUserNumVoList = sysPartnerMapper.queryUserByTime(deptIds, countUserDto);
  1540. }
  1541. } else {
  1542. countUserNumVoList = sysPartnerMapper.queryUserByTime(deptIds, countUserDto);
  1543. }
  1544. }
  1545. countUserVo.setCountUserNumVoList(countUserNumVoList);
  1546. }
  1547. return countUserVo;
  1548. }
  1549. @Override
  1550. public PartnerCountVo getPartnerCount(PartnerCountDto partnerCountDto) {
  1551. PartnerCountVo partnerCountVo = new PartnerCountVo();
  1552. String userId = BaseController.getUserId();
  1553. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  1554. .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
  1555. int type = sysPartner.getType();
  1556. partnerCountDto.setType(type + partnerCountDto.getType());
  1557. //查询登陆人下所有合伙人
  1558. List<SysPartner> sysPartnerList = sysPartnerMapper.queryPartnerById(userId, partnerCountDto);
  1559. if (CollectionUtil.isEmpty(sysPartnerList)) return partnerCountVo;
  1560. //统计每一个等级的合伙人数
  1561. if (type == 1) {
  1562. //1
  1563. List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
  1564. partnerCountVo.setOnePartnerNum(onePartners.size());
  1565. //2
  1566. List<SysPartner> twoPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 2).collect(Collectors.toList());
  1567. partnerCountVo.setTwoPartnerNum(twoPartners.size());
  1568. //3
  1569. List<SysPartner> threePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 3).collect(Collectors.toList());
  1570. partnerCountVo.setThreePartnerNum(threePartners.size());
  1571. //4
  1572. List<SysPartner> fourPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 4).collect(Collectors.toList());
  1573. partnerCountVo.setFourPartnerNum(fourPartners.size());
  1574. } else if (type == 2) {
  1575. //1
  1576. List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
  1577. partnerCountVo.setOnePartnerNum(onePartners.size());
  1578. //2
  1579. List<SysPartner> twoPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 2).collect(Collectors.toList());
  1580. partnerCountVo.setTwoPartnerNum(twoPartners.size());
  1581. //3
  1582. List<SysPartner> threePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 3).collect(Collectors.toList());
  1583. partnerCountVo.setThreePartnerNum(threePartners.size());
  1584. } else if (type == 3) {
  1585. //1
  1586. List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
  1587. partnerCountVo.setOnePartnerNum(onePartners.size());
  1588. //2
  1589. List<SysPartner> twoPartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 2).collect(Collectors.toList());
  1590. partnerCountVo.setTwoPartnerNum(twoPartners.size());
  1591. } else if (type == 4) {
  1592. //1
  1593. List<SysPartner> onePartners = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == type + 1).collect(Collectors.toList());
  1594. partnerCountVo.setOnePartnerNum(onePartners.size());
  1595. }
  1596. //工作室
  1597. List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  1598. .eq(SysRelationPerson::getSuggestId, userId)
  1599. .eq(SysRelationPerson::getDelFlag, 1)
  1600. .eq(SysRelationPerson::getType, 1));
  1601. partnerCountVo.setWorkSum(sysRelationPersonList.size());
  1602. if (CollectionUtil.isNotEmpty(sysRelationPersonList)) {
  1603. List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  1604. //查工作室下的团队
  1605. List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  1606. .eq(SysAgencyLeader::getDelFlag, 1).in(SysAgencyLeader::getUserId, collect));
  1607. int deptSum = 0;
  1608. int deptManSum = 0;
  1609. for (SysAgencyLeader sysAgencyLeader : leaderList) {
  1610. //根据机构id查下面团队
  1611. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  1612. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  1613. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  1614. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  1615. deptSum = deptSum + sysDeptList.size();
  1616. if (sysDeptList.size() > 0) {
  1617. for (SysDept sysDept : sysDeptList) {
  1618. //团队下的人数
  1619. List<SysUser> sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  1620. .likeRight(SysUser::getId, sysDept.getId())
  1621. .in(SysUser::getStatus, Arrays.asList(1, 4, 5, 6, 7)));
  1622. deptManSum = deptManSum + sysUserList.size();
  1623. }
  1624. }
  1625. }
  1626. partnerCountVo.setDeptSum(deptSum);
  1627. partnerCountVo.setDeptManSum(deptManSum);
  1628. }
  1629. //曲线图
  1630. List<CountUserNumVo> countUserNumVoList;
  1631. String beginTime = partnerCountDto.getBeginTime();
  1632. String s = "";
  1633. String s1 = "";
  1634. if (StringUtils.isNotEmpty(beginTime)) {
  1635. s = partnerCountDto.getBeginTime().split(" ")[0];
  1636. s1 = partnerCountDto.getEndTime().split(" ")[0];
  1637. }
  1638. if (StringUtils.isNotEmpty(s)) {
  1639. if (s.equals(s1)) {
  1640. //查一天的数据
  1641. countUserNumVoList = sysPartnerMapper.queryPartnerByTimes(userId, partnerCountDto);
  1642. } else {
  1643. countUserNumVoList = sysPartnerMapper.queryPartnerByTime(userId, partnerCountDto);
  1644. }
  1645. } else {
  1646. countUserNumVoList = sysPartnerMapper.queryPartnerByTime(userId, partnerCountDto);
  1647. }
  1648. partnerCountVo.setCountUserNumVoList(countUserNumVoList);
  1649. return partnerCountVo;
  1650. }
  1651. @Override
  1652. public PartnerProportionVo getPartnerProportion(PartnerCountDto partnerCountDto) {
  1653. PartnerProportionVo partnerProportionVo = new PartnerProportionVo();
  1654. String userId = BaseController.getUserId();
  1655. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  1656. .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
  1657. int level = sysPartner.getType() + partnerCountDto.getType();
  1658. List<SysPartner> sysPartnerList = sysPartnerMapper.queryByLoginId(userId);
  1659. List<SysPartner> collectNum;
  1660. List<SysPartner> collectSum;
  1661. try {
  1662. if (StringUtils.isNotEmpty(partnerCountDto.getBeginTime())) {
  1663. SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1664. Date parse = simpleDateFormat1.parse(partnerCountDto.getBeginTime());
  1665. Date parse1 = simpleDateFormat1.parse(partnerCountDto.getEndTime());
  1666. collectNum = sysPartnerList.stream().filter(SysPartner -> SysPartner.getCreateTime().after(parse)
  1667. && SysPartner.getCreateTime().before(parse1) && SysPartner.getType() == level)
  1668. .collect(Collectors.toList());
  1669. collectSum = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == level)
  1670. .collect(Collectors.toList());
  1671. } else {
  1672. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  1673. Date date = new Date();
  1674. String format = simpleDateFormat.format(date);
  1675. String start = format + " 00:00:01";
  1676. String end = format + " 23:59:59";
  1677. SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  1678. Date parse = simpleDateFormat1.parse(start);
  1679. Date parse1 = simpleDateFormat1.parse(end);
  1680. collectNum = sysPartnerList.stream().filter(SysPartner -> SysPartner.getCreateTime().after(parse)
  1681. && SysPartner.getCreateTime().before(parse1) && SysPartner.getType() == level)
  1682. .collect(Collectors.toList());
  1683. collectSum = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == level)
  1684. .collect(Collectors.toList());
  1685. }
  1686. } catch (Exception e) {
  1687. throw new SystemException("系统繁忙,请联系管理员");
  1688. }
  1689. partnerProportionVo.setNewNum(Optional.ofNullable(collectNum.size()).orElse(0));
  1690. partnerProportionVo.setNumber(Optional.ofNullable(collectSum.size()).orElse(0));
  1691. if (CollectionUtil.isNotEmpty(collectSum)) {
  1692. int i = collectSum.size() - collectNum.size();
  1693. partnerProportionVo.setOldNum(i);
  1694. }
  1695. if (CollectionUtil.isNotEmpty(collectNum)) {
  1696. double v = (float) collectNum.size() / (float) collectSum.size() * 100;
  1697. String format = String.format("%.2f", v);
  1698. Double aDouble = Double.valueOf(format);
  1699. partnerProportionVo.setNewProportion(aDouble);
  1700. }
  1701. int oldNum = partnerProportionVo.getOldNum();
  1702. if (oldNum != 0) {
  1703. double v = (float) oldNum / (float) collectSum.size() * 100;
  1704. String format = String.format("%.2f", v);
  1705. Double aDouble = Double.valueOf(format);
  1706. partnerProportionVo.setOldProportion(aDouble);
  1707. }
  1708. return partnerProportionVo;
  1709. }
  1710. @Override
  1711. public List<LevelPartnerVo> getLevelPartner(Integer type) {
  1712. List<LevelPartnerVo> partnerVoList = new ArrayList<>();
  1713. String userId = BaseController.getUserId();
  1714. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
  1715. .eq(SysPartner::getUserId, userId).eq(SysPartner::getDelFlag, 1));
  1716. int level = sysPartner.getType() + type;
  1717. List<SysPartner> sysPartnerList = sysPartnerMapper.queryByLoginId(userId);
  1718. List<SysPartner> collect = sysPartnerList.stream().filter(SysPartner -> SysPartner.getType() == level)
  1719. .collect(Collectors.toList());
  1720. if (CollectionUtil.isEmpty(collect)) return partnerVoList;
  1721. for (SysPartner partner : collect) {
  1722. LevelPartnerVo levelPartnerVo = new LevelPartnerVo();
  1723. levelPartnerVo.setId(partner.getId());
  1724. SysUser sysUser = sysUserMapper.selectById(partner.getUserId());
  1725. levelPartnerVo.setUserName(sysUser.getName());
  1726. //查合伙人下的工作室下团队的所有人
  1727. List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
  1728. .eq(SysRelationPerson::getSuggestId, partner.getUserId())
  1729. .eq(SysRelationPerson::getDelFlag, 1)
  1730. .eq(SysRelationPerson::getType, 1));
  1731. if (CollectionUtil.isNotEmpty(sysRelationPersonList)) {
  1732. List<String> collects = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
  1733. //查工作室下的团队
  1734. List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
  1735. .eq(SysAgencyLeader::getDelFlag, 1).in(SysAgencyLeader::getUserId, collects));
  1736. int deptSum = 0;
  1737. int deptManSum = 0;
  1738. for (SysAgencyLeader sysAgencyLeader : leaderList) {
  1739. //根据机构id查下面团队
  1740. List<SysDept> sysDeptList = sysDeptMapper.selectList(new LambdaQueryWrapper<SysDept>()
  1741. .likeRight(SysDept::getId, sysAgencyLeader.getDeptId())
  1742. .isNull(SysDept::getComlevel).eq(SysDept::getDelFlag, 0)
  1743. .eq(SysDept::getManagementSource, sysAgencyLeader.getSource()));
  1744. deptSum = deptSum + sysDeptList.size();
  1745. if (sysDeptList.size() > 0) {
  1746. for (SysDept sysDept : sysDeptList) {
  1747. //团队下的人数
  1748. List<SysUser> sysUserList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
  1749. .likeRight(SysUser::getId, sysDept.getId())
  1750. .in(SysUser::getStatus, Arrays.asList(1, 4, 5, 6, 7)));
  1751. deptManSum = deptManSum + sysUserList.size();
  1752. }
  1753. }
  1754. }
  1755. levelPartnerVo.setDeptManNum(deptManSum);
  1756. } else {
  1757. levelPartnerVo.setDeptManNum(0);
  1758. }
  1759. partnerVoList.add(levelPartnerVo);
  1760. }
  1761. return partnerVoList.stream().sorted(Comparator.comparingInt(LevelPartnerVo::getDeptManNum).reversed()).collect(Collectors.toList());
  1762. }
  1763. @Override
  1764. public HttpResult<AAPLoginVo> loginAlipay(AlipayBindVo alipayBindVo) throws AlipayApiException {
  1765. AAPLoginVo aapLoginVo = new AAPLoginVo();
  1766. AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
  1767. // 构造请求参数以调用接口
  1768. AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
  1769. // 设置授权码
  1770. request.setCode(alipayBindVo.getCode());
  1771. // 设置授权方式
  1772. request.setGrantType("authorization_code");
  1773. AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
  1774. String aliPayId = response.getUserId();
  1775. SysUser sysUser = sysUserService.lambdaQuery()
  1776. .eq(SysUser::getAlipay, aliPayId)
  1777. .one();
  1778. // 没有绑定支付宝
  1779. if (sysUser == null) {
  1780. throw new SystemException("您还未绑定工号");
  1781. }
  1782. //校验登录用户是否为合伙人或者是机构负责人
  1783. boolean a = this.checkPartner(sysUser.getId());
  1784. boolean b = sysAgencyLeaderService.checkUserId(sysUser.getId());
  1785. if (a) {
  1786. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getUserId, sysUser.getId()));
  1787. //类型:1.合伙人;2机构负责人
  1788. aapLoginVo.setType(1);
  1789. aapLoginVo.setLevel(sysPartner.getType());
  1790. } else if (b) {
  1791. aapLoginVo.setType(2);
  1792. } else {
  1793. throw new SystemException("该用户无权限登录AAP,只能合伙人或者工作室管理员才能登录!");
  1794. }
  1795. SysUser.verifyUser(sysUser);//验证用户状态
  1796. String token = StpUtil.createLoginSession(sysUser.getId());
  1797. // AlipayVo alipayVo = new AlipayVo(token, sysUser.getId());
  1798. StpUtil.getSessionByLoginId(sysUser.getId()).set(SaSession.USER, sysUser);
  1799. aapLoginVo.setToken(token);
  1800. return HttpResult.ok("", aapLoginVo);
  1801. }
  1802. @Override
  1803. public String checkBindAlipay() {
  1804. SysUser sysUser = sysUserMapper.selectById(BaseController.getUserId());
  1805. return sysUser.getAlipay();
  1806. }
  1807. @Override
  1808. public HttpResult<Object> bindAlipay(AlipayBindVo alipayBindVo, String userId) throws AlipayApiException {
  1809. AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
  1810. // 构造请求参数以调用接口
  1811. AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
  1812. // 设置授权码
  1813. request.setCode(alipayBindVo.getCode());
  1814. // 设置授权方式
  1815. request.setGrantType("authorization_code");
  1816. AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
  1817. String aliPayId = response.getUserId();
  1818. SysUser sysUser = sysUserService.lambdaQuery().eq(SysUser::getAlipay, aliPayId).one();
  1819. if (sysUser != null) {
  1820. throw new SystemException("同一支付宝不能重复绑定");
  1821. }
  1822. SysUser user = sysUserService.lambdaQuery().eq(SysUser::getId, userId).one();
  1823. if (ObjectUtils.isEmpty(user)) {
  1824. throw new SystemException("你输入的工号不存在");
  1825. }
  1826. user.setAlipay(aliPayId);
  1827. boolean update = sysUserService.updateById(user);
  1828. if (update) {
  1829. return HttpResult.ok("绑定成功");
  1830. }
  1831. throw new SystemException("绑定失败");
  1832. }
  1833. //获取支付宝账户信息
  1834. private static AlipayConfig getAlipayConfig() {
  1835. String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCbASv72AfX4x8jPbcvuS1CNM5KAUr9f3Ht0p4UBG3K/u87TrwDwhIOyCjAcoIILCUdYQj6ZIcI/pbirAVddAgGJ+W7An68iV0B2ik+640SgVFD/QJJIjWBOM4dDn/gkv2Tf039k0+ZTc+qwO3eN8zPBQy6DsP2lDoVh/tMpIPO/yrVq51dn7ypJGGDbe6yBFg5aov74/rxu4Fzboz8hZjdGcudSR8G5+kd9cm7PzAaCjcaNYHEhe5DYLwt2Twsps+tSH9S273ZexKysYk5YveJXiPLI3t81myzbkJCDwZsrP2TG/kA1kxLo+duOeUpxWUYdWPpcbspxJcPZl4u0u1rAgMBAAECggEAHtpz29Rbc1CFISmmrfwpExWZvkdVmvHkRpd22bsr840dJ2v7pq/ZklGrMutYELJgzOFEvTqHWnX6qLHe+4QeGMOWScwsV/Drr3OyZBDU6ssM1wCklNQXXFpnRIdfUt9PVC2x43iQDo7beDyg3Gu0+7wglWRdA1br3N9NWSsiBXCbPjX3c93SSpWHg3N+NMnAsyqKvsbqYbtyRRgqo6JzjL2OyT+tRcRiFcHx8QLyFKWW08L7p4F/J74COqLYMgfMF2+bliQgpGscnPK8Zg7+Md5T+Ecmwy43t0Y7ca34A+DapRZ57EJM++Psf7lknEgaLXs+OkHiJJwegdkqvWy8eQKBgQDg4wvM63h9KiYK/ItXbf/YN5kkgZY7g1N/uUXiHXdXZ/ibcm0yghGWimiRQ68H6YFdd+KCtVYWj5kiLAi8xhKdH5l/t6LyOJhGdRgW2JJoyBroPrYbqP/TYFlodKOclXpe4dvgbyiJgP754X32fY1SrpEyP/RB02oKOhHBTCL+3wKBgQCwcw/MK8tnIR0vg5aNmuA5f5D1oWbxPq7j1CIKJsz2NsLh99Oc0MpQupqDHnh8+ZK7RK4uwa/wAx4qT+X9Wjc2++Zly58F5vMk8Q63G1Yx1hLmpD+1JdRODi5oQevhbz/+UrelwISLgYaPtn81Oo9uPohqny9mfP0sz9eTCsU+9QKBgQCf4oxHOrpFMqwtb3OZy0j0bkLg44jt8uZwjkaTBiQM7oyf5/Ce0j6y6uCBNr/APlGNJGjUSRxVme5jjy7/F0uwjgDR/rtIvtf0b9ealosxF+OZbsyGSdbobz3ht9uCvftsbeOnYyBM8ntVKO4nSwgo2pe8RB/ilO51Kufop7rRvQKBgA+HkPRfRl+lQnRUGIQOBX4KBDAaLH0/DxVuLjDGiXOCDlTlAvLiTWwdgEvZ+rDFJmzk9o+W7G0rWRRQQ+Wwcvub4ANFkJFsainuLWVgOo3YUYGLIzBGTBEynlL+ukv1BqTTkuY7s26zz6wGW9vLc6Q4TLlVmU5j4cR35nlCkWmhAoGAObaVJM7GoJovdOGx5s3fqkn9Rb2EtT8sQ3L15gKGNNLKPsOmJEBzEgSDOh86yLLPqFQoBGqWQZ4v1qAxJpT8zSKJbms02lU3HU6IgyO1VSdxuxu/15CrgOiZf0S1nf1Du4D9NNjzXM2WwiOPToIuT06fRFvpJgwjkmiEsjKdEkI=";
  1836. String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmwEr+9gH1+MfIz23L7ktQjTOSgFK/X9x7dKeFARtyv7vO068A8ISDsgowHKCCCwlHWEI+mSHCP6W4qwFXXQIBifluwJ+vIldAdopPuuNEoFRQ/0CSSI1gTjOHQ5/4JL9k39N/ZNPmU3PqsDt3jfMzwUMug7D9pQ6FYf7TKSDzv8q1audXZ+8qSRhg23usgRYOWqL++P68buBc26M/IWY3RnLnUkfBufpHfXJuz8wGgo3GjWBxIXuQ2C8Ldk8LKbPrUh/Utu92XsSsrGJOWL3iV4jyyN7fNZss25CQg8GbKz9kxv5ANZMS6PnbjnlKcVlGHVj6XG7KcSXD2ZeLtLtawIDAQAB";
  1837. AlipayConfig alipayConfig = new AlipayConfig();
  1838. alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
  1839. alipayConfig.setAppId("2021004193614682");
  1840. alipayConfig.setPrivateKey(privateKey);
  1841. alipayConfig.setFormat("json");
  1842. alipayConfig.setAlipayPublicKey(alipayPublicKey);
  1843. alipayConfig.setCharset("UTF-8");
  1844. alipayConfig.setSignType("RSA2");
  1845. return alipayConfig;
  1846. }
  1847. @Override
  1848. public HttpResult<AAPLoginVo> loginWechat(WechatLoginVo wechatLoginVo) throws WxErrorException {
  1849. AAPLoginVo aapLoginVo = new AAPLoginVo();
  1850. WxOAuth2AccessToken accessToken = wxMpService.getOAuth2Service().getAccessToken(wechatLoginVo.getCode());
  1851. String openId = accessToken.getOpenId();
  1852. SysUser sysUser = sysUserService.lambdaQuery()
  1853. .eq(SysUser::getOpenid, openId)
  1854. .one();
  1855. // 没有绑定微信
  1856. if (sysUser == null) {
  1857. throw new SystemException("您还未绑定工号。");
  1858. }
  1859. //校验登录用户是否为合伙人或者是机构负责人
  1860. boolean a = this.checkPartner(sysUser.getId());
  1861. boolean b = sysAgencyLeaderService.checkUserId(sysUser.getId());
  1862. if (a) {
  1863. SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getUserId, sysUser.getId()));
  1864. //类型:1.合伙人;2机构负责人
  1865. aapLoginVo.setType(1);
  1866. aapLoginVo.setLevel(sysPartner.getType());
  1867. } else if (b) {
  1868. aapLoginVo.setType(2);
  1869. } else {
  1870. throw new SystemException("该用户无权限登录AAP,只能合伙人或者工作室管理员才能登录!");
  1871. }
  1872. SysUser.verifyUser(sysUser);
  1873. String token = StpUtil.createLoginSession(sysUser.getId());
  1874. StpUtil.getSessionByLoginId(sysUser.getId()).set(SaSession.USER, sysUser);
  1875. aapLoginVo.setToken(token);
  1876. return HttpResult.ok("", aapLoginVo);
  1877. }
  1878. @Override
  1879. public HttpResult<Object> bindWechat(WechatBindVo wechatBindVo, String userId) throws WxErrorException {
  1880. WxOAuth2AccessToken accessToken = wxMpService.getOAuth2Service().getAccessToken(wechatBindVo.getCode());
  1881. String openId = accessToken.getOpenId();
  1882. SysUser sysUser = sysUserService.lambdaQuery().eq(SysUser::getOpenid, openId).one();
  1883. if (sysUser != null) {
  1884. throw new SystemException("同一微信不能重复绑定");
  1885. }
  1886. SysUser user = sysUserService.lambdaQuery().eq(SysUser::getId, userId).one();
  1887. if (ObjectUtils.isEmpty(user)) {
  1888. throw new SystemException("你输入的工号不存在");
  1889. }
  1890. user.setOpenid(openId);
  1891. boolean update = sysUserService.updateById(user);
  1892. if (update) {
  1893. return HttpResult.ok("绑定成功");
  1894. }
  1895. throw new SystemException("绑定失败");
  1896. }
  1897. @Override
  1898. public String checkBindWechat() {
  1899. SysUser sysUser = sysUserMapper.selectById(BaseController.getUserId());
  1900. return sysUser.getOpenid();
  1901. }
  1902. }