Quellcode durchsuchen

Merge branch 'feature/0427-school' of http://git.dayaedu.com/yonge/mec into feature/0427-school

liujc vor 2 Jahren
Ursprung
Commit
206da772c5

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

@@ -24,7 +24,7 @@ import java.util.Date;
 public class SchoolStaff implements Serializable {
 
     @ApiModelProperty("主键") 
-    @TableId(value = "id_", type = IdType.ID_WORKER)
+    @TableId(value = "id_", type = IdType.AUTO)
     private Long id;
 
     @ApiModelProperty("学校ID") 

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/school/ESchoolStaffType.java

@@ -1,10 +1,14 @@
 package com.ym.mec.biz.dal.enums.school;
 
 import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.google.common.collect.Lists;
 import com.ym.mec.common.enums.BaseEnum;
 import lombok.Getter;
+import org.apache.catalina.LifecycleState;
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.List;
+
 /***
  * 学校员工类型
  * 1人:校长、乐团领队
@@ -51,4 +55,12 @@ public enum ESchoolStaffType implements BaseEnum<String, ESchoolStaffType> {
 		}
 		return true;
 	}
+
+	/**
+	 * 排序返回员工身份
+	 * @return List<ESchoolStaffType>
+	 */
+	public static List<ESchoolStaffType> sorted() {
+		return Lists.newArrayList(SCHOOLMASTER, ORCHESTRA_LEADER, SCHOOL_LEADER, TEACHER);
+	}
 }

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

