From fe00af0129ea00d7b3e33af06ab8f48acaf0389c Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 13 Feb 2023 13:31:22 +0800 Subject: [PATCH] 普通用户充值固定金额后,自动升级成为合伙人 --- src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java | 3 +++ src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java | 7 +++++++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java | 4 +++- src/main/resources/mapper/modules/MallAgentRecordMapper.xml | 11 +++++++++++ src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 2 ++ src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java | 2 +- src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 2 ++ src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java | 4 ++++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 22 ++++++++++++++++++++++ 9 files changed, 55 insertions(+), 2 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java index 928a949..b8210ab 100644 --- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java +++ b/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"), // 提货通知 diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java index fc8ea85..93b35e2 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/ApiRechargeWalletDto.java +++ b/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; diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java index 5e3b8cf..7cc7f02 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallAgentRecordMapper.java +++ b/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); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java index e07d737..8de90c2 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java +++ b/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); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java index 94ab94b..d9e4b82 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAgentServiceImpl.java +++ b/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); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index 053e033..6404772 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/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); diff --git a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java index 011abe4..61e816c 100644 --- a/src/main/java/cc/mrbird/febs/pay/controller/XcxPayController.java +++ b/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); diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java index 1c65d04..7f848cc 100644 --- a/src/main/java/cc/mrbird/febs/pay/service/impl/XcxPayServiceImpl.java +++ b/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); diff --git a/src/main/resources/mapper/modules/MallAgentRecordMapper.xml b/src/main/resources/mapper/modules/MallAgentRecordMapper.xml index a9fb76e..5234f22 100644 --- a/src/main/resources/mapper/modules/MallAgentRecordMapper.xml +++ b/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> \ No newline at end of file -- Gitblit v1.9.1