diff --git a/database/springbok-mall.sql b/database/springbok-mall.sql index 98ad7fc2993085996fb2a991d472f01e19493b4f..52db41523857d7c0b3253c229df275e69227bef3 100644 --- a/database/springbok-mall.sql +++ b/database/springbok-mall.sql @@ -324,3 +324,36 @@ CREATE TABLE `mall_tag` ( `updated_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`tag_id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; + +-- ---------------------------- +-- Table structure for mall_coupon_direct +-- ---------------------------- +CREATE TABLE `mall_coupon_direct` ( + `coupon_direct_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', + `coupon_direct_name` varchar(255) DEFAULT NULL COMMENT '发券名称', + `send_type` tinyint(1) DEFAULT NULL COMMENT '发放类型 1 按标签 2 指定手机号', + `send_target_ids` text COMMENT '发放目标id', + `sms_notify` tinyint(1) DEFAULT NULL COMMENT '是否启用短信通知 0 否 1 是', + `status` tinyint(1) DEFAULT NULL COMMENT '状态 0 未开始 1 发送中 2 已完成 3 发送失败', + `created_name` varchar(255) DEFAULT NULL, + `created_time` datetime DEFAULT NULL, + `updated_name` varchar(255) DEFAULT NULL, + `updated_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`coupon_direct_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- ---------------------------- +-- Table structure for mall_coupon_direct_line +-- ---------------------------- +CREATE TABLE `mall_coupon_direct_line` ( + `coupon_direct_line_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', + `coupon_direct_id` int(11) DEFAULT NULL COMMENT '定向发券id', + `coupon_id` int(11) DEFAULT NULL COMMENT '券id', + `send_num` int(11) DEFAULT NULL COMMENT '发放数量', + `validity_type` tinyint(1) DEFAULT NULL COMMENT '有效期类型 0 指定日期 1 指定周期', + `start_date` date DEFAULT NULL COMMENT '开始日期', + `end_date` date DEFAULT NULL COMMENT '结束日期', + `after_day_num` int(11) DEFAULT NULL COMMENT '发券后N天', + `valid_day_num` int(11) DEFAULT NULL COMMENT '有效天数', + PRIMARY KEY (`coupon_direct_line_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/springbok-mall-api/src/main/java/cn/code4java/springbok/dto/CouponDirectQueryDTO.java b/springbok-mall-api/src/main/java/cn/code4java/springbok/dto/CouponDirectQueryDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..b443959b4b2b35f3a065323f9e4e8291dc407869 --- /dev/null +++ b/springbok-mall-api/src/main/java/cn/code4java/springbok/dto/CouponDirectQueryDTO.java @@ -0,0 +1,18 @@ +package cn.code4java.springbok.dto; + +import cn.code4java.springbok.entity.CouponDirect; +import lombok.Data; + +/** + * @ClassName CouponQueryDTO + * @Description: CouponQueryDTO + * @Author zhonghengtech + * @Date 2023/12/21 + * @Version V1.0 + **/ +@Data +public class CouponDirectQueryDTO extends CouponDirect { + + private long size; + private long current; +} diff --git a/springbok-mall-api/src/main/java/cn/code4java/springbok/entity/CouponDirect.java b/springbok-mall-api/src/main/java/cn/code4java/springbok/entity/CouponDirect.java new file mode 100644 index 0000000000000000000000000000000000000000..41443ae472d1c5fc3fc299a263defb09ac804680 --- /dev/null +++ b/springbok-mall-api/src/main/java/cn/code4java/springbok/entity/CouponDirect.java @@ -0,0 +1,44 @@ +package cn.code4java.springbok.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @ClassName CouponDirect + * @Description: 定向发券 + * @Author zhonghengtech + * @Date 2024/6/1 + * @Version V1.0 + **/ +@Data +@TableName(value = "mall_coupon_direct") +public class CouponDirect extends BaseEntity { + + /** + * id + */ + @TableId(type = IdType.AUTO) + private Integer couponDirectId; + /** + * 发券名称 + */ + private Integer couponDirectName; + /** + * 发放类型 1 按标签 2 指定手机号 + */ + private Integer sendType; + /** + * 发放目标id + */ + private String sendTargetIds; + /** + * 是否启用短信通知 0 否 1 是 + */ + private Integer smsNotify; + /** + * 状态 0 未开始 1 发送中 2 已完成 3 发送失败 + */ + private Integer status; +} diff --git a/springbok-mall-api/src/main/java/cn/code4java/springbok/entity/CouponDirectLine.java b/springbok-mall-api/src/main/java/cn/code4java/springbok/entity/CouponDirectLine.java new file mode 100644 index 0000000000000000000000000000000000000000..ead74b2a16602c239efa1ed74ec60fe386483071 --- /dev/null +++ b/springbok-mall-api/src/main/java/cn/code4java/springbok/entity/CouponDirectLine.java @@ -0,0 +1,58 @@ +package cn.code4java.springbok.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.time.LocalDate; + +/** + * @ClassName CouponDirect + * @Description: 定向发券选择优惠券 + * @Author zhonghengtech + * @Date 2024/6/1 + * @Version V1.0 + **/ +@Data +@TableName(value = "mall_coupon_direct_line") +public class CouponDirectLine { + + /** + * id + */ + @TableId(type = IdType.AUTO) + private Integer couponDirectLineId; + /** + * 定向发券id + */ + private Long couponDirectId; + /** + * 券id + */ + private Long couponId; + /** + * 发放数量 + */ + private Integer sendNum; + /** + * 有效期类型 0 指定日期 1 指定周期 + */ + private Integer validityType; + /** + * 开始日期 + */ + private LocalDate startDate; + /** + * 结束日期 + */ + private LocalDate endDate; + /** + * 发券后N天 + */ + private Integer afterDayNum; + /** + * 有效天数 + */ + private Integer validDayNum; +} diff --git a/springbok-mall-api/src/main/java/cn/code4java/springbok/service/CouponDirectService.java b/springbok-mall-api/src/main/java/cn/code4java/springbok/service/CouponDirectService.java new file mode 100644 index 0000000000000000000000000000000000000000..3117eec89bceb9ad1924c98ea368eef9a1057424 --- /dev/null +++ b/springbok-mall-api/src/main/java/cn/code4java/springbok/service/CouponDirectService.java @@ -0,0 +1,22 @@ +package cn.code4java.springbok.service; + +import cn.code4java.springbok.dto.CouponDirectQueryDTO; +import cn.code4java.springbok.entity.CouponDirect; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +/** + * @ClassName CouponDirectService + * @Description: 定向发券服务类 + * @Author zhonghengtech + * @Date 2024/6/1 + * @Version V1.0 + **/ +public interface CouponDirectService { + /** + * 分页查询定向发券 + * + * @param couponDirectQueryDTO + * @return + */ + Page pageCouponDirect(CouponDirectQueryDTO couponDirectQueryDTO); +} diff --git a/springbok-mall/src/main/java/cn/code4java/springbok/controller/CouponDirectController.java b/springbok-mall/src/main/java/cn/code4java/springbok/controller/CouponDirectController.java new file mode 100644 index 0000000000000000000000000000000000000000..2ac0344581ad75a26c6bae493fee7ddd70dc066f --- /dev/null +++ b/springbok-mall/src/main/java/cn/code4java/springbok/controller/CouponDirectController.java @@ -0,0 +1,40 @@ +package cn.code4java.springbok.controller; + +import cn.code4java.springbok.dto.CouponDTO; +import cn.code4java.springbok.dto.CouponDirectQueryDTO; +import cn.code4java.springbok.dto.CouponQueryDTO; +import cn.code4java.springbok.service.CouponDirectService; +import cn.code4java.springbok.service.CouponService; +import cn.code4java.springbok.vo.BaseResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + * @ClassName CouponDirectController + * @Description: 定向发券控制器 + * @Author zhonghengtech + * @Date 2024/6/1 + * @Version V1.0 + **/ +@Tag(name = "定向发券管理") +@RestController +@RequiredArgsConstructor +@RequestMapping("/couponDirect") +public class CouponDirectController { + + private final CouponDirectService couponDirectService; + + /** + * 分页查询 + * + * @param params + * @return + */ + @GetMapping("/pageCouponDirect") + @Operation(summary = "分页查询", description = "分页查询") + public BaseResponse pageCouponDirect(CouponDirectQueryDTO params) { + return BaseResponse.success(couponDirectService.pageCouponDirect(params)); + } +} diff --git a/springbok-mall/src/main/java/cn/code4java/springbok/mapper/CouponDirectMapper.java b/springbok-mall/src/main/java/cn/code4java/springbok/mapper/CouponDirectMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..94af0d9916cf810186876078d58543767c9cb1a1 --- /dev/null +++ b/springbok-mall/src/main/java/cn/code4java/springbok/mapper/CouponDirectMapper.java @@ -0,0 +1,18 @@ +package cn.code4java.springbok.mapper; + +import cn.code4java.springbok.dto.CouponDirectQueryDTO; +import cn.code4java.springbok.entity.CouponDirect; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + +/** + * @ClassName CouponDirectMapper + * @Description: CouponDirectMapper + * @Author zhonghengtech + * @Date 2024/6/1 + * @Version V1.0 + **/ +public interface CouponDirectMapper extends BaseMapper { + Page pageCouponDirect(Page page, @Param(value = "query") CouponDirectQueryDTO couponDirectQueryDTO); +} diff --git a/springbok-mall/src/main/java/cn/code4java/springbok/service/CouponDirectServiceImpl.java b/springbok-mall/src/main/java/cn/code4java/springbok/service/CouponDirectServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..89450978016f94be837e038466d70b7eb3b3f543 --- /dev/null +++ b/springbok-mall/src/main/java/cn/code4java/springbok/service/CouponDirectServiceImpl.java @@ -0,0 +1,31 @@ +package cn.code4java.springbok.service; + +import cn.code4java.springbok.dto.CouponDirectQueryDTO; +import cn.code4java.springbok.entity.CouponDirect; +import cn.code4java.springbok.mapper.CouponDirectMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * @ClassName CouponDirectServiceImpl + * @Description: 定向发券服务类 + * @Author zhonghengtech + * @Date 2024/6/1 + * @Version V1.0 + **/ +@Service +@AllArgsConstructor +public class CouponDirectServiceImpl extends ServiceImpl implements CouponDirectService { + + private CouponDirectMapper couponDirectMapper; + + @Override + public Page pageCouponDirect(CouponDirectQueryDTO couponDirectQueryDTO) { + Page page = new Page<>(); + page.setCurrent(couponDirectQueryDTO.getCurrent()); + page.setSize(couponDirectQueryDTO.getSize()); + return couponDirectMapper.pageCouponDirect(page, couponDirectQueryDTO); + } +} diff --git a/springbok-mall/src/main/resources/mapper/CouponDirectMapper.xml b/springbok-mall/src/main/resources/mapper/CouponDirectMapper.xml new file mode 100644 index 0000000000000000000000000000000000000000..36b8ac38f421e0971c62d9fc9ab971c2dbec95d3 --- /dev/null +++ b/springbok-mall/src/main/resources/mapper/CouponDirectMapper.xml @@ -0,0 +1,20 @@ + + + + + +