Kaynağa Gözat

Merge branch 'crm/crm_15.4' of http://8.136.199.33:3000/hongze/hz_crm_api into debug

xingzai 1 yıl önce
ebeveyn
işleme
0224118c67
4 değiştirilmiş dosya ile 614 ekleme ve 85 silme
  1. 346 60
      controllers/cygx/enter_score.go
  2. 254 24
      models/cygx/enter_score.go
  3. 4 0
      models/db.go
  4. 10 1
      routers/commentsRouter.go

+ 346 - 60
controllers/cygx/enter_score.go

@@ -1,11 +1,15 @@
 package cygx
 
 import (
+	"encoding/json"
 	"hongze/hz_crm_api/controllers"
 	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/utils"
+	"strings"
+	"time"
 )
 
 // X类客户录分模块
@@ -15,10 +19,10 @@ type EnterScoreController struct {
 
 // @Title  详情
 // @Description 获取详情接口
-// @Param   CompanyContractId   query   int  true       "ID"
-// @Success Ret=200 {object} cygx.CygxAllocationCompanyContractDetailResp
+// @Param   EnterScoreId   query   int  true       "录分ID"
+// @Success Ret=200 {object} cygx.CygxEnterScoreDetailResp
 // @router /enterScore/detail [get]
-func (this *EnterScoreController) CompanyContracDetail() {
+func (this *EnterScoreController) EnterScoreDetail() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -31,79 +35,361 @@ func (this *EnterScoreController) CompanyContracDetail() {
 		br.Ret = 408
 		return
 	}
+
+	enterScoreId, _ := this.GetInt("EnterScoreId")
 	resp := new(cygx.CygxEnterScoreDetailResp)
+	var itemslistPermission []*cygx.EnterScorePermissionListResp       // 权益行业
+	var itemsFicclistPermission []*cygx.EnterScorePermissionListResp   // FICC行业
+	mapRaiUser := make(map[string][]*cygx.EnterScoreRealNameListResp)  //权益研究员
+	mapFiccUser := make(map[string][]*cygx.EnterScoreRealNameListResp) // FICC研究员
+	var itemsGroup []*cygx.EnterScoreGroupListResp                     //自定义分组
+	if enterScoreId == 0 {
+		//权益研究员
+		sysUserList, err := cygx.GetAskEmailList()
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
+			return
+		}
+
+		for _, v := range sysUserList {
+			item := new(cygx.EnterScoreRealNameListResp)
+			item.RealName = v.Name
+			item.ChartPermissionName = v.ChartPermissionName
+			mapRaiUser[v.ChartPermissionName] = append(mapRaiUser[v.ChartPermissionName], item)
+		}
+
+		listPermission, err := cygx.GetChartPermissionAll()
+		if err != nil {
+			br.Msg = "获取信息失败"
+			br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+			return
+		}
+
+		permissionNameArr := []string{"医药", "消费", "科技", "智造", "策略", "固收"}
+		for _, v := range listPermission {
+			if !utils.InArrayByStr(permissionNameArr, v.PermissionName) {
+				continue
+			}
+			item := new(cygx.EnterScorePermissionListResp)
+			item.ChartPermissionName = v.PermissionName
+			item.List = mapRaiUser[v.PermissionName]
+			itemslistPermission = append(itemslistPermission, item)
+		}
+		resp.EnterScoreObj.ListRai = itemslistPermission
+
+		//ficc 研究员
+		ficcUserList, err := system.GetFiccEnterScoreAdmin()
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetFiccEnterScoreAdmin Err: " + err.Error()
+			return
+		}
+
+		for _, v := range ficcUserList {
+			item := new(cygx.EnterScoreRealNameListResp)
+			item.RealName = v.RealName
+			item.ChartPermissionName = v.GroupName
+			mapFiccUser[v.GroupName] = append(mapFiccUser[v.GroupName], item)
+		}
+
+		permissionFiccNameArr := []string{"宏观组", "建材组", "有色组", "能化组"}
+		for _, v := range permissionFiccNameArr {
+			item := new(cygx.EnterScorePermissionListResp)
+			item.ChartPermissionName = v
+			item.List = mapFiccUser[v]
+			itemsFicclistPermission = append(itemsFicclistPermission, item)
+		}
+		resp.EnterScoreObj.ListFicc = itemsFicclistPermission
+
+		groupNameArr := []string{"销售分", "专题分", "专家分", "云图大拓", "艾摩宏观"}
+		for _, v := range groupNameArr {
+			item := new(cygx.EnterScoreGroupListResp)
+			item.GroupName = v
+			itemsGroup = append(itemsGroup, item)
+		}
+		resp.EnterScoreObj.ListGroup = itemsGroup
+		resp.PercentageObj = resp.EnterScoreObj
+		resp.EnterScoreType = 1
+		resp.Quarter = make([]string, 0)
+	} else {
+		//初始化数据,方便前端渲染
+		var itemslistPermissionInit []*cygx.EnterScorePermissionListResp       // 权益行业
+		var itemsFicclistPermissionInit []*cygx.EnterScorePermissionListResp   // FICC行业
+		var itemsGroupInit []*cygx.EnterScoreGroupListResp                     //自定义分组
+		mapRaiUserInit := make(map[string][]*cygx.EnterScoreRealNameListResp)  //权益研究员
+		mapFiccUserInit := make(map[string][]*cygx.EnterScoreRealNameListResp) // FICC研究员
+
+		enterScoreDetail, err := cygx.GetCygxEnterScoreInfoById(enterScoreId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetCygxEnterScoreInfoById Err: " + err.Error()
+			return
+		}
+
+		resp.EnterScoreId = enterScoreDetail.EnterScoreId
+		resp.CompanyId = enterScoreDetail.CompanyId
+		resp.CompanyName = enterScoreDetail.CompanyName
+		resp.StartDate = enterScoreDetail.StartDate
+		resp.EndDate = enterScoreDetail.EndDate
+		resp.Quarter = strings.Split(enterScoreDetail.Quarter, ",")
+		resp.EnterScoreType = enterScoreDetail.EnterScoreType
+		resp.Ranking = enterScoreDetail.Ranking
+		resp.IsMergeScoring = enterScoreDetail.IsMergeScoring
+		resp.SecuritiesFirmsName = enterScoreDetail.SecuritiesFirmsName
+		resp.MergeProportion = enterScoreDetail.MergeProportion
+		resp.ProportionTotal = enterScoreDetail.ProportionTotal
+		resp.RaiProportionTotal = enterScoreDetail.RaiProportionTotal
+		resp.FiccProportionTotal = enterScoreDetail.FiccProportionTotal
+
+		listResearcher, err := cygx.GeCygxEnterScoreResearcherListById(enterScoreId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GeCygxEnterScoreResearcherListById Err: " + err.Error()
+			return
+		}
+		for _, v := range listResearcher {
+			item := new(cygx.EnterScoreRealNameListResp)
+			item.RealName = v.RealName
+			item.ChartPermissionName = v.ChartPermissionName
+			item.Proportion = v.Proportion
+			if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
+				mapRaiUser[v.ChartPermissionName] = append(mapRaiUser[v.ChartPermissionName], item)
+			} else {
+				mapFiccUser[v.ChartPermissionName] = append(mapFiccUser[v.ChartPermissionName], item)
+			}
+		}
+
+		for _, v := range listResearcher {
+			item := new(cygx.EnterScoreRealNameListResp)
+			item.RealName = v.RealName
+			item.ChartPermissionName = v.ChartPermissionName
+			if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
+				mapRaiUserInit[v.ChartPermissionName] = append(mapRaiUserInit[v.ChartPermissionName], item)
+			} else {
+				mapFiccUserInit[v.ChartPermissionName] = append(mapFiccUserInit[v.ChartPermissionName], item)
+			}
+		}
+
+		listPermission, err := cygx.GetCygxEnterScorePermissionListById(enterScoreId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GetCygxEnterScorePermissionListById Err: " + err.Error()
+			return
+		}
+		for _, v := range listPermission {
+			item := new(cygx.EnterScorePermissionListResp)
+			item.ChartPermissionName = v.ChartPermissionName
+			item.Proportion = v.Proportion
+			if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
+				item.List = mapRaiUser[v.ChartPermissionName]
+				itemslistPermission = append(itemslistPermission, item)
+			} else {
+				item.List = mapFiccUser[v.ChartPermissionName]
+				itemsFicclistPermission = append(itemsFicclistPermission, item)
+			}
+		}
+
+		for _, v := range listPermission {
+			item := new(cygx.EnterScorePermissionListResp)
+			item.ChartPermissionName = v.ChartPermissionName
+			if v.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
+				item.List = mapRaiUserInit[v.ChartPermissionName]
+				itemslistPermissionInit = append(itemslistPermissionInit, item)
+			} else {
+				item.List = mapFiccUserInit[v.ChartPermissionName]
+				itemsFicclistPermissionInit = append(itemsFicclistPermissionInit, item)
+			}
+		}
+
+		listGroup, err := cygx.GeCygxEnterScoreGroupListById(enterScoreId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,GeCygxEnterScoreGroupListById Err: " + err.Error()
+			return
+		}
+		for _, v := range listGroup {
+			item := new(cygx.EnterScoreGroupListResp)
+			item.GroupName = v.GroupName
+			item.Proportion = v.Proportion
+			itemsGroup = append(itemsGroup, item)
+		}
+
+		for _, v := range listGroup {
+			item := new(cygx.EnterScoreGroupListResp)
+			item.GroupName = v.GroupName
+			itemsGroupInit = append(itemsGroupInit, item)
+		}
 
