company_permission.go 32 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "hongze/hz_crm_api/models"
  6. "hongze/hz_crm_api/models/company"
  7. "hongze/hz_crm_api/services"
  8. "hongze/hz_crm_api/utils"
  9. "strconv"
  10. "strings"
  11. "time"
  12. )
  13. // 客户权限管理
  14. type CompanyPermissionController struct {
  15. BaseAuthController
  16. }
  17. // List
  18. // @Title 获取权限设置基础信息
  19. // @Description 获取权限设置基础信息接口
  20. // @Param CompanyType query string true "客户类型:传空字符串或者不传为全部,'ficc','权益'"
  21. // @Param CompanyStatus query string true "客户状态"
  22. // @Param NoUpgrade query bool false "是否不展示升级权限,默认为 false"
  23. // @Param IsShowYanXuanKouDian query bool false "是否展示研选扣点包,默认为 false"
  24. // @Success 200 {object} company.PermissionSetResp
  25. // @router /permission/list [get]
  26. func (this *CompanyPermissionController) List() {
  27. br := new(models.BaseResponse).Init()
  28. defer func() {
  29. this.Data["json"] = br
  30. this.ServeJSON()
  31. }()
  32. sysUser := this.SysUser
  33. if sysUser == nil {
  34. br.Msg = "请登录"
  35. br.ErrMsg = "请登录,SysUser Is Empty"
  36. br.Ret = 408
  37. return
  38. }
  39. // Tips:目前这个接口权益在添加客户、申请转正、领取客户、续约申请均有用到
  40. companyType := this.GetString("CompanyType")
  41. noUpgrade, _ := this.GetBool("NoUpgrade", false) // 添加客户、领取客户=true; 申请转正、续约申请=false
  42. isShowYanXuanKouDian, _ := this.GetBool("IsShowYanXuanKouDian", false) // 是否展示研选扣点
  43. companyStatus := this.GetString("CompanyStatus") // 客户状态
  44. if strings.Contains(companyStatus, utils.COMPANY_STATUS_X_CLASS_TRY_OUT) || strings.Contains(companyStatus, utils.COMPANY_STATUS_FOREVER) {
  45. companyStatus = utils.COMPANY_STATUS_FOREVER
  46. }
  47. var productId int
  48. resp := new(company.PermissionSetResp)
  49. roleTypeCode := sysUser.RoleTypeCode
  50. productId = services.GetProductId(roleTypeCode)
  51. // FICC
  52. if productId == utils.COMPANY_PRODUCT_FICC_ID || companyType == utils.COMPANY_PRODUCT_FICC_NAME {
  53. items, err := company.GetPermissionByProductId(utils.COMPANY_PRODUCT_FICC_ID)
  54. if err != nil {
  55. br.Msg = "获取失败"
  56. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  57. return
  58. }
  59. permissionMap := make(map[int][]*company.PermissionSetItem, 0)
  60. permissionCheckMap := make(map[int][]int, 0)
  61. for _, v := range items {
  62. if v.ParentId > 0 {
  63. permissionMap[v.ParentId] = append(permissionMap[v.ParentId], v)
  64. if v.IsPublic == 1 {
  65. permissionCheckMap[v.ParentId] = append(permissionCheckMap[v.ParentId], v.ChartPermissionId)
  66. }
  67. }
  68. }
  69. for _, v := range items {
  70. if v.ParentId == 0 {
  71. p := new(company.PermissionSetList)
  72. p.Items = make([]*company.PermissionSetItem, 0)
  73. p.CheckList = make([]int, 0)
  74. p.ClassifyName = v.PermissionName
  75. if subList, ok := permissionMap[v.ChartPermissionId]; ok {
  76. p.Items = subList
  77. }
  78. if checkList, ok := permissionCheckMap[v.ChartPermissionId]; ok {
  79. p.CheckList = checkList
  80. }
  81. resp.List = append(resp.List, p)
  82. }
  83. }
  84. br.Ret = 200
  85. br.Success = true
  86. br.Msg = "获取成功"
  87. br.Data = resp
  88. return
  89. }
  90. // 权益
  91. if productId == utils.COMPANY_PRODUCT_RAI_ID || companyType == utils.COMPANY_PRODUCT_RAI_NAME {
  92. p := new(company.PermissionSetList)
  93. itemsMenu, err := company.GetPermissionSetMenuItemsByType(utils.COMPANY_PRODUCT_RAI_ID)
  94. if err != nil {
  95. br.Msg = "获取失败"
  96. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  97. return
  98. }
  99. var setMenuChartPermissionId []int //权益大套餐所对应的行业
  100. for _, v := range itemsMenu {
  101. setMenuChartPermissionId = append(setMenuChartPermissionId, v.ChartPermissionId)
  102. }
  103. items, err := company.GetPermissionSetItemsByType(utils.COMPANY_PRODUCT_RAI_ID, utils.COMPANY_PRODUCT_RAI_NAME)
  104. if err != nil {
  105. br.Msg = "获取失败"
  106. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  107. return
  108. }
  109. filterPermissionName := utils.FilterPermissionNameRai // 需要过滤不展示的行业
  110. if isShowYanXuanKouDian {
  111. filterPermissionName = []string{"专家"} //申请转正,或者申请续约的时候 调研 行业需要进行展示
  112. }
  113. // 原始版的权限
  114. if noUpgrade {
  115. for _, v := range items {
  116. if !isShowYanXuanKouDian && v.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID {
  117. continue
  118. }
  119. if utils.InArrayByStr(filterPermissionName, v.PermissionName) {
  120. continue
  121. }
  122. p.Items = append(p.Items, v)
  123. }
  124. }
  125. // 展示升级权限, 需要有套餐的展示, 行业可能需要拆分主客观, 买方研选需要分为3w和5w两种
  126. if !noUpgrade {
  127. //判断是不是永续类型的客户
  128. if companyStatus == utils.COMPANY_STATUS_FOREVER {
  129. filterPermissionName = []string{"专家", "路演服务", "调研", "研选订阅", "研选扣点包"} //权益的永续客户这些不展示
  130. for _, v := range items {
  131. if utils.InArrayByStr(filterPermissionName, v.PermissionName) {
  132. continue
  133. }
  134. p.Items = append(p.Items, v)
  135. }
  136. } else {
  137. p.Items = append(p.Items, &company.PermissionSetItem{
  138. PermissionName: utils.CHART_PERMISSION_NAME_45W,
  139. SetMenuChartPermissionId: setMenuChartPermissionId,
  140. }, &company.PermissionSetItem{
  141. PermissionName: utils.CHART_PERMISSION_NAME_70W,
  142. SetMenuChartPermissionId: setMenuChartPermissionId,
  143. })
  144. // 是否为内部人员
  145. isRai, e := services.CheckRaiAdmin(sysUser.AdminId)
  146. if e != nil {
  147. br.Msg = "获取失败"
  148. br.ErrMsg = "判断是否为权益内部人员失败, GetRaiAdmin Err: " + e.Error()
  149. return
  150. }
  151. // 获取行业主客观权限ID
  152. childSubMap, childObjMap := make(map[string]int), make(map[string]int)
  153. {
  154. permissions, e := models.GetChartPermissionList()
  155. if e != nil {
  156. br.Msg = "获取失败"
  157. br.ErrMsg = "获取权限列表失败, GetChartPermissionList Err: " + e.Error()
  158. return
  159. }
  160. for _, v := range permissions {
  161. if !strings.Contains("医药消费科技智造", v.PermissionName) {
  162. continue
  163. }
  164. if strings.Contains(v.Remark, "主观") {
  165. childSubMap[v.PermissionName] = v.ChartPermissionId
  166. continue
  167. }
  168. childObjMap[v.PermissionName] = v.ChartPermissionId
  169. }
  170. }
  171. for _, v := range items {
  172. if !isShowYanXuanKouDian && v.ChartPermissionId == utils.YAN_XUAN_KOU_DIAN_BAO_ID {
  173. continue
  174. }
  175. if utils.InArrayByStr(filterPermissionName, v.PermissionName) {
  176. continue
  177. }
  178. // 处理四大行业的升级展示
  179. if strings.Contains("医药消费科技智造", v.PermissionName) {
  180. // 内部人员需要拆分主客观权限
  181. if isRai {
  182. v.Child = make([]*company.PermissionSetItem, 0)
  183. v.Child = append(v.Child, &company.PermissionSetItem{
  184. ChartPermissionId: childSubMap[v.PermissionName],
  185. PermissionName: "主观",
  186. PermissionType: 1,
  187. }, &company.PermissionSetItem{
  188. ChartPermissionId: childObjMap[v.PermissionName],
  189. PermissionName: "客观",
  190. PermissionType: 2,
  191. })
  192. }
  193. p.Items = append(p.Items, v)
  194. t := new(company.PermissionSetItem)
  195. t.ChartPermissionId = v.ChartPermissionId + utils.PERMISSION_ID_UPGRADE
  196. t.PermissionName = v.PermissionName + "(升级)"
  197. t.PermissionType = v.PermissionType
  198. t.Checked = v.Checked
  199. p.Items = append(p.Items, t)
  200. continue
  201. }
  202. // 买方研选划分为3w和5w,10W三种
  203. //if v.PermissionName == utils.CHART_PERMISSION_NAME_MF_YANXUAN {
  204. // m3, m5, m10 := new(company.PermissionSetItem), new(company.PermissionSetItem), new(company.PermissionSetItem)
  205. // m3.ChartPermissionId = v.ChartPermissionId
  206. // m3.PermissionName = fmt.Sprint(v.PermissionName, "(3w)")
  207. // p.Items = append(p.Items, m3)
  208. //
  209. // m5.ChartPermissionId = v.ChartPermissionId + utils.PERMISSION_ID_YANXUAN_DIFF
  210. // m5.PermissionName = fmt.Sprint(v.PermissionName, "(5w)")
  211. // p.Items = append(p.Items, m5)
  212. //
  213. // m10.ChartPermissionId = utils.PERMISSION_ID_YANXUAN_10W_DIFF
  214. // m10.PermissionName = fmt.Sprint(v.PermissionName, "(10w)")
  215. // p.Items = append(p.Items, m10)
  216. // continue
  217. //}
  218. p.Items = append(p.Items, v)
  219. }
  220. }
  221. }
  222. p.ClassifyName = utils.COMPANY_PRODUCT_RAI_NAME
  223. p.CheckList = make([]int, 0)
  224. resp.List = append(resp.List, p)
  225. }
  226. br.Ret = 200
  227. br.Success = true
  228. br.Msg = "获取成功"
  229. br.Data = resp
  230. }
  231. // @Title 获取合同列表的权限设置基础信息
  232. // @Description 获取权限设置基础信息接口
  233. // @Param CompanyType query string true "客户类型:传空字符串或者不传为全部,'ficc','权益'"
  234. // @Success 200 {object} company.PermissionSetResp
  235. // @router /contract_permission/list [get]
  236. func (this *CompanyPermissionController) ListByContract() {
  237. br := new(models.BaseResponse).Init()
  238. defer func() {
  239. this.Data["json"] = br
  240. this.ServeJSON()
  241. }()
  242. sysUser := this.SysUser
  243. if sysUser == nil {
  244. br.Msg = "请登录"
  245. br.ErrMsg = "请登录,SysUser Is Empty"
  246. br.Ret = 408
  247. return
  248. }
  249. companyType := this.GetString("CompanyType")
  250. var productId int
  251. resp := new(company.PermissionSetResp)
  252. roleTypeCode := sysUser.RoleTypeCode
  253. productId = services.GetProductId(roleTypeCode)
  254. if productId == 1 || companyType == utils.COMPANY_PRODUCT_FICC_NAME {
  255. allFiccPermissions, err := company.GetPermissionByProductId(utils.COMPANY_PRODUCT_FICC_ID)
  256. if err != nil {
  257. br.Msg = "获取失败"
  258. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  259. return
  260. }
  261. permissionMap := make(map[int][]*company.PermissionSetItem, 0)
  262. permissionCheckMap := make(map[int][]int, 0)
  263. for _, v := range allFiccPermissions {
  264. if v.ParentId > 0 {
  265. permissionMap[v.ParentId] = append(permissionMap[v.ParentId], v)
  266. if v.IsPublic == 1 {
  267. permissionCheckMap[v.ParentId] = append(permissionCheckMap[v.ParentId], v.ChartPermissionId)
  268. }
  269. }
  270. }
  271. for _, v := range allFiccPermissions {
  272. if v.ParentId == 0 {
  273. //合同这边市场策略不需要体现出来,所以调整返回
  274. if v.PermissionName == "市场策略" || v.PermissionName == "固定收益" {
  275. continue
  276. }
  277. p := new(company.PermissionSetList)
  278. p.Items = make([]*company.PermissionSetItem, 0)
  279. p.CheckList = make([]int, 0)
  280. p.ClassifyName = v.PermissionName
  281. if subList, ok := permissionMap[v.ChartPermissionId]; ok {
  282. p.Items = subList
  283. }
  284. if checkList, ok := permissionCheckMap[v.ChartPermissionId]; ok {
  285. p.CheckList = checkList
  286. }
  287. resp.List = append(resp.List, p)
  288. }
  289. }
  290. } else if productId == 2 {
  291. checkList := make([]int, 0)
  292. v := "权益"
  293. p := new(company.PermissionSetList)
  294. p.ClassifyName = v
  295. items, err := company.GetPermissionSetItems(productId, v)
  296. if err != nil {
  297. br.Msg = "获取失败"
  298. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  299. return
  300. }
  301. p.Items = items
  302. p.CheckList = checkList
  303. resp.List = append(resp.List, p)
  304. } else {
  305. if companyType != utils.COMPANY_PRODUCT_FICC_NAME {
  306. v := "权益"
  307. checkList := make([]int, 0)
  308. p := new(company.PermissionSetList)
  309. p.ClassifyName = v
  310. items, err := company.GetPermissionSetItems(2, v)
  311. if err != nil {
  312. br.Msg = "获取失败"
  313. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  314. return
  315. }
  316. p.Items = items
  317. p.CheckList = checkList
  318. resp.List = append(resp.List, p)
  319. }
  320. }
  321. br.Ret = 200
  322. br.Success = true
  323. br.Msg = "获取成功"
  324. br.Data = resp
  325. }
  326. // @Title 查看客户权限
  327. // @Description 查看客户权限接口
  328. // @Param CompanyId query int true "客户id"
  329. // @Param LookType query int true "调用类型:1增开试用,0其他"
  330. // @Success 200 {object} company.PermissionLookResp
  331. // @router /permission/look [get]
  332. func (this *CompanyPermissionController) PermissionLook() {
  333. br := new(models.BaseResponse).Init()
  334. defer func() {
  335. this.Data["json"] = br
  336. this.ServeJSON()
  337. }()
  338. sysUser := this.SysUser
  339. if sysUser == nil {
  340. br.Msg = "请登录"
  341. br.ErrMsg = "请登录,SysUser Is Empty"
  342. br.Ret = 408
  343. return
  344. }
  345. roleTypeCode := sysUser.RoleTypeCode
  346. companyId, _ := this.GetInt("CompanyId")
  347. if companyId <= 0 {
  348. br.Msg = "参数错误"
  349. br.ErrMsg = "参数错误,CompanyId 小于等于0 "
  350. return
  351. }
  352. lookType, _ := this.GetInt("LookType")
  353. productId := services.GetProductId(roleTypeCode)
  354. resp := new(company.PermissionLookResp)
  355. permissionArr := make([]*models.ChartPermission, 0)
  356. var err error
  357. if lookType == 1 {
  358. permissionArr, err = services.GetPermissionFirstArr(productId)
  359. } else {
  360. permissionArr, err = services.GetPermissionFirstArr(0)
  361. }
  362. if err != nil {
  363. br.Msg = "获取权限失败"
  364. br.ErrMsg = "获取权限失败 err:" + err.Error()
  365. return
  366. }
  367. //ficc权限类目
  368. for _, v := range permissionArr {
  369. checkList := make([]int, 0)
  370. p := new(company.PermissionLookList)
  371. p.Items = make([]*company.PermissionLookItem, 0)
  372. var productId int
  373. //if v == "权益" {
  374. // productId = 2
  375. //} else {
  376. // productId = 1
  377. //}
  378. if v.PermissionName != "权益" {
  379. productId = 1
  380. //mapPermissionName := make(map[string]int)
  381. items, err := company.GetPermissionLookItemsByParentId(productId, v.ChartPermissionId)
  382. if err != nil {
  383. br.Msg = "获取失败"
  384. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  385. return
  386. }
  387. itemLen := len(items)
  388. permissionList := make([]*company.PermissionLookItem, 0)
  389. for i := 0; i < itemLen; i++ {
  390. var isAdd bool
  391. item := items[i]
  392. permission, err := company.GetCompanyPermissionCheckItem(companyId, item.ChartPermissionId)
  393. if err != nil && err.Error() != utils.ErrNoRow() {
  394. br.Msg = "获取失败"
  395. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  396. return
  397. }
  398. if permission != nil && permission.ChartPermissionId > 0 {
  399. items[i].StartDate = permission.StartDate
  400. items[i].EndDate = permission.EndDate
  401. items[i].Status = permission.Status
  402. //判断主观、客观
  403. if items[i].PermissionType == 1 {
  404. items[i].PermissionTypeName = "主观"
  405. } else if items[i].PermissionType == 2 {
  406. items[i].PermissionTypeName = "客观"
  407. }
  408. checkList = append(checkList, item.ChartPermissionId)
  409. isAdd = true
  410. ////如果主观客观 都有,则不显示类型,如果只有一种就显示主观,或者客观
  411. //if mapPermissionName[items[i].PermissionName] == 0 {
  412. // checkList = append(checkList, item.ChartPermissionId)
  413. // mapPermissionName[items[i].PermissionName] = i + 1
  414. //
  415. //} else {
  416. // items[mapPermissionName[items[i].PermissionName]-1].PermissionTypeName = ""
  417. //}
  418. }
  419. endDateTime, _ := time.Parse(utils.FormatDate, item.EndDate)
  420. endDateTime = endDateTime.AddDate(0, 0, 1)
  421. sub := endDateTime.Sub(time.Now())
  422. if sub < 0 {
  423. sub = 0
  424. }
  425. expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
  426. items[i].ExpireDay = expireDay
  427. items[i].ClassifyName = v.PermissionName
  428. if lookType == 1 {
  429. permissionList = append(permissionList, items[i])
  430. } else {
  431. if isAdd {
  432. permissionList = append(permissionList, items[i])
  433. }
  434. }
  435. }
  436. //合并主观客观
  437. mapPermissionNameList := make(map[string]int)
  438. for _, v := range permissionList {
  439. if mapPermissionNameList[v.PermissionName] == 0 {
  440. p.Items = append(p.Items, v)
  441. mapPermissionNameList[v.PermissionName] = v.ChartPermissionId
  442. }
  443. }
  444. p.ClassifyName = v.PermissionName
  445. //p.Items = permissionList
  446. p.CheckList = checkList
  447. if lookType == 1 {
  448. resp.List = append(resp.List, p)
  449. } else {
  450. if len(checkList) > 0 {
  451. resp.List = append(resp.List, p)
  452. }
  453. }
  454. }
  455. }
  456. var filterPermissionName []string
  457. if lookType == 1 {
  458. filterPermissionName = []string{"专家", "路演服务", "研选扣点包", "调研"}
  459. } else {
  460. filterPermissionName = []string{"调研"}
  461. }
  462. //权益权限类目
  463. for _, v := range permissionArr {
  464. if v.PermissionName == "权益" {
  465. // CRM8.8-权益权限列表调用较多、统一进行调整
  466. unify := false
  467. if lookType == 1 {
  468. unify = true
  469. }
  470. p, e := services.RaiCompanyPermissionAndCheckList(companyId, unify, filterPermissionName)
  471. if e != nil {
  472. br.Msg = "获取客户权益权限列表信息失败"
  473. br.ErrMsg = "获取客户权益权限列表信息失败,Err:" + e.Error()
  474. return
  475. }
  476. if lookType == 1 {
  477. resp.ListRai = append(resp.ListRai, p)
  478. } else {
  479. if len(p.CheckList) > 0 {
  480. resp.ListRai = append(resp.ListRai, p)
  481. }
  482. }
  483. }
  484. }
  485. br.Ret = 200
  486. br.Success = true
  487. br.Msg = "获取成功"
  488. br.Data = resp
  489. }
  490. // @Title 查看客户权限(主观客观)(该接口暂已弃用-2022-0826)
  491. // @Description 查看客户权限接口(主观客观)
  492. // @Param CompanyId query int true "客户id"
  493. // @Param LookType query int true "调用类型:1增开试用,0其他"
  494. // @Success 200 {object} company.PermissionLookSandoResp
  495. // @router /permission/lookSando [get]
  496. func (this *CompanyPermissionController) PermissionLookSando() {
  497. br := new(models.BaseResponse).Init()
  498. defer func() {
  499. this.Data["json"] = br
  500. this.ServeJSON()
  501. }()
  502. sysUser := this.SysUser
  503. if sysUser == nil {
  504. br.Msg = "请登录"
  505. br.ErrMsg = "请登录,SysUser Is Empty"
  506. br.Ret = 408
  507. return
  508. }
  509. roleTypeCode := sysUser.RoleTypeCode
  510. companyId, _ := this.GetInt("CompanyId")
  511. if companyId <= 0 {
  512. br.Msg = "参数错误"
  513. br.ErrMsg = "参数错误,CompanyId 小于等于0 "
  514. return
  515. }
  516. lookType, _ := this.GetInt("LookType")
  517. productId := services.GetProductId(roleTypeCode)
  518. resp := new(company.PermissionLookSandoResp)
  519. permissionArr := []string{}
  520. if lookType == 1 {
  521. if productId == 1 {
  522. for _, permission := range utils.PermissionFiccClassifyArr {
  523. permissionArr = append(permissionArr, permission)
  524. }
  525. } else if productId == 2 {
  526. permissionArr = []string{"权益"}
  527. } else {
  528. for _, permission := range utils.PermissionAllClassifyArr {
  529. permissionArr = append(permissionArr, permission)
  530. }
  531. }
  532. } else {
  533. for _, permission := range utils.PermissionAllClassifyArr {
  534. permissionArr = append(permissionArr, permission)
  535. }
  536. }
  537. //ficc权限类目
  538. if productId == 1 {
  539. for _, v := range permissionArr {
  540. checkList := make([]int, 0)
  541. p := new(company.PermissionLookList)
  542. var productId int
  543. productId = 1
  544. items, err := company.GetPermissionLookItems(productId, v)
  545. if err != nil {
  546. br.Msg = "获取失败"
  547. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  548. return
  549. }
  550. itemLen := len(items)
  551. permissionList := make([]*company.PermissionLookItem, 0)
  552. for i := 0; i < itemLen; i++ {
  553. var isAdd bool
  554. item := items[i]
  555. permission, err := company.GetCompanyPermissionCheckItem(companyId, item.ChartPermissionId)
  556. if err != nil && err.Error() != utils.ErrNoRow() {
  557. br.Msg = "获取失败"
  558. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  559. return
  560. }
  561. if permission != nil && permission.ChartPermissionId > 0 {
  562. checkList = append(checkList, item.ChartPermissionId)
  563. items[i].StartDate = permission.StartDate
  564. items[i].EndDate = permission.EndDate
  565. items[i].Status = permission.Status
  566. isAdd = true
  567. }
  568. endDateTime, _ := time.Parse(utils.FormatDate, item.EndDate)
  569. endDateTime = endDateTime.AddDate(0, 0, 1)
  570. sub := endDateTime.Sub(time.Now())
  571. if sub < 0 {
  572. sub = 0
  573. }
  574. expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
  575. items[i].ExpireDay = expireDay
  576. items[i].ClassifyName = v
  577. if lookType == 1 {
  578. permissionList = append(permissionList, items[i])
  579. } else {
  580. if isAdd {
  581. permissionList = append(permissionList, items[i])
  582. }
  583. }
  584. }
  585. p.ClassifyName = v
  586. p.Items = permissionList
  587. p.CheckList = checkList
  588. if lookType == 1 {
  589. resp.List = append(resp.List, p)
  590. } else {
  591. if len(checkList) > 0 {
  592. resp.List = append(resp.List, p)
  593. }
  594. }
  595. }
  596. }
  597. //权益权限类目
  598. for _, v := range permissionArr {
  599. productId = 2
  600. if v == "权益" {
  601. v := "权益"
  602. checkList := make([]int, 0)
  603. p := new(company.PermissionLookList)
  604. pListType := new(company.PermissionSetListType)
  605. p.ClassifyName = v
  606. pListType.ClassifyName = v
  607. items, err := company.GetPermissionSetSandoItems(2, v)
  608. if err != nil {
  609. br.Msg = "获取失败"
  610. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  611. return
  612. }
  613. itemLen := len(items)
  614. //permissionList := make([]*company.PermissionLookItem, 0)
  615. for i := 0; i < itemLen; i++ {
  616. //var isAdd bool
  617. item := items[i]
  618. permission, err := company.GetCompanyPermissionCheckItem(companyId, item.ChartPermissionId)
  619. if err != nil && err.Error() != utils.ErrNoRow() {
  620. br.Msg = "获取失败"
  621. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  622. return
  623. }
  624. if permission != nil && permission.ChartPermissionId > 0 {
  625. checkList = append(checkList, item.ChartPermissionId)
  626. items[i].StartDate = permission.StartDate
  627. items[i].EndDate = permission.EndDate
  628. items[i].Status = permission.Status
  629. items[i].Checked = true
  630. }
  631. if items[i].PermissionType == 1 {
  632. items[i].PermissionTypeName = "主观"
  633. } else if items[i].PermissionType == 2 {
  634. items[i].PermissionTypeName = "客观"
  635. }
  636. endDateTime, _ := time.Parse(utils.FormatDate, item.EndDate)
  637. endDateTime = endDateTime.AddDate(0, 0, 1)
  638. sub := endDateTime.Sub(time.Now())
  639. if sub < 0 {
  640. sub = 0
  641. }
  642. expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
  643. items[i].ExpireDay = expireDay
  644. items[i].ClassifyName = v
  645. }
  646. //itemsType, err := company.GetPermissionSetItemsType(2, v)
  647. //if err != nil {
  648. // br.Msg = "获取失败"
  649. // br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  650. // return
  651. //}
  652. //mapChartPermission := make(map[string]int)
  653. //pType := new(company.PermissionSetItemType)
  654. //for i, val := range itemsType {
  655. // if mapChartPermission[val.PermissionName] == 0 {
  656. // mapChartPermission[val.PermissionName] = val.ChartPermissionId
  657. // pType = new(company.PermissionSetItemType)
  658. // pType.PermissionName = val.PermissionName
  659. // }
  660. // pType.Items = append(pType.Items, val)
  661. //
  662. // item := itemsType[i]
  663. // permission, err := company.GetCompanyPermissionCheckItem(companyId, item.ChartPermissionId)
  664. // if err != nil && err.Error() != utils.ErrNoRow() {
  665. // br.Msg = "获取失败"
  666. // br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  667. // return
  668. // }
  669. // if permission != nil && permission.ChartPermissionId > 0 {
  670. // checkList = append(checkList, item.ChartPermissionId)
  671. // itemsType[i].StartDate = permission.StartDate
  672. // itemsType[i].EndDate = permission.EndDate
  673. // itemsType[i].Status = permission.Status
  674. // itemsType[i].Checked = true
  675. // endDateTime, _ := time.Parse(utils.FormatDate, item.EndDate)
  676. // endDateTime = endDateTime.AddDate(0, 0, 1)
  677. // sub := endDateTime.Sub(time.Now())
  678. // if sub < 0 {
  679. // sub = 0
  680. // }
  681. // expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
  682. // itemsType[i].ExpireDay = expireDay
  683. // }
  684. // //判断主观、客观
  685. // if itemsType[i].PermissionType == 1 {
  686. // itemsType[i].PermissionTypeName = "主观"
  687. // } else if itemsType[i].PermissionType == 2 {
  688. // itemsType[i].PermissionTypeName = "客观"
  689. // }
  690. // itemsType[i].ClassifyName = v
  691. // //处理权限分类是否打钩
  692. // //if len(pType.Items) == 2 {
  693. // // var checkedMinateBool bool
  694. // // pType.Checked = true
  695. // // for _, pv := range pType.Items {
  696. // // if pv.Checked == false {
  697. // // pType.Checked = false
  698. // // } else {
  699. // // checkedMinateBool = true
  700. // // pType.NoClicking = true
  701. // // }
  702. // // }
  703. // // if checkedMinateBool == true && pType.Checked == false {
  704. // // pType.CheckedMinate = true
  705. // // }
  706. // // pListType.Items = append(pListType.Items, pType)
  707. // //}
  708. //}
  709. //合并主观客观
  710. mapPermissionName := make(map[string]int)
  711. for _, v := range items {
  712. if mapPermissionName[v.PermissionName] == 0 {
  713. p.Items = append(p.Items, v)
  714. mapPermissionName[v.PermissionName] = v.ChartPermissionId
  715. }
  716. }
  717. p.CheckList = checkList
  718. pListType.CheckList = checkList
  719. resp.List = append(resp.List, p)
  720. //resp.ListType = append(resp.ListType, pListType)
  721. }
  722. }
  723. br.Ret = 200
  724. br.Success = true
  725. br.Msg = "获取成功"
  726. br.Data = resp
  727. }
  728. // @Title 品种
  729. // @Description 品种接口
  730. // @Param CompanyType query string true "客户类型:传空字符串或者不传为全部,'ficc','权益'"
  731. // @Success 200 {object} company.PermissionVarietyResp
  732. // @router /permission/variety [get]
  733. func (this *CompanyPermissionController) PermissionVariety() {
  734. br := new(models.BaseResponse).Init()
  735. defer func() {
  736. this.Data["json"] = br
  737. this.ServeJSON()
  738. }()
  739. sysUser := this.SysUser
  740. if sysUser == nil {
  741. br.Msg = "请登录"
  742. br.ErrMsg = "请登录,SysUser Is Empty"
  743. br.Ret = 408
  744. return
  745. }
  746. companyType := this.GetString("CompanyType")
  747. var productId int
  748. resp := new(company.PermissionVarietyResp)
  749. roleTypeCode := sysUser.RoleTypeCode
  750. if roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
  751. productId = 2
  752. } else if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
  753. productId = 1
  754. } else {
  755. productId = 0
  756. }
  757. if productId == 1 || companyType == utils.COMPANY_PRODUCT_FICC_NAME {
  758. permissionFirst, e := services.GetPermissionFirstArr(utils.COMPANY_PRODUCT_FICC_ID)
  759. if e != nil {
  760. br.Msg = "获取权限信息失败"
  761. br.ErrMsg = "获取权限信息失败,Err:" + e.Error()
  762. return
  763. }
  764. allFiccPermissions, e := company.GetPermissionVarietyItemsByProductId(utils.COMPANY_PRODUCT_FICC_ID)
  765. if e != nil {
  766. br.Msg = "获取权限信息失败"
  767. br.ErrMsg = "获取权限信息失败,Err:" + e.Error()
  768. return
  769. }
  770. permissionMap := make(map[int][]*company.PermissionVarietyItem, 0)
  771. for _, v := range allFiccPermissions {
  772. permissionMap[v.ParentId] = append(permissionMap[v.ParentId], v)
  773. }
  774. for _, v := range permissionFirst {
  775. p := new(company.PermissionVarietyList)
  776. p.ClassifyName = v.ClassifyName
  777. p.ChartPermissionId = v.ChartPermissionId + 100
  778. items, ok := permissionMap[v.ChartPermissionId]
  779. if ok {
  780. p.Items = items
  781. }
  782. resp.List = append(resp.List, p)
  783. }
  784. /*for k, v := range utils.PermissionFiccClassifyArr {
  785. p := new(company.PermissionVarietyList)
  786. p.ClassifyName = v
  787. p.ChartPermissionId = k + 100
  788. items, err := company.GetPermissionVarietyItems(productId, v)
  789. if err != nil {
  790. br.Msg = "获取失败"
  791. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  792. return
  793. }
  794. p.Items = items
  795. resp.List = append(resp.List, p)
  796. }*/
  797. } else if productId == 2 {
  798. v := "权益"
  799. p := new(company.PermissionVarietyList)
  800. p.ClassifyName = v
  801. p.ChartPermissionId = 105
  802. items, err := company.GetPermissionVarietyItems(productId, v)
  803. if err != nil {
  804. br.Msg = "获取失败"
  805. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  806. return
  807. }
  808. p.Items = items
  809. resp.List = append(resp.List, p)
  810. } else {
  811. if companyType == utils.COMPANY_PRODUCT_RAI_NAME {
  812. v := "权益"
  813. p := new(company.PermissionVarietyList)
  814. p.ClassifyName = v
  815. p.ChartPermissionId = 105
  816. items, err := company.GetPermissionVarietyItems(2, v)
  817. if err != nil {
  818. br.Msg = "获取失败"
  819. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  820. return
  821. }
  822. p.Items = items
  823. resp.List = append(resp.List, p)
  824. }
  825. }
  826. br.Ret = 200
  827. br.Success = true
  828. br.Msg = "获取成功"
  829. br.Data = resp
  830. }
  831. // @Title 新增试用权限
  832. // @Description 新增试用权限
  833. // @Param request body company.PermissionAddTryOutReq true "type json string"
  834. // @Success Ret=200
  835. // @router /permission/add/try/out [post]
  836. func (this *CompanyPermissionController) PermissionAddTryOut() {
  837. br := new(models.BaseResponse).Init()
  838. defer func() {
  839. this.Data["json"] = br
  840. this.ServeJSON()
  841. }()
  842. sysUser := this.SysUser
  843. if sysUser == nil {
  844. br.Msg = "请登录"
  845. br.ErrMsg = "请登录,SysUser Is Empty"
  846. br.Ret = 408
  847. return
  848. }
  849. var req company.PermissionAddTryOutReq
  850. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  851. if err != nil {
  852. br.Msg = "参数解析异常!"
  853. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  854. return
  855. }
  856. if req.ChartPermissionId == "" {
  857. br.Msg = "请选择权限"
  858. br.ErrMsg = "请选择权限"
  859. return
  860. } else {
  861. // CRM8.8-取消增开试用这里的主客观默认同时开启
  862. //permissionStr, err := company.GetPermissionIdById(req.ChartPermissionId)
  863. //if err != nil {
  864. // br.Msg = "获取信息失败"
  865. // br.ErrMsg = "获取主观客观权限信息失败,Err:" + err.Error()
  866. // return
  867. //}
  868. //req.ChartPermissionId = permissionStr
  869. }
  870. if req.CompanyId <= 0 {
  871. br.Msg = "参数错误"
  872. return
  873. }
  874. roleTypeCode := sysUser.RoleTypeCode
  875. product := services.GetProductId(roleTypeCode)
  876. if product == 0 {
  877. br.Msg = "无权新开试用权限"
  878. br.ErrMsg = "无权新开试用权限"
  879. return
  880. }
  881. companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, product)
  882. if err != nil {
  883. br.Msg = "新增试用权限失败"
  884. br.ErrMsg = "新增试用权限失败,Err:" + err.Error()
  885. return
  886. }
  887. if companyProduct.Status != utils.COMPANY_STATUS_FORMAL {
  888. br.Msg = "客户状态为:" + companyProduct.Status + ",不可增开试用权限"
  889. br.ErrMsg = "客户状态为:" + companyProduct.Status + ",不可增开试用权限"
  890. return
  891. }
  892. permissionArr := strings.Split(req.ChartPermissionId, ",")
  893. //增开试用修改对应更新时间,上海策略平台,同步客户信息试用
  894. err = company.UpdateCompanyProductModifyTime(req.CompanyId, product)
  895. if err != nil {
  896. br.Msg = "新增试用权限失败"
  897. br.ErrMsg = "新增更新更改时间失败,Err:" + err.Error()
  898. return
  899. }
  900. companyReportPermissionList := make([]*company.CompanyReportPermission, 0) //添加的品种
  901. startDateTime := time.Now()
  902. endDateTime := startDateTime.AddDate(0, 2, 0)
  903. if product == utils.COMPANY_PRODUCT_RAI_ID { // 权益客户试用期改为1个月。 需求池 1035
  904. endDateTime = startDateTime.AddDate(0, 1, 0)
  905. }
  906. for _, v := range permissionArr {
  907. permissionId, _ := strconv.Atoi(v)
  908. count, err := company.GetCompanyPermissionCheck(req.CompanyId, permissionId)
  909. if err != nil {
  910. br.Msg = "新增试用权限失败"
  911. br.ErrMsg = "判断权限是否存在失败,Err:" + err.Error()
  912. return
  913. }
  914. fmt.Println(permissionId)
  915. fmt.Println(count)
  916. if count <= 0 {
  917. item := new(company.CompanyReportPermission)
  918. startDate := startDateTime.Format(utils.FormatDate)
  919. endDate := endDateTime.Format(utils.FormatDate)
  920. item.CompanyId = req.CompanyId
  921. item.CreatedTime = time.Now()
  922. item.LastUpdatedTime = time.Now()
  923. item.ChartPermissionId = permissionId
  924. item.StartDate = startDate
  925. item.EndDate = endDate
  926. item.ProductId = product
  927. item.ProductName = companyProduct.ProductName
  928. item.CompanyContractId = 0
  929. item.Status = "试用"
  930. item.ModifyTime = time.Now()
  931. err = company.AddCompanyReportPermission(item)
  932. if err != nil {
  933. br.Msg = "新增试用权限失败"
  934. br.ErrMsg = "新增试用权限失败,Err:" + err.Error()
  935. return
  936. }
  937. companyReportPermissionList = append(companyReportPermissionList, item)
  938. }
  939. }
  940. //新增客户产品状态变更日志
  941. {
  942. companyProductTryOutUpdateLog := &company.CompanyProductTryOutUpdateLog{
  943. Id: 0,
  944. CompanyId: req.CompanyId,
  945. ProductId: companyProduct.ProductId,
  946. Source: "",
  947. SellerId: companyProduct.SellerId,
  948. SellerName: companyProduct.SellerName,
  949. StartDate: startDateTime,
  950. EndDate: endDateTime,
  951. RealEndDate: startDateTime,
  952. IsStop: 0,
  953. CreateTime: time.Now(),
  954. }
  955. go company.AddCompanyProductTryOutUpdateLog(companyProductTryOutUpdateLog, companyReportPermissionList)
  956. }
  957. br.Ret = 200
  958. br.Success = true
  959. br.Msg = "新增试用权限成功"
  960. br.IsAddLog = true
  961. }