浏览代码

Merge branch 'master' into yhg_240730

jimmyyem 8 月之前
父节点
当前提交
2579453b63

+ 6 - 3
internal/logic/WechatServer/create_server_logic.go

@@ -2,7 +2,6 @@ package WechatServer
 
 import (
 	"context"
-
 	"wechat-api/internal/svc"
 	"wechat-api/internal/types"
 	"wechat-api/internal/utils/dberrorhandler"
@@ -27,7 +26,7 @@ func NewCreateServerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Crea
 }
 
 func (l *CreateServerLogic) CreateServer(req *types.ServerInfo) (*types.BaseMsgResp, error) {
-	_, err := l.svcCtx.DB.Server.Create().
+	serverInfo, err := l.svcCtx.DB.Server.Create().
 		SetNotNilStatus(req.Status).
 		SetNotNilName(req.Name).
 		SetNotNilPublicIP(req.PublicIp).
@@ -38,6 +37,10 @@ func (l *CreateServerLogic) CreateServer(req *types.ServerInfo) (*types.BaseMsgR
 	if err != nil {
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 	}
-
+	data := map[string]interface{}{
+		"private_ip": serverInfo.PrivateIP,
+		"admin_port": serverInfo.AdminPort,
+	}
+	l.svcCtx.Rds.HSet(l.ctx, "server_info", serverInfo.ID, data)
 	return &types.BaseMsgResp{Msg: errormsg.CreateSuccess}, nil
 }

+ 5 - 1
internal/logic/WechatServer/update_server_logic.go

@@ -37,6 +37,10 @@ func (l *UpdateServerLogic) UpdateServer(req *types.ServerInfo) (*types.BaseMsgR
 	if err != nil {
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 	}
-
+	data := map[string]interface{}{
+		"private_ip": req.PrivateIp,
+		"admin_port": req.AdminPort,
+	}
+	l.svcCtx.Rds.HSet(l.ctx, "server_info", *req.Id, data)
 	return &types.BaseMsgResp{Msg: errormsg.UpdateSuccess}, nil
 }

+ 10 - 0
internal/logic/Wx/check_wx_logic.go

@@ -102,6 +102,16 @@ func (l *CheckWxLogic) CheckWx(req *types.WxInfo) (resp *types.BaseMsgResp, err
 				SetNotNilHeadBig(&selfInfo.HeadBig).
 				SetStatus(1).
 				Save(l.ctx)
+
+			data := map[string]interface{}{
+				"nickname":  selfInfo.Nickname,
+				"server_id": wxInfo.ServerID,
+				"port":      wxInfo.Port,
+				"api_base":  wxInfo.APIBase,
+				"api_key":   wxInfo.APIKey,
+				"agent_id":  wxInfo.AgentID,
+			}
+			l.svcCtx.Rds.HSet(l.ctx, "wx_info", selfInfo.Wxid, data)
 		}
 		if dbErr != nil {
 			return nil, dberrorhandler.DefaultEntError(l.Logger, dbErr, req)

+ 4 - 5
internal/logic/Wx/create_wx_logic.go

@@ -65,10 +65,9 @@ func (l *CreateWxLogic) CreateWx(req *types.WxInfo) (*types.BaseMsgResp, error)
 		return nil, err
 	}
 
-	var dbErr error
 	if ent.IsNotFound(err) {
 		wxid := strconv.Itoa(rand.New(rand.NewSource(time.Now().UnixNano())).Intn(1000000))
-		_, dbErr = l.svcCtx.DB.Wx.Create().
+		_, err := l.svcCtx.DB.Wx.Create().
 			SetServerID(*req.ServerId).
 			SetPort(*req.Port).
 			SetCallback(*req.Callback).
@@ -78,13 +77,13 @@ func (l *CreateWxLogic) CreateWx(req *types.WxInfo) (*types.BaseMsgResp, error)
 			SetWxid(wxid).
 			SetStatus(0).
 			Save(l.ctx)
+		if err != nil {
+			return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+		}
 	} else {
 		l.Error("端口已使用,请使用其他端口", err)
 		return nil, err
 	}
-	if dbErr != nil {
-		return nil, dberrorhandler.DefaultEntError(l.Logger, dbErr, req)
-	}
 
 	return &types.BaseMsgResp{Msg: errormsg.Success}, nil
 }

+ 54 - 6
internal/logic/Wx/update_wx_logic.go

