huangzhiguo пре 1 година
родитељ
комит
3fecf6b4d3

+ 5 - 9
src/main/java/com/caimei365/order/components/ProductService.java

@@ -213,7 +213,7 @@ public class ProductService {
             postageMap.put("postage", 0.00d);
             return postageMap;
         }
-        // 获取商品运费 (商品数据库 0包邮 2默认(遵循运费模板) 2到付 )
+        // 获取商品运费 (商品数据库 0包邮 1默认遵循运费模板 2到付 )
         List<ProductPostageVo> postageFlagList = null;
         if (0 == organizeId) {
             postageFlagList = baseMapper.getPostageFlagList(skuIdList);
@@ -305,7 +305,7 @@ public class ProductService {
     }
 
     /**
-     * 计算运费
+     * 计算运费 -- 供应商给机构下单
      *
      * @param cityId    地区市Id
      * @param num       购买数量
@@ -321,13 +321,9 @@ public class ProductService {
         int postageFlag = 0;
         // 运费
         AtomicDouble postage = new AtomicDouble(0);
-        // 获取商品运费 (商品数据库 0包邮 2默认(遵循运费模板) 2到付 )
-        List<ProductPostageVo> postageFlagList = null;
-        if (0 == organizeId) {
-            postageFlagList = baseMapper.getPostageFlagList(skuIdList);
-        } else {
-            postageFlagList = baseMapper.getPostageFlagOrganizeList(skuIdList);
-        }
+        // 获取商品运费 (商品数据库 0包邮 1 遵循运费模板 2到付 )
+        List<ProductPostageVo> postageFlagList = baseMapper.getPostageFlagOrganizeList(skuIdList);
+
         List<Integer> commodityTypeList = null;
         if (null != postageFlagList && postageFlagList.size() > 0) {
             commodityTypeList = postageFlagList.stream().map(ProductPostageVo::getCommodityType).collect(Collectors.toList());

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

@@ -366,6 +366,21 @@ public class OrderClubApi {
         return orderClubService.getShopBankAccount(shopId);
     }
 
+    /**
+     * 分享订单 生成分享吗 供应商给机构下单
+     * @param shopOrderId
+     * @return
+     */
+    @ApiOperation("分享订单 生成分享吗 供应商给机构下单")
+    @ApiImplicitParam(required = true, name = "shoporderId", value = "子订单Id")
+    @GetMapping("/getShopOrderShareCode")
+    public ResponseJson<Map<String, Object>> getShopOrderShareCode(Integer shopOrderId) {
+        if (null == shopOrderId) {
+            return ResponseJson.error(-1, "子订单Id不能为空", null);
+        }
+        return orderClubService.getShopOrderShareCode(shopOrderId);
+    }
+
     /**
      * 分享订单,校验分享码
      */
@@ -375,7 +390,7 @@ public class OrderClubApi {
             @ApiImplicitParam(required = true, name = "shareCode", value = "分享码")
     })
     @GetMapping("/shop/code/check")
