123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346 |
- package fms
- import (
- "hongze/fms_api/global"
- "hongze/fms_api/models/base"
- "hongze/fms_api/utils"
- "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:"合同编号"`
- PayContractCode string `gorm:"column:pay_contract_code" json:"pay_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:"客户名称"`
- PayCompanyName string `gorm:"column:pay_company_name" json:"pay_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 string `gorm:"column:seller_name" json:"seller_name" description:"CRM系统-销售名称"`
- ContractType int `gorm:"column:contract_type" json:"contract_type" description:"合同类型: 1-新签; 2-续约; 3-代付; 4-补充协议"`
- 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:"备注信息"`
- ServiceRemark string `gorm:"column:service_remark" json:"service_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:"合同编号"`
- CrmContractId int `json:"crm_contract_id" description:"CRM系统-合同ID"`
- ContractSource int `json:"contract_source" description:"合同来源: 0-非系统合同导入; 1-CRM合同导入"`
- CompanyName string `json:"company_name" description:"客户名称"`
- SellerId int `json:"seller_id" description:"CRM系统-销售ID"`
- 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:"开票金额"`
- 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:"登记时间"`
- }
- // ContractRegisterList 合同登记列表
- type ContractRegisterList struct {
- *ContractRegisterItem
- ServicesName string `json:"services" description:"套餐名称"`
- 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:"合同编号"`
- PayContractCode string `json:"pay_contract_code" 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:"客户名称"`
- PayCompanyName string `json:"pay_company_name" description:"代付方客户名称"`
- SellerId int `json:"seller_id" binding:"required" description:"CRM系统-销售ID"`
- SellerName string `json:"seller_name" binding:"required" description:"CRM系统-销售名称"`
- ContractType int `json:"contract_type" binding:"oneof=1 2 3 4" description:"合同类型: 1-新签; 2-续约; 3-代付; 4-补充协议"`
- 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" description:"合同签订日期"`
- AgreedPayTime string `json:"agreed_pay_time" description:"约定付款时间(如:生效日起10日内)"`
- ContractStatus int `json:"contract_status" binding:"oneof=1 2 3" description:"合同状态: 1-已审批; 2-单章寄出; 3-已签回"`
- Remark string `json:"remark" description:"备注信息"`
- ProductId int `json:"product_id" binding:"oneof=1 2" description:"产品ID"`
- ServiceRemark string `json:"service_remark" description:"套餐备注"`
- 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,
- ChartPermissionIds: t.ChartPermissionIds,
- }
- contractService.Set()
- tx.Create(contractService)
- //// 合同服务详情
- //for j := 0; j < len(t.Detail); j++ {
- // contractServiceDetail := t.Detail[j]
- // contractServiceDetail.ContractServiceId = contractService.ContractServiceId
- // contractServiceDetail.ContractRegisterId = item.ContractRegisterId
- // contractServiceDetail.ServiceTemplateId = contractService.ServiceTemplateId
- // contractServiceDetail.CreateTime = nowTime
- // tx.Create(contractServiceDetail)
- // t.Detail[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 {
- err = e
- 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,
- ChartPermissionIds: t.ChartPermissionIds,
- }
- contractService.Set()
- tx.Create(contractService)
- //// 合同服务详情
- //for j := 0; j < len(t.Detail); j++ {
- // contractServiceDetail := t.Detail[j]
- // contractServiceDetail.ContractServiceId = contractService.ContractServiceId
- // contractServiceDetail.ContractRegisterId = item.ContractRegisterId
- // contractServiceDetail.ServiceTemplateId = contractService.ServiceTemplateId
- // contractServiceDetail.CreateTime = nowTime
- // tx.Create(contractServiceDetail)
- // t.Detail[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) (result *ContractRegisterItem, err error) {
- item := new(ContractRegister)
- err = global.DEFAULT_MYSQL.Model(ContractRegister{}).
- Where("is_deleted = 0 AND contract_register_id = ?", id).
- First(&item).Error
- if err != nil && err != utils.ErrNoRow {
- return
- }
- result = formatContractRegister2Item(item)
- return
- }
- // GetContractRegisterItemPageList 获取合同登记列表-分页
- func GetContractRegisterItemPageList(page base.IPage, condition string, pars []interface{}) (count int64, results []*ContractRegisterItem, err error) {
- list := make([]*ContractRegister, 0)
- query := global.DEFAULT_MYSQL.Table("contract_register").
- 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(&list).Error
- if err != nil {
- return
- }
- for i := range list {
- results = append(results, formatContractRegister2Item(list[i]))
- }
- return
- }
- // formatContractRegister2Item 格式化ContractRegister
- func formatContractRegister2Item(item *ContractRegister) (formatItem *ContractRegisterItem) {
- formatItem = new(ContractRegisterItem)
- formatItem.ContractRegisterId = item.ContractRegisterId
- formatItem.ContractCode = item.ContractCode
- formatItem.CrmContractId = item.CrmContractId
- formatItem.ContractSource = item.ContractSource
- formatItem.CompanyName = item.CompanyName
- formatItem.SellerId = item.SellerId
- formatItem.SellerName = item.SellerName
- formatItem.ContractType = item.ContractType
- formatItem.ContractAmount = item.ContractAmount
- formatItem.InvoicedAmount = item.InvoicedAmount
- formatItem.PaymentAmount = item.PaymentAmount
- formatItem.StartDate = utils.TimeTransferString(utils.FormatDate, item.StartDate)
- formatItem.EndDate = utils.TimeTransferString(utils.FormatDate, item.EndDate)
- formatItem.SignDate = utils.TimeTransferString(utils.FormatDate, item.SignDate)
- formatItem.AgreedPayTime = item.AgreedPayTime
- formatItem.ContractStatus = item.ContractStatus
- formatItem.RegisterStatus = item.RegisterStatus
- formatItem.Remark = item.Remark
- formatItem.CreateTime = utils.TimeTransferString(utils.FormatDateTime, item.CreateTime)
- return
- }
|