hsun 2 years ago
parent
commit
e8d5a4c063

+ 3 - 2
controller/contract/register.go

@@ -131,8 +131,8 @@ func (rg *RegisterController) List(c *gin.Context) {
 	respList := make([]*fms.ContractRegisterList, 0)
 	for i := range list {
 		v := new(fms.ContractRegisterList)
-		list[i].ServicesName = serviceMap[list[i].ContractRegisterId]
 		v.ContractRegisterItem = *list[i]
+		v.ServicesName = serviceMap[list[i].ContractRegisterId]
 		v.InvoiceList = invoiceMap[list[i].ContractRegisterId]
 		v.PaymentList = paymentMap[list[i].ContractRegisterId]
 		respList = append(respList, v)
@@ -203,6 +203,7 @@ func (rg *RegisterController) Add(c *gin.Context) {
 	ob.CrmContractId = req.CrmContractId
 	ob.ContractSource = req.ContractSource
 	ob.CompanyName = req.CompanyName
+	ob.ProductId = req.ProductId
 	ob.SellerId = req.SellerId
 	ob.SellerName = req.SellerName
 	ob.ContractType = req.ContractType
@@ -345,7 +346,7 @@ func (rg *RegisterController) Edit(c *gin.Context) {
 	}
 
 	// 更新合同及套餐
-	if e = fms.UpdateContractRegisterAndServices(ob, updateCols, serviceList); e != nil {
+	if e = fms.UpdateContractRegisterAndServices(item, updateCols, serviceList); e != nil {
 		resp.FailMsg("操作失败", "更新合同及套餐失败, Err: "+e.Error(), c)
 		return
 	}

+ 26 - 9
controller/contract/service.go

@@ -14,7 +14,7 @@ type ServiceController struct{}
 // ServiceList
 // @Title 合同套餐列表
 // @Description 合同套餐列表
-// @Param   ProductId  query  int  false  "品种类型: 1-FICC(默认); 2-权益"
+// @Param   ProductId  query  int  false  "套餐类型: 1-FICC(默认); 2-权益"
 // @Success 200 {object} crm.ContractSearchListResp
 // @router /contract/service/list [get]
 func (sr *ServiceController) List(c *gin.Context) {
@@ -29,8 +29,8 @@ func (sr *ServiceController) List(c *gin.Context) {
 		return
 	}
 
-	productId := 0
-	if req.ProductId == 0 {
+	productId := req.ProductId
+	if productId == 0 {
 		productId = 1
 	}
 
@@ -39,35 +39,52 @@ func (sr *ServiceController) List(c *gin.Context) {
 		resp.FailData("获取失败", "获取产品套餐失败, Err: "+e.Error(), c)
 		return
 	}
+	respList := make([]*fms.ContractServiceTemplateMapItems, 0)
 	for i := 0; i < len(list); i++ {
-		secList, e := fms.GetContractServiceTemplateMapByParentId(list[i].ServiceTemplateId)
+		v := new(fms.ContractServiceTemplateMapItems)
+		v.ContractServiceTemplateItem = *list[i]
+
+		secFormatList := make([]*fms.ContractServiceTemplateMapItems, 0)
+		secList, e := fms.GetContractServiceTemplateMapByParentId(v.ServiceTemplateId)
 		if e != nil {
 			resp.FailData("获取失败", "Err:"+e.Error(), c)
 			return
 		}
 		secondLen := len(secList)
 		for j := 0; j < secondLen; j++ {
+			sec := new(fms.ContractServiceTemplateMapItems)
+			sec.ContractServiceTemplateItem = *secList[j]
 			detail, e := fms.GetContractServiceDetailByTemplateId(secList[j].ServiceTemplateId)
 			if e != nil {
 				resp.FailData("获取失败", "获取详情模板失败, Err:"+e.Error(), c)
 				return
 			}
-			secList[j].Detail = detail
+			sec.Detail = detail
+
 			// 权益存在第三级主客观套餐
+			thirdFormatList := make([]*fms.ContractServiceTemplateMapItems, 0)
 			thirdList, e := fms.GetContractServiceTemplateMapByParentId(secList[j].ServiceTemplateId)
 			if e != nil {
 				resp.FailData("获取失败", "获取三级套餐失败, Err:"+e.Error(), c)
 				return
 			}
-			secList[j].Children = thirdList
+			for t := range thirdList {
+				tf := new(fms.ContractServiceTemplateMapItems)
+				tf.ContractServiceTemplateItem = *thirdList[t]
+				thirdFormatList = append(thirdFormatList, tf)
+			}
+			sec.Children = thirdFormatList
+			secFormatList = append(secFormatList, sec)
 		}
+
 		detail, e := fms.GetContractServiceDetailByTemplateId(list[i].ServiceTemplateId)
 		if e != nil {
 			resp.FailData("获取失败", "获取详情模板失败, Err:"+e.Error(), c)
 			return
 		}
-		list[i].Detail = detail
-		list[i].Children = secList
+		v.Detail = detail
+		v.Children = secFormatList
+		respList = append(respList, v)
 	}
-	resp.OkData("获取成功", list, c)
+	resp.OkData("获取成功", respList, c)
 }

+ 3 - 2
controller/crm/contract.go

@@ -121,8 +121,9 @@ func (rg *ContractController) PermissionList(c *gin.Context) {
 		resp.FailData("参数解析失败", err.Translate(global.Trans), c)
 		return
 	}
-	productId := 0
-	if req.ProductId == 0 {
+	// 默认FICC
+	productId := req.ProductId
+	if productId == 0 {
 		productId = 1
 	}
 	respList := new(crm.PermissionSetResp)

+ 1 - 0
go.mod

@@ -22,6 +22,7 @@ require (
 	github.com/olivere/elastic/v7 v7.0.31
 	github.com/op/go-logging v0.0.0-20160315200505-970db520ece7
 	github.com/rdlucklib/rdluck_tools v1.0.3
+	github.com/shopspring/decimal v1.2.0
 	github.com/spf13/viper v1.9.0
 	github.com/swaggo/gin-swagger v1.3.3
 	github.com/swaggo/swag v1.7.4

+ 34 - 29
models/crm/chart_permission.go

@@ -7,25 +7,29 @@ import (
 
 // ChartPermission CRM系统-权限表
 type ChartPermission struct {
-	ChartPermissionId   int       `gorm:"primaryKey;column:chart_permission_id" description:"权限ID"`
-	ChartPermissionName string    `description:"名称"`
-	PermissionName      string    `description:"权限名"`
-	Sort                int       `description:"排序"`
-	Enabled             int       `description:"是否可用"`
-	CreatedTime         time.Time `description:"创建时间"`
-	LastUpdatedTime     time.Time `description:"更新时间"`
-	TeleconferenceSort  int       `description:"电话会类型排序"`
-	Remark              string    `description:"备注"`
-	ClassifyName        string    `description:"分类名称"`
-	ProductName         string    `description:"产品名称"`
-	ProductID           int       `description:"产品ID"`
-	ImageURL            string    `description:"图片地址"`
-	ShowType            int       `description:"1:查研观向小程序展示"`
-	IsOther             int       `description:"是否是其他,用于查研观向小程序后台展示"`
-	IsReport            int       `description:"是否是报告,用于查研观向小程序前台报告展示"`
-	CygxAuth            int       `description:"是否是权限,用于查研观向小程序前台权限校验"`
-	YbImgUrl            string    `description:"研报小程序报告列表icon"`
-	PriceDrivenState    int       `description:"品种价格驱动开启状态 0-关闭 1-开启"`
+	ChartPermissionId   int       `gorm:"primaryKey;column:chart_permission_id" json:"chart_permission_id" description:"权限ID"`
+	ChartPermissionName string    `gorm:"column:chart_permission_name" json:"chart_permission_name" description:"名称"`
+	PermissionName      string    `gorm:"column:permission_name" json:"permission_name" description:"权限名"`
+	Sort                int       `gorm:"column:sort" json:"sort" description:"排序"`
+	Enabled             int       `gorm:"column:enabled" json:"enabled" description:"是否可用"`
+	CreatedTime         time.Time `gorm:"column:created_time" json:"created_time" description:"创建时间"`
+	LastUpdatedTime     time.Time `gorm:"column:last_updated_time" json:"last_updated_time" description:"更新时间"`
+	TeleconferenceSort  int       `gorm:"column:teleconference_sort" json:"teleconference_sort" description:"电话会类型排序"`
+	Remark              string    `gorm:"column:remark" json:"remark" description:"备注"`
+	ClassifyName        string    `gorm:"column:classify_name" json:"classify_name" description:"分类名称"`
+	ProductName         string    `gorm:"column:product_name" json:"product_name" description:"产品名称"`
+	ProductID           int       `gorm:"column:product_id" json:"product_id" description:"产品ID"`
+	ImageURL            string    `gorm:"column:image_url" json:"image_url" description:"图片地址"`
+	ShowType            int       `gorm:"column:show_type" json:"show_type" description:"1:查研观向小程序展示"`
+	IsOther             int       `gorm:"column:is_other" json:"is_other" description:"是否是其他,用于查研观向小程序后台展示"`
+	IsReport            int       `gorm:"column:is_report" json:"is_report" description:"是否是报告,用于查研观向小程序前台报告展示"`
+	CygxAuth            int       `gorm:"column:cygx_auth" json:"cygx_auth" description:"是否是权限,用于查研观向小程序前台权限校验"`
+	YbImgUrl            string    `gorm:"column:yb_img_url" json:"yb_img_url" description:"研报小程序报告列表icon"`
+	PriceDrivenState    int       `gorm:"column:price_driven_state" json:"price_driven_state" description:"品种价格驱动开启状态 0-关闭 1-开启"`
+}
+
+func (cp *ChartPermission) TableName() string {
+	return "chart_permission"
 }
 
 type PermissionSetResp struct {
@@ -33,22 +37,23 @@ type PermissionSetResp struct {
 }
 
 type PermissionSetList struct {
-	ClassifyName string `description:"分类"`
-	Items        []*PermissionSetItem
-	CheckList    []int
+	ClassifyName string               `json:"classify_name" description:"分类"`
+	Items        []*PermissionSetItem `json:"items"`
+	CheckList    []int                `json:"check_list"`
 }
 
 type PermissionSetItem struct {
-	ChartPermissionId int    `description:"权限id"`
-	PermissionName    string `description:"权限名称"`
-	PermissionType    int    `description:"1主观,2客观"`
-	Checked           bool   `description:"选中状态"`
-	ClassifyName      string `description:"分类名称"`
+	ChartPermissionId int    `json:"chart_permission_id" description:"权限id"`
+	PermissionName    string `json:"permission_name" description:"权限名称"`
+	PermissionType    int    `json:"permission_type" description:"1主观,2客观"`
+	Checked           bool   `json:"checked" description:"选中状态"`
+	ClassifyName      string `json:"classify_name" description:"分类名称"`
 }
 
 func GetPermissionSetItemsByCondition(condition string, pars []interface{}) (items []*PermissionSetItem, err error) {
 	items = make([]*PermissionSetItem, 0)
-	err = global.MYSQL["report"].Model(ChartPermission{}).
+	err = global.MYSQL["report"].
+		Table("chart_permission").
 		Where(condition, pars...).
 		Order("sort ASC").
 		Find(&items).Error
@@ -57,5 +62,5 @@ func GetPermissionSetItemsByCondition(condition string, pars []interface{}) (ite
 
 // ContractPermissionListReq CRM系统合同权限-列表请求体
 type ContractPermissionListReq struct {
-	ProductId int `json:"product_id" form:"product_id" binding:"omitempty" description:"产品: 1-FICC; 2-权益"`
+	ProductId int `json:"product_id" form:"product_id" description:"产品: 1-FICC; 2-权益"`
 }

+ 3 - 3
models/crm/company_seller.go

@@ -9,9 +9,9 @@ type CompanySellerListReq struct {
 
 // CompanySellerList 销售列表
 type CompanySellerList struct {
-	AdminId   int    `description:"系统用户ID"`
-	AdminName string `description:"系统用户名称"`
-	RealName  string `description:"用户真实名称"`
+	AdminId   int    `json:"admin_id" description:"系统用户ID"`
+	AdminName string `json:"admin_name" description:"系统用户名称"`
+	RealName  string `json:"real_name" description:"用户真实名称"`
 }
 
 // GetCompanySellerByRoleCodes 通过系统用户角色码获取销售

+ 7 - 3
models/crm/contract.go

@@ -50,9 +50,13 @@ type Contract struct {
 	CreateTime           time.Time `description:"合同添加时间"`
 }
 
+func (c *Contract) TableName() string {
+	return "contract"
+}
+
 func (c *Contract) PageList(page base.IPage, condition string, pars []interface{}) (count int64, results []*Contract, err error) {
 	results = make([]*Contract, 0)
-	query := global.MYSQL["report"].Model(c).
+	query := global.MYSQL["report"].Model(Contract{}).
 		Where("is_delete = 0").
 		Where(condition, pars...)
 	query.Count(&count)
@@ -66,7 +70,7 @@ func (c *Contract) PageList(page base.IPage, condition string, pars []interface{
 // ContractSearchListReq CRM系统合同-搜索列表请求体
 type ContractSearchListReq struct {
 	Keyword   string `json:"keyword" form:"keyword" binding:"omitempty" description:"关键词"`
-	ProductId int    `json:"product_id" form:"product_id" binding:"omitempty" description:"产品: 0-全部; 1-FICC; 2-权益"`
+	ProductId int    `json:"product_id" form:"product_id" description:"产品: 0-全部; 1-FICC; 2-权益"`
 	base.PageReq
 }
 
@@ -76,7 +80,7 @@ type ContractSearchListResp struct {
 	ContractCode    string  `json:"contract_code" description:"合同编号"`
 	ProductId       int     `json:"product_id" description:"产品ID"`
 	CompanyName     string  `json:"company_name" description:"客户名称"`
-	PayCompanyName  string  `json:"Pay_company_name" description:"代付客户名称"`
+	PayCompanyName  string  `json:"pay_company_name" description:"代付客户名称"`
 	SellerId        int     `json:"seller_id" description:"销售ID"`
 	SellerName      string  `json:"seller_name" description:"销售名称"`
 	ContractTypeKey int     `json:"contract_type_key" description:"FMS合同类型: 1-新签; 2-续约; 0-补充协议(暂无);"`

+ 8 - 7
models/fms/contract_invoice.go

@@ -20,6 +20,10 @@ type ContractInvoice struct {
 	base.TimeBase
 }
 
+func (c *ContractInvoice) TableName() string {
+	return "contract_invoice"
+}
+
 // ContractInvoiceItem 合同开票/到款
 type ContractInvoiceItem struct {
 	ContractInvoiceId  int     `gorm:"column:contract_invoice_id" json:"contract_invoice_id" description:"开票ID"`
@@ -31,10 +35,6 @@ type ContractInvoiceItem struct {
 	CreateTime         string  `gorm:"column:create_time" json:"create_time" description:"创建时间"`
 }
 
-func (c *ContractInvoice) TableName() string {
-	return "contract_register"
-}
-
 func (c *ContractInvoice) Create() (err error) {
 	err = global.DEFAULT_MYSQL.Create(c).Error
 	return
@@ -100,13 +100,14 @@ func (c *ContractInvoice) DeleteAndCreateNewInvoice(contractRegisterId, invoiceT
 
 // ContractInvoiceSaveReq 合同开票-请求体
 type ContractInvoiceSaveReq struct {
-	ContractRegisterId int `json:"contract_register_id" binding:"required,gte=1" description:"登记ID"`
-	InvoiceType        int `json:"invoice_type" binding:"oneof=1 2" description:"类型: 1-开票登记; 2-到款登记"`
-	AmountList         []*ContractInvoiceSaveItem
+	ContractRegisterId int                        `json:"contract_register_id" binding:"required,gte=1" description:"登记ID"`
+	InvoiceType        int                        `json:"invoice_type" binding:"oneof=1 2" description:"类型: 1-开票登记; 2-到款登记"`
+	AmountList         []*ContractInvoiceSaveItem `json:"amount_list"`
 }
 
 // ContractInvoiceSaveReq 合同开票数据
 type ContractInvoiceSaveItem struct {
+	InvoiceId   int     `json:"invoice_id" description:"开票ID"`
 	Amount      float64 `json:"amount" description:"开票金额/到款金额"`
 	InvoiceDate string  `json:"invoice_date" description:"开票日期/到款月"`
 }

+ 9 - 8
models/fms/contract_register.go

@@ -15,7 +15,7 @@ type ContractRegister struct {
 	CompanyName        string    `gorm:"column:company_name" json:"company_name" description:"客户名称"`
 	ProductId          int       `gorm:"column:product_id" json:"product_id" description:"产品ID: 1-FICC; 2-权益"`
 	SellerId           int       `gorm:"column:seller_id" json:"seller_id" description:"CRM系统-销售ID"`
-	SellerName         int       `gorm:"column:seller_name" json:"seller_name" description:"CRM系统-销售名称"`
+	SellerName         string    `gorm:"column:seller_name" json:"seller_name" description:"CRM系统-销售名称"`
 	ContractType       int       `gorm:"column:contract_type" json:"contract_type" description:"合同类型: 1-新签; 2-续约"`
 	ContractAmount     float64   `gorm:"column:contract_amount" json:"contract_amount" description:"合同金额"`
 	InvoicedAmount     float64   `gorm:"column:invoiced_amount" json:"invoiced_amount" description:"开票金额"`
@@ -102,7 +102,7 @@ type ContractRegisterItem struct {
 	ContractCode       string  `json:"contract_code" description:"合同编号"`
 	CompanyName        string  `json:"company_name" description:"客户名称"`
 	SellerId           int     `json:"seller_id" description:"CRM系统-销售ID"`
-	SellerName         int     `json:"seller_name" description:"CRM系统-销售名称"`
+	SellerName         string  `json:"seller_name" description:"CRM系统-销售名称"`
 	ContractType       int     `json:"contract_type" description:"合同类型: 1-新签; 2-续约"`
 	ContractAmount     float64 `json:"contract_amount" description:"合同金额"`
 	InvoicedAmount     float64 `json:"invoiced_amount" description:"开票金额"`
@@ -115,14 +115,14 @@ type ContractRegisterItem struct {
 	RegisterStatus     int     `json:"register_status" description:"登记状态: 1-进行中; 2-已完成;"`
 	Remark             string  `json:"remark" description:"备注信息"`
 	CreateTime         string  `json:"create_time" description:"登记时间"`
-	ServicesName       string  `json:"services" description:"套餐名称"`
 }
 
 // ContractRegisterList 合同登记列表
 type ContractRegisterList struct {
 	ContractRegisterItem
-	InvoiceList []*ContractInvoiceItem `json:"invoice_list" description:"开票信息"`
-	PaymentList []*ContractInvoiceItem `json:"payment_list" description:"到款信息"`
+	ServicesName string                 `json:"services" description:"套餐名称"`
+	InvoiceList  []*ContractInvoiceItem `json:"invoice_list" description:"开票信息"`
+	PaymentList  []*ContractInvoiceItem `json:"payment_list" description:"到款信息"`
 }
 
 // ContractRegisterDelReq 合同登记-删除请求体
@@ -143,7 +143,7 @@ type ContractRegisterAddReq struct {
 	ContractSource int                     `json:"contract_source" binding:"oneof=0 1" description:"合同来源: 0-非系统合同导入; 1-CRM合同导入"`
 	CompanyName    string                  `json:"company_name" binding:"required" description:"客户名称"`
 	SellerId       int                     `json:"seller_id" binding:"required" description:"CRM系统-销售ID"`
-	SellerName     int                     `json:"seller_name" binding:"required" description:"CRM系统-销售名称"`
+	SellerName     string                  `json:"seller_name" binding:"required" description:"CRM系统-销售名称"`
 	ContractType   int                     `json:"contract_type" binding:"oneof=1 2" description:"合同类型: 1-新签; 2-续约"`
 	ContractAmount float64                 `json:"contract_amount" binding:"required" description:"合同金额"`
 	StartDate      string                  `json:"start_date" binding:"required" description:"合同开始日期"`
@@ -152,7 +152,7 @@ type ContractRegisterAddReq struct {
 	AgreedPayTime  string                  `json:"agreed_pay_time" binding:"required" description:"约定付款时间(如:生效日起10日内)"`
 	ContractStatus int                     `json:"contract_status" binding:"oneof=1 2 3" description:"合同状态: 1-已审批; 2-单章寄出; 3-已签回"`
 	Remark         string                  `json:"remark" description:"备注信息"`
-	ProductId      int                     `json:"remark" binding:"oneof=1 2" description:"产品ID"`
+	ProductId      int                     `json:"product_id" binding:"oneof=1 2" description:"产品ID"`
 	Services       []ContractServiceAddReq `json:"services" description:"服务套餐内容"`
 }
 
@@ -220,6 +220,7 @@ func UpdateContractRegisterAndServices(item *ContractRegister, updateCols []stri
 
 	// 更新合同登记
 	if e := item.Update(updateCols); e != nil {
+		err = e
 		return
 	}
 
@@ -286,7 +287,7 @@ func GetContractRegisterItemById(id int) (item *ContractRegisterItem, err error)
 // GetContractRegisterItemPageList 获取合同登记列表-分页
 func GetContractRegisterItemPageList(page base.IPage, condition string, pars []interface{}) (count int64, results []*ContractRegisterItem, err error) {
 	results = make([]*ContractRegisterItem, 0)
-	query := global.DEFAULT_MYSQL.Model(ContractRegister{}).
+	query := global.DEFAULT_MYSQL.Table("contract_register").
 		Where("is_deleted = 0").
 		Where(condition, pars...)
 	query.Count(&count)

+ 14 - 10
models/fms/contract_service.go

@@ -19,6 +19,10 @@ type ContractService struct {
 	base.TimeBase
 }
 
+func (c *ContractService) TableName() string {
+	return "contract_service"
+}
+
 func (c *ContractService) List(condition string, pars []interface{}) (list []*ContractService, err error) {
 	list = make([]*ContractService, 0)
 	err = global.DEFAULT_MYSQL.Model(c).
@@ -37,16 +41,16 @@ type ContractServiceAddReq struct {
 
 // ContractServiceAndDetail 合同的服务内容
 type ContractServiceAndDetail struct {
-	ContractServiceId int    `description:"合同服务ID"`
-	ContractId        int    `description:"合同id"`
-	ProductId         int    `description:"产品id,1:ficc;2:权益"`
-	ServiceTemplateId int    `description:"合同服务模板id"`
-	Title             string `description:"套餐标题"`
-	Value             string `description:"套餐的值"`
-	HasDetail         string `description:"是否有详情,枚举值:是、否;默认:否"`
-	TableValue        string `description:"表格数据,用于word生成时的json数据"`
-	ChartPermissionId int    `description:"权限id"`
-	DetailList        []*ContractServiceDetail
+	ContractServiceId int                      `json:"contract_service_id" description:"合同服务ID"`
+	ContractId        int                      `json:"contract_id" description:"合同id"`
+	ProductId         int                      `json:"product_id" description:"产品id,1:ficc;2:权益"`
+	ServiceTemplateId int                      `json:"service_template_id" description:"合同服务模板id"`
+	Title             string                   `json:"title" description:"套餐标题"`
+	Value             string                   `json:"value" description:"套餐的值"`
+	HasDetail         string                   `json:"has_detail" description:"是否有详情,枚举值:是、否;默认:否"`
+	TableValue        string                   `json:"table_value" description:"表格数据,用于word生成时的json数据"`
+	ChartPermissionId int                      `json:"chart_permission_id" description:"权限id"`
+	DetailList        []*ContractServiceDetail `json:"detail_list"`
 }
 
 // GetContractServiceAndDetailList 根据id获取合同列表数据

+ 5 - 1
models/fms/contract_service_detail.go

@@ -18,7 +18,11 @@ type ContractServiceDetail struct {
 	Col5               string    `gorm:"column:col_5" json:"col_5" description:"第5列数据"`
 	Col6               string    `gorm:"column:col_6" json:"col_6" description:"第6列数据"`
 	Col7               string    `gorm:"column:col_7" json:"col_7" description:"第7列数据"`
-	CreateTime         time.Time `gorm:"column:create_time" description:"创建时间"`
+	CreateTime         time.Time `gorm:"column:create_time" json:"create_time" description:"创建时间"`
+}
+
+func (cs *ContractServiceDetail) TableName() string {
+	return "contract_service_detail"
 }
 
 // GetContractServiceDetailByTemplateId 根据服务模板ID获取对应的套餐表格数据详情

+ 52 - 30
models/fms/contract_service_template.go

@@ -7,49 +7,71 @@ import (
 
 // ContractServiceTemplate 合同服务模板表
 type ContractServiceTemplate struct {
-	ServiceTemplateId int       `gorm:"primaryKey;column:service_template_id"`
-	ProductId         string    `description:"产品id"`
-	Pid               int       `description:"父级id"`
-	Title             string    `description:"套餐名称"`
-	Value             string    `description:"对应的数据"`
-	SelectType        string    `description:"选择器类型,单选还是多选,radio;单选:checkbox"`
-	SelectName        string    `description:"选择器名称"`
-	TableValue        string    `description:"表格数据,用于word生成时的json数据"`
-	Remark            string    `description:"表头备注"`
-	ChartPermissionId int       `description:"权限id"`
-	CreateTime        time.Time `description:"创建时间"`
-	ModifyTime        time.Time `description:"修改时间"`
+	ServiceTemplateId int       `gorm:"primaryKey;column:service_template_id" json:"service_template_id"`
+	ProductId         string    `gorm:"column:product_id" json:"product_id" description:"产品id"`
+	Pid               int       `gorm:"column:pid" json:"pid" description:"父级id"`
+	Title             string    `gorm:"column:title" json:"title" description:"套餐名称"`
+	Value             string    `gorm:"column:value" json:"value" description:"对应的数据"`
+	SelectType        string    `gorm:"column:select_type" json:"select_type" description:"选择器类型,单选还是多选,radio;单选:checkbox"`
+	SelectName        string    `gorm:"column:select_name" json:"select_name" description:"选择器名称"`
+	TableValue        string    `gorm:"column:table_value" json:"table_value" description:"表格数据,用于word生成时的json数据"`
+	Remark            string    `gorm:"column:remark" json:"remark" description:"表头备注"`
+	ChartPermissionId int       `gorm:"column:chart_permission_id" json:"chart_permission_id" description:"权限id"`
+	CreateTime        time.Time `gorm:"column:create_time" json:"create_time" description:"创建时间"`
+	ModifyTime        time.Time `gorm:"column:modify_time" json:"modify_time" description:"修改时间"`
+	IsDelete          int       `gorm:"column:is_delete" json:"-" description:"删除状态: 0-正常; 1-删除"`
+}
+
+func (st *ContractServiceTemplate) TableName() string {
+	return "contract_service_template"
+}
+
+type ContractServiceTemplateItem struct {
+	ServiceTemplateId int    `json:"service_template_id" description:"套餐模板ID"`
+	ProductId         int    `json:"product_id" description:"产品ID"`
+	Pid               int    `json:"pid" description:"父级ID"`
+	Title             string `json:"title" description:"套餐名称"`
+	Value             string `json:"value" description:"对应的数据"`
+	SelectType        string `json:"select_type" description:"选择器类型:radio-单选; checkbox-多选"`
+	SelectName        string `json:"select_name" description:"选择器名称"`
+	ChartPermissionId int    `json:"chart_permission_id" description:"权限ID"`
 }
 
 type ContractServiceTemplateMapItems struct {
-	ServiceTemplateId int    `description:"套餐模板ID"`
-	ProductId         int    `description:"产品id"`
-	Pid               int    `description:"父级id"`
-	Title             string `description:"套餐名称"`
-	Value             string `description:"对应的数据"`
-	SelectType        string `description:"选择器类型,单选还是多选,radio;单选:checkbox"`
-	SelectName        string `description:"选择器名称"`
-	ChartPermissionId int    `description:"权限id"`
-	Children          []*ContractServiceTemplateMapItems
-	Detail            []*ContractServiceDetail
+	ContractServiceTemplateItem
+	Children []*ContractServiceTemplateMapItems `json:"children"`
+	Detail   []*ContractServiceDetail           `json:"detail"`
+}
+
+type ContractServiceTemplateMapItems2 struct {
+	ServiceTemplateId int                                `json:"service_template_id" description:"套餐模板ID"`
+	ProductId         int                                `json:"product_id" description:"产品id"`
+	Pid               int                                `json:"pid" description:"父级id"`
+	Title             string                             `json:"title" description:"套餐名称"`
+	Value             string                             `json:"value" description:"对应的数据"`
+	SelectType        string                             `json:"select_type" description:"选择器类型,单选还是多选,radio;单选:checkbox"`
+	SelectName        string                             `json:"select_name" description:"选择器名称"`
+	ChartPermissionId int                                `json:"chart_permission_id" description:"权限id"`
+	Children          []*ContractServiceTemplateMapItems `json:"children"`
+	Detail            []*ContractServiceDetail           `json:"detail"`
 }
 
 // ContractServiceListReq CRM系统合同套餐-列表请求体
 type ContractServiceListReq struct {
-	ProductId int `json:"product_id" form:"product_id" binding:"omitempty" description:"产品: 1-FICC; 2-权益"`
+	ProductId int `json:"product_id" form:"product_id" description:"产品: 1-FICC; 2-权益"`
 }
 
-func GetContractServiceTemplateMapByProductId(productId int) (items []*ContractServiceTemplateMapItems, err error) {
-	items = make([]*ContractServiceTemplateMapItems, 0)
-	err = global.DEFAULT_MYSQL.Model(ContractServiceTemplate{}).
+func GetContractServiceTemplateMapByProductId(productId int) (items []*ContractServiceTemplateItem, err error) {
+	items = make([]*ContractServiceTemplateItem, 0)
+	err = global.DEFAULT_MYSQL.Table("contract_service_template").
 		Where("product_id = ? AND pid = 0 AND is_delete = 0", productId).
 		Find(&items).Error
 	return
 }
 
-func GetContractServiceTemplateMapByParentId(parentId int) (items []*ContractServiceTemplateMapItems, err error) {
-	items = make([]*ContractServiceTemplateMapItems, 0)
-	err = global.DEFAULT_MYSQL.Model(ContractServiceTemplate{}).
+func GetContractServiceTemplateMapByParentId(parentId int) (items []*ContractServiceTemplateItem, err error) {
+	items = make([]*ContractServiceTemplateItem, 0)
+	err = global.DEFAULT_MYSQL.Table("contract_service_template").
 		Where("pid = ? AND is_delete = 0", parentId).
 		Find(&items).Error
 	return
@@ -58,7 +80,7 @@ func GetContractServiceTemplateMapByParentId(parentId int) (items []*ContractSer
 // GetContractServiceTemplateById 主键获取合同套餐模板
 func GetContractServiceTemplateById(templateId int) (item *ContractServiceTemplate, err error) {
 	err = global.DEFAULT_MYSQL.Model(ContractServiceTemplate{}).
-		Where("service_template_id = ?", templateId).
+		Where("service_template_id = ? AND is_delete = 0", templateId).
 		First(&item).Error
 	return
 }