zxl
2 天以前 8c4818a77b2279e1993a7022f21a6bc85046fdba
优惠卷虚拟商品
8个文件已添加
517 ■■■■■ 已修改文件
framework/src/main/java/cn/lili/modules/lmk/domain/entity/CouponVirtual.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/form/CouponVirtualForm.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/query/CouponVirtualQuery.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/vo/CouponVirtualVO.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/mapper/CouponVirtualMapper.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/CouponVirtualService.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/service/impl/CouponVirtualServiceImpl.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/resources/mapper/lmk/CouponVirtualMapper.xml 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/cn/lili/modules/lmk/domain/entity/CouponVirtual.java
New file
@@ -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")
    /** 优惠卷id */
    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;
}
framework/src/main/java/cn/lili/modules/lmk/domain/form/CouponVirtualForm.java
New file
@@ -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 = "优惠卷id不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("优惠卷id")
    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;
    }
}
framework/src/main/java/cn/lili/modules/lmk/domain/query/CouponVirtualQuery.java
New file
@@ -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 {
}
framework/src/main/java/cn/lili/modules/lmk/domain/vo/CouponVirtualVO.java
New file
@@ -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;
    /** 优惠卷id */
    @ApiModelProperty("优惠卷id")
    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;
    }
}
framework/src/main/java/cn/lili/modules/lmk/mapper/CouponVirtualMapper.java
New file
@@ -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);
}
framework/src/main/java/cn/lili/modules/lmk/service/CouponVirtualService.java
New file
@@ -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();
}
framework/src/main/java/cn/lili/modules/lmk/service/impl/CouponVirtualServiceImpl.java
New file
@@ -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());
        // 为空抛IllegalArgumentException,做全局异常处理
        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);
    }
}
framework/src/main/resources/mapper/lmk/CouponVirtualMapper.xml
New file
@@ -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>