Browse Source

更新消息中心功能

wang-hai-cheng 5 years ago
parent
commit
0a6a19e458

+ 3 - 1
lift-push/src/main/java/cn/com/ty/lift/push/app/PushConsumer.java

@@ -139,7 +139,7 @@ public class PushConsumer {
      */
     private void saveMessage(PushMessage pushMessage) {
         List<String> toList = pushMessage.getToList();
-        List<UserAccount> userAccounts = userAccountService.list(Wrappers.<UserAccount>query().in("device_flag", toList));
+        List<UserAccount> userAccounts = userAccountService.list(Wrappers.<UserAccount>query().in(!toList.isEmpty(),"device_flag", toList));
         List<TimeMessage> timeMessages = new ArrayList<>();
         for (UserAccount userAccount : userAccounts) {
             TimeMessage timeMessage = new TimeMessage();
@@ -162,7 +162,9 @@ public class PushConsumer {
             timeMessage.setDeviceModel(userAccount.getDeviceModel());
             timeMessage.setUserId(10000L);
             timeMessage.setCreateTime(LocalDateTime.now());
+            timeMessages.add(timeMessage);
         }
+        log.info("消息记录列表:"+timeMessages.toString());
         timeMessageService.saveBatch(timeMessages);
     }
 }

+ 4 - 0
lift-push/src/main/java/cn/com/ty/lift/push/message/controller/TimeMessageController.java

@@ -24,13 +24,16 @@ public class TimeMessageController {
     public RestResponse list(@RequestBody MessageVo messageVo) {
         IPage<TimeMessage> page = new Page<>(messageVo.getPageNum(), messageVo.getPageSize());
         IPage<TimeMessage> result = timeMessageService.page(page, Wrappers.<TimeMessage>query()
+                .eq(messageVo.getUserId() != null, "user_id", messageVo.getUserId())
                 .eq(messageVo.getType() != null, "type", messageVo.getType())
                 .orderByAsc("view_flag", "create_time"));
         MessageBO messageBO = MessageBO.pageCastMessageBo(result);
         messageBO.setReadCount(timeMessageService.count(Wrappers.<TimeMessage>query()
+                .eq(messageVo.getUserId() != null, "user_id", messageVo.getUserId())
                 .eq("view_flag", 1)
                 .eq("type", messageVo.getType())));
         messageBO.setUnreadCount(timeMessageService.count(Wrappers.<TimeMessage>query()
+                .eq(messageVo.getUserId() != null, "user_id", messageVo.getUserId())
                 .eq("view_flag", 0)
                 .eq("type", messageVo.getType())));
         return RestResponse.success(messageBO);
@@ -40,6 +43,7 @@ public class TimeMessageController {
     public RestResponse message(@RequestBody MessageVo messageVo) {
         TimeMessage byId = timeMessageService.getById(messageVo.getId());
         byId.setViewFlag(1);
+        timeMessageService.updateById(byId);
         return RestResponse.success(byId);
     }
 }

+ 52 - 0
lift-push/src/main/java/cn/com/ty/lift/push/push/PushUserService.java

@@ -0,0 +1,52 @@
+package cn.com.ty.lift.push.push;
+
+import cn.com.ty.lift.common.constants.CommonEnum;
+import cn.com.ty.lift.common.model.PushUserInfo;
+import cn.com.ty.lift.push.push.mapper.PushUserMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 推送用户
+ *
+ * @author wcz
+ * @since 2020/4/24
+ */
+@Service
+public class PushUserService extends ServiceImpl<PushUserMapper, PushUserInfo> {
+
+    public PushUserInfo listByUserId(Long mtCompanyId, Long userId){
+        return baseMapper.listByUserId(mtCompanyId, userId);
+    }
+
+    public List<PushUserInfo> listByUserIds(Long mtCompanyId, List<Long> userIds){
+        return baseMapper.listByUserIds(mtCompanyId, userIds);
+    }
+
+    public List<PushUserInfo> listByRoleCodes(Long mtCompanyId, List<String> roleCodes){
+        return baseMapper.listByRoleCodes(mtCompanyId, roleCodes);
+    }
+
+    /**
+     * 查询公司下总经理
+     */
+    public List<PushUserInfo> listHighDirector(Long mtCompanyId){
+        return baseMapper.listByRoleCode(mtCompanyId, CommonEnum.DefaultRole.HIGH_DIRECTOR.getCode());
+    }
+    /**
+     * 查询公司下管理员
+     */
+    public List<PushUserInfo> listEnterpriseAdmin(Long mtCompanyId){
+        return baseMapper.listByRoleCode(mtCompanyId, CommonEnum.DefaultRole.ENTERPRISE_ADMIN.getCode());
+    }
+
+    /**
+     * 分页查询公司下所有的人员
+     */
+    public IPage<PushUserInfo> pageByMtCompany(IPage<PushUserInfo> page, Long mtCompanyId){
+        return baseMapper.pageByMtCompany(page, mtCompanyId);
+    }
+}

+ 29 - 0
lift-push/src/main/java/cn/com/ty/lift/push/push/mapper/PushUserMapper.java

@@ -0,0 +1,29 @@
+package cn.com.ty.lift.push.push.mapper;
+
+import cn.com.ty.lift.common.model.PushUserInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  推送用户账号 Mapper 接口
+ * </p>
+ *
+ * @author wcz
+ * @since 2020-04-17
+ */
+public interface PushUserMapper extends BaseMapper<PushUserInfo> {
+
+    List<PushUserInfo> listByUserIds(@Param("mtCompanyId") Long mtCompanyId, @Param("userIds") List<Long> userIds);
+
+    PushUserInfo listByUserId(@Param("mtCompanyId") Long mtCompanyId, @Param("userId") Long userId);
+
+    List<PushUserInfo> listByRoleCodes(@Param("mtCompanyId") Long mtCompanyId, @Param("roleCodes") List<String> roleCodes);
+
+    List<PushUserInfo> listByRoleCode(@Param("mtCompanyId") Long mtCompanyId, @Param("roleCode") String roleCode);
+
+    IPage<PushUserInfo> pageByMtCompany(IPage<PushUserInfo> page, @Param("mtCompanyId") Long mtCompanyId);
+}

+ 133 - 0
lift-push/src/main/resources/mapper/push/PushUserMapper.xml

@@ -0,0 +1,133 @@
+<?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="cn.com.ty.lift.push.push.mapper.PushUserMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="cn.com.ty.lift.common.model.PushUserInfo">
+        <id column="user_id" property="userId"/>
+        <result column="username" property="userName"/>
+        <result column="mobile" property="mobile"/>
+        <result column="device_model" property="deviceModel"/>
+        <result column="device_flag" property="deviceFlag"/>
+        <result column="role_name" property="roleName"/>
+    </resultMap>
+
+    <select id="listByUserId" resultMap="BaseResultMap">
+        SELECT
+            ui.user_id,
+            ui.NAME AS username,
+            ua.mobile,
+            ua.device_model,
+            ua.device_flag,
+            ro.NAME AS role_name
+        FROM
+            user_info ui
+            LEFT JOIN user_account ua ON ui.user_id = ua.user_id
+            LEFT JOIN user_role ur ON ui.user_id = ur.user_id
+            LEFT JOIN role ro ON ro.id = ur.role_id
+        <where>
+            <if test="mtCompanyId != null and mtCompanyId > 0">
+                AND ur.company_id = #{mtCompanyId}
+            </if>
+            <if test="userId != null and userId > 0">
+                AND ui.user_id = #{userId}
+            </if>
+        </where>
+    </select>
+
+    <select id="listByUserIds" resultMap="BaseResultMap">
+        SELECT
+            ui.user_id,
+            ui.NAME AS username,
+            ua.mobile,
+            ua.device_model,
+            ua.device_flag,
+            ro.NAME AS role_name
+        FROM
+            user_info ui
+            LEFT JOIN user_account ua ON ui.user_id = ua.user_id
+            LEFT JOIN user_role ur ON ui.user_id = ur.user_id
+            LEFT JOIN role ro ON ro.id = ur.role_id
+        <where>
+            <if test="mtCompanyId != null and mtCompanyId > 0">
+                AND ur.company_id = #{mtCompanyId}
+            </if>
+            <if test="userIds != null">
+                AND ui.user_id IN
+                <foreach collection="userIds" item="userId" open="(" separator="," close=")">
+                    #{userId, jdbcType=BIGINT}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
+    <select id="listByRoleCodes" resultMap="BaseResultMap">
+        SELECT
+            ui.user_id,
+            ui.NAME AS username,
+            ua.mobile,
+            ua.device_model,
+            ua.device_flag,
+            ro.NAME AS role_name
+        FROM
+            user_info ui
+            LEFT JOIN user_account ua ON ui.user_id = ua.user_id
+            LEFT JOIN user_role ur ON ui.user_id = ur.user_id
+            LEFT JOIN role ro ON ro.id = ur.role_id
+        <where>
+            <if test="mtCompanyId != null and mtCompanyId > 0">
+                AND ur.company_id = #{mtCompanyId}
+            </if>
+            <if test="roleCodes != null">
+                AND ro.code IN
+                <foreach collection="roleCodes" item="roleCode" open="(" separator="," close=")">
+                    #{roleCode, jdbcType=VARCHAR}
+                </foreach>
+            </if>
+        </where>
+    </select>
+
+    <select id="listByRoleCode" resultMap="BaseResultMap">
+        SELECT
+        ui.user_id,
+        ui.NAME AS username,
+        ua.mobile,
+        ua.device_model,
+        ua.device_flag,
+        ro.NAME AS role_name
+        FROM
+        user_info ui
+        LEFT JOIN user_account ua ON ui.user_id = ua.user_id
+        LEFT JOIN user_role ur ON ui.user_id = ur.user_id
+        LEFT JOIN role ro ON ro.id = ur.role_id
+        <where>
+            <if test="mtCompanyId != null and mtCompanyId > 0">
+                AND ur.company_id = #{mtCompanyId}
+            </if>
+            <if test="roleCode != null and roleCode != ''">
+                AND ro.code = #{roleCode, jdbcType=VARCHAR}
+            </if>
+        </where>
+    </select>
+
+    <select id="pageByMtCompany" resultMap="BaseResultMap" parameterType="java.lang.Long">
+        SELECT
+            ui.user_id,
+            ui.NAME AS username,
+            ua.mobile,
+            ua.device_model,
+            ua.device_flag,
+            ro.NAME AS role_name
+        FROM
+            user_info ui
+            LEFT JOIN user_account ua ON ui.user_id = ua.user_id
+            LEFT JOIN user_role ur ON ui.user_id = ur.user_id
+            LEFT JOIN role ro ON ro.id = ur.role_id
+            LEFT JOIN mt_company_user mcu ON mcu.user_id = ui.user_id AND mcu.mt_company_id = ur.company_id
+        <where>
+            <if test="mtCompanyId != null and mtCompanyId > 0">
+                mcu.mt_company_id = #{mtCompanyId}
+            </if>
+        </where>
+    </select>
+</mapper>