Browse Source

供应商给机构下单

huangzhiguo 1 year ago
parent
commit
c81e014598

+ 18 - 2
src/main/java/com/caimei365/order/controller/ShipApi.java

@@ -47,6 +47,7 @@ public class ShipApi {
             @ApiImplicitParam(required = false, name = "shopOrderNo", value = "订单编号"),
             @ApiImplicitParam(required = false, name = "receiver", value = "买家名称(收货人)"),
             @ApiImplicitParam(required = false, name = "refundStatus", value = "退款状态"),
+            @ApiImplicitParam(required = false, name = "orderType", value = "订单类型"),
             @ApiImplicitParam(required = false, name = "receiptStatus", value = "收款状态"),
             @ApiImplicitParam(required = false, name = "organizeId", value = "订单来源"),
             @ApiImplicitParam(required = false, name = "orderStatus", value = "订单类型"),
@@ -55,13 +56,13 @@ public class ShipApi {
     })
     @GetMapping("/list")
     public ResponseJson<PageInfo<ShopOrderVo>> getShopOrderList(Integer shopId, Integer sendOutStatus, Integer payStatus, String shopOrderNo,
-                                                                String receiver, Integer refundStatus, Integer receiptStatus, Integer organizeId, Integer orderStatus,
+                                                                String receiver, Integer refundStatus, Integer orderType, Integer receiptStatus, Integer organizeId, Integer orderStatus,
                                                                 @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                 @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
         if (null == shopId) {
             return ResponseJson.error("供应商Id不能为空!", null);
         }
-        return shipService.getShopOrderList(shopId, sendOutStatus, payStatus, shopOrderNo, receiver, refundStatus, receiptStatus, organizeId, orderStatus, pageNum, pageSize);
+        return shipService.getShopOrderList(shopId, sendOutStatus, payStatus, shopOrderNo, receiver, refundStatus, orderType, receiptStatus, organizeId, orderStatus, pageNum, pageSize);
     }
 
     /**
@@ -484,4 +485,19 @@ public class ShipApi {
         }
         return shipService.settlementShop(shopId, cityId, productInfo);
     }
+
+    /**
+     * 供应商取消待确认订单 -- 联合丽格
+     * @param shopOrderId
+     * @return
+     */
+    @ApiOperation("供应商取消待确认订单 -- 联合丽格")
+    @ApiImplicitParam(required = true, name = "shopOrderId", value = "子订单Id")
+    @GetMapping("/cancelOrder")
+    public ResponseJson cancelOrder(Integer shopOrderId) {
+        if (null == shopOrderId) {
+            return ResponseJson.error(-1, "子订单Id不能为空!", null);
+        }
+        return shipService.cancelOrder(shopOrderId);
+    }
 }

+ 8 - 1
src/main/java/com/caimei365/order/mapper/ShipMapper.java

