Sfoglia il codice sorgente

商品以及优惠卷的后台维护

liude 1 anno fa
parent
commit
e694d8d220

+ 0 - 9
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/GoodsDTO.java

@@ -93,13 +93,4 @@ public class GoodsDTO implements Serializable {
      */
     private GoodsStatus status;
 
-    /**
-     * 创建用户
-     */
-    private Long creator;
-
-    /**
-     * 创建时间
-     */
-    private Date createTime;
 }

+ 66 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/CouponModifyParam.java

@@ -0,0 +1,66 @@
+package com.chelvc.cloud.vehicle.api.param;
+import com.chelvc.cloud.vehicle.api.constant.CouponStatus;
+import com.chelvc.cloud.vehicle.api.constant.CouponType;
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+import java.util.Date;
+
+/**
+ * 优惠券数据模型
+ *
+ * @author liude
+ * @date 2023/8/27
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(callSuper = true)
+public class CouponModifyParam {
+
+    /**
+     * 商家ID
+     */
+    private Long merchantId;
+
+    /**
+     * 优惠券类型
+     */
+    private CouponType type;
+
+    /**
+     * 优惠券名称
+     */
+    private String name;
+
+    /**
+     * 优惠金额
+     */
+    private Double amount;
+
+    /**
+     * 满减金额
+     */
+    private Double reduce;
+
+    /**
+     * 优惠折扣
+     */
+    private Double discount;
+
+    /**
+     * 过期时间
+     */
+    private Date expiration;
+
+    /**
+     * 优惠券描述
+     */
+    private String description;
+
+    /**
+     * 优惠券状态
+     */
+    private CouponStatus status;
+}

+ 73 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/CouponPagingParam.java

@@ -0,0 +1,73 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import com.chelvc.cloud.vehicle.api.constant.CouponStatus;
+import com.chelvc.cloud.vehicle.api.constant.CouponType;
+import com.chelvc.framework.base.model.Paging;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
+import lombok.experimental.SuperBuilder;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * 优惠券数据模型
+ *
+ * @author liude
+ * @date 2023/8/30
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(callSuper = true)
+public class CouponPagingParam {
+
+    /**
+     * 分页信息
+     */
+    @NotNull(message = "分页不能为空")
+    private Paging paging;
+
+    /**
+     * 商家ID
+     */
+    private Long merchantId;
+
+    /**
+     * 优惠券类型
+     */
+    private CouponType type;
+
+    /**
+     * 优惠券名称
+     */
+    private String name;
+
+    /**
+     * 优惠金额
+     */
+    private Double amount;
+
+    /**
+     * 满减金额
+     */
+    private Double reduce;
+
+    /**
+     * 优惠折扣
+     */
+    private Double discount;
+
+    /**
+     * 过期时间
+     */
+    private Date expiration;
+
+    /**
+     * 优惠券状态
+     */
+    private CouponStatus status;
+}

+ 87 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/GoodsModifyParam.java

@@ -0,0 +1,87 @@
+package com.chelvc.cloud.vehicle.api.param;
+import com.chelvc.cloud.vehicle.api.constant.CategoryType;
+import com.chelvc.cloud.vehicle.api.constant.GoodsStatus;
+import com.chelvc.framework.base.model.File;
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+
+/**
+ * 商品数据模型
+ *
+ * @author liude
+ * @date 2023/8/30
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(callSuper = true)
+public class GoodsModifyParam {
+
+    /**
+     * 分类类型
+     */
+    private CategoryType type;
+
+    /**
+     * 分类ID
+     */
+    private Long categoryId;
+
+    /**
+     * 商家ID
+     */
+    private Long merchantId;
+
+    /**
+     * 商品名称
+     */
+    private String name;
+
+    /**
+     * 商品Logo
+     */
+    private String logo;
+
+    /**
+     * 轮播图列表
+     */
+    private List<File> banners;
+
+    /**
+     * 商品描述
+     */
+    private String description;
+
+    /**
+     * 商品原价
+     */
+    private Double originalPrice;
+
+    /**
+     * 优惠价格
+     */
+    private Double specialPrice;
+
+    /**
+     * 商品评分
+     */
+    private Double score;
+
+    /**
+     * 订单销量
+     */
+    private Integer sale;
+
+    /**
+     * 优惠券ID列表
+     */
+    private List<Long> couponIds;
+
+    /**
+     * 商品状态
+     */
+    private GoodsStatus status;
+}

