131 lines
3.1 KiB
Go
131 lines
3.1 KiB
Go
package impl
|
|
|
|
import (
|
|
"context"
|
|
|
|
"ai_scheduler/internal/data/model"
|
|
"ai_scheduler/internal/entitys"
|
|
"ai_scheduler/tmpl/dataTemp"
|
|
"ai_scheduler/utils"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type AdviceAdminImpl struct {
|
|
dataTemp.DataTemp
|
|
}
|
|
|
|
func NewAdviceAdminImpl(db *utils.Db) *AdviceAdminImpl {
|
|
return &AdviceAdminImpl{
|
|
DataTemp: *dataTemp.NewDataTemp(db, new(model.AiAdviceAdmin)),
|
|
}
|
|
}
|
|
|
|
func (a *AdviceAdminImpl) PrimaryKey() string {
|
|
return "admin_id"
|
|
}
|
|
|
|
// GetByAccount 按账号查询(登录用)
|
|
func (a *AdviceAdminImpl) GetByAccount(ctx context.Context, account string) (*model.AiAdviceAdmin, error) {
|
|
var admin model.AiAdviceAdmin
|
|
err := a.Db.WithContext(ctx).
|
|
Model(&model.AiAdviceAdmin{}).
|
|
Where("account = ? and type=1", account).
|
|
First(&admin).Error
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &admin, nil
|
|
}
|
|
|
|
// UpdateLastLogin 更新最后登录时间
|
|
func (a *AdviceAdminImpl) UpdateLastLogin(ctx context.Context, adminID int32) error {
|
|
return a.Db.WithContext(ctx).
|
|
Model(&model.AiAdviceAdmin{}).
|
|
Where("admin_id = ?", adminID).
|
|
Update("last_login_at", gorm.Expr("NOW()")).Error
|
|
}
|
|
|
|
// Add 新增管理员
|
|
func (a *AdviceAdminImpl) Add(ctx context.Context, req *entitys.AdvicerAdminAddReq) (int32, error) {
|
|
admin := &model.AiAdviceAdmin{
|
|
Type: req.Type,
|
|
Name: req.Name,
|
|
Account: req.Account,
|
|
Pwd: req.Pwd,
|
|
Status: req.Status,
|
|
}
|
|
if err := a.Db.WithContext(ctx).Create(admin).Error; err != nil {
|
|
return 0, err
|
|
}
|
|
return admin.AdminID, nil
|
|
}
|
|
|
|
// Update 更新管理员
|
|
func (a *AdviceAdminImpl) Update(ctx context.Context, req *entitys.AdvicerAdminUpdateReq) error {
|
|
updates := map[string]interface{}{
|
|
"type": req.Type,
|
|
"name": req.Name,
|
|
"account": req.Account,
|
|
"status": req.Status,
|
|
}
|
|
if req.Pwd != "" {
|
|
updates["pwd"] = req.Pwd
|
|
}
|
|
return a.Db.WithContext(ctx).
|
|
Model(&model.AiAdviceAdmin{}).
|
|
Where("admin_id = ?", req.AdminID).
|
|
Updates(updates).Error
|
|
}
|
|
|
|
// List 查询管理员列表
|
|
func (a *AdviceAdminImpl) List(ctx context.Context, req *entitys.AdvicerAdminListReq) (interface{}, error) {
|
|
var list []model.AiAdviceAdmin
|
|
query := a.Db.WithContext(ctx).Model(&model.AiAdviceAdmin{})
|
|
|
|
if req.AdminID > 0 {
|
|
query = query.Where("admin_id = ?", req.AdminID)
|
|
}
|
|
if req.Name != "" {
|
|
query = query.Where("name LIKE ?", "%"+req.Name+"%")
|
|
}
|
|
if req.Account != "" {
|
|
query = query.Where("account = ?", req.Account)
|
|
}
|
|
if req.Type > 0 {
|
|
query = query.Where("type = ?", req.Type)
|
|
}
|
|
if req.Status > 0 {
|
|
query = query.Where("status = ?", req.Status)
|
|
}
|
|
|
|
page, pageSize := req.Page, req.PageSize
|
|
if page <= 0 {
|
|
page = 1
|
|
}
|
|
if pageSize <= 0 {
|
|
pageSize = 10
|
|
}
|
|
|
|
var total int64
|
|
if err := query.Count(&total).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
if err := query.Offset((page - 1) * pageSize).Limit(pageSize).
|
|
Order("admin_id desc").Find(&list).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return map[string]interface{}{
|
|
"list": list,
|
|
"total": total,
|
|
}, nil
|
|
}
|
|
|
|
// Del 删除管理员
|
|
func (a *AdviceAdminImpl) Del(ctx context.Context, req *entitys.AdvicerAdminDelReq) error {
|
|
return a.Db.WithContext(ctx).
|
|
Where("admin_id = ?", req.AdminID).
|
|
Delete(&model.AiAdviceAdmin{}).Error
|
|
}
|