浏览代码

站内消息接口

yanliming 4 年之前
父节点
当前提交
2c51e9ce19

+ 3 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/dao/MessageReceiverDAO.java

@@ -3,6 +3,7 @@ package com.jpsoft.enterprise.modules.base.dao;
 import java.util.List;
 
 import com.jpsoft.enterprise.modules.base.entity.MessageReceiver;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 import java.util.Map;
 import com.jpsoft.enterprise.modules.common.dto.Sort;
@@ -14,6 +15,8 @@ public interface MessageReceiverDAO {
 	int exist(String id);
 	MessageReceiver get(String id);
 	int delete(String id);
+	int countByReadStatus(@Param("personId") String personId, @Param("readStatus")Boolean readStatus);
+	List<MessageReceiver> findByPersonId(String personId);
 	List<MessageReceiver> list();
 	List<MessageReceiver> search(Map<String,Object> searchParams,List<Sort> sortList);
 }

+ 32 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/dto/MessageInfoDTO.java

@@ -0,0 +1,32 @@
+package com.jpsoft.enterprise.modules.base.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class MessageInfoDTO {
+
+    @ApiModelProperty(value = "ID")
+    private String id;
+
+    @ApiModelProperty(value = "类型名称")
+    private String typeName;
+
+    @ApiModelProperty(value = "消息标题")
+    private String title;
+
+    @ApiModelProperty(value = "已读状态")
+    private Boolean readStatus;
+
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "图片地址")
+    private String picUrl;
+}

+ 22 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/dto/MessageReceiverDTO.java

@@ -0,0 +1,22 @@
+package com.jpsoft.enterprise.modules.base.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class MessageReceiverDTO {
+    @ApiModelProperty(value = "消息标题")
+    private String title;
+
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone ="GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+}

+ 2 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/service/MessageReceiverService.java

@@ -12,6 +12,8 @@ public interface MessageReceiverService {
 	int insert(MessageReceiver model);
 	int update(MessageReceiver model);
 	int delete(String id);
+	int countByReadStatus(String personId,Boolean readStatus);
+	List<MessageReceiver> findByPersonId(String personId);
 	List<MessageReceiver> list();
 	Page<MessageReceiver> pageSearch(Map<String, Object> searchParams,int pageNum,int pageSize,boolean count,List<Sort> sortList);
 }

+ 10 - 0
common/src/main/java/com/jpsoft/enterprise/modules/base/service/impl/MessageReceiverServiceImpl.java

@@ -47,6 +47,16 @@ public class MessageReceiverServiceImpl implements MessageReceiverService {
 		return messageReceiverDAO.delete(id);
 	}
 
+	@Override
+	public int countByReadStatus(String personId,Boolean readStatus){
+		return messageReceiverDAO.countByReadStatus(personId,readStatus);
+	}
+
+	@Override
+	public List<MessageReceiver> findByPersonId(String personId){
+		return messageReceiverDAO.findByPersonId(personId);
+	}
+
 	@Override
 	public boolean exist(String id) {
 		// TODO Auto-generated method stub

+ 9 - 2
common/src/main/resources/mapper/base/MessageReceiver.xml

@@ -77,6 +77,12 @@ id_,message_id,person_id,read_status,del_flag,create_by,create_time,update_by,up
 	<select id="exist" parameterType="string" resultType="int">
 		select count(*) from base_message_receiver where id_=#{0}
 	</select>
+	<select id="countByReadStatus"  resultType="int">
+		select count(*) from base_message_receiver where person_id = #{personId} and del_flag = false and read_status = #{readStatus}
+	</select>
+	<select id="findByPersonId" resultMap="MessageReceiverMap">
+		select * from base_message_receiver where person_id = #{0} and del_flag = false
+	</select>
 	<select id="list" resultMap="MessageReceiverMap">
 		select * from base_message_receiver
 	</select>
@@ -85,8 +91,9 @@ id_,message_id,person_id,read_status,del_flag,create_by,create_time,update_by,up
 			select * from base_message_receiver
 		]]>
 		<where>
-			<if test="searchParams.id != null">
-				and ID_ like #{searchParams.id}
+			del_flag = false
+			<if test="searchParams.personId != null">
+				and person_id = #{searchParams.personId}
 			</if>
 		</where>
 		<foreach item="sort" collection="sortList"  open="order by" separator=",">

+ 182 - 0
web/src/main/java/com/jpsoft/enterprise/modules/mobile/controller/MessageInfoApiController.java

