CourseController.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. package com.zhongzheng.controller.course;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Arrays;
  5. import java.util.stream.Collectors;
  6. import cn.hutool.core.bean.BeanUtil;
  7. import cn.hutool.core.lang.Validator;
  8. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  9. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  10. import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  11. import com.zhongzheng.common.exception.CustomException;
  12. import com.zhongzheng.common.utils.ServletUtils;
  13. import com.zhongzheng.modules.course.bo.*;
  14. import com.zhongzheng.modules.course.service.ICourseService;
  15. import com.zhongzheng.modules.course.vo.CourseVo;
  16. import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
  17. import com.zhongzheng.modules.goods.vo.ExportLiveGoodsVo;
  18. import com.zhongzheng.modules.goods.vo.GoodsUserVo;
  19. import com.zhongzheng.modules.order.vo.OrderGoodsLiveExportVo;
  20. import com.zhongzheng.modules.order.vo.OrderGoodsVo;
  21. import com.zhongzheng.modules.user.domain.User;
  22. import com.zhongzheng.modules.user.entity.ClientLoginUser;
  23. import com.zhongzheng.modules.user.service.IUserService;
  24. import com.zhongzheng.modules.user.service.IUserStudyRecordService;
  25. import lombok.RequiredArgsConstructor;
  26. import org.springframework.security.access.prepost.PreAuthorize;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.web.bind.annotation.GetMapping;
  29. import org.springframework.web.bind.annotation.PostMapping;
  30. import org.springframework.web.bind.annotation.PutMapping;
  31. import org.springframework.web.bind.annotation.DeleteMapping;
  32. import org.springframework.web.bind.annotation.PathVariable;
  33. import org.springframework.web.bind.annotation.RequestBody;
  34. import org.springframework.web.bind.annotation.RequestMapping;
  35. import org.springframework.web.bind.annotation.RestController;
  36. import com.zhongzheng.common.annotation.Log;
  37. import com.zhongzheng.common.core.controller.BaseController;
  38. import com.zhongzheng.common.core.domain.AjaxResult;
  39. import com.zhongzheng.common.enums.BusinessType;
  40. import com.zhongzheng.common.utils.poi.ExcelUtil;
  41. import com.zhongzheng.common.core.page.TableDataInfo;
  42. import io.swagger.annotations.Api;
  43. import io.swagger.annotations.ApiOperation;
  44. /**
  45. * 课程Controller
  46. *
  47. * @author hjl
  48. * @date 2021-10-09
  49. */
  50. @Api(value = "课程控制器", tags = {"课程管理"})
  51. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  52. @RestController
  53. @RequestMapping("/course")
  54. public class CourseController extends BaseController {
  55. private final ICourseService iCourseService;
  56. private final IUserStudyRecordService iUserStudyRecordService;
  57. private final IUserService iUserService;
  58. /**
  59. * 查询课程列表
  60. */
  61. @ApiOperation("查询课程列表")
  62. @PreAuthorize("@ss.hasPermi('system:course:list')")
  63. @GetMapping("/list")
  64. public TableDataInfo<CourseVo> list(CourseQueryBo bo) {
  65. startPage();
  66. List<CourseVo> list = iCourseService.selectList(bo);
  67. return getDataTable(list);
  68. }
  69. /**
  70. * 课程批量删除
  71. */
  72. @ApiOperation("课程批量删除")
  73. @PostMapping("/batch/del")
  74. public AjaxResult<Void> batchDelCourse(@RequestBody GoodsBatchDelBo bo) {
  75. return toAjax(iCourseService.batchDelCourse(bo) ? 1 : 0);
  76. }
  77. /**
  78. * 导出课程列表
  79. */
  80. /* @ApiOperation("导出课程列表")
  81. @PreAuthorize("@ss.hasPermi('system:course:export')")
  82. @Log(title = "课程", businessType = BusinessType.EXPORT)
  83. @GetMapping("/export")
  84. public AjaxResult<CourseVo> export(CourseQueryBo bo) {
  85. List<CourseVo> list = iCourseService.queryList(bo);
  86. ExcelUtil<CourseVo> util = new ExcelUtil<CourseVo>(CourseVo.class);
  87. return util.exportExcel(list, "课程");
  88. }*/
  89. /**
  90. * 获取课程详细信息
  91. */
  92. @ApiOperation("获取课程详细信息")
  93. @PreAuthorize("@ss.hasPermi('system:course:query')")
  94. @GetMapping("/{courseId}")
  95. public AjaxResult<CourseVo> getInfo(@PathVariable("courseId" ) Long courseId) {
  96. return AjaxResult.success(iCourseService.selectById(courseId));
  97. }
  98. /**
  99. * 新增课程
  100. */
  101. @ApiOperation("新增课程")
  102. @PreAuthorize("@ss.hasPermi('system:course:add')")
  103. @Log(title = "课程", businessType = BusinessType.INSERT)
  104. @PostMapping()
  105. public AjaxResult<Long> add(@RequestBody CourseAddBo bo) {
  106. return AjaxResult.success(iCourseService.insertByAddBo(bo));
  107. }
  108. /**
  109. * 修改课程
  110. */
  111. @ApiOperation("修改课程")
  112. @PreAuthorize("@ss.hasPermi('system:course:edit')")
  113. @Log(title = "课程", businessType = BusinessType.UPDATE)
  114. @PostMapping("/edit")
  115. public AjaxResult<Void> edit(@RequestBody CourseEditBo bo) {
  116. return toAjax(iCourseService.updateByEditBo(bo) ? 1 : 0);
  117. }
  118. /**
  119. * 课程统计报表
  120. */
  121. @ApiOperation("课程统计报表")
  122. @GetMapping("/statement")
  123. public TableDataInfo<CourseStatementVo> getCourseStatement(CourseStatementBo bo) {
  124. startPage();
  125. List<CourseStatementVo> list = iUserStudyRecordService.getCourseStatement(bo);
  126. return getDataTable(list);
  127. }
  128. /**
  129. * 课程统计报表导出
  130. */
  131. @ApiOperation("课程统计报表导出")
  132. @GetMapping("/statement/export")
  133. public AjaxResult<CourseStatementVo> exportCourseStatement(CourseStatementBo bo) {
  134. List<CourseStatementVo> list = iUserStudyRecordService.getCourseStatement(bo);
  135. if (CollectionUtils.isNotEmpty(list)){
  136. list = list.stream().map(item -> CourseStatementVo.createExportVo(item)).collect(Collectors.toList());
  137. }
  138. ExcelUtil<CourseStatementVo> util = new ExcelUtil<>(CourseStatementVo.class);
  139. return util.exportExcel(list,"课程学习统计");
  140. }
  141. /**
  142. * 课程详情统计
  143. */
  144. @ApiOperation("课程详情统计")
  145. @GetMapping("/detail/statistics")
  146. public TableDataInfo<CourseSectionDetailVo> getCourseDetailStatistics(CourseSectionDetailBo bo) {
  147. startPage();
  148. List<CourseSectionDetailVo> list = iUserStudyRecordService.getCourseDetailStatistics(bo);
  149. return getDataTable(list);
  150. }
  151. /**
  152. * 课程详情统计导出
  153. */
  154. @ApiOperation("课程详情统计导出")
  155. @GetMapping("/detail/statistics/export")
  156. public AjaxResult<CourseSectionDetailVo> exportCourseDetailStatistics(CourseSectionDetailBo bo) {
  157. List<CourseSectionDetailVo> list = iUserStudyRecordService.getCourseDetailStatistics(bo);
  158. if (CollectionUtils.isNotEmpty(list)){
  159. list.forEach(item -> {
  160. item.setPurchaseStatusStr(ObjectUtils.isNotNull(item.getPurchaseStatus()) && item.getPurchaseStatus() == 1?"已开课":"未开课");
  161. });
  162. }
  163. ExcelUtil<CourseSectionDetailVo> util = new ExcelUtil<>(CourseSectionDetailVo.class);
  164. return util.exportExcel(list,"课程学员学习统计");
  165. }
  166. /**
  167. * 学员观看记录
  168. */
  169. @ApiOperation("学员观看记录")
  170. @GetMapping("/user/watch")
  171. public AjaxResult<List<UserWatchStatisticsVo>> getUserWatchStatistics(CourseSectionDetailBo bo) {
  172. List<UserWatchStatisticsVo> list = iUserStudyRecordService.getUserWatchStatistics(bo);
  173. return AjaxResult.success(list);
  174. }
  175. /**
  176. * 删除课程
  177. */
  178. /* @ApiOperation("删除课程")
  179. @PreAuthorize("@ss.hasPermi('system:course:remove')")
  180. @Log(title = "课程" , businessType = BusinessType.DELETE)
  181. @DeleteMapping("/{courseIds}")
  182. public AjaxResult<Void> remove(@PathVariable Long[] courseIds) {
  183. return toAjax(iCourseService.deleteWithValidByIds(Arrays.asList(courseIds), true) ? 1 : 0);
  184. }*/
  185. /**
  186. * 查询课程列表
  187. */
  188. @ApiOperation("查询用户拥有的商品")
  189. @GetMapping("/goodsList")
  190. public TableDataInfo<GoodsUserVo> goodsList(CourseQueryBo bo) {
  191. User user = iUserService.getOne(new LambdaQueryWrapper<User>()
  192. .eq(User::getTelphone, bo.getTelphone()).last("limit 1"));
  193. if(Validator.isEmpty(user)){
  194. throw new CustomException("该用户不存在");
  195. }
  196. startPage();
  197. bo.setUserId(user.getUserId());
  198. List<GoodsUserVo> list = iCourseService.goodsList(bo);
  199. return getDataTable(list);
  200. }
  201. }