wuwen 5 years ago
parent
commit
b1ab9085e5

+ 9 - 3
src/main/java/com/ssj/api/controller/ApiMerchantController.java

@@ -49,7 +49,14 @@ public class ApiMerchantController extends BaseController {
         try {
         	Merchant merchant=merchantService.getMerchantByLibId(requestVO.getLibId());
         	if(merchant!=null) {
-	        	if(requestVO.getType()==1) {
+        		
+        		//大于2020-10-09才会结算。
+        		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        		String dateString="2020-10-09";
+        		
+	        	if(requestVO.getType()==1 
+	        			&& sdf.parse(dateString).getTime()<=new Date().getTime()) {
+	        		
 					merchant.setCurIsSummary(1);
 					merchant.setCurSummaryTime(new Date());
 					merchant.setNextSummaryTime(DateHelper.getMonthDate(merchant.getCurSummaryTime(),1));
@@ -83,7 +90,6 @@ public class ApiMerchantController extends BaseController {
         return responseEntity;
     }
 	
-	
-	
+
 	
 }

+ 10 - 2
src/main/java/com/ssj/dao/weixin/sales/dao/LibVipServiceDao.java

@@ -219,8 +219,8 @@ public interface LibVipServiceDao extends JpaRepository<LibVipService, String> {
 	 * @param species
 	 * @return
 	 */
-	@Query(nativeQuery = true, value = "select * from tb_lib_vip_service " +
-			"where vip_id = ?1 and species = ?2 and to_days(end_time) >= to_days(now()) and stat=1 ORDER BY end_time desc limit 1")
+	@Query(nativeQuery = true, value = "select * from tb_lib_vip_service force index(vip_id_end_time_index) " +
+	            "where vip_id = ?1 and species = ?2 and correct_type = ?3 and to_days(end_time) >= to_days(now()) and stat=1 ORDER BY end_time desc limit 1")
 	LibVipService findValidTopService(String vipId, String species);
 	/**
 	 * 查询最大结束时间的有效服务
@@ -330,4 +330,12 @@ public interface LibVipServiceDao extends JpaRepository<LibVipService, String> {
     @Query(nativeQuery = true, value = "update tb_lib_vip_service set stat = 2 where lib_id = ?1 and species='S003' ")
     @Modifying
     void clearServiceByLibId(String libId);
+    
+
+    @Query(nativeQuery = true, value = "select * from tb_lib_vip_service where vip_id=?1 and lib_id=?2 and species=?3 and type=?4 limit 1")
+	LibVipService findTopByVipIdAndLibIdAndSpeciesAndTypeOrderByCreateTimeDesc(String vipId, String LibId, String species, String type);
+    
+  
+
+    
 }

+ 26 - 22
src/main/java/com/ssj/service/sys/imlibuser/service/impl/TbClassStudentTempServiceImpl.java

@@ -1,5 +1,18 @@
 package com.ssj.service.sys.imlibuser.service.impl;
 
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.ssj.bean.conch.conch.domain.ConchDerver;
 import com.ssj.bean.sys.imlibuser.TbClassStudentTemp;
 import com.ssj.bean.weixin.libmy.domain.LibVip;
@@ -18,8 +31,7 @@ import com.ssj.framework.idworker.IdWorker;
 import com.ssj.service.conch.common.service.ConchCommonService;
 import com.ssj.service.conch.conch.service.ConchDerverService;
 import com.ssj.service.sys.easemob.service.EasemobService;
-import com.ssj.service.sys.fx.service.MerchantAreaService;
-import com.ssj.service.sys.imlibuser.service.TbClassService;
+import com.ssj.service.sys.fx.service.MerchantService;
 import com.ssj.service.sys.imlibuser.service.TbClassStudentService;
 import com.ssj.service.sys.imlibuser.service.TbClassStudentTempService;
 import com.ssj.service.weixin.library.service.ILibJoinService;
@@ -27,18 +39,6 @@ import com.ssj.service.weixin.library.service.ILibVipService;
 import com.ssj.service.weixin.sales.service.LibVipServiceService;
 import com.ssj.service.weixin.user.service.QrCodeService;
 import com.ssj.service.weixin.user.service.UserService;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.repository.PagingAndSortingRepository;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
 
 @Service
 @Transactional
@@ -81,13 +81,7 @@ public class TbClassStudentTempServiceImpl extends BaseServiceImpl<TbClassStuden
 	private EasemobService easemobService;
 	
 	@Autowired
-	private TbClassService tbClassService;
-	
-	@Autowired
-	private TbClassStudentService tbClassStudentService;
-	
-	@Autowired
-	private MerchantAreaService merchantAreaService;
+	private ILibVipService libVipService;
 	
 	
 	@Override
@@ -129,6 +123,16 @@ public class TbClassStudentTempServiceImpl extends BaseServiceImpl<TbClassStuden
 //					}
 //				}
 				
+				
+				int countVip=libVipService.countByLibId(libJoin.getId());
+				if(countVip>libJoin.getLibService()) {
+					tbLibImStudentTemp.setStatus(0);
+					tbLibImStudentTemp.setErrorReason("校区人数已达到上限不能新导入学生");
+					this.save(tbLibImStudentTemp);
+					reqNum=0;
+					return reqNum;
+				}
+				
 				if(StringUtils.isNotEmpty(tbLibImStudentTemp.getDerver())) {
 					ConchDerver conchDerver = conchDerverService.findByDerver(tbLibImStudentTemp.getDerver());
 					if (conchDerver == null) {
@@ -292,7 +296,7 @@ public class TbClassStudentTempServiceImpl extends BaseServiceImpl<TbClassStuden
 //				}
 
 				//给学生增加一个默认的永久校区批改服务
-	            libVipServiceService.insertLibCorrectService(libVip.getId(),libJoin.getId());
+	            libVipServiceService.insertLibServiceByType(libVip.getId(), libJoin.getId(), libJoin.getEndSignTime(), libJoin.getSignType());
 				
 			} catch (Exception e) {
 				e.printStackTrace();

+ 6 - 6
src/main/java/com/ssj/service/weixin/sales/service/LibVipServiceService.java

@@ -612,12 +612,7 @@ public interface LibVipServiceService extends BaseService<LibVipService, String>
 	 */
 	List<LibVipService> getChildServiceList(String vipId);
 
-	/**
-	 * 插入永久校区批改服务
-	 *
-	 * @param vipId
-	 */
-	void insertLibCorrectService(String vipId, String libId);
+
 
 
 	/**
@@ -641,4 +636,9 @@ public interface LibVipServiceService extends BaseService<LibVipService, String>
      * @param num 降级后的服务数量
      */
     void openApiServiceCRM(Integer type,String libId,Integer num,String endTime);
+    
+    public void insertLibServiceByType(String vipId, String libId, Date endDate, int signType);
+    
+    public void insertLibCorrectServiceByType(String vipId, String libId, Date endDate, int signType);
+    
 }

+ 126 - 19
src/main/java/com/ssj/service/weixin/sales/service/impl/LibVipServiceServiceImpl.java

@@ -12,7 +12,6 @@ import java.util.Objects;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateFormatUtils;
-import org.hibernate.validator.constraints.NotBlank;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +27,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ssj.alipay.utils.AlipayOrderHelper;
 import com.ssj.bean.curator.TbVacationLimit;
+import com.ssj.bean.sys.fx.domain.Merchant;
 import com.ssj.bean.sys.give.GiveRecord;
 import com.ssj.bean.weixin.libmy.domain.LibVip;
 import com.ssj.bean.weixin.libmy.domain.TbLibJoin;
@@ -64,6 +64,7 @@ import com.ssj.service.conch.common.dto.ServiceRecordDto;
 import com.ssj.service.conch.common.request.PayVipBatchReq;
 import com.ssj.service.conch.curator.service.v1.IVacationLimitService;
 import com.ssj.service.conch.parents.v2.dto.ServiceRecordV1Dto;
+import com.ssj.service.sys.fx.service.MerchantService;
 import com.ssj.service.sys.give.GiveRecordService;
 import com.ssj.service.weixin.library.service.IBookManagerService;
 import com.ssj.service.weixin.library.service.ILibJoinService;
@@ -121,6 +122,8 @@ public class LibVipServiceServiceImpl extends BaseServiceImpl<LibVipService, Str
 	private IVacationLimitService vacationLimitService;
 	@Autowired
 	private GiveRecordService giveRecordService;
+	@Autowired
+	private MerchantService merchantService;
 	@Override
 	public PagingAndSortingRepository<LibVipService, String> getDao() {
 		return libVipServiceDao;
@@ -1663,24 +1666,7 @@ public class LibVipServiceServiceImpl extends BaseServiceImpl<LibVipService, Str
 		return serviceList;
 	}
 
-	@Override
-	public void insertLibCorrectService(@NotBlank String vipId, @NotBlank String libId) {
-		LibVipService libVipService = new LibVipService();
-		libVipService.setVipId(vipId);
-		libVipService.setLibId(libId);
-		libVipService.setStartTime(new Date());
-		libVipService.setEndTime(DateUtil.parse_yyyyMMdd("9999-01-01"));
-		libVipService.setStat(1);
-		libVipService.setSpecies("S003");
-		libVipService.setType("C025");
-		libVipService.setCreateTime(new Date());
-		//为校区批改服务
-		libVipService.setCorrectType(5);
-		//排所有服务优先级第4
-		libVipService.setServiceSort(4);
-		this.save(libVipService);
-	}
-
+	
 	@Override
 	public LibVipService findCorrectTypeByVipId(String vipId){
          return libVipServiceDao.findCorrectTypeByVipId(vipId);
@@ -1703,6 +1689,127 @@ public class LibVipServiceServiceImpl extends BaseServiceImpl<LibVipService, Str
 		});
 	}
 	
+	
+	
+	@Override
+    public void insertLibServiceByType(String vipId, String libId, Date endDate, int signType) {
+        if (signType > 0) {
+            //新套餐,需要给校区服务和批改服务两个,结束时间保持一致
+            if (endDate == null) {
+                //查询这个馆下有没有有效的服务
+                endDate = this.getEndDate(vipId, libId);
+            }
+            this.insertLibCorrectService(vipId, libId, endDate);
+            this.insertLibService(vipId, libId, endDate);
+        } else {
+            //老套餐,只需要给指定的校区服务
+            this.insertLibService(vipId, libId, endDate);
+        }
+    }
+
+    @Override
+    public void insertLibCorrectServiceByType(String vipId, String libId, Date endDate, int signType) {
+        if (signType > 0) {
+            //新套餐,给的这个服务需要和校区服务保持一致的结束时间
+            if (endDate == null) {
+                //查询这个馆下有没有有效的服务
+                endDate = this.getEndDate(vipId, libId);
+            }
+            this.insertLibCorrectService(vipId, libId, endDate);
+        } else {
+            //老套餐,直接给永久服务
+            this.insertLibCorrectService(vipId, libId, DateUtil.parse_yyyyMMdd("9999-01-01"));
+        }
+    }
+
+    /**
+     * 获取馆服务的结束时间
+     *
+     * @param vipId
+     * @param libId
+     * @return
+     */
+    Date getEndDate(String vipId, String libId) {
+        Merchant merchant=merchantService.getMerchantByLibId(libId);
+        return merchant.getNextSummaryTime();
+    }
+
+
+    /**
+     * 新增校区批改服务
+     *
+     * @param vipId
+     * @param libId
+     * @param endDate
+     */
+    void insertLibCorrectService(String vipId, String libId, Date endDate) {
+        Date now = new Date();
+        //之前的校区批改服务
+        LibVipService libVipService = libVipServiceDao.findTopByVipIdAndLibIdAndSpeciesAndTypeOrderByCreateTimeDesc(vipId, libId, "S003", "C025");
+        if (libVipService == null) {
+            libVipService = new LibVipService();
+            libVipService.setVipId(vipId);
+            libVipService.setLibId(libId);
+            libVipService.setStartTime(now);
+            libVipService.setEndTime(endDate);
+            libVipService.setStat(1);
+            libVipService.setSpecies("S003");
+            libVipService.setType("C025");
+            libVipService.setCreateTime(now);
+            //为校区批改服务
+            libVipService.setCorrectType(5);
+            //排所有服务优先级第4
+            libVipService.setServiceSort(4);
+            this.save(libVipService);
+        } else {
+            libVipService.setStat(1);
+            this.save(libVipService);
+        }
+    }
+
+    /**
+     * 新加校区服务
+     *
+     * @param vipId
+     * @param libId
+     * @param endDate
+     */
+    void insertLibService(String vipId, String libId, Date endDate) {
+        Date now = new Date();
+        //是否期满
+        boolean expired = false;
+        if (!DateHelper.compareTwoDate(now, endDate)) {
+            expired = true;
+        }
+        //之前的校区服务
+        LibVipService libVipService = libVipServiceDao.findTopByVipIdAndLibIdAndSpeciesAndTypeOrderByCreateTimeDesc(vipId, libId, "S003", "C024");
+        if (libVipService == null) {
+            libVipService = new LibVipService();
+            libVipService.setVipId(vipId);
+            libVipService.setLibId(libId);
+            libVipService.setStartTime(now);
+            libVipService.setEndTime(endDate);
+            libVipService.setSpecies("S003");
+            libVipService.setType("C024");
+            libVipService.setCreateTime(now);
+            //为校区服务
+            libVipService.setCorrectType(2);
+            //排所有服务优先级第3
+            libVipService.setServiceSort(3);
+            this.save(libVipService);
+        }
+        if (expired) {
+            //期满,设置为失效
+            libVipService.setStat(2);
+            this.save(libVipService);
+        } else {
+            libVipService.setStat(1);
+            this.save(libVipService);
+        }
+
+    }
+
+	
 
 	@Override
 	public void openApiServiceCRM(Integer type,String libId,Integer num,String endTime) {

+ 48 - 40
src/main/java/com/ssj/sys/controller/ImLibUserController.java

@@ -1,5 +1,37 @@
 package com.ssj.sys.controller;
 
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.DateUtil;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort.Direction;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
 import com.ssj.bean.common.framework.core.domain.Response;
 import com.ssj.bean.sys.imlibuser.TbClassStudent;
 import com.ssj.bean.sys.imlibuser.TbClassStudentTemp;
@@ -18,7 +50,11 @@ import com.ssj.framework.core.util.ResponseEntity;
 import com.ssj.service.conch.common.service.ConchCommonService;
 import com.ssj.service.conch.parents.v2.service.ParentV2Service;
 import com.ssj.service.sys.easemob.service.EasemobService;
-import com.ssj.service.sys.imlibuser.service.*;
+import com.ssj.service.sys.imlibuser.service.TbClassService;
+import com.ssj.service.sys.imlibuser.service.TbClassStudentService;
+import com.ssj.service.sys.imlibuser.service.TbClassStudentTempService;
+import com.ssj.service.sys.imlibuser.service.TbClassTeacherService;
+import com.ssj.service.sys.imlibuser.service.TbClassTeacherTempService;
 import com.ssj.service.weixin.library.service.IBookManagerService;
 import com.ssj.service.weixin.library.service.ILibJoinConsumeService;
 import com.ssj.service.weixin.library.service.ILibJoinService;
@@ -27,26 +63,6 @@ import com.ssj.service.weixin.sales.service.LibVipServiceService;
 import com.ssj.service.weixin.user.service.UserService;
 import com.ssj.sys.util.thirdparty.excel.CustomizeToExcel;
 import com.ssj.sys.util.thirdparty.excel.ExcelColumn;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.ss.usermodel.*;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Sort.Direction;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.*;
 
 
 /**
@@ -58,14 +74,12 @@ import java.util.*;
 @Controller
 public class ImLibUserController extends BaseController {
 
-
 	@Autowired
     private TbClassStudentService tbLibImStudentService;
 	
 	@Autowired
     private TbClassStudentTempService tbLibImStudentTempService;
 	
-	
 	@Autowired
     private TbClassTeacherService tbLibImTeacherService;
 	
@@ -88,30 +102,18 @@ public class ImLibUserController extends BaseController {
     private IBookManagerService managerService;
 	
 	@Autowired
-    private ParentV2Service parentV2Service;
-	
-	@Autowired
     private UserService userService;
 	
 	@Autowired
     private EasemobService easemobService;
 	
 	@Autowired
-    private TbClassService tbClassService;
-	
-	@Autowired
     private TbClassStudentService tbClassStudentService;
 	
 	@Autowired
-    private TbClassStudentTempService tbClassStudentTempService;
-	
-	@Autowired
     private TbClassTeacherService tbClassTeacherService;
 	
 	@Autowired
-    private TbClassTeacherTempService tbClassTeacherTempService;
-	
-	@Autowired
 	private IBookManagerService bookManagerService;
 
 	@Autowired
@@ -561,11 +563,17 @@ public class ImLibUserController extends BaseController {
 		tbLibImStudentTemp.setLibId(libId);
 		
 		TbLibJoin tbLibJoin=joinService.getById(libId);
-		int num=tbLibImStudentTempService.insertTbClassStudent(tbLibJoin,tbLibImStudentTemp);
-		if(num>0){
-			response.success("成功");
-		}else{
-			response.failure("添加失败,请查看失败列表...");
+		
+		int countVip=libVipService.countByLibId(libId);
+		if(countVip>tbLibJoin.getLibService()) {
+			response.failure("校区人数已达到上限不能新导入学生。");
+		}else {
+			int num=tbLibImStudentTempService.insertTbClassStudent(tbLibJoin,tbLibImStudentTemp);
+			if(num>0){
+				response.success("成功");
+			}else{
+				response.failure("添加失败,请查看失败列表...");
+			}
 		}
 		return response;
 	}