Browse Source

Merge remote-tracking branch 'origin/20210223' into 20210223

wangyangyang 4 years ago
parent
commit
aba6a92d89

+ 2 - 2
message/src/main/resources/mapper/MessageMapper.xml

@@ -191,7 +191,7 @@
     </select>
     <select id="selectPage" resultMap="MessageMap">
         select
-        <include refid="Base_Column_List"/>,b.type typeName,b.path
+        <include refid="Base_Column_List"/>,b.type typeName,b.path,b.id typeId
         from uims_message a join uims_message_type b on a.message_type=b.id
         <where>
              a.status=1
@@ -248,7 +248,7 @@
         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,b.path,b.id typeId,a.url
+        select a.date_create,a.message_content,b.short_name,b.path,b.id typeId,a.url,b.type typeName
         from uims_message a
             join uims_message_type b
          on a.message_type=b.id

+ 25 - 9
readme.md

@@ -15,13 +15,29 @@
 2、ALTER TABLE uims_user ADD login_secret_key varchar(50) comment '登录第三方密钥'
 3、ALTER TABLE uims_user ADD login_code varchar(50) comment '登录第三方厂家编码'
 4、ALTER TABLE uims_user ADD login_org_code varchar(50) comment '登录第三方机构编码'
-### sms_device_parm 添加字段
-1、ALTER TABLE sms_device_parm ADD CLASSIFY varchar(50) comment '归类'
-2、ALTER TABLE sms_device_parm ADD SHOW_ON_OFF smallint comment '展示开关'
-3、ALTER TABLE sms_device_parm ADD SHOW_MIN_VALUE smallint comment '是否展示最小值'
-4、ALTER TABLE sms_device_parm ADD SHOW_AVG_VALUE smallint comment '是否展示平均值'
-5、ALTER TABLE sms_device_parm ADD SHOW_MAX_VALUE smallint comment '是否展示最大值'
-6、ALTER TABLE sms_device_parm ADD SHOW_SUM_VALUE smallint comment '是否展示合计值'
-7、ALTER TABLE sms_device_parm ADD SHOW_LATEST_VALUE smallint comment '是否展示最新值'
 ### sms_month_report表添加索引
-1.ALTER TABLE sms_month_report ADD  INDEX `index_collect_date`(`COLLECT_DATE`) USING BTREE 
+1.ALTER TABLE sms_month_report ADD  INDEX `index_collect_date`(`COLLECT_DATE`) USING BTREE 
+
+# 创建报表维度配置表 sms_report_dimension_setting
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for sms_report_dimension_setting
+-- ----------------------------
+DROP TABLE IF EXISTS `sms_report_dimension_setting`;
+CREATE TABLE `sms_report_dimension_setting`  (
+`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
+`user_id` int(11) NULL DEFAULT NULL COMMENT '用户ID',
+`tenant_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '租户ID',
+`device_parm_id` int(11) NULL DEFAULT NULL COMMENT '设备参数ID',
+`classify` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '归类',
+`show_on_off` smallint(6) NULL DEFAULT NULL COMMENT '展示开关',
+`show_min_value` smallint(6) NULL DEFAULT NULL COMMENT '是否展示最小值',
+`show_avg_value` smallint(6) NULL DEFAULT NULL COMMENT '是否展示平均值',
+`show_max_value` smallint(6) NULL DEFAULT NULL COMMENT '是否展示最大值',
+`show_sum_value` smallint(6) NULL DEFAULT NULL COMMENT '是否展示合计值',
+`show_latest_value` smallint(6) NULL DEFAULT NULL COMMENT '是否展示最新值',
+PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 72 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+SET FOREIGN_KEY_CHECKS = 1;

+ 6 - 2
sms_water/src/main/java/com/huaxu/config/AsyncConfig.java

@@ -10,6 +10,7 @@ import org.springframework.scheduling.annotation.AsyncConfigurer;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 
 import java.util.concurrent.Executor;
+import java.util.concurrent.ThreadPoolExecutor;
 
 @Configuration
 @Slf4j
@@ -59,13 +60,16 @@ public class AsyncConfig implements AsyncConfigurer {
         /** 拒绝异常处理 - 在调用线程中执行(当线程池中线程都以被占用且queue已满,则拒绝新提交的task,
          * 默认为ThreadPoolExecutor.AbortPolicy抛出异常到上层应用 - 导致异步调用死掉,无法再处理新任务,
          * 此处实现照搬ThreadPoolExecutor.CallerRunsPolicy且添加日志记录
-         * */
+         *
         executor.setRejectedExecutionHandler((r, e) -> {
             log.error("Async thread pool over load - caller run - queue.size={} - 请devops人员考虑扩展服务实例", e.getQueue().size());
             if (!e.isShutdown()) {
                 r.run();
             }
-        });
+        });*/
+        // 设置拒绝策略:当pool已经达到max size的时候,如何处理新任务
+        // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
         //如果不初始化,导致找到不到执行器(此语句需放到最后)
         executor.initialize();
         return executor;

