New file |
| | |
| | | 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; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | 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 { |
| | | } |
| | | |
New file |
| | |
| | | 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; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | 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); |
| | | |
| | | } |
New file |
| | |
| | | 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(); |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | <?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> |