You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Onlineeducation/src/main/java/com/controller/DiscusskechengxinxiControll...

297 lines
15 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// 声明该类所在的包
package com.controller;
// 导入用于格式化日期的类,可将日期对象按照指定格式转换为字符串
import java.text.SimpleDateFormat;
// 导入动态数组类,可动态调整大小,用于存储多个元素
import java.util.ArrayList;
// 导入用于操作数组的工具类,提供了如排序、查找等操作数组的方法
import java.util.Arrays;
// 导入日历类,用于处理日期和时间,可进行日期的计算和转换
import java.util.Calendar;
// 导入映射接口,用于存储键值对,方便通过键快速查找对应的值
import java.util.Map;
// 导入哈希映射类是Map接口的一个实现类使用哈希表存储键值对
import java.util.HashMap;
// 导入迭代器接口,用于遍历集合中的元素
import java.util.Iterator;
// 导入日期类,用于表示特定的瞬间
import java.util.Date;
// 导入列表接口,是有序集合,可存储重复元素
import java.util.List;
// 导入用于处理HTTP请求的类可获取请求的各种信息如参数、头信息等
import javax.servlet.http.HttpServletRequest;
// 导入自定义的验证工具类,可用于验证实体对象的属性是否符合要求
import com.utils.ValidatorUtils;
// 导入Apache Commons Lang库中的字符串工具类提供了丰富的字符串处理方法
import org.apache.commons.lang3.StringUtils;
// 导入Spring框架的自动装配注解用于将依赖的对象自动注入到当前类中
import org.springframework.beans.factory.annotation.Autowired;
// 导入Spring框架的日期格式化注解可将请求参数中的日期字符串按照指定格式转换为日期对象
import org.springframework.format.annotation.DateTimeFormat;
// 导入Spring框架的路径变量注解用于从URL路径中提取参数
import org.springframework.web.bind.annotation.PathVariable;
// 导入Spring框架的请求体注解用于将请求体中的数据绑定到方法参数上
import org.springframework.web.bind.annotation.RequestBody;
// 导入Spring框架的请求映射注解用于将HTTP请求映射到对应的处理方法上
import org.springframework.web.bind.annotation.RequestMapping;
// 导入Spring框架的请求参数注解用于从请求中获取参数
import org.springframework.web.bind.annotation.RequestParam;
// 导入Spring框架的REST控制器注解表明该类是一个RESTful风格的控制器
import org.springframework.web.bind.annotation.RestController;
// 导入MyBatis-Plus的实体包装器类用于构建查询条件
import com.baomidou.mybatisplus.mapper.EntityWrapper;
// 导入MyBatis-Plus的包装器接口是EntityWrapper的父接口
import com.baomidou.mybatisplus.mapper.Wrapper;
// 导入自定义的忽略认证注解,用于标记某些接口不需要进行认证
import com.annotation.IgnoreAuth;
// 导入课程信息评论实体类,用于表示课程信息评论的数据结构
import com.entity.DiscusskechengxinxiEntity;
// 导入课程信息评论视图类,可能用于展示课程信息评论的特定视图
import com.entity.view.DiscusskechengxinxiView;
// 导入课程信息评论服务类,用于处理课程信息评论的业务逻辑
import com.service.DiscusskechengxinxiService;
// 导入令牌服务类,可能用于处理用户认证和授权相关的令牌
import com.service.TokenService;
// 导入自定义的分页工具类,用于处理分页查询的结果
import com.utils.PageUtils;
// 导入自定义的响应结果类,用于封装接口的返回数据,统一返回格式
import com.utils.R;
// 导入自定义的MD5工具类用于进行MD5加密操作
import com.utils.MD5Util;
// 导入自定义的MyBatis-Plus工具类提供了一些方便使用MyBatis-Plus的方法
import com.utils.MPUtil;
// 导入自定义的通用工具类,包含一些通用的工具方法
import com.utils.CommonUtil;
/**
* 课程信息评论表
* 后端接口
* @author
* @email
* @date 2021-05-09 15:46:15
*/
// 声明该类为RESTful风格的控制器
@RestController
// 定义该控制器处理的请求路径前缀
@RequestMapping("/discusskechengxinxi")
public class DiscusskechengxinxiController {
// 使用自动装配将DiscusskechengxinxiService注入到当前类中
@Autowired
private DiscusskechengxinxiService discusskechengxinxiService;
/**
* 后端列表
* 该方法用于处理后端分页查询课程信息评论列表的请求
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params, DiscusskechengxinxiEntity discusskechengxinxi,
HttpServletRequest request) {
// 创建一个EntityWrapper对象用于构建查询条件
EntityWrapper<DiscusskechengxinxiEntity> ew = new EntityWrapper<DiscusskechengxinxiEntity>();
// 调用DiscusskechengxinxiService的queryPage方法进行分页查询
PageUtils page = discusskechengxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, discusskechengxinxi), params), params));
// 返回成功响应,并将分页查询结果放入响应数据中
return R.ok().put("data", page);
}
/**
* 前端列表
* 该方法用于处理前端分页查询课程信息评论列表的请求,且该接口不需要认证
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params, DiscusskechengxinxiEntity discusskechengxinxi,
HttpServletRequest request) {
// 创建一个EntityWrapper对象用于构建查询条件
EntityWrapper<DiscusskechengxinxiEntity> ew = new EntityWrapper<DiscusskechengxinxiEntity>();
// 调用DiscusskechengxinxiService的queryPage方法进行分页查询
PageUtils page = discusskechengxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, discusskechengxinxi), params), params));
// 返回成功响应,并将分页查询结果放入响应数据中
return R.ok().put("data", page);
}
/**
* 列表
* 该方法用于查询课程信息评论列表,根据传入的实体对象构建查询条件
*/
@RequestMapping("/lists")
public R list(DiscusskechengxinxiEntity discusskechengxinxi) {
// 创建一个EntityWrapper对象用于构建查询条件
EntityWrapper<DiscusskechengxinxiEntity> ew = new EntityWrapper<DiscusskechengxinxiEntity>();
// 设置查询条件,将实体对象的属性作为查询条件
ew.allEq(MPUtil.allEQMapPre(discusskechengxinxi, "discusskechengxinxi"));
// 调用DiscusskechengxinxiService的selectListView方法查询列表数据
return R.ok().put("data", discusskechengxinxiService.selectListView(ew));
}
/**
* 查询
* 该方法用于根据传入的实体对象查询单个课程信息评论视图
*/
@RequestMapping("/query")
public R query(DiscusskechengxinxiEntity discusskechengxinxi) {
// 创建一个EntityWrapper对象用于构建查询条件
EntityWrapper<DiscusskechengxinxiEntity> ew = new EntityWrapper<DiscusskechengxinxiEntity>();
// 设置查询条件,将实体对象的属性作为查询条件
ew.allEq(MPUtil.allEQMapPre(discusskechengxinxi, "discusskechengxinxi"));
// 调用DiscusskechengxinxiService的selectView方法查询单个视图数据
DiscusskechengxinxiView discusskechengxinxiView = discusskechengxinxiService.selectView(ew);
// 返回成功响应,并将查询结果放入响应数据中
return R.ok("查询课程信息评论表成功").put("data", discusskechengxinxiView);
}
/**
* 后端详情
* 该方法用于根据ID查询单个课程信息评论的详细信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id) {
// 调用DiscusskechengxinxiService的selectById方法根据ID查询课程信息评论
DiscusskechengxinxiEntity discusskechengxinxi = discusskechengxinxiService.selectById(id);
// 返回成功响应,并将查询结果放入响应数据中
return R.ok().put("data", discusskechengxinxi);
}
/**
* 前端详情
* 该方法用于根据ID查询单个课程信息评论的详细信息
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id) {
// 调用DiscusskechengxinxiService的selectById方法根据ID查询课程信息评论
DiscusskechengxinxiEntity discusskechengxinxi = discusskechengxinxiService.selectById(id);
// 返回成功响应,并将查询结果放入响应数据中
return R.ok().put("data", discusskechengxinxi);
}
/**
* 后端保存
* 该方法用于处理后端保存课程信息评论的请求
*/
@RequestMapping("/save")
public R save(@RequestBody DiscusskechengxinxiEntity discusskechengxinxi, HttpServletRequest request) {
// 为课程信息评论生成一个唯一的ID使用当前时间戳加上一个随机数
discusskechengxinxi.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue());
// 注释掉的代码,原本用于验证实体对象的合法性
//ValidatorUtils.validateEntity(discusskechengxinxi);
// 调用DiscusskechengxinxiService的insert方法将课程信息评论插入到数据库中
discusskechengxinxiService.insert(discusskechengxinxi);
// 返回成功响应
return R.ok();
}
/**
* 前端保存
* 该方法用于处理前端保存课程信息评论的请求
*/
@RequestMapping("/add")
public R add(@RequestBody DiscusskechengxinxiEntity discusskechengxinxi, HttpServletRequest request) {
// 为课程信息评论生成一个唯一的ID使用当前时间戳加上一个随机数
discusskechengxinxi.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue());
// 注释掉的代码,原本用于验证实体对象的合法性
//ValidatorUtils.validateEntity(discusskechengxinxi);
// 调用DiscusskechengxinxiService的insert方法将课程信息评论插入到数据库中
discusskechengxinxiService.insert(discusskechengxinxi);
// 返回成功响应
return R.ok();
}
/**
* 修改
* 该方法用于处理更新课程信息评论的请求
*/
@RequestMapping("/update")
public R update(@RequestBody DiscusskechengxinxiEntity discusskechengxinxi, HttpServletRequest request) {
// 注释掉的代码,原本用于验证实体对象的合法性
//ValidatorUtils.validateEntity(discusskechengxinxi);
// 调用DiscusskechengxinxiService的updateById方法根据ID更新课程信息评论的所有字段
discusskechengxinxiService.updateById(discusskechengxinxi);
// 返回成功响应
return R.ok();
}
/**
* 删除
* 该方法用于处理批量删除课程信息评论的请求
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids) {
// 调用DiscusskechengxinxiService的deleteBatchIds方法根据ID数组批量删除课程信息评论
discusskechengxinxiService.deleteBatchIds(Arrays.asList(ids));
// 返回成功响应
return R.ok();
}
/**
* 提醒接口
* 该方法用于统计符合提醒条件的课程信息评论数量
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type, @RequestParam Map<String, Object> map) {
// 将列名和类型放入请求参数映射中
map.put("column", columnName);
map.put("type", type);
// 如果类型为2表示日期类型的提醒
if (type.equals("2")) {
// 创建一个日期格式化对象,用于将日期对象格式化为指定格式的字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 创建一个日历对象,用于进行日期的计算和操作
Calendar c = Calendar.getInstance();
// 提醒开始日期
Date remindStartDate = null;
// 提醒结束日期
Date remindEndDate = null;
// 如果请求参数中包含提醒开始时间
if (map.get("remindstart") != null) {
// 将提醒开始时间转换为整数
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
// 设置日历对象的时间为当前时间
c.setTime(new Date());
// 在当前时间基础上增加指定的天数
c.add(Calendar.DAY_OF_MONTH, remindStart);
// 获取增加天数后的日期
remindStartDate = c.getTime();
// 将提醒开始日期格式化为字符串并放入请求参数映射中
map.put("remindstart", sdf.format(remindStartDate));
}
// 如果请求参数中包含提醒结束时间
if (map.get("remindend") != null) {
// 将提醒结束时间转换为整数
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
// 设置日历对象的时间为当前时间
c.setTime(new Date());
// 在当前时间基础上增加指定的天数
c.add(Calendar.DAY_OF_MONTH, remindEnd);
// 获取增加天数后的日期
remindEndDate = c.getTime();
// 将提醒结束日期格式化为字符串并放入请求参数映射中
map.put("remindend", sdf.format(remindEndDate));
}
}
// 创建一个EntityWrapper对象用于构建查询条件
Wrapper<DiscusskechengxinxiEntity> wrapper = new EntityWrapper<DiscusskechengxinxiEntity>();
// 如果请求参数中包含提醒开始时间
if (map.get("remindstart") != null) {
// 设置查询条件,列名大于等于提醒开始时间
wrapper.ge(columnName, map.get("remindstart"));
}
// 如果请求参数中包含提醒结束时间
if (map.get("remindend") != null) {
// 设置查询条件,列名小于等于提醒结束时间
wrapper.le(columnName, map.get("remindend"));
}
// 调用DiscusskechengxinxiService的selectCount方法统计符合条件的记录数量
int count = discusskechengxinxiService.selectCount(wrapper);
// 返回成功响应,并将统计结果放入响应数据中
return R.ok().put("count", count);
}
}