zhangqian
2023-08-10 f67698f7abf35689f24fdb17827249de79034a95
服务单增加筛选条件
10个文件已修改
351 ■■■■■ 已修改文件
api/v1/serviceOrder.go 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/serviceOrder.go 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/request/serviceOrder.go 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/salesDetails.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/serviceContract.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/serviceOrder.go 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/serviceOrder.go 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/serviceOrder.go
@@ -99,15 +99,17 @@
// @Tags        服务单管理
// @Summary    获取服务单列表
// @Produce    application/json
// @Param        object    query        request.GetServiceOrderList    true    "参数"
// @Success    200    {object}    response.ListResponse{data=[]model.ServiceOrder}
// @Router        /api/serviceOrder/list [get]
func (s *ServiceOrderApi) List(c *gin.Context) {
    ctx, ok := contextx.NewContext(c, nil)
    var params request.GetServiceOrderList
    ctx, ok := contextx.NewContext(c, &params)
    if !ok {
        return
    }
    serviceOrder, total, errCode := service.NewServiceOrderService().GetServiceOrderList()
    serviceOrder, total, errCode := service.NewServiceOrderService().GetServiceOrderList(params.Page, params.PageSize, params.QueryClass, params.KeywordType, params.Keyword)
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
constvar/serviceOrder.go
@@ -1,4 +1,5 @@
package constvar
type ServiceOrderQueryClass string
const (
@@ -8,5 +9,12 @@
type ServiceOrderKeywordType string
const (
    ServiceOrderKeywordCustomerName   ServiceOrderKeywordType = ""
    ServiceOrderKeywordOrderNumber     ServiceOrderKeywordType = "服务单编号"
    ServiceOrderKeywordSubject         ServiceOrderKeywordType = "主题"
    ServiceOrderKeywordClientName      ServiceOrderKeywordType = "客户名称"
    ServiceOrderKeywordRealProcessTime ServiceOrderKeywordType = "实际处理时间"
    ServiceOrderKeywordServiceMan      ServiceOrderKeywordType = "服务人员"
    ServiceOrderKeywordServiceType     ServiceOrderKeywordType = "服务方式"
    ServiceOrderKeywordProductType     ServiceOrderKeywordType = "产品类别"
    ServiceOrderKeywordFaultType       ServiceOrderKeywordType = "故障类别"
)
docs/docs.go
@@ -8275,6 +8275,61 @@
                    "服务单管理"
                ],
                "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"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
@@ -9965,6 +10020,38 @@
                "ServiceFollowupKeywordSatisfactionDegree"
            ]
        },
        "constvar.ServiceOrderKeywordType": {
            "type": "string",
            "enum": [
                "服务单编号",
                "主题",
                "客户名称",
                "实际处理时间",
                "服务人员",
                "服务方式",
                "产品类别",
                "故障类别"
            ],
            "x-enum-varnames": [
                "ServiceOrderKeywordOrderNumber",
                "ServiceOrderKeywordSubject",
                "ServiceOrderKeywordClientName",
                "ServiceOrderKeywordRealProcessTime",
                "ServiceOrderKeywordServiceMan",
                "ServiceOrderKeywordServiceType",
                "ServiceOrderKeywordProductType",
                "ServiceOrderKeywordFaultType"
            ]
        },
        "constvar.ServiceOrderQueryClass": {
            "type": "string",
            "enum": [
                ""
            ],
            "x-enum-varnames": [
                "ServiceOrderQueryClassExpireLessThen60Days"
            ]
        },
        "constvar.UserType": {
            "type": "integer",
            "enum": [
docs/swagger.json
@@ -8263,6 +8263,61 @@
                    "服务单管理"
                ],
                "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"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
@@ -9953,6 +10008,38 @@
                "ServiceFollowupKeywordSatisfactionDegree"
            ]
        },
        "constvar.ServiceOrderKeywordType": {
            "type": "string",
            "enum": [
                "服务单编号",
                "主题",
                "客户名称",
                "实际处理时间",
                "服务人员",
                "服务方式",
                "产品类别",
                "故障类别"
            ],
            "x-enum-varnames": [
                "ServiceOrderKeywordOrderNumber",
                "ServiceOrderKeywordSubject",
                "ServiceOrderKeywordClientName",
                "ServiceOrderKeywordRealProcessTime",
                "ServiceOrderKeywordServiceMan",
                "ServiceOrderKeywordServiceType",
                "ServiceOrderKeywordProductType",
                "ServiceOrderKeywordFaultType"
            ]
        },
        "constvar.ServiceOrderQueryClass": {
            "type": "string",
            "enum": [
                ""
            ],
            "x-enum-varnames": [
                "ServiceOrderQueryClassExpireLessThen60Days"
            ]
        },
        "constvar.UserType": {
            "type": "integer",
            "enum": [
docs/swagger.yaml
@@ -238,6 +238,32 @@
    - ServiceFollowupKeywordCustomerServiceNo
    - ServiceFollowupKeywordVisitor
    - ServiceFollowupKeywordSatisfactionDegree
  constvar.ServiceOrderKeywordType:
    enum:
    - 服务单编号
    - 主题
    - 客户名称
    - 实际处理时间
    - 服务人员
    - 服务方式
    - 产品类别
    - 故障类别
    type: string
    x-enum-varnames:
    - ServiceOrderKeywordOrderNumber
    - ServiceOrderKeywordSubject
    - ServiceOrderKeywordClientName
    - ServiceOrderKeywordRealProcessTime
    - ServiceOrderKeywordServiceMan
    - ServiceOrderKeywordServiceType
    - ServiceOrderKeywordProductType
    - ServiceOrderKeywordFaultType
  constvar.ServiceOrderQueryClass:
    enum:
    - ""
    type: string
    x-enum-varnames:
    - ServiceOrderQueryClassExpireLessThen60Days
  constvar.UserType:
    enum:
    - 1
@@ -10515,6 +10541,46 @@
      - 服务单管理
  /api/serviceOrder/list:
    get:
      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
      produces:
      - application/json
      responses:
model/request/serviceOrder.go
@@ -40,7 +40,7 @@
type GetServiceOrderList struct {
    PageInfo
    QueryClass  constvar.ServiceOrderQueryClass  `json:"queryClass"`
    KeywordType constvar.ServiceOrderKeywordType `json:"keywordType"`
    Keyword     string                           `json:"keyword"`
    QueryClass  constvar.ServiceOrderQueryClass  `json:"queryClass" form:"queryClass"`
    KeywordType constvar.ServiceOrderKeywordType `json:"keywordType" form:"keywordType"`
    Keyword     string                           `json:"keyword" form:"keyword"`
}
model/salesDetails.go
@@ -77,7 +77,7 @@
    case constvar.SalesDetailsKeywordTypePrincipal:
        db = db.Joins("left join user on user.id = sales_details.member_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
    case constvar.SalesDetailsKeywordTypeProductName:
        //db = db.Joins("left join sales_details_product sdp on sdp.sales_details_id = sales_details.id left join product").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
        db = db.Joins("left join sales_details_product sdp on sdp.sales_details_id = sales_details.id left join products on sdp.product_id = products.id").Where("products.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
    }
    if slf.Preload {
model/serviceContract.go
@@ -96,7 +96,7 @@
    case constvar.ServiceContractKeywordPrincipal:
        db = db.Joins("left join user on user.id = service_contract.member_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
    case constvar.ServiceContractKeywordProductName:
        db = db.Joins("Products", clause.LeftJoin).Where("Products.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
        db = db.Joins("left join service_contract_product scp on scp.service_contract_id = service_contract.id left join products on scp.product_id = products.id").Where("products.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
    case constvar.ServiceContractKeywordServiceBeginDate:
        db = db.Where("start_time = ?", slf.Keyword)
    case constvar.ServiceContractKeywordServiceEndDate:
model/serviceOrder.go
@@ -6,6 +6,7 @@
    "errors"
    "fmt"
    "gorm.io/gorm"
    "gorm.io/gorm/clause"
)
type (
@@ -32,25 +33,24 @@
        PriorityLevel   PriorityLevel `gorm:"foreignKey:PriorityLevelId"`
        AppointmentTime string        `gorm:"appointment_time" json:"appointmentTime"` // 预约上门时间
        SaleChanceId    int           `gorm:"sale_leads" json:"saleChanceId"`          // 销售机会id
        SaleChance     SaleChance `gorm:"foreignKey:SaleChanceId"`
        FaultTypeId    int        `gorm:"severity_id" json:"faultTypeId"` // 故障类别id
        FaultType      FaultType  `gorm:"foreignKey:FaultTypeId"`
        SeverityId     int        `gorm:"severity_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"`  // 花费时间
        TimeSpent      TimeSpent  `gorm:"foreignKey:TimeSpentId"`
        FaqId          int        `gorm:"problem_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"`                  // 备注
        SaleChance      SaleChance    `gorm:"foreignKey:SaleChanceId"`
        FaultTypeId     int           `gorm:"severity_id" json:"faultTypeId"` // 故障类别id
        FaultType       FaultType     `gorm:"foreignKey:FaultTypeId"`
        SeverityId      int           `gorm:"severity_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"`  // 花费时间
        TimeSpent       TimeSpent     `gorm:"foreignKey:TimeSpentId"`
        FaqId           int           `gorm:"problem_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"`                  // 备注
    }
    // ServiceOrderSearch 服务单搜索条件
@@ -94,6 +94,22 @@
            Preload("Severity").
            Preload("Faq")
    }
    switch slf.KeywordType {
    case constvar.ServiceOrderKeywordClientName:
        db = db.Joins("Client", clause.LeftJoin).Where("Client.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
    case constvar.ServiceOrderKeywordOrderNumber:
        db = db.Where("service_number = ?", fmt.Sprintf("%%%s%%", slf.Keyword))
    case constvar.ServiceOrderKeywordSubject:
        db = db.Where("subject = ?", fmt.Sprintf("%%%s%%", slf.Keyword))
    case constvar.ServiceOrderKeywordRealProcessTime:
        db = db.Where("real_time = ?", fmt.Sprintf("%%%s%%", slf.Keyword))
    case constvar.ServiceOrderKeywordServiceMan:
        db = db.Joins("left join user on user.id = service_order.service_man_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
    case constvar.ServiceOrderKeywordServiceType:
        db = db.Joins("ServiceType", clause.LeftJoin).Where("ServiceType.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
    case constvar.ServiceOrderKeywordFaultType:
        db = db.Joins("FaultType", clause.LeftJoin).Where("FaultType.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
    }
    return db
}
@@ -125,6 +141,26 @@
    return slf
}
func (slf *ServiceOrderSearch) SetPage(page, size int) *ServiceOrderSearch {
    slf.PageNum, slf.PageSize = page, size
    return slf
}
func (slf *ServiceOrderSearch) SetKeywordType(keyword constvar.ServiceOrderKeywordType) *ServiceOrderSearch {
    slf.KeywordType = keyword
    return slf
}
func (slf *ServiceOrderSearch) SetQueryClass(queryClass constvar.ServiceOrderQueryClass) *ServiceOrderSearch {
    slf.QueryClass = queryClass
    return slf
}
func (slf *ServiceOrderSearch) SetKeyword(keyword string) *ServiceOrderSearch {
    slf.Keyword = keyword
    return slf
}
func (slf *ServiceOrderSearch) SetPreload(preload bool) *ServiceOrderSearch {
    slf.Preload = preload
    return slf
service/serviceOrder.go
@@ -1,6 +1,7 @@
package service
import (
    "aps_crm/constvar"
    "aps_crm/model"
    "aps_crm/model/request"
    "aps_crm/pkg/ecode"
@@ -29,8 +30,14 @@
    return ecode.OK
}
func (ServiceOrderService) GetServiceOrderList() ([]*model.ServiceOrder, int64, int) {
    list, total, err := model.NewServiceOrderSearch().SetPreload(true).Find()
func (ServiceOrderService) GetServiceOrderList(page, pageSize int, queryClass constvar.ServiceOrderQueryClass, keywordType constvar.ServiceOrderKeywordType, keyword string) ([]*model.ServiceOrder, int64, int) {
    list, total, err := model.NewServiceOrderSearch().
        SetPage(page, pageSize).
        SetKeyword(keyword).
        SetKeywordType(keywordType).
        SetQueryClass(queryClass).
        SetPreload(true).
        Find()
    if err != nil {
        return nil, 0, ecode.DBErr
    }