package com.java110.fee.api; import com.alibaba.fastjson.JSONObject; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 公告时间范围(公共收益金)接口 * 适配 announcement_time_range 表 Mapper 实现 */ @RestController @RequestMapping(value = "/announcementTimeRange") public class AnnouncementTimeRangeApi { @Autowired protected SqlSessionTemplate sqlSessionTemplate; /** * 保存公告时间范围信息 * * @param reqJson 请求参数 * @return 响应结果 * @serviceCode /announcementTimeRange/saveAnnouncementTimeRangeInfo * @path /app/announcementTimeRange/saveAnnouncementTimeRangeInfo */ @RequestMapping(value = "/saveAnnouncementTimeRangeInfo", method = RequestMethod.POST) public ResponseEntity saveAnnouncementTimeRangeInfo(@RequestBody JSONObject reqJson) { // 核心业务参数校验(匹配表字段) Assert.hasKeyAndValue(reqJson, "mpId", "请求报文中未包含外键编号mpId"); // 转换为POJO并补充默认值(可选) AnnouncementTimeRangePo po = BeanConvertUtil.covertBean(reqJson, AnnouncementTimeRangePo.class); // 调用Mapper的保存方法(匹配Mapper的namespace和id) int insert = sqlSessionTemplate.insert("announcementTimeRangeServiceDaoImpl.saveAnnouncementTimeRangeInfo", BeanConvertUtil.beanCovertMap(po)); // 构造返回结果(标准JSON格式) JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "保存成功"); resJson.put("count", insert); return ResponseEntity.ok(resJson.toJSONString()); } public void saveAnnouncementTimeRangeInfo(AnnouncementTimeRangePo po) { // 调用Mapper的保存方法(匹配Mapper的namespace和id) int insert = sqlSessionTemplate.insert("announcementTimeRangeServiceDaoImpl.saveAnnouncementTimeRangeInfo", BeanConvertUtil.beanCovertMap(po)); } /** * 批量保存公告时间范围信息 * * @param reqJson 请求参数(包含announcementTimeRangeList数组) * @return 响应结果 * @serviceCode /announcementTimeRange/saveAnnouncementTimeRanges * @path /app/announcementTimeRange/saveAnnouncementTimeRanges */ @RequestMapping(value = "/saveAnnouncementTimeRanges", method = RequestMethod.POST) public ResponseEntity saveAnnouncementTimeRanges(@RequestBody JSONObject reqJson) { Assert.hasKeyAndValue(reqJson, "announcementTimeRangeList", "请求报文中未包含批量数据列表"); List poList = BeanConvertUtil.covertBeanList( reqJson.getJSONArray("announcementTimeRangeList"), AnnouncementTimeRangePo.class); Map param = BeanConvertUtil.beanCovertMap(reqJson); param.put("announcementTimeRangeList", poList); int insert = sqlSessionTemplate.insert("announcementTimeRangeServiceDaoImpl.saveAnnouncementTimeRanges", param); JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "批量保存成功"); resJson.put("count", insert); return ResponseEntity.ok(resJson.toJSONString()); } /** * 修改公告时间范围信息 * * @param reqJson 请求参数 * @return 响应结果 * @serviceCode /announcementTimeRange/updateAnnouncementTimeRangeInfo * @path /app/announcementTimeRange/updateAnnouncementTimeRangeInfo */ @RequestMapping(value = "/updateAnnouncementTimeRangeInfo", method = RequestMethod.POST) public ResponseEntity updateAnnouncementTimeRangeInfo(@RequestBody JSONObject reqJson) { // 主键校验(修改必须传id) Assert.hasKeyAndValue(reqJson, "id", "请求报文中未包含主键ID"); // Assert.isNumeric(reqJson.getString("id"), "主键ID必须为数字"); AnnouncementTimeRangePo po = BeanConvertUtil.covertBean(reqJson, AnnouncementTimeRangePo.class); int update = sqlSessionTemplate.update("announcementTimeRangeServiceDaoImpl.updateAnnouncementTimeRangeInfo", BeanConvertUtil.beanCovertMap(po)); JSONObject resJson = new JSONObject(); if (update > 0) { resJson.put("code", "0000"); resJson.put("msg", "修改成功"); } else { resJson.put("code", "0001"); resJson.put("msg", "修改失败,未找到对应记录"); } resJson.put("count", update); return ResponseEntity.ok(resJson.toJSONString()); } /** * 删除公告时间范围信息 * * @param reqJson 请求参数 * @return 响应结果 * @serviceCode /announcementTimeRange/deleteAnnouncementTimeRangeInfo * @path /app/announcementTimeRange/deleteAnnouncementTimeRangeInfo */ @RequestMapping(value = "/deleteAnnouncementTimeRangeInfo", method = RequestMethod.POST) public ResponseEntity deleteAnnouncementTimeRangeInfo(@RequestBody JSONObject reqJson) { // 必要参数校验 Assert.hasKeyAndValue(reqJson, "id", "主键ID不能为空"); // Assert.isNumeric(reqJson.getString("id"), "主键ID必须为数字"); AnnouncementTimeRangePo po = BeanConvertUtil.covertBean(reqJson, AnnouncementTimeRangePo.class); int delete = sqlSessionTemplate.delete("announcementTimeRangeServiceDaoImpl.deleteAnnouncementTimeRangeInfo", BeanConvertUtil.beanCovertMap(po)); JSONObject resJson = new JSONObject(); if (delete > 0) { resJson.put("code", "0000"); resJson.put("msg", "删除成功"); } else { resJson.put("code", "0001"); resJson.put("msg", "删除失败,未找到对应记录"); } resJson.put("count", delete); return ResponseEntity.ok(resJson.toJSONString()); } /** * 分页查询公告时间范围信息列表 * * @param mpId 外键编号(必传) * @param page 页码(默认1) * @param row 每页条数(默认10) * @param id 主键ID(可选) * @param plannedStart 拟公布起始年月(可选) * @param publishedStart 已公布起始年月(可选) * @return 响应结果 * @serviceCode /announcementTimeRange/queryAnnouncementTimeRangeInfo * @path /app/announcementTimeRange/queryAnnouncementTimeRangeInfo */ @RequestMapping(value = "/queryAnnouncementTimeRangeInfo", method = RequestMethod.GET) public ResponseEntity queryAnnouncementTimeRangeInfo( @RequestParam(value = "mpId") String mpId, @RequestParam(value = "page", defaultValue = "1") int page, @RequestParam(value = "row", defaultValue = "10") int row, @RequestParam(value = "id", required = false) String id, @RequestParam(value = "plannedAnnouncementStart", required = false) String plannedStart, @RequestParam(value = "publishedAnnouncementStart", required = false) String publishedStart) { // 封装查询参数(适配Mapper的查询条件) AnnouncementTimeRangePo queryPo = new AnnouncementTimeRangePo(); queryPo.setMpId(mpId); queryPo.setPage((page - 1) * row); // 转换为MySQL分页偏移量 queryPo.setRow(row); if (id != null && !id.isEmpty()) { queryPo.setId(Long.parseLong(id)); } if (plannedStart != null && !plannedStart.isEmpty()) { queryPo.setPlannedAnnouncementStart(plannedStart); } if (publishedStart != null && !publishedStart.isEmpty()) { queryPo.setPublishedAnnouncementStart(publishedStart); } // 查询列表 List> list = sqlSessionTemplate.selectList( "announcementTimeRangeServiceDaoImpl.getAnnouncementTimeRangeInfo", BeanConvertUtil.beanCovertMap(queryPo)); List poList = BeanConvertUtil.covertBeanList(list, AnnouncementTimeRangePo.class); // 查询总数 Object total = ((HashMap)sqlSessionTemplate.selectOne( "announcementTimeRangeServiceDaoImpl.queryAnnouncementTimeRangeCount", BeanConvertUtil.beanCovertMap(queryPo))).get("count"); // 构造分页返回结果 JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "查询成功"); resJson.put("page", page); resJson.put("row", row); resJson.put("total", total); resJson.put("data", poList); return ResponseEntity.ok(resJson.toJSONString()); } /** * 根据ID查询单条公告时间范围信息 * * @param id 主键ID * @return 响应结果 * @serviceCode /announcementTimeRange/getAnnouncementTimeRangeById * @path /app/announcementTimeRange/getAnnouncementTimeRangeById */ @RequestMapping(value = "/getAnnouncementTimeRangeById", method = RequestMethod.GET) public ResponseEntity getAnnouncementTimeRangeById(@RequestParam(value = "id") Long id) { // 主键校验 Assert.notNull(id, "主键ID不能为空"); AnnouncementTimeRangePo queryPo = new AnnouncementTimeRangePo(); queryPo.setId(id); Map result = sqlSessionTemplate.selectOne( "announcementTimeRangeServiceDaoImpl.getAnnouncementTimeRangeInfo", BeanConvertUtil.beanCovertMap(queryPo)); JSONObject resJson = new JSONObject(); if (result != null) { resJson.put("code", "0000"); resJson.put("msg", "查询成功"); resJson.put("data", result); } else { resJson.put("code", "0001"); resJson.put("msg", "未找到对应记录"); } return ResponseEntity.ok(resJson.toJSONString()); } /** * 查询公告时间范围统计信息 * * @param mpId 外键编号(可选) * @param startCreateTime 开始创建时间(可选,格式:yyyy-MM-dd HH:mm:ss) * @param endCreateTime 结束创建时间(可选) * @return 响应结果 * @serviceCode /announcementTimeRange/queryAnnouncementTimeRangeStatistics * @path /app/announcementTimeRange/queryAnnouncementTimeRangeStatistics */ @RequestMapping(value = "/queryAnnouncementTimeRangeStatistics", method = RequestMethod.GET) public ResponseEntity queryAnnouncementTimeRangeStatistics( @RequestParam(value = "mpId", required = false) String mpId, @RequestParam(value = "startCreateTime", required = false) String startCreateTime, @RequestParam(value = "endCreateTime", required = false) String endCreateTime) { AnnouncementTimeRangePo queryPo = new AnnouncementTimeRangePo(); queryPo.setMpId(mpId); queryPo.setStartCreateTime(startCreateTime); queryPo.setEndCreateTime(endCreateTime); Map statistics = sqlSessionTemplate.selectOne( "announcementTimeRangeServiceDaoImpl.queryAnnouncementTimeRangeStatistics", BeanConvertUtil.beanCovertMap(queryPo)); JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "统计成功"); resJson.put("data", statistics); return ResponseEntity.ok(resJson.toJSONString()); } /** * 按月份分组统计公告时间范围信息 * * @param mpId 外键编号(可选) * @param startCreateTime 开始创建时间(可选) * @param endCreateTime 结束创建时间(可选) * @return 响应结果 * @serviceCode /announcementTimeRange/queryAnnouncementTimeRangeByMonth * @path /app/announcementTimeRange/queryAnnouncementTimeRangeByMonth */ @RequestMapping(value = "/queryAnnouncementTimeRangeByMonth", method = RequestMethod.GET) public ResponseEntity queryAnnouncementTimeRangeByMonth( @RequestParam(value = "mpId", required = false) String mpId, @RequestParam(value = "startCreateTime", required = false) String startCreateTime, @RequestParam(value = "endCreateTime", required = false) String endCreateTime) { AnnouncementTimeRangePo queryPo = new AnnouncementTimeRangePo(); queryPo.setMpId(mpId); queryPo.setStartCreateTime(startCreateTime); queryPo.setEndCreateTime(endCreateTime); List> list = sqlSessionTemplate.selectList( "announcementTimeRangeServiceDaoImpl.queryAnnouncementTimeRangeByMonth", BeanConvertUtil.beanCovertMap(queryPo)); JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "统计成功"); resJson.put("data", list); return ResponseEntity.ok(resJson.toJSONString()); } /** * 根据mpId查询最新的公告时间范围信息 * * @param mpId 外键编号 * @return 响应结果 * @serviceCode /announcementTimeRange/getLatestAnnouncementTimeRangeByMpId * @path /app/announcementTimeRange/getLatestAnnouncementTimeRangeByMpId */ @RequestMapping(value = "/getLatestAnnouncementTimeRangeByMpId", method = RequestMethod.GET) public ResponseEntity getLatestAnnouncementTimeRangeByMpId(@RequestParam(value = "mpId") String mpId) { Assert.notNull(mpId, "外键编号mpId不能为空"); AnnouncementTimeRangePo queryPo = new AnnouncementTimeRangePo(); queryPo.setMpId(mpId); Map result = sqlSessionTemplate.selectOne( "announcementTimeRangeServiceDaoImpl.getLatestAnnouncementTimeRangeByMpId", BeanConvertUtil.beanCovertMap(queryPo)); JSONObject resJson = new JSONObject(); if (result != null) { resJson.put("code", "0000"); resJson.put("msg", "查询成功"); resJson.put("data", result); } else { resJson.put("code", "0001"); resJson.put("msg", "未找到对应记录"); } return ResponseEntity.ok(resJson.toJSONString()); } }