|
|
@ -39,6 +39,7 @@ import com.epmet.dto.ActUserRelationDTO; |
|
|
|
import com.epmet.dto.form.resi.ResiActRegistrationFormDTO; |
|
|
|
import com.epmet.dto.form.resi.ResiActUserCancelSignUpFormDTO; |
|
|
|
import com.epmet.dto.result.UserRoleResultDTO; |
|
|
|
import com.epmet.dto.result.resi.ResiActRegistrationResultDTO; |
|
|
|
import com.epmet.entity.ActUserLogEntity; |
|
|
|
import com.epmet.entity.ActUserRelationEntity; |
|
|
|
import com.epmet.entity.HeartUserInfoEntity; |
|
|
@ -54,10 +55,7 @@ import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import java.util.Arrays; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
/** |
|
|
|
* 用户活动关系表 |
|
|
@ -197,9 +195,10 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl<ActUserRelationD |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public Result registration(TokenDto tokenDto, ResiActRegistrationFormDTO formDTO) { |
|
|
|
public Result<ResiActRegistrationResultDTO> registration(TokenDto tokenDto, ResiActRegistrationFormDTO formDTO) { |
|
|
|
formDTO.setUserId(tokenDto.getUserId()); |
|
|
|
boolean satisfy = false; |
|
|
|
ResiActRegistrationResultDTO resultDTO = new ResiActRegistrationResultDTO(); |
|
|
|
// 查询活动信息
|
|
|
|
ActInfoDTO actInfoDTO = actInfoService.get(formDTO.getActId()); |
|
|
|
// >0 当前用户是志愿者
|
|
|
@ -207,15 +206,35 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl<ActUserRelationD |
|
|
|
if (actInfoDTO.getVolunteerLimit()){ |
|
|
|
// 活动只能志愿者参加, 当前用户是否满足条件
|
|
|
|
satisfy = this.volunteerParticipationAct(volunteerFlag); |
|
|
|
if (!satisfy){ |
|
|
|
logger.info("活动报名失败,请先认证志愿者"); |
|
|
|
resultDTO.setFlag(EpmetErrorCode.NON_CERTIFIED_VOLUNTEER.getCode()); |
|
|
|
resultDTO.setTip(EpmetErrorCode.NON_CERTIFIED_VOLUNTEER.getMsg()); |
|
|
|
return new Result<ResiActRegistrationResultDTO>().ok(resultDTO); |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 活动不限制志愿者身份,但要求是 居民身份, 当前用户是否满足条件
|
|
|
|
satisfy = this.resiParticipationAct(formDTO.getUserId()); |
|
|
|
if (!satisfy){ |
|
|
|
logger.info("活动报名失败,请完善居民信息"); |
|
|
|
resultDTO.setFlag(EpmetErrorCode.CANNOT_AUDIT_WARM.getCode()); |
|
|
|
resultDTO.setTip(EpmetErrorCode.CANNOT_AUDIT_WARM.getMsg()); |
|
|
|
return new Result<ResiActRegistrationResultDTO>().ok(resultDTO); |
|
|
|
} |
|
|
|
} |
|
|
|
if (satisfy){ |
|
|
|
// 开始报名
|
|
|
|
this.actStartSignUp(actInfoDTO, formDTO, volunteerFlag); |
|
|
|
boolean actTimeConflict = this.actStartSignUp(actInfoDTO, formDTO, volunteerFlag); |
|
|
|
if (!actTimeConflict){ |
|
|
|
logger.info("报名失败。您本次报名活动时间与已报名活动时间间隔较短,为了不影响您已报名的活动,请选择其他时间的活动,谢谢。"); |
|
|
|
resultDTO.setFlag(EpmetErrorCode.ACT_TIME_CONFLICT.getCode()); |
|
|
|
resultDTO.setTip(EpmetErrorCode.ACT_TIME_CONFLICT.getMsg()); |
|
|
|
return new Result<ResiActRegistrationResultDTO>().ok(resultDTO); |
|
|
|
} |
|
|
|
} |
|
|
|
return new Result(); |
|
|
|
resultDTO.setFlag(EpmetErrorCode.ACT_REGISTRATION_SUCCESS.getCode()); |
|
|
|
resultDTO.setTip(EpmetErrorCode.ACT_REGISTRATION_SUCCESS.getMsg()); |
|
|
|
return new Result<ResiActRegistrationResultDTO>().ok(resultDTO); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -228,7 +247,7 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl<ActUserRelationD |
|
|
|
* @Author zhangyong |
|
|
|
* @Date 15:31 2020-07-24 |
|
|
|
**/ |
|
|
|
private void actStartSignUp(ActInfoDTO actInfoDTO, ResiActRegistrationFormDTO formDTO, Integer volunteerFlag){ |
|
|
|
private boolean actStartSignUp(ActInfoDTO actInfoDTO, ResiActRegistrationFormDTO formDTO, Integer volunteerFlag){ |
|
|
|
boolean signUp = true; |
|
|
|
Integer auditingNum = actUserLogService.countActTimesOfParticipation(formDTO.getUserId()); |
|
|
|
if (auditingNum > NumConstant.ZERO){ |
|
|
@ -237,8 +256,7 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl<ActUserRelationD |
|
|
|
Integer actTimeFlag = actInfoService.checkActTime(actInfoDTO); |
|
|
|
if (actTimeFlag > NumConstant.ZERO){ |
|
|
|
signUp = false; |
|
|
|
logger.info("报名失败。您本次报名活动时间与已报名活动时间间隔较短,为了不影响您已报名的活动,请选择其他时间的活动,谢谢。"); |
|
|
|
throw new RenException(EpmetErrorCode.ACT_TIME_CONFLICT.getCode()); |
|
|
|
return signUp; |
|
|
|
} |
|
|
|
} else { |
|
|
|
// 3.第一次报名
|
|
|
@ -249,7 +267,8 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl<ActUserRelationD |
|
|
|
this.insertActUserLog(formDTO); |
|
|
|
} |
|
|
|
// 5.插入 用户活动关系表
|
|
|
|
this.insertActUserRelation(formDTO, actInfoDTO); |
|
|
|
this.insertActUserRelation(formDTO, actInfoDTO); |
|
|
|
return signUp; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -265,10 +284,8 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl<ActUserRelationD |
|
|
|
if (volunteerFlag > NumConstant.ZERO){ |
|
|
|
satisfy = true; |
|
|
|
return satisfy; |
|
|
|
} else { |
|
|
|
logger.info("活动报名失败,请先认证志愿者"); |
|
|
|
throw new RenException(EpmetErrorCode.NON_CERTIFIED_VOLUNTEER.getCode()); |
|
|
|
} |
|
|
|
return satisfy; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -289,12 +306,7 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl<ActUserRelationD |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (!satisfy){ |
|
|
|
logger.info("活动报名失败,请完善居民信息"); |
|
|
|
throw new RenException(EpmetErrorCode.CANNOT_AUDIT_WARM.getCode()); |
|
|
|
} else { |
|
|
|
return satisfy; |
|
|
|
} |
|
|
|
return satisfy; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|