Browse Source

add his对接版本号

A17404李放 3 years ago
parent
commit
161098c07e

+ 0 - 72
nb-system/src/main/java/com/nb/bus/controller/BusAppController.java

@@ -1,72 +0,0 @@
-package com.nb.bus.controller;
-
-import cn.dev33.satoken.SaManager;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.dev33.satoken.stp.StpLogic;
-import cn.hutool.core.text.CharSequenceUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.mapper.Mapper;
-import com.nb.common.crud.BaseService;
-import com.nb.common.crud.controller.BaseQueryController;
-import com.nb.common.crud.controller.BaseSaveController;
-import com.nb.common.result.R;
-import com.nb.bus.entity.BusAppConfig;
-import com.nb.bus.service.LocalBusAppConfigService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-
-/**
- * @author lifang
- * @version 1.0.0
- * @ClassName SysAppController.java
- * @Description TODO
- * @createTime 2022年06月24日 15:02:00
- */
-@RestController
-@RequestMapping("/bus/app")
-@Api(tags = "app安装包管理",description="app安装包管理")
-public class BusAppController implements BaseQueryController<BusAppConfig,String>, BaseSaveController<BusAppConfig,String> {
-    @Resource
-    private LocalBusAppConfigService appConfigService;
-
-
-    @GetMapping("/last")
-    @ApiOperation(value="查看最新的安装包信息")
-    public R get() {
-        return R.success(appConfigService.getOne(new QueryWrapper<BusAppConfig>().lambda().last("limit 1")));
-    }
-
-
-
-    @PostMapping
-    @SaCheckPermission("bus:app:save")
-    @ApiOperation(value="上传安装包",notes = "权限【bus:app:save】")
-    public R save(@RequestBody BusAppConfig busAppConfig) {
-        if(CharSequenceUtil.isAllBlank(busAppConfig.getId())){
-            BusAppConfig exist = appConfigService.getOne(new QueryWrapper<BusAppConfig>().lambda().last("limit 1"));
-            if(exist!=null){
-                busAppConfig.setId(exist.getId());
-            }
-        }
-        appConfigService.saveOrUpdate(busAppConfig);
-        return R.success();
-    }
-
-    @Override
-    public BaseService<? extends Mapper<BusAppConfig>, BusAppConfig, String> getService() {
-        return appConfigService;
-    }
-
-    @Override
-    public String getPermissionPrefix() {
-        return "bus:app";
-    }
-
-    @Override
-    public StpLogic getStpLogin() {
-        return SaManager.getStpLogic("");
-    }
-}

+ 64 - 0
nb-system/src/main/java/com/nb/bus/controller/BusVersionController.java

@@ -0,0 +1,64 @@
+package com.nb.bus.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.text.CharSequenceUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.Mapper;
+import com.nb.common.crud.BaseService;
+import com.nb.common.crud.controller.BaseCrudController;
+import com.nb.common.result.R;
+import com.nb.bus.entity.BusVersionEntity;
+import com.nb.bus.service.LocalBusVersionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName SysAppController.java
+ * @Description TODO
+ * @createTime 2022年06月24日 15:02:00
+ */
+@RestController
+@RequestMapping("/bus/version")
+@Api(tags = "版本管理",description="版本管理")
+public class BusVersionController extends BaseCrudController<BusVersionEntity,String> {
+    @Resource
+    private LocalBusVersionService versionService;
+
+
+    @GetMapping("/last")
+    @ApiOperation(value="查看最新的安装包信息")
+    public R get() {
+        return R.success(versionService.getOne(new QueryWrapper<BusVersionEntity>().lambda().last("limit 1")));
+    }
+
+
+
+    @PostMapping
+    @SaCheckPermission("bus:app:save")
+    @ApiOperation(value="上传安装包",notes = "权限【bus:app:save】")
+    public R save(@RequestBody BusVersionEntity busVersionEntity) {
+        if(CharSequenceUtil.isAllBlank(busVersionEntity.getId())){
+            BusVersionEntity exist = versionService.getOne(new QueryWrapper<BusVersionEntity>().lambda().last("limit 1"));
+            if(exist!=null){
+                busVersionEntity.setId(exist.getId());
+            }
+        }
+        versionService.saveOrUpdate(busVersionEntity);
+        return R.success();
+    }
+
+    @Override
+    public BaseService<? extends Mapper<BusVersionEntity>, BusVersionEntity, String> getService() {
+        return versionService;
+    }
+
+    @Override
+    public String getPermissionPrefix() {
+        return "bus:app";
+    }
+}

