Переглянути джерело

Merge branch 'reg_feature'

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java
#	mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml
Joburgess 4 роки тому
батько
коміт
bc21212e27

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -464,6 +464,15 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
     List<MusicGroup> getStudentNormalMusicGroups(@Param("studentIds") Set<Integer> studentIds);
 
     /**
+     * @describe 获取学员最后加入的在读进行中乐团
+     * @author Joburgess
+     * @date 2021/2/28 0028
+     * @param userId:
+     * @return com.ym.mec.biz.dal.entity.MusicGroup
+     */
+    MusicGroup getUserLastNormalMusicGroup(@Param("userId") Integer userId);
+
+    /**
      * @describe 查询学员在读进行中乐团报名信息
      * @author Joburgess
      * @date 2021/2/25 0025

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SysUserContractsDao.java

@@ -20,6 +20,15 @@ public interface SysUserContractsDao extends BaseDAO<Long, SysUserContracts> {
     List<SysUserContracts> getUserContractWithType(@Param("userId") Integer userId,
                                                    @Param("contractType") SysUserContracts.ContractType contractType,
                                                    @Param("version") Integer version);
+
+    /**
+     * @describe 批量获取用户协议
+     * @author Joburgess
+     * @date 2021/2/28 0028
+     * @param userIds:
+     * @return java.util.List<com.ym.mec.biz.dal.entity.SysUserContracts>
+     */
+    List<SysUserContracts> getUserAllContract(@Param("userIds") List<Integer> userIds);
 	
     /**
      * 获取最近一次的协议

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentManageListDto.java

@@ -83,12 +83,22 @@ public class StudentManageListDto {
     
     private boolean isSignedContract;
 
+    private String contractVersions;
+
     @ApiModelProperty(value = "关心包:0:默认不可用;1:可用;2:已使用;")
     private Integer carePackage;
 
     @ApiModelProperty(value = "加油包:0:默认不可用;1:可用;2:已使用;")
     private Integer comeOnPackage;
 
+    public String getContractVersions() {
+        return contractVersions;
+    }
+
+    public void setContractVersions(String contractVersions) {
+        this.contractVersions = contractVersions;
+    }
+
     public Integer getCarePackage() {
         return carePackage;
     }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SysUserContractsService.java

@@ -23,4 +23,6 @@ public interface SysUserContractsService extends BaseService<Long, SysUserContra
      * @return
      */
     SysUserContracts getLatestUserContract(Integer userId);
+
+    List<SysUserContracts> getUserAllContracts(Integer userId);
 }

+ 22 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ContractServiceImpl.java

@@ -9,6 +9,7 @@ import java.util.*;
 import java.util.Map.Entry;
 
 import com.ym.mec.auth.api.enums.CertificateTypeEnum;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -25,10 +26,6 @@ import org.springframework.util.CollectionUtils;
 
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
-import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
-import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
 import com.ym.mec.biz.dal.dto.StudentInfo;
 import com.ym.mec.biz.dal.entity.CooperationOrgan.OwnershipType;
 import com.ym.mec.biz.dal.entity.Goods;
@@ -86,6 +83,9 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 	private StudentRegistrationService studentRegistrationService;
 
 	@Autowired
+	private StudentRegistrationDao studentRegistrationDao;
+
+	@Autowired
 	private StudentPaymentOrderService studentPaymentOrderService;
 
 	@Autowired
@@ -972,13 +972,6 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 			return false;
 		}
 