+ 4 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/GoodsPagingParam.java

@@ -34,6 +34,10 @@ public class GoodsPagingParam implements Serializable {
      * 商品名称
      */
     private String name;
+    /**
+     * 分类ID
+     */
+    private Long categoryId;
     /**
      * 商品状态
      */

+ 40 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/CouponService.java

@@ -0,0 +1,40 @@
+package com.chelvc.cloud.vehicle.api.service;
+import com.chelvc.cloud.vehicle.api.dto.CouponDTO;
+import com.chelvc.cloud.vehicle.api.param.CouponModifyParam;
+import com.chelvc.cloud.vehicle.api.param.CouponPagingParam;
+import com.chelvc.framework.base.model.Pagination;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 优惠券业务操作接口
+ *
+ * @author Woody
+ * @date 2023/7/17
+ */
+public interface CouponService {
+
+    /**
+     * 新增商品优惠券
+     *
+     * @param param 新增参数
+     * @return 商品优惠券主键
+     */
+    Long addCoupon(CouponModifyParam param);
+
+    /**
+     * 修改商品优惠券
+     *
+     * @param id    商品优惠券主键
+     * @param param 修改参数
+     */
+    void updateCoupon(Long id, CouponModifyParam param);
+
+    /**
+     * 查询商品优惠券
+     *
+     * @param param 查询参数
+     * @return 商品优惠券分页信息
+     */
+    Pagination<CouponDTO> getCouponPaging(CouponPagingParam param);
+}

+ 27 - 3
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/GoodsService.java

@@ -1,10 +1,9 @@
 package com.chelvc.cloud.vehicle.api.service;
-
 import java.util.List;
-
 import com.chelvc.cloud.vehicle.api.dto.GoodsDTO;
 import com.chelvc.cloud.vehicle.api.dto.GoodsDetailDTO;
-import com.chelvc.cloud.vehicle.api.param.GoodsQueryParam;
+import com.chelvc.cloud.vehicle.api.param.*;
+import com.chelvc.framework.base.model.Pagination;
 
 /**
  * 商品业务接口
@@ -29,4 +28,29 @@ public interface GoodsService {
      * @return 商品列表
      */
     List<GoodsDTO> listMerchantSimpleGoods(Long merchantId, GoodsQueryParam param);
+
+
+    /**
+     * 新增商品
+     *
+     * @param param 新增参数
+     * @return 商品主键
+     */
+    Long addGoods(GoodsModifyParam param);
+
+    /**
+     * 修改商品
+     *
+     * @param id    商品主键
+     * @param param 修改参数
+     */
+    void updateGoods(Long id, GoodsModifyParam param);
+
+    /**
+     * 查询商品
+     *
+     * @param param 查询参数
+     * @return 商品分页信息
+     */
+    Pagination<GoodsDTO> getGoodsPaging(GoodsPagingParam param);
 }

+ 1 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/MerchantService.java

@@ -1,6 +1,7 @@
 package com.chelvc.cloud.vehicle.api.service;
 
 import java.util.List;
+
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDetailDTO;
 import com.chelvc.cloud.vehicle.api.param.*;

+ 55 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/copier/CouponCopier.java

@@ -0,0 +1,55 @@
+package com.chelvc.cloud.vehicle.server.copier;
+
+import com.chelvc.cloud.vehicle.api.dto.CouponDTO;
+import com.chelvc.cloud.vehicle.api.param.CouponModifyParam;
+import com.chelvc.cloud.vehicle.server.entity.Coupon;
+import org.mapstruct.MappingTarget;
+import org.mapstruct.factory.Mappers;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 商品优惠券拷贝接口
+ *
+ * @author liude
+ * @date 2023/8/30
+ */
+public interface CouponCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    CouponCopier INSTANCE = Mappers.getMapper(CouponCopier.class);
+
+    /**
+     * 商品优惠券拷贝
+     *
+     * @param coupon 商品优惠券
+     * @return 商品优惠券
+     */
+    CouponDTO copying(Coupon coupon);
+
+    /**
+     * 商品优惠券信息拷贝
+     *
+     * @param coupons 商品优惠券信息集合
+     * @return 商品优惠券信息列表
+     */
+    List<CouponDTO> copying(Collection<Coupon> coupons);
+
+    /**
+     * 商品优惠券信息拷贝
+     *
+     * @param param 商品优惠券更新参数
+     * @return 商品优惠券信息
+     */
+    Coupon copying(CouponModifyParam param);
+
+    /**
+     * 商品优惠券信息拷贝
+     *
+     * @param param    商品优惠券更新参数
+     * @param  coupon 商品优惠券信息
+     */
+    void copying( CouponModifyParam param, @MappingTarget  Coupon coupon);
+}

