Kaynağa Gözat

消息中心相关功能调整

hym 4 yıl önce
ebeveyn
işleme
af59064db4

+ 1 - 0
message/src/main/java/com/huaxu/Dto/MessageDto.java

@@ -8,4 +8,5 @@ public class MessageDto {
     private String date;
     private String type;
     private String userId;
+    private Integer typeId;
 }

+ 5 - 1
message/src/main/java/com/huaxu/Dto/RequsetMessageQuery.java

@@ -8,6 +8,10 @@ import java.util.List;
 public class RequsetMessageQuery {
     @ApiModelProperty(value = "消息id")
     private List<Integer>ids;
-    @ApiModelProperty(value = "消息状态")
+    @ApiModelProperty(value = "删除标识")
     private Integer status;
+    @ApiModelProperty(value = "状态标识")
+    private Integer messageStatus;
+    @ApiModelProperty(value = "用户标识")
+    private Integer userId;
 }

+ 2 - 1
message/src/main/java/com/huaxu/config/ResourceServerConfig.java

@@ -17,7 +17,8 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                 .and()
                 .authorizeRequests()
                 .antMatchers("/swagger-ui.html","/webjars/**", "/webjars/**", "/swagger-resources/**",
-                       "/webSocket/**","/message/sendToOne","/v2/**")
+                       "/webSocket/**","/message/sendToOne","/messageTemplate/**","/messageType/**",
+                        "/v2/**")
                 .permitAll() //配置不需要身份认证的请求路径
                 .anyRequest().authenticated() //其他所有访问路径都需要身份认证
                 .and()

+ 1 - 1
message/src/main/java/com/huaxu/controller/MessageController.java