+ 1 - 1
sms_water/src/main/java/com/huaxu/rabbitmq/ReceiveClearData.java

@@ -107,7 +107,7 @@ public class ReceiveClearData {
             }
             BigDecimal bigDecimal = new BigDecimal(receiveData.getDouble(monitorDataValueEntity.getIdentifier()));
             // 整数超过10位直接变更为0
-            if (String.valueOf(bigDecimal).length() > 10 ){
+            if (String.valueOf(bigDecimal.intValue()).length() > 10 ){
                 monitorDataValueEntity.setDataValue(0.0);
             } else {
                 // 小数保留5位

+ 3 - 0
user_auth/src/main/java/com/huaxu/config/SsoConfig.java

@@ -28,4 +28,7 @@ public class SsoConfig {
     // 获取token
     @Value("${sso.xieding.get.token.url}")
     private String tokenUrl;
+
+    @Value("${sso.xieding.login.url}")
+    private String loginUrl;
 }

+ 4 - 4
user_auth/src/main/java/com/huaxu/controller/ThirdPartyLoginController.java

@@ -31,11 +31,11 @@ public class ThirdPartyLoginController {
     @Autowired
     private ThirdPartyLoginService xiedingLoginService;
 
-    @RequestMapping(value = "/getXieDingToken", method = RequestMethod.POST)
-    @ApiOperation(value = "获取协鼎登录的token")
-    public AjaxMessage<String> getXieDingToken(@ApiParam(value = "获取token信息", required = true) @RequestBody LoginQueryDto queryDto) {
+    @RequestMapping(value = "/getLoginUrl", method = RequestMethod.POST)
+    @ApiOperation(value = "获取登录的url")
+    public AjaxMessage<String> getLoginUrl(@ApiParam(value = "获取登录url", required = true) @RequestBody LoginQueryDto queryDto) {
        try {
-           return new AjaxMessage<>(ResultStatus.OK, xiedingLoginService.getToken(queryDto));
+           return new AjaxMessage<>(ResultStatus.OK, xiedingLoginService.getLoginUrl(queryDto));
         } catch (ServiceException e) {
            return new AjaxMessage<>(e.getStatus(), e.getMessage(), null);
         }

+ 11 - 0
user_auth/src/main/java/com/huaxu/dao/AuthTenantMenuMapper.java

@@ -0,0 +1,11 @@
+package com.huaxu.dao;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+
+@Mapper
+public interface AuthTenantMenuMapper {
+
+    String findLinkPath(@Param("tenantId")String tenantId, @Param("menuId")Integer menuId);
+}

+ 1 - 1
user_auth/src/main/java/com/huaxu/dao/UserMapper.java

@@ -113,5 +113,5 @@ public interface UserMapper {
 
     void updateUniqueUserID(@Param("id")Integer id, @Param("uid") String uid);
 
-    User findThirdPartytLoginInfo(String tenantId, String phone);
+    User findThirdPartytLoginInfo(@Param("userId")Integer userId);
 }

+ 3 - 0
user_auth/src/main/java/com/huaxu/dto/thirdparty/LoginQueryDto.java

@@ -16,4 +16,7 @@ public class LoginQueryDto {
 
     @ApiModelProperty(value="菜单ID")
     private int menuId;
+
+    @ApiModelProperty(value="传入系统类型会跳转到相应系统首页")
+    private String systemType;
 }

+ 3 - 0
user_auth/src/main/java/com/huaxu/dto/thirdparty/XieDingResultDto.java

@@ -21,4 +21,7 @@ public class XieDingResultDto {
 
     @ApiModelProperty(value="token")
     private String token;
+
+    @ApiModelProperty(value="请求第三方的前缀url地址")
+    private String prefixUrl;
 }

+ 4 - 1
user_auth/src/main/java/com/huaxu/security/smsCode/SmsCodeCheckUserFilter.java

@@ -66,10 +66,13 @@ public class SmsCodeCheckUserFilter extends OncePerRequestFilter {
         String smsCode = request.getParameter("smsCode");
         String mobile = request.getParameter("mobile");
         log.info("validate mobile={},smsCode={}",mobile,smsCode);
-        boolean sitFlag=active.equals("sit")||active.equals("prd")||active.equals("dev");
+        boolean sitFlag=active.equals("sit")||active.equals("dev");
         if (sitFlag&& StringUtils.equals(smsCode,"2020")) {
             return;
         }
+        if (active.equals("prd")&& StringUtils.equals(smsCode,"9090")) {
+            return;
+        }
 
         if (StringUtils.equals(mobile, "18800000000") && StringUtils.equals(smsCode,"2020")) {
             return;

+ 9 - 0
user_auth/src/main/java/com/huaxu/service/ThirdPartyLoginService.java

@@ -12,4 +12,13 @@ public interface ThirdPartyLoginService {
     * @return java.lang.String
     **/
     String getToken(LoginQueryDto dto);
+
+    /**
+     * @Author lihui
+     * @Description 获取登录url
+     * @Date 16:39 2021/4/7
+     * @Param []
+     * @return java.lang.String
+     **/
+    String getLoginUrl(LoginQueryDto dto);
 }

+ 35 - 9
user_auth/src/main/java/com/huaxu/service/impl/thirdparty/XiedingLoginServiceImpl.java

@@ -1,9 +1,8 @@
 package com.huaxu.service.impl.thirdparty;
 
 import com.alibaba.fastjson.JSONObject;
-import com.alibaba.nacos.client.config.utils.MD5;
-import com.alibaba.nacos.common.util.Md5Utils;
 import com.huaxu.config.SsoConfig;
+import com.huaxu.dao.AuthTenantMenuMapper;
 import com.huaxu.dao.UserMapper;
 import com.huaxu.dto.thirdparty.LoginQueryDto;
 import com.huaxu.dto.thirdparty.XieDingResultDto;
@@ -38,11 +37,36 @@ public class XiedingLoginServiceImpl implements ThirdPartyLoginService {
     @Autowired
     private UserMapper userMapper;
 
+    @Autowired
+    private AuthTenantMenuMapper authMenuMapper;
+
     @Override
     public String getToken(LoginQueryDto queryDto) {
-        String httpIpPortUrl  = "http://www.xdwater365.com/yhfw/security/security";
+        return this.httpInfo(queryDto).getToken();
+    }
+
+    @Override
+    public String getLoginUrl(LoginQueryDto queryDto) {
+        XieDingResultDto resultDto = this.httpInfo(queryDto);
+        String token     = resultDto.getToken();
+        String prefixUrl = resultDto.getPrefixUrl();
+        return String.format(ssoConfig.getLoginUrl(), prefixUrl, token, queryDto.getSystemType());
+    }
+
+    /**
+    * @Author lihui
+    * @Description 请求信息
+    * @Date 15:01 2021/4/19
+    * @Param [queryDto]
+    * @return com.huaxu.dto.thirdparty.XieDingResultDto
+    **/
+    private XieDingResultDto httpInfo(LoginQueryDto queryDto){
         LoginUser currentUser = UserUtil.getCurrentUser();
-        User user = userMapper.findThirdPartytLoginInfo(currentUser.getTenantId(), currentUser.getPhoneNumber());
+        String prefixUrl  = authMenuMapper.findLinkPath(currentUser.getTenantId(), queryDto.getMenuId());
+        if (StringUtils.isEmpty(prefixUrl)) {
+            throw new ServiceException(ResultStatus.ERROR.getStatus(), "未设置请求地址");
+        }
+        User user = userMapper.findThirdPartytLoginInfo(currentUser.getId());
         if (user == null || StringUtils.isEmpty(user.getLoginAccount())){
             throw new ServiceException(ResultStatus.ERROR.getStatus(), "未设置登录账号");
         }
@@ -53,13 +77,14 @@ public class XiedingLoginServiceImpl implements ThirdPartyLoginService {
         String orgCode   = user.getLoginOrgCode();
         Charset charset  = Charset.forName("utf-8");
         // 1.根据账户获取密码
-        String result = HttpClientPoolUtil.sendGet(String.format(ssoConfig.getPwdUrl(), httpIpPortUrl, account, orgCode), charset);
+        String result = HttpClientPoolUtil.sendGet(String.format(ssoConfig.getPwdUrl(), prefixUrl, account, orgCode), charset);
         XieDingResultDto resultDto = JSONObject.parseObject(result, XieDingResultDto.class);
         if (StringUtils.isEmpty(resultDto.getPassword())) {
             throw new ServiceException(ResultStatus.ERROR.getStatus(), resultDto.getMsg());
         }
+
         // 2.绑定单点登陆用户
-        result    = HttpClientPoolUtil.sendGet(String.format(ssoConfig.getBindSingleUrl(), httpIpPortUrl, account, resultDto.getPassword(), orgCode), charset);
+        result    = HttpClientPoolUtil.sendGet(String.format(ssoConfig.getBindSingleUrl(), prefixUrl, account, resultDto.getPassword(), orgCode), charset);
         resultDto = JSONObject.parseObject(result, XieDingResultDto.class);
         if (!resultDto.isStatus()) {
             throw new ServiceException(ResultStatus.ERROR.getStatus(), resultDto.getMsg());
@@ -68,12 +93,13 @@ public class XiedingLoginServiceImpl implements ThirdPartyLoginService {
         String singleKey = resultDto.getSingleKey();
         Long timestamp   = System.currentTimeMillis();
         String sign      = MD5Util.digest(resultDto.getSingleKey() + timestamp + secretKey);
-        result    = HttpClientPoolUtil.sendGet(String.format(ssoConfig.getTokenUrl(), httpIpPortUrl, singleKey, timestamp, sign, code), charset);
+        result    = HttpClientPoolUtil.sendGet(String.format(ssoConfig.getTokenUrl(), prefixUrl, singleKey, timestamp, sign, code), charset);
         resultDto = JSONObject.parseObject(result, XieDingResultDto.class);
         if (!resultDto.isStatus()) {
             throw new ServiceException(ResultStatus.ERROR.getStatus(), resultDto.getMsg());
         }
-        return resultDto.getToken();
+        // 设置请求的前缀
+        resultDto.setPrefixUrl(prefixUrl);
+        return resultDto;
     }
-
 }

+ 1 - 0
user_auth/src/main/resources/application-dev.properties

@@ -83,4 +83,5 @@ iot.url=http://localhost:8090
 sso.xieding.get.pwd.url=%s!getSingleLandUser.action?account=%s&orgCode=%s
 sso.xieding.bind.single.url=%s!bindingSingleLandUser.action?account=%s&password=%s&orgCode=%s
 sso.xieding.get.token.url=%s!createSingleLandToken.action?singleKey=%s&timestamp=%s&signatrue=%s&code=%s
+sso.xieding.login.url=%s!checkSingleLandToken.action?tokenKey=%s&systemType=%s
 

+ 1 - 0
user_auth/src/main/resources/application-prd.properties

@@ -80,5 +80,6 @@ iot.url=http://39.108.175.9:8090
 sso.xieding.get.pwd.url=%s!getSingleLandUser.action?account=%s&orgCode=%s
 sso.xieding.bind.single.url=%s!bindingSingleLandUser.action?account=%s&password=%s&orgCode=%s
 sso.xieding.get.token.url=%s!createSingleLandToken.action?singleKey=%s&timestamp=%s&signatrue=%s&code=%s
+sso.xieding.login.url=%s!checkSingleLandToken.action?tokenKey=%s&systemType=%s
 
 

+ 1 - 0
user_auth/src/main/resources/application-sit.properties

@@ -81,6 +81,7 @@ iot.url=http://114.135.61.188:58080
 sso.xieding.get.pwd.url=%s!getSingleLandUser.action?account=%s&orgCode=%s
 sso.xieding.bind.single.url=%s!bindingSingleLandUser.action?account=%s&password=%s&orgCode=%s
 sso.xieding.get.token.url=%s!createSingleLandToken.action?singleKey=%s&timestamp=%s&signatrue=%s&code=%s
+sso.xieding.login.url=%s!checkSingleLandToken.action?tokenKey=%s&systemType=%s
 
 
 

+ 5 - 0
user_auth/src/main/resources/application-uat.properties

@@ -94,3 +94,8 @@ dubbo.application.qos-accept-foreign-ip=false
 login.auth.tips.template=7lh0fkmppfPywI4YfrnMOAKQTGXzjueU6awMRD7KRUk
 spring.cloud.stream.bindings.wechat-notify-message.destination=wechat_notify_channel_uat
 
+#单点登录第三方请求url
+sso.xieding.get.pwd.url=%s!getSingleLandUser.action?account=%s&orgCode=%s
+sso.xieding.bind.single.url=%s!bindingSingleLandUser.action?account=%s&password=%s&orgCode=%s
+sso.xieding.get.token.url=%s!createSingleLandToken.action?singleKey=%s&timestamp=%s&signatrue=%s&code=%s
+sso.xieding.login.url=%s!checkSingleLandToken.action?tokenKey=%s&systemType=%s

+ 8 - 0
user_auth/src/main/resources/mapper/AuthTenantMenuMapper.xml

@@ -0,0 +1,8 @@
+<?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.huaxu.dao.AuthTenantMenuMapper">
+
+    <select id="findLinkPath" resultType="java.lang.String">
+        select LINK_PATH from uims_tenant_menu  where  tenant_id = #{tenantId} and menu_id =#{menuId}
+    </select>
+</mapper>

+ 1 - 1
user_auth/src/main/resources/mapper/UserMapper.xml

@@ -343,6 +343,6 @@
     </update>
 
     <select id="findThirdPartytLoginInfo" resultType="com.huaxu.entity.User">
-        select login_account loginAccount,login_secret_key loginSecretKey,login_code loginCode,login_org_code loginOrgCode from uims_user  where  TENANT_ID =#{tenantId} and PHONE = #{phone}
+        select login_account loginAccount,login_secret_key loginSecretKey,login_code loginCode,login_org_code loginOrgCode from uims_user  where  ID =#{userId}
     </select>
 </mapper>

+ 6 - 3
user_center/src/main/resources/mapper/MenuMapper.xml

@@ -234,7 +234,8 @@
         a.create_by as "createBy" ,
         a.date_update as "dateUpdate" ,
         a.update_by as "updateBy" ,
-        a.status as "status"
+        a.status as "status",
+        a.APP_ID as "appId"
         FROM uims_menu a
         <where>
             a.status=1 and a.PARENT_MENU_ID=0 and a.SHOW_STATE=1  and a.app_id != 1004
@@ -271,7 +272,8 @@
         b.create_by as "createBy" ,
         b.date_update as "dateUpdate" ,
         b.update_by as "updateBy" ,
-        b.status as "status"
+        b.status as "status",
+        a.APP_ID as "appId"
         from uims_tenant_menu b
         inner join uims_menu a on a.id= b.MENU_ID and a.status=1
         <where>
@@ -300,7 +302,8 @@
         b.create_by as "createBy" ,
         b.date_update as "dateUpdate" ,
         b.update_by as "updateBy" ,
-        b.status as "status"
+        b.status as "status",
+        a.APP_ID as "appId"
         from uims_user_role  userrole
         inner join uims_role_menu rolemenu on rolemenu.ROLE_ID=userrole.ROLE_ID and rolemenu.status=1
         inner join uims_menu a on a.id=rolemenu.MENU_ID and a.STATUS=1 and a.app_id != 1004