Ver código fonte

优化代码

java110 5 anos atrás
pai
commit
eeae0cf8d3

+ 2 - 0
java110-bean/src/main/java/com/java110/dto/file/FileRelDto.java

@@ -18,6 +18,8 @@ public class FileRelDto extends PageDto implements Serializable {
 
     public static final String REL_TYPE_CD_REPAIR = "14000";//报修图片
     public static final String REL_TYPE_CD_RENTING = "16000";//租赁图片
+    public static final String REL_TYPE_CD_GOODS_COVER = "17000";//商品封面
+    public static final String REL_TYPE_CD_GOODS_CAROUSEL_FIGURE = "18000";//商品轮播
     public static final String SAVE_WAY_FTP = "ftp";//租赁图片
 
     private String relTypeCd;

+ 119 - 15
java110-generator/src/main/resources/web/template_1.json

@@ -1,36 +1,140 @@
 {
-  "templateName": "商品规格",
+  "templateName": "商品信息",
   "directories": "goods",
-  "templateCode": "productSpec",
-  "templateKey": "specId",
-  "templateKeyName": "规格ID",
-  "searchCode": "specId",
-  "searchName": "规格ID",
+  "templateCode": "product",
+  "templateKey": "productId",
+  "templateKeyName": "商品ID",
+  "searchCode": "productId",
+  "searchName": "商品ID",
   "conditions": [
     {
-      "name": "名称",
+      "name": "商品名称",
       "inputType": "input",
-      "code": "specName",
+      "code": "prodName",
       "whereCondition": "equal"
     },
     {
-      "name": "规格ID",
+      "name": "关键字",
       "inputType": "input",
-      "code": "specId",
+      "code": "keyword",
+      "whereCondition": "equal"
+    },
+    {
+      "name": "产品条码",
+      "inputType": "input",
+      "code": "barCode",
       "whereCondition": "equal"
     }
   ],
   "columns": [
     {
-      "code": "specName",
-      "cnCode": "规格名称",
-      "desc": "必填,请填写规格名称",
+      "code": "categoryId",
+      "cnCode": "商品大类",
+      "desc": "必填,请填写商品大类",
       "required": true,
       "hasDefaultValue": false,
       "inputType": "input",
+      "limit": "num",
+      "limitParam": "",
+      "limitErrInfo": "商品大类错误",
+      "show": true
+    },
+    {
+      "code": "prodName",
+      "cnCode": "商品名称",
+      "desc": "必填,请填写商品名称",
+      "required": true,
+      "hasDefaultValue": false,
+      "inputType": "input",
+      "limit": "maxLength",
+      "limitParam": "128",
+      "limitErrInfo": "商品名称不能超过128位",
+      "show": true
+    },
+    {
+      "code": "prodDesc",
+      "cnCode": "商品简介",
+      "desc": "必填,请填写商品简介",
+      "required": true,
+      "hasDefaultValue": false,
+      "inputType": "input",
+      "limit": "maxLength",
+      "limitParam": "256",
+      "limitErrInfo": "商品简介不能超过256位",
+      "show": true
+    },
+    {
+      "code": "keyword",
+      "cnCode": "关键词",
+      "desc": "必填,请填写关键词",
+      "required": true,
+      "hasDefaultValue": false,
+      "inputType": "input",
+      "limit": "maxLength",
+      "limitParam": "256",
+      "limitErrInfo": "关键词不能超过256位",
+      "show": true
+    },
+    {
+      "code": "barCode",
+      "cnCode": "产品条码",
+      "desc": "选填,请填写产品条码",
+      "required": false,
+      "hasDefaultValue": false,
+      "inputType": "input",
       "limit": "maxLength",
-      "limitParam": "100",
-      "limitErrInfo": "规格名称不能超过100位",
+      "limitParam": "15",
+      "limitErrInfo": "产品条码不能超过15位",
+      "show": true
+    },
+    {
+      "code": "unitName",
+      "cnCode": "单位",
+      "desc": "选填,请填写单位",
+      "required": false,
+      "hasDefaultValue": false,
+      "inputType": "input",
+      "limit": "maxLength",
+      "limitParam": "32",
+      "limitErrInfo": "单位不能超过32位",
+      "show": true
+    },
+    {
+      "code": "sort",
+      "cnCode": "排序",
+      "desc": "选填,请填写排序",
+      "required": false,
+      "hasDefaultValue": false,
+      "inputType": "input",
+      "limit": "num",
+      "limitParam": "",
+      "limitErrInfo": "排序格式错误",
+      "show": true
+    },
+    {
+      "code": "isPostage",
+      "cnCode": "是否包邮",
+      "desc": "选填,请填写排序",
+      "required": false,
+      "hasDefaultValue": false,
+      "inputType": "select",
+      "selectValue":"1,2",
+      "selectValueName":"包邮,不包邮",
+      "limit": "num",
+      "limitParam": "",
+      "limitErrInfo": "是否包邮格式错误",
+      "show": true
+    },
+    {
+      "code": "postage",
+      "cnCode": "邮费",
+      "desc": "选填,请填写邮费",
+      "required": false,
+      "hasDefaultValue": false,
+      "inputType": "input",
+      "limit": "money",
+      "limitParam": "",
+      "limitErrInfo": "邮费格式错误,请填写如 3.00",
       "show": true
     }
   ]

+ 37 - 0
java110-generator/src/main/resources/web/template_productSpec.json

@@ -0,0 +1,37 @@
+{
+  "templateName": "商品规格",
+  "directories": "goods",
+  "templateCode": "productSpec",
+  "templateKey": "specId",
+  "templateKeyName": "规格ID",
+  "searchCode": "specId",
+  "searchName": "规格ID",
+  "conditions": [
+    {
+      "name": "名称",
+      "inputType": "input",
+      "code": "specName",
+      "whereCondition": "equal"
+    },
+    {
+      "name": "规格ID",
+      "inputType": "input",
+      "code": "specId",
+      "whereCondition": "equal"
+    }
+  ],
+  "columns": [
+    {
+      "code": "specName",
+      "cnCode": "规格名称",
+      "desc": "必填,请填写规格名称",
+      "required": true,
+      "hasDefaultValue": false,
+      "inputType": "input",
+      "limit": "maxLength",
+      "limitParam": "100",
+      "limitErrInfo": "规格名称不能超过100位",
+      "show": true
+    }
+  ]
+}

+ 36 - 13
service-goods/src/main/java/com/java110/goods/api/ProductApi.java

@@ -120,11 +120,34 @@ public class ProductApi {
         Assert.hasKeyAndValue(reqJson, "unitName", "请求报文中未包含unitName");
         Assert.hasKeyAndValue(reqJson, "sort", "请求报文中未包含sort");
         Assert.hasKeyAndValue(reqJson, "isPostage", "请求报文中未包含isPostage");
+        Assert.hasKeyAndValue(reqJson, "coverPhoto", "请求报文中未包含商品封面");
 
+        Assert.hasKey(reqJson,"carouselFigurePhoto","请求报文中未包含轮播图");
+        Assert.hasKey(reqJson,"productSpecs","请求报文中未包含规格信息");
+
+
+        String coverPhoto = reqJson.getString("coverPhoto");
+        JSONArray carouselFigurePhoto = reqJson.getJSONArray("carouselFigurePhoto");
+
+        JSONArray productSpecs = reqJson.getJSONArray("productSpecs");
+
+        if(carouselFigurePhoto.size() < 1){
+            throw new IllegalArgumentException("请求报文中未包含轮播图");
+        }
+        if(productSpecs.size() < 1){
+            throw new IllegalArgumentException("请求报文中未包含规格信息");
+        }
+
+        JSONObject spec = null;
+        List<ProductSpecValuePo> productSpecValuePos = new ArrayList<>();
+        for (int specIndex = 0; specIndex < productSpecs.size(); specIndex++) {
+            spec = productSpecs.getJSONObject(specIndex);
+            productSpecValuePos.add(BeanConvertUtil.covertBean(spec,ProductSpecValuePo.class));
+        }
 
         ProductPo productPo = BeanConvertUtil.covertBean(reqJson, ProductPo.class);
         productPo.setStoreId(storeId);
-        return saveProductBMOImpl.save(productPo);
+        return saveProductBMOImpl.save(productPo,coverPhoto,carouselFigurePhoto,productSpecValuePos);
     }
 
     /**
@@ -212,24 +235,24 @@ public class ProductApi {
 
         JSONArray specDetails = reqJson.getJSONArray("specDetails");
 
-        if(specDetails.size() < 1){
+        if (specDetails.size() < 1) {
             throw new IllegalArgumentException("未包含规格信息");
         }
         ProductSpecDetailPo productSpecDetailPo = null;
         JSONObject specDetail = null;
         List<ProductSpecDetailPo> productSpecDetailPos = new ArrayList<>();
-        for(int detailIndex = 0 ; detailIndex < specDetails.size(); detailIndex ++){
+        for (int detailIndex = 0; detailIndex < specDetails.size(); detailIndex++) {
             specDetail = specDetails.getJSONObject(detailIndex);
-            Assert.hasKeyAndValue(specDetail,"detailName","未包含规格");
-            Assert.hasKeyAndValue(specDetail,"detailValue","未包含规格值");
-            productSpecDetailPo = BeanConvertUtil.covertBean(specDetail,ProductSpecDetailPo.class);
+            Assert.hasKeyAndValue(specDetail, "detailName", "未包含规格");
+            Assert.hasKeyAndValue(specDetail, "detailValue", "未包含规格值");
+            productSpecDetailPo = BeanConvertUtil.covertBean(specDetail, ProductSpecDetailPo.class);
             productSpecDetailPos.add(productSpecDetailPo);
         }
 
 
         ProductSpecPo productSpecPo = BeanConvertUtil.covertBean(reqJson, ProductSpecPo.class);
         productSpecPo.setStoreId(storeId);
-        return saveProductSpecBMOImpl.save(productSpecPo,productSpecDetailPos);
+        return saveProductSpecBMOImpl.save(productSpecPo, productSpecDetailPos);
     }
 
     /**
@@ -254,23 +277,23 @@ public class ProductApi {
 
         JSONArray specDetails = reqJson.getJSONArray("specDetails");
 
-        if(specDetails.size() < 1){
+        if (specDetails.size() < 1) {
             throw new IllegalArgumentException("未包含规格信息");
         }
         ProductSpecDetailPo productSpecDetailPo = null;
         JSONObject specDetail = null;
         List<ProductSpecDetailPo> productSpecDetailPos = new ArrayList<>();
-        for(int detailIndex = 0 ; detailIndex < specDetails.size(); detailIndex ++){
+        for (int detailIndex = 0; detailIndex < specDetails.size(); detailIndex++) {
             specDetail = specDetails.getJSONObject(detailIndex);
-            Assert.hasKeyAndValue(specDetail,"detailName","未包含规格");
-            Assert.hasKeyAndValue(specDetail,"detailValue","未包含规格值");
-            productSpecDetailPo = BeanConvertUtil.covertBean(specDetail,ProductSpecDetailPo.class);
+            Assert.hasKeyAndValue(specDetail, "detailName", "未包含规格");
+            Assert.hasKeyAndValue(specDetail, "detailValue", "未包含规格值");
+            productSpecDetailPo = BeanConvertUtil.covertBean(specDetail, ProductSpecDetailPo.class);
             productSpecDetailPos.add(productSpecDetailPo);
         }
 
         ProductSpecPo productSpecPo = BeanConvertUtil.covertBean(reqJson, ProductSpecPo.class);
         productSpecPo.setStoreId(storeId);
-        return updateProductSpecBMOImpl.update(productSpecPo,productSpecDetailPos);
+        return updateProductSpecBMOImpl.update(productSpecPo, productSpecDetailPos);
     }
 
     /**

+ 6 - 1
service-goods/src/main/java/com/java110/goods/bmo/product/ISaveProductBMO.java

@@ -1,7 +1,12 @@
 package com.java110.goods.bmo.product;
 
+import com.alibaba.fastjson.JSONArray;
 import com.java110.po.product.ProductPo;
+import com.java110.po.productSpecValue.ProductSpecValuePo;
 import org.springframework.http.ResponseEntity;
+
+import java.util.List;
+
 public interface ISaveProductBMO {
 
 
@@ -11,7 +16,7 @@ public interface ISaveProductBMO {
      * @param productPo
      * @return
      */
-    ResponseEntity<String> save(ProductPo productPo);
+    ResponseEntity<String> save(ProductPo productPo, String coverPhoto, JSONArray carouselFigurePhoto, List<ProductSpecValuePo> productSpecValuePos);
 
 
 }

+ 73 - 4
service-goods/src/main/java/com/java110/goods/bmo/product/impl/SaveProductBMOImpl.java

@@ -1,21 +1,40 @@
 package com.java110.goods.bmo.product.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.java110.core.annotation.Java110Transactional;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.file.FileDto;
+import com.java110.dto.file.FileRelDto;
 import com.java110.goods.bmo.product.ISaveProductBMO;
+import com.java110.intf.IProductSpecValueInnerServiceSMO;
+import com.java110.intf.common.IFileInnerServiceSMO;
+import com.java110.intf.common.IFileRelInnerServiceSMO;
 import com.java110.intf.goods.IProductInnerServiceSMO;
+import com.java110.po.file.FileRelPo;
 import com.java110.po.product.ProductPo;
+import com.java110.po.productSpecValue.ProductSpecValuePo;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service("saveProductBMOImpl")
 public class SaveProductBMOImpl implements ISaveProductBMO {
 
     @Autowired
     private IProductInnerServiceSMO productInnerServiceSMOImpl;
 
+    @Autowired
+    private IFileInnerServiceSMO fileInnerServiceSMOImpl;
+
+    @Autowired
+    private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
+
+    @Autowired
+    private IProductSpecValueInnerServiceSMO productSpecValueInnerServiceSMOImpl;
+
     /**
      * 添加小区信息
      *
@@ -23,16 +42,66 @@ public class SaveProductBMOImpl implements ISaveProductBMO {
      * @return 订单服务能够接受的报文
      */
     @Java110Transactional
-    public ResponseEntity<String> save(ProductPo productPo) {
+    public ResponseEntity<String> save(ProductPo productPo, String coverPhoto, JSONArray carouselFigurePhoto,
+                                       List<ProductSpecValuePo> productSpecValuePos) {
 
         productPo.setProductId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_productId));
         int flag = productInnerServiceSMOImpl.saveProduct(productPo);
 
-        if (flag > 0) {
-            return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");
+        if (flag < 1) {
+            return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
+        }
+
+        //保存商品封面
+        doSavaRentingFile(coverPhoto, productPo, FileRelDto.REL_TYPE_CD_GOODS_COVER);
+        for (int carouselIndex = 0; carouselIndex < carouselFigurePhoto.size(); carouselIndex++) {
+            doSavaRentingFile(carouselFigurePhoto.getString(carouselIndex), productPo, FileRelDto.REL_TYPE_CD_GOODS_CAROUSEL_FIGURE);
+        }
+
+        for (ProductSpecValuePo productSpecValuePo : productSpecValuePos) {
+            productSpecValuePo.setStoreId(productPo.getStoreId());
+            productSpecValuePo.setProductId(productPo.getProductId());
+            productSpecValuePo.setValueId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_valueId));
+            flag = productSpecValueInnerServiceSMOImpl.saveProductSpecValue(productSpecValuePo);
+
+            if (flag < 1) {
+                throw new IllegalArgumentException("保存规格失败");
+            }
         }
 
-        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "保存失败");
+        return ResultVo.createResponseEntity(ResultVo.CODE_OK, "保存成功");
+    }
+
+
+    /**
+     * 保存房屋租赁 图片
+     *
+     * @param photo
+     * @param productPo
+     */
+    private void doSavaRentingFile(String photo, ProductPo productPo, String fileTypeCd) {
+
+        FileDto fileDto = new FileDto();
+        fileDto.setCommunityId("-1");
+        fileDto.setContext(photo);
+        fileDto.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
+        fileDto.setFileName(fileDto.getFileId());
+
+        fileDto.setSuffix("jpeg");
+        String fileName = fileInnerServiceSMOImpl.saveFile(fileDto);
+
+        FileRelPo fileRelPo = new FileRelPo();
+        fileRelPo.setObjId(productPo.getProductId());
+        fileRelPo.setRelTypeCd(fileTypeCd);
+        fileRelPo.setFileRelId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_relId));
+        fileRelPo.setFileRealName(fileName);
+        fileRelPo.setFileSaveName(fileName);
+        fileRelPo.setSaveWay(FileRelDto.SAVE_WAY_FTP);
+        int save = fileRelInnerServiceSMOImpl.saveFileRel(fileRelPo);
+
+        if (save < 1) {
+            throw new IllegalArgumentException("保存文件失败");
+        }
     }
 
 }