@@ -22,6 +22,6 @@ public interface SchoolStaffMapper extends BaseMapper<SchoolStaff> {
 	 * @param param SchoolStaffWrapper.SchoolStaffQuery
 	 * @return List<SchoolStaffWrapper.SchoolStaff>
 	 */
-	List<SchoolStaff> selectPage(@Param("page") IPage<SchoolStaff> page, @Param("param") SchoolStaffWrapper.SchoolStaffQuery param);
+	List<SchoolStaffWrapper.SchoolStaff> selectPage(@Param("page") IPage<SchoolStaffWrapper.SchoolStaff> page, @Param("param") SchoolStaffWrapper.SchoolStaffQuery param);
 	
 }

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

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -12,6 +13,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 import java.util.Optional;
@@ -38,6 +40,13 @@ public class SchoolStaffWrapper {
         
         @ApiModelProperty("关键字匹配")
 		private String keyword;
+
+        @NotNull(message = "合作单位编号不能为空")
+        @ApiModelProperty("合作单位编号")
+        private Long schoolId;
+
+        @ApiModelProperty("机构编号")
+        private Integer tenantId;
         
         public String getKeyword() {
             return Optional.ofNullable(keyword).filter(StringUtils::isNotBlank).orElse(null);
@@ -50,7 +59,11 @@ public class SchoolStaffWrapper {
         public static SchoolStaffQuery from(String json) {
             return JSON.parseObject(json, SchoolStaffQuery.class);
         }
-    }  
+
+        public Integer getTenantId() {
+            return Optional.ofNullable(tenantId).orElse(TenantContextHolder.getTenantId());
+        }
+    }
 
     @Data
     @Builder
@@ -82,6 +95,9 @@ public class SchoolStaffWrapper {
 
         @ApiModelProperty("联系方式")
         private String mobile;
+
+        @ApiModelProperty("用户头像")
+        private String avatar;
         
         public String jsonString() {
             return JSON.toJSONString(this);

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

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.ym.mec.biz.dal.wrapper.SchoolStaffWrapper;
 import com.ym.mec.biz.dal.entity.SchoolStaff;
 
+import java.util.List;
+
 /**
  * 学校员工
  * 2023-05-06 10:53:06
@@ -22,9 +24,9 @@ public interface SchoolStaffService extends IService<SchoolStaff>  {
      * 分页查询
      * @param page IPage<SchoolStaff>
      * @param query SchoolStaffWrapper.SchoolStaffQuery
-     * @return IPage<SchoolStaff>
+     * @return IPage<SchoolStaffWrapper.SchoolStaff>
      */
-    IPage<SchoolStaff> selectPage(IPage<SchoolStaff> page, SchoolStaffWrapper.SchoolStaffQuery query);
+    IPage<SchoolStaffWrapper.SchoolStaff> selectPage(IPage<SchoolStaffWrapper.SchoolStaff> page, SchoolStaffWrapper.SchoolStaffQuery query);
 	
     /**
      * 添加
@@ -46,4 +48,11 @@ public interface SchoolStaffService extends IService<SchoolStaff>  {
      * @return SchoolStaff
      */
     SchoolStaff queryByUserId(Long userId);
+
+    /**
+     * 根据用户ID获取学校所有员工
+     * @param userId 用户ID
+     * @return List<SchoolStaffWrapper.SchoolStaff>
+     */
+    List<SchoolStaffWrapper.SchoolStaff> getAllStaffsBySchoolId(Long userId);
 }

+ 60 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SchoolStaffServiceImpl.java

@@ -3,6 +3,8 @@ package com.ym.mec.biz.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.SysUserType;
 import com.ym.mec.auth.api.enums.YesOrNoEnum;
@@ -31,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.text.MessageFormat;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
@@ -69,10 +72,10 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
      * 分页查询
      * @param page IPage<SchoolStaff>
      * @param query SchoolStaffWrapper.SchoolStaffQuery
-     * @return IPage<SchoolStaff>
+     * @return IPage<SchoolStaffWrapper.SchoolStaff>
      */
     @Override
-    public IPage<SchoolStaff> selectPage(IPage<SchoolStaff> page, SchoolStaffWrapper.SchoolStaffQuery query) {
+    public IPage<SchoolStaffWrapper.SchoolStaff> selectPage(IPage<SchoolStaffWrapper.SchoolStaff> page, SchoolStaffWrapper.SchoolStaffQuery query) {
         
         return page.setRecords(baseMapper.selectPage(page, query));
     }
@@ -256,4 +259,59 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
 
         return staffs.get(0);
     }
+
+    /**
+     * 根据用户ID获取学校所有员工
+     *
+     * @param userId 用户ID
+     * @return List<SchoolStaffWrapper.SchoolStaff>
+     */
+    @Override
+    public List<SchoolStaffWrapper.SchoolStaff> getAllStaffsBySchoolId(Long userId) {
+
+        // 员工信息
+        List<SchoolStaff> staffs = lambdaQuery().eq(SchoolStaff::getUserId, userId).list();
+        if (CollectionUtils.isEmpty(staffs)) {
+            throw new BizException("员工信息不存在");
+        }
+
+        // 登陆员工信息
+        SchoolStaff staff = staffs.get(0);
+
+        // 员工所在学校人员信息
+        SchoolStaffWrapper.SchoolStaffQuery query = SchoolStaffWrapper.SchoolStaffQuery
+                .builder()
+                .page(1)
+                .rows(9999)
+                .schoolId(staff.getSchoolId())
+                .build();
+        List<SchoolStaffWrapper.SchoolStaff> records = baseMapper.selectPage(QueryInfo.getPage(query), query);
+
+        List<SchoolStaffWrapper.SchoolStaff> sorted = Lists.newArrayList();
+        // 首先排除自己的信息,默认添加到第一位
+        records.stream().filter(x -> x.getUserId().longValue() == staff.getUserId()).findFirst().ifPresent(sorted::add);
+
+        if (CollectionUtils.isNotEmpty(sorted)) {
+            // 删除自己的信息
+            records.remove(sorted.get(0));
+        }
+
+        // 对其他员工信息,重新排序后返回
+        if (CollectionUtils.isNotEmpty(records)) {
+
+            // 对返回数据排序:默认自己第一位,后面按照校长、分管领导,乐团领队、负责老师
+            Map<ESchoolStaffType, List<SchoolStaffWrapper.SchoolStaff>> collect = records.stream()
+                    .collect(Collectors.groupingBy(SchoolStaffWrapper.SchoolStaff::getUserType));
+
+            for (ESchoolStaffType item : ESchoolStaffType.sorted()) {
+
+                if (collect.containsKey(item)) {
+                    sorted.addAll(collect.get(item));
+                }
+            }
+        }
+
+        return sorted;
+    }
+
 }

+ 18 - 4
mec-biz/src/main/resources/config/mybatis/SchoolStaffMapper.xml

@@ -2,10 +2,24 @@
 <!DOCTYPE  mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.ym.mec.biz.dal.mapper.SchoolStaffMapper">
     
-    <select id="selectPage" resultType="com.ym.mec.biz.dal.entity.SchoolStaff">
-		SELECT         
-        	t.*
-		FROM school_staff t
+    <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>
+		</where>
+		ORDER BY id_ DESC
 	</select>
     
 </mapper>

+ 19 - 2
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolStaffController.java

@@ -17,6 +17,7 @@ import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -32,6 +33,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
 import java.util.Objects;
 
 @Slf4j
@@ -62,12 +64,27 @@ public class SchoolStaffController extends BaseController {
     @ApiOperation(value = "查询分页", notes = "学校员工- 传入 SchoolStaffWrapper.SchoolStaffQuery") 
     @PreAuthorize("@pcs.hasPermissions('schoolStaff/page')")
     @PostMapping("/page")
-    public HttpResponseResult<PageInfo<SchoolStaff>> page(@RequestBody SchoolStaffWrapper.SchoolStaffQuery query) {
+    public HttpResponseResult<PageInfo<SchoolStaffWrapper.SchoolStaff>> page(@RequestBody SchoolStaffWrapper.SchoolStaffQuery query) {
         
-        IPage<SchoolStaff> pages = schoolStaffService.selectPage(QueryInfo.getPage(query), query);
+        IPage<SchoolStaffWrapper.SchoolStaff> pages = schoolStaffService.selectPage(QueryInfo.getPage(query), query);
         
         return succeed(QueryInfo.pageInfo(pages));
 	}
+
+    @ApiOperation(value = "员工排序信息", notes = "按身份分组,返回所有员工信息")
+    @GetMapping("/getAllStaffs")
+    public HttpResponseResult<List<SchoolStaffWrapper.SchoolStaff>> getAllStaffs() {
+
+        // 查询用户信息
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (Objects.isNull(sysUser)) {
+            throw new BizException("请先登录");
+        }
+
+        List<SchoolStaffWrapper.SchoolStaff> list = schoolStaffService.getAllStaffsBySchoolId(Long.valueOf(sysUser.getId()));
+
+        return succeed(list);
+    }
     
     @ApiOperation(value = "新增", notes = "学校员工- 传入 SchoolStaffWrapper.SchoolStaff")
     @PreAuthorize("@pcs.hasPermissions('schoolStaff/save')")