zc пре 2 месеци
родитељ
комит
5125666186

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

@@ -31,12 +31,26 @@ public class StoreOperationalActivityAchievementCaseVo {
     @ApiModelProperty(value = "活动名称")
     private String activityName;
 
+    @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 = "活动状态")
     private Integer activityStatus;
 
     @ApiModelProperty(value = "用户昵称")
     private String nickName;
 
+    @ApiModelProperty(value = "店铺用户头像")
+    private String storeUserHeadImg;
+
+    @ApiModelProperty(value = "店铺用户昵称")
+    private String storeUserNickName;
+
     @ApiModelProperty(value = "成果首图")
     private String firstMediaUrl;
 

+ 7 - 0
alien-entity/src/main/resources/mapper/storePlatform/StoreOperationalActivityAchievementMapper.xml

@@ -8,6 +8,8 @@
             ach.user_id AS userId,
             ach.activity_id AS activityId,
             act.activity_name AS activityName,
+            act.start_time AS startTime,
+            act.end_time AS endTime,
             CASE
                 WHEN act.status = 7 THEN 7
                 WHEN act.status IN (4, 5) AND act.end_time IS NOT NULL AND NOW() > act.end_time THEN 7
@@ -15,6 +17,8 @@
                 ELSE act.status
             END AS activityStatus,
             u.user_name AS nickName,
+            su.head_img AS storeUserHeadImg,
+            su.nick_name AS storeUserNickName,
             SUBSTRING_INDEX(ach.media_urls, ',', 1) AS firstMediaUrl,
             COALESCE(ach.updated_time, ach.created_time) AS updatedTime
         FROM store_operational_activity_achievement ach
@@ -35,6 +39,9 @@
         ) latest ON latest.max_id = ach.id
         INNER JOIN store_operational_activity act ON act.id = ach.activity_id
         LEFT JOIN life_user u ON u.id = ach.user_id
+        LEFT JOIN store_user su ON su.store_id = act.store_id
+            AND su.account_type = 1
+            AND su.delete_flag = 0
         WHERE ach.delete_flag = 0
           AND act.delete_flag = 0
         <if test="activityStatus != null">

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

@@ -233,4 +233,24 @@ public class StoreOperationalActivityController {
             return R.fail(e.getMessage());
         }
     }
+
+    @ApiOperation("删除报名及成果")
+    @ApiOperationSupport(order = 10)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "activityId", value = "活动ID", dataTypeClass = Integer.class, paramType = "query", required = true),
+            @ApiImplicitParam(name = "signupId", value = "报名ID", dataTypeClass = Integer.class, paramType = "query", required = true)
+    })
+    @PostMapping("/signup/delete")
+    public R<String> deleteSignup(@RequestParam("activityId") Integer activityId,
+                                  @RequestParam("signupId") Integer signupId) {
+        try {
+            boolean result = operationalActivityService.deleteSignup(activityId, signupId);
+            return result ? R.success("删除成功") : R.fail("删除失败");
+        } catch (IllegalArgumentException e) {
+            return R.fail(e.getMessage());
+        } catch (Exception e) {
+            log.error("StoreOperationalActivityController.deleteSignup ERROR: {}", e.getMessage(), e);
+            return R.fail(e.getMessage());
+        }
+    }
 }

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

@@ -40,6 +40,15 @@ public interface StoreOperationalActivityService {
     List<StoreOperationalActivityMySignupVo> listMySignups(Integer userId);
 
     /**
+     * 删除报名及其成果
+     *
+     * @param activityId 活动ID
+     * @param signupId 报名ID
+     * @return 是否成功
+     */
+    boolean deleteSignup(Integer activityId, Integer signupId);
+
+    /**
      * 活动报名
      *
      * @param dto 报名请求

+ 20 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreOperationalActivityServiceImpl.java

@@ -8,6 +8,7 @@ import shop.alien.entity.store.LifeDiscountCoupon;
 import shop.alien.entity.store.StoreImg;
 import shop.alien.entity.store.StoreInfo;
 import shop.alien.entity.storePlatform.StoreOperationalActivity;
+import shop.alien.entity.storePlatform.StoreOperationalActivityAchievement;
 import shop.alien.entity.storePlatform.StoreOperationalActivitySignup;
 import shop.alien.entity.storePlatform.vo.StoreOperationalActivityDetailVo;
 import shop.alien.entity.storePlatform.vo.StoreOperationalActivityMySignupVo;
@@ -15,6 +16,7 @@ import shop.alien.entity.storePlatform.vo.StoreOperationalActivitySignupCheckVo;
 import shop.alien.mapper.LifeDiscountCouponMapper;
 import shop.alien.mapper.StoreImgMapper;
 import shop.alien.mapper.StoreInfoMapper;
+import shop.alien.mapper.storePlantform.StoreOperationalActivityAchievementMapper;
 import shop.alien.mapper.storePlantform.StoreOperationalActivityMapper;
 import shop.alien.mapper.storePlantform.StoreOperationalActivitySignupMapper;
 import shop.alien.store.config.BaseRedisService;
@@ -39,6 +41,7 @@ import java.util.List;
 public class StoreOperationalActivityServiceImpl implements StoreOperationalActivityService {
 
     private final StoreOperationalActivityMapper activityMapper;
+    private final StoreOperationalActivityAchievementMapper achievementMapper;
     private final StoreImgMapper imgMapper;
     private final LifeDiscountCouponMapper lifeDiscountCouponMapper;
     private final StoreInfoMapper storeInfoMapper;
@@ -133,6 +136,23 @@ public class StoreOperationalActivityServiceImpl implements StoreOperationalActi
     }
 
     @Override
+    public boolean deleteSignup(Integer activityId, Integer signupId) {
+        if (activityId == null) {
+            throw new IllegalArgumentException("活动ID不能为空");
+        }
+        if (signupId == null) {
+            throw new IllegalArgumentException("报名ID不能为空");
+        }
+        int deletedSignup = signupMapper.delete(new LambdaQueryWrapper<StoreOperationalActivitySignup>()
+                .eq(StoreOperationalActivitySignup::getId, signupId)
+                .eq(StoreOperationalActivitySignup::getActivityId, activityId));
+        int deletedAchievement = achievementMapper.delete(new LambdaQueryWrapper<StoreOperationalActivityAchievement>()
+                .eq(StoreOperationalActivityAchievement::getSignupId, signupId)
+                .eq(StoreOperationalActivityAchievement::getActivityId, activityId));
+        return deletedSignup > 0 || deletedAchievement > 0;
+    }
+
+    @Override
     public boolean signup(StoreOperationalActivitySignupDto dto) {
         if (dto == null) {
             throw new IllegalArgumentException("报名参数不能为空");