-	//权益研究员
-	sysUserList, err := cygx.GetAskEmailList()
+		if enterScoreDetail.EnterScoreType == 1 {
+			resp.EnterScoreObj.ListGroup = itemsGroup
+			resp.EnterScoreObj.ListRai = itemslistPermission
+			resp.EnterScoreObj.ListFicc = itemsFicclistPermission
+
+			resp.PercentageObj.ListGroup = itemsGroupInit
+			resp.PercentageObj.ListRai = itemslistPermissionInit
+			resp.PercentageObj.ListFicc = itemsFicclistPermissionInit
+		} else {
+			resp.PercentageObj.ListGroup = itemsGroup
+			resp.PercentageObj.ListRai = itemslistPermission
+			resp.PercentageObj.ListFicc = itemsFicclistPermission
+
+			resp.EnterScoreObj.ListGroup = itemsGroupInit
+			resp.EnterScoreObj.ListRai = itemslistPermissionInit
+			resp.EnterScoreObj.ListFicc = itemsFicclistPermissionInit
+		}
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// @Title 更新录分
+// @Description 更新录分接口
+// @Param	request	body cygx.UpdateEnterScoreReq true "type json string"
+// @Success 200 {object} "保存成功"
+// @router /enterScore/update [post]
+func (this *EnterScoreController) EnterScoreUpdate() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+	var req cygx.UpdateEnterScoreReq
+	err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
 	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,GetAskEmailList Err: " + err.Error()
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
 		return
 	}
