init: 初始化 web_hgdjb_server 项目

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-11-07 10:47:32 +08:00
co-authored by Claude Opus 4.7
commit f13d33af4d
707 changed files with 147705 additions and 0 deletions
+169
View File
@@ -0,0 +1,169 @@
package mwacc
import (
"context"
"fmt"
"time"
"videoweb/pub/common/errors"
sErr "videoweb/pub/common/errors"
"videoweb/pub/common/log"
"videoweb/pub/common/srvdef"
"videoweb/pub/mongos"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo/options"
)
// 过滤查询数量
func AccCountByFilter(ctx context.Context, filters primitive.M, opts ...*options.CountOptions) (c int64, err error) {
c, err = mwAccColl.Count(ctx, filters)
return
}
// 过滤查询账号
func FindOneAccByFilter(ctx context.Context, filters primitive.M, opts ...*options.FindOneOptions) (*MwAcc, error) {
var res MwAcc
err := mwAccColl.FindOne(ctx, &res, filters, opts...)
if err != nil {
log.Error("mwacc FindOneAccByFilter err", log.Any("filters", filters), log.E(err))
}
return &res, err
}
// 过滤更新
func UpOneAccByFilter(ctx context.Context, query primitive.M, update primitive.M) (err error) {
_, err = mwAccColl.UpdateOne(ctx, query, primitive.M{"$set": update})
return
}
// 过滤删除角色
func DelAccByFilter(ctx context.Context, filters primitive.M) (err error) {
_, err = mwAccColl.DeleteOne(ctx, filters)
if err != nil {
log.Error("mwacc DelAccByFilter err", log.Any("filters", filters), log.E(err))
}
return
}
// // 更新最后登录时间
// func UpAccLastTimeById(ctx context.Context, id int64) (*mongo.UpdateResult, error) {
// ret, err := mwAccColl.UpdateOne(ctx, primitive.M{FN.MwAcc.Id: id}, primitive.M{"$set": primitive.M{FN.MwAcc.LastTime: time.Now()}})
// if err != nil {
// log.Error("mvacc UpLastTimeById err", log.Any(FN.MwAcc.Id, id), log.E(err))
// }
// return ret, err
// }
// 绑定二维码
func BindAccQurl(ctx context.Context, acc string) (ok bool, err error) {
res, dataErr := FindOneAccByFilter(ctx, primitive.M{
FN.MwAcc.Acc: acc,
})
if dataErr != nil || res.Id == 0 {
err = sErr.MakeWithMsg(sErr.Logo, "用户不存在!")
return false, err
}
if res.IsEnb == false {
err = sErr.MakeWithMsg(sErr.UserPermission, "用户被禁用!")
return false, err
}
err = UpOneAccByFilter(ctx, primitive.M{
FN.MwAcc.Acc: acc,
}, primitive.M{
FN.MwAcc.IsBase32: true,
})
if err != nil {
return false, err
}
return true, err
}
// 插入角色
func AccAdd(ctx context.Context, insertReq *AccInsertDoc) (id int64, ok bool, err error) {
insertReq.Id = int64(mongos.Lid.MwAcc.Get())
insertReq.CreatedAt = time.Now()
_, err = mwAccColl.InsertOne(ctx, insertReq)
if err != nil {
log.ZapLog.Error(fmt.Sprintf("InsertRole mongo error %v", err))
err = errors.MakeWithErr(errors.DBInsert, err)
return 0, false, err
}
return insertReq.Id, true, nil
}
// 获取角色列表
func GetAccList(ctx context.Context, search primitive.M, sort []primitive.M) (
total int64, data []*AccGetListRec, err error) {
var countPipe []primitive.M
countPipe = append(countPipe, search, bson.M{"$count": "total"})
var aggCount AggStatCount
err = mwAccColl.ObjectAggregate(ctx, &aggCount, countPipe)
if err != nil {
return 0, nil, err
}
total = aggCount.Total
var pip []primitive.M
pip = append(pip, search)
pip = append(pip, sort...)
pip = append(pip,
primitive.M{
"$lookup": primitive.M{
"localField": FN.MwAcc.RoleId,
"from": TN.MwRole,
"foreignField": FN.MwRole.Id,
"as": "roles",
},
},
primitive.M{"$unwind": primitive.M{
"path": "$roles",
"preserveNullAndEmptyArrays": true,
},
},
primitive.M{
"$project": primitive.M{
FN.MwAcc.Id: 1,
FN.MwAcc.UserName: 1,
FN.MwAcc.Acc: 1,
FN.MwAcc.Email: 1,
FN.MwAcc.RoleId: 1,
FN.MwAcc.RoleName: "$roles.name",
FN.MwAcc.Base32: 1,
FN.MwAcc.IsBase32: 1,
// mwacc.FN.MwAcc.LastTime: 1,
FN.MwAcc.IsEnb: 1,
FN.MwAcc.Feedback: 1,
FN.MwAcc.CreatedAt: 1,
FN.MwAcc.UpdatedAt: 1,
FN.MwAcc.LimitIP: 1,
},
})
err = mwAccColl.Aggregate(ctx, &data, pip)
if err != nil {
err = errors.MakeWithErr(errors.DBQuery, err)
return
}
return
}
// 过滤查询账号
func FindManyAccByFilter(ctx context.Context, filters primitive.M, opts ...*options.FindOptions) ([]*MwAcc, *srvdef.SrvErr) {
var res []*MwAcc
err := mwAccColl.Find(ctx, &res, filters, opts...)
if err != nil {
log.Error("mwacc FindOneAccByFilter err", log.Any("filters", filters), log.E(err))
return res, srvdef.New(srvdef.ErrDbQueryError, "", "")
}
log.Info("success")
return res, nil
}
+13
View File
@@ -0,0 +1,13 @@
package mwacc
import "videoweb/pub/mongos"
var (
mwAccColl *mongos.Collection = nil
mwRoleColl *mongos.Collection = nil
mwAccTokenColl *mongos.Collection = nil
)
type AggStatCount struct {
Total int64 `bson:"total"`
}
+66
View File
@@ -0,0 +1,66 @@
package mwacc
import (
"context"
"fmt"
"videoweb/pub/mongos"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
)
// Init 初始化数据
func Init(ctx context.Context) {
mwAccColl = mongos.Shop.Coll(TN.MwAcc)
mwRoleColl = mongos.Shop.Coll(TN.MwRole)
mwAccTokenColl = mongos.Shop.Coll(TN.MwAccToken)
initIndex(ctx)
return
}
// initIndex 初始化索引
func initIndex(ctx context.Context) {
initAccIndex(ctx)
initRoleIndex(ctx)
initAccTokenIndex(ctx)
}
func initAccIndex(ctx context.Context) {
indexes := []mongo.IndexModel{
{
Keys: bson.D{
{FN.MwAcc.Id, 1},
},
},
}
if _, err := mwAccColl.CreateIndex(ctx, indexes); err != nil {
panic(fmt.Sprintf("(mwacc:initAccIndex) Create mwacc Index failed! err:%+v:", err))
}
}
func initRoleIndex(ctx context.Context) {
indexes := []mongo.IndexModel{
{
Keys: bson.D{
{FN.MwRole.Id, 1},
},
// Options: options.Index().SetUnique(true),
},
}
if _, err := mwRoleColl.CreateIndex(ctx, indexes); err != nil {
panic(fmt.Sprintf("(mwacc:initRoleIndex) Create mwacc Index failed! err:%+v:", err))
}
}
func initAccTokenIndex(ctx context.Context) {
indexes := []mongo.IndexModel{
{
Keys: bson.D{
{FN.MwAccToken.Id, 1},
},
// Options: options.Index().SetUnique(true),
},
}
if _, err := mwAccTokenColl.CreateIndex(ctx, indexes); err != nil {
panic(fmt.Sprintf("(mwacc:initAccTokenIndex) Create mwacc Index failed! err:%+v:", err))
}
}
+61
View File
@@ -0,0 +1,61 @@
package mwacc
import (
"strconv"
"videoweb/pub/pubdef"
"go.mongodb.org/mongo-driver/bson"
)
func MakeSearch(keyWords string, status int64, page pubdef.Page) (searchs bson.M) {
var search []bson.M
if len(keyWords) > 0 {
userId, _ := strconv.ParseInt(keyWords, 10, 64)
search = append(search, bson.M{FN.MwAcc.Id: userId})
search = append(search, bson.M{FN.MwAcc.UserName: bson.M{"$regex": keyWords}})
search = append(search, bson.M{FN.MwAcc.Acc: bson.M{"$regex": keyWords}})
search = append(search, bson.M{FN.MwAcc.Email: bson.M{"$regex": keyWords}})
}
match := bson.M{}
if len(search) > 0 {
match["$or"] = search
}
if status > 0 {
if status == 1 {
match[FN.MwAcc.IsEnb] = true
} else {
match[FN.MwAcc.IsEnb] = false
}
}
searchs = bson.M{}
searchs["$match"] = match
return
}
func MakeSort(pageNum int64, pageSize int64) (sort []bson.M) {
sort = append(sort, bson.M{
"$sort": bson.M{
FN.MwAcc.CreatedAt: -1,
},
})
if pageNum <= 0 {
pageNum = 1
}
if pageSize <= 0 {
pageSize = 10
}
skip := (pageNum - 1) * pageSize
sort = append(sort, bson.M{
"$skip": skip,
})
sort = append(sort, bson.M{
"$limit": pageSize,
})
return
}
+130
View File
@@ -0,0 +1,130 @@
// Code generated by gen_bson_tag. DO NOT EDIT.
package mwacc
import (
"context"
"videoweb/pub/common/log"
"videoweb/pub/common/srvdef"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
// CreateOneMwAcc 创建一个MwAcc
func CreateOneMwAcc(ctx context.Context, data *MwAcc) *srvdef.SrvErr {
_, err := mwAccColl.InsertOne(ctx, data)
if err != nil {
log.Error("mwacc:CreateOneMwAcc db.InsertOne failed",
log.Any("doc", data),
log.E(err))
return srvdef.New(srvdef.ErrDbInsertError, "", "")
}
return nil
}
// FindOneMwAcc 查找一个MwAcc
func FindOneMwAcc(ctx context.Context, filter bson.M) (
*MwAcc, *srvdef.SrvErr) {
var data *MwAcc
if err := mwAccColl.FindOneEx(ctx, &data, filter); err != nil {
if err != mongo.ErrNoDocuments {
log.Warn("mwacc:FindOneMwAcc mwAccColl.FindOneEx failed",
log.E(err), log.Any("filter", filter))
return nil, srvdef.New(srvdef.ErrDbQueryError, "", "")
}
return nil, srvdef.New(srvdef.ErrNoData, "", "")
}
return data, nil
}
// DelOneOneMwAcc 删除一个MwAcc
func DelOneOneMwAcc(ctx context.Context, filter bson.M) (
int64, *srvdef.SrvErr) {
count, err := mwAccColl.DeleteOne(ctx, filter)
if err != nil {
log.Warn("mwacc:DelOneOneMwAcc mwAccColl.DeleteOne failed",
log.E(err), log.Any("filter", filter))
return 0, srvdef.New(srvdef.ErrDbDeleteError, "", "")
}
return count, nil
}
// UpdateOneMwAcc 更新一个MwAcc
func UpdateOneMwAcc(ctx context.Context, filter bson.M, update bson.M) *srvdef.SrvErr {
result, err := mwAccColl.UpdateOne(ctx, filter, update)
if err != nil {
log.Warn("mwacc:UpdateOneMwAcc mwAccColl.UpdateOne failed",
log.E(err), log.Any("filter", filter))
return srvdef.New(srvdef.ErrDbUpdateError, "", "")
}
if result.MatchedCount != 1 {
return srvdef.New(srvdef.ErrNoData, "", "")
}
return nil
}
// CountMwAccs 统计MwAcc数量
func CountMwAccs(ctx context.Context, filter bson.M) (
int64, *srvdef.SrvErr) {
count, err := mwAccColl.Count(ctx, filter)
if err != nil {
log.Warn("mwacc:CountMwAccs mwAccColl.Count failed",
log.E(err), log.Any("filter", filter))
return 0, srvdef.New(srvdef.ErrDbQueryError, "", "")
}
return count, nil
}
// FindManyMwAccs 查找一批MwAcc
func FindManyMwAccs(ctx context.Context, filter bson.M,
opts ...*options.FindOptions) (MwAccList, *srvdef.SrvErr) {
data := make(MwAccList, 0)
if err := mwAccColl.Find(ctx, &data, filter, opts...); err != nil {
log.Warn("mwacc:FindManyMwAccs mwAccColl.Find failed", log.E(err), log.Any("filter", filter))
return nil, srvdef.New(srvdef.ErrDbQueryError, "", "")
}
return data, nil
}
// FindManyMwAccsWithBind 用自己定义结构查找一批MwAcc数据
func FindManyMwAccsWithBind(ctx context.Context, bind interface{}, filter bson.M,
opts ...*options.FindOptions) *srvdef.SrvErr {
if err := mwAccColl.Find(ctx, bind, filter, opts...); err != nil {
log.Warn("mwacc:FindManyMwAccsWithBind mwAccColl.Find failed", log.E(err), log.Any("filter", filter))
return srvdef.New(srvdef.ErrDbQueryError, "", "")
}
return nil
}
// AggregateMwAccs 聚合查找一批MwAcc
func AggregateMwAccs(ctx context.Context,
bind interface{}, pipeline []bson.M) *srvdef.SrvErr {
if err := mwAccColl.Aggregate(ctx, bind, pipeline); err != nil {
log.Warn("mwacc:AggregateMwAccs mwAccColl.Aggregate failed",
log.E(err), log.Any("pipeline", pipeline))
return srvdef.New(srvdef.ErrDbQueryError, "", "")
}
return nil
}
// ObjectAggregateMwAccs 聚合查找一批MwAcc数据
func ObjectAggregateMwAccs(ctx context.Context,
bind interface{}, pipeline []bson.M) *srvdef.SrvErr {
if err := mwAccColl.ObjectAggregate(ctx, bind, pipeline); err != nil {
log.Warn("mwacc:AggregateMwAccs mwAccColl.Aggregate failed",
log.E(err), log.Any("pipeline", pipeline))
return srvdef.New(srvdef.ErrDbQueryError, "", "")
}
return nil
}
// ObjectAggregateMwAccs 批量写入或者更新MwAcc数据
func BulkWriteMwAccs(ctx context.Context,
docs []mongo.WriteModel, opts ...*options.BulkWriteOptions) *srvdef.SrvErr {
_, err := mwAccColl.BulkWrite(ctx, docs, opts...)
if err != nil {
return srvdef.New(srvdef.ErrDbUpdateError, "", "")
}
return nil
}
+158
View File
@@ -0,0 +1,158 @@
package mwacc
import (
"context"
"fmt"
"time"
"videoweb/pub/common/errors"
"videoweb/pub/common/log"
"videoweb/pub/common/pageopt"
"videoweb/pub/common/srvdef"
"videoweb/pub/mongos"
"go.mongodb.org/mongo-driver/bson/primitive"
"go.mongodb.org/mongo-driver/mongo/options"
)
// 角色聚集处理
func RoleAggregate(ctx context.Context, filters []primitive.M, opts ...*options.AggregateOptions) (roles []*MwRole, err error) {
roles = make([]*MwRole, 0)
err = mwRoleColl.Aggregate(ctx, &roles, filters)
return
}
// 过滤查询数量
func RoleCountByFilter(ctx context.Context, filters primitive.M, opts ...*options.CountOptions) (c int64, err error) {
c, err = mwRoleColl.Count(ctx, filters)
return
}
// 过滤查询角色
func FindOneRoleByFilter(ctx context.Context, filters primitive.M, opts ...*options.FindOneOptions) (*MwRole, *srvdef.SrvErr) {
var res MwRole
err := mwRoleColl.FindOne(ctx, &res, filters, opts...)
if err != nil {
log.Error("mwacc FindOneRoleByFilter err", log.Any("filters", filters), log.E(err))
return &res, srvdef.New(srvdef.ErrDbQueryError, "", "")
}
return &res, nil
}
// 过滤更新
func UpOneRoleByFilter(ctx context.Context, query primitive.M, update primitive.M) *srvdef.SrvErr {
_, err := mwRoleColl.UpdateOne(ctx, query, update)
if err != nil {
log.Error("mwacc UpOneRoleByFilter: db.UpdateOne err", log.Any("update", update), log.E(err))
return srvdef.New(srvdef.ErrDbUpdateError, "", "")
}
return nil
}
// 过滤删除角色
func DelRoleByFilter(ctx context.Context, filters primitive.M) *srvdef.SrvErr {
_, err := mwRoleColl.DeleteOne(ctx, filters)
if err != nil {
log.Error("mwacc DelRoleByFilter err", log.Any("filters", filters), log.E(err))
return srvdef.New(srvdef.ErrDbDeleteError, "", "")
}
return nil
}
// 更新角色权限
func UpRoleAuth(ctx context.Context, id int64, keys []string, dataRouter []*Router) (ok bool, err error) {
_, err = mwRoleColl.UpdateOne(ctx, primitive.M{
FN.MwRole.Id: id,
}, primitive.M{
"$set": primitive.M{
FN.MwRole.ApiMenus: keys,
FN.MwRole.Router: dataRouter,
},
})
if err != nil {
log.Error("mvacc UpRoleAuth err", log.Any(FN.MwRole.Id, id), log.E(err))
return false, err
}
return true, nil
}
// 获取角色列表
func GetRoleList(ctx context.Context, skip, limit int64, matchs ...pageopt.Matcher) (data []*RoleGetListRec, err error) {
data = make([]*RoleGetListRec, 0)
err = mwRoleColl.Aggregate(ctx, &data,
[]primitive.M{
{"$match": pageopt.MergeM(matchs)},
{"$sort": primitive.M{FN.MwRole.Id: -1}},
{"$skip": skip},
{"$limit": limit},
{"$lookup": primitive.M{
"localField": FN.MwRole.Id,
"from": TN.MwAcc,
"foreignField": FN.MwAcc.RoleId,
"as": "onlyRole",
}},
{"$project": primitive.M{
FN.MwRole.Id: 1,
FN.MwRole.Name: 1,
FN.MwRole.Desc: 1,
FN.MwRole.IsEnb: 1,
FN.MwRole.ApiMenus: 1,
FN.MwRole.CreatedAt: 1,
FN.MwRole.UpdatedAt: 1,
"account": primitive.M{
"$size": "$onlyRole",
},
}},
})
if err != nil && err.Error() != errors.NotFind {
log.ZapLog.Error(fmt.Sprintf("mwacc GetRoleList error %v", err))
err = errors.MakeWithErr(errors.DBQuery, err)
return
}
return
}
// 下拉列表
func RoleDrop(ctx context.Context) (data []*RoleDropDoc, err error) {
query := primitive.M{FN.MwRole.IsEnb: true}
opt := options.Find().SetProjection(primitive.M{
FN.MwRole.Id: 1,
FN.MwRole.Name: 1,
})
err = mwRoleColl.Find(ctx, &data, query, opt)
if err != nil {
err = errors.MakeWithErr(errors.DBQuery, err)
return
}
return
}
// 插入角色
func RoleAdd(ctx context.Context, name string, desc string, isEnb bool) (ok bool, err error) {
c, err := mwRoleColl.Count(ctx, primitive.M{FN.MwRole.Name: name})
if c > 0 {
err = errors.MakeWithMsg(errors.DBInsert, "角色名称")
return false, err
}
_, err = mwRoleColl.InsertOne(ctx, primitive.M{
FN.MwRole.Id: mongos.Lid.MwRole.Get(),
FN.MwRole.Name: name,
FN.MwRole.Desc: desc,
FN.MwRole.IsEnb: isEnb,
FN.MwRole.CreatedAt: time.Now(),
})
if err != nil {
log.ZapLog.Error(fmt.Sprintf("InsertRole mongo error %v", err))
err = errors.MakeWithErr(errors.DBInsert, err)
return false, err
}
return true, nil
}
+88
View File
@@ -0,0 +1,88 @@
package mwacc
type TagMwRole struct {
ApiMenus string
CreatedAt string
Desc string
Id string
IsEnb string
Name string
Router string
UpdatedAt string
}
type TagMwAcc struct {
Acc string
Base32 string
Code string
CreatedAt string
Email string
Feedback string
Id string
IsBase32 string
IsEnb string
LastTime string
LimitIP string
Pwd string
Qurl string
RoleId string
RoleName string
Token string
UpdatedAt string
UserName string
}
type TagMwAccToken struct {
AccId string
CreatedAt string
Id string
Token string
UpdatedAt string
}
var FN struct {
MwRole TagMwRole
MwAcc TagMwAcc
MwAccToken TagMwAccToken
}
var TN struct {
MwRole string
MwAcc string
MwAccToken string
}
func init() {
FN.MwRole.ApiMenus = "apiMenus"
FN.MwRole.CreatedAt = "createdAt"
FN.MwRole.Desc = "desc"
FN.MwRole.Id = "_id"
FN.MwRole.IsEnb = "isEnb"
FN.MwRole.Name = "name"
FN.MwRole.Router = "router"
FN.MwRole.UpdatedAt = "updatedAt"
FN.MwAcc.Acc = "acc"
FN.MwAcc.Base32 = "base32"
FN.MwAcc.Code = "code"
FN.MwAcc.CreatedAt = "createdAt"
FN.MwAcc.Email = "email"
FN.MwAcc.Feedback = "feedback"
FN.MwAcc.Id = "_id"
FN.MwAcc.IsBase32 = "isBase32"
FN.MwAcc.IsEnb = "isEnb"
FN.MwAcc.LastTime = "lastTime"
FN.MwAcc.LimitIP = "limitIP"
FN.MwAcc.Pwd = "pwd"
FN.MwAcc.Qurl = "qurl"
FN.MwAcc.RoleId = "roleId"
FN.MwAcc.RoleName = "roleName"
FN.MwAcc.Token = "token"
FN.MwAcc.UpdatedAt = "updatedAt"
FN.MwAcc.UserName = "userName"
FN.MwAccToken.AccId = "accId"
FN.MwAccToken.CreatedAt = "createdAt"
FN.MwAccToken.Id = "_id"
FN.MwAccToken.Token = "token"
FN.MwAccToken.UpdatedAt = "updatedAt"
TN.MwRole = "mw_role"
TN.MwAcc = "mw_acc"
TN.MwAccToken = "mw_acc_token"
}
+84
View File
@@ -0,0 +1,84 @@
package mwacc
import (
"context"
"time"
"videoweb/pub/common/errors"
"videoweb/pub/common/log"
"videoweb/pub/common/srvdef"
"videoweb/pub/mongos"
"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
}
+78
View File
@@ -0,0 +1,78 @@
package mwacc
import (
"time"
)
type Meta struct {
Title string `bson:"title"`
Icon string `bson:"icon"`
NoCache bool `bson:"noCache"`
}
type Apiurl struct {
Url []string `bson:"url"`
Desc string `bson:"desc"`
Status bool `bson:"status"`
Method []string `bson:"method"`
}
// 编辑返回去的数据
type Router struct {
Path string `bson:"path"`
Component string `bson:"component"`
Redirect string `bson:"redirect"`
Name string `bson:"name"`
IsShow bool `bson:"isShow"`
Hidden bool `bson:"hidden"`
Meta Meta `bson:"meta"`
Children []Router `bson:"children"`
ApiUrl []Apiurl `bson:"apiUrl"`
}
// 角色
// @table:mw_role
type MwRole struct {
Id int64 `bson:"_id"`
Name string `bson:"name"` // 角色名称
Desc string `bson:"desc"` // 描述
IsEnb bool `bson:"isEnb"` // 是否启用 false:禁用 true:启用
ApiMenus []string `bson:"apiMenus"` // 已有权限的api
Router []Router `bson:"router"`
CreatedAt time.Time `bson:"createdAt"` // 创建时间
UpdatedAt time.Time `bson:"updatedAt"` // 更新时间
}
// 账号
// @table:mw_acc
type MwAcc struct {
Id int64 `bson:"_id"` // id
UserName string `bson:"userName"` // 用户名
Acc string `bson:"acc"` // 账号
Pwd string `bson:"pwd"` // 密码
Email string `bson:"email"` // 邮箱
RoleId int64 `bson:"roleId"` // 角色Id
RoleName string `bson:"roleName"` // 角色名
Base32 string `bson:"base32"` // 二步签名
IsBase32 bool `bson:"isBase32"` // 是否已签名
Code string `bson:"code"` // 验证码
Qurl []byte `bson:"qurl"` // 二维码链接
Token string `bson:"token"` // token
LastTime time.Time `bson:"lastTime"` // 登录时间
IsEnb bool `bson:"isEnb"` // 使能
Feedback string `bson:"feedback"` // 禁用原因
CreatedAt time.Time `bson:"createdAt"` // 创建时间
UpdatedAt time.Time `bson:"updatedAt"` // 更新时间
LimitIP []string `bson:"limitIP"` // 限制IP
}
type MwAccList []*MwAcc
// 账号Token
// @table:mw_acc_token
type MwAccToken struct {
Id int64 `bson:"_id"` // id
AccId int64 `bson:"accId"` // 账号id
Token string `bson:"token"` // token
CreatedAt time.Time `bson:"createdAt"` // 创建时间
UpdatedAt time.Time `bson:"updatedAt"` // 更新时间
}
+52
View File
@@ -0,0 +1,52 @@
package mwacc
import (
"time"
)
type AccGetListRec struct {
Id int64 `bson:"_id"` // id
Username string `bson:"username"` // 用户名
Acc string `bson:"acc"` // 用户名
Email string `bson:"email"` // 邮箱
RoleId int64 `bson:"roleId"` // 角色Id
RoleName string `bson:"roleName"` // 角色名
// Base32 string `bson:"base32"` // 二步签名
IsBase32 bool `bson:"isBase32"` // 是否已签名
IsEnb bool `bson:"isEnb"` // 使能
Feedback string `bson:"feedback"` // 禁用原因
CreatedAt time.Time `bson:"createdAt"` // 创建时间
UpdatedAt time.Time `bson:"updatedAt"` // 更新时间
LimitIP []string `bson:"limitIP"` // 允许访问的IP
}
type RoleGetListRec struct {
Id int64 `bson:"_id"` // 角色Id
Name string `bson:"name"` // 角色名称
Desc string `bson:"desc"` // 描述
IsEnb bool `bson:"isEnb"` // 是否启用 false:禁用 true:启用
ApiMenus []string `bson:"apiMenus"` // 已有权限的api
CreatedAt time.Time `bson:"createdAt"` // 创建时间
UpdatedAt time.Time `bson:"updatedAt"` // 更新时间
AccCount int64 `bson:"accCount"` // 账户数量
}
type AccInsertDoc struct {
Id int64 `bson:"_id"` // id
UserName string `bson:"userName"` // 用户名
Pwd string `bson:"pwd"` // 密码
Acc string `bson:"acc"` // 用户名
Email string `bson:"email"` // 邮箱
RoleId int64 `bson:"roleId"` // 角色Id
Base32 string `bson:"base32"` // 二步签名
IsBase32 bool `bson:"isBase32"` // 是否已签名
IsEnb bool `bson:"isEnb"` // 使能
LastTime time.Time `bson:"lastTime"` // 登录时间
CreatedAt time.Time `bson:"createdAt"` // 创建时间
LimitIP []string `bson:"limitIP"` // 允许访问的IP
}
type RoleDropDoc struct {
Id int64 `bson:"_id"` // 角色Id
Name string `bson:"name"` // 角色名称
}