@@ -53,7 +53,7 @@ public class MessageController {
      * @return Response对象
      */
     @RequestMapping(value = "selectPage", method = RequestMethod.POST)
-    @ApiOperation(value = "查询消息列表(分页)",notes = "全部的时候不传typeid")
+    @ApiOperation(value = "查询消息列表(分页)",notes = "全部的时候除分页参数都不传,messageStatus:0 未读,1已读")
     public AjaxMessage<Pagination<Message>> selectPage(Integer pageNum, Integer pageSize,Integer typeId,
                                                        Integer messageStatus) {
         Message message = new Message();

+ 1 - 1
message/src/main/java/com/huaxu/dao/MessageTypeMapper.java

@@ -11,7 +11,7 @@ import java.util.List;
  * (MessageType)表数据库访问层
  *
  * @author makejava
- * @since 2020-11-16 17:34:22
+ * @since 2020-11-17 17:23:26
  */
 @Mapper
 public interface MessageTypeMapper {

+ 6 - 0
message/src/main/java/com/huaxu/entity/Message.java

@@ -1,5 +1,6 @@
 package com.huaxu.entity;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -81,6 +82,7 @@ public class Message implements Serializable {
      * 创建时间
      */
     @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
     private Date dateCreate;
     /**
      * 创建人
@@ -109,4 +111,8 @@ public class Message implements Serializable {
     private String typeName;
     @ApiModelProperty(value = "类型名简称")
     private String shortName;
+    @ApiModelProperty(value = "消息跳转绝对路径")
+    private String path;
+    @ApiModelProperty(value = "消息类型id")
+    private Integer typeId;
 }

+ 42 - 12
message/src/main/java/com/huaxu/entity/MessageTemplate.java

@@ -11,30 +11,60 @@ import java.util.Date;
  * (MessageTemplate)实体类
  *
  * @author makejava
- * @since 2020-11-13 10:48:59
+ * @since 2020-11-17 17:24:08
  */
 @Data
 @ApiModel
 public class MessageTemplate implements Serializable {
-    private static final long serialVersionUID = 352487528630439038L;
-    @ApiModelProperty(value = "")
+    private static final long serialVersionUID = 874813870214180010L;
+    /**
+     * 主键id
+     */
+    @ApiModelProperty(value = "主键id")
     private Integer id;
-    @ApiModelProperty(value = "")
+    /**
+     * 名称
+     */
+    @ApiModelProperty(value = "名称")
     private String name;
-    @ApiModelProperty(value = "")
+    /**
+     * 内容
+     */
+    @ApiModelProperty(value = "内容")
     private String content;
-    @ApiModelProperty(value = "")
+    /**
+     * 参数个数
+     */
+    @ApiModelProperty(value = "参数个数")
     private Integer paramTotal;
-    @ApiModelProperty(value = "")
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
     private Date dateCreate;
-    @ApiModelProperty(value = "")
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
     private String createBy;
-    @ApiModelProperty(value = "")
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
     private String updateBy;
-    @ApiModelProperty(value = "")
+    /**
+     * 应用id
+     */
+    @ApiModelProperty(value = "应用id")
     private Integer appId;
-    @ApiModelProperty(value = "")
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty(value = "更新时间")
     private Date dateUpdate;
-    @ApiModelProperty(value = "")
+    /**
+     * 删除标识
+     */
+    @ApiModelProperty(value = "删除标识")
     private Integer status;
 }

+ 7 - 2
message/src/main/java/com/huaxu/entity/MessageType.java

@@ -11,12 +11,12 @@ import java.util.Date;
  * (MessageType)实体类
  *
  * @author makejava
- * @since 2020-11-16 17:34:23
+ * @since 2020-11-17 17:23:27
  */
 @Data
 @ApiModel
 public class MessageType implements Serializable {
-    private static final long serialVersionUID = 568253371589969871L;
+    private static final long serialVersionUID = 266279144623833668L;
     /**
      * 主键id
      */
@@ -67,4 +67,9 @@ public class MessageType implements Serializable {
      */
     @ApiModelProperty(value = "简称")
     private String shortName;
+    /**
+     * 序列
+     */
+    @ApiModelProperty(value = "序列")
+    private Integer seq;
 }

+ 5 - 1
message/src/main/java/com/huaxu/mq/DispatchMessage.java

@@ -40,6 +40,7 @@ public class DispatchMessage {
     private MessageMapper messageMapper;
     @RabbitListener(queues = "${dispath.queue}")
     public void dispatch(String message){
+
         Long size = redisUtil.opsForList().size(userConnections);
         Message receiveMessage= JSONObject.parseObject(message, Message.class);
         receiveMessage.setStatus(1);
@@ -60,6 +61,7 @@ public class DispatchMessage {
         messageDto.setContent(receiveMessage.getMessageContent());
         messageDto.setType(messageType==null?"未知":messageType.getShortName());
         messageDto.setUserId(receiveMessage.getUserId()+"");
+        messageDto.setTypeId(messageTypeId);
         LocalDateTime now = LocalDateTime.now();
         DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         String date=dtf2.format(now);
@@ -69,7 +71,9 @@ public class DispatchMessage {
             WebsocketConnectInfo websocketConnectInfo =
                     JSONObject.parseObject(connectInfo, WebsocketConnectInfo.class);
             String sendMessage = JSONObject.toJSONString(messageDto);
-            if(websocketConnectInfo.getUserId().equals(receiveMessage.getUserId()+"")){
+            String connectUserId=websocketConnectInfo.getUserId();
+            String receiveUserId=receiveMessage.getUserId()+"";
+            if(connectUserId.equals(receiveUserId)){
                 log.info("向用户:"+websocketConnectInfo.getUserId()+"发送消息:"+sendMessage);
 
                rabbitTemplate.convertAndSend(websocketConnectInfo.getConnectServerExchange(),

+ 19 - 3
message/src/main/java/com/huaxu/service/impl/MessageServiceImpl.java

@@ -8,6 +8,7 @@ import com.huaxu.entity.Message;
 import com.huaxu.model.LoginUser;
 import com.huaxu.service.MessageService;
 import com.huaxu.util.UserUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -122,11 +123,25 @@ public class MessageServiceImpl implements MessageService {
     @Override
     public IPage<Message> selectPage(Message message, IPage<Message> page) {
         message.setUserId(UserUtil.getCurrentUser().getId());
-        return this.messageMapper.selectPage(page, message);
+        IPage<Message> messageIPage = this.messageMapper.selectPage(page, message);
+        messageIPage.getRecords().forEach(newMessage->{
+            if(StringUtils.isNoneEmpty(newMessage.getPath())&&
+                    StringUtils.isNoneEmpty(newMessage.getUrl())){
+                newMessage.setUrl(newMessage.getPath()+newMessage.getUrl());
+            }
+
+        });
+        return messageIPage;
     }
 
     @Override
     public int updateMultiple(RequsetMessageQuery requsetMessageQuery) {
+        requsetMessageQuery.setUserId(UserUtil.getCurrentUser().getId());
+        if(requsetMessageQuery.getIds().size()==0){
+           requsetMessageQuery.setIds(null);
+
+        }
+
         messageMapper.updateMultiple(requsetMessageQuery);
         return 0;
     }
@@ -135,8 +150,9 @@ public class MessageServiceImpl implements MessageService {
     public List<MessageStatic> queryUnreadMessageStatic() {
         LoginUser currentUser = UserUtil.getCurrentUser();
         List<MessageStatic> messageStatics = messageMapper.queryUnreadMessageStatic(currentUser.getId());
-        if(currentUser.getAppIds()!=null){
-            List<String>appIds=currentUser.getAppIds();
+        List<String>appIds=currentUser.getAppIds();
+        if(appIds!=null&&appIds.size()>0){
+
             List<MessageStatic> userMessageTypeByApp =
                     messageMapper.getUserMessageTypeByApp(appIds);
             Map<Integer,MessageStatic>staticMap=new HashMap<>();

+ 6 - 4
message/src/main/java/com/huaxu/util/Parser.java

@@ -152,7 +152,7 @@ public class Parser {
             end = source.indexOf("}", begin);
             if(begin < end) {
                 sub = source.substring(begin + 2, end);
-                sub = sub.replaceAll("\\$\\s*", "");	//去除所有空白字符
+                sub = sub.replaceAll("\\$\\s*\\d*", "");	//去除所有空白字符
                 //sub = sub.trim();	//去除首尾空白字符
                 if(params.containsKey(sub)) {
                     String regex = source.substring(begin, end + 1);
@@ -167,10 +167,12 @@ public class Parser {
 
 
     public static void main(String... args) {
-        String test="我喜欢${item},但是我更新换${product}";
+        String test="${场景名称} ${设备名称} ${状态}${报警规则}";
         Map<String,String>replace=new HashMap<>();
-        replace.put("item","money");
-        replace.put("product","flower");
+        replace.put("场景名称","money");
+        replace.put("设备名称","flower");
+        replace.put("状态","01");
+        replace.put("报警规则","777");
         String s = replaceAllClearBlanks(test, replace);
         System.out.println(s);
     }

+ 1 - 1
message/src/main/java/com/huaxu/util/WebSocketUtil.java

@@ -91,7 +91,7 @@ public class WebSocketUtil {
         websocketConnectInfo.setConnectServerRoutingKey(routingKey);
         RedisUtil redisUtil = SpringContextUtil.getBean(RedisUtil.class);
         redisUtil.opsForList().remove(connectInfo,0,JSONObject.toJSONString(websocketConnectInfo));
-        System.out.println(userName + "断开webSocket连接!当前人数为" + onlineNum);
+        System.out.println(userName + "断开webSocket连接" );
     }
 
     //收到客户端信息

+ 1 - 1
message/src/main/resources/application-dev.properties

@@ -39,7 +39,7 @@ spring.redis.lettuce.shutdown-timeout=100
 security.oauth2.client.client-id=smart-city-v2
 security.oauth2.client.client-secret=smart-city-v2-123
 security.oauth2.resource.id=smartcity-deivice-service
-security.oauth2.resource.user-info-uri=http://localhost:8321/user/principal
+security.oauth2.resource.user-info-uri=http://10.0.0.135:8321/user/principal
 security.oauth2.resource.prefer-token-info=false
 
 

+ 64 - 0
message/src/main/resources/application-sit.properties

@@ -0,0 +1,64 @@
+server.port=8323
+spring.application.name=uims-message
+logging.level.root=info
+logging.path=./logs/uims_message
+#\u6570\u636E\u5E93\u914D\u7F6E
+spring.datasource.url=jdbc:mysql://114.135.61.188:33306/uims_message?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=convertToNull
+spring.datasource.username=root
+spring.datasource.password=100Zone@123
+spring.datasource.driver-class-name=com.mysql.jdbc.Driver
+spring.datasource.hikari.max-lifetime=30000
+mybatis-plus.mapper-locations=classpath:mapper/*.xml
+mybatis-plus.type-aliases-package=com.huaxu.entity
+mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
+
+spring.jackson.time-zone=GMT+8
+#spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
+#spring.jackson.joda-date-time-format: yyyy-MM-dd HH:mm:ss
+
+# redis
+spring.redis.host=114.135.61.188
+spring.redis.port=26379
+spring.redis.password=zoniot
+spring.redis.database=2
+spring.redis.timeout=36000
+
+# Lettuce
+# \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
+spring.redis.lettuce.pool.max-active=8
+# \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
+spring.redis.lettuce.pool.max-wait=100
+# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5
+spring.redis.lettuce.pool.max-idle=8
+# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5
+spring.redis.lettuce.pool.min-idle=0
+# \u5173\u95ED\u8D85\u65F6\u65F6\u95F4
+spring.redis.lettuce.shutdown-timeout=100
+
+
+security.oauth2.client.client-id=smart-city-v2
+security.oauth2.client.client-secret=smart-city-v2-123
+security.oauth2.resource.id=smartcity-deivice-service
+security.oauth2.resource.user-info-uri=http://localhost:8321/user/principal
+security.oauth2.resource.prefer-token-info=false
+
+
+spring.servlet.multipart.max-file-size=100MB
+spring.servlet.multipart.max-request-size=100MB
+spring.servlet.multipart.location=${logging.path}/data
+######################################################RabbitMq\u914D\u7F6E#####################################################
+spring.rabbitmq.addresses=114.135.61.188:55672
+spring.rabbitmq.username=zoniot
+spring.rabbitmq.password=zcxk100
+spring.rabbitmq.virtual-host=/
+spring.rabbitmq.connection-timeout=15000
+spring.rabbitmq.publisher-confirm-type=correlated
+spring.rabbitmq.publisher-returns=true
+spring.rabbitmq.template.mandatory=true
+user.connections=userConnection
+dispath.queue=dispathTest
+receive.queue.name=receiveTest
+receive.exchange.name=messageExchangeTest
+receive.routing.key=receiveKeyTest
+dispath.routing.key=dipathKeyTest
+spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

+ 32 - 15
message/src/main/resources/mapper/MessageMapper.xml

@@ -46,7 +46,7 @@
     <select id="selectList" resultMap="MessageMap">
         select
         <include refid="Base_Column_List"/>
-        from uims_message
+        from uims_message a
         <where>
             <if test="id != null">
                 and id = #{id}
@@ -191,9 +191,10 @@
     </select>
     <select id="selectPage" resultMap="MessageMap">
         select
-        <include refid="Base_Column_List"/>,b.type typeName
+        <include refid="Base_Column_List"/>,b.type typeName,b.path
         from uims_message a join uims_message_type b on a.message_type=b.id
         <where>
+             a.status=1
             <if test="message.id != null">
                 and id = #{message.id}
             </if>
@@ -227,9 +228,7 @@
             <if test="message.tenantId != null and message.tenantId != ''">
                 and tenant_id = #{message.tenantId}
             </if>
-            <if test="message.status != null">
-                and status = #{message.status}
-            </if>
+
             <if test="message.dateCreate != null">
                 and date_create = #{message.dateCreate}
             </if>
@@ -246,31 +245,49 @@
                 and date_update = #{message.dateUpdate}
             </if>
         </where>
-        order by a.date_update desc
+        order by a.date_create desc
     </select>
     <select id="queryLastMessage" resultType="com.huaxu.entity.Message">
-        select a.date_create,a.message_content,b.short_name from uims_message a join uims_message_type b
+        select a.date_create,a.message_content,b.short_name,b.path,b.id typeId,a.url
+        from uims_message a
+            join uims_message_type b
          on a.message_type=b.id
-         where user_id=#{id}
+         where user_id=#{id} and a.status=1
         order by date_create desc limit #{num}
     </select>
     <select id="queryUnreadMessageStatic" resultType="com.huaxu.Dto.MessageStatic">
          select a.typeId,b.type,a.cn from (select message_type typeId ,
          count(*)cn  from
-         uims_message where user_id=#{id} and message_status=0
+         uims_message where user_id=#{id} and message_status=0 and status=1
         group by message_type) a join uims_message_type b on a.typeId=b.id
     </select>
     <select id="getUserMessageTypeByApp" resultType="com.huaxu.Dto.MessageStatic">
-        select id typeId,0 cn,type from uims_message_type where app_id in
+        select id typeId,0 cn,type from uims_message_type where status=1 and app_id in
         <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
             #{item}
         </foreach>
+        order by seq
     </select>
     <update id="updateMultiple">
-        update uims_message set status =#{status}
-        where id in
-        <foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
-            #{item}
-        </foreach>
+        update uims_message
+        <set>
+            <if test="status!= null">
+                status =#{status},
+            </if>
+            <if test="messageStatus != null">
+                message_status =#{messageStatus},
+            </if>
+        </set>
+
+        where  user_id =#{userId} and status=1
+
+        <if test="ids != null">
+           and id in
+            <foreach item="item" index="index" collection="ids" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+
+
     </update>
 </mapper>

+ 15 - 5
message/src/main/resources/mapper/MessageTypeMapper.xml

@@ -13,11 +13,12 @@
         <result property="status" column="status" jdbcType="INTEGER"/>
         <result property="dateUpdate" column="date_update" jdbcType="TIMESTAMP"/>
         <result property="shortName" column="short_name" jdbcType="VARCHAR"/>
+        <result property="seq" column="SEQ" jdbcType="INTEGER"/>
     </resultMap>
 
     <!-- 基本字段 -->
     <sql id="Base_Column_List">
-        id, type, path, date_create, app_id, create_by, update_by, status, date_update, short_name    </sql>
+        id, type, path, date_create, app_id, create_by, update_by, status, date_update, short_name, SEQ    </sql>
 
     <!-- 查询单个 -->
     <select id="selectById" resultMap="MessageTypeMap">
@@ -71,26 +72,29 @@
             <if test="shortName != null and shortName != ''">
                 and short_name = #{shortName}
             </if>
+            <if test="seq != null">
+                and SEQ = #{seq}
+            </if>
         </where>
     </select>
 
     <!-- 新增所有列 -->
     <insert id="insert" keyProperty="id" useGeneratedKeys="true">
         insert into uims_message_type(id, type, path, date_create, app_id, create_by, update_by, status, date_update,
-                                      short_name)
+                                      short_name, SEQ)
         values (#{id}, #{type}, #{path}, #{dateCreate}, #{appId}, #{createBy}, #{updateBy}, #{status}, #{dateUpdate},
-                #{shortName})
+                #{shortName}, #{seq})
     </insert>
 
     <!-- 批量新增 -->
     <insert id="batchInsert">
         insert into uims_message_type(id, type, path, date_create, app_id, create_by, update_by, status, date_update,
-        short_name)
+        short_name, SEQ)
         values
         <foreach collection="messageTypes" item="item" index="index" separator=",">
             (
             #{item.id}, #{item.type}, #{item.path}, #{item.dateCreate}, #{item.appId}, #{item.createBy},
-            #{item.updateBy}, #{item.status}, #{item.dateUpdate}, #{item.shortName} )
+            #{item.updateBy}, #{item.status}, #{item.dateUpdate}, #{item.shortName}, #{item.seq} )
         </foreach>
     </insert>
 
@@ -125,6 +129,9 @@
             <if test="shortName != null and shortName != ''">
                 short_name = #{shortName},
             </if>
+            <if test="seq != null">
+                SEQ = #{seq},
+            </if>
         </set>
         where id = #{id}
     </update>
@@ -176,6 +183,9 @@
             <if test="messageType.shortName != null and messageType.shortName != ''">
                 and short_name = #{messageType.shortName}
             </if>
+            <if test="messageType.seq != null">
+                and SEQ = #{messageType.seq}
+            </if>
         </where>
     </select>
 </mapper>