Bladeren bron

留言维护

tangbin 10 maanden geleden
bovenliggende
commit
eec0116058

+ 34 - 0
yezhu-api/src/main/java/com/kioor/common/utils/CommonUtils.java

@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.common.utils;
+
+/**
+ * 公共工具类
+ *
+ * @author Mark sunlightcs@gmail.com
+ * @since 1.0.0
+ */
+public class CommonUtils {
+
+    public static String hiddenInformation(String information) {
+        if (information == null) {
+            return null;
+        }
+        //如果不是手机号,只显示第一位
+        if (information.length() != 11 || !information.matches("\\d+")) {
+            String asterisks = new String(new char[information.length() - 1]).replace('\0', '*');
+            return information.charAt(0) + asterisks;
+        }
+        //如果是手机号就隐藏中间4位
+        String firstPart = information.substring(0, 3);
+        String middlePart = "****";
+        String lastPart = information.substring(7);
+        return firstPart + middlePart + lastPart;
+    }
+}

+ 2 - 2
yezhu-api/src/main/java/com/kioor/messageboard/controller/ApiMessageBoardController.java

@@ -56,11 +56,11 @@ public class ApiMessageBoardController {
         if(params.get("housingEstateId") == null){
             return new Result().error("小区不能为空");
         }
-        int status = housingEstateService.checkStatus((Long) params.get("housingEstateId"));
+        int status = housingEstateService.checkStatus(Long.parseLong(String.valueOf(params.get("housingEstateId"))));
         if(status!=1) {
             return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR, "无法访问,小区当前状态为" + HousingEstateStatus.fromCode(status).getDescription());
         }
-        MessageBoardDTO dto = messageBoardService.infoByHousingEstate((Long) params.get("housingEstateId"));
+        MessageBoardDTO dto = messageBoardService.infoByHousingEstate(Long.parseLong(String.valueOf(params.get("housingEstateId"))));
 
         return new Result<MessageBoardDTO>().ok(dto);
     }

+ 140 - 0
yezhu-api/src/main/java/com/kioor/messageboard/controller/ApiMessageController.java

@@ -0,0 +1,140 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.message.controller;
+
+
+import com.kioor.annotation.Login;
+import com.kioor.common.constant.Constant;
+import com.kioor.common.exception.ErrorCode;
+import com.kioor.common.page.PageData;
+import com.kioor.common.utils.Result;
+import com.kioor.common.validator.AssertUtils;
+import com.kioor.common.validator.ValidatorUtils;
+import com.kioor.common.validator.group.AddGroup;
+import com.kioor.common.validator.group.DefaultGroup;
+import com.kioor.common.validator.group.UpdateGroup;
+import com.kioor.messageboard.dto.MessageDTO;
+import com.kioor.messageboard.service.MessageService;
+import com.kioor.room.enums.HousingEstateStatus;
+import com.kioor.room.service.HousingEstateService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * 留言
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@AllArgsConstructor
+@RestController
+@RequestMapping("/api/message")
+@Tag(name = "留言")
+public class ApiMessageController {
+
+    private final MessageService messageService;
+
+    private final HousingEstateService housingEstateService;
+
+    @Login
+    @GetMapping("page")
+    @Operation(summary = "分页")
+    @Parameters({
+            @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true),
+            @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true),
+            @Parameter(name = Constant.ORDER_FIELD, description = "排序字段"),
+            @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)"),
+            @Parameter(name = "housingEstateId", description = "小区id"),
+            @Parameter(name = "Id", description = "留言板id")
+    })
+    public Result<PageData<MessageDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
+        //小区和留言板id不能同时为空
+        if(params.get("housingEstateId") == null && params.get("Id") == null){
+            return new Result().error(ErrorCode.NOT_NULL,"小区和留言板不能同时为空");
+        }
+        PageData<MessageDTO> page = messageService.page(params);
+        //校验小区状态
+        if(page.getList()!=null && !page.getList().isEmpty()){
+            int status = housingEstateService.checkStatus(page.getList().get(0).getHousingEstateId());
+            if(status!=1) {
+                return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR, "无法访问,小区当前状态为" + HousingEstateStatus.fromCode(status).getDescription());
+            }
+        }
+
+        return new Result<PageData<MessageDTO>>().ok(page);
+    }
+
+
+    @Login
+    @Operation(summary = "信息")
+    @GetMapping("{id}")
+    public Result<MessageDTO> info(@PathVariable("id") Long id) {
+        MessageDTO messageDTO = messageService.get(id);
+        //校验小区状态
+        if(messageDTO!=null){
+            int status = housingEstateService.checkStatus(messageDTO.getHousingEstateId());
+            if(status!=1) {
+                return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR, "无法访问,小区当前状态为" + HousingEstateStatus.fromCode(status).getDescription());
+            }
+        }
+        return new Result<MessageDTO>().ok(messageDTO);
+    }
+
+    @Login
+    @PostMapping
+    @Operation(summary = "保存")
+    public Result save(@RequestBody MessageDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        //效验数据
+        ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
+        dto.setEditUser(userId);
+        dto.setEditTime(new Date());
+        if(dto.getShowNameFlag()==null){
+            dto.setShowNameFlag(1);
+        }
+        if(dto.getShowRoomFlag()==null){
+            dto.setShowRoomFlag(1);
+        }
+
+        messageService.save(dto);
+
+        return new Result();
+    }
+
+    @Login
+    @PutMapping
+    @Operation(summary = "修改")
+    public Result update(@RequestBody MessageDTO dto, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+        //效验数据
+        ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
+
+        messageService.update(dto);
+
+        return new Result();
+    }
+
+    @Login
+    @DeleteMapping
+    @Operation(summary = "删除")
+    public Result delete(@RequestBody Long[] ids) {
+        //效验数据
+        AssertUtils.isArrayEmpty(ids, "id");
+
+        messageService.deleteBatchIds(Arrays.asList(ids));
+
+        return new Result();
+    }
+
+}

