|  | @@ -1,17 +1,39 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
	
		
			
				|  |  |  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
	
		
			
				|  |  | +import com.ym.mec.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.TempDirectorTrainingCampDao;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.dao.TempDirectorTrainingCampDetailDao;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.TempDirectorTrainingCamp;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.wrapper.TempDirectorTrainingCampWrapper;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.EmployeeService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.SysUserService;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.service.TempDirectorTrainingCampDetailService;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.service.TempDirectorTrainingCampService;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
		
			
				|  |  |  import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  | +import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | +import org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.math.RoundingMode;
 | 
	
		
			
				|  |  | +import java.util.Date;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service("tempDirectorTrainingCampService")
 | 
	
		
			
				|  |  |  public class TempDirectorTrainingCampServiceImpl extends ServiceImpl<TempDirectorTrainingCampDao, TempDirectorTrainingCamp> implements TempDirectorTrainingCampService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SysUserService sysUserService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private TempDirectorTrainingCampDetailDao tempDirectorTrainingCampDetailDao;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private final static Logger log = LoggerFactory.getLogger(TempDirectorTrainingCampServiceImpl.class);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -20,8 +42,84 @@ public class TempDirectorTrainingCampServiceImpl extends ServiceImpl<TempDirecto
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public void add(TempDirectorTrainingCampWrapper.AddCamp dto) {
 | 
	
		
			
				|  |  | +        log.info("新增训练营:{}", dto);
 | 
	
		
			
				|  |  | +        if (!dto.getHasBirdPrice()) {
 | 
	
		
			
				|  |  | +            dto.setBirdPrice(null);
 | 
	
		
			
				|  |  | +            dto.setBirdPriceEndDate(null);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        TempDirectorTrainingCamp tempDirectorTrainingCamp = JSON.parseObject(JSON.toJSONString(dto), TempDirectorTrainingCamp.class);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        this.save(tempDirectorTrainingCamp);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public void modify(TempDirectorTrainingCampWrapper.AddCamp dto) {
 | 
	
		
			
				|  |  | +        log.info("修改训练营:{}", dto);
 | 
	
		
			
				|  |  | +        TempDirectorTrainingCamp tempDirectorTrainingCamp = JSON.parseObject(JSON.toJSONString(dto), TempDirectorTrainingCamp.class);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        this.updateById(tempDirectorTrainingCamp);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        lambdaUpdate()
 | 
	
		
			
				|  |  | +            .set(TempDirectorTrainingCamp::getBirdPrice, dto.getHasBirdPrice()?dto.getBirdPrice():null)
 | 
	
		
			
				|  |  | +            .set(TempDirectorTrainingCamp::getBirdPriceEndDate, dto.getHasBirdPrice()?dto.getBirdPriceEndDate():null)
 | 
	
		
			
				|  |  | +            .eq(TempDirectorTrainingCamp::getId, dto.getId())
 | 
	
		
			
				|  |  | +            .update();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public IPage<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> queryPage(IPage<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> page, TempDirectorTrainingCampWrapper.TempDirectorTrainingCampQueryInfo queryInfo) {
 | 
	
		
			
				|  |  | +        IPage<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> tempDirectorTrainingCampIPage = baseMapper.queryPage(page, queryInfo);
 | 
	
		
			
				|  |  | +        List<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> records = tempDirectorTrainingCampIPage.getRecords();
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isEmpty(records) ) {
 | 
	
		
			
				|  |  | +            return tempDirectorTrainingCampIPage;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // id 集合
 | 
	
		
			
				|  |  | +        List<Integer> ids = records.stream().map(o->o.getId()).collect(Collectors.toList());;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 是否设置早鸟价
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 状态
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 更新人
 | 
	
		
			
				|  |  | +        List<Integer> updateIds = records.stream().map(o -> o.getUpdateBy()).filter(o -> o != null).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        Map<Long, SysUser> userMap = sysUserService.getMapByIds(updateIds);
 | 
	
		
			
				|  |  | +        records.forEach(o -> {
 | 
	
		
			
				|  |  | +            if (o.getUpdateBy() != null) {
 | 
	
		
			
				|  |  | +                SysUser sysUser = userMap.get(o.getUpdateBy().longValue());
 | 
	
		
			
				|  |  | +                if (sysUser != null) {
 | 
	
		
			
				|  |  | +                    o.setUpdateByName(sysUser.getRealName());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (o.getBirdPrice() !=null && o.getBirdPriceEndDate() != null) {
 | 
	
		
			
				|  |  | +                o.setHasBirdPrice(true);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            Date date = new Date();
 | 
	
		
			
				|  |  | +            if (o.getApplyStartDate().after(date)) {
 | 
	
		
			
				|  |  | +                o.setStatus("NOT_START");
 | 
	
		
			
				|  |  | +            } else if (o.getApplyEndDate().before(date)) {
 | 
	
		
			
				|  |  | +                o.setStatus("END");
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                o.setStatus("APPLY");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 报名人数,缴费人数 搜款金额
 | 
	
		
			
				|  |  | +        List<TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> stat = tempDirectorTrainingCampDetailDao.getStat(ids);
 | 
	
		
			
				|  |  | +        Map<Integer, TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp> statMap = stat.stream().collect(Collectors.toMap(TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp::getId, o -> o));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        records.forEach(o -> {
 | 
	
		
			
				|  |  | +            TempDirectorTrainingCampWrapper.TempDirectorTrainingCamp tempDirectorTrainingCamp = statMap.get(o.getId());
 | 
	
		
			
				|  |  | +            if (tempDirectorTrainingCamp != null) {
 | 
	
		
			
				|  |  | +                o.setApplyCount(tempDirectorTrainingCamp.getApplyCount());
 | 
	
		
			
				|  |  | +                o.setPayCount(tempDirectorTrainingCamp.getPayCount());
 | 
	
		
			
				|  |  | +                o.setPayAmount(tempDirectorTrainingCamp.getPayAmount().setScale(2, RoundingMode.HALF_UP));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        return tempDirectorTrainingCampIPage;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 |