Просмотр исходного кода

Merge remote-tracking branch 'origin/dev' into dev

lengfaqiang 2 лет назад
Родитель
Сommit
f8ffdc8b15

+ 5 - 0
sckw-modules/sckw-example/pom.xml

@@ -88,6 +88,11 @@
             <artifactId>sckw-message-api</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-order-api</artifactId>
+        </dependency>
+
         <!--junit-->
         <dependency>
             <groupId>junit</groupId>

+ 12 - 1
sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/MessageApiController.java

@@ -2,6 +2,8 @@ package com.sckw.example.controller;
 
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.message.api.dubbo.SmsInfoService;
+import com.sckw.order.api.dubbo.TradeOrderInfoService;
+import com.sckw.order.api.model.OrderDetailRes;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -9,7 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 /**
- * @desc: TODO
+ * @desc: 测试
  * @author: yzc
  * @date: 2023-06-13 14:20
  */
@@ -20,9 +22,18 @@ public class MessageApiController {
     @DubboReference(version = "2.0.0", group = "design", check = false)
     private SmsInfoService smsInfoService;
 
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private TradeOrderInfoService tradeOrderInfoService;
+
     @GetMapping("/getVerifyCode")
     public HttpResult getVerifyCode() {
         String verifyCode = smsInfoService.getVerifyCode("17780832879");
         return HttpResult.ok("获取验证码成功", verifyCode);
     }
+
+    @GetMapping("/getOrderDetail")
+    public HttpResult getOrderDetail() {
+        OrderDetailRes orderDetailById = tradeOrderInfoService.getOrderDetailById(162213167693303808L);
+        return HttpResult.ok("获取订单详情成功", orderDetailById);
+    }
 }

+ 2 - 2
sckw-modules/sckw-example/src/main/resources/bootstrap-dev.yml

@@ -5,7 +5,7 @@ spring:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-        namespace: sckw_lfdc
+        namespace: sckw-service-platform-dev
         # 共享配置
         group: sckw-service-platform
       config:
@@ -14,7 +14,7 @@ spring:
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw_lfdc
+        namespace: sckw-service-platform-dev
         # 共享配置
         group: sckw-service-platform
         #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组

+ 5 - 5
sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java

