users.go 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_mini_crm/models"
  5. "eta/eta_mini_crm/models/request"
  6. "eta/eta_mini_crm/models/response"
  7. "eta/eta_mini_crm/utils"
  8. "fmt"
  9. "github.com/rdlucklib/rdluck_tools/paging"
  10. "strconv"
  11. "strings"
  12. "time"
  13. )
  14. // UsersController 用户
  15. type UsersController struct {
  16. BaseAuthController
  17. }
  18. // Add
  19. // @Title 新增用户
  20. // @Description 新增用户
  21. // @Param request body request.UsersAddReq true "type json string"
  22. // @Success 200 Ret=200 操作成功
  23. // @router /add [post]
  24. func (this *UsersController) Add() {
  25. br := new(models.BaseResponse).Init()
  26. defer func() {
  27. if br.ErrMsg == "" {
  28. br.IsSendEmail = false
  29. }
  30. this.Data["json"] = br
  31. this.ServeJSON()
  32. }()
  33. sysUser := this.SysUser
  34. if sysUser == nil {
  35. br.Msg = "请登录"
  36. br.ErrMsg = "请登录,SysUser Is Empty"
  37. br.Ret = 408
  38. return
  39. }
  40. var req request.UsersAddReq
  41. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  42. br.Msg = "参数解析异常"
  43. br.ErrMsg = fmt.Sprintf("参数解析异常, %v", e)
  44. return
  45. }
  46. req.RealName = strings.TrimSpace(req.RealName)
  47. if req.RealName == "" {
  48. br.Msg = "请输入用户姓名"
  49. return
  50. }
  51. req.AreaCode = strings.TrimSpace(req.AreaCode)
  52. if req.AreaCode == "" {
  53. br.Msg = "请选择手机号区号"
  54. return
  55. }
  56. req.Mobile = strings.TrimSpace(req.Mobile)
  57. if req.Mobile == "" {
  58. br.Msg = "请输入手机号"
  59. return
  60. }
  61. if req.AreaCode == utils.AreaCodeMainland && !utils.ValidateMobileFormatat(req.Mobile) {
  62. br.Msg = "手机号格式有误"
  63. return
  64. }
  65. // 销售如果是空的那么创建人即为销售
  66. var (
  67. sellerId, userLevelId int
  68. sellerName, companyName, userLevelName string
  69. )
  70. if req.SellerId > 0 {
  71. sellerId = req.SellerId
  72. }
  73. userLevelId = req.UserLevelId
  74. if req.CompanyId > 0 {
  75. companyOb := new(models.Company)
  76. companyItem, e := companyOb.GetItemById(req.CompanyId)
  77. if e != nil {
  78. if e.Error() == utils.ErrNoRow() {
  79. br.Msg = "所选机构不存在,请刷新页面"
  80. return
  81. }
  82. br.Msg = "操作失败"
  83. br.ErrMsg = fmt.Sprintf("获取机构失败, %v", e)
  84. return
  85. }
  86. companyName = companyItem.CompanyName
  87. // 未传销售ID那么取机构销售
  88. if sellerId <= 0 {
  89. sellerId = companyItem.SellerId
  90. }
  91. // 继承机构的权限等级
  92. userLevelId = companyItem.UserLevelId
  93. }
  94. if sellerId > 0 {
  95. sellerItem, e := models.GetSysUserById(sellerId)
  96. if e != nil {
  97. if e.Error() == utils.ErrNoRow() {
  98. br.Msg = "所选营业部不存在,请刷新页面"
  99. return
  100. }
  101. br.Msg = "操作失败"
  102. br.ErrMsg = fmt.Sprintf("获取营业部销售失败, %v", e)
  103. return
  104. }
  105. sellerName = sellerItem.SysRealName
  106. }
  107. if userLevelId > 0 {
  108. levelOb := new(models.UserLevel)
  109. levelItem, e := levelOb.GetItemById(userLevelId)
  110. if e != nil {
  111. if e.Error() == utils.ErrNoRow() {
  112. br.Msg = "所选用户等级不存在,请刷新页面"
  113. return
  114. }
  115. br.Msg = "操作失败"
  116. br.ErrMsg = fmt.Sprintf("获取用户等级失败, %v", e)
  117. return
  118. }
  119. userLevelName = levelItem.LevelName
  120. }
  121. // 校验手机号是否存在
  122. usersOb := new(models.Users)
  123. {
  124. cond := fmt.Sprintf(` AND %s = ?`, usersOb.Cols().Mobile)
  125. pars := make([]interface{}, 0)
  126. pars = append(pars, req.Mobile)
  127. exist, e := usersOb.GetItemByCondition(cond, pars, "")
  128. if e != nil && e.Error() != utils.ErrNoRow() {
  129. br.Msg = "操作失败"
  130. br.ErrMsg = fmt.Sprintf("获取重复手机号失败, %v", e)
  131. return
  132. }
  133. if exist != nil && exist.UserId > 0 {
  134. br.Msg = "手机号已存在"
  135. return
  136. }
  137. }
  138. usersOb.RealName = req.RealName
  139. usersOb.Mobile = req.Mobile
  140. usersOb.AreaCode = req.AreaCode
  141. usersOb.SellerId = sellerId
  142. usersOb.SellerName = sellerName
  143. usersOb.SysUserId = sysUser.SysUserId
  144. usersOb.SysUserRealName = sysUser.SysRealName
  145. usersOb.CompanyId = req.CompanyId
  146. usersOb.CompanyName = companyName
  147. usersOb.Status = models.UserStatusFormal
  148. usersOb.AuthStatus = models.AuthStatusOpen
  149. usersOb.CreateTime = time.Now().Local()
  150. usersOb.ModifyTime = time.Now().Local()
  151. usersOb.UserLevelId = userLevelId
  152. usersOb.UserLevelName = userLevelName
  153. if e := usersOb.Create(); e != nil {
  154. br.Msg = "操作失败"
  155. br.ErrMsg = fmt.Sprintf("新增用户失败, %v", e)
  156. return
  157. }
  158. // 操作记录
  159. go func() {
  160. recordOb := new(models.CompanyUserOperateRecord)
  161. recordOb.UserId = usersOb.UserId
  162. recordOb.Remark = fmt.Sprintf("%s新增用户", sysUser.SysRealName)
  163. recordOb.SysUserId = sysUser.SysUserId
  164. recordOb.SysUserRealName = sysUser.SysRealName
  165. recordOb.CreateTime = time.Now().Local()
  166. if e := recordOb.Create(); e != nil {
  167. utils.FileLog.Info(fmt.Sprintf("新增操作记录失败, UserId: %d, ErrMsg: %v", usersOb.UserId, e))
  168. }
  169. }()
  170. br.Ret = 200
  171. br.Msg = "操作成功"
  172. br.Success = true
  173. }
  174. // Edit
  175. // @Title 编辑用户
  176. // @Description 编辑用户
  177. // @Param request body request.UsersEditReq true "type json string"
  178. // @Success 200 Ret=200 操作成功
  179. // @router /edit [post]
  180. func (this *UsersController) Edit() {
  181. br := new(models.BaseResponse).Init()
  182. defer func() {
  183. if br.ErrMsg == "" {
  184. br.IsSendEmail = false
  185. }
  186. this.Data["json"] = br
  187. this.ServeJSON()
  188. }()
  189. sysUser := this.SysUser
  190. if sysUser == nil {
  191. br.Msg = "请登录"
  192. br.ErrMsg = "请登录,SysUser Is Empty"
  193. br.Ret = 408
  194. return
  195. }
  196. var req request.UsersEditReq
  197. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  198. br.Msg = "参数解析异常"
  199. br.ErrMsg = fmt.Sprintf("参数解析异常, %v", e)
  200. return
  201. }
  202. if req.UserId <= 0 {
  203. br.Msg = "参数有误"
  204. br.ErrMsg = fmt.Sprintf("参数有误, UserId: %d", req.UserId)
  205. return
  206. }
  207. req.RealName = strings.TrimSpace(req.RealName)
  208. if req.RealName == "" {
  209. br.Msg = "请输入用户姓名"
  210. return
  211. }
  212. req.AreaCode = strings.TrimSpace(req.AreaCode)
  213. if req.AreaCode == "" {
  214. br.Msg = "请选择手机号区号"
  215. return
  216. }
  217. req.Mobile = strings.TrimSpace(req.Mobile)
  218. if req.Mobile == "" {
  219. br.Msg = "请输入手机号"
  220. return
  221. }
  222. if req.AreaCode == utils.AreaCodeMainland && !utils.ValidateMobileFormatat(req.Mobile) {
  223. br.Msg = "手机号格式有误"
  224. return
  225. }
  226. // 销售如果是空的那么创建人即为销售
  227. var sellerName, companyName string
  228. var userLevelId int
  229. var userLevelName string
  230. if req.SellerId <= 0 {
  231. req.SellerId = sysUser.SysUserId
  232. sellerName = sysUser.SysRealName
  233. }
  234. if req.SellerId > 0 {
  235. sellerItem, e := models.GetSysUserById(req.SellerId)
  236. if e != nil {
  237. if e.Error() == utils.ErrNoRow() {
  238. br.Msg = "所选营业部不存在,请刷新页面"
  239. return
  240. }
  241. br.Msg = "操作失败"
  242. br.ErrMsg = fmt.Sprintf("获取营业部销售失败, %v", e)
  243. return
  244. }
  245. sellerName = sellerItem.SysRealName
  246. }
  247. userLevelId = req.UserLevelId
  248. if req.CompanyId > 0 {
  249. companyOb := new(models.Company)
  250. companyItem, e := companyOb.GetItemById(req.CompanyId)
  251. if e != nil {
  252. if e.Error() == utils.ErrNoRow() {
  253. br.Msg = "所选机构不存在,请刷新页面"
  254. return
  255. }
  256. br.Msg = "操作失败"
  257. br.ErrMsg = fmt.Sprintf("获取机构失败, %v", e)
  258. return
  259. }
  260. companyName = companyItem.CompanyName
  261. userLevelId = companyItem.UserLevelId
  262. }
  263. if userLevelId > 0 {
  264. levelOb := new(models.UserLevel)
  265. levelItem, e := levelOb.GetItemById(userLevelId)
  266. if e != nil {
  267. if e.Error() == utils.ErrNoRow() {
  268. br.Msg = "所选用户等级不存在,请刷新页面"
  269. return
  270. }
  271. br.Msg = "操作失败"
  272. br.ErrMsg = fmt.Sprintf("获取用户等级失败, %v", e)
  273. return
  274. }
  275. userLevelName = levelItem.LevelName
  276. }
  277. usersOb := new(models.Users)
  278. userItem, e := usersOb.GetItemById(req.UserId)
  279. if e != nil {
  280. if e.Error() == utils.ErrNoRow() {
  281. br.Msg = "用户不存在,请刷新页面"
  282. return
  283. }
  284. br.Msg = "获取失败"
  285. br.ErrMsg = fmt.Sprintf("获取用户失败, %v", e)
  286. return
  287. }
  288. // 校验手机号是否存在
  289. {
  290. cond := fmt.Sprintf(` AND %s = ? AND %s <> ?`, usersOb.Cols().Mobile, usersOb.Cols().PrimaryId)
  291. pars := make([]interface{}, 0)
  292. pars = append(pars, req.Mobile, req.UserId)
  293. exist, e := usersOb.GetItemByCondition(cond, pars, "")
  294. if e != nil && e.Error() != utils.ErrNoRow() {
  295. br.Msg = "操作失败"
  296. br.ErrMsg = fmt.Sprintf("获取重复手机号失败, %v", e)
  297. return
  298. }
  299. if exist != nil && exist.UserId > 0 {
  300. br.Msg = "手机号已存在"
  301. return
  302. }
  303. }
  304. updateCols := []string{usersOb.Cols().RealName, usersOb.Cols().Mobile, usersOb.Cols().AreaCode, usersOb.Cols().UserLevelId, usersOb.Cols().UserLevelName}
  305. userItem.RealName = req.RealName
  306. userItem.Mobile = req.Mobile
  307. userItem.AreaCode = req.AreaCode
  308. userItem.UserLevelId = userLevelId
  309. userItem.UserLevelName = userLevelName
  310. if req.SellerId > 0 {
  311. userItem.SellerId = req.SellerId
  312. userItem.SellerName = sellerName
  313. updateCols = append(updateCols, usersOb.Cols().SellerId, usersOb.Cols().SellerName)
  314. }
  315. if req.CompanyId > 0 {
  316. userItem.CompanyId = req.CompanyId
  317. userItem.CompanyName = companyName
  318. updateCols = append(updateCols, usersOb.Cols().CompanyId, usersOb.Cols().CompanyName)
  319. }
  320. userItem.ModifyTime = time.Now().Local()
  321. if e := userItem.Update(updateCols); e != nil {
  322. br.Msg = "操作失败"
  323. br.ErrMsg = fmt.Sprintf("编辑用户失败, %v", e)
  324. return
  325. }
  326. // 操作记录
  327. go func() {
  328. recordOb := new(models.CompanyUserOperateRecord)
  329. recordOb.UserId = userItem.UserId
  330. recordOb.Remark = fmt.Sprintf("%s编辑用户", sysUser.SysRealName)
  331. recordOb.SysUserId = sysUser.SysUserId
  332. recordOb.SysUserRealName = sysUser.SysRealName
  333. recordOb.CreateTime = time.Now().Local()
  334. if e := recordOb.Create(); e != nil {
  335. utils.FileLog.Info(fmt.Sprintf("新增操作记录失败, UserId: %d, ErrMsg: %v", userItem.UserId, e))
  336. }
  337. }()
  338. br.Ret = 200
  339. br.Msg = "操作成功"
  340. br.Success = true
  341. }
  342. // CheckAdd
  343. // @Title 新增用户校验
  344. // @Description 新增用户校验
  345. // @Param request body request.UsersAddReq true "type json string"
  346. // @Success 200 Ret=200 操作成功
  347. // @router /add/check [post]
  348. func (this *UsersController) CheckAdd() {
  349. br := new(models.BaseResponse).Init()
  350. defer func() {
  351. if br.ErrMsg == "" {
  352. br.IsSendEmail = false
  353. }
  354. this.Data["json"] = br
  355. this.ServeJSON()
  356. }()
  357. sysUser := this.SysUser
  358. if sysUser == nil {
  359. br.Msg = "请登录"
  360. br.ErrMsg = "请登录,SysUser Is Empty"
  361. br.Ret = 408
  362. return
  363. }
  364. var req request.UsersAddReq
  365. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  366. br.Msg = "参数解析异常"
  367. br.ErrMsg = fmt.Sprintf("参数解析异常, %v", e)
  368. return
  369. }
  370. req.AreaCode = strings.TrimSpace(req.AreaCode)
  371. if req.AreaCode == "" {
  372. br.Msg = "请选择手机号区号"
  373. return
  374. }
  375. req.Mobile = strings.TrimSpace(req.Mobile)
  376. if req.Mobile == "" {
  377. br.Msg = "请输入手机号"
  378. return
  379. }
  380. if req.AreaCode == utils.AreaCodeMainland && !utils.ValidateMobileFormatat(req.Mobile) {
  381. br.Msg = "手机号格式有误"
  382. return
  383. }
  384. // 校验手机号是否存在,区分不同情况
  385. usersOb := new(models.Users)
  386. cond := fmt.Sprintf(` AND %s = ?`, usersOb.Cols().Mobile)
  387. pars := make([]interface{}, 0)
  388. pars = append(pars, req.Mobile)
  389. exist, e := usersOb.GetItemByCondition(cond, pars, "")
  390. if e != nil && e.Error() != utils.ErrNoRow() {
  391. br.Msg = "操作失败"
  392. br.ErrMsg = fmt.Sprintf("获取重复手机号失败, %v", e)
  393. return
  394. }
  395. resp := new(response.UsersAddCheckResp)
  396. resp.Tips = "校验通过"
  397. if exist != nil {
  398. resp.UserId = exist.UserId
  399. // 试用客户
  400. if exist.Status == models.UserStatusTrial {
  401. resp.CheckResult = 1
  402. resp.Tips = "该客户已存在试用用户列表,是否确认将该用户移至当前客户下?"
  403. }
  404. // 个人投资者
  405. if exist.Status == models.UserStatusFormal && exist.CompanyId == 0 {
  406. resp.CheckResult = 2
  407. resp.Tips = "该用户已存在个人投资列表"
  408. }
  409. // 机构联系人
  410. if exist.Status == models.UserStatusFormal && exist.CompanyId > 0 {
  411. companyOb := new(models.Company)
  412. company, e := companyOb.GetItemById(exist.CompanyId)
  413. if e != nil {
  414. br.Msg = "操作失败"
  415. br.ErrMsg = fmt.Sprintf("获取联系人机构失败, %v", e)
  416. return
  417. }
  418. resp.CheckResult = 3
  419. resp.Tips = fmt.Sprintf("该用户已存在【%s】客户下", company.CompanyName)
  420. }
  421. }
  422. br.Data = resp
  423. br.Ret = 200
  424. br.Msg = "操作成功"
  425. br.Success = true
  426. }
  427. // Move
  428. // @Title 移动用户
  429. // @Description 移动用户
  430. // @Param request body request.UsersMoveReq true "type json string"
  431. // @Success 200 Ret=200 操作成功
  432. // @router /move [post]
  433. func (this *UsersController) Move() {
  434. br := new(models.BaseResponse).Init()
  435. defer func() {
  436. if br.ErrMsg == "" {
  437. br.IsSendEmail = false
  438. }
  439. this.Data["json"] = br
  440. this.ServeJSON()
  441. }()
  442. sysUser := this.SysUser
  443. if sysUser == nil {
  444. br.Msg = "请登录"
  445. br.ErrMsg = "请登录,SysUser Is Empty"
  446. br.Ret = 408
  447. return
  448. }
  449. var req request.UsersMoveReq
  450. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  451. br.Msg = "参数解析异常"
  452. br.ErrMsg = fmt.Sprintf("参数解析异常, %v", e)
  453. return
  454. }
  455. if req.UserId <= 0 {
  456. br.Msg = "请选择用户"
  457. return
  458. }
  459. if req.CompanyId <= 0 {
  460. br.Msg = "请选择机构"
  461. return
  462. }
  463. req.RealName = strings.TrimSpace(req.RealName)
  464. usersOb := new(models.Users)
  465. userItem, e := usersOb.GetItemById(req.UserId)
  466. if e != nil {
  467. if e.Error() == utils.ErrNoRow() {
  468. br.Msg = "用户不存在,请刷新页面"
  469. return
  470. }
  471. br.Msg = "操作失败"
  472. br.ErrMsg = fmt.Sprintf("获取用户失败, %v", e)
  473. return
  474. }
  475. companyOb := new(models.Company)
  476. companyItem, e := companyOb.GetItemById(req.CompanyId)
  477. if e != nil {
  478. if e.Error() == utils.ErrNoRow() {
  479. br.Msg = "机构不存在,请刷新页面"
  480. return
  481. }
  482. br.Msg = "操作失败"
  483. br.ErrMsg = fmt.Sprintf("获取机构失败, %v", e)
  484. return
  485. }
  486. userItem.CompanyId = req.CompanyId
  487. userItem.CompanyName = companyItem.CompanyName
  488. userItem.AuthStatus = companyItem.AuthStatus
  489. userItem.Status = models.UserStatusFormal
  490. userItem.ModifyTime = time.Now().Local()
  491. userItem.UserLevelId = companyItem.UserLevelId
  492. userItem.UserLevelName = companyItem.UserLevelName
  493. updateCols := []string{
  494. usersOb.Cols().CompanyId, usersOb.Cols().CompanyName, usersOb.Cols().AuthStatus, usersOb.Cols().Status,
  495. usersOb.Cols().ModifyTime, usersOb.Cols().UserLevelId, usersOb.Cols().UserLevelName,
  496. }
  497. if req.RealName != "" {
  498. userItem.RealName = req.RealName
  499. updateCols = append(updateCols, usersOb.Cols().RealName)
  500. }
  501. if e = userItem.Update(updateCols); e != nil {
  502. br.Msg = "操作失败"
  503. br.ErrMsg = fmt.Sprintf("移动用户失败, %v", e)
  504. return
  505. }
  506. // 操作记录
  507. go func() {
  508. recordOb := new(models.CompanyUserOperateRecord)
  509. recordOb.UserId = userItem.UserId
  510. recordOb.Remark = fmt.Sprintf("%s移动用户至【%s】", sysUser.SysRealName, companyItem.CompanyName)
  511. recordOb.SysUserId = sysUser.SysUserId
  512. recordOb.SysUserRealName = sysUser.SysRealName
  513. recordOb.CreateTime = time.Now().Local()
  514. if e := recordOb.Create(); e != nil {
  515. utils.FileLog.Info(fmt.Sprintf("新增操作记录失败, UserId: %d, MoveCompanyId: %d, ErrMsg: %v", userItem.UserId, companyItem.CompanyId, e))
  516. }
  517. }()
  518. br.Ret = 200
  519. br.Msg = "操作成功"
  520. br.Success = true
  521. }
  522. // Remove
  523. // @Title 删除用户
  524. // @Description 删除用户
  525. // @Param request body request.UsersRemoveReq true "type json string"
  526. // @Success 200 Ret=200 操作成功
  527. // @router /remove [post]
  528. func (this *UsersController) Remove() {
  529. br := new(models.BaseResponse).Init()
  530. defer func() {
  531. if br.ErrMsg == "" {
  532. br.IsSendEmail = false
  533. }
  534. this.Data["json"] = br
  535. this.ServeJSON()
  536. }()
  537. sysUser := this.SysUser
  538. if sysUser == nil {
  539. br.Msg = "请登录"
  540. br.ErrMsg = "请登录,SysUser Is Empty"
  541. br.Ret = 408
  542. return
  543. }
  544. var req request.UsersRemoveReq
  545. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  546. br.Msg = "参数解析异常"
  547. br.ErrMsg = fmt.Sprintf("参数解析异常, %v", e)
  548. return
  549. }
  550. if req.UserId <= 0 {
  551. br.Msg = "参数有误"
  552. br.ErrMsg = fmt.Sprintf("用户ID参数有误, UserId: %d", req.UserId)
  553. return
  554. }
  555. userOb := new(models.Users)
  556. usersItem, e := userOb.GetItemById(req.UserId)
  557. if e != nil {
  558. if e.Error() == utils.ErrNoRow() {
  559. br.Ret = 200
  560. br.Msg = "操作成功"
  561. br.Success = true
  562. return
  563. }
  564. br.Msg = "操作失败"
  565. br.ErrMsg = fmt.Sprintf("获取机构失败, %v", e)
  566. return
  567. }
  568. // 操作权限校验
  569. //if sysUser.SysRoleId != utils.AdminRoleId {
  570. // if sysUser.SysUserId != usersItem.SysUserId && sysUser.SysUserId != usersItem.SellerId {
  571. // br.Msg = "无权操作"
  572. // return
  573. // }
  574. //}
  575. // 删除用户并移除微信用户关联
  576. if e = userOb.RemoveUsersAndUserRecord(req.UserId); e != nil {
  577. br.Msg = "操作失败"
  578. br.ErrMsg = fmt.Sprintf("删除用户并移除微信用户关联失败, %v", e)
  579. return
  580. }
  581. // 操作记录
  582. go func() {
  583. recordOb := new(models.CompanyUserOperateRecord)
  584. recordOb.UserId = usersItem.UserId
  585. recordOb.Remark = fmt.Sprintf("%s删除用户", sysUser.SysRealName)
  586. recordOb.SysUserId = sysUser.SysUserId
  587. recordOb.SysUserRealName = sysUser.SysRealName
  588. recordOb.CreateTime = time.Now().Local()
  589. if e := recordOb.Create(); e != nil {
  590. utils.FileLog.Info(fmt.Sprintf("新增操作记录失败, UserId: %d, ErrMsg: %v", usersItem.UserId, e))
  591. }
  592. }()
  593. br.Ret = 200
  594. br.Msg = "操作成功"
  595. br.Success = true
  596. }
  597. // TransFormal
  598. // @Title 转正式
  599. // @Description 转正式
  600. // @Param request body request.UsersTransFormalReq true "type json string"
  601. // @Success 200 Ret=200 操作成功
  602. // @router /trans_formal [post]
  603. func (this *UsersController) TransFormal() {
  604. br := new(models.BaseResponse).Init()
  605. defer func() {
  606. if br.ErrMsg == "" {
  607. br.IsSendEmail = false
  608. }
  609. this.Data["json"] = br
  610. this.ServeJSON()
  611. }()
  612. sysUser := this.SysUser
  613. if sysUser == nil {
  614. br.Msg = "请登录"
  615. br.ErrMsg = "请登录,SysUser Is Empty"
  616. br.Ret = 408
  617. return
  618. }
  619. var req request.UsersTransFormalReq
  620. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  621. br.Msg = "参数解析异常"
  622. br.ErrMsg = fmt.Sprintf("参数解析异常, %v", e)
  623. return
  624. }
  625. if req.UserId <= 0 {
  626. br.Msg = "参数有误"
  627. br.ErrMsg = fmt.Sprintf("用户ID有误, UserId: %d", req.UserId)
  628. return
  629. }
  630. req.RealName = strings.TrimSpace(req.RealName)
  631. if req.RealName == "" {
  632. br.Msg = "请输入用户姓名"
  633. return
  634. }
  635. // 用户校验
  636. usersOb := new(models.Users)
  637. userItem, e := usersOb.GetItemById(req.UserId)
  638. if e != nil {
  639. if e.Error() == utils.ErrNoRow() {
  640. br.Msg = "用户不存在,请刷新页面"
  641. return
  642. }
  643. br.Msg = "操作失败"
  644. br.ErrMsg = fmt.Sprintf("获取用户失败, %v", e)
  645. return
  646. }
  647. if userItem.Status != models.UserStatusTrial {
  648. br.Msg = "该用户不是试用客户"
  649. return
  650. }
  651. // 用户类型
  652. var (
  653. companyId int
  654. companyName string
  655. authStatus int
  656. sellerId int
  657. sellerName string
  658. userLevelId int
  659. userLevelName string
  660. )
  661. switch req.UserType {
  662. case models.UserTypePerson:
  663. if req.SellerId <= 0 {
  664. br.Msg = "请选择营业部"
  665. return
  666. }
  667. authStatus = models.AuthStatusOpen
  668. seller, e := models.GetSysUserById(req.SellerId)
  669. if e != nil {
  670. if e.Error() == utils.ErrNoRow() {
  671. br.Msg = "销售不存在,请刷新页面后重试"
  672. return
  673. }
  674. br.Msg = "操作失败"
  675. br.ErrMsg = fmt.Sprintf("获取销售失败, %v", e)
  676. return
  677. }
  678. sellerId = req.SellerId
  679. sellerName = seller.SysRealName
  680. case models.UserTypeCompany:
  681. if req.CompanyId <= 0 {
  682. br.Msg = "请选择所属机构"
  683. return
  684. }
  685. companyOb := new(models.Company)
  686. companyItem, e := companyOb.GetItemById(req.CompanyId)
  687. if e != nil {
  688. if e.Error() == utils.ErrNoRow() {
  689. br.Msg = "所选机构不存在,请刷新页面"
  690. return
  691. }
  692. br.Msg = "操作失败"
  693. br.ErrMsg = fmt.Sprintf("获取机构失败, %v", e)
  694. return
  695. }
  696. companyId = companyItem.CompanyId
  697. companyName = companyItem.CompanyName
  698. authStatus = companyItem.AuthStatus
  699. sellerId = companyItem.SellerId
  700. sellerName = companyItem.SellerName
  701. userLevelId = companyItem.UserLevelId
  702. userLevelName = companyItem.UserLevelName
  703. default:
  704. br.Msg = "客户类型有误"
  705. br.ErrMsg = fmt.Sprintf("客户类型有误, UserType: %d", req.UserType)
  706. return
  707. }
  708. // 转正式
  709. userItem.RealName = req.RealName
  710. userItem.SellerId = sellerId
  711. userItem.SellerName = sellerName
  712. userItem.CompanyId = companyId
  713. userItem.CompanyName = companyName
  714. userItem.SysUserId = sysUser.SysUserId
  715. userItem.SysUserRealName = sysUser.SysRealName
  716. userItem.Status = models.UserStatusFormal
  717. userItem.AuthStatus = authStatus
  718. userItem.ModifyTime = time.Now().Local()
  719. userItem.UserLevelId = userLevelId
  720. userItem.UserLevelName = userLevelName
  721. updateCols := []string{
  722. usersOb.Cols().RealName, usersOb.Cols().SellerId, usersOb.Cols().SellerName, usersOb.Cols().CompanyId, usersOb.Cols().CompanyName,
  723. usersOb.Cols().SysUserId, usersOb.Cols().SysUserRealName, usersOb.Cols().Status, usersOb.Cols().AuthStatus, usersOb.Cols().ModifyTime,
  724. usersOb.Cols().UserLevelId, usersOb.Cols().UserLevelName,
  725. }
  726. if e := userItem.Update(updateCols); e != nil {
  727. br.Msg = "操作失败"
  728. br.ErrMsg = fmt.Sprintf("用户转正式失败, %v", e)
  729. return
  730. }
  731. // 操作记录
  732. go func() {
  733. recordOb := new(models.CompanyUserOperateRecord)
  734. recordOb.UserId = userItem.UserId
  735. recordOb.Remark = fmt.Sprintf("%s试用转正式", sysUser.SysRealName)
  736. recordOb.SysUserId = sysUser.SysUserId
  737. recordOb.SysUserRealName = sysUser.SysRealName
  738. recordOb.CreateTime = time.Now().Local()
  739. if e := recordOb.Create(); e != nil {
  740. utils.FileLog.Info(fmt.Sprintf("新增操作记录失败, UserId: %d, ErrMsg: %v", userItem.UserId, e))
  741. }
  742. }()
  743. br.Ret = 200
  744. br.Msg = "操作成功"
  745. br.Success = true
  746. }
  747. // Detail
  748. // @Title 用户详情
  749. // @Description 用户详情
  750. // @Param UserId query int true "用户ID"
  751. // @Success 200 {object} models.UsersItem
  752. // @router /detail [get]
  753. func (this *UsersController) Detail() {
  754. br := new(models.BaseResponse).Init()
  755. defer func() {
  756. if br.ErrMsg == "" {
  757. br.IsSendEmail = false
  758. }
  759. this.Data["json"] = br
  760. this.ServeJSON()
  761. }()
  762. sysUser := this.SysUser
  763. if sysUser == nil {
  764. br.Msg = "请登录"
  765. br.ErrMsg = "请登录,SysUser Is Empty"
  766. br.Ret = 408
  767. return
  768. }
  769. userId, _ := this.GetInt("UserId")
  770. if userId <= 0 {
  771. br.Msg = "参数有误"
  772. br.ErrMsg = fmt.Sprintf("参数有误, %d", userId)
  773. return
  774. }
  775. usersOb := new(models.Users)
  776. userItem, e := usersOb.GetItemById(userId)
  777. if e != nil {
  778. if e.Error() == utils.ErrNoRow() {
  779. br.Msg = "用户不存在,请刷新页面"
  780. return
  781. }
  782. br.Msg = "获取失败"
  783. br.ErrMsg = fmt.Sprintf("获取用户失败, %v", e)
  784. return
  785. }
  786. resp := userItem.Format2Item()
  787. br.Data = resp
  788. br.Ret = 200
  789. br.Msg = "获取成功"
  790. br.Success = true
  791. }
  792. // PageList
  793. // @Title 用户列表-分页
  794. // @Description 用户列表-分页
  795. // @Param request body request.UsersListForm true "type json string"
  796. // @Success 200 {object} response.UsersPageListResp
  797. // @router /page_list [get]
  798. func (this *UsersController) PageList() {
  799. br := new(models.BaseResponse).Init()
  800. defer func() {
  801. if br.ErrMsg == "" {
  802. br.IsSendEmail = false
  803. }
  804. this.Data["json"] = br
  805. this.ServeJSON()
  806. }()
  807. sysUser := this.SysUser
  808. if sysUser == nil {
  809. br.Msg = "请登录"
  810. br.ErrMsg = "请登录,SysUser Is Empty"
  811. br.Ret = 408
  812. return
  813. }
  814. params := new(request.UsersListForm)
  815. if e := this.ParseForm(params); e != nil {
  816. br.Msg = "参数解析异常"
  817. br.ErrMsg = fmt.Sprintf("参数解析异常, %v", e)
  818. return
  819. }
  820. resp := new(response.UsersPageListResp)
  821. usersOb := new(models.Users)
  822. // 仅超管/创建人/对应销售可见
  823. cond := ``
  824. pars := make([]interface{}, 0)
  825. if params.UserStatus != models.UserStatusTrial && params.CompanyId <= 0 && sysUser.SysRoleId != utils.AdminRoleId {
  826. cond += fmt.Sprintf(` AND (%s = ? OR %s = ?)`, usersOb.Cols().SysUserId, usersOb.Cols().SellerId)
  827. pars = append(pars, sysUser.SysUserId, sysUser.SysUserId)
  828. }
  829. // 筛选项
  830. {
  831. // 机构筛选,默认为个人
  832. cond += fmt.Sprintf(` AND %s = ?`, usersOb.Cols().CompanyId)
  833. pars = append(pars, params.CompanyId)
  834. // 用户类型
  835. if params.UserStatus > 0 {
  836. if params.UserStatus != models.UserStatusTrial && params.UserStatus != models.UserStatusFormal {
  837. br.Msg = "用户类型有误"
  838. br.ErrMsg = fmt.Sprintf("参数用户类型有误, UserStatus: %d", params.UserStatus)
  839. return
  840. }
  841. cond += fmt.Sprintf(` AND %s = ?`, usersOb.Cols().Status)
  842. pars = append(pars, params.UserStatus)
  843. }
  844. // 关键词(联系人名称/联系人手机号)
  845. keywords := strings.TrimSpace(params.Keywords)
  846. if keywords != "" {
  847. kw := fmt.Sprint("%", keywords, "%")
  848. cond += fmt.Sprintf(` AND (%s LIKE ? OR %s LIKE ?)`, usersOb.Cols().RealName, usersOb.Cols().Mobile)
  849. pars = append(pars, kw, kw)
  850. }
  851. // 营业部
  852. params.SellerIds = strings.TrimSpace(params.SellerIds)
  853. if params.SellerIds != "" {
  854. var sellerIds []int
  855. idArr := strings.Split(params.SellerIds, ",")
  856. for _, v := range idArr {
  857. id, _ := strconv.Atoi(v)
  858. if id > 0 {
  859. sellerIds = append(sellerIds, id)
  860. }
  861. }
  862. if len(sellerIds) == 0 {
  863. page := paging.GetPaging(params.CurrentIndex, params.PageSize, 0)
  864. resp.Paging = page
  865. resp.List = make([]*models.UsersItem, 0)
  866. br.Data = resp
  867. br.Ret = 200
  868. br.Msg = "获取成功"
  869. br.Success = true
  870. return
  871. }
  872. cond += fmt.Sprintf(` AND %s IN (%s)`, usersOb.Cols().SellerId, utils.GetOrmInReplace(len(sellerIds)))
  873. pars = append(pars, sellerIds)
  874. }
  875. // 创建时间区间
  876. params.StartTime = strings.TrimSpace(params.StartTime)
  877. params.EndTime = strings.TrimSpace(params.EndTime)
  878. if params.StartTime != "" && params.EndTime != "" {
  879. _, e := time.ParseInLocation(utils.FormatDate, params.StartTime, time.Local)
  880. if e != nil {
  881. br.Msg = "开始时间格式有误"
  882. return
  883. }
  884. _, e = time.ParseInLocation(utils.FormatDate, params.EndTime, time.Local)
  885. if e != nil {
  886. br.Msg = "结束时间格式有误"
  887. return
  888. }
  889. cond += fmt.Sprintf(` AND (%s BETWEEN ? AND ?)`, usersOb.Cols().CreateTime)
  890. pars = append(pars, fmt.Sprintf("%s 00:00:00", params.StartTime), fmt.Sprintf("%s 23:59:59", params.EndTime))
  891. }
  892. // 用户等级
  893. if params.UserLevelId > 0 {
  894. cond += fmt.Sprintf(` AND %s = ?`, usersOb.Cols().UserLevelId)
  895. pars = append(pars, params.UserLevelId)
  896. }
  897. }
  898. // 分页
  899. var startSize int
  900. if params.PageSize <= 0 {
  901. params.PageSize = utils.PageSize20
  902. }
  903. if params.CurrentIndex <= 0 {
  904. params.CurrentIndex = 1
  905. }
  906. startSize = utils.StartIndex(params.CurrentIndex, params.PageSize)
  907. // 排序
  908. orderRule := fmt.Sprintf(`%s DESC`, usersOb.Cols().CreateTime)
  909. if params.SortField > 0 && params.SortRule > 0 {
  910. fieldMap := map[int]string{
  911. 1: usersOb.Cols().CreateTime, 2: usersOb.Cols().RegisterTime, 3: usersOb.Cols().LastReadTime, 4: usersOb.Cols().ReadTimes,
  912. }
  913. ruleMap := map[int]string{1: "ASC", 2: "DESC"}
  914. if fieldMap[params.SortField] != "" && ruleMap[params.SortRule] != "" {
  915. orderRule = fmt.Sprintf("%s %s", fieldMap[params.SortField], ruleMap[params.SortRule])
  916. }
  917. }
  918. total, e := usersOb.GetCountByCondition(cond, pars)
  919. if e != nil {
  920. br.Msg = "获取失败"
  921. br.ErrMsg = fmt.Sprintf("获取用户总数失败, %v", e)
  922. return
  923. }
  924. list, e := usersOb.GetPageItemsByCondition(cond, pars, []string{}, orderRule, startSize, params.PageSize)
  925. if e != nil {
  926. br.Msg = "获取失败"
  927. br.ErrMsg = fmt.Sprintf("获取用户分页列表失败, %v", e)
  928. return
  929. }
  930. respList := make([]*models.UsersItem, 0)
  931. for _, v := range list {
  932. respList = append(respList, v.Format2Item())
  933. }
  934. page := paging.GetPaging(params.CurrentIndex, params.PageSize, total)
  935. resp.Paging = page
  936. resp.List = respList
  937. br.Data = resp
  938. br.Ret = 200
  939. br.Msg = "获取成功"
  940. br.Success = true
  941. }
  942. // Search
  943. // @Title 用户列表-搜索
  944. // @Description 用户列表-搜索
  945. // @Param request body request.UsersListForm true "type json string"
  946. // @Success 200 {object} response.UsersPageListResp
  947. // @router /search [get]
  948. func (this *UsersController) Search() {
  949. br := new(models.BaseResponse).Init()
  950. defer func() {
  951. if br.ErrMsg == "" {
  952. br.IsSendEmail = false
  953. }
  954. this.Data["json"] = br
  955. this.ServeJSON()
  956. }()
  957. sysUser := this.SysUser
  958. if sysUser == nil {
  959. br.Msg = "请登录"
  960. br.ErrMsg = "请登录,SysUser Is Empty"
  961. br.Ret = 408
  962. return
  963. }
  964. params := new(request.UsersListForm)
  965. if e := this.ParseForm(params); e != nil {
  966. br.Msg = "参数解析异常"
  967. br.ErrMsg = fmt.Sprintf("参数解析异常, %v", e)
  968. return
  969. }
  970. // 用户检索,所有人可见
  971. resp := new(response.UsersPageListResp)
  972. usersOb := new(models.Users)
  973. cond := ``
  974. pars := make([]interface{}, 0)
  975. // 关键词(机构名称/联系人名称/联系人手机号)
  976. keywords := strings.TrimSpace(params.Keywords)
  977. if keywords != "" {
  978. kw := fmt.Sprint("%", keywords, "%")
  979. cond += fmt.Sprintf(` AND (%s LIKE ? OR %s LIKE ? OR %s LIKE ?)`, usersOb.Cols().CompanyName, usersOb.Cols().RealName, usersOb.Cols().Mobile)
  980. pars = append(pars, kw, kw, kw)
  981. }
  982. // 分页
  983. var startSize int
  984. if params.PageSize <= 0 {
  985. params.PageSize = utils.PageSize20
  986. }
  987. if params.CurrentIndex <= 0 {
  988. params.CurrentIndex = 1
  989. }
  990. startSize = utils.StartIndex(params.CurrentIndex, params.PageSize)
  991. total, e := usersOb.GetCountByCondition(cond, pars)
  992. if e != nil {
  993. br.Msg = "获取失败"
  994. br.ErrMsg = fmt.Sprintf("获取用户总数失败, %v", e)
  995. return
  996. }
  997. list, e := usersOb.GetPageItemsByCondition(cond, pars, []string{}, "", startSize, params.PageSize)
  998. if e != nil {
  999. br.Msg = "获取失败"
  1000. br.ErrMsg = fmt.Sprintf("获取用户分页列表失败, %v", e)
  1001. return
  1002. }
  1003. respList := make([]*models.UsersItem, 0)
  1004. for _, v := range list {
  1005. respList = append(respList, v.Format2Item())
  1006. }
  1007. page := paging.GetPaging(params.CurrentIndex, params.PageSize, total)
  1008. resp.Paging = page
  1009. resp.List = respList
  1010. br.Data = resp
  1011. br.Ret = 200
  1012. br.Msg = "获取成功"
  1013. br.Success = true
  1014. }
  1015. // OperateRecords
  1016. // @Title 用户-操作记录
  1017. // @Description 用户列表-操作记录
  1018. // @Param UserId query int true "用户ID"
  1019. // @Success 200 {object} models.CompanyUserOperateRecordItem
  1020. // @router /operate_records [get]
  1021. func (this *UsersController) OperateRecords() {
  1022. br := new(models.BaseResponse).Init()
  1023. defer func() {
  1024. if br.ErrMsg == "" {
  1025. br.IsSendEmail = false
  1026. }
  1027. this.Data["json"] = br
  1028. this.ServeJSON()
  1029. }()
  1030. sysUser := this.SysUser
  1031. if sysUser == nil {
  1032. br.Msg = "请登录"
  1033. br.ErrMsg = "请登录,SysUser Is Empty"
  1034. br.Ret = 408
  1035. return
  1036. }
  1037. userId, _ := this.GetInt("UserId")
  1038. if userId <= 0 {
  1039. br.Msg = "参数有误"
  1040. br.ErrMsg = fmt.Sprintf("参数有误, %d", userId)
  1041. return
  1042. }
  1043. resp := make([]*models.CompanyUserOperateRecordItem, 0)
  1044. recordOb := new(models.CompanyUserOperateRecord)
  1045. cond := fmt.Sprintf(` AND %s = ?`, recordOb.Cols().UserId)
  1046. pars := make([]interface{}, 0)
  1047. pars = append(pars, userId)
  1048. list, e := recordOb.GetItemsByCondition(cond, pars, []string{}, "")
  1049. if e != nil {
  1050. br.Msg = "获取失败"
  1051. br.ErrMsg = fmt.Sprintf("获取操作记录列表失败, %v", e)
  1052. return
  1053. }
  1054. for _, v := range list {
  1055. resp = append(resp, v.Format2Item())
  1056. }
  1057. br.Data = resp
  1058. br.Ret = 200
  1059. br.Msg = "获取成功"
  1060. br.Success = true
  1061. }
  1062. // TransAuth
  1063. // @Title 切换阅读权限
  1064. // @Description 切换阅读权限
  1065. // @Param request body request.UsersTransAuthReq true "type json string"
  1066. // @Success 200 Ret=200 操作成功
  1067. // @router /trans_auth [post]
  1068. func (this *UsersController) TransAuth() {
  1069. br := new(models.BaseResponse).Init()
  1070. defer func() {
  1071. if br.ErrMsg == "" {
  1072. br.IsSendEmail = false
  1073. }
  1074. this.Data["json"] = br
  1075. this.ServeJSON()
  1076. }()
  1077. sysUser := this.SysUser
  1078. if sysUser == nil {
  1079. br.Msg = "请登录"
  1080. br.ErrMsg = "请登录,SysUser Is Empty"
  1081. br.Ret = 408
  1082. return
  1083. }
  1084. var req request.UsersTransAuthReq
  1085. if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  1086. br.Msg = "参数解析异常"
  1087. br.ErrMsg = fmt.Sprintf("参数解析异常, %v", e)
  1088. return
  1089. }
  1090. if req.UserId <= 0 {
  1091. br.Msg = "参数有误"
  1092. br.ErrMsg = fmt.Sprintf("参数有误, UserId: %d", req.UserId)
  1093. return
  1094. }
  1095. usersOb := new(models.Users)
  1096. usersItem, e := usersOb.GetItemById(req.UserId)
  1097. if e != nil {
  1098. if e.Error() == utils.ErrNoRow() {
  1099. br.Ret = 200
  1100. br.Msg = "操作成功"
  1101. br.Success = true
  1102. return
  1103. }
  1104. br.Msg = "操作失败"
  1105. br.ErrMsg = fmt.Sprintf("获取用户失败, %v", e)
  1106. return
  1107. }
  1108. // 操作权限校验
  1109. if sysUser.SysRoleId != utils.AdminRoleId {
  1110. if sysUser.SysUserId != usersItem.SysUserId && sysUser.SysUserId != usersItem.SellerId {
  1111. br.Msg = "无权操作"
  1112. return
  1113. }
  1114. }
  1115. transMapping := map[int]int{models.AuthStatusClose: models.AuthStatusOpen, models.AuthStatusOpen: models.AuthStatusClose}
  1116. optRemarkMapping := map[int]string{models.AuthStatusClose: "关闭", models.AuthStatusOpen: "开启"}
  1117. usersItem.AuthStatus = transMapping[usersItem.AuthStatus]
  1118. usersItem.ModifyTime = time.Now().Local()
  1119. updateCols := []string{usersOb.Cols().AuthStatus, usersOb.Cols().ModifyTime}
  1120. if e = usersItem.Update(updateCols); e != nil {
  1121. br.Msg = "操作失败"
  1122. br.ErrMsg = fmt.Sprintf("切换用户阅读权限失败, %v", e)
  1123. return
  1124. }
  1125. // 操作记录
  1126. go func() {
  1127. recordOb := new(models.CompanyUserOperateRecord)
  1128. recordOb.UserId = usersItem.UserId
  1129. recordOb.Remark = fmt.Sprintf("%s%s用户权限", sysUser.SysRealName, optRemarkMapping[usersItem.AuthStatus])
  1130. recordOb.SysUserId = sysUser.SysUserId
  1131. recordOb.SysUserRealName = sysUser.SysRealName
  1132. recordOb.CreateTime = time.Now().Local()
  1133. if e := recordOb.Create(); e != nil {
  1134. utils.FileLog.Info(fmt.Sprintf("新增操作记录失败, UserId: %d, ErrMsg: %v", usersItem.UserId, e))
  1135. }
  1136. }()
  1137. br.Ret = 200
  1138. br.Msg = "操作成功"
  1139. br.Success = true
  1140. }