Browse Source

Merge remote-tracking branch 'origin/developer' into developerA

zhijiezhao 2 years ago
parent
commit
6cf1effb46

+ 3 - 2
src/main/java/com/caimei365/order/components/ProductService.java

@@ -282,6 +282,7 @@ public class ProductService {
                     purchase.setCurrentPrice(orderProduct.getPrice());
                     purchase.setTaxRate(orderProduct.getTaxRate());
                     purchase.setUpdateTime(curDateStr);
+                    purchase.setOrderId(orderProduct.getOrderId());
                     // 更新复购价格库
                     baseMapper.updatePurchasePrice(purchase);
                     historyFlag = true;
@@ -307,7 +308,7 @@ public class ProductService {
                     // 新增复购价格库
                     baseMapper.insertPurchasePrice(purchase);
                     historyFlag = true;
-                    log.info(note + ">>>>>>>>>>>新增复购价格库(insert[repeat_purchase_price])ProductId:" + orderProduct.getProductId() + ",orderId:" + order.getOrderId());
+                    log.info(note + ">>>>>>>>>>>新增复购价格库(insert[repeat_purchase_price])skuId:" + orderProduct.getSkuId() + ",orderId:" + order.getOrderId());
                 }
             }
             if (historyFlag) {
@@ -323,7 +324,7 @@ public class ProductService {
                 purchaseHistory.setSkuId(orderProduct.getSkuId());
                 purchaseHistory.setDelFlag(0);
                 baseMapper.insertPurchaseHistory(purchaseHistory);
-                log.info(note + ">>>>>>>>>>>新增历史复购价记录(insert[repeat_purchase_price_history])ProductId:" + orderProduct.getProductId() + ",orderId:" + order.getOrderId());
+                log.info(note + ">>>>>>>>>>>新增历史复购价记录(insert[repeat_purchase_price_history])skuId:" + orderProduct.getSkuId() + ",orderId:" + order.getOrderId());
             }
         }
     }

+ 1 - 1
src/main/java/com/caimei365/order/controller/OrderClubApi.java

@@ -152,7 +152,7 @@ public class OrderClubApi {
         if (null == orderDto.getOrderId()) {
             return ResponseJson.error("订单Id不能为空!", null);
         }
-        return orderClubService.cancelMainOrder(orderDto.getOrderId(), orderDto.getRemark());
+        return orderClubService.cancelMainOrder(orderDto.getOrderId(), orderDto.getUserIdentity(), orderDto.getRemark());
     }
 
     /**

+ 12 - 0
src/main/java/com/caimei365/order/controller/OrderSubmitApi.java

@@ -81,6 +81,18 @@ public class OrderSubmitApi {
      *
      *              }
      */
