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