123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- 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"
- "strconv"
- "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
- }
- func GetParentIds(id int) (arr []int, 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 arr, err
- }
- err = db.First(&deptModel, id).Error
- if err != nil {
- log.Errorf("db error: %s", err)
- err = errors.New("获取企业信息失败")
- return arr, err
- }
- // 将字符串分割为整数
- for _, s := range strings.Split(strings.Trim(deptModel.Path, "/"), "/") {
- if s != "0" {
- num, err := strconv.Atoi(s)
- if err != nil {
- continue
- }
- arr = append(arr, num)
- }
- }
- return arr, nil
- }
- func GetRootCompanyIds(id int) (arr []int, 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 arr, err
- }
- err = db.First(&deptModel, id).Error
- if err != nil {
- log.Errorf("db error: %s", err)
- err = errors.New("获取企业信息失败")
- return arr, err
- }
- // 获取跟公司id
- rootId := strings.Split(strings.Trim(deptModel.Path, "/0/"), "/")[0]
- // 获取所有子id
- err = db.Model(&SysDept{}).Select("id").Where("path like ?", "%/"+rootId+"/%").Find(&arr).Error
- if err != nil {
- log.Errorf("db error: %s", err)
- err = errors.New("获取企业信息失败")
- return arr, err
- }
- return arr, nil
- }
|