diff --git a/src/main/java/com/gxwebsoft/booking/controller/CouponController.java b/src/main/java/com/gxwebsoft/booking/controller/CouponController.java new file mode 100644 index 0000000..6562891 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/controller/CouponController.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.booking.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.booking.service.CouponService; +import com.gxwebsoft.booking.entity.Coupon; +import com.gxwebsoft.booking.param.CouponParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 我的优惠券控制器 + * + * @author 科技小王子 + * @since 2024-07-06 07:26:46 + */ +@Api(tags = "我的优惠券管理") +@RestController +@RequestMapping("/api/booking/coupon") +public class CouponController extends BaseController { + @Resource + private CouponService couponService; + + @ApiOperation("分页查询我的优惠券") + @GetMapping("/page") + public ApiResult> page(CouponParam param) { + // 使用关联查询 + return success(couponService.pageRel(param)); + } + + @ApiOperation("查询全部我的优惠券") + @GetMapping() + public ApiResult> list(CouponParam param) { + // 使用关联查询 + return success(couponService.listRel(param)); + } + + @PreAuthorize("hasAuthority('booking:coupon:list')") + @ApiOperation("根据id查询我的优惠券") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(couponService.getByIdRel(id)); + } + + @ApiOperation("添加我的优惠券") + @PostMapping() + public ApiResult save(@RequestBody Coupon coupon) { + if (couponService.save(coupon)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改我的优惠券") + @PutMapping() + public ApiResult update(@RequestBody Coupon coupon) { + if (couponService.updateById(coupon)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除我的优惠券") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (couponService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加我的优惠券") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (couponService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改我的优惠券") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(couponService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除我的优惠券") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (couponService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/booking/controller/UserCouponController.java b/src/main/java/com/gxwebsoft/booking/controller/UserCouponController.java index 09c46ed..e05a336 100644 --- a/src/main/java/com/gxwebsoft/booking/controller/UserCouponController.java +++ b/src/main/java/com/gxwebsoft/booking/controller/UserCouponController.java @@ -55,6 +55,7 @@ public class UserCouponController extends BaseController { @GetMapping() public ApiResult> list(UserCouponParam param) { // 使用关联查询 + param.setUserId(getLoginUserId()); return success(userCouponService.listRel(param)); } diff --git a/src/main/java/com/gxwebsoft/booking/entity/Coupon.java b/src/main/java/com/gxwebsoft/booking/entity/Coupon.java new file mode 100644 index 0000000..519a3ea --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/entity/Coupon.java @@ -0,0 +1,97 @@ +package com.gxwebsoft.booking.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 我的优惠券 + * + * @author 科技小王子 + * @since 2024-07-06 07:26:46 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Coupon对象", description = "我的优惠券") +@TableName("booking_coupon") +public class Coupon implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "优惠劵id") + private Integer couponId; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "优惠券类型(10满减券 20折扣券)") + private Integer type; + + @ApiModelProperty(value = "满减券-减免金额") + private BigDecimal reducePrice; + + @ApiModelProperty(value = "折扣券-折扣率(0-100)") + private Integer discount; + + @ApiModelProperty(value = "最低消费金额") + private BigDecimal minPrice; + + @ApiModelProperty(value = "到期类型(10领取后生效 20固定时间)") + private Integer expireType; + + @ApiModelProperty(value = "领取后生效-有效天数") + private Integer expireDay; + + @ApiModelProperty(value = "有效期开始时间") + private Date startTime; + + @ApiModelProperty(value = "有效期结束时间") + private Date endTime; + + @ApiModelProperty(value = "适用范围(10全部商品 20指定商品)") + private Integer applyRange; + + @ApiModelProperty(value = "适用范围配置(json格式)") + private String applyRangeConfig; + + @ApiModelProperty(value = "是否过期(0未过期 1已过期)") + private Integer isExpire; + + @ApiModelProperty(value = "是否已使用(0未使用 1已使用)") + private Integer isUse; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0待使用, 1已使用, 2已失效") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/booking/mapper/CouponMapper.java b/src/main/java/com/gxwebsoft/booking/mapper/CouponMapper.java new file mode 100644 index 0000000..cfb78ae --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/mapper/CouponMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.booking.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.booking.entity.Coupon; +import com.gxwebsoft.booking.param.CouponParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 我的优惠券Mapper + * + * @author 科技小王子 + * @since 2024-07-06 07:26:46 + */ +public interface CouponMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CouponParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CouponParam param); + +} diff --git a/src/main/java/com/gxwebsoft/booking/mapper/xml/CouponMapper.xml b/src/main/java/com/gxwebsoft/booking/mapper/xml/CouponMapper.xml new file mode 100644 index 0000000..90b64e9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/mapper/xml/CouponMapper.xml @@ -0,0 +1,93 @@ + + + + + + + SELECT a.* + FROM booking_coupon a + + + AND a.id = #{param.id} + + + AND a.coupon_id = #{param.couponId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.type = #{param.type} + + + AND a.reduce_price = #{param.reducePrice} + + + AND a.discount = #{param.discount} + + + AND a.min_price = #{param.minPrice} + + + AND a.expire_type = #{param.expireType} + + + AND a.expire_day = #{param.expireDay} + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.apply_range = #{param.applyRange} + + + AND a.apply_range_config LIKE CONCAT('%', #{param.applyRangeConfig}, '%') + + + AND a.is_expire = #{param.isExpire} + + + AND a.is_use = #{param.isUse} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/booking/param/CouponParam.java b/src/main/java/com/gxwebsoft/booking/param/CouponParam.java new file mode 100644 index 0000000..3c6dad0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/param/CouponParam.java @@ -0,0 +1,98 @@ +package com.gxwebsoft.booking.param; + +import java.math.BigDecimal; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 我的优惠券查询参数 + * + * @author 科技小王子 + * @since 2024-07-06 07:26:46 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CouponParam对象", description = "我的优惠券查询参数") +public class CouponParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "优惠劵id") + @QueryField(type = QueryType.EQ) + private Integer couponId; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "优惠券类型(10满减券 20折扣券)") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "满减券-减免金额") + @QueryField(type = QueryType.EQ) + private BigDecimal reducePrice; + + @ApiModelProperty(value = "折扣券-折扣率(0-100)") + @QueryField(type = QueryType.EQ) + private Integer discount; + + @ApiModelProperty(value = "最低消费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal minPrice; + + @ApiModelProperty(value = "到期类型(10领取后生效 20固定时间)") + @QueryField(type = QueryType.EQ) + private Integer expireType; + + @ApiModelProperty(value = "领取后生效-有效天数") + @QueryField(type = QueryType.EQ) + private Integer expireDay; + + @ApiModelProperty(value = "有效期开始时间") + private String startTime; + + @ApiModelProperty(value = "有效期结束时间") + private String endTime; + + @ApiModelProperty(value = "适用范围(10全部商品 20指定商品)") + @QueryField(type = QueryType.EQ) + private Integer applyRange; + + @ApiModelProperty(value = "适用范围配置(json格式)") + private String applyRangeConfig; + + @ApiModelProperty(value = "是否过期(0未过期 1已过期)") + @QueryField(type = QueryType.EQ) + private Integer isExpire; + + @ApiModelProperty(value = "是否已使用(0未使用 1已使用)") + @QueryField(type = QueryType.EQ) + private Integer isUse; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0待使用, 1已使用, 2已失效") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/booking/service/CouponService.java b/src/main/java/com/gxwebsoft/booking/service/CouponService.java new file mode 100644 index 0000000..5f6291a --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/service/CouponService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.booking.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.booking.entity.Coupon; +import com.gxwebsoft.booking.param.CouponParam; + +import java.util.List; + +/** + * 我的优惠券Service + * + * @author 科技小王子 + * @since 2024-07-06 07:26:46 + */ +public interface CouponService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CouponParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CouponParam param); + + /** + * 根据id查询 + * + * @param id id + * @return Coupon + */ + Coupon getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/booking/service/impl/CouponServiceImpl.java b/src/main/java/com/gxwebsoft/booking/service/impl/CouponServiceImpl.java new file mode 100644 index 0000000..f8b4025 --- /dev/null +++ b/src/main/java/com/gxwebsoft/booking/service/impl/CouponServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.booking.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.booking.mapper.CouponMapper; +import com.gxwebsoft.booking.service.CouponService; +import com.gxwebsoft.booking.entity.Coupon; +import com.gxwebsoft.booking.param.CouponParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 我的优惠券Service实现 + * + * @author 科技小王子 + * @since 2024-07-06 07:26:46 + */ +@Service +public class CouponServiceImpl extends ServiceImpl implements CouponService { + + @Override + public PageResult pageRel(CouponParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(CouponParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public Coupon getByIdRel(Integer id) { + CouponParam param = new CouponParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index b0267c7..3c2df13 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -5,7 +5,7 @@ spring: datasource: url: jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 username: modules - password: FYJGx7s8yt7K8xDH + password: 8YdLnk7KsPAyDXGA driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index f562e7f..f3c54ee 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -5,7 +5,7 @@ spring: datasource: url: jdbc:mysql://127.0.0.1:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 username: modules - password: FYJGx7s8yt7K8xDH + password: 8YdLnk7KsPAyDXGA driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource diff --git a/src/test/java/com/gxwebsoft/generator/BookingGenerator.java b/src/test/java/com/gxwebsoft/generator/BookingGenerator.java index b06d168..88970a9 100644 --- a/src/test/java/com/gxwebsoft/generator/BookingGenerator.java +++ b/src/test/java/com/gxwebsoft/generator/BookingGenerator.java @@ -38,7 +38,7 @@ public class BookingGenerator { private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/modules?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; private static final String DB_USERNAME = "modules"; - private static final String DB_PASSWORD = "FYJGx7s8yt7K8xDH"; + private static final String DB_PASSWORD = "8YdLnk7KsPAyDXGA"; // 包名 private static final String PACKAGE_NAME = "com.gxwebsoft"; // 模块名 @@ -66,9 +66,10 @@ public class BookingGenerator { // "booking_course_category", // "booking_student" // "booking_cooperate", - "booking_cooperate_log", +// "booking_cooperate_log", // "booking_match", -// "booking_match_order" +// "booking_match_order", + "booking_coupon" }; // 需要去除的表前缀 private static final String[] TABLE_PREFIX = new String[]{