商品分组排序需求
This commit is contained in:
parent
90be23cc09
commit
a77ecb4170
|
|
@ -94,7 +94,23 @@ public class ProdGroupController {
|
|||
public CzgResult<Void> 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<Void> updateProdGroupV2(@RequestBody ProdGroupDTO dto) {
|
||||
Long shopId = StpKit.USER.getShopId(0L);
|
||||
dto.setShopId(shopId);
|
||||
prodGroupService.updateProdGroup(dto,false);
|
||||
ThreadUtil.execAsync(() -> {
|
||||
rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public class ProdGroup implements Serializable {
|
|||
*/
|
||||
private Integer sort;
|
||||
/**
|
||||
* 排序方式 0-默认; 1-价格从高到低; 2-销量由高到低;
|
||||
* 排序方式 0-默认; 1-价格从高到低; 2-价格从低到高; 3-销量由高到低;
|
||||
*/
|
||||
private String sortMode;
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -56,8 +56,9 @@ public interface ProdGroupService extends IService<ProdGroup> {
|
|||
* 更新商品分组
|
||||
*
|
||||
* @param dto 商品分组DTO
|
||||
* @param isUpdateProduct 是否需要修改分组下的商品
|
||||
*/
|
||||
void updateProdGroup(ProdGroupDTO dto);
|
||||
void updateProdGroup(ProdGroupDTO dto,boolean isUpdateProduct);
|
||||
|
||||
/**
|
||||
* 禁用商品分组
|
||||
|
|
|
|||
|
|
@ -109,4 +109,8 @@ public class ShopProductVo implements Serializable {
|
|||
* 排序
|
||||
*/
|
||||
private Integer sort;
|
||||
/**
|
||||
* 销量
|
||||
*/
|
||||
private BigDecimal salesVolume;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ public class ProdGroupServiceImpl extends ServiceImpl<ProdGroupMapper, ProdGroup
|
|||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#dto.shopId", allEntries = true)
|
||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#dto.shopId", allEntries = true)
|
||||
public void addProdGroup(ProdGroupDTO dto) {
|
||||
Long shopId = StpKit.USER.getShopId(0L);
|
||||
boolean exists = super.exists(query().eq(ProdGroup::getName, dto.getName()).eq(ProdGroup::getShopId, shopId));
|
||||
|
|
@ -114,8 +114,8 @@ public class ProdGroupServiceImpl extends ServiceImpl<ProdGroupMapper, ProdGroup
|
|||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#dto.shopId", allEntries = true)
|
||||
public void updateProdGroup(ProdGroupDTO dto) {
|
||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#dto.shopId", allEntries = true)
|
||||
public void updateProdGroup(ProdGroupDTO dto, boolean isUpdateProduct) {
|
||||
Long shopId = StpKit.USER.getShopId(0L);
|
||||
dto.setShopId(shopId);
|
||||
boolean exists = super.exists(query().eq(ProdGroup::getName, dto.getName()).eq(ProdGroup::getShopId, shopId).ne(ProdGroup::getId, dto.getId()));
|
||||
|
|
@ -124,6 +124,9 @@ public class ProdGroupServiceImpl extends ServiceImpl<ProdGroupMapper, ProdGroup
|
|||
}
|
||||
ProdGroup entity = BeanUtil.copyProperties(dto, ProdGroup.class);
|
||||
super.updateById(entity);
|
||||
if (!isUpdateProduct) {
|
||||
return;
|
||||
}
|
||||
prodGroupRelationMapper.deleteByQuery(query().eq(ProdGroupRelation::getProdGroupId, entity.getId()));
|
||||
Long[] productIds = dto.getProductIds();
|
||||
if (ArrayUtil.isNotEmpty(productIds)) {
|
||||
|
|
@ -141,14 +144,14 @@ public class ProdGroupServiceImpl extends ServiceImpl<ProdGroupMapper, ProdGroup
|
|||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#shopId", allEntries = true)
|
||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#shopId", allEntries = true)
|
||||
public void deleteProdGroup(Long shopId, Long id) {
|
||||
super.remove(query().eq(ProdGroup::getId, id).eq(ProdGroup::getShopId, shopId));
|
||||
prodGroupRelationMapper.deleteByQuery(query().eq(ProdGroupRelation::getProdGroupId, id));
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#shopId", allEntries = true)
|
||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#shopId", allEntries = true)
|
||||
public void disableProdGroup(Long shopId, Long id) {
|
||||
UpdateChain.of(ProdGroup.class)
|
||||
.set(ProdGroup::getStatus, StatusEnum.DISABLE.value())
|
||||
|
|
@ -160,7 +163,7 @@ public class ProdGroupServiceImpl extends ServiceImpl<ProdGroupMapper, ProdGroup
|
|||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT, ADMIN_CLIENT_PRODUCT_LIST}, key = "#shopId", allEntries = true)
|
||||
@CacheEvict(value = {CacheConstant.USER_CLIENT_HOTS_PRODUCT, CacheConstant.USER_CLIENT_GROUPS_PRODUCT}, key = "#shopId", allEntries = true)
|
||||
public void enableProdGroup(Long shopId, Long id) {
|
||||
UpdateChain.of(ProdGroup.class)
|
||||
.set(ProdGroup::getStatus, StatusEnum.ENABLED.value())
|
||||
|
|
|
|||
|
|
@ -74,10 +74,10 @@ public class UProductServiceImpl extends ServiceImpl<ProductMapper, Product> imp
|
|||
@Override
|
||||
@Cacheable(value = CacheConstant.USER_CLIENT_GROUPS_PRODUCT, key = "#shopId", unless = "#result.isEmpty()")
|
||||
public List<ShopGroupProductVo> queryGroupProductList(Long shopId) {
|
||||
List<ShopGroupProductVo> 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<ShopGroupProductVo> 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<ShopProductVo> 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<ProductMapper, Product> 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();
|
||||
|
|
|
|||
|
|
@ -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
|
||||
</sql>
|
||||
<select id="selectProductPage" resultType="com.czg.product.dto.ProductDTO">
|
||||
<include refid="productQuery"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue