Przeglądaj źródła

fix:edit token CURD API

jimmyyem 7 miesięcy temu
rodzic
commit
975679f45b

+ 1 - 0
desc/wechat/token.api

@@ -7,6 +7,7 @@ type (
 
 
         // 过期时间 
         // 过期时间 
         ExpireAt  *int64 `json:"expireAt,optional"`
         ExpireAt  *int64 `json:"expireAt,optional"`
+		ExpireAtStr  *string `json:"expireAtStr,optional"`
 
 
         // Token 
         // Token 
         Token  *string `json:"token,optional"`
         Token  *string `json:"token,optional"`

+ 1 - 1
ent/migrate/schema.go

@@ -486,7 +486,7 @@ var (
 		Indexes: []*schema.Index{
 		Indexes: []*schema.Index{
 			{
 			{
 				Name:    "token_token",
 				Name:    "token_token",
-				Unique:  false,
+				Unique:  true,
 				Columns: []*schema.Column{TokenColumns[5]},
 				Columns: []*schema.Column{TokenColumns[5]},
 			},
 			},
 		},
 		},

+ 1 - 1
ent/schema/token.go

@@ -32,7 +32,7 @@ func (Token) Mixin() []ent.Mixin {
 
 
 func (Token) Indexes() []ent.Index {
 func (Token) Indexes() []ent.Index {
 	return []ent.Index{
 	return []ent.Index{
-		index.Fields("token"),
+		index.Fields("token").Unique(),
 	}
 	}
 }
 }
 
 

+ 23 - 2
internal/logic/token/create_token_logic.go

@@ -2,6 +2,10 @@ package token
 
 
 import (
 import (
 	"context"
 	"context"
+	"github.com/zeromicro/go-zero/core/errorx"
+	"time"
+	"wechat-api/ent"
+	"wechat-api/ent/token"
 
 
 	"wechat-api/internal/svc"
 	"wechat-api/internal/svc"
 	"wechat-api/internal/types"
 	"wechat-api/internal/types"
@@ -26,8 +30,25 @@ func NewCreateTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Creat
 }
 }
 
 
 func (l *CreateTokenLogic) CreateToken(req *types.TokenInfo) (*types.BaseMsgResp, error) {
 func (l *CreateTokenLogic) CreateToken(req *types.TokenInfo) (*types.BaseMsgResp, error) {
-	_, err := l.svcCtx.DB.Token.Create().
-		//SetNotNilExpireAt(pointy.GetTimeMilliPointer(req.ExpireAt)).
+	var (
+		expireAt time.Time
+		err      error
+	)
+	expireAt, err = time.Parse("2006-01-02 15:04:05", *req.ExpireAtStr)
+	if err != nil {
+		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+	}
+
+	item, err := l.svcCtx.DB.Token.Query().Where(token.TokenEQ(*req.Token)).First(l.ctx)
+	if err != nil && !ent.IsNotFound(err) {
+		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+	}
+	if item != nil && item.ID > 0 {
+		return nil, errorx.NewCodeInvalidArgumentError("Token已经存在")
+	}
+
+	_, err = l.svcCtx.DB.Token.Create().
+		SetNotNilExpireAt(&expireAt).
 		SetNotNilToken(req.Token).
 		SetNotNilToken(req.Token).
 		SetNotNilMAC(req.Mac).
 		SetNotNilMAC(req.Mac).
 		Save(l.ctx)
 		Save(l.ctx)

+ 5 - 3
internal/logic/token/get_token_by_id_logic.go

@@ -33,6 +33,7 @@ func (l *GetTokenByIdLogic) GetTokenById(req *types.IDReq) (*types.TokenInfoResp
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
 	}
 	}
 
 
+	expireAtStr := data.ExpireAt.Format("2006-01-02 15:04:05")
 	return &types.TokenInfoResp{
 	return &types.TokenInfoResp{
 		BaseDataInfo: types.BaseDataInfo{
 		BaseDataInfo: types.BaseDataInfo{
 			Code: 0,
 			Code: 0,
@@ -44,9 +45,10 @@ func (l *GetTokenByIdLogic) GetTokenById(req *types.IDReq) (*types.TokenInfoResp
 				CreatedAt: pointy.GetPointer(data.CreatedAt.UnixMilli()),
 				CreatedAt: pointy.GetPointer(data.CreatedAt.UnixMilli()),
 				UpdatedAt: pointy.GetPointer(data.UpdatedAt.UnixMilli()),
 				UpdatedAt: pointy.GetPointer(data.UpdatedAt.UnixMilli()),
 			},
 			},
-			ExpireAt: pointy.GetUnixMilliPointer(data.ExpireAt.UnixMilli()),
-			Token:    &data.Token,
-			Mac:      &data.MAC,
+			ExpireAt:    pointy.GetUnixMilliPointer(data.ExpireAt.UnixMilli()),
+			ExpireAtStr: &expireAtStr,
+			Token:       &data.Token,
+			Mac:         &data.MAC,
 		},
 		},
 	}, nil
 	}, nil
 }
 }

+ 5 - 3
internal/logic/token/get_token_list_logic.go

@@ -48,6 +48,7 @@ func (l *GetTokenListLogic) GetTokenList(req *types.TokenListReq) (*types.TokenL
 	resp.Data.Total = data.PageDetails.Total
 	resp.Data.Total = data.PageDetails.Total
 
 
 	for _, v := range data.List {
 	for _, v := range data.List {
+		expireAtStr := v.ExpireAt.Format("2006-01-02 15:04:05")
 		resp.Data.Data = append(resp.Data.Data,
 		resp.Data.Data = append(resp.Data.Data,
 			types.TokenInfo{
 			types.TokenInfo{
 				BaseIDInfo: types.BaseIDInfo{
 				BaseIDInfo: types.BaseIDInfo{
@@ -55,9 +56,10 @@ func (l *GetTokenListLogic) GetTokenList(req *types.TokenListReq) (*types.TokenL
 					CreatedAt: pointy.GetPointer(v.CreatedAt.UnixMilli()),
 					CreatedAt: pointy.GetPointer(v.CreatedAt.UnixMilli()),
 					UpdatedAt: pointy.GetPointer(v.UpdatedAt.UnixMilli()),
 					UpdatedAt: pointy.GetPointer(v.UpdatedAt.UnixMilli()),
 				},
 				},
-				ExpireAt: pointy.GetUnixMilliPointer(v.ExpireAt.UnixMilli()),
-				Token:    &v.Token,
-				Mac:      &v.MAC,
+				ExpireAt:    pointy.GetUnixMilliPointer(v.ExpireAt.UnixMilli()),
+				ExpireAtStr: &expireAtStr,
+				Token:       &v.Token,
+				Mac:         &v.MAC,
 			})
 			})
 	}
 	}
 
 

+ 23 - 2
internal/logic/token/update_token_logic.go

@@ -2,6 +2,10 @@ package token
 
 
 import (
 import (
 	"context"
 	"context"
+	"github.com/zeromicro/go-zero/core/errorx"
+	"time"
+	"wechat-api/ent"
+	"wechat-api/ent/token"
 
 
 	"wechat-api/internal/svc"
 	"wechat-api/internal/svc"
 	"wechat-api/internal/types"
 	"wechat-api/internal/types"
@@ -26,8 +30,25 @@ func NewUpdateTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Updat
 }
 }
 
 
 func (l *UpdateTokenLogic) UpdateToken(req *types.TokenInfo) (*types.BaseMsgResp, error) {
 func (l *UpdateTokenLogic) UpdateToken(req *types.TokenInfo) (*types.BaseMsgResp, error) {
-	err := l.svcCtx.DB.Token.UpdateOneID(*req.Id).
-		//SetNotNilExpireAt(pointy.GetTimeMilliPointer(req.ExpireAt)).
+	var (
+		expireAt time.Time
+		err      error
+	)
+	expireAt, err = time.Parse("2006-01-02 15:04:05", *req.ExpireAtStr)
+	if err != nil {
+		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+	}
+
+	item, err := l.svcCtx.DB.Token.Query().Where(token.TokenEQ(*req.Token)).Where(token.IDNEQ(*req.Id)).First(l.ctx)
+	if err != nil && !ent.IsNotFound(err) {
+		return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
+	}
+	if item != nil && item.ID > 0 {
+		return nil, errorx.NewCodeInvalidArgumentError("Token已经存在")
+	}
+
+	err = l.svcCtx.DB.Token.UpdateOneID(*req.Id).
+		SetNotNilExpireAt(&expireAt).
 		SetNotNilToken(req.Token).
 		SetNotNilToken(req.Token).
 		SetNotNilMAC(req.Mac).
 		SetNotNilMAC(req.Mac).
 		Exec(l.ctx)
 		Exec(l.ctx)

+ 2 - 1
internal/types/types.go

@@ -1456,7 +1456,8 @@ type TutorialInfoResp struct {
 type TokenInfo struct {
 type TokenInfo struct {
 	BaseIDInfo
 	BaseIDInfo
 	// 过期时间
 	// 过期时间
-	ExpireAt *int64 `json:"expireAt,optional"`
+	ExpireAt    *int64  `json:"expireAt,optional"`
+	ExpireAtStr *string `json:"expireAtStr,optional"`
 	// Token
 	// Token
 	Token *string `json:"token,optional"`
 	Token *string `json:"token,optional"`
 	// Mac地址
 	// Mac地址