Kaynağa Gözat

设置默认规格

java110 5 yıl önce
ebeveyn
işleme
4c9d70fa25

+ 64 - 0
java110-bean/src/main/java/com/java110/dto/product/ProductActivityDto.java

@@ -0,0 +1,64 @@
+package com.java110.dto.product;
+
+import com.java110.dto.PageDto;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class ProductActivityDto extends PageDto implements Serializable {
+
+    private double actPrice; // 活动价格
+    private double actStock; // 活动库存
+    private double actSales; // 活动销量
+    private Date actEndTime; // 活动价格
+    private String actProdName; // 活动名称
+    private String actProdDesc; // 活动描述
+
+    public double getActPrice() {
+        return actPrice;
+    }
+
+    public void setActPrice(double actPrice) {
+        this.actPrice = actPrice;
+    }
+
+    public double getActStock() {
+        return actStock;
+    }
+
+    public void setActStock(double actStock) {
+        this.actStock = actStock;
+    }
+
+    public double getActSales() {
+        return actSales;
+    }
+
+    public void setActSales(double actSales) {
+        this.actSales = actSales;
+    }
+
+    public Date getActEndTime() {
+        return actEndTime;
+    }
+
+    public void setActEndTime(Date actEndTime) {
+        this.actEndTime = actEndTime;
+    }
+
+    public String getActProdName() {
+        return actProdName;
+    }
+
+    public void setActProdName(String actProdName) {
+        this.actProdName = actProdName;
+    }
+
+    public String getActProdDesc() {
+        return actProdDesc;
+    }
+
+    public void setActProdDesc(String actProdDesc) {
+        this.actProdDesc = actProdDesc;
+    }
+}

+ 11 - 1
java110-bean/src/main/java/com/java110/dto/product/ProductDto.java

@@ -15,7 +15,7 @@ import java.util.List;
  * @Version 1.0
  * add by wuxw 2019/4/24
  **/
