package com.controller; import java.text.SimpleDateFormat; 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 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.NewsEntity; import com.entity.view.NewsView; import com.service.NewsService; import com.service.TokenService; import com.utils.PageUtils; import com.utils.R; import com.utils.MD5Util; import com.utils.MPUtil; import com.utils.CommonUtil; import java.io.IOException; /** * 公告信息管理后端接口 * @author [作者姓名] * @email [作者邮箱] * @date 2022-05-06 08:33:49 */ @RestController @RequestMapping("/news") public class NewsController { @Autowired private NewsService newsService; // 注入新闻服务 /** * 后端列表 * @param params 请求参数 * @param news 新闻实体 * @param request HTTP请求对象 * @return 分页数据 */ @RequestMapping("/page") public R page(@RequestParam Map params, NewsEntity news, HttpServletRequest request) { EntityWrapper ew = new EntityWrapper<>(); // 创建查询条件 PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params)); return R.ok().put("data", page); // 返回分页数据 } /** * 前端列表 * @param params 请求参数 * @param news 新闻实体 * @param request HTTP请求对象 * @return 分页数据 */ @IgnoreAuth @RequestMapping("/list") public R list(@RequestParam Map params, NewsEntity news, HttpServletRequest request) { EntityWrapper ew = new EntityWrapper<>(); // 创建查询条件 PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params)); return R.ok().put("data", page); // 返回分页数据 } /** * 列表(无分页) * @param news 新闻实体 * @return 数据列表 */ @RequestMapping("/lists") public R list(NewsEntity news) { EntityWrapper ew = new EntityWrapper<>(); ew.allEq(MPUtil.allEQMapPre(news, "news")); // 设置查询条件 return R.ok().put("data", newsService.selectListView(ew)); // 返回数据列表 } /** * 查询单条记录 * @param news 新闻实体 * @return 查询结果 */ @RequestMapping("/query") public R query(NewsEntity news) { EntityWrapper ew = new EntityWrapper<>(); ew.allEq(MPUtil.allEQMapPre(news, "news")); // 设置查询条件 NewsView newsView = newsService.selectView(ew); // 查询视图 return R.ok("查询公告信息成功").put("data", newsView); // 返回查询结果 } /** * 后端详情 * @param id 记录ID * @return 单条记录详情 */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") Long id) { NewsEntity news = newsService.selectById(id); // 查询单条记录 return R.ok().put("data", news); // 返回记录详情 } /** * 前端详情 * @param id 记录ID * @return 单条记录详情 */ @IgnoreAuth @RequestMapping("/detail/{id}") public R detail(@PathVariable("id") Long id) { NewsEntity news = newsService.selectById(id); // 查询单条记录 return R.ok().put("data", news); // 返回记录详情 } /** * 后端保存 * @param news 新闻实体 * @param request HTTP请求对象 * @return 保存结果 */ @RequestMapping("/save") public R save(@RequestBody NewsEntity news, HttpServletRequest request) { news.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue()); // 生成唯一ID // ValidatorUtils.validateEntity(news); // 验证实体(可选) newsService.insert(news); // 插入数据 return R.ok(); // 返回成功结果 } /** * 前端保存 * @param news 新闻实体 * @param request HTTP请求对象 * @return 保存结果 */ @RequestMapping("/add") public R add(@RequestBody NewsEntity news, HttpServletRequest request) { news.setId(new Date().getTime() + new Double(Math.floor(Math.random() * 1000)).longValue()); // 生成唯一ID // ValidatorUtils.validateEntity(news); // 验证实体(可选) newsService.insert(news); // 插入数据 return R.ok(); // 返回成功结果 } /** * 修改记录 * @param news 新闻实体 * @param request HTTP请求对象 * @return 修改结果 */ @RequestMapping("/update") @Transactional public R update(@RequestBody NewsEntity news, HttpServletRequest request) { // ValidatorUtils.validateEntity(news); // 验证实体(可选) newsService.updateById(news); // 全量更新 return R.ok(); // 返回成功结果 } /** * 删除记录 * @param ids 记录ID数组 * @return 删除结果 */ @RequestMapping("/delete") public R delete(@RequestBody Long[] ids) { newsService.deleteBatchIds(Arrays.asList(ids)); // 批量删除 return R.ok(); // 返回成功结果 } /** * 提醒接口 * @param columnName 字段名 * @param request HTTP请求对象 * @param type 提醒类型 * @param map 请求参数 * @return 提醒结果 */ @RequestMapping("/remind/{columnName}/{type}") public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type, @RequestParam Map map) { map.put("column", columnName); // 添加字段名到参数 map.put("type", type); // 添加提醒类型到参数 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)); // 格式化并设置结束日期 } } Wrapper wrapper = new EntityWrapper<>(); // 创建查询条件 if (map.get("remindstart") != null) { // 如果有开始日期 wrapper.ge(columnName, map.get("remindstart")); // 设置大于等于条件 } if (map.get("remindend") != null) { // 如果有结束日期 wrapper.le(columnName, map.get("remindend")); // 设置小于等于条件 } int count = newsService.selectCount(wrapper); // 查询符合条件的记录数 return R.ok().put("count", count); // 返回提醒结果 } }