enter_score.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. package cygx
  2. import (
  3. "encoding/json"
  4. "hongze/hz_crm_api/controllers"
  5. "hongze/hz_crm_api/models"
  6. "hongze/hz_crm_api/models/company"
  7. "hongze/hz_crm_api/models/cygx"
  8. "hongze/hz_crm_api/models/system"
  9. "hongze/hz_crm_api/utils"
  10. "strings"
  11. "time"
  12. )
  13. // X类客户录分模块
  14. type EnterScoreController struct {
  15. controllers.BaseAuthController
  16. }
  17. // @Title 详情
  18. // @Description 获取详情接口
  19. // @Param EnterScoreId query int true "录分ID"
  20. // @Success Ret=200 {object} cygx.CygxEnterScoreDetailResp
  21. // @router /enterScore/detail [get]
  22. func (this *EnterScoreController) EnterScoreDetail() {
  23. br := new(models.BaseResponse).Init()
  24. defer func() {
  25. this.Data["json"] = br
  26. this.ServeJSON()
  27. }()
  28. AdminUser := this.SysUser
  29. if AdminUser == nil {
  30. br.Msg = "请登录"
  31. br.ErrMsg = "请登录,用户信息为空"
  32. br.Ret = 408
  33. return
  34. }
  35. enterScoreId, _ := this.GetInt("EnterScoreId")
  36. resp := new(cygx.CygxEnterScoreDetailResp)
  37. var itemslistPermission []*cygx.EnterScorePermissionListResp // 权益行业
  38. var itemsFicclistPermission []*cygx.EnterScorePermissionListResp // FICC行业
  39. mapRaiUser := make(map[string][]*cygx.EnterScoreRealNameListResp) //权益研究员
  40. mapFiccUser := make(map[string][]*cygx.EnterScoreRealNameListResp) // FICC研究员
  41. var itemsGroup []*cygx.EnterScoreGroupListResp //自定义分组
  42. if enterScoreId == 0 {
  43. //权益研究员
  44. sysUserList, err := cygx.GetAskEmailList()
  45. if err != nil {
  46. br.Msg = "获取失败"
  47. br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
  48. return
  49. }
  50. for _, v := range sysUserList {
  51. item := new(cygx.EnterScoreRealNameListResp)
  52. item.RealName = v.Name
  53. item.ChartPermissionName = v.ChartPermissionName
  54. mapRaiUser[v.ChartPermissionName] = append(mapRaiUser[v.ChartPermissionName], item)
  55. }
  56. listPermission, err := cygx.GetChartPermissionAll()
  57. if err != nil {
  58. br.Msg = "获取信息失败"
  59. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  60. return
  61. }
  62. permissionNameArr := []string{"医药", "消费", "科技", "智造", "策略", "固收"}
  63. for _, v := range listPermission {
  64. if !utils.InArrayByStr(permissionNameArr, v.PermissionName) {
  65. continue
  66. }
  67. item := new(cygx.EnterScorePermissionListResp)
  68. item.ChartPermissionName = v.PermissionName
  69. item.List = mapRaiUser[v.PermissionName]
  70. itemslistPermission = append(itemslistPermission, item)
  71. }
  72. resp.EnterScoreObj.ListRai = itemslistPermission
  73. //ficc 研究员
  74. ficcUserList, err := system.GetFiccEnterScoreAdmin()
  75. if err != nil {
  76. br.Msg = "获取失败"
  77. br.ErrMsg = "获取失败,GetFiccEnterScoreAdmin Err: " + err.Error()
  78. return
  79. }
  80. for _, v := range ficcUserList {
  81. item := new(cygx.EnterScoreRealNameListResp)
  82. item.RealName = v.RealName
  83. item.ChartPermissionName = v.GroupName
  84. mapFiccUser[v.GroupName] = append(mapFiccUser[v.GroupName], item)
  85. }
  86. permissionFiccNameArr := []string{"宏观组", "建材组", "有色组", "能化组"}
  87. for _, v := range permissionFiccNameArr {
  88. item := new(cygx.EnterScorePermissionListResp)
  89. item.ChartPermissionName = v
  90. item.List = mapFiccUser[v]
  91. itemsFicclistPermission = append(itemsFicclistPermission, item)
  92. }
  93. resp.EnterScoreObj.ListFicc = itemsFicclistPermission
  94. groupNameArr := []string{"销售分", "专题分", "专家分", "云图大拓", "艾摩宏观"}
  95. for _, v := range groupNameArr {
  96. item := new(cygx.EnterScoreGroupListResp)
  97. item.GroupName = v
  98. itemsGroup = append(itemsGroup, item)
  99. }
  100. resp.EnterScoreObj.ListGroup = itemsGroup
  101. resp.PercentageObj = resp.EnterScoreObj
  102. resp.EnterScoreType = 1
  103. resp.Quarter = make([]string, 0)
  104. } else {
  105. //初始化数据,方便前端渲染
  106. var itemslistPermissionInit []*cygx.EnterScorePermissionListResp // 权益行业
  107. var itemsFicclistPermissionInit []*cygx.EnterScorePermissionListResp // FICC行业
  108. var itemsGroupInit []*cygx.EnterScoreGroupListResp //自定义分组
  109. mapRaiUserInit := make(map[string][]*cygx.EnterScoreRealNameListResp) //权益研究员
  110. mapFiccUserInit := make(map[string][]*cygx.EnterScoreRealNameListResp) // FICC研究员
  111. enterScoreDetail, err := cygx.GetCygxEnterScoreInfoById(enterScoreId)
  112. if err != nil {
  113. br.Msg = "获取失败"
  114. br.ErrMsg = "获取失败,GetCygxEnterScoreInfoById Err: " + err.Error()
  115. return
  116. }
  117. resp.EnterScoreId = enterScoreDetail.EnterScoreId
  118. resp.CompanyId = enterScoreDetail.CompanyId
  119. resp.CompanyName = enterScoreDetail.CompanyName
  120. resp.StartDate = enterScoreDetail.StartDate
  121. resp.EndDate = enterScoreDetail.EndDate
  122. resp.Quarter = strings.Split(enterScoreDetail.Quarter, ",")
  123. resp.EnterScoreType = enterScoreDetail.EnterScoreType
  124. resp.Ranking = enterScoreDetail.Ranking
  125. resp.IsMergeScoring = enterScoreDetail.IsMergeScoring
  126. resp.SecuritiesFirmsName = enterScoreDetail.SecuritiesFirmsName
  127. resp.MergeProportion = enterScoreDetail.MergeProportion
  128. resp.ProportionTotal = enterScoreDetail.ProportionTotal
  129. resp.RaiProportionTotal = enterScoreDetail.RaiProportionTotal
  130. resp.FiccProportionTotal = enterScoreDetail.FiccProportionTotal
  131. listResearcher, err := cygx.GeCygxEnterScoreResearcherListById(enterScoreId)
  132. if err != nil {
  133. br.Msg = "获取失败"
  134. br.ErrMsg = "获取失败,GeCygxEnterScoreResearcherListById Err: " + err.Error()
  135. return
  136. }
  137. for _, v := range listResearcher {
  138. item := new(cygx.EnterScoreRealNameListResp)
  139. item.RealName = v.RealName
  140. item.ChartPermissionName = v.ChartPermissionName
  141. item.Proportion = v.Proportion
  142. if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
  143. mapRaiUser[v.ChartPermissionName] = append(mapRaiUser[v.ChartPermissionName], item)
  144. } else {
  145. mapFiccUser[v.ChartPermissionName] = append(mapFiccUser[v.ChartPermissionName], item)
  146. }
  147. }
  148. for _, v := range listResearcher {
  149. item := new(cygx.EnterScoreRealNameListResp)
  150. item.RealName = v.RealName
  151. item.ChartPermissionName = v.ChartPermissionName
  152. if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
  153. mapRaiUserInit[v.ChartPermissionName] = append(mapRaiUserInit[v.ChartPermissionName], item)
  154. } else {
  155. mapFiccUserInit[v.ChartPermissionName] = append(mapFiccUserInit[v.ChartPermissionName], item)
  156. }
  157. }
  158. listPermission, err := cygx.GetCygxEnterScorePermissionListById(enterScoreId)
  159. if err != nil {
  160. br.Msg = "获取失败"
  161. br.ErrMsg = "获取失败,GetCygxEnterScorePermissionListById Err: " + err.Error()
  162. return
  163. }
  164. for _, v := range listPermission {
  165. item := new(cygx.EnterScorePermissionListResp)
  166. item.ChartPermissionName = v.ChartPermissionName
  167. item.Proportion = v.Proportion
  168. if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
  169. item.List = mapRaiUser[v.ChartPermissionName]
  170. itemslistPermission = append(itemslistPermission, item)
  171. } else {
  172. item.List = mapFiccUser[v.ChartPermissionName]
  173. itemsFicclistPermission = append(itemsFicclistPermission, item)
  174. }
  175. }
  176. for _, v := range listPermission {
  177. item := new(cygx.EnterScorePermissionListResp)
  178. item.ChartPermissionName = v.ChartPermissionName
  179. if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
  180. item.List = mapRaiUserInit[v.ChartPermissionName]
  181. itemslistPermissionInit = append(itemslistPermissionInit, item)
  182. } else {
  183. item.List = mapFiccUserInit[v.ChartPermissionName]
  184. itemsFicclistPermissionInit = append(itemsFicclistPermissionInit, item)
  185. }
  186. }
  187. listGroup, err := cygx.GeCygxEnterScoreGroupListById(enterScoreId)
  188. if err != nil {
  189. br.Msg = "获取失败"
  190. br.ErrMsg = "获取失败,GeCygxEnterScoreGroupListById Err: " + err.Error()
  191. return
  192. }
  193. for _, v := range listGroup {
  194. item := new(cygx.EnterScoreGroupListResp)
  195. item.GroupName = v.GroupName
  196. item.Proportion = v.Proportion
  197. itemsGroup = append(itemsGroup, item)
  198. }
  199. for _, v := range listGroup {
  200. item := new(cygx.EnterScoreGroupListResp)
  201. item.GroupName = v.GroupName
  202. itemsGroupInit = append(itemsGroupInit, item)
  203. }
  204. if enterScoreDetail.EnterScoreType == 1 {
  205. resp.EnterScoreObj.ListGroup = itemsGroup
  206. resp.EnterScoreObj.ListRai = itemslistPermission
  207. resp.EnterScoreObj.ListFicc = itemsFicclistPermission
  208. resp.PercentageObj.ListGroup = itemsGroupInit
  209. resp.PercentageObj.ListRai = itemslistPermissionInit
  210. resp.PercentageObj.ListFicc = itemsFicclistPermissionInit
  211. } else {
  212. resp.PercentageObj.ListGroup = itemsGroup
  213. resp.PercentageObj.ListRai = itemslistPermission
  214. resp.PercentageObj.ListFicc = itemsFicclistPermission
  215. resp.EnterScoreObj.ListGroup = itemsGroupInit
  216. resp.EnterScoreObj.ListRai = itemslistPermissionInit
  217. resp.EnterScoreObj.ListFicc = itemsFicclistPermissionInit
  218. }
  219. }
  220. br.Ret = 200
  221. br.Success = true
  222. br.Msg = "获取成功"
  223. br.Data = resp
  224. }
  225. // @Title 更新录分
  226. // @Description 更新录分接口
  227. // @Param request body cygx.UpdateEnterScoreReq true "type json string"
  228. // @Success 200 {object} "保存成功"
  229. // @router /enterScore/update [post]
  230. func (this *EnterScoreController) EnterScoreUpdate() {
  231. br := new(models.BaseResponse).Init()
  232. defer func() {
  233. this.Data["json"] = br
  234. this.ServeJSON()
  235. }()
  236. sysUser := this.SysUser
  237. if sysUser == nil {
  238. br.Msg = "请登录"
  239. br.ErrMsg = "请登录,SysUser Is Empty"
  240. br.Ret = 408
  241. return
  242. }
  243. var req cygx.UpdateEnterScoreReq
  244. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  245. if err != nil {
  246. br.Msg = "参数解析异常!"
  247. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  248. return
  249. }
  250. enterScoreId := req.EnterScoreId
  251. companyId := req.CompanyId
  252. if companyId == 0 {
  253. br.Msg = "参数错误"
  254. br.ErrMsg = "参数错误,companyId不可为空"
  255. return
  256. }
  257. companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(companyId, utils.COMPANY_PRODUCT_RAI_ID)
  258. if err != nil {
  259. br.Msg = "查询客户产品信息失败"
  260. br.ErrMsg = "查询客户产品信息失败,Err:" + err.Error()
  261. return
  262. }
  263. item := new(cygx.CygxEnterScore)
  264. item.EnterScoreId = enterScoreId
  265. item.CompanyId = companyId
  266. item.CompanyName = req.CompanyName
  267. item.StartDate = req.StartDate
  268. item.EndDate = req.EndDate
  269. item.Quarter = strings.Join(req.Quarter, ",")
  270. item.EnterScoreType = req.EnterScoreType
  271. item.Ranking = req.Ranking
  272. item.IsMergeScoring = req.IsMergeScoring
  273. item.SecuritiesFirmsName = req.SecuritiesFirmsName
  274. item.MergeProportion = req.MergeProportion
  275. item.RaiProportionTotal = req.RaiProportionTotal
  276. item.FiccProportionTotal = req.FiccProportionTotal
  277. item.ProportionTotal = req.ProportionTotal
  278. item.SellerId = companyProduct.SellerId
  279. item.SellerName = companyProduct.SellerName
  280. item.AdminId = sysUser.AdminId
  281. item.AdminName = sysUser.RealName
  282. item.CreateTime = time.Now()
  283. item.ModifyTime = time.Now()
  284. var itemsPermission []*cygx.CygxEnterScorePermission //行业数组
  285. var itemsResearcher []*cygx.CygxEnterScoreResearcher //研究员数组
  286. var itemsGroup []*cygx.CygxEnterScoreGroup //自定义分组
  287. listRai := req.ListRai
  288. listFicc := req.ListFicc
  289. listGroup := req.ListGroup
  290. for _, v := range listRai { // 权益数据
  291. itemPermission := new(cygx.CygxEnterScorePermission)
  292. itemPermission.ChartPermissionName = v.ChartPermissionName
  293. itemPermission.Proportion = v.Proportion
  294. itemPermission.EnterScoreId = v.EnterScoreId
  295. itemPermission.AdminId = sysUser.AdminId
  296. itemPermission.AdminName = sysUser.RealName
  297. itemPermission.ProductId = utils.COMPANY_PRODUCT_RAI_ID
  298. itemPermission.CreateTime = time.Now()
  299. itemPermission.ModifyTime = time.Now()
  300. itemsPermission = append(itemsPermission, itemPermission)
  301. for _, vResearcher := range v.List {
  302. itemResearcher := new(cygx.CygxEnterScoreResearcher)
  303. itemResearcher.ChartPermissionName = v.ChartPermissionName
  304. itemResearcher.EnterScoreId = v.EnterScoreId
  305. itemResearcher.RealName = vResearcher.RealName
  306. itemResearcher.Proportion = vResearcher.Proportion
  307. itemResearcher.AdminId = sysUser.AdminId
  308. itemResearcher.AdminName = sysUser.RealName
  309. itemResearcher.ProductId = utils.COMPANY_PRODUCT_RAI_ID
  310. itemResearcher.CreateTime = time.Now()
  311. itemResearcher.ModifyTime = time.Now()
  312. itemsResearcher = append(itemsResearcher, itemResearcher)
  313. }
  314. }
  315. for _, v := range listFicc { // FICC数据
  316. itemPermission := new(cygx.CygxEnterScorePermission)
  317. itemPermission.ChartPermissionName = v.ChartPermissionName
  318. itemPermission.Proportion = v.Proportion
  319. itemPermission.EnterScoreId = v.EnterScoreId
  320. itemPermission.AdminId = sysUser.AdminId
  321. itemPermission.AdminName = sysUser.RealName
  322. itemPermission.ProductId = utils.COMPANY_PRODUCT_FICC_ID
  323. itemPermission.CreateTime = time.Now()
  324. itemPermission.ModifyTime = time.Now()
  325. itemsPermission = append(itemsPermission, itemPermission)
  326. for _, vResearcher := range v.List {
  327. itemResearcher := new(cygx.CygxEnterScoreResearcher)
  328. itemResearcher.ChartPermissionName = v.ChartPermissionName
  329. itemResearcher.EnterScoreId = v.EnterScoreId
  330. itemResearcher.RealName = vResearcher.RealName
  331. itemResearcher.Proportion = vResearcher.Proportion
  332. itemResearcher.AdminId = sysUser.AdminId
  333. itemResearcher.AdminName = sysUser.RealName
  334. itemResearcher.ProductId = utils.COMPANY_PRODUCT_FICC_ID
  335. itemResearcher.CreateTime = time.Now()
  336. itemResearcher.ModifyTime = time.Now()
  337. itemsResearcher = append(itemsResearcher, itemResearcher)
  338. }
  339. }
  340. for _, v := range listGroup {
  341. itemGroup := new(cygx.CygxEnterScoreGroup)
  342. itemGroup.GroupName = v.GroupName
  343. itemGroup.Proportion = v.Proportion
  344. itemGroup.AdminId = sysUser.AdminId
  345. itemGroup.AdminName = sysUser.RealName
  346. itemGroup.CreateTime = time.Now()
  347. itemGroup.ModifyTime = time.Now()
  348. itemsGroup = append(itemsGroup, itemGroup)
  349. }
  350. if enterScoreId == 0 { // 新增
  351. err = cygx.AddCygxEnterScore(item, itemsPermission, itemsResearcher, itemsGroup)
  352. } else { // 修改
  353. item.EnterScoreId = enterScoreId
  354. err = cygx.UpdateCygxEnterScore(item, itemsPermission, itemsResearcher, itemsGroup)
  355. }
  356. if err != nil {
  357. br.Msg = "操作失败"
  358. br.ErrMsg = "操作失败Err:" + err.Error()
  359. return
  360. }
  361. br.Ret = 200
  362. br.Success = true
  363. br.IsAddLog = true
  364. br.Msg = "操作成功"
  365. }