user.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601
  1. package controllers
  2. import (
  3. "eta/eta_mini_crm_ht/models"
  4. "eta/eta_mini_crm_ht/models/response"
  5. "eta/eta_mini_crm_ht/services"
  6. "eta/eta_mini_crm_ht/utils"
  7. "fmt"
  8. "github.com/rdlucklib/rdluck_tools/paging"
  9. "net/http"
  10. "strconv"
  11. "strings"
  12. "time"
  13. )
  14. type UserController struct {
  15. BaseAuthController
  16. }
  17. // TemplateList
  18. // @Title 临时用户列表
  19. // @Description 临时用户列表
  20. // @Param PageSize query int true "每页数据条数"
  21. // @Param CurrentIndex query int true "当前页页码,从1开始"
  22. // @Param Keyword query string false "手机号"
  23. // @Param SortParam query string false "排序字段参数,用来排序的字段, 枚举值:0:注册时间,1:阅读数,2:最近一次阅读时间"
  24. // @Param SortType query string true "如何排序,是正序还是倒序,0:倒序,1:正序"
  25. // @Success 200 {object} response.TemplateUserListResp
  26. // @router /temporary/list [get]
  27. func (this *UserController) TemplateList() {
  28. br := new(models.BaseResponse).Init()
  29. defer func() {
  30. this.Data["json"] = br
  31. this.ServeJSON()
  32. }()
  33. pageSize, _ := this.GetInt("PageSize")
  34. currentIndex, _ := this.GetInt("CurrentIndex")
  35. keyword := this.GetString("Keyword")
  36. if pageSize <= 0 {
  37. pageSize = utils.PageSize20
  38. } else if pageSize > utils.PageSize100 {
  39. pageSize = utils.PageSize100
  40. }
  41. if currentIndex <= 0 {
  42. currentIndex = 1
  43. }
  44. if pageSize <= 0 {
  45. pageSize = utils.PageSize20
  46. } else if pageSize > utils.PageSize100 {
  47. pageSize = utils.PageSize100
  48. }
  49. if currentIndex <= 0 {
  50. currentIndex = 1
  51. }
  52. startSize := utils.StartIndex(currentIndex, pageSize)
  53. sortParamInt, _ := this.GetInt("SortParam", 0)
  54. sortTypeInt, _ := this.GetInt("SortType", 0)
  55. var sortStr = ``
  56. var condition string
  57. var pars []interface{}
  58. sortParamMap := map[int]string{0: "created_time", 1: "read_count", 2: "last_read_time"}
  59. sortTypeMap := map[int]string{0: "desc", 1: "asc"}
  60. sortParam, ok := sortParamMap[sortParamInt]
  61. if !ok {
  62. br.Msg = "错误的排序字段参数"
  63. br.ErrMsg = fmt.Sprint("错误的排序字段:", sortParamInt)
  64. return
  65. }
  66. sortType, ok := sortTypeMap[sortTypeInt]
  67. if !ok {
  68. br.Msg = "错误的排序字段"
  69. br.ErrMsg = fmt.Sprint("错误的排序字段:", sortTypeInt)
  70. return
  71. }
  72. sortStr = fmt.Sprintf("%s %s,updated_time desc ", sortParam, sortType)
  73. if keyword != "" {
  74. condition += ` AND mobile LIKE ? `
  75. pars = utils.GetLikeKeywordPars(pars, keyword, 1)
  76. }
  77. resp := new(response.TemplateUserListResp)
  78. total, userList, err := models.GetPageTemplateUserList(condition, pars, sortStr, startSize, pageSize)
  79. if err != nil {
  80. br.Msg = "查询用户失败"
  81. br.Msg = "查询用户失败,系统错误,Err:" + err.Error()
  82. return
  83. }
  84. list := make([]models.TemplateUsersItem, 0)
  85. for _, v := range userList {
  86. list = append(list, v.ToItem())
  87. }
  88. page := paging.GetPaging(currentIndex, pageSize, total)
  89. resp.Paging = page
  90. resp.List = list
  91. br.Data = resp
  92. br.Ret = 200
  93. br.Success = true
  94. br.Msg = "获取成功"
  95. }
  96. // OfficialList
  97. // @Title 正式用户列表
  98. // @Description 正式用户列表
  99. // @Param PageSize query int true "每页数据条数"
  100. // @Param CurrentIndex query int true "当前页页码,从1开始"
  101. // @Param Keyword query string false "手机号"
  102. // @Param SortParam query string false "排序字段参数,用来排序的字段, 枚举值:0:注册时间,1:阅读数,2:最近一次阅读时间"
  103. // @Param SortType query string true "如何排序,是正序还是倒序,0:倒序,1:正序"
  104. // @Success 200 {object} response.TemplateUserListResp
  105. // @router /official/list [get]
  106. func (this *UserController) OfficialList() {
  107. br := new(models.BaseResponse).Init()
  108. defer func() {
  109. this.Data["json"] = br
  110. this.ServeJSON()
  111. }()
  112. pageSize, _ := this.GetInt("PageSize")
  113. currentIndex, _ := this.GetInt("CurrentIndex")
  114. keyword := this.GetString("Keyword")
  115. FollowingGzh := this.GetString("FollowingGzh")
  116. RegisterBeginDate := this.GetString("RegisterBeginDate")
  117. RegisterEndDate := this.GetString("RegisterEndDate")
  118. if pageSize <= 0 {
  119. pageSize = utils.PageSize20
  120. } else if pageSize > utils.PageSize100 {
  121. pageSize = utils.PageSize100
  122. }
  123. if currentIndex <= 0 {
  124. currentIndex = 1
  125. }
  126. if pageSize <= 0 {
  127. pageSize = utils.PageSize20
  128. } else if pageSize > utils.PageSize100 {
  129. pageSize = utils.PageSize100
  130. }
  131. if currentIndex <= 0 {
  132. currentIndex = 1
  133. }
  134. startSize := utils.StartIndex(currentIndex, pageSize)
  135. sortParamInt, _ := this.GetInt("SortParam", 0)
  136. sortTypeInt, _ := this.GetInt("SortType", 0)
  137. var sortStr = ``
  138. var condition string
  139. var pars []interface{}
  140. sortParamMap := map[int]string{0: "created_time", 1: "read_count", 2: "last_read_time"}
  141. sortTypeMap := map[int]string{0: "desc", 1: "asc"}
  142. sortParam, ok := sortParamMap[sortParamInt]
  143. if !ok {
  144. br.Msg = "错误的排序字段参数"
  145. br.ErrMsg = fmt.Sprint("错误的排序字段:", sortParamInt)
  146. return
  147. }
  148. sortType, ok := sortTypeMap[sortTypeInt]
  149. if !ok {
  150. br.Msg = "错误的排序字段"
  151. br.ErrMsg = fmt.Sprintf("错误的排序字段:%v", sortTypeInt)
  152. return
  153. }
  154. sortStr = fmt.Sprintf("%s %s,updated_time desc ", sortParam, sortType)
  155. if FollowingGzh != "" {
  156. switch FollowingGzh {
  157. case "true":
  158. condition += ` AND following_gzh=1 `
  159. case "false":
  160. condition += ` AND following_gzh=0 `
  161. default:
  162. br.Msg = "关注公众号字段非法字段"
  163. br.ErrMsg = fmt.Sprintf("错误的关注公众号字段:%s", FollowingGzh)
  164. return
  165. }
  166. }
  167. if RegisterBeginDate != "" || RegisterEndDate != "" {
  168. var beginDate, endDate time.Time
  169. var parseErr error
  170. if RegisterBeginDate != "" {
  171. beginDate, parseErr = time.Parse(time.DateOnly, RegisterBeginDate)
  172. if parseErr != nil {
  173. br.Msg = "注册时间开始字段非法字段"
  174. br.ErrMsg = fmt.Sprintf("错误的注册时间开始字段:%s", RegisterBeginDate)
  175. return
  176. }
  177. }
  178. if RegisterEndDate != "" {
  179. endDate, parseErr = time.Parse(time.DateOnly, RegisterEndDate)
  180. if parseErr != nil {
  181. br.Msg = "注册时间结束字段非法字段"
  182. br.ErrMsg = fmt.Sprintf("错误的注册时间结束字段:%s", RegisterEndDate)
  183. return
  184. }
  185. }
  186. if RegisterBeginDate != "" {
  187. if RegisterEndDate != "" {
  188. if beginDate.After(endDate) {
  189. br.Msg = "结束时间不能早于开始时间"
  190. br.ErrMsg = fmt.Sprintf("错误的注册时间结束字段:开始时间:%s,结束时间:%s", RegisterBeginDate, RegisterEndDate)
  191. return
  192. }
  193. condition += ` AND DATE_FORMAT(created_time,'%Y-%m-%d') BETWEEN ? AND ?`
  194. pars = append(pars, RegisterBeginDate, RegisterEndDate)
  195. } else {
  196. condition += ` AND DATE_FORMAT(created_time,'%Y-%m-%d') >= ?`
  197. pars = append(pars, RegisterBeginDate)
  198. }
  199. } else {
  200. condition += ` AND DATE_FORMAT(created_time,'%Y-%m-%d') <= ?`
  201. pars = append(pars, RegisterEndDate)
  202. }
  203. }
  204. if keyword != "" {
  205. condition += ` AND ( mobile LIKE ? or real_name like ?)`
  206. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  207. }
  208. resp := new(response.UserListResp)
  209. total, userList, err := models.GetPageOfficialUserList(condition, pars, sortStr, startSize, pageSize)
  210. if err != nil {
  211. br.Msg = "查询用户失败"
  212. br.Msg = "查询用户失败,系统错误,Err:" + err.Error()
  213. return
  214. }
  215. //list := make([]*models.UserView, 0)
  216. //var wg sync.WaitGroup
  217. //wg.Add(len(userList))
  218. //for _, v := range userList {
  219. // go func(v *models.User) {
  220. // defer wg.Done()
  221. // tempUser, _ := models.GetTemplateUser(v.TemplateUserId)
  222. // userView := v.FillUserInfo(tempUser)
  223. // list = append(list, &userView)
  224. // }(&v)
  225. //}
  226. //wg.Wait()
  227. page := paging.GetPaging(currentIndex, pageSize, total)
  228. resp.Paging = page
  229. resp.List = userList
  230. br.Data = resp
  231. br.Ret = 200
  232. br.Success = true
  233. br.Msg = "获取成功"
  234. }
  235. // readRecordList
  236. // @Title 用户阅读记录
  237. // @Description 用户阅读记录
  238. // @Param PageSize query int true "每页数据条数"
  239. // @Param CurrentIndex query int true "当前页页码,从1开始"
  240. // @Param ChartPermissionIds query string true "品种列表"
  241. // @Param ClassifyIds query string true "品种列表"
  242. // @Success 200 {object} models.LoginResp
  243. // @router /readRecordList [get]
  244. func (this *UserController) ReadRecordList() {
  245. br := new(models.BaseResponse).Init()
  246. defer func() {
  247. this.Data["json"] = br
  248. this.ServeJSON()
  249. }()
  250. UserId, _ := this.GetInt("UserId")
  251. pageSize, _ := this.GetInt("PageSize")
  252. currentIndex, _ := this.GetInt("CurrentIndex")
  253. permissionIds := this.GetString("PermissionIds")
  254. productType := this.GetString("ProductType")
  255. if UserId <= 0 {
  256. br.Msg = "查询用户失败,用户id不合法"
  257. return
  258. }
  259. if pageSize <= 0 {
  260. pageSize = utils.PageSize20
  261. } else if pageSize > utils.PageSize100 {
  262. pageSize = utils.PageSize100
  263. }
  264. if currentIndex <= 0 {
  265. currentIndex = 1
  266. }
  267. startSize := utils.StartIndex(currentIndex, pageSize)
  268. user, err := models.GetTemplateUser(UserId)
  269. if err != nil {
  270. if err.Error() == utils.ErrNoRow() {
  271. br.Msg = "用户不存在或已删除,请刷新页面"
  272. return
  273. }
  274. br.Msg = "查询用户失败"
  275. br.ErrMsg = "查询用户失败,系统错误,Err:" + err.Error()
  276. return
  277. }
  278. if user == nil {
  279. br.Msg = "用户不存在或已删除,请刷新页面"
  280. return
  281. }
  282. var condition string
  283. var pars []interface{}
  284. var sourceType models.SourceType
  285. if productType != "" {
  286. sourceType = transSourceType(productType)
  287. if sourceType == "" {
  288. br.Msg = "错误的产品类型"
  289. br.ErrMsg = "错误的产品类型:" + productType
  290. return
  291. }
  292. condition += `and source_type= ?`
  293. pars = append(pars, sourceType)
  294. }
  295. var permissionIdList []int
  296. if permissionIds != "" {
  297. permissionIdStrList := strings.Split(permissionIds, ",")
  298. for _, permissionIdStr := range permissionIdStrList {
  299. permissionId, parseErr := strconv.Atoi(permissionIdStr)
  300. if parseErr != nil {
  301. continue
  302. }
  303. permissionIdList = append(permissionIdList, permissionId)
  304. }
  305. }
  306. total, condition, pars, err := services.GetUserSourceClickFlowListCountByUserId(UserId, condition, pars, permissionIdList, sourceType)
  307. if err != nil {
  308. br.Msg = "查询阅读记录失败"
  309. br.ErrMsg = "查询阅读记录失败,Err:" + err.Error()
  310. return
  311. }
  312. if total <= 0 {
  313. br.Msg = "暂无数据"
  314. br.Data = new(response.UserSourceClickFlowResp)
  315. br.Success = true
  316. br.Ret = 200
  317. return
  318. }
  319. readList, err := services.GetUserSourceClickFlowListByUserId(UserId, condition, pars, startSize, pageSize)
  320. if err != nil {
  321. br.Msg = "查询阅读记录失败"
  322. br.ErrMsg = "查询阅读记录失败,系统错误,Err:" + err.Error()
  323. return
  324. }
  325. page := paging.GetPaging(currentIndex, pageSize, total)
  326. resp := new(response.UserSourceClickFlowResp)
  327. resp.Paging = page
  328. resp.List = readList
  329. br.Msg = "获取成功"
  330. br.Data = resp
  331. br.Success = true
  332. br.Ret = 200
  333. }
  334. func transSourceType(productType string) (sourceType models.SourceType) {
  335. if productType == "" {
  336. return ""
  337. }
  338. switch productType {
  339. case Report:
  340. sourceType = models.ReportSourceType
  341. return
  342. case Video:
  343. sourceType = models.VideoSourceType
  344. return
  345. case Audio:
  346. sourceType = models.AudioSourceType
  347. return
  348. default:
  349. return ""
  350. }
  351. }
  352. // ExportTemplateUsers
  353. // @Title 临时用户列表
  354. // @Description 临时用户列表
  355. // @Param PageSize query int true "每页数据条数"
  356. // @Param CurrentIndex query int true "当前页页码,从1开始"
  357. // @Param Keyword query string false "手机号"
  358. // @Param SortParam query string false "排序字段参数,用来排序的字段, 枚举值:0:注册时间,1:阅读数,2:最近一次阅读时间"
  359. // @Param SortType query string true "如何排序,是正序还是倒序,0:倒序,1:正序"
  360. // @Success 200 {object} response.TemplateUserListResp
  361. // @router /temporary/export [get]
  362. func (this *UserController) ExportTemplateUsers() {
  363. br := new(models.BaseResponse).Init()
  364. defer func() {
  365. this.Data["json"] = br
  366. this.ServeJSON()
  367. }()
  368. keyword := this.GetString("Keyword")
  369. sortParamInt, _ := this.GetInt("SortParam", 0)
  370. sortTypeInt, _ := this.GetInt("SortType", 0)
  371. var sortStr = ``
  372. var condition string
  373. var pars []interface{}
  374. sortParamMap := map[int]string{0: "created_time", 1: "read_count", 2: "last_read_time"}
  375. sortTypeMap := map[int]string{0: "desc", 1: "asc"}
  376. sortParam, ok := sortParamMap[sortParamInt]
  377. if !ok {
  378. br.Msg = "错误的排序字段参数"
  379. br.ErrMsg = fmt.Sprint("错误的排序字段:", sortParamInt)
  380. return
  381. }
  382. sortType, ok := sortTypeMap[sortTypeInt]
  383. if !ok {
  384. br.Msg = "错误的排序字段"
  385. br.ErrMsg = fmt.Sprint("错误的排序字段:", sortTypeInt)
  386. return
  387. }
  388. sortStr = fmt.Sprintf("%s %s,updated_time desc ", sortParam, sortType)
  389. if keyword != "" {
  390. condition += ` AND mobile LIKE ? `
  391. pars = utils.GetLikeKeywordPars(pars, keyword, 1)
  392. }
  393. userList, err := models.GetTemplateUserListByCondition(condition, pars, sortStr)
  394. if err != nil {
  395. br.Msg = "查询用户失败"
  396. br.Msg = "查询用户失败,系统错误,Err:" + err.Error()
  397. return
  398. }
  399. year, month, day := time.Now().Date()
  400. yearStr := strconv.Itoa(year)[2:]
  401. fileName := fmt.Sprintf("临时用户表%s.%d.%d.xlsx", yearStr, month, day)
  402. encodedFilename := encodeChineseFilename(fileName)
  403. this.Ctx.ResponseWriter.Header().Set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
  404. this.Ctx.ResponseWriter.Header().Set("Content-Disposition", encodedFilename)
  405. this.Ctx.ResponseWriter.Header().Set("File-Name", fileName)
  406. list := make([]models.TemplateUsersItem, 0)
  407. for _, v := range userList {
  408. list = append(list, v.ToItem())
  409. }
  410. file, err := utils.ExportExcel(fileName, "用户列表", map[string]string{"用户名": "UserName", "手机号": "Mobile"}, nil)
  411. // 写入文件
  412. if err = file.Write(this.Ctx.ResponseWriter); err != nil {
  413. utils.FileLog.Error("导出excel文件失败:", err)
  414. http.Error(this.Ctx.ResponseWriter, "导出excel文件失败", http.StatusInternalServerError)
  415. }
  416. br.Ret = 200
  417. br.Success = true
  418. br.Msg = "获取成功"
  419. }
  420. // encodeChineseFilename 将中文文件名编码为 ISO-8859-1
  421. func encodeChineseFilename(filename string) string {
  422. // 对文件名进行 ISO-8859-1 编码
  423. encodedFilename := fmt.Sprintf("attachment; filename=%s", filename)
  424. return encodedFilename
  425. }
  426. // ExportOfficialUsers
  427. // @Title 正式用户列表
  428. // @Description 正式用户列表
  429. // @Param PageSize query int true "每页数据条数"
  430. // @Param CurrentIndex query int true "当前页页码,从1开始"
  431. // @Param Keyword query string false "手机号"
  432. // @Param SortParam query string false "排序字段参数,用来排序的字段, 枚举值:0:注册时间,1:阅读数,2:最近一次阅读时间"
  433. // @Param SortType query string true "如何排序,是正序还是倒序,0:倒序,1:正序"
  434. // @Success 200 {object} response.TemplateUserListResp
  435. // @router /official/export [get]
  436. func (this *UserController) ExportOfficialUsers() {
  437. br := new(models.BaseResponse).Init()
  438. defer func() {
  439. this.Data["json"] = br
  440. this.ServeJSON()
  441. }()
  442. pageSize, _ := this.GetInt("PageSize")
  443. currentIndex, _ := this.GetInt("CurrentIndex")
  444. keyword := this.GetString("Keyword")
  445. FollowingGzh := this.GetString("FollowingGzh")
  446. RegisterBeginDate := this.GetString("RegisterBeginDate")
  447. RegisterEndDate := this.GetString("RegisterEndDate")
  448. if pageSize <= 0 {
  449. pageSize = utils.PageSize20
  450. } else if pageSize > utils.PageSize100 {
  451. pageSize = utils.PageSize100
  452. }
  453. if currentIndex <= 0 {
  454. currentIndex = 1
  455. }
  456. if pageSize <= 0 {
  457. pageSize = utils.PageSize20
  458. } else if pageSize > utils.PageSize100 {
  459. pageSize = utils.PageSize100
  460. }
  461. if currentIndex <= 0 {
  462. currentIndex = 1
  463. }
  464. startSize := utils.StartIndex(currentIndex, pageSize)
  465. sortParamInt, _ := this.GetInt("SortParam", 0)
  466. sortTypeInt, _ := this.GetInt("SortType", 0)
  467. var sortStr = ``
  468. var condition string
  469. var pars []interface{}
  470. sortParamMap := map[int]string{0: "created_time", 1: "read_count", 2: "last_read_time"}
  471. sortTypeMap := map[int]string{0: "desc", 1: "asc"}
  472. sortParam, ok := sortParamMap[sortParamInt]
  473. if !ok {
  474. br.Msg = "错误的排序字段参数"
  475. br.ErrMsg = fmt.Sprint("错误的排序字段:", sortParamInt)
  476. return
  477. }
  478. sortType, ok := sortTypeMap[sortTypeInt]
  479. if !ok {
  480. br.Msg = "错误的排序字段"
  481. br.ErrMsg = fmt.Sprintf("错误的排序字段:%v", sortTypeInt)
  482. return
  483. }
  484. sortStr = fmt.Sprintf("%s %s,updated_time desc ", sortParam, sortType)
  485. if FollowingGzh != "" {
  486. switch FollowingGzh {
  487. case "true":
  488. condition += ` AND following_gzh=1 `
  489. case "false":
  490. condition += ` AND following_gzh=0 `
  491. default:
  492. br.Msg = "关注公众号字段非法字段"
  493. br.ErrMsg = fmt.Sprintf("错误的关注公众号字段:%s", FollowingGzh)
  494. return
  495. }
  496. }
  497. if RegisterBeginDate != "" || RegisterEndDate != "" {
  498. var beginDate, endDate time.Time
  499. var parseErr error
  500. if RegisterBeginDate != "" {
  501. beginDate, parseErr = time.Parse(time.DateOnly, RegisterBeginDate)
  502. if parseErr != nil {
  503. br.Msg = "注册时间开始字段非法字段"
  504. br.ErrMsg = fmt.Sprintf("错误的注册时间开始字段:%s", RegisterBeginDate)
  505. return
  506. }
  507. }
  508. if RegisterEndDate != "" {
  509. endDate, parseErr = time.Parse(time.DateOnly, RegisterEndDate)
  510. if parseErr != nil {
  511. br.Msg = "注册时间结束字段非法字段"
  512. br.ErrMsg = fmt.Sprintf("错误的注册时间结束字段:%s", RegisterEndDate)
  513. return
  514. }
  515. }
  516. if RegisterBeginDate != "" {
  517. if RegisterEndDate != "" {
  518. if beginDate.After(endDate) {
  519. br.Msg = "结束时间不能早于开始时间"
  520. br.ErrMsg = fmt.Sprintf("错误的注册时间结束字段:开始时间:%s,结束时间:%s", RegisterBeginDate, RegisterEndDate)
  521. return
  522. }
  523. condition += ` AND DATE_FORMAT(created_time,'%Y-%m-%d') BETWEEN ? AND ?`
  524. pars = append(pars, RegisterBeginDate, RegisterEndDate)
  525. } else {
  526. condition += ` AND DATE_FORMAT(created_time,'%Y-%m-%d') >= ?`
  527. pars = append(pars, RegisterBeginDate)
  528. }
  529. } else {
  530. condition += ` AND DATE_FORMAT(created_time,'%Y-%m-%d') <= ?`
  531. pars = append(pars, RegisterEndDate)
  532. }
  533. }
  534. if keyword != "" {
  535. condition += ` AND ( mobile LIKE ? or real_name like ?)`
  536. pars = utils.GetLikeKeywordPars(pars, keyword, 2)
  537. }
  538. resp := new(response.UserListResp)
  539. total, userList, err := models.GetPageOfficialUserList(condition, pars, sortStr, startSize, pageSize)
  540. if err != nil {
  541. br.Msg = "查询用户失败"
  542. br.Msg = "查询用户失败,系统错误,Err:" + err.Error()
  543. return
  544. }
  545. //list := make([]*models.UserView, 0)
  546. //var wg sync.WaitGroup
  547. //wg.Add(len(userList))
  548. //for _, v := range userList {
  549. // go func(v *models.User) {
  550. // defer wg.Done()
  551. // tempUser, _ := models.GetTemplateUser(v.TemplateUserId)
  552. // userView := v.FillUserInfo(tempUser)
  553. // list = append(list, &userView)
  554. // }(&v)
  555. //}
  556. //wg.Wait()
  557. page := paging.GetPaging(currentIndex, pageSize, total)
  558. resp.Paging = page
  559. resp.List = userList
  560. br.Data = resp
  561. br.Ret = 200
  562. br.Success = true
  563. br.Msg = "获取成功"
  564. }