Browse Source

客户优惠券在下单接口,统一支付接口及订单状态查询接口的整合

lijun 2 years ago
parent
commit
d4ab693de0

+ 24 - 0
imcs-bt-be/imcs-authority-server/src/main/java/com/github/zuihou/api/AndroidApi.java

@@ -18,6 +18,8 @@ import com.github.zuihou.business.goods.entity.Goods;
 import com.github.zuihou.business.goods.service.GoodsService;
 import com.github.zuihou.business.member.entity.Member;
 import com.github.zuihou.business.member.service.MemberService;
+import com.github.zuihou.business.memberCoupon.entity.MemberCoupon;
+import com.github.zuihou.business.memberCoupon.service.MemberCouponService;
 import com.github.zuihou.business.miniApp.service.MiniAppService;
 import com.github.zuihou.business.order.entity.Order;
 import com.github.zuihou.business.order.service.OrderService;
@@ -107,6 +109,9 @@ public class AndroidApi
     @Resource
     private AdvertisementService advertisementService;
 
+    @Resource
+    private MemberCouponService memberCouponService;
+
     @ApiOperation("获取商品列表")
     @GetMapping({"/goodsList"})
     public R<List<EquGoodsDto>> goodsList(@RequestParam(name = "equId") Long equId)
@@ -144,6 +149,7 @@ public class AndroidApi
         long speId = param.get("speId");
         long equId = param.get("equId");
         Spe spe = speService.getById(speId);
+        Long orderMemberCouponId = param.get("orderMemberCouponId");
 
 //        生成本地订单
         Order preOrder = new Order();
@@ -152,6 +158,16 @@ public class AndroidApi
         preOrder.setOrderGoodsAmount(1);
         preOrder.setOrderAmount(spe.getSpecSPrice());
         preOrder.setOrderUnitPrice(spe.getSpecSPrice());
+        // 实付金额计算
+        BigDecimal payerTotal = preOrder.getOrderAmount();
+        if (orderMemberCouponId != null) {
+            MemberCoupon memberCoupon = memberCouponService.getMemberCoupon(orderMemberCouponId);
+            preOrder.setOrderMemberCouponId(orderMemberCouponId);
+            preOrder.setOrderPreferentialAmount(memberCoupon.getReceivePreferentialAmount());
+            // 如果存在客户优惠券,则实付金额  = 应付金额 - 客户优惠券的优惠金额
+            payerTotal = payerTotal.subtract(preOrder.getOrderPreferentialAmount());
+        }
+        preOrder.setPayerTotal(payerTotal);
         preOrder.setOrderGoodsId(spe.getGoodsId());
         preOrder.setOrderEquId(equId);
         orderService.save(preOrder);
@@ -247,6 +263,14 @@ public class AndroidApi
 
                 });
             }
+            // 支付成功后, 回写客户优惠券状态
+            if (localOrder.getOrderMemberCouponId() != null) {
+                MemberCoupon memberCoupon = new MemberCoupon();
+                memberCoupon.setId(localOrder.getOrderMemberCouponId());
+                // 设置客户优惠券使用状态为:已使用
+                memberCoupon.setStatus("1");
+                memberCouponService.updateById(memberCoupon);
+            }
             System.out.println("支付成功,配方是" + JSON.toJSONString(formulaList));
             resultMap.put("productConfig", formulaList);
             resultMap.put("order", localOrder);

+ 3 - 5
imcs-bt-be/imcs-authority-server/src/main/java/com/github/zuihou/api/MiniApp.java

