拼团商品

This commit is contained in:
2025-12-16 09:53:39 +08:00
parent 92d507dea3
commit e9551fe3b9
22 changed files with 462 additions and 97 deletions

View File

@@ -0,0 +1,14 @@
package com.czg.service.market.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.market.entity.GbWare;
/**
* 拼团商品 映射层。
*
* @author ww
* @since 2025-12-15
*/
public interface GbWareMapper extends BaseMapper<GbWare> {
}

View File

@@ -0,0 +1,93 @@
package com.czg.service.market.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.czg.account.service.ShopInfoService;
import com.czg.exception.CzgException;
import com.czg.market.dto.GbWareDTO;
import com.czg.market.dto.GbWareQueryParamDTO;
import com.czg.market.entity.GbWare;
import com.czg.market.service.GbWareService;
import com.czg.sa.StpKit;
import com.czg.service.market.mapper.GbWareMapper;
import com.czg.utils.AssertUtil;
import com.czg.utils.CzgStrUtils;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.stereotype.Service;
/**
* 拼团商品 服务层实现。
*
* @author ww
* @since 2025-12-15
*/
@Service
public class GbWareServiceImpl extends ServiceImpl<GbWareMapper, GbWare> implements GbWareService {
@DubboReference
private ShopInfoService shopInfoService;
@Override
public Page<GbWare> getGbWarePage(GbWareQueryParamDTO param, Long shopId) {
Long mainShopId = shopInfoService.getMainIdByShopId(shopId);
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq(GbWare::getShopId, mainShopId)
.eq(GbWare::getIsDel, 0)
.eq(GbWare::getOnlineStatus, param.getOnlineStatus())
.like(GbWare::getWareName, CzgStrUtils.getStrOrNull(param.getWareName()))
.between(GbWare::getCreateTime, param.getStartTime(), param.getEndTime())
.orderBy(GbWare::getCreateTime).desc();
queryWrapper.and(q -> {
q.eq(GbWare::getUseShopType, "all").or(q1 -> {
q1.eq(GbWare::getUseShopType, "only").eq(GbWare::getShopId, shopId);
}).or(q2 -> {
q2.eq(GbWare::getUseShopType, "custom").and(q3 -> {
q3.eq(GbWare::getShopId, shopId).or("FIND_IN_SET( " + shopId + ", use_shops ) > 0");
});
});
});
return page(Page.of(param.getPage(), param.getSize()), queryWrapper);
}
@Override
public boolean addGbWare(GbWareDTO param) {
if ("custom".equals(param.getUseShopType())) {
AssertUtil.isBlank(param.getUseShops(), "请配置可用门店");
}
GbWare gbWare = BeanUtil.toBean(param, GbWare.class);
return save(gbWare);
}
@Override
public boolean editGbWareOnlineStatus(Long id, Integer onlineStatus) {
GbWare gbWare = new GbWare();
gbWare.setOnlineStatus(onlineStatus);
return update(gbWare, query().eq(GbWare::getId, id).eq(GbWare::getShopId, StpKit.USER.getShopId()));
}
@Override
public boolean updateGbWareById(GbWareDTO param) {
checkStatus(param.getId());
if ("custom".equals(param.getUseShopType())) {
AssertUtil.isBlank(param.getUseShops(), "请配置可用门店");
}
GbWare gbWare = BeanUtil.toBean(param, GbWare.class);
return updateById(gbWare);
}
@Override
public boolean deleteGbWare(Long id) {
checkStatus(id);
return remove(query().eq(GbWare::getId, id).eq(GbWare::getShopId, StpKit.USER.getShopId()));
}
private void checkStatus(Long id) {
GbWare ware = getById(id);
if (ware.getOnlineStatus() == 1) {
throw new CzgException("操作失败,请下架后,重试");
}
}
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.market.mapper.GbWareMapper">
</mapper>