浏览代码

add 回访功能

周箭河 5 年之前
父节点
当前提交
471fceb44b

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupDao.java

@@ -252,4 +252,12 @@ public interface MusicGroupDao extends BaseDAO<String, MusicGroup> {
     List<MusicGroupRegisterDto> getMusicGroupRegisterOrder(@Param("musicGroupIds") List<String> musicGroupIds);
 
     List<MusicGroupRegisterDto> getMusicGroupRegisterTotalMoney(@Param("musicGroupIds") List<String> musicGroupIds);
+
+    /**
+     * 获取老师的乐团列表
+     *
+     * @param teacherId
+     * @return
+     */
+    List<MusicGroup> getTeacherMusicGroup(@Param("teacherId") Integer teacherId);
 }

+ 20 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentRegistrationDao.java

@@ -304,6 +304,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取乐团报名信息和学校信息
+     *
      * @param musicGroupId
      * @param userId
      * @return
@@ -312,6 +313,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取学员所在乐团
+     *
      * @param studentId
      * @return
      */
@@ -321,6 +323,7 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取乐团下所有学员身上的声部列表
+     *
      * @param musicGroupId
      * @return
      */
@@ -328,8 +331,25 @@ public interface StudentRegistrationDao extends BaseDAO<Long, StudentRegistratio
 
     /**
      * 获取学员详情页,包含所在乐团信息
+     *
      * @param studentId
      * @return
      */
     StudentMusicDetailDto getStudentDetail(Integer studentId);
+
+    /**
+     * 获取乐团的学生
+     *
+     * @param musicGroupId
+     * @return
+     */
+    List<StudentRegistration> getMusicGroupStu(@Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 获取老师对应乐团的学生
+     * @param musicGroupId
+     * @param teacherId
+     * @return
+     */
+    List<StudentRegistration> getMusicGroupStu4Teacher(@Param("musicGroupId") String musicGroupId, @Param("teacherId") Integer teacherId);
 }

+ 46 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentVisitDto.java

