From 282374b8b55c4bac38416fa92bc7a2bab140dd30 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 26 五月 2025 13:54:22 +0800
Subject: [PATCH] 小程序端活动列表(取消报名,列表),活动状态定时任务

---
 framework/src/main/java/cn/lili/modules/lmk/domain/query/MyActivityQuery.java       |   22 +++
 framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityReportVO.java         |   15 ++
 framework/src/main/java/cn/lili/common/enums/ActivityStatusEnum.java                |   20 ++
 buyer-api/src/main/java/cn/lili/controller/lmk/MyActivityController.java            |   35 +++++
 framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityVO.java               |    2 
 framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java   |    4 
 framework/src/main/java/cn/lili/modules/lmk/domain/vo/MyActivityVo.java             |   57 ++++++++
 framework/src/main/java/cn/lili/modules/lmk/service/MyActivityService.java          |   13 +
 lmk-job/src/main/java/cn/lili/job/ActivityJob.java                                  |   77 +++++++++++
 framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java              |   19 ++
 framework/src/main/java/cn/lili/modules/lmk/service/ActivityService.java            |    2 
 framework/src/main/java/cn/lili/modules/lmk/service/impl/MyActivityServiceImpl.java |   64 +++++++++
 framework/src/main/resources/mapper/lmk/ActivityMapper.xml                          |   70 +++++++++
 framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityReportQuery.java   |   13 +
 14 files changed, 408 insertions(+), 5 deletions(-)

