Browse Source

采美sku bugfix

zhijiezhao 2 years ago
parent
commit
44897212d5

+ 2 - 0
src/main/java/com/caimei/modules/product/dao/ProductDao.java

@@ -217,4 +217,6 @@ public interface ProductDao extends CrudDao<Product> {
     CmSku findSkuById(Integer skuId);
 
     Integer findSkuIdByPromotionsId(Integer promotionsId);
+
+    void deleteProductSkus(@Param("skuIds")List<Integer> skuIds,@Param("productId")Integer productId);
 }

+ 23 - 15
src/main/java/com/caimei/modules/product/service/ProductService.java

@@ -454,26 +454,34 @@ public class ProductService extends CrudService<ProductDao, Product> {
 
     private void updateSku(Product product) {
         List<CmSku> skuList = product.getSkuList();
-        if(null!=skuList&&skuList.size()>0){
+        if (null != skuList && skuList.size() > 0) {
             productDao.deleteLadderPriceById(product.getProductID());
-            skuList.forEach(s->{
-                s.setProductId(product.getProductID());
-                if(null!=s.getSkuId()){
-                    productDao.updateCmSku(s);
-                }else{
-                    productDao.insertSku(s);
-                }
-                if (null != s.ladderPriceFlag() && 1 == s.ladderPriceFlag()) {
-                    List<CmLadderPrice> cmLadderPrices = s.ladderPriceList();
-                    for (int i = 0; i < cmLadderPrices.size(); i++) {
-                        if (0 == i || "0".equals(cmLadderPrices.get(i).delFlag())) {
-                            cmLadderPrices.get(i).setProductId(product.getProductID());
-                            cmLadderPrices.get(i).setSkuId(s.getSkuId());
-                            productDao.insertCmLadderPrice(cmLadderPrices.get(i));
+            List<Integer> skuIds = new ArrayList<>();
+            skuList.forEach(s -> {
+                if (null != s.getPrice()) {
+                    if (null != s.getSkuId()) {
+                        skuIds.add(s.getSkuId());
+                    }
+                    s.setProductId(product.getProductID());
+                    if (null != s.getSkuId()) {
+                        productDao.updateCmSku(s);
+                    } else {
+                        productDao.insertSku(s);
+                        skuIds.add(s.getSkuId());
+                    }
+                    if (null != s.ladderPriceFlag() && 1 == s.ladderPriceFlag()) {
+                        List<CmLadderPrice> cmLadderPrices = s.ladderPriceList();
+                        for (int i = 0; i < cmLadderPrices.size(); i++) {
+                            if (0 == i || "0".equals(cmLadderPrices.get(i).delFlag())) {
+                                cmLadderPrices.get(i).setProductId(product.getProductID());
+                                cmLadderPrices.get(i).setSkuId(s.getSkuId());
+                                productDao.insertCmLadderPrice(cmLadderPrices.get(i));
+                            }
                         }
                     }
                 }
             });
+            productDao.deleteProductSkus(skuIds, product.getProductID());
         }
     }
 

+ 17 - 6
src/main/resources/mappings/modules/product/ProductMapper.xml

@@ -1174,6 +1174,16 @@
         where productId = #{productID}
     </delete>
 
+    <delete id="deleteProductSkus">
+        DELETE
+        FROM cm_sku
+        WHERE productId = #{productId}
+        and skuId not in
+        <foreach collection="skuIds" close=")" separator="," open="(" item="id">
+            #{id}
+        </foreach>
+    </delete>
+
     <select id="toAddProductCustomClassificationList" resultType="product">
         select
         <include refid="productColumns"/>,
@@ -2048,19 +2058,20 @@
         where productId = #{productId}
     </select>
     <select id="findSku" resultType="com.caimei.modules.product.entity.CmSku">
-        select price, costPrice, costCheckFlag, costProportional,normalPrice
+        select price, costPrice, costCheckFlag, costProportional, normalPrice
         from cm_sku
-        where productId=#{productId}
+        where productId = #{productId}
         order by price asc
         limit 1
     </select>
     <select id="findSkuById" resultType="com.caimei.modules.product.entity.CmSku">
-        select price, costPrice, costCheckFlag, costProportional,unit
+        select price, costPrice, costCheckFlag, costProportional, unit
         from cm_sku
-        where skuId=#{skuId}
+        where skuId = #{skuId}
     </select>
     <select id="findSkuIdByPromotionsId" resultType="java.lang.Integer">
-        select skuId from cm_promotions_gift
-        where promotionsId=#{promotionsId}
+        select skuId
+        from cm_promotions_gift
+        where promotionsId = #{promotionsId}
     </select>
 </mapper>

+ 10 - 5
src/main/webapp/WEB-INF/views/modules/hehe/cmHeheProductForm.jsp

@@ -146,6 +146,12 @@
             border: 1px solid #ddd;
         }
 
+        .control-group>div::after{
+            content: "";
+            display: block;
+            clear: both;
+        }
+
     </style>
     <script type="text/javascript">
         $(document).ready(function () {
@@ -327,17 +333,16 @@
             <c:forEach items="${cmHeheProduct.skus}" var="sku" varStatus="index">
                 <div>
                     <input type="number" style="display:none" value="${sku.skuId}" name="skus[${index.index}].skuId">
-                    <label class="control-label">
-                        <font color="red">*</font>规格:规格${index.index+1}
-                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                    <label class="control-label" style="text-align:left">
+                        <font color="red">*</font>规格:${sku.unit}
                     </label>
                     <div class="controls">
                         <font color="red">*</font>售价:
                         <input type="number" style="width:100px;" min="0" id="price" name="skus[${index.index}].price"
                                value="${sku.price}" required onblur="checkPrice(this)">
-                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                         <label><font color="red">*</font>成本: ${sku.costCheckFlag eq 1 ? '固定成本' : '比例成本'}</label>
-                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                         <c:if test="${sku.costCheckFlag eq 1}">
                             <label><font color="red">*</font>成本价:${sku.costPrice}</label>
                         </c:if>

+ 14 - 4
src/main/webapp/static/modules/bulkpurchase/orderForm.js

@@ -610,6 +610,7 @@ function resetProductList(setData, ind) {
         if (data.skuStr) {
             var strings = data.skuStr.split("/");
             var skuId = strings[0];
+            skuId = skuId * 1;
             skuIds.push(skuId);
         } else {
             var skuId = "";
@@ -618,10 +619,12 @@ function resetProductList(setData, ind) {
             } else {
                 skuId = data.skuId;
             }
+            skuId = skuId * 1;
             skuIds.push(skuId);
         }
         productIdList.push(data.productId);
     });
+
     $('.productTable').each(function (index, element) {
         $(this).prev('.order-rows').remove();
         $(this).remove();
@@ -635,6 +638,12 @@ function resetProductList(setData, ind) {
         });
     } else {
         debugger;
+        if(ind){
+            productList.forEach(function (data) {
+                setProductList(data, false);
+            });
+        }
+
         var skuId;
         if (setData.skuStr) {
             var strings = setData.skuStr.split("/");
@@ -643,10 +652,11 @@ function resetProductList(setData, ind) {
             skuId = setData.skuList[0].skuId;
         }
 
+        skuId = skuId * 1;
         if (skuIds.indexOf(skuId) >= 0) {
             //设置
             productList.forEach(function (data) {
-                if (setData.productId == data.productId) {
+                if (setData.skuId == data.skuId) {
                     setProductList(setData, false, ind);
                 } else {
                     setProductList(data, false, ind);
@@ -687,6 +697,7 @@ function editShopProduct(obj) {
     data = JSON.parse(data);
     var userId = $("#inputForm").find("[name*='bpOrderUserinfo.userId']").val();
     var productID = (data.productId == undefined) ? data.productID : data.productId;
+    var skuId = (data.skuId == undefined) ? data.skuId : data.skuId;
     var secondHandType = (data.secondHandType == undefined) ? 0 : data.secondHandType;
     var discount = (data.discount == undefined) ? 100 : data.discount;
     var productCategory = (data.productCategory == undefined) ? 1 : data.productCategory;
@@ -722,7 +733,7 @@ function editShopProduct(obj) {
                         return false;
                     } else {
                         console.log('设置:' + items[0]);
-                        resetProductList(items[0], 1); //设置商品列表
+                        resetProductList(items[0], skuId); //设置商品列表
                     }
                     return true;
                 }
@@ -1000,9 +1011,8 @@ function appendProductList(str, data, cmPromotion, ind) {
             skuId = data.skuId;
         }
     }
-
+    skuId = skuId * 1;
     $('.productTable tbody tr:not(.gift)').each(function (index, element) {
-        console.log("看看" + $(this).find("td:nth-child(2)").html());
         if ($(this).find("td:nth-child(2)").html() == skuId) {
             removeEle = $(this).parent();
             $(this).remove();