|
|
@@ -72,9 +72,11 @@ import com.ydtech.modules.order.entity.vo.zj.ZjQuoteAccidentVo;
|
|
|
import com.ydtech.modules.order.service.*;
|
|
|
import com.ydtech.modules.partner.CalculateCommissionUtils;
|
|
|
import com.ydtech.modules.partner.dao.PartnerPremiumDetailsMapper;
|
|
|
+import com.ydtech.modules.partner.model.PartnerKickbackChange;
|
|
|
import com.ydtech.modules.partner.model.PartnerPartnerAccount;
|
|
|
import com.ydtech.modules.partner.model.PartnerPremiumDetails;
|
|
|
import com.ydtech.modules.partner.model.PartnerUser;
|
|
|
+import com.ydtech.modules.partner.service.PartnerKickbackChangeService;
|
|
|
import com.ydtech.modules.partner.service.PartnerUserService;
|
|
|
import com.ydtech.modules.protocol.entity.constants.PtlApiType;
|
|
|
import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
|
|
|
@@ -233,6 +235,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
@Autowired
|
|
|
private SysSwitchConfigService sysSwitchConfigService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private PartnerKickbackChangeService kickbackChangeService;
|
|
|
|
|
|
public InsOrdersServiceImpl(OrderComponents orderComponents, SysUserService sysUserService,
|
|
|
SysUserRoleService sysUserRoleService,
|
|
|
@@ -326,6 +330,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
String userId = insOrders.getUserid();
|
|
|
List<PartnerUser> partnerUser = partnerUserService.selectByUserId(userId);
|
|
|
List<PartnerPremiumDetails> list = new ArrayList<>();
|
|
|
+ List<PartnerKickbackChange> kickbackChange = new ArrayList<>();
|
|
|
for (PartnerUser user : partnerUser) {
|
|
|
PartnerPremiumDetails details = new PartnerPremiumDetails();
|
|
|
details.setUserId(user.getUserId());
|
|
|
@@ -344,23 +349,55 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
.divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN));
|
|
|
details.setStatus(0);
|
|
|
details.setType(1);
|
|
|
+ details.setDeptId(user.getDeptId());
|
|
|
details.setIndustrySector(0);
|
|
|
details.setCreateTime(new Date());
|
|
|
details.setLicenseno(insOrders.getLicenseno());
|
|
|
details.setSource(user.getGrade());
|
|
|
list.add( details);
|
|
|
- //partnerPremiumDetailsMapper.insert(details);
|
|
|
- saveFeeLevelInfo(user.getGrade(),user.getReferrerId(),insAreaCompany,userId,list);
|
|
|
+ saveFeeLevelInfo(user.getGrade(),user.getReferrerId(),insAreaCompany,userId,list,kickbackChange);
|
|
|
}
|
|
|
for (PartnerPremiumDetails details : list) {
|
|
|
partnerPremiumDetailsMapper.insert(details);
|
|
|
}
|
|
|
+ for (PartnerPremiumDetails details : list) {
|
|
|
+ BigDecimal latest = CalculateCommissionUtils.calculateCommission(String.valueOf(details.getSource()),details.getUserId(),details.getIssuerId());
|
|
|
+ BigDecimal mostRecent = kickbackChangeService.mostRecentRecord(details.getUserId());
|
|
|
+ getPartnerKickbackChange(latest, mostRecent, details, kickbackChange);
|
|
|
+ }
|
|
|
|
|
|
+ for (PartnerKickbackChange change : kickbackChange) {
|
|
|
+ kickbackChangeService.saveKickbackChange(change);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+
|
|
|
+ public void getPartnerKickbackChange(BigDecimal latest,BigDecimal mostRecent,PartnerPremiumDetails details,List<PartnerKickbackChange> list){
|
|
|
+ if (mostRecent == null){
|
|
|
+ PartnerKickbackChange change = getChange(null,latest, details);
|
|
|
+ list.add( change);
|
|
|
+ }else {
|
|
|
+ if (latest.compareTo(mostRecent) != 0){
|
|
|
+ PartnerKickbackChange change = getChange(latest, mostRecent, details);
|
|
|
+ list.add( change);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ private static PartnerKickbackChange getChange(BigDecimal bigDecimal, BigDecimal mostRecent, PartnerPremiumDetails details) {
|
|
|
+ PartnerKickbackChange change = new PartnerKickbackChange();
|
|
|
+ change.setUserId(details.getUserId());
|
|
|
+ change.setUserGrade(String.valueOf(details.getSource()));
|
|
|
+ change.setOriginalCommission(mostRecent);
|
|
|
+ change.setAfterChange(bigDecimal);
|
|
|
+ String reason = CalculateCommissionUtils.getReason(String.valueOf(details.getSource()), details.getUserId(), details.getIssuerId());
|
|
|
+ change.setChangeReason(reason);
|
|
|
+ change.setDeptId(details.getDeptId());
|
|
|
+ change.setChangeTime(new Date());
|
|
|
+ return change;
|
|
|
+ }
|
|
|
|
|
|
- public void saveFeeLevelInfo(Integer grade,String referrerId,InsAreaCompany insAreaCompany,String userId,List<PartnerPremiumDetails> list) {
|
|
|
+ public void saveFeeLevelInfo(Integer grade,String referrerId,InsAreaCompany insAreaCompany,String userId,List<PartnerPremiumDetails> list,List<PartnerKickbackChange> kickbackChange) {
|
|
|
|
|
|
InsOrders insOrders = getById(insAreaCompany.getOrderno());
|
|
|
grade -- ;
|
|
|
@@ -388,13 +425,13 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
|
|
|
.divide(new BigDecimal("100"))).setScale(2, RoundingMode.DOWN));
|
|
|
details.setStatus(0);
|
|
|
details.setType(1);
|
|
|
+ details.setDeptId(partnerUser.getDeptId());
|
|
|
details.setIndustrySector(0);
|
|
|
details.setCreateTime(new Date());
|
|
|
details.setLicenseno(insOrders.getLicenseno());
|
|
|
details.setSource(partnerUser.getGrade());
|
|
|
list.add( details);
|
|
|
- //partnerPremiumDetailsMapper.insert(details);
|
|
|
- saveFeeLevelInfo(grade,partnerUser.getReferrerId(),insAreaCompany,userId,list);
|
|
|
+ saveFeeLevelInfo(grade,partnerUser.getReferrerId(),insAreaCompany,userId,list,kickbackChange);
|
|
|
|
|
|
}
|
|
|
|