user.go 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288
  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/services"
  8. "eta/eta_mini_crm/utils"
  9. "math"
  10. "os"
  11. "path/filepath"
  12. "strings"
  13. "time"
  14. "github.com/beego/beego/v2/client/orm"
  15. "github.com/rdlucklib/rdluck_tools/paging"
  16. "github.com/tealeg/xlsx"
  17. )
  18. type UserController struct {
  19. BaseAuthController
  20. }
  21. // Add
  22. // @Title 添加新客户
  23. // @Description 添加新客户
  24. // @Param request body request.UserAddReq true "type json string"
  25. // @Success 200 {object} request.UserAddReq
  26. // @router /add [post]
  27. func (this *UserController) Add() {
  28. br := new(models.BaseResponse).Init()
  29. defer func() {
  30. this.Data["json"] = br
  31. this.ServeJSON()
  32. }()
  33. var req request.UserAddReq
  34. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  35. if err != nil {
  36. br.Msg = "参数解析异常!"
  37. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  38. return
  39. }
  40. if req.RealName == "" {
  41. br.Msg = "请输入姓名"
  42. return
  43. }
  44. req.Phone = strings.TrimSpace(req.Phone)
  45. req.Email = strings.TrimSpace(req.Email)
  46. if req.Phone == "" && req.Email == "" {
  47. br.Msg = "至少输入一个手机号或邮箱"
  48. return
  49. }
  50. var userByPhone, userByEmail *models.User
  51. if req.Phone != "" {
  52. if req.AreaCode == "86" {
  53. if !utils.ValidateMobileFormatat(req.Phone) {
  54. br.Msg = "手机号格式有误, 请检查"
  55. return
  56. }
  57. }
  58. userByPhone, err = models.GetUserByPhone(req.Phone, req.AreaCode)
  59. if err != nil && err != orm.ErrNoRows {
  60. br.Msg = "添加用户失败"
  61. br.ErrMsg = "查询用户失败,系统错误,Err:" + err.Error()
  62. return
  63. }
  64. if userByPhone != nil {
  65. switch userByPhone.Status {
  66. case 0:
  67. userByPhone.Status = 2
  68. case 1:
  69. userByPhone.Status = 2
  70. default:
  71. br.Msg = "手机号已存在,请重新输入"
  72. return
  73. }
  74. }
  75. }
  76. if req.Email != "" {
  77. if !utils.ValidateEmailFormatat(req.Email) {
  78. br.Msg = "邮箱格式有误, 请检查"
  79. return
  80. }
  81. userByEmail, err = models.GetUserByEmail(req.Email)
  82. if err != nil && err != orm.ErrNoRows {
  83. br.Msg = "添加用户失败"
  84. br.ErrMsg = "查询用户失败,系统错误,Err:" + err.Error()
  85. return
  86. }
  87. if userByEmail != nil {
  88. switch userByEmail.Status {
  89. case 0:
  90. userByEmail.Status = 2
  91. case 1:
  92. userByEmail.Status = 2
  93. default:
  94. br.Msg = "邮箱已存在,请重新输入"
  95. return
  96. }
  97. }
  98. }
  99. if req.SellerId <= 0 {
  100. br.Msg = "请选择营业部/销售"
  101. return
  102. }
  103. if req.ValidStartTime == "" || req.ValidEndTime == "" {
  104. br.Msg = "请选择合理的有效期范围"
  105. return
  106. }
  107. validStartTime, err := time.Parse(utils.FormatDate, req.ValidStartTime)
  108. if err != nil {
  109. br.Msg = "错误的日期格式"
  110. return
  111. }
  112. validEndTime, err := time.Parse(utils.FormatDate, req.ValidEndTime)
  113. if err != nil {
  114. br.Msg = "错误的日期格式"
  115. return
  116. }
  117. if !validStartTime.Before(validEndTime) {
  118. br.Msg = "请选择合理的有效期范围"
  119. return
  120. }
  121. if req.Company == "" {
  122. br.Msg = "请输入所属公司"
  123. return
  124. }
  125. if userByPhone != nil && userByEmail != nil && userByPhone.UserId != userByEmail.UserId {
  126. br.Msg = "邮箱已存在,请重新输入"
  127. return
  128. }
  129. user := &models.User{}
  130. curTime := time.Now()
  131. if userByPhone == nil && userByEmail == nil {
  132. user.CreateTime = curTime
  133. user.ModifyTime = curTime
  134. }
  135. if userByEmail != nil {
  136. user = userByEmail
  137. }
  138. if userByPhone != nil {
  139. user = userByPhone
  140. }
  141. validStartTime = validStartTime.Local().Add(-time.Hour * 8)
  142. validEndTime = validEndTime.Local().Add(-time.Hour*8 + time.Hour*24 - time.Second)
  143. if curTime.Before(validEndTime) {
  144. user.Status = 2
  145. } else {
  146. br.Msg = "有效期截至时间必须大于当前时间"
  147. return
  148. }
  149. user.RealName = req.RealName
  150. user.AreaCode = req.AreaCode
  151. user.Phone = req.Phone
  152. user.Email = req.Email
  153. user.SellerId = req.SellerId
  154. user.ValidStartTime = validStartTime
  155. user.ValidEndTime = validEndTime
  156. user.Company = req.Company
  157. user.ModifyTime = curTime
  158. err = models.SaveUser(user, req.ChartPermission)
  159. if err != nil {
  160. br.Msg = "添加客户失败"
  161. br.ErrMsg = "添加客户失败,系统错误,Err:" + err.Error()
  162. return
  163. }
  164. if user.Status == 2 {
  165. userRecord := &models.UserChangeRecord{}
  166. userRecord.UserId = user.UserId
  167. userRecord.SysUserId = this.SysUser.SysUserId
  168. userRecord.Content = this.SysUser.SysRealName + "新增用户"
  169. userRecord.Insert()
  170. }
  171. br.Msg = "添加成功"
  172. br.Success = true
  173. br.Ret = 200
  174. }
  175. // edit
  176. // @Title 编辑客户
  177. // @Description 编辑客户
  178. // @Param request body request.UserEidtReq true "type json string"
  179. // @Success 200 {object} request.UserAddReq
  180. // @router /edit [post]
  181. func (this *UserController) Edit() {
  182. br := new(models.BaseResponse).Init()
  183. defer func() {
  184. this.Data["json"] = br
  185. this.ServeJSON()
  186. }()
  187. var req request.UserEditReq
  188. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  189. if err != nil {
  190. br.Msg = "参数解析异常!"
  191. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  192. return
  193. }
  194. if req.RealName == "" {
  195. br.Msg = "请输入姓名"
  196. return
  197. }
  198. req.Phone = strings.TrimSpace(req.Phone)
  199. req.Email = strings.TrimSpace(req.Email)
  200. if req.Phone == "" && req.Email == "" {
  201. br.Msg = "至少输入一个手机号或邮箱"
  202. return
  203. }
  204. if req.Phone != "" {
  205. if req.AreaCode == "86" {
  206. if !utils.ValidateMobileFormatat(req.Phone) {
  207. br.Msg = "手机号格式有误, 请检查"
  208. return
  209. }
  210. }
  211. user, err := models.GetUserByPhone(req.Phone, req.AreaCode)
  212. if err != nil && err != orm.ErrNoRows {
  213. br.Msg = "编辑用户失败"
  214. br.ErrMsg = "查询用户失败,系统错误,Err:" + err.Error()
  215. return
  216. }
  217. if user != nil && user.UserId != req.UserId {
  218. br.Msg = "手机号已存在,请重新输入"
  219. return
  220. }
  221. }
  222. if req.Email != "" {
  223. if !utils.ValidateEmailFormatat(req.Email) {
  224. br.Msg = "邮箱格式有误, 请检查"
  225. return
  226. }
  227. user, err := models.GetUserByEmail(req.Email)
  228. if err != nil && err != orm.ErrNoRows {
  229. br.Msg = "编辑用户失败"
  230. br.ErrMsg = "查询用户失败,系统错误,Err:" + err.Error()
  231. return
  232. }
  233. if user != nil && user.UserId != req.UserId {
  234. br.Msg = "邮箱已存在,请重新输入"
  235. return
  236. }
  237. }
  238. if req.SellerId <= 0 {
  239. br.Msg = "请选择营业部/销售"
  240. return
  241. }
  242. if req.ValidStartTime == "" || req.ValidEndTime == "" {
  243. br.Msg = "请选择合理的有效期范围"
  244. return
  245. }
  246. validStartTime, err := time.Parse(utils.FormatDate, req.ValidStartTime)
  247. if err != nil {
  248. br.Msg = "错误的日期格式"
  249. return
  250. }
  251. validStartTime = validStartTime.In(time.Local).Add(-time.Hour * 8)
  252. validEndTime, err := time.Parse(utils.FormatDate, req.ValidEndTime)
  253. if err != nil {
  254. br.Msg = "错误的日期格式"
  255. return
  256. }
  257. validEndTime = validEndTime.In(time.Local).Add(-time.Hour*8 + time.Hour*24 - time.Second)
  258. if !validStartTime.Before(validEndTime) {
  259. br.Msg = "请选择合理的有效期范围"
  260. return
  261. }
  262. if req.Company == "" {
  263. br.Msg = "请输入所属公司"
  264. return
  265. }
  266. if req.IsEnabled && time.Now().After(validEndTime) {
  267. br.Msg = "启用后,有效期必须大于当前时间"
  268. return
  269. }
  270. user, err := models.GetUserById(req.UserId)
  271. if err != nil {
  272. if err.Error() == utils.ErrNoRow() {
  273. br.Msg = "用户不存在或已删除,请重新刷新页面"
  274. br.ErrMsg = "用户不存在或已删除,请重新刷新页面,Err:" + err.Error()
  275. return
  276. }
  277. br.Msg = "编辑用户失败"
  278. br.ErrMsg = "编辑用户失败, 系统错误,Err:" + err.Error()
  279. return
  280. }
  281. user.RealName = req.RealName
  282. user.AreaCode = req.AreaCode
  283. user.Phone = req.Phone
  284. user.Email = req.Email
  285. user.SellerId = req.SellerId
  286. user.ValidStartTime = validStartTime
  287. user.ValidEndTime = validEndTime
  288. user.Company = req.Company
  289. user.ModifyTime = time.Now()
  290. // 当用户状态初始为潜在客户时,才更新创建时间
  291. if user.Status == utils.UserStatusPotential {
  292. user.CreateTime = time.Now()
  293. }
  294. oldStatus := user.Status
  295. if !req.IsEnabled {
  296. user.Status = 0
  297. } else {
  298. user.Status = 2
  299. }
  300. err = models.SaveUser(user, req.ChartPermission)
  301. if err != nil {
  302. br.Msg = "添加客户失败"
  303. br.ErrMsg = "添加客户失败,系统错误,Err:" + err.Error()
  304. return
  305. }
  306. record := &models.UserChangeRecord{}
  307. record.UserId = req.UserId
  308. record.SysUserId = this.SysUser.SysUserId
  309. if oldStatus == utils.UserStatusPotential && user.Status == utils.UserStatusFormal {
  310. record.Content = this.SysUser.SysRealName + "新增用户"
  311. } else {
  312. record.Content = this.SysUser.SysRealName + "编辑用户"
  313. }
  314. record.Insert()
  315. br.Msg = "编辑成功"
  316. br.Success = true
  317. br.Ret = 200
  318. }
  319. // Check
  320. // @Title 编辑客户
  321. // @Description 编辑客户
  322. // @Param request body request.UserEidtReq true "type json string"
  323. // @Success 200 {object} request.UserAddReq
  324. // @router /check [post]
  325. func (this *UserController) Check() {
  326. br := new(models.BaseResponse).Init()
  327. defer func() {
  328. this.Data["json"] = br
  329. this.ServeJSON()
  330. }()
  331. var req request.UserCheckReq
  332. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  333. if err != nil {
  334. br.Msg = "参数解析异常!"
  335. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  336. return
  337. }
  338. req.Phone = strings.TrimSpace(req.Phone)
  339. req.Email = strings.TrimSpace(req.Email)
  340. if req.Phone == "" && req.Email == "" {
  341. br.Msg = "至少输入一个手机号或邮箱"
  342. return
  343. }
  344. userCheckResp := new(response.UserCheckResp)
  345. if req.Phone != "" {
  346. if req.AreaCode == "86" {
  347. if !utils.ValidateMobileFormatat(req.Phone) {
  348. br.Msg = "手机号格式有误, 请检查"
  349. return
  350. }
  351. }
  352. user, err := models.GetUserByPhone(req.Phone, req.AreaCode)
  353. if err != nil && err != orm.ErrNoRows {
  354. br.Msg = "编辑用户失败"
  355. br.ErrMsg = "查询用户失败,系统错误,Err:" + err.Error()
  356. return
  357. }
  358. if user != nil {
  359. userCheckResp.UserId = user.UserId
  360. userCheckResp.Status = user.Status
  361. if user.Status == utils.UserStatusNo {
  362. br.Ret = 200
  363. br.Success = true
  364. br.Msg = "该用户已被禁用,确认启用并更新用户信息吗?"
  365. br.Data = userCheckResp
  366. return
  367. }
  368. if user.Status == utils.UserStatusPotential {
  369. br.Ret = 200
  370. br.Success = true
  371. br.Msg = "该用户已在潜在列表,确认转客户并更新用户信息吗?"
  372. br.Data = userCheckResp
  373. return
  374. }
  375. if user.Status == utils.UserStatusFormal {
  376. br.Msg = "手机号已存在,请重新输入"
  377. return
  378. }
  379. }
  380. }
  381. if req.Email != "" {
  382. if !utils.ValidateEmailFormatat(req.Email) {
  383. br.Msg = "邮箱格式有误, 请检查"
  384. return
  385. }
  386. user, err := models.GetUserByEmail(req.Email)
  387. if err != nil && err != orm.ErrNoRows {
  388. br.Msg = "编辑用户失败"
  389. br.ErrMsg = "查询用户失败,系统错误,Err:" + err.Error()
  390. return
  391. }
  392. if user != nil {
  393. userCheckResp.UserId = user.UserId
  394. if user.Status == 0 {
  395. br.Ret = 200
  396. br.Success = true
  397. br.Msg = "该用户已被禁用,确认启用并更新用户信息吗?"
  398. br.Data = userCheckResp
  399. return
  400. }
  401. if user.Status == 1 {
  402. br.Ret = 200
  403. br.Success = true
  404. br.Msg = "该用户已被禁用,确认启用并更新用户信息吗?"
  405. br.Data = userCheckResp
  406. return
  407. }
  408. if user.Status == 2 {
  409. br.Msg = "邮箱已存在,请重新输入"
  410. return
  411. }
  412. return
  413. }
  414. }
  415. br.Ret = 200
  416. br.Success = true
  417. br.Msg = "邮箱或手机号合格"
  418. }
  419. // List
  420. // @Title 用户列表
  421. // @Description 用户列表
  422. // @Param PageSize query int true "每页数据条数"
  423. // @Param CurrentIndex query int true "当前页页码,从1开始"
  424. // @Param SellerId query string true "销售id"
  425. // @Param Status query int true "用户状态"
  426. // @Param KeyWord query string true "手机号/邮箱/姓名"
  427. // @Param IsRegistered query string true "是否注册"
  428. // @Param IsSubscribed query string true "是否关注"
  429. // @Param RegisterStartDate query string true "注册开始时间"
  430. // @Param RegisterEndDate query string true "注册结束时间"
  431. // @Param CreateStartDate query string true "创建开始时间"
  432. // @Param CreateEndDate query string true "创建结束时间"
  433. // @Param SortParam query string true "排序字段"
  434. // @Param SortType query string true "排序方式"
  435. // @Success 200 {object} response.UserListResp
  436. // @router /list [get]
  437. func (this *UserController) List() {
  438. br := new(models.BaseResponse).Init()
  439. defer func() {
  440. this.Data["json"] = br
  441. this.ServeJSON()
  442. }()
  443. pageSize, _ := this.GetInt("PageSize")
  444. currentIndex, _ := this.GetInt("CurrentIndex")
  445. sellerIdStr := this.GetString("SellerId")
  446. status := this.GetString("Status")
  447. keyWord := this.GetString("KeyWord")
  448. IsRegistered := this.GetString("IsRegistered")
  449. IsSubscribed := this.GetString("IsSubscribed")
  450. registerStartDate := this.GetString("RegisterStartDate")
  451. registerEndDate := this.GetString("RegisterEndDate")
  452. createStartDate := this.GetString("CreateStartDate")
  453. createEndDate := this.GetString("CreateEndDate")
  454. sortParma := this.GetString("SortParam")
  455. sortType := this.GetString("SortType")
  456. var condition string
  457. var sortCondition string
  458. var pars []interface{}
  459. if keyWord != "" {
  460. condition += ` AND (u.real_name LIKE ? OR u.phone LIKE ? OR u.email LIKE ?) `
  461. pars = utils.GetLikeKeywordPars(pars, keyWord, 3)
  462. }
  463. if pageSize <= 0 {
  464. pageSize = utils.PageSize20
  465. } else if pageSize > utils.PageSize100 {
  466. pageSize = utils.PageSize100
  467. }
  468. if currentIndex <= 0 {
  469. currentIndex = 1
  470. }
  471. if sortParma != "" && sortType != "" {
  472. sortCondition = " ORDER BY "
  473. var param, sort string
  474. switch sortParma {
  475. case "RegisterTime":
  476. param = "u.register_time"
  477. case "CreateTime":
  478. param = "u.create_time"
  479. case "RestDate":
  480. param = "u.valid_end_time"
  481. }
  482. switch sortType {
  483. case "asc":
  484. sort = " ASC "
  485. case "desc":
  486. sort = " DESC "
  487. }
  488. if param != "" && sort != "" {
  489. sortCondition += param + " " + sort
  490. } else {
  491. sortCondition = ""
  492. }
  493. }
  494. if sortCondition == "" {
  495. sortCondition = " ORDER BY u.create_time DESC"
  496. }
  497. if sellerIdStr != "" {
  498. sellerIds := strings.Split(sellerIdStr, ",")
  499. if len(sellerIds) != 0 {
  500. condition += ` AND ( `
  501. for i, id := range sellerIds {
  502. if i == 0 {
  503. condition += ` u.seller_id = ? `
  504. pars = append(pars, id)
  505. } else {
  506. condition += ` OR u.seller_id = ? `
  507. pars = append(pars, id)
  508. }
  509. }
  510. condition += `) `
  511. }
  512. }
  513. switch status {
  514. case "禁用":
  515. condition += " AND u.status=? "
  516. pars = append(pars, 0)
  517. case "潜在":
  518. condition += " AND u.status=? "
  519. pars = append(pars, 1)
  520. case "正式":
  521. condition += " AND u.status=? "
  522. pars = append(pars, 2)
  523. case "":
  524. condition += " AND (u.status=? OR u.status=?) "
  525. pars = append(pars, 0, 2)
  526. }
  527. switch IsRegistered {
  528. case "是":
  529. condition += " AND u.is_registered=? "
  530. pars = append(pars, true)
  531. case "否":
  532. condition += " AND u.is_registered=? "
  533. pars = append(pars, false)
  534. }
  535. switch IsSubscribed {
  536. case "是":
  537. condition += " AND u.is_subscribed=? "
  538. pars = append(pars, true)
  539. case "否":
  540. condition += " AND u.is_subscribed=? "
  541. pars = append(pars, false)
  542. }
  543. if registerStartDate != "" {
  544. registerStartTime, er := time.Parse(utils.FormatDate, registerStartDate)
  545. if er != nil {
  546. br.Msg = "日期格式有误"
  547. return
  548. }
  549. condition += " AND u.register_time>=? "
  550. registerStartDateStr := registerStartTime.Format(utils.FormatDateTime)
  551. pars = append(pars, registerStartDateStr)
  552. }
  553. if registerEndDate != "" {
  554. registerEndTime, er := time.Parse(utils.FormatDate, registerEndDate)
  555. if er != nil {
  556. br.Msg = "日期格式有误"
  557. return
  558. }
  559. condition += " AND u.register_time<=? "
  560. // 结束时间包含今天
  561. registerEndTime = registerEndTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
  562. registerEndDateStr := registerEndTime.Format(utils.FormatDateTime)
  563. pars = append(pars, registerEndDateStr)
  564. }
  565. if createStartDate != "" {
  566. createStartTime, er := time.Parse(utils.FormatDate, createStartDate)
  567. if er != nil {
  568. br.Msg = "日期格式有误"
  569. return
  570. }
  571. condition += " AND u.create_time>=? "
  572. createStartDateStr := createStartTime.Format(utils.FormatDateTime)
  573. pars = append(pars, createStartDateStr)
  574. }
  575. if createEndDate != "" {
  576. createEndTime, er := time.Parse(utils.FormatDate, createEndDate)
  577. if er != nil {
  578. br.Msg = "日期格式有误"
  579. return
  580. }
  581. condition += " AND u.create_time<=? "
  582. // 结束时间包含今天
  583. createEndTime = createEndTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second)
  584. createEndDateStr := createEndTime.Format(utils.FormatDateTime)
  585. pars = append(pars, createEndDateStr)
  586. }
  587. if pageSize <= 0 {
  588. pageSize = utils.PageSize20
  589. } else if pageSize > utils.PageSize100 {
  590. pageSize = utils.PageSize100
  591. }
  592. if currentIndex <= 0 {
  593. currentIndex = 1
  594. }
  595. startSize := utils.StartIndex(currentIndex, pageSize)
  596. total, err := models.GetUserCount(condition, pars)
  597. if err != nil {
  598. br.Msg = "获取失败"
  599. br.ErrMsg = "获取失败,Err:" + err.Error()
  600. return
  601. }
  602. userList, err := models.GetUserListByConditonSort(condition, sortCondition, pars, startSize, pageSize)
  603. if err != nil {
  604. br.Msg = "查询用户失败"
  605. br.Msg = "查询用户失败,系统错误,Err:" + err.Error()
  606. return
  607. }
  608. for _, u := range userList {
  609. if u.ValidEndTime == "" {
  610. u.RestDate = 0
  611. } else {
  612. endTime, err := time.Parse(utils.FormatDateTime, u.ValidEndTime)
  613. if err != nil {
  614. br.Msg = "用户有效时间格式有误"
  615. br.ErrMsg = "用户有效时间格式有误,Err:" + err.Error()
  616. return
  617. }
  618. // 对天数向上取整
  619. daysBetween := int(math.Ceil(time.Until(endTime).Hours() / 24))
  620. if daysBetween < 0 {
  621. daysBetween = 0
  622. }
  623. u.RestDate = daysBetween
  624. }
  625. }
  626. page := paging.GetPaging(currentIndex, pageSize, total)
  627. resp := new(response.UserListResp)
  628. resp.Paging = page
  629. resp.List = userList
  630. br.Data = resp
  631. br.Ret = 200
  632. br.Success = true
  633. br.Msg = "获取成功"
  634. }
  635. // PotentialList
  636. // @Title 潜在用户列表
  637. // @Description 潜在用户列表
  638. // @Param PageSize query int true "每页数据条数"
  639. // @Param CurrentIndex query int true "当前页页码,从1开始"
  640. // @Param KeyWord query string true "手机号/邮箱"
  641. // @Param SellerDepartmentId query int true "营业部id"
  642. // @Param ApplyStatus query int true "申请状态"
  643. // @Param RegisterStartDate query string true "注册开始时间"
  644. // @Param RegisterEndDate query string true "注册结束时间"
  645. // @Param LastUpdateStartDate query string true "最后一次阅读开始时间"
  646. // @Param LastUpdateEndDate query string true "最后一次阅读结束时间"
  647. // @Param ApplyStartDate query string true "申请开始时间"
  648. // @Param ApplyEndDate query string true "申请结束时间"
  649. // @Param SortParam query string true "排序字段"
  650. // @Param SortType query string true "排序方式"
  651. // @Success 200 {object} response.UserListResp
  652. // @router /potential/list [get]
  653. func (this *UserController) PotentialList() {
  654. br := new(models.BaseResponse).Init()
  655. defer func() {
  656. this.Data["json"] = br
  657. this.ServeJSON()
  658. }()
  659. pageSize, _ := this.GetInt("PageSize")
  660. currentIndex, _ := this.GetInt("CurrentIndex")
  661. keyWord := this.GetString("KeyWord")
  662. sellerDepartmentId, _ := this.GetInt("SellerDepartmentId")
  663. applyStatus := this.GetString("ApplyStatus")
  664. applyStartDate := this.GetString("ApplyStartDate")
  665. applyEndDate := this.GetString("ApplyEndDate")
  666. registerStartDate := this.GetString("RegisterStartDate")
  667. registerEndDate := this.GetString("RegisterEndDate")
  668. lastUpdateStartDate := this.GetString("LastUpdateStartDate")
  669. lastUpdateEndDate := this.GetString("LastUpdateEndDate")
  670. sortParam := this.GetString("SortParam")
  671. sortType := this.GetString("SortType")
  672. userList, total, errMsg, msg, err := services.GetPotentialList(keyWord, sellerDepartmentId, applyStatus, pageSize, currentIndex, sortParam, sortType, registerStartDate, registerEndDate, lastUpdateStartDate, lastUpdateEndDate, applyStartDate, applyEndDate)
  673. if err != nil {
  674. if msg != "" {
  675. br.Msg = msg
  676. } else {
  677. br.Msg = "获取失败"
  678. }
  679. if errMsg != "" {
  680. br.ErrMsg = errMsg + ", Err:" + err.Error()
  681. } else {
  682. br.ErrMsg = "获取失败, Err:" + err.Error()
  683. }
  684. }
  685. resp := new(response.UserListResp)
  686. page := paging.GetPaging(currentIndex, pageSize, total)
  687. resp.Paging = page
  688. resp.List = userList
  689. br.Data = resp
  690. br.Ret = 200
  691. br.Success = true
  692. br.Msg = "获取成功"
  693. }
  694. // PotentialEdit
  695. // @Title 编辑潜在客户(转客户)
  696. // @Description 编辑潜在客户(转客户)
  697. // @Param request body request.UserEidtReq true "type json string"
  698. // @Success 200 {object} request.UserAddReq
  699. // @router /potential/edit [post]
  700. func (this *UserController) PotentialEdit() {
  701. br := new(models.BaseResponse).Init()
  702. defer func() {
  703. this.Data["json"] = br
  704. this.ServeJSON()
  705. }()
  706. var req request.UserEditReq
  707. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  708. if err != nil {
  709. br.Msg = "参数解析异常!"
  710. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  711. return
  712. }
  713. if req.RealName == "" {
  714. br.Msg = "请输入姓名"
  715. return
  716. }
  717. req.Phone = strings.TrimSpace(req.Phone)
  718. req.Email = strings.TrimSpace(req.Email)
  719. if req.Phone == "" && req.Email == "" {
  720. br.Msg = "至少输入一个手机号或邮箱"
  721. return
  722. }
  723. if req.Phone != "" {
  724. if req.AreaCode == "86" {
  725. if !utils.ValidateMobileFormatat(req.Phone) {
  726. br.Msg = "手机号格式有误, 请检查"
  727. return
  728. }
  729. }
  730. user, err := models.GetUserByPhone(req.Phone, req.AreaCode)
  731. if err != nil && err != orm.ErrNoRows {
  732. br.Msg = "编辑用户失败"
  733. br.ErrMsg = "查询用户失败,系统错误,Err:" + err.Error()
  734. return
  735. }
  736. if user != nil && user.UserId != req.UserId {
  737. br.Msg = "手机号已存在,请重新输入"
  738. return
  739. }
  740. }
  741. if req.Email != "" {
  742. if !utils.ValidateEmailFormatat(req.Email) {
  743. br.Msg = "邮箱格式有误, 请检查"
  744. return
  745. }
  746. user, err := models.GetUserByEmail(req.Email)
  747. if err != nil && err != orm.ErrNoRows {
  748. br.Msg = "编辑用户失败"
  749. br.ErrMsg = "查询用户失败,系统错误,Err:" + err.Error()
  750. return
  751. }
  752. if user != nil && user.UserId != req.UserId {
  753. br.Msg = "邮箱已存在,请重新输入"
  754. return
  755. }
  756. }
  757. if req.SellerId <= 0 {
  758. br.Msg = "请选择营业部/销售"
  759. return
  760. }
  761. if req.ValidStartTime == "" || req.ValidEndTime == "" {
  762. br.Msg = "请选择合理的有效期范围"
  763. return
  764. }
  765. validStartTime, err := time.Parse(utils.FormatDate, req.ValidStartTime)
  766. if err != nil {
  767. br.Msg = "错误的日期格式"
  768. return
  769. }
  770. validStartTime = validStartTime.In(time.Local).Add(-time.Hour * 8)
  771. validEndTime, err := time.Parse(utils.FormatDate, req.ValidEndTime)
  772. if err != nil {
  773. br.Msg = "错误的日期格式"
  774. return
  775. }
  776. validEndTime = validEndTime.In(time.Local).Add(-time.Hour*8 + time.Hour*24 - time.Second)
  777. if !validStartTime.Before(validEndTime) {
  778. br.Msg = "请选择合理的有效期范围"
  779. return
  780. }
  781. if req.Company == "" {
  782. br.Msg = "请输入所属公司"
  783. return
  784. }
  785. if req.IsEnabled && time.Now().After(validEndTime) {
  786. br.Msg = "启用后,有效期必须大于当前时间"
  787. return
  788. }
  789. user, err := models.GetUserById(req.UserId)
  790. if err != nil {
  791. if err.Error() == utils.ErrNoRow() {
  792. br.Msg = "用户不存在或已删除,请重新刷新页面"
  793. br.ErrMsg = "用户不存在或已删除,请重新刷新页面,Err:" + err.Error()
  794. return
  795. }
  796. br.Msg = "编辑用户失败"
  797. br.ErrMsg = "编辑用户失败, 系统错误,Err:" + err.Error()
  798. return
  799. }
  800. user.RealName = req.RealName
  801. user.AreaCode = req.AreaCode
  802. user.Phone = req.Phone
  803. user.Email = req.Email
  804. user.SellerId = req.SellerId
  805. user.ValidStartTime = validStartTime
  806. user.ValidEndTime = validEndTime
  807. user.Company = req.Company
  808. user.ModifyTime = time.Now()
  809. // 当用户状态初始为潜在客户时,才更新创建时间
  810. if user.Status == utils.UserStatusPotential {
  811. user.CreateTime = time.Now()
  812. }
  813. oldStatus := user.Status
  814. if !req.IsEnabled {
  815. user.Status = 0
  816. } else {
  817. user.Status = 2
  818. }
  819. err = models.SaveUser(user, req.ChartPermission)
  820. if err != nil {
  821. br.Msg = "添加客户失败"
  822. br.ErrMsg = "添加客户失败,系统错误,Err:" + err.Error()
  823. return
  824. }
  825. record := &models.UserChangeRecord{}
  826. record.UserId = req.UserId
  827. record.SysUserId = this.SysUser.SysUserId
  828. if oldStatus == utils.UserStatusPotential && user.Status == utils.UserStatusFormal {
  829. record.Content = this.SysUser.SysRealName + "新增用户"
  830. } else {
  831. record.Content = this.SysUser.SysRealName + "编辑用户"
  832. }
  833. record.Insert()
  834. br.Msg = "编辑成功"
  835. br.Success = true
  836. br.Ret = 200
  837. }
  838. // ExportPotentialExcel
  839. // @Title 导出潜在用户Excel
  840. // @Description 导出潜在用户Excel
  841. // @Param KeyWord query string true "手机号/邮箱"
  842. // @Param SellerDepartmentId query int true "营业部id"
  843. // @Param ApplyStatus query int true "申请状态"
  844. // @Param RegisterStartDate query string true "注册开始时间"
  845. // @Param RegisterEndDate query string true "注册结束时间"
  846. // @Param LastUpdateStartDate query string true "最后一次阅读开始时间"
  847. // @Param LastUpdateEndDate query string true "最后一次阅读结束时间"
  848. // @Param ApplyStartDate query string true "申请开始时间"
  849. // @Param ApplyEndDate query string true "申请结束时间"
  850. // @Success 200 {object} request.UserAddReq
  851. // @router /potential/export/excel [get]
  852. func (this *UserController) ExportPotentialExcel() {
  853. br := new(models.BaseResponse).Init()
  854. defer func() {
  855. this.Data["json"] = br
  856. this.ServeJSON()
  857. }()
  858. keyword := this.GetString("KeyWord")
  859. sellerDepartmentId, _ := this.GetInt("SellerDepartmentId")
  860. applyStatus := this.GetString("ApplyStatus")
  861. registerStartDate := this.GetString("RegisterStartDate")
  862. registerEndDate := this.GetString("RegisterEndDate")
  863. lastUpdateStartDate := this.GetString("LastUpdateStartDate")
  864. lastUpdateEndDate := this.GetString("LastUpdateEndDate")
  865. applyStartDate := this.GetString("ApplyStartDate")
  866. applyEndDate := this.GetString("ApplyEndDate")
  867. total, err := models.GetPotentialUserTotal()
  868. if err != nil {
  869. br.Msg = "获取数据失败"
  870. br.ErrMsg = "获取数据失败,系统错误,Err:" + err.Error()
  871. return
  872. }
  873. userList, _, errMsg, msg, err := services.GetPotentialList(keyword, sellerDepartmentId, applyStatus, total, 0, "", "", registerStartDate, registerEndDate, lastUpdateStartDate, lastUpdateEndDate, applyStartDate, applyEndDate)
  874. if err != nil {
  875. if msg != "" {
  876. br.Msg = msg
  877. } else {
  878. br.Msg = "获取失败"
  879. }
  880. if errMsg != "" {
  881. br.ErrMsg = errMsg + ", Err:" + err.Error()
  882. } else {
  883. br.ErrMsg = "获取失败, Err:" + err.Error()
  884. }
  885. }
  886. dir, _ := os.Executable()
  887. exPath := filepath.Dir(dir)
  888. downLoadnFilePath := exPath + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
  889. xlsxFile := xlsx.NewFile()
  890. sheetNew := new(xlsx.Sheet)
  891. sheetNew, err = xlsxFile.AddSheet("潜在客户列表")
  892. if err != nil {
  893. br.Msg = "创建sheet失败"
  894. br.ErrMsg = "创建sheet失败,系统错误,Err:" + err.Error()
  895. return
  896. }
  897. titleRow := sheetNew.AddRow()
  898. titleRow.AddCell().SetString("手机号")
  899. titleRow.AddCell().SetString("姓名")
  900. titleRow.AddCell().SetString("营业部")
  901. titleRow.AddCell().SetString("邮箱")
  902. titleRow.AddCell().SetString("注册时间")
  903. titleRow.AddCell().SetString("申请时间")
  904. titleRow.AddCell().SetString("最近一次阅读")
  905. titleRow.AddCell().SetString("累计阅读次数")
  906. titleRow.AddCell().SetString("申请状态")
  907. for _, user := range userList {
  908. row := sheetNew.AddRow()
  909. row.AddCell().SetString(user.Phone)
  910. row.AddCell().SetString(user.RealName)
  911. row.AddCell().SetString(user.SellerDepartmentName)
  912. row.AddCell().SetString(user.Email)
  913. row.AddCell().SetString(user.RegisterTime)
  914. row.AddCell().SetString(user.ApplyTime)
  915. row.AddCell().SetString(user.LastUpdateTime)
  916. row.AddCell().SetInt(user.ReadCnt)
  917. switch user.ApplyStatus {
  918. case 0:
  919. row.AddCell().SetString("未申请")
  920. case 1:
  921. row.AddCell().SetString("已申请")
  922. }
  923. }
  924. err = xlsxFile.Save(downLoadnFilePath)
  925. if err != nil {
  926. sheet, err := xlsxFile.AddSheet("无数据")
  927. if err != nil {
  928. br.Msg = "创建sheet失败"
  929. br.ErrMsg = "创建sheet失败,系统错误,Err:" + err.Error()
  930. return
  931. }
  932. rowSecName := sheet.AddRow()
  933. celSecName := rowSecName.AddCell()
  934. celSecName.SetString("无数据")
  935. err = xlsxFile.Save(downLoadnFilePath)
  936. if err != nil {
  937. br.Msg = "保存文件失败"
  938. br.ErrMsg = "保存文件失败,系统错误,Err:" + err.Error()
  939. return
  940. }
  941. }
  942. fileName := "潜在客户列表" + time.Now().Format("06.1.2")
  943. this.Ctx.Output.Download(downLoadnFilePath, fileName)
  944. defer os.Remove(downLoadnFilePath)
  945. br.Ret = 200
  946. br.Success = true
  947. br.Msg = "success"
  948. }
  949. // Detail
  950. // @Title 用户详情信息
  951. // @Description 用户详情信息
  952. // @Param UserId query int true "用户id"
  953. // @Success 200 {object} models.LoginResp
  954. // @router /detail [get]
  955. func (this *UserController) Detail() {
  956. br := new(models.BaseResponse).Init()
  957. defer func() {
  958. this.Data["json"] = br
  959. this.ServeJSON()
  960. }()
  961. UserId, _ := this.GetInt("UserId")
  962. if UserId <= 0 {
  963. br.Msg = "查询用户不存在"
  964. return
  965. }
  966. user, err := models.GetUserViewById(UserId)
  967. if err != nil {
  968. if err.Error() == utils.ErrNoRow() {
  969. br.Msg = "用户不存在或已删除,请刷新页面"
  970. return
  971. }
  972. br.Msg = "查询用户失败"
  973. br.ErrMsg = "查询用户失败,系统错误,Err:" + err.Error()
  974. return
  975. }
  976. if user == nil {
  977. br.Msg = "用户不存在或已删除,请刷新页面"
  978. return
  979. }
  980. permissionList, err := services.GetUserPermissionById(UserId)
  981. if err != nil {
  982. br.Msg = "用户权限获取失败,请重新尝试"
  983. return
  984. }
  985. permissionMap := make(map[string][]string)
  986. for _, pm := range permissionList {
  987. permissionMap[pm.ParentName] = append(permissionMap[pm.ParentName], pm.PermissionName)
  988. }
  989. resp := new(response.UserDetailResp)
  990. resp.Detail = user
  991. resp.Permission = permissionMap
  992. br.Msg = "查询成功"
  993. br.Ret = 200
  994. br.Success = true
  995. br.Data = resp
  996. }
  997. // Delete
  998. // @Title 系统用户详情信息
  999. // @Description 用户详情信息
  1000. // @Param request body request.UserDeleteReq true "type json string"
  1001. // @Success 200 {object} models.LoginResp
  1002. // @router /delete [post]
  1003. func (this *UserController) Delete() {
  1004. br := new(models.BaseResponse).Init()
  1005. defer func() {
  1006. this.Data["json"] = br
  1007. this.ServeJSON()
  1008. }()
  1009. var req request.UserDeleteReq
  1010. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1011. if err != nil {
  1012. br.Msg = "参数解析异常!"
  1013. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1014. return
  1015. }
  1016. err = models.DeleteUserById(req.UserId)
  1017. if err != nil {
  1018. br.Msg = "删除失败"
  1019. br.ErrMsg = "删除失败,系统错误,Err:" + err.Error()
  1020. return
  1021. }
  1022. br.Msg = "删除成功"
  1023. br.Success = true
  1024. br.Ret = 200
  1025. }
  1026. // @Title 开启/禁用用户
  1027. // @Description 开启/禁用用户接口
  1028. // @Param request body system.SysuserEditReq true "type json string"
  1029. // @Success 200 操作成功
  1030. // @router /editEnabled [post]
  1031. func (this *UserController) EditEnabled() {
  1032. br := new(models.BaseResponse).Init()
  1033. defer func() {
  1034. this.Data["json"] = br
  1035. this.ServeJSON()
  1036. }()
  1037. var req request.UserEditEnabledReq
  1038. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1039. if err != nil {
  1040. br.Msg = "参数解析异常!"
  1041. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1042. return
  1043. }
  1044. user, err := models.GetUserById(req.UserId)
  1045. if err != nil {
  1046. br.Msg = "获取数据失败"
  1047. br.ErrMsg = "获取系统用户数据失败,Err:" + err.Error()
  1048. return
  1049. }
  1050. if !req.IsEnabled {
  1051. user.Status = 0
  1052. err = user.Update([]string{"status"})
  1053. if err != nil {
  1054. br.Msg = "修改失败"
  1055. br.ErrMsg = "修改系统用户数据失败,Err:" + err.Error()
  1056. return
  1057. }
  1058. } else {
  1059. validStartTime, err := time.Parse(utils.FormatDate, req.ValidStartTime)
  1060. if err != nil {
  1061. br.Msg = "日期格式不正确"
  1062. return
  1063. }
  1064. validEndTime, err := time.Parse(utils.FormatDate, req.ValidEndTime)
  1065. if err != nil {
  1066. br.Msg = "日期格式不正确"
  1067. return
  1068. }
  1069. if !validEndTime.After(validStartTime) {
  1070. br.Msg = "有效期结束日期在开始日期之前,日期格式不正确"
  1071. return
  1072. }
  1073. validStartTime = validStartTime.Local().Add(-time.Hour * 8)
  1074. validEndTime = validEndTime.Local().Add(-time.Hour*8 + time.Hour*24 - time.Second)
  1075. curTime := time.Now()
  1076. if curTime.After(validEndTime) {
  1077. br.Msg = "有效期已到期,请重新设置"
  1078. return
  1079. }
  1080. user.Status = 2
  1081. user.ModifyTime = curTime
  1082. user.ValidStartTime = validStartTime
  1083. user.ValidEndTime = validEndTime
  1084. err = user.Update([]string{"status", "modify_time", "valid_start_time", "valid_end_time"})
  1085. if err != nil {
  1086. br.Msg = "修改失败"
  1087. br.ErrMsg = "修改系统用户数据失败,Err:" + err.Error()
  1088. return
  1089. }
  1090. }
  1091. // 记录操作
  1092. record := &models.UserChangeRecord{}
  1093. record.UserId = req.UserId
  1094. record.SysUserId = this.SysUser.SysUserId
  1095. if user.Status == 0 {
  1096. record.Content = this.SysUser.SysRealName + "禁用用户"
  1097. } else {
  1098. record.Content = this.SysUser.SysRealName + "启用用户"
  1099. }
  1100. record.Insert()
  1101. br.Ret = 200
  1102. br.Success = true
  1103. br.Msg = "操作成功"
  1104. }
  1105. // @Title 用户信息变更记录
  1106. // @Description 用户信息变更记录
  1107. // @Param UserId query int true "用户id"
  1108. // @Success 200 操作成功
  1109. // @router /change_list [get]
  1110. func (this *UserController) ChangeList() {
  1111. br := new(models.BaseResponse).Init()
  1112. defer func() {
  1113. this.Data["json"] = br
  1114. this.ServeJSON()
  1115. }()
  1116. userId, _ := this.GetInt("UserId")
  1117. if userId <= 0 {
  1118. br.Msg = "用户信息错误"
  1119. return
  1120. }
  1121. userRcord, err := models.GetUserChangeRecordListById(userId)
  1122. if err != nil {
  1123. br.Msg = "用户信息变更查询失败"
  1124. br.ErrMsg = "用户信息变更查询失败,系统错误,Err:" + err.Error()
  1125. return
  1126. }
  1127. resp := new(response.UserChangeRecordResp)
  1128. resp.List = userRcord
  1129. br.Data = resp
  1130. br.Msg = "查询成功"
  1131. br.Success = true
  1132. br.Ret = 200
  1133. }
  1134. // GlobalSearch
  1135. // @Title 全局用户列表
  1136. // @Description 全局用户列表
  1137. // @Param PageSize query int true "每页数据条数"
  1138. // @Param CurrentIndex query int true "当前页页码,从1开始"
  1139. // @Param KeyWord query string true "手机号/邮箱/姓名"
  1140. // @Param SortParam query string true "排序字段"
  1141. // @Param SortType query string true "排序方式"
  1142. // @Success 200 {object} response.UserListResp
  1143. // @router /global/list [get]
  1144. func (this *UserController) GlobalSearch() {
  1145. br := new(models.BaseResponse).Init()
  1146. defer func() {
  1147. this.Data["json"] = br
  1148. this.ServeJSON()
  1149. }()
  1150. pageSize, _ := this.GetInt("PageSize")
  1151. currentIndex, _ := this.GetInt("CurrentIndex")
  1152. keyWord := this.GetString("KeyWord")
  1153. sortParam := this.GetString("SortParam")
  1154. sortType := this.GetString("SortType")
  1155. if pageSize <= 0 {
  1156. pageSize = utils.PageSize20
  1157. }
  1158. if currentIndex <= 0 {
  1159. currentIndex = 1
  1160. }
  1161. var condition string
  1162. var pars []interface{}
  1163. var sortCondition string
  1164. if keyWord == "" {
  1165. br.Ret = 200
  1166. br.Msg = "查询成功"
  1167. br.Success = true
  1168. return
  1169. } else {
  1170. condition = ` AND (real_name like ? OR phone like ? OR email like ?)`
  1171. pars = utils.GetLikeKeywordPars(pars, keyWord, 3)
  1172. }
  1173. if sortParam != "" && sortType != "" {
  1174. var param, sort string
  1175. switch sortParam {
  1176. case "RegisterTime":
  1177. param = "register_time"
  1178. case "ReadCnt":
  1179. param = "read_cnt"
  1180. case "LastUpdateTime":
  1181. param = "last_update_time"
  1182. }
  1183. switch sortType {
  1184. case "asc":
  1185. sort = "ASC"
  1186. case "desc":
  1187. sort = "DESC"
  1188. }
  1189. if param != "" && sort != "" {
  1190. sortCondition = ` ORDER BY ` + param + ` ` + sort
  1191. }
  1192. }
  1193. if sortCondition == "" {
  1194. sortCondition = ` ORDER BY u.register_time DESC`
  1195. }
  1196. startSize := utils.StartIndex(currentIndex, pageSize)
  1197. userIds, err := models.GetUserIdListByCondition(condition, pars)
  1198. if err != nil {
  1199. br.Msg = "查询失败"
  1200. br.ErrMsg = "查询失败,系统错误,Err:" + err.Error()
  1201. return
  1202. }
  1203. userList, err := models.GetGlobalUserByCondition(userIds, sortCondition, startSize, pageSize)
  1204. if err != nil {
  1205. br.Msg = "查询失败"
  1206. br.ErrMsg = "查询失败,系统错误,Err:" + err.Error()
  1207. return
  1208. }
  1209. page := paging.GetPaging(currentIndex, pageSize, len(userIds))
  1210. resp := new(response.UserListResp)
  1211. resp.List = userList
  1212. resp.Paging = page
  1213. br.Data = resp
  1214. br.Msg = "查询成功"
  1215. br.Success = true
  1216. br.Ret = 200
  1217. }