Explorar o código

1.冻账明细倒序排列
2.商品接口更新

donglang hai 2 meses
pai
achega
0b59781154

+ 1 - 1
pom.xml

@@ -384,7 +384,7 @@
             <id>dev</id>
             <properties>
                 <profiles.active>dev</profiles.active>
-                <nacos.server>10.10.10.230:8848</nacos.server>
+                <nacos.server>10.10.10.224:8848</nacos.server>
                 <nacos.namespace>sckw-ng-service-platform-dev</nacos.namespace>
             </properties>
         </profile>

+ 1 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/PasswordUtils.java

@@ -363,7 +363,7 @@ public class PasswordUtils {
     }
 
     public static void main(String[] args) throws Exception {
-        String account = "19912341234";
+        String account = "admin";
         String password = "123456";
         String salt = generateSalt();
         System.out.println(salt);

+ 1 - 1
sckw-common/sckw-common-remote/src/main/java/com/sckw/remote/annotation/SckwRemoteApplication.java

@@ -11,6 +11,6 @@ import java.lang.annotation.*;
 @Inherited
 @EnableDubbo
 @EnableFeignClients({"com.sckw.*.api.feign"})
-@ComponentScan(basePackages = {"com.sckw.file.config","com.sckw.payment.config","com.sckw.remote.filter","com.sckw.*.controller", "com.sckw.*.service","com.sckw.*.repository", "com.sckw.*.dubbo", "com.sckw.*.model"})
+@ComponentScan(basePackages = {"com.sckw.file.config","com.sckw.payment.config","com.sckw.fleet.config","com.sckw.remote.filter","com.sckw.*.controller", "com.sckw.*.service","com.sckw.*.repository", "com.sckw.*.dubbo", "com.sckw.*.model"})
 public @interface SckwRemoteApplication {
 }

+ 1 - 0
sckw-modules/pom.xml

@@ -31,6 +31,7 @@
     <properties>
         <!--模块版本-->
         <contract.revision>1.1.0</contract.revision>
+        <example.revision>1.1.0</example.revision>
         <file.revision>1.1.0</file.revision>
         <fleet.revision>1.1.0</fleet.revision>
         <manage.revision>1.2.0</manage.revision>

+ 2 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/wallet/KwpBizWalletService.java

@@ -390,6 +390,7 @@ public class KwpBizWalletService {
         log.info("分页查询钱包冻账明细,入参:{}", JSONObject.toJSONString(request));
         Page<KwpBizWalletPrepay> page = new Page<>(request.getPage(), request.getPageSize());
         LambdaQueryWrapper<KwpBizWalletPrepay> queryWrapper = Wrappers.<KwpBizWalletPrepay>lambdaQuery()
+                .eq(KwpBizWalletPrepay::getWalletId, request.getWalletId())
                 .eq(request.getType() != null, KwpBizWalletPrepay::getType, request.getType())
                 .like(StringUtils.isNotBlank(request.getRemark()), KwpBizWalletPrepay::getRemark, request.getRemark())
                 .ge(request.getMinAmount() != null, KwpBizWalletPrepay::getAmount, request.getMinAmount())
@@ -421,7 +422,7 @@ public class KwpBizWalletService {
                     return pageResp;
                 }).collect(Collectors.toList());
 
-        walletPrepayPageList.sort(Comparator.comparing(KwpBizWalletPrepayPageResponse::getCreateTime));
+        walletPrepayPageList.sort(Comparator.comparing(KwpBizWalletPrepayPageResponse::getCreateTime).reversed());
         PageDataResult<KwpBizWalletPrepayPageResponse> walletPrepayPageResponse = PageDataResult
                 .success(request.getPage(), request.getPageSize(), (long) walletPrepayPageList.size(), walletPrepayPageList);
         log.info("分页查询钱包冻账明细成功,结果:{}", JSONObject.toJSONString(walletPrepayPageResponse));

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

@@ -13,6 +13,8 @@ import com.sckw.product.model.vo.req.*;
 import com.sckw.product.model.vo.res.GoodsInfoResp;
 import com.sckw.product.service.KwpGoodsService;
 import com.sckw.product.service.KwpGoodsUnitService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.Valid;
@@ -27,6 +29,7 @@ import java.util.List;
  * @author: yzc
  * @date: 2023-07-03 8:28
  */
+@Tag(name = "商品管理", description = "提供商品相关操作接口")
 @RestController
 @RequestMapping(value = "/kwpGoods")
 @RequiredArgsConstructor
@@ -57,6 +60,7 @@ public class KwpGoodsController {
      * @return: com.sckw.core.web.response.HttpResult
      */
     @RepeatSubmit(interval = 1000,message ="前方拥堵,请稍后尝试")
+    @Operation(summary = "添加商品上架", description = "添加商品上架")
     @PostMapping(value = "/addShelves", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult addShelves(@RequestBody @Validated AddGoodsParam addGoodsParam) {
         kwpGoodsService.addShelves(addGoodsParam);

+ 6 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/KwpGoods.java

@@ -131,4 +131,10 @@ public class KwpGoods extends BaseModel implements Serializable {
      */
     @TableField("price_unit")
     private String priceUnit;
+
+    /**
+     * 轴数
+     */
+    @TableField("car_axis")
+    private String carAxis;
 }

+ 25 - 15
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddGoodsParam.java

@@ -1,5 +1,6 @@
 package com.sckw.product.model.vo.req;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.*;
 import lombok.Getter;
@@ -23,6 +24,7 @@ public class AddGoodsParam {
     /**
      * 商品名称
      */
+    @Schema(description = "商品名称")
     @NotBlank(message = "商品名称不能为空")
     @Length(max = 50, message = "商品名称最多支持50字")
     private String name;
@@ -30,24 +32,28 @@ public class AddGoodsParam {
     /**
      * 商品类型
      */
+    @Schema(description = "商品类型")
     @NotBlank(message = "商品类型不能为空")
     private String goodsType;
 
     /**
      * 单位(吨、方、件、箱、其他)
      */
+    @Schema(description = "单位")
     @NotBlank(message = "计量单位不能为空")
     private String unit;
 
     /**
      * 规格尺寸
      */
+    @Schema(description = "规格尺寸")
     @Length(max = 20, message = "规格尺寸最多支持20字")
     private String spec;
 
     /**
      * 库存数量
      */
+    @Schema(description = "库存数量")
     @NotNull(message = "库存数量不能为空")
     @DecimalMin(value = "0.01", message = "库存数量必须大于零")
     private BigDecimal amount;
@@ -55,43 +61,42 @@ public class AddGoodsParam {
     /**
      * 参数目录
      */
+    @Schema(description = "参数目录")
     @Size(max = 10, message = "参数目录最多支持10个")
     @Valid
     private List<GoodsAttributes> attributes;
 
     /**
-     * 发票税率
+     * 商品编码
      */
-    private String taxRate;
+    @Schema(description = "商品编码")
+    private String code;
 
     /**
-     * 是否设置预付限额0否1是
+     * 轴数
      */
-    private Integer prepaidLimit;
+    @Schema(description = "轴数")
+    private String carAxis;
 
     /**
-     * 预付款最低限额(万元)
+     * 参考价格(元)
      */
-    @DecimalMin(value = "0.01", message = "预付款最低限额必须大于零")
-    private BigDecimal advancePrice;
-
-    /**
-     * 价格梯度
-     */
-    @Size(max = 4, message = "价格梯度最多4个")
-    @NotEmpty(message = "价格梯度不能为空")
-    @Valid
-    private List<GoodsPriceRanges> priceRanges;
+    @Schema(description = "参考价格(元)")
+    @NotNull(message = "参考价格(元)")
+    @DecimalMin(value = "0.01", message = "参考价格必须大于零")
+    private BigDecimal price;
 
     /**
      * 供应企业
      */
+    @Schema(description = "供应企业")
     @NotNull(message = "供应企业不能为空")
     private Long supplyEntId;
 
     /**
      * 地址信息
      */
+    @Schema(description = "地址信息")
     @NotNull(message = "地址信息不能为空")
     @Valid
     private AddressInfo addressInfo;
@@ -99,23 +104,27 @@ public class AddGoodsParam {
     /**
      * 专属客户经理(用户ID)
      */
+    @Schema(description = "专属客户经理")
     @NotNull(message = "客户经理不能为空")
     private Long manager;
 
     /**
      * 备注
      */
+    @Schema(description = "备注")
     @Length(max = 200, message = "备注最多支持200字")
     private String remark;
 
     /**
      * 商品缩略图
      */
+    @Schema(description = "商品缩略图")
     private String thumb;
 
     /**
      * 商品详情图片
      */
+    @Schema(description = "商品详情图片")
     @Size(max = 5, message = "商品详情图片最多支持5张")
     @Valid
     private List<GoodsImages> images;
@@ -123,6 +132,7 @@ public class AddGoodsParam {
     /**
      * 辅助单位
      */
+    @Schema(description = "辅助单位")
     private List<GoodsUnitParam> assistUnit;
 
 }

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

@@ -1,5 +1,6 @@
 package com.sckw.product.model.vo.req;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import jakarta.validation.constraints.Pattern;
@@ -21,24 +22,28 @@ public class AddressInfo {
     /**
      * 地址名称
      */
+    @Schema(description = "地址名称")
     @NotBlank(message = "地址名称不能为空")
     private String name;
 
     /**
      * 地址类型
      */
+    @Schema(description = "地址类型")
     @NotNull(message = "地址类型不能为空")
     private String type;
 
     /**
      * 联系人
      */
+    @Schema(description = "联系人")
     @NotBlank(message = "联系人不能为空")
     private String contacts;
 
     /**
      * 联系电话
      */
+    @Schema(description = "联系电话")
     @NotBlank(message = "联系电话不能为空")
     @Pattern(regexp = "^1[3456789]\\d{9}$", message = "非法手机号格式")
     private String phone;
@@ -46,12 +51,14 @@ public class AddressInfo {
     /**
      * 所在地区
      */
+    @Schema(description = "所在地区")
     @NotNull(message = "所在地区code不能为空")
     private Integer cityCode;
 
     /**
      * 所属区域名称
      */
+    @Schema(description = "所属区域名称")
     @NotBlank(message = "所属区域名称不能为空")
     @Length(max = 50,message = "所属区域名称最长50字符")
     private String cityName;
@@ -59,24 +66,28 @@ public class AddressInfo {
     /**
      * 详细地址
      */
+    @Schema(description = "详细地址")
     @NotBlank(message = "详细地址不能为空")
     private String detailAddress;
 
     /**
      * 纬度
      */
+    @Schema(description = "纬度")
     @NotBlank(message = "纬度不能为空")
     private String lat;
 
     /**
      * 经度
      */
+    @Schema(description = "经度")
     @NotBlank(message = "经度不能为空")
     private String lng;
 
     /**
      * 电子围栏
      */
+    @Schema(description = "电子围栏")
     private String fence;
 
 }

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

@@ -1,5 +1,6 @@
 package com.sckw.product.model.vo.req;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
@@ -18,12 +19,14 @@ public class GoodsAttributes {
     /**
      * 参数名称
      */
+    @Schema(description = "供应商企业id")
     @Length(max = 10,message = "参数名称最长10字符")
     private String name;
 
     /**
      * 参数值
      */
+    @Schema(description = "供应商企业id")
     @Length(max = 20,message = "参数值最长20字符")
     private String val;
 }

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

@@ -1,5 +1,6 @@
 package com.sckw.product.model.vo.req;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
@@ -20,12 +21,14 @@ public class GoodsImages {
     /**
      * 图片地址
      */
+    @Schema(description = "供应商企业id")
     @NotBlank(message = "图片地址不能为空")
     private String image;
 
     /**
      * 图片排序
      */
+    @Schema(description = "供应商企业id")
     @NotNull(message = "图片排序不能为空")
     private Integer sort;
 }

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

@@ -1,5 +1,6 @@
 package com.sckw.product.model.vo.req;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.io.Serial;
@@ -19,15 +20,18 @@ public class GoodsUnitParam implements Serializable {
     /**
      * 被转换单位
      */
+    @Schema(description = "供应商企业id")
     private String fromUnit;
 
     /**
      * 转换目标单位
      */
+    @Schema(description = "供应商企业id")
     private String toUnit;
 
     /**
      * 换算值
      */
+    @Schema(description = "供应商企业id")
     private Double conversionValue;
 }

+ 7 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsDetail.java

@@ -5,6 +5,7 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
+
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
@@ -95,6 +96,11 @@ public class GoodsDetail {
      */
     private BigDecimal amount;
 
+    /**
+     * 轴数
+     */
+    private String carAxis;
+
     /**
      * 单位(吨、方、件、箱、其他)
      */
@@ -200,7 +206,7 @@ public class GoodsDetail {
     /**
      * 价格梯度
      */
-    private List<GoodsPriceRangesDetail> priceRanges;
+    private BigDecimal priceRanges;
 
     /**
      * 参数目录

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.exception.CustomPromptException;
@@ -126,18 +127,19 @@ public class KwpGoodsService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void addShelves(AddGoodsParam param) {
-        if (Objects.equals(param.getPrepaidLimit(), 1) && Objects.isNull(param.getAdvancePrice())) {
-            throw new BusinessException("设置预付限额时,预付款最低限额不能为空!");
-        }
         if (nameDuplicationJudgment(param.getName(), param.getSupplyEntId(), null)) {
             throw new BusinessException("已存在相同商品名称!");
         }
         //添加商品信息
         KwpGoods goods = BeanUtils.copyProperties(param, KwpGoods.class);
         AddressInfo address = param.getAddressInfo();
-        goods.setCode(NumberUtils.createRandomVcode()).setAreaCode(address.getCityCode()).setAddressName(address.getName())
-                .setThumb(FileUtils.replaceAll(goods.getThumb())).setEntId(LoginUserHolder.getEntId())
-                .setAddedTime(new Date()).setStatus(GoodsStatusEnum.PUT_ON_SHELVES.getCode());
+        goods.setCode(param.getCode())
+                .setAreaCode(address.getCityCode())
+                .setAddressName(address.getName())
+                .setThumb(FileUtils.replaceAll(goods.getThumb()))
+                .setEntId(LoginUserHolder.getEntId())
+                .setAddedTime(new Date())
+                .setStatus(GoodsStatusEnum.PUT_ON_SHELVES.getCode());
         kwpGoodsMapper.insert(goods);
         //添加商品其他信息
         addGoodsOtherInfo(goods.getId(), param);
@@ -181,16 +183,13 @@ public class KwpGoodsService {
             });
             kwpGoodsImageService.insertBatch(list);
         }
-        //添加商品价格梯度信息
-        List<GoodsPriceRanges> priceRanges = addGoodsParam.getPriceRanges();
-        if (CollectionUtils.isNotEmpty(priceRanges)) {
-            List<KwpGoodsPriceRange> list = new ArrayList<>(priceRanges.size());
-            priceRanges.forEach(e -> {
-                KwpGoodsPriceRange priceRange = BeanUtils.copyProperties(e, KwpGoodsPriceRange.class);
-                priceRange.setGoodsId(goodsId);
-                list.add(priceRange);
-            });
-            kwpGoodsPriceRangeService.insertBatch(list);
+        //添加商品价格
+        BigDecimal price = addGoodsParam.getPrice();
+        if (price != null) {
+            KwpGoodsPriceRange priceRange = new KwpGoodsPriceRange();
+            priceRange.setGoodsId(goodsId);
+            priceRange.setPrice(price);
+            kwpGoodsPriceRangeService.insertBatch(Lists.newArrayList(priceRange));
         }
         //添加商品辅助单位信息
         List<GoodsUnitParam> assistUnit = addGoodsParam.getAssistUnit();
@@ -278,13 +277,13 @@ public class KwpGoodsService {
                 DictTypeEnum.ADDRESS_TYPE.getType()));
         Map<String, String> productNameMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         Map<String, String> unitMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
-        Map<String, String> taxRateMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+//        Map<String, String> taxRateMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         Map<String, String> goodsStatusMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         Map<String, String> addressMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
         if (CollectionUtils.isNotEmpty(dict)) {
             productNameMap = dict.get(DictTypeEnum.PRODUCT_NAME_TYPE.getType());
             unitMap = dict.get(DictTypeEnum.UNIT_TYPE.getType());
-            taxRateMap = dict.get(DictTypeEnum.TAX_RATE.getType());
+//            taxRateMap = dict.get(DictTypeEnum.TAX_RATE.getType());
             goodsStatusMap = dict.get(DictTypeEnum.GOODS_STATUS.getType());
             addressMap = dict.get(DictTypeEnum.ADDRESS_TYPE.getType());
         }
@@ -295,9 +294,9 @@ public class KwpGoodsService {
         }
         detail.setGoodsTypeLabel(CollectionUtils.isNotEmpty(productNameMap) ? productNameMap.get(detail.getGoodsType()) : null)
                 .setUnitLabel(CollectionUtils.isNotEmpty(unitMap) ? unitMap.get(detail.getUnit()) : null)
-                .setTaxRateLabel(CollectionUtils.isNotEmpty(taxRateMap) ? taxRateMap.get(detail.getTaxRate()) : null)
-                .setStatusLabel(CollectionUtils.isNotEmpty(goodsStatusMap) ? goodsStatusMap.get(String.valueOf(detail.getStatus())) : null)
-                .setPrepaidLimitLabel(Objects.equals(detail.getPrepaidLimit(), 1) ? "是" : "否");
+//                .setTaxRateLabel(CollectionUtils.isNotEmpty(taxRateMap) ? taxRateMap.get(detail.getTaxRate()) : null)
+                .setStatusLabel(CollectionUtils.isNotEmpty(goodsStatusMap) ? goodsStatusMap.get(String.valueOf(detail.getStatus())) : null);
+//                .setPrepaidLimitLabel(Objects.equals(detail.getPrepaidLimit(), 1) ? "是" : "否");
         //商品图片信息
         if (Objects.nonNull(goods.getThumb())) {
             detail.setThumb(FileUtils.splice(goods.getThumb()));
@@ -307,13 +306,14 @@ public class KwpGoodsService {
             e.setImage(FileUtils.splice(e.getImage()));
         });
         List<GoodsImagesDetail> images = BeanUtils.copyToList(goodsImages, GoodsImagesDetail.class);
-        //商品价格段信息
+        //商品价格
         List<KwpGoodsPriceRange> priceRanges = kwpGoodsPriceRangeService.getByGoodsId(id);
-        List<GoodsPriceRangesDetail> ranges = BeanUtils.copyToList(priceRanges, GoodsPriceRangesDetail.class);
-        ranges.stream().filter(r -> r.getEndAmount().compareTo(new BigDecimal("-1.00")) == 0)
-                .forEach(r -> {
-                    r.setEndAmountLabel("不限");
-                });
+        BigDecimal price = Optional.ofNullable(priceRanges)
+                .filter(list -> !list.isEmpty())
+                .map(list -> list.get(0))
+                .map(KwpGoodsPriceRange::getPrice)
+                .orElse(null);
+
         //商品属性信息
         List<KwpGoodsAttribute> attributesList = kwpGoodsAttributeService.getByGoodsId(id);
         List<GoodsAttributesDetail> attributes = BeanUtils.copyToList(attributesList, GoodsAttributesDetail.class);
@@ -333,7 +333,7 @@ public class KwpGoodsService {
                 e.setToUnitName(finalUnitMap != null ? finalUnitMap.get(e.getToUnit()) : null);
             });
         }
-        detail.setImages(images).setPriceRanges(ranges).setAttributes(attributes).setAddressInfo(addressInfo).setAssistUnit(assistUnit);
+        detail.setImages(images).setPriceRanges(price).setAttributes(attributes).setAddressInfo(addressInfo).setAssistUnit(assistUnit);
         return detail;
     }