Browse Source

活动报名、取消报名逻辑完善

feature/screenDataPush
zhangyongzhangyong 4 years ago
parent
commit
7ffdb5babc
  1. 2
      esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/AppActUserCancelsignupDTO.java
  2. 11
      esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActPeriodDao.java
  3. 11
      esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActPeriodService.java
  4. 4
      esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActPeriodServiceImpl.java
  5. 31
      esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserRelationServiceImpl.java
  6. 10
      esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActPeriodDao.xml

2
esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/AppActUserCancelsignupDTO.java

@ -53,6 +53,6 @@ public class AppActUserCancelsignupDTO implements Serializable {
/**
* 活动详细时间段表ID
*/
@NotNull(message = "活动时间段ID不能为")
@NotNull(message = "活动时间段ID不能为NULL")
private List<String> actPeriodId;
}

11
esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActPeriodDao.java

@ -21,6 +21,7 @@ import com.elink.esua.epdc.activity.ActPeriodDTO;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.modules.activity.entity.ActPeriodEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -64,4 +65,14 @@ public interface ActPeriodDao extends BaseDao<ActPeriodEntity> {
List<ActPeriodDTO> selectListOfActPeriodsByActId(String actId);
List<ActPeriodDTO> selectActTimeByActId(String actId);
/**
* 根据活动id查询该活动存在几条活动时间段
* 如果是老数据则为 0
*
* @param actId
* @return java.lang.Integer
* @Author zhangyong
* @Date 17:29 2021-09-24
**/
Integer getPeriodNumberByActId(@Param("actId") String actId);
}

11
esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActPeriodService.java

@ -112,4 +112,15 @@ public interface ActPeriodService extends BaseService<ActPeriodEntity> {
* @since 2021/9/2 16:13
*/
List<ActPeriodDTO> listOfActPeriodsByActId(String actId);
/**
* 根据活动id查询该活动存在几条活动时间段
* 如果是老数据则为 0
*
* @param actId
* @return java.lang.Integer
* @Author zhangyong
* @Date 17:29 2021-09-24
**/
Integer getPeriodNumberByActId(String actId);
}

4
esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActPeriodServiceImpl.java

@ -121,4 +121,8 @@ public class ActPeriodServiceImpl extends BaseServiceImpl<ActPeriodDao, ActPerio
return data;
}
@Override
public Integer getPeriodNumberByActId(String actId) {
return baseDao.getPeriodNumberByActId(actId);
}
}

31
esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserRelationServiceImpl.java

@ -259,18 +259,15 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl<ActUserRelationD
// 活动报名的按钮,报名后。在取消 报名活动的所有时间段之前,不支持再次报名!
List<ActPeriodDTO> periods = actUserRelationDTO.getPeriods();
if (CollectionUtil.isEmpty(periods)) {
// 兼容之前,不存在 活动时间段 的老数据
ActInfoDTO actInfoDTO = actInfoDao.queryActSignupNum(actUserRelationDTO.getActId());
if (NumConstant.ZERO != actInfoDTO.getActQuotaCategory() && actInfoDTO.getActQuota().equals(actInfoDTO.getSignupNum())) {
return new Result().error("活动已报满");
}
} else {
// 校验当前报名的 活动时间段,是否已报满
List<ActPeriodDTO> periodsByActId = actPeriodService.listOfActPeriodsByActId(actUserRelationDTO.getActId());
for (ActPeriodDTO period : periods) {
for (ActPeriodDTO dto : periodsByActId) {
if (NumConstant.ZERO != dto.getActPeriodQuotaCategory() && dto.getActPeriodQuota().equals(dto.getActPeriodSignUpNum())) {
return new Result().error("该" + dto.getActPeriodStartTime() + "-" + dto.getActPeriodEndTime() + "时间段的活动已报满! 请选择其他时间段");
if (period.getId().equals(dto.getId())) {
if (NumConstant.ZERO != dto.getActPeriodQuotaCategory() &&
dto.getActPeriodQuota().equals(dto.getActPeriodSignUpNum())) {
return new Result().error("该时间段活动已报满! 请选择其他时间段");
}
}
}
}
@ -313,9 +310,15 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl<ActUserRelationD
return new Result().ok("报名成功");
}
@Override
@Transactional(rollbackFor = Exception.class)
public Result activityCancelSignUp(AppActUserCancelsignupDTO appActUserCancelsignupDTO) {
// 根据活动id,查询该活动是否属于老数据(即,epdc_act_period 表中,不存在的活动)
Integer number = actPeriodService.getPeriodNumberByActId(appActUserCancelsignupDTO.getActId());
// 0 != number 该活动属于新数据,先进行 活动时间段逻辑处理
if (NumConstant.ZERO != number) {
// 用户取消报名,先对已报名的 所有时间段进行处理
if (NumConstant.ZERO < appActUserCancelsignupDTO.getActPeriodId().size()) {
// 查询用户关联表主键
@ -340,12 +343,16 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl<ActUserRelationD
}
// 是否已经取消了,报名的所有活动时间段
if (NumConstant.ZERO < periodTime.size()) {
// 否,不再进行下一步操作
// 否,退出。不再进行下一步操作
return new Result().ok("取消报名成功");
}
}
// 是,用户取消报名(已报名的所有时间段),处理完报名的所有时间段之后,再走原先的 取消报名逻辑
// 用户取消报名(已报名的所有时间段),处理完报名的所有时间段之后,再走原先的 取消报名逻辑
} else {
// 该活动存在 时间段,但用户取消报名时,未勾选。此时,返回提示:请选择要取消的时间段
return new Result().error("请选择要取消的时间段");
}
}
//查询是否已报名
List<String> statusList = new ArrayList<>();

10
esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActPeriodDao.xml

@ -52,4 +52,14 @@
ID = #{actId}
</select>
<select id="getPeriodNumberByActId" resultType="java.lang.Integer">
SELECT
count(id)
FROM
epdc_act_period P
WHERE
P.DEL_FLAG = '0'
AND P.ACT_ID = #{actId}
</select>
</mapper>

Loading…
Cancel
Save