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