فهرست منبع

Merge branch 'feature/0427-school' into master_saas

shangke 2 سال پیش
والد
کامیت
8f4f45ca7d

+ 12 - 189
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/MusicGroupQuit.java

@@ -1,9 +1,12 @@
 package com.ym.mec.biz.dal.entity;
 
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.enums.school.EQuitGroupAuditStatusEnum;
 import com.ym.mec.common.entity.BaseEntity;
 import com.ym.mec.common.enums.BaseEnum;
+import com.ym.mec.common.tenant.TenantContextHolder;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import java.math.BigDecimal;
@@ -12,7 +15,8 @@ import java.util.Date;
 /**
  * 对应数据库表(music_group_quit):
  */
-public class MusicGroupQuit extends BaseEntity {
+@Data
+public class MusicGroupQuit {
 
 	/**  */
 	private Long id;
@@ -69,6 +73,12 @@ public class MusicGroupQuit extends BaseEntity {
 	@ApiModelProperty(value = "云教练金额",required = false)
 	private BigDecimal cloudTeacherAmount = BigDecimal.ZERO;
 
+	@ApiModelProperty(value = "学校审核人",required = false)
+	private Integer auditSchoolStaff;
+
+	@ApiModelProperty(value = "学校审核状态",required = false)
+	private EQuitGroupAuditStatusEnum schoolStaffAuditStatus;
+
 	//毕业、不感兴趣、时间冲突、身体不适、其他(必选)
 	public enum ReasonEnum implements BaseEnum<String, MusicGroupQuit.ReasonEnum> {
 		GRADUATE("GRADUATE", "毕业"),
@@ -96,192 +106,5 @@ public class MusicGroupQuit extends BaseEntity {
 		}
 	}
 
-	public Integer getOperatorId() {
-		return operatorId;
-	}
-
-	public void setOperatorId(Integer operatorId) {
-		this.operatorId = operatorId;
-	}
-
-	public ReasonEnum getReasonEnum() {
-		return reasonEnum;
-	}
-
-	public void setReasonEnum(ReasonEnum reasonEnum) {
-		this.reasonEnum = reasonEnum;
-	}
-
-	public String getApplyUserName() {
-		return applyUserName;
-	}
-
-	public void setApplyUserName(String applyUserName) {
-		this.applyUserName = applyUserName;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public Long getId() {
-		return this.id;
-	}
-
-	public void setUserId(Integer userId) {
-		this.userId = userId;
-	}
-
-	public Integer getUserId() {
-		return this.userId;
-	}
-
-	public void setMusicGroupId(String musicGroupId) {
-		this.musicGroupId = musicGroupId;
-	}
-
-	public String getMusicGroupId() {
-		return this.musicGroupId;
-	}
-
-	public void setJoinDate(java.util.Date joinDate) {
-		this.joinDate = joinDate;
-	}
-
-	public java.util.Date getJoinDate() {
-		return this.joinDate;
-	}
-
-	public void setQuitDate(java.util.Date quitDate) {
-		this.quitDate = quitDate;
-	}
-
-	public java.util.Date getQuitDate() {
-		return this.quitDate;
-	}
-
-	public void setCreateTime(java.util.Date createTime) {
-		this.createTime = createTime;
-	}
-
-	public java.util.Date getCreateTime() {
-		return this.createTime;
-	}
-
-	public void setReason(String reason) {
-		this.reason = reason;
-	}
-
-	public String getReason() {
-		return this.reason;
-	}
-
-	public String getUserComment() {
-		return userComment;
-	}
-
-	public void setUserComment(String userComment) {
-		this.userComment = userComment;
-	}
-
-	public ApprovalStatus getStatus() {
-		return status;
-	}
-
-	public void setStatus(ApprovalStatus status) {
-		this.status = status;
-	}
-
-	public SysUser getUser() {
-		return user;
-	}
-
-	public void setUser(SysUser user) {
-		this.user = user;
-	}
-
-	public MusicGroup getMusicGroup() {
-		return musicGroup;
-	}
-
-	public void setMusicGroup(MusicGroup musicGroup) {
-		this.musicGroup = musicGroup;
-	}
-
-	public Integer getApplyUserId() {
-		return applyUserId;
-	}
-
-	public void setApplyUserId(Integer applyUserId) {
-		this.applyUserId = applyUserId;
-	}
-
-	public Boolean getIsVisit() {
-		return isVisit;
-	}
-
-	public void setIsVisit(Boolean isVisit) {
-		this.isVisit = isVisit;
-	}
-
-	public Date getVisitTime() {
-		return visitTime;
-	}
-
-	public void setVisitTime(Date visitTime) {
-		this.visitTime = visitTime;
-	}
-
-	public String getFeeJson() {
-		return feeJson;
-	}
-
-	public void setFeeJson(String feeJson) {
-		this.feeJson = feeJson;
-	}
-
-	public String getCurrentApproveRole() {
-		return currentApproveRole;
-	}
-
-	public void setCurrentApproveRole(String currentApproveRole) {
-		this.currentApproveRole = currentApproveRole;
-	}
-
-	@Override
-	public String toString() {
-		return ToStringBuilder.reflectionToString(this);
-	}
-
-	public Boolean getHasMaintenance() {
-		return hasMaintenance;
-	}
-
-	public void setHasMaintenance(Boolean hasMaintenance) {
-		this.hasMaintenance = hasMaintenance;
-	}
-
-	public BigDecimal getCloudTeacherAmount() {
-		return cloudTeacherAmount;
-	}
-
-	public void setCloudTeacherAmount(BigDecimal cloudTeacherAmount) {
-		this.cloudTeacherAmount = cloudTeacherAmount;
-	}
-
-	public MusicGroupReturnFeeDto getReturnFeeDto() {
-		return returnFeeDto;
-	}
-
-	public void setReturnFeeDto(MusicGroupReturnFeeDto returnFeeDto) {
-		this.returnFeeDto = returnFeeDto;
-	}
-
-	public BigDecimal getReturnTotalFee() {
-		return returnTotalFee;
-	}
-
-	public void setReturnTotalFee(BigDecimal returnTotalFee) {
-		this.returnTotalFee = returnTotalFee;
-	}
+	private Integer tenantId = TenantContextHolder.getTenantId();
 }

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/school/EQuitGroupAuditStatusEnum.java

@@ -0,0 +1,34 @@
+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.commons.lang3.StringUtils;
+
+import java.util.List;
+
+@Getter
+public enum EQuitGroupAuditStatusEnum implements BaseEnum<String, EQuitGroupAuditStatusEnum> {
+
+	ING("待审核"),
+	PASS("审核通过"),
+	REJECT("拒绝"),
+	;
+
+	private final String describe;
+
+	@EnumValue
+	private final String code;
+
+	EQuitGroupAuditStatusEnum(String describe) {
+		this.describe = describe;
+
+		this.code = this.name();
+	}
+
+	@Override
+	public String getCode() {
+		return this.name();
+	}
+}

+ 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);
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/school/dto/ClassesForDayDto.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.school.dto;
 
 import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.TeachModeEnum;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -50,4 +51,7 @@ public class ClassesForDayDto {
 
     @ApiModelProperty(value = "退学人数",required = false)
     private Integer attendanceDropNum;
+
+    @ApiModelProperty(value = "教学模式",required = false)
+    private TeachModeEnum teachMode;
 }

+ 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();
+    }
+
 }

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

@@ -4260,7 +4260,7 @@
     </select>
     <select id="getListClassesForDay" resultType="com.ym.mec.biz.dal.school.dto.ClassesForDayDto">
         select cs.id_ courseId,CONCAT(cs.class_date_,' ',cs.start_class_time_,'~',cs.end_class_time_) classDate,cs.status_ courseStatus,cs.name_ courseName,
-        actual_teacher_id_ teacherId,cs.music_group_id_ musicGroupId
+        actual_teacher_id_ teacherId,cs.music_group_id_ musicGroupId,cs.teach_mode_ teachMode
         from course_schedule cs
         where cs.group_type_ = 'MUSIC' AND cs.is_lock_ = 0 AND cs.del_flag_ = 0 AND cs.pre_course_flag_ = 0 AND cs.new_course_id_ IS NULL
         <if test="classDate != null and classDate != ''">

+ 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_ = #{schoolId} 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);
+    }
+
 }