123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- package api
- import (
- "errors"
- "moutai/log"
- "time"
- "moutai/db/model"
- "moutai/db/repo"
- "moutai/utils"
- "github.com/gin-gonic/gin"
- "go.mongodb.org/mongo-driver/bson"
- "go.mongodb.org/mongo-driver/bson/primitive"
- )
- func UserLoginPassword(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- var form model.User
- err := c.ShouldBindJSON(&form)
- if err != nil {
- return nil, err
- }
- // 正常用户登录
- user := &model.User{}
- found, err := repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
- CollectName: repo.CollectionUser,
- Query: repo.Map{
- "loginName": form.LoginName,
- "password": utils.UtilMd5(form.Password),
- },
- }, user)
- if err != nil {
- return nil, err
- }
- if !found {
- return nil, errors.New("账号/密码不正确!")
- }
- if *user.State == -1 {
- return nil, errors.New("该账号已被禁用!")
- }
- jwtU := &JWTUser{ID: user.GetID()}
- token, _, err := apictx.Svc.JWT.JwtCreateToken(jwtU)
- if err != nil {
- return nil, err
- }
- // 前端返回处理
- user.Password = ""
- out := map[string]interface{}{
- "token": token,
- "user": user,
- }
- return out, nil
- }
- // 用户唯一
- // db.users.createIndex({ loginName: 1 }, { unique: true })
- func CreateUser(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- user := &model.User{}
- err := c.ShouldBindJSON(&user)
- if err != nil {
- log.Error(err)
- return nil, err
- }
- // 验证登录名是否存在
- found, err := repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
- CollectName: repo.CollectionUser,
- Query: repo.Map{"loginName": user.LoginName},
- }, user)
- if err != nil {
- return nil, err
- }
- if found {
- return nil, errors.New("该账号已存在")
- }
- // 正常状态
- state := 1
- user.State = &state
- user.Password = UtilMd5(user.Password)
- user.CreateTime = time.Now()
- user.UpdateTime = time.Now()
- return repo.RepoAddDoc(apictx.CreateRepoCtx(), repo.CollectionUser, &user)
- }
- func DeleteUser(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- _id := c.Param("id")
- id, _ := primitive.ObjectIDFromHex(_id)
- if id.IsZero() {
- return nil, errors.New("id错误")
- }
- return repo.RepoDeleteDoc(apictx.CreateRepoCtx(), repo.CollectionUser, _id)
- }
- // 用户列表
- // /user/list?roleId=xxx&name=xxx
- func UserList(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- page, size, query := UtilQueryPageSize(c)
- _roleId := c.Query("roleId")
- roleId, _ := primitive.ObjectIDFromHex(_roleId)
- name := c.Query("name")
- if !roleId.IsZero() {
- query["roleId"] = roleId
- }
- if len(name) > 0 {
- query["name"] = bson.M{"$regex": name, "$options": "$i"}
- }
- result, err := repo.RepoPageSearch(apictx.CreateRepoCtx(), &repo.PageSearchOptions{
- CollectName: repo.CollectionUser,
- Page: page,
- Size: size,
- Query: query,
- Sort: bson.D{bson.E{Key: "createTime", Value: -1}, bson.E{Key: "_id", Value: -1}},
- Project: []string{"roleId", "name", "loginName", "avatar", "state", "createTime", "updateTime"},
- })
- role := model.Role{}
- if len(result.List) > 0 {
- for i, u := range result.List {
- if v, ok := u["roleId"]; ok {
- // 查询角色信息
- roleId := v.(primitive.ObjectID)
- repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
- CollectName: repo.CollectionRoles,
- Query: repo.Map{"_id": roleId},
- }, &role)
- }
- // 拼接角色信息
- result.List[i]["roleInfo"] = &role
- }
- }
- return result, err
- }
- func UpdateUser(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- user := &model.User{}
- err := c.ShouldBindJSON(&user)
- if err != nil {
- log.Error(err)
- return nil, err
- }
- if user.Id.IsZero() {
- return nil, errors.New("id错误")
- }
- if len(user.Password) > 0 {
- user.Password = UtilMd5(user.Password)
- }
- return repo.RepoUpdateSetDoc(apictx.CreateRepoCtx(), repo.CollectionUser, user.Id.Hex(), user)
- }
- func DisableUser(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- _id := c.Param("id")
- id, _ := primitive.ObjectIDFromHex(_id)
- if id.IsZero() {
- return nil, errors.New("id错误")
- }
- state := -1
- return repo.RepoUpdateSetDoc(apictx.CreateRepoCtx(), repo.CollectionUser, _id, model.User{State: &state})
- }
- func EnableUser(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- _id := c.Param("id")
- id, _ := primitive.ObjectIDFromHex(_id)
- if id.IsZero() {
- return nil, errors.New("id错误")
- }
- state := 1
- return repo.RepoUpdateSetDoc(apictx.CreateRepoCtx(), repo.CollectionUser, _id, model.User{State: &state})
- }
- // 获取自己的信息
- func UserProfile(c *gin.Context, apictx *ApiSession) (interface{}, error) {
- return GetUserById(apictx, apictx.User.ID)
- }
- // 根据id获取用户信息
- func GetUserById(apictx *ApiSession, id string) (*model.User, error) {
- user := &model.User{}
- found, err := repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
- CollectName: repo.CollectionUser,
- Query: repo.Map{"_id": id},
- }, user)
- if err != nil {
- log.Error(err)
- return nil, err
- }
- if !found {
- return nil, errors.New("未找到该数据")
- }
- role := model.Role{}
- repo.RepoSeachDoc(apictx.CreateRepoCtx(), &repo.DocSearchOptions{
- CollectName: repo.CollectionRoles,
- Query: repo.Map{"_id": user.RoleId},
- }, &role)
- user.RoleInfo = &role
- user.Password = ""
- return user, nil
- }
|