yzc преди 2 години
родител
ревизия
013fc301f1
променени са 26 файла, в които са добавени 303 реда и са изтрити 113 реда
  1. 2 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageResult.java
  2. 9 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java
  3. 1 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwpTransportDemand.java
  4. 1 1
      sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwpWantBuy.java
  5. 2 10
      sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java
  6. 3 3
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/GoodsListExport.java
  7. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/KwpGoods.java
  8. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/AddGoodsParam.java
  9. 2 17
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/BuildingMaterialsMarketListParam.java
  10. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GoodsListParam.java
  11. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/SelectGoodsListParam.java
  12. 1 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/UpdateGoodsParam.java
  13. 24 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/AddressInfoDetail.java
  14. 10 3
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/BuildingMaterialsMarketList.java
  15. 19 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsAttributesDetail.java
  16. 26 15
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsDetail.java
  17. 20 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsImagesDetail.java
  18. 15 5
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsList.java
  19. 19 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsPriceRangesDetail.java
  20. 4 4
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsAddressService.java
  21. 3 3
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsAttributeService.java
  22. 4 4
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsImageService.java
  23. 2 2
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsPriceRangeService.java
  24. 114 35
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  25. 3 3
      sckw-modules/sckw-product/src/main/resources/mapper/KwpGoodsMapper.xml
  26. 15 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java

+ 2 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/page/PageResult.java

@@ -66,12 +66,12 @@ public class PageResult {
         this.list = pageInfo.getList();
     }
 
