Files
web_hgdjc_server/web/api/web_acc/acc.go
T
2026-11-07 10:44:09 +08:00

356 lines
8.8 KiB
Go

package web_acc
import (
"time"
"videoweb/pub/common"
"videoweb/pub/common/crypt"
"videoweb/pub/common/srvdef"
"videoweb/pub/google"
"videoweb/pub/models/mwacc"
"videoweb/web/service/srv_acc"
"videoweb/web/service/srv_mwacc"
"github.com/gin-gonic/gin"
"go.mongodb.org/mongo-driver/bson"
)
// @Tags 账号
// @Summary 账号-列表
// @Description 账号-列表
// @Accept json
// @Produce json
// @Param param body MwAccListReq true "参数列表"
// @Success 200 {object} MwAccListResp "成功"
// @Failure 400 {string} string "获取失败的返回结果"
// @Security ApiKeyAuth
// @Router /api/web/acc/list [GET]
func AccGetList(c *gin.Context) {
var req MwAccListReq
if err := c.ShouldBindQuery(&req); err != nil {
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
return
}
search := mwacc.MakeSearch(req.KeyWords, req.Status, req.Page)
sort := mwacc.MakeSort(req.PageNum, req.PageSize)
total, data, _ := mwacc.GetAccList(c, search, sort)
resp := MwAccListResp{
TotalCount: total,
AccRec: make([]*MwAccRec, 0),
}
for _, v := range data {
resp.AccRec = append(resp.AccRec, &MwAccRec{
Id: v.Id,
UserName: v.Username,
Acc: v.Acc,
Email: v.Email,
RoleId: v.RoleId,
RoleName: v.RoleName,
// Base32: v.Base32,
IsBase32: v.IsBase32,
IsEnb: v.IsEnb,
FeedBack: v.Feedback,
CreatedAt: v.CreatedAt.Unix(),
UpdatedAt: v.UpdatedAt.Unix(),
LimitIP: v.LimitIP,
})
}
common.ServerJSON(c, srvdef.Success, resp)
}
// @Tags 账号
// @Summary 账号-添加
// @Description 账号-添加
// @Accept json
// @Produce json
// @Param param body MwAccAddReq true "参数列表"
// @Success 200 {object} MwAccAddResp "成功"
// @Failure 400 {string} string "获取失败的返回结果"
// @Security ApiKeyAuth
// @Router /api/web/acc/add [POST]
func AccAdd(c *gin.Context) {
var req MwAccAddReq
if err := c.ShouldBindJSON(&req); err != nil {
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
return
}
accCount, err := mwacc.AccCountByFilter(c, bson.M{
mwacc.FN.MwAcc.Acc: req.Acc,
})
if accCount > 0 || err != nil {
common.ServerJSON(c, srvdef.ErrParamError, "用户已存在")
return
}
secret := google.NewGoogleAuth().GetSecret()
insertDoc := &mwacc.AccInsertDoc{
UserName: req.Name,
Pwd: crypt.StrToMd5(req.Pwd), //md5V(req.Pwd),
Acc: req.Acc,
Email: req.Email,
RoleId: req.RoleId,
Base32: secret,
IsBase32: false,
IsEnb: req.IsEnb,
LimitIP: req.LimitIP,
}
_, _, err = mwacc.AccAdd(c, insertDoc)
if err != nil {
common.ServerJSON(c, srvdef.Failure, MwAccAddResp{Result: false})
return
}
common.ServerJSON(c, srvdef.Success, MwAccAddResp{Result: true})
return
}
// @Tags 账号
// @Summary 账号-删除
// @Description 账号-删除
// @Accept json
// @Produce json
// @Param param body MwAccDelReq true "参数列表"
// @Success 200 {object} MwAccDelResp "成功"
// @Failure 400 {string} string "获取失败的返回结果"
// @Security ApiKeyAuth
// @Router /api/web/acc/del [POST]
func AccDel(c *gin.Context) {
var req MwAccDelReq
if err := c.ShouldBindJSON(&req); err != nil {
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
return
}
err := mwacc.DelAccByFilter(c, bson.M{
mwacc.FN.MwAcc.Id: req.Id,
})
// 删除对应账号的token
_ = mwacc.DeleteOneToken(c, bson.M{
mwacc.FN.MwAccToken.AccId: req.Id,
})
if err != nil {
common.ServerJSON(c, srvdef.Failure, MwAccDelResp{Result: true})
return
}
common.ServerJSON(c, srvdef.Success, MwAccDelResp{Result: true})
return
}
// @Tags 账号
// @Summary 账号-获取信息
// @Description 账号-获取信息
// @Accept json
// @Produce json
// @Param param body MwAccGetInfoReq true "参数列表"
// @Success 200 {object} MwAccGetInfoResp "成功"
// @Failure 400 {string} string "获取失败的返回结果"
// @Security ApiKeyAuth
// @Router /api/web/acc/getinfo [GET]
func AccGetInfo(c *gin.Context) {
var req MwAccGetInfoReq
if err := c.ShouldBindQuery(&req); err != nil {
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
return
}
rest, err := mwacc.FindOneAccByFilter(c, bson.M{
mwacc.FN.MwAcc.Id: req.Id,
})
if err != nil {
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
return
}
resq := MwAccGetInfoResp{
Id: rest.Id,
UserName: rest.UserName,
Acc: rest.Acc,
Pwd: rest.Pwd,
Email: rest.Email,
RoleId: rest.RoleId,
IsEnb: rest.IsEnb,
LimitIP: rest.LimitIP,
}
common.ServerJSON(c, srvdef.Success, resq)
return
}
// @Tags 账号
// @Summary 账号-更新
// @Description 账号-更新
// @Accept json
// @Produce json
// @Param param body MwAccUpReq true "参数列表"
// @Success 200 {object} MwAccUpResp "成功"
// @Failure 400 {string} string "获取失败的返回结果"
// @Security ApiKeyAuth
// @Router /api/web/acc/up [POST]
func AccUp(c *gin.Context) {
var req MwAccUpReq
if err := c.ShouldBindJSON(&req); err != nil {
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
return
}
_, err := srv_mwacc.AccUp(c, &srv_mwacc.AccUpDoc{
Id: req.Id,
UserName: req.UserName,
Acc: req.Acc,
Email: req.Email,
RoleId: req.RoleId,
IsEnb: req.IsEnb,
LimitIP: req.LimitIP,
})
if err != nil {
common.ServerJSON(c, srvdef.Failure, MwAccUpResp{Result: false})
return
}
common.ServerJSON(c, srvdef.Success, MwAccUpResp{Result: true})
return
}
// @Tags 账号
// @Summary 账号-获取状态
// @Description 账号-获取状态
// @Accept json
// @Produce json
// @Param param body MwAccGetStatusReq true "参数列表"
// @Success 200 {object} MwAccGetStatusResp "成功"
// @Failure 400 {string} string "获取失败的返回结果"
// @Security ApiKeyAuth
// @Router /api/web/acc/getstatus [GET]
func AccGetStatus(c *gin.Context) {
var req MwAccGetStatusReq
if err := c.ShouldBindQuery(&req); err != nil {
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
return
}
rest, err := mwacc.FindOneAccByFilter(c, bson.M{
mwacc.FN.MwAcc.Id: req.Id,
})
if err != nil {
common.ServerJSON(c, srvdef.Failure, err)
return
}
resp := MwAccGetStatusResp{
Id: rest.Id,
UserName: rest.UserName,
IsEnb: rest.IsEnb,
FeedBack: rest.Feedback,
}
common.ServerJSON(c, srvdef.Success, resp)
return
}
// @Tags 账号
// @Summary 账号-保存状态
// @Description 账号-保存状态
// @Accept json
// @Produce json
// @Param param body MwAccSaveStatusReq true "参数列表"
// @Success 200 {object} MwAccSaveStatusResp "成功"
// @Failure 400 {string} string "获取失败的返回结果"
// @Security ApiKeyAuth
// @Router /api/web/acc/savestatus [POST]
func AccSaveStatus(c *gin.Context) {
var req MwAccSaveStatusReq
if err := c.ShouldBindJSON(&req); err != nil {
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
return
}
err := mwacc.UpOneAccByFilter(c, bson.M{
mwacc.FN.MwAcc.Id: req.Id,
}, bson.M{
mwacc.FN.MwAcc.UserName: req.UserName,
mwacc.FN.MwAcc.IsEnb: req.IsEnb,
mwacc.FN.MwAcc.Feedback: req.FeedBack,
mwacc.FN.MwAcc.UpdatedAt: time.Now(),
})
if err != nil {
common.ServerJSON(c, srvdef.Failure, "")
return
}
// 封禁时,删除token
if !req.IsEnb {
mwacc.DeleteOneToken(c, bson.M{mwacc.FN.MwAccToken.AccId: req.Id})
}
common.ServerJSON(c, srvdef.Success, MwAccSaveStatusResp{Result: true})
return
}
// @Tags 账号
// @Summary 账号-获取操作记录
// @Description 账号-获取操作记录
// @Accept json
// @Produce json
// @Param param body AccOpLogReq true "参数列表"
// @Success 200 {object} AccOpLogResp "成功"
// @Failure 400 {string} string "获取失败的返回结果"
// @Security ApiKeyAuth
// @Router /api/web/acc/ops [POST]
func GetAccOpRecords(ctx *gin.Context) {
var req AccOpLogReq
if err := ctx.ShouldBindJSON(&req); err != nil {
common.ServerJSON(ctx, srvdef.ErrParamError, err.Error())
return
}
total, data, err := srv_acc.GetOpLogs(ctx, &req.OpLogSearch)
if err != nil {
common.ServerJSON(ctx, srvdef.Failure, err.Error())
return
}
resp := &AccOpLogResp{total, data}
common.ServerJSON(ctx, srvdef.Success, resp)
}
// @Tags 账号
// @Summary 账号-更新密码
// @Description 账号-更新密码
// @Accept json
// @Produce json
// @Param param body MwAccUpPwdReq true "参数列表"
// @Success 200 {object} MwAccUpPwdReq "成功"
// @Failure 400 {string} string "获取失败的返回结果"
// @Security ApiKeyAuth
// @Router /api/web/acc/uppwd [POST]
func AccUpdatePwd(c *gin.Context) {
var req MwAccUpPwdReq
if err := c.ShouldBindJSON(&req); err != nil {
common.ServerJSON(c, srvdef.ErrParamError, err.Error())
return
}
_, err := srv_mwacc.AccUpPwd(c, &srv_mwacc.AccUpPwdDoc{
Id: req.Id,
Pwd: req.Pwd,
})
if err != nil {
common.ServerJSON(c, srvdef.Failure, MwAccUpPwdResp{Result: false})
return
}
common.ServerJSON(c, srvdef.Success, MwAccUpPwdResp{Result: true})
return
}