소스 검색

Merge branch 'master' of http://git.dayaedu.com/yonge/mec into zouxuan

zouxuan 5 년 전
부모
커밋
1a6e2dc3b2

+ 7 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/dal/dao/SysUserDao.java

@@ -72,4 +72,11 @@ public interface SysUserDao extends BaseDAO<Integer, SysUser> {
 	 * @param userId
 	 */
     void insertSysTenantAccount(Integer userId);
+
+	/**
+	 * 刷新用户token
+	 * @param userId
+	 * @param imToken
+	 */
+	void refreshImToken(@Param("userId") Integer userId, @Param("imToken") String imToken);
 }

+ 6 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserService.java

@@ -91,4 +91,10 @@ public interface SysUserService extends BaseService<Integer, SysUser> {
 	 * @return
 	 */
 	void retrieveUser(String phone, Authentication authentication);
+
+	/**
+	 * 刷新token
+	 * @param sysUser
+	 */
+    void refreshImToken(SysUser sysUser);
 }

+ 6 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserServiceImpl.java

@@ -199,4 +199,10 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem
 		if(!b) throw new BadCredentialsException("验证码校验失败");
 	}
 
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void refreshImToken(SysUser sysUser) {
+		sysUserDao.refreshImToken(sysUser.getId(),sysUser.getImToken());
+	}
+
 }

+ 26 - 0
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/UserController.java

@@ -231,6 +231,32 @@ public class UserController extends BaseController {
 		return failed();
 	}
 
+	@ApiOperation(value = "刷新token")
+	@PostMapping(value = "/refreshImToken")
+	public Object refreshImToken() {
+		AuthUser user = SecurityUtils.getUser();
+		if (user != null) {
+			SysUser sysUser = sysUserService.get(user.getUserId());
+			String username;
+			if(sysUser.getUserType().contains("TEACHER") || sysUser.getUserType().contains("SYSTEM")){
+				username = sysUser.getRealName();
+			}else {
+				username = sysUser.getUsername();
+			}
+			if(StringUtils.isEmpty(username)){
+				return failed("获取Token失败: 用户名为空");
+			}else {
+				ImResult register = imFeignService.register(new ImUserModel(sysUser.getId().toString(), username, sysUser.getAvatar()));
+				if(StringUtils.isEmpty(register.getToken())){
+					return failed("获取Token失败: 请联系教务老师");
+				}
+				sysUser.setImToken(register.getToken());
+				sysUserService.refreshImToken(sysUser);
+			}
+		}
+		return failed();
+	}
+
 	@ApiOperation(value = "校验用户手机号和密码")
 	@GetMapping(value = "/checkUser")
 	public Object checkUser(String phone,String password) {

+ 3 - 0
mec-auth/mec-auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -154,6 +154,9 @@
     <update id="updatePassword">
         UPDATE sys_user SET password_ = #{password} WHERE phone_ = #{mobile}
     </update>
+    <update id="refreshImToken">
+        UPDATE sys_user SET im_token_ = #{imToken},update_time_ = NOW() WHERE id_ = #{userId}
+    </update>
 
     <!-- 根据主键删除一条记录 -->
     <delete id="delete">

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

@@ -3752,6 +3752,14 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
         courseScheduleModifyLogDao.insert(scheduleModifyLog);
     }
 
+	/**
+	 * 课程调整后清除课程相关信息
+	 */
+	@Transactional(rollbackFor = Exception.class)
+    private void cleanCourseMapper(){
+
+	}
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void practiceCourseTeacherAdjust(Long courseScheduleId,Integer teacherId) {

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExtracurricularExercisesReplyServiceImpl.java

@@ -68,6 +68,9 @@ public class ExtracurricularExercisesReplyServiceImpl extends BaseServiceImpl<Lo
 	@Override
 	public CourseHomeworkStudentDetailDto findStudentExtraExerciseDetail(Long studentExerciseId) {
 		ExtraExerciseStudentsDto extraExerciseReply = extracurricularExercisesReplyDao.findExtraExerciseReply(studentExerciseId);
+		if(extraExerciseReply == null){
+			throw new BizException("找不到学生作业记录");
+		}
 		CourseHomeworkStudentDetailDto detail=new CourseHomeworkStudentDetailDto();
 		detail.setCourseHomeworkId(extraExerciseReply.getId());
 		detail.setClassGroupName(extraExerciseReply.getTitle() + "•" + extraExerciseReply.getStudentName());

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

@@ -2093,7 +2093,7 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
     	for(Integer userId:studentSurplusClassFees.keySet()){
 			StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.findByStudentVipGroup(vipGroupId,userId,DealStatusEnum.SUCCESS.getCode());
 			if(null==studentPaymentOrder){
-				throw new BizException("未找到相关订单信息!");
+				throw new BizException("无法停止课程,需要全部学员退学后,才能停止,请先操作学员退学。");
 			}
 			sysUserCashAccountService.updateBalance(userId.intValue(),studentSurplusClassFees.get(userId));
 			SysUserCashAccount sysUserCashAccount = sysUserCashAccountService.get(userId.intValue());

+ 6 - 7
mec-biz/src/main/resources/config/mybatis/CourseScheduleEvaluateMapper.xml

@@ -132,13 +132,12 @@
 
     <!-- 体验人数 -->
     <select id="getPracticeGroupsFree" resultMap="PracticeGroupsOrgan">
-        SELECT pg.organ_id_, count(*) total_nums_
-        FROM class_group cg
-                 LEFT JOIN practice_group pg on cg.music_group_id_ = pg.id_
-        WHERE cg.group_type_ = 'PRACTICE'
-          AND pg.buy_months_ IS NULL
-          AND pg.group_status_ != 'LOCK'
-        GROUP BY pg.organ_id_
+        SELECT organ_id_, count(distinct student_id_) total_nums_
+        FROM practice_group
+        WHERE group_status_ != 'LOCK'
+          AND group_status_ != 'CANCEL'
+          AND buy_months_ IS NULL
+        GROUP BY organ_id_
     </select>
 
     <!-- 已购买人数 -->

+ 2 - 1
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -2223,6 +2223,7 @@
 
     <sql id="endFindCourseSchedulesCondition">
         <where>
+            (cs.del_flag_ != 1 OR cs.del_flag_ IS NULL)
             <include refid="queryVipCourseScheduleIds"/>
             <if test="classGroupIds != null">
                 AND cs.class_group_id_ IN
@@ -2252,7 +2253,7 @@
         course_schedule cs
         LEFT JOIN school s ON cs.schoole_id_=s.id_
         <include refid="endFindCourseSchedulesCondition"/>
-        ORDER BY course_start_time_
+        ORDER BY course_start_time_,cs.id_
         <include refid="global.limit"/>
     </select>
     <select id="endCountCourseSchedules" resultType="int">

+ 24 - 22
mec-biz/src/main/resources/config/mybatis/PracticeGroupMapper.xml

@@ -391,15 +391,16 @@
 
     <select id="countStudentBuys" resultType="java.lang.Integer">
         SELECT COUNT(a.student_id_) FROM
-        (SELECT pg.`student_id_` ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate
-        FROM `practice_group` pg
-        LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_`
-        WHERE cs.`group_type_` = 'PRACTICE' AND pg.`buy_months_` IS NULL AND pg.group_status_ != 'CANCEL'
-        GROUP BY pg.`student_id_` ) a
+        (SELECT DISTINCT(pg.`student_id_`),pg.`organ_id_`   FROM `practice_group` pg WHERE pg.`group_status_` in ('NORMAL','FINISH')) a
+        LEFT JOIN (SELECT pg.`student_id_`  ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate   FROM `practice_group` pg
+        LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_` and cs.`group_type_` = 'PRACTICE'
+        WHERE pg.`buy_months_` IS NULL AND cs.`group_type_` = 'PRACTICE'
+        GROUP BY pg.`student_id_` ) b on a.student_id_ = b.student_id_
         left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime
-        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.group_status_ != 'CANCEL' GROUP BY pg.`student_id_` ) b
-        on a.student_id_ = b.student_id_
+        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.`group_status_` in ('NORMAL','FINISH') GROUP BY pg.`student_id_` ) c
+        on a.student_id_ = c.student_id_
         left join `sys_user` u on u.`id_` = a.student_id_
+        left join `organization` o on o.`id_` = a.organ_id_
         <include refid="queryStudentBuysSql"/>
     </select>
     <resultMap id="queryStudentBuysMap" type="com.ym.mec.biz.dal.dto.StudentBuyPracticeDto">
@@ -413,20 +414,21 @@
         <result property="buyPractice" column="buy_practice_" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
     <select id="queryStudentBuys" resultMap="queryStudentBuysMap">
-        SELECT o.`name_` organ_name_,a.student_id_,u.`username_` student_name_,u.phone_,a.lastClassDate last_class_date_,
-        b.firstBuyTime first_buy_time_,
-        CASE WHEN DATEDIFF(b.firstBuyTime,a.lastClassDate) &lt; 0 THEN 0 ELSE DATEDIFF(b.firstBuyTime,a.lastClassDate) END interval_day_,
-        CASE WHEN b.firstBuyTime IS NULL THEN 0 ELSE 1 END buy_practice_ FROM
-        (SELECT pg.`student_id_` ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate
-        FROM `practice_group` pg
-        LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_`
-        WHERE cs.`group_type_` = 'PRACTICE' AND pg.`buy_months_` IS NULL AND pg.group_status_ != 'CANCEL'
-        GROUP BY pg.`student_id_` ) a
+        SELECT o.`name_` organ_name_,a.student_id_,u.`username_` student_name_,u.phone_,
+        b.lastClassDate last_class_date_,c.firstBuyTime first_buy_time_,
+        CASE WHEN DATEDIFF(c.firstBuyTime,b.lastClassDate) &lt; 0 THEN 0 ELSE DATEDIFF(c.firstBuyTime,b.lastClassDate) END interval_day_,
+        CASE WHEN c.firstBuyTime IS NULL THEN 0 ELSE 1 END buy_practice_
+        FROM
+        (SELECT DISTINCT(pg.`student_id_`),pg.`organ_id_`   FROM `practice_group` pg WHERE pg.`group_status_` in ('NORMAL','FINISH')) a
+        LEFT JOIN (SELECT pg.`student_id_`  ,max(concat(cs.`class_date_`,' ',cs.`end_class_time_` )) lastClassDate   FROM `practice_group` pg
+        LEFT JOIN `course_schedule` cs on cs.`music_group_id_` = pg.`id_` and cs.`group_type_` = 'PRACTICE'
+        WHERE pg.`buy_months_` IS NULL AND cs.`group_type_` = 'PRACTICE'
+        GROUP BY pg.`student_id_` ) b on a.student_id_ = b.student_id_
         left join (SELECT pg.`student_id_` ,min(pg.`create_time_`) firstBuyTime
-        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.group_status_ != 'CANCEL' GROUP BY pg.`student_id_` ) b
-        on a.student_id_ = b.student_id_
+        FROM `practice_group` pg WHERE pg.`buy_months_` IS NOT NULL AND pg.`group_status_` in ('NORMAL','FINISH') GROUP BY pg.`student_id_` ) c
+        on a.student_id_ = c.student_id_
         left join `sys_user` u on u.`id_` = a.student_id_
-        left join `organization` o on o.`id_` = u.`organ_id_`
+        left join `organization` o on o.`id_` = a.organ_id_
         <include refid="queryStudentBuysSql"/>
         <include refid="global.limit"/>
     </select>
@@ -436,13 +438,13 @@
                 (u.id_ = #{search} OR u.`username_` LIKE CONCAT('%',#{search},'%'))
             </if>
             <if test="buyPractice != null and buyPractice == false">
-                AND b.firstBuyTime IS NULL
+                AND c.firstBuyTime IS NULL
             </if>
             <if test="buyPractice != null and buyPractice == true">
-                AND b.firstBuyTime IS NOT NULL
+                AND c.firstBuyTime IS NOT NULL
             </if>
             <if test="organId != null">
-                AND FIND_IN_SET(u.`organ_id_`,#{organId})
+                AND FIND_IN_SET(a.organ_id_,#{organId})
             </if>
         </where>
     </sql>

+ 88 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/config/ParameterCheckServletRequestWrapper.java

@@ -0,0 +1,88 @@
+package com.ym.mec.common.config;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+
+import javax.servlet.ReadListener;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.util.StreamUtils;
+
+import com.vdurmont.emoji.EmojiParser;
+
+public class ParameterCheckServletRequestWrapper extends HttpServletRequestWrapper {
+
+	private byte[] requestBody;
+	private Charset charSet;
+
+	public ParameterCheckServletRequestWrapper(HttpServletRequest request) throws IOException {
+		super(request);
+
+		String requestBodyStr = getRequestPostStr(request);
+		if (StringUtils.isNotBlank(requestBodyStr)) {
+			requestBodyStr = EmojiParser.removeAllEmojis(requestBodyStr);
+			requestBody = requestBodyStr.getBytes(charSet);
+		} else {
+			requestBody = new byte[0];
+		}
+	}
+
+	public String getRequestPostStr(HttpServletRequest request) throws IOException {
+		String charSetStr = request.getCharacterEncoding();
+		if (charSetStr == null) {
+			charSetStr = "UTF-8";
+		}
+		charSet = Charset.forName(charSetStr);
+
+		return StreamUtils.copyToString(request.getInputStream(), charSet);
+	}
+
+	/**
+	 * 重写 getInputStream()
+	 */
+	@Override
+	public ServletInputStream getInputStream() {
+		if (requestBody == null) {
+			requestBody = new byte[0];
+		}
+
+		final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(requestBody);
+
+		return new ServletInputStream() {
+			@Override
+			public boolean isFinished() {
+				return false;
+			}
+
+			@Override
+			public boolean isReady() {
+				return false;
+			}
+
+			@Override
+			public void setReadListener(ReadListener readListener) {
+
+			}
+
+			@Override
+			public int read() {
+				return byteArrayInputStream.read();
+			}
+		};
+	}
+
+	/**
+	 * 重写 getReader()
+	 */
+	@Override
+	public BufferedReader getReader() {
+		return new BufferedReader(new InputStreamReader(getInputStream()));
+	}
+
+}

+ 3 - 3
mec-common/common-core/src/main/java/com/ym/mec/common/filters/EmojiEncodingFilter.java

@@ -9,11 +9,11 @@ import javax.servlet.ServletException;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
 
 import org.apache.commons.lang3.StringUtils;
 
 import com.vdurmont.emoji.EmojiParser;
+import com.ym.mec.common.config.ParameterCheckServletRequestWrapper;
 
 public class EmojiEncodingFilter implements Filter {
 
@@ -24,7 +24,7 @@ public class EmojiEncodingFilter implements Filter {
 
 	@Override
 	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
-		request = new HttpServletRequestWrapper((HttpServletRequest) request) {
+		request = new ParameterCheckServletRequestWrapper((HttpServletRequest) request) {
 
 			@Override
 			public String getParameter(String name) {
@@ -51,7 +51,7 @@ public class EmojiEncodingFilter implements Filter {
 			}
 
 		};
-
+		
 		chain.doFilter(request, response);
 	}