user.go 8.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. package user
  2. import (
  3. "errors"
  4. "net/http"
  5. "spaceofcheng/services/controllers"
  6. "spaceofcheng/services/models/model"
  7. "spaceofcheng/services/models/system"
  8. "spaceofcheng/services/service"
  9. "spaceofcheng/services/utils"
  10. "time"
  11. "github.com/yl10/kit/guid"
  12. )
  13. // UserController 用户
  14. type UserController struct {
  15. dao *service.UserServ
  16. controllers.BaseController
  17. }
  18. // Constructor 初始化 Controller
  19. // @Title Constructor
  20. // @Description 初始化 Controller, 系统自动调用
  21. func (c *UserController) Constructor() {
  22. c.dao = service.NewUserServ(c.Context)
  23. }
  24. // UpdatePassword 更新用户密码
  25. func (c *UserController) UpdatePassword() {
  26. oriPasswd := c.GetString("oriPasswd")
  27. newPasswd := c.GetString("newPasswd")
  28. user := c.Context.Get("user").(model.SysUser)
  29. err := c.dao.UpdatePassword(oriPasswd, newPasswd, &user)
  30. if err != nil {
  31. c.ResponseError(err)
  32. }
  33. c.ResponseJSON("ok")
  34. }
  35. // ResetPassword 重置用户密码
  36. func (c *UserController) ResetPassword() {
  37. userid := c.GetString("userid")
  38. err := c.dao.ResetPassword(userid)
  39. if err != nil {
  40. c.ResponseError(err)
  41. }
  42. c.ResponseJSON("OK")
  43. }
  44. // GetUserByID 获取用户信息
  45. func (c *UserController) GetUserByID() {
  46. userid := c.GetString(":userid")
  47. user, err := c.dao.GetUserByID(userid)
  48. if err != nil {
  49. c.ResponseError(err)
  50. }
  51. c.ResponseJSON(user)
  52. }
  53. // GetUserList 获取用户列表
  54. func (c *UserController) GetUserList() {
  55. userName := c.GetString("username")
  56. typeID := c.GetString("typeid")
  57. caseids := c.GetString("caseid")
  58. if caseids == "" {
  59. cases := c.Context.Get("cases").([]model.SysUserCase)
  60. caseids = c.GetCaseIDs(cases)
  61. }
  62. page, _ := c.GetInt("page")
  63. pageSize, _ := c.GetInt("pagesize")
  64. userList, err := c.dao.GetUserList(userName, typeID, caseids, page, pageSize)
  65. if err != nil {
  66. c.ResponseError(err)
  67. }
  68. c.ResponseJSON(userList)
  69. }
  70. // GetUserTypes 获取用户类型
  71. func (c *UserController) GetUserTypes() {
  72. // cases := c.Context.Get("cases").([]model.SysUserCase)
  73. // caseIDs := c.GetCaseIDs(cases)
  74. org := c.Context.Get("org").(model.SysOrg)
  75. usertypes, err := c.dao.GetUserTypes(org.OrgId)
  76. if err != nil {
  77. c.ResponseError(err)
  78. }
  79. c.ResponseJSON(usertypes)
  80. }
  81. // UserMapping 用户映射
  82. func (c *UserController) UserMapping() {
  83. userMapping := model.TaUserMapping{}
  84. if err := c.ParseForm(&userMapping); err != nil {
  85. c.ResponseError(err)
  86. }
  87. err := c.dao.UserMapping(userMapping)
  88. if err != nil {
  89. c.ResponseError(err)
  90. }
  91. c.ResponseJSON("操作成功!")
  92. }
  93. // SaveUser 保存用户信息
  94. func (c *UserController) SaveUser() {
  95. user := system.SysUserForm{}
  96. if err := c.ParseForm(&user); err != nil {
  97. c.ResponseError(err)
  98. }
  99. info, err := c.dao.SaveUser(user)
  100. if err != nil {
  101. c.ResponseError(err)
  102. }
  103. c.ResponseJSON(info)
  104. }
  105. // DelUser 删除用户信息
  106. func (c *UserController) DelUser() {
  107. userid := c.GetString(":userid")
  108. err := c.dao.DelUser(userid)
  109. if err != nil {
  110. c.ResponseError(err)
  111. }
  112. c.ResponseJSON("删除成功!")
  113. }
  114. // UserMapRole 用户角色保存
  115. func (c *UserController) UserMapRole() {
  116. userid := c.GetString("userid")
  117. roles := c.GetString("roles")
  118. err := c.dao.SaveUserRole(userid, roles)
  119. if err != nil {
  120. c.ResponseError(err)
  121. }
  122. c.ResponseJSON("操作成功!")
  123. }
  124. // GetUserCustomer 我的推荐客户
  125. func (c *UserController) GetUserCustomer() {
  126. customer := c.Context.Get("customer").(model.TaCustomer)
  127. if customer.UserId == "" {
  128. c.ResponseError(errors.New("无法获取推荐客户信息!"))
  129. }
  130. page, _ := c.GetInt("page")
  131. pageSize, _ := c.GetInt("pagesize")
  132. isrecommend := c.GetString("isrecommend")
  133. key := c.GetString("key")
  134. customers, err := c.dao.GetUserCustomer(customer.UserId, isrecommend, key, page, pageSize)
  135. if err != nil {
  136. c.ResponseError(err)
  137. }
  138. c.ResponseJSON(customers)
  139. }
  140. // SignIn 用户登录
  141. func (c *UserController) SignIn() {
  142. userName := c.GetString("username")
  143. userPassword := c.GetString("password")
  144. token := c.GetString("token")
  145. doRemember, _ := c.GetInt("doremember")
  146. if token != "" {
  147. tokenMap, err := utils.PareseToken(token)
  148. if err != nil {
  149. utils.LogError("解析用户 token 失败: " + err.Error())
  150. c.ResponseError(
  151. errors.New("登录失败, 用户名或者密码不正确"),
  152. http.StatusBadRequest,
  153. )
  154. }
  155. userName = tokenMap["user"].(string)
  156. userPassword = tokenMap["password"].(string)
  157. }
  158. user, err := c.dao.CheckUserSignIn(userName, userPassword)
  159. if err != nil {
  160. utils.LogError("用户登录失败: " + err.Error())
  161. c.ResponseError(
  162. errors.New("登录失败, 用户名或者密码不正确"),
  163. http.StatusBadRequest,
  164. )
  165. }
  166. // 成功之后, 设置用户
  167. c.Context.Set("user", *user)
  168. c.Context.Set("token-batch", guid.NewGUIDString())
  169. if token == "" && doRemember != 0 {
  170. var err error
  171. token, err = utils.CreateToken(map[string]interface{}{
  172. "user": userName,
  173. "password": userPassword,
  174. "exp": time.Now().Local().Add(7 * 24 * time.Hour), // 有效期是 7 天
  175. })
  176. if err != nil {
  177. utils.LogError("生成 用户登录 token 失败: " + err.Error())
  178. }
  179. }
  180. c.ResponseJSON(map[string]interface{}{
  181. token: token,
  182. })
  183. }
  184. // SignOut 用户登出
  185. func (c *UserController) SignOut() {
  186. user := c.Context.Get("user").(model.SysUser)
  187. c.Context.Set("user", nil)
  188. c.SetTokenExipre(user.UserId)
  189. c.ResponseJSON("ok")
  190. }
  191. // GetEnvVars 获取当前用户相关
  192. func (c *UserController) GetEnvVars() {
  193. vars, err := c.dao.GetCurrentEnvVars()
  194. if err != nil {
  195. c.ResponseError(
  196. err,
  197. http.StatusInternalServerError,
  198. )
  199. }
  200. c.ResponseJSON(vars)
  201. }
  202. // GetUserRole 获取用户角色
  203. func (c *UserController) GetUserRole() {
  204. userid := c.GetString("userid")
  205. roles, err := c.dao.GetUserRoles(userid)
  206. if err != nil {
  207. c.ResponseError(
  208. err,
  209. http.StatusInternalServerError,
  210. )
  211. }
  212. c.ResponseJSON(roles)
  213. }
  214. // GetUserByTel 根据电话获取用户信息
  215. func (c *UserController) GetUserByTel() {
  216. tel := c.GetString(":tel")
  217. user, err := c.dao.GetUserByTel(tel)
  218. if err != nil {
  219. utils.LogError("获取用户信息失败: " + err.Error())
  220. c.ResponseError(
  221. errors.New("获取用户信息失败"),
  222. http.StatusInternalServerError,
  223. )
  224. }
  225. c.ResponseJSON(user)
  226. }
  227. // GetForbidUsers 获取所有禁止人员信息
  228. func (c *UserController) GetForbidUsers() {
  229. // caseid := c.GetString("caseid")
  230. // if caseid == "" {
  231. // c.ResponseError(errors.New("没有案场信息"))
  232. // }
  233. users, err := c.dao.GetForbidUsers()
  234. if err != nil {
  235. utils.LogError("获取禁止人员信息失败: " + err.Error())
  236. c.ResponseError(errors.New("获取禁止人员信息失败"))
  237. }
  238. c.ResponseJSON(users)
  239. }
  240. // SaveForbidUser 保存禁止人员信息
  241. func (c *UserController) SaveForbidUser() {
  242. userid := c.GetString(":userid")
  243. forbidtype := c.GetString(":type")
  244. err := c.dao.SaveForbidUser(userid, forbidtype)
  245. if err != nil {
  246. utils.LogError("保存禁止人员信息失败: " + err.Error())
  247. c.ResponseError(errors.New("保存禁止人员信息失败"))
  248. }
  249. c.ResponseJSON("操作成功")
  250. }
  251. // OpenForbidUser 开启禁止人员
  252. func (c *UserController) OpenForbidUser() {
  253. userid := c.GetString(":userid")
  254. forbidtype := c.GetString(":type")
  255. err := c.dao.OpenForbidUser(userid, forbidtype)
  256. if err != nil {
  257. utils.LogError("开启禁止人员信息失败: " + err.Error())
  258. c.ResponseError(errors.New("开启禁止人员信息失败"))
  259. }
  260. c.ResponseJSON("操作成功")
  261. }
  262. // GetCaseUserByType 根据用户类型获取用户信息
  263. func (c *UserController) GetCaseUserByType() {
  264. usertype := c.GetString(":type")
  265. users, err := c.dao.GetCaseUserByType(usertype)
  266. if err != nil {
  267. utils.LogError("获取人员信息失败: " + err.Error())
  268. c.ResponseError(errors.New("获取人员信息失败"))
  269. }
  270. c.ResponseJSON(users)
  271. }
  272. // GetCaseUserByID 根据id获取用户详情
  273. func (c *UserController) GetCaseUserByID() {
  274. userid := c.GetString(":id")
  275. userdetail, err := c.dao.GetCaseUserByUserID(userid)
  276. if err != nil {
  277. utils.LogError("获取人员信息失败: " + err.Error())
  278. c.ResponseError(errors.New("获取人员信息失败"))
  279. }
  280. c.ResponseJSON(userdetail)
  281. }
  282. func (c *UserController) GetMyRecommendCode() {
  283. user := c.Context.Get("user").(model.SysUser)
  284. if user.UserId == "" {
  285. utils.LogError("获取人员推荐码失败")
  286. c.ResponseError(errors.New("获取人员推荐码失败"))
  287. }
  288. c.ResponseJSON(user.RecommendCode)
  289. }