springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActEasyPhotoVO.java
@@ -148,4 +148,7 @@ @ApiModelProperty(value = "参加活动奖励金额") private BigDecimal activityAmount; @ApiModelProperty(value = "类型(1.心情类 2.治理类)") private Integer easyType; } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActEasyPhotoDAO.java
@@ -100,6 +100,8 @@ "p.feedback_at,\n" + "p.is_report,\n" + "p.is_publicity,\n" + "p.activity_type,\n" + "p.activity_amount,\n" + "p.examine_at \n" + "FROM\n" + "com_act_easy_photo p\n" + @@ -140,6 +142,15 @@ "<if test='comActEasyPhotoVO.sponsorId != null and comActEasyPhotoVO.sponsorId != 0'>" + "AND p.sponsor_id =#{comActEasyPhotoVO.sponsorId} \n" + " </if> " + "<if test='comActEasyPhotoVO.activityType != null'>" + "AND p.activity_type =#{comActEasyPhotoVO.activityType} \n" + " </if> " + "<if test='comActEasyPhotoVO.easyType != null and comActEasyPhotoVO.easyType == 1'>" + " AND (p.status = 1 or (p.status > 1 and is_need_feed_back = 0)) " + " </if> " + "<if test='comActEasyPhotoVO.easyType != null and comActEasyPhotoVO.easyType == 2'>" + " AND p.status > 1 and is_need_feed_back = 1 " + " </if> " + " group by p.id "+ ")t order by t.create_at desc "+ "</script>") springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActEasyPhotoActivityDO.java
@@ -87,6 +87,16 @@ */ private String logo; /** * 活动状态(1.待开始 2.进行中 3.已结束 4.已取消) */ public interface status{ int dks = 1; int jxz = 2; int yjs = 3; int yqx = 4; } @Override public String toString() { return "ComActEasyPhotoActivityDO{" + springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActEasyPhotoDO.java
@@ -141,4 +141,13 @@ * 活动奖励金额 */ private BigDecimal activityAmount; /** * 参加活动标签(1.优质 2.精良 3.普通) */ public interface activityType{ int yz = 1; int jl = 2; int pt = 3; } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActUserWalletTradeDO.java
@@ -73,6 +73,11 @@ */ private Long walletId; /** * 变动类型(1.增加 2.减少) */ private Integer changeType; @Override public String toString() { return "ComActUserWalletTradeDO{" + @@ -87,4 +92,20 @@ ", createBy=" + createBy + "}"; } /** * 交易类型(1.发布随手拍 2.结算) */ public interface type{ int fb = 1; int js = 2; } /** * 变动类型(1.增加 2.减少) */ public interface changeType{ int add = 1; int reduce = 2; } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActUserWalletChangeService.java
@@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.panzhihua.service_community.model.dos.ComActUserWalletChangeDO; import java.math.BigDecimal; /** * @auther lyq * @create 2021-06-25 10:35:34 @@ -10,4 +12,21 @@ */ public interface ComActUserWalletChangeService extends IService<ComActUserWalletChangeDO> { /** * 添加用户资产变动记录 * @param userId 用户id * @param communityId 社区id * @param walletId 钱包id * @param incomeAmountTop 收益金额变动前 * @param incomeAmountBack 收益金额变动后 * @param availableAmountTop 可用金额变动前 * @param availableAmountBack 可用金额变动后 * @param settlementAmountTop 已结算金额变动前 * @param settlementAmountBack 已结算金额变动后 * @param serviceId 交易记录id */ void addWalletChange(Long userId, Long communityId, Long walletId, BigDecimal incomeAmountTop ,BigDecimal incomeAmountBack,BigDecimal availableAmountTop,BigDecimal availableAmountBack ,BigDecimal settlementAmountTop,BigDecimal settlementAmountBack,Long serviceId); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActUserWalletService.java
@@ -27,4 +27,12 @@ */ R getWalletRanking(PageComActWalletTradeDTO walletTradeDTO); /** * 随手拍审核通过给用户添加收益 * @param activityType 审核通过选择的随手拍标签(1.优质 2.精良 3.普通) * @param easyPhotoId 随手拍id * @param userId 审核用户id */ void examineAddMoney(Integer activityType,Long easyPhotoId,Long userId); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActUserWalletTradeService.java
@@ -5,6 +5,8 @@ import com.panzhihua.common.model.vos.R; import com.panzhihua.service_community.model.dos.ComActUserWalletTradeDO; import java.math.BigDecimal; /** * @auther lyq * @create 2021-06-25 10:35:22 @@ -19,4 +21,18 @@ */ R getWalletTrade(PageComActWalletTradeDTO walletTradeDTO); /** * 新增钱包交易记录 * @param userId 用户id * @param communityId 社区id * @param serviceId 交易业务id * @param amount 交易金额 * @param type 交易类型(1.发布随手拍 2.结算) * @param remark 交易备注 * @param createBy 操作人id * @param walletId 钱包id * @param changeType 变动类型(1.增加 2.减少) */ Long addWalletTrade(Long userId, Long communityId, Long serviceId, BigDecimal amount,Integer type,String remark,Long createBy,Long walletId,Integer changeType); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoServiceImpl.java
@@ -17,6 +17,7 @@ import com.panzhihua.service_community.dao.*; import com.panzhihua.service_community.model.dos.*; import com.panzhihua.service_community.service.ComActEasyPhotoService; import com.panzhihua.service_community.service.ComActUserWalletService; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -44,6 +45,8 @@ private ComActEasyPhotoCommentUserDAO comActEasyPhotoCommentUserDAO ; @Resource private ComActEasyPhotoActivityMapper comActEasyPhotoActivityMapper; @Resource private ComActUserWalletService comActUserWalletService; /** * 分页查询随手拍 * @@ -191,10 +194,11 @@ ComActEasyPhotoDO cmActEasyPhotoDO=new ComActEasyPhotoDO(); cmActEasyPhotoDO.setId(comActEasyPhotoVO.getId()); cmActEasyPhotoDO.setHandlerId(comActEasyPhotoVO.getUserId()); // cmActEasyPhotoDO.setActivityType(comActEasyPhotoVO.getActivityType()); Date date = new Date(); switch (type){ case 1: int isNeedFeedBack = comActEasyPhotoVO.getIsNeedFeedBack().intValue(); Integer isNeedFeedBack = comActEasyPhotoVO.getIsNeedFeedBack(); if (isNeedFeedBack==1) { cmActEasyPhotoDO.setStatus(2);//进行中 cmActEasyPhotoDO.setIsNeedFeedBack(1); @@ -202,6 +206,8 @@ cmActEasyPhotoDO.setStatus(4);//已完成 } cmActEasyPhotoDO.setExamineAt(date); //审核通过判断随手拍是否有活动并计算用户收益 comActUserWalletService.examineAddMoney(comActEasyPhotoVO.getActivityType(),comActEasyPhotoVO.getId(),comActEasyPhotoVO.getUserId()); break; case 2: cmActEasyPhotoDO.setStatus(3);//已驳回 springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActUserWalletChangeServiceImpl.java
@@ -7,6 +7,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.Date; /** * @auther lyq * @create 2021-06-25 10:35:34 @@ -16,4 +19,38 @@ @Service public class ComActUserWalletChangeServiceImpl extends ServiceImpl<ComActUserWalletChangeMapper, ComActUserWalletChangeDO> implements ComActUserWalletChangeService { /** * 添加用户资产变动记录 * @param userId 用户id * @param communityId 社区id * @param walletId 钱包id * @param incomeAmountTop 收益金额变动前 * @param incomeAmountBack 收益金额变动后 * @param availableAmountTop 可用金额变动前 * @param availableAmountBack 可用金额变动后 * @param settlementAmountTop 已结算金额变动前 * @param settlementAmountBack 已结算金额变动后 * @param serviceId 交易记录id */ @Override public void addWalletChange(Long userId, Long communityId, Long walletId, BigDecimal incomeAmountTop ,BigDecimal incomeAmountBack,BigDecimal availableAmountTop,BigDecimal availableAmountBack ,BigDecimal settlementAmountTop,BigDecimal settlementAmountBack,Long serviceId){ ComActUserWalletChangeDO walletChangeDO = new ComActUserWalletChangeDO(); walletChangeDO.setUserId(userId); walletChangeDO.setCommunityId(communityId); walletChangeDO.setWalletId(walletId); walletChangeDO.setIncomeAmountTop(incomeAmountTop); walletChangeDO.setIncomeAmountBack(incomeAmountBack); walletChangeDO.setAvailableAmountTop(availableAmountTop); walletChangeDO.setAvailableAmountBack(availableAmountBack); walletChangeDO.setSettlementAmountTop(settlementAmountTop); walletChangeDO.setSettlementAmountBack(settlementAmountBack); walletChangeDO.setServiceId(serviceId); walletChangeDO.setCreateAt(new Date()); this.baseMapper.insert(walletChangeDO); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActUserWalletServiceImpl.java
@@ -7,13 +7,21 @@ import com.panzhihua.common.model.dtos.community.wallet.PageComActWalletTradeDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.wallet.ComActWalletVO; import com.panzhihua.service_community.dao.ComActEasyPhotoActivityMapper; import com.panzhihua.service_community.dao.ComActEasyPhotoDAO; import com.panzhihua.service_community.dao.ComActUserWalletMapper; import com.panzhihua.service_community.model.dos.ComActEasyPhotoActivityDO; import com.panzhihua.service_community.model.dos.ComActEasyPhotoDO; import com.panzhihua.service_community.model.dos.ComActUserWalletDO; import com.panzhihua.service_community.model.dos.ComActUserWalletTradeDO; import com.panzhihua.service_community.service.ComActUserWalletChangeService; import com.panzhihua.service_community.service.ComActUserWalletService; import com.panzhihua.service_community.service.ComActUserWalletTradeService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; import java.util.Map; @@ -26,6 +34,17 @@ @Slf4j @Service public class ComActUserWalletServiceImpl extends ServiceImpl<ComActUserWalletMapper, ComActUserWalletDO> implements ComActUserWalletService { @Resource private ComActEasyPhotoDAO comActEasyPhotoDAO; @Resource private ComActEasyPhotoActivityMapper comActEasyPhotoActivityMapper; @Resource private ComActUserWalletMapper comActUserWalletMapper; @Resource private ComActUserWalletTradeService comActUserWalletTradeService; @Resource private ComActUserWalletChangeService comActUserWalletChangeService; /** * 查询用户钱包信息 @@ -69,4 +88,95 @@ return R.ok(this.baseMapper.getWalletRanking(new Page(walletTradeDTO.getPageNum(),walletTradeDTO.getPageSize()),walletTradeDTO)); } /** * 随手拍审核通过给用户添加收益 * @param easyPhotoId 随手拍id */ @Override public void examineAddMoney(Integer activityType,Long easyPhotoId,Long userId){ //查询随手拍信息 ComActEasyPhotoDO easyPhotoDO = comActEasyPhotoDAO.selectById(easyPhotoId); if(easyPhotoDO == null){ log.error("给用户添加收益失败,原因:未查到随手拍记录,随手拍id:" + easyPhotoId); return; } if(easyPhotoDO.getActivityId() == null){//用户未参加活动,无需添加收益 log.error("给用户添加收益失败,原因:用户未参加活动,无需添加收益,随手拍id:" + easyPhotoId); return; } //查询随手拍活动 ComActEasyPhotoActivityDO photoActivityDO = comActEasyPhotoActivityMapper.selectById(easyPhotoDO.getActivityId()); if(photoActivityDO == null){ log.error("给用户添加收益失败,原因:未查到活动记录,活动id:" + easyPhotoDO.getActivityId()); return; } if(photoActivityDO.getStatus() != ComActEasyPhotoActivityDO.status.jxz){ log.error("给用户添加收益失败,原因:活动未在进行中,活动id:" + easyPhotoDO.getActivityId()); return; } Date nowDate = new Date(); //活动正在进行中,需要给用户计算收益 if(nowDate.getTime() - photoActivityDO.getActivityStartAt().getTime() > 0 && nowDate.getTime() - photoActivityDO.getActivityEndAt().getTime() < 0){ //查询用户钱包 ComActUserWalletDO userWalletDO = comActUserWalletMapper.selectOne(new QueryWrapper<ComActUserWalletDO>() .lambda().eq(ComActUserWalletDO::getUserId,easyPhotoDO.getSponsorId()).eq(ComActUserWalletDO::getCommunityId,easyPhotoDO.getCommunityId())); if(userWalletDO == null){ userWalletDO = new ComActUserWalletDO(); userWalletDO.setIncomeAmount(BigDecimal.ZERO); userWalletDO.setAvailableAmount(BigDecimal.ZERO); userWalletDO.setSettlementAmount(BigDecimal.ZERO); userWalletDO.setUserId(easyPhotoDO.getSponsorId()); userWalletDO.setCommunityId(easyPhotoDO.getCommunityId()); userWalletDO.setEasyCount(0); userWalletDO.setCreateAt(new Date()); this.baseMapper.insert(userWalletDO); } //计算收益 BigDecimal profitAmount = BigDecimal.ZERO; if(activityType.equals(ComActEasyPhotoDO.activityType.yz)){ profitAmount = photoActivityDO.getGoodReward(); }else if(activityType.equals(ComActEasyPhotoDO.activityType.jl)){ profitAmount = photoActivityDO.getExcellentReward(); }else if(activityType.equals(ComActEasyPhotoDO.activityType.pt)){ profitAmount = photoActivityDO.getOrdinaryReward(); } if(profitAmount.equals(BigDecimal.ZERO)){ log.error("此次参加活动的随手拍收益为0,不记录本次交易"); return; } //记录钱包变动前金额 BigDecimal oldIncomeAmount = userWalletDO.getIncomeAmount(); BigDecimal oldAvailableAmount = userWalletDO.getAvailableAmount(); BigDecimal oldSettlementAmount = userWalletDO.getSettlementAmount(); //更新钱包金额 userWalletDO.setIncomeAmount(userWalletDO.getIncomeAmount().add(profitAmount)); userWalletDO.setAvailableAmount(userWalletDO.getAvailableAmount().add(profitAmount)); comActUserWalletMapper.updateById(userWalletDO); //新增钱包资金交易记录 Long tradeId = comActUserWalletTradeService.addWalletTrade(easyPhotoDO.getSponsorId(),easyPhotoDO.getCommunityId() ,easyPhotoDO.getId(),profitAmount, ComActUserWalletTradeDO.type.fb,"发布随手拍" ,userId,userWalletDO.getId(),ComActUserWalletTradeDO.changeType.add); //新增钱包资金变动记录 comActUserWalletChangeService.addWalletChange(easyPhotoDO.getSponsorId(),easyPhotoDO.getCommunityId(),userWalletDO.getId() ,oldIncomeAmount,userWalletDO.getIncomeAmount(),oldAvailableAmount,userWalletDO.getAvailableAmount() ,oldSettlementAmount,userWalletDO.getSettlementAmount(),tradeId); //更新随手拍活动信息 easyPhotoDO.setActivityType(activityType); easyPhotoDO.setActivityAmount(profitAmount); comActEasyPhotoDAO.updateById(easyPhotoDO); } } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActUserWalletTradeServiceImpl.java
@@ -10,6 +10,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.Date; /** * @auther lyq * @create 2021-06-25 10:35:22 @@ -29,4 +32,34 @@ return R.ok(this.baseMapper.getUserWalletTradeList(new Page(walletTradeDTO.getPageNum(),walletTradeDTO.getPageSize()),walletTradeDTO)); } /** * 新增钱包交易记录 * @param userId 用户id * @param communityId 社区id * @param serviceId 交易业务id * @param amount 交易金额 * @param type 交易类型(1.发布随手拍 2.结算) * @param remark 交易备注 * @param createBy 操作人id * @param walletId 钱包id * @param changeType 变动类型(1.增加 2.减少) */ @Override public Long addWalletTrade(Long userId, Long communityId, Long serviceId , BigDecimal amount, Integer type, String remark, Long createBy, Long walletId,Integer changeType){ ComActUserWalletTradeDO walletTradeDO = new ComActUserWalletTradeDO(); walletTradeDO.setUserId(userId); walletTradeDO.setCommunityId(communityId); walletTradeDO.setServiceId(serviceId); walletTradeDO.setAmount(amount); walletTradeDO.setType(type); walletTradeDO.setRemark(remark); walletTradeDO.setCreateBy(createBy); walletTradeDO.setWalletId(walletId); walletTradeDO.setChangeType(changeType); walletTradeDO.setCreateAt(new Date()); this.baseMapper.insert(walletTradeDO); return walletTradeDO.getId(); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActUserWalletTradeDOMapper.xml
@@ -14,11 +14,12 @@ <result column="create_at" property="createAt" /> <result column="create_by" property="createBy" /> <result column="wallet_id" property="walletId" /> <result column="change_type" property="changeType" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, user_id, community_id, service_id, amount, type, remark, create_at, create_by, wallet_id id, user_id, community_id, service_id, amount, type, remark, create_at, create_by, wallet_id, change_type </sql> <select id="getUserWalletTradeList" resultType="com.panzhihua.common.model.vos.community.wallet.ComActWalletTradeVO"