123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- package com.zhongzheng.controller.course;
- import java.util.*;
- import java.util.stream.Collectors;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.lang.Validator;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
- import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
- import com.zhongzheng.common.exception.CustomException;
- import com.zhongzheng.common.utils.ServletUtils;
- import com.zhongzheng.modules.course.bo.*;
- import com.zhongzheng.modules.course.service.ICourseService;
- import com.zhongzheng.modules.course.vo.CourseVo;
- import com.zhongzheng.modules.course.vo.GoodsBatchListVo;
- import com.zhongzheng.modules.goods.bo.GoodsBatchDelBo;
- import com.zhongzheng.modules.goods.vo.ExportLiveGoodsVo;
- import com.zhongzheng.modules.goods.vo.GoodsUserVo;
- import com.zhongzheng.modules.order.vo.OrderGoodsLiveExportVo;
- import com.zhongzheng.modules.order.vo.OrderGoodsVo;
- import com.zhongzheng.modules.user.domain.User;
- import com.zhongzheng.modules.user.entity.ClientLoginUser;
- import com.zhongzheng.modules.user.service.IUserService;
- import com.zhongzheng.modules.user.service.IUserStudyRecordService;
- import lombok.RequiredArgsConstructor;
- import org.springframework.security.access.prepost.PreAuthorize;
- 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.PutMapping;
- import org.springframework.web.bind.annotation.DeleteMapping;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import com.zhongzheng.common.annotation.Log;
- import com.zhongzheng.common.core.controller.BaseController;
- import com.zhongzheng.common.core.domain.AjaxResult;
- import com.zhongzheng.common.enums.BusinessType;
- import com.zhongzheng.common.utils.poi.ExcelUtil;
- import com.zhongzheng.common.core.page.TableDataInfo;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- /**
- * 课程Controller
- *
- * @author hjl
- * @date 2021-10-09
- */
- @Api(value = "课程控制器", tags = {"课程管理"})
- @RequiredArgsConstructor(onConstructor_ = @Autowired)
- @RestController
- @RequestMapping("/course")
- public class CourseController extends BaseController {
- private final ICourseService iCourseService;
- private final IUserStudyRecordService iUserStudyRecordService;
- private final IUserService iUserService;
- /**
- * 查询课程列表
- */
- @ApiOperation("查询课程列表")
- @PreAuthorize("@ss.hasPermi('system:course:list')")
- @GetMapping("/list")
- public TableDataInfo<CourseVo> list(CourseQueryBo bo) {
- startPage();
- List<CourseVo> list = iCourseService.selectList(bo);
- return getDataTable(list);
- }
- /**
- * 课程批量删除
- */
- @ApiOperation("课程批量删除")
- @PostMapping("/batch/del")
- public AjaxResult<Void> batchDelCourse(@RequestBody GoodsBatchDelBo bo) {
- return toAjax(iCourseService.batchDelCourse(bo) ? 1 : 0);
- }
- /**
- * 导出课程列表
- */
- /* @ApiOperation("导出课程列表")
- @PreAuthorize("@ss.hasPermi('system:course:export')")
- @Log(title = "课程", businessType = BusinessType.EXPORT)
- @GetMapping("/export")
- public AjaxResult<CourseVo> export(CourseQueryBo bo) {
- List<CourseVo> list = iCourseService.queryList(bo);
- ExcelUtil<CourseVo> util = new ExcelUtil<CourseVo>(CourseVo.class);
- return util.exportExcel(list, "课程");
- }*/
- /**
- * 获取课程详细信息
- */
- @ApiOperation("获取课程详细信息")
- @PreAuthorize("@ss.hasPermi('system:course:query')")
- @GetMapping("/{courseId}")
- public AjaxResult<CourseVo> getInfo(@PathVariable("courseId" ) Long courseId) {
- return AjaxResult.success(iCourseService.selectById(courseId));
- }
- /**
- * 新增课程
- */
- @ApiOperation("新增课程")
- @PreAuthorize("@ss.hasPermi('system:course:add')")
- @Log(title = "课程", businessType = BusinessType.INSERT)
- @PostMapping()
- public AjaxResult<Long> add(@RequestBody CourseAddBo bo) {
- return AjaxResult.success(iCourseService.insertByAddBo(bo));
- }
- /**
- * 修改课程
- */
- @ApiOperation("修改课程")
- @PreAuthorize("@ss.hasPermi('system:course:edit')")
- @Log(title = "课程", businessType = BusinessType.UPDATE)
- @PostMapping("/edit")
- public AjaxResult<Void> edit(@RequestBody CourseEditBo bo) {
- return toAjax(iCourseService.updateByEditBo(bo) ? 1 : 0);
- }
- /**
- * 课程统计报表
- */
- @ApiOperation("课程统计报表")
- @GetMapping("/statement")
- public TableDataInfo<CourseStatementVo> getCourseStatement(CourseStatementBo bo) {
- startPage();
- List<CourseStatementVo> list = iUserStudyRecordService.getCourseStatement(bo);
- return getDataTable(list);
- }
- /**
- * 课程统计报表导出
- */
- @ApiOperation("课程统计报表导出")
- @GetMapping("/statement/export")
- public AjaxResult<CourseStatementVo> exportCourseStatement(CourseStatementBo bo) {
- List<CourseStatementVo> list = iUserStudyRecordService.getCourseStatement(bo);
- if (CollectionUtils.isNotEmpty(list)){
- list = list.stream().map(item -> CourseStatementVo.createExportVo(item)).collect(Collectors.toList());
- }
- ExcelUtil<CourseStatementVo> util = new ExcelUtil<>(CourseStatementVo.class);
- return util.exportExcel(list,"课程学习统计");
- }
- /**
- * 课程详情统计
- */
- @ApiOperation("课程详情统计")
- @GetMapping("/detail/statistics")
- public TableDataInfo<CourseSectionDetailVo> getCourseDetailStatistics(CourseSectionDetailBo bo) {
- startPage();
- List<CourseSectionDetailVo> list = iUserStudyRecordService.getCourseDetailStatistics(bo);
- return getDataTable(list);
- }
- /**
- * 课程详情统计导出
- */
- @ApiOperation("课程详情统计导出")
- @GetMapping("/detail/statistics/export")
- public AjaxResult<CourseSectionDetailVo> exportCourseDetailStatistics(CourseSectionDetailBo bo) {
- List<CourseSectionDetailVo> list = iUserStudyRecordService.getCourseDetailStatistics(bo);
- if (CollectionUtils.isNotEmpty(list)){
- list.forEach(item -> {
- item.setPurchaseStatusStr(ObjectUtils.isNotNull(item.getPurchaseStatus()) && item.getPurchaseStatus() == 1?"已开课":"未开课");
- });
- }
- ExcelUtil<CourseSectionDetailVo> util = new ExcelUtil<>(CourseSectionDetailVo.class);
- return util.exportExcel(list,"课程学员学习统计");
- }
- /**
- * 学员观看记录
- */
- @ApiOperation("学员观看记录")
- @GetMapping("/user/watch")
- public AjaxResult<List<UserWatchStatisticsVo>> getUserWatchStatistics(CourseSectionDetailBo bo) {
- List<UserWatchStatisticsVo> list = iUserStudyRecordService.getUserWatchStatistics(bo);
- return AjaxResult.success(list);
- }
- /**
- * 删除课程
- */
- /* @ApiOperation("删除课程")
- @PreAuthorize("@ss.hasPermi('system:course:remove')")
- @Log(title = "课程" , businessType = BusinessType.DELETE)
- @DeleteMapping("/{courseIds}")
- public AjaxResult<Void> remove(@PathVariable Long[] courseIds) {
- return toAjax(iCourseService.deleteWithValidByIds(Arrays.asList(courseIds), true) ? 1 : 0);
- }*/
- /**
- * 查询课程列表
- */
- @ApiOperation("查询用户拥有的商品")
- @GetMapping("/goodsList")
- public TableDataInfo<GoodsUserVo> goodsList(CourseQueryBo bo) {
- User user = iUserService.getOne(new LambdaQueryWrapper<User>()
- .eq(User::getTelphone, bo.getTelphone()).last("limit 1"));
- if(Validator.isEmpty(user)){
- throw new CustomException("该用户不存在");
- }
- startPage();
- bo.setUserId(user.getUserId());
- List<GoodsUserVo> list = iCourseService.goodsList(bo);
- return getDataTable(list);
- }
- @ApiOperation("批量查询用户拥有的商品进度")
- @GetMapping("/goodsBatchList")
- public AjaxResult<List<GoodsBatchListVo>> goodsBatchList(CourseQueryBo bo) {
- List<GoodsBatchListVo> listVos = new ArrayList<>();
- if (CollectionUtils.isEmpty(bo.getTelphoneList())){
- return null;
- }
- for(CourseProgressQueryBo queryBo : bo.getTelphoneList()){
- User user = iUserService.getOne(new LambdaQueryWrapper<User>()
- .eq(User::getTelphone, queryBo.getTelphone()).last("limit 1"));
- if(Validator.isEmpty(user)){
- continue;
- }
- GoodsBatchListVo vo = new GoodsBatchListVo();
- vo.setUserId(user.getUserId());
- vo.setGoodsId(queryBo.getGoodsId());
- vo.setTelphone(queryBo.getTelphone());
- List<GoodsUserVo> list = iCourseService.goodsProgressList(bo);
- vo.setList(list);
- }
- if (CollectionUtils.isEmpty(listVos)){
- return null;
- }
- return AjaxResult.success(listVos);
- }
- }
|