|  |  | @ -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; | 
			
		
	
		
			
				
					|  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |     /** | 
			
		
	
	
		
			
				
					|  |  | 
 |