fix
zhangqian
2023-08-10 a18a2c98ed758d08cbbe102bf5225c5a4cd001c7
fix
8个文件已修改
350 ■■■■■ 已修改文件
docs/docs.go 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/index.go 216 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/serviceContract.go 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/serviceFollowup.go 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/serviceOrder.go 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/timeSpent.go 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go
@@ -11776,6 +11776,9 @@
        "model.ServiceFollowup": {
            "type": "object",
            "properties": {
                "Member": {
                    "$ref": "#/definitions/model.User"
                },
                "client": {
                    "$ref": "#/definitions/model.Client"
                },
@@ -11797,6 +11800,9 @@
                "id": {
                    "type": "integer"
                },
                "isVisit": {
                    "$ref": "#/definitions/model.IsVisit"
                },
                "isVisitId": {
                    "type": "integer"
                },
@@ -11805,6 +11811,9 @@
                },
                "number": {
                    "type": "string"
                },
                "oldMember": {
                    "$ref": "#/definitions/model.User"
                },
                "oldMemberId": {
                    "type": "integer"
@@ -11815,6 +11824,9 @@
                "remark": {
                    "type": "string"
                },
                "satisfaction": {
                    "$ref": "#/definitions/model.Satisfaction"
                },
                "satisfactionId": {
                    "type": "integer"
                },
@@ -11824,9 +11836,15 @@
                "serviceOrder": {
                    "$ref": "#/definitions/model.ServiceOrder"
                },
                "solveRate": {
                    "$ref": "#/definitions/model.SolveRate"
                },
                "solveRateId": {
                    "type": "integer"
                },
                "timelyRate": {
                    "$ref": "#/definitions/model.TimelyRate"
                },
                "timelyRateId": {
                    "type": "integer"
                }
docs/swagger.json
@@ -11764,6 +11764,9 @@
        "model.ServiceFollowup": {
            "type": "object",
            "properties": {
                "Member": {
                    "$ref": "#/definitions/model.User"
                },
                "client": {
                    "$ref": "#/definitions/model.Client"
                },
@@ -11785,6 +11788,9 @@
                "id": {
                    "type": "integer"
                },
                "isVisit": {
                    "$ref": "#/definitions/model.IsVisit"
                },
                "isVisitId": {
                    "type": "integer"
                },
@@ -11793,6 +11799,9 @@
                },
                "number": {
                    "type": "string"
                },
                "oldMember": {
                    "$ref": "#/definitions/model.User"
                },
                "oldMemberId": {
                    "type": "integer"
@@ -11803,6 +11812,9 @@
                "remark": {
                    "type": "string"
                },
                "satisfaction": {
                    "$ref": "#/definitions/model.Satisfaction"
                },
                "satisfactionId": {
                    "type": "integer"
                },
@@ -11812,9 +11824,15 @@
                "serviceOrder": {
                    "$ref": "#/definitions/model.ServiceOrder"
                },
                "solveRate": {
                    "$ref": "#/definitions/model.SolveRate"
                },
                "solveRateId": {
                    "type": "integer"
                },
                "timelyRate": {
                    "$ref": "#/definitions/model.TimelyRate"
                },
                "timelyRateId": {
                    "type": "integer"
                }
docs/swagger.yaml
@@ -1436,6 +1436,8 @@
    type: object
  model.ServiceFollowup:
    properties:
      Member:
        $ref: '#/definitions/model.User'
      client:
        $ref: '#/definitions/model.Client'
      clientId:
@@ -1450,26 +1452,36 @@
        type: string
      id:
        type: integer
      isVisit:
        $ref: '#/definitions/model.IsVisit'
      isVisitId:
        type: integer
      memberId:
        type: integer
      number:
        type: string
      oldMember:
        $ref: '#/definitions/model.User'
      oldMemberId:
        type: integer
      planId:
        type: integer
      remark:
        type: string
      satisfaction:
        $ref: '#/definitions/model.Satisfaction'
      satisfactionId:
        type: integer
      serviceId:
        type: integer
      serviceOrder:
        $ref: '#/definitions/model.ServiceOrder'
      solveRate:
        $ref: '#/definitions/model.SolveRate'
      solveRateId:
        type: integer
      timelyRate:
        $ref: '#/definitions/model.TimelyRate'
      timelyRateId:
        type: integer
    type: object
model/index.go
@@ -1,108 +1,108 @@
package model
import (
    "aps_crm/conf"
    "aps_crm/pkg/logx"
    "aps_crm/pkg/mysqlx"
    "aps_crm/pkg/safe"
    "gorm.io/gorm/schema"
)
func Init() error {
    if err := mysqlx.Init(&conf.Conf.Mysql, logx.GetLogger()); err != nil {
        return err
    }
    if err := RegisterTables(); err != nil {
        return err
    }
    safe.Go(func() {
        InsertDefaultData()
    })
    return nil
}
func RegisterTables() error {
    db := mysqlx.GetDB()
    err := db.AutoMigrate(
        User{},
        Menu{},
        JwtBlacklist{},
        Country{},
        Province{},
        City{},
        Client{},
        ClientLevel{},
        ClientOrigin{},
        ClientStatus{},
        ClientType{},
        Contact{},
        EnterpriseNature{},
        EnterpriseScale{},
        FollowRecord{},
        Industry{},
        RegisteredCapital{},
        SaleChance{},
        SalesLeads{},
        SalesSources{},
        SaleStage{},
        SaleType{},
        RegularCustomers{},
        Possibility{},
        Status{},
        Quotation{},
        MasterOrder{},
        SubOrder{},
        Product{},
        SalesDetails{},
        SalesReturn{},
        SalesRefund{},
        Contract{},
        Plan{},
        ServiceContract{},
        OrderManage{},
        ServiceFollowup{},
        CustomerServiceSheet{},
        ServiceFeeManage{},
        Authority{},
        Api{},
        Department{},
        Satisfaction{},
        TimelyRate{},
        SolveRate{},
        IsVisit{},
        IsVisit{},
        ReportSource{},
        OrderType{},
        ServiceContractStatus{},
        ServiceContractType{},
        RefundMethod{},
        IsInvoice{},
        AccountId{},
        SalesReturnStatus{},
        Repository{},
        QuotationStatus{},
        Currency{},
    )
    return err
}
type InitDefaultData interface {
    InitDefaultData() error
}
func InsertDefaultData() {
    models := []interface{}{
        NewServiceTypeSearch(),
        NewPriorityLevelSearch(),
        NewSeveritySearch(),
        NewTimeSpentSearch(),
    }
    for _, model := range models {
        if id, ok := model.(InitDefaultData); ok {
            if err := id.InitDefaultData(); err != nil {
                logx.Errorf("InitDefaultData for table: %v, err :%v", model.(schema.Tabler).TableName(), err.Error())
            }
        }
    }
}
package model
import (
    "aps_crm/conf"
    "aps_crm/pkg/logx"
    "aps_crm/pkg/mysqlx"
    "aps_crm/pkg/safe"
    "gorm.io/gorm/schema"
)
func Init() error {
    if err := mysqlx.Init(&conf.Conf.Mysql, logx.GetLogger()); err != nil {
        return err
    }
    if err := RegisterTables(); err != nil {
        return err
    }
    safe.Go(func() {
        InsertDefaultData()
    })
    return nil
}
func RegisterTables() error {
    db := mysqlx.GetDB()
    err := db.AutoMigrate(
        User{},
        Menu{},
        JwtBlacklist{},
        Country{},
        Province{},
        City{},
        Client{},
        ClientLevel{},
        ClientOrigin{},
        ClientStatus{},
        ClientType{},
        Contact{},
        EnterpriseNature{},
        EnterpriseScale{},
        FollowRecord{},
        Industry{},
        RegisteredCapital{},
        SaleChance{},
        SalesLeads{},
        SalesSources{},
        SaleStage{},
        SaleType{},
        RegularCustomers{},
        Possibility{},
        Status{},
        Quotation{},
        MasterOrder{},
        SubOrder{},
        Product{},
        SalesDetails{},
        SalesReturn{},
        SalesRefund{},
        Contract{},
        Plan{},
        ServiceContract{},
        OrderManage{},
        ServiceFollowup{},
        CustomerServiceSheet{},
        ServiceFeeManage{},
        Authority{},
        Api{},
        Department{},
        Satisfaction{},
        TimelyRate{},
        SolveRate{},
        IsVisit{},
        IsVisit{},
        ReportSource{},
        OrderType{},
        ServiceContractStatus{},
        ServiceContractType{},
        RefundMethod{},
        IsInvoice{},
        AccountId{},
        SalesReturnStatus{},
        Repository{},
        QuotationStatus{},
        Currency{},
    )
    return err
}
type InitDefaultData interface {
    InitDefaultData() error
}
func InsertDefaultData() {
    models := []interface{}{
        NewServiceTypeSearch(),
        NewPriorityLevelSearch(),
        NewSeveritySearch(),
        NewTimeSpentSearch(),
    }
    for _, model := range models {
        if id, ok := model.(InitDefaultData); ok {
            if err := id.InitDefaultData(); err != nil {
                logx.Errorf("InitDefaultData for table: %v, err :%v", model.(schema.Tabler).TableName(), err.Error())
            }
        }
    }
}
model/serviceContract.go
@@ -26,9 +26,9 @@
        Quotation               Quotation             `json:"quotation" gorm:"foreignKey:QuotationId"`
        ServiceContractTypeId   int                   `json:"serviceContractTypeId" gorm:"column:service_contract_type_id;type:int;comment:合同类型id"`
        ServiceContractType     ServiceContractType   `json:"serviceContractType" gorm:"foreignKey:ServiceContractTypeId"`
        SignTime                string                `json:"signTime" gorm:"column:sign_time;type:datetime;comment:签约时间"`
        StartTime               string                `json:"startTime" gorm:"column:start_time;type:datetime;comment:开始时间"`
        EndTime                 string                `json:"endTime" gorm:"column:end_time;type:datetime;comment:结束时间"`
        SignTime                string                `json:"signTime" gorm:"column:sign_time;type:varchar(255);comment:签约时间"`
        StartTime               string                `json:"startTime" gorm:"column:start_time;type:varchar(255);comment:开始时间"`
        EndTime                 string                `json:"endTime" gorm:"column:end_time;type:varchar(255);comment:结束时间"`
        ServiceContractStatusId int                   `json:"serviceContractStatusId" gorm:"column:service_contract_status_id;type:int;comment:合同状态id"`
        ServiceContractStatus   ServiceContractStatus `json:"serviceContractStatus" gorm:"foreignKey:ServiceContractStatusId"`
        ServiceTimes            int                   `json:"serviceTimes" gorm:"column:service_times;type:int;comment:服务次数"`
model/serviceFollowup.go
@@ -18,12 +18,18 @@
        ServiceOrder         ServiceOrder         `gorm:"foreignKey:ServiceId"`
        CustomerServiceSheet CustomerServiceSheet `json:"customerServiceSheet" gorm:"foreignKey:ServiceId"`
        MemberId             int                  `json:"memberId" gorm:"column:member_id;type:int;comment:服务人员id"`
        Member               User                 `json:"Member" gorm:"foreignKey:MemberId"`
        PlanId               int                  `json:"planId" gorm:"column:plan_id;type:int;comment:服务计划id"`
        SatisfactionId       int                  `json:"satisfactionId" gorm:"column:satisfaction_id;type:int;comment:满意度id"`
        Satisfaction         Satisfaction         `json:"satisfaction" gorm:"foreignKey:SatisfactionId"`
        TimelyRateId         int                  `json:"timelyRateId" gorm:"column:timely_rate_id;type:int;comment:及时率id"`
        TimelyRate           TimelyRate           `json:"timelyRate" gorm:"foreignKey:TimelyRateId"`
        SolveRateId          int                  `json:"solveRateId" gorm:"column:solve_rate_id;type:int;comment:解决率id"`
        SolveRate            SolveRate            `json:"solveRate" gorm:"foreignKey:SolveRateId"`
        IsVisitId            int                  `json:"isVisitId" gorm:"column:is_visit_id;type:int;comment:服务人员是否来过id"`
        IsVisit              IsVisit              `json:"isVisit"  gorm:"foreignKey:IsVisitId"`
        OldMemberId          int                  `json:"oldMemberId" gorm:"column:old_member_id;type:int;comment:原服务人员"`
        OldMember            User                 `json:"oldMember" gorm:"foreignKey:OldMemberId"`
        Remark               string               `json:"remark" gorm:"column:remark;type:text;comment:备注"`
        File                 string               `json:"file" gorm:"column:file;type:varchar(255);comment:附件"`
@@ -78,7 +84,13 @@
        db = db.Preload("CustomerServiceSheet").
            Preload("ServiceOrder").
            Preload("Client").
            Preload("Contact")
            Preload("Contact").
            Preload("Satisfaction").
            Preload("TimelyRate").
            Preload("SolveRate").
            Preload("IsVisit").
            Preload("OldMember").
            Preload("Member")
    }
    return db
model/serviceOrder.go
@@ -13,44 +13,44 @@
    // ServiceOrder 服务单
    ServiceOrder struct {
        Id              int           `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
        ServiceNumber   string        `gorm:"service_number" json:"serviceNumber"` // 服务单编号
        ClientId        int           `gorm:"client_id" json:"clientId"`           // 客户id
        ServiceNumber   string        `gorm:"column:service_number;type:varchar(255);not null;default:'';comment:'服务单编号'" json:"serviceNumber"` // 服务单编号
        ClientId        int           `gorm:"column:client_id;type:int;not null;default:0;comment:'客户id'" json:"clientId"`                      // 客户id
        Client          Client        `gorm:"foreignKey:ClientId"`
        ContractId      int           `gorm:"contract_id" json:"contractId"` // 合同id
        ContractId      int           `gorm:"column:contract_id;type:int;not null;default:0;comment:'合同id'" json:"contractId"` // 合同id
        Contract        Contract      `gorm:"foreignKey:ContractId"`
        OrderId         int           `gorm:"order_id" json:"orderId"` // 销售订单id
        OrderId         int           `gorm:"column:order_id;type:int;not null;default:0;comment:'销售订单id'" json:"orderId"` // 销售订单id
        OrderManage     OrderManage   `gorm:"foreignKey:OrderId"`
        Subject         string        `gorm:"subject" json:"subject"`      // 主题
        ProductId       int           `gorm:"product_id" json:"productId"` // 产品id
        Subject         string        `gorm:"column:subject;type:varchar(255);not null;default:'';comment:'主题'" json:"subject"` // 主题
        ProductId       int           `gorm:"column:product_id;type:int;not null;default:0;comment:'产品id'" json:"productId"`    // 产品id
        Product         Product       `gorm:"foreignKey:ProductId"`
        ServiceTypeId   int           `gorm:"service_type_id" json:"serviceTypeId"` // 服务方式id
        ServiceTypeId   int           `gorm:"column:service_type_id;type:int;not null;default:0;comment:'服务方式id'" json:"serviceTypeId"` // 服务方式id
        ServiceType     ServiceType   `gorm:"foreignKey:ServiceTypeId"`
        ServiceManId    int           `gorm:"service_man_id" json:"serviceManId"` // 服务人员
        ContactId       int           `gorm:"linkman_id" json:"contactId"`        // 联系人id
        ServiceManId    int           `gorm:"column:service_man_id;type:int;not null;default:0;comment:'服务人员'" json:"serviceManId"` // 服务人员
        ContactId       int           `gorm:"linkman_id" json:"contactId"`                                                          // 联系人id
        Contact         Contact       `gorm:"foreignKey:ContactId"`
        Address         string        `gorm:"address" json:"address"`                   // 上门地址
        PriorityLevelId int           `gorm:"priority_level_id" json:"priorityLevelId"` // 优先级别id
        Address         string        `gorm:"column:address;type:varchar(255);not null;default:'';comment:'上门地址'" json:"address"`           // 上门地址
        PriorityLevelId int           `gorm:"column:priority_level_id;type:int;not null;default:0;comment:'优先级别id'" json:"priorityLevelId"` // 优先级别id
        PriorityLevel   PriorityLevel `gorm:"foreignKey:PriorityLevelId"`
        AppointmentTime string        `gorm:"appointment_time" json:"appointmentTime"` // 预约上门时间
        SaleChanceId    int           `gorm:"sale_leads" json:"saleChanceId"`          // 销售机会id
        AppointmentTime string        `gorm:"appointment_time" json:"appointmentTime"`                                                // 预约上门时间
        SaleChanceId    int           `gorm:"column:sale_chance_id;type:int;not null;default:0;comment:'销售机会id'" json:"saleChanceId"` // 销售机会id
        SaleChance      SaleChance    `gorm:"foreignKey:SaleChanceId"`
        FaultTypeId     int           `gorm:"severity_id" json:"faultTypeId"` // 故障类别id
        FaultTypeId     int           `gorm:"column:severity_id;type:int;not null;default:0;comment:'故障类别id'" json:"faultTypeId"` // 故障类别id
        FaultType       FaultType     `gorm:"foreignKey:FaultTypeId"`
        SeverityId      int           `gorm:"severity_id" json:"severity"` // 严重程度id
        SeverityId      int           `gorm:"column:severity_id;type:int;not null;default:0;comment:'严重程度id'" json:"severity"` // 严重程度id
        Severity        Severity      `gorm:"foreignKey:SeverityId"`
        Status          int           `gorm:"status" json:"status"`              // 处理状态
        ExpectTime      string        `gorm:"expect_time" json:"expectTime"`     // 希望处理时间
        RealTime        string        `gorm:"real_time" json:"realTime"`         // 实际处理时间
        CarFare         float64       `gorm:"car_fare" json:"carFare"`           // 交通费
        ChargeAmount    float64       `gorm:"charge_amount" json:"chargeAmount"` // 收费金额
        TimeSpentId     int           `gorm:"time_spent_id" json:"timeSpentId"`  // 花费时间
        Status          int           `gorm:"status" json:"status"`                                                                        // 处理状态
        ExpectTime      string        `gorm:"column:expect_time;type:varchar(255);not null;default:'';comment:'希望处理时间'" json:"expectTime"` // 希望处理时间
        RealTime        string        `gorm:"column:real_time;type:varchar(255);not null;default:'';comment:'实际处理时间'" json:"realTime"`     // 实际处理时间
        CarFare         float64       `gorm:"car_fare" json:"carFare"`                                                                     // 交通费
        ChargeAmount    float64       `gorm:"charge_amount" json:"chargeAmount"`                                                           // 收费金额
        TimeSpentId     int           `gorm:"column:time_spent_id;type:int;not null;default:0;comment:'花费时间'" json:"timeSpentId"`          // 花费时间
        TimeSpent       TimeSpent     `gorm:"foreignKey:TimeSpentId"`
        FaqId           int           `gorm:"problem_id" json:"faqId"` // 常见问题id
        FaqId           int           `gorm:"column:problem_id;type:int;not null;default:0;comment:'常见问题id'" json:"faqId"` // 常见问题id
        Faq             Faq           `gorm:"foreignKey:FaqId"`
        ProblemDesc     string        `gorm:"problem_desc" json:"problemDesc"`       // 问题描述
        Solution        string        `gorm:"solution" json:"solution"`              // 解决方法
        SolutionRemark  string        `gorm:"solution_remark" json:"solutionRemark"` // 内部备注
        Remark          string        `gorm:"remark" json:"remark"`                  // 备注
        ProblemDesc     string        `gorm:"column:subject;type:varchar(255);not null;default:'';comment:'主题'problem_desc" json:"problemDesc"`  // 问题描述
        Solution        string        `gorm:"column:solution;type:varchar(255);not null;default:'';comment:'解决方法'" json:"solution"`              // 解决方法
        SolutionRemark  string        `gorm:"column:solution_remark;type:varchar(255);not null;default:'';comment:'内部备注'" json:"solutionRemark"` // 内部备注
        Remark          string        `gorm:"column:remark;type:varchar(255);not null;default:'';comment:'备注'" json:"remark"`                    // 备注
    }
    // ServiceOrderSearch 服务单搜索条件
model/timeSpent.go
@@ -12,18 +12,18 @@
    // TimeSpent 花费时间
    TimeSpent struct {
        Id   int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
        Name   string    `json:"name" gorm:"column:name"`
        Name string `json:"name" gorm:"column:name;type:varchar(255);not null;default:'';comment:名称"`
    }
    // TimeSpentSearch 花费时间搜索条件
    TimeSpentSearch struct {
        TimeSpent
        Orm *gorm.DB
        QueryClass  constvar.TimeSpentQueryClass
        KeywordType constvar.TimeSpentKeywordType
        Keyword     string
        PageNum  int
        PageSize int
        Orm         *gorm.DB
        QueryClass  constvar.TimeSpentQueryClass
        KeywordType constvar.TimeSpentKeywordType
        Keyword     string
        PageNum     int
        PageSize    int
    }
)