浏览代码

Merge branch 'crm/crm_16.6' of http://8.136.199.33:3000/hongze/hz_crm_api into debug

zhangchuanxing 1 月之前
父节点
当前提交
bcbaeeba69

+ 8 - 0
controllers/cygx/user.go

@@ -5849,6 +5849,10 @@ func exportListRsCalendar(this *UserController, list []*cygx.UserInteraction, ex
 	cellF.SetStyle(style)
 	cellF.SetValue("路演形式")
 
+	cellThem := titleRow.AddCell()
+	cellThem.SetStyle(style)
+	cellThem.SetValue("路演主题")
+
 	cellG := titleRow.AddCell()
 	cellG.SetStyle(style)
 	cellG.SetValue("主题标签")
@@ -5889,6 +5893,10 @@ func exportListRsCalendar(this *UserController, list []*cygx.UserInteraction, ex
 			cellFData.Value = "线下"
 		}
 
+		cellThemData := dataRow.AddCell()
+		cellThemData.SetStyle(style)
+		cellThemData.Value = v.RoadShowTheme
+
 		cellGData := dataRow.AddCell()
 		cellGData.SetStyle(style)
 		cellGData.Value = v.LabelKeyWord

+ 139 - 9
controllers/roadshow/company.go

@@ -8,6 +8,7 @@ import (
 	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/services"
 	"hongze/hz_crm_api/utils"
+	"strconv"
 	"strings"
 )
 
@@ -102,6 +103,7 @@ func (this *CalendarController) CompanyDetail() {
 	if englishCompany == 0 {
 		var companyStatus string
 		var permissionName string
+		var viewTotal int
 		companyProductItem, err := company.GetCompanyProductByCompanyIdAndProductId(companyId, productId)
 		if err != nil {
 			if err.Error() == utils.ErrNoRow() {
@@ -121,6 +123,7 @@ func (this *CalendarController) CompanyDetail() {
 			}
 			companyStatus = rsReportRecordItem.CompanyStatus
 			permissionName = rsReportRecordItem.PermissionName
+			viewTotal = rsReportRecordItem.InteractionNum
 		} else {
 			permissionList, err := company.GetCompanyProductReportPermissionList(companyId, productId)
 			if err != nil {
@@ -146,13 +149,7 @@ func (this *CalendarController) CompanyDetail() {
 		detailView.ReportReadTotal = companyProductItem.ViewTotal //ficc报告-累计阅读次数
 
 		if companyType == utils.COMPANY_CLASSIFY_RAI { //权益互动统计
-			companyItem, err := company.GetCompanyById(companyId)
-			if err != nil {
-				br.Msg = "查找客户失败"
-				br.ErrMsg = "查找客户失败,Err:" + err.Error()
-				return
-			}
-			detailView.ReportReadTotal = companyItem.InteractionNum
+			detailView.ReportReadTotal = viewTotal
 		}
 
 		br.Ret = 200
@@ -182,13 +179,13 @@ func (this *CalendarController) CompanyDetail() {
 }
 
 //func init() {
-//	init16_0()
+//	init16_01()
 //}
 
 func init16_0() {
 	var condition string
 	var pars []interface{}
-	condition = ` AND a.company_id > 0  `
+	condition = ` AND a.company_id > 0   AND  a.start_date > '2025-01-01' `
 
 	list, err := roadshow.GetRsReportRecordList(condition, pars)
 	if err != nil {
@@ -206,8 +203,31 @@ func init16_0() {
 		mapcompanyIds[v.CompanyId] = true
 	}
 
+	listCompanyProductFicc, err := company.GetCompanyProductListByCompanyIds(companyIds, 1)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	listCompanyProductRai, err := company.GetCompanyProductListByCompanyIds(companyIds, 2)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+
+	companyMap := make(map[int]*company.CompanyProduct)
+	companyMapRai := make(map[int]*company.CompanyProduct)
+	for _, v := range listCompanyProductFicc {
+		companyMap[v.CompanyId] = v
+	}
+	for _, v := range listCompanyProductRai {
+		companyMapRai[v.CompanyId] = v
+	}
+
 	mapPermissionNameFicc := make(map[int][]string)
 	mapPermissionNameRai := make(map[int][]string)
+	mapPermissionFicc := make(map[int][]*roadshow.RsReportRecordPermission)
+	mapPermissionRai := make(map[int][]*roadshow.RsReportRecordPermission)
 	listPermissionNameFicc, errFicc := company.GetCompanyProductReportPermissionListInit16_0(companyIds, 1) // FICC权限信息
 	if errFicc != nil {
 		err = errFicc
@@ -218,6 +238,9 @@ func init16_0() {
 		if mapPermissionArrFicc[fmt.Sprint(v.CompanyId, v.PermissionName)] || v.PermissionName == "" {
 			continue
 		}
+		if companyMap[v.CompanyId].Status == "正式" && v.Status != "正式" {
+			continue // 正式客户只统计正式权限
+		}
 		mapPermissionNameFicc[v.CompanyId] = append(mapPermissionNameFicc[v.CompanyId], v.PermissionName)
 		mapPermissionArrFicc[fmt.Sprint(v.CompanyId, v.PermissionName)] = true
 	}
@@ -233,10 +256,37 @@ func init16_0() {
 		if mapPermissionArrRai[fmt.Sprint(v.CompanyId, v.PermissionName)] || v.PermissionName == "" {
 			continue
 		}
+		if companyMapRai[v.CompanyId].Status == "正式" && v.Status != "正式" {
+			continue // 正式客户只统计正式权限
+		}
 		mapPermissionNameRai[v.CompanyId] = append(mapPermissionNameRai[v.CompanyId], v.PermissionName)
 		mapPermissionArrRai[fmt.Sprint(v.CompanyId, v.PermissionName)] = true
 	}
 
+	listPermissionFicc, errFicc := roadshow.GetCompanyProductReportPermissionList(companyIds, 1) // FICC权限信息
+	if errFicc != nil {
+		err = errFicc
+		return
+	}
+	for _, v := range listPermissionFicc {
+		if companyMap[v.CompanyId] == nil {
+			continue
+		}
+		mapPermissionFicc[v.CompanyId] = append(mapPermissionFicc[v.CompanyId], v)
+	}
+
+	listPermissionRai, errRai := roadshow.GetCompanyProductReportPermissionList(companyIds, 2) // 权益权限信息
+	if errRai != nil {
+		err = errRai
+		return
+	}
+	for _, v := range listPermissionRai {
+		if companyMapRai[v.CompanyId] == nil {
+			continue
+		}
+		mapPermissionRai[v.CompanyId] = append(mapPermissionRai[v.CompanyId], v)
+	}
+
 	adminAll, err := system.GetAdminList()
 	if err != nil {
 		return
@@ -251,6 +301,8 @@ func init16_0() {
 	}
 
 	var updateItems []*roadshow.RsReportRecord
+	var itemsRs []*roadshow.RsReportRecordPermission
+	mapRsReportRecordPermission := make(map[string]bool) // 一个公司的一场路演,添加了多个研究员只记录一次
 	for _, v := range list {
 		item := new(roadshow.RsReportRecord)
 		item.RsReportRecordId = v.RsReportRecordId
@@ -264,9 +316,87 @@ func init16_0() {
 			}
 		}
 		updateItems = append(updateItems, item)
+
+		if mapRaiSllerId[v.SellerId] {
+			for _, vP := range mapPermissionRai[v.CompanyId] {
+				pKey := strconv.Itoa(v.RsCalendarId) + "_" + strconv.Itoa(vP.ChartPermissionId)
+				if mapRsReportRecordPermission[pKey] {
+					continue
+				}
+				vP.RsCalendarId = v.RsCalendarId
+				itemsRs = append(itemsRs, vP)
+				mapRsReportRecordPermission[pKey] = true
+			}
+		} else {
+			for _, vP := range mapPermissionFicc[v.CompanyId] {
+				pKey := strconv.Itoa(v.RsCalendarId) + "_" + strconv.Itoa(vP.ChartPermissionId)
+				if mapRsReportRecordPermission[pKey] {
+					continue
+				}
+				vP.RsCalendarId = v.RsCalendarId
+				itemsRs = append(itemsRs, vP)
+				mapRsReportRecordPermission[pKey] = true
+			}
+		}
 	}
 	fmt.Println(len(updateItems))
 	err = roadshow.UpdateRsReportRecordPermissionMulti(updateItems)
 	fmt.Println(err)
+	if len(itemsRs) > 0 {
+		err = roadshow.MultiRsReportRecordPermission(itemsRs) // 添加公司当时对应的权限信息
+	}
 	return
 }
+
+func init16_01() {
+	var condition string
+	var pars []interface{}
+	condition = ` AND a.company_id > 0   AND  a.start_date > '2025-01-01' `
+
+	list, err := roadshow.GetRsReportRecordList(condition, pars)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	var companyIds []int
+	mapcompanyIds := make(map[int]bool)
+	for _, v := range list {
+		if mapcompanyIds[v.CompanyId] {
+			continue
+		}
+		companyIds = append(companyIds, v.CompanyId)
+		mapcompanyIds[v.CompanyId] = true
+	}
+	adminAll, err := system.GetAdminList()
+	if err != nil {
+		return
+	}
+	//adminMap := make(map[int]*system.AdminView)
+	mapRaiSllerId := make(map[int]bool) // 是否为权益销售
+	for _, v := range adminAll {
+		if v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
+			mapRaiSllerId[v.AdminId] = true
+		}
+	}
+	listerrCompanyInteractionNum, errCompany := company.GetCompanyListByCompanyId(companyIds) // 权益客户互动信息
+	if errCompany != nil {
+		err = errCompany
+		return
+	}
+	mapInteractionNum := make(map[int]int)
+	for _, v := range listerrCompanyInteractionNum {
+		mapInteractionNum[v.CompanyId] = v.InteractionNum
+	}
+	var updateItems []*roadshow.RsReportRecord
+	for _, v := range list {
+		if mapRaiSllerId[v.SellerId] == true {
+			item := new(roadshow.RsReportRecord)
+			item.RsReportRecordId = v.RsReportRecordId
+			item.InteractionNum = mapInteractionNum[v.CompanyId]
+			updateItems = append(updateItems, item)
+		}
+	}
+	err = roadshow.UpdateRsReportRecordInteractionNumnMulti(updateItems)
+
+	fmt.Println("end", err)
+}

+ 11 - 11
controllers/roadshow/report.go

@@ -137,18 +137,18 @@ func (this *CalendarController) ResearcherReportList() {
 				researcherList = append(researcherList, item)
 			}
 		}
-		for _, vP := range listPermission {
-			for k, v := range mapPermissionUser {
-				if vP.PermissionName != k {
-					continue //统一排序顺序
-				}
-				respItem := new(roadshow.ResearcherGroup)
-				respItem.GroupName = k + "组"
-				respItem.GroupId = mapPermissionId[k]
-				respItem.ResearcherList = v
-				group = append(group, respItem)
-			}
+		//for _, vP := range listPermission {
+		for k, v := range mapPermissionUser {
+			//if vP.PermissionName != k {
+			//	continue //统一排序顺序
+			//}
+			respItem := new(roadshow.ResearcherGroup)
+			respItem.GroupName = k + "组"
+			respItem.GroupId = mapPermissionId[k]
+			respItem.ResearcherList = v
+			group = append(group, respItem)
 		}
+		//}
 	}
 	groupMap := make(map[int][]*roadshow.ResearcherGroup)
 	for _, v := range researcherList {

+ 12 - 0
models/company/company.go

@@ -2001,3 +2001,15 @@ func GetOverseasCompanys() (items []*Company, err error) {
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+// GetCompanyListByCompanyId 根据公司ID获取公司信息
+func GetCompanyListByCompanyId(companyId []int) (items []*Company, err error) {
+	lenArr := len(companyId)
+	if lenArr == 0 {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT interaction_num , company_id  FROM  company AS a WHERE a.company_id IN (` + utils.GetOrmInReplace(lenArr) + `)   `
+	_, err = o.Raw(sql, companyId).QueryRows(&items)
+	return
+}

+ 1 - 0
models/db.go

@@ -388,6 +388,7 @@ func initRoadShow() {
 		new(roadshow.RsCalendarMeetingUser),       //路演参会名单表
 		new(roadshow.RsCalendarMeetingLabelGroup), //路演参会名单关联的标签表
 		new(roadshow.RsCalendarApiLog),            //上海路演三方接口请求记录日志表
+		new(roadshow.RsReportRecordPermission),    //路演公司权限记录
 	)
 }
 

+ 33 - 0
models/roadshow/report_record.go

@@ -33,6 +33,7 @@ type RsReportRecord struct {
 	CreateTime                 time.Time `description:"记录创建时间"`
 	RsCalendarResearcherStatus int       `description:"路演活动状态"`
 	PermissionName             string    `description:"开通品种"`
+	InteractionNum             int       `description:"当时用户总的互动量"`
 }
 
 // RsReportRecordResp 总统计信息
@@ -450,3 +451,35 @@ func UpdateRsReportRecordPermissionMulti(items []*RsReportRecord) (err error) {
 	}
 	return
 }
+
+// UpdateRsReportRecordInteractionNumnMulti 批量修改互动数量
+func UpdateRsReportRecordInteractionNumnMulti(items []*RsReportRecord) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
+	//批量修改
+	p, err := o.Raw("UPDATE rs_report_record SET interaction_num = ?  WHERE rs_report_record_id = ?").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+
+	for _, v := range items {
+		_, err = p.Exec(v.InteractionNum, v.RsReportRecordId)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 40 - 0
models/roadshow/rs_report_record_permission.go

@@ -0,0 +1,40 @@
+package roadshow
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
+	"time"
+)
+
+type RsReportRecordPermission struct {
+	RsReportRecordPermissionId int64     `orm:"column(rs_report_record_permission_id);pk"`
+	CompanyId                  int       `description:"公司id"`
+	ProductId                  int       `description:"产品id"`
+	ProductName                string    `description:"产品名称"`
+	ReportPermissionId         int       `description:"权限id(作废)"`
+	Status                     string    `description:"状态"`
+	CreatedTime                time.Time `description:"创建时间"`
+	ChartPermissionId          int       `description:"大分类ID"`
+	StartDate                  string    `description:"合同开始日期"`
+	EndDate                    string    `description:"合同结束日期"`
+	ModifyTime                 string    `description:"更新时间"`
+	IsUpgrade                  int       `description:"是否升级,1是,0否"`
+	ExpensiveYx                int       `description:"权益研选: 0-3w; 1-5w"`
+	RsCalendarId               int       `description:"路演活动id"`
+	time.Time
+}
+
+// 根据企业用户id和产品id获取所有正式的权限
+func GetCompanyProductReportPermissionList(companyId []int, productId int) (items []*RsReportRecordPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM company_report_permission  WHERE company_id IN (` + utils.GetOrmInReplace(len(companyId)) + `) and product_id=?  `
+	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
+	return
+}
+
+func MultiRsReportRecordPermission(items []*RsReportRecordPermission) (err error) {
+	o := orm.NewOrm()
+	//批量插入
+	_, err = o.InsertMulti(len(items), items)
+	return
+}

+ 3 - 0
models/seal/request/seal_approval.go

@@ -13,6 +13,9 @@ type SealApprovalApplyReq struct {
 	FileUrls          []string `description:"多个文件附件地址"`
 	FileNum           int      `description:"文件份数"`
 	AffiliatedCompany string   `description:"归属公司"`
+	CompanyId         int      `description:"客户id"`
+	StartDate         string   `description:"开始日期"`
+	EndDate           string   `description:"结束日期"`
 }
 
 // 用印审批编辑请求

+ 40 - 20
models/seal/seal.go

@@ -34,6 +34,10 @@ type Seal struct {
 	CreateTime        time.Time `description:"添加时间"`
 	CheckBackFileTime time.Time `description:"签回用印附件时间"`
 	AffiliatedCompany string    `description:"归属公司"`
+	ProductId         int       `description:"产品id,1:ficc;2:权益"`
+	CompanyId         int       `description:"客户id"`
+	StartDate         string    `description:"开始日期"`
+	EndDate           string    `description:"结束日期"`
 }
 
 var EnumUse = []string{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议", "代付合同", "总对总协议"}
@@ -110,6 +114,21 @@ func GetSealCode() (code string, err error) {
 	return
 }
 
+// GetSealCodeRai 生成权益合同编号
+func GetSealCodeRai() (code string, err error) {
+	var num int
+	o := orm.NewOrm()
+	today := utils.GetToday(utils.FormatDate)
+	sql := `SELECT COUNT(1) AS num FROM seal where create_time>=?`
+	err = o.Raw(sql, today).QueryRow(&num)
+	if err != nil {
+		return
+	}
+
+	code = "HZEQ" + time.Now().Format("20060102") + fmt.Sprintf("%03d", num)
+	return
+}
+
 type CompanyNameList struct {
 	CompanyName string `description:"客户名称,甲方名称,长度32位"`
 }
@@ -159,25 +178,25 @@ func GetList(condition string, pars []interface{}, startSize, pageSize int) (lis
 }
 
 type SealApprovalItem struct {
-	ContractApprovalId       int `description:"审批单ID"`
-	ContractId               int `description:"合同ID"`
-	ContractApprovalRecordId int `description:"审批流ID"`
-	//ContractCode             string                  `description:"合同编号"`
-	Use            string                  `description:"用印用途,枚举值:'销售合同','渠道合同','付款通知函','招投标','战略合作协议'"`
-	ContractType   string                  `description:"合同类型,枚举值:'新签合同','续约合同','补充协议','代付合同'"`
-	Status         string                  `description:"合同状态,枚举值:待审批','已审批','已驳回','已撤回','已签回',默认待审批"`
-	ApproveStatus  string                  `json:"-" description:"审批单状态,枚举值:待审批','已审批','已驳回','已撤回',默认待审批"`
-	ApplyContent   string                  `description:"申请内容"`
-	ApplyUserId    int                     `description:"申请人ID"`
-	ApplyUserName  string                  `description:"申请人名称"`
-	ContractDetail string                  `json:"-" description:"提交审批时的合同信息;用印快照"`
-	ContractInfo   contract.ContractDetail `json:"-" description:"提交审批时的合同信息;用印快照"`
-	ApproveRemark  string                  `description:"审核备注"`
-	SealType       string                  `description:"用印类型"`
-	CompanyName    string                  `description:"客户名称"`
-	FileUrl        string                  `description:"合同下载地址"`
-	CurrNodeId     int                     `description:"当前审批节点id"`
-	StartNodeId    int                     `description:"开始审批节点id"`
+	ContractApprovalId       int                     `description:"审批单ID"`
+	ContractId               int                     `description:"合同ID"`
+	ContractApprovalRecordId int                     `description:"审批流ID"`
+	Code                     string                  `description:"合同编号"`
+	Use                      string                  `description:"用印用途,枚举值:'销售合同','渠道合同','付款通知函','招投标','战略合作协议'"`
+	ContractType             string                  `description:"合同类型,枚举值:'新签合同','续约合同','补充协议','代付合同'"`
+	Status                   string                  `description:"合同状态,枚举值:待审批','已审批','已驳回','已撤回','已签回',默认待审批"`
+	ApproveStatus            string                  `json:"-" description:"审批单状态,枚举值:待审批','已审批','已驳回','已撤回',默认待审批"`
+	ApplyContent             string                  `description:"申请内容"`
+	ApplyUserId              int                     `description:"申请人ID"`
+	ApplyUserName            string                  `description:"申请人名称"`
+	ContractDetail           string                  `json:"-" description:"提交审批时的合同信息;用印快照"`
+	ContractInfo             contract.ContractDetail `json:"-" description:"提交审批时的合同信息;用印快照"`
+	ApproveRemark            string                  `description:"审核备注"`
+	SealType                 string                  `description:"用印类型"`
+	CompanyName              string                  `description:"客户名称"`
+	FileUrl                  string                  `description:"合同下载地址"`
+	CurrNodeId               int                     `description:"当前审批节点id"`
+	StartNodeId              int                     `description:"开始审批节点id"`
 	//UserId                   int                     `description:"申请人id"`
 	//UserName                 string                  `description:"申请人名称"`
 	SealId               int       `description:"用印审批ID"`
@@ -195,13 +214,14 @@ type SealApprovalItem struct {
 	CheckBackFileTimeStr string    `description:"签回用印附件时间(字符串)"`
 	ContractCode         string    `description:"合同编码"`
 	AffiliatedCompany    string    `description:"归属公司"`
+	ProductId            int       `description:"产品id,1:ficc;2:权益"`
 }
 
 // GetSealApprovalListByWhere 获取用印审批列表-分页
 func GetSealApprovalListByWhere(condition, joinCondition string, pars []interface{}, startSize, pageSize int) (list []*SealApprovalItem, total int, err error) {
 	o := orm.NewOrm()
 	fields := `a.contract_approval_id,c.contract_id,a.apply_content,a.approve_remark,a.apply_user_id,a.apply_user_name,a.curr_node_id,a.start_node_id,c.create_time,a.modify_time,a.status approval_status,
-			   c.status,c.seal_id,c.seal_type,c.service_type contract_type,c.use,c.company_name,c.file_url,c.approve_time,c.invalid_time,c.code,c.credit_code,c.check_back_file_time,c.check_back_file_url,c.affiliated_company `
+			   c.status,c.seal_id,c.seal_type,c.service_type contract_type,c.use,c.company_name,c.file_url,c.approve_time,c.invalid_time,c.code,c.credit_code,c.check_back_file_time,c.check_back_file_url,c.product_id,c.affiliated_company `
 	sql := `SELECT ` + fields + ` from contract_approval a JOIN ( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 and approval_type = "seal" `
 	sql += ` GROUP BY contract_id ) b on a.contract_approval_id=b.max_id
 	JOIN seal c ON c.seal_id = a.contract_id 

+ 48 - 21
services/seal/seal.go

@@ -123,7 +123,7 @@ func ApplySeal(sysUser *system.Admin, req request.SealApprovalApplyReq) (err err
 	}()
 
 	// 添加用印
-	sealInfo, err := addSeal(sysUser.AdminId, req.ContractId, req.FileNum, sysUser.RealName, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrls, req.AffiliatedCompany)
+	sealInfo, err := addSeal(sysUser.AdminId, req.ContractId, req.FileNum, req.CompanyId, sysUser.RealName, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrls, req.AffiliatedCompany, req.StartDate, req.EndDate)
 	if err != nil {
 		return
 	}
@@ -140,7 +140,7 @@ func ApplySeal(sysUser *system.Admin, req request.SealApprovalApplyReq) (err err
 }
 
 // addSeal 新增用印
-func addSeal(userId, contractId, fileNum int, userName, use, companyName, useCompanyName, creditCode, serviceType, sealType, remark string, fileUrls []string, affiliatedCompany string) (sealInfo *seal.Seal, err error) {
+func addSeal(userId, contractId, fileNum, companyId int, userName, use, companyName, useCompanyName, creditCode, serviceType, sealType, remark string, fileUrls []string, affiliatedCompany, startDate, endDate string) (sealInfo *seal.Seal, err error) {
 	if !strings.Contains(strings.Join(seal.EnumUse, ","), use) {
 		err = errors.New("用印用途异常")
 		return
@@ -149,8 +149,27 @@ func addSeal(userId, contractId, fileNum int, userName, use, companyName, useCom
 		err = errors.New("业务类型异常")
 		return
 	}
+	adminAll, err := system.GetAdminList()
+	if err != nil {
+		return
+	}
+	//adminMap := make(map[int]*system.AdminView)
+	mapRaiSllerId := make(map[int]bool) // 是否为权益销售
+	for _, v := range adminAll {
+		//adminMap[v.AdminId] = v
+		if v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP || v.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN {
+			mapRaiSllerId[v.AdminId] = true
+		}
+	}
 
-	sealCode, err := seal.GetSealCode()
+	var sealCode string
+	var productId int
+	if mapRaiSllerId[userId] {
+		sealCode, err = seal.GetSealCodeRai()
+		productId = utils.COMPANY_PRODUCT_RAI_ID
+	} else {
+		sealCode, err = seal.GetSealCode()
+	}
 	if err != nil {
 		return
 	}
@@ -161,24 +180,29 @@ func addSeal(userId, contractId, fileNum int, userName, use, companyName, useCom
 		fileUrl = fileUrls[0]
 	}
 	sealInfo = &seal.Seal{
-		Code:           sealCode,
-		UserId:         userId,
-		UserName:       userName,
-		Use:            use,
-		CompanyName:    companyName,
-		UseCompanyName: useCompanyName,
-		CreditCode:     creditCode,
-		ServiceType:    serviceType,
-		SealType:       sealType,
-		Status:         "待提交",
-		Remark:         remark,
-		FileUrl:        fileUrl,
-		FileNum:        fileNum,
-		ContractId:     contractId,
-		ModifyTime:     now,
-		CreateTime:     now,
-		AffiliatedCompany:  affiliatedCompany,
+		Code:              sealCode,
+		UserId:            userId,
+		UserName:          userName,
+		Use:               use,
+		CompanyName:       companyName,
+		UseCompanyName:    useCompanyName,
+		CreditCode:        creditCode,
+		ServiceType:       serviceType,
+		SealType:          sealType,
+		Status:            "待提交",
+		Remark:            remark,
+		FileUrl:           fileUrl,
+		FileNum:           fileNum,
+		ContractId:        contractId,
+		ModifyTime:        now,
+		CreateTime:        now,
+		AffiliatedCompany: affiliatedCompany,
+		ProductId:         productId,
+		CompanyId:         companyId,
+		StartDate:         startDate,
+		EndDate:           endDate,
 	}
+
 	err = seal.AddSeal(sealInfo)
 	if err != nil {
 		return
@@ -586,10 +610,13 @@ func GetSealApprovalPageList(condition, joinCondition string, pars []interface{}
 					}*/
 				}
 			}
-
 			// 合同编码
 			if selfContract, has := selfContractMap[item.ContractId]; has {
 				list[i].ContractCode = selfContract.ContractCode
+			} else {
+				if item.ProductId == utils.COMPANY_PRODUCT_RAI_ID {
+					list[i].ContractCode = item.Code
+				}
 			}
 
 			// 取出item对应approval_id的审批流