diff --git a/buyer-api/src/main/java/cn/lili/controller/lmk/MyActivityController.java b/buyer-api/src/main/java/cn/lili/controller/lmk/MyActivityController.java
new file mode 100644
index 0000000..e181ddc
--- /dev/null
+++ b/buyer-api/src/main/java/cn/lili/controller/lmk/MyActivityController.java
@@ -0,0 +1,35 @@
+package cn.lili.controller.lmk;
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.query.ActivityReportQuery;
+import cn.lili.modules.lmk.domain.query.MyActivityQuery;
+import cn.lili.modules.lmk.service.ActivityService;
+import cn.lili.modules.lmk.service.MyActivityService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+@Validated
+@RequiredArgsConstructor
+@Api(value = "鎴戠殑娲诲姩", tags = "鎴戠殑娲诲姩绠$悊")
+@RestController
+@RequestMapping("/buyer/lmk/my-activity")
+public class MyActivityController {
+    private final MyActivityService myActivityService;
+    @GetMapping("/getMyActivityList")
+    @ApiOperation(value = "鑾峰緱鎴戠殑娲诲姩鍒楄〃", notes = "鑾峰緱鎴戠殑娲诲姩鍒楄〃")
+    public Result getMyActivityList(MyActivityQuery query){
+
+        return myActivityService.getMyActivityList(query);
+
+    }
+
+
+    @PutMapping("/cancelActivity")
+    @ApiOperation(value = "鑾峰緱鎴戠殑娲诲姩鍒楄〃", notes = "鑾峰緱鎴戠殑娲诲姩鍒楄〃")
+    public Result cancelActivity(@RequestBody ActivityReportQuery query){
+        return myActivityService.cancelActivity(query);
+    }
+}
diff --git a/framework/src/main/java/cn/lili/common/enums/ActivityStatusEnum.java b/framework/src/main/java/cn/lili/common/enums/ActivityStatusEnum.java
new file mode 100644
index 0000000..35816f1
--- /dev/null
+++ b/framework/src/main/java/cn/lili/common/enums/ActivityStatusEnum.java
@@ -0,0 +1,20 @@
+package cn.lili.common.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum ActivityStatusEnum {
+    NOT_STARTED("鏈紑濮�"),
+    REPORT("鎶ュ悕涓�"),
+    IN_PROGRESS("杩涜涓�"),
+    ENDED("宸茬粨鏉�");
+
+    private String type;
+
+    ActivityStatusEnum(String type) {
+        this.type = type;
+
+    }
+
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityReportQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityReportQuery.java
new file mode 100644
index 0000000..2e0f512
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/ActivityReportQuery.java
@@ -0,0 +1,13 @@
+package cn.lili.modules.lmk.domain.query;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ActivityReport鏌ヨ鍙傛暟", description = "娲诲姩鏌ヨ鍙傛暟")
+public class ActivityReportQuery {
+    /** 鐢ㄦ埛id*/
+    private String userId;
+    /** 娲诲姩id*/
+    private String activityId;
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/query/MyActivityQuery.java b/framework/src/main/java/cn/lili/modules/lmk/domain/query/MyActivityQuery.java
new file mode 100644
index 0000000..5da2252
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/query/MyActivityQuery.java
@@ -0,0 +1,22 @@
+package cn.lili.modules.lmk.domain.query;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+
+@Data
+@ApiModel(value = "灏忕▼搴忕鎴戠殑娲诲姩娲诲姩鏌ヨ鍙傛暟", description = "灏忕▼搴忕鎴戠殑娲诲姩娲诲姩鏌ヨ鍙傛暟")
+public class MyActivityQuery {
+
+    /** 娲诲姩鐘舵��*/
+    private String status;
+
+    /** 鏄惁鍙栨秷*/
+    private Boolean cancel;
+
+    @NotBlank
+    private String id;
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityReportVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityReportVO.java
new file mode 100644
index 0000000..a2dfb23
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityReportVO.java
@@ -0,0 +1,15 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "ActivityReport涓棿琛ㄥ搷搴旀暟鎹�", description = "鍝嶅簲鏁版嵁")
+public class ActivityReportVO extends AbsVo {
+    /** 娲诲姩id*/
+    private String activityId;
+
+    /** 鐢ㄦ埛id*/
+    private String userId;
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityVO.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityVO.java
index ab61c97..1007010 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityVO.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/ActivityVO.java
@@ -16,7 +16,7 @@
 import java.util.List;
 
 @Data
-@ApiModel(value = "Activity鏌ヨ鍙傛暟", description = "娲诲姩鏌ヨ〃鍗�")
+@ApiModel(value = "Activity鍝嶅簲鏁版嵁", description = "鍝嶅簲鏁版嵁")
 public class ActivityVO extends AbsVo {
 
     /** 娲诲姩鍚嶇О */
diff --git a/framework/src/main/java/cn/lili/modules/lmk/domain/vo/MyActivityVo.java b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/MyActivityVo.java
new file mode 100644
index 0000000..4ef91ea
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/domain/vo/MyActivityVo.java
@@ -0,0 +1,57 @@
+package cn.lili.modules.lmk.domain.vo;
+
+import cn.lili.base.AbsVo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@ApiModel(value = "MyActivity鍝嶅簲鏁版嵁", description = "MyActivity鍝嶅簲鏁版嵁")
+public class MyActivityVo extends AbsVo {
+    /** 娲诲姩灏侀潰*/
+    private String cover;
+
+    /** 灏侀潰绫诲瀷 */
+    @ApiModelProperty(value = "灏侀潰绫诲瀷锛氳棰戙�佹枃瀛椼�佸浘鐗�", example = "鍥剧墖")
+    private String coverType;
+
+    /** 娲诲姩灏侀潰url*/
+    private String url;
+
+    /** 娲诲姩绫诲瀷 */
+    @ApiModelProperty(value = "娲诲姩绫诲瀷锛氱嚎涓�/绾夸笅锛岀洰鍓嶉粯璁ら兘鏄嚎涓�", example = "绾夸笅")
+    private String activityType;
+
+    /** 娲诲姩鍚�*/
+    private String activityName;
+
+    @ApiModelProperty(value = "娲诲姩寮�濮嬫椂闂�", example = "2025-06-01 08:30:00")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    /** 娲诲姩缁撴潫鏃堕棿 */
+    @ApiModelProperty(value = "娲诲姩缁撴潫鏃堕棿", example = "2025-06-01 17:00:00")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    /** 娲诲姩鐘舵�� */
+    @ApiModelProperty(value = "娲诲姩鐘舵��", example = "杩涜涓�/宸茬粨鏉�/宸插彇娑�")
+    private String status;
+
+    /** 娲诲姩鍦扮偣 */
+    @ApiModelProperty(value = "娲诲姩鍦扮偣", example = "鍖椾含甯傛湞闃冲尯濂ユ灄鍖瑰厠鍏洯")
+    private String activityLocation;
+
+    /** 鏄惁鍙栨秷*/
+    private boolean cancel;
+
+    /** 鎶ュ悕涓棿琛╥d*/
+    private String activityReportId;
+
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java b/framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java
index 7f1b6e5..ac7f14b 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/mapper/ActivityMapper.java
@@ -2,11 +2,11 @@
 
 import cn.lili.modules.lmk.domain.entity.Activity;
 import cn.lili.modules.lmk.domain.entity.CustomerBlack;
-import cn.lili.modules.lmk.domain.query.ActivityMembersQuery;
-import cn.lili.modules.lmk.domain.query.ActivityQuery;
-import cn.lili.modules.lmk.domain.query.CustomerBlackQuery;
+import cn.lili.modules.lmk.domain.query.*;
+import cn.lili.modules.lmk.domain.vo.ActivityReportVO;
 import cn.lili.modules.lmk.domain.vo.ActivityVO;
 import cn.lili.modules.lmk.domain.vo.CustomerBlackVO;
+import cn.lili.modules.lmk.domain.vo.MyActivityVo;
 import cn.lili.modules.member.entity.vo.MemberVO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -38,4 +38,17 @@
 
 
     IPage getMembers(IPage page, @Param("query") ActivityMembersQuery query);
+
+    List<MyActivityVo> getMyActivityList(@Param("query")MyActivityQuery query);
+
+    int cancelActivity(String id);
+
+    ActivityReportVO getActivityReport(@Param("query")ActivityReportQuery query);
+
+    /**
+     * 鎵归噺鏇存柊娲诲姩
+     * @param activityList 寰呮洿鏂板疄浣撳垪琛紙蹇呴』鍖呭惈ID锛�
+     * @return 鍙楀奖鍝嶇殑琛屾暟
+     */
+    int batchUpdateActivities(@Param("list") List<Activity> activityList);
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/ActivityService.java b/framework/src/main/java/cn/lili/modules/lmk/service/ActivityService.java
index 102a5e2..a2b6106 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/ActivityService.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/ActivityService.java
@@ -5,6 +5,7 @@
 import cn.lili.modules.lmk.domain.form.ActivityForm;
 import cn.lili.modules.lmk.domain.query.ActivityMembersQuery;
 import cn.lili.modules.lmk.domain.query.ActivityQuery;
+import cn.lili.modules.lmk.domain.query.MyActivityQuery;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -71,4 +72,5 @@
     Result activityChangeRecommend(ActivityForm form);
 
     Result activityMembersPage(ActivityMembersQuery query);
+
 }
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/MyActivityService.java b/framework/src/main/java/cn/lili/modules/lmk/service/MyActivityService.java
new file mode 100644
index 0000000..a52e75c
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/MyActivityService.java
@@ -0,0 +1,13 @@
+package cn.lili.modules.lmk.service;
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.entity.Activity;
+import cn.lili.modules.lmk.domain.query.ActivityReportQuery;
+import cn.lili.modules.lmk.domain.query.MyActivityQuery;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+public interface MyActivityService extends IService<Activity> {
+    public Result getMyActivityList(MyActivityQuery query);
+
+    public Result cancelActivity(ActivityReportQuery query);
+}
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java
index f2e2db6..78ec501 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/ActivityServiceImpl.java
@@ -71,6 +71,10 @@
         return Result.ok("淇敼鎴愬姛");
     }
 
+    public void updateByList(List<Activity> vo){
+
+    }
+
     @Override
     public Result remove(List<String> ids) {
         baseMapper.deleteBatchIds(ids);
diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/MyActivityServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/MyActivityServiceImpl.java
new file mode 100644
index 0000000..8193824
--- /dev/null
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/MyActivityServiceImpl.java
@@ -0,0 +1,64 @@
+package cn.lili.modules.lmk.service.impl;
+
+import cn.lili.base.Result;
+import cn.lili.modules.lmk.domain.entity.Activity;
+import cn.lili.modules.lmk.domain.query.ActivityReportQuery;
+import cn.lili.modules.lmk.domain.query.MyActivityQuery;
+import cn.lili.modules.lmk.domain.vo.ActivityReportVO;
+import cn.lili.modules.lmk.domain.vo.ActivityVO;
+import cn.lili.modules.lmk.domain.vo.MyActivityVo;
+import cn.lili.modules.lmk.mapper.ActivityMapper;
+import cn.lili.modules.lmk.service.LmkFileService;
+import cn.lili.modules.lmk.service.MyActivityService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class MyActivityServiceImpl extends ServiceImpl<ActivityMapper, Activity> implements MyActivityService {
+    private final ActivityMapper activityMapper;
+    private final LmkFileService lmkFileService;
+
+    @Override
+    public Result getMyActivityList(MyActivityQuery query) {
+        List<MyActivityVo>  myActivityList = activityMapper.getMyActivityList(query);
+
+        for (MyActivityVo vo : myActivityList) {
+            System.out.println(vo);
+            if (!"鏂囧瓧".equals(vo.getCoverType())){
+//                String url = lmkFileService.getPreviewUrl(vo.getCover());
+//                vo.setUrl(url);
+            }
+        }
+        return Result.ok().data(myActivityList);
+    }
+
+    @Override
+    public Result cancelActivity(ActivityReportQuery query) {
+       //  TODO  鍒ゆ柇鏄惁鍦ㄦ姤鍚嶆椂闂村唴 鍦ㄧ殑璇濆彲浠ュ彇娑堟姤鍚嶏紝 锛堣嫢鏈夋姤鍚嶈垂闇�瑕侀��娆撅級
+        ActivityReportVO vo = activityMapper.getActivityReport(query);
+
+        Activity activity = activityMapper.selectById(vo.getActivityId());
+
+        Date date = new Date();
+        if(!date.before(activity.getReportStartTime()) && !date.after(activity.getReportEndTime())){
+            int affectedRows = activityMapper.cancelActivity(vo.getId());
+
+            if (affectedRows > 0) {
+                return Result.ok("娲诲姩鍙栨秷鎴愬姛");
+            } else {
+                // 鍙�夛細璁板綍璀﹀憡鏃ュ織
+                throw new RuntimeException("娲诲姩涓嶅瓨鍦ㄦ垨宸插彇娑�");
+            }
+        }else {
+            throw new RuntimeException("娲诲姩宸蹭笉鍦ㄦ姤鍚嶆椂闂村唴鏃犳硶鍙栨秷");
+        }
+
+
+
+    }
+}
diff --git a/framework/src/main/resources/mapper/lmk/ActivityMapper.xml b/framework/src/main/resources/mapper/lmk/ActivityMapper.xml
index 68c6209..0362cd4 100644
--- a/framework/src/main/resources/mapper/lmk/ActivityMapper.xml
+++ b/framework/src/main/resources/mapper/lmk/ActivityMapper.xml
@@ -20,9 +20,50 @@
         <result column="activity_content" property="activityContent" />
     </resultMap>
 
+    <resultMap id="MyActivityResultMap" type="cn.lili.modules.lmk.domain.vo.MyActivityVo">
+        <result column="activity_name" property="activityName" />
+        <result column="activity_type" property="activityType"/>
+        <result column="end_time" property="endTime" />
+        <result column="status" property="status" />
+        <result column="cover" property="cover" />
+        <result column="cover_type" property="coverType" />
+        <result column="activity_location" property="activityLocation" />
+        <result column="cancel" property="cancel"/>
+        <result column="activity_report_id" property="activityReportId"/>
+    </resultMap>
+
+    <resultMap id="ActivityReportMap" type="cn.lili.modules.lmk.domain.vo.ActivityReportVO">
+        <result column="activity_id" property="activityId"/>
+        <result column="user_id" property="userId"/>
+    </resultMap>
 
 
-
+    <select id="getMyActivityList" resultMap="MyActivityResultMap">
+        SELECT
+            LA.id,
+            LA.activity_name,
+            LA.activity_type,
+            LA.start_time,
+            LA.end_time,
+            LA.status,
+            LA.cover,
+            LA.cover_type,
+            LA.activity_location,
+            LAR.cancel,
+            LA.id as activity_report_id
+        FROM lmk_activity_report LAR
+                 LEFT JOIN lmk_activity LA ON LAR.activity_id = LA.id
+        where  LA.delete_flag = 0
+          AND LAR.delete_flag = 0
+          AND LAR.user_id = #{query.id}
+          AND LAR.cancel = #{query.cancel}
+        <if test="query.status == null or query.status == ''">
+            AND LA.status != '宸茬粨鏉�'
+        </if>
+        <if test="query.status != null and query.status != ''">
+          AND LA.status = #{query.status}
+          </if>
+    </select>
 
 
 
@@ -107,4 +148,31 @@
         WHERE LAR.activity_id = #{query.id}
     </select>
 
+
+    <update id="cancelActivity" >
+        UPDATE
+            lmk_activity_report LAR
+        SET LAR.cancel = true where LAR.id = #{id}
+    </update>
+
+
+    <select id="getActivityReport" resultMap="ActivityReportMap">
+        SELECT LAR.* FROM lmk_activity_report LAR
+        WHERE LAR.user_id = #{query.userId} and LAR.activity_id = #{query.activityId}
+    </select>
+
+    <update id="batchUpdateActivities">
+        UPDATE lmk_activity
+        <trim prefix="SET" suffixOverrides=",">
+            <trim prefix="status = CASE id" suffix="END,">
+                <foreach collection="list" item="item">
+                    WHEN #{item.id} THEN #{item.status}
+                </foreach>
+            </trim>
+        </trim>
+        WHERE id IN
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item.id}
+        </foreach>
+    </update>
 </mapper>
diff --git a/lmk-job/src/main/java/cn/lili/job/ActivityJob.java b/lmk-job/src/main/java/cn/lili/job/ActivityJob.java
new file mode 100644
index 0000000..ceb4693
--- /dev/null
+++ b/lmk-job/src/main/java/cn/lili/job/ActivityJob.java
@@ -0,0 +1,77 @@
+package cn.lili.job;
+
+import cn.lili.common.enums.ActivityStatusEnum;
+import cn.lili.modules.lmk.domain.entity.Activity;
+import cn.lili.modules.lmk.domain.entity.CustomerBlack;
+import cn.lili.modules.lmk.domain.vo.ActivityVO;
+import cn.lili.modules.lmk.domain.vo.CollectTypeNumVO;
+import cn.lili.modules.lmk.enums.general.CollectTypeEnum;
+import cn.lili.modules.lmk.mapper.ActivityMapper;
+import cn.lili.modules.lmk.service.ActivityService;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 娲诲姩鐩稿叧浠诲姟
+ * */
+@Component
+@RequiredArgsConstructor
+public class ActivityJob {
+
+    private final ActivityMapper activityMapper;
+
+    /**
+     * 鏇村叿鎶ュ悕鏃堕棿娈典笌娲诲喕鏃堕棿娈碉紝鏀瑰彉娲诲姩鐘舵��
+     *
+     * */
+    @XxlJob("activityStatusJob")
+    public void activityStatusJob() throws Exception {
+        XxlJobHelper.log("寮�濮嬫墽琛岋細娲诲姩鐘舵�佹敼鍙�");
+        //鑾峰緱鎵�鏈� 娲诲姩
+        List<Activity> activeActivities = new LambdaQueryChainWrapper<Activity>(activityMapper)
+                .orderByAsc(Activity::getCreateTime)  // 鎸夊垱寤烘椂闂村崌搴�
+                .list();
+        Date now = new Date(); // 鑾峰彇褰撳墠鏃堕棿
+
+
+
+        for (Activity activity : activeActivities) {
+            if (isInProgress(now, activity)) {
+                activity.setStatus(ActivityStatusEnum.IN_PROGRESS.getType());
+            } else if (isRecruiting(now, activity)) {
+                activity.setStatus(ActivityStatusEnum.REPORT.getType());
+            } else if (now.after(activity.getReportStartTime())) {
+                activity.setStatus(ActivityStatusEnum.NOT_STARTED.getType());
+            } else {
+                activity.setStatus(ActivityStatusEnum.ENDED.getType());
+            }
+        }
+        activityMapper.batchUpdateActivities(activeActivities);
+
+        // 淇敼
+        XxlJobHelper.log("鎵ц瀹屾垚锛氭椿鍔ㄧ姸鎬佹敼鍙�");
+
+    }
+
+    private boolean isInProgress(Date now, Activity activity) {
+        System.out.println("杩涜涓�");
+        return !now.before(activity.getReportStartTime()) && !now.after(activity.getReportEndTime());
+    }
+
+
+    private boolean isRecruiting(Date now, Activity activity) {
+        System.out.println("鎶ュ悕涓�");
+        return !now.before(activity.getStartTime()) && !now.after(activity.getEndTime());
+    }
+
+}

--
Gitblit v1.8.0