diff --git a/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java index 4758229..29b19b9 100644 --- a/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/ResourceLearningRecordController.java @@ -1,103 +1,103 @@ -//package com.teaching.backend.controller.records; -// -//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.ResultUtils; -//import com.teaching.backend.filter.ValidateParams; -//import com.teaching.backend.mapper.records.ResourceLearningRecordMapper; -//import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; -//import com.teaching.backend.model.entity.records.ResourceLearningRecord; -//import com.teaching.backend.service.impl.records.KnowledgeLearningRecordServiceImpl; -//import com.teaching.backend.service.impl.records.ResourceLearningRecordServiceImpl; -//import com.teaching.backend.utils.UploadUtils; -//import io.swagger.annotations.ApiOperation; -//import org.springframework.http.MediaType; -//import org.springframework.web.bind.annotation.*; -//import org.springframework.web.multipart.MultipartFile; -// -//import javax.annotation.Resource; -//import javax.servlet.http.HttpServletRequest; -//import javax.servlet.http.HttpServletResponse; -//import java.io.File; -//import java.io.IOException; -//import java.util.List; -// -//@RestController -//@RequestMapping("/api/resourcelearningrecords") -//public class ResourceLearningRecordController { +package com.teaching.backend.controller.records; -// @Resource -// private ResourceLearningRecordServiceImpl resourceLearningRecordService; -// @Resource -// private ResourceLearningRecordMapper resourceLearningRecordMapper; -// -// -// -// @ApiOperation("添加资源学习记录") -//// @ValidateParams({"userId","type","coursesId"}) -// @PostMapping("/saverecords") -// public BaseResponse saveResourceRecords(@RequestBody ResourceLearningRecord resourceLearningRecord) { -// return resourceLearningRecordService.saveCoursesRecords(resourceLearningRecord); -// } -// -// /** -// * 获取当前登录用户的学习资源记录 -// * @param pagenum -// * @param pagesize -// * @return -// */ -// @ApiOperation("根据用户id查询学习记录") -// @ValidateParams({"userId"}) -// @GetMapping("/page") -// public BaseResponse getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum, -// @RequestParam(value = "pagesize", defaultValue = "10") int pagesize, -// @RequestParam String userId, -// @RequestParam String courseId, -// @RequestParam String knowledgeId){ -// return resourceLearningRecordService.getPage(pagenum, pagesize, userId, knowledgeId,courseId); -// -// } -// /** -// * 根据ids删除 -// * @param ids -// * @return -// */ -// @ApiOperation("学习记录删除") -// @DeleteMapping("/delete") -// public BaseResponse deleteRecords(@RequestParam List ids){ -// return resourceLearningRecordService.removeResourceRecord(ids); -// } -// -// /** -// * 统计单个学生学习资源数量 -// * @param userId -// * @return -// */ -// @ApiOperation("统计单个学生学习资源数量") -// @GetMapping("/countresourcenumber") -// public BaseResponse countResourceNumber(@RequestParam String userId) { -// return ResultUtils.success(resourceLearningRecordMapper.selectDistinctResourceIdsByUser(userId).size()); -// } -// -// -// @ApiOperation("上传图片") -// @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) -// public BaseResponse upload(@RequestPart("filedata") MultipartFile filedata) throws IOException { -// //调用ser -// System.out.println(filedata.getResource()); -// System.out.println(UploadUtils.saveFileByDirectory(filedata)); -//// File file = filedata.getResource().getFile(); -//// UploadUtils.Chunk(file); -//// UploadUtils.Merge(file); -// //源文件 -//// File sourseFile = (File) file; -// return ResultUtils.success("hello"); -// }; -// -// @GetMapping("/bf") -// public BaseResponse bf(@RequestParam String path, File file,HttpServletRequest request, HttpServletResponse response){ -// File sourseFile = new File(path); -// return ResultUtils.success(path); -// }; -// -//} +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.filter.ValidateParams; +import com.teaching.backend.mapper.records.ResourceLearningRecordMapper; +import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; +import com.teaching.backend.model.entity.records.ResourceLearningRecord; +import com.teaching.backend.service.impl.records.KnowledgeLearningRecordServiceImpl; +import com.teaching.backend.service.impl.records.ResourceLearningRecordServiceImpl; +import com.teaching.backend.utils.UploadUtils; +import io.swagger.annotations.ApiOperation; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.IOException; +import java.util.List; + +@RestController +@RequestMapping("/api/resourcelearningrecords") +public class ResourceLearningRecordController { + + @Resource + private ResourceLearningRecordServiceImpl resourceLearningRecordService; + @Resource + private ResourceLearningRecordMapper resourceLearningRecordMapper; + + + + @ApiOperation("添加资源学习记录") +// @ValidateParams({"userId","type","coursesId"}) + @PostMapping("/saverecords") + public BaseResponse saveResourceRecords(@RequestBody ResourceLearningRecord resourceLearningRecord) { + return resourceLearningRecordService.saveCoursesRecords(resourceLearningRecord); + } + + /** + * 获取当前登录用户的学习资源记录 + * @param pagenum + * @param pagesize + * @return + */ + @ApiOperation("根据用户id查询学习记录") + @ValidateParams({"userId"}) + @GetMapping("/page") + public BaseResponse getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum, + @RequestParam(value = "pagesize", defaultValue = "10") int pagesize, + @RequestParam String userId, + @RequestParam String courseId, + @RequestParam String knowledgeId){ + return resourceLearningRecordService.getPage(pagenum, pagesize, userId, knowledgeId,courseId); + + } + /** + * 根据ids删除 + * @param ids + * @return + */ + @ApiOperation("学习记录删除") + @DeleteMapping("/delete") + public BaseResponse deleteRecords(@RequestParam List ids){ + return resourceLearningRecordService.removeResourceRecord(ids); + } + + /** + * 统计单个学生学习资源数量 + * @param userId + * @return + */ + @ApiOperation("统计单个学生学习资源数量") + @GetMapping("/countresourcenumber") + public BaseResponse countResourceNumber(@RequestParam String userId) { + return ResultUtils.success(resourceLearningRecordMapper.selectDistinctResourceIdsByUser(userId).size()); + } + + + @ApiOperation("上传图片") + @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public BaseResponse upload(@RequestPart("filedata") MultipartFile filedata) throws IOException { + //调用ser + System.out.println(filedata.getResource()); + System.out.println(UploadUtils.saveFileByDirectory(filedata)); +// File file = filedata.getResource().getFile(); +// UploadUtils.Chunk(file); +// UploadUtils.Merge(file); + //源文件 +// File sourseFile = (File) file; + return ResultUtils.success("hello"); + }; + + @GetMapping("/bf") + public BaseResponse bf(@RequestParam String path, File file,HttpServletRequest request, HttpServletResponse response){ + File sourseFile = new File(path); + return ResultUtils.success(path); + }; + +} diff --git a/src/main/java/com/teaching/backend/mapper/records/ResourceLearningNumberMapper.java b/src/main/java/com/teaching/backend/mapper/records/ResourceLearningNumberMapper.java new file mode 100644 index 0000000..61d1e8b --- /dev/null +++ b/src/main/java/com/teaching/backend/mapper/records/ResourceLearningNumberMapper.java @@ -0,0 +1,17 @@ +package com.teaching.backend.mapper.records; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.teaching.backend.model.entity.records.ResourceLearningNumber; + +/** + *

