yangdamao 2 лет назад
Родитель
Сommit
a1869405be

+ 5 - 6
zhongzheng-admin-store/src/main/java/com/zhongzheng/controller/store/OrderController.java

@@ -7,6 +7,7 @@ import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.framework.web.service.StoreTokenService;
 import com.zhongzheng.framework.web.service.TopTokenService;
 import com.zhongzheng.framework.web.service.WxTokenService;
+import com.zhongzheng.modules.order.bo.IntegralOrderAddBo;
 import com.zhongzheng.modules.order.bo.OrderAddBo;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.user.entity.ClientLoginUser;
@@ -34,17 +35,15 @@ public class OrderController extends BaseController {
 
     private final StoreTokenService tokenService;
 
-
-
     /**
      * 新增订单
      */
-    @ApiOperation("新增PC网站订单")
-    @PostMapping("/placePcOrder")
-    public AjaxResult addPc(@RequestBody OrderAddBo bo) {
+    @ApiOperation("新增核销订单")
+    @PostMapping("/integral")
+    public AjaxResult addIntegralOrder(@RequestBody IntegralOrderAddBo bo) {
         StoreLoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
         bo.setUserId(loginUser.getUser().getUserId());
-        return AjaxResult.success(orderService.placePcOrder(bo));
+        return AjaxResult.success(orderService.addIntegralOrder(bo));
     }
 
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/domain/Order.java

@@ -40,6 +40,8 @@ private static final long serialVersionUID=1L;
     public static final Integer FROM_SMALL =2;  //祥粤云学堂小程序
     public static final Integer FROM_PC =3;  //祥粤云学堂网站
     public static final Integer FROM_INPUT =5;  //业务员录单
+    public static final Integer FROM_HX_PC =7;  //祥粤云学堂网站
+    public static final Integer FROM_HX_SMALL =8;  //祥粤云学堂网站
 
     public static final Integer PAY_WECHAT =1;  //微信支付
 

+ 4 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java

@@ -2,10 +2,7 @@ package com.zhongzheng.modules.order.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
-import com.zhongzheng.modules.order.bo.OrderAddBo;
-import com.zhongzheng.modules.order.bo.OrderEditBo;
-import com.zhongzheng.modules.order.bo.OrderQueryBo;
-import com.zhongzheng.modules.order.bo.OrderUserCheckBuyBo;
+import com.zhongzheng.modules.order.bo.*;
 import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.vo.OrderGoodsVo;
 import com.zhongzheng.modules.order.vo.OrderListVo;
@@ -113,4 +110,7 @@ public interface IOrderService extends IService<Order> {
 	boolean arrangeGrade(String goodsName, Long goodsId, Long orderGoodsId, Long gradeId, Long userId, String orderSn, Long businessId);
 
 	Map<String, String> getActivityGoods(OrderAddBo bo);
+
+	Map<String, String> addIntegralOrder(IntegralOrderAddBo bo);
+
 }

+ 101 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -2255,6 +2255,107 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return payResult;
     }
 
+    @Override
+    public Map<String, String> addIntegralOrder(IntegralOrderAddBo bo) {
+        String key = "ORDER-" + "-" + bo.getUserId();
+        Long value = redisCache.getCacheObject(key);
+        if (Validator.isNotEmpty(value)) {
+            throw new CustomException("请勿频繁提交订单");
+        }
+        redisCache.setCacheObject(key, 1L, 5, TimeUnit.SECONDS);//5秒
+        List<OrderGoodsAddBo> goodsList = bo.getGoodsList();
+        if (goodsList == null || goodsList.size() < 1) {
+            throw new CustomException("商品列表为空");
+        }
+        Order add = BeanUtil.toBean(bo, Order.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        add.setOrderType(3);//核销订单
+        //生成订单号
+        String out_trade_no = "HX"+DateUtils.getDateOrderSn();
+        BigDecimal totalPrice = new BigDecimal(0);
+        BigDecimal payPrice = new BigDecimal(0);
+        String body = "中正核销系统-";
+        List<OrderGoods> freeList = new ArrayList<>();
+        //生成订单
+        for (OrderGoodsAddBo g : goodsList) {
+            //订单商品
+            Goods goods = iGoodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId, g.getGoodsId()));
+            if (goods.getGoodsStatus() != 1) {
+                throw new CustomException(goods.getGoodsName() + "商品已下架,请重新选择商品下单");
+            }
+            body = "中正核销系统-" + goods.getGoodsName();
+            OrderGoods orderGoods = BeanUtil.toBean(g, OrderGoods.class);
+            orderGoods.setOrderSn(out_trade_no);
+            if (g.getGoodsInputData() != null) {
+                orderGoods.setGoodsInputData(JSON.toJSONString(g.getGoodsInputData()));
+            }
+            //成交价
+            orderGoods.setStatus(1);
+            orderGoods.setGoodsRealPrice(goods.getSpecialPrice());//优惠价格
+            orderGoods.setGoodsPrice(goods.getStandPrice());
+            orderGoods.setCreateTime(DateUtils.getNowTime());
+            orderGoods.setUpdateTime(DateUtils.getNowTime());
+            //订单价格不计算优惠
+            totalPrice = totalPrice.add(goods.getStandPrice());
+            //暂不计算优惠券
+            payPrice = payPrice.add(goods.getSpecialPrice());
+            iOrderGoodsService.save(orderGoods);
+
+            if (goods.getGoodsType() == 7) {
+                //积分商品
+            }
+
+            //商品0元加入免费商品列表
+            if (orderGoods.getGoodsPrice().compareTo(BigDecimal.ZERO) == 0) {
+                freeList.add(orderGoods);
+            }
+        }
+
+        add.setOrderSn(out_trade_no);
+        add.setOrderFrom(Order.FROM_HX_PC);
+        add.setPayPrice(payPrice);
+        add.setPayType(bo.getPayType());
+        add.setOrderPrice(totalPrice);
+        //生成支付单号
+        String pay_no = DateUtils.getPayOrderSn();
+        //订单0元
+        if (payPrice.compareTo(BigDecimal.ZERO) == 0) {
+            //完全收费
+            add.setOrderStatus(Order.ORDER_STATUS_PAY);
+            add.setPayStatus(Order.PAY_FREE);
+            add.setStatus(1);
+        } else {
+            OrderPayAddBo payAddBo = new OrderPayAddBo();
+            payAddBo.setPaySn(pay_no);
+            payAddBo.setOrderSn(out_trade_no);
+            payAddBo.setStatus(0);
+            payAddBo.setPayPrice(payPrice);
+            iOrderPayService.insertByAddBo(payAddBo);
+        }
+
+        this.save(add);
+
+        //处理免费商品
+        for (OrderGoods orderGoods : freeList) {
+            dealFreeGoods(orderGoods, add);
+        }
+
+        Map<String, Object> result = new HashMap<>();
+        result.put("oderId", add.getOrderId());
+        result.put("orderSn", out_trade_no);
+        UserVo userVo = iUserService.queryById(add.getUserId());
+        Map<String, String> payResult = new HashMap<>();
+        //大于0元,获取微信支付信息
+        if (payPrice.compareTo(BigDecimal.ZERO) != 0) {
+            payResult = iWxPayService.paymentPc(pay_no, userVo.getOpenId(), body, payPrice);
+        }
+
+        payResult.put("orderSn", out_trade_no);
+        return payResult;
+    }
+
     private String createGradeCode(Long goodsId, CourseBusinessVo business) {
 
         Goods goods = iGoodsService.getById(goodsId);