package com.controller; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.text.ParseException; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Map; import java.util.HashMap; import java.util.Iterator; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import com.utils.ValidatorUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.format.annotation.DateTimeFormat; 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.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.annotation.IgnoreAuth; import com.entity.SystemintroEntity; import com.entity.view.SystemintroView; import com.service.SystemintroService; import com.service.TokenService; import com.utils.PageUtils; import com.utils.R; import com.utils.MD5Util; import com.utils.MPUtil; import com.utils.CommonUtil; /** * 关于我们 * 后端接口 * @author * @email * @date 2023-02-21 09:46:06 */ @RestController // 声明一个REST风格的控制器 @RequestMapping("/systemintro") // 定义一个请求映射,当访问 /systemintro 路径时,会调用这个控制器 public class SystemintroController { @Autowired // 自动注入依赖 private SystemintroService systemintroService; // 声明一个SystemintroService对象,用于存储业务操作 /** * 后端列表 */ @RequestMapping("/page") public R page(@RequestParam Map params,SystemintroEntity systemintro, HttpServletRequest request){ // 定义一个方法,接收请求参数、实体对象和HTTP请求对象 EntityWrapper ew = new EntityWrapper(); // 创建一个实体包装器对象,用于构建查询条件 PageUtils page = systemintroService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, systemintro), params), params)); // 调用服务层的方法,根据查询条件和分页参数进行分页查询,并返回分页结果 request.setAttribute("data", page); // 将分页结果设置到HTTP请求对象中 return R.ok().put("data", page); // 返回一个包含分页结果的响应对象 } /** * 前端列表 */ @IgnoreAuth // 定义了一个注解,用于标记不需要权限认证的接口 @RequestMapping("/list") // 定义一个请求映射,当访问 /list 路径时,会调用这个方法 public R list(@RequestParam Map params,SystemintroEntity systemintro, HttpServletRequest request){ // 定义一个方法,接收请求参数、实体对象和HTTP请求对象 EntityWrapper ew = new EntityWrapper(); // 创建一个实体包装器对象,用于构建查询条件 PageUtils page = systemintroService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, systemintro), params), params)); // 调用服务层的方法,根据查询条件和分页参数进行分页查询,并返回分页结果 request.setAttribute("data", page); // 将分页结果设置到HTTP请求对象中 return R.ok().put("data", page); // 返回一个包含分页结果的响应对象 } /** * 列表 */ @RequestMapping("/lists") public R list( SystemintroEntity systemintro){ // 定义一个方法,接收实体对象 EntityWrapper ew = new EntityWrapper(); // 创建一个实体包装器对象,用于构建查询条件 ew.allEq(MPUtil.allEQMapPre( systemintro, "systemintro")); // 使用allEq方法设置查询条件,MPUtil.allEQMapPre方法将实体对象的属性转换为Map,并添加前缀"systemintro",allEq方法将Map中的键值对作为查询条件,查询出符合条件的实体对象 return R.ok().put("data", systemintroService.selectListView(ew)); // 根据查询条件查询出符合条件的实体对象列表,并返回一个包含实体对象列表的响应对象 } /** * 查询 */ @RequestMapping("/query") public R query(SystemintroEntity systemintro){ // 定义一个方法,接收实体对象 EntityWrapper< SystemintroEntity> ew = new EntityWrapper< SystemintroEntity>(); // 创建一个实体包装器对象,用于构建查询条件 ew.allEq(MPUtil.allEQMapPre( systemintro, "systemintro")); // 使用allEq方法设置查询条件,MPUtil.allEQMapPre方法将实体对象的属性转换为Map,并添加前缀"systemintro",allEq方法将Map中的键值对作为查询条件,查询出符合条件的实体对象 SystemintroView systemintroView = systemintroService.selectView(ew); // 调用服务层的方法查询单个数据,并返回视图对象 return R.ok("查询关于我们成功").put("data", systemintroView); // 返回一个包含查询结果的响应对象,并附带成功消息 } /** * 后端详情 */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") Long id){ // 定义一个方法,接收一个路径变量 id,类型为 Long SystemintroEntity systemintro = systemintroService.selectById(id); // 调用服务层的方法根据ID查询数据,并返回实体对象 return R.ok().put("data", systemintro); // 返回一个包含查询结果的 R 对象,其中包含键 "data" 和对应的 systemintro 实体对象 } /** * 前端详情 */ @IgnoreAuth @RequestMapping("/detail/{id}") // 定义一个请求映射,当访问 /detail/{id} 路径时,会调用这个方法 public R detail(@PathVariable("id") Long id){ // 定义一个方法,接收一个路径变量 id,类型为 Long SystemintroEntity systemintro = systemintroService.selectById(id); // 调用服务层的方法根据ID查询数据,并返回实体对象 return R.ok().put("data", systemintro); // 返回一个包含查询结果的响应对象,并附带成功消息 } /** * 后端保存 */ @RequestMapping("/save") // 定义一个请求映射,当访问 /save 路径时,会调用这个方法 public R save(@RequestBody SystemintroEntity systemintro, HttpServletRequest request){ // 定义一个方法,接收一个JSON格式的请求体,类型为 SystemintroEntity,并接收一个 HttpServletRequest 对象 systemintro.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); // 生成一个新的唯一ID,由当前时间戳加上一个随机数 //ValidatorUtils.validateEntity(systemintro); // 注释掉的代码,用于验证 systemintro 实体对象是否符合要求 systemintroService.insert(systemintro); // 调用服务层的方法将 systemintro 实体对象插入数据库 return R.ok(); // 返回一个包含成功信息的 R 对象 } /** * 前端保存 */ @RequestMapping("/add") // 定义一个请求映射,当访问 /add 路径时,会调用这个方法 public R add(@RequestBody SystemintroEntity systemintro, HttpServletRequest request){ // 定义一个方法,接收一个请求体中的 SystemintroEntity 对象和 HttpServletRequest 对象 systemintro.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); // 生成一个新的唯一ID,由当前时间戳加上一个随机数 //ValidatorUtils.validateEntity(systemintro); // 注释掉的代码,用于验证 systemintro 实体对象是否符合要求 systemintroService.insert(systemintro); // 调用服务层的方法将 systemintro 实体对象插入数据库 return R.ok(); // 返回一个包含成功信息的 R 对象 } /** * 修改 */ @RequestMapping("/update") // 定义一个请求映射,当访问 /update 路径时,会调用这个方法 @Transactional // 定义了一个事务注解,表示该方法中的数据库操作应该在一个事务中执行 public R update(@RequestBody SystemintroEntity systemintro, HttpServletRequest request){ // 定义一个方法,接收一个请求体中的 SystemintroEntity 对象和 HttpServletRequest 对象 //ValidatorUtils.validateEntity(systemintro); // 注释掉的代码,用于验证 systemintro 实体对象是否符合要求 systemintroService.updateById(systemintro); // 调用服务层的方法根据 ID 更新 systemintro 实体对象的所有字段 return R.ok(); // 返回一个包含成功信息的 R 对象 } /** * 删除 */ @RequestMapping("/delete") public R delete(@RequestBody Long[] ids){ // 定义一个方法,接收一个请求体中的 Long 数组,类型为 Long[] systemintroService.deleteBatchIds(Arrays.asList(ids)); // 调用服务层的方法,根据传入的 ID 数组批量删除数据 return R.ok(); // 返回一个包含成功信息的 R 对象 } /** * 提醒接口 */ @RequestMapping("/remind/{columnName}/{type}") // 定义一个请求映射,当访问 /remind/{columnName}/{type} 路径时,会调用这个方法 public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map map) { // 定义一个方法,接收一个路径变量 columnName 和 type,类型为 String,以及一个请求参数 map,类型为 Map map.put("column", columnName); // 将 columnName 添加到 map 中,键为 "column" map.put("type", type); // 将 type 添加到 map 中,键为 "type" if(type.equals("2")) { // 如果 type 等于 "2" SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 创建一个日期格式化对象,格式为 "yyyy-MM-dd" Calendar c = Calendar.getInstance(); // 创建一个日历对象,获取当前时间 Date remindStartDate = null; // 创建一个日期对象,用于存储提醒开始时间 Date remindEndDate = null; // 创建一个日期对象,用于存储提醒结束时间 if(map.get("remindstart")!=null) { // 如果 map 中存在 "remindstart" 键 Integer remindStart = Integer.parseInt(map.get("remindstart").toString()); // 将 "remindstart" 键对应的值转换为整数 c.setTime(new Date()); // 设置日历对象的时间为当前时间 c.add(Calendar.DAY_OF_MONTH,remindStart); // 将日历对象的时间增加 remindStart 天 remindStartDate = c.getTime(); // 获取增加后的时间,并赋值给 remindStartDate map.put("remindstart", sdf.format(remindStartDate)); // 将 remindStartDate 格式化为 "yyyy-MM-dd" 格式,并添加到 map 中,键为 "remindstart" } if(map.get("remindend")!=null) { // 如果 map 中存在 "remindend" 键 Integer remindEnd = Integer.parseInt(map.get("remindend").toString()); // 将 "remindend" 键对应的值转换为整数 c.setTime(new Date()); // 设置日历对象的时间为当前时间 c.add(Calendar.DAY_OF_MONTH,remindEnd); // 将日历对象的时间增加 remindEnd 天 remindEndDate = c.getTime(); // 获取增加后的时间,并赋值给 remindEndDate map.put("remindend", sdf.format(remindEndDate)); // 将 remindEndDate 格式化为 "yyyy-MM-dd" 格式,并添加到 map 中,键为 "remindend" } } Wrapper wrapper = new EntityWrapper(); // 创建一个实体包装器对象,用于构建查询条件 if(map.get("remindstart")!=null) { // 如果 map 中存在 "remindstart" 键 wrapper.ge(columnName, map.get("remindstart")); // 设置查询条件,查询 columnName 字段大于等于 "remindstart" 键对应的值 } if(map.get("remindend")!=null) { // 如果 map 中存在 "remindend" 键 wrapper.le(columnName, map.get("remindend")); // 设置查询条件,查询 columnName 字段小于等于 "remindend" 键对应的值 } int count = systemintroService.selectCount(wrapper); // 调用服务层的方法,根据查询条件查询符合条件的记录数,并赋值给 count return R.ok().put("count", count); // 返回一个包含查询结果的响应对象,其中包含键 "count" 和对应的 count 值 } }