浏览代码

Merge remote-tracking branch 'origin/master'

zouxuan 4 年之前
父节点
当前提交
b9a1525585

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -116,9 +116,10 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 			Set<String> hasMonths = typeDateMapEntry.getValue().stream().map(d -> DateUtil.dateToString(d.getMonth(), "yyyy-MM-dd")).collect(Collectors.toSet());
 			LocalDate currentMonthDate = startDate;
 			while (currentMonthDate.compareTo(endDate)<=0){
-				if(IndexDataType.HOMEWORK_CREATE_RATE.equals(typeDateMapEntry.getKey())
+				if((IndexDataType.HOMEWORK_CREATE_RATE.equals(typeDateMapEntry.getKey())
 					||IndexDataType.HOMEWORK_SUBMIT_RATE.equals(typeDateMapEntry.getKey())
-					||IndexDataType.HOMEWORK_COMMENT_RATE.equals(typeDateMapEntry.getKey())){
+					||IndexDataType.HOMEWORK_COMMENT_RATE.equals(typeDateMapEntry.getKey()))
+					&&currentMonthDate.getDayOfWeek()!=DayOfWeek.MONDAY){
 					currentMonthDate = currentMonthDate.plusDays(1);
 					continue;
 				}

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

@@ -138,11 +138,11 @@ public class StudentManageServiceImpl implements StudentManageService {
         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<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;
@@ -164,9 +164,9 @@ public class StudentManageServiceImpl implements StudentManageService {
                 dto.setHasPracticeCourse(YesOrNoEnum.NO);
             }
 
-            if(userContractVersionMap.containsKey(dto.getUserId())){
-                dto.setContractVersions(StringUtils.join(userContractVersionMap.get(dto.getUserId()), ","));
-            }
+//            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());

+ 18 - 22
mec-biz/src/main/resources/config/contracts/product3.ftl

@@ -7,7 +7,7 @@
     <meta http-equiv="Pragma" content="no-cache" />
     <meta http-equiv="Cache-Control" content="no-cache" />
     <meta http-equiv="Expires" content="0" />
-    <title>产品与服务协议《新》</title>
+    <title>产品与服务协议</title>
     <style>
         body { margin: 0; }
         header {
@@ -46,7 +46,6 @@
         }
         .signature {
             padding-top: 50px;
-            padding-bottom: 20px;
         }
         .signature .sign {
             position: relative;
@@ -79,9 +78,6 @@
         .bold {
             font-weight: bold;
         }
-        .highlight{
-            color: red;
-        }
     </style>
 </head>
 <body style="font-family:'SimSun'">
@@ -123,29 +119,29 @@
         <div>(本协议中“乙方“指学员及家长;”乙方学员“指购买甲方产品或服务的学员;”乙方家长“仅指乙方学员的法定监护人。)</div>
 
         <p class="underline bold">重要须知:在注册或购买使用甲方提供的产品、服务之前,请您务必审慎阅读、充分理解本使用协议各条款内容, 特别是免除或者限制甲方责任的条款、对您权利进行限制的条款、约定争议解决方式和司法管辖的条款等。 限制、免责条款或者其他涉及您重大权益的条款可能以加粗、加下划线等形式提示您重点注意。您注册或购买使用甲方提供的产品和服务,均视为您同意本使用协议,以及同意接受本使用协议的约束。</p>
-        <p class="underline bold">如无特别说明 ,下列术语在本协议中的定义为:管乐迷平台(下称“本平台”),即管乐迷APP;AMR器乐练习系统(下称“本系统”)指由甲方提供和维护的器乐教学全流程辅助系统。乙方通过该系统完成器乐学习。本系统提供包括媒体资料,老师互动点评,课前中后管理等服务。具体功能以该系统实际提供为准,且该系统将根据实际需要进行调整和增减,乙方使用平台时需遵守本服务协议。</p>
+        <p class="underline bold">如无特别说明 ,下列术语在本协议中的定义为:管乐迷平台(下称“本平台”),即管乐迷APP;AMR器乐练习系统(下称“本系统”)指由甲方提供的器乐教学全流程辅助系统,包括媒体资料,教师点评,课前、课中、课后管理等服务,具体以该系统实际提供为准。该系统将根据实际需要进行调整和增减,乙方使用平台时需遵守本服务协议。</p>
 
         <h2>一、注册及购买</h2>
         <div>1、无论是否源自甲方建议,乙方选择报名注册加入乐团,或选择购买使用甲方提供的产品和服务,均为乙方自主意愿的表达及独立自主的选择。</div>
-        2、乙方完成所选产品或服务缴费后,甲方向乙方开具加盖公司印章的收款凭据,乙方务必妥善保管
+        2、乙方完成所选产品或服务缴费后,乙方务必妥善保管甲方收款后开具的加盖公司印章的收款凭据或电子凭据
 
         <h2>二、乐团及上课规范</h2>
-        1、乙方学员在应服从甲方的管理,遵守甲方的制度。<br />
-        2、乙方学员应按时到达甲方指定上课地点,作好课前准备;如发生迟到、早退或因其他乙方原因未能按时上课的,视为乙方学员放弃该次课程,为避免影响老师后续课程的正常进行,授课老师除完成原定时间安排的授课外,将不再提供额外延长课时,也不会因乙方学员缺席而暂停教学课程。<br />
-        3、乙方学员不得携带任何食品进入教室,所有进食应在课前完成;进入教室后,不得大声喧哗、追逐嬉戏,应当听从授课老师的安排;乙方学员应爱护公共财产和教学设施,严禁在桌椅上刻、划、涂、写等不文明行为;乙方学员未经授课老师同意,不得擅自使用教室内的乐器、音响、电视、空调等器材、设施,如造成此类器材、设施损坏的,乙方应照价赔偿。<br />
-        4、未经授课老师同意,乙方家长不得进入课堂,以免影响老师和学员上课;为保证训练质量及进度,乙方学员应保证按照指导老师或教务老师所提出的要求在家练习,遇到专业问题应及时向指导老师请教,非专业问题可随时向教务老师反映。<br />
-        5、乙方家长应教育及监督乙方学员务必注意个人安全,妥善保管个人财物,对于非甲方原因造成的人身安全事故或财物损失,由乙方自行承担。<br />
-        6、对于乐团学员出现以下情形时,甲方有权对乙方学员作出警告,如甲方作出警告后,乙方学员仍然不遵守甲方的管理制度的,甲方有权对作出退团等处分。<br />
-        &#160;&#160;6.1上课、排练时不服从管理和指导,不遵守纪律,影响其他团员的正常上课、排练;<br />
-        &#160;&#160;6.2一个学期内发生两次及以上旷课行为;<br />
-        &#160;&#160;6.3一个学期内发生两次及以上未按老师要求回传视频作业的情形;<br />
-        &#160;&#160;6.4无特殊原因连续七天不练习,影响团员和乐团的整体水平的。<br />
+				1、乙方学员在应服从甲方的管理,遵守甲方的制度。<br />
+				2、乙方学员应按时到达甲方指定上课地点,作好课前准备;如发生迟到、早退或因其他乙方原因未能按时上课的,视为乙方学员放弃该次课程,为避免影响老师后续课程的正常进行,授课老师除完成原定时间安排的授课外,将不再提供额外延长课时,也不会因乙方学员缺席而暂停教学课程。<br />
+				3、乙方学员不得携带任何食品进入教室,所有进食应在课前完成;进入教室后,不得大声喧哗、追逐嬉戏,应当听从授课老师的安排;乙方学员应爱护公共财产和教学设施,严禁在桌椅上刻、划、涂、写等不文明行为;乙方学员未经授课老师同意,不得擅自使用教室内的乐器、音响、电视、空调等器材、设施,如造成此类器材、设施损坏的,乙方应照价赔偿。<br />
+				4、未经授课老师同意,乙方家长不得进入课堂,以免影响老师和学员上课;为保证训练质量及进度,乙方学员应保证按照指导老师或教务老师所提出的要求在家练习,遇到专业问题应及时向指导老师请教,非专业问题可随时向教务老师反映。<br />
+				5、乙方家长应教育及监督乙方学员务必注意个人安全,妥善保管个人财物,对于非甲方原因造成的人身安全事故或财物损失,由乙方自行承担。<br />
+				6、对于乐团学员出现以下情形时,甲方有权对乙方学员作出警告,如甲方作出警告后,乙方学员仍然不遵守甲方的管理制度的,甲方有权对该团员作出退团等处分。<br />
+                &#160;&#160;6.1上课、排练时不服从管理和指导,不遵守纪律,影响其他团员的正常上课、排练;<br />
+                &#160;&#160;6.2一个学期内发生两次及以上旷课行为;<br />
+                &#160;&#160;6.3一个学期内发生两次及以上未按老师要求回传视频作业的情形;<br />
+                &#160;&#160;6.4无特殊原因连续七天不练习,影响团员和乐团的整体水平的。<br />
 
         <h2>三、请假</h2>
-        1、基于教学进度和质量保证,甲方对于课程延续性有严格要求,因此乙方学员应尽量参加课程,无特殊情况则应避免请假。
-        <div>2、VIP课程学员如有特殊情况需要请假的,应提前4小时以上通过管乐迷APP完成请假,否则当次课程将视同发生,系统将自动记录结算课时并扣除相应课程费用。</div>
-        VIP课程为一对二课程的,其中一位学员申请临时休会的,还需征得同组另一位学员的同意后方可申请休会。否则将不予受理。
-        <div>3、鉴于团体课的特殊性,团体课学员个人请假,当次课程仍视同发生。</div>
+        1、基于教学进度和质量保证,甲方对于课程延续性有严格要求,因此乙方学员应尽量参加课程,无特殊情况则应避免请假。<br />
+        2、VIP课程学员如有特殊情况需要请假的,应提前4小时以上通过管乐迷APP完成请假,否则当次课程将视同发生,系统将自动记录结算课时并扣除相应课程费用。<br />
+        3、VIP学员如遇特殊情况需要长期请假时,可向□甲方/□授课老师申请办理临时休会。学员可在6个月内申请复学,超过6个月未申请复学的,甲方有权按自动退会处理。VIP课程为一对二课程的,其中一位学员申请临时休会的,还需征得同组另一位学员的同意后方可申请休会。否则将不予受理。<br />
+        4、鉴于团体课的特殊性,团体课学员个人请假,当次课程仍视同发生。<br />
 
         <h2>四、退费</h2>
         1、乐器、教辅、配件等,未经签收,自购买缴款之日起15日内提出申请可全额退还,超过上述期限则不予受理退费申请;非因商品本身存在质量问题,一经签收,无论使用与否,均不予退费;<br />
@@ -172,7 +168,7 @@
         2、因履行本协议发生的一切争议,甲乙双方应友好协商解决;如双方在发生争议后30日内无法通过协商解决时,任何一方有权向甲方所在地有管辖权的人民法院提起诉讼解决。<br />
 
         <h2>九、其他</h2>
-        1、乙方同意,甲方有权在乙方学习、上课、排练和活动期间对其拍摄照片、视频,甲方对所拍摄的照片、视频享有著作权,乙方同意甲方可合理使用该等照片、视频。<br />
+        1、乙方同意,甲方有权在乙方学习、上课、排练和活动期间对其拍摄照片、视频,甲方对所拍摄的照片、视频享有著作权,乙方同意甲方可使用该等照片、视频。<br />
         2、未经甲方事先书面同意,乙方不得将本课程转让给乙方以外的任何第三方。<br />
         3、双方确认并同意,本协议的电子版本与纸质版本具有同等法律效力。双方发生争议时,电子合同打印件可作为证据提交。双方通过网络以在线方式签订本协议的 ,则以乙方点击“确认”或“同意”等相关按钮或以电子签名的方式作为对合同内容的同意、确认以及本协议的签署;如双方签订纸质版本协议的,则本协议壹式贰份,甲方盖公章或合同专用章并且乙方签字作为有效签署方式,并且双方各执壹份,每份具有同等法律效力。<br />
         4、本协议自双方按照本协议约定方式签署之日起生效,有效期至双方履行完本协议约定的全部义务时止。<br />

+ 6 - 4
mec-biz/src/main/resources/config/mybatis/SysUserContractsMapper.xml

@@ -100,9 +100,11 @@
 
 	<select id="getUserAllContract" resultMap="SysUserContracts">
 		SELECT * FROM sys_user_contracts
-		WHERE user_id_ IN
-		<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
-			#{userId}
-		</foreach>
+		WHERE
+		    version_!=1
+		    AND user_id_ IN
+			<foreach collection="userIds" item="userId" open="(" close=")" separator=",">
+				#{userId}
+			</foreach>
 	</select>
 </mapper>

+ 1 - 1
mec-student/src/main/resources/bootstrap-test.properties

@@ -3,7 +3,7 @@
 #\u670d\u52a1\u5668\u5730\u5740
 spring.cloud.nacos.config.server-addr=47.114.1.200:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=f9d46b0a-9847-48ae-8e4b-216c7a3eb466
+spring.cloud.nacos.config.namespace=f753d9d9-4bb2-4df6-a483-da9e169617c4
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}

+ 8 - 13
mec-web/src/main/java/com/ym/mec/web/controller/SysUserContractsController.java

@@ -15,9 +15,7 @@ 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.*;
 import java.util.stream.Collectors;
 
 @RequestMapping("sysUserContracts")
@@ -31,27 +29,24 @@ public class SysUserContractsController extends BaseController {
     @ApiOperation(value = "查询学生最新协议")
     @GetMapping("/getLatest")
     @PreAuthorize("@pcs.hasPermissions('sysUserContracts/getLatest')")
-	public HttpResponseResult<SysUserContracts> getLatest(Integer userId, Integer version) {
+	public HttpResponseResult<List<SysUserContracts>> getLatest(Integer userId) {
 		
 //		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());
+		Map<Integer, List<SysUserContracts>> versionContractMap = sysUserContracts.stream().collect(Collectors.groupingBy(SysUserContracts::getVersion));
 
-		if(CollectionUtils.isEmpty(versionContracts)){
-			return failed("该学员尚未签署协议");
+		List<SysUserContracts> result = new ArrayList<>();
+		for (Map.Entry<Integer, List<SysUserContracts>> versionContractMapEntry : versionContractMap.entrySet()) {
+			versionContractMapEntry.getValue().sort(Comparator.comparing(SysUserContracts::getCreateTime).reversed());
+			result.add(versionContractMapEntry.getValue().get(0));
 		}
 
-		versionContracts.sort(Comparator.comparing(SysUserContracts::getCreateTime).reversed());
-		return succeed(versionContracts.get(0));
+		return succeed(result);
 	}
 
 }

+ 1 - 1
mec-web/src/main/resources/bootstrap-test.properties

@@ -3,7 +3,7 @@
 #\u670d\u52a1\u5668\u5730\u5740
 spring.cloud.nacos.config.server-addr=47.114.1.200:8848
 #\u9ed8\u8ba4\u4e3aPublic\u547d\u540d\u7a7a\u95f4,\u53ef\u4ee5\u7701\u7565\u4e0d\u5199
-spring.cloud.nacos.config.namespace=f9d46b0a-9847-48ae-8e4b-216c7a3eb466
+spring.cloud.nacos.config.namespace=f753d9d9-4bb2-4df6-a483-da9e169617c4
 #\u6307\u5b9a\u914d\u7f6e\u7fa4\u7ec4 --\u5982\u679c\u662fPublic\u547d\u540d\u7a7a\u95f4 \u5219\u53ef\u4ee5\u7701\u7565\u7fa4\u7ec4\u914d\u7f6e
 spring.cloud.nacos.config.group=DEFAULT_GROUP
 #\u6587\u4ef6\u540d -- \u5982\u679c\u6ca1\u6709\u914d\u7f6e\u5219\u9ed8\u8ba4\u4e3a ${spring.appliction.name}