StudentManageController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. package com.ym.mec.web.controller;
  2. import io.swagger.annotations.Api;
  3. import io.swagger.annotations.ApiImplicitParam;
  4. import io.swagger.annotations.ApiImplicitParams;
  5. import io.swagger.annotations.ApiOperation;
  6. import io.swagger.annotations.ApiParam;
  7. import java.util.ArrayList;
  8. import java.util.Arrays;
  9. import java.util.List;
  10. import java.util.Map;
  11. import org.apache.commons.lang3.StringUtils;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.security.access.prepost.PreAuthorize;
  16. import org.springframework.web.bind.annotation.GetMapping;
  17. import org.springframework.web.bind.annotation.PostMapping;
  18. import org.springframework.web.bind.annotation.RequestMapping;
  19. import org.springframework.web.bind.annotation.RestController;
  20. import com.ym.mec.auth.api.client.SysUserFeignService;
  21. import com.ym.mec.auth.api.entity.SysUser;
  22. import com.ym.mec.biz.dal.dao.EmployeeDao;
  23. import com.ym.mec.biz.dal.dto.UpdateStudentFeeDto;
  24. import com.ym.mec.biz.dal.entity.Employee;
  25. import com.ym.mec.biz.dal.entity.Student;
  26. import com.ym.mec.biz.dal.page.MusicGroupStudentQueryInfo;
  27. import com.ym.mec.biz.dal.page.StudentManageAttendanceQueryInfo;
  28. import com.ym.mec.biz.dal.page.StudentManageCourseQueryInfo;
  29. import com.ym.mec.biz.dal.page.StudentManageQueryInfo;
  30. import com.ym.mec.biz.dal.page.StudentManageVipClassQueryInfo;
  31. import com.ym.mec.biz.dal.page.StudentOperatingQueryInfo;
  32. import com.ym.mec.biz.dal.page.StudentSignQueryInfo;
  33. import com.ym.mec.biz.dal.page.TeacherPaymentRecordInfo;
  34. import com.ym.mec.biz.service.MusicGroupStudentFeeService;
  35. import com.ym.mec.biz.service.StudentCourseHomeworkService;
  36. import com.ym.mec.biz.service.StudentManageService;
  37. import com.ym.mec.biz.service.StudentRegistrationService;
  38. import com.ym.mec.biz.service.StudentService;
  39. import com.ym.mec.common.controller.BaseController;
  40. import com.ym.mec.common.entity.HttpResponseResult;
  41. import com.ym.mec.common.exception.BizException;
  42. import com.ym.mec.common.page.QueryInfo;
  43. @Api(tags = "学生管理")
  44. @RestController
  45. @RequestMapping("studentManage")
  46. public class StudentManageController extends BaseController {
  47. @Autowired
  48. private StudentManageService studentManageService;
  49. @Autowired
  50. private SysUserFeignService sysUserFeignService;
  51. @Autowired
  52. private StudentRegistrationService studentRegistrationService;
  53. @Autowired
  54. private MusicGroupStudentFeeService musicGroupStudentFeeService;
  55. @Autowired
  56. private StudentCourseHomeworkService studentCourseHomeworkService;
  57. @Autowired
  58. private EmployeeDao employeeDao;
  59. @Autowired
  60. private StudentService studentService;
  61. private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
  62. @ApiOperation(value = "获取学生列表")
  63. @GetMapping("/queryStudentList")
  64. @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentList')")
  65. public Object queryStudentList(StudentManageQueryInfo queryInfo){
  66. SysUser sysUser = sysUserFeignService.queryUserInfo();
  67. if (sysUser == null) {
  68. return failed("用户信息获取失败");
  69. }
  70. Employee employee = employeeDao.get(sysUser.getId());
  71. if (StringUtils.isEmpty(queryInfo.getOrganId())) {
  72. queryInfo.setOrganId(employee.getOrganIdList());
  73. }else if(StringUtils.isEmpty(employee.getOrganIdList())){
  74. return failed("用户所在分部异常");
  75. }else {
  76. List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
  77. if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
  78. return failed("非法请求");
  79. }
  80. }
  81. queryInfo.setIsExport(false);
  82. return succeed(studentManageService.findStudentsByOrganId(queryInfo));
  83. }
  84. @ApiOperation(value = "获取指定分部学生列表")
  85. @GetMapping("/queryOrganStudentList")
  86. @PreAuthorize("@pcs.hasPermissions('studentManage/queryOrganStudentList')")
  87. public Object queryOrganStudentList(StudentManageQueryInfo queryInfo){
  88. if(StringUtils.isBlank(queryInfo.getOrganId())){
  89. return failed("请指定分部");
  90. }
  91. queryInfo.setIsExport(false);
  92. return succeed(studentManageService.findStudentsByOrganId(queryInfo));
  93. }
  94. @ApiOperation(value = "学员注册")
  95. @PostMapping("/register")
  96. @PreAuthorize("@pcs.hasPermissions('studentManage/register')")
  97. public Object studentRegister(Student student){
  98. return succeed(studentManageService.studentRegister(student));
  99. }
  100. @ApiOperation(value = "修改学员信息")
  101. @PostMapping("/studentUpdate")
  102. @PreAuthorize("@pcs.hasPermissions('studentManage/studentUpdate')")
  103. public Object studentUpdate(Student student){
  104. return succeed(studentManageService.studentUpdate(student));
  105. }
  106. @ApiOperation(value = "乐团管理--乐团详情--获取学员列表")
  107. @GetMapping("/queryMusicGroupStudent")
  108. @PreAuthorize("@pcs.hasPermissions('studentManage/queryMusicGroupStudent')")
  109. public Object queryMusicGroupStudent(MusicGroupStudentQueryInfo queryInfo){
  110. return succeed(studentManageService.queryMusicGroupStudent(queryInfo));
  111. }
  112. @ApiOperation(value = "乐团管理--乐团详情--学员列表--获取学员可排课时长")
  113. @GetMapping("/queryStudentSubTotalCourseTimes")
  114. @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentSubTotalCourseTimes')")
  115. public Object queryStudentSubTotalCourseTimes(String musicGroupId){
  116. return succeed(studentManageService.queryStudentSubTotalCourseTimes(musicGroupId));
  117. }
  118. @ApiOperation(value = "乐团修改--学员缴费记录--可新增学员列表")
  119. @GetMapping("/queryCanAddStudent")
  120. @PreAuthorize("@pcs.hasPermissions('studentManage/queryCanAddStudent')")
  121. public Object queryCanAddStudent(String musicGroupId,String batchNo,String search,Integer subjectId){
  122. return succeed(studentManageService.queryCanAddStudent(musicGroupId,batchNo,search,subjectId));
  123. }
  124. @ApiOperation(value = "乐团管理--乐团详情--学员列表--查看班级")
  125. @GetMapping("/queryStudentClassGroup")
  126. @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentClassGroup')")
  127. @ApiImplicitParams({@ApiImplicitParam(name = "teacherId", value = "学生编号", required = true, dataType = "Integer"),
  128. @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
  129. public Object queryStudentClassGroup(String musicGroupId,Integer teacherId){
  130. if(StringUtils.isEmpty(musicGroupId) || teacherId == null){
  131. return failed("参数校验失败");
  132. }
  133. return succeed(studentManageService.queryStudentClassGroup(musicGroupId,teacherId));
  134. }
  135. @ApiOperation(value = "乐团管理--乐团详情--学员列表,汇总数据接口")
  136. @GetMapping("/musicGroupStudentsSum")
  137. @PreAuthorize("@pcs.hasPermissions('studentManage/musicGroupStudentsSum')")
  138. public Object musicGroupStudentsSum(String musicGroupId){
  139. return succeed(studentManageService.musicGroupStudentsSum(musicGroupId));
  140. }
  141. @ApiOperation(value = "乐团管理--乐团详情--点名总览")
  142. @GetMapping("/queryMusicGroupStudentsSign")
  143. @PreAuthorize("@pcs.hasPermissions('studentManage/queryMusicGroupStudentsSign')")
  144. public Object queryMusicGroupStudentsSign(StudentSignQueryInfo queryInfo){
  145. return succeed(studentManageService.queryMusicGroupStudentsSign(queryInfo));
  146. }
  147. @ApiOperation(value = "根据学生ID获取学生基本报名信息")
  148. @GetMapping("/findStudentBaseInfo")
  149. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentBaseInfo')")
  150. public Object findStudentBaseInfo(@ApiParam(value = "学生编号", required = true) Integer userId){
  151. return succeed(studentManageService.findStudentManageBaseInfo(userId));
  152. }
  153. @ApiOperation(value = "根据学生ID获取其所在的乐团")
  154. @GetMapping("/findStudentMusicGroups")
  155. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentMusicGroups')")
  156. public Object findStudentMusicGroups(@ApiParam(value = "学生编号", required = true) Integer userId){
  157. return succeed(studentManageService.findStudentMusicGroupsByUserId(userId));
  158. }
  159. @ApiOperation("获取学生所在乐团列表名称")
  160. @GetMapping(value = "/queryUserMusicInfos")
  161. @PreAuthorize("@pcs.hasPermissions('studentManage/queryUserMusicInfos')")
  162. public Object queryUserMusicInfos(Integer userId) {
  163. return succeed(studentManageService.queryUserMusicInfos(userId));
  164. }
  165. @ApiOperation(value = "根据乐团获取排课列表")
  166. @GetMapping("/findStudentCourses")
  167. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentCourses')")
  168. public Object findStudentCourses(StudentManageCourseQueryInfo queryInfo){
  169. return succeed(studentManageService.findStudentCourseList(queryInfo));
  170. }
  171. @ApiOperation(value = "获取学生签到列表")
  172. @GetMapping("/findStudentAttendances")
  173. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentAttendances')")
  174. public Object findStudentAttendances(StudentManageAttendanceQueryInfo queryInfo){
  175. return succeed(studentManageService.findStudentAttendances(queryInfo));
  176. }
  177. @ApiOperation(value = "获取学生vip课程")
  178. @GetMapping("/findStudentVipGroups")
  179. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentVipGroups')")
  180. public Object findStudentVipGroups(StudentManageCourseQueryInfo queryInfo){
  181. return succeed(studentManageService.findStudentVipGroups(queryInfo));
  182. }
  183. @ApiOperation(value = "获取学生vip班级列表")
  184. @GetMapping("/findStudentVipGroupClass")
  185. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentVipGroupClass')")
  186. public Object findStudentVipGroupClass(StudentManageVipClassQueryInfo queryInfo){
  187. return succeed(studentManageService.findStudentVipGroupClass(queryInfo));
  188. }
  189. @ApiOperation(value = "获取用户默认账户基本信息")
  190. @GetMapping("/getUserCashAccountBaseInfo")
  191. @PreAuthorize("@pcs.hasPermissions('studentManage/getUserCashAccountBaseInfo')")
  192. public Object getUserCashAccountBaseInfo(Integer userId){
  193. return succeed(studentManageService.getStudentAccountBaseInfo(userId));
  194. }
  195. @ApiOperation(value = "获取学员扣费记录列表")
  196. @GetMapping("/queryStudentPayment")
  197. @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentPayment')")
  198. public Object queryStudentPayment(TeacherPaymentRecordInfo queryInfo){
  199. return succeed(studentManageService.queryStudentPayment(queryInfo));
  200. }
  201. /**
  202. * 获取学员基本信息
  203. * @param mobile
  204. * @return
  205. */
  206. @GetMapping(value = "/queryUserByPhone")
  207. @PreAuthorize("@pcs.hasPermissions('studentManage/queryUserByPhone')")
  208. public Object queryUserByPhone(String mobile) {
  209. return succeed(studentRegistrationService.queryUserByPhone(mobile));
  210. }
  211. /**
  212. * 修改学员缴费金额和缴费周期
  213. * @return
  214. */
  215. @PostMapping(value = "/updateStudentFee")
  216. @PreAuthorize("@pcs.hasPermissions('studentManage/updateStudentFee')")
  217. public Object updateStudentFee(UpdateStudentFeeDto studentFeeDto) {
  218. SysUser sysUser = sysUserFeignService.queryUserInfo();
  219. if(sysUser == null){
  220. throw new BizException("用户信息获取失败");
  221. }
  222. LOGGER.info("修改学员缴费金额和缴费周期,user:{},参数:{}",sysUser.getId(),studentFeeDto);
  223. musicGroupStudentFeeService.updateStudentFee(studentFeeDto);
  224. return succeed();
  225. }
  226. /**
  227. * 修改学员缴费周期锁定状态
  228. * @return
  229. */
  230. @PostMapping(value = "/updateStudentFeeIsLock")
  231. @PreAuthorize("@pcs.hasPermissions('studentManage/updateStudentFeeIsLock')")
  232. public Object updateStudentFeeIsLock(UpdateStudentFeeDto studentFeeDto) {
  233. SysUser sysUser = sysUserFeignService.queryUserInfo();
  234. if(sysUser == null){
  235. throw new BizException("用户信息获取失败");
  236. }
  237. LOGGER.info("修改学员缴费周期锁定状态,user:{},参数:{}",sysUser.getId(),studentFeeDto);
  238. musicGroupStudentFeeService.updateStudentFeeIsLock(studentFeeDto);
  239. return succeed();
  240. }
  241. /**
  242. * 获取学员缴费日历信息
  243. * @return
  244. */
  245. @GetMapping(value = "/findMusicGroupStudentFee")
  246. @PreAuthorize("@pcs.hasPermissions('studentManage/findMusicGroupStudentFee')")
  247. public Object findMusicGroupStudentFee(Integer studentId,String musicGroupId) {
  248. if(studentId == null || StringUtils.isEmpty(musicGroupId)){
  249. throw new BizException("参数校验异常");
  250. }
  251. SysUser sysUser = sysUserFeignService.queryUserInfo();
  252. if(sysUser == null){
  253. throw new BizException("用户信息获取失败");
  254. }
  255. return succeed(musicGroupStudentFeeService.findByUser(studentId,musicGroupId));
  256. }
  257. /**
  258. * 获取课程学员作业列表
  259. * @return
  260. */
  261. @GetMapping(value = "/findStudentCourseHomeworks")
  262. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentCourseHomeworks')")
  263. public Object findStudentCourseHomeworks(QueryInfo queryInfo) {
  264. SysUser sysUser = sysUserFeignService.queryUserInfo();
  265. if(sysUser == null){
  266. throw new BizException("用户信息获取失败");
  267. }
  268. return succeed(studentCourseHomeworkService.findStudentCourseHomeworks(queryInfo));
  269. }
  270. /**
  271. * 获取课程学员作业列表
  272. * @return
  273. */
  274. @GetMapping(value = "/sumStudentAttendance")
  275. @PreAuthorize("@pcs.hasPermissions('studentManage/sumStudentAttendance')")
  276. public Object sumStudentAttendance(Integer courseScheduleId) {
  277. SysUser sysUser = sysUserFeignService.queryUserInfo();
  278. if(sysUser == null){
  279. throw new BizException("用户信息获取失败");
  280. }
  281. return succeed(studentManageService.sumStudentAttendance(courseScheduleId));
  282. }
  283. @ApiOperation(value = "获取运营指标列表")
  284. @GetMapping("/getOperatingStudents")
  285. @PreAuthorize("@pcs.hasPermissions('studentManage/getOperatingStudents')")
  286. public Object getOperatingStudents(StudentOperatingQueryInfo queryInfo){
  287. SysUser sysUser = sysUserFeignService.queryUserInfo();
  288. if (sysUser == null) {
  289. return failed("用户信息获取失败");
  290. }
  291. Employee employee = employeeDao.get(sysUser.getId());
  292. if (StringUtils.isEmpty(queryInfo.getOrganId())) {
  293. queryInfo.setOrganId(employee.getOrganIdList());
  294. }else if(StringUtils.isEmpty(employee.getOrganIdList())){
  295. return failed("用户所在分部异常");
  296. }else {
  297. List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
  298. if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
  299. return failed("非法请求");
  300. }
  301. }
  302. return succeed(studentManageService.getOperatingStudents(queryInfo));
  303. }
  304. @ApiOperation(value = "初始化教师编号")
  305. @GetMapping("/initTeacherId")
  306. @PreAuthorize("@pcs.hasPermissions('studentManage/initTeacherId')")
  307. public HttpResponseResult initTeacherId(){
  308. SysUser sysUser = sysUserFeignService.queryUserInfo();
  309. if (sysUser == null) {
  310. return failed("用户信息获取失败");
  311. }
  312. studentService.initTeacherId();
  313. return succeed();
  314. }
  315. @ApiOperation(value = "修改学员的指导老师")
  316. @PostMapping("/batchUpdateAdviser")
  317. @PreAuthorize("@pcs.hasPermissions('studentManage/batchUpdateAdviser')")
  318. public Object batchUpdateAdviser(Integer teacherId,String studentIds){
  319. studentService.batchUpdateAdviser(teacherId,studentIds);
  320. return succeed();
  321. }
  322. @ApiOperation(value = "检查乐团是否能补招")
  323. @GetMapping("/checkCanReg")
  324. @PreAuthorize("@pcs.hasPermissions('studentManage/checkCanReg')")
  325. public HttpResponseResult<Boolean> checkCanReg(String musicGroupId) {
  326. List<String> musicGroupIds = new ArrayList<>();
  327. musicGroupIds.add(musicGroupId);
  328. Map<String, Boolean> viewMap = studentRegistrationService.checkMusicGroupsRegOrPayStatus(new ArrayList<>(musicGroupIds));
  329. if (viewMap.size() > 0) {
  330. return succeed(true);
  331. }
  332. return succeed(false);
  333. }
  334. }