StudentManageController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. package com.ym.mec.web.controller;
  2. import com.ym.mec.auth.api.client.SysUserFeignService;
  3. import com.ym.mec.auth.api.entity.SysUser;
  4. import com.ym.mec.biz.dal.dao.EmployeeDao;
  5. import com.ym.mec.biz.dal.dto.StudentManageListDto;
  6. import com.ym.mec.biz.dal.dto.UpdateStudentFeeDto;
  7. import com.ym.mec.biz.dal.entity.Employee;
  8. import com.ym.mec.biz.dal.page.*;
  9. import com.ym.mec.biz.service.MusicGroupStudentFeeService;
  10. import com.ym.mec.biz.service.StudentCourseHomeworkService;
  11. import com.ym.mec.biz.service.StudentManageService;
  12. import com.ym.mec.biz.service.StudentRegistrationService;
  13. import com.ym.mec.common.controller.BaseController;
  14. import com.ym.mec.common.exception.BizException;
  15. import com.ym.mec.common.page.QueryInfo;
  16. import com.ym.mec.util.date.DateUtil;
  17. import com.ym.mec.util.excel.POIUtil;
  18. import io.swagger.annotations.*;
  19. import org.apache.commons.lang3.StringUtils;
  20. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  21. import org.slf4j.Logger;
  22. import org.slf4j.LoggerFactory;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.security.access.prepost.PreAuthorize;
  25. import org.springframework.web.bind.annotation.*;
  26. import javax.servlet.http.HttpServletResponse;
  27. import java.util.Arrays;
  28. import java.util.Date;
  29. import java.util.List;
  30. @Api(tags = "学生管理")
  31. @RestController
  32. public class StudentManageController extends BaseController {
  33. @Autowired
  34. private StudentManageService studentManageService;
  35. @Autowired
  36. private SysUserFeignService sysUserFeignService;
  37. @Autowired
  38. private StudentRegistrationService studentRegistrationService;
  39. @Autowired
  40. private MusicGroupStudentFeeService musicGroupStudentFeeService;
  41. @Autowired
  42. private StudentCourseHomeworkService studentCourseHomeworkService;
  43. @Autowired
  44. private EmployeeDao employeeDao;
  45. private final Logger LOGGER = LoggerFactory.getLogger(this.getClass());
  46. @ApiOperation(value = "导出学员是否有课")
  47. @PostMapping("export/studentHasCourse")
  48. @PreAuthorize("@pcs.hasPermissions('export/studentHasCourse')")
  49. public void studentHasCourse(HttpServletResponse response, StudentManageQueryInfo queryInfo) {
  50. SysUser sysUser = sysUserFeignService.queryUserInfo();
  51. if (sysUser == null) {
  52. throw new BizException("用户信息获取失败");
  53. }
  54. if(!sysUser.getIsSuperAdmin()){
  55. Employee employee = employeeDao.get(sysUser.getId());
  56. if (StringUtils.isEmpty(queryInfo.getOrganId())) {
  57. queryInfo.setOrganId(employee.getOrganIdList());
  58. }else if(StringUtils.isEmpty(employee.getOrganIdList())){
  59. throw new BizException("用户所在分部异常");
  60. }else {
  61. List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
  62. if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
  63. throw new BizException("非法请求");
  64. }
  65. }
  66. }
  67. List<StudentManageListDto> rows = studentManageService.queryHasCourseStudent(queryInfo);
  68. if(rows.size() > 50000){
  69. throw new BizException("数据集太大,不能导出.最大数据集不能超过50000");
  70. }
  71. try {
  72. HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "学员编号", "学员姓名", "性别", "家长姓名",
  73. "家长联系电话", "是否激活", "是否有课", "是否预约陪练课","是否有陪练课", "课程余额(元)",
  74. "所在乐团", "乐团所属声部", "所在乐团状态", "所在vip课", "所在VIP状态"}, new String[]{
  75. "organName", "userId", "username", "gender.description", "parentsName", "parentsPhone",
  76. "isActive.msg","hasCourse.msg","isMake.msg","hasPracticeCourse.msg","courseBalance","musicGroupName",
  77. "subjectName","musicGroupStatus","vipGroupName","vipGroupStatus"}, rows);
  78. response.setContentType("application/octet-stream");
  79. response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
  80. response.flushBuffer();
  81. workbook.write(response.getOutputStream());
  82. workbook.close();
  83. } catch (Exception e) {
  84. e.printStackTrace();
  85. }
  86. }
  87. @ApiOperation(value = "获取学生列表")
  88. @GetMapping("studentManage/queryStudentList")
  89. @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentList')")
  90. public Object queryStudentList(StudentManageQueryInfo queryInfo){
  91. SysUser sysUser = sysUserFeignService.queryUserInfo();
  92. if (sysUser == null) {
  93. return failed("用户信息获取失败");
  94. }
  95. if(!sysUser.getIsSuperAdmin()){
  96. Employee employee = employeeDao.get(sysUser.getId());
  97. if (StringUtils.isEmpty(queryInfo.getOrganId())) {
  98. queryInfo.setOrganId(employee.getOrganIdList());
  99. }else if(StringUtils.isEmpty(employee.getOrganIdList())){
  100. return failed("用户所在分部异常");
  101. }else {
  102. List<String> list = Arrays.asList(employee.getOrganIdList().split(","));
  103. if(!list.containsAll(Arrays.asList(queryInfo.getOrganId().split(",")))){
  104. return failed("非法请求");
  105. }
  106. }
  107. }
  108. return succeed(studentManageService.findStudentsByOrganId(queryInfo));
  109. }
  110. @ApiOperation(value = "学员注册")
  111. @PostMapping("studentManage/register")
  112. @PreAuthorize("@pcs.hasPermissions('studentManage/register')")
  113. public Object studentRegister(SysUser sysUser){
  114. return succeed(studentManageService.studentRegister(sysUser));
  115. }
  116. @ApiOperation(value = "修改学员信息")
  117. @PostMapping("studentManage/studentUpdate")
  118. @PreAuthorize("@pcs.hasPermissions('studentManage/studentUpdate')")
  119. public Object studentUpdate(Integer id, String phone, String username, Integer gender, String realName, Date birthdate,String nation){
  120. SysUser sysUser = new SysUser();
  121. sysUser.setId(id);
  122. sysUser.setPhone(phone);
  123. sysUser.setUsername(username);
  124. sysUser.setGender(gender);
  125. sysUser.setRealName(realName);
  126. sysUser.setBirthdate(birthdate);
  127. sysUser.setNation(nation);
  128. return succeed(studentManageService.studentUpdate(sysUser));
  129. }
  130. @ApiOperation(value = "乐团管理--乐团详情--获取学员列表")
  131. @GetMapping("studentManage/queryMusicGroupStudent")
  132. @PreAuthorize("@pcs.hasPermissions('studentManage/queryMusicGroupStudent')")
  133. public Object queryMusicGroupStudent(MusicGroupStudentQueryInfo queryInfo){
  134. return succeed(studentManageService.queryMusicGroupStudent(queryInfo));
  135. }
  136. @ApiOperation(value = "乐团管理--乐团详情--学员列表--查看班级")
  137. @GetMapping("studentManage/queryStudentClassGroup")
  138. @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentClassGroup')")
  139. @ApiImplicitParams({@ApiImplicitParam(name = "teacherId", value = "学生编号", required = true, dataType = "Integer"),
  140. @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
  141. public Object queryStudentClassGroup(String musicGroupId,Integer teacherId){
  142. if(StringUtils.isEmpty(musicGroupId) || teacherId == null){
  143. return failed("参数校验失败");
  144. }
  145. return succeed(studentManageService.queryStudentClassGroup(musicGroupId,teacherId));
  146. }
  147. @ApiOperation(value = "乐团管理--乐团详情--学员列表,汇总数据接口")
  148. @GetMapping("studentManage/musicGroupStudentsSum")
  149. @PreAuthorize("@pcs.hasPermissions('studentManage/musicGroupStudentsSum')")
  150. public Object musicGroupStudentsSum(String musicGroupId){
  151. return succeed(studentManageService.musicGroupStudentsSum(musicGroupId));
  152. }
  153. @ApiOperation(value = "乐团管理--乐团详情--点名总览")
  154. @GetMapping("studentManage/queryMusicGroupStudentsSign")
  155. @PreAuthorize("@pcs.hasPermissions('studentManage/queryMusicGroupStudentsSign')")
  156. public Object queryMusicGroupStudentsSign(StudentSignQueryInfo queryInfo){
  157. return succeed(studentManageService.queryMusicGroupStudentsSign(queryInfo));
  158. }
  159. @ApiOperation(value = "根据学生ID获取学生基本报名信息")
  160. @GetMapping("studentManage/findStudentBaseInfo")
  161. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentBaseInfo')")
  162. public Object findStudentBaseInfo(@ApiParam(value = "学生编号", required = true) Integer userId){
  163. return succeed(studentManageService.findStudentManageBaseInfo(userId));
  164. }
  165. @ApiOperation(value = "根据学生ID获取其所在的乐团")
  166. @GetMapping("studentManage/findStudentMusicGroups")
  167. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentMusicGroups')")
  168. public Object findStudentMusicGroups(@ApiParam(value = "学生编号", required = true) Integer userId){
  169. return succeed(studentManageService.findStudentMusicGroupsByUserId(userId));
  170. }
  171. @ApiOperation(value = "根据乐团获取排课列表")
  172. @GetMapping("studentManage/findStudentCourses")
  173. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentCourses')")
  174. public Object findStudentCourses(StudentManageCourseQueryInfo queryInfo){
  175. return succeed(studentManageService.findStudentCourseList(queryInfo));
  176. }
  177. @ApiOperation(value = "获取学生签到列表")
  178. @GetMapping("studentManage/findStudentAttendances")
  179. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentAttendances')")
  180. public Object findStudentAttendances(StudentManageAttendanceQueryInfo queryInfo){
  181. return succeed(studentManageService.findStudentAttendances(queryInfo));
  182. }
  183. @ApiOperation(value = "获取学生vip课程")
  184. @GetMapping("studentManage/findStudentVipGroups")
  185. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentVipGroups')")
  186. public Object findStudentVipGroups(StudentManageCourseQueryInfo queryInfo){
  187. return succeed(studentManageService.findStudentVipGroups(queryInfo));
  188. }
  189. @ApiOperation(value = "获取学生vip班级列表")
  190. @GetMapping("studentManage/findStudentVipGroupClass")
  191. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentVipGroupClass')")
  192. public Object findStudentVipGroupClass(StudentManageVipClassQueryInfo queryInfo){
  193. return succeed(studentManageService.findStudentVipGroupClass(queryInfo));
  194. }
  195. @ApiOperation(value = "获取用户默认账户基本信息")
  196. @GetMapping("studentManage/getUserCashAccountBaseInfo")
  197. @PreAuthorize("@pcs.hasPermissions('studentManage/getUserCashAccountBaseInfo')")
  198. public Object getUserCashAccountBaseInfo(Integer userId){
  199. return succeed(studentManageService.getStudentAccountBaseInfo(userId));
  200. }
  201. @ApiOperation(value = "获取学员扣费记录列表")
  202. @GetMapping("studentManage/queryStudentPayment")
  203. @PreAuthorize("@pcs.hasPermissions('studentManage/queryStudentPayment')")
  204. public Object queryStudentPayment(TeacherPaymentRecordInfo queryInfo){
  205. return succeed(studentManageService.queryStudentPayment(queryInfo));
  206. }
  207. /**
  208. * 获取学员基本信息
  209. * @param mobile
  210. * @return
  211. */
  212. @GetMapping(value = "studentManage/queryUserByPhone")
  213. @PreAuthorize("@pcs.hasPermissions('studentManage/queryUserByPhone')")
  214. public Object queryUserByPhone(String mobile) {
  215. return succeed(studentRegistrationService.queryUserByPhone(mobile));
  216. }
  217. /**
  218. * 修改学员缴费金额和缴费周期
  219. * @return
  220. */
  221. @PostMapping(value = "studentManage/updateStudentFee")
  222. @PreAuthorize("@pcs.hasPermissions('studentManage/updateStudentFee')")
  223. public Object updateStudentFee(UpdateStudentFeeDto studentFeeDto) {
  224. SysUser sysUser = sysUserFeignService.queryUserInfo();
  225. if(sysUser == null){
  226. throw new BizException("用户信息获取失败");
  227. }
  228. LOGGER.info("修改学员缴费金额和缴费周期,user:{},参数:{}",sysUser.getId(),studentFeeDto);
  229. musicGroupStudentFeeService.updateStudentFee(studentFeeDto);
  230. return succeed();
  231. }
  232. /**
  233. * 修改学员缴费周期锁定状态
  234. * @return
  235. */
  236. @PostMapping(value = "studentManage/updateStudentFeeIsLock")
  237. @PreAuthorize("@pcs.hasPermissions('studentManage/updateStudentFeeIsLock')")
  238. public Object updateStudentFeeIsLock(UpdateStudentFeeDto studentFeeDto) {
  239. SysUser sysUser = sysUserFeignService.queryUserInfo();
  240. if(sysUser == null){
  241. throw new BizException("用户信息获取失败");
  242. }
  243. LOGGER.info("修改学员缴费周期锁定状态,user:{},参数:{}",sysUser.getId(),studentFeeDto);
  244. musicGroupStudentFeeService.updateStudentFeeIsLock(studentFeeDto);
  245. return succeed();
  246. }
  247. /**
  248. * 获取学员缴费日历信息
  249. * @return
  250. */
  251. @GetMapping(value = "studentManage/findMusicGroupStudentFee")
  252. @PreAuthorize("@pcs.hasPermissions('studentManage/findMusicGroupStudentFee')")
  253. public Object findMusicGroupStudentFee(Integer studentId,String musicGroupId) {
  254. if(studentId == null || StringUtils.isEmpty(musicGroupId)){
  255. throw new BizException("参数校验异常");
  256. }
  257. SysUser sysUser = sysUserFeignService.queryUserInfo();
  258. if(sysUser == null){
  259. throw new BizException("用户信息获取失败");
  260. }
  261. return succeed(musicGroupStudentFeeService.findByUser(studentId,musicGroupId));
  262. }
  263. /**
  264. * 获取课程学员作业列表
  265. * @return
  266. */
  267. @GetMapping(value = "studentManage/findStudentCourseHomeworks")
  268. @PreAuthorize("@pcs.hasPermissions('studentManage/findStudentCourseHomeworks')")
  269. public Object findStudentCourseHomeworks(QueryInfo queryInfo) {
  270. SysUser sysUser = sysUserFeignService.queryUserInfo();
  271. if(sysUser == null){
  272. throw new BizException("用户信息获取失败");
  273. }
  274. return succeed(studentCourseHomeworkService.findStudentCourseHomeworks(queryInfo));
  275. }
  276. /**
  277. * 获取课程学员作业列表
  278. * @return
  279. */
  280. @GetMapping(value = "studentManage/sumStudentAttendance")
  281. @PreAuthorize("@pcs.hasPermissions('studentManage/sumStudentAttendance')")
  282. public Object sumStudentAttendance(Integer courseScheduleId) {
  283. SysUser sysUser = sysUserFeignService.queryUserInfo();
  284. if(sysUser == null){
  285. throw new BizException("用户信息获取失败");
  286. }
  287. return succeed(studentManageService.sumStudentAttendance(courseScheduleId));
  288. }
  289. }