满减活动

This commit is contained in:
2025-10-13 15:53:08 +08:00
parent 46faa2cf16
commit ccf791b53b
13 changed files with 572 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
package com.czg.service.market.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.market.entity.MkDiscountActivity;
/**
* 商家满减活动表 映射层。
*
* @author ww
* @since 2025-10-13
*/
public interface MkDiscountActivityMapper extends BaseMapper<MkDiscountActivity> {
}

View File

@@ -0,0 +1,14 @@
package com.czg.service.market.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.market.entity.MkDiscountThreshold;
/**
* 商家满减活动明细表 映射层。
*
* @author ww
* @since 2025-10-13
*/
public interface MkDiscountThresholdMapper extends BaseMapper<MkDiscountThreshold> {
}

View File

@@ -0,0 +1,87 @@
package com.czg.service.market.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.czg.TimeQueryParam;
import com.czg.market.dto.MkDiscountActivityDTO;
import com.czg.market.dto.ShopCouponDTO;
import com.czg.market.entity.MkDiscountThreshold;
import com.czg.market.entity.ShopCoupon;
import com.czg.sa.StpKit;
import com.czg.service.market.mapper.MkDiscountThresholdMapper;
import com.czg.utils.PageUtil;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.market.entity.MkDiscountActivity;
import com.czg.market.service.MkDiscountActivityService;
import com.czg.service.market.mapper.MkDiscountActivityMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
/**
* 商家满减活动表 服务层实现。
*
* @author ww
* @since 2025-10-13
*/
@Service
public class MkDiscountActivityServiceImpl extends ServiceImpl<MkDiscountActivityMapper, MkDiscountActivity> implements MkDiscountActivityService {
@Resource
private MkDiscountThresholdMapper thresholdMapper;
@Override
public Page<MkDiscountActivityDTO> getActivityPage(TimeQueryParam param, Long shopId) {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq(MkDiscountActivity::getShopId, shopId)
.eq(MkDiscountActivity::getIsDel, 0)
.lt(MkDiscountActivity::getValidStartTime, param.getStartTime())
.le(MkDiscountActivity::getValidEndTime, param.getEndTime())
.orderBy(MkDiscountActivity::getSort).desc()
.orderBy(MkDiscountActivity::getUpdateTime).desc();
Page<MkDiscountActivityDTO> page = pageAs(PageUtil.buildPage(), queryWrapper, MkDiscountActivityDTO.class);
page.getRecords().forEach(
item -> item.setThresholds(thresholdMapper.selectListByQuery(
new QueryWrapper().eq(MkDiscountThreshold::getActivityId, item.getId())
))
);
return page;
}
@Override
public void addActivity(MkDiscountActivityDTO param) {
if(CollUtil.isEmpty(param.getThresholds())){
throw new IllegalArgumentException("活动必须配置满减阈值");
}
MkDiscountActivity activity = BeanUtil.toBean(param, MkDiscountActivity.class);
save(activity);
for (MkDiscountThreshold threshold : param.getThresholds()) {
threshold.setActivityId(activity.getId());
thresholdMapper.insert(threshold);
}
}
@Override
public void updateActivityById(MkDiscountActivityDTO param) {
if(CollUtil.isEmpty(param.getThresholds())){
throw new IllegalArgumentException("活动必须配置满减阈值");
}
MkDiscountActivity activity = BeanUtil.toBean(param, MkDiscountActivity.class);
updateById(activity, true);
thresholdMapper.deleteByQuery(
new QueryWrapper().eq(MkDiscountThreshold::getActivityId, activity.getId())
);
for (MkDiscountThreshold threshold : param.getThresholds()) {
threshold.setActivityId(activity.getId());
thresholdMapper.insert(threshold);
}
}
@Override
public void deleteActivity(Long id) {
updateById(new MkDiscountActivity().setIsDel(true).setUpdateTime(LocalDateTime.now()).setId(id));
}
}

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.MkDiscountActivityMapper">
</mapper>

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.MkDiscountThresholdMapper">
</mapper>