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

Commit 3b6182a5 authored by GaoHu's avatar GaoHu

打款功能修改

parent 88d1c522
......@@ -20,6 +20,7 @@ public class SmileRedisConst {
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_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
......
......@@ -44,6 +44,7 @@ import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
......@@ -108,7 +109,16 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
vo.setTotalOutAgent(ordNum);
//打款状态
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());
rspData.setCode(0);
rspData.setRows(showVoList);
......@@ -145,49 +155,78 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
@Override
public AjaxResult price(SmilePriceParam smilePriceParam) {
SmilePrice smilePrice = new SmilePrice();
BeanUtils.copyProperties(smilePriceParam, smilePrice);
//查询演出状态
AjaxResult showStatue = showStatue(smilePriceParam);
/*AjaxResult showStatue = showStatue(smilePriceParam);
if (showStatue != null) {
return showStatue;
}
}*/
//该uid本次打款金额
BigDecimal priceByUid = new BigDecimal("0");
//用户是否打款
Integer status = smileRedisUtils.getShowPriceUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid());
if (smilePriceParam.getStatus().equals(status)) {
if (status != null) {
return AjaxResult.warn("不可重复打款");
}
if (smilePriceParam.getStatus().equals(0)) {
//计算该用户的佣金(旧)
/*Map userPerformance = orderTicketsMapper.getUserPerformanceByUidAndProId(smilePriceParam.getUid(), smilePriceParam.getPerformancesId());
BigDecimal price = userPerformance.get("commiss") == null ? new BigDecimal(0) : new BigDecimal(userPerformance.get("commiss").toString());*/
UserData userDataByUid = smileRedisUtils.getUserDataByUid(smilePriceParam.getPerformancesId(), smilePriceParam.getUid());
//保存打款数据
if (userDataByUid != null) {
BigDecimal price = new BigDecimal("0");
List<UserDataAgentVo> dataAgentVos = userDataByUid.getDataAgentVos();
for (UserDataAgentVo userDataAgentVo : dataAgentVos) {
price = price.add(userDataAgentVo.getCommission());
} else {
//判断演出是否有用户打过款
Integer showPriceId = smileRedisUtils.getShowPriceId(smilePriceParam.getPerformancesId());
if (showPriceId == null) {
//演出数据保存
//1.1.记录该演出打款数据
ShowVo showVoByPerId = smileRedisUtils.getShowVoByPerId(smilePriceParam.getPerformancesId());
if (showVoByPerId != null) {
SmilePrice smilePriceByPerId = new SmilePrice();
smilePriceByPerId.setPerformancesId(smilePriceParam.getPerformancesId());
String showVoByPerIdJson = JSON.toJSONString(showVoByPerId);
smilePriceByPerId.setPrice(showVoByPerId.getTotalSalePrice());
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());
//计算总营收
BigDecimal userTotalPrice = smileRedisUtils.getUserTotalPrice(smilePriceParam.getUid());
smileRedisUtils.setUserTotalPrice(smilePriceParam.getUid(), price.add(userTotalPrice));*/
smileRedisUtils.setUserTotalPrice(smilePriceParam.getUid(), priceByUid.add(userTotalPrice));
}
return AjaxResult.success();
}
......@@ -330,12 +369,13 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
//已打款跳出循环,去打款表中获取打款记录
LambdaQueryWrapper<SmilePrice> lambdaQueryWrapper = Wrappers.lambdaQuery(SmilePrice.class);
lambdaQueryWrapper.eq(SmilePrice::getPerformancesId, performancesId);
lambdaQueryWrapper.isNotNull(SmilePrice::getUid);
lambdaQueryWrapper.eq(SmilePrice::getDelTag, 0);
List<SmilePrice> smilePrices = smilePriceMapper.selectList(lambdaQueryWrapper);
for (SmilePrice smilePrice : smilePrices) {
if (smilePrice.getRecord() != null && !smilePrice.getRecord().equals("")) {
UserData userData = JSON.parseObject(smilePrice.getRecord(), UserData.class);
userData.setPriceStatus(0);
userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, userData.getUid()));
userDataList.add(userData);
ids.add(userData.getUid());
}
......@@ -400,8 +440,8 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
}
//查询所有代理uid
List<SmileUser> smileUsers = smileUserMapper.selectUidByPerId(performancesId);
smileUsers.forEach(smileUser ->{
if (!ids.contains(smileUser.getUid())){
smileUsers.forEach(smileUser -> {
if (!ids.contains(smileUser.getUid())) {
UserData userData = UserData.getNew();
List<UserDataAgentVo> userDataAgentVos = new ArrayList<>();
......@@ -434,13 +474,6 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
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.setShowAgentVoList(showAgentVoList);
return saleDataVo;
......
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.service.goblin.dto.vo.SmileProjectDetailsVo;
import com.liquidnet.common.cache.redis.util.AbstractRedisUtil;
......@@ -317,4 +318,27 @@ public class SmileRedisUtils {
String rdk = SmileRedisConst.VOLUNTEERS_DETAILS.concat(projectId).concat(":uid:").concat(uid);
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 {
*/
private String record;
/**
* 打款标识0:未打款,1:已打款
*/
private Integer status;
/**
* 0:未删除,1:已删除
*/
......@@ -64,6 +69,14 @@ public class SmilePrice implements Serializable {
*/
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> {
List<SmileUser> getAllUidByPerId(@Param("performancesId") String performancesId);
List<SmileUser> selectUidByPerId(@Param("performancesId") String performancesId);
List<SmileUser> selectUidByPerIdNotType(@Param("performancesId") String performancesId);
}
......@@ -144,7 +144,7 @@
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 != '')
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
uid
)
......
......@@ -169,22 +169,26 @@
</select>
<select id="selectUidByPerId" resultType="com.liquidnet.service.smile.entity.SmileUser">
SELECT su.uid,
su.name,
su.type,
su.city
FROM smile_user AS su
INNER JOIN(
SELECT COALESCE
(kotr.agent_id, kotr.agent_id_master) uid
FROM kylin_order_ticket_relations AS kotr
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
SELECT
su.uid,
su.name,
su.type,
su.city
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
WHERE su.type = 1
</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>
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