fix
zhangqian
2023-08-10 8fab255a4509a7ec5bfc7439b6e352054d677e29
fix
7个文件已修改
557 ■■■■ 已修改文件
api/v1/serviceOrder.go 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/serviceFollowup.go 305 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
router/serviceOrder.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/serviceFollowup.go 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/serviceOrder.go
@@ -99,9 +99,9 @@
// @Tags        服务单管理
// @Summary    获取服务单列表
// @Produce    application/json
// @Param        object    query        request.GetServiceOrderList    true    "参数"
// @Param        object    body        request.GetServiceOrderList    true    "参数"
// @Success    200    {object}    response.ListResponse{data=[]model.ServiceOrder}
// @Router        /api/serviceOrder/list [get]
// @Router        /api/serviceOrder/list [post]
func (s *ServiceOrderApi) List(c *gin.Context) {
    var params request.GetServiceOrderList
    ctx, ok := contextx.NewContext(c, &params)
docs/docs.go
@@ -8267,7 +8267,7 @@
            }
        },
        "/api/serviceOrder/list": {
            "get": {
            "post": {
                "produces": [
                    "application/json"
                ],
@@ -8277,57 +8277,13 @@
                "summary": "获取服务单列表",
                "parameters": [
                    {
                        "type": "string",
                        "name": "keyword",
                        "in": "query"
                    },
                    {
                        "enum": [
                            "服务单编号",
                            "主题",
                            "客户名称",
                            "实际处理时间",
                            "服务人员",
                            "服务方式",
                            "产品类别",
                            "故障类别"
                        ],
                        "type": "string",
                        "x-enum-varnames": [
                            "ServiceOrderKeywordOrderNumber",
                            "ServiceOrderKeywordSubject",
                            "ServiceOrderKeywordClientName",
                            "ServiceOrderKeywordRealProcessTime",
                            "ServiceOrderKeywordServiceMan",
                            "ServiceOrderKeywordServiceType",
                            "ServiceOrderKeywordProductType",
                            "ServiceOrderKeywordFaultType"
                        ],
                        "name": "keywordType",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "页码",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "每页大小",
                        "name": "pageSize",
                        "in": "query"
                    },
                    {
                        "enum": [
                            ""
                        ],
                        "type": "string",
                        "x-enum-varnames": [
                            "ServiceOrderQueryClassExpireLessThen60Days"
                        ],
                        "name": "queryClass",
                        "in": "query"
                        "description": "参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.GetServiceOrderList"
                        }
                    }
                ],
                "responses": {
@@ -11820,8 +11776,14 @@
        "model.ServiceFollowup": {
            "type": "object",
            "properties": {
                "client": {
                    "$ref": "#/definitions/model.Client"
                },
                "clientId": {
                    "type": "integer"
                },
                "contact": {
                    "$ref": "#/definitions/model.Contact"
                },
                "contactId": {
                    "type": "integer"
@@ -14374,6 +14336,28 @@
                }
            }
        },
        "request.GetServiceOrderList": {
            "type": "object",
            "properties": {
                "keyword": {
                    "type": "string"
                },
                "keywordType": {
                    "$ref": "#/definitions/constvar.ServiceOrderKeywordType"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
                },
                "pageSize": {
                    "description": "每页大小",
                    "type": "integer"
                },
                "queryClass": {
                    "$ref": "#/definitions/constvar.ServiceOrderQueryClass"
                }
            }
        },
        "request.GetSubOrderList": {
            "type": "object",
            "properties": {
docs/swagger.json
@@ -8255,7 +8255,7 @@
            }
        },
        "/api/serviceOrder/list": {
            "get": {
            "post": {
                "produces": [
                    "application/json"
                ],
@@ -8265,57 +8265,13 @@
                "summary": "获取服务单列表",
                "parameters": [
                    {
                        "type": "string",
                        "name": "keyword",
                        "in": "query"
                    },
                    {
                        "enum": [
                            "服务单编号",
                            "主题",
                            "客户名称",
                            "实际处理时间",
                            "服务人员",
                            "服务方式",
                            "产品类别",
                            "故障类别"
                        ],
                        "type": "string",
                        "x-enum-varnames": [
                            "ServiceOrderKeywordOrderNumber",
                            "ServiceOrderKeywordSubject",
                            "ServiceOrderKeywordClientName",
                            "ServiceOrderKeywordRealProcessTime",
                            "ServiceOrderKeywordServiceMan",
                            "ServiceOrderKeywordServiceType",
                            "ServiceOrderKeywordProductType",
                            "ServiceOrderKeywordFaultType"
                        ],
                        "name": "keywordType",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "页码",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "每页大小",
                        "name": "pageSize",
                        "in": "query"
                    },
                    {
                        "enum": [
                            ""
                        ],
                        "type": "string",
                        "x-enum-varnames": [
                            "ServiceOrderQueryClassExpireLessThen60Days"
                        ],
                        "name": "queryClass",
                        "in": "query"
                        "description": "参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.GetServiceOrderList"
                        }
                    }
                ],
                "responses": {
@@ -11808,8 +11764,14 @@
        "model.ServiceFollowup": {
            "type": "object",
            "properties": {
                "client": {
                    "$ref": "#/definitions/model.Client"
                },
                "clientId": {
                    "type": "integer"
                },
                "contact": {
                    "$ref": "#/definitions/model.Contact"
                },
                "contactId": {
                    "type": "integer"
@@ -14362,6 +14324,28 @@
                }
            }
        },
        "request.GetServiceOrderList": {
            "type": "object",
            "properties": {
                "keyword": {
                    "type": "string"
                },
                "keywordType": {
                    "$ref": "#/definitions/constvar.ServiceOrderKeywordType"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
                },
                "pageSize": {
                    "description": "每页大小",
                    "type": "integer"
                },
                "queryClass": {
                    "$ref": "#/definitions/constvar.ServiceOrderQueryClass"
                }
            }
        },
        "request.GetSubOrderList": {
            "type": "object",
            "properties": {
docs/swagger.yaml
@@ -1436,8 +1436,12 @@
    type: object
  model.ServiceFollowup:
    properties:
      client:
        $ref: '#/definitions/model.Client'
      clientId:
        type: integer
      contact:
        $ref: '#/definitions/model.Contact'
      contactId:
        type: integer
      customerServiceSheet:
@@ -3185,6 +3189,21 @@
      pageSize:
        description: 每页大小
        type: integer
    type: object
  request.GetServiceOrderList:
    properties:
      keyword:
        type: string
      keywordType:
        $ref: '#/definitions/constvar.ServiceOrderKeywordType'
      page:
        description: 页码
        type: integer
      pageSize:
        description: 每页大小
        type: integer
      queryClass:
        $ref: '#/definitions/constvar.ServiceOrderQueryClass'
    type: object
  request.GetSubOrderList:
    properties:
@@ -10540,47 +10559,14 @@
      tags:
      - 服务单管理
  /api/serviceOrder/list:
    get:
    post:
      parameters:
      - in: query
        name: keyword
        type: string
      - enum:
        - 服务单编号
        - 主题
        - 客户名称
        - 实际处理时间
        - 服务人员
        - 服务方式
        - 产品类别
        - 故障类别
        in: query
        name: keywordType
        type: string
        x-enum-varnames:
        - ServiceOrderKeywordOrderNumber
        - ServiceOrderKeywordSubject
        - ServiceOrderKeywordClientName
        - ServiceOrderKeywordRealProcessTime
        - ServiceOrderKeywordServiceMan
        - ServiceOrderKeywordServiceType
        - ServiceOrderKeywordProductType
        - ServiceOrderKeywordFaultType
      - description: 页码
        in: query
        name: page
        type: integer
      - description: 每页大小
        in: query
        name: pageSize
        type: integer
      - enum:
        - ""
        in: query
        name: queryClass
        type: string
        x-enum-varnames:
        - ServiceOrderQueryClassExpireLessThen60Days
      - description: 参数
        in: body
        name: object
        required: true
        schema:
          $ref: '#/definitions/request.GetServiceOrderList'
      produces:
      - application/json
      responses:
model/serviceFollowup.go
@@ -1,145 +1,160 @@
package model
import (
    "aps_crm/constvar"
    "aps_crm/pkg/mysqlx"
    "gorm.io/gorm"
)
type (
    ServiceFollowup struct {
        Id                   int                  `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
        ClientId             int                  `json:"clientId" gorm:"column:client_id;type:int;comment:客户id"`
        Number               string               `json:"number" gorm:"column:number;type:varchar(255);comment:合同编号"`
        ContactId            int                  `json:"contactId" gorm:"column:contact_id;type:int;comment:联系人id"`
        ServiceId            int                  `json:"serviceId" gorm:"column:service_id;type:int;comment:客户服务单id"`
        ServiceOrder         ServiceOrder         `gorm:"foreignKey:ServiceId"`
        CustomerServiceSheet CustomerServiceSheet `json:"customerServiceSheet" gorm:"foreignKey:ServiceId"`
        MemberId             int                  `json:"memberId" gorm:"column:member_id;type:int;comment:服务人员id"`
        PlanId               int                  `json:"planId" gorm:"column:plan_id;type:int;comment:服务计划id"`
        SatisfactionId       int                  `json:"satisfactionId" gorm:"column:satisfaction_id;type:int;comment:满意度id"`
        TimelyRateId         int                  `json:"timelyRateId" gorm:"column:timely_rate_id;type:int;comment:及时率id"`
        SolveRateId          int                  `json:"solveRateId" gorm:"column:solve_rate_id;type:int;comment:解决率id"`
        IsVisitId            int                  `json:"isVisitId" gorm:"column:is_visit_id;type:int;comment:服务人员是否来过id"`
        OldMemberId          int                  `json:"oldMemberId" gorm:"column:old_member_id;type:int;comment:原服务人员"`
        Remark               string               `json:"remark" gorm:"column:remark;type:text;comment:备注"`
        File                 string               `json:"file" gorm:"column:file;type:varchar(255);comment:附件"`
        gorm.Model `json:"-"`
    }
    ServiceFollowupSearch struct {
        ServiceFollowup
        Orm         *gorm.DB
        KeywordType constvar.ServiceFollowupKeywordType
        Keyword     interface{}
        OrderBy     string
        PageNum     int
        PageSize    int
    }
)
func (ServiceFollowup) TableName() string {
    return "service_followup"
}
func NewServiceFollowupSearch() *ServiceFollowupSearch {
    return &ServiceFollowupSearch{
        Orm: mysqlx.GetDB(),
    }
}
func (slf *ServiceFollowupSearch) build() *gorm.DB {
    var db = slf.Orm.Model(&ServiceFollowup{})
    if slf.Id != 0 {
        db = db.Where("id = ?", slf.Id)
    }
    switch slf.KeywordType {
    case constvar.ServiceFollowupKeywordFollowupNo:
        db = db.Where("number = ?", slf.Keyword)
    case constvar.ServiceFollowupKeywordCustomerName:
        db = db.Where("client_id = ?", slf.Keyword)
    case constvar.ServiceFollowupKeywordContactName:
        db = db.Where("contact_id = ?", slf.Keyword)
    case constvar.ServiceFollowupKeywordCustomerServiceNo:
        db = db.Where("service_id = ?", slf.Keyword)
    case constvar.ServiceFollowupKeywordVisitor:
        db = db.Where("member_id = ?", slf.Keyword)
    case constvar.ServiceFollowupKeywordSatisfactionDegree:
        db = db.Where("satisfaction_id = ?", slf.Keyword)
    }
    return db
}
func (slf *ServiceFollowupSearch) Create(record *ServiceFollowup) error {
    var db = slf.build()
    return db.Create(record).Error
}
func (slf *ServiceFollowupSearch) Update(record *ServiceFollowup) error {
    var db = slf.build()
    return db.Updates(record).Error
}
func (slf *ServiceFollowupSearch) Delete() error {
    var db = slf.build()
    return db.Delete(&ServiceFollowup{}).Error
}
func (slf *ServiceFollowupSearch) Find() (*ServiceFollowup, error) {
    var db = slf.build()
    var record = &ServiceFollowup{}
    err := db.First(record).Error
    return record, err
}
func (slf *ServiceFollowupSearch) FindAll() ([]*ServiceFollowup, int64, error) {
    var db = slf.build()
    var records = make([]*ServiceFollowup, 0)
    var total int64
    if err := db.Count(&total).Error; err != nil {
        return records, total, err
    }
    if slf.PageNum > 0 && slf.PageSize > 0 {
        db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
    }
    if slf.PageNum > 0 && slf.PageSize > 0 {
        db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
    }
    err := db.Preload("CustomerServiceSheet").Preload("ServiceOrder").Find(&records).Error
    return records, total, err
}
func (slf *ServiceFollowupSearch) SetId(id int) *ServiceFollowupSearch {
    slf.Id = id
    return slf
}
func (slf *ServiceFollowupSearch) SetKeywordType(keyword constvar.ServiceFollowupKeywordType) *ServiceFollowupSearch {
    slf.KeywordType = keyword
    return slf
}
func (slf *ServiceFollowupSearch) SetKeyword(keyword string) *ServiceFollowupSearch {
    slf.Keyword = keyword
    return slf
}
func (slf *ServiceFollowupSearch) SetPage(page, size int) *ServiceFollowupSearch {
    slf.PageNum, slf.PageSize = page, size
    return slf
}
func (slf *ServiceFollowupSearch) SetOrder(order string) *ServiceFollowupSearch {
    slf.OrderBy = order
    return slf
}
func (slf *ServiceFollowupSearch) SetIds(ids []int) *ServiceFollowupSearch {
    slf.Orm = slf.Orm.Where("id in (?)", ids)
    return slf
}
package model
import (
    "aps_crm/constvar"
    "aps_crm/pkg/mysqlx"
    "gorm.io/gorm"
)
type (
    ServiceFollowup struct {
        Id                   int                  `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
        ClientId             int                  `json:"clientId" gorm:"column:client_id;type:int;comment:客户id"`
        Client               Client               `json:"client" gorm:"foreignKey:ClientId"`
        Number               string               `json:"number" gorm:"column:number;type:varchar(255);comment:合同编号"`
        ContactId            int                  `json:"contactId" gorm:"column:contact_id;type:int;comment:联系人id"`
        Contact              Contact              `json:"contact"  gorm:"foreignKey:ContactId"`
        ServiceId            int                  `json:"serviceId" gorm:"column:service_id;type:int;comment:客户服务单id"`
        ServiceOrder         ServiceOrder         `gorm:"foreignKey:ServiceId"`
        CustomerServiceSheet CustomerServiceSheet `json:"customerServiceSheet" gorm:"foreignKey:ServiceId"`
        MemberId             int                  `json:"memberId" gorm:"column:member_id;type:int;comment:服务人员id"`
        PlanId               int                  `json:"planId" gorm:"column:plan_id;type:int;comment:服务计划id"`
        SatisfactionId       int                  `json:"satisfactionId" gorm:"column:satisfaction_id;type:int;comment:满意度id"`
        TimelyRateId         int                  `json:"timelyRateId" gorm:"column:timely_rate_id;type:int;comment:及时率id"`
        SolveRateId          int                  `json:"solveRateId" gorm:"column:solve_rate_id;type:int;comment:解决率id"`
        IsVisitId            int                  `json:"isVisitId" gorm:"column:is_visit_id;type:int;comment:服务人员是否来过id"`
        OldMemberId          int                  `json:"oldMemberId" gorm:"column:old_member_id;type:int;comment:原服务人员"`
        Remark               string               `json:"remark" gorm:"column:remark;type:text;comment:备注"`
        File                 string               `json:"file" gorm:"column:file;type:varchar(255);comment:附件"`
        gorm.Model `json:"-"`
    }
    ServiceFollowupSearch struct {
        ServiceFollowup
        Orm         *gorm.DB
        KeywordType constvar.ServiceFollowupKeywordType
        Keyword     interface{}
        OrderBy     string
        PageNum     int
        PageSize    int
        Preload     bool
    }
)
func (ServiceFollowup) TableName() string {
    return "service_followup"
}
func NewServiceFollowupSearch() *ServiceFollowupSearch {
    return &ServiceFollowupSearch{
        Orm: mysqlx.GetDB(),
    }
}
func (slf *ServiceFollowupSearch) build() *gorm.DB {
    var db = slf.Orm.Model(&ServiceFollowup{})
    if slf.Id != 0 {
        db = db.Where("id = ?", slf.Id)
    }
    switch slf.KeywordType {
    case constvar.ServiceFollowupKeywordFollowupNo:
        db = db.Where("number = ?", slf.Keyword)
    case constvar.ServiceFollowupKeywordCustomerName:
        db = db.Where("client_id = ?", slf.Keyword)
    case constvar.ServiceFollowupKeywordContactName:
        db = db.Where("contact_id = ?", slf.Keyword)
    case constvar.ServiceFollowupKeywordCustomerServiceNo:
        db = db.Where("service_id = ?", slf.Keyword)
    case constvar.ServiceFollowupKeywordVisitor:
        db = db.Where("member_id = ?", slf.Keyword)
    case constvar.ServiceFollowupKeywordSatisfactionDegree:
        db = db.Where("satisfaction_id = ?", slf.Keyword)
    }
    if slf.Preload {
        db = db.Preload("CustomerServiceSheet").
            Preload("ServiceOrder").
            Preload("Client").
            Preload("Contact")
    }
    return db
}
func (slf *ServiceFollowupSearch) Create(record *ServiceFollowup) error {
    var db = slf.build()
    return db.Create(record).Error
}
func (slf *ServiceFollowupSearch) Update(record *ServiceFollowup) error {
    var db = slf.build()
    return db.Updates(record).Error
}
func (slf *ServiceFollowupSearch) Delete() error {
    var db = slf.build()
    return db.Delete(&ServiceFollowup{}).Error
}
func (slf *ServiceFollowupSearch) Find() (*ServiceFollowup, error) {
    var db = slf.build()
    var record = &ServiceFollowup{}
    err := db.First(record).Error
    return record, err
}
func (slf *ServiceFollowupSearch) FindAll() ([]*ServiceFollowup, int64, error) {
    var db = slf.build()
    var records = make([]*ServiceFollowup, 0)
    var total int64
    if err := db.Count(&total).Error; err != nil {
        return records, total, err
    }
    if slf.PageNum > 0 && slf.PageSize > 0 {
        db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
    }
    if slf.PageNum > 0 && slf.PageSize > 0 {
        db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
    }
    err := db.Find(&records).Error
    return records, total, err
}
func (slf *ServiceFollowupSearch) SetId(id int) *ServiceFollowupSearch {
    slf.Id = id
    return slf
}
func (slf *ServiceFollowupSearch) SetPreload(preload bool) *ServiceFollowupSearch {
    slf.Preload = preload
    return slf
}
func (slf *ServiceFollowupSearch) SetKeywordType(keyword constvar.ServiceFollowupKeywordType) *ServiceFollowupSearch {
    slf.KeywordType = keyword
    return slf
}
func (slf *ServiceFollowupSearch) SetKeyword(keyword string) *ServiceFollowupSearch {
    slf.Keyword = keyword
    return slf
}
func (slf *ServiceFollowupSearch) SetPage(page, size int) *ServiceFollowupSearch {
    slf.PageNum, slf.PageSize = page, size
    return slf
}
func (slf *ServiceFollowupSearch) SetOrder(order string) *ServiceFollowupSearch {
    slf.OrderBy = order
    return slf
}
func (slf *ServiceFollowupSearch) SetIds(ids []int) *ServiceFollowupSearch {
    slf.Orm = slf.Orm.Where("id in (?)", ids)
    return slf
}
router/serviceOrder.go
@@ -12,6 +12,6 @@
        ServiceOrderRouter.POST("add", ServiceOrderApi.Add)             // 添加服务单
        ServiceOrderRouter.DELETE("delete/:id", ServiceOrderApi.Delete) // 删除服务单
        ServiceOrderRouter.PUT("update", ServiceOrderApi.Update)        // 更新服务单
        ServiceOrderRouter.GET("list", ServiceOrderApi.List)            // 获取服务单列表
        ServiceOrderRouter.POST("list", ServiceOrderApi.List)           // 获取服务单列表
    }
}
service/serviceFollowup.go
@@ -46,7 +46,9 @@
    contacts, total, err := model.NewServiceFollowupSearch().
        SetKeywordType(keywordType).
        SetKeyword(keyword).
        SetPage(page, pageSize).FindAll()
        SetPage(page, pageSize).
        SetPreload(true).
        FindAll()
    if err != nil {
        return nil, 0, ecode.ServiceFollowupListErr
    }