+ 34 - 1
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/copier/GoodsCopier.java

@@ -1,11 +1,19 @@
 package com.chelvc.cloud.vehicle.server.copier;
 
+import com.chelvc.cloud.vehicle.api.dto.CouponDTO;
 import com.chelvc.cloud.vehicle.api.dto.GoodsDTO;
+import com.chelvc.cloud.vehicle.api.param.CouponModifyParam;
+import com.chelvc.cloud.vehicle.api.param.GoodsModifyParam;
+import com.chelvc.cloud.vehicle.server.entity.Coupon;
 import com.chelvc.cloud.vehicle.server.entity.Goods;
 import org.mapstruct.Builder;
 import org.mapstruct.Mapper;
+import org.mapstruct.MappingTarget;
 import org.mapstruct.factory.Mappers;
 
+import java.util.Collection;
+import java.util.List;
+
 /**
  * 商品信息拷贝接口
  *
@@ -22,8 +30,33 @@ public interface GoodsCopier {
     /**
      * 商品信息拷贝
      *
-     * @param detail 商品详情
+     * @param goods 商品详情
      * @return 商品信息
      */
     GoodsDTO copying(Goods goods);
+
+
+    /**
+     * 商品信息拷贝
+     *
+     * @param goods 商品信息集合
+     * @return 商品信息列表
+     */
+    List<GoodsDTO> copying(Collection<Goods> goods);
+
+    /**
+     * 商品信息拷贝
+     *
+     * @param param 商品更新参数
+     * @return 商品信息
+     */
+    Goods copying(GoodsModifyParam param);
+
+    /**
+     * 商品信息拷贝
+     *
+     * @param param    商品更新参数
+     * @param  goods 商品信息
+     */
+    void copying( GoodsModifyParam param, @MappingTarget Goods goods);
 }

+ 1 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/CouponService.java

@@ -22,4 +22,5 @@ public interface CouponService extends IService<Coupon> {
      * @return 优惠券列表
      */
     List<CouponDTO> listUserGoodsActiveCoupons(Long userId, Collection<Long> goodsCouponIds);
+
 }

+ 36 - 3
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/CouponServiceImpl.java

@@ -3,24 +3,57 @@ package com.chelvc.cloud.vehicle.server.service.impl;
 import java.util.Collection;
 import java.util.List;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.vehicle.api.dto.CouponDTO;
+import com.chelvc.cloud.vehicle.api.param.CouponModifyParam;
+import com.chelvc.cloud.vehicle.api.param.CouponPagingParam;
+import com.chelvc.cloud.vehicle.server.copier.CouponCopier;
 import com.chelvc.cloud.vehicle.server.dao.CouponMapper;
 import com.chelvc.cloud.vehicle.server.entity.Coupon;
 import com.chelvc.cloud.vehicle.server.service.CouponService;
+import com.chelvc.framework.base.model.Pagination;
+import com.chelvc.framework.base.util.StringUtils;
+import com.chelvc.framework.database.context.DatabaseContextHolder;
+import com.chelvc.framework.database.util.PagingUtils;
 import lombok.NonNull;
 import org.springframework.stereotype.Service;
 
 /**
  * 优惠券业务操作实现
  *
- * @author Woody
- * @date 2023/7/17
+ * @author liude
+ * @date 2023/8/17
  */
 @Service