@@ -0,0 +1,46 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.StudentVisit;
+
+public class StudentVisitDto extends StudentVisit {
+
+    private String musicGroupName;
+
+    private String teacherName;
+
+    private String organName;
+
+    private String studentName;
+
+    public String getMusicGroupName() {
+        return musicGroupName;
+    }
+
+    public void setMusicGroupName(String musicGroupName) {
+        this.musicGroupName = musicGroupName;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getOrganName() {
+        return organName;
+    }
+
+    public void setOrganName(String organName) {
+        this.organName = organName;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+}

+ 118 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/StudentVisitQueryInfo.java

@@ -0,0 +1,118 @@
+package com.ym.mec.biz.dal.page;
+
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.common.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+public class StudentVisitQueryInfo extends QueryInfo {
+
+    @ApiModelProperty(value = "老师或老师id搜索", required = false)
+    private String teacher;
+
+    @ApiModelProperty(value = "学生姓名或id搜索", required = false)
+    private String student;
+
+    private Integer teacherId;
+
+    private Integer studentId;
+
+    @ApiModelProperty(value = "分部id", required = false)
+    private String organId;
+
+    @ApiModelProperty(value = "访问者角色(TEACHER EDU_TEACHER)", required = false)
+    private StudentVisit.VisiterTypeEnum visiterType;
+
+    @ApiModelProperty(value = "回访类型", required = false)
+    private String type;
+
+    @ApiModelProperty(value = "回访目的", required = false)
+    private String purpose;
+
+    @ApiModelProperty(value = "回访日期开始时间", required = false)
+    private Date startTime;
+
+    @ApiModelProperty(value = "回访日期结束时间", required = false)
+    private Date endTime;
+
+    public String getTeacher() {
+        return teacher;
+    }
+
+    public void setTeacher(String teacher) {
+        this.teacher = teacher;
+    }
+
+    public String getStudent() {
+        return student;
+    }
+
+    public void setStudent(String student) {
+        this.student = student;
+    }
+
+    public Integer getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Integer teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(String organId) {
+        this.organId = organId;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public StudentVisit.VisiterTypeEnum getVisiterType() {
+        return visiterType;
+    }
+
+    public void setVisiterType(StudentVisit.VisiterTypeEnum visiterType) {
+        this.visiterType = visiterType;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getPurpose() {
+        return purpose;
+    }
+
+    public void setPurpose(String purpose) {
+        this.purpose = purpose;
+    }
+}

+ 46 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentVisitService.java

@@ -0,0 +1,46 @@
+package com.ym.mec.biz.service;
+
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.BaseService;
+
+import java.util.List;
+
+public interface StudentVisitService extends BaseService<Integer, StudentVisit> {
+
+    /**
+     * 获取访问详情
+     *
+     * @param id
+     * @return
+     */
+    StudentVisitDto getInfo(Integer id);
+
+    /**
+     * 获取访问列表
+     *
+     * @param queryInfo
+     * @return
+     */
+    PageInfo<StudentVisitDto> getPageList(StudentVisitQueryInfo queryInfo);
+
+    /**
+     * 获取老师对应乐团的学生
+     *
+     * @param musicGroupId
+     * @param teacherId
+     * @return
+     */
+    List<StudentRegistration> getMusicGroupStu(String musicGroupId, Integer teacherId);
+
+    /**
+     * 获取老师的乐团
+     * @param teacherId
+     * @return
+     */
+    List<MusicGroup> getMusicGroup(Integer teacherId);
+}

+ 76 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentVisitServiceImpl.java

@@ -0,0 +1,76 @@
+package com.ym.mec.biz.service.impl;
+
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dao.StudentVisitDao;
+import com.ym.mec.biz.dal.dto.PageInfoDegree;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.entity.DegreeRegistration;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.biz.dal.page.DegreeQueryInfo;
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
+import com.ym.mec.biz.service.StudentVisitService;
+import com.ym.mec.common.dal.BaseDAO;
+import com.ym.mec.common.page.PageInfo;
+import com.ym.mec.common.service.impl.BaseServiceImpl;
+import com.ym.mec.util.collection.MapUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class StudentVisitServiceImpl extends BaseServiceImpl<Integer, StudentVisit> implements StudentVisitService {
+
+    @Autowired
+    private StudentVisitDao studentVisitDao;
+    @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+
+
+    @Override
+    public BaseDAO<Integer, StudentVisit> getDAO() {
+        return studentVisitDao;
+    }
+
+    @Override
+    public StudentVisitDto getInfo(Integer id) {
+        return studentVisitDao.getInfo(id);
+    }
+
+    @Override
+    public PageInfo<StudentVisitDto> getPageList(StudentVisitQueryInfo queryInfo) {
+        PageInfoDegree<StudentVisitDto> pageInfo = new PageInfoDegree<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        List<StudentVisitDto> dataList = new ArrayList<>();
+        int count = this.findCount(params);
+
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = studentVisitDao.getPageList(params);
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
+    public List<StudentRegistration> getMusicGroupStu(String musicGroupId, Integer teacherId) {
+        return studentRegistrationDao.getMusicGroupStu4Teacher(musicGroupId, teacherId);
+    }
+
+    @Override
+    public List<MusicGroup> getMusicGroup(Integer teacherId) {
+        return musicGroupDao.getTeacherMusicGroup(teacherId);
+    }
+}

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupMapper.xml

@@ -570,4 +570,10 @@
         AND type_ = 'APPLY'
         GROUP BY music_group_id_
     </select>
+
+    <select id="getTeacherMusicGroup" resultMap="MusicGroup">
+        SELECT mg.* FROM course_schedule cs
+        LEFT JOIN music_group mg ON mg.id_ = cs.music_group_id_
+        WHERE cs.actual_teacher_id_ = #{teacherId} AND cs.group_type_ = 'MUSIC' GROUP BY mg.id_
+    </select>
 </mapper>

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

@@ -495,7 +495,7 @@
         update_time_ = now()
         WHERE music_group_id_ = #{musicGroupId} AND payment_status_ = '0'
     </update>
-    
+
     <select id="queryStudentNum" resultType="map">
         SELECT count(distinct sr.user_id_) total_num_,sum(case when sr.create_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) new_num_,sum(case when sr.music_group_status_ = 'QUIT' and sr.update_time_ >= timestamp(date_add(curdate(), interval - day(curdate()) + 1 day)) then 1 else 0 end) quit_num_
         FROM student_registration sr left join music_group mg on sr.music_group_id_ = mg.id_
@@ -633,4 +633,17 @@
         LEFT JOIN sys_user su ON su.id_ = s.user_id_
         WHERE s.user_id_ = #{studentId}
     </select>
+
+    <select id="getMusicGroupStu" resultMap="StudentRegistration">
+        SELECT sr.user_id_,s.username_ name_,sr.music_group_status_ FROM student_registration sr
+        LEFT JOIN sys_user s on sr.user_id_ = s.id_
+        WHERE music_group_id_ = #{musicGroupId}
+    </select>
+
+    <select id="getMusicGroupStu4Teacher" resultMap="StudentRegistration">
+        SELECT s.id_ user_id_,s.username_ name_ FROM course_schedule cs
+        LEFT JOIN course_schedule_student_payment cssp ON cssp.course_schedule_id_ = cs.id_
+        LEFT JOIN sys_user s ON s.id_ = cssp.user_id_
+        WHERE cs.music_group_id_ = #{musicGroupId} AND cs.actual_teacher_id_ = #{teacherId} AND cs.group_type_ = 'MUSIC' GROUP BY s.id_
+    </select>
 </mapper>

+ 77 - 0
mec-teacher/src/main/java/com/ym/mec/teacher/controller/VisitController.java

@@ -0,0 +1,77 @@
+package com.ym.mec.teacher.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
+import com.ym.mec.biz.service.StudentVisitService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api(tags = "回访服务(老师)")
+@RequestMapping("visit")
+@RestController
+public class VisitController extends BaseController {
+
+    @Autowired
+    private StudentVisitService studentVisitService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "回访列表")
+    @GetMapping("/queryPage")
+    public HttpResponseResult<PageInfo<StudentVisitDto>> queryPage(StudentVisitQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        queryInfo.setTeacherId(sysUser.getId());
+        return succeed(studentVisitService.getPageList(queryInfo));
+    }
+
+    @ApiOperation(value = "添加回访")
+    @PostMapping(value = "/add")
+    public HttpResponseResult<StudentVisit> add(StudentVisit studentVisit) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        studentVisit.setTeacherId(sysUser.getId());
+        studentVisit.setVisiterType(StudentVisit.VisiterTypeEnum.TEACHER);
+        studentVisitService.insert(studentVisit);
+        return succeed(studentVisit);
+    }
+
+
+    @ApiOperation(value = "回访详情")
+    @GetMapping(value = "/getInfo")
+    public HttpResponseResult<StudentVisitDto> getInfo(Integer id) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        StudentVisitDto info = studentVisitService.getInfo(id);
+        if (!info.getTeacherId().equals(sysUser.getId())) {
+            failed("请勿非法访问");
+        }
+        return succeed(studentVisitService.getInfo(id));
+    }
+
+    @ApiOperation(value = "获取乐团列表")
+    @GetMapping(value = "/getMusicGroup")
+    public HttpResponseResult<List<MusicGroup>> getMusicGroup() {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        return succeed(studentVisitService.getMusicGroup(sysUser.getId()));
+    }
+
+    @ApiOperation(value = "获取乐团学生")
+    @GetMapping(value = "/getMusicGroupStu")
+    public HttpResponseResult<List<StudentRegistration>> getMusicGroupStu(String musicGroupId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        return succeed(studentVisitService.getMusicGroupStu(musicGroupId, sysUser.getId()));
+    }
+}

+ 81 - 0
mec-web/src/main/java/com/ym/mec/web/controller/VisitController.java

@@ -0,0 +1,81 @@
+package com.ym.mec.web.controller;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
+import com.ym.mec.biz.service.StudentVisitService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.List;
+
+@Api(tags = "回访服务")
+@RequestMapping("visit")
+@RestController
+public class VisitController extends BaseController {
+
+    @Autowired
+    private StudentVisitService studentVisitService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private EmployeeDao employeeDao;
+
+    @ApiOperation(value = "回访列表")
+    @GetMapping("/queryPage")
+    @PreAuthorize("@pcs.hasPermissions('visit/queryPage')")
+    public HttpResponseResult<PageInfo<StudentVisitDto>> queryPage(StudentVisitQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        if (!sysUser.getIsSuperAdmin()) {
+            Employee employee = employeeDao.get(sysUser.getId());
+            if (StringUtils.isEmpty(queryInfo.getOrganId())) {
+                queryInfo.setOrganId(employee.getOrganIdList());
+            } else if (StringUtils.isEmpty(employee.getOrganIdList())) {
+                return failed("用户所在分部异常");
+            } else {
+                List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
+                if (!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))) {
+                    return failed("非法请求");
+                }
+            }
+        }
+        return succeed(studentVisitService.getPageList(queryInfo));
+    }
+
+    @ApiOperation(value = "添加回访")
+    @PostMapping(value = "/add")
+    @PreAuthorize("@pcs.hasPermissions('visit/add')")
+    public HttpResponseResult<StudentVisit> add(StudentVisit studentVisit) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        studentVisit.setTeacherId(sysUser.getId());
+        studentVisit.setVisiterType(StudentVisit.VisiterTypeEnum.EDU_TEACHER);
+        studentVisitService.insert(studentVisit);
+        return succeed(studentVisit);
+    }
+
+
+    @ApiOperation(value = "回访详情")
+    @GetMapping(value = "/getInfo")
+    @PreAuthorize("@pcs.hasPermissions('visit/getInfo')")
+    public HttpResponseResult<StudentVisitDto> getInfo(Integer id) {
+        return succeed(studentVisitService.getInfo(id));
+    }
+}

