123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- package fms
- import (
- "hongze/fms_api/global"
- "hongze/fms_api/models/base"
- "time"
- )
- // ContractRegister 合同登记表
- type ContractRegister struct {
- ContractRegisterId int `gorm:"primaryKey;column:contract_register_id" json:"contract_register_id" description:"登记ID"`
- ContractCode string `gorm:"column:contract_code" json:"contract_code" description:"合同编号"`
- CrmContractId int `gorm:"column:crm_contract_id" json:"crm_contract_id" description:"CRM系统-合同ID"`
- ContractSource int `gorm:"column:contract_source" json:"contract_source" description:"合同来源: 0-非系统合同导入; 1-CRM合同导入"`
- 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系统-销售名称"`
- 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:"开票金额"`
- PaymentAmount float64 `gorm:"column:payment_amount" json:"payment_amount" description:"到款金额"`
- StartDate time.Time `gorm:"column:start_date" json:"start_date" description:"合同开始日期"`
- EndDate time.Time `gorm:"column:end_date" json:"end_date" description:"合同结束日期"`
- SignDate time.Time `gorm:"column:sign_date" json:"sign_date" description:"合同签订日期"`
- AgreedPayTime string `gorm:"column:agreed_pay_time" json:"agreed_pay_time" description:"约定付款时间(如:生效日起10日内)"`
- ContractStatus int `gorm:"column:contract_status" json:"contract_status" description:"合同状态: 1-已审批; 2-单章寄出; 3-已签回"`
- RegisterStatus int `gorm:"column:register_status" json:"register_status" description:"登记状态: 1-进行中; 2-已完成;"`
- Remark string `gorm:"column:remark" json:"remark" description:"备注信息"`
- IsDeleted int `gorm:"column:is_deleted" json:"is_deleted" description:"是否已删除: 0-正常; 1-已删除"`
- base.TimeBase
- }
- func (c *ContractRegister) TableName() string {
- return "contract_register"
- }
- func (c *ContractRegister) Create() (err error) {
- err = global.DEFAULT_MYSQL.Create(c).Error
- return
- }
- func (c *ContractRegister) AddInBatches(list []*ContractRegister) (err error) {
- err = global.DEFAULT_MYSQL.CreateInBatches(list, len(list)).Error
- return
- }
- func (c *ContractRegister) Update(updateCols []string) (err error) {
- err = global.DEFAULT_MYSQL.Model(c).Select(updateCols).Updates(c).Error
- return
- }
- func (c *ContractRegister) Fetch(id int) (item *ContractRegister, err error) {
- err = global.DEFAULT_MYSQL.Model(c).Where("is_deleted = 0 AND contract_register_id = ?", id).First(&item).Error
- return
- }
- func (c *ContractRegister) FetchByCondition(condition string, pars []interface{}) (item *ContractRegister, err error) {
- err = global.DEFAULT_MYSQL.Model(c).
- Where("is_deleted = 0").
- Where(condition, pars...).
- First(&item).Error
- return
- }
- func (c *ContractRegister) List(condition string, pars []interface{}) (list []*ContractRegister, err error) {
- list = make([]*ContractRegister, 0)
- err = global.DEFAULT_MYSQL.Model(c).
- Where("is_deleted = 0").
- Where(condition, pars...).
- Find(&list).Error
- return
- }
- func (c *ContractRegister) PageList(page base.IPage, condition string, pars []interface{}) (count int64, results []*ContractRegister, err error) {
- results = make([]*ContractRegister, 0)
- query := global.DEFAULT_MYSQL.Model(c).
- Where("is_deleted = 0").
- Where(condition, pars...)
- query.Count(&count)
- if len(page.GetOrderItemsString()) > 0 {
- query = query.Order(page.GetOrderItemsString())
- }
- err = query.Limit(int(page.GetPageSize())).Offset(int(page.Offset())).Find(&results).Error
- return
- }
- // ContractRegisterListReq 合同登记列表请求体
- type ContractRegisterListReq struct {
- Keyword string `json:"keyword" form:"keyword" binding:"omitempty" description:"关键词"`
- StartDate string `json:"start_date" form:"start_date" binding:"omitempty,datetime=2006-01-02" description:"合同开始日期"`
- EndDate string `json:"end_date" form:"end_date" binding:"omitempty,datetime=2006-01-02" description:"合同结束日期"`
- ServiceType int `json:"service_type" form:"service_type" description:"套餐类型"`
- ContractType int `json:"contract_type" form:"contract_type" description:"合同类型"`
- RegisterStatus int `json:"register_status" form:"register_status" description:"登记状态"`
- base.PageReq
- }
- // ContractRegisterItem 合同登记
- type ContractRegisterItem struct {
- ContractRegisterId int `json:"contract_register_id" description:"登记ID"`
- 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系统-销售名称"`
- ContractType int `json:"contract_type" description:"合同类型: 1-新签; 2-续约"`
- ContractAmount float64 `json:"contract_amount" description:"合同金额"`
- InvoicedAmount float64 `json:"invoiced_amount" description:"开票金额"`
- PaymentAmount float64 `json:"payment_amount" description:"到款金额"`
- StartDate string `json:"start_date" description:"合同开始日期"`
- EndDate string `json:"end_date" description:"合同结束日期"`
- SignDate string `json:"sign_date" description:"合同签订日期"`
- AgreedPayTime string `json:"agreed_pay_time" description:"约定付款时间(如:生效日起10日内)"`
- ContractStatus int `json:"contract_status" description:"合同状态: 1-已审批; 2-单章寄出; 3-已签回"`
- 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:"到款信息"`
- }
- // ContractRegisterDelReq 合同登记-删除请求体
- type ContractRegisterDelReq struct {
- ContractRegisterId int `json:"contract_register_id" binding:"required,gte=1" description:"登记ID"`
- }
- // ContractRegisterUpdateStatusReq 合同登记-修改合同状态请求体
- type ContractRegisterUpdateStatusReq struct {
- ContractRegisterId int `json:"contract_register_id" binding:"required,gte=1" description:"登记ID"`
- ContractStatus int `json:"contract_status" binding:"oneof=1 2 3" description:"合同状态: 1-已审批; 2-单章寄出; 3-已签回"`
- }
- // ContractRegisterAddReq 新增合同登记请求体
- type ContractRegisterAddReq struct {
- ContractCode string `json:"contract_code" binding:"required" description:"合同编号"`
- CrmContractId int `json:"crm_contract_id" description:"CRM系统-合同ID"`
- 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系统-销售名称"`
- 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:"合同开始日期"`
- EndDate string `json:"end_date" binding:"required" description:"合同结束日期"`
- SignDate string `json:"sign_date" binding:"required" description:"合同签订日期"`
- 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"`
- Services []ContractServiceAddReq `json:"services" description:"服务套餐内容"`
- }
- // ContractRegisterEditReq 编辑合同登记请求体
- type ContractRegisterEditReq struct {
- ContractRegisterId int `json:"contract_register_id" binding:"required,gte=1" description:"登记ID"`
- ContractRegisterAddReq
- }
- // CreateContractRegisterAndServices 新增合同登记及套餐
- func CreateContractRegisterAndServices(item *ContractRegister, serviceDetail []*ContractServiceAndDetail) (err error) {
- tx := global.DEFAULT_MYSQL.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- // 合同登记
- tx.Create(item)
- nowTime := time.Now().Local()
- for i := 0; i < len(serviceDetail); i++ {
- // 合同服务
- t := serviceDetail[i]
- contractService := &ContractService{
- ContractRegisterId: item.ContractRegisterId,
- ProductId: item.ProductId,
- ServiceTemplateId: t.ServiceTemplateId,
- Title: t.Title,
- Value: t.Value,
- TableValue: t.TableValue,
- HasDetail: t.HasDetail,
- ChartPermissionId: t.ChartPermissionId,
- }
- contractService.Set()
- tx.Create(contractService)
- // 合同服务详情
- for j := 0; j < len(t.DetailList); j++ {
- contractServiceDetail := t.DetailList[j]
- contractServiceDetail.ContractServiceId = contractService.ContractServiceId
- contractServiceDetail.ContractRegisterId = item.ContractRegisterId
- contractServiceDetail.ServiceTemplateId = contractService.ServiceTemplateId
- contractServiceDetail.CreateTime = nowTime
- tx.Create(contractServiceDetail)
- t.DetailList[j] = contractServiceDetail
- }
- }
- return
- }
- // UpdateContractRegisterAndServices 新增合同登记及套餐
- func UpdateContractRegisterAndServices(item *ContractRegister, updateCols []string, serviceDetail []*ContractServiceAndDetail) (err error) {
- tx := global.DEFAULT_MYSQL.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- // 更新合同登记
- if e := item.Update(updateCols); e != nil {
- return
- }
- // 删除原服务及详情信息
- sql := `DELETE FROM contract_service WHERE contract_register_id = ?`
- tx.Exec(sql, item.ContractRegisterId)
- sql = `DELETE FROM contract_service_detail WHERE contract_register_id = ?`
- tx.Exec(sql, item.ContractRegisterId)
- // 新增合同服务
- nowTime := time.Now().Local()
- for i := 0; i < len(serviceDetail); i++ {
- // 合同服务
- t := serviceDetail[i]
- contractService := &ContractService{
- ContractRegisterId: item.ContractRegisterId,
- ProductId: item.ProductId,
- ServiceTemplateId: t.ServiceTemplateId,
- Title: t.Title,
- Value: t.Value,
- TableValue: t.TableValue,
- HasDetail: t.HasDetail,
- ChartPermissionId: t.ChartPermissionId,
- }
- contractService.Set()
- tx.Create(contractService)
- // 合同服务详情
- for j := 0; j < len(t.DetailList); j++ {
- contractServiceDetail := t.DetailList[j]
- contractServiceDetail.ContractServiceId = contractService.ContractServiceId
- contractServiceDetail.ContractRegisterId = item.ContractRegisterId
- contractServiceDetail.ServiceTemplateId = contractService.ServiceTemplateId
- contractServiceDetail.CreateTime = nowTime
- tx.Create(contractServiceDetail)
- t.DetailList[j] = contractServiceDetail
- }
- }
- return
- }
- // ContractRegisterDetailReq 合同登记-详情请求体
- type ContractRegisterDetailReq struct {
- ContractRegisterId int `json:"contract_register_id" form:"contract_register_id" binding:"required,gte=1"`
- }
- // ContractRegisterDetail-合同登记详情
- type ContractRegisterDetail struct {
- ContractRegisterItem
- ServiceList []*ContractServiceAndDetail `json:"service_list" description:"合同服务及详情"`
- InvoiceList []*ContractInvoiceItem `json:"invoice_list" description:"开票信息"`
- PaymentList []*ContractInvoiceItem `json:"payment_list" description:"到款信息"`
- Logs []*ContractRegisterLogItem `json:"logs" description:"登记日志"`
- }
- // GetContractRegisterItemById 获取合同登记信息
- func GetContractRegisterItemById(id int) (item *ContractRegisterItem, err error) {
- err = global.DEFAULT_MYSQL.Model(ContractRegister{}).
- Where("is_deleted = 0 AND contract_register_id = ?", id).
- First(&item).Error
- return
- }
- // 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{}).
- Where("is_deleted = 0").
- Where(condition, pars...)
- query.Count(&count)
- if len(page.GetOrderItemsString()) > 0 {
- query = query.Order(page.GetOrderItemsString())
- }
- err = query.Limit(int(page.GetPageSize())).Offset(int(page.Offset())).Find(&results).Error
- return
- }
|