@@ -193,9 +193,9 @@ public class MiniApp {
         Order localOrder = orderService.getById(orderId);
         localOrder.setOrderMemberId(member.getId());
 
-        BigDecimal orderAmount = localOrder.getOrderAmount();
+        BigDecimal payerTotal = localOrder.getPayerTotal();
 
-        int fenAmount = orderAmount.movePointRight(2).intValue();
+        int fenAmount = payerTotal.movePointRight(2).intValue();
 
 
         String speId = localOrder.getOrderSpecs() + "";
@@ -271,11 +271,9 @@ public class MiniApp {
         returnMap.put("goodsName", goodsName);
         returnMap.put("speName", speName);
         returnMap.put("goodsPic", goodsPic);
-        returnMap.put("orderAmount", orderAmount.toString());
+        returnMap.put("orderAmount", payerTotal.toString());
 
         localOrder.setOrderPrepayId(prepayId);
-        localOrder.setOrderUnitPrice(orderAmount);
-        localOrder.setOrderGoodsAmount(1);
         boolean b = orderService.updateById(localOrder);
 
 

+ 14 - 0
imcs-bt-be/imcs-business-biz/src/main/java/com/github/zuihou/business/memberCoupon/service/MemberCouponService.java

@@ -0,0 +1,14 @@
+package com.github.zuihou.business.memberCoupon.service;
+
+import com.github.zuihou.base.service.SuperService;
+import com.github.zuihou.business.memberCoupon.entity.MemberCoupon;
+
+public interface MemberCouponService extends SuperService<MemberCoupon> {
+    /**
+     *  获取客户优惠券
+     *
+     * @param memberCouponId 客户优惠券ID
+     * @return 客户优惠券
+     */
+    MemberCoupon getMemberCoupon(long memberCouponId);
+}

+ 21 - 0
imcs-bt-be/imcs-business-biz/src/main/java/com/github/zuihou/business/memberCoupon/service/impl/MemberCouponServiceImpl.java

@@ -0,0 +1,21 @@
+package com.github.zuihou.business.memberCoupon.service.impl;
+
+import com.github.zuihou.base.service.SuperServiceImpl;
+import com.github.zuihou.business.memberCoupon.dao.MemberCouponMapper;
+import com.github.zuihou.business.memberCoupon.entity.MemberCoupon;
+import com.github.zuihou.business.memberCoupon.service.MemberCouponService;
+import com.github.zuihou.database.mybatis.conditions.Wraps;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class MemberCouponServiceImpl extends SuperServiceImpl<MemberCouponMapper, MemberCoupon> implements MemberCouponService {
+    @Override
+    public MemberCoupon getMemberCoupon(long memberCouponId) {
+        MemberCoupon memberCoupon = new MemberCoupon();
+        memberCoupon.setId(memberCouponId);
+        memberCoupon.setStatus("0");
+        return this.getOne(Wraps.<MemberCoupon>q(memberCoupon));
+    }
+}

+ 16 - 2
imcs-bt-be/imcs-business-entity/src/main/java/com/github/zuihou/business/order/entity/Order.java

@@ -122,9 +122,9 @@ public class Order extends Entity<Long> {
     /**
      * 订单总额。精确到2位小数;单位:元。如:200.07,表示:200元7分
      */
-    @ApiModelProperty(value = "实付金额。精确到2位小数;单位:元。如:200.07,表示:200元7分")
+    @ApiModelProperty(value = "订单总额。精确到2位小数;单位:元。如:200.07,表示:200元7分")
     @TableField("order_amount")
-    @Excel(name = "实付金额。精确到2位小数;单位:元。如:200.07,表示:200元7分")
+    @Excel(name = "订单总额。精确到2位小数;单位:元。如:200.07,表示:200元7分")
     private BigDecimal orderAmount;
 
 
@@ -232,6 +232,20 @@ public class Order extends Entity<Long> {
     @TableField(exist = false)
     private String deviceName;
 
+    /**
+     * 会员优惠券ID
+     */
+    @ApiModelProperty(value = "会员优惠券ID")
+    @TableField("order_member_coupon_id")
+    private Long orderMemberCouponId;
+
+    /**
+     * 订单优惠金额
+     */
+    @ApiModelProperty(value = "订单优惠金额,单位:元,精度为小数点后2位")
+    @TableField("order_preferential_amount")
+    private BigDecimal orderPreferentialAmount;
+
     @Builder
     public Order(Long id,
                  Long orderMemberId, Long orderGoodsId, Long orderCompanyId, Long orderSpecs, BigDecimal orderAmount,