Forráskód Böngészése

提交充值订单

chao 4 éve
szülő
commit
b1cf06774e

+ 34 - 5
src/main/java/com/caimei365/order/controller/SubmitApi.java

@@ -1,8 +1,10 @@
 package com.caimei365.order.controller;
 
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.RechargeDto;
 import com.caimei365.order.model.dto.SubmitDto;
 import com.caimei365.order.service.SubmitService;
+import com.caimei365.order.utils.MathUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
@@ -76,16 +78,16 @@ public class SubmitApi {
      * @return {code: -1=(用户账户异常,数据异常,操作异常等),1提交成功(支付完成),2提交成功(未支付),
      *              code为1和2时:data{orderNo:订单号,orderID:订单ID,payTotalFee:订单金额,orderMark:订单标识}
      */
-    @ApiOperation("提交订单(旧:/order/submit)")
+    @ApiOperation("提交订单(旧:/order/submit)(/seller/order/submit)")
     @PostMapping("/generate")
     public ResponseJson<Map<String, Object>> generateOrder(SubmitDto submitDto){
         if(null == submitDto.getOrderSource()){
             return ResponseJson.error("订单来源不能为空!", null);
         }
-//        // 1,www来源    2,crm来源    6,小程序来源
-//        if (1 != submitDto.getOrderSource() || 2 != submitDto.getOrderSource() || 6 != submitDto.getOrderSource()) {
-//            return ResponseJson.error("订单来源异常!", null);
-//        }
+        // 1,www来源    2,crm来源    6,小程序来源
+        if (1 != submitDto.getOrderSource() || 2 != submitDto.getOrderSource() || 6 != submitDto.getOrderSource()) {
+            return ResponseJson.error("订单来源异常!", null);
+        }
         if(null == submitDto.getCartType()){
             return ResponseJson.error("购买类型不能为空!", null);
         }
@@ -110,5 +112,32 @@ public class SubmitApi {
         return submitService.generateOrder(submitDto);
     }
 
+    /**
+     * 生成充值商品订单
+     * @param rechargeDto {
+     *                    serviceProviderId 协销id
+     *                    clubId            机构id
+     *                    name              商品名称
+     *                    price             价格
+     *                    note              备注
+     *                    }
+     */
+    @ApiOperation("提交充值商品订单(旧:/order/submit/rechargeOrder)")
+    @PostMapping("/recharge")
+    public ResponseJson<Map<String, Object>> generateRechargeOrder(RechargeDto rechargeDto){
+        if (null == rechargeDto.getServiceProviderId()) {
+            return ResponseJson.error("协销Id不能为空!", null);
+        }
+        if (null == rechargeDto.getClubId()) {
+            return ResponseJson.error("机构Id不能为空!", null);
+        }
+        if (StringUtils.isEmpty(rechargeDto.getName())) {
+            return ResponseJson.error("商品名称不能为空!", null);
+        }
+        if (MathUtil.compare(rechargeDto.getPrice(), 0) < 1) {
+            return ResponseJson.error("商品价格不正确!", null);
+        }
+        return submitService.generateRechargeOrder(rechargeDto);
+    }
 
 }

+ 43 - 0
src/main/java/com/caimei365/order/model/dto/RechargeDto.java

@@ -0,0 +1,43 @@
+package com.caimei365.order.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/7/28
+ */
+@Data
+public class RechargeDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 协销Id
+     */
+    @ApiModelProperty("协销Id")
+    private Integer serviceProviderId;
+    /**
+     * 机构ID
+     */
+    @ApiModelProperty("机构Id")
+    private Integer clubId;
+    /**
+     * 商品名称
+     */
+    @ApiModelProperty("商品名称")
+    private String name;
+    /**
+     * 价格
+     */
+    @ApiModelProperty("价格")
+    private Double price;
+    /**
+     * 备注
+     */
+    @ApiModelProperty("备注")
+    private String note;
+
+}

+ 13 - 0
src/main/java/com/caimei365/order/service/SubmitService.java

@@ -1,6 +1,7 @@
 package com.caimei365.order.service;
 
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.RechargeDto;
 import com.caimei365.order.model.dto.SubmitDto;
 
 import java.util.Map;
@@ -16,4 +17,16 @@ public interface SubmitService {
      * 生成订单
      */
     ResponseJson<Map<String, Object>> generateOrder(SubmitDto submitDto);
+
+    /**
+     * 生成充值商品订单
+     * @param rechargeDto {
+     *                    serviceProviderId 协销id
+     *                    clubId            机构id
+     *                    name              商品名称
+     *                    price             价格
+     *                    note              备注
+     *                    }
+     */
+    ResponseJson<Map<String, Object>> generateRechargeOrder(RechargeDto rechargeDto);
 }

+ 190 - 1
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -8,6 +8,7 @@ import com.caimei365.order.mapper.CartClubMapper;
 import com.caimei365.order.mapper.CartSellerMapper;
 import com.caimei365.order.mapper.SubmitMapper;
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.RechargeDto;
 import com.caimei365.order.model.po.*;
 import com.caimei365.order.model.dto.SubmitDto;
 import com.caimei365.order.model.bo.OrderParamBo;
@@ -269,7 +270,6 @@ public class SubmitServiceImpl implements SubmitService {
         return saveOrder(orderParamBo);
     }
 
-
     @Transactional
     private ResponseJson<Map<String, Object>> saveOrder(OrderParamBo orderParamBo) {
         log.info("******************** 提交订单逻辑处理 start *******************");
@@ -1237,4 +1237,193 @@ public class SubmitServiceImpl implements SubmitService {
         }
     }
 
+    /**
+     * 生成充值商品订单
+     *
+     * @param rechargeDto {
+     *                    serviceProviderId 协销id
+     *                    clubId            机构Id
+     *                    name              商品名称
+     *                    price             价格
+     *                    note              备注
+     *                    }
+     */
+    @Transactional
+    @Override
+    public ResponseJson<Map<String, Object>> generateRechargeOrder(RechargeDto rechargeDto) {
+        // 获取机构用户Id
+        Integer clubUserId = baseMapper.getUserIdByClubId(rechargeDto.getClubId());
+        if (null == clubUserId || clubUserId == 0){
+            return ResponseJson.error("机构用户信息异常!", null);
+        }
+        // 获取协销用户Id
+        Integer spUserId = submitMapper.getServiceProviderUserId(rechargeDto.getServiceProviderId());
+        if (null == spUserId || spUserId == 0){
+            return ResponseJson.error("协销用户异常!", null);
+        }
+        log.info("******************** 提交充值订单逻辑处理 start *******************");
+        /*
+         * 初始化主订单
+         */
+        OrderPo mainOrder = new OrderPo();
+        // 订单来源
+        mainOrder.setOrderSource(6);
+        // 订单号
+        String orderNo = CodeUtil.generateOrderNo(6);
+        mainOrder.setOrderNo(orderNo);
+        // 用户Id
+        mainOrder.setClubId(rechargeDto.getClubId());
+        mainOrder.setUserId(clubUserId);
+        mainOrder.setBuyUserId(spUserId);
+        // 订单提交时间
+        Date date = new Date();
+        String curDateStr = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
+        mainOrder.setOrderTime(curDateStr);
+        mainOrder.setUpdateDate(curDateStr);
+        // 订单状态 0 有效  其它无效
+        mainOrder.setDelFlag(0);
+        mainOrder.setOrderType(0);
+        mainOrder.setOrderSubmitType(3);
+        mainOrder.setConfirmFlag(0);
+        mainOrder.setPayFlag(0);
+        mainOrder.setOnlinePayFlag(0);
+        // 订单提交时间
+        mainOrder.setOrderTime(curDateStr);
+        // 订单不可以拆分
+        mainOrder.setSplitFlag(0);
+        // 发票类型
+        mainOrder.setInvoiceFlag(0);
+        mainOrder.setReceiptStatus(1);
+        mainOrder.setPayStatus(1);
+        mainOrder.setZeroCostFlag(0);
+        mainOrder.setSendOutStatus(1);
+        mainOrder.setRefundType(0);
+        // 是否包含活动商品(受订单未支付自动关闭时间影响)  0 否 1 是
+        mainOrder.setHasActProduct(0);
+        // 是否确认付款供应商
+        mainOrder.setAffirmPaymentFlag(0);
+        // 设置是否是二手订单
+        mainOrder.setSecondHandOrderFlag(0);
+        mainOrder.setPromotionFullReduction(0d);
+        // 商品总数量
+        mainOrder.setProductCount(1);
+        // 赠品数量
+        mainOrder.setPresentCount(0);
+        //促销赠品数量
+        mainOrder.setPromotionalGiftsCount(0);
+        // 0包邮 -1到付 1 有运费
+        mainOrder.setPostageFlag(0);
+        mainOrder.setPostage(0d);
+        // 商品总额
+        mainOrder.setProductTotalFee(rechargeDto.getPrice());
+        mainOrder.setOrderTotalFee(rechargeDto.getPrice());
+        mainOrder.setPayTotalFee(rechargeDto.getPrice());
+        // 订单状态
+        mainOrder.setStatus(0);
+        // 余额支付金额
+        mainOrder.setBalancePayFee(0d);
+        // 实际支付金额(商品金额+运费-余额抵扣)
+        mainOrder.setPayableAmount(rechargeDto.getPrice());
+        // 售后条款
+        mainOrder.setClauseId(1);
+        mainOrder.setClauseName("无条款");
+        // 是否返佣订单
+        mainOrder.setRebateFlag(0);
+        /*
+         * 保存主订单数据,返回订单Id
+         */
+        submitMapper.insertMainOrder(mainOrder);
+        log.info("【提交充值订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增主订单(insert[cm_order])orderId:" + mainOrder.getOrderId());
+        // 获取数据库商品信息
+        OrderProductPo rechargeProduct = submitMapper.getProductDetails(6060);
+        // 供应商名称
+        String shopName = submitMapper.getShopNameById(rechargeProduct.getShopId());
+        /*
+         * 初始化子订单
+         */
+        OrderShopPo rechargeShopOrder = new OrderShopPo();
+        // 子订单编号
+        rechargeShopOrder.setShopOrderNo(mainOrder.getOrderNo() + "01");
+        rechargeShopOrder.setOrderNo(mainOrder.getOrderNo());
+        rechargeShopOrder.setOrderId(mainOrder.getOrderId());
+        rechargeShopOrder.setShopId(rechargeProduct.getShopId());
+        rechargeShopOrder.setShopName(shopName);
+        // 用户Id
+        rechargeShopOrder.setClubId(mainOrder.getClubId());
+        rechargeShopOrder.setUserId(mainOrder.getUserId());
+        // 协销订单
+        rechargeShopOrder.setSpId(rechargeDto.getServiceProviderId());
+        rechargeShopOrder.setOrderSubmitType(mainOrder.getOrderSubmitType());
+        rechargeShopOrder.setItemCount(1);
+        rechargeShopOrder.setProductAmount(rechargeDto.getPrice());
+        rechargeShopOrder.setTotalAmount(rechargeDto.getPrice());
+        rechargeShopOrder.setNeedPayAmount(rechargeDto.getPrice());
+        rechargeShopOrder.setOrderTime(mainOrder.getOrderTime());
+        rechargeShopOrder.setCanRefundAmount(0d);
+        rechargeShopOrder.setSplitFlag(0);
+        /*
+         * 保存子订单
+         */
+        submitMapper.insertShopOrder(rechargeShopOrder);
+        log.info("【提交充值订单】>>>>>>>>>>>>>>>>>>>>>>>>>>新增子订单(insert[cm_shop_order])shopOrderId:" + rechargeShopOrder.getShopOrderId() + ",orderId:" + mainOrder.getOrderId());
+        /*
+         * 更新主订单的子订单Id信息,如:1000,1002
+         */
+        if (null != rechargeShopOrder.getShopOrderId()) {
+            mainOrder.setShopOrderIds(rechargeShopOrder.getShopOrderId().toString());
+            submitMapper.updateShopOrderIds(rechargeShopOrder.getShopOrderId().toString(), mainOrder.getOrderId());
+        } else {
+            // 设置手动回滚事务
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return ResponseJson.error("生成子订单异常!", null);
+        }
+        /*
+         * 订单商品
+         */
+        rechargeProduct.setOrderNo(mainOrder.getOrderNo());
+        rechargeProduct.setOrderId(mainOrder.getOrderId());
+        rechargeProduct.setShopOrderId(rechargeShopOrder.getShopOrderId());
+        rechargeProduct.setShopOrderNo(rechargeShopOrder.getShopOrderNo());
+        rechargeProduct.setNum(1);
+        rechargeProduct.setPresentNum(0);
+        rechargeProduct.setPrice(rechargeDto.getPrice());
+        rechargeProduct.setNormalPrice(rechargeDto.getPrice());
+        rechargeProduct.setTotalAmount(rechargeDto.getPrice());
+        rechargeProduct.setTotalFee(rechargeDto.getPrice());
+        rechargeProduct.setShouldPayFee(rechargeDto.getPrice());
+        rechargeProduct.setDiscount(100d);
+        rechargeProduct.setDiscountPrice(rechargeDto.getPrice());
+        rechargeProduct.setTaxRate(100d);
+        rechargeProduct.setAddedValueTax(0d);
+        rechargeProduct.setTotalAddedValueTax(0d);
+        rechargeProduct.setShopFee(0d);
+        rechargeProduct.setOtherFee(0d);
+        rechargeProduct.setCmFee(rechargeDto.getPrice());
+        rechargeProduct.setSingleShopFee(0d);
+        rechargeProduct.setSingleOtherFee(0d);
+        rechargeProduct.setSingleCmFee(rechargeDto.getPrice());
+        rechargeProduct.setNotOutStore(0);
+        rechargeProduct.setBuyAgainFlag(0);
+        /*
+         * 保存 订单商品
+         */
+        submitMapper.insertOrderProduct(rechargeProduct);
+        log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>保存订单商品(insert[cm_order_product])OrderProductId:" + rechargeProduct.getOrderProductId() + ",orderId:" + mainOrder.getOrderId());
+
+        log.info("******************** 提交充值订单逻辑处理 end *******************");
+
+        /*
+         * 构造返回参数
+         */
+        Map<String, Object> info = new HashMap<>();
+        info.put("orderID", String.valueOf(mainOrder.getOrderId()));
+        info.put("orderNo", String.valueOf(mainOrder.getOrderNo()));
+        info.put("orderMark", "#" + mainOrder.getOrderId() + "#");
+        //应付订单金额
+        info.put("payTotalFee", String.valueOf(mainOrder.getPayTotalFee()));
+        //真实需要付款金额
+        info.put("payableAmount", String.valueOf(mainOrder.getPayableAmount()));
+        return ResponseJson.success(info);
+    }
+
 }