zhentao 1 month ago
parent
commit
85c64c811e

+ 22 - 0
src/main/java/com/zhentao/controller/order/controller/OrderController.java

@@ -0,0 +1,22 @@
+package com.zhentao.controller.order.controller;
+
+import com.zhentao.controller.order.dto.OrderDto;
+import com.zhentao.dto.Result;
+import com.zhentao.service.UserOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("order_shop")
+public class OrderController {
+    @Autowired
+    private UserOrderService service;
+//    添加订单
+    @PostMapping("addorder")
+    public Result add(@RequestBody OrderDto orderDto){
+        return service.add(orderDto);
+    }
+}

+ 1 - 1
src/main/java/com/zhentao/domain/UserOrder.java

@@ -45,7 +45,7 @@ public class UserOrder implements Serializable {
     /**
      * 优惠券ID
      */
-    private String couponId;
+    private Long couponId;
 
     /**
      * 订单状态(1:待支付,2:已支付,3:已发货,4:已完成,5:已取消)

+ 50 - 11
src/main/java/com/zhentao/service/impl/UserOrderServiceImpl.java

@@ -9,12 +9,13 @@ import com.zhentao.domain.UserOrder;
 import com.zhentao.dto.Result;
 import com.zhentao.mapper.UserOrderMapper;
 import com.zhentao.service.CouponService;
+import com.zhentao.service.OrderShoppingService;
 import com.zhentao.service.UserOrderService;
-import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
 * @author 86183
@@ -25,9 +26,9 @@ import java.math.BigDecimal;
 public class UserOrderServiceImpl extends ServiceImpl<UserOrderMapper, UserOrder>
     implements UserOrderService{
     @Autowired
-    private UserOrderService service;
-    @Autowired
     private CouponService couponService;
+    @Autowired
+    private OrderShoppingService orderShoppingService;
     @Override
     public Result add(OrderDto orderDto) {
 //        创建一个对象
@@ -42,16 +43,54 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderMapper, UserOrder
             bigDecimal = bigDecimal.add(s.getPrice());
         }
         userOrder.setTotalAmount(bigDecimal);
-//        设置优惠金额
-        Coupon byId = couponService.getById(orderDto.getCouponId());
-        if (byId.getCouponType()==1){
-
-        }else if (byId.getCouponType()==2){
+//        判断不能为空
+        if (orderDto.getCouponId()!=null){
+            //        设置优惠金额
+            Coupon byId = couponService.getById(orderDto.getCouponId());
+            if (byId.getCouponType()==1){
+                if (isGreaterThan(bigDecimal,byId.getMinAmount())){
+//                优惠价格
+                    userOrder.setDiscountAmount(byId.getMinAmount());
+//                实际支付金额
+                    userOrder.setActualAmount(bigDecimal.subtract(byId.getMinAmount()));
+                }else {
+                    return Result.ERR("金额没有超过规定的金额",null);
+                }
+            }else if (byId.getCouponType()==2){
+//           优惠价格
+                userOrder.setDiscountAmount(bigDecimal.subtract(bigDecimal.divide(byId.getDiscountRate())));
+//            实际价格
+                userOrder.setActualAmount(bigDecimal.divide(byId.getDiscountRate()));
+            }else if (byId.getCouponType()==3){
+//                优惠价格
+                userOrder.setDiscountAmount(byId.getDiscountAmount());
+//                实际支付金额
+                userOrder.setActualAmount(bigDecimal.subtract(byId.getDiscountAmount()));
+            }
+//        设置优惠ID
+            userOrder.setCouponId(orderDto.getCouponId());
+        }else {
+            userOrder.setActualAmount(bigDecimal);
+        }
+        userOrder.setOrderStatus(1);
+        userOrder.setPaymentStatus(1);
+        userOrder.setCreateTime(new Date());
+        boolean save = this.save(userOrder);
+        if (save){
+            for (OrderShopping o:orderDto.getList()) {
+                long l1 = IdUtil.getSnowflake(1, 1).nextId();
+                o.setId(l1);
+                o.setOrderId(l);
+                o.setCreateTime(new Date());
+                orderShoppingService.save(o);
+            }
+        }
+        return Result.ERR("添加成功",save);
+    }
 
-        }else if (byId.getCouponType()==3){
 
-        }
-        return null;
+    public static boolean isGreaterThan(BigDecimal num1, BigDecimal num2) {
+        return num1.compareTo(num2) > 0;
     }
 }