From a1159976975857e0dfb48a45a9a848693bc0d262 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 20 Jul 2023 14:33:08 +0800
Subject: [PATCH] 支付返利,微信余额支付会有返利。发卷,赠送积分逻辑
---
src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java | 1
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java | 10 ++
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java | 3
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 14 ++
src/main/resources/mapper/modules/MallMemberMapper.xml | 9 ++
src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 2
src/main/java/cc/mrbird/febs/mall/dto/ApiMallRollPerkDto.java | 25 ++++++
src/main/java/cc/mrbird/febs/mall/service/IAgentService.java | 2
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 13 +++
src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java | 18 ++++
src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java | 10 ++
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java | 74 ++++++++++++++++++
src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java | 2
src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java | 7 +
src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java | 11 ++
src/main/java/cc/mrbird/febs/mall/entity/MallRollPerk.java | 2
16 files changed, 199 insertions(+), 4 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
index 42e4064..3f42d91 100644
--- a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
+++ b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
@@ -176,4 +176,22 @@
}
/** 新用户注册 end**/
+
+ /** 支付后同意验证 start**/
+ @Bean
+ public DirectExchange orderGetExchange() {
+ return new DirectExchange(RabbitQueueEnum.YWG_ORDER_GET.getExchange());
+ }
+
+ @Bean
+ public Queue orderGetQueue() {
+ return new Queue(RabbitQueueEnum.YWG_ORDER_GET.getQueue());
+ }
+
+ @Bean
+ public Binding orderGetBind() {
+ return BindingBuilder.bind(orderGetQueue()).to(orderGetExchange()).with(RabbitQueueEnum.YWG_ORDER_GET.getRoute());
+ }
+ /** 支付后同意验证 end**/
+
}
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 8005fb8..bf7c74b 100644
--- a/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
+++ b/src/main/java/cc/mrbird/febs/common/enumerates/DataDictionaryEnum.java
@@ -5,6 +5,8 @@
@Getter
public enum DataDictionaryEnum {
+ // 上级返佣金比例,返回到余额
+ MEMBER_RETURN_PERCENT("MEMBER_RETURN_PERCENT", "MEMBER_RETURN_PERCENT"),
// 积分兑换比例 1,则1积分等于一元 2则2积分等于一元
SCORE_CHANGE("SCORE_CHANGE", "SCORE_CHANGE"),
//微信订阅模板ID,
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
index 40773f0..4da30b0 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -4,6 +4,7 @@
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.MallMember;
import cc.mrbird.febs.mall.entity.MallMemberPayment;
+import cc.mrbird.febs.mall.entity.MallRollPerk;
import cc.mrbird.febs.mall.service.*;
import cc.mrbird.febs.mall.vo.*;
import io.swagger.annotations.Api;
@@ -220,4 +221,13 @@
return memberService.activityInfo();
}
+ @ApiOperation(value = "获取卷列表", notes = "获取卷列表")
+ @ApiResponses({
+ @ApiResponse(code = 200, message = "success", response = MallRollPerk.class)
+ })
+ @PostMapping(value = "/rollPerkList")
+ public FebsResponse rollPerkList(@RequestBody ApiMallRollPerkDto queryDto) {
+ return new FebsResponse().success().data(memberService.findMallRollPerkInPage(queryDto));
+ }
+
}
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiMallRollPerkDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiMallRollPerkDto.java
new file mode 100644
index 0000000..abfc5b2
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiMallRollPerkDto.java
@@ -0,0 +1,25 @@
+package cc.mrbird.febs.mall.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ApiMallRollPerkDto", description = "参数接收类")
+public class ApiMallRollPerkDto {
+
+ @ApiModelProperty(value = "页码", example = "1")
+ private Integer pageNow;
+
+ @ApiModelProperty(value = "每页数量", example = "10")
+ private Integer pageSize;
+
+ @ApiModelProperty(value = "卷编码 1:课程卷 2:民宿卷", example = "123")
+ private Long rollId;
+
+ @ApiModelProperty(value = "状态1:未使用 2:已使用", example = "123")
+ private Integer state;
+
+ @ApiModelProperty(value = "用户ID", example = "123")
+ private Long memberId;
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallRollPerk.java b/src/main/java/cc/mrbird/febs/mall/entity/MallRollPerk.java
index af48abd..76c0451 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallRollPerk.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallRollPerk.java
@@ -14,7 +14,7 @@
private Long memberId;
private Long rollId;
-
+ //1:未使用 2:已使用
private Integer state;
}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
index 8f83a2d..86db1ef 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java
@@ -6,6 +6,7 @@
import cc.mrbird.febs.mall.dto.RankListDto;
import cc.mrbird.febs.mall.entity.AppVersion;
import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.entity.MallRollPerk;
import cc.mrbird.febs.mall.vo.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -87,4 +88,6 @@
List<MallMember> selectMemberWithLevel(String level);
MallMember selectMemberByOpenId(@Param("openId")String openId);
+
+ IPage<MallRollPerk> findMallRollPerkInPage(Page<MallRollPerk> page, @Param("record")MallRollPerk mallRollPerk);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
index 875e530..ce1d17e 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAgentService.java
@@ -13,4 +13,6 @@
void addMemberScan(String str);
void updateMemberInfo(String str);
+
+ void orderGetMsg(String str);
}
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 1565337..ca0bf13 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java
@@ -83,4 +83,6 @@
FebsResponse activityInfo();
FebsResponse agentApplyInfo();
+
+ FebsResponse findMallRollPerkInPage(ApiMallRollPerkDto queryDto);
}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
index 6d41ec1..709dec4 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -2,6 +2,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
+import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.AppContants;
@@ -50,6 +51,11 @@
private final MallMemberMapper memberMapper;
private final MallMemberWalletMapper mallMemberWalletMapper;
private final RestTemplate restTemplate;
+ private final MallOrderInfoMapper mallOrderInfoMapper;
+ private final MallOrderItemMapper mallOrderItemMapper;
+ private final MallGoodsMapper mallGoodsMapper;
+ private final IApiMallMemberWalletService memberWalletService;
+ private final MallRollPerkMapper mallRollPerkMapper;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -328,6 +334,74 @@
return;
}
+
+ @Override
+ public void orderGetMsg(String str) {
+ /**
+ * String str : orderId@amount
+ */
+ String[] split = StrUtil.split(str, "@");
+ String orderId = split[0];
+ String amount = split[1];
+ MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(orderId);
+ if(ObjectUtil.isEmpty(mallOrderInfo)){
+ return;
+ }
+ Long memberId = mallOrderInfo.getMemberId();
+ MallMember mallMember = memberMapper.selectById(memberId);
+
+
+ List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(mallOrderInfo.getId());
+ if(CollUtil.isEmpty(mallOrderItemList)){
+ return;
+ }
+
+ /**
+ * 支付后同意验证
+ * 1:是否送券
+ * 2:是否送积分
+ * 3:是否返利
+ */
+ //是否返利
+ BigDecimal amountBigDecimal = new BigDecimal(StrUtil.isEmpty(amount) ? "0" : amount);
+ if(BigDecimal.ZERO.compareTo(amountBigDecimal) < 0){
+ if(ObjectUtil.isNotEmpty(mallMember.getReferrerId())){
+ String referrerId = mallMember.getReferrerId();
+ MallMember mallMemberParent = memberMapper.selectInfoByInviteId(referrerId);
+ Long id = mallMemberParent.getId();
+ DataDictionaryCustom returnPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+ DataDictionaryEnum.MEMBER_RETURN_PERCENT.getType(),
+ DataDictionaryEnum.MEMBER_RETURN_PERCENT.getCode()
+ );
+ String returnPercentStr = StrUtil.isNotEmpty(returnPercentDic.getValue()) ? "1" : returnPercentDic.getValue();
+ BigDecimal returnPercent = new BigDecimal(returnPercentStr).divide(new BigDecimal(100), 2, BigDecimal.ROUND_DOWN);
+ BigDecimal amountActual = amountBigDecimal.multiply(returnPercent).setScale(2, BigDecimal.ROUND_DOWN);
+ memberWalletService.add(amountActual, id, "balance");
+ }
+ }
+ for(MallOrderItem mallOrderItem : mallOrderItemList){
+ Long goodsId = mallOrderItem.getGoodsId();
+ MallGoods mallGoods = mallGoodsMapper.selectById(goodsId);
+ if(ObjectUtil.isEmpty(mallGoods)){
+ break;
+ }
+ //是否送券 1:是 2:否
+ BigDecimal levelTwoPrice = mallGoods.getLevelTwoPrice();
+ if(BigDecimal.ONE.compareTo(levelTwoPrice) == 0){
+ MallRollPerk mallRollPerk = new MallRollPerk();
+ mallRollPerk.setMemberId(memberId);
+ mallRollPerk.setState(1);
+ mallRollPerk.setRollId(Long.parseLong(mallGoods.getLevelThreePrice().toString()));
+ mallRollPerkMapper.insert(mallRollPerk);
+ }
+ //赠送积分
+ BigDecimal levelOnePrice = mallGoods.getLevelOnePrice();
+ if(BigDecimal.ZERO.compareTo(levelOnePrice) <= 0){
+ memberWalletService.add(levelOnePrice, memberId, "score");
+ }
+ }
+ }
+
public static void main(String[] args) {
RestTemplate restTemplate = new RestTemplate();
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 37289ce..01f55dc 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
@@ -829,6 +829,19 @@
return new FebsResponse().success().data(apiMallAgentRecordVo);
}
+ @Override
+ public FebsResponse findMallRollPerkInPage(ApiMallRollPerkDto queryDto) {
+ Page<MallRollPerk> page = new Page<>(queryDto.getPageNow(), queryDto.getPageSize());
+ MallRollPerk mallRollPerk = new MallRollPerk();
+ if(ObjectUtil.isNotEmpty(queryDto.getState())){
+ mallRollPerk.setState(queryDto.getState());
+ }
+ mallRollPerk.setRollId(queryDto.getRollId());
+ mallRollPerk.setMemberId(queryDto.getMemberId());
+ IPage<MallRollPerk> mallGoodsCommentVoIPage = this.baseMapper.findMallRollPerkInPage(page,mallRollPerk);
+ return new FebsResponse().success().data(mallGoodsCommentVoIPage);
+ }
+
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/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
index 7656e4d..bd00e59 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -322,6 +322,7 @@
String payResultStr = "";
String wxResultStr = "";
+ String amountActualMsg = "";
switch (payOrderDto.getType()) {
case "1":
BrandWCPayRequestData brandWCPayRequestData = null;
@@ -333,6 +334,7 @@
wxResultStr = JSONUtil.toJsonStr(brandWCPayRequestData);
payResultStr = brandWCPayRequestData.getPrepay_id();
orderInfo.setPayMethod("微信支付");
+ amountActualMsg = orderInfo.getAmount().toString();
break;
case "2":
payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "balance");
@@ -346,6 +348,8 @@
mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(),
orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2);
+
+ amountActualMsg = orderInfo.getAmount().toString();
break;
case "3":
/**
@@ -396,6 +400,7 @@
mallMoneyFlowService.addMoneyFlow(member.getId(), amountActual.negate(), MoneyFlowTypeEnum.PAY.getValue(),
orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2);
}
+ amountActualMsg = amountActual.toString();
if(scoreActual.compareTo(BigDecimal.ZERO) > 0){
mallMoneyFlowService.addMoneyFlow(member.getId(), scoreActual.negate(),
MoneyFlowTypeEnum.SCORE_PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue(),"积分支付",2);
@@ -413,7 +418,7 @@
payResultStr = orderInfo.getOrderNo();
- orderInfo.setPayOrderNo(orderInfo.getOrderNo());
+ orderInfo.setPayOrderNo(payOrderDto.getRollId().toString());
orderInfo.setPayMethod("兑换券支付");
orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
orderInfo.setPayTime(new Date());
@@ -430,8 +435,11 @@
String takeCode = ShareCodeUtil.toSerialCode(orderInfo.getId());
orderInfo.setTakeCode(takeCode);
this.baseMapper.updateById(orderInfo);
-
-
+ StringBuffer stringBuffer = new StringBuffer();
+ stringBuffer.append(orderInfo.getId().toString());
+ stringBuffer.append("@");
+ stringBuffer.append(amountActualMsg);
+ agentProducer.sendOrderGetMsg(stringBuffer.toString());
// OrderStateDto orderStateDto = new OrderStateDto();
// orderStateDto.setOrderNo(orderInfo.getOrderNo());
diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
index a8fd333..b72a74e 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
@@ -16,4 +16,11 @@
public static final String YWG_MEMBER_SUB = "queue_ywg_member_sub";
public static final String YWG_MEMBER_SUB_SCAN = "queue_ywg_member_sub_scan";
public static final String YWG_MEMBER_INFO = "queue_ywg_member_info";
+ /**
+ * 支付后同意验证
+ * 1:是否送券
+ * 2:是否送积分
+ * 3:是否返利
+ */
+ public static final String YWG_ORDER_GET = "queue_ywg_order_get";
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
index 6026574..bcdb7d9 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -102,4 +102,14 @@
log.error("收到用户信息:", e);
}
}
+
+ @RabbitListener(queues = QueueConstants.YWG_ORDER_GET)
+ public void orderGetMsg(String str) {
+ log.info("支付后同意验证:{}", str);
+ try {
+ agentService.orderGetMsg(str);
+ } catch (Exception e) {
+ log.error("支付后同意验证:", e);
+ }
+ }
}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
index a46e1a5..ce13aaa 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java
@@ -6,6 +6,7 @@
@Getter
public enum RabbitQueueEnum {
+ YWG_ORDER_GET("exchange_ywg_order_get", "route_key_ywg_order_get",QueueConstants.YWG_ORDER_GET),
YWG_MEMBER_INFO("exchange_ywg_member_info", "route_key_ywg_member_info",QueueConstants.YWG_MEMBER_INFO),
YWG_MEMBER_SUB_SCAN("exchange_ywg_member_sub_scan", "route_key_ywg_member_sub_scan",QueueConstants.YWG_MEMBER_SUB_SCAN),
YWG_MEMBER_SUB("exchange_ywg_member_sub", "route_key_ywg_member_sub",QueueConstants.YWG_MEMBER_SUB),
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
index d4832e7..1cdaf61 100644
--- a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
+++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -89,6 +89,17 @@
public void sendMemberInfoMsg(String str) {
log.info("更新用户信息:{}", str);
+ /**
+ * String str:accessToken|openId
+ */
rabbitTemplate.convertAndSend(RabbitQueueEnum.YWG_MEMBER_INFO.getExchange(), RabbitQueueEnum.YWG_MEMBER_INFO.getRoute(), str);
}
+
+ public void sendOrderGetMsg(String str) {
+ log.info("支付后同意验证:{}", str);
+ /**
+ * String str : orderId@amount
+ */
+ rabbitTemplate.convertAndSend(RabbitQueueEnum.YWG_ORDER_GET.getExchange(), RabbitQueueEnum.YWG_ORDER_GET.getRoute(), str);
+ }
}
diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml
index dd74bb6..4ae63c4 100644
--- a/src/main/resources/mapper/modules/MallMemberMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberMapper.xml
@@ -407,4 +407,13 @@
where a.open_id = #{openId} limit 1
</select>
+ <select id="findMallRollPerkInPage" resultType="cc.mrbird.febs.mall.entity.MallRollPerk">
+ select * from mall_roll_perk
+ where member_id = #{record.memberId}
+ and roll_id = #{record.rollId}
+ <if test="record.state != null and record.state != ''">
+ and state = #{record.state}
+ </if>
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1