diff --git a/cash-api/product-server/src/main/java/com/czg/controller/admin/ProdGroupController.java b/cash-api/product-server/src/main/java/com/czg/controller/admin/ProdGroupController.java index c98f7c32..246a195f 100644 --- a/cash-api/product-server/src/main/java/com/czg/controller/admin/ProdGroupController.java +++ b/cash-api/product-server/src/main/java/com/czg/controller/admin/ProdGroupController.java @@ -94,7 +94,23 @@ public class ProdGroupController { public CzgResult updateProdGroup(@RequestBody @Validated({UpdateGroup.class, DefaultGroup.class}) ProdGroupDTO dto) { Long shopId = StpKit.USER.getShopId(0L); dto.setShopId(shopId); - prodGroupService.updateProdGroup(dto); + prodGroupService.updateProdGroup(dto,true); + ThreadUtil.execAsync(() -> { + rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId)); + }); + return CzgResult.success(); + } + + /** + * 修改 + */ + @PutMapping + @OperationLog("商品分组-修改") + //@SaAdminCheckPermission("prodGroup:update") + public CzgResult updateProdGroupV2(@RequestBody ProdGroupDTO dto) { + Long shopId = StpKit.USER.getShopId(0L); + dto.setShopId(shopId); + prodGroupService.updateProdGroup(dto,false); ThreadUtil.execAsync(() -> { rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId)); }); diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/entity/ProdGroup.java b/cash-common/cash-common-service/src/main/java/com/czg/product/entity/ProdGroup.java index 6c2b87f9..cf0e8638 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/entity/ProdGroup.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/entity/ProdGroup.java @@ -50,7 +50,7 @@ public class ProdGroup implements Serializable { */ private Integer sort; /** - * 排序方式 0-默认; 1-价格从高到低; 2-销量由高到低; + * 排序方式 0-默认; 1-价格从高到低; 2-价格从低到高; 3-销量由高到低; */ private String sortMode; /** diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProdGroupService.java b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProdGroupService.java index a723fc4b..15b3b064 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProdGroupService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ProdGroupService.java @@ -56,8 +56,9 @@ public interface ProdGroupService extends IService { * 更新商品分组 * * @param dto 商品分组DTO + * @param isUpdateProduct 是否需要修改分组下的商品 */ - void updateProdGroup(ProdGroupDTO dto); + void updateProdGroup(ProdGroupDTO dto,boolean isUpdateProduct); /** * 禁用商品分组 diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java index b0a64208..ef56c0fd 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java @@ -109,4 +109,8 @@ public class ShopProductVo implements Serializable { * 排序 */ private Integer sort; + /** + * 销量 + */ + private BigDecimal salesVolume; } diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProdGroupServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProdGroupServiceImpl.java index 473e2661..bf9adb21 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProdGroupServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProdGroupServiceImpl.java @@ -88,7 +88,7 @@ public class ProdGroupServiceImpl extends ServiceImpl imp @Override @Cacheable(value = CacheConstant.USER_CLIENT_GROUPS_PRODUCT, key = "#shopId", unless = "#result.isEmpty()") public List queryGroupProductList(Long shopId) { - List groupList = prodGroupMapper.selectListByQueryAs(query().select(ProdGroup::getId, - ProdGroup::getName, ProdGroup::getUseTime, ProdGroup::getSaleStartTime, ProdGroup::getSaleEndTime) - .eq(ProdGroup::getShopId, shopId).eq(ProdGroup::getStatus, StatusEnum.ENABLED.value()) - .orderBy(ProdGroup::getSort, true), ShopGroupProductVo.class); + List groupList = prodGroupMapper.selectListByQueryAs( + query().select(ProdGroup::getId, ProdGroup::getName, ProdGroup::getSortMode, ProdGroup::getUseTime, ProdGroup::getSaleStartTime, ProdGroup::getSaleEndTime) + .eq(ProdGroup::getShopId, shopId).eq(ProdGroup::getStatus, StatusEnum.ENABLED.value()) + .orderBy(ProdGroup::getSort, true), ShopGroupProductVo.class); List productAllList = productMapper.selectGroupProductList(shopId); productAllList.forEach(item -> { item.setIsSaleTime(calcIsSaleTime(item.getDays(), item.getStartTime(), item.getEndTime())); @@ -112,13 +112,16 @@ public class UProductServiceImpl extends ServiceImpl imp product.setIsSaleTime(isSaleTime); }); -// switch (group.getSortMode()) { -// case "0" -> productList.sort(Comparator.comparing(ShopProductVo::getSalePrice)); -// case "1" -> productList.sort((o1, o2) -> o2.getSalePrice().compareTo(o1.getSalePrice())); -// case "2" -> productList.sort((o1, o2) -> o2.getSort().compareTo(o1.getSort())); -// -// } - productList.sort(Comparator.comparing(ShopProductVo::getSalePrice)); + // 1-价格从高到低; 2-价格从低到高; 3-销量由高到低;4-销量由低到高; + if("1".equals(group.getSortMode())){ + productList = productList.stream().sorted(Comparator.comparing(ShopProductVo::getSalePrice).reversed()).toList(); + }else if("2".equals(group.getSortMode())){ + productList = productList.stream().sorted(Comparator.comparing(ShopProductVo::getSalePrice)).toList(); + }else if("3".equals(group.getSortMode())){ + productList = productList.stream().sorted(Comparator.comparing(ShopProductVo::getSalesVolume).reversed()).toList(); + }else if("4".equals(group.getSortMode())){ + productList = productList.stream().sorted(Comparator.comparing(ShopProductVo::getSalesVolume)).toList(); + } group.setProductList(productList); } return groupList.stream().filter(group -> CollUtil.isNotEmpty(group.getProductList())).toList(); diff --git a/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml b/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml index 58b4badb..86459c68 100644 --- a/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml +++ b/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml @@ -91,20 +91,22 @@ ifnull(t2.suit_num, 1) as suit_num, t1.select_spec_info, t1.group_snap, - t1.pack_fee + t1.pack_fee, + ifnull(t4.sales_volume, 0) as sales_volume from tb_product t1 - left join (select x.product_id, - x.id as sku_id, - MIN(x.sale_price) as sale_price, - x.origin_price, - x.member_price, - x.suit_num - from tb_prod_sku x - where x.is_del = 0 - and x.is_grounding = 1 - and x.shop_id = #{shopId} - group by x.product_id) t2 on t1.id = t2.product_id - left join tb_shop_prod_unit t3 on t1.unit_id = t3.id + left join (select x.product_id, + x.id as sku_id, + MIN(x.sale_price) as sale_price, + x.origin_price, + x.member_price, + x.suit_num + from tb_prod_sku x + where x.is_del = 0 + and x.is_grounding = 1 + and x.shop_id = #{shopId} + group by x.product_id) t2 on t1.id = t2.product_id + left join tb_shop_prod_unit t3 on t1.unit_id = t3.id + left join (select product_id,sum(num) as sales_volume from tb_order_detail where pay_amount is not null group by product_id) t4 on t1.id = t4.product_id