From cd9f7a2adbeb3dcc6060f6a5ea3a9d54dced5c64 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 16 May 2022 15:10:59 +0800
Subject: [PATCH] fix regiter
---
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 150 +++++++++++++++++++++++++++++++++++--------------
1 files changed, 107 insertions(+), 43 deletions(-)
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 1625edf..cca6fa4 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
@@ -1,8 +1,6 @@
package cc.mrbird.febs.mall.service.impl;
-import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
-import cc.mrbird.febs.common.enumerates.OrderRefundStatusEnum;
-import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.common.enumerates.*;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.common.utils.LoginUserUtil;
@@ -13,10 +11,7 @@
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
-import cc.mrbird.febs.mall.service.IApiMallMemberService;
-import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
-import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
-import cc.mrbird.febs.mall.service.MallMemberService;
+import cc.mrbird.febs.mall.service.*;
import cc.mrbird.febs.mall.vo.OrderDetailVo;
import cc.mrbird.febs.mall.vo.OrderListVo;
import cc.mrbird.febs.mall.vo.OrderRefundVo;
@@ -59,6 +54,7 @@
private final MallOrderRefundOperationMapper mallOrderRefundOperationMapper;
private final MallShoppingCartMapper mallShoppingCartMapper;
private final IApiMallMemberService memberService;
+ private final IMallMoneyFlowService mallMoneyFlowService;
private final RedisUtils redisUtils;
private final AgentProducer agentProducer;
@@ -86,6 +82,7 @@
orderInfo.setLatitude(address.getLatitude());
orderInfo.setLongitude(address.getLongitude());
orderInfo.setRemark(addOrderDto.getRemark());
+ orderInfo.setOrderType(addOrderDto.getOrderType());
if (CollUtil.isEmpty(addOrderDto.getItems())) {
throw new FebsException("参数错误");
@@ -94,38 +91,69 @@
this.baseMapper.insert(orderInfo);
BigDecimal total = BigDecimal.ZERO;
for (AddOrderItemDto item : addOrderDto.getItems()) {
- MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
- if (sku == null) {
- throw new FebsException("购买商品或sku不存在");
- }
-
- if (sku.getStock() < item.getCnt()) {
- throw new FebsException("库存不足");
- }
-
MallOrderItem orderItem = new MallOrderItem();
- BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
- orderItem.setAmount(amount);
- orderItem.setCnt(item.getCnt());
- orderItem.setOrderId(orderInfo.getId());
- orderItem.setPrice(sku.getPresentPrice());
- orderItem.setGoodsId(sku.getGoodsId());
- orderItem.setGoodsName(sku.getGoodsName());
- orderItem.setSkuId(sku.getId());
- orderItem.setStyleName(sku.getStyleName());
- orderItem.setSkuName(sku.getSkuName());
- orderItem.setSkuImage(sku.getSkuImage());
- total = total.add(amount);
- mallOrderItemMapper.insert(orderItem);
+ // 积分商品提交订单
+ if (addOrderDto.getOrderType() == 2) {
+ MallGoods mallGoods = mallGoodsMapper.selectById(item.getSkuId());
+ if (mallGoods.getStock() < item.getCnt()) {
+ throw new FebsException(mallGoods.getGoodsName() + "库存不足");
+ }
- sku.setStock(sku.getStock() - item.getCnt());
- sku.setSkuVolume(sku.getSkuVolume() + item.getCnt());
- mallGoodsSkuMapper.updateById(sku);
+ if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
+ throw new FebsException(mallGoods.getGoodsName() + "已下架");
+ }
- if (addOrderDto.getType() == 1) {
- mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId());
+ BigDecimal amount = mallGoods.getScore().multiply(BigDecimal.valueOf(item.getCnt()));
+ orderItem.setAmount(amount);
+ orderItem.setCnt(item.getCnt());
+ orderItem.setOrderId(orderInfo.getId());
+ orderItem.setPrice(mallGoods.getScore());
+ orderItem.setGoodsId(mallGoods.getId());
+ orderItem.setGoodsName(mallGoods.getGoodsName());
+ orderItem.setStyleName(mallGoods.getGoodsName());
+ orderItem.setSkuName(mallGoods.getGoodsName());
+ orderItem.setSkuImage(mallGoods.getThumb());
+
+ total = total.add(amount);
+ } else {
+ MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
+ if (sku == null) {
+ throw new FebsException("购买商品或sku不存在");
+ }
+
+ if (sku.getStock() < item.getCnt()) {
+ throw new FebsException(sku.getSkuName() + "库存不足");
+ }
+
+ MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
+ if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
+ throw new FebsException(mallGoods.getGoodsName() + "已下架");
+ }
+
+ BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
+ orderItem.setAmount(amount);
+ orderItem.setCnt(item.getCnt());
+ orderItem.setOrderId(orderInfo.getId());
+ orderItem.setPrice(sku.getPresentPrice());
+ orderItem.setGoodsId(sku.getGoodsId());
+ orderItem.setGoodsName(sku.getGoodsName());
+ orderItem.setSkuId(sku.getId());
+ orderItem.setStyleName(sku.getStyleName());
+ orderItem.setSkuName(sku.getSkuName());
+ orderItem.setSkuImage(sku.getSkuImage());
+
+ total = total.add(amount);
+
+ sku.setStock(sku.getStock() - item.getCnt());
+ sku.setSkuVolume(sku.getSkuVolume() + item.getCnt());
+ mallGoodsSkuMapper.updateById(sku);
+
+ if (addOrderDto.getType() == 1) {
+ mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId());
+ }
}
+ mallOrderItemMapper.insert(orderItem);
}
orderInfo.setAmount(total);
@@ -134,6 +162,7 @@
agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L);
return orderInfo.getId();
}
+
@Override
@Transactional(rollbackFor = Exception.class)
@@ -184,7 +213,45 @@
orderInfo.setPayMethod("支付宝支付");
break;
case "3":
- payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd());
+ payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "balance");
+
+ orderInfo.setPayOrderNo(orderInfo.getOrderNo());
+ orderInfo.setPayMethod("余额支付");
+ orderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue());
+ orderInfo.setPayTime(new Date());
+ orderInfo.setPayResult("1");
+
+// MallMember mallMember = memberMapper.selectById(member.getId());
+// if (AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())) {
+// mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name());
+// memberMapper.updateById(mallMember);
+// }
+
+ // 静态倍数
+ List<MallOrderItem> orderItems = this.baseMapper.getMallOrderItemByOrderId(orderInfo.getId());
+ if (CollUtil.isNotEmpty(orderItems)) {
+ for (MallOrderItem orderItem : orderItems) {
+ MallGoods mallGoods = mallGoodsMapper.selectById(orderItem.getGoodsId());
+
+ if (mallGoods.getIsNormal() == 2) {
+ MallGoodsSku sku = mallGoodsSkuMapper.selectById(orderItem.getSkuId());
+ BigDecimal score = sku.getOriginalPrice().multiply(mallGoods.getStaticMulti());
+
+ memberWalletService.add(score, member.getId(), "score");
+ mallMoneyFlowService.addMoneyFlow(member.getId(), score, MoneyFlowTypeEnum.STATIC_BONUS.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.SCORE.getValue());
+ }
+ }
+ }
+
+ mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
+// agentProducer.sendAutoLevelUpMsg(member.getId());
+// agentProducer.sendReturnMoneyMsg(orderInfo.getId());
+ break;
+ case "4":
+ if (orderInfo.getOrderType() != 2) {
+ throw new FebsException("非积分订单,无法使用积分支付");
+ }
+ payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd(), "prizeScore");
orderInfo.setPayOrderNo(orderInfo.getOrderNo());
orderInfo.setPayMethod("积分支付");
@@ -192,30 +259,28 @@
orderInfo.setPayTime(new Date());
orderInfo.setPayResult("1");
- memberService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), null, null, null, null);
+
+ mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.PRIZE_SCORE.getValue());
+ break;
default:
}
this.baseMapper.updateById(orderInfo);
-
Map<String, Object> map = new HashMap<>();
map.put("orderInfo", payResultStr);
map.put("orderNo", orderInfo.getOrderNo());
map.put("orderId", orderInfo.getId());
-// agentProducer.sendAutoLevelUpMsg(member.getId());
-// agentProducer.sendReturnMoneyMsg(orderInfo.getId());
return map;
}
- private String balancePay(MallOrderInfo orderInfo, String tradePwd) {
+ private String balancePay(MallOrderInfo orderInfo, String tradePwd, String field) {
if (StrUtil.isBlank(tradePwd)) {
throw new FebsException("支付密码错误");
}
MallMember mallMember = memberMapper.selectById(orderInfo.getMemberId());
-
if (StrUtil.isBlank(mallMember.getTradePassword())) {
throw new FebsException("未设置支付密码");
}
@@ -224,8 +289,7 @@
throw new FebsException("支付密码错误");
}
- memberWalletService.reduceBalance(orderInfo.getAmount(), mallMember.getId());
-
+ memberWalletService.reduce(orderInfo.getAmount(), mallMember.getId(), field);
return orderInfo.getOrderNo();
}
--
Gitblit v1.9.1