+ * Mapper 接口 + *

+ * + * @author author + * @since 2024-07-29 + */ +public interface ResourceLearningNumberMapper extends BaseMapper { + +} diff --git a/src/main/java/com/teaching/backend/model/entity/records/ResourceLearningNumber.java b/src/main/java/com/teaching/backend/model/entity/records/ResourceLearningNumber.java new file mode 100644 index 0000000..57638e2 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/entity/records/ResourceLearningNumber.java @@ -0,0 +1,47 @@ +package com.teaching.backend.model.entity.records; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + *

+ * + *

+ * + * @author author + * @since 2024-07-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("resource_learning_number") +@ApiModel(value="ResourceLearningNumber对象", description="") +public class ResourceLearningNumber implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "资源学习记录id") + @TableId(value = "id", type = IdType.ASSIGN_ID) + private String id; + + @ApiModelProperty(value = "课程id") + private String courseId; + + @ApiModelProperty(value = "知识点id") + private String knowledgeId; + + @ApiModelProperty(value = "资源id") + private String resourceId; + + @ApiModelProperty(value = "学习人数") + private Integer number; + + +} diff --git a/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningNumberServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningNumberServiceImpl.java new file mode 100644 index 0000000..d6d4e71 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningNumberServiceImpl.java @@ -0,0 +1,22 @@ +package com.teaching.backend.service.impl.records; + + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.teaching.backend.mapper.records.ResourceLearningNumberMapper; +import com.teaching.backend.model.entity.records.ResourceLearningNumber; +import com.teaching.backend.service.records.IResourceLearningNumberService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author author + * @since 2024-07-29 + */ +@Service +public class ResourceLearningNumberServiceImpl extends ServiceImpl implements IResourceLearningNumberService { + +} diff --git a/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java index be8672c..293c056 100644 --- a/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/records/ResourceLearningRecordServiceImpl.java @@ -1,127 +1,125 @@ -//package com.teaching.backend.service.impl.records; -// -// -//import cn.hutool.core.bean.BeanUtil; -//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.ResultUtils; -//import com.teaching.backend.mapper.records.ResourceLearningRecordMapper; -//import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; -//import com.teaching.backend.model.entity.records.ResourceLearningRecord; -//import com.teaching.backend.model.entity.resource.ResourceLearningNumber; -//import com.teaching.backend.model.vo.records.KnowledgeLearningRecordVo; -//import com.teaching.backend.model.vo.records.ResourceLearingRecordVo; -//import com.teaching.backend.service.impl.resource.ResourceLearningNumberServiceImpl; -//import com.teaching.backend.service.records.IResourceLearningRecordService; -//import org.springframework.stereotype.Service; -// -//import javax.annotation.Resource; -//import java.text.SimpleDateFormat; -//import java.time.LocalDateTime; -//import java.time.ZoneId; -//import java.util.ArrayList; -//import java.util.Date; -//import java.util.List; -// -///** -// *

