|
|
// 声明该类所在的包
|
|
|
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);
|
|
|
}
|
|
|
} |