CourseController.java 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727
  1. package com.qxgmat.controller.admin;
  2. import com.github.pagehelper.Page;
  3. import com.nuliji.tools.PageMessage;
  4. import com.nuliji.tools.Response;
  5. import com.nuliji.tools.ResponseHelp;
  6. import com.nuliji.tools.Transform;
  7. import com.qxgmat.data.constants.enums.module.CourseModule;
  8. import com.qxgmat.data.constants.enums.module.ProductType;
  9. import com.qxgmat.data.constants.enums.status.AskStatus;
  10. import com.qxgmat.data.constants.enums.status.DirectionStatus;
  11. import com.qxgmat.data.constants.enums.user.DataType;
  12. import com.qxgmat.data.constants.enums.user.MoneyRange;
  13. import com.qxgmat.data.dao.entity.*;
  14. import com.qxgmat.data.relation.entity.CourseStudentNumberRelation;
  15. import com.qxgmat.dto.admin.extend.*;
  16. import com.qxgmat.dto.admin.request.*;
  17. import com.qxgmat.dto.admin.response.*;
  18. import com.qxgmat.help.ShiroHelp;
  19. import com.qxgmat.service.ManagerService;
  20. import com.qxgmat.service.UsersService;
  21. import com.qxgmat.service.extend.CourseExtendService;
  22. import com.qxgmat.service.inline.*;
  23. import io.swagger.annotations.ApiOperation;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.validation.annotation.Validated;
  26. import org.springframework.web.bind.annotation.*;
  27. import javax.servlet.http.HttpServletRequest;
  28. import javax.servlet.http.HttpSession;
  29. import javax.xml.transform.TransformerFactory;
  30. import java.util.Collection;
  31. import java.util.Date;
  32. import java.util.List;
  33. import java.util.Map;
  34. @RestController("AdminClassController")
  35. @RequestMapping("/admin/course")
  36. public class CourseController {
  37. @Autowired
  38. private ShiroHelp shiroHelp;
  39. @Autowired
  40. private CourseService courseService;
  41. @Autowired
  42. private CourseNoService courseNoService;
  43. @Autowired
  44. private CoursePackageService coursePackageService;
  45. @Autowired
  46. private CourseDataService courseDataService;
  47. @Autowired
  48. private CourseDataHistoryService courseDataHistoryService;
  49. @Autowired
  50. private CourseExperienceService courseExperienceService;
  51. @Autowired
  52. private CourseTeacherService courseTeacherService;
  53. @Autowired
  54. private CourseTimeService courseTimeService;
  55. @Autowired
  56. private CourseStudentOnlineService courseStudentOnlineService;
  57. @Autowired
  58. private UserAskCourseService userAskCourseService;
  59. @Autowired
  60. private ManagerLogService managerLogService;
  61. @Autowired
  62. private ManagerService managerService;
  63. @Autowired
  64. private UsersService usersService;
  65. @Autowired
  66. private UserOrderRecordService userOrderRecordService;
  67. @Autowired
  68. private CourseExtendService courseExtendService;
  69. @RequestMapping(value = "/add", method = RequestMethod.POST)
  70. @ApiOperation(value = "添加课程", httpMethod = "POST")
  71. public Response<Course> add(@RequestBody @Validated Course dto, HttpServletRequest request) {
  72. Course entity = Transform.convert(dto, Course.class);
  73. entity = courseService.add(entity);
  74. managerLogService.log(request);
  75. return ResponseHelp.success(Transform.convert(entity, Course.class));
  76. }
  77. @RequestMapping(value = "/edit", method = RequestMethod.PUT)
  78. @ApiOperation(value = "编辑课程", httpMethod = "PUT")
  79. public Response<Boolean> edit(@RequestBody @Validated Course dto, HttpServletRequest request) {
  80. Course entity = Transform.convert(dto, Course.class);
  81. entity = courseService.edit(entity);
  82. managerLogService.log(request);
  83. return ResponseHelp.success(true);
  84. }
  85. @RequestMapping(value = "/delete", method = RequestMethod.DELETE)
  86. @ApiOperation(value = "删除课程", httpMethod = "DELETE")
  87. public Response<Boolean> delete(@RequestParam int id, HttpServletRequest request) {
  88. Course entity = courseService.get(id);
  89. courseService.delete(id);
  90. managerLogService.log(request);
  91. return ResponseHelp.success(true);
  92. }
  93. @RequestMapping(value = "/detail", method = RequestMethod.GET)
  94. @ApiOperation(value = "获取课程", httpMethod = "GET")
  95. public Response<Course> detail(@RequestParam int id,HttpSession session) {
  96. Course entity = courseService.get(id);
  97. return ResponseHelp.success(Transform.convert(entity, Course.class));
  98. }
  99. @RequestMapping(value = "/list", method = RequestMethod.GET)
  100. @ApiOperation(value = "课程列表", httpMethod = "GET")
  101. public Response<PageMessage<CourseListDto>> list(
  102. @RequestParam(required = false, defaultValue = "1") int page,
  103. @RequestParam(required = false, defaultValue = "100") int size,
  104. @RequestParam(required = false) Integer[] ids,
  105. @RequestParam(required = false) String keyword,
  106. @RequestParam(required = false) String courseModule,
  107. @RequestParam(required = false) Integer structId,
  108. @RequestParam(required = false) Boolean excludeVs,
  109. HttpSession session) {
  110. Page<Course> p;
  111. if (ids != null && ids.length > 0){
  112. p = courseService.select(ids);
  113. }else{
  114. p = courseService.listAdmin(page, size, keyword, CourseModule.ValueOf(courseModule), structId, excludeVs);
  115. }
  116. List<CourseListDto> pr = Transform.convert(p, CourseListDto.class);
  117. return ResponseHelp.success(pr, page, size, p.getTotal());
  118. }
  119. @RequestMapping(value = "/package/add", method = RequestMethod.POST)
  120. @ApiOperation(value = "添加套餐", httpMethod = "POST")
  121. public Response<CoursePackage> addPackage(@RequestBody @Validated CoursePackageDto dto, HttpServletRequest request) {
  122. CoursePackage entity = Transform.dtoToEntity(dto);
  123. entity = coursePackageService.add(entity);
  124. managerLogService.log(request);
  125. return ResponseHelp.success(Transform.convert(entity, CoursePackage.class));
  126. }
  127. @RequestMapping(value = "/package/edit", method = RequestMethod.PUT)
  128. @ApiOperation(value = "编辑套餐", httpMethod = "PUT")
  129. public Response<Boolean> editPackage(@RequestBody @Validated CoursePackageDto dto, HttpServletRequest request) {
  130. CoursePackage entity = Transform.dtoToEntity(dto);
  131. entity = coursePackageService.edit(entity);
  132. managerLogService.log(request);
  133. return ResponseHelp.success(true);
  134. }
  135. @RequestMapping(value = "/package/delete", method = RequestMethod.DELETE)
  136. @ApiOperation(value = "删除套餐", httpMethod = "DELETE")
  137. public Response<Boolean> deletePackage(@RequestParam int id, HttpServletRequest request) {
  138. coursePackageService.delete(id);
  139. managerLogService.log(request);
  140. return ResponseHelp.success(true);
  141. }
  142. @RequestMapping(value = "/package/detail", method = RequestMethod.GET)
  143. @ApiOperation(value = "获取套餐", httpMethod = "GET")
  144. public Response<CoursePackage> detailPackage(@RequestParam int id,HttpSession session) {
  145. CoursePackage entity = coursePackageService.get(id);
  146. return ResponseHelp.success(Transform.convert(entity, CoursePackage.class));
  147. }
  148. @RequestMapping(value = "/package/list", method = RequestMethod.GET)
  149. @ApiOperation(value = "套餐列表", httpMethod = "GET")
  150. public Response<PageMessage<CoursePackage>> listPackage(
  151. @RequestParam(required = false, defaultValue = "1") int page,
  152. @RequestParam(required = false, defaultValue = "100") int size,
  153. HttpSession session) {
  154. Page<CoursePackage> p = coursePackageService.select(page, size);
  155. List<CoursePackage> pr = Transform.convert(p, CoursePackage.class);
  156. return ResponseHelp.success(pr, page, size, p.getTotal());
  157. }
  158. @RequestMapping(value = "/data/add", method = RequestMethod.POST)
  159. @ApiOperation(value = "添加资料", httpMethod = "POST")
  160. public Response<CourseData> addData(@RequestBody @Validated CourseDataDto dto, HttpServletRequest request) {
  161. CourseData entity = Transform.dtoToEntity(dto);
  162. entity = courseDataService.add(entity);
  163. managerLogService.log(request);
  164. return ResponseHelp.success(Transform.convert(entity, CourseData.class));
  165. }
  166. @RequestMapping(value = "/data/edit", method = RequestMethod.PUT)
  167. @ApiOperation(value = "编辑资料", httpMethod = "PUT")
  168. public Response<Boolean> editData(@RequestBody @Validated CourseDataDto dto, HttpServletRequest request) {
  169. CourseData entity = Transform.dtoToEntity(dto);
  170. entity = courseDataService.edit(entity);
  171. managerLogService.log(request);
  172. return ResponseHelp.success(true);
  173. }
  174. @RequestMapping(value = "/data/delete", method = RequestMethod.DELETE)
  175. @ApiOperation(value = "删除资料", httpMethod = "DELETE")
  176. public Response<Boolean> deleteData(@RequestParam int id, HttpServletRequest request) {
  177. courseDataService.delete(id);
  178. managerLogService.log(request);
  179. return ResponseHelp.success(true);
  180. }
  181. @RequestMapping(value = "/data/detail", method = RequestMethod.GET)
  182. @ApiOperation(value = "获取资料", httpMethod = "GET")
  183. public Response<CourseData> detailData(@RequestParam int id,HttpSession session) {
  184. CourseData entity = courseDataService.get(id);
  185. return ResponseHelp.success(Transform.convert(entity, CourseData.class));
  186. }
  187. @RequestMapping(value = "/data/list", method = RequestMethod.GET)
  188. @ApiOperation(value = "资料列表", httpMethod = "GET")
  189. public Response<PageMessage<CourseData>> listData(
  190. @RequestParam(required = false, defaultValue = "1") int page,
  191. @RequestParam(required = false, defaultValue = "100") int size,
  192. @RequestParam(required = false) Integer structId,
  193. @RequestParam(required = false) String dataType,
  194. @RequestParam(required = false, defaultValue = "id") String order,
  195. @RequestParam(required = false, defaultValue = "desc") String direction,
  196. HttpSession session) {
  197. Page<CourseData> p = courseDataService.listAdmin(page, size, structId, DataType.ValueOf(dataType), order, DirectionStatus.ValueOf(direction));
  198. List<CourseData> pr = Transform.convert(p, CourseData.class);
  199. return ResponseHelp.success(pr, page, size, p.getTotal());
  200. }
  201. @RequestMapping(value = "/data/history/add", method = RequestMethod.POST)
  202. @ApiOperation(value = "添加资料历史", httpMethod = "POST")
  203. public Response<CourseDataHistory> addDataHistory(@RequestBody @Validated CourseDataHistoryDto dto, HttpServletRequest request) {
  204. CourseDataHistory entity = Transform.dtoToEntity(dto);
  205. entity = courseDataHistoryService.add(entity);
  206. managerLogService.log(request);
  207. return ResponseHelp.success(Transform.convert(entity, CourseDataHistory.class));
  208. }
  209. @RequestMapping(value = "/data/history/edit", method = RequestMethod.PUT)
  210. @ApiOperation(value = "编辑资料历史", httpMethod = "PUT")
  211. public Response<Boolean> editDataHistory(@RequestBody @Validated CourseDataHistoryDto dto, HttpServletRequest request) {
  212. CourseDataHistory entity = Transform.dtoToEntity(dto);
  213. entity = courseDataHistoryService.edit(entity);
  214. managerLogService.log(request);
  215. return ResponseHelp.success(true);
  216. }
  217. @RequestMapping(value = "/data/history/delete", method = RequestMethod.DELETE)
  218. @ApiOperation(value = "删除资料历史", httpMethod = "DELETE")
  219. public Response<Boolean> deleteDataHistory(@RequestParam int id, HttpServletRequest request) {
  220. courseDataHistoryService.delete(id);
  221. managerLogService.log(request);
  222. return ResponseHelp.success(true);
  223. }
  224. @RequestMapping(value = "/data/history/list", method = RequestMethod.GET)
  225. @ApiOperation(value = "资料历史列表", httpMethod = "GET")
  226. public Response<PageMessage<CourseDataHistory>> listDataHistory(
  227. @RequestParam(required = false, defaultValue = "1") int page,
  228. @RequestParam(required = false, defaultValue = "100") int size,
  229. @RequestParam(required = true) Integer dataId,
  230. HttpSession session) {
  231. Page<CourseDataHistory> p = courseDataHistoryService.listByData(page, size, dataId);
  232. List<CourseDataHistory> pr = Transform.convert(p, CourseDataHistory.class);
  233. return ResponseHelp.success(pr, page, size, p.getTotal());
  234. }
  235. @RequestMapping(value = "/experience/add", method = RequestMethod.POST)
  236. @ApiOperation(value = "添加心经", httpMethod = "POST")
  237. public Response<CourseExperience> addExperience(@RequestBody @Validated CourseExperienceDto dto, HttpServletRequest request) {
  238. CourseExperience entity = Transform.dtoToEntity(dto);
  239. entity = courseExperienceService.add(entity);
  240. managerLogService.log(request);
  241. return ResponseHelp.success(Transform.convert(entity, CourseExperience.class));
  242. }
  243. @RequestMapping(value = "/experience/edit", method = RequestMethod.PUT)
  244. @ApiOperation(value = "编辑心经", httpMethod = "PUT")
  245. public Response<Boolean> editExperience(@RequestBody @Validated CourseDataDto dto, HttpServletRequest request) {
  246. CourseExperience entity = Transform.dtoToEntity(dto);
  247. entity = courseExperienceService.edit(entity);
  248. managerLogService.log(request);
  249. return ResponseHelp.success(true);
  250. }
  251. @RequestMapping(value = "/experience/delete", method = RequestMethod.DELETE)
  252. @ApiOperation(value = "删除心经", httpMethod = "DELETE")
  253. public Response<Boolean> deleteExperience(@RequestParam int id, HttpServletRequest request) {
  254. courseExperienceService.delete(id);
  255. managerLogService.log(request);
  256. return ResponseHelp.success(true);
  257. }
  258. @RequestMapping(value = "/experience/detail", method = RequestMethod.GET)
  259. @ApiOperation(value = "获取心经", httpMethod = "GET")
  260. public Response<CourseExperience> detailExperience(@RequestParam int id,HttpSession session) {
  261. CourseExperience entity = courseExperienceService.get(id);
  262. return ResponseHelp.success(Transform.convert(entity, CourseExperience.class));
  263. }
  264. @RequestMapping(value = "/experience/list", method = RequestMethod.GET)
  265. @ApiOperation(value = "心经列表", httpMethod = "GET")
  266. public Response<PageMessage<CourseExperienceListDto>> listExperience(
  267. @RequestParam(required = false, defaultValue = "1") int page,
  268. @RequestParam(required = false, defaultValue = "100") int size,
  269. @RequestParam(required = false) Integer userId,
  270. @RequestParam(required = false) String keyword,
  271. @RequestParam(required = false, defaultValue = "id") String order,
  272. @RequestParam(required = false, defaultValue = "desc") String direction,
  273. HttpSession session) {
  274. Page<CourseExperience> p = courseExperienceService.listAdmin(page, size, userId, keyword, order, DirectionStatus.ValueOf(direction));
  275. List<CourseExperienceListDto> pr = Transform.convert(p, CourseExperienceListDto.class);
  276. // 绑定用户
  277. Collection userIds = Transform.getIds(p, CourseExperience.class, "userId");
  278. List<User> userList = usersService.select(userIds);
  279. Transform.combine(pr, userList, CourseExperienceListDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  280. return ResponseHelp.success(pr, page, size, p.getTotal());
  281. }
  282. @RequestMapping(value = "/teacher/add", method = RequestMethod.POST)
  283. @ApiOperation(value = "添加老师", httpMethod = "POST")
  284. public Response<CourseTeacher> addTeacher(@RequestBody @Validated CourseTeacherDto dto, HttpServletRequest request) {
  285. CourseTeacher entity = Transform.dtoToEntity(dto);
  286. entity = courseTeacherService.add(entity);
  287. managerLogService.log(request);
  288. return ResponseHelp.success(Transform.convert(entity, CourseTeacher.class));
  289. }
  290. @RequestMapping(value = "/teacher/edit", method = RequestMethod.PUT)
  291. @ApiOperation(value = "编辑教师", httpMethod = "PUT")
  292. public Response<Boolean> editTeacher(@RequestBody @Validated CourseTeacherDto dto, HttpServletRequest request) {
  293. CourseTeacher entity = Transform.dtoToEntity(dto);
  294. entity = courseTeacherService.edit(entity);
  295. managerLogService.log(request);
  296. return ResponseHelp.success(true);
  297. }
  298. @RequestMapping(value = "/teacher/delete", method = RequestMethod.DELETE)
  299. @ApiOperation(value = "删除教师", httpMethod = "DELETE")
  300. public Response<Boolean> deleteTeacher(@RequestParam int id, HttpServletRequest request) {
  301. courseTeacherService.delete(id);
  302. managerLogService.log(request);
  303. return ResponseHelp.success(true);
  304. }
  305. @RequestMapping(value = "/teacher/detail", method = RequestMethod.GET)
  306. @ApiOperation(value = "获取教师", httpMethod = "GET")
  307. public Response<CourseTeacher> detailTeacher(@RequestParam int id,HttpSession session) {
  308. CourseTeacher entity = courseTeacherService.get(id);
  309. return ResponseHelp.success(Transform.convert(entity, CourseTeacher.class));
  310. }
  311. @RequestMapping(value = "/teacher/list", method = RequestMethod.GET)
  312. @ApiOperation(value = "教师列表", httpMethod = "GET")
  313. public Response<PageMessage<CourseTeacher>> listTeacher(
  314. @RequestParam(required = false, defaultValue = "1") int page,
  315. @RequestParam(required = false, defaultValue = "100") int size,
  316. @RequestParam(required = false) Integer courseId,
  317. HttpSession session) {
  318. Page<CourseTeacher> p = courseTeacherService.listAdmin(page, size, courseId);
  319. return ResponseHelp.success(p, page, size, p.getTotal());
  320. }
  321. @RequestMapping(value = "/no/add", method = RequestMethod.POST)
  322. @ApiOperation(value = "添加课时", httpMethod = "POST")
  323. public Response<CourseNo> addNo(@RequestBody @Validated CourseNoDto dto, HttpServletRequest request) {
  324. // 查询课时
  325. CourseNo entity = Transform.dtoToEntity(dto);
  326. entity = courseNoService.addNo(entity);
  327. managerLogService.log(request);
  328. return ResponseHelp.success(Transform.convert(entity, CourseNo.class));
  329. }
  330. @RequestMapping(value = "/no/edit", method = RequestMethod.PUT)
  331. @ApiOperation(value = "编辑课时", httpMethod = "PUT")
  332. public Response<Boolean> editNo(@RequestBody @Validated CourseNoDto dto, HttpServletRequest request) {
  333. // 调整课时顺序
  334. CourseNo entity = Transform.dtoToEntity(dto);
  335. entity = courseNoService.editNo(entity);
  336. managerLogService.log(request);
  337. return ResponseHelp.success(true);
  338. }
  339. @RequestMapping(value = "/no/delete", method = RequestMethod.DELETE)
  340. @ApiOperation(value = "删除课时", httpMethod = "DELETE")
  341. public Response<Boolean> deleteNo(@RequestParam int id, HttpServletRequest request) {
  342. // 调整课时顺序
  343. courseNoService.deleteNo(id);
  344. managerLogService.log(request);
  345. return ResponseHelp.success(true);
  346. }
  347. @RequestMapping(value = "/no/detail", method = RequestMethod.GET)
  348. @ApiOperation(value = "获取课时", httpMethod = "GET")
  349. public Response<CourseNo> detailNo(@RequestParam int id,HttpSession session) {
  350. CourseNo entity = courseNoService.get(id);
  351. return ResponseHelp.success(Transform.convert(entity, CourseNo.class));
  352. }
  353. @RequestMapping(value = "/no/all", method = RequestMethod.GET)
  354. @ApiOperation(value = "课时列表", httpMethod = "GET")
  355. public Response<List<CourseNo>> listNo(
  356. @RequestParam(required = false) Integer courseId,
  357. HttpSession session) {
  358. List<CourseNo> p = courseNoService.allCourse(courseId);
  359. return ResponseHelp.success(p);
  360. }
  361. @RequestMapping(value = "/time/add", method = RequestMethod.POST)
  362. @ApiOperation(value = "添加课时", httpMethod = "POST")
  363. public Response<CourseTime> addTime(@RequestBody @Validated CourseTimeDto dto, HttpServletRequest request) {
  364. CourseTime entity = Transform.dtoToEntity(dto);
  365. entity = courseTimeService.add(entity);
  366. managerLogService.log(request);
  367. return ResponseHelp.success(Transform.convert(entity, CourseTime.class));
  368. }
  369. @RequestMapping(value = "/time/edit", method = RequestMethod.PUT)
  370. @ApiOperation(value = "编辑课时", httpMethod = "PUT")
  371. public Response<Boolean> editTime(@RequestBody @Validated CourseTimeDto dto, HttpServletRequest request) {
  372. CourseTime entity = Transform.dtoToEntity(dto);
  373. entity = courseTimeService.edit(entity);
  374. managerLogService.log(request);
  375. return ResponseHelp.success(true);
  376. }
  377. @RequestMapping(value = "/time/delete", method = RequestMethod.DELETE)
  378. @ApiOperation(value = "删除课时", httpMethod = "DELETE")
  379. public Response<Boolean> deleteTime(@RequestParam int id, HttpServletRequest request) {
  380. courseTimeService.delete(id);
  381. managerLogService.log(request);
  382. return ResponseHelp.success(true);
  383. }
  384. @RequestMapping(value = "/time/detail", method = RequestMethod.GET)
  385. @ApiOperation(value = "获取课时", httpMethod = "GET")
  386. public Response<CourseTime> detailTime(@RequestParam int id,HttpSession session) {
  387. CourseTime entity = courseTimeService.get(id);
  388. return ResponseHelp.success(Transform.convert(entity, CourseTime.class));
  389. }
  390. @RequestMapping(value = "/time/list", method = RequestMethod.GET)
  391. @ApiOperation(value = "课时列表", httpMethod = "GET")
  392. public Response<PageMessage<CourseTimeInfoDto>> listTime(
  393. @RequestParam(required = false, defaultValue = "1") int page,
  394. @RequestParam(required = false, defaultValue = "100") int size,
  395. @RequestParam(required = false) Integer[] ids,
  396. @RequestParam(required = false) Integer courseId,
  397. @RequestParam(required = false) String keyword,
  398. HttpSession session) {
  399. Page<CourseTime> p;
  400. if (ids != null && ids.length > 0){
  401. p = courseTimeService.select(ids);
  402. }else{
  403. p = courseTimeService.listAdmin(page, size, courseId, keyword);
  404. }
  405. List<CourseTimeInfoDto> pr = Transform.convert(p, CourseTimeInfoDto.class);
  406. // 绑定学生数量
  407. Collection timeIds = Transform.getIds(p, CourseTime.class, "id");
  408. List<CourseStudentNumberRelation> relations = courseStudentOnlineService.groupByCourse(timeIds);
  409. Map map = Transform.getMap(relations, CourseStudentNumberRelation.class, "id", "number");
  410. Transform.combine(pr, map, CourseTimeInfoDto.class, "id", "studentNumber");
  411. return ResponseHelp.success(pr, page, size, p.getTotal());
  412. }
  413. @RequestMapping(value = "/student/online/add", method = RequestMethod.POST)
  414. @ApiOperation(value = "添加学员", httpMethod = "POST")
  415. public Response<CourseStudentOnline> addStudentVideo(@RequestBody @Validated CourseStudentOnline entity, HttpServletRequest request) {
  416. // CourseStudentOnline entity = Transform.dtoToEntity(dto);
  417. entity = courseStudentOnlineService.addStudent(entity);
  418. managerLogService.log(request);
  419. return ResponseHelp.success(Transform.convert(entity, CourseStudentOnline.class));
  420. }
  421. @RequestMapping(value = "/student/online/edit", method = RequestMethod.PUT)
  422. @ApiOperation(value = "编辑学员", httpMethod = "PUT")
  423. public Response<Boolean> editStudentVideo(@RequestBody @Validated CourseStudentOnline entity, HttpServletRequest request) {
  424. // CourseStudentOnline entity = Transform.dtoToEntity(dto);
  425. entity = courseStudentOnlineService.edit(entity);
  426. managerLogService.log(request);
  427. return ResponseHelp.success(true);
  428. }
  429. @RequestMapping(value = "/student/online/delete", method = RequestMethod.DELETE)
  430. @ApiOperation(value = "删除学员", httpMethod = "DELETE")
  431. public Response<Boolean> deleteStudentOnline(@RequestParam int id, HttpServletRequest request) {
  432. courseTimeService.delete(id);
  433. managerLogService.log(request);
  434. return ResponseHelp.success(true);
  435. }
  436. @RequestMapping(value = "/student/online/detail", method = RequestMethod.GET)
  437. @ApiOperation(value = "获取学员", httpMethod = "GET")
  438. public Response<CourseStudentOnline> detailStudentVideo(@RequestParam int id,HttpSession session) {
  439. CourseStudentOnline entity = courseStudentOnlineService.get(id);
  440. return ResponseHelp.success(Transform.convert(entity, CourseStudentOnline.class));
  441. }
  442. @RequestMapping(value = "/student/online/list", method = RequestMethod.GET)
  443. @ApiOperation(value = "课时学员", httpMethod = "GET")
  444. public Response<PageMessage<CourseStudentOnlineListDto>> listStudentVideo(
  445. @RequestParam(required = false, defaultValue = "1") int page,
  446. @RequestParam(required = false, defaultValue = "100") int size,
  447. @RequestParam(required = false) Integer courseId,
  448. @RequestParam(required = false) Integer timeId,
  449. HttpSession session) {
  450. Page<CourseStudentOnline> p = courseStudentOnlineService.listAdmin(page, size, courseId, timeId);
  451. List<CourseStudentOnlineListDto> pr = Transform.convert(p, CourseStudentOnlineListDto.class);
  452. // 绑定用户
  453. Collection userIds = Transform.getIds(p, CourseStudentOnline.class, "userId");
  454. List<User> userList = usersService.select(userIds);
  455. Transform.combine(pr, userList, CourseStudentOnlineListDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  456. // 绑定时间段
  457. Collection timeIds = Transform.getIds(p, CourseStudentOnline.class, "timeId");
  458. List<CourseTime> timeList = courseTimeService.select(timeIds);
  459. Transform.combine(pr, timeList, CourseStudentOnlineListDto.class, "timeId", "time", CourseTime.class, "id", CourseTimeExtendDto.class);
  460. return ResponseHelp.success(pr, page, size, p.getTotal());
  461. }
  462. @RequestMapping(value = "/student/vs/add", method = RequestMethod.POST)
  463. @ApiOperation(value = "添加vs学员", httpMethod = "POST")
  464. private Response<Boolean> addStudentVs(@RequestBody @Validated UserCourseRecordDto dto){
  465. UserOrderRecord entity = Transform.dtoToEntity(dto);
  466. Date startTime = new Date();
  467. Date endTime = courseExtendService.computeExpire(startTime, dto.getVsNumber(), dto.getCourseId());
  468. entity.setProductType(ProductType.COURSE.key);
  469. entity.setOrderId(0);
  470. entity.setProductId(dto.getCourseId());
  471. entity.setTeacherId(dto.getTeacherId());
  472. entity.setSource("offline");
  473. entity.setIsUsed(1);
  474. entity.setStartTime(startTime);
  475. entity.setEndTime(endTime);
  476. userOrderRecordService.add(entity);
  477. return ResponseHelp.success(true);
  478. }
  479. @RequestMapping(value = "/student/vs/edit", method = RequestMethod.PUT)
  480. @ApiOperation(value = "修改vs学员", httpMethod = "PUT")
  481. private Response<Boolean> editStudentVs(@RequestBody @Validated UserCourseRecordDto dto){
  482. UserOrderRecord entity = Transform.dtoToEntity(dto);
  483. UserOrderRecord in = userOrderRecordService.get(entity.getId());
  484. Date endTime = courseExtendService.computeExpire(in.getStartTime(), dto.getVsNumber(), dto.getCourseId());
  485. entity.setEndTime(endTime);
  486. userOrderRecordService.edit(entity);
  487. return ResponseHelp.success(true);
  488. }
  489. @RequestMapping(value = "/student/vs/delete", method = RequestMethod.DELETE)
  490. @ApiOperation(value = "删除vs学员", httpMethod = "DELETE")
  491. private Response<Boolean> deleteStudentVs(@RequestParam int id){
  492. userOrderRecordService.delete(id);
  493. return ResponseHelp.success(true);
  494. }
  495. @RequestMapping(value = "/student/vs/list", method = RequestMethod.GET)
  496. @ApiOperation(value = "获取vs学员", httpMethod = "GET")
  497. private Response<PageMessage<UserCourseStudentRecordInfoDto>> listStudentVs(
  498. @RequestParam(required = false, defaultValue = "1") int page,
  499. @RequestParam(required = false, defaultValue = "100") int size,
  500. @RequestParam(required = false) Integer courseId,
  501. @RequestParam(required = false) Integer userId
  502. ){
  503. Page<UserOrderRecord> p = userOrderRecordService.listWithStudentAdmin(page, size, courseId, userId);
  504. List<UserCourseStudentRecordInfoDto> pr = Transform.convert(p, UserCourseStudentRecordInfoDto.class);
  505. // 绑定用户
  506. Collection userIds = Transform.getIds(p, UserOrderRecord.class, "userId");
  507. List<User> userList = usersService.select(userIds);
  508. Transform.combine(pr, userList, UserCourseStudentRecordInfoDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  509. // 绑定教师
  510. Collection teacherIds = Transform.getIds(p, UserOrderRecord.class, "teacherId");
  511. List<CourseTeacher> teacherList = courseTeacherService.select(teacherIds);
  512. Transform.combine(pr, teacherList, UserCourseStudentRecordInfoDto.class, "teacherId", "teacher", CourseTeacher.class, "id", CourseTeacherExtendDto.class);
  513. return ResponseHelp.success(pr, page, size, p.getTotal());
  514. }
  515. @RequestMapping(value = "/study/list", method = RequestMethod.GET)
  516. @ApiOperation(value = "获取学习记录", httpMethod = "GET")
  517. private Response<PageMessage<UserCourseStudyRecordInfoDto>> listStudy(
  518. @RequestParam(required = false, defaultValue = "1") int page,
  519. @RequestParam(required = false, defaultValue = "100") int size,
  520. @RequestParam(required = false) Integer[] ids,
  521. @RequestParam(required = false) String courseModule,
  522. @RequestParam(required = false) Integer structId,
  523. @RequestParam(required = false) Integer courseId,
  524. @RequestParam(required = false) Integer userId,
  525. @RequestParam(required = false) String teacher
  526. ){
  527. Page<UserOrderRecord> p;
  528. if (ids != null && ids.length > 0){
  529. p = userOrderRecordService.select(ids);
  530. }else{
  531. p = userOrderRecordService.listWithStudyAdmin(page, size, CourseModule.ValueOf(courseModule), structId, courseId, userId, teacher);
  532. }
  533. List<UserCourseStudyRecordInfoDto> pr = Transform.convert(p, UserCourseStudyRecordInfoDto.class);
  534. // 绑定用户
  535. Collection userIds = Transform.getIds(p, UserOrderRecord.class, "userId");
  536. List<User> userList = usersService.select(userIds);
  537. Transform.combine(pr, userList, UserCourseStudyRecordInfoDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  538. // 绑定课程
  539. Map courseMap = Transform.getMap(p, UserOrderRecord.class, "id", "productId");
  540. Transform.combine(pr, courseMap, UserCourseStudyRecordInfoDto.class, "id", "courseId");
  541. Collection courseIds = Transform.getIds(p, UserOrderRecord.class, "productId");
  542. List<Course> courseList = courseService.select(courseIds);
  543. Transform.combine(pr, courseList, UserCourseStudyRecordInfoDto.class, "courseId", "course", Course.class, "id", CourseExtendDto.class);
  544. // 绑定老师
  545. Collection teacherIds = Transform.getIds(p, UserOrderRecord.class, "teacherId");
  546. List<CourseTeacher> teacherList = courseTeacherService.select(teacherIds);
  547. Map teacherMap = Transform.getMap(teacherList, CourseTeacher.class,"id", "realname");
  548. Transform.combine(pr, teacherMap, UserCourseStudyRecordInfoDto.class, "teacherId", "teacher");
  549. return ResponseHelp.success(pr, page, size, p.getTotal());
  550. }
  551. @RequestMapping(value = "/ask/edit", method = RequestMethod.PUT)
  552. @ApiOperation(value = "修改提问信息", httpMethod = "PUT")
  553. public Response<Boolean> edit(@RequestBody @Validated UserAskCourseDto dto, HttpServletRequest request) {
  554. UserAskCourse entity = Transform.dtoToEntity(dto);
  555. UserAskCourse in = userAskCourseService.get(entity.getId());
  556. // 调整回答
  557. if(entity.getAnswer() != null && (!entity.getAnswer().isEmpty() || !in.getAnswer().equals(entity.getAnswer()))){
  558. entity.setAnswerTime(new Date());
  559. entity.setAnswerStatus(AskStatus.ANSWER.index);
  560. Manager manager = shiroHelp.getLoginManager();
  561. entity.setManagerId(manager.getId());
  562. }
  563. if (dto.getIgnoreStatus() != null && dto.getIgnoreStatus() > 0){
  564. entity.setAnswerStatus(AskStatus.IGNORE.index);
  565. }
  566. entity = userAskCourseService.edit(entity);
  567. if (dto.getOther() !=null && dto.getOther().length > 0){
  568. // 更新回答排序
  569. userAskCourseService.updateOrder(dto.getOther());
  570. }
  571. managerLogService.log(request);
  572. return ResponseHelp.success(true);
  573. }
  574. @RequestMapping(value = "/ask/detail", method = RequestMethod.GET)
  575. @ApiOperation(value = "提问详情", httpMethod = "GET")
  576. public Response<UserAskCourseDetailDto> detail(@RequestParam int id, HttpServletRequest request) {
  577. UserAskCourse entity = userAskCourseService.get(id);
  578. UserAskCourseDetailDto dto = Transform.convert(entity, UserAskCourseDetailDto.class);
  579. if (entity.getManagerId() != null && entity.getManagerId() > 0){
  580. Manager manager = managerService.get(entity.getManagerId());
  581. if (manager != null)
  582. dto.setManager(Transform.convert(manager, ManagerExtendDto.class));
  583. }
  584. User user = usersService.get(entity.getUserId());
  585. dto.setUser(Transform.convert(user, UserExtendDto.class));
  586. Course course = courseService.get(entity.getCourseId());
  587. dto.setCourse(Transform.convert(course, CourseExtendDto.class));
  588. CourseNo courseNo = courseNoService.get(entity.getCourseNoId());
  589. dto.setCourseNo(Transform.convert(courseNo, CourseNoExtendDto.class));
  590. // 所有回答
  591. List<UserAskCourse> userAskList = userAskCourseService.listByCoursePosition(entity.getCourseNoId(), entity.getPosition(), true);
  592. dto.setOthers(Transform.convert(userAskList, UserAskCourseExtendDto.class));
  593. return ResponseHelp.success(dto);
  594. }
  595. @RequestMapping(value = "/ask/list", method = RequestMethod.GET)
  596. @ApiOperation(value = "提问列表", httpMethod = "GET")
  597. public Response<PageMessage<UserAskCourseListDto>> list(
  598. @RequestParam(required = false, defaultValue = "1") int page,
  599. @RequestParam(required = false, defaultValue = "100") int size,
  600. @RequestParam(required = false) Integer structId,
  601. @RequestParam(required = false) Integer courseId,
  602. @RequestParam(required = false) Integer answerStatus,
  603. @RequestParam(required = false) Integer showStatus,
  604. @RequestParam(required = false) Integer userId,
  605. @RequestParam(required = false) Integer moneyRang,
  606. @RequestParam(required = false, defaultValue = "id") String order,
  607. @RequestParam(required = false, defaultValue = "desc") String direction,
  608. HttpSession session) {
  609. Page<UserAskCourse> p = userAskCourseService.listWithCourse(page, size, structId, courseId, AskStatus.ValueOf(answerStatus), showStatus, userId, MoneyRange.ValueOf(moneyRang), order, DirectionStatus.ValueOf(direction));
  610. List<UserAskCourseListDto> pr = Transform.convert(p, UserAskCourseListDto.class);
  611. // 绑定用户
  612. Collection userIds = Transform.getIds(p, UserAskQuestion.class, "userId");
  613. List<User> userList = usersService.select(userIds);
  614. Transform.combine(pr, userList, UserAskQuestionListDto.class, "userId", "user", User.class, "id", UserExtendDto.class);
  615. // 绑定管理员
  616. Collection managerIds = Transform.getIds(p, UserAskQuestion.class, "managerId");
  617. List<Manager> managerList = managerService.select(managerIds);
  618. Transform.combine(pr, managerList, UserAskQuestionListDto.class, "managerId", "manager", Manager.class, "id", ManagerExtendDto.class);
  619. // 绑定课程
  620. Collection courseIds = Transform.getIds(p, UserAskCourse.class, "courseId");
  621. List<Course> courseList = courseService.select(courseIds);
  622. Transform.combine(pr, courseList, UserAskCourseListDto.class, "courseId", "course", Course.class, "id", CourseExtendDto.class);
  623. // 绑定课时
  624. Collection courseNoIds = Transform.getIds(p, UserAskCourse.class, "courseNoId");
  625. List<CourseNo> courseNoList = courseNoService.select(courseNoIds);
  626. Transform.combine(pr, courseNoList, UserAskCourseListDto.class, "courseNoId", "courseNo", CourseNo.class, "id", CourseNoExtendDto.class);
  627. return ResponseHelp.success(pr, page, size, p.getTotal());
  628. }
  629. }