|  | @@ -1,23 +1,83 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.TempDirectorTrainingCampDetailDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.entity.TempDirectorTrainingCamp;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.TempDirectorTrainingCampDetail;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampDetailWrapper;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SmsCodeService;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.service.TempDirectorTrainingCampDetailService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.TempDirectorTrainingCampService;
 | 
	
		
			
				|  |  | +import com.ym.mec.common.exception.BizException;
 | 
	
		
			
				|  |  | +import com.ym.mec.util.date.DateUtil;
 | 
	
		
			
				|  |  | +import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
		
			
				|  |  |  import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import javax.annotation.Resource;
 | 
	
		
			
				|  |  | +import java.util.Date;
 | 
	
		
			
				|  |  | +import java.util.Objects;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service("tempDirectorTrainingCampDetailService")
 | 
	
		
			
				|  |  |  public class TempDirectorTrainingCampDetailServiceImpl extends ServiceImpl<TempDirectorTrainingCampDetailDao, TempDirectorTrainingCampDetail> implements TempDirectorTrainingCampDetailService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private final static Logger log = LoggerFactory.getLogger(TempDirectorTrainingCampDetailServiceImpl.class);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  | +    private SmsCodeService smsCodeService;
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  | +    private TempDirectorTrainingCampService tempDirectorTrainingCampService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public TempDirectorTrainingCampDetailDao getDao() {
 | 
	
		
			
				|  |  |          return this.baseMapper;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public void applyCamp(TempDirectorTrainingCampDetailWrapper.ApplyCamp applyCamp) {
 | 
	
		
			
				|  |  | +        Date now = new Date();
 | 
	
		
			
				|  |  | +        TempDirectorTrainingCamp trainingCamp = tempDirectorTrainingCampService.getById(applyCamp.getTempDirectorTrainingCampId());
 | 
	
		
			
				|  |  | +        if(Objects.isNull(trainingCamp)){
 | 
	
		
			
				|  |  | +            throw new BizException("训练营信息不存在");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //校验训练营时间
 | 
	
		
			
				|  |  | +        if(now.after(trainingCamp.getApplyEndDate())){
 | 
	
		
			
				|  |  | +            throw new BizException("报名已截止");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(now.before(trainingCamp.getApplyStartDate())){
 | 
	
		
			
				|  |  | +            String dateToString = DateUtil.dateToString(trainingCamp.getApplyStartDate(), DateUtil.DATE_FORMAT_MIN);
 | 
	
		
			
				|  |  | +            throw new BizException(dateToString + "开启报名,感谢您的关注");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if(!smsCodeService.verifyValidCode(applyCamp.getMobile(), applyCamp.getAuthCode())){
 | 
	
		
			
				|  |  | +            throw new BizException("验证码校验失败");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //根据身份证号获取信息
 | 
	
		
			
				|  |  | +        TempDirectorTrainingCampDetail byCardNo = this.lambdaQuery().eq(TempDirectorTrainingCampDetail::getCardNo, applyCamp.getCardNo())
 | 
	
		
			
				|  |  | +                .eq(TempDirectorTrainingCampDetail::getTempDirectorTrainingCampId, applyCamp.getTempDirectorTrainingCampId())
 | 
	
		
			
				|  |  | +                .last("LIMIT 1").one();
 | 
	
		
			
				|  |  | +        if(Objects.nonNull(byCardNo) && !StringUtils.equals(byCardNo.getMobile(),applyCamp.getMobile())){
 | 
	
		
			
				|  |  | +            throw new BizException("该身份证已报名");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //根据手机号获取信息
 | 
	
		
			
				|  |  | +        TempDirectorTrainingCampDetail byMobile = this.lambdaQuery().eq(TempDirectorTrainingCampDetail::getMobile, applyCamp.getMobile())
 | 
	
		
			
				|  |  | +                .eq(TempDirectorTrainingCampDetail::getTempDirectorTrainingCampId, applyCamp.getTempDirectorTrainingCampId())
 | 
	
		
			
				|  |  | +                .last("LIMIT 1").one();
 | 
	
		
			
				|  |  | +        if(Objects.nonNull(byMobile) && !StringUtils.equals(byMobile.getCardNo(),applyCamp.getCardNo())){
 | 
	
		
			
				|  |  | +            throw new BizException("该手机号已报名");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        TempDirectorTrainingCampDetail entity = JSONObject.parseObject(JSONObject.toJSONString(applyCamp),TempDirectorTrainingCampDetail.class);
 | 
	
		
			
				|  |  | +        if(Objects.nonNull(byCardNo)){
 | 
	
		
			
				|  |  | +            entity.setId(byCardNo.getId());
 | 
	
		
			
				|  |  | +        }else if (Objects.nonNull(byMobile)){
 | 
	
		
			
				|  |  | +            entity.setId(byMobile.getId());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.saveOrUpdate(entity);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }
 |