| @@ -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`; | |||
| @@ -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<WxActivity> 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){ | |||
| @@ -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, "下线状态,不允许修改!"), | |||
| /** | |||
| * 文件上传 | |||
| @@ -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; | |||
| } | |||
| @@ -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()) { | |||
| @@ -18,7 +18,7 @@ public interface WxActivityJoinMapper extends CommonMapper<WxActivityJoin, Long> | |||
| void updateSendMsg(Map<String, Object> param); | |||
| void updateStatus(List<WxActivity> wxActivity); | |||
| // void updateStatus(List<WxActivity> wxActivity); | |||
| void activityExpired(); | |||
| } | |||
| @@ -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()); | |||
| @@ -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, "操作成功"); | |||
| @@ -80,7 +80,7 @@ | |||
| <select id="cfindList" parameterType="com.iformall.domain.po.WxActivityJoin" | |||
| resultType="com.iformall.domain.po.WxActivity"> | |||
| select a.id,a.cover_img,a.title,a.activity_start_time,a.activity_end_time,aj.`status` | |||
| select a.id,a.cover_img,a.title,a.activity_start_time,a.activity_end_time,aj.`status` join_status,a.`status` | |||
| from wx_activity_join aj left join wx_activity a on aj.activity_id=a.id | |||
| where aj.user_id=#{userId} | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| @@ -89,11 +89,14 @@ | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and aj.`parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <if test=" null != statusStr and ''!=statusStr"> | |||
| and aj.`status` in (${statusStr}) and a.`status`=2 | |||
| </if> | |||
| <!-- <if test=" null != statusStr and ''!=statusStr">--> | |||
| <!-- and aj.`status` in (${statusStr}) and a.`status`=2--> | |||
| <!-- </if>--> | |||
| <!-- <if test=" null != status">--> | |||
| <!-- and a.`status`= 1--> | |||
| <!-- </if>--> | |||
| <if test=" null != status"> | |||
| and a.`status`= 1 | |||
| and aj.`status`= #{status} | |||
| </if> | |||
| <if test=" null != sortColumns">order by aj.${sortColumns}</if> | |||
| </select> | |||
| @@ -17,6 +17,8 @@ | |||
| <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/> | |||
| <result column="html" jdbcType="VARCHAR" property="html"/> | |||
| <result column="person_limit" jdbcType="INTEGER" property="personLimit"/> | |||
| <result column="activity_type" jdbcType="INTEGER" property="activityType"/> | |||
| <result column="signup_examine" jdbcType="INTEGER" property="signupExamine"/> | |||
| <result column="activity_start_time" jdbcType="TIMESTAMP" property="activityStartTime"/> | |||
| <result column="activity_end_time" jdbcType="TIMESTAMP" property="activityEndTime"/> | |||
| <result column="use_credit" jdbcType="INTEGER" property="useCredit"/> | |||
| @@ -31,7 +33,7 @@ | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| `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` | |||
| </sql> | |||
| @@ -65,14 +67,25 @@ | |||
| <if test=" null != type "> | |||
| and `type` = #{type} | |||
| </if> | |||
| <if test=" null != activityType "> | |||
| and `activity_type` = #{activityType} | |||
| </if> | |||
| <if test=" null != signupExamine "> | |||
| and `signup_examine` = #{signupExamine} | |||
| </if> | |||
| <if test=" null != status and status != 3"> | |||
| <if test=" null != status and status < 3"> | |||
| and `status` = #{status} | |||
| </if> | |||
| <if test=" null != status and status == 3"> | |||
| and `status` >= 2 and `status` <= 3 | |||
| </if> | |||
| <if test=" null != status and status == 4"> | |||
| and `status` > 0 | |||
| </if> | |||
| <if test=" null != createTime "> | |||
| and `create_time` = #{createTime} | |||