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

Commit 3b6182a5 authored by GaoHu's avatar GaoHu

打款功能修改

parent 88d1c522
...@@ -20,6 +20,7 @@ public class SmileRedisConst { ...@@ -20,6 +20,7 @@ public class SmileRedisConst {
public static final String SELL_DATA_COMMISSION = PREFIX.concat("sellDataCommission:"); //销售数据 第一步 public static final String SELL_DATA_COMMISSION = PREFIX.concat("sellDataCommission:"); //销售数据 第一步
public static final String SELL_SHOW_PAYMENT = PREFIX.concat("show:payment:"); //打款信息 SELL_SHOW_PAYMENT+演出id+uid public static final String SELL_SHOW_PAYMENT = PREFIX.concat("show:payment:"); //打款信息 SELL_SHOW_PAYMENT+演出id+uid
public static final String SELL_SHOW_SAVE = PREFIX.concat("show:save:"); //演出打款vo数据 SELL_SHOW_SAVE+演出id
public static final String SELL_SHOW_PAYMENT_ENDJOB = PREFIX.concat("show:payment:endJob"); //定时任务结算信息 SELL_SHOW_PAYMENT_ENDJOB+演出id+uid public static final String SELL_SHOW_PAYMENT_ENDJOB = PREFIX.concat("show:payment:endJob"); //定时任务结算信息 SELL_SHOW_PAYMENT_ENDJOB+演出id+uid
......
...@@ -44,6 +44,7 @@ import org.springframework.stereotype.Service; ...@@ -44,6 +44,7 @@ import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
...@@ -108,7 +109,16 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -108,7 +109,16 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
vo.setTotalOutAgent(ordNum); vo.setTotalOutAgent(ordNum);
//打款状态 //打款状态
vo.setStatus(smileRedisUtils.getShowStatus(kylinPerformancesDto.getPerformancesId())); vo.setStatus(smileRedisUtils.getShowStatus(kylinPerformancesDto.getPerformancesId()));
return vo; //判断该演出是否打款
Integer showPriceId = smileRedisUtils.getShowPriceId(kylinPerformancesDto.getPerformancesId());
if (showPriceId != null) {
//返回记录中的缓存 保证打款外部数据不变
return smileRedisUtils.getShowVoByPerId(kylinPerformancesDto.getPerformancesId());
} else {
//redis保存演出数据
smileRedisUtils.setShowVoByPerId(vo);
return vo;
}
}).collect(Collectors.toList()); }).collect(Collectors.toList());
rspData.setCode(0); rspData.setCode(0);
rspData.setRows(showVoList); rspData.setRows(showVoList);
...@@ -145,49 +155,78 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -145,49 +155,78 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
@Override @Override
public AjaxResult price(SmilePriceParam smilePriceParam) { public AjaxResult price(SmilePriceParam smilePriceParam) {
SmilePrice smilePrice = new SmilePrice();
BeanUtils.copyProperties(smilePriceParam, smilePrice);
//查询演出状态 //查询演出状态
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 (smilePriceParam.getStatus().equals(status)) { if (status != null) {
return AjaxResult.warn("不可重复打款"); return AjaxResult.warn("不可重复打款");
} } else {
if (smilePriceParam.getStatus().equals(0)) { //判断演出是否有用户打过款
//计算该用户的佣金(旧) Integer showPriceId = smileRedisUtils.getShowPriceId(smilePriceParam.getPerformancesId());
/*Map userPerformance = orderTicketsMapper.getUserPerformanceByUidAndProId(smilePriceParam.getUid(), smilePriceParam.getPerformancesId()); if (showPriceId == null) {
BigDecimal price = userPerformance.get("commiss") == null ? new BigDecimal(0) : new BigDecimal(userPerformance.get("commiss").toString());*/ //演出数据保存
UserData userDataByUid = smileRedisUtils.getUserDataByUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid()); //1.1.记录该演出打款数据
ShowVo showVoByPerId = smileRedisUtils.getShowVoByPerId(smilePriceParam.getPerformancesId());
//保存打款数据 if (showVoByPerId != null) {
if (userDataByUid != null) { SmilePrice smilePriceByPerId = new SmilePrice();
BigDecimal price = new BigDecimal("0"); smilePriceByPerId.setPerformancesId(smilePriceParam.getPerformancesId());
List<UserDataAgentVo> dataAgentVos = userDataByUid.getDataAgentVos(); String showVoByPerIdJson = JSON.toJSONString(showVoByPerId);
for (UserDataAgentVo userDataAgentVo : dataAgentVos) { smilePriceByPerId.setPrice(showVoByPerId.getTotalSalePrice());
price = price.add(userDataAgentVo.getCommission()); smilePriceByPerId.setRecord(showVoByPerIdJson);
smilePriceMapper.insert(smilePriceByPerId);
//1.2.保存演出打款标识
smileRedisUtils.setShowPriceId(smilePriceParam.getPerformancesId());
} else {
return AjaxResult.error("请刷新页面重试!");
}
//个人打款数据记录保存
//2.1.获取演出代理全部uid
List<SmileUser> smileUsers = smileUserMapper.selectUidByPerIdNotType(smilePriceParam.getPerformancesId());
//遍历smile获取列表数据保存入打款表中
for (SmileUser smileUser : smileUsers) {
//获取缓存单个用户代理记录
UserData userDataByUid = smileRedisUtils.getUserDataByUid(smilePriceParam.getPerformancesId(), smileUser.getUid());
SmilePrice smilePriceByUidAndPerId = SmilePrice.getNew();
BigDecimal price = new BigDecimal("0");
List<UserDataAgentVo> dataAgentVos = userDataByUid.getDataAgentVos();
for (UserDataAgentVo userDataAgentVo : dataAgentVos) {
price = price.add(userDataAgentVo.getCommission());
}
smilePriceByUidAndPerId.setPerformancesId(smilePriceParam.getPerformancesId());
smilePriceByUidAndPerId.setUid(smileUser.getUid());
smilePriceByUidAndPerId.setPrice(price);
if (smileUser.getUid().equals(smilePriceParam.getUid())) {
priceByUid = price;
}
smilePriceByUidAndPerId.setCreatedDate(LocalDateTime.now());
String userDataJson = JSON.toJSONString(userDataByUid);
//保存打款金额
smilePriceByUidAndPerId.setRecord(userDataJson);
smilePriceByUidAndPerId.setStatus(0);
smilePriceMapper.insert(smilePriceByUidAndPerId);
} }
smilePrice.setPrice(price);
smilePrice.setCreatedDate(LocalDateTime.now());
String userDataJson = JSON.toJSONString(userDataByUid);
//保存打款金额
smilePrice.setRecord(userDataJson);
smilePriceMapper.insert(smilePrice);
smileRedisUtils.setPriceByUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid());
//计算总营收
BigDecimal userTotalPrice = smileRedisUtils.getUserTotalPrice(smilePriceParam.getUid());
smileRedisUtils.setUserTotalPrice(smilePriceParam.getUid(), price.add(userTotalPrice));
} else {
return AjaxResult.warn("打款失败,请刷新重试。");
} }
/*smilePriceMapper.insert(smilePrice); //打过款 表中已有数据直接修改打款记录即可
LambdaQueryWrapper<SmilePrice> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(SmilePrice::getUid, smilePriceParam.getUid());
lambdaQueryWrapper.eq(SmilePrice::getPerformancesId, smilePriceParam.getPerformancesId());
SmilePrice smilePriceUpdate = SmilePrice.getNew();
smilePriceUpdate.setStatus(1);
smilePriceUpdate.setUpdatedDate(LocalDateTime.now());
smilePriceMapper.update(smilePriceUpdate, 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(), price.add(userTotalPrice));*/ smileRedisUtils.setUserTotalPrice(smilePriceParam.getUid(), priceByUid.add(userTotalPrice));
} }
return AjaxResult.success(); return AjaxResult.success();
} }
...@@ -330,12 +369,13 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -330,12 +369,13 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
//已打款跳出循环,去打款表中获取打款记录 //已打款跳出循环,去打款表中获取打款记录
LambdaQueryWrapper<SmilePrice> lambdaQueryWrapper = Wrappers.lambdaQuery(SmilePrice.class); LambdaQueryWrapper<SmilePrice> lambdaQueryWrapper = Wrappers.lambdaQuery(SmilePrice.class);
lambdaQueryWrapper.eq(SmilePrice::getPerformancesId, performancesId); lambdaQueryWrapper.eq(SmilePrice::getPerformancesId, performancesId);
lambdaQueryWrapper.isNotNull(SmilePrice::getUid);
lambdaQueryWrapper.eq(SmilePrice::getDelTag, 0); lambdaQueryWrapper.eq(SmilePrice::getDelTag, 0);
List<SmilePrice> smilePrices = smilePriceMapper.selectList(lambdaQueryWrapper); List<SmilePrice> smilePrices = smilePriceMapper.selectList(lambdaQueryWrapper);
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(0); userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, userData.getUid()));
userDataList.add(userData); userDataList.add(userData);
ids.add(userData.getUid()); ids.add(userData.getUid());
} }
...@@ -400,8 +440,8 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -400,8 +440,8 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
} }
//查询所有代理uid //查询所有代理uid
List<SmileUser> smileUsers = smileUserMapper.selectUidByPerId(performancesId); List<SmileUser> smileUsers = smileUserMapper.selectUidByPerId(performancesId);
smileUsers.forEach(smileUser ->{ smileUsers.forEach(smileUser -> {
if (!ids.contains(smileUser.getUid())){ if (!ids.contains(smileUser.getUid())) {
UserData userData = UserData.getNew(); UserData userData = UserData.getNew();
List<UserDataAgentVo> userDataAgentVos = new ArrayList<>(); List<UserDataAgentVo> userDataAgentVos = new ArrayList<>();
...@@ -434,13 +474,6 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc ...@@ -434,13 +474,6 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
smileRedisUtils.setUserDataByUid(userData, performancesId); smileRedisUtils.setUserDataByUid(userData, performancesId);
} }
}); });
/*List<SmileUser> smileUsers = smileUserMapper.getAllUidByPerId(performancesId);
List<UserData> userDataList = new ArrayList<>(smileUsers.size());
for (SmileUser smileUser : smileUsers) {
UserData userData = getUserData(performancesId, smileUser, tidMap, ticketAndStatusDaoList);
userDataList.add(userData);
}*/
saleDataVo.setUserDataList(userDataList); saleDataVo.setUserDataList(userDataList);
saleDataVo.setShowAgentVoList(showAgentVoList); saleDataVo.setShowAgentVoList(showAgentVoList);
return saleDataVo; return saleDataVo;
......
package com.liquidnet.client.admin.zhengzai.smile.utils; package com.liquidnet.client.admin.zhengzai.smile.utils;
import com.liquidnet.client.admin.zhengzai.smile.dto.ShowVo;
import com.liquidnet.client.admin.zhengzai.smile.dto.UserData; import com.liquidnet.client.admin.zhengzai.smile.dto.UserData;
import com.liquidnet.service.goblin.dto.vo.SmileProjectDetailsVo; import com.liquidnet.service.goblin.dto.vo.SmileProjectDetailsVo;
import com.liquidnet.common.cache.redis.util.AbstractRedisUtil; import com.liquidnet.common.cache.redis.util.AbstractRedisUtil;
...@@ -317,4 +318,27 @@ public class SmileRedisUtils { ...@@ -317,4 +318,27 @@ public class SmileRedisUtils {
String rdk = SmileRedisConst.VOLUNTEERS_DETAILS.concat(projectId).concat(":uid:").concat(uid); String rdk = SmileRedisConst.VOLUNTEERS_DETAILS.concat(projectId).concat(":uid:").concat(uid);
getRedis().set(rdk, teamIds); getRedis().set(rdk, teamIds);
} }
/**
* 保存演出列表vo
* @param vo
*/
public void setShowVoByPerId(ShowVo vo) {
String key = SmileRedisConst.SELL_SHOW_SAVE.concat(vo.getPerformancesId());
redisDataSourceUtil.getRedisSweetUtil().set(key,vo);
}
/**
* 获取演出列表vo
* @param vo
*/
public ShowVo getShowVoByPerId(String perId) {
String key = SmileRedisConst.SELL_SHOW_SAVE.concat(perId);
Object o = redisDataSourceUtil.getRedisSweetUtil().get(key);
if (o==null){
return null;
}else {
return (ShowVo) o;
}
}
} }
...@@ -49,6 +49,11 @@ public class SmilePrice implements Serializable { ...@@ -49,6 +49,11 @@ public class SmilePrice implements Serializable {
*/ */
private String record; private String record;
/**
* 打款标识0:未打款,1:已打款
*/
private Integer status;
/** /**
* 0:未删除,1:已删除 * 0:未删除,1:已删除
*/ */
...@@ -64,6 +69,14 @@ public class SmilePrice implements Serializable { ...@@ -64,6 +69,14 @@ public class SmilePrice implements Serializable {
*/ */
private LocalDateTime updatedDate; private LocalDateTime updatedDate;
private static final SmilePrice obj = new SmilePrice();
public static SmilePrice getNew() {
try {
return (SmilePrice) obj.clone();
} catch (CloneNotSupportedException e) {
return new SmilePrice();
}
}
} }
...@@ -43,4 +43,6 @@ public interface SmileUserMapper extends BaseMapper<SmileUser> { ...@@ -43,4 +43,6 @@ public interface SmileUserMapper extends BaseMapper<SmileUser> {
List<SmileUser> getAllUidByPerId(@Param("performancesId") String performancesId); List<SmileUser> getAllUidByPerId(@Param("performancesId") String performancesId);
List<SmileUser> selectUidByPerId(@Param("performancesId") String performancesId); List<SmileUser> selectUidByPerId(@Param("performancesId") String performancesId);
List<SmileUser> selectUidByPerIdNotType(@Param("performancesId") String performancesId);
} }
...@@ -144,7 +144,7 @@ ...@@ -144,7 +144,7 @@
WHERE WHERE
kotr.performance_id = #{performancesId} kotr.performance_id = #{performancesId}
AND kotr.agent_id != 0 AND kotr.agent_id != 0
AND COALESCE ( kotr.agent_id, kotr.agent_id_master ) NOT IN ( SELECT sp.uid FROM smile_price AS sp WHERE sp.performanceS_id = #{performancesId} AND sp.record != '') AND COALESCE ( kotr.agent_id, kotr.agent_id_master ) NOT IN ( SELECT sp.uid FROM smile_price AS sp WHERE sp.performanceS_id = #{performancesId} AND sp.uid IS NOT NULL AND sp.record != '')
GROUP BY GROUP BY
uid uid
) )
......
...@@ -169,22 +169,26 @@ ...@@ -169,22 +169,26 @@
</select> </select>
<select id="selectUidByPerId" resultType="com.liquidnet.service.smile.entity.SmileUser"> <select id="selectUidByPerId" resultType="com.liquidnet.service.smile.entity.SmileUser">
SELECT su.uid, SELECT
su.name, su.uid,
su.type, su.name,
su.city su.type,
FROM smile_user AS su su.city
INNER JOIN( FROM
SELECT COALESCE smile_user AS su
(kotr.agent_id, kotr.agent_id_master) uid INNER JOIN ( SELECT kotr.agent_id, kotr.agent_id_master FROM kylin_order_ticket_relations AS kotr WHERE kotr.performance_id = #{performancesId} AND kotr.agent_id != 0 ) kk ON su.uid = kk.agent_id
FROM kylin_order_ticket_relations AS kotr OR su.uid = kk.agent_id_master
WHERE kotr.performance_id = #{performancesId}
AND kotr.agent_id != 0
AND COALESCE(kotr.agent_id, kotr.agent_id_master) NOT IN (SELECT sp.uid
FROM smile_price AS sp
WHERE sp.performanceS_id = #{performancesId}
AND sp.record != '')
GROUP BY uid) AS uu ON uu.uid = su.uid
WHERE su.type = 1 WHERE su.type = 1
</select> </select>
<select id="selectUidByPerIdNotType" resultType="com.liquidnet.service.smile.entity.SmileUser">
SELECT
su.uid
FROM
smile_user AS su
INNER JOIN ( SELECT kotr.agent_id, kotr.agent_id_master FROM kylin_order_ticket_relations AS kotr WHERE kotr.performance_id = #{performancesId} AND kotr.agent_id != 0 ) kk ON su.uid = kk.agent_id
OR su.uid = kk.agent_id_master
</select>
</mapper> </mapper>
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