huanghongfa
2021-09-02 177249c76aeea0b4bf8d8816d4994e3b445b45ce
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActUserWalletServiceImpl.java
@@ -1,6 +1,16 @@
package com.panzhihua.service_community.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -19,16 +29,8 @@
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 org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
/**
 * @auther lyq
@@ -37,7 +39,8 @@
 */
@Slf4j
@Service
public class ComActUserWalletServiceImpl extends ServiceImpl<ComActUserWalletMapper, ComActUserWalletDO> implements ComActUserWalletService {
public class ComActUserWalletServiceImpl extends ServiceImpl<ComActUserWalletMapper, ComActUserWalletDO>
    implements ComActUserWalletService {
    @Resource
    private ComActEasyPhotoDAO comActEasyPhotoDAO;
@@ -56,15 +59,17 @@
    /**
     * 查询用户钱包信息
     * @param walletDetailDTO   请求参数
     *
     * @param walletDetailDTO
     *            请求参数
     * @return  用户钱包信息
     */
    @Override
    public R getWallet(ComActWalletDetailDTO walletDetailDTO){
        ComActWalletVO comActWalletVO = new ComActWalletVO();
        //查询用户钱包
        ComActUserWalletDO userWalletDO = this.baseMapper.selectOne(new QueryWrapper<ComActUserWalletDO>()
                .lambda().eq(ComActUserWalletDO::getUserId,walletDetailDTO.getUserId())
        ComActUserWalletDO userWalletDO = this.baseMapper.selectOne(new QueryWrapper<ComActUserWalletDO>().lambda()
            .eq(ComActUserWalletDO::getUserId, walletDetailDTO.getUserId())
                .eq(ComActUserWalletDO::getCommunityId,walletDetailDTO.getCommunityId()));
        if(userWalletDO == null){//若钱包不存在则新建钱包
            userWalletDO = new ComActUserWalletDO();
@@ -82,7 +87,8 @@
        if(resultMap != null && !resultMap.isEmpty()){
            comActWalletVO.setCommunityName(resultMap.get("name"));
            if(StringUtils.isEmpty(resultMap.get("content"))){
                this.baseMapper.insertSysAgreement(Constants.PROFIT_EXPLAIN,"收益说明",walletDetailDTO.getCommunityId(),5);
                this.baseMapper.insertSysAgreement(Constants.PROFIT_EXPLAIN, "收益说明", walletDetailDTO.getCommunityId(),
                    5);
                comActWalletVO.setAgreement(Constants.PROFIT_EXPLAIN);
            }else{
                comActWalletVO.setAgreement(resultMap.get("content"));
@@ -104,17 +110,22 @@
    /**
     * 查询用户绑定的社区收益排行榜
     * @param walletTradeDTO   请求参数
     *
     * @param walletTradeDTO
     *            请求参数
     * @return  社区收益排行榜
     */
    @Override
    public R getWalletRanking(PageComActWalletTradeDTO walletTradeDTO){
        return R.ok(this.baseMapper.getWalletRanking(new Page(walletTradeDTO.getPageNum(),walletTradeDTO.getPageSize()),walletTradeDTO));
        return R.ok(this.baseMapper
            .getWalletRanking(new Page(walletTradeDTO.getPageNum(), walletTradeDTO.getPageSize()), walletTradeDTO));
    }
    /**
     * 随手拍审核通过给用户添加收益
     * @param easyPhotoId   随手拍id
     *
     * @param easyPhotoId
     *            随手拍id
     */
    @Override
    public void examineAddMoney(Integer activityType,Long easyPhotoId,Long userId,BigDecimal amount){
@@ -132,7 +143,8 @@
        }
        //查询随手拍活动
        ComActEasyPhotoActivityDO photoActivityDO = comActEasyPhotoActivityMapper.selectById(easyPhotoDO.getActivityId());
        ComActEasyPhotoActivityDO photoActivityDO =
            comActEasyPhotoActivityMapper.selectById(easyPhotoDO.getActivityId());
        if(photoActivityDO == null){
            log.error("给用户添加收益失败,原因:未查到活动记录,活动id:" + easyPhotoDO.getActivityId());
            return;
@@ -157,7 +169,8 @@
//        Date nowDate = new Date();
        //查询用户钱包
        ComActUserWalletDO userWalletDO = comActUserWalletMapper.selectOne(new QueryWrapper<ComActUserWalletDO>()
                .lambda().eq(ComActUserWalletDO::getUserId,easyPhotoDO.getSponsorId()).eq(ComActUserWalletDO::getCommunityId,easyPhotoDO.getCommunityId()));
            .lambda().eq(ComActUserWalletDO::getUserId, easyPhotoDO.getSponsorId())
            .eq(ComActUserWalletDO::getCommunityId, easyPhotoDO.getCommunityId()));
        if(userWalletDO == null){
            userWalletDO = new ComActUserWalletDO();
            userWalletDO.setIncomeAmount(BigDecimal.ZERO);
@@ -185,17 +198,18 @@
            comActUserWalletMapper.updateById(userWalletDO);
            //新增钱包资金交易记录
            Long tradeId = comActUserWalletTradeService.addWalletTrade(easyPhotoDO.getSponsorId(),easyPhotoDO.getCommunityId()
                    ,easyPhotoDO.getId(),amount, ComActUserWalletTradeDO.type.fb,easyPhotoDO.getDetail()
                    ,userId,userWalletDO.getId(),ComActUserWalletTradeDO.changeType.add);
            Long tradeId = comActUserWalletTradeService.addWalletTrade(easyPhotoDO.getSponsorId(),
                easyPhotoDO.getCommunityId(), easyPhotoDO.getId(), amount, ComActUserWalletTradeDO.type.fb,
                easyPhotoDO.getDetail(), userId, userWalletDO.getId(), ComActUserWalletTradeDO.changeType.add);
            //新增钱包资金变动记录
            comActUserWalletChangeService.addWalletChange(easyPhotoDO.getSponsorId(),easyPhotoDO.getCommunityId(),userWalletDO.getId()
                    ,oldIncomeAmount,userWalletDO.getIncomeAmount(),oldAvailableAmount,userWalletDO.getAvailableAmount()
                    ,oldSettlementAmount,userWalletDO.getSettlementAmount(),tradeId);
            comActUserWalletChangeService.addWalletChange(easyPhotoDO.getSponsorId(), easyPhotoDO.getCommunityId(),
                userWalletDO.getId(), oldIncomeAmount, userWalletDO.getIncomeAmount(), oldAvailableAmount,
                userWalletDO.getAvailableAmount(), oldSettlementAmount, userWalletDO.getSettlementAmount(), tradeId);
            //查询用户未读奖励金额
            ComActEasyPhotoRewardDO easyPhotoRewardDO = comActEasyPhotoRewardMapper.selectOne(new QueryWrapper<ComActEasyPhotoRewardDO>().lambda()
            ComActEasyPhotoRewardDO easyPhotoRewardDO =
                comActEasyPhotoRewardMapper.selectOne(new QueryWrapper<ComActEasyPhotoRewardDO>().lambda()
                    .eq(ComActEasyPhotoRewardDO::getCommunityId,easyPhotoDO.getCommunityId())
                    .eq(ComActEasyPhotoRewardDO::getUserId,easyPhotoDO.getSponsorId())
                    .eq(ComActEasyPhotoRewardDO::getIsRead,ComActEasyPhotoRewardDO.isRead.no));
@@ -234,7 +248,8 @@
            String openid = map.get("openid");
            WxXCXTempSend util = new WxXCXTempSend();
            try {
                WxUtil.sendSubscribeJLDZ(openid,util.getAppAccessToken(),"随手拍有奖活动",amount.setScale(2, RoundingMode.HALF_UP),activityTypeName);
                WxUtil.sendSubscribeJLDZ(openid, util.getAppAccessToken(), "随手拍有奖活动",
                    amount.setScale(2, RoundingMode.HALF_UP), activityTypeName);
            }catch (Exception e){
                log.error("消息推送失败,失败原因:" + e.getMessage());
            }
@@ -243,17 +258,22 @@
    /**
     * 分页查询收益结算列表
     * @param pageWalletAdminDTO    请求参数
     *
     * @param pageWalletAdminDTO
     *            请求参数
     * @return  收益结算列表
     */
    @Override
    public R pageUserWalletAdmin(PageComActWalletAdminDTO pageWalletAdminDTO){
        return R.ok(this.baseMapper.getUserWalletList(new Page(pageWalletAdminDTO.getPageNum(),pageWalletAdminDTO.getPageSize()),pageWalletAdminDTO));
        return R.ok(this.baseMapper.getUserWalletList(
            new Page(pageWalletAdminDTO.getPageNum(), pageWalletAdminDTO.getPageSize()), pageWalletAdminDTO));
    }
    /**
     * 用户结算收益
     * @param settlementAdminDTO    请求参数
     *
     * @param settlementAdminDTO
     *            请求参数
     * @return  结算结果
     */
    @Override
@@ -271,18 +291,22 @@
            BigDecimal oldIncomeAmount = userWalletDO.getIncomeAmount();
            BigDecimal oldAvailableAmount = userWalletDO.getAvailableAmount();
            BigDecimal oldSettlementAmount = userWalletDO.getSettlementAmount();
            userWalletDO.setAvailableAmount(userWalletDO.getAvailableAmount().subtract(settlementAdminDTO.getSettlementAmount()));
            userWalletDO.setSettlementAmount(userWalletDO.getSettlementAmount().add(settlementAdminDTO.getSettlementAmount()));
            userWalletDO.setAvailableAmount(
                userWalletDO.getAvailableAmount().subtract(settlementAdminDTO.getSettlementAmount()));
            userWalletDO
                .setSettlementAmount(userWalletDO.getSettlementAmount().add(settlementAdminDTO.getSettlementAmount()));
            userWalletDO.setUpdateAt(new Date());
            this.baseMapper.updateById(userWalletDO);
            //添加钱包交易记录
            Long tradeServiceId = comActUserWalletTradeService.addWalletTrade(userWalletDO.getUserId(),userWalletDO.getCommunityId()
                    ,null,settlementAdminDTO.getSettlementAmount(),ComActUserWalletTradeDO.type.js
                    ,settlementAdminDTO.getRemark(),settlementAdminDTO.getUserId(),userWalletDO.getId(),ComActUserWalletTradeDO.changeType.reduce);
            Long tradeServiceId = comActUserWalletTradeService.addWalletTrade(userWalletDO.getUserId(),
                userWalletDO.getCommunityId(), null, settlementAdminDTO.getSettlementAmount(),
                ComActUserWalletTradeDO.type.js, settlementAdminDTO.getRemark(), settlementAdminDTO.getUserId(),
                userWalletDO.getId(), ComActUserWalletTradeDO.changeType.reduce);
            //添加钱包变动记录
            comActUserWalletChangeService.addWalletChange(userWalletDO.getUserId(),userWalletDO.getCommunityId(),userWalletDO.getId()
                    ,oldIncomeAmount,userWalletDO.getIncomeAmount(),oldAvailableAmount,userWalletDO.getAvailableAmount()
                    ,oldSettlementAmount,userWalletDO.getSettlementAmount(),tradeServiceId);
            comActUserWalletChangeService.addWalletChange(userWalletDO.getUserId(), userWalletDO.getCommunityId(),
                userWalletDO.getId(), oldIncomeAmount, userWalletDO.getIncomeAmount(), oldAvailableAmount,
                userWalletDO.getAvailableAmount(), oldSettlementAmount, userWalletDO.getSettlementAmount(),
                tradeServiceId);
            return R.ok();
        }catch (Exception e){