enter_score.go 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  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 CompanyContractId query int true "ID"
  20. // @Success Ret=200 {object} cygx.CygxAllocationCompanyContractDetailResp
  21. // @router /enterScore/detail [get]
  22. func (this *EnterScoreController) CompanyContracDetail() {
  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. resp := new(cygx.CygxEnterScoreDetailResp)
  36. //权益研究员
  37. sysUserList, err := cygx.GetAskEmailList()
  38. if err != nil {
  39. br.Msg = "获取失败"
  40. br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
  41. return
  42. }
  43. mapRaiUser := make(map[string][]*cygx.EnterScoreRealNameListResp)
  44. for _, v := range sysUserList {
  45. item := new(cygx.EnterScoreRealNameListResp)
  46. item.RealName = v.Name
  47. item.ChartPermissionName = v.ChartPermissionName
  48. mapRaiUser[v.ChartPermissionName] = append(mapRaiUser[v.ChartPermissionName], item)
  49. }
  50. listPermission, err := cygx.GetChartPermissionAll()
  51. if err != nil {
  52. br.Msg = "获取信息失败"
  53. br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
  54. return
  55. }
  56. var itemslistPermission []*cygx.EnterScorePermissionListResp
  57. permissionNameArr := []string{"医药", "消费", "科技", "智造", "策略", "固收"}
  58. for _, v := range listPermission {
  59. if !utils.InArrayByStr(permissionNameArr, v.PermissionName) {
  60. continue
  61. }
  62. item := new(cygx.EnterScorePermissionListResp)
  63. item.ChartPermissionName = v.PermissionName
  64. item.List = mapRaiUser[v.PermissionName]
  65. itemslistPermission = append(itemslistPermission, item)
  66. }
  67. resp.EnterScoreObj.ListRai = itemslistPermission
  68. //ficc 研究员
  69. ficcUserList, err := system.GetFiccEnterScoreAdmin()
  70. if err != nil {
  71. br.Msg = "获取失败"
  72. br.ErrMsg = "获取失败,GetFiccEnterScoreAdmin Err: " + err.Error()
  73. return
  74. }
  75. mapFiccUser := make(map[string][]*cygx.EnterScoreRealNameListResp)
  76. for _, v := range ficcUserList {
  77. item := new(cygx.EnterScoreRealNameListResp)
  78. item.RealName = v.RealName
  79. item.ChartPermissionName = v.GroupName
  80. mapFiccUser[v.GroupName] = append(mapFiccUser[v.GroupName], item)
  81. }
  82. var itemsFicclistPermission []*cygx.EnterScorePermissionListResp
  83. permissionFiccNameArr := []string{"宏观组", "建材组", "有色组", "能化组"}
  84. for _, v := range permissionFiccNameArr {
  85. item := new(cygx.EnterScorePermissionListResp)
  86. item.ChartPermissionName = v
  87. item.List = mapFiccUser[v]
  88. itemsFicclistPermission = append(itemsFicclistPermission, item)
  89. }
  90. resp.EnterScoreObj.ListFicc = itemsFicclistPermission
  91. groupNameArr := []string{"销售分", "专题分", "专家分", "云图大拓", "艾摩宏观"}
  92. var itemsGroup []*cygx.EnterScoreGroupListResp
  93. for _, v := range groupNameArr {
  94. item := new(cygx.EnterScoreGroupListResp)
  95. item.GroupName = v
  96. itemsGroup = append(itemsGroup, item)
  97. }
  98. resp.EnterScoreObj.ListGroup = itemsGroup
  99. resp.PercentageObj = resp.EnterScoreObj
  100. resp.EnterScoreType = 1
  101. resp.Quarter = make([]string, 0)
  102. br.Ret = 200
  103. br.Success = true
  104. br.Msg = "获取成功"
  105. br.Data = resp
  106. }
  107. // @Title 更新派点
  108. // @Description 更新派点接口
  109. // @Param request body cygx.AddProductInteriorReq true "type json string"
  110. // @Success 200 {object} "保存成功"
  111. // @router /enterScore/update [post]
  112. func (this *EnterScoreController) EnterScoreUpdate() {
  113. br := new(models.BaseResponse).Init()
  114. defer func() {
  115. this.Data["json"] = br
  116. this.ServeJSON()
  117. }()
  118. sysUser := this.SysUser
  119. if sysUser == nil {
  120. br.Msg = "请登录"
  121. br.ErrMsg = "请登录,SysUser Is Empty"
  122. br.Ret = 408
  123. return
  124. }
  125. var req cygx.UpdateEnterScoreReq
  126. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  127. if err != nil {
  128. br.Msg = "参数解析异常!"
  129. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  130. return
  131. }
  132. enterScoreId := req.EnterScoreId
  133. companyId := req.CompanyId
  134. if companyId == 0 {
  135. br.Msg = "参数错误"
  136. br.ErrMsg = "参数错误,companyId不可为空"
  137. return
  138. }
  139. //EnterScoreId int `orm:"column(enter_score_id);pk";comment:"主键"`
  140. //CompanyId int `comment:"公司ID"`
  141. //CompanyName string `comment:"客户名称"`
  142. //StartDate time.Time `comment:"开始日期"`
  143. //EndDate time.Time `comment:"结束日期"`
  144. //Quarter string `comment:"季度"`
  145. //EnterScoreType int `comment:"录入方式 1:按评分录入、2:按比例录入"`
  146. //TotalScore string `comment:"总分"`
  147. //Ranking string `comment:"排名"`
  148. //IsMergeScoring int `comment:"是否合并打分"`
  149. //SecuritiesFirmsName string `comment:"券商名称"`
  150. //MergeProportion float64 `comment:"合并占比"`
  151. //RaiProportionTotal float64 `comment:"权益研究员占比"`
  152. //FiccProportionTotal float64 `comment:"FICC研究员占比"`
  153. //ProportionTotal float64 `comment:"合计总占比"`
  154. //SellerId int `comment:"所属销售id"`
  155. //SellerName string `comment:"所属销售名称"`
  156. //AdminId int `comment:"操作人ID"`
  157. //AdminName string `comment:"操作人姓名"`
  158. //CreateTime time.Time `comment:"创建时间"`
  159. //ModifyTime time.Time `comment:"更新时间"`
  160. companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(companyId, utils.COMPANY_PRODUCT_RAI_ID)
  161. if err != nil {
  162. br.Msg = "查询客户产品信息失败"
  163. br.ErrMsg = "查询客户产品信息失败,Err:" + err.Error()
  164. return
  165. }
  166. item := new(cygx.CygxEnterScore)
  167. item.EnterScoreId = enterScoreId
  168. item.CompanyId = companyId
  169. item.CompanyName = req.CompanyName
  170. item.StartDate = req.StartDate
  171. item.EndDate = req.EndDate
  172. item.Quarter = strings.Join(req.Quarter, ",")
  173. item.EnterScoreType = req.EnterScoreType
  174. item.Ranking = req.Ranking
  175. item.IsMergeScoring = req.IsMergeScoring
  176. item.SecuritiesFirmsName = req.SecuritiesFirmsName
  177. item.MergeProportion = req.MergeProportion
  178. item.RaiProportionTotal = req.RaiProportionTotal
  179. item.FiccProportionTotal = req.FiccProportionTotal
  180. item.ProportionTotal = req.ProportionTotal
  181. item.SellerId = companyProduct.SellerId
  182. item.SellerName = companyProduct.SellerName
  183. item.AdminId = sysUser.AdminId
  184. item.AdminName = sysUser.RealName
  185. item.CreateTime = time.Now()
  186. item.ModifyTime = time.Now()
  187. var itemsPermission []*cygx.CygxEnterScorePermission //行业数组
  188. var itemsResearcher []*cygx.CygxEnterScoreResearcher //研究员数组
  189. var itemsGroup []*cygx.CygxEnterScoreGroup //自定义分组
  190. listRai := req.ListRai
  191. listFicc := req.ListFicc
  192. listGroup := req.ListGroup
  193. for _, v := range listRai { // 权益数据
  194. itemPermission := new(cygx.CygxEnterScorePermission)
  195. itemPermission.ChartPermissionName = v.ChartPermissionName
  196. itemPermission.Proportion = v.Proportion
  197. itemPermission.EnterScoreId = v.EnterScoreId
  198. itemPermission.AdminId = sysUser.AdminId
  199. itemPermission.AdminName = sysUser.RealName
  200. itemPermission.ProductId = utils.COMPANY_PRODUCT_RAI_ID
  201. itemPermission.CreateTime = time.Now()
  202. itemPermission.ModifyTime = time.Now()
  203. itemsPermission = append(itemsPermission, itemPermission)
  204. for _, vResearcher := range v.List {
  205. itemResearcher := new(cygx.CygxEnterScoreResearcher)
  206. itemResearcher.ChartPermissionName = v.ChartPermissionName
  207. itemResearcher.EnterScoreId = v.EnterScoreId
  208. itemResearcher.RealName = vResearcher.RealName
  209. itemResearcher.Proportion = vResearcher.Proportion
  210. itemResearcher.AdminId = sysUser.AdminId
  211. itemResearcher.AdminName = sysUser.RealName
  212. itemResearcher.ProductId = utils.COMPANY_PRODUCT_RAI_ID
  213. itemResearcher.CreateTime = time.Now()
  214. itemResearcher.ModifyTime = time.Now()
  215. itemsResearcher = append(itemsResearcher, itemResearcher)
  216. }
  217. }
  218. for _, v := range listFicc { // FICC数据
  219. itemPermission := new(cygx.CygxEnterScorePermission)
  220. itemPermission.ChartPermissionName = v.ChartPermissionName
  221. itemPermission.Proportion = v.Proportion
  222. itemPermission.EnterScoreId = v.EnterScoreId
  223. itemPermission.AdminId = sysUser.AdminId
  224. itemPermission.AdminName = sysUser.RealName
  225. itemPermission.ProductId = utils.COMPANY_PRODUCT_FICC_ID
  226. itemPermission.CreateTime = time.Now()
  227. itemPermission.ModifyTime = time.Now()
  228. itemsPermission = append(itemsPermission, itemPermission)
  229. for _, vResearcher := range v.List {
  230. itemResearcher := new(cygx.CygxEnterScoreResearcher)
  231. itemResearcher.ChartPermissionName = v.ChartPermissionName
  232. itemResearcher.EnterScoreId = v.EnterScoreId
  233. itemResearcher.RealName = vResearcher.RealName
  234. itemResearcher.Proportion = vResearcher.Proportion
  235. itemResearcher.AdminId = sysUser.AdminId
  236. itemResearcher.AdminName = sysUser.RealName
  237. itemResearcher.ProductId = utils.COMPANY_PRODUCT_FICC_ID
  238. itemResearcher.CreateTime = time.Now()
  239. itemResearcher.ModifyTime = time.Now()
  240. itemsResearcher = append(itemsResearcher, itemResearcher)
  241. }
  242. }
  243. for _, v := range listGroup {
  244. itemGroup := new(cygx.CygxEnterScoreGroup)
  245. itemGroup.GroupName = v.GroupName
  246. itemGroup.Proportion = v.Proportion
  247. itemGroup.AdminId = sysUser.AdminId
  248. itemGroup.AdminName = sysUser.RealName
  249. itemGroup.CreateTime = time.Now()
  250. itemGroup.ModifyTime = time.Now()
  251. itemsGroup = append(itemsGroup, itemGroup)
  252. }
  253. //fmt.Println("itemsPermission", len(itemsPermission))
  254. //fmt.Println("itemsResearcher", len(itemsResearcher))
  255. //fmt.Println("itemsGroup", len(itemsGroup))
  256. if enterScoreId == 0 { // 新增
  257. err = cygx.AddCygxEnterScore(item, itemsPermission, itemsResearcher, itemsGroup)
  258. } else { // 修改
  259. }
  260. if err != nil {
  261. br.Msg = "操作失败"
  262. br.ErrMsg = "操作失败Err:" + err.Error()
  263. return
  264. }
  265. br.Ret = 200
  266. br.Success = true
  267. br.IsAddLog = true
  268. br.Msg = "操作成功"
  269. }