沈阳玫苑物业管理后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

508 lines
14 KiB

  1. package controllers
  2. import (
  3. "lapp_-wy/conf"
  4. "lapp_-wy/utils"
  5. "lapp_-wy/web/middleware/glog"
  6. "lapp_-wy/web/middleware/jwts"
  7. "lapp_-wy/web/models"
  8. "lapp_-wy/web/supports"
  9. "lapp_-wy/web/supports/vo"
  10. "github.com/kataras/iris"
  11. "io"
  12. "log"
  13. "net/http"
  14. "strings"
  15. "time"
  16. )
  17. //用户登录
  18. func Login(ctx iris.Context) {
  19. user := new(models.Usertab)
  20. if err := ctx.ReadJSON(user); err != nil {
  21. log := new(models.LeitServerLog)
  22. log.File = "user_controller.go"
  23. log.Level = "debug1"
  24. log.Function = "Login"
  25. log.Message = error.Error(err)
  26. log.Operator = user.Userid
  27. log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
  28. log.InsertRecord()
  29. supports.Error(ctx, iris.StatusPaymentRequired, supports.LoginFailur, nil)
  30. return
  31. }
  32. //日志
  33. glog.InfoExt("日志测试","开始1")
  34. mUser := new(models.Usertab)
  35. mUser.Pid = user.Pid
  36. mUser.Userid = user.Userid
  37. has, err := mUser.GetUserByUsername()
  38. mUser.Clipped()
  39. if err != nil {
  40. log := new(models.LeitServerLog)
  41. log.File = "user_controller.go"
  42. log.Level = "debug2"
  43. log.Function = "Login"
  44. log.Message = error.Error(err)
  45. log.Operator = user.Userid
  46. log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
  47. log.InsertRecord()
  48. supports.Error(ctx, iris.StatusPaymentRequired, supports.LoginFailur, nil)
  49. return
  50. }
  51. if !has { // 用户名不正确
  52. supports.Error(ctx, iris.StatusPaymentRequired, supports.UsernameFailur, nil)
  53. return
  54. }
  55. ckPassword, err := utils.CompareHashAndPassword(mUser.Password, user.Password)
  56. if !ckPassword {
  57. supports.Error(ctx, iris.StatusPaymentRequired, supports.PasswordFailur, nil)
  58. return
  59. }
  60. token, err := jwts.GenerateToken(mUser)
  61. if err != nil {
  62. log := new(models.LeitServerLog)
  63. log.File = "user_controller.go"
  64. log.Level = "debug"
  65. log.Function = "Login"
  66. log.Message = "创建token失败"
  67. log.Operator = user.Userid
  68. log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
  69. log.InsertRecord()
  70. supports.Error(ctx, iris.StatusInternalServerError, supports.TokenCreateFailur, nil)
  71. return
  72. }
  73. log := new(models.LeitServerLog)
  74. log.File = "user_controller.go"
  75. log.Level = "info"
  76. log.Function = "Login"
  77. log.Message = "登录成功"
  78. log.Operator = user.Userid
  79. log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
  80. log.InsertRecord()
  81. supports.Ok(ctx, supports.LoginSuccess, vo.TansformUserVO(token, mUser))
  82. return
  83. }
  84. //车间列表
  85. func CourtsTable(ctx iris.Context) {
  86. me := new(models.Courttab)
  87. plants, err := me.GetCourts()
  88. if err != nil {
  89. log := new(models.LeitServerLog)
  90. log.File = "user_controller.go"
  91. log.Level = "debug"
  92. log.Function = "PlantsTable"
  93. log.Message = "车间查询失败"
  94. log.Operator = ""
  95. log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
  96. log.InsertRecord()
  97. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  98. return
  99. }
  100. supports.Ok(ctx, supports.Success, plants)
  101. }
  102. // @Summary 获取用户角色和职位
  103. // @Description 获取JSON
  104. // @Tags 用户
  105. // @Success 200 {object} supports.Ok "{"code": 200,msg, "data": [...]}"
  106. // @Router /user/getuserinfo [get]
  107. // @Security
  108. func GetUserInfo(ctx iris.Context) {
  109. var roles = make([]string, 1)
  110. user, ok := jwts.ParseToken(ctx)
  111. utils.TrimStruct(user, *user)
  112. if !ok {
  113. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  114. return
  115. }
  116. roles[0] = user.Role
  117. var permissions = make([]string, 1)
  118. permissions[0] = "*:*:*"
  119. RoleMenu := models.RoleMenu{}
  120. RoleMenu.RoleId = user.RoleId
  121. var mp = make(map[string]interface{})
  122. mp["roles"] = roles
  123. if user.Userid == "admin" {
  124. mp["permissions"] = permissions
  125. } else {
  126. list, _ := RoleMenu.GetPermis()
  127. mp["permissions"] = list
  128. }
  129. mUser := new(models.Usertab)
  130. mUser.Pid = user.Pid
  131. mUser.Userid = user.Userid
  132. ok, err := mUser.GetUserByUsername()
  133. mUser.Clipped()
  134. if !ok || err != nil {
  135. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  136. return
  137. }
  138. mp["introduction"] = " am a super administrator"
  139. mp["avatar"] = "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif"
  140. if mUser.Avatar != "" {
  141. mp["avatar"] = mUser.Avatar
  142. }
  143. mp["name"] = mUser.Nickname
  144. utils.TrimStruct(&mp, mp)
  145. supports.Ok(ctx, supports.Success, mp)
  146. }
  147. // @Summary 列表数据
  148. // @Description 获取JSON
  149. // @Tags 用户
  150. // @Param username query string false "username"
  151. // @Success 200 {string} string "{"code": 200, "data": [...]}"
  152. // @Success 200 {string} string "{"code": -1, "message": "抱歉未找到相关信息"}"
  153. // @Router /api/v1/sysUserList [get]
  154. // @Security Bearer
  155. func GetSysUserList(ctx iris.Context) {
  156. user, ok := jwts.ParseToken(ctx)
  157. utils.TrimStruct(user, *user)
  158. if !ok {
  159. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  160. return
  161. }
  162. var data models.Usertab
  163. var err error
  164. var pageSize = 10
  165. var pageIndex = 1
  166. size := ctx.URLParam("pageSize")
  167. if size != "" {
  168. pageSize = utils.ValueToInt(size, 0)
  169. }
  170. index := ctx.URLParam("pageIndex")
  171. if index != "" {
  172. pageIndex = utils.ValueToInt(index, 0)
  173. }
  174. data.Userid = ctx.URLParam("userid")
  175. data.Status = ctx.URLParam("status")
  176. data.Phone = ctx.URLParam("phone")
  177. data.Pid = user.Pid
  178. result, count, err := data.GetPage(pageSize, pageIndex)
  179. if err != nil {
  180. supports.Error(ctx, iris.StatusBadRequest, "抱歉未找到相关信息", nil)
  181. return
  182. }
  183. res := make(map[string]interface{})
  184. res["result"] = result
  185. res["count"] = count
  186. res["pageIndex"] = pageIndex
  187. res["pageSize"] = pageSize
  188. supports.Ok(ctx, "成功", res)
  189. }
  190. // @Summary 获取用户
  191. // @Description 获取JSON
  192. // @Tags 用户
  193. // @Param userId path int true "用户编码"
  194. // @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
  195. // @Router /api/v1/sysUser/{userId} [get]
  196. // @Security
  197. func GetSysUser(ctx iris.Context) {
  198. user, ok := jwts.ParseToken(ctx)
  199. utils.TrimStruct(user, *user)
  200. if !ok {
  201. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  202. return
  203. }
  204. var SysUser models.Usertab
  205. SysUser.Userid = ctx.Params().Get("userId")
  206. SysUser.Pid = user.Pid
  207. result, err := SysUser.Get()
  208. if err != nil {
  209. supports.Error(ctx, iris.StatusBadRequest, "抱歉未找到相关信息", nil)
  210. return
  211. }
  212. var SysRole models.Roletab
  213. roles, err := SysRole.GetList()
  214. roleIds := make([]int, 0)
  215. roleIds = append(roleIds, result.RoleId)
  216. data := make(map[string]interface{})
  217. data["data"] = result
  218. data["roleIds"] = roleIds
  219. data["roles"] = roles
  220. supports.Ok(ctx, supports.OptionSuccess, data)
  221. }
  222. // @Summary 获取当前登录用户
  223. // @Description 获取JSON
  224. // @Tags 个人中心
  225. // @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
  226. // @Router /admin/user/profile [get]
  227. // @Security
  228. func GetSysUserProfile(ctx iris.Context) {
  229. user, ok := jwts.ParseToken(ctx)
  230. utils.TrimStruct(user, *user)
  231. if !ok {
  232. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  233. return
  234. }
  235. var SysUser models.Usertab
  236. SysUser.Userid = user.Userid
  237. result, err := SysUser.Get()
  238. if err != nil {
  239. supports.Error(ctx, iris.StatusBadRequest, "抱歉未找到相关信息", nil)
  240. return
  241. }
  242. var SysRole models.Roletab
  243. //获取角色列表
  244. roles, err := SysRole.GetList()
  245. roleIds := make([]int, 0)
  246. roleIds = append(roleIds, result.RoleId)
  247. data := make(map[string]interface{})
  248. data["data"] = result
  249. data["roleIds"] = roleIds
  250. data["roles"] = roles
  251. supports.Ok(ctx, supports.OptionSuccess, data)
  252. }
  253. // @Summary 获取用户角色
  254. // @Description 获取JSON
  255. // @Tags 用户
  256. // @Success 200 {object} app.Response "{"code": 200, "data": [...]}"
  257. // @Router /api/v1/sysUser [get]
  258. // @Security
  259. func GetSysUserInit(ctx iris.Context) {
  260. var SysRole models.Roletab
  261. roles, err := SysRole.GetList()
  262. if err != nil {
  263. supports.Error(ctx, iris.StatusBadRequest, "抱歉未找到相关信息", nil)
  264. return
  265. }
  266. mp := make(map[string]interface{}, 0)
  267. mp["roles"] = roles
  268. supports.Ok(ctx, supports.OptionSuccess, mp)
  269. }
  270. // @Summary 创建用户
  271. // @Description 获取JSON
  272. // @Tags 用户
  273. // @Accept application/json
  274. // @Product application/json
  275. // @Param data body models.SysUser true "用户数据"
  276. // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
  277. // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
  278. // @Router /api/v1/sysUser [post]
  279. func InsertSysUser(ctx iris.Context) {
  280. user, ok := jwts.ParseToken(ctx)
  281. utils.TrimStruct(user, *user)
  282. if !ok {
  283. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  284. return
  285. }
  286. uinfo := new(models.Usertab)
  287. if err := ctx.ReadJSON(uinfo); err != nil {
  288. log := new(models.LeitServerLog)
  289. log.File = "user_controller.go"
  290. log.Level = "debug"
  291. log.Function = "InsertSysUser"
  292. log.Message = "json解析失败"
  293. log.Operator = ""
  294. log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
  295. log.InsertRecord()
  296. supports.Error(ctx, iris.StatusInternalServerError, "json解析错误", nil)
  297. return
  298. }
  299. uinfo.Lastmodify = user.Lastmodify
  300. uinfo.Password = "123456"
  301. uinfo.Createtime = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
  302. uinfo.Pid = user.Pid
  303. id, err := uinfo.Insert()
  304. if err != nil {
  305. supports.Error(ctx, iris.StatusInternalServerError, "添加失败", nil)
  306. return
  307. }
  308. supports.Ok(ctx, supports.OptionSuccess, id)
  309. }
  310. // @Summary 修改用户数据
  311. // @Description 获取JSON
  312. // @Tags 用户
  313. // @Accept application/json
  314. // @Product application/json
  315. // @Param data body models.SysUser true "body"
  316. // @Success 200 {string} string "{"code": 200, "message": "修改成功"}"
  317. // @Success 200 {string} string "{"code": -1, "message": "修改失败"}"
  318. // @Router /api/v1/sysuser/{userId} [put]
  319. func UpdateSysUser(ctx iris.Context) {
  320. user, ok := jwts.ParseToken(ctx)
  321. utils.TrimStruct(user, *user)
  322. if !ok {
  323. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  324. return
  325. }
  326. data := new(models.Usertab)
  327. if err := ctx.ReadJSON(data); err != nil {
  328. supports.Error(ctx, iris.StatusInternalServerError, "json解析错误", nil)
  329. return
  330. }
  331. data.Pid = user.Pid
  332. data.Lastmodify = user.Userid
  333. result, err := data.Update(data.Userid)
  334. if err != nil {
  335. supports.Error(ctx, iris.StatusInternalServerError, "更新失败", nil)
  336. return
  337. }
  338. supports.Ok(ctx, supports.OptionSuccess, result)
  339. }
  340. // @Summary 删除用户数据
  341. // @Description 删除数据
  342. // @Tags 用户
  343. // @Param userId path int true "userId"
  344. // @Success 200 {string} string "{"code": 200, "message": "删除成功"}"
  345. // @Success 200 {string} string "{"code": -1, "message": "删除失败"}"
  346. // @Router /api/v1/sysuser/{userId} [delete]
  347. func DeleteSysUser(ctx iris.Context) {
  348. user, ok := jwts.ParseToken(ctx)
  349. utils.TrimStruct(user, *user)
  350. if !ok {
  351. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  352. return
  353. }
  354. var data models.Usertab
  355. data.Lastmodify = user.Userid
  356. userId := ctx.Params().Get("userId")
  357. ids := strings.Split(userId, ",")
  358. result, err := data.BatchDelete(ids)
  359. if err != nil {
  360. supports.Error(ctx, iris.StatusInternalServerError, "删除失败", nil)
  361. return
  362. }
  363. supports.Ok(ctx, supports.OptionSuccess, result)
  364. }
  365. // @Summary 修改头像
  366. // @Description 获取JSON
  367. // @Tags 用户
  368. // @Accept multipart/form-data
  369. // @Param file formData file true "file"
  370. // @Success 200 {string} string "{"code": 200, "message": "添加成功"}"
  371. // @Success 200 {string} string "{"code": -1, "message": "添加失败"}"
  372. // @Router /api/v1/user/profileAvatar [post]
  373. func InsetSysUserAvatar(ctx iris.Context) {
  374. user, ok := jwts.ParseToken(ctx)
  375. utils.TrimStruct(user, *user)
  376. if !ok {
  377. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  378. return
  379. }
  380. //获取通过iris.WithPostMaxMemory获取的最大上传值大小。
  381. maxSize := ctx.Application().ConfigurationReadOnly().GetPostMaxMemory()
  382. err := ctx.Request().ParseMultipartForm(maxSize)
  383. if err != nil {
  384. ctx.StatusCode(iris.StatusInternalServerError)
  385. ctx.WriteString(err.Error())
  386. return
  387. }
  388. form := ctx.Request().MultipartForm
  389. files := form.File["upload[]"]
  390. guid := utils.MakeOrderSn(user.Userid)
  391. filPath := "public/uploadfile/" + guid + ".jpg"
  392. savePath := "web/public/uploadfile/" + guid + ".jpg"
  393. for _, file := range files {
  394. // 上传文件至指定目录
  395. savePath,_ := utils.GetCurrentPath(savePath)
  396. err := utils.SaveUploadedFile(file, savePath)
  397. if err != nil {
  398. log.Printf("上传图片错误:%v", err)
  399. return
  400. }
  401. }
  402. sysuser := new(models.Usertab)
  403. sysuser.Userid = user.Userid
  404. sysuser.Pid = user.Pid
  405. sysuser.Avatar = "/" + filPath
  406. sysuser.Lastmodify = user.Userid
  407. _, err = sysuser.Update(sysuser.Userid)
  408. if err != nil {
  409. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  410. return
  411. }
  412. supports.Ok(ctx, "修改成功", filPath)
  413. }
  414. func SysUserUpdatePwd(ctx iris.Context) {
  415. user, ok := jwts.ParseToken(ctx)
  416. utils.TrimStruct(user, *user)
  417. if !ok {
  418. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  419. return
  420. }
  421. pwd := new(models.SysUserPwd)
  422. if err := ctx.ReadJSON(pwd); err != nil {
  423. log := new(models.LeitServerLog)
  424. log.File = "user_controller.go"
  425. log.Level = "debug"
  426. log.Function = "SysUserUpdatePwd"
  427. log.Message = "json解析失败"
  428. log.Operator = ""
  429. log.TimeStamp = utils.TimeFormat(time.Now(), "yyyyMMddHHmmss")
  430. log.InsertRecord()
  431. supports.Error(ctx, iris.StatusInternalServerError, "json解析错误", nil)
  432. return
  433. }
  434. sysuser := models.Usertab{}
  435. sysuser.Userid = user.Userid
  436. sysuser.Pid = user.Pid
  437. _, err := sysuser.SetPwd(pwd)
  438. if err != nil {
  439. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  440. return
  441. }
  442. supports.Ok(ctx, "密码修改成功", "")
  443. }
  444. //反代理图片
  445. func GetImg(ctx iris.Context) {
  446. imgpath := ctx.URLParam("imgpath")
  447. url := conf.Baseurl + imgpath
  448. res, err := http.Get(url)
  449. defer res.Body.Close() //不要泄露资源
  450. if err != nil {
  451. log.Println("获取文件错误")
  452. }
  453. io.Copy(ctx.ResponseWriter(), res.Body)
  454. }
  455. //查询所有用户
  456. func GetAllUsers(ctx iris.Context) {
  457. user, ok := jwts.ParseToken(ctx)
  458. utils.TrimStruct(user, *user)
  459. if !ok {
  460. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  461. return
  462. }
  463. sysuser := models.Usertab{}
  464. data, err := sysuser.AllUsers()
  465. if err != nil {
  466. supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
  467. return
  468. }
  469. supports.Ok(ctx, "成功", data)
  470. }