来源:hgdjnet-server 9bfbafe10d417deea959bd53117bc88a10e60a83 项目身份 HKDJ / JHA-216,独立官网仓库,Jenkins 守卫键 hkdjnet 测试目录 /server/hkdj_net,App/Web API 30331/30332 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
85 lines
2.3 KiB
Go
85 lines
2.3 KiB
Go
package mwacc
|
|
|
|
import (
|
|
"context"
|
|
"hkdj-web-server/pub/common/errors"
|
|
"hkdj-web-server/pub/common/log"
|
|
"hkdj-web-server/pub/common/srvdef"
|
|
"hkdj-web-server/pub/mongos"
|
|
"time"
|
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
// 过滤更新
|
|
func UpOneTokenByFilter(ctx context.Context, query primitive.M, update primitive.M) (err error) {
|
|
_, err = mwAccTokenColl.UpdateOne(ctx, query, primitive.M{"$set": update})
|
|
return
|
|
}
|
|
|
|
func SaveToken(ctx context.Context, accId int64, token string) (ok bool, err error) {
|
|
var booToken MwAccToken
|
|
|
|
// 查找
|
|
err = mwAccTokenColl.FindOne(ctx, &booToken, primitive.M{FN.MwAccToken.AccId: accId})
|
|
|
|
if booToken.AccId > 0 {
|
|
// 更新
|
|
err = UpOneTokenByFilter(ctx, primitive.M{
|
|
FN.MwAccToken.AccId: accId,
|
|
}, primitive.M{
|
|
FN.MwAccToken.Token: token,
|
|
FN.MwAccToken.UpdatedAt: time.Now(),
|
|
})
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
return true, nil
|
|
}
|
|
|
|
if err != nil || booToken.AccId == 0 {
|
|
if _, err := mwAccTokenColl.InsertOne(ctx,
|
|
primitive.M{
|
|
FN.MwAccToken.Id: mongos.Lid.MwAccToken.Get(),
|
|
FN.MwAccToken.AccId: accId,
|
|
FN.MwAccToken.Token: token,
|
|
FN.MwAccToken.CreatedAt: time.Now(),
|
|
}); err != nil {
|
|
return false, err
|
|
}
|
|
}
|
|
|
|
return true, nil
|
|
}
|
|
|
|
func CheckToken(ctx context.Context, token string) (ok bool, err error) {
|
|
var booToken MwAccToken
|
|
Terr := mwAccTokenColl.FindOne(ctx, &booToken, primitive.M{FN.MwAccToken.Token: token})
|
|
if Terr != nil || booToken.AccId == 0 {
|
|
err = errors.MakeWithMsg(errors.NoToken, "token 不存在或已过期")
|
|
return false, err
|
|
}
|
|
return true, nil
|
|
}
|
|
|
|
// // 检测Token
|
|
// func CheckToken(ctx context.Context, token string) (ok bool, err error) {
|
|
// var booToken WebToken
|
|
// Terr := tokenColl.FindOne(ctx, &booToken, primitive.M{"token": token})
|
|
// if Terr != nil || booToken.Id == 0 {
|
|
// err = errors.MakeWithMsg(errors.NoToken, "token 不存在或已过期")
|
|
// return
|
|
// }
|
|
// return true, nil
|
|
// }
|
|
|
|
// 删除token
|
|
func DeleteOneToken(ctx context.Context, filter bson.M) *srvdef.SrvErr {
|
|
if _, err := mwAccTokenColl.DeleteOne(ctx, filter); err != nil {
|
|
log.Warn("mwacc:DeleteOneToken db.DeleteOne failed", log.E(err), log.Any("filter", filter))
|
|
return srvdef.New(srvdef.ErrDbDeleteError, "", "")
|
|
}
|
|
return nil
|
|
}
|