+ 29 - 0
yezhu-api/src/main/java/com/kioor/messageboard/dao/MessageDao.java

@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.messageboard.dao;
+
+import com.kioor.common.dao.BaseDao;
+import com.kioor.messageboard.dto.MessageDTO;
+import com.kioor.messageboard.entity.MessageEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 留言
+ * 
+ * @author Mark sunlightcs@gmail.com
+ */
+@Mapper
+public interface MessageDao extends BaseDao<MessageEntity> {
+    List<MessageDTO> getList(Map<String, Object> params);
+
+    MessageDTO get(Long id);
+}

+ 55 - 0
yezhu-api/src/main/java/com/kioor/messageboard/dto/MessageDTO.java

@@ -0,0 +1,55 @@
+/**
+ * /**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.messageboard.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.Date;
+
+
+/**
+ * 留言
+ *
+ * @author Mark sunlightcs@gmail.com
+ */
+@Data
+@Schema(description = "留言")
+public class MessageDTO {
+    @Schema(description = "id")
+    private Long id;
+
+    @Schema(description = "小区")
+    private Long housingEstateId;
+
+    @Schema(description = "留言板")
+    private Long messageBoardId;
+
+    @Schema(description = "留言内容")
+    private String content;
+
+    @Schema(description = "留言人")
+    private Long editUser;
+
+    @Schema(description = "留言时间")
+    private Date editTime;
+
+    @Schema(description = "是否显示姓名")
+    private Integer showNameFlag;
+
+    @Schema(description = "是否显示房号")
+    private Integer showRoomFlag;
+
+    @Schema(description = "留言人名字")
+    private String editUserName;
+
+    @Schema(description = "留言人房号")
+    private String roomName;
+}

+ 34 - 0
yezhu-api/src/main/java/com/kioor/messageboard/service/MessageService.java

@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ *
+ * https://www.yezhu.io
+ *
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.messageboard.service;
+
+import com.kioor.common.page.PageData;
+import com.kioor.common.service.BaseService;
+import com.kioor.messageboard.dto.MessageDTO;
+import com.kioor.messageboard.entity.MessageEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 留言
+ * 
+ * @author Mark sunlightcs@gmail.com
+ */
+public interface MessageService extends BaseService<MessageEntity> {
+    PageData<MessageDTO> page(Map<String, Object> params);
+
+    List<MessageDTO> list(Map<String, Object> params);
+
+    MessageDTO get(Long id);
+
+    void save(MessageDTO dto);
+
+    void update(MessageDTO dto);
+}

+ 91 - 0
yezhu-api/src/main/java/com/kioor/messageboard/service/impl/MessageServiceImpl.java

