瀏覽代碼

Merge remote-tracking branch 'origin/feature/0427-school' into feature/0427-school

zouxuan 2 年之前
父節點
當前提交
fbf8e5a2c1

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SchoolStaff.java

@@ -47,7 +47,7 @@ public class SchoolStaff implements Serializable {
 	@TableField(value = "user_type_")
     private ESchoolStaffType userType;
 
-    @ApiModelProperty("帐号状态(注销,冻结,激活)") 
+    @ApiModelProperty("帐号状态(注销 -1,冻结 9,激活 0)")
 	@TableField(value = "status_")
     private String status;
 

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/mapper/SchoolStaffMapper.java

@@ -31,4 +31,12 @@ public interface SchoolStaffMapper extends BaseMapper<SchoolStaff> {
 	 * @return List<StatGroupWrapper>
 	 */
     List<StatGroupWrapper> selectUserTypeNumsStat(@Param("schoolId") Integer schoolId);
+
+    /**
+     * 修改学校用户状态
+     *
+     * @param status 状态
+     * @param cooperationOrganId 合作单位ID
+     */
+    void updateStatusAndRecoveryStatus(@Param("status") Boolean status, @Param("cooperationOrganId") Integer cooperationOrganId);
 }

+ 26 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolStaffWrapper.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.wrapper;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.entity.CooperationOrgan;
@@ -53,7 +54,14 @@ public class SchoolStaffWrapper {
 
         @ApiModelProperty("机构编号")
         private Integer tenantId;
-        
+
+        @ApiModelProperty("分布ID")
+        private String organId;
+
+
+        @ApiModelProperty("合作单位禁用")
+        private Boolean coopStatus;
+
         public String getKeyword() {
             return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
         }
@@ -81,9 +89,18 @@ public class SchoolStaffWrapper {
         @ApiModelProperty("主键")
         private Long id;
 
+        @ApiModelProperty("分部ID")
+        private String organId;
+
+        @ApiModelProperty("分部名称")
+        private String organName;
+
         @ApiModelProperty("学校ID")
         private Long schoolId;
 
+        @ApiModelProperty("学校名称")
+        private String schoolName;
+
         @ApiModelProperty("用户帐号ID")
         private Long userId;
 
@@ -105,6 +122,12 @@ public class SchoolStaffWrapper {
         @ApiModelProperty("用户头像")
         private String avatar;
 
+        @ApiModelProperty("帐号状态(注销 -1,冻结 9,激活 0)")
+        private String status;
+
+        @ApiModelProperty("注册时间")
+        private Date createTime;
+
         @ApiModelProperty("验证码")
         private String smsCode;
         
@@ -340,6 +363,8 @@ public class SchoolStaffWrapper {
         @ApiModelProperty("机构编号")
         private Integer tenantId;
 
+        @ApiModelProperty("帐号状态(注销 -1,冻结 9,激活 0)")
+        private String status;
         public Date getUpdateTime() {
             return Optional.ofNullable(updateTime).orElse(DateTime.now().toDate());
         }

+ 9 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CooperationOrganServiceImpl.java

@@ -5,9 +5,11 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.biz.dal.mapper.SchoolStaffMapper;
 import com.ym.mec.biz.service.CooperationOrganService;
 import com.ym.mec.biz.service.ImGroupMemberService;
 import com.ym.mec.biz.service.ImGroupService;
+import com.ym.mec.biz.service.SchoolStaffService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import org.apache.commons.collections.CollectionUtils;
@@ -41,6 +43,9 @@ public class CooperationOrganServiceImpl extends BaseServiceImpl<Integer, Cooper
 	@Autowired
 	private SysUserFeignService sysUserFeignService;
 
+    @Autowired
+    private SchoolStaffMapper schoolStaffMapper;
+
 	@Override
 	public BaseDAO<Integer, CooperationOrgan> getDAO() {
 		return cooperationOrganDao;
@@ -129,6 +134,10 @@ public class CooperationOrganServiceImpl extends BaseServiceImpl<Integer, Cooper
 		}
 		
 		cooperationOrganDao.update(cooperationOrgan);
+
+        // 修改合作单位下的用户,改为锁定
+
+        schoolStaffMapper.updateStatusAndRecoveryStatus(cooperationOrgan.getIsEnable(), cooperationOrgan.getId());
 	}
 
 	@Override

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

@@ -131,6 +131,9 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
             throw new BizException("请勿重复提交");
         }
         SysUser user = teacherDao.getUserWithPhone(employee.getPhone());
+        if (user !=null && user.getUserType().contains("SCHOOL")) {
+            throw new BizException("用户已存在学校账户");
+        }
         Integer tenantId = employee.getTenantId();
         if (user != null && user.getId() != null) {
             checkTenantId(tenantId, user.getTenantId());

+ 33 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolStaffServiceImpl.java

@@ -12,20 +12,13 @@ import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.dao.SysMessageConfigDao;
 import com.ym.mec.biz.dal.dao.CooperationOrganDao;
 import com.ym.mec.biz.dal.dao.TeacherDao;
-import com.ym.mec.biz.dal.entity.CooperationOrgan;
-import com.ym.mec.biz.dal.entity.SchoolStaff;
-import com.ym.mec.biz.dal.entity.SysConfig;
-import com.ym.mec.biz.dal.entity.SysMessageConfig;
+import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.biz.dal.mapper.SchoolStaffMapper;
 import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
 import com.ym.mec.biz.dal.wrapper.StatGroupWrapper;
-import com.ym.mec.biz.service.CooperationOrganService;
-import com.ym.mec.biz.service.SchoolStaffService;
-import com.ym.mec.biz.service.SmsCodeService;
-import com.ym.mec.biz.service.SysConfigService;
-import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.*;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.string.MessageFormatter;
@@ -80,6 +73,9 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
     @Autowired
     private SysMessageConfigDao sysMessageConfigDao;
 
+    @Autowired
+    private OrganizationService organizationService;
+
     /**
      * 查询详情
      * @param id 详情ID
@@ -99,8 +95,33 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
      */
     @Override
     public IPage<SchoolStaffWrapper.SchoolStaff> selectPage(IPage<SchoolStaffWrapper.SchoolStaff> page, SchoolStaffWrapper.SchoolStaffQuery query) {
-        
-        return page.setRecords(baseMapper.selectPage(page, query));
+        List<SchoolStaffWrapper.SchoolStaff> schoolStaffs = baseMapper.selectPage(page, query);
+        if (CollectionUtils.isEmpty(schoolStaffs)) {
+            return page;
+        }
+
+        // 设置分部名称
+
+        // 分部ID集合
+        List<Integer> organIds = schoolStaffs.stream()
+                .flatMap(o -> Arrays.stream(o.getOrganId().split(",")))
+                .map(Integer::parseInt)
+                .collect(Collectors.toList());
+
+
+        Map<Integer, Organization> organizationMap = organizationService.getMapByIds(organIds);
+
+        for (SchoolStaffWrapper.SchoolStaff schoolStaff : schoolStaffs) {
+            String collect = Arrays.stream(schoolStaff.getOrganId().split(","))
+                    .map(Integer::parseInt)
+                    .map(organizationMap::get)
+                    .filter(Objects::nonNull)
+                    .map(o -> o.getName())
+                    .collect(Collectors.joining(","));
+            schoolStaff.setOrganName(collect);
+        }
+
+        return page.setRecords(schoolStaffs);
     }
 
     /**
@@ -425,6 +446,7 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
     @Override
     public void updateCooperation(SchoolStaffWrapper.Cooperation info) {
 
+        info.setStatus("0");
         // 合作单位信息
         cooperationOrganDao.update(JSON.parseObject(info.jsonString(), CooperationOrgan.class));
     }

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

@@ -779,6 +779,9 @@ public class StudentManageServiceImpl implements StudentManageService {
         }
         Date date = new Date();
         SysUser sysUser = teacherDao.getUserWithPhone(student.getPhone());
+        if (sysUser !=null && sysUser.getUserType().contains("SCHOOL")) {
+            throw new BizException("用户已存在学校账户");
+        }
         if (sysUser != null) {
             EmployeeServiceImpl.checkTenantId(student.getTenantId(), sysUser.getTenantId());
             if (sysUser.getUserType().contains("STUDENT")) {

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

@@ -101,6 +101,9 @@ public class TeacherServiceImpl extends BaseServiceImpl<Integer, Teacher> implem
     @Transactional(rollbackFor = Exception.class)
     public int add(Teacher teacher) throws Exception {
         SysUser user = teacherDao.getUserWithPhone(teacher.getPhone());
+        if (user !=null && user.getUserType().contains("SCHOOL")) {
+            throw new BizException("用户已存在学校账户");
+        }
         if (user != null && user.getId() != null) {
             EmployeeServiceImpl.checkTenantId(teacher.getTenantId(), user.getTenantId());
             if (user.getUserType().contains("TEACHER")) {

+ 51 - 19
mec-biz/src/main/resources/config/mybatis/SchoolStaffMapper.xml

@@ -3,36 +3,68 @@
 <mapper namespace="com.ym.mec.biz.dal.mapper.SchoolStaffMapper">
     
     <select id="selectPage" resultType="com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper$SchoolStaff">
-		SELECT
-			t1.id_
-		     , t1.school_id_
-		     , t1.user_id_
-		     , t1.user_type_
-		     , t1.tenant_id_
-		     , t1.organ_id_list_
-		     , IFNULL(t2.real_name_, t2.username_) AS username
-		     , t2.avatar_
-		     , t2.phone_ AS mobile
-		FROM school_staff t1 JOIN sys_user t2 ON (t1.user_id_ = t2.id_)
-		<where>
-			<if test="param.schoolId != null">
-				AND t1.school_id_ = #{param.schoolId}
-			</if>
+        SELECT t1.id_
+             , t1.organ_id_list_                   as organId
+             , t1.school_id_
+             , co.name_                            as schoolName
+             , t1.user_id_
+             , t1.user_type_
+             , t1.tenant_id_
+             , t1.organ_id_list_
+             , IFNULL(t2.real_name_, t2.username_) AS username
+             , t2.avatar_
+             , t2.phone_                           AS mobile
+             , t1.status_
+             , t1.create_time_
+        FROM school_staff t1
+                 JOIN sys_user t2 ON (t1.user_id_ = t2.id_)
+                 left join cooperation_organ co on t1.school_id_ = co.id_
+        <where>
+            <if test="param.schoolId != null">
+                AND t1.school_id_ = #{param.schoolId}
+            </if>
             <if test="param.schoolIds != null and param.schoolIds.size() != 0">
                 and t1.school_id_ in
                 <foreach collection="param.schoolIds" item="schoolId" open="(" separator="," close=")">
                     #{schoolId}
                 </foreach>
             </if>
-		</where>
-		ORDER BY id_ DESC
-	</select>
+            <if test="param.keyword != null and param.keyword != ''">
+                and (t2.id_ like concat('%', #{param.keyword}, '%')
+                    or t2.real_name_ like concat('%', #{param.keyword}, '%')
+                    or t2.phone_ like concat('%', #{param.keyword}, '%')
+                    )
+            </if>
+            <if test="param.tenantId != null">
+                and t1.tenant_id_ = #{param.tenantId}
+            </if>
+            <if test="param.organId != null and param.organId != ''">
+                and find_in_set(#{param.organId}, t1.organ_id_list_)
+            </if>
+            <if test="param.coopStatus != null">
+                and co.is_enable_ = #{param.coopStatus}
+            </if>
+        </where>
+        ORDER BY id_ DESC
+    </select>
 
 	<!--学校员工身份数统计-->
 	<select id="selectUserTypeNumsStat" resultType="com.ym.mec.biz.dal.wrapper.StatGroupWrapper">
 		SELECT t1.user_type_ AS gid, COUNT(t1.user_id_) AS total
 		FROM school_staff t1 WHERE t1.school_id_ = #{schoolId} GROUP BY t1.user_type_
 	</select>
-	<!--学校员工身份数统计-->
+
+    <update id="updateStatusAndRecoveryStatus">
+        update school_staff ss left join sys_user su on su.id_ = ss.user_id_
+        set ss.status_ = if(#{status},0,9),ss.recovery_status_ = if(#{status},0,1),su.lock_flag_ = if(#{status},0,9)
+        where ss.school_id_ = #{cooperationOrganId} and ss.status_ in (0,9)
+        <if test="status">
+            and ss.recovery_status_ = 1
+        </if>
+        <if test="status == false ">
+            and (ss.status_ = 0  or ss.status_ is null)
+        </if>
+    </update>
+    <!--学校员工身份数统计-->
 
 </mapper>

+ 8 - 1
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolStaffController.java

@@ -11,12 +11,14 @@ import com.ym.mec.biz.dal.entity.SchoolStaff;
 import com.ym.mec.biz.dal.enums.ParamEnum;
 import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
 import com.ym.mec.biz.service.CooperationOrganService;
+import com.ym.mec.biz.service.OrganizationService;
 import com.ym.mec.biz.service.SchoolStaffService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.PageUtil;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -50,6 +52,8 @@ public class SchoolStaffController extends BaseController {
     @Autowired
     private CooperationOrganService cooperationOrganService;
 
+    @Autowired
+    private OrganizationService organizationService;
 
 	@ApiOperation(value = "详情", notes = "学校员工-根据详情ID查询单条, 传入id")
     @PreAuthorize("@pcs.hasPermissions('schoolStaff/detail')")
@@ -65,7 +69,10 @@ public class SchoolStaffController extends BaseController {
     @PreAuthorize("@pcs.hasPermissions('schoolStaff/page')")
     @PostMapping("/page")
     public HttpResponseResult<PageInfo<SchoolStaffWrapper.SchoolStaff>> page(@RequestBody SchoolStaffWrapper.SchoolStaffQuery query) {
-        
+        query.setOrganId(organizationService.getEmployeeOrgan(query.getOrganId()));
+        query.setTenantId(TenantContextHolder.getTenantId());
+        query.setCoopStatus(true);
+
         IPage<SchoolStaffWrapper.SchoolStaff> pages = schoolStaffService.selectPage(QueryInfo.getPage(query), query);
         
         return succeed(PageUtil.pageInfo(pages));

+ 37 - 4
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolStudentHomeworkController.java

@@ -3,22 +3,27 @@ package com.ym.mec.web.controller.school;
 
 import com.ym.mec.biz.dal.dto.StudentLessonExaminationDetailDto;
 import com.ym.mec.biz.dal.dto.StudentLessonExaminationDto;
+import com.ym.mec.biz.dal.dto.StudentLessonTrainingDetailWrapper;
+import com.ym.mec.biz.dal.entity.StudentCourseHomework;
+import com.ym.mec.biz.dal.enums.ELessonTrainingType;
 import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryDto;
 import com.ym.mec.biz.dal.page.StudentLessonExaminationQueryInfo;
+import com.ym.mec.biz.service.StudentCourseHomeworkService;
 import com.ym.mec.biz.service.StudentLessonExaminationDetailService;
 import com.ym.mec.biz.service.StudentLessonExaminationService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Objects;
 
 @Api(tags = "学校学员课后作业")
 @RestController
@@ -30,6 +35,9 @@ public class SchoolStudentHomeworkController extends BaseController {
     @Resource
     private StudentLessonExaminationDetailService studentLessonExaminationDetailService;
 
+    @Autowired
+    private StudentCourseHomeworkService studentCourseHomeworkService;
+
     @ApiOperation(value = "获取课后评测学员列表")
     @PostMapping("queryLessonStudent")
     public HttpResponseResult<PageInfo<StudentLessonExaminationDto>> queryLessonStudent(@RequestBody StudentLessonExaminationQueryInfo queryInfo) {
@@ -49,5 +57,30 @@ public class SchoolStudentHomeworkController extends BaseController {
     }
 
 
+    @ApiOperation(value = "根据课程计划获取需要交作业的学生-公用")
+    @PostMapping("/findCourseStudentsPublic/v2")
+    public HttpResponseResult<List<StudentCourseHomework>> findCourseStudentsPublicV2(@Validated @RequestBody StudentLessonTrainingDetailWrapper.StudentLessonTrainingQuery query){
+        if(ELessonTrainingType.HOMEWORK.equals(query.getType())){
+            if (Objects.isNull(query.getCourseScheduleId())) {
+                throw new BizException("请指定课程");
+            }
+            return succeed(studentCourseHomeworkService.findStudentCourseHomeworkByCourseV2(query));
+        }else{
+            return succeed(studentCourseHomeworkService.findExtraExerciseStudentsV2(query));
+        }
+    }
+
+    @ApiOperation(value = "查询单个学生的训练")
+    @GetMapping("/findCourseHomeworkStudentDetailPublic/v2")
+    public HttpResponseResult<StudentLessonTrainingDetailWrapper.StudentLessonTraining> findCourseHomeworkStudentDetailPublicV2(@RequestParam Long courseScheduleId, @RequestParam Long userId, @RequestParam ELessonTrainingType type){
+        if(ELessonTrainingType.HOMEWORK.equals(type)){
+
+            // 获取学生作业界面详细信息
+            return succeed(studentCourseHomeworkService.findCourseHomeworkStudentDetailPublicV2(courseScheduleId, userId,type));
+        }else{
+
+            return succeed(studentCourseHomeworkService.findExtracurricularExercisesDetailPublicV2(courseScheduleId, userId, type));
+        }
+    }
 }