Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_backend
This commit is contained in:
@@ -65,6 +65,11 @@ func IPAddrLocation(c *gin.Context) (string, string) {
|
|||||||
|
|
||||||
// Authorization 解析请求头
|
// Authorization 解析请求头
|
||||||
func Authorization(c *gin.Context) string {
|
func Authorization(c *gin.Context) string {
|
||||||
|
// Query请求查询
|
||||||
|
if authQuery, ok := c.GetQuery(token.RESPONSE_FIELD); ok && authQuery != "" {
|
||||||
|
return authQuery
|
||||||
|
}
|
||||||
|
// Header请求头
|
||||||
authHeader := c.GetHeader(token.HEADER_KEY)
|
authHeader := c.GetHeader(token.HEADER_KEY)
|
||||||
if authHeader == "" {
|
if authHeader == "" {
|
||||||
return ""
|
return ""
|
||||||
@@ -99,11 +104,22 @@ func UaOsBrowser(c *gin.Context) (string, string) {
|
|||||||
// AcceptLanguage 解析客户端接收语言 zh:中文 en: 英文
|
// AcceptLanguage 解析客户端接收语言 zh:中文 en: 英文
|
||||||
func AcceptLanguage(c *gin.Context) string {
|
func AcceptLanguage(c *gin.Context) string {
|
||||||
preferredLanguage := language.English
|
preferredLanguage := language.English
|
||||||
acceptLanguage := c.GetHeader("Accept-Language")
|
|
||||||
tags, _, _ := language.ParseAcceptLanguage(acceptLanguage)
|
// Query请求查询
|
||||||
if len(tags) > 0 {
|
if v, ok := c.GetQuery("language"); ok && v != "" {
|
||||||
preferredLanguage = tags[0]
|
tags, _, _ := language.ParseAcceptLanguage(v)
|
||||||
|
if len(tags) > 0 {
|
||||||
|
preferredLanguage = tags[0]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// Header请求头
|
||||||
|
if v := c.GetHeader("Accept-Language"); v != "" {
|
||||||
|
tags, _, _ := language.ParseAcceptLanguage(v)
|
||||||
|
if len(tags) > 0 {
|
||||||
|
preferredLanguage = tags[0]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 只取前缀
|
// 只取前缀
|
||||||
lang := preferredLanguage.String()
|
lang := preferredLanguage.String()
|
||||||
arr := strings.Split(lang, "-")
|
arr := strings.Split(lang, "-")
|
||||||
|
|||||||
@@ -34,10 +34,10 @@ type SysMenuController struct {
|
|||||||
// GET /list
|
// GET /list
|
||||||
func (s *SysMenuController) List(c *gin.Context) {
|
func (s *SysMenuController) List(c *gin.Context) {
|
||||||
query := model.SysMenu{}
|
query := model.SysMenu{}
|
||||||
if v, ok := c.GetQuery("menuName"); ok {
|
if v, ok := c.GetQuery("menuName"); ok && v != "" {
|
||||||
query.MenuName = v
|
query.MenuName = v
|
||||||
}
|
}
|
||||||
if v, ok := c.GetQuery("status"); ok {
|
if v, ok := c.GetQuery("status"); ok && v != "" {
|
||||||
query.Status = v
|
query.Status = v
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -289,10 +289,10 @@ func (s *SysMenuController) Remove(c *gin.Context) {
|
|||||||
// GET /treeSelect
|
// GET /treeSelect
|
||||||
func (s *SysMenuController) TreeSelect(c *gin.Context) {
|
func (s *SysMenuController) TreeSelect(c *gin.Context) {
|
||||||
query := model.SysMenu{}
|
query := model.SysMenu{}
|
||||||
if v, ok := c.GetQuery("menuName"); ok {
|
if v, ok := c.GetQuery("menuName"); ok && v != "" {
|
||||||
query.MenuName = v
|
query.MenuName = v
|
||||||
}
|
}
|
||||||
if v, ok := c.GetQuery("status"); ok {
|
if v, ok := c.GetQuery("status"); ok && v != "" {
|
||||||
query.Status = v
|
query.Status = v
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -331,10 +331,10 @@ func (s *SysMenuController) RoleMenuTreeSelect(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
query := model.SysMenu{}
|
query := model.SysMenu{}
|
||||||
if v, ok := c.GetQuery("menuName"); ok {
|
if v, ok := c.GetQuery("menuName"); ok && v != "" {
|
||||||
query.MenuName = v
|
query.MenuName = v
|
||||||
}
|
}
|
||||||
if v, ok := c.GetQuery("status"); ok {
|
if v, ok := c.GetQuery("status"); ok && v != "" {
|
||||||
query.Status = v
|
query.Status = v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ type WSImpl struct{}
|
|||||||
// UpgraderWs http升级ws请求
|
// UpgraderWs http升级ws请求
|
||||||
func (s *WSImpl) UpgraderWs(w http.ResponseWriter, r *http.Request) *websocket.Conn {
|
func (s *WSImpl) UpgraderWs(w http.ResponseWriter, r *http.Request) *websocket.Conn {
|
||||||
wsUpgrader := websocket.Upgrader{
|
wsUpgrader := websocket.Upgrader{
|
||||||
|
Subprotocols: []string{"omc-ws"},
|
||||||
// 设置消息发送缓冲区大小(byte),如果这个值设置得太小,可能会导致服务端在发送大型消息时遇到问题
|
// 设置消息发送缓冲区大小(byte),如果这个值设置得太小,可能会导致服务端在发送大型消息时遇到问题
|
||||||
WriteBufferSize: 1024,
|
WriteBufferSize: 1024,
|
||||||
// 消息包启用压缩
|
// 消息包启用压缩
|
||||||
@@ -61,7 +62,7 @@ func (s *WSImpl) NewClient(uid string, groupIDs []string, conn *websocket.Conn)
|
|||||||
BindUid: uid,
|
BindUid: uid,
|
||||||
SubGroup: groupIDs,
|
SubGroup: groupIDs,
|
||||||
MsgChan: make(chan []byte, 100),
|
MsgChan: make(chan []byte, 100),
|
||||||
StopChan: make(chan struct{}, 1), // 请求卡死循环标记
|
StopChan: make(chan struct{}, 1), // 卡死循环标记
|
||||||
}
|
}
|
||||||
|
|
||||||
// 存入客户端
|
// 存入客户端
|
||||||
@@ -111,10 +112,12 @@ func (s *WSImpl) clientRead(wsClient *model.WSClient) {
|
|||||||
s.CloseClient(wsClient.ID)
|
s.CloseClient(wsClient.ID)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 文本和二进制类型,只处理文本json
|
// 文本和二进制类型,只处理文本json
|
||||||
if messageType == websocket.TextMessage {
|
if messageType == websocket.TextMessage {
|
||||||
var reqMsg model.WSRequest
|
var reqMsg model.WSRequest
|
||||||
err := json.Unmarshal(msg, &reqMsg)
|
err := json.Unmarshal(msg, &reqMsg)
|
||||||
|
// fmt.Println(messageType, string(msg))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
msgByte, _ := json.Marshal(result.ErrMsg("message format not supported"))
|
msgByte, _ := json.Marshal(result.ErrMsg("message format not supported"))
|
||||||
wsClient.MsgChan <- msgByte
|
wsClient.MsgChan <- msgByte
|
||||||
@@ -177,11 +180,13 @@ func (s *WSImpl) CloseClient(clientID string) {
|
|||||||
if clientIds, ok := WsUsers.Load(client.BindUid); ok {
|
if clientIds, ok := WsUsers.Load(client.BindUid); ok {
|
||||||
uidClientIds := clientIds.(*[]string)
|
uidClientIds := clientIds.(*[]string)
|
||||||
if len(*uidClientIds) > 0 {
|
if len(*uidClientIds) > 0 {
|
||||||
for i, clientId := range *uidClientIds {
|
tempClientIds := make([]string, 0, len(*uidClientIds))
|
||||||
if clientId == client.ID {
|
for _, v := range *uidClientIds {
|
||||||
*uidClientIds = append((*uidClientIds)[:i], (*uidClientIds)[i+1:]...)
|
if v != client.ID {
|
||||||
|
tempClientIds = append(tempClientIds, v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*uidClientIds = tempClientIds
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -196,11 +201,13 @@ func (s *WSImpl) CloseClient(clientID string) {
|
|||||||
|
|
||||||
groupUIDs := uids.(*[]string)
|
groupUIDs := uids.(*[]string)
|
||||||
if len(*groupUIDs) > 0 {
|
if len(*groupUIDs) > 0 {
|
||||||
for i, v := range *groupUIDs {
|
tempUIDs := make([]string, 0, len(*groupUIDs))
|
||||||
if v == client.BindUid {
|
for _, v := range *groupUIDs {
|
||||||
*groupUIDs = append((*groupUIDs)[:i], (*groupUIDs)[i+1:]...)
|
if v != client.BindUid {
|
||||||
|
tempUIDs = append(tempUIDs, v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*groupUIDs = tempUIDs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ func Setup(router *gin.Engine) {
|
|||||||
{
|
{
|
||||||
wsGroup.GET("",
|
wsGroup.GET("",
|
||||||
middleware.PreAuthorize(nil),
|
middleware.PreAuthorize(nil),
|
||||||
collectlogs.OperateLog(collectlogs.OptionNew("WS 订阅", collectlogs.BUSINESS_TYPE_OTHER)),
|
collectlogs.OperateLog(collectlogs.OptionNew("WS Subscription", collectlogs.BUSINESS_TYPE_OTHER)),
|
||||||
controller.NewWSController.WS,
|
controller.NewWSController.WS,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user