+ 72 - 0
mec-web/src/main/java/com/ym/mec/web/controller/education/EduVisitController.java

@@ -0,0 +1,72 @@
+package com.ym.mec.web.controller.education;
+
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dto.StudentVisitDto;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.StudentVisit;
+import com.ym.mec.biz.dal.page.StudentVisitQueryInfo;
+import com.ym.mec.biz.service.StudentVisitService;
+import com.ym.mec.common.controller.BaseController;
+import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.page.PageInfo;
+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.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api(tags = "回访服务(教务)")
+@RequestMapping("eduVisit")
+@RestController
+public class EduVisitController extends BaseController {
+
+    @Autowired
+    private StudentVisitService studentVisitService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private StudentRegistrationDao studentRegistrationDao;
+
+    @ApiOperation(value = "回访列表")
+    @GetMapping("/queryPage")
+    public HttpResponseResult<PageInfo<StudentVisitDto>> queryPage(StudentVisitQueryInfo queryInfo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        queryInfo.setTeacherId(sysUser.getId());
+        return succeed(studentVisitService.getPageList(queryInfo));
+    }
+
+    @ApiOperation(value = "添加回访")
+    @PostMapping(value = "/add")
+    public HttpResponseResult<StudentVisit> add(StudentVisit studentVisit) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        studentVisit.setTeacherId(sysUser.getId());
+        studentVisit.setVisiterType(StudentVisit.VisiterTypeEnum.EDU_TEACHER);
+        studentVisitService.insert(studentVisit);
+        return succeed(studentVisit);
+    }
+
+
+    @ApiOperation(value = "回访详情")
+    @GetMapping(value = "/getInfo")
+    public HttpResponseResult<StudentVisitDto> getInfo(Integer id) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        StudentVisitDto info = studentVisitService.getInfo(id);
+        if (!info.getTeacherId().equals(sysUser.getId())) {
+            failed("请勿非法访问");
+        }
+        return succeed(studentVisitService.getInfo(id));
+    }
+
+    @ApiOperation(value = "获取乐团学生")
+    @GetMapping(value = "/getMusicGroupStu")
+    public HttpResponseResult<List<StudentRegistration>> getMusicGroupStu(String musicGroupId) {
+        return succeed(studentRegistrationDao.getMusicGroupStu(musicGroupId));
+    }
+}