+ 3 - 0
nb-system/src/main/java/com/nb/bus/entity/BusHospitalEntity.java

@@ -87,6 +87,9 @@ public class BusHospitalEntity implements RecordModifierEntity, RecordCreationEn
     @ApiModelProperty("医院脚本是否在线")
     private Boolean scriptOnline;
 
+    @ApiModelProperty("医院在线脚本版本号")
+    private String scriptVersion;
+
     @ApiModelProperty("设备数量")
     private Integer deviceCount;
 

+ 7 - 5
nb-system/src/main/java/com/nb/bus/entity/BusAppConfig.java → nb-system/src/main/java/com/nb/bus/entity/BusVersionEntity.java

@@ -1,7 +1,6 @@
 package com.nb.bus.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.nb.bus.enums.AppEnum;
 import com.nb.common.entity.GenericEntity;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -18,8 +17,8 @@ import java.io.Serializable;
  * @since 2021-08-08
  */
 @Data
-@TableName("sys_app_config")
-public class BusAppConfig extends GenericEntity<String> implements Serializable {
+@TableName("sys_version")
+public class BusVersionEntity extends GenericEntity<String> implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -30,13 +29,12 @@ public class BusAppConfig extends GenericEntity<String> implements Serializable
     @ApiModelProperty("安装包名称")
     private String name;
 
-
     /**
      * app名称
      */
     @NotNull(message = "安装包类型不能为空")
     @ApiModelProperty("安装包类型")
-    private AppEnum type;
+    private String type;
 
     /**
      * 存储id
@@ -73,4 +71,8 @@ public class BusAppConfig extends GenericEntity<String> implements Serializable
     @ApiModelProperty("apkMd5")
     private String apkMd5;
 
+
+    @ApiModelProperty("备注")
+    private String remark;
+
 }

+ 4 - 2
nb-system/src/main/java/com/nb/bus/hospital/his/HisScriptSession.java

@@ -274,10 +274,12 @@ public class HisScriptSession {
      * @param channelContext
      * @return void
      */
-    public void bindChannel(ChannelContext channelContext){
+    public void bindChannel(ChannelContext channelContext,String version){
         this.channelContext=channelContext;
         if(TioUtils.checkBeforeIO(channelContext)){
-            hospitalService.update(new UpdateWrapper<BusHospitalEntity>().lambda().eq(BusHospitalEntity::getId,hospitalId).set(BusHospitalEntity::getScriptOnline,true));
+            hospitalService.update(new UpdateWrapper<BusHospitalEntity>().lambda()
+                    .eq(BusHospitalEntity::getId,hospitalId).set(BusHospitalEntity::getScriptOnline,true)
+                    .set(StrUtil.isNotBlank(version),BusHospitalEntity::getScriptVersion,version));
             refresh(hospitalService.getById(hospitalId));
         }
     };

+ 0 - 31
nb-system/src/main/java/com/nb/bus/service/LocalBusAppConfigService.java

@@ -1,31 +0,0 @@
-package com.nb.bus.service;
-
-import com.nb.common.crud.BaseService;
-import com.nb.bus.entity.BusAppConfig;
-import com.nb.system.mapper.SysAppConfigMapper;
-import org.springframework.stereotype.Service;
-
-/**
- * @author lifang
- * @version 1.0.0
- * @ClassName LocalSysAppConfigService.java
- * @Description TODO
- * @createTime 2022年06月24日 15:08:00
- */
-@Service
-public class LocalBusAppConfigService extends BaseService<SysAppConfigMapper, BusAppConfig,String> {
-    @Override
-    public void validateBeforeSave(BusAppConfig entity) {
-
-    }
-
-    @Override
-    public void validateBeforeUpdate(BusAppConfig entity) {
-
-    }
-
-    @Override
-    public void validateBeforeDelete(String id) {
-
-    }
-}

+ 31 - 0
nb-system/src/main/java/com/nb/bus/service/LocalBusVersionService.java

@@ -0,0 +1,31 @@
+package com.nb.bus.service;
+
+import com.nb.common.crud.BaseService;
+import com.nb.bus.entity.BusVersionEntity;
+import com.nb.system.mapper.BusVersionMapper;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName LocalBusVersionService.java
+ * @Description 版本管理
+ * @createTime 2022年06月24日 15:08:00
+ */
+@Service
+public class LocalBusVersionService extends BaseService<BusVersionMapper, BusVersionEntity,String> {
+    @Override
+    public void validateBeforeSave(BusVersionEntity entity) {
+
+    }
+
+    @Override
+    public void validateBeforeUpdate(BusVersionEntity entity) {
+
+    }
+
+    @Override
+    public void validateBeforeDelete(String id) {
+
+    }
+}

+ 39 - 35
nb-system/src/main/java/com/nb/bus/websocket/DefaultWebSocketMsgHandler.java

@@ -1,15 +1,13 @@
 package com.nb.bus.websocket;
 
-import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.text.CharSequenceUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.nb.bus.hospital.HospitalManagerRegister;
 import com.nb.bus.hospital.his.HisResponse;
-import com.nb.bus.hospital.his.HisScriptSession;
+import com.nb.bus.websocket.auth.IWebSocketAuthFilter;
 import com.nb.common.Constants;
-import com.nb.common.bo.LoginUser;
 import com.nb.common.config.websocket.HospitalCodeCheck;
 import com.nb.common.config.websocket.MessagingRequest;
 import com.nb.common.config.websocket.handler.WsHandler;
@@ -39,7 +37,7 @@ public class DefaultWebSocketMsgHandler implements IWsMsgHandler {
     private final List<WsHandler> messageHandlers;
     private final HospitalCodeCheck codeCheck;
     private final HospitalManagerRegister hospitalManagerRegister;
-
+    private final List<IWebSocketAuthFilter> authFilters;
 
     @Override
     public HttpResponse handshake(HttpRequest httpRequest, HttpResponse httpResponse, ChannelContext channelContext) {
@@ -55,42 +53,48 @@ public class DefaultWebSocketMsgHandler implements IWsMsgHandler {
         }
         if(CharSequenceUtil.isNullOrUndefined(authorization)){
             Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(R.fail("授权失败")), WsPacket.CHARSET_NAME));
-            //给返回信息一些时间
-            Thread.sleep(50);
-            channelContext.setClosed(true);
+            Thread.sleep(20);
             Tio.remove(channelContext,  "接受数据不符合业务规范");
             return;
         }
-        if (CharSequenceUtil.isNotEmpty(authorization)) {
-            Object result = StpUtil.getTokenSessionByToken(authorization).get(Constants.LOGIN_USER_KEY);
-            if(null==result){
-                //尝试医院请求登录
-                String hospitalId = codeCheck.getHospitalId(authorization);
-                if (CharSequenceUtil.isNotBlank(hospitalId)) {
-                    channelContext.set(Constants.HOSPITAL_ID,hospitalId);
-                    HisScriptSession hisScriptSession =  hospitalManagerRegister.get(hospitalId).getScriptSession();
-                    //绑定
-                    hisScriptSession.bindChannel(channelContext);
-                    log.info("医院脚本连接成功,医院编码【{}】",authorization);
-                }else {
-                    Thread.sleep(50);
-                    channelContext.setClosed(true);
-                    if(log.isDebugEnabled()){
-                        log.debug("Authorization:{},鉴权失败",authorization);
-                    }
-                    Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(R.fail("授权失败")),"utf-8"));
-                    Thread.sleep(50);
-                    channelContext.setClosed(true);
-                    Tio.remove(channelContext,  "接受数据不符合业务规范");
-                }
-                return;
-            }else {
-                Tio.bindToken(channelContext, JSONUtil.toJsonStr(authorization));
-                LoginUser loginUser = (LoginUser)result;
-                channelContext.set(Constants.LOGIN_USER_KEY,loginUser);
-            }
+        boolean match = authFilters.stream().anyMatch(filter -> Boolean.TRUE.equals(filter.auth(httpRequest, httpResponse, channelContext)));
+        if(match){
             Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(R.success("连接成功")),"utf-8"));
