Browse Source

消息接口

SiweiYue 4 years ago
parent
commit
0b1f64c94b

+ 6 - 0
pom.xml

@@ -278,6 +278,12 @@
 		</dependency>
 		<!--400对接  end-->
 
+		<!-- jsoup HTML parser library @ https://jsoup.org/ -->
+		<dependency>
+			<groupId>org.jsoup</groupId>
+			<artifactId>jsoup</artifactId>
+			<version>1.11.2</version>
+		</dependency>
 	</dependencies>
 	<build>
 		<finalName>up-mls-api</finalName>

+ 115 - 0
src/main/java/com/up/zpb/controller/api/MsgController.java

@@ -0,0 +1,115 @@
+package com.up.zpb.controller.api;
+
+import com.github.pagehelper.Page;
+import com.github.pagehelper.PageHelper;
+import com.up.zpb.controller.AbstractController;
+import com.up.zpb.service.MsgService;
+import com.up.zpb.util.CheckParametersUtil;
+import com.up.zpb.util.Constant;
+import com.up.zpb.util.ServletUtils;
+import com.up.zpb.vo.ResultObject;
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+/***
+ * 站内消息控制器
+ */
+@RestController
+@RequestMapping("msg")
+public class MsgController extends AbstractController {
+
+    private static final Logger logger = LoggerFactory.getLogger(MsgController.class);
+
+    @Autowired
+    private MsgService msgService;
+
+    /**
+     * 消息列表
+     *
+     * @param request
+     * @return
+     */
+    @PostMapping("/auth/list")
+    public ResultObject list(HttpServletRequest request) {
+        ResultObject resultObject = new ResultObject();
+        Map<String, Object> parameters = ServletUtils.getParameters(request);
+        try {
+            CheckParametersUtil.getInstance()
+                    .put(parameters.get("pageSize"), "pageSize")
+                    .put(parameters.get("pageNum"), "pageNum")
+                    .checkParameter();
+        } catch (Exception e) {
+            resultObject.setCode(Constant.CODE_PARAM_NULL);
+            resultObject.setMessage(e.getMessage());
+            logger.error(e.getMessage(), e);
+            return resultObject;
+        }
+        try {
+            Integer pageSize = Integer.valueOf((String) parameters.get("pageSize"));
+            Integer pageNum = Integer.valueOf((String) parameters.get("pageNum"));
+            Page<Object> startPage = PageHelper.startPage(pageNum, pageSize, true);
+            resultObject = msgService.selectList(parameters);
+            resultObject.put("totalCount", startPage.getTotal());
+        } catch (Exception e) {
+            resultObject.setCode(Constant.CODE_EXCEPTION);
+            resultObject.setMessage("系统异常");
+            logger.error(e.getMessage(), e);
+        }
+        return resultObject;
+    }
+
+    /**
+     * 消息已读
+     * id 消息id or 当前登录人id
+     * type 1-单条已读 2-全部已读;3-单条删除 4-全部删除
+     *
+     * @param request
+     * @return
+     */
+    @PostMapping("/auth/readAndDelete")
+    public ResultObject alreadyRead(HttpServletRequest request) {
+        ResultObject resultObject = new ResultObject();
+        Map<String, Object> parameters = ServletUtils.getParameters(request);
+        try {
+            CheckParametersUtil.getInstance()
+                    .put(parameters.get("type"), "type")
+                    .checkParameter();
+        } catch (Exception e) {
+            resultObject.setCode(Constant.CODE_PARAM_NULL);
+            resultObject.setMessage(e.getMessage());
+            logger.error(e.getMessage(), e);
+            return resultObject;
+        }
+        //单条删除或者单条已读,id为必传参数
+        if (StringUtils.equals(String.valueOf(parameters.get("type")), "1") || StringUtils.equals(String.valueOf(parameters.get("type")), "3")) {
+            try {
+                CheckParametersUtil.getInstance()
+                        .put(parameters.get("id"), "id")
+                        .checkParameter();
+            } catch (Exception e) {
+                resultObject.setCode(Constant.CODE_PARAM_NULL);
+                resultObject.setMessage(e.getMessage());
+                logger.error(e.getMessage(), e);
+                return resultObject;
+            }
+        }
+        try {
+            resultObject = msgService.alreadyRead(parameters);
+        } catch (Exception e) {
+            resultObject.setCode(Constant.CODE_EXCEPTION);
+            resultObject.setMessage("系统异常");
+            logger.error(e.getMessage(), e);
+        }
+        return resultObject;
+    }
+
+
+}

+ 17 - 0
src/main/java/com/up/zpb/mapper/MsgMapper.java

@@ -0,0 +1,17 @@
+package com.up.zpb.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+public interface MsgMapper {
+
+    List<Map<String, Object>> selectList(Map<String, Object> parameters);
+
+    void updateReads(Map<String, Object> parameters);
+
+    void updateDeletes(Map<String, Object> parameters);
+
+    void updateRead(Map<String, Object> parameters);
+
+    void updateDelete(Map<String, Object> parameters);
+}

+ 12 - 0
src/main/java/com/up/zpb/service/MsgService.java

