zouxuan 5 år sedan
förälder
incheckning
411bb9d78e

+ 26 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherSalaryComplaintsDao.java

@@ -0,0 +1,26 @@
+package com.ym.mec.biz.dal.dao;
+
+import com.ym.mec.biz.dal.entity.TeacherSalaryComplaints;
+import com.ym.mec.biz.dal.enums.TeacherSalaryComplaintsStatusEnum;
+import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+public interface TeacherSalaryComplaintsDao extends BaseDAO<Long, TeacherSalaryComplaints> {
+
+    /**
+     * 获取课酬申述
+     * @param settlementMonth
+     * @param teacherId
+     * @param statusEnum
+     * @return
+     */
+    TeacherSalaryComplaints findByMonthAndTeacherId(@Param("settlementMonth") String settlementMonth, @Param("teacherId") Integer teacherId, @Param("statusEnum") TeacherSalaryComplaintsStatusEnum statusEnum);
+
+    /**
+     * 撤销申述
+     * @param salarySettlementMonth
+     * @param teacherId
+     * @return
+     */
+    Object repealComplaints(@Param("salarySettlementMonth") String salarySettlementMonth, @Param("teacherId") Integer teacherId);
+}

+ 128 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/TeacherSalaryComplaints.java

@@ -0,0 +1,128 @@
+package com.ym.mec.biz.dal.entity;
+
+import com.ym.mec.biz.dal.enums.TeacherSalaryComplaintsStatusEnum;
+
+import java.util.Date;
+
+public class TeacherSalaryComplaints {
+
+    private Long id;
+
+    private Integer teacherId;
+
+    private String salarySettlementMonth;
+
+    private String reason;
+
+    private TeacherSalaryComplaintsStatusEnum statusEnum;
+
+    private Integer operatorId;
+
+    private String handingSuggestion;
+
+    private String organName;
+
+    private String realName;
+
+    private String operatorRealName;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getRealName() {
+        return realName;
+    }
+
+    public void setRealName(String realName) {
+        this.realName = realName;
+    }
+
+    public String getOperatorRealName() {
+        return operatorRealName;
+    }
+
+    public void setOperatorRealName(String operatorRealName) {
+        this.operatorRealName = operatorRealName;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getSalarySettlementMonth() {
+        return salarySettlementMonth;
+    }
+
+    public void setSalarySettlementMonth(String salarySettlementMonth) {
+        this.salarySettlementMonth = salarySettlementMonth;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public TeacherSalaryComplaintsStatusEnum getStatusEnum() {
+        return statusEnum;
+    }
+
+    public void setStatusEnum(TeacherSalaryComplaintsStatusEnum statusEnum) {
+        this.statusEnum = statusEnum;
+    }
+
+    public Integer getOperatorId() {
+        return operatorId;
+    }
+
+    public void setOperatorId(Integer operatorId) {
+        this.operatorId = operatorId;
+    }
+
+    public String getHandingSuggestion() {
+        return handingSuggestion;
+    }
+
+    public void setHandingSuggestion(String handingSuggestion) {
+        this.handingSuggestion = handingSuggestion;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+}

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/MessageTypeEnum.java

@@ -87,6 +87,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
     TEACHER_PUSH_COURSE_SCHEDULE_CHANGE_RESULT("TEACHER_PUSH_COURSE_SCHEDULE_CHANGE_RESULT", "课时调整结果"),
     TEACHER_PUSH_STUDENT_LEAVE("TEACHER_PUSH_STUDENT_LEAVE", "学员请假"),
     TEACHER_PUSH_CLASS_MESSAGE("TEACHER_PUSH_CLASS_MESSAGE", "班级消息"),
+    COURSE_SALARY_COMPLAINTS_RESULT("COURSE_SALARY_COMPLAINTS_RESULT", "课酬申述结果"),
 
     EDUCATION_PUSH_MUSIC_GROUP_FOUND("EDUCATION_PUSH_MUSIC_GROUP_FOUND", "乐团成立"),
     EDUCATION_PUSH_MUSIC_GROUP_CLOSE("EDUCATION_PUSH_MUSIC_GROUP_CLOSE", "乐团关闭"),

+ 37 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/TeacherSalaryComplaintsStatusEnum.java

@@ -0,0 +1,37 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum TeacherSalaryComplaintsStatusEnum implements BaseEnum<String, TeacherSalaryComplaintsStatusEnum> {
+	PENDING("PENDING", "待处理"),
+	Done("DONE", "已完成"),
+	AGREED("AGREED", "已同意"),
+	DENIED("DENIED", "已拒绝"),
+	WITHDRAWN("WITHDRAWN", "已撤回");
+
+	private String code;
+
+	private String msg;
+
+	TeacherSalaryComplaintsStatusEnum(String code, String msg) {
+		this.code = code;
+		this.msg = msg;
+	}
+
+	public void setCode(String code) {
+		this.code = code;
+	}
+
+	public String getMsg() {
+		return msg;
+	}
+
+	public void setMsg(String msg) {
+		this.msg = msg;
+	}
+
+	@Override
+	public String getCode() {
+		return this.code;
+	}
+}

+ 46 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/TeacherSalaryModifyQueryInfo.java

@@ -0,0 +1,46 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.biz.dal.enums.TeacherSalaryComplaintsStatusEnum;
+import com.ym.mec.common.page.QueryInfo;
+
+public class TeacherSalaryModifyQueryInfo extends QueryInfo {
+    private String salarySettlementMonth;
+
+    private Integer organId;
+
+    private Integer teacherId;
+
+    private TeacherSalaryComplaintsStatusEnum statusEnum;
+
+    public String getSalarySettlementMonth() {
+        return salarySettlementMonth;
+    }
+
+    public void setSalarySettlementMonth(String salarySettlementMonth) {
+        this.salarySettlementMonth = salarySettlementMonth;
+    }
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public TeacherSalaryComplaintsStatusEnum getStatusEnum() {
+        return statusEnum;
+    }
+
+    public void setStatusEnum(TeacherSalaryComplaintsStatusEnum statusEnum) {
+        this.statusEnum = statusEnum;
+    }
+}

+ 34 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/TeacherSalaryComplaintsService.java

@@ -0,0 +1,34 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.entity.TeacherSalaryComplaints;
+import com.ym.mec.common.service.BaseService;
+
+public interface TeacherSalaryComplaintsService extends BaseService<Long, TeacherSalaryComplaints> {
+
+	/**
+	 * 课酬申述处理
+	 * @param complaints
+	 */
+	void complaintsDispose(TeacherSalaryComplaints complaints);
+
+	/**
+	 * 课酬申述
+	 * @param complaints
+	 * @return
+	 */
+	Object add(TeacherSalaryComplaints complaints);
+
+	/**
+	 * 获取未处理申述
+	 * @param salarySettlementMonth
+	 * @return
+	 */
+	Object findByMonth(String salarySettlementMonth);
+
+	/**
+	 * 撤销申述
+	 * @param salarySettlementMonth
+	 * @return
+	 */
+	Object repealComplaints(String salarySettlementMonth);
+}

+ 94 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TeacherSalaryComplaintsServiceImpl.java

@@ -0,0 +1,94 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.TeacherSalaryComplaintsDao;
+import com.ym.mec.biz.dal.entity.TeacherSalaryComplaints;
+import com.ym.mec.biz.dal.enums.TeacherSalaryComplaintsStatusEnum;
+import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.TeacherSalaryComplaintsService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.exception.BizException;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+
+import static com.ym.mec.biz.dal.enums.TeacherSalaryComplaintsStatusEnum.PENDING;
+
+@Service
+public class TeacherSalaryComplaintsServiceImpl extends BaseServiceImpl<Long, TeacherSalaryComplaints> implements TeacherSalaryComplaintsService {
+
+	@Autowired
+	private TeacherSalaryComplaintsDao teacherSalaryComplaintsDao;
+	@Autowired
+	private SysUserFeignService sysUserFeignService;
+	@Autowired
+	private SysMessageService sysMessageService;
+
+	@Override
+	public BaseDAO<Long, TeacherSalaryComplaints> getDAO() {
+		return teacherSalaryComplaintsDao;
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void complaintsDispose(TeacherSalaryComplaints complaints) {
+		TeacherSalaryComplaints salaryComplaints = teacherSalaryComplaintsDao.get(complaints.getId());
+		if(salaryComplaints == null){
+			throw new BizException("投诉信息不存在");
+		}
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			throw new BizException("用户信息获取失败");
+		}
+		if(salaryComplaints.getStatusEnum() == TeacherSalaryComplaintsStatusEnum.WITHDRAWN){
+			throw new BizException("投诉信息已撤销");
+		}
+		if(salaryComplaints.getStatusEnum() != PENDING){
+			throw new BizException("投诉信息已处理");
+		}
+		salaryComplaints.setUpdateTime(new Date());
+		salaryComplaints.setStatusEnum(complaints.getStatusEnum());
+		salaryComplaints.setHandingSuggestion(complaints.getHandingSuggestion());
+		salaryComplaints.setOperatorId(sysUser.getId());
+		teacherSalaryComplaintsDao.update(salaryComplaints);
+//		sysMessageService.batchSendMessage();
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public synchronized Object add(TeacherSalaryComplaints complaints) {
+		String settlementMonth = complaints.getSalarySettlementMonth();
+		Integer teacherId = complaints.getTeacherId();
+		if(StringUtils.isEmpty(settlementMonth) || teacherId == null){
+			throw new BizException("数据提交失败");
+		}
+		TeacherSalaryComplaints salaryComplaints = teacherSalaryComplaintsDao.findByMonthAndTeacherId(settlementMonth,teacherId,PENDING);
+		if(salaryComplaints != null){
+			throw new BizException("申述已提交");
+		}
+		return teacherSalaryComplaintsDao.insert(complaints);
+	}
+
+	@Override
+	public Object findByMonth(String salarySettlementMonth) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			throw new BizException("用户信息获取失败");
+		}
+		return teacherSalaryComplaintsDao.findByMonthAndTeacherId(salarySettlementMonth,sysUser.getId(),PENDING);
+	}
+
+	@Override
+	public Object repealComplaints(String salarySettlementMonth) {
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if (sysUser == null) {
+			throw new BizException("用户信息获取失败");
+		}
+		return teacherSalaryComplaintsDao.repealComplaints(salarySettlementMonth,sysUser.getId());
+	}
+}

+ 124 - 0
mec-biz/src/main/resources/config/mybatis/TeacherSalaryComplaintsMapper.xml

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!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.dao.TeacherSalaryComplaintsDao">
+
+	<resultMap type="com.ym.mec.biz.dal.entity.TeacherSalaryComplaints" id="TeacherSalaryComplaints">
+		<result column="id_" property="id" />
+		<result column="teacher_id_" property="teacherId" />
+		<result column="salary_settlement_month_" property="salarySettlementMonth" />
+		<result column="reason_" property="reason" />
+		<result column="status_" property="statusEnum" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler" />
+		<result column="operator_id_" property="operatorId"/>
+		<result column="handing_suggestion_" property="handingSuggestion" />
+		<result column="organ_name_" property="organName" />
+		<result column="real_name_" property="realName" />
+		<result column="operator_real_name_" property="operatorRealName" />
+		<result column="handing_suggestion_" property="handingSuggestion" />
+		<result column="create_time_" property="createTime" />
+		<result column="update_time_" property="updateTime" />
+	</resultMap>
+	<!-- 向数据库增加一条记录 -->
+	<insert id="insert" parameterType="com.ym.mec.biz.dal.entity.TeacherSalaryComplaints"
+			useGeneratedKeys="true" keyColumn="id" keyProperty="id">
+		INSERT INTO teacher_salary_complaints
+		(teacher_id_,salary_settlement_month_,reason_,status_,operator_id_,handing_suggestion_,create_time_,update_time_)
+		VALUES(#{teacherId},#{salarySettlementMonth},#{reason},#{statusEnum, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+		#{operatorId},#{handingSuggestion},NOW(),NOW())
+	</insert>
+
+	<!-- 根据主键查询一条记录 -->
+	<update id="update" parameterType="com.ym.mec.biz.dal.entity.TeacherSalaryComplaints">
+		UPDATE teacher_salary_complaints
+		<set>
+			<if test="statusEnum != null">
+				status_ = #{statusEnum, typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+			</if>
+			<if test="teacherId != null">
+				teacher_id_ = #{teacherId},
+			</if>
+			<if test="salarySettlementMonth != null">
+				salary_settlement_month_ = #{salarySettlementMonth},
+			</if>
+			<if test="reason != null">
+				reason_ = #{reason},
+			</if>
+			<if test="operatorId != null">
+				operator_id_ = #{operatorId},
+			</if>
+			<if test="handingSuggestion != null">
+				handing_suggestion_ = #{handingSuggestion},
+			</if>
+			<if test="updateTime != null">
+				update_time_ = NOW()
+			</if>
+		</set>
+		WHERE id_ = #{id}
+	</update>
+	<update id="repealComplaints">
+		UPDATE teacher_salary_complaints tsc SET tsc.status_ = 'WITHDRAWN'
+		WHERE tsc.teacher_id_ = #{teacherId} AND tsc.salary_settlement_month_ = #{salarySettlementMonth}
+		AND tsc.status_ = 'PENDING'
+	</update>
+
+	<!-- 根据主键查询一条记录 -->
+	<select id="get" resultMap="TeacherSalaryComplaints">
+		SELECT * FROM teacher_salary_complaints WHERE id_ = #{id}
+	</select>
+
+	<!-- 全查询 -->
+	<select id="findAll" resultMap="TeacherSalaryComplaints">
+		SELECT * FROM
+		teacher_salary_complaints ORDER BY id_
+	</select>
+
+	<!-- 根据主键删除一条记录 -->
+	<delete id="delete">
+		DELETE FROM teacher_salary_complaints WHERE id_ =
+		#{id}
+	</delete>
+
+	<!-- 分页查询 -->
+	<select id="queryPage" resultMap="TeacherSalaryComplaints" parameterType="map">
+		SELECT o.name_ organ_name_,su.real_name_,suo.real_name_ operator_real_name_,tsc.*
+		FROM teacher_salary_complaints tsc
+		LEFT JOIN teacher t ON t.id_ = tsc.teacher_id_
+		LEFT JOIN sys_user su ON su.id_ = t.id_
+		LEFT JOIN sys_user suo ON suo.id_ = tsc.operator_id_
+		LEFT JOIN organization o ON o.id_ = t.organ_id_
+		<include refid="queryPageSql"/>
+		ORDER BY tsc.create_time_ DESC
+		<include refid="global.limit" />
+	</select>
+
+	<sql id="queryPageSql">
+		<where>
+			<if test="organId != null">
+				t.organ_id_ = #{organId}
+			</if>
+			<if test="salarySettlementMonth != null">
+				AND tsc.salary_settlement_month_ &lt;= #{salarySettlementMonth}
+			</if>
+			<if test="teacherId != null">
+				AND tsc.teacher_id_ = #{teacherId}
+			</if>
+			<if test="statusEnum != null">
+				AND tsc.status_ = #{statusEnum,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+			</if>
+		</where>
+	</sql>
+
+	<!-- 查询当前表的总记录数 -->
+	<select id="queryCount" resultType="int">
+		SELECT COUNT(tsc.id_)
+		FROM teacher_salary_complaints tsc
+		LEFT JOIN teacher t ON t.id_ = tsc.teacher_id_
+		<include refid="queryPageSql"/>
+	</select>
+	<select id="findByMonthAndTeacherId" resultMap="TeacherSalaryComplaints">
+		SELECT * FROM teacher_salary_complaints tsc
+		WHERE tsc.teacher_id_ = #{teacherId} AND tsc.salary_settlement_month_ = #{settlementMonth}
+		AND tsc.status_ = #{statusEnum,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler} LIMIT 1
+	</select>
+
+</mapper>

+ 45 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherSalaryComplaintsController.java

@@ -0,0 +1,45 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.biz.dal.entity.TeacherSalaryComplaints;
+import com.ym.mec.biz.dal.page.TeacherSalaryModifyQueryInfo;
+import com.ym.mec.biz.service.TeacherSalaryComplaintsService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("teacherSalaryComplaints")
+@Api(tags = "老师课酬申诉")
+@RestController
+public class TeacherSalaryComplaintsController extends BaseController {
+
+    @Autowired
+    private TeacherSalaryComplaintsService teacherSalaryComplaintsService;
+
+    @ApiOperation(value = "课酬申述")
+    @RequestMapping("/add")
+    public Object add(TeacherSalaryComplaints complaints){
+        return succeed(teacherSalaryComplaintsService.add(complaints));
+    }
+
+    @ApiOperation(value = "获取当月未处理申述")
+    @RequestMapping("/findByMonth")
+    public Object findByMonth(String salarySettlementMonth){
+        return succeed(teacherSalaryComplaintsService.findByMonth(salarySettlementMonth));
+    }
+
+    @ApiOperation(value = "获取申述")
+    @RequestMapping("/get")
+    public Object get(Long id){
+        return succeed(teacherSalaryComplaintsService.get(id));
+    }
+
+    @ApiOperation(value = "撤销当月未处理申述")
+    @RequestMapping("/repealComplaints")
+    public Object repealComplaints(String salarySettlementMonth){
+        return succeed(teacherSalaryComplaintsService.repealComplaints(salarySettlementMonth));
+    }
+}

+ 47 - 0
mec-web/src/main/java/com/ym/mec/web/controller/TeacherSalaryComplaintsController.java

@@ -0,0 +1,47 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.biz.dal.entity.TeacherSalaryComplaints;
+import com.ym.mec.biz.dal.entity.TeacherSalaryModifyLog;
+import com.ym.mec.biz.dal.page.TeacherSalaryModifyQueryInfo;
+import com.ym.mec.biz.service.TeacherSalaryComplaintsService;
+import com.ym.mec.biz.service.TeacherSalaryModifyLogService;
+import com.ym.mec.common.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+
+@RequestMapping("teacherSalaryComplaints")
+@Api(tags = "老师课酬申诉")
+@RestController
+public class TeacherSalaryComplaintsController extends BaseController {
+
+    @Autowired
+    private TeacherSalaryComplaintsService teacherSalaryComplaintsService;
+
+    @ApiOperation(value = "终极班级信息分页获取")
+    @RequestMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('teacherSalaryComplaints/queryPage')")
+    public Object queryPage(TeacherSalaryModifyQueryInfo queryInfo){
+        return succeed(teacherSalaryComplaintsService.queryPage(queryInfo));
+    }
+
+    @ApiOperation(value = "终极班级信息获取")
+    @RequestMapping("/get")
+    @PreAuthorize("@pcs.hasPermissions('teacherSalaryComplaints/get')")
+    public Object get(Long id){
+        return succeed(teacherSalaryComplaintsService.get(id));
+    }
+
+    @ApiOperation(value = "投诉处理")
+    @RequestMapping("/complaintsDispose")
+    @PreAuthorize("@pcs.hasPermissions('teacherSalaryComplaints/complaintsDispose')")
+    public Object complaintsDispose(TeacherSalaryComplaints complaints){
+        teacherSalaryComplaintsService.complaintsDispose(complaints);
+        return succeed();
+    }
+}