contract_service.go 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package fms
  2. import (
  3. "hongze/fms_api/global"
  4. "hongze/fms_api/models/base"
  5. )
  6. // ContractService 合同服务套餐
  7. type ContractService struct {
  8. ContractServiceId int `gorm:"primaryKey;column:contract_service_id" json:"contract_service_id"`
  9. ContractRegisterId int `gorm:"column:contract_register_id" json:"contract_register_id" description:"登记ID"`
  10. ProductId int `gorm:"column:product_id" json:"product_id" description:"产品ID"`
  11. ServiceTemplateId int `gorm:"column:service_template_id" json:"service_template_id" description:"合同服务模板ID"`
  12. Title string `gorm:"column:title" json:"title" description:"套餐名称"`
  13. Value string `gorm:"column:value" json:"value" description:"套餐的值"`
  14. TableValue string `gorm:"column:table_value" json:"table_value" description:"表格数据,用于word生成时的json数据"`
  15. HasDetail string `gorm:"column:has_detail" json:"has_detail" description:"是否有详情: 无; 有"`
  16. ServiceAmount float64 `gorm:"column:service_amount" json:"service_amount" description:"套餐总金额"`
  17. CurrencyUnit string `gorm:"column:currency_unit" json:"currency_unit" description:"货币国际代码"`
  18. ChartPermissionId int `gorm:"column:chart_permission_id" json:"chart_permission_id" description:"权限ID"`
  19. ChartPermissionIds string `gorm:"column:chart_permission_ids" json:"chart_permission_ids" description:"权限IDs-小套餐"`
  20. base.TimeBase
  21. }
  22. func (c *ContractService) TableName() string {
  23. return "contract_service"
  24. }
  25. func (c *ContractService) List(condition string, pars []interface{}) (list []*ContractService, err error) {
  26. list = make([]*ContractService, 0)
  27. err = global.DEFAULT_MYSQL.Model(c).
  28. Where(condition, pars...).
  29. Find(&list).Error
  30. return
  31. }
  32. // ContractServiceAddReq 新增合同套餐请求体
  33. type ContractServiceAddReq struct {
  34. ServiceTemplateId int `json:"service_template_id" description:"服务套餐id"`
  35. Title string `json:"title" description:"服务套餐名称"`
  36. Value string `json:"value" description:"服务套餐内容"`
  37. ChartPermissionIds string `json:"chart_permission_ids" description:"品种权限"`
  38. //Detail [][]ContractServiceDetailAddReq `json:"detail" description:"详情数据"`
  39. }
  40. // ContractServiceItem 合同的服务内容
  41. type ContractServiceItem struct {
  42. ContractServiceId int `json:"contract_service_id" description:"合同服务ID"`
  43. ContractRegisterId int `json:"contract_register_id" description:"合同登记ID"`
  44. ProductId int `json:"product_id" description:"产品id,1:ficc;2:权益"`
  45. ServiceTemplateId int `json:"service_template_id" description:"合同服务模板id"`
  46. Title string `json:"title" description:"套餐标题"`
  47. Value string `json:"value" description:"套餐的值"`
  48. HasDetail string `json:"has_detail" description:"是否有详情,枚举值:是、否;默认:否"`
  49. TableValue string `json:"table_value" description:"表格数据,用于word生成时的json数据"`
  50. ChartPermissionId int `json:"chart_permission_id" description:"权限id"`
  51. ChartPermissionIds string `json:"chart_permission_ids" description:"品种权限-小套餐"`
  52. }
  53. // ContractServiceAndDetail 合同的服务内容及详情
  54. type ContractServiceAndDetail struct {
  55. ContractServiceId int `json:"contract_service_id" description:"合同服务ID"`
  56. ContractRegisterId int `json:"contract_register_id" description:"合同登记ID"`
  57. ProductId int `json:"product_id" description:"产品id,1:ficc;2:权益"`
  58. ServiceTemplateId int `json:"service_template_id" description:"合同服务模板id"`
  59. Title string `json:"title" description:"套餐标题"`
  60. Value string `json:"value" description:"套餐的值"`
  61. HasDetail string `json:"has_detail" description:"是否有详情,枚举值:是、否;默认:否"`
  62. TableValue string `json:"table_value" description:"表格数据,用于word生成时的json数据"`
  63. ChartPermissionId int `json:"chart_permission_id" description:"权限id"`
  64. ChartPermissionIds string `json:"chart_permission_ids" description:"品种权限-小套餐"`
  65. ServiceAmount float64 `gorm:"column:service_amount" json:"service_amount" description:"套餐总金额"`
  66. //Detail []*ContractServiceDetail `json:"detail"`
  67. }
  68. // GetContractServiceAndDetailList 根据id获取合同列表数据
  69. func GetContractServiceAndDetailList(contractRegisterId int) (list []*ContractServiceAndDetail, err error) {
  70. items := make([]*ContractServiceItem, 0)
  71. err = global.DEFAULT_MYSQL.Model(ContractService{}).
  72. Where("contract_register_id = ?", contractRegisterId).
  73. Find(&items).Error
  74. if err != nil {
  75. return
  76. }
  77. list = formatContractServiceAndDetailList(items)
  78. return
  79. }
  80. // formatContractServiceAndDetailList 格式化ContractServiceAndDetailList
  81. func formatContractServiceAndDetailList(list []*ContractServiceItem) (itemList []*ContractServiceAndDetail) {
  82. itemList = make([]*ContractServiceAndDetail, 0)
  83. for i := range list {
  84. itemList = append(itemList, &ContractServiceAndDetail{
  85. ContractServiceId: list[i].ContractServiceId,
  86. ContractRegisterId: list[i].ContractRegisterId,
  87. ProductId: list[i].ProductId,
  88. ServiceTemplateId: list[i].ServiceTemplateId,
  89. Title: list[i].Title,
  90. Value: list[i].Value,
  91. HasDetail: list[i].HasDetail,
  92. TableValue: list[i].TableValue,
  93. ChartPermissionId: list[i].ChartPermissionId,
  94. ChartPermissionIds: list[i].ChartPermissionIds,
  95. })
  96. }
  97. return
  98. }
  99. // GetContractRegisterIdsByTempId 套餐模板ID获取关联的合同登记ID
  100. func GetContractRegisterIdsByTempId(tempIds []string) (registerIds []int, err error) {
  101. err = global.DEFAULT_MYSQL.Model(ContractService{}).
  102. Select("DISTINCT contract_register_id").
  103. Where("service_template_id in (?)", tempIds).
  104. Find(&registerIds).Error
  105. return
  106. }
  107. // ContractRegisterServicesName 合同登记套餐信息
  108. type ContractRegisterServicesName struct {
  109. ContractRegisterId int `json:"contract_register_id" description:"登记ID"`
  110. ServicesName string `json:"services_name" description:"套餐信息, 英文逗号拼接"`
  111. }
  112. // GetContractRegisterServicesNameByRegisterIds 合同登记IDs获取套餐拼接字符串
  113. func GetContractRegisterServicesNameByRegisterIds(registerIds []int) (list []*ContractRegisterServicesName, err error) {
  114. list = make([]*ContractRegisterServicesName, 0)
  115. err = global.DEFAULT_MYSQL.Model(ContractService{}).
  116. Select("contract_register_id, GROUP_CONCAT(title) AS services_name").
  117. Where("contract_register_id IN ? ", registerIds).
  118. Group("contract_register_id").
  119. Find(&list).Error
  120. return
  121. }
  122. // GetContractRegisterServicesByRegisterIds 合同登记IDs获取套餐拼接字符串
  123. func GetContractRegisterServicesByRegisterIds(registerIds []int) (list []*ContractService, err error) {
  124. err = global.DEFAULT_MYSQL.Model(ContractService{}).
  125. Select("*").
  126. Where("contract_register_id IN ?", registerIds).
  127. Find(&list).Error
  128. return
  129. }