+        }else {
+            Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(R.fail("授权失败")), WsPacket.CHARSET_NAME));
+            Thread.sleep(20);
+            Tio.remove(channelContext,  "接受数据不符合业务规范");
         }
+//        if (CharSequenceUtil.isNotEmpty(authorization)) {
+//                Object result = StpUtil.getTokenSessionByToken(authorization).get(Constants.LOGIN_USER_KEY);
+//                if(null==result){
+//                    //尝试医院请求登录
+//                    String hospitalId = codeCheck.getHospitalId(authorization);
+//                    if (CharSequenceUtil.isNotBlank(hospitalId)) {
+//                        channelContext.set(Constants.HOSPITAL_ID,hospitalId);
+//                        HisScriptSession hisScriptSession =  hospitalManagerRegister.get(hospitalId).getScriptSession();
+//                        //绑定
+//                        hisScriptSession.bindChannel(channelContext);
+//                        log.info("医院脚本连接成功,医院编码【{}】",authorization);
+//                    }else {
+//                        Thread.sleep(50);
+//                        channelContext.setClosed(true);
+//                        if(log.isDebugEnabled()){
+//                            log.debug("Authorization:{},鉴权失败",authorization);
+//                        }
+//                        Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(R.fail("授权失败")),"utf-8"));
+//                        Thread.sleep(50);
+//                        channelContext.setClosed(true);
+//                        Tio.remove(channelContext,  "接受数据不符合业务规范");
+//                    }
+//                    return;
+//                }else {
+//                    Tio.bindToken(channelContext, JSONUtil.toJsonStr(authorization));
+//                    LoginUser loginUser = (LoginUser)result;
+//                    channelContext.set(Constants.LOGIN_USER_KEY,loginUser);
+//                }
+//                Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(R.success("连接成功")),"utf-8"));
+//        }
     }
 
     @Override

