company_permission.go 32 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007
  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. filterPermissionName = utils.FilterPermissionNameRai
  460. } else {
  461. filterPermissionName = []string{"海外调研"}
  462. }
  463. //权益权限类目
  464. for _, v := range permissionArr {
  465. if v.PermissionName == "权益" {
  466. // CRM8.8-权益权限列表调用较多、统一进行调整
  467. unify := false
  468. if lookType == 1 {
  469. unify = true
  470. }
  471. p, e := services.RaiCompanyPermissionAndCheckList(companyId, unify, filterPermissionName)
  472. if e != nil {
  473. br.Msg = "获取客户权益权限列表信息失败"
  474. br.ErrMsg = "获取客户权益权限列表信息失败,Err:" + e.Error()
  475. return
  476. }
  477. if lookType == 1 {
  478. resp.ListRai = append(resp.ListRai, p)
  479. } else {
  480. if len(p.CheckList) > 0 {
  481. resp.ListRai = append(resp.ListRai, p)
  482. }
  483. }
  484. }
  485. }
  486. br.Ret = 200
  487. br.Success = true
  488. br.Msg = "获取成功"
  489. br.Data = resp
  490. }
  491. // @Title 查看客户权限(主观客观)(该接口暂已弃用-2022-0826)
  492. // @Description 查看客户权限接口(主观客观)
  493. // @Param CompanyId query int true "客户id"
  494. // @Param LookType query int true "调用类型:1增开试用,0其他"
  495. // @Success 200 {object} company.PermissionLookSandoResp
  496. // @router /permission/lookSando [get]
  497. func (this *CompanyPermissionController) PermissionLookSando() {
  498. br := new(models.BaseResponse).Init()
  499. defer func() {
  500. this.Data["json"] = br
  501. this.ServeJSON()
  502. }()
  503. sysUser := this.SysUser
  504. if sysUser == nil {
  505. br.Msg = "请登录"
  506. br.ErrMsg = "请登录,SysUser Is Empty"
  507. br.Ret = 408
  508. return
  509. }
  510. roleTypeCode := sysUser.RoleTypeCode
  511. companyId, _ := this.GetInt("CompanyId")
  512. if companyId <= 0 {
  513. br.Msg = "参数错误"
  514. br.ErrMsg = "参数错误,CompanyId 小于等于0 "
  515. return
  516. }
  517. lookType, _ := this.GetInt("LookType")
  518. productId := services.GetProductId(roleTypeCode)
  519. resp := new(company.PermissionLookSandoResp)
  520. permissionArr := []string{}
  521. if lookType == 1 {
  522. if productId == 1 {
  523. for _, permission := range utils.PermissionFiccClassifyArr {
  524. permissionArr = append(permissionArr, permission)
  525. }
  526. } else if productId == 2 {
  527. permissionArr = []string{"权益"}
  528. } else {
  529. for _, permission := range utils.PermissionAllClassifyArr {
  530. permissionArr = append(permissionArr, permission)
  531. }
  532. }
  533. } else {
  534. for _, permission := range utils.PermissionAllClassifyArr {
  535. permissionArr = append(permissionArr, permission)
  536. }
  537. }
  538. //ficc权限类目
  539. if productId == 1 {
  540. for _, v := range permissionArr {
  541. checkList := make([]int, 0)
  542. p := new(company.PermissionLookList)
  543. var productId int
  544. productId = 1
  545. items, err := company.GetPermissionLookItems(productId, v)
  546. if err != nil {
  547. br.Msg = "获取失败"
  548. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  549. return
  550. }
  551. itemLen := len(items)
  552. permissionList := make([]*company.PermissionLookItem, 0)
  553. for i := 0; i < itemLen; i++ {
  554. var isAdd bool
  555. item := items[i]
  556. permission, err := company.GetCompanyPermissionCheckItem(companyId, item.ChartPermissionId)
  557. if err != nil && err.Error() != utils.ErrNoRow() {
  558. br.Msg = "获取失败"
  559. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  560. return
  561. }
  562. if permission != nil && permission.ChartPermissionId > 0 {
  563. checkList = append(checkList, item.ChartPermissionId)
  564. items[i].StartDate = permission.StartDate
  565. items[i].EndDate = permission.EndDate
  566. items[i].Status = permission.Status
  567. isAdd = true
  568. }
  569. endDateTime, _ := time.Parse(utils.FormatDate, item.EndDate)
  570. endDateTime = endDateTime.AddDate(0, 0, 1)
  571. sub := endDateTime.Sub(time.Now())
  572. if sub < 0 {
  573. sub = 0
  574. }
  575. expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
  576. items[i].ExpireDay = expireDay
  577. items[i].ClassifyName = v
  578. if lookType == 1 {
  579. permissionList = append(permissionList, items[i])
  580. } else {
  581. if isAdd {
  582. permissionList = append(permissionList, items[i])
  583. }
  584. }
  585. }
  586. p.ClassifyName = v
  587. p.Items = permissionList
  588. p.CheckList = checkList
  589. if lookType == 1 {
  590. resp.List = append(resp.List, p)
  591. } else {
  592. if len(checkList) > 0 {
  593. resp.List = append(resp.List, p)
  594. }
  595. }
  596. }
  597. }
  598. //权益权限类目
  599. for _, v := range permissionArr {
  600. productId = 2
  601. if v == "权益" {
  602. v := "权益"
  603. checkList := make([]int, 0)
  604. p := new(company.PermissionLookList)
  605. pListType := new(company.PermissionSetListType)
  606. p.ClassifyName = v
  607. pListType.ClassifyName = v
  608. items, err := company.GetPermissionSetSandoItems(2, v)
  609. if err != nil {
  610. br.Msg = "获取失败"
  611. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  612. return
  613. }
  614. itemLen := len(items)
  615. //permissionList := make([]*company.PermissionLookItem, 0)
  616. for i := 0; i < itemLen; i++ {
  617. //var isAdd bool
  618. item := items[i]
  619. permission, err := company.GetCompanyPermissionCheckItem(companyId, item.ChartPermissionId)
  620. if err != nil && err.Error() != utils.ErrNoRow() {
  621. br.Msg = "获取失败"
  622. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  623. return
  624. }
  625. if permission != nil && permission.ChartPermissionId > 0 {
  626. checkList = append(checkList, item.ChartPermissionId)
  627. items[i].StartDate = permission.StartDate
  628. items[i].EndDate = permission.EndDate
  629. items[i].Status = permission.Status
  630. items[i].Checked = true
  631. }
  632. if items[i].PermissionType == 1 {
  633. items[i].PermissionTypeName = "主观"
  634. } else if items[i].PermissionType == 2 {
  635. items[i].PermissionTypeName = "客观"
  636. }
  637. endDateTime, _ := time.Parse(utils.FormatDate, item.EndDate)
  638. endDateTime = endDateTime.AddDate(0, 0, 1)
  639. sub := endDateTime.Sub(time.Now())
  640. if sub < 0 {
  641. sub = 0
  642. }
  643. expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
  644. items[i].ExpireDay = expireDay
  645. items[i].ClassifyName = v
  646. }
  647. //itemsType, err := company.GetPermissionSetItemsType(2, v)
  648. //if err != nil {
  649. // br.Msg = "获取失败"
  650. // br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  651. // return
  652. //}
  653. //mapChartPermission := make(map[string]int)
  654. //pType := new(company.PermissionSetItemType)
  655. //for i, val := range itemsType {
  656. // if mapChartPermission[val.PermissionName] == 0 {
  657. // mapChartPermission[val.PermissionName] = val.ChartPermissionId
  658. // pType = new(company.PermissionSetItemType)
  659. // pType.PermissionName = val.PermissionName
  660. // }
  661. // pType.Items = append(pType.Items, val)
  662. //
  663. // item := itemsType[i]
  664. // permission, err := company.GetCompanyPermissionCheckItem(companyId, item.ChartPermissionId)
  665. // if err != nil && err.Error() != utils.ErrNoRow() {
  666. // br.Msg = "获取失败"
  667. // br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  668. // return
  669. // }
  670. // if permission != nil && permission.ChartPermissionId > 0 {
  671. // checkList = append(checkList, item.ChartPermissionId)
  672. // itemsType[i].StartDate = permission.StartDate
  673. // itemsType[i].EndDate = permission.EndDate
  674. // itemsType[i].Status = permission.Status
  675. // itemsType[i].Checked = true
  676. // endDateTime, _ := time.Parse(utils.FormatDate, item.EndDate)
  677. // endDateTime = endDateTime.AddDate(0, 0, 1)
  678. // sub := endDateTime.Sub(time.Now())
  679. // if sub < 0 {
  680. // sub = 0
  681. // }
  682. // expireDay := fmt.Sprintf("%v", int(sub.Hours()/24))
  683. // itemsType[i].ExpireDay = expireDay
  684. // }
  685. // //判断主观、客观
  686. // if itemsType[i].PermissionType == 1 {
  687. // itemsType[i].PermissionTypeName = "主观"
  688. // } else if itemsType[i].PermissionType == 2 {
  689. // itemsType[i].PermissionTypeName = "客观"
  690. // }
  691. // itemsType[i].ClassifyName = v
  692. // //处理权限分类是否打钩
  693. // //if len(pType.Items) == 2 {
  694. // // var checkedMinateBool bool
  695. // // pType.Checked = true
  696. // // for _, pv := range pType.Items {
  697. // // if pv.Checked == false {
  698. // // pType.Checked = false
  699. // // } else {
  700. // // checkedMinateBool = true
  701. // // pType.NoClicking = true
  702. // // }
  703. // // }
  704. // // if checkedMinateBool == true && pType.Checked == false {
  705. // // pType.CheckedMinate = true
  706. // // }
  707. // // pListType.Items = append(pListType.Items, pType)
  708. // //}
  709. //}
  710. //合并主观客观
  711. mapPermissionName := make(map[string]int)
  712. for _, v := range items {
  713. if mapPermissionName[v.PermissionName] == 0 {
  714. p.Items = append(p.Items, v)
  715. mapPermissionName[v.PermissionName] = v.ChartPermissionId
  716. }
  717. }
  718. p.CheckList = checkList
  719. pListType.CheckList = checkList
  720. resp.List = append(resp.List, p)
  721. //resp.ListType = append(resp.ListType, pListType)
  722. }
  723. }
  724. br.Ret = 200
  725. br.Success = true
  726. br.Msg = "获取成功"
  727. br.Data = resp
  728. }
  729. // @Title 品种
  730. // @Description 品种接口
  731. // @Param CompanyType query string true "客户类型:传空字符串或者不传为全部,'ficc','权益'"
  732. // @Success 200 {object} company.PermissionVarietyResp
  733. // @router /permission/variety [get]
  734. func (this *CompanyPermissionController) PermissionVariety() {
  735. br := new(models.BaseResponse).Init()
  736. defer func() {
  737. this.Data["json"] = br
  738. this.ServeJSON()
  739. }()
  740. sysUser := this.SysUser
  741. if sysUser == nil {
  742. br.Msg = "请登录"
  743. br.ErrMsg = "请登录,SysUser Is Empty"
  744. br.Ret = 408
  745. return
  746. }
  747. companyType := this.GetString("CompanyType")
  748. var productId int
  749. resp := new(company.PermissionVarietyResp)
  750. roleTypeCode := sysUser.RoleTypeCode
  751. if roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
  752. productId = 2
  753. } else if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
  754. productId = 1
  755. } else {
  756. productId = 0
  757. }
  758. if productId == 1 || companyType == utils.COMPANY_PRODUCT_FICC_NAME {
  759. permissionFirst, e := services.GetPermissionFirstArr(utils.COMPANY_PRODUCT_FICC_ID)
  760. if e != nil {
  761. br.Msg = "获取权限信息失败"
  762. br.ErrMsg = "获取权限信息失败,Err:" + e.Error()
  763. return
  764. }
  765. allFiccPermissions, e := company.GetPermissionVarietyItemsByProductId(utils.COMPANY_PRODUCT_FICC_ID)
  766. if e != nil {
  767. br.Msg = "获取权限信息失败"
  768. br.ErrMsg = "获取权限信息失败,Err:" + e.Error()
  769. return
  770. }
  771. permissionMap := make(map[int][]*company.PermissionVarietyItem, 0)
  772. for _, v := range allFiccPermissions {
  773. permissionMap[v.ParentId] = append(permissionMap[v.ParentId], v)
  774. }
  775. for _, v := range permissionFirst {
  776. p := new(company.PermissionVarietyList)
  777. p.ClassifyName = v.ClassifyName
  778. p.ChartPermissionId = v.ChartPermissionId + 100
  779. items, ok := permissionMap[v.ChartPermissionId]
  780. if ok {
  781. p.Items = items
  782. }
  783. resp.List = append(resp.List, p)
  784. }
  785. /*for k, v := range utils.PermissionFiccClassifyArr {
  786. p := new(company.PermissionVarietyList)
  787. p.ClassifyName = v
  788. p.ChartPermissionId = k + 100
  789. items, err := company.GetPermissionVarietyItems(productId, v)
  790. if err != nil {
  791. br.Msg = "获取失败"
  792. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  793. return
  794. }
  795. p.Items = items
  796. resp.List = append(resp.List, p)
  797. }*/
  798. } else if productId == 2 {
  799. v := "权益"
  800. p := new(company.PermissionVarietyList)
  801. p.ClassifyName = v
  802. p.ChartPermissionId = 105
  803. items, err := company.GetPermissionVarietyItems(productId, v)
  804. if err != nil {
  805. br.Msg = "获取失败"
  806. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  807. return
  808. }
  809. p.Items = items
  810. resp.List = append(resp.List, p)
  811. } else {
  812. if companyType == utils.COMPANY_PRODUCT_RAI_NAME {
  813. v := "权益"
  814. p := new(company.PermissionVarietyList)
  815. p.ClassifyName = v
  816. p.ChartPermissionId = 105
  817. items, err := company.GetPermissionVarietyItems(2, v)
  818. if err != nil {
  819. br.Msg = "获取失败"
  820. br.ErrMsg = "获取权限信息失败,Err:" + err.Error()
  821. return
  822. }
  823. p.Items = items
  824. resp.List = append(resp.List, p)
  825. }
  826. }
  827. br.Ret = 200
  828. br.Success = true
  829. br.Msg = "获取成功"
  830. br.Data = resp
  831. }
  832. // @Title 新增试用权限
  833. // @Description 新增试用权限
  834. // @Param request body company.PermissionAddTryOutReq true "type json string"
  835. // @Success Ret=200
  836. // @router /permission/add/try/out [post]
  837. func (this *CompanyPermissionController) PermissionAddTryOut() {
  838. br := new(models.BaseResponse).Init()
  839. defer func() {
  840. this.Data["json"] = br
  841. this.ServeJSON()
  842. }()
  843. sysUser := this.SysUser
  844. if sysUser == nil {
  845. br.Msg = "请登录"
  846. br.ErrMsg = "请登录,SysUser Is Empty"
  847. br.Ret = 408
  848. return
  849. }
  850. var req company.PermissionAddTryOutReq
  851. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  852. if err != nil {
  853. br.Msg = "参数解析异常!"
  854. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  855. return
  856. }
  857. if req.ChartPermissionId == "" {
  858. br.Msg = "请选择权限"
  859. br.ErrMsg = "请选择权限"
  860. return
  861. } else {
  862. // CRM8.8-取消增开试用这里的主客观默认同时开启
  863. //permissionStr, err := company.GetPermissionIdById(req.ChartPermissionId)
  864. //if err != nil {
  865. // br.Msg = "获取信息失败"
  866. // br.ErrMsg = "获取主观客观权限信息失败,Err:" + err.Error()
  867. // return
  868. //}
  869. //req.ChartPermissionId = permissionStr
  870. }
  871. if req.CompanyId <= 0 {
  872. br.Msg = "参数错误"
  873. return
  874. }
  875. roleTypeCode := sysUser.RoleTypeCode
  876. product := services.GetProductId(roleTypeCode)
  877. if product == 0 {
  878. br.Msg = "无权新开试用权限"
  879. br.ErrMsg = "无权新开试用权限"
  880. return
  881. }
  882. companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, product)
  883. if err != nil {
  884. br.Msg = "新增试用权限失败"
  885. br.ErrMsg = "新增试用权限失败,Err:" + err.Error()
  886. return
  887. }
  888. if companyProduct.Status != utils.COMPANY_STATUS_FORMAL {
  889. br.Msg = "客户状态为:" + companyProduct.Status + ",不可增开试用权限"
  890. br.ErrMsg = "客户状态为:" + companyProduct.Status + ",不可增开试用权限"
  891. return
  892. }
  893. permissionArr := strings.Split(req.ChartPermissionId, ",")
  894. //增开试用修改对应更新时间,上海策略平台,同步客户信息试用
  895. err = company.UpdateCompanyProductModifyTime(req.CompanyId, product)
  896. if err != nil {
  897. br.Msg = "新增试用权限失败"
  898. br.ErrMsg = "新增更新更改时间失败,Err:" + err.Error()
  899. return
  900. }
  901. companyReportPermissionList := make([]*company.CompanyReportPermission, 0) //添加的品种
  902. startDateTime := time.Now()
  903. endDateTime := startDateTime.AddDate(0, 2, 0)
  904. if product == utils.COMPANY_PRODUCT_RAI_ID { // 权益客户试用期改为1个月。 需求池 1035
  905. endDateTime = startDateTime.AddDate(0, 1, 0)
  906. }
  907. for _, v := range permissionArr {
  908. permissionId, _ := strconv.Atoi(v)
  909. count, err := company.GetCompanyPermissionCheck(req.CompanyId, permissionId)
  910. if err != nil {
  911. br.Msg = "新增试用权限失败"
  912. br.ErrMsg = "判断权限是否存在失败,Err:" + err.Error()
  913. return
  914. }
  915. fmt.Println(permissionId)
  916. fmt.Println(count)
  917. if count <= 0 {
  918. item := new(company.CompanyReportPermission)
  919. startDate := startDateTime.Format(utils.FormatDate)
  920. endDate := endDateTime.Format(utils.FormatDate)
  921. item.CompanyId = req.CompanyId
  922. item.CreatedTime = time.Now()
  923. item.LastUpdatedTime = time.Now()
  924. item.ChartPermissionId = permissionId
  925. item.StartDate = startDate
  926. item.EndDate = endDate
  927. item.ProductId = product
  928. item.ProductName = companyProduct.ProductName
  929. item.CompanyContractId = 0
  930. item.Status = "试用"
  931. item.ModifyTime = time.Now()
  932. err = company.AddCompanyReportPermission(item)
  933. if err != nil {
  934. br.Msg = "新增试用权限失败"
  935. br.ErrMsg = "新增试用权限失败,Err:" + err.Error()
  936. return
  937. }
  938. companyReportPermissionList = append(companyReportPermissionList, item)
  939. }
  940. }
  941. //新增客户产品状态变更日志
  942. {
  943. companyProductTryOutUpdateLog := &company.CompanyProductTryOutUpdateLog{
  944. Id: 0,
  945. CompanyId: req.CompanyId,
  946. ProductId: companyProduct.ProductId,
  947. Source: "",
  948. SellerId: companyProduct.SellerId,
  949. SellerName: companyProduct.SellerName,
  950. StartDate: startDateTime,
  951. EndDate: endDateTime,
  952. RealEndDate: startDateTime,
  953. IsStop: 0,
  954. CreateTime: time.Now(),
  955. }
  956. go company.AddCompanyProductTryOutUpdateLog(companyProductTryOutUpdateLog, companyReportPermissionList)
  957. }
  958. br.Ret = 200
  959. br.Success = true
  960. br.Msg = "新增试用权限成功"
  961. br.IsAddLog = true
  962. }