shangke %!s(int64=2) %!d(string=hai) anos
pai
achega
97a39f5814

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

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ym.mec.biz.dal.wrapper.StatGroupWrapper;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 import com.ym.mec.biz.dal.entity.SchoolStaff;
@@ -23,5 +24,11 @@ public interface SchoolStaffMapper extends BaseMapper<SchoolStaff> {
 	 * @return List<SchoolStaffWrapper.SchoolStaff>
 	 */
 	List<SchoolStaffWrapper.SchoolStaff> selectPage(@Param("page") IPage<SchoolStaffWrapper.SchoolStaff> page, @Param("param") SchoolStaffWrapper.SchoolStaffQuery param);
-	
+
+	/**
+	 * 学校员工身份数统计
+	 * @param schoolId 学校Id
+	 * @return List<StatGroupWrapper>
+	 */
+    List<StatGroupWrapper> selectUserTypeNumsStat(@Param("schoolId") Integer schoolId);
 }

+ 41 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/SchoolStaffWrapper.java

@@ -3,6 +3,7 @@ package com.ym.mec.biz.dal.wrapper;
 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.entity.CooperationOrgan;
 import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.ApiModel;
@@ -267,4 +268,44 @@ public class SchoolStaffWrapper {
             return this;
         }
     }
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel("学校统计信息")
+    public static class SchoolStaffStat implements Serializable {
+
+        @ApiModelProperty("校长数")
+        private Integer schoolmasterNums;
+
+        @ApiModelProperty("分管领导数")
+        private Integer schoolLeaderNums;
+
+        @ApiModelProperty("乐团领队")
+        private Integer orchestraLeaderNums;
+
+        @ApiModelProperty("负责老师数")
+        private Integer teacherNums;
+
+        @ApiModelProperty("乐团数")
+        private Integer orchestraNums;
+
+        @ApiModelProperty("在读学员数")
+        private Integer studentNums;
+    }
+
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ApiModel("学校合作单位")
+    public static class SchoolCooperation implements Serializable {
+
+        @ApiModelProperty("合作单位")
+        private CooperationOrgan cooperation;
+
+        @ApiModelProperty("员工身份统计")
+        private SchoolStaffStat staffStat;
+    }
 }

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/StatGroupWrapper.java

@@ -0,0 +1,27 @@
+package com.ym.mec.biz.dal.wrapper;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 分组统计指标
+ * Created by Eric.Shang on 28/7/17.
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class StatGroupWrapper implements Serializable {
+
+    private Long id;
+    private Integer total;
+    private String gid; // 字符串分组ID
+
+    private Double number;
+
+}

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SchoolStaffService.java

@@ -55,4 +55,11 @@ public interface SchoolStaffService extends IService<SchoolStaff>  {
      * @return List<SchoolStaffWrapper.SchoolStaff>
      */
     List<SchoolStaffWrapper.SchoolStaff> getAllStaffsBySchoolId(Long userId);
+
+    /**
+     * 根据用户ID获取学校所有员工身份
+     * @param schoolId 学校ID
+     * @return SchoolStaffWrapper.SchoolStaffStat
+     */
+    SchoolStaffWrapper.SchoolStaffStat getUserTypeStatByCooperationId(Integer schoolId);
 }

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

@@ -15,6 +15,7 @@ import com.ym.mec.biz.dal.entity.SysConfig;
 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.SysConfigService;
@@ -96,6 +97,9 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
             throw new BizException("请勿重复提交");
         }
 
+        // 验证码合法性校验
+
+
         // 合作单位编号
         CooperationOrgan cooperation = cooperationOrganService.get(schoolStaff.getSchoolId().intValue());
         if (Objects.isNull(cooperation)) {
@@ -181,7 +185,7 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
         if (Objects.nonNull(user)) {
             // 学校员工帐号平台惟一,不能与其他帐号共存
             if (StringUtils.isNotBlank(user.getUserType())) {
-                throw new BizException("帐号已存在");
+                throw new BizException(999, "帐号已存在");
             }
 
             // 后续流程暂时忽略,用户允许存在多个身份时才走以下创建账号流程
@@ -327,4 +331,27 @@ public class SchoolStaffServiceImpl extends ServiceImpl<SchoolStaffMapper, Schoo
         return sorted;
     }
 
+    /**
+     * 根据用户ID获取学校所有员工身份
+     *
+     * @param schoolId 学校ID
+     * @return SchoolStaffWrapper.SchoolStaffStat
+     */
+    @Override
+    public SchoolStaffWrapper.SchoolStaffStat getUserTypeStatByCooperationId(Integer schoolId) {
+
+        Map<String, Integer> collect = baseMapper.selectUserTypeNumsStat(schoolId).stream()
+                .collect(Collectors.toMap(StatGroupWrapper::getGid, StatGroupWrapper::getTotal, (o, n) -> n));
+
+        // 统计学校员工身份
+        return SchoolStaffWrapper.SchoolStaffStat.builder()
+                .schoolmasterNums(collect.getOrDefault(ESchoolStaffType.SCHOOLMASTER.getCode(), 0))
+                .schoolLeaderNums(collect.getOrDefault(ESchoolStaffType.SCHOOL_LEADER.getCode(), 0))
+                .orchestraNums(collect.getOrDefault(ESchoolStaffType.ORCHESTRA_LEADER.getCode(), 0))
+                .teacherNums(collect.getOrDefault(ESchoolStaffType.TEACHER.getCode(), 0))
+                .orchestraNums(0)
+                .studentNums(0)
+                .build();
+    }
+
 }

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

