记得上下班打卡 | git大法好,push需谨慎

Commit b23c513d authored by GaoHu's avatar GaoHu

修改提成计算逻辑

parent 46bf3567
......@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
......@@ -50,6 +51,9 @@ public class UserData implements Serializable, Cloneable {
@ApiModelProperty(value = "打款状态", example = "")
private Integer priceStatus;
@ApiModelProperty(value = "总佣金")
private BigDecimal totalCommission;
private static final UserData obj = new UserData();
......
......@@ -372,6 +372,12 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
List<ShowBaseVoDto> showBaseVoList = smileAgentMapper.selectMapByPerId(performancesId);
//根据代理id进行分组
Map<String, List<ShowBaseVoDto>> stringListMap = showBaseVoList.stream().collect(Collectors.groupingBy(ShowBaseVoDto::getAgentId));
//所有提成佣金
List<Map<String,Object>> agentIdCommissionList = smileAgentMapper.getUserOrgByPerIdAndUidAndAgentMaster(performancesId);
Map<String,BigDecimal> agentIdMasterMap = new HashMap<>();
agentIdCommissionList.forEach(map->{
agentIdMasterMap.put((String) map.get("uid"),(BigDecimal) map.get("totalPrice"));
});
//遍历分组
for (Map.Entry<String, List<ShowBaseVoDto>> showMap : stringListMap.entrySet()) {
UserData userData = UserData.getNew();
......@@ -381,6 +387,10 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
ShowBaseVoDto baseVoDto = showBaseVoDtoList.get(0);
//根据票提id分组 list数量小于等于票提数量
Map<String, List<ShowBaseVoDto>> tidMapByUid = showBaseVoDtoList.stream().collect(Collectors.groupingBy(ShowBaseVoDto::getTid));
//总佣金
BigDecimal totalCommission = BigDecimal.ZERO;
//对票提进行遍历(总代没有售出而普代有售出)
for (TicketAndStatusDao smileAgent : ticketAndStatusDaoList) {
//为没个uid的没个票提id 塞数据
......@@ -407,14 +417,17 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
// userDataAgentVo.setAgent(showBaseVoDto.getType() == 1 ? tidMap.get(smileAgent.getTicketsId()).getTotalCarry() : tidMap.get(smileAgent.getTicketsId()).getOrdCarry());
userDataAgentVo.setCommission(BigDecimal.ZERO);
}
//判断是否为特邀代理
if (baseVoDto.getType() != 5) {
Map orgMap = smileAgentMapper.getUserOrgByPerIdAndUidAndAgentMaster(performancesId, baseVoDto.getAgentId(), smileAgent.getTicketsId());
if (orgMap != null) {
userDataAgentVo.setCommission((userDataAgentVo.getCommission().add((BigDecimal) orgMap.get("totalPrice"))).stripTrailingZeros());
totalCommission = totalCommission.add(userDataAgentVo.getCommission());
userDataAgentVos.add(userDataAgentVo);
}
//判断是否为总代
if (baseVoDto.getType() == 5) {
//不是特邀代理 //在原有的数据上新增加该用户下所有普代的提成
if (agentIdMasterMap.get(baseVoDto.getAgentId()) != null) {
userData.setTotalCommission(totalCommission.add(agentIdMasterMap.get(baseVoDto.getAgentId())).stripTrailingZeros());
}
userDataAgentVos.add(userDataAgentVo);
} else {
userData.setTotalCommission(totalCommission);
}
userData.setUid(showBaseVoDtoList.get(0).getAgentId());
userData.setUsername(showBaseVoDtoList.get(0).getName());
......@@ -433,7 +446,6 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
smileUsers.forEach(smileUser -> {
if (!ids.contains(smileUser.getUid())) {
UserData userData = UserData.getNew();
BigDecimal price = BigDecimal.ZERO;
List<UserDataAgentVo> userDataAgentVos = new ArrayList<>();
for (TicketAndStatusDao smileAgent : ticketAndStatusDaoList) {
UserDataAgentVo userDataAgentVo = UserDataAgentVo.getNew();
......@@ -443,14 +455,11 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
userDataAgentVo.setPrice(BigDecimal.ZERO);
userDataAgentVo.setPriceReal(BigDecimal.ZERO);
userDataAgentVo.setCommission(BigDecimal.ZERO);
//是总代 //在原有的数据上新增加该用户下所有普代的提成
Map orgMap = smileAgentMapper.getUserOrgByPerIdAndUidAndAgentMaster(performancesId, smileUser.getUid(), smileAgent.getTicketsId());
if (orgMap != null) {
userDataAgentVo.setCommission((userDataAgentVo.getCommission().add((BigDecimal) orgMap.get("totalPrice"))).stripTrailingZeros());
}
price = price.add(userDataAgentVo.getCommission());
userDataAgentVos.add(userDataAgentVo);
}
//不是特邀代理 //在原有的数据上新增加该用户下所有普代的提成
BigDecimal decimal = agentIdMasterMap.get(smileUser.getUid());
userData.setTotalCommission(decimal);
userData.setUid(smileUser.getUid());
userData.setUsername(smileUser.getName());
userData.setCityName(smileUser.getCity());
......@@ -460,10 +469,8 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, smileUser.getUid()));
//缓存用户redis记录 计算
smileRedisUtils.setUserDataByUid(userData, performancesId);
if (price.compareTo(BigDecimal.ZERO) > 0) {
userDataList.add(userData);
}
}
});
}
saleDataVo.setUserDataList(userDataList);
......@@ -509,54 +516,6 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
return AjaxResult.success(showIds);
}
private UserData getUserData(String performancesId, SmileUser smileUser, Map<String, SmileAgent> tidMap, List<TicketAndStatusDao> smileAgentList) {
UserData userData = new UserData();
//个人用户的演出数据详情
//便利票种id 查询用户的销售数据信息
List<UserDataAgentVo> userDataAgentVos = new ArrayList<>();
for (TicketAndStatusDao smileAgent : smileAgentList) {
UserDataAgentVo userDataAgentVo = new UserDataAgentVo();
Map userMap = smileAgentMapper.getUserDataByPerIdAndTicketsId(performancesId, smileUser.getUid(), smileAgent.getTicketsId());
if (userMap != null) {
userDataAgentVo.setTicketsId((String) userMap.get("tid"));
userDataAgentVo.setTicketName((String) userMap.get("title"));
userDataAgentVo.setNumber((BigDecimal) userMap.get("num"));
userDataAgentVo.setPrice((BigDecimal) userMap.get("price"));
userDataAgentVo.setAgent((BigDecimal) userMap.get("use"));
userDataAgentVo.setCommission(((BigDecimal) userMap.get("totalPrice")).setScale(2, RoundingMode.HALF_UP));
} else {
userDataAgentVo.setTicketsId(smileAgent.getTicketsId());
userDataAgentVo.setTicketName(smileAgent.getTitle());
userDataAgentVo.setNumber(new BigDecimal(0));
userDataAgentVo.setPrice(new BigDecimal(0));
userDataAgentVo.setAgent(smileUser.getType() == 1 ? tidMap.get(smileAgent.getTicketsId()).getTotalCarry() : tidMap.get(smileAgent.getTicketsId()).getOrdCarry());
userDataAgentVo.setCommission(new BigDecimal("0.00"));
log.debug("saleData:演出id:{},用户id:{},票提id:{}", performancesId, smileUser.getUid(), smileAgent.getTicketsId());
}
//判断该用户是否是总代理
if (smileUser.getType() == 1) {
//是总代 //在原有的数据上新增加该用户下所有普代的提成
Map orgMap = smileAgentMapper.getUserOrgByPerIdAndUidAndAgentMaster(performancesId, smileUser.getUid(), smileAgent.getTicketsId());
if (orgMap != null) {
userDataAgentVo.setCommission((userDataAgentVo.getCommission().add((BigDecimal) orgMap.get("totalPrice"))).setScale(2, RoundingMode.HALF_UP));
} else {
log.debug("saleData:演出id:{},用户id:{},票提id:{}", performancesId, smileUser.getUid(), smileAgent.getTicketsId());
}
}
// if (userDataAgentVo.getCommission().compareTo(new BigDecimal(0)) != 0) {
userDataAgentVos.add(userDataAgentVo);
// }
}
userData.setUid(smileUser.getUid());
userData.setUsername(smileUser.getName());
userData.setCityName(smileUser.getCity());
userData.setType(smileUser.getType());
userData.setDataAgentVos(userDataAgentVos);
//设置打款状态
userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, smileUser.getUid()));
return userData;
}
private Map<String, SmileAgent> getSmileAgentMap(List<SmileAgent> smileAgents) {
Map<String, SmileAgent> map = new HashMap<>(smileAgents.size());
smileAgents.forEach(smileAgent -> map.put(smileAgent.getTicketId(), smileAgent));
......
......@@ -27,7 +27,7 @@ public interface SmileAgentMapper extends BaseMapper<SmileAgent> {
Map getUserDataByPerIdAndTicketsId(@Param("performancesId")String performancesId,@Param("uid") String uid,@Param("ticketId") String ticketId);
Map getUserOrgByPerIdAndUidAndAgentMaster(@Param("performancesId") String performancesId,@Param("uid") String uid,@Param("ticketId") String ticketId);
List<Map<String,Object>> getUserOrgByPerIdAndUidAndAgentMaster(@Param("performancesId") String performancesId);
List<SmileAgentDao> selectAgentList(@Param("performancesId") String performancesId);
......
......@@ -63,8 +63,8 @@
<select id="getUserOrgByPerIdAndUidAndAgentMaster" resultType="java.util.Map">
SELECT
SUM(
( kot.price_actual - kot.price_refund )* kotr.agent_distributions_master) totalPrice
kotr.agent_id_master uid,
SUM( ( kot.price_actual - kot.price_refund )* kotr.agent_distributions_master ) totalPrice
FROM
kylin_order_ticket_relations AS kotr
INNER JOIN kylin_order_tickets AS kot ON kot.order_tickets_id = kotr.order_id
......@@ -76,9 +76,17 @@
kylin_order_ticket_relations AS kotr
LEFT JOIN kylin_order_ticket_status AS kots ON kots.order_id = kotr.order_id
WHERE
kotr.agent_id_master = #{uid}
AND kots.status IN (1,6,3)
) AND kotr.performance_id = #{performancesId} AND kotr.ticket_id = #{ticketId}
kots.STATUS IN ( 1, 6, 3 ) )
AND kotr.performance_id = #{performancesId}
AND kotr.ticket_id IN (
SELECT
sa.ticket_id
FROM
smile_agent AS sa
WHERE
sa.del_tag = 0
AND sa.performance_id = #{performancesId}
) AND kotr.agent_id_master >0 GROUP BY kotr.agent_id_master
</select>
<select id="selectAgentList" resultType="com.liquidnet.service.smile.entity.dao.SmileAgentDao">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment