Bläddra i källkod

Merge remote-tracking branch 'origin/master_saas' into master_saas

zouxuan 2 år sedan
förälder
incheckning
f43ff63e5f

+ 4 - 0
cms/src/main/java/com/ym/mec/cms/dal/dao/SysNewsInformationDao.java

@@ -34,4 +34,8 @@ public interface SysNewsInformationDao extends BaseDAO<Long, SysNewsInformation>
 	List<SysNewsInformation> queryBySubType(@Param("subType") Integer subType,@Param("memo") String memo);
 
     Boolean countStudentAttendanceError(@Param("startTime") String startTime, @Param("userId") Integer userId);
+
+    Integer queryHomework(Integer teacherId);
+
+    int queryPractice(@Param("userId") Integer userId, @Param("date") String date);
 }

+ 22 - 0
cms/src/main/java/com/ym/mec/cms/service/impl/SysNewsTypeServiceImpl.java

@@ -17,6 +17,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
@@ -80,6 +82,9 @@ public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType
                 }else if(sni.getTitle().equals("学员考勤异常")){
                     //当前老师是否有学员考勤异常
                     sni.setRedDot(informationDao.countStudentAttendanceError(startTime,userId));
+                } else if (sni.getTitle().equals("训练列表")) {
+                    //训练列表
+                    sni.setRedDot(queryHomework(userId));
                 }
     		}
             e.setInformationList(list);
@@ -92,6 +97,23 @@ public class SysNewsTypeServiceImpl extends BaseServiceImpl<Integer, SysNewsType
         return treeMenus;
     }
 
+    private Boolean queryHomework(Integer userId) {
+        int courseIdCount = informationDao.queryHomework(userId);
+        if (courseIdCount > 0) {
+            return true;
+        }
+
+        LocalDate now = LocalDate.now();
+        // 获取周一
+        LocalDate monday = now.minusDays(now.getDayOfWeek().getValue() - 1);
+        int practiceIdCount = informationDao.queryPractice(userId,monday.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+
+        if (practiceIdCount > 0) {
+            return true;
+        }
+        return false;
+    }
+
     private List<SysNewsType> getChildren(SysNewsType rootMenu, List<SysNewsType> allMenus) {
         List<SysNewsType> childrenList = allMenus.stream().filter(e -> e.getParentId().equals(rootMenu.getId()))
                 .map(menu -> menu.setChildren(getChildren(menu, allMenus)))

+ 31 - 0
cms/src/main/resources/config/mybatis/SysNewsInformationMapper.xml

@@ -327,4 +327,35 @@
 		AND (cs.new_course_id_ IS NULL OR cs.new_course_id_=cs.id_) AND cssp.id_ IS NOT NULL
 		AND (ta.sign_out_status_ IS NOT NULL OR ta.sign_in_status_ IS NOT NULL)
 	</select>
+
+	<select id="queryHomework" resultType="java.lang.Integer">
+        SELECT count( csts.course_schedule_id_)
+        FROM course_schedule_teacher_salary csts
+        LEFT JOIN course_schedule cs ON cs.id_ = csts.course_schedule_id_
+        LEFT JOIN student_extracurricular_exercises_situation_ se ON se.teacher_id_ = csts.user_id_
+        left join lesson_examination le on le.course_schedule_id_ = csts.course_schedule_id_
+        left join teacher_attendance ta on ta.course_schedule_id_ = csts.course_schedule_id_
+        WHERE csts.user_id_ = #{teacherId}
+            AND cs.class_date_ = date_format(now(),'%Y-%m-%d')
+        AND FIND_IN_SET(cs.id_, se.course_ids_) and le.id_ is null
+        AND se.serve_type_ = 'HOMEWORK'
+        and ta.sign_out_status_ is null and ta.sign_in_status_ is not null
+    </select>
+
+	<select id="queryPractice" resultType="int">
+        SELECT
+            count(distinct sees.music_group_id_)
+        from
+            student_extracurricular_exercises_situation_ sees
+                LEFT JOIN
+            music_group mg
+            on mg.id_ = sees.music_group_id_
+        WHERE
+            sees.teacher_id_ = #{userId}
+          and sees.serve_type_ = 'EXERCISE'
+          and sees.actual_exercises_num_ = 0
+          and sees.monday_ = #{date}
+
+
+    </select>
 </mapper>

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImGroupDao.java

@@ -38,4 +38,6 @@ public interface ImGroupDao extends BaseDAO<String, ImGroup> {
     void updateMemberNum();
 
     List<NameDto> queryNameByIds(@Param("ids") String ids);
+
+    List<ImGroup> queryByUserIdV2(@Param("userId") Integer userId, @Param("search") String search, @Param("groupType") String groupType, @Param("musicGroupId") String musicGroupId, @Param("classType") String classType);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImUserFriendDao.java

@@ -41,4 +41,6 @@ public interface ImUserFriendDao extends BaseDAO<Long, ImUserFriend> {
 	void updateNullNickName();
 
     List<NameDto> queryNameByIds(@Param("ids") String ids, @Param("userId") Integer userId);
+
+    List<ImUserFriendDto> queryFriendListByUserIdV2(@Param("userId") Integer userId, @Param("search") String search, @Param("musicGroupId") String musicGroupId, @Param("subjectId") Integer subjectId, @Param("vipFlag") Boolean vipFlag);
 }

+ 3 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroup.java

@@ -210,7 +210,7 @@ public class MusicGroup extends BaseEntity {
 	private Integer musicGroupPlanMakingId;
 	
 	@ApiModelProperty(value = "成团年级",required = false)
-	private Integer firstRecruitGrade;
+	private String firstRecruitGrade;
 	
 	@ApiModelProperty(value = "默认收费标准",required = false)
 	private BigDecimal defaultChargeStandard;
@@ -750,11 +750,11 @@ public class MusicGroup extends BaseEntity {
 		this.musicGroupPlanMakingId = musicGroupPlanMakingId;
 	}
 
-	public Integer getFirstRecruitGrade() {
+	public String getFirstRecruitGrade() {
 		return firstRecruitGrade;
 	}
 
-	public void setFirstRecruitGrade(Integer firstRecruitGrade) {
+	public void setFirstRecruitGrade(String firstRecruitGrade) {
 		this.firstRecruitGrade = firstRecruitGrade;
 	}
 

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

@@ -4,8 +4,6 @@ import com.ym.mec.biz.dal.dto.ImGroupDto;
 import com.ym.mec.biz.dal.dto.ImGroupMemberDto;
 import com.ym.mec.biz.dal.dto.NameDto;
 import com.ym.mec.biz.dal.entity.ImGroup;
-import com.ym.mec.biz.dal.page.GroupMemberQueryInfo;
-import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.List;
@@ -93,4 +91,6 @@ public interface ImGroupService extends BaseService<String, ImGroup> {
 	* @date 2022/8/8 10:10
 	*/
 	List<NameDto> queryDetail(List<NameDto> nameDto);
+
+    List<ImGroup> queryByUserIdV2(Integer userId, String search, String groupType, String musicGroupId, String classType);
 }

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.service;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
 
@@ -80,4 +81,6 @@ public interface ImUserFriendService extends BaseService<Long, ImUserFriend> {
 	 * @author zouxuan
 	 */
 	void refreshGroupImUserFriend(String musicGroupId,GroupType groupType);
+
+    List<ImUserFriendDto> queryFriendListByUserIdV2(Integer userId, String search, String musicGroupId, Integer subjectId, Boolean vipFlag);
 }

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -245,4 +245,9 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
 		}
         return dtos;
     }
+
+    @Override
+    public List<ImGroup> queryByUserIdV2(Integer userId, String search, String groupType, String musicGroupId, String classType) {
+        return imGroupDao.queryByUserIdV2(userId, search, groupType, musicGroupId, classType);
+    }
 }

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

@@ -194,7 +194,16 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 //		executor.shutdown();
 	}
 
-	public List<ImUserFriend> saveImUserFriends(Set<Integer> studentIds,Set<Integer> teacherIds,GroupType groupType,String musicGroupId){
+    @Override
+    public List<ImUserFriendDto> queryFriendListByUserIdV2(Integer userId, String search, String musicGroupId, Integer subjectId, Boolean vipFlag) {
+        // 逻辑过于复杂 拿出数据后筛选
+        return imUserFriendDao.queryFriendListByUserIdV2(userId, search,musicGroupId,subjectId,vipFlag);
+
+
+
+    }
+
+    public List<ImUserFriend> saveImUserFriends(Set<Integer> studentIds,Set<Integer> teacherIds,GroupType groupType,String musicGroupId){
 		List<ImUserFriend> imUserFriends = new ArrayList<>();
 		Set<Integer> educationIds = new HashSet<>();
 		Integer repairUserId = null;

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

@@ -313,7 +313,7 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher> implem
     }
 
     @Transactional(rollbackFor = Exception.class)
-    public List<ImUserFriendDto> queryGroupStudents1(Integer teacherId, String search) {
+    public List<ImUserFriendDto>  queryGroupStudents1(Integer teacherId, String search) {
         Set<BasicUserDto> basicUserDtos = new HashSet<>();
         //学员关联的通讯录
         //获取相关课程,班级老师列表

+ 24 - 0
mec-biz/src/main/resources/config/mybatis/ImGroupMapper.xml

@@ -189,4 +189,28 @@
     <select id="queryNameByIds" resultMap="NameDto">
 		select id_,name_,3 type_ from im_group where FIND_IN_SET(id_,#{ids})
 	</select>
+
+	<select id="queryByUserIdV2" resultMap="ImGroup">
+        SELECT ig.* FROM im_group_member igm
+        LEFT JOIN im_group ig ON igm.im_group_id_ = ig.id_
+        left join class_group cg on cg.id_ = ig.id_
+        left join music_group mg on mg.id_ = cg.music_group_id_
+        where 1 =1
+        <if test="userId != null">
+            AND igm.user_id_ = #{userId}
+        </if>
+        <if test="search != null and search != ''">
+            AND (ig.name_ like concat('%',#{search},'%') or ig.tags_ like concat('%',#{search},'%'))
+        </if>
+        <if test="groupType != null and groupType != ''">
+            AND ig.group_type_ = #{groupType}
+        </if>
+        <if test="musicGroupId != null and musicGroupId != ''">
+            and mg.id_ = #{musicGroupId}
+        </if>
+        <if test="classType != null and classType != ''">
+            AND cg.type_ = #{classType}
+        </if>
+
+    </select>
 </mapper>

+ 26 - 0
mec-biz/src/main/resources/config/mybatis/ImUserFriendMapper.xml

@@ -131,4 +131,30 @@
 		left join sys_user su on iuf.friend_id_ = su.id_
 		where iuf.user_id_ = #{userId} and find_in_set(friend_id_,#{ids})
 	</select>
+
+	<select id="queryFriendListByUserIdV2" resultMap="ImUserFriendDto">
+        SELECT iuf.*,u.real_name_,u.avatar_,u.phone_,u.user_type_,st.member_rank_setting_id_,s.name_ subject_name_,st.subject_id_list_ subject_id_
+        FROM im_user_friend iuf
+        LEFT JOIN sys_user u ON iuf.friend_id_ = u.id_
+        LEFT JOIN student st ON st.user_id_ = u.id_
+        LEFT JOIN `subject` s ON s.id_ = st.subject_id_list_
+        WHERE iuf.user_id_ = #{userId}
+        <if test="search != null">
+            and (u.real_name_ like concat('%',#{search},'%') or iuf.friend_nickname_ like concat('%',#{search},'%'))
+        </if>
+        <if test="subjectId != null">
+            and st.subject_id_list_ = #{subjectId}
+        </if>
+        <if test="musicGroupId != null and musicGroupId != ''">
+            and st.music_group_id_ = #{musicGroupId}
+        </if>
+        <if test="vipFlag != null">
+            <if test="vipFlag">
+                and st.member_rank_setting_id_ is not null
+            </if>
+            <if test="vipFlag == false">
+                and st.member_rank_setting_id_ is null
+            </if>
+        </if>
+    </select>
 </mapper>

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

@@ -97,7 +97,7 @@
     </select>
 
     <select id="queryNotSuccessExaminationList" resultType="int">
-        select sle.lesson_examination_id_
+        select count(sle.lesson_examination_id_)
         from student_lesson_examination sle
         left join lesson_examination le on sle.lesson_examination_id_ = le.id_
         where sle.user_id_ = #{userId}

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

@@ -1219,7 +1219,7 @@
         LEFT JOIN practice_group pg ON pg.id_ = cgsm.music_group_id_
         WHERE cgsm.group_type_ = 'PRACTICE' AND cgsm.user_id_ = #{userId}
     </select>
-    <select id="findVipEducationalTeacherId" resultType="java.lang.Integer">
+    <select  id="findVipEducationalTeacherId" resultType="java.lang.Integer">
         SELECT DISTINCT vg.educational_teacher_id_ FROM class_group_student_mapper cgsm
         LEFT JOIN class_group_teacher_mapper cgtm ON cgsm.class_group_id_ = cgtm.class_group_id_
         LEFT JOIN vip_group vg ON vg.id_ = cgsm.music_group_id_

+ 16 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/ImGroupController.java

@@ -41,6 +41,13 @@ public class ImGroupController extends BaseController {
 		return succeed(imGroupService.queryByUserId(userLoginService.getUserId(), search,groupType));
 	}
 
+
+    @ApiOperation("查询群列表-v2")
+    @GetMapping(value = "/queryGroupList/v2")
+    public Object queryGroupListV2(String search,String groupType,String musicGroupId,String classType) {
+        return succeed(imGroupService.queryByUserIdV2(userLoginService.getUserId(), search,groupType,musicGroupId,classType));
+    }
+
 	@ApiOperation("查询群详情")
 	@GetMapping(value = "/queryGroupDetail")
 	public Object queryGroupDetail(String imGroupId) {
@@ -99,6 +106,15 @@ public class ImGroupController extends BaseController {
 				.collect(Collectors.toList()));
 	}
 
+
+    @ApiOperation("查询好友中的学生列表-v2")
+    @GetMapping(value = "/queryFriendStudentList/v2")
+    public Object queryFriendStudentListV2(String search,String musicGroupId,Integer subjectId,Boolean vipFlag) {
+        return succeed(imUserFriendService.queryFriendListByUserIdV2(userLoginService.getUserId(), search,musicGroupId,subjectId,vipFlag)
+                .stream().filter(e -> StringUtils.isBlank(e.getTags()))
+                .collect(Collectors.toList()));
+    }
+
 	@ApiOperation("查询群公告列表")
 	@GetMapping(value = "/queryNoticeList")
 	public Object queryNoticeList(ImGroupNoticeQueryInfo queryInfo) {