|
|
@@ -2,14 +2,13 @@ package com.kxs.user.biz.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.kxs.common.core.constant.SecurityConstants;
|
|
|
import com.kxs.common.core.util.AssertUtil;
|
|
|
import com.kxs.common.core.util.R;
|
|
|
+import com.kxs.stat.api.feign.RemoteKxsStatService;
|
|
|
import com.kxs.system.api.feign.RemoteOldService;
|
|
|
-import com.kxs.user.api.dto.kxsapp.PrizePoolSynchronizationDTO;
|
|
|
import com.kxs.user.api.vo.kxsapp.shareholder.ShareholderGetShareholderAmountVO;
|
|
|
import com.kxs.user.biz.mapper.KxsShdTradeAmtMapper;
|
|
|
import com.kxs.user.api.model.KxsShdTradeAmt;
|
|
|
@@ -22,6 +21,7 @@ import java.math.RoundingMode;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* 股东大盘分红交易表(KxsShdTradeAmt)表服务实现类
|
|
|
@@ -34,6 +34,7 @@ import java.util.HashMap;
|
|
|
public class KxsShdTradeAmtServiceImpl extends ServiceImpl<KxsShdTradeAmtMapper, KxsShdTradeAmt> implements KxsShdTradeAmtService {
|
|
|
private final KxsShdTradeAmtMapper kxsShdTradeAmtMapper;
|
|
|
private final RemoteOldService remoteOldService;
|
|
|
+ private final RemoteKxsStatService remoteKxsStatService;
|
|
|
|
|
|
@Override
|
|
|
public Object getShareholderAmount(String tradeMonth) {
|
|
|
@@ -42,8 +43,8 @@ public class KxsShdTradeAmtServiceImpl extends ServiceImpl<KxsShdTradeAmtMapper,
|
|
|
tradeMonth = tradeMonth.split("-")[0] + tradeMonth.split("-")[1];
|
|
|
KxsShdTradeAmt kxsShdTradeAmt = kxsShdTradeAmtMapper.selectOne(Wrappers.<KxsShdTradeAmt>query().lambda().eq(KxsShdTradeAmt::getTradeMonth, tradeMonth));
|
|
|
ShareholderGetShareholderAmountVO shareholderGetShareholderAmountVO = new ShareholderGetShareholderAmountVO();
|
|
|
- if (kxsShdTradeAmt != null){
|
|
|
- BeanUtil.copyProperties(kxsShdTradeAmt,shareholderGetShareholderAmountVO);
|
|
|
+ if (kxsShdTradeAmt != null) {
|
|
|
+ BeanUtil.copyProperties(kxsShdTradeAmt, shareholderGetShareholderAmountVO);
|
|
|
}
|
|
|
return shareholderGetShareholderAmountVO;
|
|
|
}
|
|
|
@@ -53,37 +54,48 @@ public class KxsShdTradeAmtServiceImpl extends ServiceImpl<KxsShdTradeAmtMapper,
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM");
|
|
|
String month = now.format(formatter);
|
|
|
- HashMap<String, Object> param = new HashMap<>();
|
|
|
- param.put("UserId",1);
|
|
|
- param.put("TradeMonthOrDate",month);
|
|
|
- param.put("Kind","team");
|
|
|
- R result = remoteOldService.GetUserTradeAmout(param);
|
|
|
- if(result.getStatus() == 1){
|
|
|
- PrizePoolSynchronizationDTO data = (PrizePoolSynchronizationDTO)result.getData();
|
|
|
- BigDecimal totalPosAmt = data.getTotalPosAmt();
|
|
|
- BigDecimal bonusPool = totalPosAmt.multiply(new BigDecimal("1.5")).divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP);//总奖金池 * 1.5 / 10000
|
|
|
- BigDecimal bonus = bonusPool.divide(new BigDecimal("3"), 2, RoundingMode.HALF_UP);//高中低奖金池计算规则 总奖金池 / 3
|
|
|
- KxsShdTradeAmt kxsShdTradeAmt = kxsShdTradeAmtMapper.selectOne(Wrappers.<KxsShdTradeAmt>query().lambda().eq(KxsShdTradeAmt::getTradeMonth, month));
|
|
|
- if (kxsShdTradeAmt == null){
|
|
|
- kxsShdTradeAmt = new KxsShdTradeAmt();
|
|
|
- kxsShdTradeAmt.setCreateTime(LocalDateTime.now());
|
|
|
- kxsShdTradeAmt.setDelFlag("0");
|
|
|
- kxsShdTradeAmt.setTradeAmt(totalPosAmt);//有效交易额
|
|
|
- kxsShdTradeAmt.setTradeMonth(month);//月份
|
|
|
- kxsShdTradeAmt.setBonusPool(bonusPool);//总奖池
|
|
|
- kxsShdTradeAmt.setFirstBonus(bonus);//初级奖池
|
|
|
- kxsShdTradeAmt.setCenterBonus(bonus);//中级奖池
|
|
|
- kxsShdTradeAmt.setHighBonus(bonus);//高级奖池
|
|
|
- kxsShdTradeAmtMapper.insert(kxsShdTradeAmt);
|
|
|
- }else {
|
|
|
- kxsShdTradeAmt.setTradeAmt(totalPosAmt);//有效交易额
|
|
|
- kxsShdTradeAmt.setTradeMonth(month);//月份
|
|
|
- kxsShdTradeAmt.setBonusPool(bonusPool);//总奖池
|
|
|
- kxsShdTradeAmt.setFirstBonus(bonus);//初级奖池
|
|
|
- kxsShdTradeAmt.setCenterBonus(bonus);//中级奖池
|
|
|
- kxsShdTradeAmt.setHighBonus(bonus);//高级奖池
|
|
|
- kxsShdTradeAmtMapper.updateById(kxsShdTradeAmt);
|
|
|
- }
|
|
|
+
|
|
|
+ //调用老系统 已弃用
|
|
|
+// HashMap<String, Object> param = new HashMap<>();
|
|
|
+// HashMap<String, Object> data = new HashMap<>();
|
|
|
+// data.put("UserId",1);
|
|
|
+// data.put("TradeMonthOrDate",month);
|
|
|
+// data.put("Kind","team");
|
|
|
+// param.put("value",JSON.toJSONString(data));
|
|
|
+//// String param = "{UserId:1,TradeMonthOrDate:"+ month +",Kind:team}";
|
|
|
+// R result = remoteOldService.GetUserTradeAmout(param);
|
|
|
+// if(result.getStatus() == 1){
|
|
|
+// Map<String,Object> resultData = (Map<String, Object>) result.getData();
|
|
|
+// BigDecimal totalPosAmt = BigDecimal.valueOf((Double) resultData.get("TotalPosAmt"));
|
|
|
+// }
|
|
|
+
|
|
|
+ BigDecimal statAmount = remoteKxsStatService.getStatAmount(month, SecurityConstants.FROM_IN);
|
|
|
+ //有效交易额 稳定期交易额 * 1.5
|
|
|
+ BigDecimal totalAmount = statAmount.multiply(new BigDecimal("1.5"));
|
|
|
+ //累计奖金池 总交易额 * 万分之1.5 保留俩位小数
|
|
|
+ BigDecimal bonusPool = totalAmount.multiply(new BigDecimal("1.5")).divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP);
|
|
|
+ //高中低奖金池计算规则 总奖金池 / 3
|
|
|
+ BigDecimal bonus = bonusPool.divide(new BigDecimal("3"), 2, RoundingMode.HALF_UP);
|
|
|
+ KxsShdTradeAmt kxsShdTradeAmt = kxsShdTradeAmtMapper.selectOne(Wrappers.<KxsShdTradeAmt>query().lambda().eq(KxsShdTradeAmt::getTradeMonth, month));
|
|
|
+ if (kxsShdTradeAmt == null) {
|
|
|
+ kxsShdTradeAmt = new KxsShdTradeAmt();
|
|
|
+ kxsShdTradeAmt.setCreateTime(LocalDateTime.now());
|
|
|
+ kxsShdTradeAmt.setDelFlag("0");
|
|
|
+ kxsShdTradeAmt.setTradeAmt(totalAmount);//有效交易额
|
|
|
+ kxsShdTradeAmt.setTradeMonth(month);//月份
|
|
|
+ kxsShdTradeAmt.setBonusPool(bonusPool);//总奖池
|
|
|
+ kxsShdTradeAmt.setFirstBonus(bonus);//初级奖池
|
|
|
+ kxsShdTradeAmt.setCenterBonus(bonus);//中级奖池
|
|
|
+ kxsShdTradeAmt.setHighBonus(bonus);//高级奖池
|
|
|
+ kxsShdTradeAmtMapper.insert(kxsShdTradeAmt);
|
|
|
+ } else {
|
|
|
+ kxsShdTradeAmt.setTradeAmt(totalAmount);//有效交易额
|
|
|
+ kxsShdTradeAmt.setTradeMonth(month);//月份
|
|
|
+ kxsShdTradeAmt.setBonusPool(bonusPool);//总奖池
|
|
|
+ kxsShdTradeAmt.setFirstBonus(bonus);//初级奖池
|
|
|
+ kxsShdTradeAmt.setCenterBonus(bonus);//中级奖池
|
|
|
+ kxsShdTradeAmt.setHighBonus(bonus);//高级奖池
|
|
|
+ kxsShdTradeAmtMapper.updateById(kxsShdTradeAmt);
|
|
|
}
|
|
|
}
|
|
|
}
|