From cca34264750707ccd94d1916a9511ea3af2319f3 Mon Sep 17 00:00:00 2001 From: xhxu Date: Fri, 29 Jan 2021 14:40:51 +0800 Subject: [PATCH] active --- .../V202101290001__wx_activity_update.sql | 7 +++ .../controller/WxActivityController.java | 4 +- .../java/com/iformall/common/ErrorCode.java | 6 +++ .../com/iformall/domain/po/WxActivity.java | 11 ++++ .../iformall/enums/EnumActivityStatus.java | 3 +- .../iformall/mapper/WxActivityJoinMapper.java | 2 +- .../impl/WxActivityJoinServiceImpl.java | 40 +++++++++++++-- .../service/impl/WxActivityServiceImpl.java | 50 ++++++++++++++++--- .../resources/mapper/WxActivityJoinMapper.xml | 13 +++-- .../resources/mapper/WxActivityMapper.xml | 17 ++++++- 10 files changed, 130 insertions(+), 23 deletions(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V202101290001__wx_activity_update.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V202101290001__wx_activity_update.sql b/mallinkAdmin/src/main/resources/db/migration/V202101290001__wx_activity_update.sql new file mode 100644 index 000000000..8efb2d200 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V202101290001__wx_activity_update.sql @@ -0,0 +1,7 @@ +ALTER TABLE `wx_activity` +ADD COLUMN `activity_type` smallint(2) NOT NULL DEFAULT 1 COMMENT '活动类型(是否需要报名1是0否)' AFTER `html`, +ADD COLUMN `signup_examine` smallint(2) NOT NULL DEFAULT 1 COMMENT '报名审核 1是0否(activity_type=1时必填)' AFTER `person_limit`, +MODIFY COLUMN `person_limit` int(11) COMMENT '报名人数(activity_type=1时必填)' AFTER `activity_type`, +MODIFY COLUMN `start_time` datetime(0) COMMENT '活动报名开始时间(activity_type=1时必填)' AFTER `status`, +MODIFY COLUMN `end_time` datetime(0) COMMENT '活动报名结束时间(activity_type=1时必填)' AFTER `start_time`, +MODIFY COLUMN `question` json COMMENT '问题' AFTER `end_time`; \ No newline at end of file diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxActivityController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxActivityController.java index da01b2ae4..2b60c297a 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxActivityController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxActivityController.java @@ -45,7 +45,7 @@ public class WxActivityController extends BaseController { public ResultData list(@ModelAttribute WxActivity wxActivity, Integer pageNum, Integer pageSize) { logger.debug("[" + getIpAddr() + "] WxActivityController::list"); if (null == wxActivity) wxActivity = new WxActivity(); - wxActivity.setStatus(EnumActivityStatus.INJECT_ONLINE.getCode()); + wxActivity.setStatus(EnumActivityStatus.INJECT_ONLINES.getCode()); wxActivity.updateTenantInfo(getTenantInfo()); wxActivity.setSortColumns(BaseEntity.SortField.ActivityStartTime_DESC,BaseEntity.SortField.Id_DESC); final PageInfo page = wxActivityService.listAsPage(wxActivity, pageNum, pageSize); @@ -60,7 +60,7 @@ public class WxActivityController extends BaseController { public ResultData listStatus(@ModelAttribute WxActivity wxActivity) { logger.debug("[" + getIpAddr() + "] WxActivityController::list"); if (null == wxActivity) wxActivity = new WxActivity(); - wxActivity.setStatus(EnumActivityStatus.INJECT_ONLINE.getCode()); + wxActivity.setStatus(EnumActivityStatus.INJECT_ONLINES.getCode()); wxActivity.updateTenantInfo(getTenantInfo()); wxActivity.setSortColumns(BaseEntity.SortField.ActivityStartTime_DESC,BaseEntity.SortField.Id_DESC); if(wxActivity.getStartDate() == null || wxActivity.getEndDate() == null){ diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 46c84fe9c..0ce1b674e 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -543,6 +543,12 @@ public enum ErrorCode{ ACTIVITY_SEND_ERROR_NOONLINE(30008, "活动投放到宣传页失败,活动未上线!"), ACTIVITY_NOT_FOND(30009, "活动未找到!"), ACTIVITY_JOIN_TIME_START(30010, "活动报名时间未开始!"), + ACTIVITY_JOIN_END_TIME_BEFORE(30011, "活动报名结束时间不能小于当前时间"), + ACTIVITY_END_TIME_BEFORE(30012, "活动结束时间不能小于当前时间"), + ACTIVITY_NOT_JOIN(30013, "该活动不需要报名!"), + ACTIVITY_JOIN_IS_SIGNIN(30014, "用户已签到!"), + ACTIVITY_JOIN_NOT_FOND(30015, "活动报名未找到!"), + ACTIVITY_NOT_UPDATE(30016, "下线状态,不允许修改!"), /** * 文件上传 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java b/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java index 3fb0ab51a..00ef12db9 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxActivity.java @@ -35,6 +35,13 @@ public class WxActivity extends TenantEntity { private Integer personLimit; @io.swagger.annotations.ApiModelProperty(value = "活动正文", name = "detail") private String detail; + + @io.swagger.annotations.ApiModelProperty(value = "活动类型(是否需要报名1是0否)", name = "activityType") + private Integer activityType; + + @io.swagger.annotations.ApiModelProperty(value = "报名审核 1是0否(activity_type=1时必填)", name = "signupExamine") + private Integer signupExamine; + @io.swagger.annotations.ApiModelProperty(value = "活动开始报名时间", name = "startTime") private Date startTime; @io.swagger.annotations.ApiModelProperty(value = "活动结束报名时间", name = "endTime") @@ -115,5 +122,9 @@ public class WxActivity extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "常见问题选择", name = "selectques") private String selectques; + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value = "报名状态", name = "joinStatus") + private Integer joinStatus; + } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumActivityStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumActivityStatus.java index a7f896a0f..2ec131ed5 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumActivityStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumActivityStatus.java @@ -9,7 +9,8 @@ public enum EnumActivityStatus { STATUS_THROW_IN(0, "已保存"), STATUS_TAKE_OFFF(1, "已下线"), INJECT_CAMPAIGN(2, "已投放"), - INJECT_ONLINE(3, "已上线"),; + INJECT_ONLINE(3, "已上线"), + INJECT_ONLINES(4, "上过线"),;//查询状态 public static EnumActivityStatus getEnum(Integer code) { for (EnumActivityStatus value : values()) { diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxActivityJoinMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxActivityJoinMapper.java index bd130e2dc..d12a0cbe5 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxActivityJoinMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxActivityJoinMapper.java @@ -18,7 +18,7 @@ public interface WxActivityJoinMapper extends CommonMapper void updateSendMsg(Map param); - void updateStatus(List wxActivity); +// void updateStatus(List wxActivity); void activityExpired(); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java index 534961844..cdfb9c8f1 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxActivityJoinServiceImpl.java @@ -73,6 +73,10 @@ public class WxActivityJoinServiceImpl implements WxActivityJoinService { @Override public ResultData modifyStatus(WxActivityJoin wxActivityJoin) { + WxActivityJoin wxActivityJoin1 = wxActivityJoinMapper.selectById(wxActivityJoin.getId()); + if(wxActivityJoin1 == null){ + return new ResultData(ErrorCode.ACTIVITY_JOIN_NOT_FOND); + } if (wxActivityJoin.getStatus().equals(EnumActivityJoinStatus.CONFIRMED.getCode())) { WxActivity wxActivity = wxActivityMapper.selectById(wxActivityJoin.getActivityId()); Integer personLimit = wxActivity.getPersonLimit(); @@ -84,7 +88,12 @@ public class WxActivityJoinServiceImpl implements WxActivityJoinService { if (personLimit.equals(count)) { return new ResultData(ErrorCode.ACTIVITY_PERSON_LIMITED, count); } + }else{ + if(wxActivityJoin1.getSignIn().equals(EnumActivityJoinSignStatus.YES.getCode())){ + return new ResultData(ErrorCode.ACTIVITY_JOIN_IS_SIGNIN); + } } + wxActivityJoinMapper.updateById(wxActivityJoin); return new ResultData(Result.SUCCESS, "操作成功"); } @@ -171,13 +180,19 @@ public class WxActivityJoinServiceImpl implements WxActivityJoinService { return new ResultData(ErrorCode.ACTIVITY_NOT_FOND); } Date date = new Date(); - if(date.getTime() < wxActivity.getStartTime().getTime()){ - return new ResultData(ErrorCode.ACTIVITY_JOIN_TIME_START); - } - if(date.getTime() > wxActivity.getEndTime().getTime()){ - return new ResultData(ErrorCode.ACTIVITY_JOIN_TIME_END); + if(wxActivity.getActivityType().equals(EnumDelFlag.YES.getCode())){ + if(date.getTime() < wxActivity.getStartTime().getTime()){ + return new ResultData(ErrorCode.ACTIVITY_JOIN_TIME_START); + } + if(date.getTime() > wxActivity.getEndTime().getTime()){ + return new ResultData(ErrorCode.ACTIVITY_JOIN_TIME_END); + } + + }else{ + return new ResultData(ErrorCode.ACTIVITY_NOT_JOIN); } + WxActivityJoin joinQuery = new WxActivityJoin(); joinQuery.setUserId(wxActivityJoin.getUserId()); joinQuery.setActivityId(wxActivityJoin.getActivityId()); @@ -185,6 +200,20 @@ public class WxActivityJoinServiceImpl implements WxActivityJoinService { if (count > 0) { return new ResultData(ErrorCode.ACTIVITY_JOINED); } + if(wxActivity.getSignupExamine().equals(EnumDelFlag.YES.getCode())){ + wxActivityJoin.setStatus(EnumActivityJoinStatus.NOT_CONFIRMED.getCode()); + }else{ + WxActivityJoin params = new WxActivityJoin(); + params.updateTenantInfo(wxActivity); + params.setActivityId(wxActivity.getId()); + params.setStatus(EnumActivityJoinStatus.CONFIRMED.getCode()); + int joinCount = wxActivityJoinMapper.selectCount(new QueryWrapper(params)); + if (joinCount >= wxActivity.getPersonLimit().intValue()) { + return new ResultData(ErrorCode.ACTIVITY_PERSON_LIMITED, joinCount); + } + wxActivityJoin.setStatus(EnumActivityJoinStatus.CONFIRMED.getCode()); + } + WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(wxActivityJoin.getUserId(),wxActivityJoin.getFinalTenantId()); //查询是否消耗积分 if (wxActivity.getUseCredit().equals(EnumActivityUseCreditStatus.YES.getCode())) { @@ -202,6 +231,7 @@ public class WxActivityJoinServiceImpl implements WxActivityJoinService { wxCreditHistory.setOperatorId(wxActivityJoin.getUserId()); wxCreditHistoryService.saveOrUpdate(wxCreditHistory,wxActivity.getTenantId()); } + //保存到报名表中 final IdWorker idWorker = IdWorker.get(); wxActivityJoin.setId(idWorker.nextId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxActivityServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxActivityServiceImpl.java index 2d2b60825..ea55ea653 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxActivityServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxActivityServiceImpl.java @@ -93,23 +93,59 @@ public class WxActivityServiceImpl implements WxActivityService { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "图文内容过大无法保存"); } } else { - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"type"); } - wxActivity.setStatus(EnumActivityStatus.STATUS_THROW_IN.getCode()); - if (wxActivity.getEndTime().before(new Date())) { - throw new MallinkException(ErrorCode.ACTIVITY_JOIN_TIME_END); + + if(wxActivity.getActivityStartTime() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "活动开始时间不能为空"); } - if (wxActivity.getEndTime().after(wxActivity.getActivityEndTime())) { - throw new MallinkException(ErrorCode.ACTIVITY_TIME_ERROR); + if(wxActivity.getActivityEndTime() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "活动结束时间不能为空"); } + + if(wxActivity.getActivityType() == null){ + wxActivity.setActivityType(EnumDelFlag.YES.getCode()); + } + if(wxActivity.getActivityType().equals(EnumDelFlag.YES.getCode())){ + if(wxActivity.getSignupExamine() == null){ + wxActivity.setSignupExamine(EnumDelFlag.YES.getCode()); + } + if(wxActivity.getPersonLimit() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "报名人数不能为空"); + } + if(wxActivity.getStartTime() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "报名开始时间不能为空"); + } + if(wxActivity.getEndTime() == null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "报名结束时间不能为空"); + } + if (wxActivity.getEndTime().before(new Date())) { + throw new MallinkException(ErrorCode.ACTIVITY_JOIN_END_TIME_BEFORE); + } + if (wxActivity.getEndTime().after(wxActivity.getActivityEndTime())) { + throw new MallinkException(ErrorCode.ACTIVITY_TIME_ERROR); + } + }else if(wxActivity.getActivityType().equals(EnumDelFlag.NO.getCode())){ + if (wxActivity.getActivityEndTime().before(new Date())) { + throw new MallinkException(ErrorCode.ACTIVITY_END_TIME_BEFORE); + } + }else{ + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"activityType"); + } + + wxActivity.setStatus(EnumActivityStatus.STATUS_THROW_IN.getCode()); Date date = new Date(); - wxActivity.setCreateTime(date); wxActivity.setUpdateTime(date); if (wxActivity.getId() == null) { final IdWorker idWorker = IdWorker.get(); wxActivity.setId(idWorker.nextId()); + wxActivity.setCreateTime(date); wxActivityMapper.insert(wxActivity); } else { + WxActivity wxActivity1 = wxActivityMapper.selectById(wxActivity.getId()); + if(wxActivity1.getStatus().equals(EnumActivityStatus.STATUS_TAKE_OFFF.getCode())){ + return new ResultData(ErrorCode.ACTIVITY_NOT_UPDATE); + } wxActivityMapper.updateById(wxActivity); } return new ResultData(Result.SUCCESS, "操作成功"); diff --git a/mallinkService/src/main/resources/mapper/WxActivityJoinMapper.xml b/mallinkService/src/main/resources/mapper/WxActivityJoinMapper.xml index b22de08d0..6d910f9e3 100644 --- a/mallinkService/src/main/resources/mapper/WxActivityJoinMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxActivityJoinMapper.xml @@ -80,7 +80,7 @@ diff --git a/mallinkService/src/main/resources/mapper/WxActivityMapper.xml b/mallinkService/src/main/resources/mapper/WxActivityMapper.xml index 16536670c..cd1b5c9ea 100644 --- a/mallinkService/src/main/resources/mapper/WxActivityMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxActivityMapper.xml @@ -17,6 +17,8 @@ + + @@ -31,7 +33,7 @@ - `id`,`tenant_id`,`parent_tenant_id`,`cover_img`,`title`,`sub_title`,`detail`,`html`,`person_limit`,`activity_start_time`,`activity_end_time`, + `id`,`tenant_id`,`parent_tenant_id`,`cover_img`,`title`,`sub_title`,`detail`,`html`,`activity_type`,`signup_examine`,`person_limit`,`activity_start_time`,`activity_end_time`, `use_credit`,`credit`,`type`,`status`,`start_time`,`end_time`,`question`,`is_expired`,`create_time`,`update_time`,`use_img`, `img_detail`,`send_msg`,`selectques` @@ -65,14 +67,25 @@ and `type` = #{type} + + + and `activity_type` = #{activityType} + + + and `signup_examine` = #{signupExamine} + - + and `status` = #{status} and `status` >= 2 and `status` <= 3 + + + and `status` > 0 + and `create_time` = #{createTime}