english_classify.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477
  1. package english_report
  2. import (
  3. "fmt"
  4. "github.com/rdlucklib/rdluck_tools/paging"
  5. "hongze/hz_crm_api/models"
  6. "hongze/hz_crm_api/utils"
  7. "sort"
  8. )
  9. // EnglishClassifyController 英文分类
  10. //type EnglishClassifyController struct {
  11. // controllers.BaseAuthController
  12. //}
  13. // ListClassify
  14. // @Title 获取分类列表
  15. // @Description 获取分类列表
  16. // @Param PageSize query int true "每页数据条数"
  17. // @Param CurrentIndex query int true "当前页页码,从1开始"
  18. // @Param KeyWord query string true "检索关键词"
  19. // @Param CompanyType query string false "产品类型,枚举值:'ficc','权益';不传默认返回全部"
  20. // @Success 200 {object} models.EnglishClassifyListResp
  21. // @router /classify/list [get]
  22. func (this *EnglishReportController) ListClassify() {
  23. br := new(models.BaseResponse).Init()
  24. defer func() {
  25. this.Data["json"] = br
  26. this.ServeJSON()
  27. }()
  28. pageSize, _ := this.GetInt("PageSize")
  29. currentIndex, _ := this.GetInt("CurrentIndex")
  30. keyWord := this.GetString("KeyWord")
  31. classifyType, _ := this.GetInt("ClassifyType", 0)
  32. var startSize int
  33. if pageSize <= 0 {
  34. pageSize = utils.PageSize20
  35. }
  36. if currentIndex <= 0 {
  37. currentIndex = 1
  38. }
  39. startSize = utils.StartIndex(currentIndex, pageSize)
  40. page := paging.GetPaging(currentIndex, pageSize, 0)
  41. resp := new(models.EnglishClassifyListResp)
  42. list, err := models.GetEnglishClassifyList(startSize, pageSize, keyWord, classifyType)
  43. if err != nil {
  44. br.Msg = "获取失败"
  45. br.ErrMsg = "获取失败,Err:" + err.Error()
  46. return
  47. }
  48. total, err := models.GetEnglishClassifyListCount(keyWord, classifyType)
  49. if err != nil {
  50. br.Msg = "获取失败"
  51. br.ErrMsg = "获取失败,Err:" + err.Error()
  52. return
  53. }
  54. if total == 0 {
  55. resp.List = make([]*models.EnglishClassifyList, 0)
  56. resp.Paging = page
  57. br.Data = resp
  58. br.Ret = 200
  59. br.Success = true
  60. br.Msg = "获取成功"
  61. return
  62. }
  63. var parentIds []int
  64. for _, v := range list {
  65. parentIds = append(parentIds, v.Id)
  66. }
  67. childMap := make(map[int][]*models.EnglishClassifyList)
  68. tmpList, err := models.GetEnglishClassifyChildByParentIds(parentIds, keyWord, classifyType)
  69. if err != nil {
  70. br.Msg = "获取二级分类失败"
  71. br.ErrMsg = "获取二级分类失败,Err:" + err.Error()
  72. return
  73. }
  74. // 二级分类-品种权限
  75. permissionMap := make(map[int][]int)
  76. {
  77. classifyIds := make([]int, 0)
  78. for _, v := range tmpList {
  79. classifyIds = append(classifyIds, v.Id)
  80. }
  81. if len(classifyIds) > 0 {
  82. cond := fmt.Sprintf(` AND %s IN (%s)`, models.EnClassifyPermissionColumns.EnClassifyId, utils.GetOrmInReplace(len(classifyIds)))
  83. pars := make([]interface{}, 0)
  84. pars = append(pars, classifyIds)
  85. ob := new(models.EnClassifyPermission)
  86. items, e := ob.GetItemsByCondition(cond, pars, []string{}, "")
  87. if e != nil {
  88. br.Msg = "获取失败"
  89. br.ErrMsg = "获取客户权限列表失败, Err: " + e.Error()
  90. return
  91. }
  92. for _, v := range items {
  93. if permissionMap[v.EnClassifyId] == nil {
  94. permissionMap[v.EnClassifyId] = make([]int, 0)
  95. }
  96. permissionMap[v.EnClassifyId] = append(permissionMap[v.EnClassifyId], v.EnPermissionId)
  97. }
  98. }
  99. }
  100. for _, v := range tmpList {
  101. v.EnPermissions = permissionMap[v.Id]
  102. childMap[v.ParentId] = append(childMap[v.ParentId], v)
  103. }
  104. for _, v := range list {
  105. if child, ok := childMap[v.Id]; ok {
  106. v.Child = child
  107. }
  108. }
  109. var sortList models.RSClassifyList
  110. sortList = list
  111. sort.Sort(sortList)
  112. for _, item := range sortList {
  113. var sortChildList models.RSChildClassifyList
  114. sortChildList = item.Child
  115. sort.Sort(sortChildList)
  116. item.Child = sortChildList
  117. }
  118. resp.List = sortList
  119. resp.Paging = page
  120. br.Data = resp
  121. br.Ret = 200
  122. br.Success = true
  123. br.Msg = "获取成功"
  124. }
  125. //// @Title 新增分类
  126. //// @Description 新增分类接口
  127. //// @Param ClassifyName int true "分类名称"
  128. //// @Param ParentId query int true "父级Id 添加父级时为0"
  129. //// @Param Sort query string false "排序"
  130. //// @Success 200 新增成功
  131. //// @router /classify/add [get]
  132. //func (this *EnglishReportController) AddClassify() {
  133. // br := new(models.BaseResponse).Init()
  134. // defer func() {
  135. // this.Data["json"] = br
  136. // this.ServeJSON()
  137. // }()
  138. // classifyName := this.GetString("ClassifyName")
  139. // parentId, _ := this.GetInt("ParentId")
  140. // classifyType, _ := this.GetInt("ClassifyType", 0)
  141. // sort, _ := this.GetInt("Sort")
  142. //
  143. // item := &models.EnglishClassify{
  144. // ClassifyName: classifyName,
  145. // Sort: sort,
  146. // ParentId: parentId,
  147. // CreateTime: time.Now(),
  148. // ModifyTime: time.Now(),
  149. // ClassifyType: classifyType,
  150. // IsShow: 1,
  151. // }
  152. // counts, err := models.GetEnglishClassifyCountsByName(classifyName, parentId, classifyType)
  153. // if err != nil {
  154. // br.Msg = "查询失败"
  155. // br.ErrMsg = "查询失败,Err:" + err.Error()
  156. // return
  157. // }
  158. // if counts > 0 {
  159. // br.Msg = "该名称已存在"
  160. // br.ErrMsg = "该名称已存在!"
  161. // return
  162. // }
  163. // _, err = models.AddEnglishClassify(item)
  164. // if err != nil {
  165. // br.Msg = "保存失败"
  166. // br.ErrMsg = "保存失败,Err:" + err.Error()
  167. // return
  168. // }
  169. //
  170. // br.Ret = 200
  171. // br.Success = true
  172. // br.Msg = "新增成功"
  173. //}
  174. //
  175. //// @Title 编辑分类
  176. //// @Description 编辑分类接口
  177. //// @Param ClassifyId int true "分类Id"
  178. //// @Param ClassifyName string true "分类名称"
  179. //// @Param ParentId query int true "父级Id 添加父级时为0"
  180. //// @Param Sort query string false "排序"
  181. //// @Success 200 保存成功
  182. //// @router /classify/edit [get]
  183. //func (this *EnglishReportController) EditClassify() {
  184. // br := new(models.BaseResponse).Init()
  185. // defer func() {
  186. // this.Data["json"] = br
  187. // this.ServeJSON()
  188. // }()
  189. // classifyId, _ := this.GetInt("ClassifyId")
  190. // classifyName := this.GetString("ClassifyName")
  191. // parentId, _ := this.GetInt("ParentId")
  192. // sort, _ := this.GetInt("Sort")
  193. //
  194. // if parentId == classifyId {
  195. // br.Msg = "上级分类不能选择自己"
  196. // return
  197. // }
  198. // if classifyId <= 0 {
  199. // br.Msg = "参数错误"
  200. // return
  201. // }
  202. // if classifyName == "" {
  203. // br.Msg = "分类名称不可为空"
  204. // return
  205. // }
  206. //
  207. // oldItem, err := models.GetEnglishReportClassifyById(classifyId)
  208. // if err != nil && err.Error() != utils.ErrNoRow() {
  209. // br.Msg = "获取信息失败"
  210. // br.ErrMsg = "获取信息失败,Err:" + err.Error()
  211. // return
  212. // }
  213. // parent, err := models.GetEnglishReportClassifyById(parentId)
  214. // if err != nil && err.Error() != utils.ErrNoRow() {
  215. // br.Msg = "获取信息失败"
  216. // br.ErrMsg = "获取信息失败,Err:" + err.Error()
  217. // return
  218. // }
  219. //
  220. // if oldItem.ParentId == 0 && parentId > 0 {
  221. // // 一级分类变更为二级分类,禁止
  222. // br.Msg = "一级分类不允许更改为二级分类"
  223. // return
  224. // }
  225. //
  226. // //判断是否已存在同个名称的分类
  227. // existItem, e := models.GetEnglishClassifyByClassifyNameParentId(classifyName, parentId, oldItem.ClassifyType)
  228. // if e != nil {
  229. // if e.Error() != utils.ErrNoRow() {
  230. // br.Msg = "查询已存在的分类出错"
  231. // br.ErrMsg = "查询已存在的分类出错, Err:" + e.Error()
  232. // return
  233. // }
  234. // }
  235. // if e == nil && existItem.Id != oldItem.Id {
  236. // br.Msg = "分类名称:" + classifyName + "已存在"
  237. // return
  238. // }
  239. // if err != nil && err.Error() != utils.ErrNoRow() {
  240. // br.Msg = "获取信息失败"
  241. // br.ErrMsg = "获取信息失败,Err:" + err.Error()
  242. // return
  243. // }
  244. //
  245. // //oldParentId := item.ParentId
  246. // item := &models.EnglishClassify{
  247. // Id: oldItem.Id,
  248. // ClassifyName: classifyName,
  249. // Sort: sort,
  250. // ParentId: parentId,
  251. // ModifyTime: time.Now(),
  252. // ClassifyType: oldItem.ClassifyType,
  253. // IsShow: 1,
  254. // }
  255. // if oldItem.ClassifyType == 1 {
  256. // err = services.UpdateEnglishVideoClassifyId(oldItem, item, parent, classifyId)
  257. // if err != nil {
  258. // br.Msg = err.Error()
  259. // return
  260. // }
  261. // } else {
  262. // // 更新研报里的分类名称
  263. // err = services.UpdateEnglishReportClassifyId(oldItem, item, parent, classifyId)
  264. // if err != nil {
  265. // br.Msg = err.Error()
  266. // return
  267. // }
  268. // }
  269. //
  270. // err = models.ModifyEnglishClassify(item)
  271. // if err != nil {
  272. // br.Msg = "保存失败"
  273. // br.ErrMsg = "保存失败,Err:" + err.Error()
  274. // return
  275. // }
  276. //
  277. // br.Ret = 200
  278. // br.Success = true
  279. // br.Msg = "保存成功"
  280. //}
  281. //
  282. //// @Title 删除分类列表
  283. //// @Description 删除分类列表
  284. //// @Param ClassifyId int true "分类名称"
  285. //// @Param ParentId query int true "父级Id"
  286. //// @Success 200 保存成功
  287. //// @router /classify/delete [get]
  288. //func (this *EnglishReportController) DelClassify() {
  289. // br := new(models.BaseResponse).Init()
  290. // defer func() {
  291. // this.Data["json"] = br
  292. // this.ServeJSON()
  293. // }()
  294. // classifyId, _ := this.GetInt("ClassifyId")
  295. // //parentId, _ := this.GetInt("ParentId")
  296. //
  297. // classifyInfo, err := models.GetEnglishReportClassifyById(classifyId)
  298. // if err != nil {
  299. // if err.Error() == utils.ErrNoRow() {
  300. // br.Msg = "当前分类不存在"
  301. // br.ErrMsg = "当前分类不存在"
  302. // return
  303. // }
  304. // br.Msg = "获取分类信息失败"
  305. // br.ErrMsg = "获取分类信息失败,Err:" + err.Error()
  306. // return
  307. // }
  308. //
  309. // count, err := models.GetEnglishClassifyChildCounts(classifyId)
  310. // if err != nil && err.Error() != utils.ErrNoRow() {
  311. // br.Msg = "获取信息失败"
  312. // br.ErrMsg = "获取失败,Err:" + err.Error()
  313. // return
  314. // }
  315. //
  316. // if count > 0 {
  317. // br.Msg = "请先删除该分类下关联分类"
  318. // br.Ret = 403
  319. // return
  320. // }
  321. //
  322. // if classifyInfo.ClassifyType == 0 {
  323. // reportCount, e := models.GetEnglishReportCounts(classifyId, classifyInfo.ParentId)
  324. // if e != nil && e.Error() != utils.ErrNoRow() {
  325. // br.Msg = "获取信息失败"
  326. // br.ErrMsg = "获取失败,Err:" + e.Error()
  327. // return
  328. // }
  329. //
  330. // if reportCount > 0 {
  331. // br.Msg = "该分类有关联报告,不允许删除"
  332. // br.Ret = 403
  333. // return
  334. // }
  335. // } else {
  336. // videoCount, e := models.GetEnglishVideoCounts(classifyId, classifyInfo.ParentId)
  337. // if e != nil && e.Error() != utils.ErrNoRow() {
  338. // br.Msg = "获取信息失败"
  339. // br.ErrMsg = "获取失败,Err:" + e.Error()
  340. // return
  341. // }
  342. //
  343. // if videoCount > 0 {
  344. // br.Msg = "该分类有关联的路演视频,不允许删除"
  345. // br.Ret = 403
  346. // return
  347. // }
  348. // }
  349. //
  350. // if err = models.DeleteEnglishClassify(classifyId); err != nil {
  351. // br.Msg = "删除失败"
  352. // br.ErrMsg = "删除报告失败, Err: " + err.Error()
  353. // return
  354. // }
  355. //
  356. // br.Ret = 200
  357. // br.Success = true
  358. // br.Msg = "删除成功"
  359. //}
  360. //
  361. //// @Title 获取一级分类列表
  362. //// @Description 获取一级分类列表
  363. //// @Param PageSize query int true "每页数据条数"
  364. //// @Param CurrentIndex query int true "当前页页码,从1开始"
  365. //// @Param CompanyType query string false "产品类型,枚举值:'ficc','权益';不传默认返回全部"
  366. //// @Success 200 {object} models.EnglishClassifyListResp
  367. //// @router /classify/first/list [get]
  368. //func (this *EnglishReportController) FistListClassify() {
  369. // br := new(models.BaseResponse).Init()
  370. // defer func() {
  371. // this.Data["json"] = br
  372. // this.ServeJSON()
  373. // }()
  374. // pageSize, _ := this.GetInt("PageSize")
  375. // currentIndex, _ := this.GetInt("CurrentIndex")
  376. // classifyType, _ := this.GetInt("ClassifyType", 0)
  377. //
  378. // var startSize int
  379. // if pageSize <= 0 {
  380. // pageSize = utils.PageSize20
  381. // }
  382. // if currentIndex <= 0 {
  383. // currentIndex = 1
  384. // }
  385. //
  386. // startSize = utils.StartIndex(currentIndex, pageSize)
  387. // list, err := models.GetEnglishFirstClassifyList(classifyType, startSize, pageSize)
  388. // if err != nil {
  389. // br.Msg = "获取失败"
  390. // br.ErrMsg = "获取失败,Err:" + err.Error()
  391. // return
  392. // }
  393. // total, err := models.GetEnglishFirstClassifyListCount(classifyType)
  394. // if err != nil {
  395. // br.Msg = "获取失败"
  396. // br.ErrMsg = "获取失败,Err:" + err.Error()
  397. // return
  398. // }
  399. //
  400. // page := paging.GetPaging(currentIndex, pageSize, total)
  401. // resp := new(models.EnglishClassifyListResp)
  402. // resp.List = list
  403. // resp.Paging = page
  404. //
  405. // br.Data = resp
  406. // br.Ret = 200
  407. // br.Success = true
  408. // br.Msg = "获取成功"
  409. //}
  410. //
  411. //// PermissionEdit
  412. //// @Title 编辑品种权限
  413. //// @Description 编辑品种权限
  414. //// @Param request body models.EnPermissionAddReq true "type json string"
  415. //// @Success 200 Ret=200 操作成功
  416. //// @router /permission/edit [post]
  417. //func (this *EnglishClassifyController) PermissionEdit() {
  418. // br := new(models.BaseResponse).Init()
  419. // defer func() {
  420. // if br.ErrMsg == "" {
  421. // br.IsSendEmail = false
  422. // }
  423. // this.Data["json"] = br
  424. // this.ServeJSON()
  425. // }()
  426. // sysUser := this.SysUser
  427. // if sysUser == nil {
  428. // br.Msg = "请登录"
  429. // br.ErrMsg = "请登录,SysUser Is Empty"
  430. // br.Ret = 408
  431. // return
  432. // }
  433. // var req models.EnClassifyPermissionEditReq
  434. // if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
  435. // br.Msg = "参数解析异常!"
  436. // br.ErrMsg = "参数解析失败,Err:" + e.Error()
  437. // return
  438. // }
  439. // if req.ClassifyId <= 0 {
  440. // br.Msg = "参数有误"
  441. // return
  442. // }
  443. //
  444. // // 更新品种权限
  445. // nowTime := time.Now().Local()
  446. // permissions := make([]*models.EnClassifyPermission, 0)
  447. // for _, p := range req.EnPermissions {
  448. // v := new(models.EnClassifyPermission)
  449. // v.EnPermissionId = p
  450. // v.EnClassifyId = req.ClassifyId
  451. // v.CreateTime = nowTime
  452. // permissions = append(permissions, v)
  453. // }
  454. // if e := models.ClearAndCreateEnClassifyPermissions(req.ClassifyId, permissions); e != nil {
  455. // br.Msg = "保存失败"
  456. // br.ErrMsg = "更新分类品种权限失败, Err: " + e.Error()
  457. // return
  458. // }
  459. //
  460. // br.Ret = 200
  461. // br.Success = true
  462. // br.Msg = "操作成功"
  463. //}