@@ -3,6 +3,7 @@ package Wx
 import (
 	"context"
 	"wechat-api/ent/wx"
+	"wechat-api/hook"
 	"wechat-api/internal/svc"
 	"wechat-api/internal/types"
 	"wechat-api/internal/utils/dberrorhandler"
@@ -28,25 +29,72 @@ func NewUpdateWxLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateWx
 func (l *UpdateWxLogic) UpdateWx(req *types.WxInfo) (resp *types.BaseMsgResp, err error) {
 	isAdmin := l.ctx.Value("isAdmin").(bool)
 
+	wxinfo, err := l.svcCtx.DB.Wx.Query().
+		Where(
+			wx.IDEQ(*req.Id),
+		).
+		WithAgent().
+		Only(l.ctx)
+	if err != nil {
+		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+	}
+
 	if isAdmin {
-		err = l.svcCtx.DB.Wx.UpdateOneID(*req.Id).
+		tx, err := l.svcCtx.DB.Tx(context.Background())
+
+		if err != nil {
+			return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+		}
+
+		err = tx.Wx.UpdateOneID(*req.Id).
 			SetNotNilCallback(req.Callback).
 			SetNotNilAgentID(req.AgentId).
 			SetNotNilOrganizationID(req.OrganizationId).
 			SetNotNilAPIBase(req.ApiBase).
 			SetNotNilAPIKey(req.ApiKey).
 			Exec(l.ctx)
+
+		if req.Callback != nil && *req.Callback != "" {
+			serverinfo, serverErr := tx.Server.Get(l.ctx, wxinfo.ServerID)
+			if serverErr != nil {
+				_ = tx.Rollback()
+				return nil, dberrorhandler.DefaultEntError(l.Logger, serverErr, req)
+			}
+			hook := hook.NewHook(serverinfo.PrivateIP, serverinfo.AdminPort, wxinfo.Port)
+			loginStatus, _ := hook.IsLoginStatus()
+			if err != nil {
+				_ = tx.Rollback()
+				return nil, err
+			}
+			if loginStatus.Onlinestatus == "3" {
+				err = hook.ConfigureMsgRecive("1", *req.Callback)
+				if err != nil {
+					_ = tx.Rollback()
+					return nil, err
+				}
+			}
+		}
+
+		if err != nil {
+			_ = tx.Rollback()
+			l.Error("更新失败", err)
+			return nil, err
+		}
+		// 所有操作成功,提交事务
+		err = tx.Commit()
+		if err != nil {
+			return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+		}
 	} else {
 		organizationId := l.ctx.Value("organizationId").(uint64)
 		err = l.svcCtx.DB.Wx.UpdateOneID(*req.Id).
 			Where(wx.OrganizationID(organizationId)).
 			SetNotNilAgentID(req.AgentId).
 			Exec(l.ctx)
+		if err != nil {
+			return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+		}
 	}
-
-	if err != nil {
-		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
-	}
-
+	l.svcCtx.Rds.HDel(l.ctx, "wx_info", wxinfo.Wxid)
 	return &types.BaseMsgResp{Msg: errormsg.UpdateSuccess}, nil
 }

+ 1 - 1
internal/logic/employee/get_employee_list_logic.go

@@ -36,7 +36,7 @@ func (l *GetEmployeeListLogic) GetEmployeeList(req *types.EmployeeListReq) (*typ
 	var predicates []predicate.Employee
 	predicates = append(predicates, employee.OrganizationIDEQ(organizationId))
 
-	if req.Title != nil {
+	if req.Title != nil && *req.Title != "" {
 		predicates = append(predicates, employee.TitleContains(*req.Title))
 	}
 	if req.CategoryId != nil && *req.CategoryId > 0 {

+ 3 - 0
internal/svc/service_context.go

@@ -1,6 +1,7 @@
 package svc
 
 import (
+	"github.com/redis/go-redis/v9"
 	"wechat-api/internal/config"
 	"wechat-api/internal/middleware"
 
@@ -20,6 +21,7 @@ type ServiceContext struct {
 	Authority rest.Middleware
 	DB        *ent.Client
 	CoreRpc   coreclient.Core
+	Rds       redis.UniversalClient
 }
 
 func NewServiceContext(c config.Config) *ServiceContext {
@@ -41,5 +43,6 @@ func NewServiceContext(c config.Config) *ServiceContext {
 		Authority: middleware.NewAuthorityMiddleware(cbn, rds, coreRpc).Handle,
 		DB:        db,
 		CoreRpc:   coreRpc,
+		Rds:       rds,
 	}
 }