@@ -0,0 +1,12 @@
+package com.up.zpb.service;
+
+import com.up.zpb.vo.ResultObject;
+
+import java.util.Map;
+
+public interface MsgService {
+
+    ResultObject selectList(Map<String, Object> parameters);
+
+    ResultObject alreadyRead(Map<String, Object> parameters);
+}

+ 118 - 0
src/main/java/com/up/zpb/service/impl/MsgServiceImpl.java

@@ -0,0 +1,118 @@
+package com.up.zpb.service.impl;
+
+import com.up.zpb.mapper.MsgMapper;
+import com.up.zpb.service.MsgService;
+import com.up.zpb.util.Constant;
+import com.up.zpb.vo.ResultObject;
+import org.apache.commons.lang.StringUtils;
+import org.jsoup.Jsoup;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+public class MsgServiceImpl implements MsgService {
+
+    private static final Logger logger = LoggerFactory.getLogger(MsgServiceImpl.class);
+
+    @Autowired
+    private MsgMapper msgMapper;
+
+    @Override
+    public ResultObject selectList(Map<String, Object> parameters) {
+        ResultObject resultObject = new ResultObject();
+        try {
+            List<Map<String, Object>> list = msgMapper.selectList(parameters);
+            //处理内容
+            for (int i = 0; i < list.size(); i++) {
+                if (String.valueOf(list.get(i).get("status")).equals("2")) {
+                    String content = Jsoup.parse(String.valueOf(list.get(i).get("content"))).text();
+                    if (content.length() > 50) {
+                        list.get(i).put("content", content.substring(0, 50));
+                    } else {
+                        list.get(i).put("content", content);
+                    }
+                }
+            }
+
+            //处理时间
+            editDate(list);
+            resultObject.put("data", list);
+        } catch (Exception e) {
+            resultObject.setCode(Constant.CODE_EXCEPTION);
+            resultObject.setMessage("系统异常");
+            logger.error(e.getMessage(), e);
+        }
+        return resultObject;
+    }
+
+
+    @Override
+    public ResultObject alreadyRead(Map<String, Object> parameters) {
+        ResultObject resultObject = new ResultObject();
+        try {
+            String type = String.valueOf(parameters.get("type"));
+            if (type.equals("2")){
+                //全部已读
+                msgMapper.updateReads(parameters);
+            }else if (type.equals("4")){
+                //全部删除
+                msgMapper.updateDeletes(parameters);
+            }else if (type.equals("1")){
+                // 单条已读
+                msgMapper.updateRead(parameters);
+            }else if (type.equals("3")){
+                // 单条删除
+                msgMapper.updateDelete(parameters);
+            }
+
+
+        } catch (Exception e) {
+            resultObject.setCode(Constant.CODE_EXCEPTION);
+            resultObject.setMessage("系统异常");
+            logger.error(e.getMessage(), e);
+        }
+        return resultObject;
+    }
+
+
+    /**
+     * 消息时间处理
+     *
+     * @param list
+     */
+    private void editDate(List<Map<String, Object>> list) {
+        SimpleDateFormat fm = new SimpleDateFormat("HH:mm:ss");
+        SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
+        for (int i = 0; i < list.size(); i++) {
+            if (fmt.format(StringToDate(String.valueOf(list.get(i).get("create_time")))).equals(fmt.format(new Date()))) {
+                //格式化为相同格式
+                list.get(i).put("create_time", fm.format(StringToDate(String.valueOf(list.get(i).get("create_time")))));
+            } else {
+                list.get(i).put("create_time", fmt.format(StringToDate(String.valueOf(list.get(i).get("create_time")))));
+            }
+        }
+    }
+
+    private static Date StringToDate(String datetime) {
+        SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date date = new Date();
+        try {
+            date = sdFormat.parse(datetime);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return date;
+    }
+
+}

+ 53 - 0
src/main/resources/configs/mybatis/xml/MsgMapper.xml

@@ -0,0 +1,53 @@
+<?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.up.zpb.mapper.MsgMapper">
+
+    <select id="selectList" resultType="map" parameterType="map">
+        SELECT
+            nu.id,
+            nu.create_time,
+            nu.if_see,
+            nu.content,
+            nu.`status`,
+            nu.title
+        FROM
+            news_user nu
+        WHERE
+	        nu.user_id = #{authentication}
+        ORDER BY
+            nu.create_time DESC
+    </select>
+
+    <update id="updateReads" parameterType="map">
+        UPDATE news_user
+        SET if_see = 2
+        WHERE
+            user_id = #{authentication}
+    </update>
+
+    <delete id="updateDeletes" parameterType="map">
+        DELETE
+        FROM
+            news_user
+        WHERE
+            `status` = 2
+            AND user_id = #{authentication}
+    </delete>
+
+    <update id="updateRead" parameterType="map">
+        UPDATE news_user
+        SET if_see = 2
+        WHERE
+            user_id = #{authentication} and id = #{id}
+    </update>
+
+    <delete id="updateDelete" parameterType="map">
+        DELETE
+        FROM
+            news_user
+        WHERE
+            `status` = 2
+            AND user_id = #{authentication} and id = #{id}
+    </delete>
+
+</mapper>