-    public ResponseJson<Map<String, Object>> checkShopOrderCode(Integer shopOrderId, String shareCode) {
+    public ResponseJson<Integer> checkShopOrderCode(Integer shopOrderId, String shareCode) {
         if (null == shopOrderId) {
             return ResponseJson.error(-1, "订单Id不能为空!", null);
         }
@@ -385,6 +400,21 @@ public class OrderClubApi {
         return orderClubService.checkShopOrderCode(shopOrderId, shareCode);
     }
 
+    /**
+     * 分享订单校验成功、返回子订单数据
+     * @param shopOrderId
+     * @return
+     */
+    @ApiOperation("分享订单校验成功、返回子订单数据")
+    @ApiImplicitParam(required = true, name = "shopOrderId", value = "子订单Id")
+    @GetMapping("/getShopOrderById")
+    public ResponseJson<Map<String, Object>> getShopOrderById(Integer shopOrderId){
+        if (null == shopOrderId) {
+            return ResponseJson.error(-1, "子订单Id不能为空", null);
+        }
+        return orderClubService.getShopOrderById(shopOrderId);
+    }
+
     /**
      * 机构确认订单
      * @param shopOrderId
@@ -404,6 +434,6 @@ public class OrderClubApi {
         if (null == userId) {
             return ResponseJson.error(-1, "用户Id不能为空", null);
         }
-        return null;
+        return orderClubService.confirmShopOrder(shopOrderId, userId);
     }
 }

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

@@ -168,13 +168,10 @@ public class OrderSubmitApi {
      */
     @ApiOperation("供应商给机构下单")
     @PostMapping("/shopGenerateOrder")
-    public ResponseJson shopGenerateOrder(@RequestBody SubmitDto submitDto) {
+    public ResponseJson shopGenerateOrder( SubmitDto submitDto) {
         if (null == submitDto.getCartType()) {
             return ResponseJson.error("购买类型不能为空!", null);
         }
-        if (null == submitDto.getAddressId()) {
-            return ResponseJson.error("收货地址Id不能为空!", null);
-        }
         if (StringUtils.isEmpty(submitDto.getOrderInfo())) {
             return ResponseJson.error("订单商品数据不能为空!", null);
         }

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

@@ -465,23 +465,23 @@ public class ShipApi {
     /**
      * 供应商给机构下单 结算--联合丽格
      * @param shopId
-     * @param skuIds
+     * @param productInfo
      * @return
      */
     @ApiOperation("供应商给机构下单 结算--联合丽格")
     @ApiImplicitParams({
             @ApiImplicitParam(required = false, name = "shopId", value = "供应商Id"),
             @ApiImplicitParam(required = false, name = "cityId", value = "地址"),
-            @ApiImplicitParam(required = false, name = "skuIds", value = "skuIds,逗号隔开"),
+            @ApiImplicitParam(required = false, name = "productInfo", value = "商品信息 json"),
     })
     @GetMapping("/settlement")
-    public ResponseJson<Map<String, Object>> settlementShop(Integer shopId, Integer cityId, String skuIds){
+    public ResponseJson<Map<String, Object>> settlementShop(Integer shopId, Integer cityId, String productInfo){
         if (null == shopId) {
             return ResponseJson.error("供应商Id不能为空!", null);
         }
-        if (StringUtils.isEmpty(skuIds)) {
-            return ResponseJson.error("skuId集合不能为空!", null);
+        if (StringUtils.isEmpty(productInfo) || StringUtils.isBlank(productInfo)) {
+            return ResponseJson.error("商品信息不能为空!", null);
         }
-        return shipService.settlementShop(shopId, cityId, skuIds);
+        return shipService.settlementShop(shopId, cityId, productInfo);
     }
 }

+ 9 - 1
src/main/java/com/caimei365/order/mapper/OrderClubMapper.java

@@ -512,11 +512,19 @@ public interface OrderClubMapper {
     ShopOrderVo getShopOrderInfo(@Param("shopOrderId") Integer shopOrderId);
 
     /**
-     * 确认订单、关联用户
+     * 确认订单、关联子订单用户信息
      * @param shopOrderVo
      */
     void updateShopOrderById(ShopOrderVo shopOrderVo);
 
+    /**
+     * 确认订单、关联订单用户信息
+     * @param orderId
+     * @param userId
+     * @param clubId
+     */
+    void updateOrderInfoById(@Param("orderId") Integer orderId, @Param("userId") Integer userId, @Param("clubId") Integer clubId);
+
     /**
      * 填充订单收货地址用户信息
      */

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

@@ -319,5 +319,12 @@ public interface ShipMapper {
      * @param splitCode
      * @return
      */
-    List<CartItemVo> getProductsOrganize(@Param("shopId")  Integer shopId,@Param("organizeId") Integer organizeId, @Param("skuIds") List<String> skuIds,@Param("splitCode")String splitCode);
+    List<CartItemVo> getProductsOrganize(@Param("shopId")  Integer shopId,@Param("organizeId") Integer organizeId, @Param("skuIds") List<Integer> skuIds,@Param("splitCode")String splitCode);
+
+    /**
+     * 商城sku信息
+     * @param skuId
+     * @return
+     */
+    CmOrganizeSkuPo getOrganizeSkuInfo(@Param("skuId") Integer skuId, @Param("organizeId") Integer organizeId);
 }

+ 2 - 0
src/main/java/com/caimei365/order/mapper/SubmitMapper.java

@@ -185,4 +185,6 @@ public interface SubmitMapper {
     void updateUserMoneyByChange(Integer userId, double change);
 
     void updateShopOrderCoupon(OrderShopPo s);
+
+    AddressVo getAddressById(@Param("provinceId") Integer provinceId, @Param("cityId") Integer cityId, @Param("townId") Integer townId);
 }

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

@@ -97,6 +97,10 @@ public class OrderParamBo implements Serializable {
      * 当前订单订单商品
      */
     private JSONArray orderInfo;
+    /**
+     * 订单收货地址信息
+     */
+    private JSONObject addressInfo;
     /**
      * 购买类型:(1自主下单(购物车),2自主下单(立即购买),3协销下单)
      */

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

@@ -34,6 +34,18 @@ public class SubmitDto implements Serializable {
      */
     @ApiModelProperty("收货地址Id")
     private Integer addressId;
+    /**
+     * 收货地址信息:{
+     *         "receiver": ”测试“,    收货人
+     *         "mobile": ”15566548834“,    手机
+     *         "townId": ”55“,    区ID
+     *         "provinceId": ”北京“,    省份名称
+     *         "cityId": ”北京“,    城市名称
+     *         "address": ”北京“,    详细地址
+     *        }
+     */
+    @ApiModelProperty("收货地址信息")
+    private String addressInfo;
     /**
      * 订单来源:1WWW、2CRM、4客服[适用后台下单]、5外单[适用后台下单]、6小程序[采美,星范]、7呵呵商城小程序、8维沙小程序
      */
@@ -117,6 +129,7 @@ public class SubmitDto implements Serializable {
                 ", clubId=" + clubId +
                 ", unionId='" + unionId + '\'' +
                 ", addressId=" + addressId +
+                ", addressInfo='" + addressInfo + '\'' +
                 ", orderSource=" + orderSource +
                 ", cartType=" + cartType +
                 ", serviceProviderId=" + serviceProviderId +

+ 4 - 0
src/main/java/com/caimei365/order/model/vo/CartItemVo.java

@@ -36,6 +36,10 @@ public class CartItemVo implements Serializable {
      * 购买数量
      */
     private Integer number;
+    /**
+     * 小计金额
+     */
+    private Double totalPrice;
     /**
      * 购物商品效状态:0有效,1后台删除的,2冻结的,3下架,4售罄 >7库存不足,5价格仅会员可见,6未公开价格, 8价格仅医美机构可见
      */

+ 14 - 1
src/main/java/com/caimei365/order/service/OrderClubService.java

@@ -148,12 +148,25 @@ public interface OrderClubService {
      */
     ResponseJson<ShopPo> getShopBankAccount(Integer shopId);
 
+    /**
+     * 分享订单,获取分享码 供应商给机构下单
+     * @param shopOrderId
+     * @return
+     */
+    ResponseJson<Map<String, Object>> getShopOrderShareCode(Integer shopOrderId);
     /**
      * 分享订单,校验分享码
      * @param shopOrderId 订单Id
      * @param shareCode 分享码
      */
-    ResponseJson<Map<String, Object>> checkShopOrderCode(Integer shopOrderId, String shareCode);
+    ResponseJson<Integer> checkShopOrderCode(Integer shopOrderId, String shareCode);
+
+    /**
+     * 分享码校验成功、子订单数据
+     * @param shopOrderId
+     * @return
+     */
+    ResponseJson<Map<String, Object>> getShopOrderById(Integer shopOrderId);
 
     /**
      * 机构确认订单 -- 供应商给机构下单

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

@@ -211,8 +211,9 @@ public interface ShipService {
     /**
      * 供应商给机构下单 结算--联合丽格
      * @param shopId
-     * @param skuIds
+     * @param cityId
+     * @param productInfo
      * @return
      */
-    ResponseJson<Map<String, Object>> settlementShop(Integer shopId, Integer cityId, String skuIds);
+    ResponseJson<Map<String, Object>> settlementShop(Integer shopId, Integer cityId, String productInfo);
 }

+ 116 - 42
src/main/java/com/caimei365/order/service/impl/OrderClubServiceImpl.java

@@ -1162,6 +1162,61 @@ public class OrderClubServiceImpl implements OrderClubService {
         return ResponseJson.success(shop);
     }
 
+    /**
+     * 分享订单,获取分享码 供应商给机构下单
+     *
+     * @param shopOrderId 订单Id
+     */
+    @Override
+    public ResponseJson<Map<String, Object>> getShopOrderShareCode(Integer shopOrderId) {
+
+        Map<String, Object> map = new HashMap<>();
+
+        // 跳转链接
+        String link = domain + "/order-share-login.html?shopOrderId=" + shopOrderId;
+        map.put("link", link);
+        int shopOrderCount = orderClubMapper.countMainShopOrderByOrderId(shopOrderId);
+        if (0 == shopOrderCount) {
+            return ResponseJson.error("订单不存在!", null);
+        }
+        ShopOrderVo shopOrder = orderClubMapper.getShopOrderById(shopOrderId);
+        // 生成分享码
+        String shareCode = RandomStringUtils.random(4, false, true);
+        // 过期时间 有效时间72小时
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        calendar.add(Calendar.DATE, 3);
+        // 获取数据库已有分享码
+        OrderShareCodeVo orderCodeVo = orderClubMapper.getShopOrderCodeById(shopOrderId);
+        if (orderCodeVo != null && orderCodeVo.getExpiredTime().compareTo(new Date()) >= 0) {
+            // 旧分享码还未过期,直接返回
+            map.put("shareCode", orderCodeVo.getShareCode());
+            return ResponseJson.success(map);
+        } else if (orderCodeVo != null) {
+            // 如果旧分享码已经过期,删除分享码使用记录
+            orderClubMapper.deleteShopOrderShareCodeRecord(shopOrderId);
+            // 更新数据库的分享码
+            orderCodeVo.setShareCode(shareCode);
+            orderCodeVo.setExpiredTime(calendar.getTime());
+            orderCodeVo.setDelFlag(0);
+            orderClubMapper.updateOrderShareCode(orderCodeVo);
+        } else {
+            // 如果没有分享记录,新增数据库的分享码
+            OrderShareCodeVo newShareCodeVo = new OrderShareCodeVo();
+            newShareCodeVo.setOrderId(shopOrder.getOrderId());
+            newShareCodeVo.setShopOrderId(shopOrderId);
+            newShareCodeVo.setShareCode(shareCode);
+            newShareCodeVo.setExpiredTime(calendar.getTime());
+            newShareCodeVo.setAddTime(new Date());
+            newShareCodeVo.setDelFlag(0);
+            orderClubMapper.insertOrderShareCode(newShareCodeVo);
+        }
+
+        // 新生成的分享码
+        map.put("shareCode", shareCode);
+        return ResponseJson.success(map);
+    }
+
     /**
      * 分享订单,校验分享码
      *
@@ -1169,7 +1224,7 @@ public class OrderClubServiceImpl implements OrderClubService {
      * @param shareCode     分享码
      */
     @Override
-    public ResponseJson<Map<String, Object>> checkShopOrderCode(Integer shopOrderId, String shareCode) {
+    public ResponseJson<Integer> checkShopOrderCode(Integer shopOrderId, String shareCode) {
 
         int shopOrderCount = orderClubMapper.countMainShopOrderByOrderId(shopOrderId);
         if (0 == shopOrderCount) {
@@ -1183,47 +1238,7 @@ public class OrderClubServiceImpl implements OrderClubService {
         // 校验分享码
         if (orderCodeVo.getShareCode().equals(shareCode)) {
             if (orderCodeVo.getExpiredTime().compareTo(new Date()) > 0) {
-                // 返回
-                ShopOrderVo shopOrder = orderClubMapper.getShopOrderById(shopOrderId);
-                if (null == shopOrder) {
-                    return ResponseJson.error("该订单不存在!", null);
-                }
-                shopOrder.setOrderMark("#" + shopOrder.getShopOrderId() + "#");
-                // 设置订单状态
-                orderCommonService.setShopOrderStatus(shopOrder);
-                // 设置子订单信息
-                orderCommonService.setShopOrderInfo(shopOrder);
-                // 设置子订单付款金额
-                orderCommonService.getDiscernReceiptAndSetShoporder(shopOrder);
-                // 子订单列表
-                AtomicDouble expensesOfTaxation = new AtomicDouble(0d);
-                List<OrderProductVo> orderProductList = shopOrder.getOrderProductList();
-                orderProductList.forEach(orderProduct -> {
-
-                    // 总税费
-                    expensesOfTaxation.set(MathUtil.add(expensesOfTaxation.get(), orderProduct.getTotalAddedValueTax()).doubleValue());
-                    //判断商品价格是否含税
-                    boolean taxFlag = (Integer.valueOf(1).equals(orderProduct.getIncludedTax()) || (Integer.valueOf(0).equals(orderProduct.getIncludedTax()) && (Integer.valueOf(1).equals(orderProduct.getInvoiceType()) || Integer.valueOf(2).equals(orderProduct.getInvoiceType()))));
-                    if (taxFlag) {
-                        orderProduct.setIncludedTaxFlag(2);
-                    } else if (Integer.valueOf(0).equals(orderProduct.getIncludedTax()) && Integer.valueOf(3).equals(orderProduct.getInvoiceType())) {
-                        orderProduct.setIncludedTaxFlag(1);
-                    } else {
-                        orderProduct.setIncludedTaxFlag(3);
-                    }
-                });
-                // 收货地址
-                OrderUserinfoVo userInfo = addressMapper.getOrderUserinfo(shopOrder.getOrderId());
-                // 发票信息
-                InvoiceVo invoice = null;
-                if (null != shopOrder.getInvoiceFlag() && shopOrder.getInvoiceFlag() > 0) {
-                    invoice = orderCommonMapper.getOrderInvoice(shopOrder.getOrderId());
-                }
-                Map<String, Object> map = new HashMap<>();
-                map.put("shopOrder", shopOrder);
-                map.put("orderInvoice", invoice);
-                map.put("userInfo", userInfo);
-                return ResponseJson.success(map);
+                return ResponseJson.success(shopOrderId);
             } else {
                 // 分享码过期
                 return ResponseJson.error("分享码已过期,请联系分享人更新分享码!", null);
@@ -1233,6 +1248,56 @@ public class OrderClubServiceImpl implements OrderClubService {
         }
     }
 
+    /**
+     * 分享码校验成功、子订单数据
+     *
+     * @param shopOrderId
+     * @return
+     */
+    @Override
+    public ResponseJson<Map<String, Object>> getShopOrderById(Integer shopOrderId) {
+        ShopOrderVo shopOrder = orderClubMapper.getShopOrderById(shopOrderId);
+        if (null == shopOrder) {
+            return ResponseJson.error("该订单不存在!", null);
+        }
+
+        shopOrder.setOrderMark("#" + shopOrder.getShopOrderId() + "#");
+        // 设置订单状态
+        orderCommonService.setShopOrderStatus(shopOrder);
+        // 设置子订单信息
+        orderCommonService.setShopOrderInfo(shopOrder);
+        // 设置子订单付款金额
+        orderCommonService.getDiscernReceiptAndSetShoporder(shopOrder);
+        // 子订单列表
+        AtomicDouble expensesOfTaxation = new AtomicDouble(0d);
+        List<OrderProductVo> orderProductList = shopOrder.getOrderProductList();
+        orderProductList.forEach(orderProduct -> {
+            // 总税费
+            expensesOfTaxation.set(MathUtil.add(expensesOfTaxation.get(), orderProduct.getTotalAddedValueTax()).doubleValue());
+            //判断商品价格是否含税
+            boolean taxFlag = (Integer.valueOf(1).equals(orderProduct.getIncludedTax()) || (Integer.valueOf(0).equals(orderProduct.getIncludedTax()) && (Integer.valueOf(1).equals(orderProduct.getInvoiceType()) || Integer.valueOf(2).equals(orderProduct.getInvoiceType()))));
+            if (taxFlag) {
+                orderProduct.setIncludedTaxFlag(2);
+            } else if (Integer.valueOf(0).equals(orderProduct.getIncludedTax()) && Integer.valueOf(3).equals(orderProduct.getInvoiceType())) {
+                orderProduct.setIncludedTaxFlag(1);
+            } else {
+                orderProduct.setIncludedTaxFlag(3);
+            }
+        });
+        // 收货地址
+        OrderUserinfoVo userInfo = addressMapper.getOrderUserinfo(shopOrder.getOrderId());
+        // 发票信息
+        InvoiceVo invoice = null;
+        if (null != shopOrder.getInvoiceFlag() && shopOrder.getInvoiceFlag() > 0) {
+            invoice = orderCommonMapper.getOrderInvoice(shopOrder.getOrderId());
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("shopOrder", shopOrder);
+        map.put("orderInvoice", invoice);
+        map.put("userInfo", userInfo);
+        return ResponseJson.success(map);
+    }
+
     /**
      * 机构确认订单 -- 供应商给机构下单
      *
@@ -1253,6 +1318,9 @@ public class OrderClubServiceImpl implements OrderClubService {
         }
         // 子订单信息
         ShopOrderVo shopOrderInfo = orderClubMapper.getShopOrderInfo(shopOrderId);
+        if (0 != shopOrderInfo.getStatus()) {
+            return ResponseJson.error(-1, "该订单无需再确认!", null);
+        }
         // 将订单归属到改机构名下 进入系统正常流程
         shopOrderInfo.setUserId(userId);
         shopOrderInfo.setClubId(clubId);
@@ -1260,11 +1328,17 @@ public class OrderClubServiceImpl implements OrderClubService {
         shopOrderInfo.setStatus(1);
         // 修改子订单
         orderClubMapper.updateShopOrderById(shopOrderInfo);
+        // 修改订单信息
+        orderClubMapper.updateOrderInfoById(shopOrderInfo.getOrderId(), userId, clubId);
         // 修改订单地址用户信息
         // 收货地址
         OrderUserinfoVo userInfo = addressMapper.getOrderUserinfo(shopOrderInfo.getOrderId());
+
+        String userName = baseMapper.getUserNameByUserId(userId);
         userInfo.setUserId(userId);
         userInfo.setClubId(clubId);
+        userInfo.setName(userName);
+        userInfo.setOrderId(shopOrderInfo.getOrderId());
         orderClubMapper.updateOrderUserInfoById(userInfo);
 
         Map<String, Object> map = new HashMap<>();

+ 61 - 11
src/main/java/com/caimei365/order/service/impl/ShipServiceImpl.java

@@ -1356,14 +1356,15 @@ public class ShipServiceImpl implements ShipService {
      * 供应商给机构下单 结算--联合丽格
      *
      * @param shopId
-     * @param skuIds
+     * @param cityId
+     * @param productInfo
      * @return
      */
     @Override
-    public ResponseJson<Map<String, Object>> settlementShop(Integer shopId, Integer cityId, String skuIds) {
+    public ResponseJson<Map<String, Object>> settlementShop(Integer shopId, Integer cityId, String productInfo) {
         // 用户组织Id
         Integer organizeId = 4;
-        log.info("¥¥¥¥¥¥¥¥¥¥ > 商品结算");
+        log.info("¥¥¥¥¥¥¥¥¥¥ > 供应商给机构下单: 商品结算");
         // 商品种类
         AtomicInteger kindCount = new AtomicInteger(0);
         // 商品总数量
@@ -1388,23 +1389,43 @@ public class ShipServiceImpl implements ShipService {
         List<Integer> shopIds = new ArrayList<>();
         // 运费模板是否异常
         AtomicInteger templateFlag = new AtomicInteger(0);
-
+        // 商品购买数量信息map
+        Map<String, Integer> productInfos = new HashMap<>();
+        // 商品售价信息map
+        Map<String, Double> productPriceInfos = new HashMap<>();
         // 前端接收商品Id信息
-        List<String> skuIdList = new ArrayList<>();
-        if (skuIds.contains(",")) {
-            skuIdList = Stream.of(skuIds.split(",")).collect(Collectors.toList());
-        } else {
-            skuIdList.add(skuIds);
+        List<String> productIdList = new ArrayList<>();
+        //skuIdList
+        List<Integer> skuIdList = new ArrayList<>();
+        // 价格修改异常的商品集合
+        List<CartItemVo> abnormalProductList = new ArrayList<>();
+        // productInfo拆解
+        try {
+            JSONArray productArr = parseArray(productInfo);
+            for (Object o : productArr) {
+                JSONObject product = (JSONObject) o;
+                String productId = product.getString("productId");
+                Integer productCount = product.getInteger("count");
+                Integer skuId = product.getInteger("skuId");
+                Double price = product.getDouble("price");
+                productInfos.put(skuId.toString(), productCount);
+                productPriceInfos.put(skuId.toString(), price);
+                productIdList.add(productId);
+                skuIdList.add(skuId);
+            }
+        } catch (Exception e) {
+            log.error("商品信息格式错误", e);
+            return ResponseJson.error("商品信息格式错误!Json字符串格式[{\"id\":4351,\"count\":1,\"price\":100.00},{}]", null);
         }
 
-        // 购物车商品的分帐号分组的供应商列表
+        // 商品的分帐号分组的供应商列表
         // 1带分账号,2不带
         CartShopVo shop = shipMapper.getCartShopsByShopId(shopId);
         String helpContent = null;
         boolean flag = false;
         if (null != shop) {
             // 遍历供应商列表
-            List<String> finalIdList = skuIdList;//购物车商品skuId列表
+            List<Integer> finalIdList = skuIdList; // 选择商品skuId列表
             if (null != shop) {
                 // 该供应商下商品种类
                 AtomicInteger shopKindCount = new AtomicInteger(0);
@@ -1426,6 +1447,26 @@ public class ShipServiceImpl implements ShipService {
                 // 供应商下商品列表
                 // 过滤保存已上架商品
                 List<CartItemVo> productList = shipMapper.getProductsOrganize(shop.getShopId(), organizeId, finalIdList, shop.getSplitCode());
+                // 设置该商品购买数量
+                productList.forEach( p -> {
+                    CmOrganizeSkuPo organizeSkuInfo = shipMapper.getOrganizeSkuInfo(p.getSkuId(), organizeId);
+                    //前端传入修改后商品的价格
+                    double price = productPriceInfos.get(p.getSkuId().toString());
+                    // 该商品成本计算
+                    if (null != organizeSkuInfo) {
+                        // 商品为固定成本
+                        if ( StringUtils.isNotBlank(organizeSkuInfo.getCostCheckFlag()) && "1".equals(organizeSkuInfo.getCostCheckFlag())) {
+                            // 系统商城商品的成本之和
+                            double sysProductPrice = MathUtil.add(organizeSkuInfo.getCostPrice(), MathUtil.add(organizeSkuInfo.getCmCostPrice(), organizeSkuInfo.getOrganizeCostPrice())).doubleValue();
+                            // 系统商品成本之和小于修改的价格,修改价格异常,不允许下单
+                            if (MathUtil.compare(sysProductPrice, price) > 0) {
+                                abnormalProductList.add(p);
+                            }
+                        }
+                    }
+                    p.setPrice(price);
+                    p.setNumber(productInfos.get(p.getSkuId().toString()));
+                });
                 if (null != productList && productList.size() > 0) {
 
                     // 是否包含需要冷链运输商品
@@ -1452,6 +1493,13 @@ public class ShipServiceImpl implements ShipService {
                         }
                         // 设置商品图片及税费
                         boolean taxFlag = productService.setCartItemImgAndTax(cartItemVo);
+                        // 阶梯价
+                        if (cartItemVo.getLadderFlag() == 1) {
+                            // 设置阶梯价
+                            productService.setCartLadderPrices(cartItemVo, taxFlag);
+                        }
+                        // 设置商品小计金额
+                        cartItemVo.setTotalPrice(MathUtil.mul(cartItemVo.getNumber(), cartItemVo.getPrice()).doubleValue());
                         // 该供应商下价格累加
                         shopPrice.set(MathUtil.add(shopPrice, MathUtil.mul(cartItemVo.getNumber(), cartItemVo.getPrice())).doubleValue());
                         shopOriginalPrice.set(MathUtil.add(shopOriginalPrice.get(), MathUtil.mul(cartItemVo.getNumber(), cartItemVo.getOriginalPrice())).doubleValue());
@@ -1533,6 +1581,7 @@ public class ShipServiceImpl implements ShipService {
 
         // 包装返回数据
         Map<String, Object> resultData = new HashMap<>();
+        resultData.put("shop", shop);
         resultData.put("kindCount", kindCount);
         resultData.put("totalCount", totalCount);
         resultData.put("totalPrice", totalPrice);
@@ -1540,6 +1589,7 @@ public class ShipServiceImpl implements ShipService {
         resultData.put("templateFlag", templateFlag.get());
         resultData.put("svipReducedPrice", svipReducedPrice);
         resultData.put("totalOriginalPrice", totalOriginalPrice);
+        resultData.put("abnormalProductList", abnormalProductList);
         // 联合丽格冷链费
         double coldChain = 0.00d;
         if (null != totalProductList) {

+ 71 - 64
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -408,10 +408,6 @@ public class SubmitServiceImpl implements SubmitService {
             // 2买家确认
             mainOrder.setConfirmFlag(2);
         }
-        if (1 == organizeId) {
-            // 联合丽格订单
-            mainOrder.setOrderType(3);
-        }
         // 抵扣采美豆数量
         mainOrder.setUserBeans(orderParamBo.getOffsetBeans());
         // 默认可以线上支付:0可以 1不可以
@@ -2191,6 +2187,10 @@ public class SubmitServiceImpl implements SubmitService {
         AtomicReference<Double> shouldPayShopAmount = new AtomicReference<>(0d);
         // 订单商品列表
         List<OrderProductPo> orderProductList = new ArrayList<>();
+        // 能否修改
+        AtomicBoolean isOrder = new AtomicBoolean(false);
+        // 价格修改异常的商品集合
+        List<OrderProductVo> abnormalProductList = new ArrayList<>();
 
         for (OrderProductVo orderProduct : orderProducts) {
             Integer skuId = orderProduct.getSkuId();
@@ -2218,6 +2218,21 @@ public class SubmitServiceImpl implements SubmitService {
             if (null == product) {
                 return ResponseJson.error("订单商品不存在!", null);
             }
+            // 价格修改限制
+            CmOrganizeSkuPo SkuInfo = shipMapper.getOrganizeSkuInfo(skuId, orderProduct.getOrganizeId());
+            // 该商品成本计算
+            if (null != SkuInfo) {
+                // 商品为固定成本
+                if ( StringUtils.isNotBlank(SkuInfo.getCostCheckFlag()) && "1".equals(SkuInfo.getCostCheckFlag())) {
+                    // 系统商城商品的成本之和
+                    double sysProductPrice = MathUtil.add(SkuInfo.getCostPrice(), MathUtil.add(SkuInfo.getCmCostPrice(), SkuInfo.getOrganizeCostPrice())).doubleValue();
+                    // 系统商品成本之和小于修改的价格,修改价格异常,不允许下单
+                    if (MathUtil.compare(sysProductPrice, orderProduct.getPrice()) > 0) {
+                        isOrder.set(true);
+                        abnormalProductList.add(orderProduct);
+                    }
+                }
+            }
 
             // 是否添加税费,不含税商品 开票需添加税费
             boolean taxFlag = false;
@@ -2403,6 +2418,10 @@ public class SubmitServiceImpl implements SubmitService {
             // 加入订单商品列表
             orderProductList.add(product);
         }
+        // 存在不修改商品价格异常商品,不可修改为该价格
+        if (isOrder.get()) {
+            return ResponseJson.error(-1 , "订单商品价格修改异常", abnormalProductList);
+        }
 
         // 佣金 采美应收
         shopOrder.setBrokerage(brokerage.get());
@@ -2476,14 +2495,15 @@ public class SubmitServiceImpl implements SubmitService {
     public ResponseJson<Map<String, Object>> shopGenerateOrder(SubmitDto submitDto) {
         log.info("submitDto===" + submitDto);
 
-        // 用户组织Id
         JSONArray orderInfo = null;
         JSONObject payInfo = null;
         JSONObject orderInvoice = null;
+        JSONObject addressInfo = null;
         try {
             orderInfo = parseArray(submitDto.getOrderInfo());
             payInfo = parseObject(submitDto.getPayInfo());
             orderInvoice = parseObject(submitDto.getOrderInvoice());
+            addressInfo = parseObject(submitDto.getAddressInfo());
         } catch (Exception e) {
             log.error("订单参数解析异常try-catch:", e);
             return ResponseJson.error("订单参数解析异常!", null);
@@ -2497,6 +2517,9 @@ public class SubmitServiceImpl implements SubmitService {
         if (null == orderInvoice || orderInvoice.isEmpty()) {
             return ResponseJson.error("发票信息数据异常!", null);
         }
+        if (null == addressInfo || addressInfo.isEmpty()) {
+            return ResponseJson.error("地址信息数据异常!", null);
+        }
         // 打印参数
         log.info("******************** 【供应商给机构下单】提交订单参数:" + submitDto);
         // 机构用户
@@ -2505,6 +2528,8 @@ public class SubmitServiceImpl implements SubmitService {
         orderParamBo.setOrderSource(submitDto.getOrderSource());
         //订单商品
         orderParamBo.setOrderInfo(orderInfo);
+        // 订单地址
+        orderParamBo.setAddressInfo(addressInfo);
         //订单应付总额
         String orderShouldPayFee = (String) payInfo.get("orderShouldPayFee");
         orderParamBo.setOrderShouldPayFee(Double.parseDouble(orderShouldPayFee));
@@ -2563,18 +2588,9 @@ public class SubmitServiceImpl implements SubmitService {
             }
             orderParamBo.setOrderInvoice(invoice);
         }
-        // 返佣订单标识 0非返佣订单,1返佣订单,2普通订单含有返佣服务费
-        Integer rebateFlag = (Integer) payInfo.get("rebateFlag");
-        // rebateflag=2时,有rebateFee
-        if (null != rebateFlag && 2 == rebateFlag) {
-            String re = (String) payInfo.get("rebateFee");
-            Double rebateFee = Double.parseDouble(re);
-            orderParamBo.setRebateFee(rebateFee);
-        }
-        orderParamBo.setRebateFlag(rebateFlag);
+        orderParamBo.setRebateFlag(0);
         // 售后条款id
         Integer clauseId = (Integer) payInfo.get("clauseId");
-        Integer isColdChina = (Integer) payInfo.get("isColdChina");
         orderParamBo.setClauseId(clauseId);
         // 购买类型:(1自主下单,2直接购买 3协销下单)
         orderParamBo.setCartType(submitDto.getCartType());
@@ -2596,7 +2612,6 @@ public class SubmitServiceImpl implements SubmitService {
         orderParamBo.setClubCouponId(submitDto.getClubCouponId());
         orderParamBo.setOrderSeen(submitDto.getOrderSeen());
         orderParamBo.setOrderMiniType(submitDto.getOrderMiniType());
-        orderParamBo.setIsColdChain(isColdChina);
         /*
          * 保存订单
          */
@@ -2638,8 +2653,6 @@ public class SubmitServiceImpl implements SubmitService {
         mainOrder.setOrderSubmitType(3);
         // 订单未确认
         mainOrder.setConfirmFlag(0);
-        // 联合丽格订单
-        mainOrder.setOrderType(3);
         // 抵扣采美豆数量
         mainOrder.setUserBeans(0);
         // 默认可以线上支付:0可以 1不可以
@@ -2710,9 +2723,7 @@ public class SubmitServiceImpl implements SubmitService {
 
         // 余额抵扣金额
         AtomicReference<Double> balance = new AtomicReference(0);
-        if (1 == orderParamBo.getBalancePayFlag()) {
-            balance.set(orderParamBo.getAbleUserMoney());
-        }
+
         // 子订单订单列表
         List<OrderShopPo> shopOrderList = new ArrayList<>();
         JSONArray orderInfo = orderParamBo.getOrderInfo();
@@ -2790,7 +2801,9 @@ public class SubmitServiceImpl implements SubmitService {
                 Integer productNum = (Integer) productTemp.get("productNum");
                 Integer presentNum = (Integer) productTemp.get("presentNum");
                 Integer productType = (Integer) productTemp.get("productType");
-                Double price = (Double) productTemp.get("price");
+                // 转换价格格式
+                String rate = productTemp.get("price").toString();
+                Double price = Double.parseDouble(rate);
                 productType = (null == productType) ? 0 : productType;
                 if (null == skuId) {
                     return ResponseJson.error("订单商品数据异常!", null);
@@ -2798,6 +2811,9 @@ public class SubmitServiceImpl implements SubmitService {
                 if (null == productNum || productNum == 0) {
                     return ResponseJson.error("商品购买数量异常!", null);
                 }
+                if (null == price) {
+                    return ResponseJson.error("商品购买!", null);
+                }
                 // 统计商品总数量
                 productCount.updateAndGet(v -> v + productNum);
                 // 赠品数
@@ -2812,10 +2828,6 @@ public class SubmitServiceImpl implements SubmitService {
                     return ResponseJson.error("订单商品不存在!", null);
                 }
 
-                // 是否二手商品
-                if (null != product.getProductCategory() && 2 == product.getProductCategory()) {
-                    secondHandOrderFlag = true;
-                }
                 // 是否添加税费,不含税商品 开票需添加税费
                 boolean taxFlag = (Integer.valueOf(0).equals(product.getIncludedTax()) && (Integer.valueOf(1).equals(product.getInvoiceType()) || Integer.valueOf(2).equals(product.getInvoiceType())));
 
@@ -3117,6 +3129,9 @@ public class SubmitServiceImpl implements SubmitService {
         // 实际支付金额(商品金额+运费-余额抵扣)
         mainOrder.setPayableAmount(payableAmount.get());
 
+        log.info("payTotalFee.get()=------=-=-====" + payTotalFee.get());
+        // 真实支付金额赋值为订单总额
+        payableAmount.set(payTotalFee.get());
         // 是否返佣订单
         Integer rebateFlag = (null == orderParamBo.getRebateFlag() ? 0 : orderParamBo.getRebateFlag());
         mainOrder.setRebateFlag(rebateFlag);
@@ -3148,14 +3163,14 @@ public class SubmitServiceImpl implements SubmitService {
         }
         // 设置组织Id
         mainOrder.setOrganizeId(organizeId);
-        if (null == mainOrder.getUserId()) {
+        /*if (null == mainOrder.getUserId()) {
             // 设置手动回滚事务
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
             return ResponseJson.error("用户Id为空!", null);
         }
         // 根据用户 Id 查询机构 Id
         Integer clubId = submitMapper.getClubId(mainOrder.getUserId());
-        mainOrder.setClubId(clubId);
+        mainOrder.setClubId(clubId);*/
 
         /**
          * 保存主订单数据,返回订单Id
@@ -3265,11 +3280,9 @@ public class SubmitServiceImpl implements SubmitService {
             // 设置组织Id
             shopOrder.setOrganizeId(organizeId);
             // 分帐号
-            if (0 != organizeId) {
-                // 联合丽格
-                shopOrder.setRealPay(shopOrder.getNeedPayAmount());
-            }
-            shopOrder.setClubId(clubId);
+            // 联合丽格
+            shopOrder.setRealPay(shopOrder.getNeedPayAmount());
+            // shopOrder.setClubId(clubId);
             /*
              * 保存子订单
              */
@@ -3335,13 +3348,6 @@ public class SubmitServiceImpl implements SubmitService {
                     });
                 }
             }
-            /*
-             * 机构用户 写入价格库
-             */
-            if (3 != orderParamBo.getCartType() && 1 != orderProduct.getSvipPriceFlag() && 0 == organizeId) {
-                // 写入复购价格库
-                productService.savePurchasePrice(mainOrder, orderProduct, secondHandOrderFlag, "【提交订单】");
-            }
         }
 
         /**
@@ -3362,51 +3368,51 @@ public class SubmitServiceImpl implements SubmitService {
         Integer onlinePayFlag = onlinePay.get() ? 0 : 1;
         // 组织 是否线上判定
         boolean item = true;
-        if (0 != organizeId) {
-            // 子订单分帐号
-            for (OrderShopPo shopOrder : shopOrderList) {
-                if (StringUtils.isEmpty(shopOrder.getSplitCode()) || StringUtils.isBlank(shopOrder.getSplitCode())) {
-                    item = false;
-                }
-            }
-            if (item) {
-                onlinePayFlag = 0;
-            } else {
-                onlinePayFlag = 1;
+        // 子订单分帐号
+        for (OrderShopPo shopOrder : shopOrderList) {
+            if (StringUtils.isEmpty(shopOrder.getSplitCode()) || StringUtils.isBlank(shopOrder.getSplitCode())) {
+                item = false;
             }
         }
+        if (item) {
+            onlinePayFlag = 0;
+        } else {
+            onlinePayFlag = 1;
+        }
         submitMapper.updateOnlinePayFlag(onlinePayFlag, mainOrder.getOrderId());
         // 更新子订单线上支付
-        if (0 != organizeId && item) {
+        if (item) {
             String onlinePayWays = "1,2,3,4,5";
             submitMapper.updateOnlinePayWays(onlinePayWays, mainOrder.getOrderId());
         }
         /*
          * todo 保存 订单收货用户信息 下单时没有用户信息
          */
-        AddressVo address = submitMapper.getAddressDetailById(orderParamBo.getAddressId());
-        if (null != address) {
-            String userName = baseMapper.getUserNameByUserId(mainOrder.getUserId());
+        JSONObject addressinfo = orderParamBo.getAddressInfo();
+        try {
+            // 获取地址信息
+            Integer provinceId = (Integer) addressinfo.get("provinceId");
+            Integer cityId = (Integer) addressinfo.get("cityId");
+            Integer townId = (Integer) addressinfo.get("townId");
+            AddressVo address = submitMapper.getAddressById(provinceId, cityId, townId);
             //保存地址信息
             OrderUserInfoPo userInfo = new OrderUserInfoPo();
             userInfo.setOrderId(mainOrder.getOrderId());
-            userInfo.setClubId(mainOrder.getClubId());
-            userInfo.setUserId(mainOrder.getUserId());
-            userInfo.setName(userName);
-            userInfo.setReceiver(address.getReceiver());
-            userInfo.setMobile(address.getMobile());
-            userInfo.setTownId(address.getTownId());
+            userInfo.setReceiver((String) addressinfo.get("receiver"));
+            userInfo.setMobile((String) addressinfo.get("mobile"));
+            userInfo.setTownId(townId);
             userInfo.setProvince(address.getProvince());
             userInfo.setCity(address.getCity());
             userInfo.setTown(address.getTown());
-            userInfo.setAddress(address.getAddress());
+            userInfo.setAddress((String) addressinfo.get("address"));
             // 保存 订单收货用户信息
             submitMapper.insertOrderUserInfo(userInfo);
             log.info("【提交订单】>>>>>>>>>>>>>>>>>>>>>>>>>>保存订单用户地址(insert[bp_order_userinfo])orderId:" + mainOrder.getOrderId());
-        } else {
+        } catch ( Exception e) {
+            e.printStackTrace();
             //设置手动回滚事务
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return ResponseJson.error("订单地址异常", null);
+            return ResponseJson.error("订单收货地址数据解析异常", null);
         }
 
         /*
@@ -3440,6 +3446,7 @@ public class SubmitServiceImpl implements SubmitService {
          */
         Map<String, Object> info = new HashMap<>();
         info.put("orderId", mainOrder.getOrderId());
+        info.put("shopOrderId", shopOrderList.get(0).getShopOrderId());
         info.put("orderNo", mainOrder.getOrderNo());
         info.put("orderMark", "#" + mainOrder.getOrderId() + "#");
         //应付订单金额

+ 15 - 4
src/main/resources/mapper/OrderClubMapper.xml

@@ -253,6 +253,7 @@
             cso.orderID AS orderId,
             IFNULL(cso.organizeID, 0) AS organizeId,
             IFNULL(cso.isColdChina, 0) AS isColdChina,
+            cso.orderType,
             cso.orderNo,
             cso.shopID AS shopId,
             cso.note,
@@ -1154,6 +1155,7 @@
 
     <select id="getShopOrderInfo" resultType="com.caimei365.order.model.vo.ShopOrderVo">
         SELECT
+            orderId,
             shopOrderId,
             shopStatus as status
         FROM cm_shop_order
@@ -1167,11 +1169,20 @@
             clubId = #{clubId}
         where shopOrderId = #{shopOrderId}
     </update>
-    <update id="updateOrderUserInfoById">
-        update bp_order_userinfo
-        set shopStatus = #{status},
+
+    <update id="updateOrderInfoById">
+        update cm_order
+        set status = 11,
             userId = #{userId},
             clubId = #{clubId}
-        where shopOrderId = #{shopOrderId}
+        where orderId = #{orderId}
+    </update>
+
+    <update id="updateOrderUserInfoById">
+        update bp_order_userinfo
+        set userId = #{userId},
+            clubId = #{clubId},
+            name = #{name}
+        where orderId = #{orderId}
     </update>
 </mapper>

+ 45 - 20
src/main/resources/mapper/ShipMapper.xml

@@ -258,6 +258,7 @@
             cso.shopOrderNo,
             cso.orderID AS orderId,
             cso.orderNo,
+            cso.orderType,
             cso.shopID AS shopId,
             cso.organizeID as organizeId,
             IFNULL(cso.isColdChina, 0) AS isColdChina,
@@ -285,7 +286,7 @@
             cso.orderTime,
             cso.orderSubmitType,
             cso.payStatus,
-            cso.settlestatus,
+            ifnull(cso.settlestatus, 1) as settlestatus,
             ifnull(cso.sendOutStatus, 1) as sendOutStatus,
             ifnull(cso.receiptStatus, 1) as receiptStatus,
             ifnull(cso.orderStatusFlag, 1) as orderStatusFlag,
@@ -608,27 +609,28 @@
 
     <select id="getProductsOrganize" resultType="com.caimei365.order.model.vo.CartItemVo">
         SELECT
-        cs.skuId as skuId,
-        p.productID AS productId,
-        p.shopID AS shopId,
-        p.`name` AS `name`,
-        p.mainImage AS image,
+        distinct cs.skuId as skuId,
+        p.productID                  AS productId,
+        p.shopID                     AS shopId,
+        p.`name`                     AS `name`,
+        p.mainImage                  AS image,
         p.productCode,
         cs.price,
-        cs.price AS originalPrice,
-        cs.unit AS unit,
-        p.step AS step,
-        cs.minBuyNumber AS min,
+        cs.price                     AS originalPrice,
+        cs.unit                      AS unit,
+        p.step                       AS step,
+        cs.minBuyNumber AS MIN,
         p.priceFlag,
-        p.includedTax AS includedTax,
-        p.invoiceType AS invoiceType,
-        p.taxPoint AS taxRate,
+        cs.ladderPriceFlag           AS ladderFlag,
+        p.includedTax                AS includedTax,
+        p.invoiceType                AS invoiceType,
+        p.taxPoint                   AS taxRate,
         p.productCategory,
-        copi.validFlag AS validFlag,
+        copi.validFlag                  AS validFlag,
         p.visibility,
-        p.commodityType as commodityType,
+        p.commodityType              AS commodityType,
         p.productType,
-        p.splitCode
+        p.returnGoodsStutas
         FROM cm_sku cs
         LEFT JOIN product p ON cs.productId = p.productId
         left join cm_organize_product_info copi on copi.productId = p.productId
@@ -637,10 +639,33 @@
         <if test="splitCode !=null and splitCode !=''">
             AND p.splitCode = #{splitCode}
         </if>
-        AND cs.skuId in
-        <foreach collection="skuIds" open="(" separator="," close=")" item="skuId">
-            #{skuId}
-        </foreach>
+        <if test="skuIds.size()>0">
+            AND cs.skuId in
+            <foreach collection="skuIds" open="(" separator="," close=")" item="skuId">
+                #{skuId}
+            </foreach>
+        </if>
         ORDER BY cs.skuId DESC
     </select>
+
+    <select id="getOrganizeSkuInfo" resultType="com.caimei365.order.model.po.CmOrganizeSkuPo">
+        SELECT distinct cs.skuId,
+                        cs.productId,
+                        cs.minBuyNumber,
+                        cs.price,
+                        cs.unit,
+                        cs.stock,
+                        ifnull(copi.costCheckFlag, 1)   as costCheckFlag,
+                        IFnull(cs.costPrice, 0)         as costPrice,
+                        IFNULL(cs.organizeCostPrice, 0) AS organizeCostPrice,
+                        IFNULL(cs.cmCostPrice, 0)       AS cmCostPrice,
+                        ifnull(cs.organizePercent, 0)   as organizePercent,
+                        ifnull(cs.shopPercent, 0)       as shopPercent,
+                        ifnull(cs.cmPercent, 0)         as cmPercent
+        FROM cm_sku cs
+                 LEFT JOIN cm_organize_product_info copi ON cs.productId = copi.productId
+        WHERE cs.skuId = #{skuId}
+          AND cs.organizeId = #{organizeId}
+          AND copi.organizeId = #{organizeId}
+    </select>
 </mapper>

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

@@ -521,4 +521,28 @@
             shouldPayShopAmount = #{shouldPayShopAmount}
         where shopOrderId = #{shopOrderId}
     </update>
+
+    <select id="getAddressById" resultType="com.caimei365.order.model.vo.AddressVo">
+        SELECT
+               t.name       AS town,
+               c.name       AS city,
+               c.cityID     AS cityId,
+               p.name       AS province,
+               p.provinceID AS provinceId
+        FROM town t
+                 LEFT JOIN city c ON c.cityID = t.cityID
+                 LEFT JOIN province p ON p.provinceID = c.provinceID
+        <where>
+            <if test="provinceId != null and townId == null">
+                and p.provinceID = #{provinceId}
+            </if>
+            <if test="cityId != null and townId == null">
+                and c.cityID = #{cityId}
+            </if>
+            <if test="townId != null">
+                and t.townID = #{townId}
+            </if>
+        </where>
+        LIMIT 1
+    </select>
 </mapper>