@@ -0,0 +1,91 @@
+/**
+ * Copyright (c) 2018 业主系统 All rights reserved.
+ * <p>
+ * https://www.yezhu.io
+ * <p>
+ * 版权所有,侵权必究!
+ */
+
+package com.kioor.messageboard.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.kioor.common.constant.Constant;
+import com.kioor.common.page.PageData;
+import com.kioor.common.service.impl.BaseServiceImpl;
+import com.kioor.common.utils.CommonUtils;
+import com.kioor.common.utils.ConvertUtils;
+import com.kioor.messageboard.dao.MessageDao;
+import com.kioor.messageboard.dto.MessageDTO;
+import com.kioor.messageboard.entity.MessageEntity;
+import com.kioor.messageboard.service.MessageService;
+import com.kioor.user.service.UserService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+@AllArgsConstructor
+public class MessageServiceImpl extends BaseServiceImpl<MessageDao, MessageEntity> implements MessageService {
+
+    private final UserService userService;
+
+    /**
+     * 分页
+     */
+    @Override
+    public PageData<MessageDTO> page(Map<String, Object> params) {
+
+        //分页
+        IPage<MessageEntity> page = getPage(params, Constant.CREATE_DATE, false);
+
+        //查询
+        List<MessageDTO> list = baseDao.getList(params);
+        //根据是否显示姓名和是否显示房号隐藏对应的数据
+        list.forEach(this::hiddenInformation);
+
+
+        return getPageData(list, page.getTotal(), MessageDTO.class);
+    }
+
+    @Override
+    public List<MessageDTO> list(Map<String, Object> params) {
+
+        //查询
+        List<MessageDTO> list = baseDao.getList(params);
+        //根据是否显示姓名和是否显示房号隐藏对应的数据
+        list.forEach(this::hiddenInformation);
+        return list;
+    }
+
+    @Override
+    public MessageDTO get(Long id) {
+
+        MessageDTO dto = baseDao.get(id);
+        hiddenInformation(dto);
+        return dto;
+    }
+
+    private void hiddenInformation(MessageDTO dto){
+        if(dto.getShowNameFlag() != 1){
+            dto.setEditUserName(CommonUtils.hiddenInformation(dto.getEditUserName()));
+        }
+        if(dto.getShowRoomFlag() != 1){
+            dto.setRoomName(CommonUtils.hiddenInformation(dto.getRoomName()));
+        }
+    }
+
+    @Override
+    public void save(MessageDTO dto) {
+        MessageEntity entity =  ConvertUtils.sourceToTarget(dto, MessageEntity.class);
+        insert(entity);
+    }
+
+    @Override
+    public void update(MessageDTO dto) {
+        MessageEntity entity = ConvertUtils.sourceToTarget(dto, MessageEntity.class);
+
+        updateById(entity);
+    }
+}

+ 11 - 2
yezhu-api/src/main/java/com/kioor/room/controller/ApiHousingEstateController.java

