黄远 5 gadi atpakaļ
vecāks
revīzija
c40a0588d8

+ 1 - 1
lift-common/src/main/java/cn.com.ty.lift.common/constants/ApiConstants.java

@@ -219,7 +219,7 @@ public class ApiConstants {
     /**
      * 常见问题常量
      */
-    public interface GlobalSetConstants{
+    public interface GlobalSetConstants {
         /**
          * 全局设置值:是
          */

+ 1 - 1
lift-common/src/main/java/cn.com.ty.lift.common/constants/CommonEnum.java

@@ -224,7 +224,7 @@ public class CommonEnum {
         MTWORK("维保工", "ROLEMTWORK"),
         CLERK("文员", "CLERK"),
         REGION_DIRECTOR("区域主管", "REGION_DIRECTOR"),
-        HIGH_DIRECTOR("高级主管", "HIGH_DIRECTOR"),
+        HIGH_DIRECTOR("总经理", "HIGH_DIRECTOR"),
         ENTERPRISE_ADMIN("企业管理员", "ENTERPRISE_ADMIN");
 
         /**

+ 79 - 0
lift-common/src/main/java/cn.com.ty.lift.common/constants/PushMessageConstants.java

@@ -0,0 +1,79 @@
+package cn.com.ty.lift.common.constants;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author huangyuan
+ * @date 2020/4/17
+ * @description 推送消息常量
+ */
+public class PushMessageConstants {
+
+    /**
+     * 推送值对应角色编码集合
+     */
+    public static HashMap<Integer, String[]> PUSH_VALUE_TO_ROLE_CODE;
+
+    /**
+     * 角色编码数组
+     */
+    public static final String[] ROLE_CODE_ARRAY = {
+            //企业管理员
+            CommonEnum.DefaultRole.ENTERPRISE_ADMIN.getCode(),
+            //高级主管
+            CommonEnum.DefaultRole.HIGH_DIRECTOR.getCode(),
+            //区域主管
+            CommonEnum.DefaultRole.REGION_DIRECTOR.getCode(),
+            //文员
+            CommonEnum.DefaultRole.CLERK.getCode(),
+            //维保工
+            CommonEnum.DefaultRole.MTWORK.getCode()
+    };
+
+    /**
+     * 企业管理员
+     */
+    public static final int PUSH_ONE = 1;
+    /**
+     * 企业管理员 + 高级主管
+     */
+    public static final int PUSH_TWO = 2;
+    /**
+     * 企业管理员 + 高级主管 + 区域主管
+     */
+    public static final int PUSH_THREE = 3;
+    /**
+     * 企业管理员 + 高级主管 + 区域主管 + 文员
+     */
+    public static final int PUSH_FOUR = 4;
+    /**
+     * 企业管理员 + 高级主管 + 区域主管 + 文员 + 维保工
+     */
+    public static final int PUSH_FIVE = 5;
+
+    /**
+     * 推送情形数组
+     */
+    public static final int[] PUSH_SITUATION_ARRAY = {
+            PUSH_ONE,
+            PUSH_TWO,
+            PUSH_THREE,
+            PUSH_FOUR,
+            PUSH_FIVE
+    };
+
+    static {
+        //初始化map
+        PUSH_VALUE_TO_ROLE_CODE = new HashMap<>();
+        //角色编码集合
+        List<String> roleCodes = new LinkedList<>();
+        //推送情形对应角色编码数组
+        for (int i = 0; i < PUSH_SITUATION_ARRAY.length; i++) {
+            roleCodes.add(ROLE_CODE_ARRAY[i]);
+            PUSH_VALUE_TO_ROLE_CODE.put(PUSH_SITUATION_ARRAY[i], roleCodes.toArray(new String[i + 1]));
+        }
+    }
+
+}

+ 43 - 0
lift-common/src/main/java/cn.com.ty.lift.common/model/PushUserInfo.java

@@ -0,0 +1,43 @@
+package cn.com.ty.lift.common.model;
+
+import lombok.Data;
+
+/**
+ * @author huangyuan
+ * @date 2020/4/17
+ * @description 推送模块用户信息
+ */
+@Data
+public class PushUserInfo {
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 用户名
+     */
+    private String userName;
+
+    /**
+     * 用户手机号
+     */
+    private String mobile;
+
+    /**
+     * 设备型号
+     */
+    private Integer deviceModel;
+
+    /**
+     * 设备标识
+     */
+    private String deviceFlag;
+
+    /**
+     * 角色名称
+     */
+    private String roleName;
+
+}

+ 43 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/dao/mapper/IPushUserMapper.java

@@ -0,0 +1,43 @@
+package cn.com.ty.lift.system.user.dao.mapper;
+
+import cn.com.ty.lift.common.model.PushUserInfo;
+import cn.com.xwy.boot.mybatis.MyBatisMapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 专家表 Mapper 接口
+ * </p>
+ *
+ * @author huangyuan
+ * @since 2020-04-17
+ */
+@MyBatisMapper
+public interface IPushUserMapper extends BaseMapper<PushUserInfo> {
+
+    /**
+     * 获取要推送的用户信息
+     *
+     * @param companyId 当前公司id
+     * @param roleCodes 角色编码集合
+     * @return 用户信息
+     * @description 获取要推送的用户信息
+     * @date 2020/4/17 2:03 下午
+     */
+    @Select("select ui.user_id as userId, "
+            + "ui.name as userName, "
+            + "ua.mobile as mobile, "
+            + "ua.device_model as deviceModel, "
+            + "ua.device_flag as deviceFlag, "
+            + "r.name as roleName from "
+            + "user_account ua "
+            + "left join user_info ui on ua.user_id = ui.user_id "
+            + "left join user_role ur on ua.user_id = ur.user_id "
+            + "left join role r on r.id = ur.role_id"
+            + "where r.code in#{roleCodes} "
+            + "and ur.company_id=#{companyId}")
+    List<PushUserInfo> getPushUserInfo(Long companyId, List<String> roleCodes);
+}

+ 8 - 2
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/LoginService.java

@@ -147,13 +147,15 @@ public class LoginService implements ILoginService {
         //设置token信息
         userResponse.setToken(userRequest.getToken());
         //校验用户信息,并设置用户信息
-        RestResponse restResponse = checkAndSetChangeInfo(userRequest,userResponse);
+        RestResponse restResponse = checkAndSetChangeInfo(userRequest, userResponse);
         //如果校验信息不为空返回校验信息
         if (restResponse != null) {
             return restResponse;
         }
         //更新redis中的信息数据
         updateUserInfoInRedis(userResponse);
+        //在session中设置切换团队后的公司id
+        request.getSession().setAttribute(ApiConstants.CURRENT_COMPANY_ID, userRequest.getCompanyId());
         return RestResponse.success(userResponse, ApiConstants.RESULT_SUCCESS, "切换团队成功");
     }
 
@@ -197,8 +199,12 @@ public class LoginService implements ILoginService {
     private UserResponse initLoginInfo(HttpServletRequest request, Long userId) {
         //获取用户信息
         UserResponse userResponse = userService.getLoginUserInfo(userId);
-        //将用户手机号放入session中
+        //将当前用户id放入session中
         request.getSession().setAttribute(ApiConstants.CURRENT_USER_ID, userResponse.getUserId());
+        //将当前公司id放入session中
+        if (userResponse.getMaintenanceCompany() != null) {
+            request.getSession().setAttribute(ApiConstants.CURRENT_COMPANY_ID, userResponse.getMaintenanceCompany().getId());
+        }
         //封装登录用户信息
         Map<String, Object> currentUserInfoMap = getUserInfoMap(userResponse);
         String mobileUserInfo = userResponse.getMobile()

+ 2 - 2
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/MenuService.java

@@ -105,13 +105,13 @@ public class MenuService extends ServiceImpl<MenuMapper, Menu> implements IMenuS
                 .eq("company_id", companyId)
         );
         List<Long> companyMenuIds = ProjectUtils.getAttrList(needDeleteCompanyMenuList, "id", null);
-        if (companyMenuIds != null && companyMenuIds.size() > 0) {
+        if (companyMenuIds.size() > 0) {
             companyMenuService.removeByIds(companyMenuIds);
         }
         //获取菜单id列表
         List<Long> menuIdList = ProjectUtils.getLongIdFromIds(menuRequest.getMenuIds());
         List<CompanyMenu> needSaveCompanyMenuList = new ArrayList<>();
-        if (menuIdList != null && menuIdList.size() > 0) {
+        if (menuIdList.size() > 0) {
             for (Long menuId : menuIdList) {
                 CompanyMenu companyMenu = new CompanyMenu();
                 companyMenu.setCompanyId(companyId);

+ 101 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/PushUserService.java

@@ -0,0 +1,101 @@
+package cn.com.ty.lift.system.user.service.impl;
+
+import cn.com.ty.lift.common.constants.ApiConstants;
+import cn.com.ty.lift.common.constants.PushMessageConstants;
+import cn.com.ty.lift.common.model.PushUserInfo;
+import cn.com.ty.lift.system.user.dao.mapper.IPushUserMapper;
+import cn.com.xwy.boot.service.impl.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @author huangyuan
+ * @date 2020/4/17
+ * @description
+ */
+@Service
+public class PushUserService extends BaseServiceImpl<IPushUserMapper, PushUserInfo> {
+
+    /**
+     * @param pushSituation 推送情形:1 2 3 4 5
+     *                      :1 企业管理员
+     *                      :2 企业管理员 + 总经理
+     *                      :3 企业管理员 + 总经理 + 区域主管
+     *                      :4 企业管理员 + 总经理 + 区域主管 + 文员
+     *                      :5 企业管理员 + 总经理 + 区域主管 + 文员 + 维保工
+     * @return 要推送给的用户信息
+     * @description 通过推送情形获取对应用户信息
+     * @date 2020/4/17 11:14 上午
+     */
+    public List<PushUserInfo> getPushUserInfo(int pushSituation) {
+        String [] roleCodes = PushMessageConstants.PUSH_VALUE_TO_ROLE_CODE.get(pushSituation);
+        if(roleCodes != null && roleCodes.length > 0) {
+            return getPushUserInfo(Arrays.asList(roleCodes));
+        }
+        return null;
+    }
+
+    /**
+     * @param roleCodes 角色编码集合
+     * @return 要推送的用户信息
+     * @description
+     * @date 2020/4/17 3:38 下午
+     */
+    public List<PushUserInfo> getPushUserInfo(List<String> roleCodes) {
+        //获取当前公司id
+        Long companyId = getCurrentCompanyId();
+        return this.baseMapper.getPushUserInfo(companyId, roleCodes);
+    }
+
+    /**
+     * @return 当前用户id
+     * @description 获取当前用户id
+     * @date 2020/4/17 10:06 上午
+     */
+    private Long getCurrentUserId() {
+        return getAttributeFromSession(ApiConstants.CURRENT_USER_ID);
+    }
+
+
+    /**
+     * @return 当前公司id
+     * @description 获取当前公司id
+     * @date 2020/4/17 10:09 上午
+     */
+    private Long getCurrentCompanyId() {
+        return getAttributeFromSession(ApiConstants.CURRENT_COMPANY_ID);
+    }
+
+    /**
+     * @param attributeName 属性名
+     * @return 属性值
+     * @description 从session中获取
+     * @date 2020/4/17 10:09 上午
+     */
+    private Long getAttributeFromSession(String attributeName) {
+        HttpSession session = getHttpSession();
+        if (session != null) {
+            return (Long) session.getAttribute(attributeName);
+        }
+        return null;
+    }
+
+    /**
+     * @return session
+     * @description 获取session
+     * @date 2020/4/17 10:06 上午
+     */
+    private HttpSession getHttpSession() {
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(
+                RequestContextHolder.getRequestAttributes())).getRequest();
+        return request.getSession();
+    }
+
+}