SysPartnerServiceImpl.java 140 KB

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