|
|
@@ -16,7 +16,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ydtech.core.page.HttpResult;
|
|
|
import com.ydtech.exception.SystemException;
|
|
|
+import com.ydtech.modules.admin.dao.SysPartnerAccountMapper;
|
|
|
import com.ydtech.modules.admin.dao.SysUserMapper;
|
|
|
+import com.ydtech.modules.admin.model.SysPartnerAccount;
|
|
|
import com.ydtech.modules.admin.model.SysUser;
|
|
|
import com.ydtech.modules.admin.model.vo.AppUserInfoVo;
|
|
|
import com.ydtech.modules.admin.service.impl.SysUserServiceImpl;
|
|
|
@@ -69,15 +71,15 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
@Autowired
|
|
|
private PartnerLiftingRecordMapper liftingRecordMapper;
|
|
|
|
|
|
- @Autowired
|
|
|
- private PartnerPartnerAccountMapper accountMapper;
|
|
|
-
|
|
|
@Autowired
|
|
|
private PartnerCommissionService commissionService;
|
|
|
|
|
|
@Autowired
|
|
|
private PartnerRuleService partnerRuleService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysPartnerAccountMapper sysPartnerAccountMapper;
|
|
|
+
|
|
|
@Value("${partner.expireDays}")
|
|
|
private Long expireDays;
|
|
|
|
|
|
@@ -279,44 +281,49 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
|
|
|
|
|
|
List<PartnerUser> partnerUsers = baseMapper.selectList(new LambdaQueryWrapper<>(PartnerUser.class)
|
|
|
- .eq(PartnerUser::getUserId,params.getUserId())
|
|
|
- .in(PartnerUser::getGrade, getGradeList(teamOverviewVos)));
|
|
|
+ .eq(PartnerUser::getUserId,params.getUserId()));
|
|
|
|
|
|
Map<Integer, PartnerUser> userMap = partnerUsers.stream()
|
|
|
.collect(Collectors.toMap(PartnerUser::getGrade, Function.identity()));
|
|
|
|
|
|
Integer max = baseMapper.selectMax(params.getUserId());
|
|
|
|
|
|
+ if (!userMap.containsKey(1)){
|
|
|
+ teamOverviewVos.removeIf(team -> Objects.equals(team.getGrade(), "1"));
|
|
|
+ }
|
|
|
+
|
|
|
for (TeamOverviewVo overviewVo : teamOverviewVos) {
|
|
|
- overviewVo.setLockGrade(max);
|
|
|
PartnerUser partnerUser = userMap.get(Integer.valueOf(overviewVo.getGrade()));
|
|
|
- switch (overviewVo.getGrade()){
|
|
|
- case "1":
|
|
|
- overviewVo.setVo1(baseMapper.selectStatistics(overviewVo.getGrade(), params));
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- overviewVo.setVo2(baseMapper.selectStatistics(overviewVo.getGrade(), params));
|
|
|
- break;
|
|
|
- case "3":
|
|
|
- overviewVo.setVo3(baseMapper.selectStatistics(overviewVo.getGrade(), params));
|
|
|
- break;
|
|
|
- case "4":
|
|
|
- overviewVo.setVo4(baseMapper.selectStatistics(overviewVo.getGrade(), params));
|
|
|
- break;
|
|
|
- }
|
|
|
- if (null == partnerUser){
|
|
|
- overviewVo.setParentStatus("0");
|
|
|
- }else {
|
|
|
- if (partnerUser.isIdentityStatus()){
|
|
|
- overviewVo.setParentStatus("2");
|
|
|
- overviewVo.setLockCommission(liftingRecordService.queryLockCommission(partnerUser.getUserId(),overviewVo.getGrade()));
|
|
|
- Long difference = calculateTimeDifference(partnerUser.getUserId(), partnerUser.getGrade());
|
|
|
- overviewVo.setZeroDays(difference);
|
|
|
- PartnerRuleEntity rule = partnerRuleService.selectByGrade(overviewVo.getGrade());
|
|
|
- overviewVo.setFallAmount(rule.getFallAmount());
|
|
|
- getRule(overviewVo, partnerUser);
|
|
|
+ if (null != partnerUser){
|
|
|
+ overviewVo.setLockGrade(max);
|
|
|
+ switch (overviewVo.getGrade()){
|
|
|
+ case "1":
|
|
|
+ overviewVo.setVo1(baseMapper.selectStatisticsMap(overviewVo.getGrade(), params));
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ overviewVo.setVo2(baseMapper.selectStatisticsMap(overviewVo.getGrade(), params));
|
|
|
+ break;
|
|
|
+ case "3":
|
|
|
+ overviewVo.setVo3(baseMapper.selectStatisticsMap(overviewVo.getGrade(), params));
|
|
|
+ break;
|
|
|
+ case "4":
|
|
|
+ overviewVo.setVo4(baseMapper.selectStatisticsMap(overviewVo.getGrade(), params));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (null == partnerUser){
|
|
|
+ overviewVo.setParentStatus("0");
|
|
|
}else {
|
|
|
- overviewVo.setParentStatus("1");
|
|
|
+ if (partnerUser.isIdentityStatus()){
|
|
|
+ overviewVo.setParentStatus("2");
|
|
|
+ overviewVo.setLockCommission(liftingRecordService.queryLockCommission(partnerUser.getUserId(),overviewVo.getGrade()));
|
|
|
+ Long difference = calculateTimeDifference(partnerUser.getUserId(), partnerUser.getGrade());
|
|
|
+ overviewVo.setZeroDays(difference);
|
|
|
+ PartnerRuleEntity rule = partnerRuleService.selectByGrade(overviewVo.getGrade());
|
|
|
+ overviewVo.setFallAmount(rule.getFallAmount());
|
|
|
+ getRule(overviewVo, partnerUser);
|
|
|
+ }else {
|
|
|
+ overviewVo.setParentStatus("1");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -396,12 +403,46 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
));
|
|
|
|
|
|
List<MyUserLevel> list = getUserLevels(userId, partnerRules, userMap);
|
|
|
- list.sort((o1, o2) -> Integer.compare(o2.getGrade(), o1.getGrade()));
|
|
|
+ //list.sort((o1, o2) -> Integer.compare(o2.getGrade(), o1.getGrade()));
|
|
|
return HttpResult.ok(list);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public String proportional(String grade, String userId){
|
|
|
+ if (StringUtils.equals("1", grade)){
|
|
|
+ return "100";
|
|
|
+ }
|
|
|
+ HttpResult<PartnerRuleEntity> httpResult = queryDowngradeTask(grade, userId);
|
|
|
+ PartnerRuleEntity data = httpResult.getData();
|
|
|
+
|
|
|
+ List<PartnerAttribute> strategyArray = data.getRequirement();
|
|
|
+
|
|
|
+ PartnerAttribute yq = strategyArray.get(0);
|
|
|
+
|
|
|
+ BigDecimal min = new BigDecimal(yq.getMin());
|
|
|
+ BigDecimal achieve = new BigDecimal(yq.getAchieve());
|
|
|
+
|
|
|
+ BigDecimal yqPercent = achieve.divide(min, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("0.33"));
|
|
|
+
|
|
|
+ PartnerAttribute bf = strategyArray.get(1);
|
|
|
+ BigDecimal bfMin = new BigDecimal(bf.getMin());
|
|
|
+ BigDecimal bfAchieve = new BigDecimal(bf.getAchieve());
|
|
|
+ BigDecimal bfPercent = bfAchieve.divide(bfMin, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("0.34"));
|
|
|
+
|
|
|
+ PartnerAttribute gr = strategyArray.get(2);
|
|
|
+ BigDecimal grMin = new BigDecimal(gr.getMin());
|
|
|
+ BigDecimal grAchieve = new BigDecimal(gr.getAchieve());
|
|
|
+ BigDecimal grPercent = grAchieve.divide(grMin, 2, RoundingMode.HALF_UP).multiply(new BigDecimal("0.33"));
|
|
|
+
|
|
|
+ BigDecimal multiply = yqPercent.add(bfPercent).add(grPercent).multiply(new BigDecimal("100"));
|
|
|
+
|
|
|
+ return String.valueOf(BigDecimal.ZERO.compareTo(multiply) == 0 ? "0" : multiply.setScale(2, RoundingMode.HALF_UP).toString());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
- public HttpResult queryDowngradeTask(String grade, String userId) {
|
|
|
+ public HttpResult<PartnerRuleEntity> queryDowngradeTask(String grade, String userId) {
|
|
|
if (StringUtils.equals("1", grade)){
|
|
|
throw new SystemException("已达到最高身份");
|
|
|
}
|
|
|
@@ -421,7 +462,7 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
return getAttribute(partnerRuleEntity,bf, p, ownBf, requirement);
|
|
|
}
|
|
|
|
|
|
- private HttpResult getAttribute(PartnerRuleEntity partnerRuleEntity, BigDecimal bf, BigDecimal p, BigDecimal ownBf, List<PartnerAttribute> requirement) {
|
|
|
+ private HttpResult<PartnerRuleEntity> getAttribute(PartnerRuleEntity partnerRuleEntity, BigDecimal bf, BigDecimal p, BigDecimal ownBf, List<PartnerAttribute> requirement) {
|
|
|
requirement.get(0).setAchieve(String.valueOf(p));
|
|
|
requirement.get(1).setAchieve(null != bf ? bf.toString() : BigDecimal.ZERO.toString());
|
|
|
requirement.get(2).setAchieve(null != ownBf ? ownBf.toString() : BigDecimal.ZERO.toString());
|
|
|
@@ -473,6 +514,57 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
return HttpResult.ok(map);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public HttpResult<PartnerPartnerAccount> getHomeWallet(AppHomeParams params) {
|
|
|
+ if (StringUtils.isEmpty(params.getUserId())){
|
|
|
+ return HttpResult.error("用户ID不能为空");
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(params.getGrade())){
|
|
|
+ return HttpResult.error("等级不能为空");
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<PartnerPartnerAccount> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(PartnerPartnerAccount::getUserId,params.getUserId());
|
|
|
+ lambdaQueryWrapper.eq(PartnerPartnerAccount::getGrade,params.getGrade());
|
|
|
+ //PartnerPartnerAccount account = partnerPartnerAccountMapper.selectOne(lambdaQueryWrapper);
|
|
|
+ PartnerPartnerAccount account = partnerPartnerAccountMapper.selectStatisticalData(params);
|
|
|
+ PartnerUser partnerUser = baseMapper.selectOne(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, params.getUserId()).eq(PartnerUser::getGrade, params.getGrade()));
|
|
|
+ if (account == null){
|
|
|
+ account = new PartnerPartnerAccount();
|
|
|
+ }else {
|
|
|
+ account.setCashFee(account.getExtractFee().subtract(account.getHistoryFee()));
|
|
|
+ if (partnerUser.isIdentityStatus()){
|
|
|
+ BigDecimal lockCommission = liftingRecordService.queryLockCommission(params.getUserId(), params.getGrade());
|
|
|
+ account.setFreeze(lockCommission);
|
|
|
+ if (null != lockCommission) {
|
|
|
+ account.setCashFee(account.getCashFee().subtract(lockCommission));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return HttpResult.ok(account);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String, String>> getUserGradeListMap(String userId) {
|
|
|
+ QueryWrapper<PartnerUser> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("user_id", userId);
|
|
|
+ List<PartnerRuleEntity> ruleEntityList = partnerRuleService.queryAll();
|
|
|
+ List<PartnerUser> partnerUsers = baseMapper.selectList(queryWrapper);
|
|
|
+ List<Map<String,String>> list = new ArrayList<>();
|
|
|
+ for (PartnerRuleEntity ruleEntity : ruleEntityList) {
|
|
|
+ if (ruleEntity.getGrade().equals("5")){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ PartnerUser user = partnerUsers.stream().filter(partnerUser -> partnerUser.getGrade().equals(ruleEntity.getGrade())).findAny().orElse(null);
|
|
|
+ HashMap<String, String> map = new HashMap<>();
|
|
|
+ map.put("grade",ruleEntity.getGrade());
|
|
|
+ map.put("userId",userId);
|
|
|
+ map.put("gradeName",ruleEntity.getGradeName());
|
|
|
+ map.put("status",null == user ? "0" : "1");
|
|
|
+ list.add( map);
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
private List<MyUserLevel> getUserLevels(String userId, List<PartnerRule> partnerRules, Map<Integer, PartnerUser> userMap) {
|
|
|
List<MyUserLevel> list = new ArrayList<>();
|
|
|
@@ -481,16 +573,20 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
if (partnerRules == null || userId == null || userMap == null) {
|
|
|
return list;
|
|
|
}
|
|
|
-
|
|
|
+ boolean containsKey = userMap.containsKey(1);
|
|
|
for (PartnerRule rule : partnerRules) {
|
|
|
+ if (!containsKey && rule.getGrade() == 1){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
Integer grade = rule.getGrade();
|
|
|
PartnerUser partnerUser = userMap.get(grade);
|
|
|
MyUserLevel level = createBasicUserLevel(rule);
|
|
|
-
|
|
|
if (partnerUser == null) {
|
|
|
+ level.setProportional("0");
|
|
|
handleUnregisteredUser(userId, userMap, grade, level);
|
|
|
} else {
|
|
|
handleRegisteredUser(userId, partnerUser, level);
|
|
|
+ level.setProportional(proportional(String.valueOf(partnerUser.getGrade()),partnerUser.getUserId()));
|
|
|
}
|
|
|
|
|
|
list.add(level);
|
|
|
@@ -701,14 +797,6 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
map.put("data", getPage(page));
|
|
|
map.put("total", hashMap);
|
|
|
map.put("parentStatus", partnerUser.isIdentityStatus() ? "2" : "1");
|
|
|
- BigDecimal lockCommission = null;
|
|
|
- Long zeroDays = null;
|
|
|
- if (partnerUser.isIdentityStatus()){
|
|
|
- lockCommission = accountMapper.selectCashFee(partnerUser.getUserId(), partnerUser.getGrade());
|
|
|
- zeroDays = calculateTimeDifference(partnerUser.getUserId(), partnerUser.getGrade());
|
|
|
- }
|
|
|
- map.put("lockCommission",lockCommission);
|
|
|
- map.put("zeroDays",zeroDays);
|
|
|
PartnerRuleEntity ruleEntity = partnerRuleService.selectByGrade(overviewVo.getGrade());
|
|
|
map.put("fallAmount",ruleEntity.getFallAmount());
|
|
|
getRule(overviewVo, partnerUser);
|
|
|
@@ -1379,9 +1467,12 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public PartnerPartnerAccount newGetFee(String userId) {
|
|
|
- PartnerPartnerAccount account = partnerPartnerAccountMapper.selectByUserId(userId);
|
|
|
-
|
|
|
+ public SysPartnerAccount newGetFee(String userId) {
|
|
|
+ SysPartnerAccount account = sysPartnerAccountMapper.selectFee(userId);
|
|
|
+ if (account == null) {
|
|
|
+ account = new SysPartnerAccount();
|
|
|
+ }
|
|
|
+ //每个身份下锁定的佣金
|
|
|
List<PartnerUser> partnerUsers = baseMapper.selectList(new LambdaQueryWrapper<>(PartnerUser.class).eq(PartnerUser::getUserId, userId));
|
|
|
BigDecimal commissionTotal = BigDecimal.ZERO;
|
|
|
for (PartnerUser user : partnerUsers) {
|
|
|
@@ -1390,7 +1481,7 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
|
|
|
commissionTotal = commissionTotal.add(commission);
|
|
|
}
|
|
|
}
|
|
|
- account.setCashFee(account.getCashFee().subtract(commissionTotal));
|
|
|
+ account.setFrozenAmount(null == commissionTotal ? BigDecimal.ZERO : commissionTotal);
|
|
|
return account;
|
|
|
}
|
|
|
|