@@ -21,5 +21,12 @@
 		</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_ = #{sch} GROUP BY t1.user_type_
+	</select>
+	<!--学校员工身份数统计-->
+
 </mapper>

+ 17 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/controller/BaseController.java

@@ -26,7 +26,6 @@ import javax.servlet.http.HttpServletRequest;
 import java.net.URLEncoder;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 @ControllerAdvice
@@ -75,6 +74,15 @@ public class BaseController {
 		return obj;
 	}
 
+	private static <T> HttpResponseResult<T> getResponseData(boolean status, int statusCode, T data, String message) {
+		HttpResponseResult<T> obj = new HttpResponseResult<T>();
+		obj.setStatus(status);
+		obj.setCode(statusCode);
+		obj.setData(data);
+		obj.setMsg(message);
+		return obj;
+	}
+
 	/**
 	 * 处理一般异常
 	 *
@@ -94,6 +102,14 @@ public class BaseController {
 			if(e.getMessage().equals("205")){
 				return failed(HttpStatus.RESET_CONTENT,e.getMessage());
 			}
+
+			// 自定义错误码
+			if (e instanceof BizException) {
+				BizException bizException = (BizException) e;
+				return getResponseData(false, bizException.getCode(), null, bizException.getMessage());
+			}
+
+			// 默认返回错误码
 			return failed(e.getMessage());
 		} else if (e instanceof AccessDeniedException) {
 			return failed("禁止访问");

+ 10 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/exception/BizException.java

@@ -4,6 +4,7 @@ import com.ym.mec.util.string.MessageFormatter;
 
 public class BizException extends RuntimeException {
 
+	private int code = 200;
 	/**
 	 * 
 	 */
@@ -17,6 +18,12 @@ public class BizException extends RuntimeException {
 		super(message);
 	}
 
+	public BizException(Integer code, String message) {
+		super(message);
+		// 统一错误码
+		this.code = code;
+	}
+
 	public BizException(Throwable cause) {
 		super(cause);
 	}
@@ -33,4 +40,7 @@ public class BizException extends RuntimeException {
 		super(MessageFormatter.arrayFormat(message, args), cause);
 	}
 
+	public int getCode() {
+		return code;
+	}
 }

+ 12 - 2
mec-web/src/main/java/com/ym/mec/web/controller/open/OpenSchoolController.java

@@ -61,14 +61,24 @@ public class OpenSchoolController extends BaseController {
             @ApiImplicitParam(name = "id", value = "合作单位ID", dataType = "long")
     })
     @GetMapping("/cooperation")
-    public HttpResponseResult<CooperationOrgan> queryCooperationById(@RequestParam Long id) {
+    public HttpResponseResult<SchoolStaffWrapper.SchoolCooperation> queryCooperationById(@RequestParam Long id) {
 
     	CooperationOrgan cooperationOrgan = cooperationOrganService.get(Optional.ofNullable(id).orElse(-1L).intValue());
         if (Objects.isNull(cooperationOrgan)) {
             throw new BizException("合作单位编号无效");
         }
 
-    	return succeed(cooperationOrgan);
+        // 学校员工身份统计
+        SchoolStaffWrapper.SchoolStaffStat staffStat = schoolStaffService.getUserTypeStatByCooperationId(cooperationOrgan.getId());
+
+        // 数据对象转换
+        SchoolStaffWrapper.SchoolCooperation schoolCooperation = SchoolStaffWrapper.SchoolCooperation
+                .builder()
+                .cooperation(cooperationOrgan)
+                .staffStat(staffStat)
+                .build();
+
+        return succeed(schoolCooperation);
     }
 
 }

+ 35 - 0
mec-web/src/main/java/com/ym/mec/web/controller/school/SchoolStaffController.java

@@ -163,4 +163,39 @@ public class SchoolStaffController extends BaseController {
 
         return succeed(user);
     }
+
+    @ApiOperation(value = "合作单位查询", notes = "学校合作单位查询")
+    @GetMapping("/cooperation")
+    public HttpResponseResult<SchoolStaffWrapper.SchoolCooperation> queryCooperation() {
+
+        // 查询用户信息
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (Objects.isNull(sysUser)) {
+            throw new BizException("请先登录");
+        }
+
+        // 查询学校员工信息
+        SchoolStaff schoolStaff = schoolStaffService.queryByUserId(Long.valueOf(sysUser.getId()));
+        if (Objects.isNull(schoolStaff)) {
+            throw new BizException("员工账号不存在");
+        }
+
+        CooperationOrgan cooperationOrgan = cooperationOrganService.get(schoolStaff.getSchoolId().intValue());
+        if (Objects.isNull(cooperationOrgan)) {
+            throw new BizException("合作单位编号无效");
+        }
+
+        // 学校员工身份统计
+        SchoolStaffWrapper.SchoolStaffStat staffStat = schoolStaffService.getUserTypeStatByCooperationId(cooperationOrgan.getId());
+
+        // 数据对象转换
+        SchoolStaffWrapper.SchoolCooperation schoolCooperation = SchoolStaffWrapper.SchoolCooperation
+                .builder()
+                .cooperation(cooperationOrgan)
+                .staffStat(staffStat)
+                .build();
+
+        return succeed(schoolCooperation);
+    }
+
 }