-    public static <T> PageResult build(Integer page, Integer pageSize, Integer totalCount, List<T> records) {
+    public static <T> PageResult build(Integer page, Integer pageSize, Long totalCount, List<T> records) {
         PageResult pageResult = new PageResult();
         pageResult.setPage(page);
         pageResult.setPageSize(pageSize);
         pageResult.setSize(totalCount);
-        pageResult.setPages((totalCount + pageSize - 1) / pageSize);
+        pageResult.setPages((int) ((totalCount + pageSize - 1) / pageSize));
         pageResult.setList(records);
         return pageResult;
     }

+ 9 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteSystemService.java

@@ -85,4 +85,13 @@ public interface RemoteSystemService {
      * @date: 2023/7/7
      */
     UserCacheResDto queryUserCacheById(Long userId);
+
+    /**
+     * @desc: 从缓存查用户信息
+     * @author: yzc
+     * @date: 2023-07-10 17:59
+     * @Param userIds:
+     * @return: java.util.List<com.sckw.system.api.model.dto.res.UserCacheResDto>
+     */
+    List<UserCacheResDto> queryUserCacheByIds(List<Long> userIds);
 }

+ 1 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwpTransportDemand.java

@@ -34,7 +34,7 @@ public class KwpTransportDemand extends BaseModel {
     /**
      * 商品分类
      */
-    private Long typeId;
+    private String goodsType;
 
     /**
      * 尺寸大小

+ 1 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwpWantBuy.java

@@ -34,7 +34,7 @@ public class KwpWantBuy extends BaseModel {
     /**
      * 商品分类
      */
-    private Long typeId;
+    private String goodsType;
 
     /**
      * 尺寸大小

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

@@ -1,12 +1,7 @@
 package com.sckw.product.controller;
 
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
-import com.sckw.core.model.page.PageHelperUtil;
-import com.sckw.core.model.page.PageResult;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.product.model.vo.req.*;
-import com.sckw.product.model.vo.res.BuildingMaterialsMarketList;
 import com.sckw.product.service.KwpGoodsService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.MediaType;
@@ -88,7 +83,7 @@ public class KwpGoodsController {
      */
     @PostMapping(value = "/select", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult select(@RequestBody SelectGoodsListParam params) {
-        return HttpResult.ok(kwpGoodsService.select(params,true));
+        return HttpResult.ok(kwpGoodsService.select(params, true));
     }
 
     /**
@@ -164,10 +159,7 @@ public class KwpGoodsController {
      */
     @PostMapping(value = "/buildingMaterialsMarketList", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult buildingMaterialsMarketList(@RequestBody BuildingMaterialsMarketListParam params) {
-        PageHelper.startPage(params.getPage(), params.getPageSize());
-        List<BuildingMaterialsMarketList> list = kwpGoodsService.buildingMaterialsMarketList(params);
-        PageResult result = PageHelperUtil.getPageResult(new PageInfo<>(list));
-        return HttpResult.ok(result);
+        return HttpResult.ok(kwpGoodsService.buildingMaterialsMarketList(params));
     }
 
     /**

+ 3 - 3
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/GoodsListExport.java

@@ -14,13 +14,13 @@ import lombok.experimental.Accessors;
 public class GoodsListExport {
 
     @ExcelProperty(value = "上架状态", index = 0)
-    private String status;
+    private String statusLabel;
 
     @ExcelProperty(value = "商品名称", index = 1)
     private String name;
 
     @ExcelProperty(value = "商品类别", index = 2)
-    private String type;
+    private String goodsTypeLabel;
 
     @ExcelProperty(value = "计量单位", index = 3)
     private String unit;
@@ -35,7 +35,7 @@ public class GoodsListExport {
     private String amount;
 
     @ExcelProperty(value = "交易方式", index = 7)
-    private String trading;
+    private String tradingLabel;
 
     @ExcelProperty(value = "最高单价", index = 8)
     private String highestPrice;

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

@@ -46,7 +46,7 @@ public class KwpGoods extends BaseModel {
     /**
      * 商品类型
      */
-    private Long typeId;
+    private String goodsType;
 
     /**
      * 库存数量

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

@@ -32,7 +32,7 @@ public class AddGoodsParam {
      * 商品类型
      */
     @NotNull(message = "商品类型不能为空")
-    private Long typeId;
+    private String goodsType;
 
     /**
      * 单位(吨、方、件、箱、其他)

+ 2 - 17
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/BuildingMaterialsMarketListParam.java

@@ -23,24 +23,9 @@ public class BuildingMaterialsMarketListParam extends PageRequest {
     private String keywords;
 
     /**
-     * 行业ids(不限为空)
+     * 商品类型集合(不限为空)
      */
-    private List<Long> industryIds;
-
-    /**
-     * 分类ids(不限为空)
-     */
-    private List<Long> classificationIds;
-
-    /**
-     * 类别ids(不限为空)
-     */
-    private List<Long> categoryIds;
-
-    /**
-     * 品名ids(不限为空)
-     */
-    private List<Long> productNameIds;
+    private List<String> goodsTypes;
 
     /**
      * 地区集合(全国为空)

+ 1 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/GoodsListParam.java

@@ -43,7 +43,7 @@ public class GoodsListParam {
     /**
      * 商品类型集合
      */
-    private List<Long> typeIds;
+    private List<String> goodsTypes;
 
     /**
      * 交易方式集合

+ 1 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/SelectGoodsListParam.java

@@ -44,7 +44,7 @@ public class SelectGoodsListParam extends PageRequest {
     /**
      * 商品类型集合
      */
-    private List<Long> typeIds;
+    private List<String> goodsTypes;
 
     /**
      * 交易方式集合

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

@@ -39,7 +39,7 @@ public class UpdateGoodsParam {
     /**
      * 商品类型
      */
-    private Long typeId;
+    private String goodsType;
 
     /**
      * 单位(吨、方、件、箱、其他)

+ 24 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/AddressInfoDetail.java

@@ -0,0 +1,24 @@
+package com.sckw.product.model.vo.res;
+
+import com.sckw.product.model.vo.req.AddressInfo;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 地址详情响应
+ * @author: yzc
+ * @date: 2023-07-10 14:46
+ */
+@Getter
+@Setter
+@ToString
+public class AddressInfoDetail extends AddressInfo {
+
+    private Long id;
+
+    /**
+     * 地址类型名称
+     */
+    private String typeName;
+}

+ 10 - 3
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/BuildingMaterialsMarketList.java

@@ -5,6 +5,8 @@ import lombok.Setter;
 import lombok.ToString;
 import lombok.experimental.Accessors;
 
+import java.math.BigDecimal;
+
 /**
  * @desc: 建材市场列表响应
  * @author: yzc
@@ -32,15 +34,20 @@ public class BuildingMaterialsMarketList {
     private String thumb;
 
     /**
-     * 品名(type)
+     * 商品类型label
      */
-    private String productName;
+    private String goodsTypeLabel;
 
     /**
      * 规格大小
      */
     private String spec;
 
+    /**
+     * 价格
+     */
+    private BigDecimal price;
+
     /**
      * 单位(吨、方、件、箱、其他)
      */
@@ -49,7 +56,7 @@ public class BuildingMaterialsMarketList {
     /**
      * 交易方式(预付款、货到付款、线下付款)
      */
-    private String trading;
+    private String tradingLabel;
 
     /**
      * 发货地

+ 19 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsAttributesDetail.java

@@ -0,0 +1,19 @@
+package com.sckw.product.model.vo.res;
+
+import com.sckw.product.model.vo.req.GoodsAttributes;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 添加商品属性
+ * @author: yzc
+ * @date: 2023-07-03 8:39
+ */
+@Getter
+@Setter
+@ToString
+public class GoodsAttributesDetail extends GoodsAttributes {
+
+    private Long id;
+}

+ 26 - 15
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsDetail.java

@@ -1,10 +1,6 @@
 package com.sckw.product.model.vo.res;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.sckw.product.model.vo.req.AddressInfo;
-import com.sckw.product.model.vo.req.GoodsAttributes;
-import com.sckw.product.model.vo.req.GoodsImages;
-import com.sckw.product.model.vo.req.GoodsPriceRanges;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
@@ -61,14 +57,14 @@ public class GoodsDetail {
     private String name;
 
     /**
-     * 商品类型id
+     * 商品类型
      */
-    private Long typeId;
+    private String goodsType;
 
     /**
-     * 商品类型
+     * 商品类型lab
      */
-    private String type;
+    private String goodsTypeLabel;
 
     /**
      * 库存数量
@@ -91,19 +87,29 @@ public class GoodsDetail {
     private BigDecimal taxRate;
 
     /**
-     * 交易方式(合同采购、直接采购、预付款、货到付款、到款发货)
+     * 交易方式(value)(合同采购、直接采购、预付款、货到付款、到款发货)
      */
     private String trading;
 
+    /**
+     * 交易方式名称(lab)(合同采购、直接采购、预付款、货到付款、到款发货)
+     */
+    private String tradingName;
+
     /**
      * 预付款最低限额
      */
     private BigDecimal advancePrice;
 
     /**
-     * 专属客户经理
+     * 专属客户经理id
      */
-    private String manager;
+    private Long manager;
+
+    /**
+     * 专属客户经理姓名
+     */
+    private String managerName;
 
     /**
      * 专属客户经理电话
@@ -142,24 +148,29 @@ public class GoodsDetail {
      */
     private Integer status;
 
+    /**
+     * 状态label
+     */
+    private String statusLabel;
+
     /**
      * 商品详情图片
      */
-    private List<GoodsImages> images;
+    private List<GoodsImagesDetail> images;
 
     /**
      * 地址信息
      */
-    private AddressInfo addressInfo;
+    private AddressInfoDetail addressInfo;
 
     /**
      * 价格梯度
      */
-    private List<GoodsPriceRanges> priceRanges;
+    private List<GoodsPriceRangesDetail> priceRanges;
 
     /**
      * 参数目录
      */
-    private List<GoodsAttributes> attributes;
+    private List<GoodsAttributesDetail> attributes;
 
 }

+ 20 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsImagesDetail.java

@@ -0,0 +1,20 @@
+package com.sckw.product.model.vo.res;
+
+import com.sckw.product.model.vo.req.GoodsImages;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 商品图片
+ * @author: yzc
+ * @date: 2023-07-03 8:39
+ */
+@Getter
+@Setter
+@ToString
+public class GoodsImagesDetail extends GoodsImages {
+
+
+    private Long id;
+}

+ 15 - 5
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsList.java

@@ -30,20 +30,25 @@ public class GoodsList {
      */
     private Integer status;
 
+    /**
+     * 状态label
+     */
+    private String statusLabel;
+
     /**
      * 商品名称
      */
     private String name;
 
     /**
-     * 商品类型id
+     * 商品类型
      */
-    private Long typeId;
+    private String goodsType;
 
     /**
-     * 商品类型
+     * 商品类型Label
      */
-    private String type;
+    private String goodsTypeLabel;
 
     /**
      * 计量单位(吨、方、件、箱、其他)
@@ -66,10 +71,15 @@ public class GoodsList {
     private BigDecimal amount;
 
     /**
-     * 交易方式(合同采购、直接采购、预付款、货到付款、到款发货
+     * 交易方式(预付款、货到付款、线下支付
      */
     private String trading;
 
+    /**
+     * 交易方式label
+     */
+    private String tradingLabel;
+
     /**
      * 最高单价
      */

+ 19 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsPriceRangesDetail.java

@@ -0,0 +1,19 @@
+package com.sckw.product.model.vo.res;
+
+import com.sckw.product.model.vo.req.GoodsPriceRanges;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 价格梯度详情响应
+ * @author: yzc
+ * @date: 2023-07-10 14:47
+ */
+@Getter
+@Setter
+@ToString
+public class GoodsPriceRangesDetail extends GoodsPriceRanges {
+
+    private Long id;
+}

+ 4 - 4
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsAddressService.java

@@ -50,15 +50,15 @@ public class KwpGoodsAddressService {
     }
 
     /**
-     * @desc: 根据商品id删除
+     * @desc: 根据商品ids删除
      * @author: yzc
      * @date: 2023-07-06 15:04
-     * @Param goodsId:
+     * @Param goodsIds:
      * @return: void
      */
-    public void delByGoodsId(Long goodsId) {
+    public void delByGoodsIds(List<Long> goodsIds) {
         LambdaUpdateWrapper<KwpGoodsAddress> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.eq(KwpGoodsAddress::getGoodsId, goodsId).eq(KwpGoodsAddress::getDelFlag, Global.NO)
+        wrapper.in(KwpGoodsAddress::getGoodsId, goodsIds).eq(KwpGoodsAddress::getDelFlag, Global.NO)
                 .set(KwpGoodsAddress::getDelFlag, Global.YES);
         kwpGoodsAddressMapper.update(null, wrapper);
     }

+ 3 - 3
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsAttributeService.java

@@ -51,12 +51,12 @@ public class KwpGoodsAttributeService {
      * @desc: 删除商品相关属性
      * @author: yzc
      * @date: 2023-07-06 15:00
-     * @Param goodsId:
+     * @Param goodsIds:
      * @return: void
      */
-    public void delByGoodsId(Long goodsId) {
+    public void delByGoodsIds(List<Long> goodsIds) {
         LambdaUpdateWrapper<KwpGoodsAttribute> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.eq(KwpGoodsAttribute::getGoodsId, goodsId).eq(KwpGoodsAttribute::getDelFlag, Global.NO)
+        wrapper.in(KwpGoodsAttribute::getGoodsId, goodsIds).eq(KwpGoodsAttribute::getDelFlag, Global.NO)
                 .set(KwpGoodsAttribute::getDelFlag, Global.YES);
         kwpGoodsAttributeMapper.update(null, wrapper);
     }

+ 4 - 4
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsImageService.java

@@ -49,15 +49,15 @@ public class KwpGoodsImageService {
     }
 
     /**
-     * @desc: 根据商品id删除
+     * @desc: 根据商品ids删除
      * @author: yzc
      * @date: 2023-07-06 15:04
-     * @Param goodsId:
+     * @Param goodsIds:
      * @return: void
      */
-    public void delByGoodsId(Long goodsId) {
+    public void delByGoodsIds(List<Long> goodsIds) {
         LambdaUpdateWrapper<KwpGoodsImage> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.eq(KwpGoodsImage::getGoodsId, goodsId).eq(KwpGoodsImage::getDelFlag, Global.NO)
+        wrapper.in(KwpGoodsImage::getGoodsId, goodsIds).eq(KwpGoodsImage::getDelFlag, Global.NO)
                 .set(KwpGoodsImage::getDelFlag, Global.YES);
         kwpGoodsImageMapper.update(null, wrapper);
     }

+ 2 - 2
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsPriceRangeService.java

@@ -56,9 +56,9 @@ public class KwpGoodsPriceRangeService {
      * @Param goodsId:
      * @return: void
      */
-    public void delByGoodsId(Long goodsId) {
+    public void delByGoodsIds(List<Long> goodsIds) {
         LambdaUpdateWrapper<KwpGoodsPriceRange> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.eq(KwpGoodsPriceRange::getGoodsId, goodsId).eq(KwpGoodsPriceRange::getDelFlag, Global.NO)
+        wrapper.in(KwpGoodsPriceRange::getGoodsId, goodsIds).eq(KwpGoodsPriceRange::getDelFlag, Global.NO)
                 .set(KwpGoodsPriceRange::getDelFlag, Global.YES);
         kwpGoodsPriceRangeMapper.update(null, wrapper);
     }

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

@@ -4,6 +4,8 @@ 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.sckw.core.common.enums.enums.DictEnum;
+import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.exception.BusinessException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.page.PageResult;
@@ -20,12 +22,10 @@ import com.sckw.product.dao.KwpGoodsMapper;
 import com.sckw.product.enums.GoodsStatusEnum;
 import com.sckw.product.model.*;
 import com.sckw.product.model.vo.req.*;
-import com.sckw.product.model.vo.res.BuildingMaterialsMarketList;
-import com.sckw.product.model.vo.res.GoodsDetail;
-import com.sckw.product.model.vo.res.GoodsDropList;
-import com.sckw.product.model.vo.res.GoodsList;
+import com.sckw.product.model.vo.res.*;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -82,6 +82,9 @@ public class KwpGoodsService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void addShelves(AddGoodsParam addGoodsParam) {
+        if (Objects.equals(addGoodsParam.getTrading(), DictEnum.TRADE_TYPE_0.getValue()) && Objects.isNull(addGoodsParam.getAdvancePrice())) {
+            throw new BusinessException("交易方式为预付款时,预付款最低限额不能为空!");
+        }
         Long entId = LoginUserHolder.getEntId();
         //添加商品信息
         KwpGoods goods = BeanUtils.copyProperties(addGoodsParam, KwpGoods.class);
@@ -151,19 +154,28 @@ public class KwpGoodsService {
             throw new BusinessException("当前商品信息为空!");
         }
         GoodsDetail detail = BeanUtils.copyProperties(goods, GoodsDetail.class);
+        List<EntCacheResDto> entCacheList = remoteSystemService.queryEntCacheByIds(Arrays.asList(detail.getEntId(), detail.getSupplyEntId()));
+        Map<Long, String> entMap = entCacheList.stream().collect(Collectors.toMap(EntCacheResDto::getId, EntCacheResDto::getFirmName, (k1, k2) -> k1));
+        detail.setEnt(entMap.get(detail.getEntId())).setSupplyEnt(entMap.get(detail.getSupplyEntId()));
+        UserCacheResDto managerInfo = remoteSystemService.queryUserCacheById(detail.getManager());
+        if (Objects.nonNull(managerInfo)) {
+            detail.setManagerName(managerInfo.getName()).setManagerPhone(managerInfo.getPhone());
+        }
+        detail.setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), detail.getGoodsType()))
+                .setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(detail.getStatus())));
         //商品图片信息
         List<KwpGoodsImage> goodsImages = kwpGoodsImageService.getByGoodsId(id);
-        List<GoodsImages> images = BeanUtils.copyToList(goodsImages, GoodsImages.class);
+        List<GoodsImagesDetail> images = BeanUtils.copyToList(goodsImages, GoodsImagesDetail.class);
         //商品价格段信息
         List<KwpGoodsPriceRange> priceRanges = kwpGoodsPriceRangeService.getByGoodsId(id);
-        List<GoodsPriceRanges> ranges = BeanUtils.copyToList(priceRanges, GoodsPriceRanges.class);
+        List<GoodsPriceRangesDetail> ranges = BeanUtils.copyToList(priceRanges, GoodsPriceRangesDetail.class);
         //商品属性信息
         List<KwpGoodsAttribute> attributesList = kwpGoodsAttributeService.getByGoodsId(id);
-        List<GoodsAttributes> attributes = BeanUtils.copyToList(attributesList, GoodsAttributes.class);
+        List<GoodsAttributesDetail> attributes = BeanUtils.copyToList(attributesList, GoodsAttributesDetail.class);
         //商品地址信息
         KwpGoodsAddress goodsAddress = kwpGoodsAddressService.getByGoodsId(id);
-        AddressInfo addressInfo = BeanUtils.copyProperties(goodsAddress, AddressInfo.class);
-
+        AddressInfoDetail addressInfo = BeanUtils.copyProperties(goodsAddress, AddressInfoDetail.class);
+        addressInfo.setTypeName(DictEnum.getLabel(DictTypeEnum.ADDRESS_TYPE.getType(), addressInfo.getType()));
         detail.setImages(images).setPriceRanges(ranges).setAttributes(attributes).setAddressInfo(addressInfo);
 
         return detail;
@@ -207,13 +219,13 @@ public class KwpGoodsService {
     private void updateGoodsOtherInfo(UpdateGoodsParam param) {
         Long goodsId = param.getId();
         //更新商品地址信息
-        kwpGoodsAddressService.delByGoodsId(goodsId);
+        kwpGoodsAddressService.delByGoodsIds(Collections.singletonList(goodsId));
         KwpGoodsAddress address = BeanUtils.copyProperties(param.getAddressInfo(), KwpGoodsAddress.class);
         address.setGoodsId(goodsId);
         kwpGoodsAddressService.insert(address);
 
         //更新商品属性信息
-        kwpGoodsAttributeService.delByGoodsId(goodsId);
+        kwpGoodsAttributeService.delByGoodsIds(Collections.singletonList(goodsId));
         if (CollectionUtils.isNotEmpty(param.getAttributes())) {
             List<KwpGoodsAttribute> list = new ArrayList<>(param.getAttributes().size());
             param.getAttributes().forEach(e -> {
@@ -225,7 +237,7 @@ public class KwpGoodsService {
         }
 
         //更新商品图片信息
-        kwpGoodsImageService.delByGoodsId(goodsId);
+        kwpGoodsImageService.delByGoodsIds(Collections.singletonList(goodsId));
         if (CollectionUtils.isNotEmpty(param.getImages())) {
             List<KwpGoodsImage> list = new ArrayList<>(param.getImages().size());
             param.getImages().forEach(e -> {
@@ -237,7 +249,7 @@ public class KwpGoodsService {
         }
 
         //更新商品价格梯度信息
-        kwpGoodsPriceRangeService.delByGoodsId(goodsId);
+        kwpGoodsPriceRangeService.delByGoodsIds(Collections.singletonList(goodsId));
         if (CollectionUtils.isNotEmpty(param.getPriceRanges())) {
             List<KwpGoodsPriceRange> list = new ArrayList<>(param.getPriceRanges().size());
             param.getPriceRanges().forEach(e -> {
@@ -260,7 +272,7 @@ public class KwpGoodsService {
         if (StringUtils.isBlank(param.getName())) {
             throw new BusinessException("商品名称不能为空!");
         }
-        if (Objects.isNull(param.getTypeId())) {
+        if (StringUtils.isBlank(param.getGoodsType())) {
             throw new BusinessException("商品类型不能为空!");
         }
         if (StringUtils.isBlank(param.getUnit())) {
@@ -275,9 +287,12 @@ public class KwpGoodsService {
         if (Objects.isNull(param.getTaxRate())) {
             throw new BusinessException("发票税率不能为空!");
         }
-        if (Objects.isNull(param.getTrading())) {
+        if (StringUtils.isBlank(param.getTrading())) {
             throw new BusinessException("交易方式不能为空!");
         }
+        if (Objects.equals(param.getTrading(), DictEnum.TRADE_TYPE_0.getValue()) && Objects.isNull(param.getAdvancePrice())) {
+            throw new BusinessException("交易方式为预付款时,预付款最低限额不能为空!");
+        }
         if (CollectionUtils.isEmpty(param.getPriceRanges())) {
             throw new BusinessException("价格梯度不能为空!");
         }
@@ -307,27 +322,49 @@ public class KwpGoodsService {
         IPage<KwpGoods> goodsIpage = getGoodsLists(params, isPage);
         List<KwpGoods> goodsLists = goodsIpage.getRecords();
         if (CollectionUtils.isEmpty(goodsLists)) {
-            return PageResult.build(params.getPage(), params.getPageSize(), (int) goodsIpage.getTotal(), Collections.emptyList());
+            return PageResult.build(params.getPage(), params.getPageSize(), goodsIpage.getTotal(), Collections.emptyList());
         }
         List<GoodsList> result = new ArrayList<>(goodsLists.size());
-        List<Long> goodsIds = goodsLists.stream().map(KwpGoods::getId).toList();
+        List<Long> goodsIds = new ArrayList<>(goodsLists.size());
+        List<Long> supplyEntIds = new ArrayList<>(goodsLists.size());
+        List<Long> userIds = new ArrayList<>();
+        goodsLists.forEach(e -> {
+            goodsIds.add(e.getId());
+            supplyEntIds.add(e.getSupplyEntId());
+            userIds.add(e.getManager());
+            userIds.add(e.getCreateBy());
+        });
         //地址信息
         Map<Long, KwpGoodsAddress> addressMap = kwpGoodsAddressService.getByGoodsIds(goodsIds)
                 .stream().collect(Collectors.toMap(KwpGoodsAddress::getGoodsId, e -> e, (k1, k2) -> k1));
         //价格梯度信息
         Map<Long, List<KwpGoodsPriceRange>> priceRangeMap = kwpGoodsPriceRangeService.getByGoodsIds(goodsIds)
                 .stream().collect(Collectors.groupingBy(KwpGoodsPriceRange::getGoodsId));
-
+        //用户信息
+        List<UserCacheResDto> userList = remoteSystemService.queryUserCacheByIds(userIds);
+        Map<Long, UserCacheResDto> userMap = userList.stream().collect(Collectors.toMap(UserCacheResDto::getId, e -> e, (k1, k2) -> k1));
+        //供应企业信息
+        List<EntCacheResDto> entList = remoteSystemService.queryEntCacheByIds(supplyEntIds);
+        Map<Long, String> entMap = entList.stream().collect(Collectors.toMap(EntCacheResDto::getId, EntCacheResDto::getFirmName, (k1, k2) -> k1));
         goodsLists.forEach(e -> {
             Long id = e.getId();
             GoodsList goodsList = BeanUtils.copyProperties(e, GoodsList.class);
-            goodsList.setAddress(Objects.isNull(addressMap.get(id)) ? null : addressMap.get(id).getDetailAddress());
+            UserCacheResDto manager = userMap.get(e.getManager());
+            UserCacheResDto createUser = userMap.get(e.getCreateBy());
+            goodsList.setStatusLabel(DictEnum.getLabel(DictTypeEnum.GOODS_STATUS.getType(), String.valueOf(goodsList.getStatus())))
+                    .setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), goodsList.getGoodsType()))
+                    .setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), goodsList.getTrading()))
+                    .setManageName(Objects.nonNull(manager) ? manager.getName() : null)
+                    .setPhone(Objects.nonNull(manager) ? manager.getPhone() : null)
+                    .setSupplyEnt(Objects.nonNull(entMap.get(e.getSupplyEntId())) ? entMap.get(e.getSupplyEntId()) : null)
+                    .setAddress(Objects.isNull(addressMap.get(id)) ? null : addressMap.get(id).getDetailAddress())
+                    .setCreateByName(Objects.nonNull(createUser) ? createUser.getName() : null);
             List<KwpGoodsPriceRange> priceRanges = priceRangeMap.get(id);
-            goodsList.setHighestPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(priceRanges.size() - 1).getPrice());
-            goodsList.setLowestPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(0).getPrice());
+            goodsList.setHighestPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(priceRanges.size() - 1).getPrice())
+                    .setLowestPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(0).getPrice());
             result.add(goodsList);
         });
-        return PageResult.build(params.getPage(), params.getPageSize(), (int) goodsIpage.getTotal(), result);
+        return PageResult.build(params.getPage(), params.getPageSize(), goodsIpage.getTotal(), result);
     }
 
     /**
@@ -338,6 +375,13 @@ public class KwpGoodsService {
      * @return: java.util.List<com.sckw.product.model.KwpGoods>
      */
     private IPage<KwpGoods> getGoodsLists(SelectGoodsListParam params, Boolean isPage) {
+        List<Long> entIds = new ArrayList<>();
+        if (StringUtils.isNotBlank(params.getKeywords())) {
+            List<EntCacheResDto> entList = remoteSystemService.queryEntCacheByName(params.getKeywords());
+            if (CollectionUtils.isNotEmpty(entList)) {
+                entIds = entList.stream().map(EntCacheResDto::getId).toList();
+            }
+        }
         LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
         if (CollectionUtils.isNotEmpty(params.getIds())) {
             wrapper.in(KwpGoods::getId, params.getIds());
@@ -346,13 +390,14 @@ public class KwpGoodsService {
                     .ge(Objects.nonNull(params.getStartCreateTime()), KwpGoods::getCreateTime, params.getStartCreateTime())
                     .le(Objects.nonNull(params.getEndCreateTime()), KwpGoods::getCreateTime, params.getEndCreateTime())
                     .in(CollectionUtils.isNotEmpty(params.getTradings()), KwpGoods::getTrading, params.getTradings())
-                    .in(CollectionUtils.isNotEmpty(params.getTypeIds()), KwpGoods::getTypeId, params.getTypeIds())
+                    .in(CollectionUtils.isNotEmpty(params.getGoodsTypes()), KwpGoods::getGoodsType, params.getGoodsTypes())
+                    .in(CollectionUtils.isNotEmpty(entIds), KwpGoods::getSupplyEntId, entIds)
                     .in(CollectionUtils.isNotEmpty(params.getStatus()), KwpGoods::getStatus, params.getStatus());
         }
         wrapper.eq(KwpGoods::getEntId, LoginUserHolder.getEntId()).eq(KwpGoods::getDelFlag, Global.NO).orderByDesc(KwpGoods::getCreateTime);
         IPage<KwpGoods> goodsIpage = new Page<>();
-        Page<KwpGoods> page = new Page<>(params.getPage(), params.getPageSize());
         if (isPage) {
+            Page<KwpGoods> page = new Page<>(params.getPage(), params.getPageSize());
             goodsIpage = kwpGoodsMapper.selectPage(page, wrapper);
         } else {
             List<KwpGoods> list = kwpGoodsMapper.selectList(wrapper);
@@ -400,10 +445,8 @@ public class KwpGoodsService {
         List<GoodsListExport> list = new ArrayList<>();
         goodsLists.forEach(e -> {
             GoodsListExport export = BeanUtils.copyProperties(e, GoodsListExport.class);
-            export.setStatus(GoodsStatusEnum.getNameByCode(e.getStatus()))
-                    .setType("砂石").setTaxRate(String.valueOf(e.getTaxRate())).setAmount(String.valueOf(e.getAmount()))
-                    .setTrading("线下付款").setHighestPrice(String.valueOf(e.getHighestPrice()))
-                    .setLowestPrice(String.valueOf(e.getLowestPrice()))
+            export.setTaxRate(String.valueOf(e.getTaxRate())).setAmount(String.valueOf(e.getAmount()))
+                    .setHighestPrice(String.valueOf(e.getHighestPrice())).setLowestPrice(String.valueOf(e.getLowestPrice()))
                     .setAddedTime(Objects.isNull(e.getAddedTime()) ? null : DateUtil.getDateTime(e.getAddedTime()))
                     .setAddedTime(Objects.isNull(e.getShelfTime()) ? null : DateUtil.getDateTime(e.getShelfTime()));
             list.add(export);
@@ -464,6 +507,7 @@ public class KwpGoodsService {
      * @Param ids:
      * @return: void
      */
+    @Transactional(rollbackFor = Exception.class)
     public void batchDelete(List<Long> ids) {
         LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
         wrapper.in(KwpGoods::getId, ids).in(KwpGoods::getStatus, 0, 2)
@@ -475,6 +519,10 @@ public class KwpGoodsService {
         LambdaUpdateWrapper<KwpGoods> updateWrapper = new LambdaUpdateWrapper<>();
         updateWrapper.set(KwpGoods::getDelFlag, Global.YES).in(KwpGoods::getId, ids);
         kwpGoodsMapper.update(null, updateWrapper);
+        kwpGoodsAddressService.delByGoodsIds(ids);
+        kwpGoodsAttributeService.delByGoodsIds(ids);
+        kwpGoodsImageService.delByGoodsIds(ids);
+        kwpGoodsPriceRangeService.delByGoodsIds(ids);
     }
 
 
@@ -483,18 +531,49 @@ public class KwpGoodsService {
      * @author: yzc
      * @date: 2023-07-06 9:38
      * @Param params:
-     * @return: java.util.List<com.sckw.product.model.vo.res.BuildingMaterialsMarketList>
+     * @return: com.sckw.core.model.page.PageResult
      */
-    public List<BuildingMaterialsMarketList> buildingMaterialsMarketList(BuildingMaterialsMarketListParam params) {
-        List<Long> typeIds = params.getCategoryIds();
+    public PageResult buildingMaterialsMarketList(BuildingMaterialsMarketListParam params) {
+        Page<KwpGoods> page = new Page<>(params.getPage(), params.getPageSize());
         LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
         wrapper.like(StringUtils.isNotBlank(params.getKeywords()), KwpGoods::getName, params.getKeywords())
-                .in(CollectionUtils.isNotEmpty(typeIds), KwpGoods::getTypeId, typeIds)
+                .in(CollectionUtils.isNotEmpty(params.getGoodsTypes()), KwpGoods::getGoodsType, params.getGoodsTypes())
                 .in(CollectionUtils.isNotEmpty(params.getTradings()), KwpGoods::getTrading, params.getTradings())
                 .eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode()).eq(KwpGoods::getDelFlag, Global.NO);
-        List<KwpGoods> list = kwpGoodsMapper.selectList(wrapper);
-        List<BuildingMaterialsMarketList> result = BeanUtils.copyToList(list, BuildingMaterialsMarketList.class);
-        return result;
+        Page<KwpGoods> kwpGoodsPage = kwpGoodsMapper.selectPage(page, wrapper);
+        List<KwpGoods> list = kwpGoodsPage.getRecords();
+        if (CollectionUtils.isEmpty(list)) {
+            return PageResult.build(params.getPage(), params.getPageSize(), kwpGoodsPage.getTotal(), Collections.emptyList());
+        }
+        List<BuildingMaterialsMarketList> result = new ArrayList<>(list.size());
+        List<Long> goodsIds = new ArrayList<>(list.size());
+        List<Long> supplyEntIds = new ArrayList<>(list.size());
+        list.forEach(e -> {
+            goodsIds.add(e.getId());
+            supplyEntIds.add(e.getSupplyEntId());
+        });
+        //地址信息
+        Map<Long, KwpGoodsAddress> addressMap = kwpGoodsAddressService.getByGoodsIds(goodsIds)
+                .stream().collect(Collectors.toMap(KwpGoodsAddress::getGoodsId, e -> e, (k1, k2) -> k1));
+        //价格梯度信息
+        Map<Long, List<KwpGoodsPriceRange>> priceRangeMap = kwpGoodsPriceRangeService.getByGoodsIds(goodsIds)
+                .stream().collect(Collectors.groupingBy(KwpGoodsPriceRange::getGoodsId));
+        //供应企业信息
+        List<EntCacheResDto> entList = remoteSystemService.queryEntCacheByIds(supplyEntIds);
+        Map<Long, String> entMap = entList.stream().collect(Collectors.toMap(EntCacheResDto::getId, EntCacheResDto::getFirmName, (k1, k2) -> k1));
+
+        list.forEach(e -> {
+            BuildingMaterialsMarketList materials = BeanUtils.copyProperties(e, BuildingMaterialsMarketList.class);
+            KwpGoodsAddress address = addressMap.get(e.getId());
+            List<KwpGoodsPriceRange> priceRanges = priceRangeMap.get(e.getId());
+            materials.setAddress(Objects.isNull(address) ? null : address.getCityName() + address.getDetailAddress())
+                    .setPrice(CollectionUtils.isEmpty(priceRanges) ? null : priceRanges.get(0).getPrice())
+                    .setGoodsTypeLabel(DictEnum.getLabel(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), e.getGoodsType()))
+                    .setTradingLabel(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
+                    .setSupplyEnt(entMap.get(e.getSupplyEntId()));
+            result.add(materials);
+        });
+        return PageResult.build(params.getPage(), params.getPageSize(), kwpGoodsPage.getTotal(), result);
     }
 
 

+ 3 - 3
sckw-modules/sckw-product/src/main/resources/mapper/KwpGoodsMapper.xml

@@ -25,9 +25,9 @@
                     #{item}
                 </foreach>
             </if>
-            <if test="queryParam.typeIds != null and queryParam.typeIds.size() > 0 ">
-                and typeId in
-                <foreach item="item" index="index" collection="#{queryParam.typeIds}" open="(" separator="," close=")">
+            <if test="queryParam.goodsTypes != null and queryParam.goodsTypes.size() > 0 ">
+                and goods_type in
+                <foreach item="item" index="index" collection="#{queryParam.goodsTypes}" open="(" separator="," close=")">
                     #{item}
                 </foreach>
             </if>

+ 15 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteSystemServiceImpl.java

@@ -264,6 +264,21 @@ public class RemoteSystemServiceImpl implements RemoteSystemService {
         return JSONObject.parseObject(dictCache, UserCacheResDto.class);
     }
 
+    @Override
+    public List<UserCacheResDto> queryUserCacheByIds(List<Long> userIds) {
+        if (CollectionUtils.isEmpty(userIds)) {
+            return Collections.emptyList();
+        }
+        List<UserCacheResDto> list = new ArrayList<>();
+        userIds.stream().distinct().toList().forEach(e -> {
+            UserCacheResDto dto = queryUserCacheById(e);
+            if (Objects.nonNull(dto)) {
+                list.add(dto);
+            }
+        });
+        return list;
+    }
+
     /**
      * @param id 父id,需要遍历的list
      * @return SysDictGroupResDto