Ver código fonte

新增活动逻辑

zc 2 meses atrás
pai
commit
bd7d564001

+ 110 - 0
alien-entity/src/main/java/shop/alien/entity/storePlatform/vo/StoreOperationalActivityDetailVo.java

@@ -0,0 +1,110 @@
+package shop.alien.entity.storePlatform.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 运营活动详情返回对象(用户端)
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@ApiModel(value = "StoreOperationalActivityDetailVo", description = "运营活动详情返回对象")
+public class StoreOperationalActivityDetailVo {
+
+    @ApiModelProperty(value = "主键")
+    private Integer id;
+
+    @ApiModelProperty(value = "商户ID")
+    private Integer storeId;
+
+    @ApiModelProperty(value = "活动名称")
+    private String activityName;
+
+    @ApiModelProperty(value = "活动宣传图URL")
+    private String promotionalImage;
+
+    @ApiModelProperty(value = "活动开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty(value = "活动结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date endTime;
+
+    @ApiModelProperty(value = "用户可参与次数,0表示不限制")
+    private Integer participationLimit;
+
+    @ApiModelProperty(value = "活动规则")
+    private String activityRule;
+
+    @ApiModelProperty(value = "奖励类型")
+    private String rewardType;
+
+    @ApiModelProperty(value = "优惠券ID")
+    private Integer couponId;
+
+    @ApiModelProperty(value = "优惠券发放数量")
+    private Integer couponQuantity;
+
+    @ApiModelProperty(value = "状态")
+    private Integer status;
+
+    @ApiModelProperty(value = "拒绝原因")
+    private String approvalComments;
+
+    @ApiModelProperty(value = "活动类型")
+    private String activityType;
+
+    @ApiModelProperty(value = "报名开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date signupStartTime;
+
+    @ApiModelProperty(value = "报名结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date signupEndTime;
+
+    @ApiModelProperty(value = "活动限制人数")
+    private Integer activityLimitPeople;
+
+    @ApiModelProperty(value = "活动详情")
+    private String activityDetails;
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "活动状态名称")
+    private String statusName;
+
+    @ApiModelProperty(value = "优惠券名称")
+    private String couponName;
+
+    @ApiModelProperty(value = "商户名称")
+    private String storeName;
+
+    @ApiModelProperty(value = "活动标题图片URL")
+    private String activityTitleImgUrl;
+
+    @ApiModelProperty(value = "活动详情图片URL")
+    private String activityDetailImgUrl;
+
+    @ApiModelProperty(value = "当前报名人数")
+    private Integer currentSignupCount;
+
+    @ApiModelProperty(value = "当前通过人数")
+    private Integer currentApprovedCount;
+
+    @ApiModelProperty(value = "是否已报名")
+    private Boolean signedUp;
+
+    @ApiModelProperty(value = "报名是否截止")
+    private Boolean signupExpired;
+}

+ 0 - 14
alien-entity/src/main/java/shop/alien/entity/storePlatform/vo/StoreOperationalActivityVO.java

@@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 import shop.alien.entity.store.StoreImg;
 import shop.alien.entity.storePlatform.StoreOperationalActivity;
 
@@ -16,7 +15,6 @@ import shop.alien.entity.storePlatform.StoreOperationalActivity;
  * @since 2025-11-26
  */
 @Data
-@EqualsAndHashCode(callSuper = true)
 @JsonInclude
 @ApiModel(value = "StoreOperationalActivityVO", description = "运营活动返回对象")
 public class StoreOperationalActivityVO extends StoreOperationalActivity {
@@ -45,18 +43,6 @@ public class StoreOperationalActivityVO extends StoreOperationalActivity {
     @ApiModelProperty(value = "剩余优惠券数量")
     private Integer remainingCouponQuantity;
 
-    @ApiModelProperty(value = "当前报名人数")
-    private Integer currentSignupCount;
-
-    @ApiModelProperty(value = "当前通过人数")
-    private Integer currentApprovedCount;
-
-    @ApiModelProperty(value = "是否已报名")
-    private Boolean signedUp;
-
-    @ApiModelProperty(value = "报名是否截止")
-    private Boolean signupExpired;
-
     @ApiModelProperty(value = "活动标题图片")
     private StoreImg activityTitleImg;
 

+ 3 - 3
alien-store/src/main/java/shop/alien/store/controller/StoreOperationalActivityController.java

@@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RequestParam;
 import shop.alien.entity.result.R;
 import shop.alien.entity.storePlatform.vo.StoreOperationalActivitySignupCheckVo;
-import shop.alien.entity.storePlatform.vo.StoreOperationalActivityVO;
+import shop.alien.entity.storePlatform.vo.StoreOperationalActivityDetailVo;
 import shop.alien.entity.storePlatform.vo.StoreOperationalActivityAchievementVo;
 import shop.alien.store.dto.StoreOperationalActivitySignupDto;
 import shop.alien.store.dto.StoreOperationalActivityAchievementDto;
@@ -47,10 +47,10 @@ public class StoreOperationalActivityController {
     @ApiOperationSupport(order = 1)
     @ApiImplicitParam(name = "id", value = "活动ID", dataTypeClass = Integer.class, paramType = "query", required = true)
     @GetMapping("/detail")
-    public R<StoreOperationalActivityVO> getActivityDetail(@RequestParam("id") Integer id) {
+    public R<StoreOperationalActivityDetailVo> getActivityDetail(@RequestParam("id") Integer id) {
         log.info("StoreOperationalActivityController.getActivityDetail id={}", id);
         try {
-            StoreOperationalActivityVO result = operationalActivityService.getActivityDetail(id);
+            StoreOperationalActivityDetailVo result = operationalActivityService.getActivityDetail(id);
             return R.data(result);
         } catch (IllegalArgumentException e) {
             return R.fail(e.getMessage());

+ 2 - 2
alien-store/src/main/java/shop/alien/store/service/StoreOperationalActivityService.java

@@ -1,6 +1,6 @@
 package shop.alien.store.service;
 
-import shop.alien.entity.storePlatform.vo.StoreOperationalActivityVO;
+import shop.alien.entity.storePlatform.vo.StoreOperationalActivityDetailVo;
 import shop.alien.entity.storePlatform.vo.StoreOperationalActivitySignupCheckVo;
 import shop.alien.store.dto.StoreOperationalActivitySignupDto;
 
@@ -18,7 +18,7 @@ public interface StoreOperationalActivityService {
      * @param id 活动ID
      * @return 活动详情
      */
-    StoreOperationalActivityVO getActivityDetail(Integer id);
+    StoreOperationalActivityDetailVo getActivityDetail(Integer id);
 
     /**
      * 报名校验:是否已满、是否已成功报名。

+ 7 - 9
alien-store/src/main/java/shop/alien/store/service/impl/StoreOperationalActivityServiceImpl.java

@@ -9,7 +9,7 @@ import shop.alien.entity.store.StoreImg;
 import shop.alien.entity.store.StoreInfo;
 import shop.alien.entity.storePlatform.StoreOperationalActivity;
 import shop.alien.entity.storePlatform.StoreOperationalActivitySignup;
-import shop.alien.entity.storePlatform.vo.StoreOperationalActivityVO;
+import shop.alien.entity.storePlatform.vo.StoreOperationalActivityDetailVo;
 import shop.alien.entity.storePlatform.vo.StoreOperationalActivitySignupCheckVo;
 import shop.alien.mapper.LifeDiscountCouponMapper;
 import shop.alien.mapper.StoreImgMapper;
@@ -44,7 +44,7 @@ public class StoreOperationalActivityServiceImpl implements StoreOperationalActi
     private final BaseRedisService baseRedisService;
 
     @Override
-    public StoreOperationalActivityVO getActivityDetail(Integer id) {
+    public StoreOperationalActivityDetailVo getActivityDetail(Integer id) {
         log.info("StoreOperationalActivityServiceImpl.getActivityDetail: id={}", id);
         if (id == null) {
             throw new IllegalArgumentException("活动ID不能为空");
@@ -54,7 +54,7 @@ public class StoreOperationalActivityServiceImpl implements StoreOperationalActi
             return null;
         }
 
-        StoreOperationalActivityVO vo = new StoreOperationalActivityVO();
+        StoreOperationalActivityDetailVo vo = new StoreOperationalActivityDetailVo();
         BeanUtils.copyProperties(activity, vo);
         vo.setStatusName(resolveStatusName(activity.getStatus()));
         fillSignupFlags(vo, activity);
@@ -176,7 +176,7 @@ public class StoreOperationalActivityServiceImpl implements StoreOperationalActi
         }
     }
 
-    private void attachStoreInfo(StoreOperationalActivityVO vo) {
+    private void attachStoreInfo(StoreOperationalActivityDetailVo vo) {
         if (vo == null || vo.getStoreId() == null) {
             return;
         }
@@ -186,7 +186,7 @@ public class StoreOperationalActivityServiceImpl implements StoreOperationalActi
         }
     }
 
-    private void fillActivityImages(StoreOperationalActivityVO vo) {
+    private void fillActivityImages(StoreOperationalActivityDetailVo vo) {
         if (vo == null || vo.getStoreId() == null || vo.getId() == null) {
             return;
         }
@@ -196,7 +196,6 @@ public class StoreOperationalActivityServiceImpl implements StoreOperationalActi
                 .eq(StoreImg::getImgType, 26)
                 .eq(StoreImg::getDeleteFlag, 0));
         if (titleImg != null) {
-            vo.setActivityTitleImg(titleImg);
             vo.setActivityTitleImgUrl(titleImg.getImgUrl());
         }
 
@@ -206,12 +205,11 @@ public class StoreOperationalActivityServiceImpl implements StoreOperationalActi
                 .eq(StoreImg::getImgType, 27)
                 .eq(StoreImg::getDeleteFlag, 0));
         if (detailImg != null) {
-            vo.setActivityDetailImg(detailImg);
             vo.setActivityDetailImgUrl(detailImg.getImgUrl());
         }
     }
 
-    private void fillSignupCounts(StoreOperationalActivityVO vo) {
+    private void fillSignupCounts(StoreOperationalActivityDetailVo vo) {
         if (vo == null || vo.getId() == null) {
             return;
         }
@@ -221,7 +219,7 @@ public class StoreOperationalActivityServiceImpl implements StoreOperationalActi
         vo.setCurrentApprovedCount(approvedCount != null ? approvedCount : 0);
     }
 
-    private void fillSignupFlags(StoreOperationalActivityVO vo, StoreOperationalActivity activity) {
+    private void fillSignupFlags(StoreOperationalActivityDetailVo vo, StoreOperationalActivity activity) {
         if (vo == null || activity == null) {
             return;
         }