sys_dept.go 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package model
  2. import (
  3. "database/sql/driver"
  4. "encoding/json"
  5. "errors"
  6. "fmt"
  7. model2 "gas-cylinder-api/common/model"
  8. "gorm.io/gorm"
  9. "time"
  10. )
  11. const (
  12. TypeStore = 1 // 销售门店
  13. TypeTruckEnterprise = 2 // 运输企业
  14. )
  15. // 省平台运输企业
  16. type PROVTruckEnterprise struct {
  17. SocialCode string `json:"socialCode,omitempty" gorm:"size:32;"` // 社会信用代码
  18. Name string `json:"name,omitempty" gorm:"size:32;"` // 企业名称
  19. EnterPhone string `json:"enterPhone,omitempty" gorm:"size:32;"` // 企业联系电话
  20. Address string `json:"address,omitempty" gorm:"size:255;"` // 联系地址
  21. LicenceNo string `json:"licenceNo,omitempty" gorm:"size:32;"` // 运管许可证号
  22. IssueAuthority string `json:"issueAuthority,omitempty" gorm:"size:128;"` // 发证单位
  23. IssueTime string `json:"issueTime,omitempty" gorm:"size:10;"` // 发证日期
  24. BusinessScope string `json:"businessScope,omitempty" gorm:"size:255;"` // 经营范围
  25. QualifyImg string `json:"qualifyImg,omitempty" gorm:"size:255;"` // 资质图片
  26. QualifyStartTime string `json:"qualifyStartTime,omitempty" gorm:"size:10;"` // 资质开始时间
  27. QualifyEndTime string `json:"qualifyEndTime,omitempty" gorm:"size:10;"` // 资质截止时间
  28. LegalPerson string `json:"legalPerson,omitempty" gorm:"size:64;"` // 法人代表
  29. LegalPersonPhone string `json:"legalPersonPhone,omitempty" gorm:"size:32;"` // 法人代表电话
  30. SecurityPerson string `json:"securityPerson,omitempty" gorm:"size:64;"` // 安全管理员
  31. SecurityPersonPhone string `json:"securityPersonPhone,omitempty" gorm:"size:32;"` // 安全管理员电话
  32. City string `json:"city,omitempty" gorm:"size:6;"` // 所在地市
  33. Area string `json:"area,omitempty" gorm:"size:6;"` // 所在区/县
  34. EnterAccount string `json:"enterAccount,omitempty" gorm:"size:36;"` // 账号 (非必填)
  35. Remark string `json:"remark,omitempty" gorm:"size:255;"` // 备注 (非必填)
  36. }
  37. // 省平台销售门店
  38. type PROVStore struct {
  39. CmpCode string `json:"cmpCode,omitempty" gorm:"size:4;"` // 所属企业登记编码(社会信用代码)
  40. Name string `json:"name,omitempty" gorm:"size:128;"` // 门店名称
  41. Contact string `json:"contact,omitempty" gorm:"size:128;"` // 联系人
  42. ContactPhone string `json:"contactPhone,omitempty" gorm:"size:32;"` // 联系人电话
  43. City string `json:"city,omitempty" gorm:"size:6;"` // 所在地市
  44. District string `json:"district,omitempty" gorm:"size:6;"` // 所在区/县
  45. Address string `json:"address,omitempty" gorm:"size:128;"` // 地址
  46. Lng float64 `json:"lng,omitempty" gorm:"size:9;"` // 经度
  47. Lat float64 `json:"lat,omitempty" gorm:"size:9;"` // 纬度
  48. CertificateNo string `json:"certificateNo,omitempty" gorm:"size:32;"` // 许可证编号
  49. Type int `json:"type,omitempty" gorm:"size:4;"` // 经营类别
  50. BusinessArea string `json:"businessArea,omitempty" gorm:"size:128;"` // 经营区域
  51. LegalPerson string `json:"legalPerson,omitempty" gorm:"size:64;"` // 法人姓名
  52. IssueAuthority string `json:"issueAuthority,omitempty" gorm:"size:64;"` // 发证部门
  53. IssueTime string `json:"issueTime,omitempty" gorm:"size:10;"` // 发证时间
  54. StartTime string `json:"startTime,omitempty" gorm:"size:10;"` // 开始时间
  55. ExpireTime string `json:"expireTime,omitempty" gorm:"size:10;"` // 证件有效期
  56. Description string `json:"description,omitempty" gorm:"size:255;"` // 描述
  57. }
  58. type SysDept struct {
  59. model2.Model
  60. ParentId int `json:"parentId" gorm:""` // 上级部门
  61. Path string `json:"path" gorm:"size:255;" swaggerignore:"true"` // 路径
  62. Name string `json:"name" gorm:"size:128;"` // 部门名称
  63. Sort int `json:"sort" gorm:"size:4;"` // 排序
  64. Status int `json:"status" gorm:"size:4;"` // 状态 1-停用 2-正常
  65. ProvStore PROVStore `json:"store,omitempty" gorm:"type:json;comment:'省平台销售门店信息'"` // 销售门店
  66. ProvTruckEnterprise PROVTruckEnterprise `json:"truckEnterprise,omitempty" gorm:"type:json;comment:'省平台运输企业信息'"` // 运输企业
  67. Children []SysDept `json:"children" gorm:"-"`
  68. UploadTime time.Time `json:"uploadTime" gorm:"size:128;"` // 省平台上传时间
  69. Type int `json:"type" gorm:"size:4;"` // 1-销售门店 2-运输企业
  70. CmpCode string `json:"cmpCode" gorm:"size:128;"` // 运输企业在省中心唯一编码
  71. StoreCode string `json:"storeCode" gorm:"size:128;"` //销售门店在省中心唯一编码
  72. model2.ControlBy
  73. model2.ModelTime
  74. }
  75. func (SysDept) TableName() string {
  76. return "sys_dept"
  77. }
  78. func (e *SysDept) Generate() model2.ActiveRecord {
  79. o := *e
  80. return &o
  81. }
  82. func (e *SysDept) GetId() interface{} {
  83. return e.Id
  84. }
  85. func (e PROVTruckEnterprise) Value() (driver.Value, error) {
  86. d, err := json.Marshal(e)
  87. return string(d), err
  88. }
  89. func (e *PROVTruckEnterprise) Scan(src interface{}) error {
  90. return json.Unmarshal(src.([]byte), e)
  91. }
  92. func (e PROVStore) Value() (driver.Value, error) {
  93. d, err := json.Marshal(e)
  94. return string(d), err
  95. }
  96. func (e *PROVStore) Scan(src interface{}) error {
  97. return json.Unmarshal(src.([]byte), e)
  98. }
  99. func (e *SysDept) BeforeDelete(_ *gorm.DB) (err error) {
  100. if e.Id == 1 {
  101. return errors.New("禁止删除系统部门")
  102. }
  103. return
  104. }
  105. func GetEnterDeptCacheKey(userId int) string {
  106. return fmt.Sprintf("enter-dept-%d", userId)
  107. }
  108. func GetEnterDeptNameCacheKey(userId int) string {
  109. return fmt.Sprintf("enter-dept-name-%d", userId)
  110. }