瀏覽代碼

秒杀商品

guomengjiao 1 月之前
父節點
當前提交
aea896262b

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/marketing/seckill/SeckillTimeConfigController.java

@@ -40,8 +40,8 @@ public class SeckillTimeConfigController extends BaseController {
     @ApiOperation("查询秒杀活动时间配置列表")
     @SaCheckPermission("seckill:seckillTimeConfig:list")
     @GetMapping("/list")
-    public List<SeckillTimeConfigVo> list(@Validated(QueryGroup.class) SeckillTimeConfigBo bo) {
-        return iSeckillTimeConfigService.queryList(bo);
+    public R<List<SeckillTimeConfigVo>> list(@Validated(QueryGroup.class) SeckillTimeConfigBo bo) {
+        return R.ok(iSeckillTimeConfigService.queryList(bo));
     }
 
     /**

+ 14 - 15
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shop/product/ProductController.java

@@ -11,27 +11,17 @@ import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.common.core.validate.QueryGroup;
+import com.ruoyi.common.enums.AuditStatus;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.enums.FilePathSplicingType;
 import com.ruoyi.common.filepathsplicing.FilePathSplicing;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.shop.merchant.domain.bo.MerchantCategoryBo;
-import com.ruoyi.shop.merchant.domain.vo.MerchantCategoryVo;
-import com.ruoyi.shop.merchant.service.IMerchantCategoryService;
 import com.ruoyi.shop.product.domain.bo.ProductAuditBo;
 import com.ruoyi.shop.product.domain.bo.ProductBo;
-import com.ruoyi.shop.product.domain.bo.ProductCategoryBo;
-import com.ruoyi.shop.product.domain.vo.ProductCategoryVo;
-import com.ruoyi.shop.product.domain.vo.ProductContentVo;
 import com.ruoyi.shop.product.domain.vo.ProductCountVo;
 import com.ruoyi.shop.product.domain.vo.ProductVo;
-import com.ruoyi.shop.product.service.IProductCategoryService;
-import com.ruoyi.shop.product.service.IProductContentService;
 import com.ruoyi.shop.product.service.IProductService;
-import com.ruoyi.shop.supplier.domain.bo.SupplierBo;
-import com.ruoyi.shop.supplier.domain.vo.SupplierVo;
-import com.ruoyi.shop.supplier.service.ISupplierService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -43,8 +33,6 @@ import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
 
 /**
  * 产品Controller
@@ -60,8 +48,6 @@ import java.util.Map;
 public class ProductController extends BaseController {
 
     private final IProductService iProductService;
-    private final IMerchantCategoryService merchantCategoryService;
-    private final ISupplierService supplierService;
 
     /**
      * 商家分页查询产品列表
@@ -96,6 +82,19 @@ public class ProductController extends BaseController {
         return iProductService.queryCustomPageList(bo, pageQuery);
     }
 
+    /**
+     * 查询商家的直营商品,并显示是否参加了活动 (秒杀、拼团)
+     */
+    @FilePathSplicing(type = FilePathSplicingType.RESPONSE)
+    @ApiOperation("查询商家直营商品,并显示是否参加了活动 (秒杀、拼团)")
+    @GetMapping("/forActivity")
+    public TableDataInfo<ProductVo> forActivityList(@Validated(QueryGroup.class) ProductBo bo, PageQuery pageQuery) {
+        bo.setBusinessId(getBusinessId(true));
+        bo.setShelvedStatus(true);
+        bo.setAuditStatus(AuditStatus.AUDIT_PASS);
+        return iProductService.forActivityList(bo, pageQuery);
+    }
+
     @ApiOperation("商品统计")
     @GetMapping("/count")
     public R<ProductCountVo> count() {

+ 3 - 2
ruoyi-api/src/main/java/com/ruoyi/api/controller/shop/ApiSeckillTimeConfigController.java

@@ -1,6 +1,7 @@
 package com.ruoyi.api.controller.shop;
 
 import com.ruoyi.api.controller.common.AbstractApiController;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.validate.QueryGroup;
 import com.ruoyi.shop.marketing.seckill.domain.bo.SeckillTimeConfigBo;
 import com.ruoyi.shop.marketing.seckill.domain.vo.SeckillTimeConfigVo;
@@ -35,8 +36,8 @@ public class ApiSeckillTimeConfigController extends AbstractApiController {
      */
     @ApiOperation("查询秒杀活动时间配置列表")
     @GetMapping("/list")
-    public List<SeckillTimeConfigVo> list(@Validated(QueryGroup.class) SeckillTimeConfigBo bo) {
-        return iSeckillTimeConfigService.queryList(bo);
+    public R<List<SeckillTimeConfigVo>> list(@Validated(QueryGroup.class) SeckillTimeConfigBo bo) {
+        return R.ok(iSeckillTimeConfigService.queryList(bo));
     }
 
 }

+ 1 - 1
ruoyi-shop/src/main/java/com/ruoyi/shop/marketing/seckill/domain/SeckillActivity.java

@@ -57,7 +57,7 @@ public class SeckillActivity extends BaseEntity {
     /**
      * 活动说明
      */
-    private String explain;
+    private String explainInfo;
     /**
      * 是否废弃
      */

+ 7 - 1
ruoyi-shop/src/main/java/com/ruoyi/shop/marketing/seckill/domain/bo/SeckillActivityBo.java

@@ -1,5 +1,6 @@
 package com.ruoyi.shop.marketing.seckill.domain.bo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseEntity;
 import com.ruoyi.common.core.validate.AddGroup;
 import com.ruoyi.common.core.validate.EditGroup;
@@ -11,6 +12,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.hibernate.validator.constraints.Length;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
@@ -67,6 +69,8 @@ public class SeckillActivityBo extends BaseEntity {
      */
     @ApiModelProperty(value = "活动开始时间", required = true)
     @NotNull(message = "活动开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date startTime;
 
     /**
@@ -74,6 +78,8 @@ public class SeckillActivityBo extends BaseEntity {
      */
     @ApiModelProperty(value = "活动结束时间", required = true)
     @NotNull(message = "活动结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date endTime;
 
     /**
@@ -89,7 +95,7 @@ public class SeckillActivityBo extends BaseEntity {
      */
     @ApiModelProperty(value = "活动说明", required = true)
     @Length(max = 200, message = "活动说明长度不能超过200个字符")
-    private String explain;
+    private String explainInfo;
 
     /**
      * 是否废弃

+ 7 - 1
ruoyi-shop/src/main/java/com/ruoyi/shop/marketing/seckill/domain/vo/SeckillActivityVo.java

@@ -3,6 +3,7 @@ package com.ruoyi.shop.marketing.seckill.domain.vo;
 import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.filepathsplicing.FilePathValue;
 import com.ruoyi.shop.enums.ActiveState;
 import com.ruoyi.shop.enums.CycleMode;
@@ -11,6 +12,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 import java.util.List;
@@ -69,6 +71,8 @@ public class SeckillActivityVo {
      */
     @ExcelProperty(value = "活动开始时间")
     @ApiModelProperty("活动开始时间")
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date startTime;
 
     /**
@@ -76,6 +80,8 @@ public class SeckillActivityVo {
      */
     @ExcelProperty(value = "活动结束时间")
     @ApiModelProperty("活动结束时间")
+    @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date endTime;
 
     /**
@@ -91,7 +97,7 @@ public class SeckillActivityVo {
      */
     @ExcelProperty(value = "活动说明")
     @ApiModelProperty("活动说明")
-    private String explain;
+    private String explainInfo;
 
     /**
      * 是否废弃

+ 0 - 1
ruoyi-shop/src/main/java/com/ruoyi/shop/marketing/seckill/service/impl/SeckillActivityServiceImpl.java

@@ -82,7 +82,6 @@ public class SeckillActivityServiceImpl implements ISeckillActivityService {
         lqw.eq(bo.getStartTime() != null, SeckillActivity::getStartTime, bo.getStartTime());
         lqw.eq(bo.getEndTime() != null, SeckillActivity::getEndTime, bo.getEndTime());
         lqw.eq(StringUtils.isNotBlank(bo.getImgUrl()), SeckillActivity::getImgUrl, bo.getImgUrl());
-        lqw.eq(StringUtils.isNotBlank(bo.getExplain()), SeckillActivity::getExplain, bo.getExplain());
         lqw.eq(bo.getDiscard() != null, SeckillActivity::getDiscard, bo.getDiscard());
         lqw.eq(bo.getCycleMode() != null, SeckillActivity::getCycleMode, bo.getCycleMode());
         lqw.eq(StringUtils.isNotBlank(bo.getWeeks()), SeckillActivity::getWeeks, bo.getWeeks());

+ 5 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/product/domain/bo/ProductBo.java

@@ -377,4 +377,9 @@ public class ProductBo extends BaseEntity {
     @ApiModelProperty(value = "排序方式")
     private String orderMode= "asc";
 
+    @ApiModelProperty(value = "秒杀活动id")
+    private Long seckillId;
+
+    @ApiModelProperty(value = "拼团活动id")
+    private Long groupBuyId;
 }

+ 3 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/product/domain/vo/ProductVo.java

@@ -416,4 +416,7 @@ public class ProductVo extends BaseVo {
         this.productSkuSetList = service.loadVoByBusinessIdAndProductId(this.businessId,this.productId);
         this.stock = this.productSkuSetList.stream().mapToInt(ProductSkuSetVo::getStock).sum();
     }
+
+    @ApiModelProperty("是否参与活动")
+    private Boolean isJoin = false;
 }

+ 2 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/product/mapper/ProductMapper.java

@@ -32,4 +32,6 @@ public interface ProductMapper extends BaseMapperPlus<ProductMapper, Product, Pr
     List<ProductShelvedStatusCountVo> selectShelvedCount(@Param("businessId")Long businessId);
 
     Integer selectStockTenseCount(@Param("businessId") Long businessId);
+
+    Page<ProductVo> forActivityList(@Param("page") Page<Object> objectPage, @Param("bo") ProductBo bo);
 }

+ 1 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/product/service/IProductService.java

@@ -163,4 +163,5 @@ public interface IProductService {
      */
     Product getByBusinessIdAndId(Long businessId, Long productId);
 
+    TableDataInfo<ProductVo> forActivityList(ProductBo bo, PageQuery pageQuery);
 }

+ 6 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/product/service/impl/ProductServiceImpl.java

@@ -593,4 +593,10 @@ public class ProductServiceImpl implements IProductService {
         return product;
     }
 
+    @Override
+    public TableDataInfo<ProductVo> forActivityList(ProductBo bo, PageQuery pageQuery) {
+        Page<ProductVo> result = baseMapper.forActivityList(pageQuery.buildSafe(ALLOWED_ORDER_COLUMNS), bo);
+        return TableDataInfo.build(result);
+    }
+
 }

+ 1 - 1
ruoyi-shop/src/main/resources/mapper/marketing/seckill/SeckillActivityMapper.xml

@@ -13,7 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="startTime" column="start_time"/>
         <result property="endTime" column="end_time"/>
         <result property="imgUrl" column="img_url"/>
-        <result property="explain" column="explain"/>
+        <result property="explainInfo" column="explain_info"/>
         <result property="discard" column="discard"/>
         <result property="createTime" column="create_time"/>
         <result property="updateTime" column="update_time"/>

+ 26 - 0
ruoyi-shop/src/main/resources/mapper/product/ProductMapper.xml

@@ -236,4 +236,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ) as t
         where t.total_stock &lt;= 5
     </select>
+
+    <select id="forActivityList" resultType="com.ruoyi.shop.product.domain.vo.ProductVo">
+        select p.*
+        <if test="bo.seckillId!=null">
+            ,exists(select sap.id from tb_seckill_activity_product as sap where sap.product_id=p.id and
+            sap.seckill_id = #{bo.seckillId} ) as isJoin
+        </if>
+        <if test="bo.groupBuyId!=null">
+            ,exists(select gbag.id from tb_group_buy_activity_goods as gbag where gbag.product_id=p.id and
+            gbag.group_buy_id = #{bo.groupBuyId} ) as isJoin
+        </if>
+        from `tb_product` as p
+        <where>
+            p.`business_id`= #{bo.businessId}
+            <if test="bo.title!=null and bo.title!=''">
+                AND p.`title` LIKE CONCAT('%',#{bo.title},'%')
+            </if>
+            <if test="bo.shelvedStatus != null">
+                and tp.shelved_status = #{bo.shelvedStatus}
+            </if>
+            <if test="bo.auditStatus != null">
+                and tp.audit_status = #{bo.auditStatus.code}
+            </if>
+        </where>
+        order by p.order_index desc,p.create_time desc
+    </select>
 </mapper>