+ 81 - 81
nb-system/src/main/java/com/nb/bus/websocket/HisConnectionHandler.java

@@ -1,81 +1,81 @@
-package com.nb.bus.websocket;
-
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.nb.bus.entity.BusHospitalEntity;
-import com.nb.bus.hospital.his.HisScriptSession;
-import com.nb.bus.hospital.his.HisScriptSessionManager;
-import com.nb.bus.service.LocalBusHospitalService;
-import com.nb.common.config.websocket.MessagingRequest;
-import com.nb.common.config.websocket.WebSocketConstant;
-import com.nb.common.config.websocket.handler.Subscribe;
-import com.nb.common.result.R;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Component;
-import org.tio.core.ChannelContext;
-import org.tio.core.Tio;
-import org.tio.websocket.common.WsResponse;
-
-import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author lifang
- * @version 1.0.0
- * @ClassName DeviceRepeatHandler.java
- * @Description his脚本连接通道
- * @createTime 2022年03月25日 14:21:00
- */
-@Component
-@AllArgsConstructor
-public class HisConnectionHandler extends Subscribe {
-    private final HisScriptSessionManager scriptSessionManager;
-    private final LocalBusHospitalService hospitalService;
-    private static ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
-    @Override
-    public String getId() {
-        return WebSocketConstant.HIS_CONNECTION;
-    }
-
-    @Override
-    public void onMessage(MessagingRequest message, ChannelContext channelContext) {
-        //医院his脚本逻辑单独处理
-        String tenantId = message.getTenantId();
-        boolean close=false;
-        if(!"-1".equals(tenantId)){
-            Tio.send(channelContext, WsResponse.fromText(JSONUtil.toJsonStr(R.fail("连接参数错误,拒绝处理")),"utf-8"));
-            close=true;
-        }
-        List<String> params = message.getParams();
-        if (!close&&CollectionUtil.isEmpty(params)) {
-            Tio.send(channelContext, WsResponse.fromText(JSONUtil.toJsonStr(R.fail("连接参数为空,拒绝处理")),"utf-8"));
-            close=true;
-        }
-        BusHospitalEntity hospital = hospitalService.getOne(new QueryWrapper<BusHospitalEntity>().lambda().eq(BusHospitalEntity::getCode, params.get(0)));
-        if(!close&&hospital==null){
-            Tio.send(channelContext, WsResponse.fromText(JSONUtil.toJsonStr(R.fail(String.format("医院编码[{%s}]不存在,拒绝处理",params.get(0)))),"utf-8"));
-            close=true;
-        }
-        if(close){
-            executorService.schedule(()->  Tio.close(channelContext,"连接参数错误【"+JSONUtil.toJsonStr(message)+"】"),2, TimeUnit.SECONDS);
-            return ;
-        }
-        channelContext.set("tenantId",hospital.getId());
-        HisScriptSession hisScriptSession = scriptSessionManager.get(hospital.getId());
-        //绑定
-        hisScriptSession.bindChannel(channelContext);
-    }
-
-    @Override
-    public void close(ChannelContext channelContext) {
-
-    }
-
-    @Override
-    public boolean needParam() {
-        return false;
-    }
-}
+//package com.nb.bus.websocket;
+//
+//import cn.hutool.core.collection.CollectionUtil;
+//import cn.hutool.json.JSONUtil;
+//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+//import com.nb.bus.entity.BusHospitalEntity;
+//import com.nb.bus.hospital.his.HisScriptSession;
+//import com.nb.bus.hospital.his.HisScriptSessionManager;
+//import com.nb.bus.service.LocalBusHospitalService;
+//import com.nb.common.config.websocket.MessagingRequest;
+//import com.nb.common.config.websocket.WebSocketConstant;
+//import com.nb.common.config.websocket.handler.Subscribe;
+//import com.nb.common.result.R;
+//import lombok.AllArgsConstructor;
+//import org.springframework.stereotype.Component;
+//import org.tio.core.ChannelContext;
+//import org.tio.core.Tio;
+//import org.tio.websocket.common.WsResponse;
+//
+//import java.util.List;
+//import java.util.concurrent.Executors;
+//import java.util.concurrent.ScheduledExecutorService;
+//import java.util.concurrent.TimeUnit;
+//
+///**
+// * @author lifang
+// * @version 1.0.0
+// * @ClassName DeviceRepeatHandler.java
+// * @Description his脚本连接通道
+// * @createTime 2022年03月25日 14:21:00
+// */
+//@Component
+//@AllArgsConstructor
+//public class HisConnectionHandler extends Subscribe {
+//    private final HisScriptSessionManager scriptSessionManager;
+//    private final LocalBusHospitalService hospitalService;
+//    private static ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
+//    @Override
+//    public String getId() {
+//        return WebSocketConstant.HIS_CONNECTION;
+//    }
+//
+//    @Override
+//    public void onMessage(MessagingRequest message, ChannelContext channelContext) {
+//        //医院his脚本逻辑单独处理
+//        String tenantId = message.getTenantId();
+//        boolean close=false;
+//        if(!"-1".equals(tenantId)){
+//            Tio.send(channelContext, WsResponse.fromText(JSONUtil.toJsonStr(R.fail("连接参数错误,拒绝处理")),"utf-8"));
+//            close=true;
+//        }
+//        List<String> params = message.getParams();
+//        if (!close&&CollectionUtil.isEmpty(params)) {
+//            Tio.send(channelContext, WsResponse.fromText(JSONUtil.toJsonStr(R.fail("连接参数为空,拒绝处理")),"utf-8"));
+//            close=true;
+//        }
+//        BusHospitalEntity hospital = hospitalService.getOne(new QueryWrapper<BusHospitalEntity>().lambda().eq(BusHospitalEntity::getCode, params.get(0)));
+//        if(!close&&hospital==null){
+//            Tio.send(channelContext, WsResponse.fromText(JSONUtil.toJsonStr(R.fail(String.format("医院编码[{%s}]不存在,拒绝处理",params.get(0)))),"utf-8"));
+//            close=true;
+//        }
+//        if(close){
+//            executorService.schedule(()->  Tio.close(channelContext,"连接参数错误【"+JSONUtil.toJsonStr(message)+"】"),2, TimeUnit.SECONDS);
+//            return ;
+//        }
+//        channelContext.set("tenantId",hospital.getId());
+//        HisScriptSession hisScriptSession = scriptSessionManager.get(hospital.getId());
+//        //绑定
+//        hisScriptSession.bindChannel(channelContext);
+//    }
+//
+//    @Override
+//    public void close(ChannelContext channelContext) {
+//
+//    }
+//
+//    @Override
+//    public boolean needParam() {
+//        return false;
+//    }
+//}

