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

Commit f547a5dd authored by GaoHu's avatar GaoHu

bug:用户总营收计算错误问题,打款后数据读取修改

parent 7ea3cf66
...@@ -156,12 +156,10 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -156,12 +156,10 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
@Override @Override
public AjaxResult price(SmilePriceParam smilePriceParam) { public AjaxResult price(SmilePriceParam smilePriceParam) {
//查询演出状态 //查询演出状态
AjaxResult showStatue = showStatue(smilePriceParam); /*AjaxResult showStatue = showStatue(smilePriceParam);
if (showStatue != null) { if (showStatue != null) {
return showStatue; return showStatue;
} }*/
//该uid本次打款金额
BigDecimal priceByUid = new BigDecimal("0");
//用户是否打款 //用户是否打款
Integer status = smileRedisUtils.getShowPriceUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid()); Integer status = smileRedisUtils.getShowPriceUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid());
if (status != null) { if (status != null) {
...@@ -202,9 +200,6 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -202,9 +200,6 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
smilePriceByUidAndPerId.setPerformancesId(smilePriceParam.getPerformancesId()); smilePriceByUidAndPerId.setPerformancesId(smilePriceParam.getPerformancesId());
smilePriceByUidAndPerId.setUid(smileUser.getUid()); smilePriceByUidAndPerId.setUid(smileUser.getUid());
smilePriceByUidAndPerId.setPrice(price); smilePriceByUidAndPerId.setPrice(price);
if (smileUser.getUid().equals(smilePriceParam.getUid())) {
priceByUid = price;
}
smilePriceByUidAndPerId.setCreatedDate(LocalDateTime.now()); smilePriceByUidAndPerId.setCreatedDate(LocalDateTime.now());
String userDataJson = JSON.toJSONString(userDataByUid); String userDataJson = JSON.toJSONString(userDataByUid);
...@@ -223,12 +218,12 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -223,12 +218,12 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
smilePriceUpdate.setStatus(1); smilePriceUpdate.setStatus(1);
smilePriceUpdate.setUpdatedDate(LocalDateTime.now()); smilePriceUpdate.setUpdatedDate(LocalDateTime.now());
smilePriceMapper.update(smilePriceUpdate, lambdaQueryWrapper); smilePriceMapper.update(smilePriceUpdate, lambdaQueryWrapper);
SmilePrice smilePrice = smilePriceMapper.selectOne(lambdaQueryWrapper);
//该用户该演出标记打款 //该用户该演出标记打款
smileRedisUtils.setPriceByUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid()); smileRedisUtils.setPriceByUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid());
//计算总营收 //计算总营收
BigDecimal userTotalPrice = smileRedisUtils.getUserTotalPrice(smilePriceParam.getUid()); BigDecimal userTotalPrice = smileRedisUtils.getUserTotalPrice(smilePriceParam.getUid());
smileRedisUtils.setUserTotalPrice(smilePriceParam.getUid(), priceByUid.add(userTotalPrice)); smileRedisUtils.setUserTotalPrice(smilePriceParam.getUid(), smilePrice.getPrice().add(userTotalPrice));
} }
return AjaxResult.success(); return AjaxResult.success();
} }
...@@ -361,10 +356,6 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -361,10 +356,6 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
showAgentVoList.add(showAgentVo); showAgentVoList.add(showAgentVo);
} }
//根据演出id查询出所有代理人的销售
List<ShowBaseVoDto> showBaseVoList = smileAgentMapper.selectMapByPerId(performancesId);
//根据代理id进行分组
Map<String, List<ShowBaseVoDto>> stringListMap = showBaseVoList.stream().collect(Collectors.groupingBy(ShowBaseVoDto::getAgentId));
List<String> ids = ObjectUtil.cloneLinkedListStr(); List<String> ids = ObjectUtil.cloneLinkedListStr();
//创建list长度定位分组数量 //创建list长度定位分组数量
List<UserData> userDataList = new ArrayList<>(); List<UserData> userDataList = new ArrayList<>();
...@@ -377,105 +368,115 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -377,105 +368,115 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
for (SmilePrice smilePrice : smilePrices) { for (SmilePrice smilePrice : smilePrices) {
if (smilePrice.getRecord() != null && !smilePrice.getRecord().equals("")) { if (smilePrice.getRecord() != null && !smilePrice.getRecord().equals("")) {
UserData userData = JSON.parseObject(smilePrice.getRecord(), UserData.class); UserData userData = JSON.parseObject(smilePrice.getRecord(), UserData.class);
//保存打款标识
userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, userData.getUid())); userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, userData.getUid()));
userDataList.add(userData); userDataList.add(userData);
ids.add(userData.getUid()); ids.add(userData.getUid());
} }
} }
//遍历分组 //判断该演出是否有打款
for (Map.Entry<String, List<ShowBaseVoDto>> showMap : stringListMap.entrySet()) { Integer showPriceId = smileRedisUtils.getShowPriceId(performancesId);
UserData userData = UserData.getNew();
List<ShowBaseVoDto> showBaseVoDtoList = showMap.getValue();
List<UserDataAgentVo> userDataAgentVos = new ArrayList<>();
//当前list不为null,遍历有数据,方便后期判断是否总代取uid
ShowBaseVoDto baseVoDto = showBaseVoDtoList.get(0);
//根据票提id分组 list数量小于等于票提数量
Map<String, List<ShowBaseVoDto>> tidMapByUid = showBaseVoDtoList.stream().collect(Collectors.groupingBy(ShowBaseVoDto::getTid));
//对票提进行遍历(总代没有售出而普代有售出)
for (TicketAndStatusDao smileAgent : ticketAndStatusDaoList) {
//为没个uid的没个票提id 塞数据
UserDataAgentVo userDataAgentVo = UserDataAgentVo.getNew();
//有且只有一条
List<ShowBaseVoDto> showBaseVoDtoS = tidMapByUid.get(smileAgent.getTicketsId());
//判断用户是否卖出该票提
if (showBaseVoDtoS != null && showBaseVoDtoS.size() > 0) {
ShowBaseVoDto showBaseVoDto = showBaseVoDtoS.get(0);
userDataAgentVo.setTicketsId(showBaseVoDto.getTid());
userDataAgentVo.setTicketName(smileAgent.getTitle());
userDataAgentVo.setNumber(showBaseVoDto.getNumber());
userDataAgentVo.setPrice(showBaseVoDto.getPrice());
userDataAgentVo.setPriceReal(showBaseVoDto.getPriceReal());
// userDataAgentVo.setAgent(showBaseVoDto.getUse());
userDataAgentVo.setCommission(showBaseVoDto.getTotalPrice().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.setPriceReal(new BigDecimal("0.00"));
// userDataAgentVo.setAgent(showBaseVoDto.getType() == 1 ? tidMap.get(smileAgent.getTicketsId()).getTotalCarry() : tidMap.get(smileAgent.getTicketsId()).getOrdCarry());
userDataAgentVo.setCommission(new BigDecimal("0.00"));
}
//判断是否为总代
if (baseVoDto.getType() == 1) {
//是总代 //在原有的数据上新增加该用户下所有普代的提成
Map orgMap = smileAgentMapper.getUserOrgByPerIdAndUidAndAgentMaster(performancesId, baseVoDto.getAgentId(), smileAgent.getTicketsId());
if (orgMap != null) {
userDataAgentVo.setCommission((userDataAgentVo.getCommission().add((BigDecimal) orgMap.get("totalPrice"))).setScale(2, RoundingMode.HALF_UP));
}
}
userDataAgentVos.add(userDataAgentVo);
}
userData.setUid(showBaseVoDtoList.get(0).getAgentId());
userData.setUsername(showBaseVoDtoList.get(0).getName());
userData.setCityName(showBaseVoDtoList.get(0).getCity());
userData.setType(showBaseVoDtoList.get(0).getType());
userData.setDataAgentVos(userDataAgentVos);
//设置打款状态
userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, showBaseVoDtoList.get(0).getAgentId()));
ids.add(userData.getUid());
userDataList.add(userData);
//缓存用户redis记录 计算
smileRedisUtils.setUserDataByUid(userData, performancesId);
}
//查询所有代理uid
List<SmileUser> smileUsers = smileUserMapper.selectUidByPerId(performancesId);
smileUsers.forEach(smileUser -> {
if (!ids.contains(smileUser.getUid())) {
UserData userData = UserData.getNew();
if (showPriceId==null){
//根据演出id查询出所有代理人的销售
List<ShowBaseVoDto> showBaseVoList = smileAgentMapper.selectMapByPerId(performancesId);
//根据代理id进行分组
Map<String, List<ShowBaseVoDto>> stringListMap = showBaseVoList.stream().collect(Collectors.groupingBy(ShowBaseVoDto::getAgentId));
//遍历分组
for (Map.Entry<String, List<ShowBaseVoDto>> showMap : stringListMap.entrySet()) {
UserData userData = UserData.getNew();
List<ShowBaseVoDto> showBaseVoDtoList = showMap.getValue();
List<UserDataAgentVo> userDataAgentVos = new ArrayList<>(); List<UserDataAgentVo> userDataAgentVos = new ArrayList<>();
//当前list不为null,遍历有数据,方便后期判断是否总代取uid
ShowBaseVoDto baseVoDto = showBaseVoDtoList.get(0);
//根据票提id分组 list数量小于等于票提数量
Map<String, List<ShowBaseVoDto>> tidMapByUid = showBaseVoDtoList.stream().collect(Collectors.groupingBy(ShowBaseVoDto::getTid));
//对票提进行遍历(总代没有售出而普代有售出)
for (TicketAndStatusDao smileAgent : ticketAndStatusDaoList) { for (TicketAndStatusDao smileAgent : ticketAndStatusDaoList) {
//为没个uid的没个票提id 塞数据
UserDataAgentVo userDataAgentVo = UserDataAgentVo.getNew(); UserDataAgentVo userDataAgentVo = UserDataAgentVo.getNew();
userDataAgentVo.setTicketsId(smileAgent.getTicketsId()); //有且只有一条
userDataAgentVo.setTicketName(smileAgent.getTitle()); List<ShowBaseVoDto> showBaseVoDtoS = tidMapByUid.get(smileAgent.getTicketsId());
userDataAgentVo.setNumber(new BigDecimal(0)); //判断用户是否卖出该票提
userDataAgentVo.setPrice(new BigDecimal(0)); if (showBaseVoDtoS != null && showBaseVoDtoS.size() > 0) {
userDataAgentVo.setPriceReal(new BigDecimal("0.00")); ShowBaseVoDto showBaseVoDto = showBaseVoDtoS.get(0);
userDataAgentVo.setCommission(new BigDecimal("0.00")); userDataAgentVo.setTicketsId(showBaseVoDto.getTid());
userDataAgentVos.add(userDataAgentVo); userDataAgentVo.setTicketName(smileAgent.getTitle());
//是总代 //在原有的数据上新增加该用户下所有普代的提成 userDataAgentVo.setNumber(showBaseVoDto.getNumber());
Map orgMap = smileAgentMapper.getUserOrgByPerIdAndUidAndAgentMaster(performancesId, smileUser.getUid(), smileAgent.getTicketsId()); userDataAgentVo.setPrice(showBaseVoDto.getPrice());
if (orgMap != null) { userDataAgentVo.setPriceReal(showBaseVoDto.getPriceReal());
userDataAgentVo.setCommission((userDataAgentVo.getCommission().add((BigDecimal) orgMap.get("totalPrice"))).setScale(2, RoundingMode.HALF_UP)); // userDataAgentVo.setAgent(showBaseVoDto.getUse());
userDataAgentVo.setCommission(showBaseVoDto.getTotalPrice().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.setPriceReal(new BigDecimal("0.00"));
// userDataAgentVo.setAgent(showBaseVoDto.getType() == 1 ? tidMap.get(smileAgent.getTicketsId()).getTotalCarry() : tidMap.get(smileAgent.getTicketsId()).getOrdCarry());
userDataAgentVo.setCommission(new BigDecimal("0.00"));
} }
//判断是否为总代
if (baseVoDto.getType() == 1) {
//是总代 //在原有的数据上新增加该用户下所有普代的提成
Map orgMap = smileAgentMapper.getUserOrgByPerIdAndUidAndAgentMaster(performancesId, baseVoDto.getAgentId(), smileAgent.getTicketsId());
if (orgMap != null) {
userDataAgentVo.setCommission((userDataAgentVo.getCommission().add((BigDecimal) orgMap.get("totalPrice"))).setScale(2, RoundingMode.HALF_UP));
}
}
userDataAgentVos.add(userDataAgentVo);
} }
userData.setUid(showBaseVoDtoList.get(0).getAgentId());
userData.setUid(smileUser.getUid()); userData.setUsername(showBaseVoDtoList.get(0).getName());
userData.setUsername(smileUser.getName()); userData.setCityName(showBaseVoDtoList.get(0).getCity());
userData.setCityName(smileUser.getCity()); userData.setType(showBaseVoDtoList.get(0).getType());
userData.setType(smileUser.getType());
userData.setDataAgentVos(userDataAgentVos); userData.setDataAgentVos(userDataAgentVos);
//设置打款状态 //设置打款状态
userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, smileUser.getUid())); userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, showBaseVoDtoList.get(0).getAgentId()));
ids.add(userData.getUid()); ids.add(userData.getUid());
userDataList.add(userData); userDataList.add(userData);
//缓存用户redis记录 计算 //缓存用户redis记录 计算
smileRedisUtils.setUserDataByUid(userData, performancesId); smileRedisUtils.setUserDataByUid(userData, performancesId);
} }
}); //查询所有代理uid
List<SmileUser> smileUsers = smileUserMapper.selectUidByPerId(performancesId);
smileUsers.forEach(smileUser -> {
if (!ids.contains(smileUser.getUid())) {
UserData userData = UserData.getNew();
List<UserDataAgentVo> userDataAgentVos = new ArrayList<>();
for (TicketAndStatusDao smileAgent : ticketAndStatusDaoList) {
UserDataAgentVo userDataAgentVo = UserDataAgentVo.getNew();
userDataAgentVo.setTicketsId(smileAgent.getTicketsId());
userDataAgentVo.setTicketName(smileAgent.getTitle());
userDataAgentVo.setNumber(new BigDecimal(0));
userDataAgentVo.setPrice(new BigDecimal(0));
userDataAgentVo.setPriceReal(new BigDecimal("0.00"));
userDataAgentVo.setCommission(new BigDecimal("0.00"));
userDataAgentVos.add(userDataAgentVo);
//是总代 //在原有的数据上新增加该用户下所有普代的提成
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));
}
}
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()));
ids.add(userData.getUid());
userDataList.add(userData);
//缓存用户redis记录 计算
smileRedisUtils.setUserDataByUid(userData, performancesId);
}
});
}
saleDataVo.setUserDataList(userDataList); saleDataVo.setUserDataList(userDataList);
saleDataVo.setShowAgentVoList(showAgentVoList); saleDataVo.setShowAgentVoList(showAgentVoList);
return saleDataVo; return saleDataVo;
......
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