@@ -202,8 +202,14 @@ public class ApiHousingEstateController {
     @Login
     @DeleteMapping("cleanAll")
     @Operation(summary = "清空小区房号")
-    public Result cleanAll(@RequestBody Long housingEstateId) {
-
+    @Parameters({
+            @Parameter(name = "housingEstateId", description = "小区id", required = true)
+    })
+    public Result cleanAll(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
+        if(params.get("housingEstateId")==null){
+            return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR,"参数非法");
+        }
+        Long housingEstateId = Long.parseLong(String.valueOf(params.get("housingEstateId")));
         housingEstateService.cleanAll(housingEstateId);
         //删除小区留言板
         MessageBoardDTO messageBoardDTO = messageBoardService.infoByHousingEstate(housingEstateId);
@@ -211,6 +217,9 @@ public class ApiHousingEstateController {
             messageBoardService.deleteById(messageBoardDTO.getId());
         }
 
+        //设置小区初始化状态为0
+        housingEstateService.updateInitFlag(housingEstateId,0);
+
         return new Result();
     }
 

+ 16 - 0
yezhu-api/src/main/java/com/kioor/room/controller/ApiRoomController.java

@@ -78,6 +78,22 @@ public class ApiRoomController {
         return new Result<List<RoomDetailDTO>>().ok(list);
     }
 
+    @Login
+    @GetMapping("myRoom")
+    @Operation(summary = "我的房间")
+    public Result<RoomDetailDTO> myRoom(@Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
+
+        RoomDetailDTO dto = roomService.myRoom(userId);
+        //校验小区状态
+        if(dto!=null){
+            int status = housingEstateService.checkStatus(dto.getHousingEstateId());
+            if(status!=1) {
+                return new Result().error(ErrorCode.INTERNAL_SERVER_ERROR, "无法访问,小区当前状态为" + HousingEstateStatus.fromCode(status).getDescription());
+            }
+        }
+        return new Result<RoomDetailDTO>().ok(dto);
+    }
+
     @Login
     @GetMapping("roomUp")
     @Operation(summary = "我楼上的领居")

+ 7 - 1
yezhu-api/src/main/java/com/kioor/room/service/RoomService.java

@@ -31,7 +31,13 @@ public interface RoomService extends BaseService<RoomEntity> {
      * @return
      */
     List<RoomDetailDTO> floorList(Long userId);
-
+    /**
+     * 我的房间
+     *
+     * @param userId
+     * @return
+     */
+    public RoomDetailDTO myRoom(Long userId);
     /**
      * 我楼上的邻居
      * @param userId

+ 19 - 16
yezhu-api/src/main/java/com/kioor/room/service/impl/RoomServiceImpl.java

@@ -9,6 +9,7 @@
 package com.kioor.room.service.impl;
 
 import com.kioor.common.service.impl.BaseServiceImpl;
+import com.kioor.common.utils.CommonUtils;
 import com.kioor.common.utils.ConvertUtils;
 import com.kioor.room.dao.RoomDao;
 import com.kioor.room.dto.RoomDTO;
@@ -90,28 +91,30 @@ public class RoomServiceImpl extends BaseServiceImpl<RoomDao, RoomEntity> implem
         userList.forEach(item -> {
             UserResponseDTO userResponseDTO = ConvertUtils.sourceToTarget(item, UserResponseDTO.class);
             if(userResponseDTO.getOpenFlag() != 1){
-                userResponseDTO.setUsername(maskPhoneNumber(userResponseDTO.getUsername()));
-                userResponseDTO.setMobile(maskPhoneNumber(userResponseDTO.getMobile()));
+                userResponseDTO.setUsername(CommonUtils.hiddenInformation(userResponseDTO.getUsername()));
+                userResponseDTO.setMobile(CommonUtils.hiddenInformation(userResponseDTO.getMobile()));
             }
             userResponseDTOList.add(userResponseDTO);
         });
         roomDetailDTO.setUserList(userResponseDTOList);
     }
+    /**
+     * 我的房间
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    public RoomDetailDTO myRoom(Long userId) {
+        //查询用户
+        UserEntity loginUser = userService.selectById(userId);
+        //查询
+        RoomDTO roomDTO = findRoomByUserId(userId);
 
-    private static String maskPhoneNumber(String phoneNumber) {
-        if (phoneNumber == null) {
-            return null;
-        }
-        //如果不是手机号,只显示第一位
-        if (phoneNumber.length() < 11) {
-            String asterisks = new String(new char[phoneNumber.length() - 1]).replace('\0', '*');
-            return phoneNumber.charAt(0) + asterisks;
-        }
-        //如果是手机号就隐藏中间4位
-        String firstPart = phoneNumber.substring(0, 3);
-        String middlePart = "****";
-        String lastPart = phoneNumber.substring(7);
-        return firstPart + middlePart + lastPart;
+        //list复制到dto
+        RoomDetailDTO roomDetailDTO = ConvertUtils.sourceToTarget(roomDTO, RoomDetailDTO.class);
+        getRoomDetailDTO(roomDetailDTO,loginUser);
+        return roomDetailDTO;
     }
     /**
      * 我楼上的邻居

+ 29 - 0
yezhu-api/src/main/resources/mapper/messageboard/MessageDao.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kioor.messageboard.dao.MessageDao">
+
+    <select id="getList" resultType="com.kioor.messageboard.dto.MessageDTO">
+        select tm.*,tmb.housing_estate_id as housingEstateId, tu.username as editUserName,tuhe.remark as roomName
+        from tb_messages tm
+        left join tb_message_board  tmb on tm.message_board_id = tmb.id
+        left join tb_user tu on tm.edit_user = tu.id
+        left join tb_user_housing_estate tuhe on tu.id = tuhe.user_id
+        <if test="messageBoardId != null">
+            and tm.message_board_id = #{messageBoardId}
+        </if>
+        <if test="housingEstateId != null">
+            and tmb.housing_estate_id = #{housingEstateId}
+        </if>
+        order by tm.edit_time desc
+    </select>
+
+    <select id="get" resultType="com.kioor.messageboard.dto.MessageDTO">
+        select tm.*,tmb.housing_estate_id as housingEstateId, tu.username as editUserName,tuhe.remark as roomName
+        from tb_messages tm
+        left join tb_message_board  tmb on tm.message_board_id = tmb.id
+        left join tb_user tu on tm.edit_user = tu.id
+        left join tb_user_housing_estate tuhe on tu.id = tuhe.user_id
+        where tm.id = #{id}
+    </select>
+</mapper>