package com.java110.fee.api; import com.alibaba.fastjson.JSONObject; import com.java110.dto.importData.OwnerCollectionDto; 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; /** * 业主催缴信息接口 * 适配 owner_collection 表 * @author dev * @date 2025-12-24 */ @RestController @RequestMapping(value = "/ownerCollection") public class OwnerCollectionApi { @Autowired protected SqlSessionTemplate sqlSessionTemplate; /** * 保存业主催缴信息 * * @param reqJson 请求参数 * @return 响应结果 * @serviceCode /ownerCollection/saveOwnerCollection * @path /app/ownerCollection/saveOwnerCollection */ @RequestMapping(value = "/saveOwnerCollection", method = RequestMethod.POST) public ResponseEntity saveOwnerCollection(@RequestBody JSONObject reqJson) { // 核心参数校验(可根据业务补充必要的非空校验) Assert.hasKeyAndValue(reqJson, "ownerId", "请求报文中未包含业主ID"); Assert.hasKeyAndValue(reqJson, "roomId", "请求报文中未包含房间ID"); // 转换为DTO OwnerCollectionDto dto = BeanConvertUtil.covertBean(reqJson, OwnerCollectionDto.class); // 补充默认时间(可根据业务调整,比如取当前时间) if (dto.getCreateTime() == null || dto.getCreateTime().isEmpty()) { dto.setCreateTime(String.valueOf(System.currentTimeMillis())); } dto.setUpdateTime(dto.getCreateTime()); // 调用Mapper保存方法 int insert = sqlSessionTemplate.insert("ownerV1ServiceDaoImpl.saveOwnerCollection", BeanConvertUtil.beanCovertMap(dto)); // 构造响应结果 JSONObject resJson = new JSONObject(); if (insert > 0) { resJson.put("code", "0000"); resJson.put("msg", "保存业主催缴信息成功"); } else { resJson.put("code", "0001"); resJson.put("msg", "保存业主催缴信息失败"); } resJson.put("count", insert); return ResponseEntity.ok(resJson.toJSONString()); } /** * 重载方法-保存业主催缴信息 * * @param dto 业主催缴DTO * @return 响应结果 */ public ResponseEntity saveOwnerCollection(OwnerCollectionDto dto) { // 补充默认时间 if (dto.getCreateTime() == null || dto.getCreateTime().isEmpty()) { dto.setCreateTime(String.valueOf(System.currentTimeMillis())); } dto.setUpdateTime(dto.getCreateTime()); int insert = sqlSessionTemplate.insert("ownerV1ServiceDaoImpl.saveOwnerCollection", BeanConvertUtil.beanCovertMap(dto)); // 构造响应结果 JSONObject resJson = new JSONObject(); if (insert > 0) { resJson.put("code", "0000"); resJson.put("msg", "保存业主催缴信息成功"); } else { resJson.put("code", "0001"); resJson.put("msg", "保存业主催缴信息失败"); } resJson.put("count", insert); return ResponseEntity.ok(resJson.toJSONString()); } /** * 修改业主催缴信息 * * @param reqJson 请求参数 * @return 响应结果 * @serviceCode /ownerCollection/updateOwnerCollection * @path /app/ownerCollection/updateOwnerCollection */ @RequestMapping(value = "/updateOwnerCollection", method = RequestMethod.POST) public ResponseEntity updateOwnerCollection(@RequestBody JSONObject reqJson) { // 主键校验 Assert.hasKey(reqJson, "collectionId", "请求报文中未包含催缴信息主键ID"); OwnerCollectionDto dto = BeanConvertUtil.covertBean(reqJson, OwnerCollectionDto.class); // 补充更新时间 dto.setUpdateTime(String.valueOf(System.currentTimeMillis())); // 调用Mapper修改方法 int update = sqlSessionTemplate.update("ownerV1ServiceDaoImpl.updateOwnerCollection", BeanConvertUtil.beanCovertMap(dto)); 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 collectionId 催缴信息ID(可选) * @param ownerId 业主ID(可选) * @param roomId 房间ID(可选) * @param collectionStartDate 催缴开始日期(可选) * @param collectionEndDate 催缴结束日期(可选) * @param page 页码(默认1) * @param row 每页条数(默认10) * @return 响应结果 * @serviceCode /ownerCollection/queryOwnerCollection * @path /app/ownerCollection/queryOwnerCollection */ @RequestMapping(value = "/queryOwnerCollection", method = RequestMethod.GET) public ResponseEntity queryOwnerCollection( @RequestParam(value = "collectionId", required = false) String collectionId, @RequestParam(value = "ownerId", required = false) String ownerId, @RequestParam(value = "roomId", required = false) String roomId, @RequestParam(value = "collectionStartDate", required = false) String collectionStartDate, @RequestParam(value = "collectionEndDate", required = false) String collectionEndDate, @RequestParam(value = "page", defaultValue = "1") int page, @RequestParam(value = "row", defaultValue = "10") int row) { // 封装查询参数 OwnerCollectionDto queryDto = new OwnerCollectionDto(); queryDto.setCollectionId(collectionId); queryDto.setOwnerId(ownerId); queryDto.setRoomId(roomId); queryDto.setCollectionStartDate(collectionStartDate); queryDto.setCollectionEndDate(collectionEndDate); queryDto.setCreateTime(null); // 排除默认时间干扰 queryDto.setUpdateTime(null); queryDto.setPage((page - 1) * row); // 计算分页起始位置 queryDto.setRow(row); // 查询列表数据 List> list = sqlSessionTemplate.selectList( "ownerV1ServiceDaoImpl.getOwnerCollection", BeanConvertUtil.beanCovertMap(queryDto)); List ownerCollections = BeanConvertUtil.covertBeanList(list, OwnerCollectionDto.class); // 查询总数 Object total = ((HashMap) sqlSessionTemplate.selectOne( "ownerV1ServiceDaoImpl.queryOwnerCollectionCount", BeanConvertUtil.beanCovertMap(queryDto))).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", ownerCollections); return ResponseEntity.ok(resJson.toJSONString()); } /** * 根据ID查询单条业主催缴信息 * * @param collectionId 催缴信息主键ID * @return 响应结果 * @serviceCode /ownerCollection/getOwnerCollectionById * @path /app/ownerCollection/getOwnerCollectionById */ @RequestMapping(value = "/getOwnerCollectionById", method = RequestMethod.GET) public ResponseEntity getOwnerCollectionById(@RequestParam(value = "collectionId") String collectionId) { // 主键校验 Assert.hasLength(collectionId, "催缴信息主键ID不能为空"); OwnerCollectionDto queryDto = new OwnerCollectionDto(); queryDto.setCollectionId(collectionId); // 查询单条数据 Map result = sqlSessionTemplate.selectOne( "ownerV1ServiceDaoImpl.getOwnerCollection", BeanConvertUtil.beanCovertMap(queryDto)); JSONObject resJson = new JSONObject(); if (result != null) { OwnerCollectionDto ownerCollection = BeanConvertUtil.covertBean(result, OwnerCollectionDto.class); resJson.put("code", "0000"); resJson.put("msg", "查询业主催缴信息成功"); resJson.put("data", ownerCollection); } else { resJson.put("code", "0001"); resJson.put("msg", "未找到对应业主催缴记录"); } return ResponseEntity.ok(resJson.toJSONString()); } /** * 根据业主ID查询业主催缴信息 * * @param ownerId 业主ID * @return 响应结果 * @serviceCode /ownerCollection/getOwnerCollectionByOwnerId * @path /app/ownerCollection/getOwnerCollectionByOwnerId */ @RequestMapping(value = "/getOwnerCollectionByOwnerId", method = RequestMethod.GET) public ResponseEntity getOwnerCollectionByOwnerId(@RequestParam(value = "ownerId") String ownerId) { Assert.hasLength(ownerId, "业主ID不能为空"); OwnerCollectionDto queryDto = new OwnerCollectionDto(); queryDto.setOwnerId(ownerId); List> result = sqlSessionTemplate.selectList( "ownerV1ServiceDaoImpl.getOwnerCollection", BeanConvertUtil.beanCovertMap(queryDto)); JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "查询业主催缴信息成功"); resJson.put("data", result); return ResponseEntity.ok(resJson.toJSONString()); } }