+ 43 - 0
nb-system/src/main/java/com/nb/bus/websocket/auth/HospitalAuthFilter.java

@@ -0,0 +1,43 @@
+package com.nb.bus.websocket.auth;
+
+import cn.hutool.core.text.CharSequenceUtil;
+import com.nb.bus.hospital.HospitalManagerRegister;
+import com.nb.bus.hospital.his.HisScriptSession;
+import com.nb.common.Constants;
+import com.nb.common.config.websocket.HospitalCodeCheck;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.tio.core.ChannelContext;
+import org.tio.http.common.HttpRequest;
+import org.tio.http.common.HttpResponse;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName HospitalAuthFilter.java
+ * @Description TODO
+ * @createTime 2022年07月18日 10:10:00
+ */
+@Component
+@Slf4j
+@AllArgsConstructor
+public class HospitalAuthFilter implements IWebSocketAuthFilter {
+    private final HospitalManagerRegister hospitalManagerRegister;
+    private final HospitalCodeCheck codeCheck;
+    @Override
+    public boolean auth(HttpRequest httpRequest, HttpResponse httpResponse, ChannelContext channelContext) {
+        String authorization = httpRequest.getParam("Authorization");
+        String version = httpRequest.getParam("Version");
+        String hospitalId = codeCheck.getHospitalId(authorization);
+        if (CharSequenceUtil.isNotBlank(hospitalId)) {
+            channelContext.set(Constants.HOSPITAL_ID,hospitalId);
+            HisScriptSession hisScriptSession =  hospitalManagerRegister.get(hospitalId).getScriptSession();
+            //绑定
+            hisScriptSession.bindChannel(channelContext,version);
+            log.info("医院脚本连接成功,医院编码【{}】",authorization);
+            return true;
+        }
+        return false;
+    }
+}

