user.go 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347
  1. package eta_business
  2. import (
  3. "encoding/json"
  4. "eta/eta_forum_admin/controllers"
  5. "eta/eta_forum_admin/models"
  6. "eta/eta_forum_admin/models/eta_business"
  7. "eta/eta_forum_admin/models/system"
  8. eta_business2 "eta/eta_forum_admin/services/eta_business"
  9. "eta/eta_forum_admin/utils"
  10. "fmt"
  11. "github.com/rdlucklib/rdluck_tools/paging"
  12. "github.com/tealeg/xlsx"
  13. "os"
  14. "strings"
  15. "time"
  16. )
  17. // 客户联系人管理
  18. type EtaBusinessUserController struct {
  19. controllers.BaseAuthController
  20. }
  21. // List
  22. // @Title 联系人列表
  23. // @Description 联系人列表接口
  24. // @Param PageSize query int true "每页数据条数"
  25. // @Param CurrentIndex query int true "当前页页码,从1开始"
  26. // @Param CompanyId query int true "公司id,必填"
  27. // @Param KeyWord query string true "搜索关键词"
  28. // @Param ProductType query int true "产品类型"
  29. // @Param ProductId query int true "产品id"
  30. // @Param IsSubscribe query int true "是否关注了公众号: -1-默认全部; 0-未关注; 1-已关注"
  31. // @Param IsSubscribeHzyj query int true "是否关注了弘则研究公众号: -1-默认全部; 0-未关注; 1-已关注"
  32. // @Param IsSubscribeCygx query int true "是否关注了查研观向小助手公众号: -1-默认全部; 0-未关注; 1-已关注"
  33. // @Success 200 {object} company.CompanyUserListResp
  34. // @router /user/list [get]
  35. func (this *EtaBusinessUserController) List() {
  36. br := new(models.BaseResponse).Init()
  37. defer func() {
  38. this.Data["json"] = br
  39. this.ServeJSON()
  40. }()
  41. sysUser := this.SysUser
  42. if sysUser == nil {
  43. br.Msg = "请登录"
  44. br.ErrMsg = "请登录,SysUser Is Empty"
  45. br.Ret = 408
  46. return
  47. }
  48. pageSize, _ := this.GetInt("PageSize")
  49. currentIndex, _ := this.GetInt("CurrentIndex")
  50. positionStatus, _ := this.GetInt("PositionStatus", -1)
  51. enabled, _ := this.GetInt("Enabled", -1)
  52. businessCode := this.GetString("BusinessCode")
  53. keyword := utils.TrimStr(this.GetString("Keyword"))
  54. sortType := this.GetString("SortType")
  55. sortParam := this.GetString("SortParam")
  56. /*if businessCode <= 0 {
  57. br.Msg = "请选择客户"
  58. br.ErrMsg = "客户参数错误"
  59. return
  60. }*/
  61. var startSize int
  62. if pageSize <= 0 {
  63. pageSize = utils.PageSize20
  64. }
  65. if currentIndex <= 0 {
  66. currentIndex = 1
  67. }
  68. startSize = paging.StartIndex(currentIndex, pageSize)
  69. var condition string
  70. var pars []interface{}
  71. if keyword != "" {
  72. condition += ` AND (real_name LIKE '%` + keyword + `%' OR mobile LIKE '%` + keyword + `%' OR email LIKE '%` + keyword + `%') `
  73. }
  74. if businessCode != "" {
  75. condition += ` AND business_code = ? `
  76. pars = append(pars, businessCode)
  77. }
  78. if positionStatus > 0 {
  79. condition += ` AND position_status = ? `
  80. pars = append(pars, positionStatus)
  81. }
  82. if enabled > 0 { // 0-禁用 1-启用
  83. condition += ` AND enabled = ? `
  84. pars = append(pars, enabled)
  85. }
  86. order := ""
  87. if sortParam == "LastLoginTime" {
  88. if sortType == "desc" || sortType == "asc" {
  89. order = " last_login_time " + sortType
  90. }
  91. }
  92. total, err := models.GetUserCountByCondition(condition, pars)
  93. if err != nil {
  94. br.Msg = "获取失败"
  95. br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
  96. return
  97. }
  98. list, err := models.GetUserPageListByCondition(condition, pars, order, startSize, pageSize)
  99. if err != nil {
  100. br.Msg = "获取失败"
  101. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  102. return
  103. }
  104. page := paging.GetPaging(currentIndex, pageSize, total)
  105. resp := new(models.UserListResp)
  106. userList := make([]*models.BusinessUser, 0)
  107. if len(list) == 0 {
  108. resp.List = userList
  109. resp.Paging = page
  110. br.Ret = 200
  111. br.Success = true
  112. br.Msg = "获取成功"
  113. br.Data = resp
  114. return
  115. }
  116. // 查找商户信息
  117. businessCodeStr := make([]string, 0)
  118. businessCodeMap := make(map[string]string)
  119. for _, v := range list {
  120. if _, ok := businessCodeMap[v.BusinessCode]; ok {
  121. continue
  122. }
  123. businessCodeStr = append(businessCodeStr, v.BusinessCode)
  124. }
  125. obj := new(eta_business.EtaBusiness)
  126. condition1 := " AND business_code IN (" + utils.GetOrmInReplace(len(businessCodeStr)) + ") "
  127. var pars1 []interface{}
  128. pars1 = append(pars1, businessCodeStr)
  129. businessList, err := obj.GetItemsByCondition(condition1, pars1, []string{"business_code", "business_name"}, "")
  130. if err != nil {
  131. br.Msg = "获取失败"
  132. br.ErrMsg = "获取商户信息失败,Err:" + err.Error()
  133. return
  134. }
  135. for _, v := range businessList {
  136. businessCodeMap[v.BusinessCode] = v.BusinessName
  137. }
  138. for _, v := range list {
  139. tmp := new(models.BusinessUser)
  140. if businessName, ok := businessCodeMap[v.BusinessCode]; ok {
  141. tmp.BusinessName = businessName
  142. }
  143. tmp.BusinessCode = v.BusinessCode
  144. tmp.UserId = v.UserId
  145. tmp.RealName = v.RealName
  146. tmp.Mobile = v.Mobile
  147. tmp.CountryCode = v.CountryCode
  148. tmp.Email = v.Email
  149. tmp.Enabled = v.Enabled
  150. tmp.PositionStatus = v.PositionStatus
  151. tmp.Position = v.Position
  152. tmp.DepartmentName = v.DepartmentName
  153. // 判断time类型是否为零值
  154. if !v.LastLoginTime.IsZero() {
  155. tmp.LastLoginTime = v.LastLoginTime.Format(utils.FormatDateTime)
  156. }
  157. tmp.CreatedTime = v.CreatedTime.Format(utils.FormatDateTime)
  158. tmp.LastUpdatedTime = v.LastUpdatedTime.Format(utils.FormatDateTime)
  159. userList = append(userList, tmp)
  160. }
  161. resp.List = userList
  162. resp.Paging = page
  163. br.Ret = 200
  164. br.Success = true
  165. br.Msg = "获取成功"
  166. br.Data = resp
  167. }
  168. // @Title 新增客户联系人
  169. // @Description 新增客户联系人接口
  170. // @Param request body company.AddUserReq true "type json string"
  171. // @router /user/add [post]
  172. func (this *EtaBusinessUserController) AddUser() {
  173. br := new(models.BaseResponse).Init()
  174. defer func() {
  175. this.Data["json"] = br
  176. this.ServeJSON()
  177. }()
  178. sysUser := this.SysUser
  179. if sysUser == nil {
  180. br.Msg = "请登录"
  181. br.ErrMsg = "请登录,SysUser Is Empty"
  182. br.Ret = 408
  183. return
  184. }
  185. var req models.AddUserReq
  186. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  187. if err != nil {
  188. br.Msg = "参数解析异常!"
  189. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  190. return
  191. }
  192. if req.RealName == "" {
  193. br.Msg = "请填写姓名"
  194. br.IsSendEmail = false
  195. return
  196. }
  197. if req.Mobile == "" {
  198. br.Msg = "请输入手机号"
  199. br.IsSendEmail = false
  200. return
  201. }
  202. if req.BusinessCode == "" {
  203. br.Msg = "请选择客户"
  204. br.IsSendEmail = false
  205. return
  206. }
  207. if req.CountryCode == "" {
  208. req.CountryCode = "86"
  209. }
  210. //空格移除
  211. req.Mobile = utils.TrimStr(req.Mobile)
  212. req.RealName = utils.TrimStr(req.RealName)
  213. //判断该手机号、邮箱是否已经添加,如果已经添加,那么就不再添加
  214. var key string
  215. if req.Mobile != "" {
  216. key = fmt.Sprintf("user:mobile:%s_%s", req.CountryCode, req.Mobile)
  217. }
  218. isHas := utils.Rc.IsExist(key)
  219. if isHas == true {
  220. br.Msg = "重复添加"
  221. return
  222. } else {
  223. //设置3分钟缓存,不允许重复添加
  224. utils.Rc.SetNX(key, 1, time.Second*300)
  225. //添加完成删除对应的缓存
  226. defer utils.Rc.Delete(key)
  227. }
  228. businessObj := new(eta_business.EtaBusiness)
  229. businessInfo, err := businessObj.GetItemByBusinessCode(req.BusinessCode)
  230. if err != nil {
  231. if err.Error() == utils.ErrNoRow() {
  232. br.Msg = "商户不存在"
  233. return
  234. }
  235. br.Msg = "客户信息有误"
  236. br.ErrMsg = "获取客户信息失败, Err: " + err.Error()
  237. return
  238. }
  239. //操作权限校验
  240. ok := eta_business2.CheckBusinessUserButton(sysUser.RoleTypeCode, businessInfo.SellerId, sysUser.AdminId)
  241. if !ok {
  242. br.Msg = "没有操作权限"
  243. br.ErrMsg = "没有操作权限"
  244. return
  245. }
  246. //systemUser models.Company.CompanyUser
  247. //var sysemUser company.CompanyUser
  248. //校验主手机号
  249. mobileItem, err := models.GetUserByMobileCountryCode(req.Mobile, req.CountryCode)
  250. if err != nil && err.Error() != utils.ErrNoRow() {
  251. br.Msg = "校验手机号有误"
  252. br.ErrMsg = "校验手机号有误, Err: " + err.Error()
  253. return
  254. }
  255. if err == nil && mobileItem.UserId > 0 {
  256. br.Msg = "手机号已存在"
  257. br.Success = true
  258. br.Data = mobileItem
  259. br.IsSendEmail = false
  260. br.Ret = 600
  261. return
  262. }
  263. err = nil
  264. user := new(models.User)
  265. user.RealName = utils.TrimStr(req.RealName)
  266. user.CountryCode = utils.TrimStr(req.CountryCode)
  267. user.Mobile = utils.TrimStr(req.Mobile)
  268. user.UserName = user.Mobile
  269. user.Position = req.Position
  270. user.PositionStatus = req.PositionStatus
  271. user.Enabled = 1
  272. user.BusinessCode = req.BusinessCode
  273. user.EtaBusinessId = businessInfo.EtaBusinessId
  274. user.DepartmentName = req.DepartmentName
  275. user.CreatedTime = time.Now()
  276. user.RegisterTime = time.Now()
  277. newId, err := models.AddUser(user)
  278. user.UserId = int(newId)
  279. if err != nil {
  280. br.Msg = "新增失败"
  281. br.ErrMsg = "新增失败,Err:" + err.Error()
  282. return
  283. }
  284. br.Ret = 200
  285. br.Success = true
  286. br.Msg = "新增成功"
  287. br.Data = newId
  288. br.IsAddLog = true
  289. }
  290. // @Title 删除客户联系人
  291. // @Description 删除客户联系人接口
  292. // @Param request body company.DeleteUserReq true "type json string"
  293. // @router /user/delete [post]
  294. func (this *EtaBusinessUserController) DeleteUser() {
  295. br := new(models.BaseResponse).Init()
  296. defer func() {
  297. this.Data["json"] = br
  298. this.ServeJSON()
  299. }()
  300. sysUser := this.SysUser
  301. if sysUser == nil {
  302. br.Msg = "请登录"
  303. br.ErrMsg = "请登录,SysUser Is Empty"
  304. br.Ret = 408
  305. return
  306. }
  307. var req models.DeleteUserReq
  308. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  309. if err != nil {
  310. br.Msg = "参数解析异常!"
  311. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  312. return
  313. }
  314. if req.UserId <= 0 {
  315. br.Msg = "参数错误!"
  316. return
  317. }
  318. //获取联系人详情
  319. userInfo, err := models.GetUserByUserId(req.UserId)
  320. if err != nil {
  321. if err.Error() == utils.ErrNoRow() {
  322. br.Msg = "用户不存在"
  323. return
  324. }
  325. br.Msg = "获取联系人异常!"
  326. br.ErrMsg = "获取联系人异常,Err:" + err.Error()
  327. return
  328. }
  329. // 查询商户关联的销售信息
  330. businessObj := new(eta_business.EtaBusiness)
  331. businessInfo, err := businessObj.GetItemByBusinessCode(userInfo.BusinessCode)
  332. if err != nil {
  333. if err.Error() == utils.ErrNoRow() {
  334. br.Msg = "商户不存在"
  335. return
  336. }
  337. br.Msg = "客户信息有误"
  338. br.ErrMsg = "获取客户信息失败, Err: " + err.Error()
  339. return
  340. }
  341. //操作权限校验
  342. ok := eta_business2.CheckBusinessUserButton(sysUser.RoleTypeCode, businessInfo.SellerId, sysUser.AdminId)
  343. if !ok {
  344. br.Msg = "删除失败,没有权限"
  345. br.ErrMsg = "删除失败,没有权限"
  346. return
  347. }
  348. err = models.DeleteUser(req.UserId)
  349. if err != nil {
  350. br.Msg = "删除失败"
  351. br.ErrMsg = "删除失败,Err:" + err.Error()
  352. return
  353. }
  354. br.Ret = 200
  355. br.Success = true
  356. br.Msg = "删除成功"
  357. br.IsAddLog = true
  358. }
  359. // @Title 编辑客户联系人
  360. // @Description 编辑客户联系人接口
  361. // @Param request body company.EditUserReq true "type json string"
  362. // @router /user/edit [post]
  363. func (this *EtaBusinessUserController) EditUser() {
  364. br := new(models.BaseResponse).Init()
  365. defer func() {
  366. this.Data["json"] = br
  367. this.ServeJSON()
  368. }()
  369. sysUser := this.SysUser
  370. if sysUser == nil {
  371. br.Msg = "请登录"
  372. br.ErrMsg = "请登录,SysUser Is Empty"
  373. br.Ret = 408
  374. return
  375. }
  376. var req models.EditUserReq
  377. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  378. if err != nil {
  379. br.Msg = "参数解析异常!"
  380. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  381. return
  382. }
  383. if req.UserId <= 0 {
  384. br.Msg = "参数错误!"
  385. return
  386. }
  387. //移除空格
  388. req.Mobile = utils.TrimStr(req.Mobile)
  389. req.RealName = utils.TrimStr(req.RealName)
  390. if req.RealName == "" {
  391. br.Msg = "请填写姓名"
  392. br.IsSendEmail = false
  393. return
  394. }
  395. if req.Mobile == "" {
  396. br.Msg = "请输入手机号"
  397. br.IsSendEmail = false
  398. return
  399. }
  400. if req.BusinessCode == "" {
  401. br.Msg = "请选择客户"
  402. br.IsSendEmail = false
  403. return
  404. }
  405. if req.CountryCode == "" {
  406. req.CountryCode = "86"
  407. }
  408. //操作权限校验
  409. userInfo, err := models.GetUserByUserId(req.UserId)
  410. if err != nil {
  411. if err.Error() == utils.ErrNoRow() {
  412. br.Msg = "用户不存在"
  413. return
  414. }
  415. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  416. br.Msg = "获取信息失败"
  417. return
  418. }
  419. businessObj := new(eta_business.EtaBusiness)
  420. businessInfo, err := businessObj.GetItemByBusinessCode(req.BusinessCode)
  421. if err != nil {
  422. if err.Error() == utils.ErrNoRow() {
  423. br.Msg = "商户不存在"
  424. return
  425. }
  426. br.Msg = "客户信息有误"
  427. br.ErrMsg = "获取客户信息失败, Err: " + err.Error()
  428. return
  429. }
  430. //操作权限校验
  431. ok := eta_business2.CheckBusinessUserButton(sysUser.RoleTypeCode, businessInfo.SellerId, sysUser.AdminId)
  432. if !ok {
  433. br.Msg = "没有操作权限"
  434. br.ErrMsg = "没有操作权限"
  435. return
  436. }
  437. if req.Mobile != "" && req.Mobile != userInfo.Mobile && req.CountryCode != userInfo.CountryCode {
  438. mobileItem, e := models.GetUserByMobileCountryCode(req.Mobile, req.CountryCode)
  439. if e != nil && e.Error() != utils.ErrNoRow() {
  440. br.Msg = "校验手机号有误"
  441. br.ErrMsg = "校验手机号有误, Err: " + err.Error()
  442. return
  443. }
  444. if e == nil && mobileItem.UserId > 0 && mobileItem.UserId != req.UserId {
  445. {
  446. br.Msg = "手机号已存在"
  447. br.Success = true
  448. br.Data = mobileItem
  449. br.IsSendEmail = false
  450. br.Ret = 600
  451. return
  452. }
  453. }
  454. }
  455. //待更新字段
  456. updateCol := []string{"RealName", "Mobile", "UserName", "LastUpdatedTime", "Position", "PositionStatus", "DepartmentName", "BusinessCode", "CountryCode"}
  457. userInfo.RealName = req.RealName
  458. userInfo.Mobile = req.Mobile
  459. userInfo.UserName = userInfo.Mobile
  460. userInfo.LastUpdatedTime = time.Now()
  461. userInfo.Position = req.Position
  462. userInfo.DepartmentName = req.DepartmentName
  463. userInfo.BusinessCode = req.BusinessCode
  464. userInfo.CountryCode = req.CountryCode
  465. userInfo.PositionStatus = req.PositionStatus
  466. err = userInfo.Update(updateCol)
  467. if err != nil {
  468. br.Msg = "编辑失败!"
  469. br.ErrMsg = "编辑失败,Err:" + err.Error()
  470. return
  471. }
  472. br.Ret = 200
  473. br.Success = true
  474. br.Msg = "编辑成功"
  475. br.IsAddLog = true
  476. }
  477. // @Title 获取批量导入联系人数据
  478. // @Description 获取批量导入联系人数据
  479. // @Param File query file true "文件"
  480. // @Param CompanyId query file true "客户id"
  481. // @Success 200 {object} models.ImportListResp
  482. // @router /user/import/list [post]
  483. func (this *EtaBusinessUserController) ImportList() {
  484. br := new(models.BaseResponse).Init()
  485. defer func() {
  486. this.Data["json"] = br
  487. this.ServeJSON()
  488. }()
  489. sysUser := this.SysUser
  490. if sysUser == nil {
  491. br.Msg = "请重新登录"
  492. return
  493. }
  494. file, h, err := this.GetFile("File")
  495. if err != nil {
  496. br.Msg = "获取文件失败"
  497. br.ErrMsg = "获取文件失败,Err:" + err.Error()
  498. return
  499. }
  500. //todo 没有选择对应的商户所以无操作权限校验
  501. uploadDir := "static/xls"
  502. err = os.MkdirAll(uploadDir, 766)
  503. if err != nil {
  504. br.Msg = "存储目录创建失败"
  505. br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
  506. return
  507. }
  508. path := uploadDir + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + h.Filename
  509. defer file.Close()
  510. err = this.SaveToFile("File", path)
  511. if err != nil {
  512. br.Msg = "文件保存失败"
  513. br.ErrMsg = "文件保存失败,Err:" + err.Error()
  514. return
  515. }
  516. xlFile, err := xlsx.OpenFile(path)
  517. if err != nil {
  518. br.Msg = "获取失败"
  519. br.ErrMsg = "打开文件失败,Err:" + err.Error() + ";path:" + path
  520. return
  521. }
  522. existUser := make([]*models.User, 0)
  523. addUser := make([]*models.User, 0)
  524. //excel中已经存在的数据,用来判断excel中是否存在相同手机号/邮箱,避免重复提交
  525. excelData := make(map[string]string)
  526. //重复数据
  527. repeatUser := make([]*models.User, 0)
  528. // 遍历sheet页读取
  529. for _, sheet := range xlFile.Sheets {
  530. //遍历行读取
  531. maxRow := sheet.MaxRow
  532. fmt.Println("maxRow:", maxRow)
  533. fmt.Println("maxRow")
  534. for i := 0; i < maxRow; i++ {
  535. if i == 1 {
  536. row := sheet.Row(i)
  537. cells := row.Cells
  538. for k, cell := range cells {
  539. text := cell.String()
  540. if k == 0 {
  541. if text != "姓名" {
  542. br.Msg = "模板格式错误"
  543. br.ErrMsg = "模板格式错误,title:" + text
  544. return
  545. }
  546. }
  547. if k == 1 {
  548. if !strings.Contains(text, "区号") {
  549. br.Msg = "模板格式错误"
  550. br.ErrMsg = "模板格式错误,title:" + text
  551. return
  552. }
  553. }
  554. if k == 2 {
  555. if !strings.Contains(text, "手机号") {
  556. br.Msg = "模板格式错误"
  557. br.ErrMsg = "模板格式错误,title:" + text
  558. return
  559. }
  560. }
  561. if k == 3 {
  562. if !strings.Contains(text, "岗位") {
  563. br.Msg = "模板格式错误"
  564. br.ErrMsg = "模板格式错误,title:" + text
  565. return
  566. }
  567. }
  568. if k == 4 {
  569. if !strings.Contains(text, "部门") {
  570. br.Msg = "模板格式错误"
  571. br.ErrMsg = "模板格式错误,title:" + text
  572. return
  573. }
  574. }
  575. if k == 5 {
  576. if !strings.Contains(text, "客户名称") {
  577. br.Msg = "模板格式错误"
  578. br.ErrMsg = "模板格式错误,title:" + text
  579. return
  580. }
  581. }
  582. if k == 6 {
  583. if !strings.Contains(text, "社会信用码") {
  584. br.Msg = "模板格式错误"
  585. br.ErrMsg = "模板格式错误,title:" + text
  586. return
  587. }
  588. }
  589. if k == 7 {
  590. if !strings.Contains(text, "在职状态") {
  591. br.Msg = "模板格式错误"
  592. br.ErrMsg = "模板格式错误,title:" + text
  593. return
  594. }
  595. }
  596. }
  597. }
  598. if i >= 2 {
  599. row := sheet.Row(i)
  600. cells := row.Cells
  601. var userName, countryCode, mobileOne, position, departmentName, businessName, creditCode, positionStatus string
  602. for k, cell := range cells {
  603. if k == 0 {
  604. userName = cell.String()
  605. }
  606. if k == 1 {
  607. countryCode = cell.String()
  608. }
  609. if k == 2 {
  610. mobileOne = cell.String()
  611. }
  612. if k == 3 {
  613. position = cell.String()
  614. }
  615. if k == 4 {
  616. departmentName = cell.String()
  617. }
  618. if k == 5 {
  619. businessName = cell.String()
  620. }
  621. if k == 6 {
  622. creditCode = cell.String()
  623. }
  624. if k == 7 {
  625. positionStatus = cell.String()
  626. }
  627. }
  628. //移除空格
  629. mobileOne = utils.TrimStr(mobileOne)
  630. //这些字段都没有的话,系统认为excel到底了
  631. if userName == "" {
  632. utils.FileLog.Info("姓名必填")
  633. continue
  634. }
  635. //如果手机号或者邮箱都没有填写的情况下
  636. if mobileOne == "" {
  637. utils.FileLog.Info("手机号必填")
  638. continue
  639. }
  640. if countryCode == "" {
  641. utils.FileLog.Info("导入数据中存在【国际区号】为空的用户,请检查")
  642. continue
  643. }
  644. if businessName == "" && creditCode == "" {
  645. utils.FileLog.Info("导入数据中存在【姓名】和【社会信用码】都为空的用户,请检查")
  646. continue
  647. }
  648. item := new(models.User)
  649. item.CountryCode = countryCode
  650. item.RealName = userName
  651. if positionStatus == "在职" {
  652. item.PositionStatus = 1
  653. } else if positionStatus == "离职" {
  654. item.PositionStatus = 0
  655. }
  656. item.Mobile = mobileOne
  657. item.UserName = item.Mobile
  658. item.Position = position
  659. item.DepartmentName = departmentName
  660. // 查询商户信息
  661. if creditCode != "" {
  662. businessObj := new(eta_business.EtaBusiness)
  663. businessInfo := new(eta_business.EtaBusiness)
  664. businessInfo, err = businessObj.GetItemByCreditCode(creditCode)
  665. if err != nil {
  666. if err.Error() == utils.ErrNoRow() {
  667. utils.FileLog.Info("商户不存在")
  668. continue
  669. }
  670. utils.FileLog.Info("获取商户信息失败, Err: " + err.Error())
  671. continue
  672. }
  673. item.BusinessCode = businessInfo.BusinessCode
  674. }
  675. if item.BusinessCode == "" && businessName != "" {
  676. businessObj := new(eta_business.EtaBusiness)
  677. businessInfo := new(eta_business.EtaBusiness)
  678. businessInfo, err = businessObj.GetItemByBusinessName(businessName)
  679. if err != nil {
  680. if err.Error() == utils.ErrNoRow() {
  681. utils.FileLog.Info("商户不存在")
  682. continue
  683. }
  684. utils.FileLog.Info("获取商户信息失败, Err: " + err.Error())
  685. continue
  686. }
  687. item.BusinessCode = businessInfo.BusinessCode
  688. }
  689. if _, ok := excelData[item.CountryCode+"_"+item.Mobile]; ok {
  690. //将用户插入其中,然后退出当前循环,进入下一循环
  691. //repeatUser = append(repeatUser, item)
  692. continue
  693. }
  694. excelData[item.CountryCode+"_"+item.Mobile] = item.CountryCode
  695. //没问题数据
  696. existUser = append(existUser, item)
  697. }
  698. }
  699. }
  700. // 判断系统里该手机号是否已存在
  701. mobiles := make([]string, 0)
  702. for k, _ := range excelData {
  703. mobile := strings.Split(k, "_")[1]
  704. mobiles = append(mobiles, mobile)
  705. }
  706. // 查询系统里是否存在
  707. existUserMap := make(map[string]struct{})
  708. if len(mobiles) > 0 {
  709. existUsers, e := models.GetUserByMobiles(mobiles)
  710. if e != nil {
  711. br.Msg = "查询用户失败"
  712. br.ErrMsg = "查询用户失败,Err:" + e.Error()
  713. return
  714. }
  715. for _, user := range existUsers {
  716. existUserMap[user.CountryCode+"_"+user.Mobile] = struct{}{}
  717. }
  718. }
  719. for _, v := range existUser {
  720. if _, ok := existUserMap[v.CountryCode+"_"+v.Mobile]; ok {
  721. repeatUser = append(repeatUser, v)
  722. } else {
  723. addUser = append(addUser, v)
  724. }
  725. }
  726. //defer func() {
  727. // os.Remove(path)
  728. //}()
  729. br.Msg = "获取成功"
  730. br.Ret = 200
  731. br.Success = true
  732. br.Data = models.ImportListResp{
  733. ValidUser: addUser,
  734. RepeatUser: repeatUser,
  735. }
  736. }
  737. // @Title 批量导入联系人数据
  738. // @Description 批量导入联系人数据
  739. // @Param File query file true "文件"
  740. // @Param CompanyId query file true "客户id"
  741. // @Success 600 {object} []*company.CompanyUser
  742. // @Success 200 Ret=200 导入成功
  743. // @router /user/import [post]
  744. func (this *EtaBusinessUserController) Import() {
  745. br := new(models.BaseResponse).Init()
  746. defer func() {
  747. this.Data["json"] = br
  748. this.ServeJSON()
  749. }()
  750. sysUser := this.SysUser
  751. if sysUser == nil {
  752. br.Msg = "请重新登录"
  753. return
  754. }
  755. var req models.ImportUserReq
  756. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  757. if err != nil {
  758. br.Msg = "参数解析异常!"
  759. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  760. return
  761. }
  762. /*file, h, err := this.GetFile("File")
  763. if err != nil {
  764. br.Msg = "获取文件失败"
  765. br.ErrMsg = "获取文件失败,Err:" + err.Error()
  766. return
  767. }
  768. //todo 没有选择对应的商户所以无操作权限校验
  769. uploadDir := "static/xls"
  770. err = os.MkdirAll(uploadDir, 766)
  771. if err != nil {
  772. br.Msg = "存储目录创建失败"
  773. br.ErrMsg = "存储目录创建失败,Err:" + err.Error()
  774. return
  775. }
  776. path := uploadDir + "/" + time.Now().Format(utils.FormatDateTimeUnSpace) + h.Filename
  777. defer file.Close()
  778. err = this.SaveToFile("File", path)
  779. if err != nil {
  780. br.Msg = "文件保存失败"
  781. br.ErrMsg = "文件保存失败,Err:" + err.Error()
  782. return
  783. }
  784. xlFile, err := xlsx.OpenFile(path)
  785. if err != nil {
  786. br.Msg = "获取失败"
  787. br.ErrMsg = "打开文件失败,Err:" + err.Error() + ";path:" + path
  788. return
  789. }
  790. existUser := make([]*models.User, 0)
  791. addUser := make([]*models.User, 0)
  792. //excel中已经存在的数据,用来判断excel中是否存在相同手机号/邮箱,避免重复提交
  793. excelData := make(map[string]string)
  794. // 遍历sheet页读取
  795. for _, sheet := range xlFile.Sheets {
  796. //遍历行读取
  797. maxRow := sheet.MaxRow
  798. fmt.Println("maxRow:", maxRow)
  799. fmt.Println("maxRow")
  800. for i := 0; i < maxRow; i++ {
  801. if i == 1 {
  802. row := sheet.Row(i)
  803. cells := row.Cells
  804. for k, cell := range cells {
  805. text := cell.String()
  806. if k == 0 {
  807. if text != "姓名" {
  808. br.Msg = "模板格式错误"
  809. br.ErrMsg = "模板格式错误,title:" + text
  810. return
  811. }
  812. }
  813. if k == 1 {
  814. if !strings.Contains(text, "区号") {
  815. br.Msg = "模板格式错误"
  816. br.ErrMsg = "模板格式错误,title:" + text
  817. return
  818. }
  819. }
  820. if k == 2 {
  821. if !strings.Contains(text, "手机号") {
  822. br.Msg = "模板格式错误"
  823. br.ErrMsg = "模板格式错误,title:" + text
  824. return
  825. }
  826. }
  827. if k == 3 {
  828. if !strings.Contains(text, "岗位") {
  829. br.Msg = "模板格式错误"
  830. br.ErrMsg = "模板格式错误,title:" + text
  831. return
  832. }
  833. }
  834. if k == 4 {
  835. if !strings.Contains(text, "部门") {
  836. br.Msg = "模板格式错误"
  837. br.ErrMsg = "模板格式错误,title:" + text
  838. return
  839. }
  840. }
  841. if k == 5 {
  842. if !strings.Contains(text, "客户名称") {
  843. br.Msg = "模板格式错误"
  844. br.ErrMsg = "模板格式错误,title:" + text
  845. return
  846. }
  847. }
  848. if k == 6 {
  849. if !strings.Contains(text, "社会信用码") {
  850. br.Msg = "模板格式错误"
  851. br.ErrMsg = "模板格式错误,title:" + text
  852. return
  853. }
  854. }
  855. if k == 7 {
  856. if !strings.Contains(text, "在职状态") {
  857. br.Msg = "模板格式错误"
  858. br.ErrMsg = "模板格式错误,title:" + text
  859. return
  860. }
  861. }
  862. }
  863. }
  864. if i >= 2 {
  865. row := sheet.Row(i)
  866. cells := row.Cells
  867. var userName, countryCode, mobileOne, position, departmentName, businessName, creditCode, positionStatus string
  868. for k, cell := range cells {
  869. if k == 0 {
  870. userName = cell.String()
  871. }
  872. if k == 1 {
  873. countryCode = cell.String()
  874. }
  875. if k == 2 {
  876. mobileOne = cell.String()
  877. }
  878. if k == 3 {
  879. position = cell.String()
  880. }
  881. if k == 4 {
  882. departmentName = cell.String()
  883. }
  884. if k == 5 {
  885. businessName = cell.String()
  886. }
  887. if k == 6 {
  888. creditCode = cell.String()
  889. }
  890. if k == 7 {
  891. positionStatus = cell.String()
  892. }
  893. }
  894. //移除空格
  895. mobileOne = utils.TrimStr(mobileOne)
  896. //这些字段都没有的话,系统认为excel到底了
  897. if userName == "" {
  898. utils.FileLog.Info("姓名必填")
  899. continue
  900. }
  901. //如果手机号或者邮箱都没有填写的情况下
  902. if mobileOne == "" {
  903. utils.FileLog.Info("手机号必填")
  904. continue
  905. }
  906. if countryCode == "" {
  907. utils.FileLog.Info("导入数据中存在【国际区号】为空的用户,请检查")
  908. continue
  909. }
  910. if businessName == "" && creditCode == "" {
  911. utils.FileLog.Info("导入数据中存在【姓名】和【社会信用码】都为空的用户,请检查")
  912. continue
  913. }
  914. item := new(models.User)
  915. item.CountryCode = countryCode
  916. item.RealName = userName
  917. if positionStatus == "在职" {
  918. item.PositionStatus = 1
  919. } else if positionStatus == "离职" {
  920. item.PositionStatus = 0
  921. }
  922. item.Mobile = mobileOne
  923. item.UserName = item.Mobile
  924. item.Position = position
  925. item.DepartmentName = departmentName
  926. // 查询商户信息
  927. if creditCode != "" {
  928. businessObj := new(eta_business.EtaBusiness)
  929. businessInfo := new(eta_business.EtaBusiness)
  930. businessInfo, err = businessObj.GetItemByCreditCode(creditCode)
  931. if err != nil {
  932. if err.Error() == utils.ErrNoRow() {
  933. utils.FileLog.Info("商户不存在")
  934. continue
  935. }
  936. utils.FileLog.Info("获取商户信息失败, Err: " + err.Error())
  937. continue
  938. }
  939. item.BusinessCode = businessInfo.BusinessCode
  940. item.EtaBusinessId = businessInfo.EtaBusinessId
  941. }
  942. if item.BusinessCode == "" && businessName != "" {
  943. businessObj := new(eta_business.EtaBusiness)
  944. businessInfo := new(eta_business.EtaBusiness)
  945. businessInfo, err = businessObj.GetItemByBusinessName(businessName)
  946. if err != nil {
  947. if err.Error() == utils.ErrNoRow() {
  948. utils.FileLog.Info("商户不存在")
  949. continue
  950. }
  951. utils.FileLog.Info("获取商户信息失败, Err: " + err.Error())
  952. continue
  953. }
  954. item.BusinessCode = businessInfo.BusinessCode
  955. item.EtaBusinessId = businessInfo.EtaBusinessId
  956. }
  957. if _, ok := excelData[item.CountryCode+"_"+item.Mobile]; ok {
  958. //将用户插入其中,然后退出当前循环,进入下一循环
  959. //repeatUser = append(repeatUser, item)
  960. continue
  961. }
  962. excelData[item.CountryCode+"_"+item.Mobile] = item.CountryCode
  963. //没问题数据
  964. existUser = append(existUser, item)
  965. }
  966. }
  967. }
  968. */
  969. excelUser := make([]*models.User, 0)
  970. addUser := make([]*models.User, 0)
  971. //excel中已经存在的数据,用来判断excel中是否存在相同手机号/邮箱,避免重复提交
  972. excelData := make(map[string]string)
  973. for _, v := range req.ValidUser {
  974. // 查询商户信息
  975. item := new(models.User)
  976. item.CountryCode = v.CountryCode
  977. item.RealName = v.RealName
  978. item.PositionStatus = v.PositionStatus
  979. item.Mobile = v.Mobile
  980. item.UserName = v.Mobile
  981. item.Position = v.Position
  982. item.DepartmentName = v.DepartmentName
  983. if v.BusinessCode != "" {
  984. businessObj := new(eta_business.EtaBusiness)
  985. businessInfo := new(eta_business.EtaBusiness)
  986. businessInfo, err = businessObj.GetItemByBusinessCode(v.BusinessCode)
  987. if err != nil {
  988. if err.Error() == utils.ErrNoRow() {
  989. utils.FileLog.Info("商户不存在")
  990. continue
  991. }
  992. utils.FileLog.Info("获取商户信息失败, Err: " + err.Error())
  993. continue
  994. }
  995. item.BusinessCode = businessInfo.BusinessCode
  996. item.EtaBusinessId = businessInfo.EtaBusinessId
  997. }
  998. if _, ok := excelData[item.CountryCode+"_"+item.Mobile]; ok {
  999. //将用户插入其中,然后退出当前循环,进入下一循环
  1000. //repeatUser = append(repeatUser, item)
  1001. continue
  1002. }
  1003. excelData[item.CountryCode+"_"+item.Mobile] = item.CountryCode
  1004. //没问题数据
  1005. excelUser = append(excelUser, item)
  1006. }
  1007. // 判断系统里该手机号是否已存在
  1008. mobiles := make([]string, 0)
  1009. for k, _ := range excelData {
  1010. mobile := strings.Split(k, "_")[1]
  1011. mobiles = append(mobiles, mobile)
  1012. }
  1013. // 查询系统里是否存在
  1014. existUserMap := make(map[string]struct{})
  1015. if len(mobiles) > 0 {
  1016. existUsers, e := models.GetUserByMobiles(mobiles)
  1017. if e != nil {
  1018. br.Msg = "查询用户失败"
  1019. br.ErrMsg = "查询用户失败,Err:" + e.Error()
  1020. return
  1021. }
  1022. for _, user := range existUsers {
  1023. existUserMap[user.CountryCode+"_"+user.Mobile] = struct{}{}
  1024. }
  1025. }
  1026. for _, v := range excelUser {
  1027. if _, ok := existUserMap[v.CountryCode+"_"+v.Mobile]; !ok {
  1028. addUser = append(addUser, v)
  1029. }
  1030. }
  1031. fmt.Println("表格中用户与系统中存在用户没有冲突")
  1032. //如果表格中用户与系统中存在用户 没有冲突,那么继续执行
  1033. for _, user := range addUser {
  1034. if user.RealName != "" && user.Mobile != "" {
  1035. userData := new(models.User)
  1036. userData.RealName = user.RealName
  1037. userData.UserName = user.Mobile
  1038. userData.Mobile = user.Mobile
  1039. userData.CountryCode = user.CountryCode
  1040. userData.Email = user.Email
  1041. userData.Position = user.Position
  1042. userData.PositionStatus = user.PositionStatus
  1043. userData.BusinessCode = user.BusinessCode
  1044. userData.EtaBusinessId = user.EtaBusinessId
  1045. userData.DepartmentName = user.DepartmentName
  1046. userData.CountryCode = user.CountryCode
  1047. userData.CreatedTime = time.Now()
  1048. userData.LastUpdatedTime = time.Now()
  1049. userData.Enabled = 1
  1050. //判断该手机号、邮箱是否已经添加,如果已经添加,那么就不再添加
  1051. var key string
  1052. key = "user:mobile:" + userData.Mobile
  1053. isHas := utils.Rc.IsExist(key)
  1054. if isHas == false {
  1055. newId, err := models.AddUser(userData)
  1056. userData.UserId = int(newId)
  1057. if err != nil {
  1058. br.Msg = "导入失败"
  1059. br.ErrMsg = "导入失败,Err:" + err.Error()
  1060. return
  1061. }
  1062. }
  1063. }
  1064. }
  1065. /*defer func() {
  1066. os.Remove(path)
  1067. }()*/
  1068. br.Msg = "导入成功"
  1069. br.Ret = 200
  1070. br.Success = true
  1071. }
  1072. // @Title 移动用户至新的商户下
  1073. // @Description 移动用户至新的商户下
  1074. // @Param request body company.EditUserReq true "type json string"
  1075. // @router /user/changeBusiness [post]
  1076. func (this *EtaBusinessUserController) ChangeUserBusiness() {
  1077. br := new(models.BaseResponse).Init()
  1078. defer func() {
  1079. this.Data["json"] = br
  1080. this.ServeJSON()
  1081. }()
  1082. sysUser := this.SysUser
  1083. if sysUser == nil {
  1084. br.Msg = "请登录"
  1085. br.ErrMsg = "请登录,SysUser Is Empty"
  1086. br.Ret = 408
  1087. return
  1088. }
  1089. var req models.ChangeUserBusinessReq
  1090. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1091. if err != nil {
  1092. br.Msg = "参数解析异常!"
  1093. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1094. return
  1095. }
  1096. if req.UserId <= 0 {
  1097. br.Msg = "参数错误!"
  1098. return
  1099. }
  1100. if req.BusinessCode == "" {
  1101. br.Msg = "请选择商户"
  1102. br.IsSendEmail = false
  1103. return
  1104. }
  1105. //操作权限校验
  1106. userInfo, err := models.GetUserByUserId(req.UserId)
  1107. if err != nil {
  1108. if err.Error() == utils.ErrNoRow() {
  1109. br.Msg = "用户不存在"
  1110. return
  1111. }
  1112. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  1113. br.Msg = "获取信息失败"
  1114. return
  1115. }
  1116. if userInfo.BusinessCode == req.BusinessCode {
  1117. br.Msg = "用户已经在该商户下"
  1118. return
  1119. }
  1120. businessObj := new(eta_business.EtaBusiness)
  1121. _, err = businessObj.GetItemByBusinessCode(req.BusinessCode)
  1122. if err != nil {
  1123. if err.Error() == utils.ErrNoRow() {
  1124. br.Msg = "商户不存在"
  1125. return
  1126. }
  1127. br.Msg = "商户信息有误"
  1128. br.ErrMsg = "获取商户信息失败, Err: " + err.Error()
  1129. return
  1130. }
  1131. //待更新字段
  1132. updateCol := []string{"LastUpdatedTime", "BusinessCode"}
  1133. userInfo.LastUpdatedTime = time.Now()
  1134. userInfo.BusinessCode = req.BusinessCode
  1135. err = userInfo.Update(updateCol)
  1136. if err != nil {
  1137. br.Msg = "操作失败!"
  1138. br.ErrMsg = "操作失败,Err:" + err.Error()
  1139. return
  1140. }
  1141. br.Ret = 200
  1142. br.Success = true
  1143. br.Msg = "操作成功"
  1144. br.IsAddLog = true
  1145. }
  1146. // @Title 开启/禁用系统用户
  1147. // @Description 开启/禁用系统用户接口
  1148. // @Param request body system.SysuserEditReq true "type json string"
  1149. // @Success 200 操作成功
  1150. // @router /user/editEnabled [post]
  1151. func (this *EtaBusinessUserController) EditEnabled() {
  1152. br := new(models.BaseResponse).Init()
  1153. defer func() {
  1154. this.Data["json"] = br
  1155. this.ServeJSON()
  1156. }()
  1157. var req models.UserEditEnabledReq
  1158. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1159. if err != nil {
  1160. br.Msg = "参数解析异常!"
  1161. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1162. return
  1163. }
  1164. if req.UserId <= 0 {
  1165. br.Msg = "请选择用户"
  1166. return
  1167. }
  1168. //操作权限校验
  1169. userInfo, err := models.GetUserByUserId(req.UserId)
  1170. if err != nil {
  1171. if err.Error() == utils.ErrNoRow() {
  1172. br.Msg = "用户不存在"
  1173. return
  1174. }
  1175. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  1176. br.Msg = "获取信息失败"
  1177. return
  1178. }
  1179. if req.Enabled != 0 && req.Enabled != 1 {
  1180. br.Msg = "参数错误"
  1181. return
  1182. }
  1183. //待更新字段
  1184. updateCol := []string{"LastUpdatedTime", "Enabled"}
  1185. userInfo.LastUpdatedTime = time.Now()
  1186. userInfo.Enabled = req.Enabled
  1187. err = userInfo.Update(updateCol)
  1188. if err != nil {
  1189. br.Msg = "操作失败!"
  1190. br.ErrMsg = "操作失败,Err:" + err.Error()
  1191. return
  1192. }
  1193. //todo 用户被禁用的情况下,需要将他对应的token给过期
  1194. /*if adminItem.Enabled == 1 && req.Enabled == 0 {
  1195. logOutSystemUser(adminItem.AdminId)
  1196. }*/
  1197. br.Ret = 200
  1198. br.Success = true
  1199. br.IsAddLog = true
  1200. br.Msg = "操作成功"
  1201. }
  1202. // AreaCodeList
  1203. // @Title 手机号区号列表
  1204. // @Description 手机号区号列表
  1205. // @Success 200 Ret=200 获取成功
  1206. // @router /area_code/list [get]
  1207. func (this *EtaBusinessUserController) AreaCodeList() {
  1208. br := new(models.BaseResponse).Init()
  1209. defer func() {
  1210. if br.ErrMsg == "" {
  1211. br.IsSendEmail = false
  1212. }
  1213. this.Data["json"] = br
  1214. this.ServeJSON()
  1215. }()
  1216. type AreaCodeListResp struct {
  1217. Name string `description:"地区"`
  1218. Value string `description:"区号"`
  1219. }
  1220. resp := make([]AreaCodeListResp, 0)
  1221. confAuth, e := system.GetCrmConfigDetailByCode(system.ConfAreaCodeListKey)
  1222. if e != nil {
  1223. br.Msg = "获取失败"
  1224. br.ErrMsg = "获取手机号区号配置失败, Err: " + e.Error()
  1225. return
  1226. }
  1227. if confAuth.ConfigValue == "" {
  1228. br.Msg = "获取失败"
  1229. br.ErrMsg = "手机号区号配置为空"
  1230. return
  1231. }
  1232. if e := json.Unmarshal([]byte(confAuth.ConfigValue), &resp); e != nil {
  1233. br.Msg = "获取失败"
  1234. br.ErrMsg = "手机号区号配置有误"
  1235. return
  1236. }
  1237. br.Data = resp
  1238. br.Ret = 200
  1239. br.Success = true
  1240. br.Msg = "获取成功"
  1241. }
  1242. // TemplateDownload
  1243. // @Title 下载模板
  1244. // @Description 下载模板
  1245. // @Success 200 {object} models.EdbdataClassifyResp
  1246. // @Param Source query int false "来源:1:模板1;2:模板2"
  1247. // @router /user/template [get]
  1248. func (this *EtaBusinessUserController) TemplateDownload() {
  1249. br := new(models.BaseResponse).Init()
  1250. defer func() {
  1251. this.Data["json"] = br
  1252. this.ServeJSON()
  1253. }()
  1254. this.Ctx.Output.Download("./static/template/用户导入模版.xlsx", "用户导入模版.xlsx")
  1255. //this.Ctx.Output.Download("./static/数据导入模板.xlsx", "数据导入模板.xlsx")
  1256. br.Ret = 200
  1257. br.Success = true
  1258. br.Msg = "下载成功"
  1259. }