package model import ( "database/sql/driver" "encoding/json" "errors" "fmt" model2 "gas-cylinder-api/common/model" "github.com/gin-gonic/gin" log "gogs.baozhida.cn/zoie/OAuth-core/logger" "gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth/user" "strings" "gogs.baozhida.cn/zoie/OAuth-core/sdk" "gogs.baozhida.cn/zoie/OAuth-core/sdk/config" "gorm.io/gorm" ) const ( TypeStore = 1 // 销售门店 TypeTruckEnterprise = 2 // 运输企业 ) // 省平台运输企业 type ProvTruckEnterprise struct { SocialCode string `json:"socialCode,omitempty" gorm:"size:32;"` // 社会信用代码 Name string `json:"name,omitempty" gorm:"size:32;" vd:"@:len($)>0;msg:'运输企业名称不能为空'"` // 企业名称 EnterPhone string `json:"enterPhone,omitempty" gorm:"size:32;"` // 企业联系电话 Address string `json:"address,omitempty" gorm:"size:255;"` // 联系地址 LicenceNo string `json:"licenceNo,omitempty" gorm:"size:32;"` // 运管许可证号 IssueAuthority string `json:"issueAuthority,omitempty" gorm:"size:128;"` // 发证单位 IssueTime string `json:"issueTime,omitempty" gorm:"size:10;"` // 发证日期 BusinessScope string `json:"businessScope,omitempty" gorm:"size:255;"` // 经营范围 QualifyImg string `json:"qualifyImg,omitempty" gorm:"size:255;"` // 资质图片 QualifyStartTime string `json:"qualifyStartTime,omitempty" gorm:"size:10;"` // 资质开始时间 QualifyEndTime string `json:"qualifyEndTime,omitempty" gorm:"size:10;"` // 资质截止时间 LegalPerson string `json:"legalPerson,omitempty" gorm:"size:64;"` // 法人代表 LegalPersonPhone string `json:"legalPersonPhone,omitempty" gorm:"size:32;"` // 法人代表电话 SecurityPerson string `json:"securityPerson,omitempty" gorm:"size:64;"` // 安全管理员 SecurityPersonPhone string `json:"securityPersonPhone,omitempty" gorm:"size:32;"` // 安全管理员电话 City string `json:"city,omitempty" gorm:"size:6;"` // 所在地市 Area string `json:"area,omitempty" gorm:"size:6;"` // 所在区/县 EnterAccount string `json:"enterAccount,omitempty" gorm:"size:36;"` // 账号 (非必填) Remark string `json:"remark,omitempty" gorm:"size:255;"` // 备注 (非必填) } // 省平台销售门店 type ProvStore struct { CmpCode string `json:"cmpCode,omitempty" gorm:"size:4;"` // 所属企业登记编码(社会信用代码) Name string `json:"name,omitempty" gorm:"size:128;" vd:"@:len($)>0;msg:'门店名称不能为空'"` // 门店名称 Contact string `json:"contact,omitempty" gorm:"size:128;"` // 联系人 ContactPhone string `json:"contactPhone,omitempty" gorm:"size:32;"` // 联系人电话 City string `json:"city,omitempty" gorm:"size:6;"` // 所在地市 District string `json:"district,omitempty" gorm:"size:6;"` // 所在区/县 Address string `json:"address,omitempty" gorm:"size:128;"` // 地址 Lng float64 `json:"lng,omitempty" gorm:"size:9;"` // 经度 Lat float64 `json:"lat,omitempty" gorm:"size:9;"` // 纬度 CertificateNo string `json:"certificateNo,omitempty" gorm:"size:32;"` // 许可证编号 Type int `json:"type,omitempty" gorm:"size:4;"` // 经营类别 BusinessArea string `json:"businessArea,omitempty" gorm:"size:128;"` // 经营区域 LegalPerson string `json:"legalPerson,omitempty" gorm:"size:64;"` // 法人姓名 IssueAuthority string `json:"issueAuthority,omitempty" gorm:"size:64;"` // 发证部门 IssueTime string `json:"issueTime,omitempty" gorm:"size:10;"` // 发证时间 StartTime string `json:"startTime,omitempty" gorm:"size:10;"` // 开始时间 ExpireTime string `json:"expireTime,omitempty" gorm:"size:10;"` // 证件有效期 Description string `json:"description,omitempty" gorm:"size:255;"` // 描述 } type SysDept struct { model2.Model ParentId int `json:"parentId" gorm:""` // 上级部门 Path string `json:"path,omitempty" gorm:"size:255;" swaggerignore:"true"` // 路径 Name string `json:"name" gorm:"size:128;"` // 部门名称 Sort int `json:"sort,omitempty" gorm:"size:4;"` // 排序 Status int `json:"status,omitempty" gorm:"size:4;"` // 状态 1-停用 2-正常 ProvStore ProvStore `json:"provStore,omitempty" gorm:"type:json;comment:省平台销售门店信息"` // 销售门店 ProvTruckEnterprise ProvTruckEnterprise `json:"provTruckEnterprise,omitempty" gorm:"type:json;comment:省平台运输企业信息"` // 运输企业 Children []SysDept `json:"children" gorm:"-"` UploadTime model2.Time `json:"uploadTime,omitempty" gorm:"size:128;"` // 省平台上传时间 Type int `json:"type,omitempty" gorm:"size:4;"` // 1-销售门店 2-运输企业 CmpCode string `json:"cmpCode" gorm:"size:128;"` // 省中心唯一编码 model2.ControlBy model2.ModelTime } func (SysDept) TableName() string { return "sys_dept" } type SysDeptOmit struct { Id int `json:"id,omitempty"` Path string `json:"path,omitempty"` // 路径 Name string `json:"name,omitempty"` // 部门名称 CmpCode string `json:"cmpCode,omitempty"` // 省中心唯一编码 } func (SysDeptOmit) TableName() string { return "sys_dept" } func (e *SysDept) Generate() model2.ActiveRecord { o := *e return &o } func (e *SysDept) GetId() interface{} { return e.Id } func (e ProvTruckEnterprise) Value() (driver.Value, error) { d, err := json.Marshal(e) return string(d), err } func (e *ProvTruckEnterprise) Scan(src interface{}) error { return json.Unmarshal(src.([]byte), e) } func (e ProvStore) Value() (driver.Value, error) { d, err := json.Marshal(e) return string(d), err } func (e *ProvStore) Scan(src interface{}) error { return json.Unmarshal(src.([]byte), e) } func (e *SysDept) BeforeDelete(_ *gorm.DB) (err error) { if e.Id == 1 { return errors.New("禁止删除系统部门") } return } func GetEnterDeptCacheKey(c *gin.Context) string { userId := user.GetUserId(c) tokenId := "" list := strings.Split(c.Request.Header.Get("Authorization"), ".") if len(list) > 0 { tokenId = list[len(list)-1] } return fmt.Sprintf("enter-dept-%s-%d", tokenId, userId) } func GetEnterDeptNameCacheKey(c *gin.Context) string { userId := user.GetUserId(c) tokenId := "" list := strings.Split(c.Request.Header.Get("Authorization"), ".") if len(list) > 0 { tokenId = list[len(list)-1] } return fmt.Sprintf("enter-dept-name-%s-%d", tokenId, userId) } func GetProvCodeById(id int) (SysDept, error) { var err error var deptModel SysDept //准备db db := sdk.Runtime.GetDbByKey(config.ApplicationConfig.Host) if db == nil { err = errors.New("db not exist") log.Errorf("host[%s]'s %s", err.Error()) return deptModel, err } err = db.First(&deptModel, id).Error if err != nil { log.Errorf("db error: %s", err) err = errors.New("获取企业信息失败") return deptModel, err } return deptModel, nil } func GetDeptByCmpCode(CmpCode string) (SysDept, error) { var err error var deptModel SysDept //准备db db := sdk.Runtime.GetDbByKey(config.ApplicationConfig.Host) if db == nil { err = errors.New("db not exist") log.Errorf("host[%s]'s %s", err.Error()) return deptModel, err } err = db.Where("cmp_code = ?", CmpCode).First(&deptModel).Error if err != nil { log.Errorf("db error: %s", err) err = errors.New("获取企业信息失败") return deptModel, err } return deptModel, nil }