+ 16 - 0
nb-system/src/main/java/com/nb/bus/websocket/auth/IWebSocketAuthFilter.java

@@ -0,0 +1,16 @@
+package com.nb.bus.websocket.auth;
+
+import org.tio.http.common.HttpRequest;
+import org.tio.http.common.HttpResponse;
+import org.tio.core.ChannelContext;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName IWebSocketAuth.java
+ * @Description websocket授权
+ * @createTime 2022年07月18日 10:06:00
+ */
+public interface IWebSocketAuthFilter {
+    boolean auth(HttpRequest httpRequest, HttpResponse httpResponse, ChannelContext channelContext);
+}

+ 31 - 0
nb-system/src/main/java/com/nb/bus/websocket/auth/UserAuthFilter.java

@@ -0,0 +1,31 @@
+package com.nb.bus.websocket.auth;
+
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.json.JSONUtil;
+import com.nb.common.Constants;
+import com.nb.common.bo.LoginUser;
+import org.springframework.stereotype.Component;
+import org.tio.core.Tio;
+import org.tio.http.common.HttpRequest;
+import org.tio.http.common.HttpResponse;
+import org.tio.core.ChannelContext;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName UserAuthFilter.java
+ * @Description 用户websocket授权
+ * @createTime 2022年07月18日 10:08:00
+ */
+@Component
+public class UserAuthFilter implements IWebSocketAuthFilter{
+    @Override
+    public boolean auth(HttpRequest httpRequest, HttpResponse httpResponse, ChannelContext channelContext) {
+        String authorization = httpRequest.getParam("Authorization");
+        Object result = StpUtil.getTokenSessionByToken(authorization).get(Constants.LOGIN_USER_KEY);
+        Tio.bindToken(channelContext, JSONUtil.toJsonStr(authorization));
+        LoginUser loginUser = (LoginUser)result;
+        channelContext.set(Constants.LOGIN_USER_KEY,loginUser);
+        return result!=null;
+    }
+}

+ 2 - 2
nb-system/src/main/java/com/nb/system/mapper/SysAppConfigMapper.java → nb-system/src/main/java/com/nb/system/mapper/BusVersionMapper.java

@@ -1,7 +1,7 @@
 package com.nb.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.nb.bus.entity.BusAppConfig;
+import com.nb.bus.entity.BusVersionEntity;
 
 /**
  * <p>
@@ -11,6 +11,6 @@ import com.nb.bus.entity.BusAppConfig;
  * @author Kevin
  * @since 2021-06-10
  */
-public interface SysAppConfigMapper extends BaseMapper<BusAppConfig> {
+public interface BusVersionMapper extends BaseMapper<BusVersionEntity> {
 
 }