@@ -21,7 +21,7 @@ public interface ShipMapper {
     /**
      * 机构订单列表
      */
-    List<ShopOrderVo> getShopOrderList(Integer shopId, Integer sendOutStatus, Integer payStatus, String shopOrderNo, String receiver, Integer refundStatus, Integer receiptStatus, Integer organizeId, Integer orderStatus);
+    List<ShopOrderVo> getShopOrderList(Integer shopId, Integer sendOutStatus, Integer payStatus, String shopOrderNo, String receiver, Integer refundStatus, Integer orderType, Integer receiptStatus, Integer organizeId, Integer orderStatus);
     /**
      * 供应商结算列表
      */
@@ -327,4 +327,11 @@ public interface ShipMapper {
      * @return
      */
     CmOrganizeSkuPo getOrganizeSkuInfo(@Param("skuId") Integer skuId, @Param("organizeId") Integer organizeId);
+
+    /**
+     * 供应商取消未确认订单
+     * @param shopOrderId
+     * @param note
+     */
+    void deleteShopOrder(@Param("shopOrderId") Integer shopOrderId, @Param("note") String note);
 }

+ 4 - 0
src/main/java/com/caimei365/order/model/po/OrderProductPo.java

@@ -58,6 +58,10 @@ public class OrderProductPo implements Serializable {
      * 成本价选中标志:1固定成本 2比例成
      */
     private Integer costCheckFlag;
+    /**
+     * 商品成本价(不含税)
+     */
+    private Double costPriceTax;
     /**
      * 成本价
      */

+ 8 - 1
src/main/java/com/caimei365/order/service/ShipService.java

@@ -30,7 +30,7 @@ public interface ShipService {
      * @param pageNum        页码
      * @param pageSize       每页数量
      */
-    ResponseJson<PageInfo<ShopOrderVo>> getShopOrderList(Integer shopId, Integer sendOutStatus, Integer payStatus, String shopOrderNo, String receiver, Integer refundStatus, Integer receiptStatus, Integer organizeId, Integer orderStatus, int pageNum, int pageSize);
+    ResponseJson<PageInfo<ShopOrderVo>> getShopOrderList(Integer shopId, Integer sendOutStatus, Integer payStatus, String shopOrderNo, String receiver, Integer refundStatus, Integer orderType, Integer receiptStatus, Integer organizeId, Integer orderStatus, int pageNum, int pageSize);
     /**
      * 供应商结算列表
      * @param shopId         供应商Id
@@ -216,4 +216,11 @@ public interface ShipService {
      * @return
      */
     ResponseJson<Map<String, Object>> settlementShop(Integer shopId, Integer cityId, String productInfo);
+
+    /**
+     * 供应商取消待确认订单
+     * @param shopOrderId
+     * @return
+     */
+    ResponseJson cancelOrder(Integer shopOrderId);
 }

+ 45 - 3
src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java

@@ -97,10 +97,10 @@ public class ShipServiceImpl implements ShipService {
      * @param pageSize      每页数量
      */
     @Override
-    public ResponseJson<PageInfo<ShopOrderVo>> getShopOrderList(Integer shopId, Integer sendOutStatus, Integer payStatus, String shopOrderNo, String receiver, Integer refundStatus, Integer receiptStatus, Integer organizeId, Integer orderStatus, int pageNum, int pageSize) {
+    public ResponseJson<PageInfo<ShopOrderVo>> getShopOrderList(Integer shopId, Integer sendOutStatus, Integer payStatus, String shopOrderNo, String receiver, Integer refundStatus, Integer orderType, Integer receiptStatus, Integer organizeId, Integer orderStatus, int pageNum, int pageSize) {
         // 分页请求数据
         PageHelper.startPage(pageNum, pageSize);
-        List<ShopOrderVo> shopOrderList = shipMapper.getShopOrderList(shopId, sendOutStatus, payStatus, shopOrderNo, receiver, refundStatus, receiptStatus, organizeId, orderStatus);
+        List<ShopOrderVo> shopOrderList = shipMapper.getShopOrderList(shopId, sendOutStatus, payStatus, shopOrderNo, receiver, refundStatus, orderType, receiptStatus, organizeId, orderStatus);
         shopOrderList.forEach(shopOrder -> {
             if (null != shopOrder) {
                 setShopOrderInfo(shopOrder);
@@ -1439,9 +1439,21 @@ public class ShipServiceImpl implements ShipService {
             for (Object o : productArr) {
                 JSONObject product = (JSONObject) o;
                 String productId = product.getString("productId");
+                if (StringUtils.isBlank(productId)) {
+                    return ResponseJson.error(-1, "请选择商品", null);
+                }
                 Integer productCount = product.getInteger("count");
+                if (null == productCount) {
+                    return ResponseJson.error(-1, "请输入商品购买数量", null);
+                }
                 Integer skuId = product.getInteger("skuId");
+                if (null == skuId) {
+                    return ResponseJson.error(-1, "请选择规格", null);
+                }
                 Double price = product.getDouble("price");
+                if (null == price) {
+                    return ResponseJson.error(-1, "请输入价格", null);
+                }
                 productInfos.put(skuId.toString(), productCount);
                 productPriceInfos.put(skuId.toString(), price);
                 productIdList.add(productId);
@@ -1449,7 +1461,7 @@ public class ShipServiceImpl implements ShipService {
             }
         } catch (Exception e) {
             log.error("商品信息格式错误", e);
-            return ResponseJson.error("商品信息格式错误!Json字符串格式[{\"id\":4351,\"count\":1,\"price\":100.00},{}]", null);
+            return ResponseJson.error("商品信息格式错误!Json字符串格式[{\"id\":4351,\"count\":1,\"skuId:4568,\"price\":100.00},{}]", null);
         }
 
         // 商品的分帐号分组的供应商列表
@@ -1650,4 +1662,34 @@ public class ShipServiceImpl implements ShipService {
         }
         return ResponseJson.success(resultData);
     }
+
+    /**
+     * 供应商取消待确认订单
+     *
+     * @param shopOrderId
+     * @return
+     */
+    @Override
+    public ResponseJson cancelOrder(Integer shopOrderId) {
+        ShopOrderVo shopOrder = orderClubMapper.getShopOrderById(shopOrderId);
+        if (null == shopOrder || 0 != shopOrder.getStatus()) {
+            // 非已关闭订单
+            return ResponseJson.error("订单异常!", null);
+        }
+        // 逻辑删除子订单
+        String note = StringUtils.isNotBlank(shopOrder.getNote()) ? shopOrder.getNote() + ", 供应商取消未确认订单" : "供应商取消未确认订单";
+        shipMapper.deleteShopOrder(shopOrderId, note);
+        log.info("【删除订单】>>>>>>>>>逻辑删除子订单(update[cm_shop_order])shopOrderId:" + shopOrderId);
+        // 逻辑删除主订单
+        List<Integer> shopOrderStatus = orderClubMapper.getShopOrderStatus(shopOrder.getOrderId());
+        boolean flag = false;
+        if (shopOrderStatus.stream().allMatch(s -> s == 4)) {
+            flag = true;
+        }
+        if (flag) {
+            orderClubMapper.deleteMainOrder(shopOrder.getOrderId(), "供应商取消未确认订单");
+            log.info("【删除订单】>>>>>>>>>逻辑删除主订单(update[cm_order])orderId:" + shopOrder.getOrderId());
+        }
+        return ResponseJson.success("订单取消成功", null);
+        }
 }

+ 9 - 12
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -2539,6 +2539,7 @@ public class SubmitServiceImpl implements SubmitService {
      * @param submitDto
      * @return
      */
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public ResponseJson<Map<String, Object>> shopGenerateOrder(SubmitDto submitDto) {
         log.info("submitDto===" + submitDto);
@@ -2897,10 +2898,12 @@ public class SubmitServiceImpl implements SubmitService {
                 // 是否以超级会员优惠价格购买
                 boolean svipPriceFlag = null != svipProductPo && 1 == svipProductPo.getSvipProductFlag() && orderParamBo.getSvipUserFlag();
 
-                // 不是赠品,获取商品购买价格(超级会员优惠商品价格>>>活动价格>>>阶梯价格>>>复购价格库>>>商品原始价)
+                // 不是赠品,获取商品购买价格 版本在结算中已计算税费
                 Double productPrice = price;
                 Double itemPrice = price;
                 Double discountPrice = price;
+                // 计算税费
+                Double taxPrice = product.getPrice();
                 // 商品税费
                 Double productTax = 0d;
                 Double discountTax = 0d;
@@ -2914,25 +2917,19 @@ public class SubmitServiceImpl implements SubmitService {
                     product.setTaxRate(0d);
                 }
                 if (taxFlag) {
-                    productTax = MathUtil.div(MathUtil.mul(productPrice, product.getTaxRate()), 100, 2).doubleValue();
-                    discountTax = MathUtil.div(MathUtil.mul(discountPrice, product.getTaxRate()), 100, 2).doubleValue();
+                    productTax = MathUtil.div(MathUtil.mul(taxPrice, product.getTaxRate()), 100, 2).doubleValue();
+                    discountTax = MathUtil.div(MathUtil.mul(taxPrice, product.getTaxRate()), 100, 2).doubleValue();
                 } else if (!Integer.valueOf(1).equals(product.getIncludedTax())) {
                     // 不含税不可开票商品和未知商品,税率置为0
                     product.setTaxRate(0d);
                 }
                 log.info("productTax===" + productTax);
                 // 商品价格
-                if (Integer.valueOf(0).equals(product.getIncludedTax())) {
-                    if (null != product.getTaxRate() && product.getTaxRate() > 0d) {
-                        product.setPrice(MathUtil.add(productPrice, MathUtil.mul(productPrice, MathUtil.div(product.getTaxRate(), 100, 2))).doubleValue());
-                    }
-                } else {
-                    product.setPrice(productPrice);
-                }
+                product.setPrice(productPrice);
                 // 商品税后价格
-                Double productTaxPrice = MathUtil.add(productPrice, productTax).doubleValue();
+                Double productTaxPrice = productPrice;
                 // 折后税后单价
-                Double discountTaxPrice = MathUtil.add(discountPrice, discountTax).doubleValue();
+                Double discountTaxPrice = discountPrice;
                 // 折扣率 = 折后单价/机构价
                 Double discountRate = MathUtil.mul(MathUtil.div(discountTaxPrice, productTaxPrice), 100).doubleValue();
                 // 单个商品的金额

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

@@ -164,6 +164,9 @@
             <if test="refundStatus != null">
                 and a.refundStatus = #{refundStatus}
             </if>
+            <if test="orderType != null">
+                and a.orderType = #{orderType}
+            </if>
             <if test="receiptStatus != null">
                 and a.receiptStatus = #{receiptStatus}
             </if>
@@ -668,4 +671,11 @@
           AND cs.organizeId = #{organizeId}
           AND copi.organizeId = #{organizeId}
     </select>
+
+    <update id="deleteShopOrder">
+        UPDATE cm_shop_order
+        SET delFlag=1,
+            note = #{note}
+        WHERE shopOrderID = #{shopOrderId}
+    </update>
 </mapper>

+ 2 - 0
src/main/resources/mapper/SubmitMapper.xml

@@ -501,6 +501,8 @@
         set price                   = #{price},
             discountPrice           = #{price},
             costPrice               = #{costPrice},
+            organizeCostPrice       = #{organizeCostPrice},
+            cmCostPrice             = #{cmCostPrice},
             totalAmount             = #{totalAmount},
             totalFee                = #{totalFee},
             shouldPayFee            = #{shouldPayFee},