@@ -0,0 +1,182 @@
+package com.jpsoft.enterprise.modules.mobile.controller;
+
+
+import com.github.pagehelper.Page;
+import com.github.pagehelper.util.StringUtil;
+import com.jpsoft.enterprise.modules.base.dto.MessageInfoDTO;
+import com.jpsoft.enterprise.modules.base.dto.MessageReceiverDTO;
+import com.jpsoft.enterprise.modules.base.entity.MessageInfo;
+import com.jpsoft.enterprise.modules.base.entity.MessageReceiver;
+import com.jpsoft.enterprise.modules.base.entity.MessageType;
+import com.jpsoft.enterprise.modules.base.service.MessageInfoService;
+import com.jpsoft.enterprise.modules.base.service.MessageReceiverService;
+import com.jpsoft.enterprise.modules.base.service.MessageTypeService;
+import com.jpsoft.enterprise.modules.common.dto.MessageResult;
+import com.jpsoft.enterprise.modules.common.dto.Sort;
+import com.jpsoft.enterprise.modules.common.utils.PojoUtils;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+@RequestMapping("/mobile/messageInfoApi")
+@Slf4j
+public class MessageInfoApiController {
+
+    @Autowired
+    private MessageReceiverService messageReceiverService;
+
+    @Autowired
+    private MessageInfoService messageInfoService;
+
+    @Autowired
+    private MessageTypeService messageTypeService;
+
+    @PostMapping("pageList")
+    @ApiOperation(value = "消息列表")
+    public MessageResult<Map> pageList(
+            String token,
+            @RequestParam(value="pageIndex",defaultValue="1") int pageIndex,
+            @RequestParam(value="pageSize",defaultValue="20") int pageSize,
+            @RequestAttribute String subject) {
+        MessageResult<Map> messageResult = new MessageResult<>();
+
+        try {
+            Map<String,Object> searchParams = new HashMap<>();
+
+
+            searchParams.put("personId",subject);
+
+            List<Sort> sortList = new ArrayList<>();
+            sortList.add(new Sort("create_time", "desc"));
+
+            Page<MessageReceiver> page = messageReceiverService.pageSearch(searchParams, pageIndex, pageSize, true, sortList);
+
+            Page<MessageInfoDTO> pageDto = new Page<>();
+
+            for (MessageReceiver messageReceiver:page) {
+                MessageInfoDTO dto = new MessageInfoDTO();
+                dto.setId(messageReceiver.getId());
+                MessageInfo messageInfo = messageInfoService.get(messageReceiver.getMessageId());
+
+                if(messageInfo!=null){
+                    dto.setTitle(messageInfo.getTitle());
+                    MessageType messageType = messageTypeService.get(messageInfo.getType());
+
+                    if(messageType!=null){
+                        dto.setTypeName(messageType.getName());
+                        dto.setPicUrl(messageType.getPicUrl());
+                    }
+                }
+                dto.setCreateTime(messageReceiver.getCreateTime());
+                dto.setReadStatus(messageReceiver.getReadStatus());
+
+
+                pageDto.add(dto);
+
+            }
+
+            pageDto.setPageSize(page.getPageSize());
+            pageDto.setTotal(page.getTotal());
+            pageDto.setPageNum(page.getPageNum());
+
+            messageResult.setData(PojoUtils.pageWrapper(pageDto));
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+    @PostMapping("detail")
+    @ApiOperation(value = "消息详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "消息ID", required = true, paramType = "form")
+    })
+    public MessageResult<MessageReceiverDTO> detail(String id,String token,@RequestAttribute String subject){
+        MessageResult<MessageReceiverDTO> messageResult = new MessageResult<>();
+
+        try{
+            MessageReceiver messageReceiver = messageReceiverService.get(id);
+
+            messageReceiver.setReadStatus(true);
+            messageReceiver.setUpdateBy(subject);
+            messageReceiver.setUpdateTime(new Date());
+
+            messageReceiverService.update(messageReceiver);
+
+            MessageReceiverDTO dto = new MessageReceiverDTO();
+
+            MessageInfo messageInfo = messageInfoService.get(messageReceiver.getMessageId());
+
+            if(messageInfo!=null){
+                dto.setTitle(messageInfo.getTitle());
+                dto.setContent(messageInfo.getContent());
+
+            }
+            dto.setCreateTime(messageReceiver.getCreateTime());
+
+            messageResult.setData(dto);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+
+        }
+        catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+    }
+
+
+    @PostMapping("onekeyReadStatus")
+    @ApiOperation(value = "一键已读")
+    public MessageResult<Integer> onekeyReadStatus(String token,@RequestAttribute String subject) {
+        MessageResult<Integer> messageResult = new MessageResult<>();
+
+
+        try{
+            List<MessageReceiver> list = messageReceiverService.findByPersonId(subject);
+
+            Date now = new Date();
+
+            int count = 0;
+
+            for (MessageReceiver messageReceiver:list) {
+                messageReceiver.setReadStatus(true);
+                messageReceiver.setUpdateTime(now);
+                messageReceiver.setUpdateBy(subject);
+
+                count += messageReceiverService.update(messageReceiver);
+            }
+
+            messageResult.setData(count);
+            messageResult.setResult(true);
+            messageResult.setCode(200);
+
+        }
+        catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            messageResult.setCode(400);
+            messageResult.setResult(false);
+            messageResult.setMessage(ex.getMessage());
+        }
+
+        return messageResult;
+
+    }
+}

+ 8 - 0
web/src/main/java/com/jpsoft/enterprise/modules/mobile/controller/PersonInfoApiController.java

@@ -3,6 +3,7 @@ package com.jpsoft.enterprise.modules.mobile.controller;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.jpsoft.enterprise.modules.base.entity.PersonInfo;
+import com.jpsoft.enterprise.modules.base.service.MessageReceiverService;
 import com.jpsoft.enterprise.modules.base.service.PersonInfoService;
 import com.jpsoft.enterprise.modules.common.dto.MessageResult;
 import com.jpsoft.enterprise.modules.common.utils.AESUtil;
@@ -43,6 +44,9 @@ public class PersonInfoApiController {
     @Autowired
     private ValueOperations<String, Object> valueOperations;
 
+    @Autowired
+    private MessageReceiverService messageReceiverService;
+
 
 
 
@@ -252,6 +256,10 @@ public class PersonInfoApiController {
                String token = JwtUtil.createToken(jwtSecret, personInfo.getId() + "", DateUtil.offsetHour(new Date(),6));
                dataMap.put("personInfo", personInfo);
                dataMap.put("token", token);
+
+               int messageNum = messageReceiverService.countByReadStatus(personInfo.getId(),false);
+
+               dataMap.put("messageNum",messageNum);
            }
 
             messageResult.setData(dataMap);