@@ -123,16 +123,16 @@ public class KwpGoodsController {
 
 
     /**
-     * @desc: 批量上架
+     * @desc: 单个上架
      * @author: yzc
      * @date: 2023-07-06 8:56
-     * @Param ids:
+     * @Param id:
      * @return: com.sckw.core.web.response.HttpResult
      */
     @GetMapping("/batchPutOnShelves")
-    public HttpResult batchPutOnShelves(@RequestParam List<Long> ids) {
-        kwpGoodsService.batchPutOnShelves(ids);
-        return HttpResult.ok("批量上架成功");
+    public HttpResult batchPutOnShelves(@RequestParam Long id) {
+        kwpGoodsService.batchPutOnShelves(id);
+        return HttpResult.ok("上架成功");
     }
 
     /**

+ 5 - 3
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddGoodsParam.java

@@ -1,9 +1,7 @@
 package com.sckw.product.model.vo.req;
 
 import jakarta.validation.Valid;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import jakarta.validation.constraints.Size;
+import jakarta.validation.constraints.*;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
@@ -26,6 +24,7 @@ public class AddGoodsParam {
      * 商品名称
      */
     @NotBlank(message = "商品名称不能为空")
+    @Length(max = 100, message = "商品名称最多支持100字")
     private String name;
 
     /**
@@ -50,6 +49,7 @@ public class AddGoodsParam {
      * 库存数量
      */
     @NotNull(message = "库存数量不能为空")
+    @DecimalMin(value = "0.00",message = "库存数量最小为零")
     private BigDecimal amount;
 
     /**
@@ -62,6 +62,7 @@ public class AddGoodsParam {
      * 发票税率(%)
      */
     @NotNull(message = "发票税率不能为空")
+    @DecimalMin(value = "0.00",message = "发票税率最小为零")
     private BigDecimal taxRate;
 
     /**
@@ -73,6 +74,7 @@ public class AddGoodsParam {
     /**
      * 预付款最低限额(万元)
      */
+    @DecimalMin(value = "0.00",message = "预付款最低限额最小为零")
     private BigDecimal advancePrice;
 
     /**

+ 6 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddressInfo.java

@@ -1,10 +1,12 @@
 package com.sckw.product.model.vo.req;
 
 import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Pattern;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 import org.apache.logging.log4j.core.config.plugins.validation.constraints.NotBlank;
+import org.hibernate.validator.constraints.Length;
 
 /**
  * @desc: 地址信息
@@ -20,6 +22,7 @@ public class AddressInfo {
      * 地址名称
      */
     @NotBlank(message = "地址名称不能为空")
+    @Length(max = 60,message = "地址名称最长60字符")
     private String name;
 
     /**
@@ -38,6 +41,7 @@ public class AddressInfo {
      * 联系电话
      */
     @NotBlank(message = "联系电话不能为空")
+    @Pattern(regexp = "^1[3456789]\\d{9}$", message = "非法手机号格式")
     private String phone;
 
     /**
@@ -50,12 +54,14 @@ public class AddressInfo {
      * 所属区域名称
      */
     @NotBlank(message = "所属区域名称不能为空")
+    @Length(max = 40,message = "所属区域名称最长40字符")
     private String cityName;
 
     /**
      * 详细地址
      */
     @NotBlank(message = "详细地址不能为空")
+    @Length(max = 40,message = "详细地址最长40字符")
     private String detailAddress;
 
     /**

+ 3 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GoodsAttributes.java

@@ -3,6 +3,7 @@ package com.sckw.product.model.vo.req;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
+import org.hibernate.validator.constraints.Length;
 
 /**
  * @desc: 添加商品属性
@@ -17,10 +18,12 @@ public class GoodsAttributes {
     /**
      * 参数名称
      */
+    @Length(max = 40,message = "参数名称最长40字符")
     private String name;
 
     /**
      * 参数值
      */
+    @Length(max = 40,message = "参数值最长40字符")
     private String val;
 }

+ 4 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GoodsPriceRanges.java

@@ -1,5 +1,6 @@
 package com.sckw.product.model.vo.req;
 
+import jakarta.validation.constraints.DecimalMin;
 import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
@@ -20,18 +21,21 @@ public class GoodsPriceRanges {
      * 起售量
      */
     @NotNull(message = "起售量不能为空")
+    @DecimalMin(value = "0.00",message = "起售量最小为零")
     private BigDecimal startAmount;
 
     /**
      * 上限售量
      */
     @NotNull(message = "上限售量不能为空")
+    @DecimalMin(value = "-1.00",message = "上限售量最小为零")
     private BigDecimal endAmount;
 
     /**
      * 含税价
      */
     @NotNull(message = "含税价不能为空")
+    @DecimalMin(value = "0.00", message = "含税价最低为零")
     private BigDecimal price;
 
     /**

+ 4 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/UpdateGoodsParam.java

@@ -1,5 +1,6 @@
 package com.sckw.product.model.vo.req;
 
+import jakarta.validation.constraints.DecimalMin;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Size;
 import lombok.Getter;
@@ -29,6 +30,7 @@ public class UpdateGoodsParam {
     /**
      * 商品名称
      */
+    @Length(max = 100, message = "商品名称最多支持100字")
     private String name;
 
     /**
@@ -49,6 +51,7 @@ public class UpdateGoodsParam {
     /**
      * 库存数量
      */
+    @DecimalMin(value = "0.00",message = "库存数量最小为零")
     private BigDecimal amount;
 
     /**
@@ -60,6 +63,7 @@ public class UpdateGoodsParam {
     /**
      * 发票税率(%)
      */
+    @DecimalMin(value = "0.00",message = "发票税率最小为零")
     private BigDecimal taxRate;
 
     /**

+ 97 - 22
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -34,11 +34,12 @@ import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
 /**
- * @desc: 商品service TODO
+ * @desc: 商品service
  * @author: yzc
  * @date: 2023-06-25 14:47
  */
@@ -159,14 +160,14 @@ public class KwpGoodsService {
      * @Param id:
      * @return: com.sckw.product.model.vo.res.GoodsDetail
      */
-    public GoodsDetail detail(Long id,Boolean isDubbo) {
+    public GoodsDetail detail(Long id, Boolean isDubbo) {
         KwpGoods goods;
         if (isDubbo) {
             goods = kwpGoodsMapper.selectById(id);
             if (Objects.isNull(goods)) {
                 return null;
             }
-        }else {
+        } else {
             goods = getGoodsById(id);
             if (Objects.isNull(goods)) {
                 throw new BusinessException("当前商品信息为空!");
@@ -293,8 +294,8 @@ public class KwpGoodsService {
      * @return: void
      */
     private void judgeParameters(@NotNull UpdateGoodsParam param) {
-        if (StringUtils.isBlank(param.getName())) {
-            throw new BusinessException("商品名称不能为空!");
+        if (StringUtils.isBlank(param.getName()) || param.getName().length() > 100) {
+            throw new BusinessException("商品名称不能为空且最长100字符!");
         }
         if (StringUtils.isBlank(param.getGoodsType())) {
             throw new BusinessException("商品类型不能为空!");
@@ -305,8 +306,8 @@ public class KwpGoodsService {
         if (StringUtils.isBlank(param.getSpec())) {
             throw new BusinessException("规格尺寸不能为空!");
         }
-        if (Objects.isNull(param.getAmount())) {
-            throw new BusinessException("库存数量不能为空!");
+        if (Objects.isNull(param.getAmount()) || param.getAmount().compareTo(BigDecimal.ZERO) < 0) {
+            throw new BusinessException("库存数量不能为空且最小为零!");
         }
         if (Objects.isNull(param.getTaxRate())) {
             throw new BusinessException("发票税率不能为空!");
@@ -317,22 +318,84 @@ public class KwpGoodsService {
         if (Objects.equals(param.getTrading(), DictEnum.TRADE_TYPE_0.getValue()) && Objects.isNull(param.getAdvancePrice())) {
             throw new BusinessException("交易方式为预付款时,预付款最低限额不能为空!");
         }
-        if (CollectionUtils.isEmpty(param.getPriceRanges())) {
+
+        List<GoodsAttributes> attributes = param.getAttributes();
+        if (CollectionUtils.isNotEmpty(attributes)) {
+            attributes.forEach(e -> {
+                if (StringUtils.isBlank(e.getName()) || e.getName().length() > 40) {
+                    throw new BusinessException("参数名称不能为空且最长40字符!");
+                }
+                if (StringUtils.isBlank(e.getVal()) || e.getVal().length() > 40) {
+                    throw new BusinessException("参数值不能为空且最长40字符!");
+                }
+            });
+        }
+        List<GoodsImages> images = param.getImages();
+        if (CollectionUtils.isNotEmpty(images)) {
+            images.forEach(e -> {
+                if (StringUtils.isBlank(e.getImage())) {
+                    throw new BusinessException("商品图片地址不能为空!");
+                }
+                if (Objects.isNull(e.getSort())) {
+                    throw new BusinessException("商品图片排序不能为空!");
+                }
+            });
+        }
+        List<GoodsPriceRanges> priceRanges = param.getPriceRanges();
+        if (CollectionUtils.isEmpty(priceRanges)) {
             throw new BusinessException("价格梯度不能为空!");
         }
+        priceRanges.forEach(e -> {
+            if (Objects.isNull(e.getStartAmount()) || e.getStartAmount().compareTo(BigDecimal.ZERO) < 0) {
+                throw new BusinessException("起售量最小为零!");
+            }
+            if (Objects.isNull(e.getEndAmount()) || e.getEndAmount().compareTo(new BigDecimal("-1.00")) < 0) {
+                throw new BusinessException("上限售量最小为零!");
+            }
+            if (Objects.isNull(e.getPrice()) || e.getStartAmount().compareTo(BigDecimal.ZERO) < 0) {
+                throw new BusinessException("含税价最低为零!");
+            }
+            if (Objects.isNull(e.getSort())) {
+                throw new BusinessException("梯度顺序不能为空!");
+            }
+        });
+        AddressInfo address = param.getAddressInfo();
+        if (Objects.isNull(address)) {
+            throw new BusinessException("地址信息不能为空!");
+        }
+        if (StringUtils.isBlank(address.getName()) || address.getName().length() > 60) {
+            throw new BusinessException("参数名称不能为空且最长60字符!");
+        }
+        if (StringUtils.isBlank(address.getType())) {
+            throw new BusinessException("地址类型不能为空!");
+        }
+        if (StringUtils.isBlank(address.getContacts())) {
+            throw new BusinessException("联系人不能为空!");
+        }
+        if (StringUtils.isBlank(address.getPhone())) {
+            throw new BusinessException("联系电话不能为空!");
+        }
+        if (Objects.isNull(address.getCityCode())) {
+            throw new BusinessException("所在地区code不能为空!");
+        }
+        if (StringUtils.isBlank(address.getCityName()) || address.getCityName().length() > 40) {
+            throw new BusinessException("所属区域名称不能为空最长40字符!");
+        }
+        if (Objects.isNull(address.getLat())) {
+            throw new BusinessException("纬度不能为空!");
+        }
+        if (Objects.isNull(address.getLng())) {
+            throw new BusinessException("经度不能为空!");
+        }
         if (Objects.isNull(param.getSupplyEntId())) {
             throw new BusinessException("供应企业不能为空!");
         }
-        if (Objects.isNull(param.getAddressInfo())) {
-            throw new BusinessException("地址信息不能为空!");
-        }
         if (Objects.isNull(param.getManager())) {
             throw new BusinessException("客户经理不能为空!");
         }
-        if (StringUtils.isBlank(param.getAmount())) {
-            throw new BusinessException("商品缩略图不能为空!");
+        if (StringUtils.isNotBlank(param.getRemark()) && param.getRemark().length() > 200) {
+            throw new BusinessException("备注最多支持200字!");
         }
-
     }
 
     /**
@@ -487,23 +550,35 @@ public class KwpGoodsService {
      * @desc: 批量上架
      * @author: yzc
      * @date: 2023-07-06 8:56
-     * @Param ids:
+     * @Param id:
      * @return: void
      */
-    public void batchPutOnShelves(List<Long> ids) {
+    public void batchPutOnShelves(Long id) {
         LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
-        wrapper.in(KwpGoods::getId, ids).in(KwpGoods::getStatus, 0, 2)
-                .eq(KwpGoods::getEntId, LoginUserHolder.getEntId()).eq(KwpGoods::getDelFlag, Global.NO);
-        List<KwpGoods> list = kwpGoodsMapper.selectList(wrapper);
-        if (!Objects.equals(ids.size(), list.size())) {
-            throw new BusinessException("上架操作仅针对“已下架”“草稿”状态的单据");
+        wrapper.eq(KwpGoods::getId, id).eq(KwpGoods::getEntId, LoginUserHolder.getEntId())
+                .eq(KwpGoods::getDelFlag, Global.NO).last("LIMIT 1");
+        KwpGoods goods = kwpGoodsMapper.selectOne(wrapper);
+        if (Objects.isNull(goods)) {
+            throw new BusinessException("商品不存在!");
+        }
+        if (Objects.equals(GoodsStatusEnum.PUT_ON_SHELVES.getCode(), goods.getStatus())) {
+            throw new BusinessException("上架操作仅针对“已下架”“草稿”状态的单据!");
+        }
+        if (Objects.equals(GoodsStatusEnum.SAVED.getCode(), goods.getStatus())) {
+            UpdateGoodsParam updateParam = BeanUtils.copyProperties(goods, UpdateGoodsParam.class);
+            updateParam.setAttributes(BeanUtils.copyToList(kwpGoodsAttributeService.getByGoodsId(id), GoodsAttributes.class));
+            updateParam.setPriceRanges(BeanUtils.copyToList(kwpGoodsPriceRangeService.getByGoodsId(id), GoodsPriceRanges.class));
+            updateParam.setImages(BeanUtils.copyToList(kwpGoodsImageService.getByGoodsId(id), GoodsImages.class));
+            updateParam.setAddressInfo(BeanUtils.copyProperties(kwpGoodsAddressService.getByGoodsId(id), AddressInfo.class));
+            judgeParameters(updateParam);
         }
         LambdaUpdateWrapper<KwpGoods> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.set(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).set(KwpGoods::getAddedTime, new Date())
-                .in(KwpGoods::getId, ids);
+                .eq(KwpGoods::getId, id);
         kwpGoodsMapper.update(null, updateWrapper);
     }
 
+
     /**
      * @desc: 批量下架
      * @author: yzc