contract_service.go 6.3 KB

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