+    @PostMapping("/verify")
+    public ResponseJson<Map<String,Object>> verify(SubmitDto submitDto) {
+        if (null == submitDto.getClubId()){
+            return ResponseJson.error("机构Id不能为空!", null);
+        }
+        if (StringUtils.isEmpty(submitDto.getOrderInfo())){
+            return ResponseJson.error("订单商品数据不能为空!", null);
+        }
+        return submitService.verify(submitDto);
+    }
+
+
     @ApiOperation("提交订单(旧:/order/submit)(/seller/order/submit)")
     @PostMapping("/generate")
     public ResponseJson<Map<String, Object>> generateOrder(SubmitDto submitDto){

+ 14 - 0
src/main/java/com/caimei365/order/mapper/BaseMapper.java

@@ -33,6 +33,20 @@ public interface BaseMapper {
      * @param skuId skuId
      */
     Integer getShopIdByproductId(Integer skuId);
+
+    /**
+     * 获取机构一级分类
+     * @param clubId
+     * @return
+     */
+    String firstClubTypeById(Integer clubId);
+
+    /**
+     * 商品对应械字号类型
+     * @param skuIds
+     * @return
+     */
+    List<String> machineTypeByID(List<String> skuIds);
     /**
      * 获取机构用户Id
      * @param clubId 机构Id

+ 18 - 15
src/main/java/com/caimei365/order/mapper/OrderClubMapper.java

@@ -245,43 +245,46 @@ public interface OrderClubMapper {
 
     Integer getUserId(Integer orderId);
 
-    void AddUnionId(String unionId,Integer orderId);
+    void AddUnionId(String unionId, Integer orderId);
 
     String FromUnionId(Integer orderId);
 
     String UserUnionId(Integer userID);
 
     List<Integer> getProductOrder(Integer orderId);
-    /*
-     *根据orderId查询商品名称
+
+    /**
+     * 根据orderId查询商品名称
      */
     List<String> getOrderIds(Integer orderId);
-    /*
-     *根据orderId查询订单金额
+
+    /**
+     * 根据orderId查询订单金额
      */
     Double getpayTotalFee(Integer orderId);
 
-    /*
-     *根据orderId查询支付时间
+    /**
+     * 根据orderId查询支付时间
      */
     String getpayTime(Integer orderId);
 
-    /*
-     *根据orderId查询收款状态
+    /**
+     * 根据orderId查询收款状态
      */
     Integer getReceiptStatus(Integer orderId);
 
-    /*
-     *根据orderId查询二手订单标识
+    /**
+     * 根据orderId查询二手订单标识
      */
     Integer getsecondHandOrderFlag(Integer orderId);
 
-    /*
-     *根据orderId查询返佣订单标识
+    /**
+     * 根据orderId查询返佣订单标识
      */
     Integer getrebateFlag(Integer orderId);
-    /*
-     *根据orderId查询商品编号
+
+    /**
+     * 根据orderId查询商品编号
      */
     String getOrderNo(Integer orderId);
 

+ 4 - 0
src/main/java/com/caimei365/order/model/bo/OrderParamBo.java

@@ -121,6 +121,10 @@ public class OrderParamBo implements Serializable {
      * 超级会员用户标记
      */
     private Boolean svipUserFlag;
+    /**
+     * 订单提交状态 0初始提交 1 继续提交 2 购买资质继续提交
+     */
+    private Integer orderMiniType;
 
     /*
     临时数据方便调用unionID

+ 5 - 0
src/main/java/com/caimei365/order/model/dto/OrderDto.java

@@ -24,6 +24,11 @@ public class OrderDto implements Serializable {
      */
     @ApiModelProperty("用户Id")
     private Integer userId;
+    /**
+     * 用户身份 1协销 其他用户
+     */
+    @ApiModelProperty("用户身份 1协销 其他用户")
+    private Integer userIdentity;
     /**
      * 备注(订单取消原因)
      */

+ 7 - 0
src/main/java/com/caimei365/order/model/dto/SubmitDto.java

@@ -104,6 +104,12 @@ public class SubmitDto implements Serializable {
     @ApiModelProperty("发票信息")
     private String orderInvoice;
 
+    /**
+     * 订单提交状态 0初始提交 1 继续提交
+     */
+    @ApiModelProperty("订单提交状态")
+    private Integer orderMiniType;
+
     @Override
     public String toString() {
         return "SubmitDto{" +
@@ -118,6 +124,7 @@ public class SubmitDto implements Serializable {
                 ", orderInfo='" + orderInfo + '\'' +
                 ", payInfo='" + payInfo + '\'' +
                 ", orderInvoice='" + orderInvoice + '\'' +
+                ", orderMiniType=" + orderMiniType +
                 '}';
     }
 }

+ 3 - 2
src/main/java/com/caimei365/order/service/OrderClubService.java

@@ -22,7 +22,7 @@ public interface OrderClubService {
     ResponseJson<Map<String, Object>> getOrderCount(Integer userId);
     /**
      * 机构订单列表
-     * 
+     *
      * @param userId     用户Id
      * @param orderState 1:待确认,2:待付款,3:待发货,4:已发货,5:退货款
      * @param orderNo    订单编号
@@ -59,9 +59,10 @@ public interface OrderClubService {
     /**
      * 机构取消订单
      * @param orderId  订单Id
+     * @param userIdentity    用户身份 1协销 其他用户
      * @param remark    备注(订单取消原因)
      */
-    ResponseJson<Void> cancelMainOrder(Integer orderId, String remark);
+    ResponseJson<Void> cancelMainOrder(Integer orderId,Integer userIdentity, String remark);
     /**
      * 机构删除订单
      * @param orderId  订单Id

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

@@ -13,6 +13,12 @@ import java.util.Map;
  * @date : 2021/7/6
  */
 public interface SubmitService {
+    /**
+     * 验证是否有购买资格
+     * @param submitDto
+     * @return
+     */
+    ResponseJson<Map<String,Object>> verify(SubmitDto submitDto);
     /**
      * 生成订单
      */

+ 5 - 0
src/main/java/com/caimei365/order/service/impl/CartClubServiceImpl.java

@@ -987,6 +987,11 @@ public class CartClubServiceImpl implements CartClubService {
                                 if (null == shopPromotion) {
                                     // 获取商品促销信息
                                     promotions = baseMapper.getPromotionByProductId(cartItemVo.getProductId());
+                                    // 手动获取skuId优惠价
+                                    if (promotions != null && (promotions.getTouchPrice() == null || promotions.getTouchPrice() == 0d)) {
+                                        Double touchPrice = baseMapper.getTouchPriceBySku(cartItemVo.getSkuId(),promotions.getId());
+                                        promotions.setTouchPrice(touchPrice);
+                                    }
                                     // 如果促销活动协销不可见,移除促销
                                     if (promotions != null && promotions.getSeen() != null && promotions.getSeen() == 2 && finalUserIdentity1 == 1) {
                                         promotions = null;

+ 5 - 0
src/main/java/com/caimei365/order/service/impl/CartSellerServiceImpl.java

@@ -516,6 +516,11 @@ public class CartSellerServiceImpl implements CartSellerService {
                             if (null == shopPromotion) {
                                 // 获取商品促销信息
                                 promotions = baseMapper.getPromotionByProductId(cartItemVo.getProductId());
+                                // 手动获取skuId优惠价
+                                if (promotions != null && (promotions.getTouchPrice() == null || promotions.getTouchPrice() == 0d)) {
+                                    Double touchPrice = baseMapper.getTouchPriceBySku(cartItemVo.getSkuId(),promotions.getId());
+                                    promotions.setTouchPrice(touchPrice);
+                                }
                                 // 促销活动如果协销不可见直接置空
                                 if (promotions != null && promotions.getSeen() != null && promotions.getSeen() == 2) {
                                     promotions = null;

+ 19 - 17
src/main/java/com/caimei365/order/service/impl/OrderClubServiceImpl.java

@@ -219,7 +219,7 @@ public class OrderClubServiceImpl implements OrderClubService {
                     order.setRechargeGoods(true);
                 }
                 //是否能退货
-                if(null!=orderProduct.getReturnGoodsStutas()&&2==orderProduct.getReturnGoodsStutas()){
+                if (null != orderProduct.getReturnGoodsStutas() && 2 == orderProduct.getReturnGoodsStutas()) {
                     String helpContent = orderCommonMapper.getHelpContent(1040);
                     orderProduct.setHelpContent(helpContent);
                 }
@@ -275,16 +275,16 @@ public class OrderClubServiceImpl implements OrderClubService {
         // 收货地址
         OrderUserinfoVo userInfo = addressMapper.getOrderUserinfo(orderId);
         //订单中存在不能退货的商品则给出不能退货提示
-        boolean flag=false;
-        String helpContent=null;
-        if(null!=shopOrderList&&shopOrderList.size()>0){
-            for (ShopOrderVo so:shopOrderList) {
+        boolean flag = false;
+        String helpContent = null;
+        if (null != shopOrderList && shopOrderList.size() > 0) {
+            for (ShopOrderVo so : shopOrderList) {
                 List<OrderProductVo> orderProductList = so.getOrderProductList();
-                if(null!=orderProductList&&orderProductList.size()>0){
-                    for (OrderProductVo op:orderProductList) {
-                        if(null!=op.getReturnGoodsStutas()&&op.getReturnGoodsStutas()==2){
-                            flag=true;
-                            helpContent=op.getHelpContent();
+                if (null != orderProductList && orderProductList.size() > 0) {
+                    for (OrderProductVo op : orderProductList) {
+                        if (null != op.getReturnGoodsStutas() && op.getReturnGoodsStutas() == 2) {
+                            flag = true;
+                            helpContent = op.getHelpContent();
                         }
                     }
                 }
@@ -299,10 +299,10 @@ public class OrderClubServiceImpl implements OrderClubService {
         map.put("discernReceiptList", discernReceiptList);
         map.put("returnedPurchaseList", returnedPurchaseList);
         map.put("clause", clause);
-        if(flag){
+        if (flag) {
             map.put("returnGoodsStutas", 2);
             map.put("helpContent", helpContent);
-        }else{
+        } else {
             map.put("returnGoodsStutas", 1);
             map.put("helpContent", null);
         }
@@ -449,12 +449,9 @@ public class OrderClubServiceImpl implements OrderClubService {
                 executorService.schedule(new Runnable() {
                     @Override
                     public void run() {
-//                String orderno = orderClubMapper.getOrderNo(orderId);
                         OrderVo orderVo = orderClubMapper.getOrderMess(orderId);
-
                         String bindMobile = baseMapper.getBindMobileByUserId(order.getBuyUserId());
                         log.info(">>>>>>>>>>>>>>>>>>>>>>" + orderId);
-
                         log.info(">>>>>>>>>>>>>>>>>>>>>>" + orderVo.getProCount());
                         String name = orderVo.getProName();
                         if (name.length() > 10) {
@@ -490,11 +487,12 @@ public class OrderClubServiceImpl implements OrderClubService {
      * 机构取消订单
      *
      * @param orderId 订单Id
+     * @param userIdentity  用户身份 1协销 其他用户
      * @param remark  备注(订单取消原因)
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public ResponseJson<Void> cancelMainOrder(Integer orderId, String remark) {
+    public ResponseJson<Void> cancelMainOrder(Integer orderId,Integer userIdentity, String remark) {
         OrderPo order = orderClubMapper.getMainOrderByOrderId(orderId);
         boolean cancelFlag = (null != order && (OrderStatus.UNCONFIRMED.getCode() == order.getStatus() || OrderStatus.UNRECEIVED_AND_UNSHIPPED.getCode() == order.getStatus()));
         if (!cancelFlag) {
@@ -523,7 +521,11 @@ public class OrderClubServiceImpl implements OrderClubService {
         }
         order.setStatus(6);
         if (StringUtils.isBlank(remark)) {
-            remark = "协销或用户主动取消订单";
+            if (userIdentity == 1) {
+                remark = "协销帮用户取消订单";
+            } else {
+                remark = "用户主动取消订单";
+            }
         }
         order.setCloseReason(remark);
         order.setCloseTime(curDateStr);

+ 87 - 6
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -71,6 +71,54 @@ public class SubmitServiceImpl implements SubmitService {
     private PayOrderMapper payOrderMapper;
 
 
+    /**
+     * 验证是否有购买资格
+     *
+     * @param submitDto
+     * @return
+     */
+    @Override
+    public ResponseJson<Map<String, Object>> verify(SubmitDto submitDto) {
+
+        /*Map<String, Object> map = new HashMap<>();
+        boolean bol = false;
+        // 机构一级分类
+        String firstClubType = baseMapper.firstClubTypeById(submitDto.getClubId());
+        if (!StringUtils.isNotBlank(firstClubType)) {
+            firstClubType = "0";
+        }
+        try {
+            ArrayList<Integer> list = new ArrayList<>();
+            JSONArray orderInfo = parseArray(submitDto.getOrderInfo());
+            *//*Object productInfo = orderInfo.get("productInfo");
+            JSONArray jsonArray = parseArray(productInfo.toString());*//*
+            for (Object infoObject : orderInfo) {
+                JSONObject productTemp = (JSONObject) infoObject;
+                JSONArray productArr = (JSONArray) productTemp.get("productInfo");
+                for (Object productObject : productArr) {
+                    JSONObject product = (JSONObject) productObject;
+                    list.add((Integer) product.get("skuId"));
+                }
+            }
+            // 获取订单商品械字号类型
+            List<String> machineType = baseMapper.machineTypeByID(list);
+            for (String str : machineType) {
+                if ("3".equals(str)) {
+                    bol = true;
+                }
+            }
+            if (!"1".equals(firstClubType) && bol) {
+                map.put("code", -1);
+            } else {
+                map.put("code", 1);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return  ResponseJson.error("商品验证失败",null);
+        }*/
+        return ResponseJson.success();
+    }
+
     /**
      * 生成订单
      *
@@ -298,6 +346,7 @@ public class SubmitServiceImpl implements SubmitService {
         orderParamBo.setAddressId(submitDto.getAddressId());
         orderParamBo.setClubCouponId(submitDto.getClubCouponId());
         orderParamBo.setOrderSeen(submitDto.getOrderSeen());
+        orderParamBo.setOrderMiniType(submitDto.getOrderMiniType());
         /*
          * 保存订单
          */
@@ -1310,12 +1359,15 @@ public class SubmitServiceImpl implements SubmitService {
              */
             if (orderProduct.getLadderPriceFlag() == 1) {
                 // 使用阶梯价格的订单商品保存下单时的阶梯价格列表
-                orderProduct.getLadderPrices().forEach(ladderPriceVo -> {
-                    ladderPriceVo.setOrderProductId(orderProduct.getOrderProductId());
-                    ladderPriceVo.setCreateDate(date);
-                    submitMapper.insertLadderPrices(ladderPriceVo);
-                    log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>保存订单阶梯价格(insert[order_product_ladder_price])id:" + ladderPriceVo.getId() + ",orderId:" + mainOrder.getOrderId());
-                });
+                List<LadderPriceVo> ladderPrices = orderProduct.getLadderPrices();
+                if (null != ladderPrices && ladderPrices.size() > 0) {
+                    ladderPrices.forEach(ladderPriceVo -> {
+                        ladderPriceVo.setOrderProductId(orderProduct.getOrderProductId());
+                        ladderPriceVo.setCreateDate(date);
+                        submitMapper.insertLadderPrices(ladderPriceVo);
+                        log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>保存订单阶梯价格(insert[order_product_ladder_price])id:" + ladderPriceVo.getId() + ",orderId:" + mainOrder.getOrderId());
+                    });
+                }
             }
             /*
              * 机构用户 写入价格库
@@ -1571,6 +1623,14 @@ public class SubmitServiceImpl implements SubmitService {
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                         return ResponseJson.error(-3, "您已有2个采购金额过小的订单,本次不能再进行采购。您可使用微信扫描以下二维码,进入采美旗下“呵呵商城”小程序购买小额商品");
                     }
+                    if (orderParamBo.getOrderMiniType() == 0) {
+                        if (mainOrderIds != null && mainOrderIds.size() <= 1) {
+                            // 设置手动回滚事务
+                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                            return ResponseJson.error(-5, "采购金额过小,将扣除500采美豆,建议您使用微信扫描以下二维码,进入采美旗下“呵呵商城”小程序购买小额商品。");
+                        }
+                    }
+                    log.info("订单提交状态:"+orderParamBo.getOrderMiniType());
                     UserBeansHistoryPo beansHistory = new UserBeansHistoryPo();
                     beansHistory.setUserId(mainOrder.getUserId());
                     beansHistory.setOrderId(mainOrder.getOrderId());
@@ -1584,6 +1644,27 @@ public class SubmitServiceImpl implements SubmitService {
                     productService.updateUserBeans(beansHistory, beans, "【价格低于1000,倒扣500采美豆】");
                 }
             }
+            if (orderParamBo.getOrderMiniType() != 2) {
+                boolean bol = false;
+                // 机构一级分类
+                String firstClubType = baseMapper.firstClubTypeById(orderParamBo.getClubId());
+                if (!StringUtils.isNotBlank(firstClubType)) {
+                    firstClubType = "0";
+                }
+                // 获取订单商品械字号类型
+                List<String> machineType = baseMapper.machineTypeByID(skuIdList);
+                for (String str : machineType) {
+                    if ("3".equals(str)) {
+                        bol = true;
+                    }
+                }
+                if (!"1".equals(firstClubType) && bol) {
+//                map.put("code", -1);
+                    // 设置手动回滚事务
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return ResponseJson.error(-6, "订单内存在械字号三类商品,需要拥有医疗执业许可证的医美机构才能购买。建议升级医美机构后再下单,否则会导致订单退款或影响发货。");
+                }
+            }
         } catch (ParseException e) {
             log.info("自主下单价格低于1000,倒扣500采美豆", e);
         }

+ 13 - 1
src/main/resources/mapper/BaseMapper.xml

@@ -47,9 +47,21 @@
         UPDATE repeat_purchase_price
         SET currentPrice = #{currentPrice},
             taxRate      = #{taxRate},
-            updateTime   = #{updateTime}
+            updateTime   = #{updateTime},
+            orderId      = #{orderId}
         WHERE id = #{id}
     </update>
+    <select id="firstClubTypeById" resultType="java.lang.String">
+        select firstClubType from club where clubID = #{clubId}
+    </select>
+    <select id="machineTypeByID" resultType="java.lang.String">
+        SELECT p.machineType FROM product p LEFT JOIN cm_sku cs ON p.productID = cs.productId
+        WHERE
+        cs.skuID in
+        <foreach collection="skuIds" open="(" separator="," close=")" item="skuId">
+            #{skuId}
+        </foreach>
+    </select>
     <select id="getUserIdByClubId" resultType="java.lang.Integer">
         select userID
         from user

+ 1 - 1
src/main/resources/mapper/CartSellerMapper.xml

@@ -148,7 +148,7 @@
         p.productCategory,
         p.validFlag AS validFlag,
         p.productType,
-        if(csp.id is not null and csp.status = 0,1,0) as svipProductFlag,
+        if(csp.id is not null and csp.status = 0,1,0) as svipProductFlag
 #         csp.priceType as svipPriceType,
 #         csp.discount as svipDiscount,
 #         csp.discountPrice as svipDiscountPrice

+ 2 - 1
src/main/resources/mapper/OrderClubMapper.xml

@@ -204,7 +204,8 @@
         WHERE orderID = #{orderId}
     </select>
     <select id="getOrderProductList" resultType="com.caimei365.order.model.po.OrderProductPo">
-        SELECT cop.orderID               AS orderId,
+        SELECT cop.skuId,
+               cop.orderID               AS orderId,
                cop.orderNo,
                cop.shopOrderID           AS shopOrderId,
                cop.shopOrderNo,

+ 4 - 2
src/main/resources/mapper/OrderCommonMapper.xml

@@ -226,7 +226,8 @@
         WHERE userId = #{userId}
     </select>
     <select id="getOrderProductByOrderId" resultType="com.caimei365.order.model.vo.OrderProductVo">
-        SELECT cop.orderProductID                                                 AS orderProductId,
+        SELECT cop.skuId,
+               cop.orderProductID                                                 AS orderProductId,
                cop.orderID                                                        AS orderId,
                cop.orderNo,
                cop.shopOrderID                                                    AS shopOrderId,
@@ -659,7 +660,8 @@
           AND shopOrderID = #{shopOrderId}
     </select>
     <select id="getOrderProductByShopOrderId" resultType="com.caimei365.order.model.vo.OrderProductVo">
-        SELECT cop.orderProductID                                                 AS orderProductId,
+        SELECT cop.skuId,
+               cop.orderProductID                                                 AS orderProductId,
                cop.orderID                                                        AS orderId,
                cop.orderNo,
                cop.shopOrderID                                                    AS shopOrderId,

+ 1 - 0
src/main/resources/mapper/ShipMapper.xml

@@ -251,6 +251,7 @@
     </select>
     <select id="getOrderProductById" resultType="com.caimei365.order.model.vo.OrderProductVo">
         SELECT
+            cop.skuId,
             cop.orderProductID AS orderProductId,
             cop.orderID AS orderId,
             cop.orderNo,