-public class ProductDto extends PageDto implements Serializable {
+public class ProductDto extends ProductActivityDto implements Serializable {
 
     private String productId;
     private String unitName;
@@ -43,6 +43,8 @@ public class ProductDto extends PageDto implements Serializable {
 
     private List<ProductSpecValueDto> productSpecValues;
 
+    private ProductSpecValueDto defaultSpecValue;
+
 
     private Date createTime;
 
@@ -225,4 +227,12 @@ public class ProductDto extends PageDto implements Serializable {
     public void setStateName(String stateName) {
         this.stateName = stateName;
     }
+
+    public ProductSpecValueDto getDefaultSpecValue() {
+        return defaultSpecValue;
+    }
+
+    public void setDefaultSpecValue(ProductSpecValueDto defaultSpecValue) {
+        this.defaultSpecValue = defaultSpecValue;
+    }
 }

+ 9 - 0
java110-bean/src/main/java/com/java110/dto/productSpecValue/ProductSpecValueDto.java

@@ -29,6 +29,7 @@ public class ProductSpecValueDto extends PageDto implements Serializable {
     private String storeId;
     private String stock;
     private String sales;
+    private String isDefault;
 
 
     private Date createTime;
@@ -158,4 +159,12 @@ public class ProductSpecValueDto extends PageDto implements Serializable {
     public void setSpecName(String specName) {
         this.specName = specName;
     }
+
+    public String getIsDefault() {
+        return isDefault;
+    }
+
+    public void setIsDefault(String isDefault) {
+        this.isDefault = isDefault;
+    }
 }

+ 7 - 0
java110-bean/src/main/java/com/java110/po/productSpecValue/ProductSpecValuePo.java

@@ -15,6 +15,7 @@ public class ProductSpecValuePo implements Serializable {
     private String storeId;
     private String stock;
     private String sales;
+    private String isDefault;
 
     public String getSpecId() {
         return specId;
@@ -104,5 +105,11 @@ public class ProductSpecValuePo implements Serializable {
         this.sales = sales;
     }
 
+    public String getIsDefault() {
+        return isDefault;
+    }
 
+    public void setIsDefault(String isDefault) {
+        this.isDefault = isDefault;
+    }
 }

+ 3 - 1
java110-db/src/main/resources/mapper/goods/ProductServiceDaoImplMapper.xml

@@ -20,10 +20,12 @@
         select t.product_id,t.product_id productId,t.unit_name,t.unit_name unitName,t.is_postage,t.is_postage
         isPostage,t.status_cd,t.status_cd statusCd,t.sort,t.store_id,t.store_id storeId,t.bar_code,t.bar_code
         barCode,t.postage,t.prod_name,t.prod_name prodName,t.state,t.keyword,t.prod_desc,t.prod_desc
-        prodDesc,t.category_id,t.category_id categoryId,pc.category_name categoryName,td.name stateName
+        prodDesc,t.category_id,t.category_id categoryId,pc.category_name categoryName,td.name stateName,
+        psv.cost_price costPrice,psv.ot_price otPrice,psv.price,psv.sales,psv.stock,psv.vip_price vipPrice
         from product t
         left join product_category pc on pc.category_id = t.category_id and pc.store_id = t.store_id and pc.status_cd = '0'
         left join t_dict td on t.state = td.status_cd and td.table_name= 'product' and td.table_columns = 'state'
+        left join product_spec_value psv on psv.product_id = t.product_id and psv.store_id = t.store_id and psv.is_default = 'T'
         where 1 =1
         <if test="productId !=null and productId != ''">
             and t.product_id= #{productId}

+ 13 - 3
java110-db/src/main/resources/mapper/goods/ProductSpecValueServiceDaoImplMapper.xml

@@ -8,9 +8,9 @@
     <!-- 保存产品规格值信息 add by wuxw 2018-07-03 -->
     <insert id="saveProductSpecValueInfo" parameterType="Map">
         insert into product_spec_value(
-        spec_id,value_id,product_id,price,ot_price,cost_price,vip_price,store_id,stock,sales
+        spec_id,value_id,product_id,price,ot_price,cost_price,vip_price,store_id,stock,sales,is_default
         ) values (
-        #{specId},#{valueId},#{productId},#{price},#{otPrice},#{costPrice},#{vipPrice},#{storeId},#{stock},#{sales}
+        #{specId},#{valueId},#{productId},#{price},#{otPrice},#{costPrice},#{vipPrice},#{storeId},#{stock},#{sales},#{isDefault}
         )
     </insert>
 
@@ -19,7 +19,8 @@
     <select id="getProductSpecValueInfo" parameterType="Map" resultType="Map">
         select t.spec_id,t.spec_id specId,t.value_id,t.value_id valueId,t.product_id,t.product_id
         productId,t.price,t.ot_price,t.ot_price otPrice,t.cost_price,t.cost_price costPrice,t.vip_price,t.vip_price
-        vipPrice,t.status_cd,t.status_cd statusCd,t.store_id,t.store_id storeId,t.stock,t.sales,ps.spec_name specName
+        vipPrice,t.status_cd,t.status_cd statusCd,t.store_id,t.store_id storeId,t.stock,t.sales,ps.spec_name specName,
+        t.is_default isDefault
         from product_spec_value t
         left join product_spec ps on t.spec_id = ps.spec_id and ps.store_id = t.store_id and ps.status_cd = '0'
         where 1 =1
@@ -56,6 +57,9 @@
         <if test="sales !=null and sales != ''">
             and t.sales= #{sales}
         </if>
+        <if test="isDefault !=null and isDefault != ''">
+            and t.is_default= #{isDefault}
+        </if>
         order by t.create_time desc
         <if test="page != -1 and page != null ">
             limit #{page}, #{row}
@@ -116,6 +120,9 @@
         <if test="sales !=null and sales != ''">
             , t.sales= #{sales}
         </if>
+        <if test="isDefault !=null and isDefault != ''">
+            , t.is_default= #{isDefault}
+        </if>
         where 1=1
         <if test="valueId !=null and valueId != ''">
             and t.value_id= #{valueId}
@@ -164,6 +171,9 @@
         <if test="sales !=null and sales != ''">
             and t.sales= #{sales}
         </if>
+        <if test="isDefault !=null and isDefault != ''">
+            and t.is_default= #{isDefault}
+        </if>
 
 
     </select>

+ 23 - 3
service-goods/src/main/java/com/java110/goods/api/ProductApi.java

@@ -169,9 +169,19 @@ public class ProductApi {
 
         JSONObject spec = null;
         List<ProductSpecValuePo> productSpecValuePos = new ArrayList<>();
+        boolean hasDefault = false;
+        ProductSpecValuePo productSpecValuePo = null;
         for (int specIndex = 0; specIndex < productSpecs.size(); specIndex++) {
             spec = productSpecs.getJSONObject(specIndex);
-            productSpecValuePos.add(BeanConvertUtil.covertBean(spec, ProductSpecValuePo.class));
+            productSpecValuePo = BeanConvertUtil.covertBean(spec, ProductSpecValuePo.class);
+            productSpecValuePos.add(productSpecValuePo);
+            if("T".equals(productSpecValuePo.getIsDefault())){
+                hasDefault = true;
+            }
+        }
+
+        if(!hasDefault){
+            throw new IllegalArgumentException("请求报文中未包含默认规格");
         }
 
         ProductPo productPo = BeanConvertUtil.covertBean(reqJson, ProductPo.class);
@@ -209,15 +219,25 @@ public class ProductApi {
 
         JSONObject spec = null;
         List<ProductSpecValuePo> productSpecValuePos = null;
-        ;
+
+        boolean hasDefault = false;
+        ProductSpecValuePo productSpecValuePo = null;
         if (productSpecs != null) {
             productSpecValuePos = new ArrayList<>();
             for (int specIndex = 0; specIndex < productSpecs.size(); specIndex++) {
                 spec = productSpecs.getJSONObject(specIndex);
-                productSpecValuePos.add(BeanConvertUtil.covertBean(spec, ProductSpecValuePo.class));
+                productSpecValuePo = BeanConvertUtil.covertBean(spec, ProductSpecValuePo.class);
+                productSpecValuePos.add(productSpecValuePo);
+                if("T".equals(productSpecValuePo.getIsDefault())){
+                    hasDefault = true;
+                }
             }
         }
 
+        if(!hasDefault){
+            throw new IllegalArgumentException("请求报文中未包含默认规格");
+        }
+
         ProductPo productPo = BeanConvertUtil.covertBean(reqJson, ProductPo.class);
         productPo.setStoreId(storeId);
 

+ 2 - 0
service-goods/src/main/java/com/java110/goods/bmo/product/impl/GetProductBMOImpl.java

@@ -158,6 +158,8 @@ public class GetProductBMOImpl implements IGetProductBMO {
         if (groupBuyProductDtos == null || groupBuyProductDtos.size() < 1) {
             return;
         }
+
+
     }
 
     private void freshProductSpecValue(List<ProductDto> productDtos) {

+ 13 - 2
service-goods/src/main/java/com/java110/goods/smo/impl/ProductInnerServiceSMOImpl.java

@@ -4,6 +4,7 @@ package com.java110.goods.smo.impl;
 import com.java110.core.base.smo.BaseServiceSMO;
 import com.java110.dto.PageDto;
 import com.java110.dto.product.ProductDto;
+import com.java110.dto.productSpecValue.ProductSpecValueDto;
 import com.java110.goods.dao.IProductServiceDao;
 import com.java110.intf.goods.IProductInnerServiceSMO;
 import com.java110.po.product.ProductPo;
@@ -12,7 +13,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @ClassName FloorInnerServiceSMOImpl
@@ -61,8 +64,16 @@ public class ProductInnerServiceSMOImpl extends BaseServiceSMO implements IProdu
         if (page != PageDto.DEFAULT_PAGE) {
             productDto.setPage((page - 1) * productDto.getRow());
         }
-
-        List<ProductDto> products = BeanConvertUtil.covertBeanList(productServiceDaoImpl.getProductInfo(BeanConvertUtil.beanCovertMap(productDto)), ProductDto.class);
+        List<ProductDto> products = new ArrayList<>();
+        List<Map> prods = productServiceDaoImpl.getProductInfo(BeanConvertUtil.beanCovertMap(productDto));
+        ProductDto tmpProductDto = null;
+        ProductSpecValueDto productSpecValueDto = null;
+        for (Map prod : prods) {
+            tmpProductDto = BeanConvertUtil.covertBean(prod, ProductDto.class);
+            productSpecValueDto = BeanConvertUtil.covertBean(prod, ProductSpecValueDto.class);
+            tmpProductDto.setDefaultSpecValue(productSpecValueDto);
+            products.add(tmpProductDto);
+        }
 
         return products;
     }