huanghongfa
2021-06-28 febc33b84c7ac40c500c27dccd2a5c871c2c05f0
后台管理审核随手拍计算用户收益
13个文件已修改
288 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActEasyPhotoVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActEasyPhotoDAO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActEasyPhotoActivityDO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActEasyPhotoDO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActUserWalletTradeDO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActUserWalletChangeService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActUserWalletService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActUserWalletTradeService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActUserWalletChangeServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActUserWalletServiceImpl.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActUserWalletTradeServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActUserWalletTradeDOMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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"