4
0

user.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. package casbin
  2. import (
  3. "dashoo.cn/backend/api/business/organize"
  4. "dashoo.cn/business2/userRole"
  5. "dashoo.cn/business2/permission"
  6. "dashoo.cn/backend/api/models"
  7. "encoding/json"
  8. "strings"
  9. . "dashoo.cn/backend/api/controllers"
  10. "dashoo.cn/utils"
  11. )
  12. // Operations about Users
  13. type UserController struct {
  14. BaseController
  15. }
  16. type UserModel struct {
  17. Username string `json:"username"`
  18. Realname string `json:"realname"`
  19. Telephone string `json:"telephone"`
  20. Mobile string `json:"mobile"`
  21. Description string `json:"description"`
  22. Photo string `json:"photo"`
  23. Role string `json:"role"`
  24. Id int `json:"id"`
  25. ChannelIds string `json:"channelids"`
  26. Password string `json:"password"`
  27. DepartmentId string `json:"departmentid"`
  28. DepartmentName string `json:"departmentname"`
  29. Sign string `json:"sign"`
  30. }
  31. // @Title get
  32. // @Description get user by token
  33. // @Param uid path string true "The key for staticblock"
  34. // @Success 200 {object} models.User
  35. // @Failure 403 :uid is empty
  36. // @router /me [get]
  37. func (this *UserController) Get() {
  38. svc := userRole.GetUserService(utils.DBE)
  39. usermodel := svc.GetUserInfoSelf(this.User.Username)
  40. // var companyentity company.Base_Company
  41. // svc.GetEntityById(usermodel.AccCode, &companyentity)
  42. var user models.User
  43. user.Id = utils.ToStr(usermodel.Id)
  44. user.Username = usermodel.Username
  45. user.Profile.Address = usermodel.Homeaddress
  46. user.Profile.Email = usermodel.Email
  47. user.Profile.Realname = usermodel.Realname
  48. user.Profile.Roleid = usermodel.Roleid
  49. user.Profile.Mobile = usermodel.Mobile
  50. user.Profile.Telephone = usermodel.Telephone
  51. user.Profile.Photo = usermodel.Photo
  52. user.Profile.Description = usermodel.Description
  53. user.Profile.Host = this.Ctx.Request.Host
  54. user.Profile.AccCode = usermodel.AccCode
  55. user.Profile.DepartmentId = usermodel.Departmentid
  56. user.Profile.Id = usermodel.Id
  57. // todo 从this.User获取用户名,再查询出具体用户
  58. // user := models.User{"user01", "张三", models.Profile{Gender: "male", Age: 20, Address: "china", Email: "123zs@gmail.com", Realname: "ppppppp"}}
  59. this.Data["json"] = user
  60. this.ServeJSON()
  61. }
  62. // @Title 获取用户菜单权限
  63. // @Description 获取用户菜单权限
  64. // @Success 200 {object} controllers.Request
  65. // @router /getusermodule [get]
  66. func (this *UserController) GetUserModule() {
  67. //svc := permission.GetPermissionService(utils.DBE)
  68. //var model UserModuleModel
  69. //model.A1list = svc.GetModuleAllNamesByCode(this.User.Id, "A1")
  70. //model.A2list = svc.GetModuleAllNamesByCode(this.User.Id, "A2")
  71. //this.Data["json"] = model
  72. //this.ServeJSON()
  73. }
  74. // @Title 获取用户菜单权限
  75. // @Description 获取用户菜单权限
  76. // @Success 200 {object} controllers.Request
  77. // @router /getusermoduletree [get]
  78. func (this *UserController) GetUserModuleTree() {
  79. svc := permission.GetPermissionService(utils.DBE)
  80. list := svc.GetModuleAll(this.User.Id, "30000000")
  81. this.Data["json"] = list
  82. this.ServeJSON()
  83. }
  84. // @Title 获得用户角色id
  85. // @Description 获得用户角色id
  86. // @Success 200 {object} controllers.Request
  87. // @router /getuserrole/:id [get]
  88. func (this *UserController) UserPowerCheckRole() {
  89. userid := this.Ctx.Input.Param(":id")
  90. roleofuser := utils.RBAC.GetRolesForUser("uid_" + userid)
  91. for i := 0; i < len(roleofuser); i++ {
  92. roleofuser[i] = strings.Replace(roleofuser[i], "rid_", "", 1)
  93. }
  94. this.Data["json"] = &roleofuser
  95. this.ServeJSON()
  96. }
  97. // @Title get
  98. // @Description get user by token
  99. // @Success 200 {object} models.User
  100. // @router /list [get]
  101. func (this *UserController) List() {
  102. page := this.GetPageInfoForm()
  103. keyword := this.GetString("keyword")
  104. svc := permission.GetPermissionService(utils.DBE)
  105. var users []userRole.Base_User
  106. where := "IsVisible=1 and CreateUserId='" + utils.ToStr(this.User.Id) + "' or Id = '" + utils.ToStr(this.User.Id) + "' "
  107. if keyword != "" {
  108. where = where + " and Realname like '%" + keyword + "%'"
  109. }
  110. total := svc.GetPagingEntitiesWithOrder(page.CurrentPage, page.Size, "Id", false, &users, where)
  111. var datainfo DataInfo
  112. datainfo.Items = users
  113. datainfo.CurrentItemCount = total
  114. this.Data["json"] = &datainfo
  115. this.ServeJSON()
  116. }
  117. // @Title 用户角色设置
  118. // @Description 用户角色设置
  119. // @Success 200 {object} controllers.Request
  120. // @router /setuserrole/:id [put]
  121. func (this *UserController) UserPowerPostRole() {
  122. inputstr := this.Ctx.Input.Param(":id")
  123. serial := strings.Split(inputstr, "_")
  124. userid := serial[0]
  125. var errinfo ErrorInfo
  126. if userid == "" || userid == "0" {
  127. errinfo.Message = "操作失败!请求信息不完整"
  128. errinfo.Code = -2
  129. this.Data["json"] = &errinfo
  130. this.ServeJSON()
  131. return
  132. }
  133. roleids := strings.Split(serial[1], ",")
  134. utils.RBAC.DeleteRolesForUser("uid_" + userid)
  135. var err error = nil
  136. for i := 0; i < len(roleids); i++ {
  137. if roleids[i] != "0" && roleids[i] != "" {
  138. //err = svc.AddUserToRole(userid, roleids[i], entity[0])
  139. utils.RBAC.AddRoleForUserInDomain("uid_"+userid, "rid_"+roleids[i], utils.DOMAIN)
  140. }
  141. }
  142. if err == nil {
  143. errinfo.Message = utils.AlertProcess("用户角色调整成功!")
  144. errinfo.Code = 0
  145. this.Data["json"] = &errinfo
  146. this.ServeJSON()
  147. } else {
  148. errinfo.Message = utils.AlertProcess("用户角色调整失败!" + err.Error())
  149. errinfo.Code = -1
  150. this.Data["json"] = &errinfo
  151. this.ServeJSON()
  152. }
  153. }
  154. // @Title 创建用户
  155. // @Description 创建用户
  156. // @Param body body business.device.DeviceChannels "传感器信息"
  157. // @Success 200 {object} controllers.Request
  158. // @router / [post]
  159. func (this *UserController) AddUser() {
  160. /*var model UserModel
  161. var jsonblob = this.Ctx.Input.RequestBody
  162. json.Unmarshal(jsonblob, &model)
  163. var errinfo ErrorDataInfo
  164. departidint, _ := utils.StrTo(model.DepartmentId).Int()
  165. if departidint < 1 {
  166. errinfo.Message = "请选择所属组织!"
  167. errinfo.Code = -3
  168. this.Data["json"] = &errinfo
  169. this.ServeJSON()
  170. return
  171. }
  172. //获取组织名称
  173. svcorg := organize.GetOrganizeService(utils.DBE)
  174. model.DepartmentName = svcorg.GetNameById(model.DepartmentId)
  175. var userentity userRole.Base_User
  176. userentity.Roleid, _ = utils.StrTo(model.Role).Int()
  177. if userentity.Roleid == 0 {
  178. //userentity.Roleid = 10000123 //普通用户
  179. }
  180. userentity.Username = model.Username
  181. userentity.Realname = model.Realname
  182. userentity.Telephone = model.Telephone
  183. userentity.Mobile = model.Mobile
  184. if model.Sign == "" {
  185. userentity.Description = model.Description
  186. } else {
  187. userentity.Description = model.Sign
  188. }
  189. userentity.Photo = model.Photo
  190. currentuser := this.User
  191. userentity.Createuserid, _ = utils.StrTo(currentuser.Id).Int()
  192. userentity.Createby = currentuser.Realname
  193. userentity.AccCode = this.GetAccode()
  194. userentity.QRCode = utils.GetGuid()
  195. userentity.Departmentid = model.DepartmentId
  196. userentity.Departmentname = model.DepartmentName
  197. //salt := utils.GetRandomString(5)
  198. //userentity.Userpassword = fmt.Sprintf("%s$%s", salt, utils.EncodePassword("123456", salt))
  199. //更改密码算法2014-11-21
  200. pwd, key, errrk := utils.TripleDesEncrypt("123456")
  201. if errrk != nil {
  202. errinfo.Message = "添加失败!" + utils.AlertProcess(errrk.Error())
  203. errinfo.Code = -2
  204. this.Data["json"] = &errinfo
  205. this.ServeJSON()
  206. return
  207. }
  208. userentity.Userpassword = pwd
  209. userentity.Publickey = key
  210. userentity.Auditstatus = 1
  211. userentity.Email = userentity.Username
  212. svc := userRole.GetUserService(utils.DBE)
  213. err := svc.AddUser(&userentity)
  214. if err == nil {
  215. errinfo.Message = "添加用户成功,初始密码为123456!"
  216. errinfo.Code = 0
  217. errinfo.Item = userentity.Id
  218. this.Data["json"] = &errinfo
  219. this.ServeJSON()
  220. return
  221. } else {
  222. errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
  223. errinfo.Code = -1
  224. this.Data["json"] = &errinfo
  225. this.ServeJSON()
  226. return
  227. }*/
  228. }
  229. // @Title 编辑用户
  230. // @Description 编辑用户
  231. // @Param id path string true "需要修改的传感器编号"
  232. // @Param body body business.device.DeviceChannels "传感器信息"
  233. // @Success 200 {object} controllers.Request
  234. // @router /:id [put]
  235. func (this *UserController) EditUser() {
  236. id := this.Ctx.Input.Param(":id")
  237. var errinfo ErrorInfo
  238. if id == "" {
  239. errinfo.Message = "操作失败!请求信息不完整"
  240. errinfo.Code = -2
  241. this.Data["json"] = &errinfo
  242. this.ServeJSON()
  243. return
  244. }
  245. var model UserModel
  246. var jsonblob = this.Ctx.Input.RequestBody
  247. json.Unmarshal(jsonblob, &model)
  248. var userentity userRole.Base_User
  249. var userentityempty userRole.Base_User
  250. svc := userRole.GetUserService(utils.DBE)
  251. has := svc.GetEntityById(id, &userentity)
  252. if has {
  253. //获取组织名称
  254. svcorg := organize.GetOrganizeService(utils.DBE)
  255. model.DepartmentName = svcorg.GetNameById(model.DepartmentId)
  256. // roleid, _ := utils.StrTo(model.Role).Int()
  257. // if userentity.Roleid != roleid {
  258. // svc.ClearUserRole(id)
  259. // svc.AddUserToRole(id, model.Role, userentity)
  260. // }
  261. userentity.Realname = model.Realname
  262. userentity.Telephone = model.Telephone
  263. userentity.Mobile = model.Mobile
  264. if model.Sign == "" {
  265. userentity.Description = model.Description
  266. } else {
  267. userentity.Description = model.Sign
  268. }
  269. userentity.Photo = model.Photo
  270. // userentity.Roleid = roleid
  271. userentity.Modifieduserid, _ = utils.StrTo(this.User.Id).Int()
  272. userentity.Modifiedby = this.User.Realname
  273. userentity.Departmentid = model.DepartmentId
  274. userentity.Departmentname = model.DepartmentName
  275. var cols []string = []string{"Realname", "DepartmentId", "DepartmentName", "Telephone", "Mobile", "Description", "Photo", "Modifieduserid", "Modifiedby"}
  276. err := svc.UpdateEntityAndBackupByCols(id, &userentity, &userentityempty, cols, utils.ToStr(this.User.Id), this.User.Realname)
  277. if err == nil {
  278. errinfo.Message = "保存成功!"
  279. errinfo.Code = 0
  280. this.Data["json"] = &errinfo
  281. this.ServeJSON()
  282. } else {
  283. errinfo.Message = "操作失败!" + utils.AlertProcess(err.Error())
  284. errinfo.Code = -1
  285. this.Data["json"] = &errinfo
  286. this.ServeJSON()
  287. }
  288. } else {
  289. errinfo.Message = "操作失败!操作数据不存在"
  290. errinfo.Code = -3
  291. this.Data["json"] = &errinfo
  292. this.ServeJSON()
  293. return
  294. }
  295. }
  296. // @Title 删除用户
  297. // @Description 删除用户
  298. // @Param id path string true "需要删除的用户编号"
  299. // @Success 200 {object} ErrorInfo
  300. // @Failure 403 :id 为空
  301. // @router /:id [delete]
  302. func (this *UserController) Delete() {
  303. id := this.Ctx.Input.Param(":id")
  304. var errinfo ErrorInfo
  305. if id == "" {
  306. errinfo.Message = "操作失败!请求信息不完整"
  307. errinfo.Code = -2
  308. this.Data["json"] = &errinfo
  309. this.ServeJSON()
  310. return
  311. }
  312. var entity userRole.Base_User
  313. var entityempty userRole.Base_User
  314. svc := userRole.GetUserService(utils.DBE)
  315. err := svc.DeleteEntityAndBackup(id, &entity, &entityempty, utils.ToStr(this.User.Id), this.User.Username)
  316. if err == nil {
  317. svc.ClearUserRole(id) //清除角色
  318. errinfo.Message = "删除成功"
  319. errinfo.Code = 0
  320. this.Data["json"] = &errinfo
  321. this.ServeJSON()
  322. } else {
  323. errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
  324. errinfo.Code = -1
  325. this.Data["json"] = &errinfo
  326. this.ServeJSON()
  327. }
  328. }