-// * 服务实现类 -// *

-// * -// * @author author -// * @since 2024-07-24 -// */ -//@Service -//public class ResourceLearningRecordServiceImpl extends ServiceImpl implements IResourceLearningRecordService { -// -// @Resource -// private ResourceLearningNumberServiceImpl resourceLearningNumberService; -// -// @Override -// public BaseResponse saveCoursesRecords(ResourceLearningRecord resourceLearningRecord) { -// //课程id -// String courseId = resourceLearningRecord.getCoursesId(); -// String knowledgeId = resourceLearningRecord.getKnowledgeId(); -// String resourceId = resourceLearningRecord.getResourceId(); -// String userId = resourceLearningRecord.getUserId(); -// //1.生成学习时间 -// resourceLearningRecord.setTimes(LocalDateTime.now()); -// //2.设置人数 -// //2.1查人数 -// Long count = resourceLearningNumberService.query() -// .eq("course_id", courseId) -// .eq("knowledge_id",knowledgeId) -// .eq("resource_id",resourceId).count(); -// //2.2判断自己是否学习过 -// Long count1 = query() -// .eq("user_id", userId) -// .eq("courses_id", courseId) -// .eq("knowledge_id",knowledgeId) -// .eq("resource_id",resourceId).count(); -// if (count > 0){ -// //自己没学过,人数加1 -// if (count1 == 0){ -// resourceLearningNumberService.update().setSql("number = number + 1") -// .eq("course_id",courseId) -// .eq("knowledge_id",knowledgeId) -// .eq("resource_id",resourceId).update(); -//// System.out.println("用户:"+userId+"第一次学这门课"); -// } -// }else { -// //该课程第一次被学,人数设置为1 -// ResourceLearningNumber resourceLearningNumber = new ResourceLearningNumber(); -// resourceLearningNumber.setNumber(1); -// resourceLearningNumber.setCourseId(courseId); -// resourceLearningNumber.setKnowledgeId(knowledgeId); -// resourceLearningNumber.setResourceId(resourceId); -// resourceLearningNumberService.save(resourceLearningNumber); -// } -// //设置人数 -// String numberId = resourceLearningNumberService.query() -// .eq("course_id", courseId) -// .eq("knowledge_id",knowledgeId) -// .eq("resource_id",resourceId).one().getId(); -// resourceLearningRecord.setNumber(numberId); -// //保存记录 -// save(resourceLearningRecord); -// return ResultUtils.success("添加成功"); -// } -// -// @Override -// public BaseResponse getPage(int pagenum, int pagesize, String userId, String knowledgeId, String courseId) { -////格式化时间 -// String strDateFormat = "yyyy-MM-dd HH:mm:ss"; -// SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); -// //分页查询 -// Page page = query() -// .orderByDesc("times") -// .eq("user_id", userId) -// .eq("knowledge_id",knowledgeId) -// .eq("courses_id",courseId).page(new Page<>(pagenum, pagesize)); -// Page page1 = new Page<>(); -// List records = page.getRecords(); -// BeanUtil.copyProperties(page, page1); -// List recordsVos = new ArrayList<>(); -// //copy集合 -// records.forEach(resourceLearningRecord -> { -// ResourceLearingRecordVo resourceLearingRecordVo = new ResourceLearingRecordVo(); -// BeanUtil.copyProperties(resourceLearningRecord,resourceLearingRecordVo); -// Date date = Date.from(resourceLearningRecord.getTimes().atZone(ZoneId.systemDefault()).toInstant()); -// resourceLearingRecordVo.setTime(sdf.format(date)); -//// //填充学习人数 -// resourceLearingRecordVo.setNumber(resourceLearningNumberService.getById(resourceLearningRecord.getNumber()).getNumber()); -// recordsVos.add(resourceLearingRecordVo); -// }); -// page1.setRecords(recordsVos); -// return ResultUtils.success(page1); -// } -// -// @Override -// public BaseResponse removeResourceRecord(List ids) { -// removeByIds(ids); -// return ResultUtils.success("删除成功!"); -// } -// -// -//} +package com.teaching.backend.service.impl.records; + + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.mapper.records.ResourceLearningRecordMapper; +import com.teaching.backend.model.entity.records.ResourceLearningNumber; +import com.teaching.backend.model.entity.records.ResourceLearningRecord; + +import com.teaching.backend.model.vo.records.ResourceLearingRecordVo; +import com.teaching.backend.service.records.IResourceLearningRecordService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author author + * @since 2024-07-24 + */ +@Service +public class ResourceLearningRecordServiceImpl extends ServiceImpl implements IResourceLearningRecordService { + + @Resource + private ResourceLearningNumberServiceImpl resourceLearningNumberService; + + @Override + public BaseResponse saveCoursesRecords(ResourceLearningRecord resourceLearningRecord) { + //课程id + String courseId = resourceLearningRecord.getCoursesId(); + String knowledgeId = resourceLearningRecord.getKnowledgeId(); + String resourceId = resourceLearningRecord.getResourceId(); + String userId = resourceLearningRecord.getUserId(); + //1.生成学习时间 + resourceLearningRecord.setTimes(LocalDateTime.now()); + //2.设置人数 + //2.1查人数 + Long count = resourceLearningNumberService.query() + .eq("course_id", courseId) + .eq("knowledge_id",knowledgeId) + .eq("resource_id",resourceId).count(); + //2.2判断自己是否学习过 + Long count1 = query() + .eq("user_id", userId) + .eq("courses_id", courseId) + .eq("knowledge_id",knowledgeId) + .eq("resource_id",resourceId).count(); + if (count > 0){ + //自己没学过,人数加1 + if (count1 == 0){ + resourceLearningNumberService.update().setSql("number = number + 1") + .eq("course_id",courseId) + .eq("knowledge_id",knowledgeId) + .eq("resource_id",resourceId).update(); +// System.out.println("用户:"+userId+"第一次学这门课"); + } + }else { + //该课程第一次被学,人数设置为1 + ResourceLearningNumber resourceLearningNumber = new ResourceLearningNumber(); + resourceLearningNumber.setNumber(1); + resourceLearningNumber.setCourseId(courseId); + resourceLearningNumber.setKnowledgeId(knowledgeId); + resourceLearningNumber.setResourceId(resourceId); + resourceLearningNumberService.save(resourceLearningNumber); + } + //设置人数 + String numberId = resourceLearningNumberService.query() + .eq("course_id", courseId) + .eq("knowledge_id",knowledgeId) + .eq("resource_id",resourceId).one().getId(); + resourceLearningRecord.setNumber(numberId); + //保存记录 + save(resourceLearningRecord); + return ResultUtils.success("添加成功"); + } + + @Override + public BaseResponse getPage(int pagenum, int pagesize, String userId, String knowledgeId, String courseId) { +//格式化时间 + String strDateFormat = "yyyy-MM-dd HH:mm:ss"; + SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); + //分页查询 + Page page = query() + .orderByDesc("times") + .eq("user_id", userId) + .eq("knowledge_id",knowledgeId) + .eq("courses_id",courseId).page(new Page<>(pagenum, pagesize)); + Page page1 = new Page<>(); + List records = page.getRecords(); + BeanUtil.copyProperties(page, page1); + List recordsVos = new ArrayList<>(); + //copy集合 + records.forEach(resourceLearningRecord -> { + ResourceLearingRecordVo resourceLearingRecordVo = new ResourceLearingRecordVo(); + BeanUtil.copyProperties(resourceLearningRecord,resourceLearingRecordVo); + Date date = Date.from(resourceLearningRecord.getTimes().atZone(ZoneId.systemDefault()).toInstant()); + resourceLearingRecordVo.setTime(sdf.format(date)); +// //填充学习人数 + resourceLearingRecordVo.setNumber(resourceLearningNumberService.getById(resourceLearningRecord.getNumber()).getNumber()); + recordsVos.add(resourceLearingRecordVo); + }); + page1.setRecords(recordsVos); + return ResultUtils.success(page1); + } + + @Override + public BaseResponse removeResourceRecord(List ids) { + removeByIds(ids); + return ResultUtils.success("删除成功!"); + } + + +} diff --git a/src/main/java/com/teaching/backend/service/records/IResourceLearningNumberService.java b/src/main/java/com/teaching/backend/service/records/IResourceLearningNumberService.java new file mode 100644 index 0000000..de6abdf --- /dev/null +++ b/src/main/java/com/teaching/backend/service/records/IResourceLearningNumberService.java @@ -0,0 +1,17 @@ +package com.teaching.backend.service.records; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.teaching.backend.model.entity.records.ResourceLearningNumber; + +/** + *

+ * 服务类 + *

+ * + * @author author + * @since 2024-07-29 + */ +public interface IResourceLearningNumberService extends IService { + +}