-public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> implements CouponService {
+public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> implements CouponService,
+        com.chelvc.cloud.vehicle.api.service.CouponService {
     @Override
     public List<CouponDTO> listUserGoodsActiveCoupons(@NonNull Long userId, Collection<Long> goodsCouponIds) {
         return this.baseMapper.listUserGoodsActiveCoupons(userId, goodsCouponIds);
     }
+
+
+
+    @Override
+    public Long addCoupon(CouponModifyParam param){
+        Coupon coupon = CouponCopier.INSTANCE.copying(param);
+        this.save(coupon);
+        return coupon.getId();
+    }
+
+    @Override
+    public void updateCoupon(@NonNull Long id, @NonNull CouponModifyParam param) {
+        Coupon coupon = DatabaseContextHolder.getRequireEntity(this, id, "分类不存在");
+        CouponCopier.INSTANCE.copying(param, coupon);
+        this.updateById(coupon);
+    }
+
+    @Override
+    public Pagination<CouponDTO> getCouponPaging(@NonNull CouponPagingParam param) {
+        Page<Coupon> page = this.lambdaQuery()
+                .like(StringUtils.nonEmpty(param.getName()), Coupon::getName, param.getName())
+                .orderByAsc(Coupon::getStatus).page(PagingUtils.convert(param.getPaging()));
+        return PagingUtils.convert(page, CouponCopier.INSTANCE::copying);
+    }
 }

+ 32 - 2
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/GoodsServiceImpl.java

@@ -2,20 +2,26 @@ package com.chelvc.cloud.vehicle.server.service.impl;
 
 import java.util.List;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.vehicle.api.constant.CategoryType;
+import com.chelvc.cloud.vehicle.api.dto.CouponDTO;
 import com.chelvc.cloud.vehicle.api.dto.GoodsDTO;
 import com.chelvc.cloud.vehicle.api.dto.GoodsDetailDTO;
-import com.chelvc.cloud.vehicle.api.param.CommentQueryParam;
-import com.chelvc.cloud.vehicle.api.param.GoodsQueryParam;
+import com.chelvc.cloud.vehicle.api.param.*;
+import com.chelvc.cloud.vehicle.server.copier.CouponCopier;
 import com.chelvc.cloud.vehicle.server.copier.GoodsCopier;
 import com.chelvc.cloud.vehicle.server.dao.GoodsMapper;
+import com.chelvc.cloud.vehicle.server.entity.Coupon;
 import com.chelvc.cloud.vehicle.server.entity.Goods;
 import com.chelvc.cloud.vehicle.server.service.CommentService;
 import com.chelvc.cloud.vehicle.server.service.CouponService;
 import com.chelvc.cloud.vehicle.server.service.GoodsService;
 import com.chelvc.framework.base.context.SessionContextHolder;
+import com.chelvc.framework.base.model.Pagination;
+import com.chelvc.framework.base.util.StringUtils;
 import com.chelvc.framework.database.context.DatabaseContextHolder;
+import com.chelvc.framework.database.util.PagingUtils;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -68,4 +74,28 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
     public List<GoodsDTO> listMerchantSimpleGoods(@NonNull Long merchantId, @NonNull GoodsQueryParam param) {
         return this.baseMapper.listMerchantSimpleGoods(merchantId, param);
     }
+
+
+
+    @Override
+    public Long addGoods(GoodsModifyParam param){
+        Goods goods = GoodsCopier.INSTANCE.copying(param);
+        this.save(goods);
+        return goods.getId();
+    }
+
+    @Override
+    public void updateGoods(@NonNull Long id, @NonNull GoodsModifyParam param) {
+        Goods goods = DatabaseContextHolder.getRequireEntity(this, id, "分类不存在");
+        GoodsCopier.INSTANCE.copying(param, goods);
+        this.updateById(goods);
+    }
+
+    @Override
+    public Pagination<GoodsDTO> getGoodsPaging(@NonNull GoodsPagingParam param) {
+        Page<Goods> page = this.lambdaQuery()
+                .like(StringUtils.nonEmpty(param.getName()), Goods::getName, param.getName())
+                .orderByAsc(Goods::getStatus).page(PagingUtils.convert(param.getPaging()));
+        return PagingUtils.convert(page, GoodsCopier.INSTANCE::copying);
+    }
 }