237 lines
6.5 KiB
Go
237 lines
6.5 KiB
Go
package system
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/gogf/gf/v2/errors/gcode"
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
|
|
v1 "git.5iot.com/iotlcm-public/iotlcm-app/api/system/v1"
|
|
"git.5iot.com/iotlcm-public/iotlcm-app/internal/library/contexts"
|
|
"git.5iot.com/iotlcm-public/iotlcm-app/internal/model"
|
|
"git.5iot.com/iotlcm-public/iotlcm-app/internal/model/request"
|
|
"git.5iot.com/iotlcm-public/iotlcm-app/internal/model/response"
|
|
"git.5iot.com/iotlcm-public/iotlcm-app/internal/service"
|
|
)
|
|
|
|
func (c *ControllerV1) UserInfo(ctx context.Context, req *v1.UserInfoReq) (res *v1.UserInfoRes, err error) {
|
|
// 获取token
|
|
userId := contexts.GetUserId(ctx)
|
|
if userId == 0 {
|
|
return nil, gerror.NewCode(gcode.CodeSecurityReason)
|
|
}
|
|
// 获取用户信息
|
|
user, err := service.SysUser().GetUserById(ctx, userId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
menus, err := service.SysMenu().GetUserMenuTree(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
homePath := ""
|
|
firstMenu := "404"
|
|
if len(menus) > 0 {
|
|
for _, menu := range menus {
|
|
firstMenu = menu.Path
|
|
if len(menu.Children) == 0 {
|
|
break
|
|
}
|
|
for _, menu2 := range menu.Children {
|
|
firstMenu = firstMenu + "/" + menu2.Path
|
|
if len(menu2.Children) == 0 {
|
|
break
|
|
}
|
|
for _, menu3 := range menu2.Children {
|
|
firstMenu = firstMenu + "/" + menu3.Path
|
|
if len(menu3.Children) == 0 {
|
|
break
|
|
}
|
|
for _, menu4 := range menu3.Children {
|
|
firstMenu = firstMenu + "/" + menu4.Path
|
|
if len(menu4.Children) == 0 {
|
|
break
|
|
}
|
|
for _, menu5 := range menu4.Children {
|
|
firstMenu = firstMenu + "/" + menu5.Path
|
|
if len(menu5.Children) == 0 {
|
|
break
|
|
}
|
|
for _, menu6 := range menu5.Children {
|
|
firstMenu = firstMenu + "/" + menu6.Path
|
|
if len(menu6.Children) == 0 {
|
|
break
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
g.Log().Debugf(ctx, "firstMenu: %s", firstMenu)
|
|
if homePath == "" {
|
|
homePath = "/" + firstMenu
|
|
}
|
|
|
|
return &v1.UserInfoRes{
|
|
UserInfo: v1.UserInfo{
|
|
Id: user.UserId,
|
|
Username: user.UserName,
|
|
Nickname: user.NickName,
|
|
Avatar: user.Avatar,
|
|
Email: user.Email,
|
|
HomePath: homePath,
|
|
},
|
|
}, nil
|
|
}
|
|
func (c *ControllerV1) UserList(ctx context.Context, req *v1.UserListReq) (res *v1.UserListRes, err error) {
|
|
// 获取用户列表
|
|
users, total, err := service.SysUser().List(ctx, &req.PageInfo, &req.UserListParam)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.UserListRes{
|
|
Data: users,
|
|
PageResult: response.PageResult{
|
|
Page: req.Page,
|
|
PageSize: req.PageSize,
|
|
Total: total,
|
|
},
|
|
}, nil
|
|
}
|
|
|
|
func (c *ControllerV1) AddUser(ctx context.Context, req *v1.AddUserReq) (res *v1.AddUserRes, err error) {
|
|
data, err := service.SysUser().AddUser(ctx, &req.SysUserAddModel)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.AddUserRes{
|
|
Data: data,
|
|
}, nil
|
|
}
|
|
|
|
func (c *ControllerV1) UserProfile(ctx context.Context, req *v1.UserProfileReq) (res *v1.UserProfileRes, err error) {
|
|
user, err := service.SysUser().Profile(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.UserProfileRes{
|
|
User: user,
|
|
}, nil
|
|
}
|
|
|
|
func (c *ControllerV1) UpdateCurrentUser(ctx context.Context, req *v1.UpdateCurrentUserReq) (res *v1.UpdateCurrentUserRes, err error) {
|
|
user, err := service.SysUser().UpdateCurrentUser(ctx, &req.UpdateCurrentUserModel)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.UpdateCurrentUserRes{
|
|
UserInfo: v1.UserInfo{
|
|
Id: user.UserId,
|
|
Username: user.UserName,
|
|
Nickname: user.NickName,
|
|
Avatar: user.Avatar,
|
|
Email: user.Email,
|
|
},
|
|
}, nil
|
|
}
|
|
|
|
func (c *ControllerV1) UpdateCurrentUserPassword(ctx context.Context, req *v1.UpdateCurrentUserPasswordReq) (res *v1.UpdateCurrentUserPasswordRes, err error) {
|
|
err = service.SysUser().UpdateCurrentUserPassword(ctx, &req.UpdateCurrentUserPasswordModel)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.UpdateCurrentUserPasswordRes{}, nil
|
|
}
|
|
|
|
func (c *ControllerV1) UpdateUser(ctx context.Context, req *v1.UpdateUserReq) (res *v1.UpdateUserRes, err error) {
|
|
err = service.SysUser().UpdateUser(ctx, &req.SysUserUpdateModel)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
user, err := service.SysUser().GetUserById(ctx, req.UserId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.UpdateUserRes{
|
|
SysUserViewModel: *user,
|
|
}, nil
|
|
}
|
|
|
|
func (c *ControllerV1) DeleteUser(ctx context.Context, req *v1.DeleteUserReq) (res *v1.DeleteUserRes, err error) {
|
|
if req.UserId != 0 {
|
|
err = service.SysUser().DeleteUser(ctx, []int64{req.UserId})
|
|
} else {
|
|
err = service.SysUser().DeleteUser(ctx, req.UserIds)
|
|
}
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.DeleteUserRes{}, nil
|
|
}
|
|
func (c *ControllerV1) GetUser(ctx context.Context, req *v1.GetUserReq) (res *v1.GetUserRes, err error) {
|
|
// 如果调用方传入 userId == 0,则不返回错误,直接返回空的用户视图结构
|
|
if req.UserId == 0 {
|
|
return &v1.GetUserRes{
|
|
SysUserViewModel: model.SysUserViewModel{},
|
|
}, nil
|
|
}
|
|
|
|
user, err := service.SysUser().GetUserById(ctx, req.UserId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.GetUserRes{
|
|
SysUserViewModel: *user,
|
|
}, nil
|
|
}
|
|
func (c *ControllerV1) ResetPassword(ctx context.Context, req *v1.ResetPasswordReq) (res *v1.ResetPasswordRes, err error) {
|
|
err = service.SysUser().ResetPassword(ctx, req.UserId, req.Password)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.ResetPasswordRes{}, nil
|
|
}
|
|
func (c *ControllerV1) GetUserListByDeptId(ctx context.Context, req *v1.GetUserListByDeptIdReq) (res *v1.GetUserListByDeptIdRes, err error) {
|
|
users, total, err := service.SysUser().List(ctx, &request.PageInfo{
|
|
Page: req.Page,
|
|
PageSize: req.PageSize,
|
|
}, &model.UserListParam{
|
|
DeptId: req.DeptId,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
miniUsers := make([]*model.SysUserMiniModel, 0)
|
|
gconv.Structs(users, &miniUsers)
|
|
return &v1.GetUserListByDeptIdRes{
|
|
Items: miniUsers,
|
|
PageResult: response.PageResult{
|
|
Page: req.Page,
|
|
PageSize: req.PageSize,
|
|
Total: total,
|
|
},
|
|
}, nil
|
|
}
|
|
|
|
// UserRegister 用户注册
|
|
func (c *ControllerV1) UserRegister(ctx context.Context, req *v1.UserRegisterReq) (res *v1.UserRegisterRes, err error) {
|
|
err = service.SysUser().Register(ctx, &req.SysUserRegisterModel)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.UserRegisterRes{}, nil
|
|
}
|
|
|
|
// UserStatus 更新用户状态
|
|
func (c *ControllerV1) UserStatus(ctx context.Context, req *v1.UserStatusReq) (res *v1.UserStatusRes, err error) {
|
|
err = service.SysUser().Status(ctx, &req.SysUserStatusParam)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &v1.UserStatusRes{}, nil
|
|
}
|