Ver Fonte

优化wx接口,增加超管权限(差create接口)

boweniac há 7 meses atrás
pai
commit
ed22d90b5d

+ 2 - 0
hook/sys.go

@@ -2,6 +2,7 @@ package hook
 
 import (
 	"fmt"
+	"time"
 )
 
 // 退出登陆
@@ -101,6 +102,7 @@ func (h *Hook) GetLoginQRCode() (result GetLoginQRCodeReap, err error) {
 
 // 查询登录状态
 func (h *Hook) IsLoginStatus() (result IsLoginStatusResp, err error) {
+	h.Client.SetTimeout(5 * time.Second)
 	resp, err := h.Client.R().SetSuccessResult(&result).Post("http://" + h.ServerIp + ":" + h.WxPort + "/IsLoginStatus")
 	if err != nil {
 		return

+ 9 - 4
internal/logic/Wx/delete_wx_logic.go

@@ -26,10 +26,15 @@ func NewDeleteWxLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteWx
 	}
 }
 
-func (l *DeleteWxLogic) DeleteWx(req *types.IDsReq) (*types.BaseMsgResp, error) {
-	organizationId := l.ctx.Value("organizationId").(uint64)
-
-	_, err := l.svcCtx.DB.Wx.Delete().Where(wx.IDIn(req.Ids...), wx.OrganizationIDEQ(organizationId)).Exec(l.ctx)
+func (l *DeleteWxLogic) DeleteWx(req *types.IDsReq) (resp *types.BaseMsgResp, err error) {
+	isAdmin := l.ctx.Value("isAdmin").(bool)
+	if isAdmin {
+		_, err = l.svcCtx.DB.Wx.Delete().Where(wx.IDIn(req.Ids...)).Exec(l.ctx)
+	} else {
+		organizationId := l.ctx.Value("organizationId").(uint64)
+
+		_, err = l.svcCtx.DB.Wx.Delete().Where(wx.IDIn(req.Ids...), wx.OrganizationIDEQ(organizationId)).Exec(l.ctx)
+	}
 
 	if err != nil {
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)

+ 21 - 9
internal/logic/Wx/get_wx_by_id_logic.go

@@ -2,6 +2,7 @@ package Wx
 
 import (
 	"context"
+	"wechat-api/ent"
 	"wechat-api/ent/wx"
 
 	"wechat-api/internal/svc"
@@ -28,15 +29,26 @@ func NewGetWxByIdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetWxBy
 	}
 }
 
-func (l *GetWxByIdLogic) GetWxById(req *types.IDReq) (*types.WxInfoResp, error) {
-	organizationId := l.ctx.Value("organizationId").(uint64)
-	data, err := l.svcCtx.DB.Wx.Query().
-		Where(
-			wx.IDEQ(req.Id),                   // Filter by ID
-			wx.OrganizationID(organizationId), // Additional filter by organizationId
-		).
-		WithAgent().
-		Only(l.ctx)
+func (l *GetWxByIdLogic) GetWxById(req *types.IDReq) (resp *types.WxInfoResp, err error) {
+	isAdmin := l.ctx.Value("isAdmin").(bool)
+	var data *ent.Wx
+	if isAdmin {
+		data, err = l.svcCtx.DB.Wx.Query().
+			Where(
+				wx.IDEQ(req.Id),
+			).
+			WithAgent().
+			Only(l.ctx)
+	} else {
+		organizationId := l.ctx.Value("organizationId").(uint64)
+		data, err = l.svcCtx.DB.Wx.Query().
+			Where(
+				wx.IDEQ(req.Id),                   // Filter by ID
+				wx.OrganizationID(organizationId), // Additional filter by organizationId
+			).
+			WithAgent().
+			Only(l.ctx)
+	}
 	if err != nil {
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 	}

+ 21 - 4
internal/logic/Wx/get_wx_list_logic.go

@@ -2,6 +2,7 @@ package Wx
 
 import (
 	"context"
+	"fmt"
 	"math/rand"
 	"strconv"
 	"time"
@@ -35,7 +36,7 @@ func NewGetWxListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetWxLi
 
 func (l *GetWxListLogic) GetWxList(req *types.WxListReq) (*types.WxListResp, error) {
 	organizationId := l.ctx.Value("organizationId").(uint64)
-
+	isAdmin := l.ctx.Value("isAdmin").(bool)
 	servers, err := l.svcCtx.DB.Server.Query().All(l.ctx)
 	serverSet := make(map[uint64]*ent.Server, len(servers))
 	for _, s := range servers {
@@ -43,7 +44,9 @@ func (l *GetWxListLogic) GetWxList(req *types.WxListReq) (*types.WxListResp, err
 	}
 
 	var predicates []predicate.Wx
-	predicates = append(predicates, wx.OrganizationIDEQ(organizationId))
+	if !isAdmin {
+		predicates = append(predicates, wx.OrganizationIDEQ(organizationId))
+	}
 	if req.Port != nil {
 		predicates = append(predicates, wx.PortContains(*req.Port))
 	}
@@ -67,7 +70,6 @@ func (l *GetWxListLogic) GetWxList(req *types.WxListReq) (*types.WxListResp, err
 		// 创建 hookClient 客户端
 		serverInfo := serverSet[v.ServerID]
 		hookClient := hook.NewHook(serverInfo.PrivateIP, serverInfo.AdminPort, v.Port)
-
 		// 获取登录状态
 		loginInfo, err := hookClient.IsLoginStatus()
 		var loginStatus uint8 = 0
@@ -133,7 +135,19 @@ func (l *GetWxListLogic) GetWxList(req *types.WxListReq) (*types.WxListResp, err
 				Examples:   &v.Edges.Agent.Examples,
 			}
 		}
-
+		fmt.Printf("---------------------v.ID-------------------: %v\n", v.ID)
+		fmt.Printf("---------------------v.ServerID-------------------: %v\n", v.ServerID)
+		fmt.Printf("---------------------v.Port-------------------: %v\n", v.Port)
+		fmt.Printf("---------------------processID-------------------: %v\n", processID)
+		fmt.Printf("---------------------v.Callback-------------------: %v\n", v.Callback)
+		fmt.Printf("---------------------wxid-------------------: %v\n", wxid)
+		fmt.Printf("---------------------account-------------------: %v\n", account)
+		fmt.Printf("---------------------nickname-------------------: %v\n", nickname)
+		fmt.Printf("---------------------tel-------------------: %v\n", tel)
+		fmt.Printf("---------------------headBig-------------------: %v\n", headBig)
+		fmt.Printf("---------------------v.OrganizationID-------------------: %v\n", v.OrganizationID)
+		fmt.Printf("---------------------v.AgentID-------------------: %v\n", v.AgentID)
+		fmt.Printf("---------------------agent-------------------: %v\n", agent)
 		resp.Data.Data = append(resp.Data.Data,
 			types.WxInfo{
 				BaseIDInfo: types.BaseIDInfo{
@@ -155,6 +169,9 @@ func (l *GetWxListLogic) GetWxList(req *types.WxListReq) (*types.WxListResp, err
 				AgentId:        &v.AgentID,
 				AgentInfo:      &agent,
 			})
+		fmt.Printf("---------------------v.Port-------------------: %v\n", v.Port)
+		fmt.Printf("---------------------loginInfo.Onlinestatus-------------------: %v\n", loginInfo.Onlinestatus)
+		fmt.Printf("---------------------loginStatus-------------------: %v\n", loginStatus)
 	}
 
 	return resp, nil

+ 34 - 17
internal/logic/Wx/update_wx_logic.go

@@ -25,23 +25,40 @@ func NewUpdateWxLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateWx
 	}
 }
 
-func (l *UpdateWxLogic) UpdateWx(req *types.WxInfo) (*types.BaseMsgResp, error) {
-	organizationId := l.ctx.Value("organizationId").(uint64)
-
-	err := l.svcCtx.DB.Wx.UpdateOneID(*req.Id).
-		Where(wx.OrganizationID(organizationId)).
-		SetNotNilStatus(req.Status).
-		SetNotNilServerID(req.ServerId).
-		SetNotNilPort(req.Port).
-		SetNotNilProcessID(req.ProcessId).
-		SetNotNilCallback(req.Callback).
-		SetNotNilWxid(req.Wxid).
-		SetNotNilAccount(req.Account).
-		SetNotNilNickname(req.Nickname).
-		SetNotNilTel(req.Tel).
-		SetNotNilHeadBig(req.HeadBig).
-		SetNotNilAgentID(req.AgentId).
-		Exec(l.ctx)
+func (l *UpdateWxLogic) UpdateWx(req *types.WxInfo) (resp *types.BaseMsgResp, err error) {
+	isAdmin := l.ctx.Value("isAdmin").(bool)
+
+	if isAdmin {
+		err = l.svcCtx.DB.Wx.UpdateOneID(*req.Id).
+			SetNotNilStatus(req.Status).
+			SetNotNilServerID(req.ServerId).
+			SetNotNilPort(req.Port).
+			SetNotNilProcessID(req.ProcessId).
+			SetNotNilCallback(req.Callback).
+			SetNotNilWxid(req.Wxid).
+			SetNotNilAccount(req.Account).
+			SetNotNilNickname(req.Nickname).
+			SetNotNilTel(req.Tel).
+			SetNotNilHeadBig(req.HeadBig).
+			SetNotNilAgentID(req.AgentId).
+			Exec(l.ctx)
+	} else {
+		organizationId := l.ctx.Value("organizationId").(uint64)
+		err = l.svcCtx.DB.Wx.UpdateOneID(*req.Id).
+			Where(wx.OrganizationID(organizationId)).
+			SetNotNilStatus(req.Status).
+			SetNotNilServerID(req.ServerId).
+			SetNotNilPort(req.Port).
+			SetNotNilProcessID(req.ProcessId).
+			SetNotNilCallback(req.Callback).
+			SetNotNilWxid(req.Wxid).
+			SetNotNilAccount(req.Account).
+			SetNotNilNickname(req.Nickname).
+			SetNotNilTel(req.Tel).
+			SetNotNilHeadBig(req.HeadBig).
+			SetNotNilAgentID(req.AgentId).
+			Exec(l.ctx)
+	}
 
 	if err != nil {
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)