-		Integer contractVersion=2;
-
-		List<SysUserContracts> userContracts = sysUserContractsService.getUserContractWithType(userId, ContractType.PRODUCT, contractVersion);
-		if(!CollectionUtils.isEmpty(userContracts)){
-			return true;
-		}
-
 		if(StringUtils.isBlank(user.getRealName())||StringUtils.isBlank(user.getIdCardNo())){
 			logger.error("身份信息缺失({})", userId);
 			return false;
@@ -1016,8 +1009,14 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		params.put("isShowVisualSeal", false);
 
+		CourseViewTypeEnum ownershipType = CourseViewTypeEnum.COURSE_lIST;
+
 		if(StringUtils.isBlank(musicGroupId)){
 			params.put("ownershipType", "OWN");
+			MusicGroup userLastNormalMusicGroup = studentRegistrationDao.getUserLastNormalMusicGroup(userId);
+			if(Objects.nonNull(userLastNormalMusicGroup)){
+				ownershipType = userLastNormalMusicGroup.getCourseViewType();
+			}
 		}else{
 			MusicGroup musicGroup = musicGroupService.get(musicGroupId);
 			if (musicGroup == null) {
@@ -1025,9 +1024,15 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 				return false;
 			}
 			params.put("ownershipType", musicGroup.getOwnershipType().name());
+			ownershipType = musicGroup.getCourseViewType();
 		}
 
-		templateEngine.render(params, "product2.ftl", srcFile);
+		List<SysUserContracts> userContracts = sysUserContractsService.getUserContractWithType(userId, ContractType.PRODUCT, CourseViewTypeEnum.COURSE_lIST.equals(ownershipType)?2:3);
+		if(!CollectionUtils.isEmpty(userContracts)){
+			return true;
+		}
+
+		templateEngine.render(params, "product"+(CourseViewTypeEnum.COURSE_lIST.equals(ownershipType)?2:3)+".ftl", srcFile);
 
 		// 生成借款协议PDF
 		try {
@@ -1065,7 +1070,7 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 		sysUserContracts.setType(ContractType.PRODUCT);
 		sysUserContracts.setUrl(pdfFilePath);
 		sysUserContracts.setUserId(userId);
-		sysUserContracts.setVersion(contractVersion);
+		sysUserContracts.setVersion(CourseViewTypeEnum.COURSE_lIST.equals(ownershipType)?2:3);
 
 		sysUserContractsService.insert(sysUserContracts);
 
@@ -1106,6 +1111,10 @@ public class ContractServiceImpl implements ContractService, InitializingBean {
 
 		if(StringUtils.isBlank(musicGroupId)){
 			params.put("ownershipType", "OWN");
+			MusicGroup userLastNormalMusicGroup = studentRegistrationDao.getUserLastNormalMusicGroup(userId);
+			if(Objects.nonNull(userLastNormalMusicGroup)){
+				result.put("courseViewType", userLastNormalMusicGroup.getCourseViewType());
+			}
 		}else{
 			MusicGroup musicGroup = musicGroupService.get(musicGroupId);
 			if (musicGroup == null) {

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -107,6 +107,8 @@ public class StudentManageServiceImpl implements StudentManageService {
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
     @Autowired
     private CourseScheduleDao courseScheduleDao;
+    @Autowired
+    private SysUserContractsDao sysUserContractsDao;
 
     @Override
     public PageInfo<StudentManageListDto> findStudentsByOrganId(StudentManageQueryInfo queryInfo) {
@@ -135,6 +137,13 @@ public class StudentManageServiceImpl implements StudentManageService {
         List<StudentListCourseDto> studentListCourseDtoList = studentManageDao.queryStudentRemianCourse(userIds);
         Map<Integer, StudentListCourseDto> StudentListCourseDtoMap = studentListCourseDtoList.stream().collect(Collectors.toMap(StudentListCourseDto::getUserId, studentListCourseDto -> studentListCourseDto));
 
+        //用户协议
+        List<SysUserContracts> userAllContract = sysUserContractsDao.getUserAllContract(new ArrayList<>(userIds));
+        Map<Integer, Set<Integer>> userContractVersionMap = new HashMap<>();
+        if(!CollectionUtils.isEmpty(userAllContract)){
+            userContractVersionMap = userAllContract.stream().collect(Collectors.groupingBy(SysUserContracts::getUserId, Collectors.mapping(SysUserContracts::getVersion, Collectors.toSet())));
+        }
+
         //List<Subject> studentSubject = studentManageDao.getStudentSubject(userIds);
         StudentListCourseDto studentListCourseDto = null;
         for (StudentManageListDto dto : dataList) {
@@ -154,6 +163,10 @@ public class StudentManageServiceImpl implements StudentManageService {
                 dto.setHasCourse(YesOrNoEnum.NO);
                 dto.setHasPracticeCourse(YesOrNoEnum.NO);
             }
+
+            if(userContractVersionMap.containsKey(dto.getUserId())){
+                dto.setContractVersions(StringUtils.join(userContractVersionMap.get(dto.getUserId())));
+            }
 //            for (Subject subject : studentSubject) {
 //                if(!subject.getId().equals(dto.getUserId())) continue;
 //                dto.setSubjectName(subject.getName());

+ 6 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SysUserContractsServiceImpl.java

@@ -10,6 +10,7 @@ import com.ym.mec.biz.service.SysUserContractsService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 
+import java.util.Arrays;
 import java.util.List;
 
 @Service
@@ -32,5 +33,9 @@ public class SysUserContractsServiceImpl extends BaseServiceImpl<Long, SysUserCo
 	public SysUserContracts getLatestUserContract(Integer userId) {
 		return sysUserContractsDao.getLatestUserContract(userId);
 	}
-	
+
+	@Override
+	public List<SysUserContracts> getUserAllContracts(Integer userId) {
+		return sysUserContractsDao.getUserAllContract(Arrays.asList(userId));
+	}
 }

+ 13 - 0
mec-biz/src/main/resources/config/mybatis/StudentRegistrationMapper.xml

@@ -797,6 +797,19 @@
             </foreach>
         ORDER BY mg.create_time_ DESC
     </select>
+    <select id="getUserLastNormalMusicGroup" resultMap="com.ym.mec.biz.dal.dao.MusicGroupDao.MusicGroup">
+        SELECT DISTINCT
+            mg.*
+        FROM
+            student_registration sr
+            LEFT JOIN music_group mg ON sr.music_group_id_ = mg.id_
+        WHERE
+            mg.del_flag_ = 0
+            AND mg.status_ = 'PROGRESS'
+            AND sr.music_group_status_ = 'NORMAL'
+            AND sr.user_id_ = #{userId}
+        ORDER BY sr.create_time_ DESC LIMIT 1
+    </select>
     <select id="getStudentNormalRegistration" resultMap="StudentRegistration">
         SELECT
                sr.*

+ 14 - 1
mec-biz/src/main/resources/config/mybatis/SysUserContractsMapper.xml

@@ -86,10 +86,23 @@
 	</select>
 
 	<select id="getUserContractWithType" resultMap="SysUserContracts">
-		SELECT * FROM sys_user_contracts WHERE user_id_=#{userId} AND type_=#{contractType} AND version_=#{version}
+		SELECT * FROM sys_user_contracts
+		WHERE user_id_=#{userId}
+		  AND type_=#{contractType}
+		  <if test="version!=null">
+			  AND version_=#{version}
+		  </if>
 	</select>
 
 	<select id="getLatestUserContract" resultMap="SysUserContracts">
 		SELECT * FROM sys_user_contracts WHERE user_id_=#{userId} order by id_ desc limit 0,1
 	</select>
+
+	<select id="getUserAllContract" resultMap="SysUserContracts">
+		SELECT * FROM sys_user_contracts
+		WHERE user_id_ IN
+		<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+			#{userId}
+		</foreach>
+	</select>
 </mapper>

+ 23 - 5
mec-web/src/main/java/com/ym/mec/web/controller/SysUserContractsController.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiOperation;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -14,6 +15,11 @@ import com.ym.mec.biz.service.SysUserContractsService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 
+import java.util.Comparator;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
 @RequestMapping("sysUserContracts")
 @Api(tags = "用户协议服务")
 @RestController
@@ -25,15 +31,27 @@ public class SysUserContractsController extends BaseController {
     @ApiOperation(value = "查询学生最新协议")
     @GetMapping("/getLatest")
     @PreAuthorize("@pcs.hasPermissions('sysUserContracts/getLatest')")
-	public HttpResponseResult<SysUserContracts> getLatest(Integer userId) {
-		
-		SysUserContracts sysUserContracts = sysUserContractsService.getLatestUserContract(userId);
+	public HttpResponseResult<SysUserContracts> getLatest(Integer userId, Integer version) {
 		
-		if(sysUserContracts == null){
+//		SysUserContracts sysUserContracts = sysUserContractsService.getLatestUserContract(userId);
+		List<SysUserContracts> sysUserContracts = sysUserContractsService.getUserAllContracts(userId);
+		if(Objects.isNull(version)){
+			version = 2;
+		}
+
+		if(CollectionUtils.isEmpty(sysUserContracts)){
+			return failed("该学员尚未签署协议");
+		}
+
+		Integer finalVersion = version;
+		List<SysUserContracts> versionContracts = sysUserContracts.stream().filter(c -> c.getVersion().equals(finalVersion)).collect(Collectors.toList());
+
+		if(CollectionUtils.isEmpty(versionContracts)){
 			return failed("该学员尚未签署协议");
 		}
 
-		return succeed(sysUserContracts);
+		versionContracts.sort(Comparator.comparing(SysUserContracts::getCreateTime).reversed());
+		return succeed(versionContracts.get(0));
 	}
 
 }