xiaoyong931011
2023-02-13 fe00af0129ea00d7b3e33af06ab8f48acaf0389c
普通用户充值固定金额后,自动升级成为合伙人
9 files modified
57 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java 4 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallAgentRecordMapper.xml 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -8,6 +8,8 @@
    //微信订阅模板ID,
    // 微信订单通知
//    WX_TEMPLATE_ID_ONE("WX_TEMPLATE", "WX_TEMPLATE_ID_ONE"),
    // 成为合伙人的充值金额
    PRICE_AMOUNT("AGENT_PRICE", "PRICE_AMOUNT"),
    // 充值到账通知
    WX_TEMPLATE_ID_TWO("WX_TEMPLATE", "WX_TEMPLATE_ID_TWO"),
    // 提货通知
src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java
@@ -10,6 +10,9 @@
@ApiModel(value = "ApiRechargeWalletDto", description = "余额充值接收类")
public class ApiRechargeWalletDto {
    @ApiModelProperty(value = "1:普通充值 2:合伙人充值", example = "10")
    private Integer type;
    @ApiModelProperty(value = "充值金额", example = "10")
    private BigDecimal amount;
src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java
@@ -11,4 +11,8 @@
    MallAgentRecord selectByMemberIdAndState(@Param("memberId")Long memberId, @Param("state")Integer applyIng);
    IPage<MallAgentRecord> selectMallAgentRecordListInPage(Page<MallAgentRecord> page, @Param("record")MallAgentRecord mallAgentRecord);
    void updateStateByMemberId(@Param("memberId")Long memberId);
    void deleteByMemberIdAndState(@Param("memberId")Long memberId, @Param("state")Integer applyIng);
}
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -75,4 +75,6 @@
    FebsResponse xcxOpen(ApiXcxOpenDto apiXcxOpenDto);
    FebsResponse rechargeWallet(ApiRechargeWalletDto apiRechargeWalletDto);
    void updateMemberAgent(Long memberId);
}
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java
@@ -12,6 +12,8 @@
import cc.mrbird.febs.mall.mapper.MallMemberMapper;
import cc.mrbird.febs.mall.service.IApiMallAgentService;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -36,7 +38,7 @@
        //判断用户是否正在申请
        MallAgentRecord mallAgentRecord = mallAgentRecordMapper.selectByMemberIdAndState(memberId,MallAgentRecord.APPLY_ING);
        if(ObjectUtil.isNotEmpty(mallAgentRecord)){
            return new FebsResponse().fail().message("用户已申请");
            mallAgentRecordMapper.deleteByMemberIdAndState(memberId,MallAgentRecord.APPLY_ING);
        }
        MallAgentRecord mallAgentRecordNew = MallAgentRecordConversion.INSTANCE.dtoToEntity(apiAgentApplyDto);
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -741,6 +741,18 @@
        if(BigDecimal.ZERO.compareTo(amount)>0){
            return new FebsResponse().fail().message("请输入正确的充值金额");
        }
        Integer type = apiRechargeWalletDto.getType();
        if(2 == type){
            //成为合伙人的充值金额
            DataDictionaryCustom agentPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.PRICE_AMOUNT.getType(),
                    DataDictionaryEnum.PRICE_AMOUNT.getCode());
            String agentPrice = agentPriceDic.getValue();
            BigDecimal price = new BigDecimal(agentPrice);
            if(price.compareTo(amount) != 0){
                return new FebsResponse().fail().message("成为合伙人的金额为"+agentPrice);
            }
        }
        apiRechargeWalletDto.setMemberId(memberId);
        BrandWCPayRequestData brandWCPayRequestData = null;
        try {
@@ -756,6 +768,16 @@
        return new FebsResponse().success().data(map).message("充值即将到账");
    }
    @Override
    public void updateMemberAgent(Long memberId) {
        mallAgentRecordMapper.updateStateByMemberId(memberId);
        //更新用户表中的LEVEL
        MallMember mallMember = this.baseMapper.selectById(memberId);
        mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
        this.baseMapper.updateById(mallMember);
    }
    private  String getXcxLoginUrl(String code) {
        String wechatLoginUrl =xcxProperties.getWecharLoginUrl();
        return String.format(wechatLoginUrl, xcxProperties.getXcxAppid(), xcxProperties.getXcxSecret(), code);
src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java
@@ -13,6 +13,7 @@
import cc.mrbird.febs.mall.entity.MallMoneyFlow;
import cc.mrbird.febs.mall.entity.MallOrderInfo;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IApiMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
import cc.mrbird.febs.pay.model.NotifyData;
import cc.mrbird.febs.pay.model.OrderStateDto;
@@ -69,6 +70,8 @@
    RedisUtils redisUtils;
    @Autowired
    private IApiMallMemberWalletService memberWalletService;
    @Autowired
    private IApiMallMemberService mallMemberService;
    @Autowired
    private IXcxPayService iXcxPayService;
@@ -109,6 +112,7 @@
                attrStr = data.getAttach();
                JSONObject jsonObject = JSONUtil.parseObj(attrStr);
                String rechargeNo = (String) jsonObject.get("rechargeNo");
                Integer type = (Integer) jsonObject.get("type");
                Long memberId = Long.parseLong(jsonObject.get("memberId").toString());
                // 检验订单状态
                MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOneByOrderNoAndMemberId(rechargeNo,memberId);
@@ -132,6 +136,9 @@
                        if (ObjectUtil.isNotEmpty(mallMoneyFlow)) {
                            log.debug("检查支付金额payMoney={},mallMoneyFlow.getPayMoney()={}", payMoney, mallMoneyFlow.getAmount());
                            if(2 == type){
                                mallMemberService.updateMemberAgent(memberId);
                            }
                            memberWalletService.addBalance(payMoney,memberId);
                            mallMoneyFlow.setStatus(2);
                            mallMoneyFlowMapper.updateById(mallMoneyFlow);
src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java
@@ -80,7 +80,7 @@
        MallMember mallMember = mallMemberMapper.selectById(apiRechargeWalletDto.getMemberId());
        String rechargeNo = "CZ_"+MallUtils.getOrderNum();
        Boolean debug = xcxProperties.getDebug();
        String attrStr = "{'rechargeNo':"+rechargeNo+",'memberId':"+mallMember.getId()+"}";
        String attrStr = "{'rechargeNo':"+rechargeNo+",'memberId':"+mallMember.getId()+",'type':"+apiRechargeWalletDto.getType()+"}";
        if (debug) {
            payData = weixinServiceUtil.createRechargeWallet("[测试]" + productNames, rechargeNo,
                    1, mallMember.getOpenId(), attrStr);
src/main/resources/mapper/modules/MallAgentRecordMapper.xml
@@ -31,4 +31,15 @@
        GROUP BY a.id order by a.CREATED_TIME desc
    </select>
    <update id="updateStateByMemberId">
        update mall_agent_record
        set state = 2
        where member_id = #{memberId}
    </update>
    <delete id="deleteByMemberIdAndState">
        delete from mall_agent_record
        where member_id = #{memberId} and state = #{state}
    </delete>
</mapper>