From 8c4818a77b2279e1993a7022f21a6bc85046fdba Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期三, 10 九月 2025 19:40:31 +0800 Subject: [PATCH] 优惠卷虚拟商品 --- framework/src/main/java/cn/lili/modules/lmk/domain/entity/CouponVirtual.java | 58 ++++++ framework/src/main/java/cn/lili/modules/lmk/domain/form/CouponVirtualForm.java | 72 ++++++++ framework/src/main/java/cn/lili/modules/lmk/mapper/CouponVirtualMapper.java | 35 +++ framework/src/main/java/cn/lili/modules/lmk/service/impl/CouponVirtualServiceImpl.java | 121 +++++++++++++ framework/src/main/java/cn/lili/modules/lmk/service/CouponVirtualService.java | 67 +++++++ framework/src/main/resources/mapper/lmk/CouponVirtualMapper.xml | 70 +++++++ framework/src/main/java/cn/lili/modules/lmk/domain/query/CouponVirtualQuery.java | 24 ++ framework/src/main/java/cn/lili/modules/lmk/domain/vo/CouponVirtualVO.java | 70 +++++++ 8 files changed, 517 insertions(+), 0 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/entity/CouponVirtual.java b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/CouponVirtual.java new file mode 100644 index 0000000..2d4ef9b --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/entity/CouponVirtual.java @@ -0,0 +1,58 @@ +package cn.lili.modules.lmk.domain.entity; + +import cn.lili.mybatis.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.Data; + +/** + * 铏氭嫙鍟嗗搧浼樻儬鍗� + * + * @author zxl + * @since 2025-09-10 + */ +@Data +@TableName("lmk_coupon_virtual") +public class CouponVirtual extends BaseEntity { + + private static final long serialVersionUID = 1L; + + @TableField("order_id") + /** 璁㈠崟id */ + private String orderId; + + @TableField("goods_id") + /** 鍟嗗搧id */ + private String goodsId; + + @TableField("sku_name") + /** 鍟嗗搧鍚嶇О */ + private String skuName; + + @TableField("coupon_id") + /** 浼樻儬鍗穒d */ + private String couponId; + + @TableField("coupon_no") + /** 缂栧彿 */ + private String couponNo; + + @TableField("coupon_name") + /** 浼樻儬鍗峰悕绉� */ + private String couponName; + + @TableField("name") + /** 鍚嶇О */ + private String name; + + @TableField("share_status") + /** 鏄惁鍒嗕韩 */ + private String shareStatus; + + @TableField("claim_status") + /** 鏄惁棰嗗彇 */ + private String claimStatus; + + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/form/CouponVirtualForm.java b/framework/src/main/java/cn/lili/modules/lmk/domain/form/CouponVirtualForm.java new file mode 100644 index 0000000..86596c3 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/form/CouponVirtualForm.java @@ -0,0 +1,72 @@ +package cn.lili.modules.lmk.domain.form; + + +import cn.lili.base.AbsForm; +import cn.lili.group.Add; +import cn.lili.group.Update; +import cn.lili.modules.lmk.domain.entity.CouponVirtual; +import org.springframework.beans.BeanUtils; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import org.springframework.lang.NonNull; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.Date; + +/** + * 铏氭嫙鍟嗗搧浼樻儬鍗疯〃鍗� + * + * @author zxl + * @since 2025-09-10 + */ +@Data +@ApiModel(value = "CouponVirtual琛ㄥ崟", description = "铏氭嫙鍟嗗搧浼樻儬鍗疯〃鍗�") +public class CouponVirtualForm extends AbsForm { + + @NotNull(message = "璁㈠崟id涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("璁㈠崟id") + private Long orderId; + + @NotNull(message = "鍟嗗搧id涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍟嗗搧id") + private Long goodsId; + + @NotBlank(message = "鍟嗗搧鍚嶇О涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍟嗗搧鍚嶇О") + private String skuName; + + @NotNull(message = "浼樻儬鍗穒d涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("浼樻儬鍗穒d") + private Long couponId; + + @NotBlank(message = "缂栧彿涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("缂栧彿") + private String couponNo; + + @NotBlank(message = "浼樻儬鍗峰悕绉颁笉鑳戒负绌�", groups = {Add.class, Update.class}) + @ApiModelProperty("浼樻儬鍗峰悕绉�") + private String couponName; + + @NotBlank(message = "鍚嶇О涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鍚嶇О") + private String name; + + @NotBlank(message = "鏄惁鍒嗕韩涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鏄惁鍒嗕韩") + private String shareStatus; + + @NotBlank(message = "鏄惁棰嗗彇涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鏄惁棰嗗彇") + private String claimStatus; + + + public static CouponVirtual getEntityByForm(@NonNull CouponVirtualForm form, CouponVirtual entity) { + if(entity == null) { + entity = new CouponVirtual(); + } + BeanUtils.copyProperties(form, entity); + return entity; + } + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/CouponVirtualQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/CouponVirtualQuery.java new file mode 100644 index 0000000..43e14c2 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/CouponVirtualQuery.java @@ -0,0 +1,24 @@ +package cn.lili.modules.lmk.domain.query; + + +import java.util.List; + +import cn.lili.base.AbsQuery; +import org.springframework.lang.NonNull; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 铏氭嫙鍟嗗搧浼樻儬鍗锋煡璇� + * + * @author zxl + * @since 2025-09-10 + */ +@Data +@ApiModel(value = "CouponVirtual鏌ヨ鍙傛暟", description = "铏氭嫙鍟嗗搧浼樻儬鍗锋煡璇㈠弬鏁�") +public class CouponVirtualQuery extends AbsQuery { +} + diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CouponVirtualVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CouponVirtualVO.java new file mode 100644 index 0000000..07768e7 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/CouponVirtualVO.java @@ -0,0 +1,70 @@ +package cn.lili.modules.lmk.domain.vo; + + +import java.util.List; + +import cn.lili.base.AbsVo; +import cn.lili.modules.lmk.domain.entity.CouponVirtual; +import org.springframework.lang.NonNull; +import org.springframework.beans.BeanUtils; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.Date; + +/** + * 铏氭嫙鍟嗗搧浼樻儬鍗峰睍绀� + * + * @author zxl + * @since 2025-09-10 + */ +@Data +@ApiModel(value = "铏氭嫙鍟嗗搧浼樻儬鍗峰搷搴旀暟鎹�", description = "铏氭嫙鍟嗗搧浼樻儬鍗峰搷搴旀暟鎹�") +public class CouponVirtualVO extends AbsVo { + + /** 璁㈠崟id */ + @ApiModelProperty("璁㈠崟id") + private String orderId; + + /** 鍟嗗搧id */ + @ApiModelProperty("鍟嗗搧id") + private String goodsId; + + /** 鍟嗗搧鍚嶇О */ + @ApiModelProperty("鍟嗗搧鍚嶇О") + private String skuName; + + /** 浼樻儬鍗穒d */ + @ApiModelProperty("浼樻儬鍗穒d") + private String couponId; + + /** 缂栧彿 */ + @ApiModelProperty("缂栧彿") + private String couponNo; + + /** 浼樻儬鍗峰悕绉� */ + @ApiModelProperty("浼樻儬鍗峰悕绉�") + private String couponName; + + /** 鍚嶇О */ + @ApiModelProperty("鍚嶇О") + private String name; + + /** 鏄惁鍒嗕韩 */ + @ApiModelProperty("鏄惁鍒嗕韩") + private String shareStatus; + + /** 鏄惁棰嗗彇 */ + @ApiModelProperty("鏄惁棰嗗彇") + private String claimStatus; + + + public static CouponVirtualVO getVoByEntity(@NonNull CouponVirtual entity, CouponVirtualVO vo) { + if(vo == null) { + vo = new CouponVirtualVO(); + } + BeanUtils.copyProperties(entity, vo); + return vo; + } + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/CouponVirtualMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/CouponVirtualMapper.java new file mode 100644 index 0000000..31fc724 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/CouponVirtualMapper.java @@ -0,0 +1,35 @@ +package cn.lili.modules.lmk.mapper; + + +import cn.lili.modules.lmk.domain.entity.CouponVirtual; +import cn.lili.modules.lmk.domain.query.CouponVirtualQuery; +import cn.lili.modules.lmk.domain.vo.CouponVirtualVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 铏氭嫙鍟嗗搧浼樻儬鍗� Mapper 鎺ュ彛 + * + * @author zxl + * @since 2025-09-10 + */ +@Mapper +public interface CouponVirtualMapper extends BaseMapper<CouponVirtual> { + + /** + * id鏌ユ壘铏氭嫙鍟嗗搧浼樻儬鍗� + * @param id + * @return + */ + CouponVirtualVO getById(Integer id); + + /** + * 鍒嗛〉 + */ + IPage getPage(IPage page, @Param("query") CouponVirtualQuery query); + +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/CouponVirtualService.java b/framework/src/main/java/cn/lili/modules/lmk/service/CouponVirtualService.java new file mode 100644 index 0000000..5befc37 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/service/CouponVirtualService.java @@ -0,0 +1,67 @@ +package cn.lili.modules.lmk.service; + + +import cn.lili.base.Result; +import cn.lili.modules.lmk.domain.entity.CouponVirtual; +import cn.lili.modules.lmk.domain.form.CouponVirtualForm; +import cn.lili.modules.lmk.domain.query.CouponVirtualQuery; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * 铏氭嫙鍟嗗搧浼樻儬鍗� 鏈嶅姟绫� + * + * @author zxl + * @since 2025-09-10 + */ +public interface CouponVirtualService extends IService<CouponVirtual> { + + /** + * 娣诲姞 + * @param form + * @return + */ + Result add(CouponVirtualForm form); + + /** + * 淇敼 + * @param form + * @return + */ + Result update(CouponVirtualForm form); + + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + Result remove(List<String> ids); + + /** + * id鍒犻櫎 + * @param id + * @return + */ + Result removeById(String id); + + /** + * 鍒嗛〉鏌ヨ + * @param query + * @return + */ + Result page(CouponVirtualQuery query); + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + Result detail(Integer id); + + /** + * 鍒楄〃 + * @return + */ + Result all(); +} diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/CouponVirtualServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/CouponVirtualServiceImpl.java new file mode 100644 index 0000000..d7a3acb --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/CouponVirtualServiceImpl.java @@ -0,0 +1,121 @@ +package cn.lili.modules.lmk.service.impl; + +import cn.lili.base.Result; +import cn.lili.modules.lmk.domain.entity.CouponVirtual; +import cn.lili.modules.lmk.domain.form.CouponVirtualForm; +import cn.lili.modules.lmk.domain.query.CouponVirtualQuery; +import cn.lili.modules.lmk.domain.vo.CouponVirtualVO; +import cn.lili.modules.lmk.mapper.CouponVirtualMapper; +import cn.lili.modules.lmk.service.CouponVirtualService; +import cn.lili.utils.PageUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import org.springframework.stereotype.Service; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.util.Assert; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 铏氭嫙鍟嗗搧浼樻儬鍗� 鏈嶅姟瀹炵幇绫� + * + * @author zxl + * @since 2025-09-10 + */ +@Service +@RequiredArgsConstructor +public class CouponVirtualServiceImpl extends ServiceImpl<CouponVirtualMapper, CouponVirtual> implements CouponVirtualService { + + private final CouponVirtualMapper couponVirtualMapper; + + /** + * 娣诲姞 + * @param form + * @return + */ + @Override + public Result add(CouponVirtualForm form) { + CouponVirtual entity = CouponVirtualForm.getEntityByForm(form, null); + baseMapper.insert(entity); + return Result.ok("娣诲姞鎴愬姛"); + } + + /** + * 淇敼 + * @param form + * @return + */ + @Override + public Result update(CouponVirtualForm form) { + CouponVirtual entity = baseMapper.selectById(form.getId()); + + // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 + Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); + BeanUtils.copyProperties(form, entity); + baseMapper.updateById(entity); + return Result.ok("淇敼鎴愬姛"); + } + + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + @Override + public Result remove(List<String> ids) { + baseMapper.deleteBatchIds(ids); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * id鍒犻櫎 + * @param id + * @return + */ + @Override + public Result removeById(String id) { + baseMapper.deleteById(id); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * 鍒嗛〉鏌ヨ + * @param query + * @return + */ + @Override + public Result page(CouponVirtualQuery query) { + IPage<CouponVirtualVO> page = PageUtil.getPage(query, CouponVirtualVO.class); + baseMapper.getPage(page, query); + return Result.ok().data(page.getRecords()).total(page.getTotal()); + } + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + @Override + public Result detail(Integer id) { + CouponVirtualVO vo = baseMapper.getById(id); + Assert.notNull(vo, "璁板綍涓嶅瓨鍦�"); + return Result.ok().data(vo); + } + + /** + * 鍒楄〃 + * @return + */ + @Override + public Result all() { + List<CouponVirtual> entities = baseMapper.selectList(null); + List<CouponVirtualVO> vos = entities.stream() + .map(entity -> CouponVirtualVO.getVoByEntity(entity, null)) + .collect(Collectors.toList()); + return Result.ok().data(vos); + } +} diff --git a/framework/src/main/resources/mapper/lmk/CouponVirtualMapper.xml b/framework/src/main/resources/mapper/lmk/CouponVirtualMapper.xml new file mode 100644 index 0000000..9b44701 --- /dev/null +++ b/framework/src/main/resources/mapper/lmk/CouponVirtualMapper.xml @@ -0,0 +1,70 @@ +<?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="cn.lili.modules.lmk.mapper.CouponVirtualMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ycl.domain.vo.CouponVirtualVO"> + <result column="order_id" property="orderId" /> + <result column="goods_id" property="goodsId" /> + <result column="sku_name" property="skuName" /> + <result column="coupon_id" property="couponId" /> + <result column="coupon_no" property="couponNo" /> + <result column="coupon_name" property="couponName" /> + <result column="name" property="name" /> + <result column="share_status" property="shareStatus" /> + <result column="claim_status" property="claimStatus" /> + <result column="update_time" property="updateTime" /> + <result column="create_by" property="createBy" /> + <result column="create_time" property="createTime" /> + <result column="update_by" property="updateBy" /> + <result column="delete_flag" property="deleteFlag" /> + </resultMap> + + <select id="getById" resultMap="BaseResultMap"> + SELECT + LCV.order_id, + LCV.goods_id, + LCV.sku_name, + LCV.coupon_id, + LCV.coupon_no, + LCV.coupon_name, + LCV.name, + LCV.share_status, + LCV.claim_status, + LCV.update_time, + LCV.create_by, + LCV.create_time, + LCV.update_by, + LCV.delete_flag, + LCV.id + FROM + lmk_coupon_virtual LCV + WHERE + LCV.id = #{id} AND LCV.deleted = 0 + </select> + + + <select id="getPage" resultMap="BaseResultMap"> + SELECT + LCV.order_id, + LCV.goods_id, + LCV.sku_name, + LCV.coupon_id, + LCV.coupon_no, + LCV.coupon_name, + LCV.name, + LCV.share_status, + LCV.claim_status, + LCV.update_time, + LCV.create_by, + LCV.create_time, + LCV.update_by, + LCV.delete_flag, + LCV.id + FROM + lmk_coupon_virtual LCV + WHERE + LCV.deleted = 0 + </select> + +</mapper> -- Gitblit v1.8.0