-	mapRaiUser := make(map[string][]*cygx.EnterScoreRealNameListResp)
-	for _, v := range sysUserList {
-		item := new(cygx.EnterScoreRealNameListResp)
-		item.RealName = v.Name
-		item.ChartPermissionName = v.ChartPermissionName
-		mapRaiUser[v.ChartPermissionName] = append(mapRaiUser[v.ChartPermissionName], item)
+	enterScoreId := req.EnterScoreId
+	companyId := req.CompanyId
+	if companyId == 0 {
+		br.Msg = "参数错误"
+		br.ErrMsg = "参数错误,companyId不可为空"
+		return
 	}
 
-	listPermission, err := cygx.GetChartPermissionAll()
+	companyProduct, err := company.GetCompanyProductByCompanyIdAndProductId(companyId, utils.COMPANY_PRODUCT_RAI_ID)
 	if err != nil {
-		br.Msg = "获取信息失败"
-		br.ErrMsg = "获取品种信息失败,Err:" + err.Error()
+		br.Msg = "查询客户产品信息失败"
+		br.ErrMsg = "查询客户产品信息失败,Err:" + err.Error()
 		return
 	}
-	var itemslistPermission []*cygx.EnterScorePermissionListResp
-	permissionNameArr := []string{"医药", "消费", "科技", "智造", "策略", "固收"}
-	for _, v := range listPermission {
-		if !utils.InArrayByStr(permissionNameArr, v.PermissionName) {
-			continue
-		}
-		item := new(cygx.EnterScorePermissionListResp)
-		item.ChartPermissionName = v.PermissionName
-		item.List = mapRaiUser[v.PermissionName]
-		itemslistPermission = append(itemslistPermission, item)
+
+	item := new(cygx.CygxEnterScore)
+	item.EnterScoreId = enterScoreId
+	item.CompanyId = companyId
+	item.CompanyName = req.CompanyName
+	item.StartDate = req.StartDate
+	item.EndDate = req.EndDate
+	item.Quarter = strings.Join(req.Quarter, ",")
+	item.EnterScoreType = req.EnterScoreType
+	item.Ranking = req.Ranking
+	item.IsMergeScoring = req.IsMergeScoring
+	item.SecuritiesFirmsName = req.SecuritiesFirmsName
+	item.MergeProportion = req.MergeProportion
+	item.RaiProportionTotal = req.RaiProportionTotal
+	item.FiccProportionTotal = req.FiccProportionTotal
+	item.ProportionTotal = req.ProportionTotal
+	item.SellerId = companyProduct.SellerId
+	item.SellerName = companyProduct.SellerName
+	item.AdminId = sysUser.AdminId
+	item.AdminName = sysUser.RealName
+	item.CreateTime = time.Now()
+	item.ModifyTime = time.Now()
+
+	var itemsPermission []*cygx.CygxEnterScorePermission //行业数组
+	var itemsResearcher []*cygx.CygxEnterScoreResearcher //研究员数组
+	var itemsGroup []*cygx.CygxEnterScoreGroup           //自定义分组
+	listRai := req.ListRai
+	listFicc := req.ListFicc
+	listGroup := req.ListGroup
+
+	for _, v := range listRai { // 权益数据
+		itemPermission := new(cygx.CygxEnterScorePermission)
+		itemPermission.ChartPermissionName = v.ChartPermissionName
+		itemPermission.Proportion = v.Proportion
+		itemPermission.EnterScoreId = v.EnterScoreId
+		itemPermission.AdminId = sysUser.AdminId
+		itemPermission.AdminName = sysUser.RealName
+		itemPermission.ProductId = utils.COMPANY_PRODUCT_RAI_ID
+		itemPermission.CreateTime = time.Now()
+		itemPermission.ModifyTime = time.Now()
+		itemsPermission = append(itemsPermission, itemPermission)
+		for _, vResearcher := range v.List {
+			itemResearcher := new(cygx.CygxEnterScoreResearcher)
+			itemResearcher.ChartPermissionName = v.ChartPermissionName
+			itemResearcher.EnterScoreId = v.EnterScoreId
+			itemResearcher.RealName = vResearcher.RealName
+			itemResearcher.Proportion = vResearcher.Proportion
+			itemResearcher.AdminId = sysUser.AdminId
+			itemResearcher.AdminName = sysUser.RealName
+			itemResearcher.ProductId = utils.COMPANY_PRODUCT_RAI_ID
+			itemResearcher.CreateTime = time.Now()
+			itemResearcher.ModifyTime = time.Now()
+			itemsResearcher = append(itemsResearcher, itemResearcher)
+		}
 	}
-	resp.EnterScoreObj.ListRai = itemslistPermission
 
-	//ficc 研究员
-	ficcUserList, err := system.GetFiccEnterScoreAdmin()
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,GetFiccEnterScoreAdmin Err: " + err.Error()
-		return
+	for _, v := range listFicc { // FICC数据
+		itemPermission := new(cygx.CygxEnterScorePermission)
+		itemPermission.ChartPermissionName = v.ChartPermissionName
+		itemPermission.Proportion = v.Proportion
+		itemPermission.EnterScoreId = v.EnterScoreId
+		itemPermission.AdminId = sysUser.AdminId
+		itemPermission.AdminName = sysUser.RealName
+		itemPermission.ProductId = utils.COMPANY_PRODUCT_FICC_ID
+		itemPermission.CreateTime = time.Now()
+		itemPermission.ModifyTime = time.Now()
+		itemsPermission = append(itemsPermission, itemPermission)
+		for _, vResearcher := range v.List {
+			itemResearcher := new(cygx.CygxEnterScoreResearcher)
+			itemResearcher.ChartPermissionName = v.ChartPermissionName
+			itemResearcher.EnterScoreId = v.EnterScoreId
+			itemResearcher.RealName = vResearcher.RealName
+			itemResearcher.Proportion = vResearcher.Proportion
+			itemResearcher.AdminId = sysUser.AdminId
+			itemResearcher.AdminName = sysUser.RealName
+			itemResearcher.ProductId = utils.COMPANY_PRODUCT_FICC_ID
+			itemResearcher.CreateTime = time.Now()
+			itemResearcher.ModifyTime = time.Now()
+			itemsResearcher = append(itemsResearcher, itemResearcher)
+		}
 	}
-	mapFiccUser := make(map[string][]*cygx.EnterScoreRealNameListResp)
-	for _, v := range ficcUserList {
-		item := new(cygx.EnterScoreRealNameListResp)
-		item.RealName = v.RealName
-		item.ChartPermissionName = v.GroupName
-		mapFiccUser[v.GroupName] = append(mapFiccUser[v.GroupName], item)
+
+	for _, v := range listGroup {
+		itemGroup := new(cygx.CygxEnterScoreGroup)
+		itemGroup.GroupName = v.GroupName
+		itemGroup.Proportion = v.Proportion
+		itemGroup.AdminId = sysUser.AdminId
+		itemGroup.AdminName = sysUser.RealName
+		itemGroup.CreateTime = time.Now()
+		itemGroup.ModifyTime = time.Now()
+		itemsGroup = append(itemsGroup, itemGroup)
 	}
-	var itemsFicclistPermission []*cygx.EnterScorePermissionListResp
-	permissionFiccNameArr := []string{"宏观组", "建材组", "有色组", "能化组"}
-	for _, v := range permissionFiccNameArr {
-		item := new(cygx.EnterScorePermissionListResp)
-		item.ChartPermissionName = v
-		item.List = mapFiccUser[v]
-		itemsFicclistPermission = append(itemsFicclistPermission, item)
+
+	if enterScoreId == 0 { // 新增
+		err = cygx.AddCygxEnterScore(item, itemsPermission, itemsResearcher, itemsGroup)
+	} else { // 修改
+		item.EnterScoreId = enterScoreId
+		err = cygx.UpdateCygxEnterScore(item, itemsPermission, itemsResearcher, itemsGroup)
 	}
-	resp.EnterScoreObj.ListFicc = itemsFicclistPermission
-
-	groupNameArr := []string{"销售分", "专题分", "专家分", "云图大拓", "艾摩宏观"}
-	var itemsGroup []*cygx.EnterScoreGroupListResp
-	for _, v := range groupNameArr {
-		item := new(cygx.EnterScoreGroupListResp)
-		item.GroupName = v
-		itemsGroup = append(itemsGroup, item)
+	if err != nil {
+		br.Msg = "操作失败"
+		br.ErrMsg = "操作失败Err:" + err.Error()
+		return
 	}
-	resp.EnterScoreObj.ListProup = itemsGroup
-	resp.PercentageObj = resp.EnterScoreObj
-	resp.EnterScoreType = 1
-	resp.Quarter = make([]string, 0)
 	br.Ret = 200
 	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
+	br.IsAddLog = true
+	br.Msg = "操作成功"
 }

+ 254 - 24
models/cygx/enter_score.go

@@ -1,47 +1,58 @@
 package cygx
 
-import "time"
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
 
 // CygxEnterScore 结构体代表了 cygx_enter_score 表格
 type CygxEnterScore struct {
-	EnterScoreID        int       `comment:"主键"`
-	EnterScoreType      int       `comment:"录入方式 1:按评分录入、2:按比例录入"`
-	CompanyID           int       `comment:"公司ID"`
-	CreateTime          time.Time `comment:"创建时间"`
-	ModifyTime          time.Time `comment:"更新时间"`
-	AdminID             int       `comment:"操作人ID"`
-	AdminName           string    `comment:"操作人姓名"`
-	Proportion          float64   `comment:"占比"`
-	ChartPermissionName string    `comment:"名称"`
-	SellerID            int       `comment:"所属销售id"`
-	SellerName          string    `comment:"所属销售名称"`
+	EnterScoreId        int       `orm:"column(enter_score_id);pk";comment:"主键"`
+	CompanyId           int       `comment:"公司ID"`
 	CompanyName         string    `comment:"客户名称"`
-	StartDate           time.Time `comment:"开始日期"`
-	EndDate             time.Time `comment:"结束日期"`
+	StartDate           string    `comment:"开始日期"`
+	EndDate             string    `comment:"结束日期"`
 	Quarter             string    `comment:"季度"`
-	TotalScore          string    `comment:"总分"`
+	EnterScoreType      int       `comment:"录入方式 1:按评分录入、2:按比例录入"`
 	Ranking             string    `comment:"排名"`
 	IsMergeScoring      int       `comment:"是否合并打分"`
 	SecuritiesFirmsName string    `comment:"券商名称"`
 	MergeProportion     float64   `comment:"合并占比"`
+	RaiProportionTotal  float64   `comment:"权益研究员占比"`
+	FiccProportionTotal float64   `comment:"FICC研究员占比"`
+	ProportionTotal     float64   `comment:"合计总占比"`
+	SellerId            int       `comment:"所属销售id"`
+	SellerName          string    `comment:"所属销售名称"`
+	AdminId             int       `comment:"操作人ID"`
+	AdminName           string    `comment:"操作人姓名"`
+	CreateTime          time.Time `comment:"创建时间"`
+	ModifyTime          time.Time `comment:"更新时间"`
 }
+
 type CygxEnterScoreDetailResp struct {
 	EnterScoreId        int               `comment:"录分ID"`
 	CompanyId           int               `comment:"公司ID,公司标识符"`
 	CompanyName         string            `comment:"公司名称"`
+	StartDate           string            `comment:"开始日期"`
+	EndDate             string            `comment:"结束日期"`
 	Quarter             []string          `comment:"季度,评分季度"`
 	EnterScoreType      int               `comment:"录入方式 1:按评分录入、2:按比例录入"`
-	RaiProportionTotal  float64           `description:"权益研究员占比"`
-	FiccProportionTotal float64           `description:"FICC研究员占比"`
-	EnterScoreObj       EnterScoreDateObj `description:"按评分录入"`
-	PercentageObj       EnterScoreDateObj `description:"按比例录入"`
+	Ranking             string            `comment:"排名"`
+	IsMergeScoring      int               `comment:"是否合并打分"`
+	SecuritiesFirmsName string            `comment:"券商名称"`
+	MergeProportion     float64           `comment:"合并占比"`
+	ProportionTotal     float64           `comment:"合计总占比"`
+	RaiProportionTotal  float64           `comment:"权益研究员占比"`
+	FiccProportionTotal float64           `comment:"FICC研究员占比"`
+	EnterScoreObj       EnterScoreDateObj `comment:"按评分录入"`
+	PercentageObj       EnterScoreDateObj `comment:"按比例录入"`
 }
 
 // 行业
 type EnterScoreDateObj struct {
 	ListRai   []*EnterScorePermissionListResp //权益列表
 	ListFicc  []*EnterScorePermissionListResp //FICC列表
-	ListProup []*EnterScoreGroupListResp      //其他配置信息
+	ListGroup []*EnterScoreGroupListResp      //其他配置信息
 }
 
 // 行业
@@ -54,13 +65,232 @@ type EnterScorePermissionListResp struct {
 
 // 研究员
 type EnterScoreRealNameListResp struct {
-	RealName            string  `description:"研究员姓名"`
-	Proportion          float64 `description:"占比"`
-	ChartPermissionName string  `description:"行业名称"`
+	RealName            string  `comment:"研究员姓名"`
+	Proportion          float64 `comment:"占比"`
+	ChartPermissionName string  `comment:"行业名称"`
 }
 
 // 其他分组
 type EnterScoreGroupListResp struct {
-	GroupName  string  `description:"研究员姓名"`
+	GroupName  string  `description:"名"`
 	Proportion float64 `description:"占比"`
 }
+
+// 添加或修改录分时的入参结构体
+type UpdateEnterScoreReq struct {
+	EnterScoreId        int                             `comment:"录分ID"`
+	CompanyId           int                             `comment:"公司ID"`
+	CompanyName         string                          `comment:"客户名称"`
+	StartDate           string                          `comment:"开始日期"`
+	EndDate             string                          `comment:"结束日期"`
+	Quarter             []string                        `comment:"季度"`
+	EnterScoreType      int                             `comment:"录入方式 1:按评分录入、2:按比例录入"`
+	Ranking             string                          `comment:"排名"`
+	IsMergeScoring      int                             `comment:"是否合并打分"`
+	SecuritiesFirmsName string                          `comment:"券商名称"`
+	MergeProportion     float64                         `comment:"合并占比"`
+	RaiProportionTotal  float64                         `comment:"权益研究员占比"`
+	FiccProportionTotal float64                         `comment:"FICC研究员占比"`
+	ProportionTotal     float64                         `comment:"合计总占比"`
+	ListRai             []*EnterScorePermissionListResp //权益列表
+	ListFicc            []*EnterScorePermissionListResp //FICC列表
+	ListGroup           []*EnterScoreGroupListResp      //其他配置信息
+}
+
+// CygxEnterScoreGroup 结构体代表 cygx_enter_score_group 表
+type CygxEnterScoreGroup struct {
+	EnterScoreGroupId int       `orm:"column(enter_score_group_id);pk";comment:"主键"`
+	EnterScoreId      int       `comment:"cygx_enter_score主键"`
+	GroupName         string    `comment:"名称"`
+	Proportion        float64   `comment:"占比"`
+	AdminId           int       `comment:"操作人ID"`
+	AdminName         string    `comment:"操作人姓名"`
+	CreateTime        time.Time `comment:"创建时间"`
+	ModifyTime        time.Time `comment:"更新时间"`
+}
+
+// CygxEnterScorePermission 结构体代表 cygx_enter_score_permission 表
+type CygxEnterScorePermission struct {
+	EnterScorePermissionId int       `orm:"column(enter_score_permission_id);pk";comment:"主键"`
+	EnterScoreId           int       `comment:"cygx_enter_score主键"`
+	ChartPermissionName    string    `comment:"名称"`
+	Proportion             float64   `comment:"占比"`
+	ProductId              float64   `comment:"产品id,1:FICC、2:权益"`
+	AdminId                int       `comment:"操作人ID"`
+	AdminName              string    `comment:"操作人姓名"`
+	CreateTime             time.Time `comment:"创建时间"`
+	ModifyTime             time.Time `comment:"更新时间"`
+}
+
+// CygxEnterScoreResearcher 结构体代表 cygx_enter_score_researcher 表
+type CygxEnterScoreResearcher struct {
+	EnterScoreDataId    int       `orm:"column(enter_score_data_id);pk";comment:"主键"`
+	EnterScoreId        int       `comment:"cygx_enter_score主键"`
+	Proportion          float64   `comment:"占比"`
+	RealName            string    `comment:"研究员姓名"`
+	ChartPermissionName string    `comment:"名称"`
+	ProductId           float64   `comment:"产品id,1:FICC、2:权益"`
+	AdminId             int       `comment:"操作人ID"`
+	AdminName           string    `comment:"操作人姓名"`
+	CreateTime          time.Time `comment:"创建时间"`
+	ModifyTime          time.Time `comment:"更新时间"`
+}
+
+// 更新派点信息
+func AddCygxEnterScore(item *CygxEnterScore, itemsPermission []*CygxEnterScorePermission, itemsResearcher []*CygxEnterScoreResearcher, itemsGroup []*CygxEnterScoreGroup) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+
+	newId, err := to.Insert(item)
+	if err != nil {
+		return
+	}
+	enterScoreId := int(newId)
+
+	for _, v := range itemsPermission {
+		v.EnterScoreId = enterScoreId
+	}
+
+	for _, v := range itemsResearcher {
+		v.EnterScoreId = enterScoreId
+	}
+
+	for _, v := range itemsGroup {
+		v.EnterScoreId = enterScoreId
+	}
+
+	//批量添加行业信息
+	_, err = to.InsertMulti(len(itemsPermission), itemsPermission)
+	if err != nil {
+		return
+	}
+
+	//批量添加研究员信息
+	_, err = to.InsertMulti(len(itemsResearcher), itemsResearcher)
+	if err != nil {
+		return
+	}
+
+	//批量添加自定义分组信息
+	_, err = to.InsertMulti(len(itemsGroup), itemsGroup)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// 更新派点信息
+func UpdateCygxEnterScore(item *CygxEnterScore, itemsPermission []*CygxEnterScorePermission, itemsResearcher []*CygxEnterScoreResearcher, itemsGroup []*CygxEnterScoreGroup) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	to, err := o.Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			_ = to.Rollback()
+		} else {
+			_ = to.Commit()
+		}
+	}()
+
+	_, err = to.Update(item, "CompanyId", "CompanyName", "StartDate", "EndDate", "Quarter", "EnterScoreType", "Ranking", "IsMergeScoring", "SecuritiesFirmsName", "MergeProportion", "RaiProportionTotal", "FiccProportionTotal", "ProportionTotal", "SellerId", "SellerName", "AdminId", "AdminName", "ModifyTime")
+	if err != nil {
+		return
+	}
+	enterScoreId := item.EnterScoreId
+
+	//批量删除行业信息
+	sql := `DELETE FROM cygx_enter_score_permission WHERE enter_score_id = ?`
+	_, err = to.Raw(sql, enterScoreId).Exec()
+	if err != nil {
+		return
+	}
+
+	//批量删除研究员信息
+	sql = `	DELETE FROM cygx_enter_score_researcher WHERE enter_score_id = ?`
+	_, err = to.Raw(sql, enterScoreId).Exec()
+	if err != nil {
+		return
+	}
+
+	//批量删除自定义分组信息
+	sql = `	DELETE FROM cygx_enter_score_group WHERE enter_score_id = ?`
+	_, err = to.Raw(sql, enterScoreId).Exec()
+	if err != nil {
+		return
+	}
+
+	for _, v := range itemsPermission {
+		v.EnterScoreId = enterScoreId
+	}
+
+	for _, v := range itemsResearcher {
+		v.EnterScoreId = enterScoreId
+	}
+
+	for _, v := range itemsGroup {
+		v.EnterScoreId = enterScoreId
+	}
+
+	//批量添加行业信息
+	_, err = to.InsertMulti(len(itemsPermission), itemsPermission)
+	if err != nil {
+		return
+	}
+
+	//批量添加研究员信息
+	_, err = to.InsertMulti(len(itemsResearcher), itemsResearcher)
+	if err != nil {
+		return
+	}
+
+	//批量添加自定义分组信息
+	_, err = to.InsertMulti(len(itemsGroup), itemsGroup)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// 通过ID获取详情
+func GetCygxEnterScoreInfoById(id int) (item *CygxEnterScore, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_enter_score  WHERE enter_score_id = ? `
+	err = o.Raw(sql, id).QueryRow(&item)
+	return
+}
+
+// 行业列表
+func GetCygxEnterScorePermissionListById(enterScoreId int) (items []*CygxEnterScorePermission, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_enter_score_permission WHERE enter_score_id = ? `
+	_, err = o.Raw(sql, enterScoreId).QueryRows(&items)
+	return
+}
+
+// 研究员列表
+func GeCygxEnterScoreResearcherListById(enterScoreId int) (items []*CygxEnterScoreResearcher, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_enter_score_researcher WHERE enter_score_id = ? `
+	_, err = o.Raw(sql, enterScoreId).QueryRows(&items)
+	return
+}
+
+// 研究员列表
+func GeCygxEnterScoreGroupListById(enterScoreId int) (items []*CygxEnterScoreGroup, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_enter_score_group WHERE enter_score_id = ? `
+	_, err = o.Raw(sql, enterScoreId).QueryRows(&items)
+	return
+}

+ 4 - 0
models/db.go

@@ -475,6 +475,10 @@ func initCygx() {
 		new(cygx.CygxOrderRefund),
 		new(cygx.CygxOrder),
 		new(cygx.CygxOrderAction),
+		new(cygx.CygxEnterScore),
+		new(cygx.CygxEnterScoreGroup),
+		new(cygx.CygxEnterScorePermission),
+		new(cygx.CygxEnterScoreResearcher),
 	)
 }
 

+ 10 - 1
routers/commentsRouter.go

@@ -1458,13 +1458,22 @@ func init() {
 
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:EnterScoreController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:EnterScoreController"],
         beego.ControllerComments{
-            Method: "CompanyContracDetail",
+            Method: "EnterScoreDetail",
             Router: `/enterScore/detail`,
             AllowHTTPMethods: []string{"get"},
             MethodParams: param.Make(),
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:EnterScoreController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:EnterScoreController"],
+        beego.ControllerComments{
+            Method: "EnterScoreUpdate",
+            Router: `/enterScore/update`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:IndustrialAnalystController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/cygx:IndustrialAnalystController"],
         beego.ControllerComments{
             Method: "IndustrialAnalystAdd",