package casbin import ( "dashoo.cn/backend/api/business/organize" "dashoo.cn/business2/userRole" "dashoo.cn/business2/permission" "dashoo.cn/backend/api/models" "encoding/json" "strings" . "dashoo.cn/backend/api/controllers" "dashoo.cn/utils" ) // Operations about Users type UserController struct { BaseController } type UserModel struct { Username string `json:"username"` Realname string `json:"realname"` Telephone string `json:"telephone"` Mobile string `json:"mobile"` Description string `json:"description"` Photo string `json:"photo"` Role string `json:"role"` Id int `json:"id"` ChannelIds string `json:"channelids"` Password string `json:"password"` DepartmentId string `json:"departmentid"` DepartmentName string `json:"departmentname"` Sign string `json:"sign"` } // @Title get // @Description get user by token // @Param uid path string true "The key for staticblock" // @Success 200 {object} models.User // @Failure 403 :uid is empty // @router /me [get] func (this *UserController) Get() { svc := userRole.GetUserService(utils.DBE) usermodel := svc.GetUserInfoSelf(this.User.Username) // var companyentity company.Base_Company // svc.GetEntityById(usermodel.AccCode, &companyentity) var user models.User user.Id = utils.ToStr(usermodel.Id) user.Username = usermodel.Username user.Profile.Address = usermodel.Homeaddress user.Profile.Email = usermodel.Email user.Profile.Realname = usermodel.Realname user.Profile.Roleid = usermodel.Roleid user.Profile.Mobile = usermodel.Mobile user.Profile.Telephone = usermodel.Telephone user.Profile.Photo = usermodel.Photo user.Profile.Description = usermodel.Description user.Profile.Host = this.Ctx.Request.Host user.Profile.AccCode = usermodel.AccCode user.Profile.DepartmentId = usermodel.Departmentid user.Profile.Id = usermodel.Id // todo 从this.User获取用户名,再查询出具体用户 // user := models.User{"user01", "张三", models.Profile{Gender: "male", Age: 20, Address: "china", Email: "123zs@gmail.com", Realname: "ppppppp"}} this.Data["json"] = user this.ServeJSON() } // @Title 获取用户菜单权限 // @Description 获取用户菜单权限 // @Success 200 {object} controllers.Request // @router /getusermodule [get] func (this *UserController) GetUserModule() { //svc := permission.GetPermissionService(utils.DBE) //var model UserModuleModel //model.A1list = svc.GetModuleAllNamesByCode(this.User.Id, "A1") //model.A2list = svc.GetModuleAllNamesByCode(this.User.Id, "A2") //this.Data["json"] = model //this.ServeJSON() } // @Title 获取用户菜单权限 // @Description 获取用户菜单权限 // @Success 200 {object} controllers.Request // @router /getusermoduletree [get] func (this *UserController) GetUserModuleTree() { svc := permission.GetPermissionService(utils.DBE) list := svc.GetModuleAll(this.User.Id, "30000000") this.Data["json"] = list this.ServeJSON() } // @Title 获得用户角色id // @Description 获得用户角色id // @Success 200 {object} controllers.Request // @router /getuserrole/:id [get] func (this *UserController) UserPowerCheckRole() { userid := this.Ctx.Input.Param(":id") roleofuser := utils.RBAC.GetRolesForUser("uid_" + userid) for i := 0; i < len(roleofuser); i++ { roleofuser[i] = strings.Replace(roleofuser[i], "rid_", "", 1) } this.Data["json"] = &roleofuser this.ServeJSON() } // @Title get // @Description get user by token // @Success 200 {object} models.User // @router /list [get] func (this *UserController) List() { page := this.GetPageInfoForm() keyword := this.GetString("keyword") svc := permission.GetPermissionService(utils.DBE) var users []userRole.Base_User where := "IsVisible=1 and CreateUserId='" + utils.ToStr(this.User.Id) + "' or Id = '" + utils.ToStr(this.User.Id) + "' " if keyword != "" { where = where + " and Realname like '%" + keyword + "%'" } total := svc.GetPagingEntitiesWithOrder(page.CurrentPage, page.Size, "Id", false, &users, where) var datainfo DataInfo datainfo.Items = users datainfo.CurrentItemCount = total this.Data["json"] = &datainfo this.ServeJSON() } // @Title 用户角色设置 // @Description 用户角色设置 // @Success 200 {object} controllers.Request // @router /setuserrole/:id [put] func (this *UserController) UserPowerPostRole() { inputstr := this.Ctx.Input.Param(":id") serial := strings.Split(inputstr, "_") userid := serial[0] var errinfo ErrorInfo if userid == "" || userid == "0" { errinfo.Message = "操作失败!请求信息不完整" errinfo.Code = -2 this.Data["json"] = &errinfo this.ServeJSON() return } roleids := strings.Split(serial[1], ",") utils.RBAC.DeleteRolesForUser("uid_" + userid) var err error = nil for i := 0; i < len(roleids); i++ { if roleids[i] != "0" && roleids[i] != "" { //err = svc.AddUserToRole(userid, roleids[i], entity[0]) utils.RBAC.AddRoleForUserInDomain("uid_"+userid, "rid_"+roleids[i], utils.DOMAIN) } } if err == nil { errinfo.Message = utils.AlertProcess("用户角色调整成功!") errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() } else { errinfo.Message = utils.AlertProcess("用户角色调整失败!" + err.Error()) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } // @Title 创建用户 // @Description 创建用户 // @Param body body business.device.DeviceChannels "传感器信息" // @Success 200 {object} controllers.Request // @router / [post] func (this *UserController) AddUser() { /*var model UserModel var jsonblob = this.Ctx.Input.RequestBody json.Unmarshal(jsonblob, &model) var errinfo ErrorDataInfo departidint, _ := utils.StrTo(model.DepartmentId).Int() if departidint < 1 { errinfo.Message = "请选择所属组织!" errinfo.Code = -3 this.Data["json"] = &errinfo this.ServeJSON() return } //获取组织名称 svcorg := organize.GetOrganizeService(utils.DBE) model.DepartmentName = svcorg.GetNameById(model.DepartmentId) var userentity userRole.Base_User userentity.Roleid, _ = utils.StrTo(model.Role).Int() if userentity.Roleid == 0 { //userentity.Roleid = 10000123 //普通用户 } userentity.Username = model.Username userentity.Realname = model.Realname userentity.Telephone = model.Telephone userentity.Mobile = model.Mobile if model.Sign == "" { userentity.Description = model.Description } else { userentity.Description = model.Sign } userentity.Photo = model.Photo currentuser := this.User userentity.Createuserid, _ = utils.StrTo(currentuser.Id).Int() userentity.Createby = currentuser.Realname userentity.AccCode = this.GetAccode() userentity.QRCode = utils.GetGuid() userentity.Departmentid = model.DepartmentId userentity.Departmentname = model.DepartmentName //salt := utils.GetRandomString(5) //userentity.Userpassword = fmt.Sprintf("%s$%s", salt, utils.EncodePassword("123456", salt)) //更改密码算法2014-11-21 pwd, key, errrk := utils.TripleDesEncrypt("123456") if errrk != nil { errinfo.Message = "添加失败!" + utils.AlertProcess(errrk.Error()) errinfo.Code = -2 this.Data["json"] = &errinfo this.ServeJSON() return } userentity.Userpassword = pwd userentity.Publickey = key userentity.Auditstatus = 1 userentity.Email = userentity.Username svc := userRole.GetUserService(utils.DBE) err := svc.AddUser(&userentity) if err == nil { errinfo.Message = "添加用户成功,初始密码为123456!" errinfo.Code = 0 errinfo.Item = userentity.Id this.Data["json"] = &errinfo this.ServeJSON() return } else { errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error()) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() return }*/ } // @Title 编辑用户 // @Description 编辑用户 // @Param id path string true "需要修改的传感器编号" // @Param body body business.device.DeviceChannels "传感器信息" // @Success 200 {object} controllers.Request // @router /:id [put] func (this *UserController) EditUser() { id := this.Ctx.Input.Param(":id") var errinfo ErrorInfo if id == "" { errinfo.Message = "操作失败!请求信息不完整" errinfo.Code = -2 this.Data["json"] = &errinfo this.ServeJSON() return } var model UserModel var jsonblob = this.Ctx.Input.RequestBody json.Unmarshal(jsonblob, &model) var userentity userRole.Base_User var userentityempty userRole.Base_User svc := userRole.GetUserService(utils.DBE) has := svc.GetEntityById(id, &userentity) if has { //获取组织名称 svcorg := organize.GetOrganizeService(utils.DBE) model.DepartmentName = svcorg.GetNameById(model.DepartmentId) // roleid, _ := utils.StrTo(model.Role).Int() // if userentity.Roleid != roleid { // svc.ClearUserRole(id) // svc.AddUserToRole(id, model.Role, userentity) // } userentity.Realname = model.Realname userentity.Telephone = model.Telephone userentity.Mobile = model.Mobile if model.Sign == "" { userentity.Description = model.Description } else { userentity.Description = model.Sign } userentity.Photo = model.Photo // userentity.Roleid = roleid userentity.Modifieduserid, _ = utils.StrTo(this.User.Id).Int() userentity.Modifiedby = this.User.Realname userentity.Departmentid = model.DepartmentId userentity.Departmentname = model.DepartmentName var cols []string = []string{"Realname", "DepartmentId", "DepartmentName", "Telephone", "Mobile", "Description", "Photo", "Modifieduserid", "Modifiedby"} err := svc.UpdateEntityAndBackupByCols(id, &userentity, &userentityempty, cols, utils.ToStr(this.User.Id), this.User.Realname) if err == nil { errinfo.Message = "保存成功!" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() } else { errinfo.Message = "操作失败!" + utils.AlertProcess(err.Error()) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } } else { errinfo.Message = "操作失败!操作数据不存在" errinfo.Code = -3 this.Data["json"] = &errinfo this.ServeJSON() return } } // @Title 删除用户 // @Description 删除用户 // @Param id path string true "需要删除的用户编号" // @Success 200 {object} ErrorInfo // @Failure 403 :id 为空 // @router /:id [delete] func (this *UserController) Delete() { id := this.Ctx.Input.Param(":id") var errinfo ErrorInfo if id == "" { errinfo.Message = "操作失败!请求信息不完整" errinfo.Code = -2 this.Data["json"] = &errinfo this.ServeJSON() return } var entity userRole.Base_User var entityempty userRole.Base_User svc := userRole.GetUserService(utils.DBE) err := svc.DeleteEntityAndBackup(id, &entity, &entityempty, utils.ToStr(this.User.Id), this.User.Username) if err == nil { svc.ClearUserRole(id) //清除角色 errinfo.Message = "删除成功" errinfo.Code = 0 this.Data["json"] = &errinfo this.ServeJSON() } else { errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error()) errinfo.Code = -1 this.Data["json"] = &errinfo this.ServeJSON() } }