服务单管理故障类别增删改查,服务单管理花费时间增删改查,增加服务方式、花费时间、严重程度、优先级别初始化数据
13个文件已添加
15个文件已修改
2223 ■■■■ 已修改文件
api/v1/faultType.go 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/serviceOrder.go 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/serviceType.go 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/severity.go 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/timeSpent.go 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/faultType.go 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/timeSpent.go 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 447 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 447 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 302 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/faq.go 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/faultType.go 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/index.go 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/priorityLevel.go 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/request/faultType.go 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/request/serviceOrder.go 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/request/timeSpent.go 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/serviceOrder.go 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/serviceType.go 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/severity.go 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/timeSpent.go 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pkg/safe/safe.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pkg/structx/structx.go 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
router/faultType.go 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
router/timeSpent.go 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/faultType.go 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/serviceOrder.go 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/timeSpent.go 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/faultType.go
New file
@@ -0,0 +1,106 @@
package v1
import (
    "aps_crm/model/request"
    "aps_crm/model/response"
    "aps_crm/pkg/contextx"
    "aps_crm/pkg/ecode"
    "aps_crm/service"
    "github.com/gin-gonic/gin"
    "strconv"
)
type FaultTypeApi struct{}
// Add
// @Tags        故障类别管理
// @Summary    添加故障类别
// @Produce    application/json
// @Param        object    body        request.AddFaultType    true    "查询参数"
// @Success    200        {object}    contextx.Response{}
// @Router        /api/faultType/add [post]
func (s *FaultTypeApi) Add(c *gin.Context) {
    var params request.AddFaultType
    ctx, ok := contextx.NewContext(c, &params)
    if !ok {
        return
    }
    errCode := service.NewFaultTypeService().AddFaultType(&params.FaultType)
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
    }
    ctx.Ok()
}
// Delete
// @Tags        故障类别管理
// @Summary    删除故障类别
// @Produce    application/json
// @Param        id    path        int    true    "查询参数"
// @Success    200    {object}    contextx.Response{}
// @Router        /api/faultType/delete/{id} [delete]
func (s *FaultTypeApi) Delete(c *gin.Context) {
    ctx, ok := contextx.NewContext(c, nil)
    if !ok {
        return
    }
    id, _ := strconv.Atoi(c.Param("id"))
    errCode := service.NewFaultTypeService().DeleteFaultType(id)
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
    }
    ctx.Ok()
}
// Update
// @Tags        故障类别管理
// @Summary    更新故障类别
// @Produce    application/json
// @Param        object    body        request.UpdateFaultType    true    "查询参数"
// @Success    200        {object}    contextx.Response{}
// @Router        /api/faultType/update [put]
func (s *FaultTypeApi) Update(c *gin.Context) {
    var params request.UpdateFaultType
    ctx, ok := contextx.NewContext(c, &params)
    if !ok {
        return
    }
    errCode := service.NewFaultTypeService().UpdateFaultType(&params.FaultType)
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
    }
    ctx.Ok()
}
// List
// @Tags        故障类别管理
// @Summary    获取故障类别列表
// @Produce    application/json
// @Success    200    {object}    response.ListResponse{data=[]model.FaultType}
// @Router        /api/faultType/list [get]
func (s *FaultTypeApi) List(c *gin.Context) {
    ctx, ok := contextx.NewContext(c, nil)
    if !ok {
        return
    }
    faultType, total, errCode := service.NewFaultTypeService().GetFaultTypeList()
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
    }
    ctx.OkWithDetailed(response.ListResponse{
        Data: faultType,
        Count: total,
    })
}
api/v1/serviceOrder.go
@@ -6,6 +6,7 @@
    "aps_crm/model/response"
    "aps_crm/pkg/contextx"
    "aps_crm/pkg/ecode"
    "aps_crm/pkg/structx"
    "aps_crm/service"
    "github.com/gin-gonic/gin"
    "strconv"
@@ -28,6 +29,10 @@
    }
    serviceOrder := new(model.ServiceOrder)
    if err := structx.AssignTo(params, serviceOrder); err != nil {
        ctx.Fail(ecode.ParamsErr)
        return
    }
    errCode := service.NewServiceOrderService().AddServiceOrder(serviceOrder)
    if errCode != ecode.OK {
@@ -75,7 +80,13 @@
        return
    }
    errCode := service.NewServiceOrderService().UpdateServiceOrder(&params.ServiceOrder)
    serviceOrder := new(model.ServiceOrder)
    if err := structx.AssignTo(params, serviceOrder); err != nil {
        ctx.Fail(ecode.ParamsErr)
        return
    }
    errCode := service.NewServiceOrderService().UpdateServiceOrder(serviceOrder)
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
@@ -103,7 +114,7 @@
    }
    ctx.OkWithDetailed(response.ListResponse{
        Data: serviceOrder,
        Data:  serviceOrder,
        Count: total,
    })
}
api/v1/serviceType.go
@@ -1,7 +1,6 @@
package v1
import (
    "aps_crm/model"
    "aps_crm/model/request"
    "aps_crm/model/response"
    "aps_crm/pkg/contextx"
@@ -27,9 +26,7 @@
        return
    }
    serviceType := new(model.ServiceType)
    errCode := service.NewServiceTypeService().AddServiceType(serviceType)
    errCode := service.NewServiceTypeService().AddServiceType(&params.ServiceType)
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
api/v1/severity.go
@@ -1,7 +1,6 @@
package v1
import (
    "aps_crm/model"
    "aps_crm/model/request"
    "aps_crm/model/response"
    "aps_crm/pkg/contextx"
@@ -27,9 +26,7 @@
        return
    }
    severity := new(model.Severity)
    errCode := service.NewSeverityService().AddSeverity(severity)
    errCode := service.NewSeverityService().AddSeverity(&params.Severity)
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
api/v1/timeSpent.go
New file
@@ -0,0 +1,106 @@
package v1
import (
    "aps_crm/model/request"
    "aps_crm/model/response"
    "aps_crm/pkg/contextx"
    "aps_crm/pkg/ecode"
    "aps_crm/service"
    "github.com/gin-gonic/gin"
    "strconv"
)
type TimeSpentApi struct{}
// Add
// @Tags        花费时间管理
// @Summary    添加花费时间
// @Produce    application/json
// @Param        object    body        request.AddTimeSpent    true    "查询参数"
// @Success    200        {object}    contextx.Response{}
// @Router        /api/timeSpent/add [post]
func (s *TimeSpentApi) Add(c *gin.Context) {
    var params request.AddTimeSpent
    ctx, ok := contextx.NewContext(c, &params)
    if !ok {
        return
    }
    errCode := service.NewTimeSpentService().AddTimeSpent(&params.TimeSpent)
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
    }
    ctx.Ok()
}
// Delete
// @Tags        花费时间管理
// @Summary    删除花费时间
// @Produce    application/json
// @Param        id    path        int    true    "查询参数"
// @Success    200    {object}    contextx.Response{}
// @Router        /api/timeSpent/delete/{id} [delete]
func (s *TimeSpentApi) Delete(c *gin.Context) {
    ctx, ok := contextx.NewContext(c, nil)
    if !ok {
        return
    }
    id, _ := strconv.Atoi(c.Param("id"))
    errCode := service.NewTimeSpentService().DeleteTimeSpent(id)
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
    }
    ctx.Ok()
}
// Update
// @Tags        花费时间管理
// @Summary    更新花费时间
// @Produce    application/json
// @Param        object    body        request.UpdateTimeSpent    true    "查询参数"
// @Success    200        {object}    contextx.Response{}
// @Router        /api/timeSpent/update [put]
func (s *TimeSpentApi) Update(c *gin.Context) {
    var params request.UpdateTimeSpent
    ctx, ok := contextx.NewContext(c, &params)
    if !ok {
        return
    }
    errCode := service.NewTimeSpentService().UpdateTimeSpent(&params.TimeSpent)
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
    }
    ctx.Ok()
}
// List
// @Tags        花费时间管理
// @Summary    获取花费时间列表
// @Produce    application/json
// @Success    200    {object}    response.ListResponse{data=[]model.TimeSpent}
// @Router        /api/timeSpent/list [get]
func (s *TimeSpentApi) List(c *gin.Context) {
    ctx, ok := contextx.NewContext(c, nil)
    if !ok {
        return
    }
    timeSpent, total, errCode := service.NewTimeSpentService().GetTimeSpentList()
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
    }
    ctx.OkWithDetailed(response.ListResponse{
        Data: timeSpent,
        Count: total,
    })
}
constvar/faultType.go
New file
@@ -0,0 +1,12 @@
package constvar
type FaultTypeQueryClass string
const (
    FaultTypeQueryClassExpireLessThen60Days FaultTypeQueryClass = ""
)
type FaultTypeKeywordType string
const (
    FaultTypeKeywordCustomerName   FaultTypeKeywordType = ""
)
constvar/timeSpent.go
New file
@@ -0,0 +1,12 @@
package constvar
type TimeSpentQueryClass string
const (
    TimeSpentQueryClassExpireLessThen60Days TimeSpentQueryClass = ""
)
type TimeSpentKeywordType string
const (
    TimeSpentKeywordCustomerName   TimeSpentKeywordType = ""
)
docs/docs.go
@@ -2196,6 +2196,128 @@
                }
            }
        },
        "/api/faultType/add": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "故障类别管理"
                ],
                "summary": "添加故障类别",
                "parameters": [
                    {
                        "description": "查询参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.AddFaultType"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/faultType/delete/{id}": {
            "delete": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "故障类别管理"
                ],
                "summary": "删除故障类别",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "查询参数",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/faultType/list": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "故障类别管理"
                ],
                "summary": "获取故障类别列表",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.ListResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/definitions/model.FaultType"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/faultType/update": {
            "put": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "故障类别管理"
                ],
                "summary": "更新故障类别",
                "parameters": [
                    {
                        "description": "查询参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.UpdateFaultType"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/followRecord/add": {
            "post": {
                "produces": [
@@ -7252,6 +7374,128 @@
                }
            }
        },
        "/api/timeSpent/add": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "花费时间管理"
                ],
                "summary": "添加花费时间",
                "parameters": [
                    {
                        "description": "查询参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.AddTimeSpent"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/timeSpent/delete/{id}": {
            "delete": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "花费时间管理"
                ],
                "summary": "删除花费时间",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "查询参数",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/timeSpent/list": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "花费时间管理"
                ],
                "summary": "获取花费时间列表",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.ListResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/definitions/model.TimeSpent"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/timeSpent/update": {
            "put": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "花费时间管理"
                ],
                "summary": "更新花费时间",
                "parameters": [
                    {
                        "description": "查询参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.UpdateTimeSpent"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/timelyRate/add": {
            "post": {
                "produces": [
@@ -8333,6 +8577,17 @@
                }
            }
        },
        "model.FaultType": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "model.FollowRecord": {
            "type": "object",
            "properties": {
@@ -9319,14 +9574,21 @@
                "client": {
                    "$ref": "#/definitions/model.Client"
                },
                "client_id": {
                "clientId": {
                    "description": "客户id",
                    "type": "integer"
                },
                "contact": {
                    "$ref": "#/definitions/model.Contact"
                },
                "contact_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "contract": {
                    "$ref": "#/definitions/model.Contract"
                },
                "contract_id": {
                "contractId": {
                    "description": "合同id",
                    "type": "integer"
                },
@@ -9340,14 +9602,10 @@
                "id": {
                    "type": "integer"
                },
                "linkman_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "order": {
                    "$ref": "#/definitions/model.OrderManage"
                },
                "order_id": {
                "orderId": {
                    "description": "销售订单id",
                    "type": "integer"
                },
@@ -9369,7 +9627,7 @@
                "product": {
                    "$ref": "#/definitions/model.Product"
                },
                "product_id": {
                "productId": {
                    "description": "产品id",
                    "type": "integer"
                },
@@ -9381,22 +9639,25 @@
                    "description": "备注",
                    "type": "string"
                },
                "sale_leads": {
                "saleChance": {
                    "$ref": "#/definitions/model.SaleChance"
                },
                "saleChanceId": {
                    "description": "销售机会id",
                    "type": "integer"
                },
                "serviceManId": {
                    "description": "服务人员",
                    "type": "integer"
                },
                "serviceNumber": {
                    "description": "服务单编号",
                    "type": "string"
                },
                "serviceType": {
                    "$ref": "#/definitions/model.ServiceType"
                },
                "service_man_id": {
                    "description": "服务人员",
                    "type": "integer"
                },
                "service_number": {
                    "description": "服务单编号",
                    "type": "string"
                },
                "service_type_id": {
                "serviceTypeId": {
                    "description": "服务方式",
                    "type": "integer"
                },
@@ -9495,6 +9756,17 @@
                    "items": {
                        "$ref": "#/definitions/model.Product"
                    }
                }
            }
        },
        "model.TimeSpent": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
@@ -9890,6 +10162,17 @@
            }
        },
        "request.AddFaq": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "request.AddFaultType": {
            "type": "object",
            "properties": {
                "id": {
@@ -10631,17 +10914,15 @@
                    "description": "收费金额",
                    "type": "number"
                },
                "client": {
                    "$ref": "#/definitions/model.Client"
                },
                "client_id": {
                "clientId": {
                    "description": "客户id",
                    "type": "integer"
                },
                "contract": {
                    "$ref": "#/definitions/model.Contract"
                "contact_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "contract_id": {
                "contractId": {
                    "description": "合同id",
                    "type": "integer"
                },
@@ -10649,25 +10930,9 @@
                    "description": "希望处理时间",
                    "type": "string"
                },
                "faq": {
                    "$ref": "#/definitions/model.Faq"
                },
                "id": {
                    "type": "integer"
                },
                "linkman_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "order": {
                    "$ref": "#/definitions/model.OrderManage"
                },
                "order_id": {
                "orderId": {
                    "description": "销售订单id",
                    "type": "integer"
                },
                "priorityLevel": {
                    "$ref": "#/definitions/model.PriorityLevel"
                },
                "priority_level_id": {
                    "description": "优先级别",
@@ -10681,10 +10946,7 @@
                    "description": "常见问题id",
                    "type": "integer"
                },
                "product": {
                    "$ref": "#/definitions/model.Product"
                },
                "product_id": {
                "productId": {
                    "description": "产品id",
                    "type": "integer"
                },
@@ -10696,27 +10958,25 @@
                    "description": "备注",
                    "type": "string"
                },
                "sale_leads": {
                "saleChanceId": {
                    "description": "销售机会id",
                    "type": "integer"
                },
                "serviceType": {
                    "$ref": "#/definitions/model.ServiceType"
                },
                "service_man_id": {
                "serviceManId": {
                    "description": "服务人员",
                    "type": "integer"
                },
                "service_number": {
                "serviceNumber": {
                    "description": "服务单编号",
                    "type": "string"
                },
                "service_type_id": {
                "serviceTypeId": {
                    "description": "服务方式",
                    "type": "integer"
                },
                "severity": {
                    "$ref": "#/definitions/model.Severity"
                    "description": "严重程度",
                    "type": "integer"
                },
                "solution": {
                    "description": "解决方法",
@@ -10804,6 +11064,17 @@
                    "items": {
                        "$ref": "#/definitions/model.Product"
                    }
                }
            }
        },
        "request.AddTimeSpent": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
@@ -12165,6 +12436,17 @@
                }
            }
        },
        "request.UpdateFaultType": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "request.UpdateFollowRecord": {
            "type": "object",
            "required": [
@@ -13286,17 +13568,15 @@
                    "description": "收费金额",
                    "type": "number"
                },
                "client": {
                    "$ref": "#/definitions/model.Client"
                },
                "client_id": {
                "clientId": {
                    "description": "客户id",
                    "type": "integer"
                },
                "contract": {
                    "$ref": "#/definitions/model.Contract"
                "contact_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "contract_id": {
                "contractId": {
                    "description": "合同id",
                    "type": "integer"
                },
@@ -13304,25 +13584,12 @@
                    "description": "希望处理时间",
                    "type": "string"
                },
                "faq": {
                    "$ref": "#/definitions/model.Faq"
                },
                "id": {
                    "type": "integer"
                },
                "linkman_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "order": {
                    "$ref": "#/definitions/model.OrderManage"
                },
                "order_id": {
                "orderId": {
                    "description": "销售订单id",
                    "type": "integer"
                },
                "priorityLevel": {
                    "$ref": "#/definitions/model.PriorityLevel"
                },
                "priority_level_id": {
                    "description": "优先级别",
@@ -13336,10 +13603,7 @@
                    "description": "常见问题id",
                    "type": "integer"
                },
                "product": {
                    "$ref": "#/definitions/model.Product"
                },
                "product_id": {
                "productId": {
                    "description": "产品id",
                    "type": "integer"
                },
@@ -13351,27 +13615,25 @@
                    "description": "备注",
                    "type": "string"
                },
                "sale_leads": {
                "saleChanceId": {
                    "description": "销售机会id",
                    "type": "integer"
                },
                "serviceType": {
                    "$ref": "#/definitions/model.ServiceType"
                },
                "service_man_id": {
                "serviceManId": {
                    "description": "服务人员",
                    "type": "integer"
                },
                "service_number": {
                "serviceNumber": {
                    "description": "服务单编号",
                    "type": "string"
                },
                "service_type_id": {
                "serviceTypeId": {
                    "description": "服务方式",
                    "type": "integer"
                },
                "severity": {
                    "$ref": "#/definitions/model.Severity"
                    "description": "严重程度",
                    "type": "integer"
                },
                "solution": {
                    "description": "解决方法",
@@ -13501,6 +13763,17 @@
                }
            }
        },
        "request.UpdateTimeSpent": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "request.UpdateTimelyRate": {
            "type": "object",
            "required": [
docs/swagger.json
@@ -2184,6 +2184,128 @@
                }
            }
        },
        "/api/faultType/add": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "故障类别管理"
                ],
                "summary": "添加故障类别",
                "parameters": [
                    {
                        "description": "查询参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.AddFaultType"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/faultType/delete/{id}": {
            "delete": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "故障类别管理"
                ],
                "summary": "删除故障类别",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "查询参数",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/faultType/list": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "故障类别管理"
                ],
                "summary": "获取故障类别列表",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.ListResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/definitions/model.FaultType"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/faultType/update": {
            "put": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "故障类别管理"
                ],
                "summary": "更新故障类别",
                "parameters": [
                    {
                        "description": "查询参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.UpdateFaultType"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/followRecord/add": {
            "post": {
                "produces": [
@@ -7240,6 +7362,128 @@
                }
            }
        },
        "/api/timeSpent/add": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "花费时间管理"
                ],
                "summary": "添加花费时间",
                "parameters": [
                    {
                        "description": "查询参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.AddTimeSpent"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/timeSpent/delete/{id}": {
            "delete": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "花费时间管理"
                ],
                "summary": "删除花费时间",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "查询参数",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/timeSpent/list": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "花费时间管理"
                ],
                "summary": "获取花费时间列表",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "allOf": [
                                {
                                    "$ref": "#/definitions/response.ListResponse"
                                },
                                {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/definitions/model.TimeSpent"
                                            }
                                        }
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        },
        "/api/timeSpent/update": {
            "put": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "花费时间管理"
                ],
                "summary": "更新花费时间",
                "parameters": [
                    {
                        "description": "查询参数",
                        "name": "object",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/request.UpdateTimeSpent"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/contextx.Response"
                        }
                    }
                }
            }
        },
        "/api/timelyRate/add": {
            "post": {
                "produces": [
@@ -8321,6 +8565,17 @@
                }
            }
        },
        "model.FaultType": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "model.FollowRecord": {
            "type": "object",
            "properties": {
@@ -9307,14 +9562,21 @@
                "client": {
                    "$ref": "#/definitions/model.Client"
                },
                "client_id": {
                "clientId": {
                    "description": "客户id",
                    "type": "integer"
                },
                "contact": {
                    "$ref": "#/definitions/model.Contact"
                },
                "contact_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "contract": {
                    "$ref": "#/definitions/model.Contract"
                },
                "contract_id": {
                "contractId": {
                    "description": "合同id",
                    "type": "integer"
                },
@@ -9328,14 +9590,10 @@
                "id": {
                    "type": "integer"
                },
                "linkman_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "order": {
                    "$ref": "#/definitions/model.OrderManage"
                },
                "order_id": {
                "orderId": {
                    "description": "销售订单id",
                    "type": "integer"
                },
@@ -9357,7 +9615,7 @@
                "product": {
                    "$ref": "#/definitions/model.Product"
                },
                "product_id": {
                "productId": {
                    "description": "产品id",
                    "type": "integer"
                },
@@ -9369,22 +9627,25 @@
                    "description": "备注",
                    "type": "string"
                },
                "sale_leads": {
                "saleChance": {
                    "$ref": "#/definitions/model.SaleChance"
                },
                "saleChanceId": {
                    "description": "销售机会id",
                    "type": "integer"
                },
                "serviceManId": {
                    "description": "服务人员",
                    "type": "integer"
                },
                "serviceNumber": {
                    "description": "服务单编号",
                    "type": "string"
                },
                "serviceType": {
                    "$ref": "#/definitions/model.ServiceType"
                },
                "service_man_id": {
                    "description": "服务人员",
                    "type": "integer"
                },
                "service_number": {
                    "description": "服务单编号",
                    "type": "string"
                },
                "service_type_id": {
                "serviceTypeId": {
                    "description": "服务方式",
                    "type": "integer"
                },
@@ -9483,6 +9744,17 @@
                    "items": {
                        "$ref": "#/definitions/model.Product"
                    }
                }
            }
        },
        "model.TimeSpent": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
@@ -9878,6 +10150,17 @@
            }
        },
        "request.AddFaq": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "request.AddFaultType": {
            "type": "object",
            "properties": {
                "id": {
@@ -10619,17 +10902,15 @@
                    "description": "收费金额",
                    "type": "number"
                },
                "client": {
                    "$ref": "#/definitions/model.Client"
                },
                "client_id": {
                "clientId": {
                    "description": "客户id",
                    "type": "integer"
                },
                "contract": {
                    "$ref": "#/definitions/model.Contract"
                "contact_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "contract_id": {
                "contractId": {
                    "description": "合同id",
                    "type": "integer"
                },
@@ -10637,25 +10918,9 @@
                    "description": "希望处理时间",
                    "type": "string"
                },
                "faq": {
                    "$ref": "#/definitions/model.Faq"
                },
                "id": {
                    "type": "integer"
                },
                "linkman_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "order": {
                    "$ref": "#/definitions/model.OrderManage"
                },
                "order_id": {
                "orderId": {
                    "description": "销售订单id",
                    "type": "integer"
                },
                "priorityLevel": {
                    "$ref": "#/definitions/model.PriorityLevel"
                },
                "priority_level_id": {
                    "description": "优先级别",
@@ -10669,10 +10934,7 @@
                    "description": "常见问题id",
                    "type": "integer"
                },
                "product": {
                    "$ref": "#/definitions/model.Product"
                },
                "product_id": {
                "productId": {
                    "description": "产品id",
                    "type": "integer"
                },
@@ -10684,27 +10946,25 @@
                    "description": "备注",
                    "type": "string"
                },
                "sale_leads": {
                "saleChanceId": {
                    "description": "销售机会id",
                    "type": "integer"
                },
                "serviceType": {
                    "$ref": "#/definitions/model.ServiceType"
                },
                "service_man_id": {
                "serviceManId": {
                    "description": "服务人员",
                    "type": "integer"
                },
                "service_number": {
                "serviceNumber": {
                    "description": "服务单编号",
                    "type": "string"
                },
                "service_type_id": {
                "serviceTypeId": {
                    "description": "服务方式",
                    "type": "integer"
                },
                "severity": {
                    "$ref": "#/definitions/model.Severity"
                    "description": "严重程度",
                    "type": "integer"
                },
                "solution": {
                    "description": "解决方法",
@@ -10792,6 +11052,17 @@
                    "items": {
                        "$ref": "#/definitions/model.Product"
                    }
                }
            }
        },
        "request.AddTimeSpent": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
@@ -12153,6 +12424,17 @@
                }
            }
        },
        "request.UpdateFaultType": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "request.UpdateFollowRecord": {
            "type": "object",
            "required": [
@@ -13274,17 +13556,15 @@
                    "description": "收费金额",
                    "type": "number"
                },
                "client": {
                    "$ref": "#/definitions/model.Client"
                },
                "client_id": {
                "clientId": {
                    "description": "客户id",
                    "type": "integer"
                },
                "contract": {
                    "$ref": "#/definitions/model.Contract"
                "contact_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "contract_id": {
                "contractId": {
                    "description": "合同id",
                    "type": "integer"
                },
@@ -13292,25 +13572,12 @@
                    "description": "希望处理时间",
                    "type": "string"
                },
                "faq": {
                    "$ref": "#/definitions/model.Faq"
                },
                "id": {
                    "type": "integer"
                },
                "linkman_id": {
                    "description": "联系人id",
                    "type": "integer"
                },
                "order": {
                    "$ref": "#/definitions/model.OrderManage"
                },
                "order_id": {
                "orderId": {
                    "description": "销售订单id",
                    "type": "integer"
                },
                "priorityLevel": {
                    "$ref": "#/definitions/model.PriorityLevel"
                },
                "priority_level_id": {
                    "description": "优先级别",
@@ -13324,10 +13591,7 @@
                    "description": "常见问题id",
                    "type": "integer"
                },
                "product": {
                    "$ref": "#/definitions/model.Product"
                },
                "product_id": {
                "productId": {
                    "description": "产品id",
                    "type": "integer"
                },
@@ -13339,27 +13603,25 @@
                    "description": "备注",
                    "type": "string"
                },
                "sale_leads": {
                "saleChanceId": {
                    "description": "销售机会id",
                    "type": "integer"
                },
                "serviceType": {
                    "$ref": "#/definitions/model.ServiceType"
                },
                "service_man_id": {
                "serviceManId": {
                    "description": "服务人员",
                    "type": "integer"
                },
                "service_number": {
                "serviceNumber": {
                    "description": "服务单编号",
                    "type": "string"
                },
                "service_type_id": {
                "serviceTypeId": {
                    "description": "服务方式",
                    "type": "integer"
                },
                "severity": {
                    "$ref": "#/definitions/model.Severity"
                    "description": "严重程度",
                    "type": "integer"
                },
                "solution": {
                    "description": "解决方法",
@@ -13489,6 +13751,17 @@
                }
            }
        },
        "request.UpdateTimeSpent": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "request.UpdateTimelyRate": {
            "type": "object",
            "required": [
docs/swagger.yaml
@@ -452,6 +452,13 @@
      name:
        type: string
    type: object
  model.FaultType:
    properties:
      id:
        type: integer
      name:
        type: string
    type: object
  model.FollowRecord:
    properties:
      client:
@@ -1099,12 +1106,17 @@
        type: number
      client:
        $ref: '#/definitions/model.Client'
      client_id:
      clientId:
        description: 客户id
        type: integer
      contact:
        $ref: '#/definitions/model.Contact'
      contact_id:
        description: 联系人id
        type: integer
      contract:
        $ref: '#/definitions/model.Contract'
      contract_id:
      contractId:
        description: 合同id
        type: integer
      expect_time:
@@ -1114,12 +1126,9 @@
        $ref: '#/definitions/model.Faq'
      id:
        type: integer
      linkman_id:
        description: 联系人id
        type: integer
      order:
        $ref: '#/definitions/model.OrderManage'
      order_id:
      orderId:
        description: 销售订单id
        type: integer
      priority_level_id:
@@ -1135,7 +1144,7 @@
        type: integer
      product:
        $ref: '#/definitions/model.Product'
      product_id:
      productId:
        description: 产品id
        type: integer
      real_time:
@@ -1144,20 +1153,22 @@
      remark:
        description: 备注
        type: string
      sale_leads:
      saleChance:
        $ref: '#/definitions/model.SaleChance'
      saleChanceId:
        description: 销售机会id
        type: integer
      service_man_id:
      serviceManId:
        description: 服务人员
        type: integer
      service_number:
      serviceNumber:
        description: 服务单编号
        type: string
      service_type_id:
        description: 服务方式
        type: integer
      serviceType:
        $ref: '#/definitions/model.ServiceType'
      serviceTypeId:
        description: 服务方式
        type: integer
      severity:
        $ref: '#/definitions/model.Severity'
      solution:
@@ -1222,6 +1233,13 @@
        items:
          $ref: '#/definitions/model.Product'
        type: array
    type: object
  model.TimeSpent:
    properties:
      id:
        type: integer
      name:
        type: string
    type: object
  model.TimelyRate:
    properties:
@@ -1492,6 +1510,13 @@
    - name
    type: object
  request.AddFaq:
    properties:
      id:
        type: integer
      name:
        type: string
    type: object
  request.AddFaultType:
    properties:
      id:
        type: integer
@@ -1985,45 +2010,31 @@
      charge_amount:
        description: 收费金额
        type: number
      client:
        $ref: '#/definitions/model.Client'
      client_id:
      clientId:
        description: 客户id
        type: integer
      contract:
        $ref: '#/definitions/model.Contract'
      contract_id:
      contact_id:
        description: 联系人id
        type: integer
      contractId:
        description: 合同id
        type: integer
      expect_time:
        description: 希望处理时间
        type: string
      faq:
        $ref: '#/definitions/model.Faq'
      id:
        type: integer
      linkman_id:
        description: 联系人id
        type: integer
      order:
        $ref: '#/definitions/model.OrderManage'
      order_id:
      orderId:
        description: 销售订单id
        type: integer
      priority_level_id:
        description: 优先级别
        type: integer
      priorityLevel:
        $ref: '#/definitions/model.PriorityLevel'
      problem_desc:
        description: 问题描述
        type: string
      problem_id:
        description: 常见问题id
        type: integer
      product:
        $ref: '#/definitions/model.Product'
      product_id:
      productId:
        description: 产品id
        type: integer
      real_time:
@@ -2032,22 +2043,21 @@
      remark:
        description: 备注
        type: string
      sale_leads:
      saleChanceId:
        description: 销售机会id
        type: integer
      service_man_id:
      serviceManId:
        description: 服务人员
        type: integer
      service_number:
      serviceNumber:
        description: 服务单编号
        type: string
      service_type_id:
      serviceTypeId:
        description: 服务方式
        type: integer
      serviceType:
        $ref: '#/definitions/model.ServiceType'
      severity:
        $ref: '#/definitions/model.Severity'
        description: 严重程度
        type: integer
      solution:
        description: 解决方法
        type: string
@@ -2106,6 +2116,13 @@
        items:
          $ref: '#/definitions/model.Product'
        type: array
    type: object
  request.AddTimeSpent:
    properties:
      id:
        type: integer
      name:
        type: string
    type: object
  request.AddTimelyRate:
    properties:
@@ -3034,6 +3051,13 @@
      name:
        type: string
    type: object
  request.UpdateFaultType:
    properties:
      id:
        type: integer
      name:
        type: string
    type: object
  request.UpdateFollowRecord:
    properties:
      follow_record:
@@ -3781,45 +3805,33 @@
      charge_amount:
        description: 收费金额
        type: number
      client:
        $ref: '#/definitions/model.Client'
      client_id:
      clientId:
        description: 客户id
        type: integer
      contract:
        $ref: '#/definitions/model.Contract'
      contract_id:
      contact_id:
        description: 联系人id
        type: integer
      contractId:
        description: 合同id
        type: integer
      expect_time:
        description: 希望处理时间
        type: string
      faq:
        $ref: '#/definitions/model.Faq'
      id:
        type: integer
      linkman_id:
        description: 联系人id
        type: integer
      order:
        $ref: '#/definitions/model.OrderManage'
      order_id:
      orderId:
        description: 销售订单id
        type: integer
      priority_level_id:
        description: 优先级别
        type: integer
      priorityLevel:
        $ref: '#/definitions/model.PriorityLevel'
      problem_desc:
        description: 问题描述
        type: string
      problem_id:
        description: 常见问题id
        type: integer
      product:
        $ref: '#/definitions/model.Product'
      product_id:
      productId:
        description: 产品id
        type: integer
      real_time:
@@ -3828,22 +3840,21 @@
      remark:
        description: 备注
        type: string
      sale_leads:
      saleChanceId:
        description: 销售机会id
        type: integer
      service_man_id:
      serviceManId:
        description: 服务人员
        type: integer
      service_number:
      serviceNumber:
        description: 服务单编号
        type: string
      service_type_id:
      serviceTypeId:
        description: 服务方式
        type: integer
      serviceType:
        $ref: '#/definitions/model.ServiceType'
      severity:
        $ref: '#/definitions/model.Severity'
        description: 严重程度
        type: integer
      solution:
        description: 解决方法
        type: string
@@ -3928,6 +3939,13 @@
        items:
          $ref: '#/definitions/model.Product'
        type: array
    type: object
  request.UpdateTimeSpent:
    properties:
      id:
        type: integer
      name:
        type: string
    type: object
  request.UpdateTimelyRate:
    properties:
@@ -5892,6 +5910,81 @@
      summary: 更新常见问题
      tags:
      - 常见问题管理
  /api/faultType/add:
    post:
      parameters:
      - description: 查询参数
        in: body
        name: object
        required: true
        schema:
          $ref: '#/definitions/request.AddFaultType'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/contextx.Response'
      summary: 添加故障类别
      tags:
      - 故障类别管理
  /api/faultType/delete/{id}:
    delete:
      parameters:
      - description: 查询参数
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/contextx.Response'
      summary: 删除故障类别
      tags:
      - 故障类别管理
  /api/faultType/list:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/response.ListResponse'
            - properties:
                data:
                  items:
                    $ref: '#/definitions/model.FaultType'
                  type: array
              type: object
      summary: 获取故障类别列表
      tags:
      - 故障类别管理
  /api/faultType/update:
    put:
      parameters:
      - description: 查询参数
        in: body
        name: object
        required: true
        schema:
          $ref: '#/definitions/request.UpdateFaultType'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/contextx.Response'
      summary: 更新故障类别
      tags:
      - 故障类别管理
  /api/followRecord/add:
    post:
      parameters:
@@ -9000,6 +9093,81 @@
      summary: 更新子订单
      tags:
      - SubOrder
  /api/timeSpent/add:
    post:
      parameters:
      - description: 查询参数
        in: body
        name: object
        required: true
        schema:
          $ref: '#/definitions/request.AddTimeSpent'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/contextx.Response'
      summary: 添加花费时间
      tags:
      - 花费时间管理
  /api/timeSpent/delete/{id}:
    delete:
      parameters:
      - description: 查询参数
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/contextx.Response'
      summary: 删除花费时间
      tags:
      - 花费时间管理
  /api/timeSpent/list:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            allOf:
            - $ref: '#/definitions/response.ListResponse'
            - properties:
                data:
                  items:
                    $ref: '#/definitions/model.TimeSpent'
                  type: array
              type: object
      summary: 获取花费时间列表
      tags:
      - 花费时间管理
  /api/timeSpent/update:
    put:
      parameters:
      - description: 查询参数
        in: body
        name: object
        required: true
        schema:
          $ref: '#/definitions/request.UpdateTimeSpent'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/contextx.Response'
      summary: 更新花费时间
      tags:
      - 花费时间管理
  /api/timelyRate/add:
    post:
      parameters:
model/faq.go
@@ -12,18 +12,18 @@
    // Faq 常见问题
    Faq 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"`
    }
    // FaqSearch 常见问题搜索条件
    FaqSearch struct {
        Faq
        Orm *gorm.DB
        QueryClass  constvar.FaqQueryClass
        KeywordType constvar.FaqKeywordType
        Keyword     string
        PageNum  int
        PageSize int
        Orm         *gorm.DB
        QueryClass  constvar.FaqQueryClass
        KeywordType constvar.FaqKeywordType
        Keyword     string
        PageNum     int
        PageSize    int
    }
)
@@ -49,6 +49,11 @@
func (slf *FaqSearch) Create(record *Faq) error {
    var db = slf.build()
    return db.Create(record).Error
}
func (slf *FaqSearch) CreateBatch(records []*Faq) error {
    var db = slf.build()
    return db.Create(records).Error
}
func (slf *FaqSearch) Delete() error {
@@ -111,4 +116,4 @@
    err := db.Find(&records).Error
    return records, total, err
}
}
model/faultType.go
New file
@@ -0,0 +1,119 @@
package model
import (
    "aps_crm/constvar"
    "aps_crm/pkg/mysqlx"
    "errors"
    "fmt"
    "gorm.io/gorm"
)
type (
    // FaultType 故障类别
    FaultType struct {
        Id   int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
        Name string `json:"name" gorm:"column:name"`
    }
    // FaultTypeSearch 故障类别搜索条件
    FaultTypeSearch struct {
        FaultType
        Orm         *gorm.DB
        QueryClass  constvar.FaultTypeQueryClass
        KeywordType constvar.FaultTypeKeywordType
        Keyword     string
        PageNum     int
        PageSize    int
    }
)
func (FaultType) TableName() string {
    return "fault_type"
}
func NewFaultTypeSearch() *FaultTypeSearch {
    return &FaultTypeSearch{
        Orm: mysqlx.GetDB(),
    }
}
func (slf *FaultTypeSearch) build() *gorm.DB {
    var db = slf.Orm.Model(&FaultType{})
    if slf.Id != 0 {
        db = db.Where("id = ?", slf.Id)
    }
    return db
}
func (slf *FaultTypeSearch) Create(record *FaultType) error {
    var db = slf.build()
    return db.Create(record).Error
}
func (slf *FaultTypeSearch) CreateBatch(records []*FaultType) error {
    var db = slf.build()
    return db.Create(records).Error
}
func (slf *FaultTypeSearch) Delete() error {
    var db = slf.build()
    return db.Delete(&FaultType{}).Error
}
func (slf *FaultTypeSearch) Update(record *FaultType) error {
    var db = slf.build()
    return db.Updates(record).Error
}
func (slf *FaultTypeSearch) FindAll() ([]*FaultType, error) {
    var db = slf.build()
    var record = make([]*FaultType, 0)
    err := db.Find(&record).Error
    return record, err
}
func (slf *FaultTypeSearch) SetId(id int) *FaultTypeSearch {
    slf.Id = id
    return slf
}
func (slf *FaultTypeSearch) First() (*FaultType, error) {
    var db = slf.build()
    var record = new(FaultType)
    err := db.First(record).Error
    return record, err
}
func (slf *FaultTypeSearch) Updates(values interface{}) error {
    var db = slf.build()
    return db.Updates(values).Error
}
func (slf *FaultTypeSearch) Save(record *FaultType) error {
    if record.Id == 0 {
        return errors.New("id为空")
    }
    var db = slf.build()
    if err := db.Save(record).Error; err != nil {
        return fmt.Errorf("save err: %v, record: %+v", err, record)
    }
    return nil
}
func (slf *FaultTypeSearch) Find() ([]*FaultType, int64, error) {
    var db = slf.build()
    var records = make([]*FaultType, 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)
    }
    err := db.Find(&records).Error
    return records, total, err
}
model/index.go
@@ -4,6 +4,8 @@
    "aps_crm/conf"
    "aps_crm/pkg/logx"
    "aps_crm/pkg/mysqlx"
    "aps_crm/pkg/safe"
    "gorm.io/gorm/schema"
)
func Init() error {
@@ -14,7 +16,9 @@
    if err := RegisterTables(); err != nil {
        return err
    }
    safe.Go(func() {
        InsertDefaultData()
    })
    return nil
}
@@ -66,19 +70,39 @@
        Satisfaction{},
        TimelyRate{},
        SolveRate{},
        IsVisit{},
        IsVisit{},
        ReportSource{},
        OrderType{},
        ServiceContractStatus{},
        ServiceContractType{},
        RefundMethod{},
        IsInvoice{},
        AccountId{},
        SalesReturnStatus{},
        Repository{},
        QuotationStatus{},
        Currency{},
        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/priorityLevel.go
@@ -12,18 +12,18 @@
    // PriorityLevel 优先级别
    PriorityLevel 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"`
    }
    // PriorityLevelSearch 优先级别搜索条件
    PriorityLevelSearch struct {
        PriorityLevel
        Orm *gorm.DB
        QueryClass  constvar.PriorityLevelQueryClass
        KeywordType constvar.PriorityLevelKeywordType
        Keyword     string
        PageNum  int
        PageSize int
        Orm         *gorm.DB
        QueryClass  constvar.PriorityLevelQueryClass
        KeywordType constvar.PriorityLevelKeywordType
        Keyword     string
        PageNum     int
        PageSize    int
    }
)
@@ -49,6 +49,11 @@
func (slf *PriorityLevelSearch) Create(record *PriorityLevel) error {
    var db = slf.build()
    return db.Create(record).Error
}
func (slf *PriorityLevelSearch) CreateBatch(records []*PriorityLevel) error {
    var db = slf.build()
    return db.Create(records).Error
}
func (slf *PriorityLevelSearch) Delete() error {
@@ -111,4 +116,25 @@
    err := db.Find(&records).Error
    return records, total, err
}
}
// InitDefaultData 初始化数据
func (slf *PriorityLevelSearch) InitDefaultData() error {
    var (
        db          = slf.Orm.Table(slf.TableName())
        total int64 = 0
    )
    if err := db.Count(&total).Error; err != nil {
        return err
    }
    if total != 0 {
        return nil
    }
    records := []*PriorityLevel{
        {Name: "低"},
        {Name: "一般"},
        {Name: "高"},
        {Name: "紧急"},
    }
    return slf.CreateBatch(records)
}
model/request/faultType.go
New file
@@ -0,0 +1,22 @@
package request
import (
    "aps_crm/constvar"
    "aps_crm/model"
)
type AddFaultType struct {
    model.FaultType
}
type UpdateFaultType struct {
    Id int `json:"id"`
    model.FaultType
}
type GetFaultTypeList struct {
    PageInfo
    QueryClass  constvar.FaultTypeQueryClass  `json:"queryClass"`
    KeywordType constvar.FaultTypeKeywordType `json:"keywordType"`
    Keyword     string                           `json:"keyword"`
}
model/request/serviceOrder.go
@@ -1,17 +1,40 @@
package request
import (
    "aps_crm/constvar"
    "aps_crm/model"
    "aps_crm/constvar"
)
type AddServiceOrder struct {
    model.ServiceOrder
    ServiceNumber   string  `gorm:"service_number" json:"serviceNumber"`        // 服务单编号
    ClientId        int     `gorm:"client_id" json:"clientId"`                  // 客户id
    ContractId      int     `gorm:"contract_id" json:"contractId"`              // 合同id
    OrderId         int     `gorm:"order_id" json:"orderId"`                    // 销售订单id
    Subject         string  `gorm:"subject" json:"subject"`                     // 主题
    ProductId       int     `gorm:"product_id" json:"productId"`                // 产品id
    ServiceTypeId   int     `gorm:"service_type_id" json:"serviceTypeId"`       // 服务方式
    ServiceManId    int     `gorm:"service_man_id" json:"serviceManId"`         // 服务人员
    ContactId       int     `gorm:"linkman_id" json:"contact_id"`               // 联系人id
    Address         string  `gorm:"address" json:"address"`                     // 上门地址
    PriorityLevelId int     `gorm:"priority_level_id" json:"priority_level_id"` // 优先级别
    AppointmentTime string  `gorm:"appointment_time" json:"appointment_time"`   // 预约上门时间
    SaleChanceId    int     `gorm:"sale_leads" json:"saleChanceId"`             // 销售机会id
    SeverityId      int     `gorm:"severity_id" json:"severity"`                // 严重程度
    Status          int     `gorm:"status" json:"status"`                       // 处理状态
    ExpectTime      string  `gorm:"expect_time" json:"expect_time"`             // 希望处理时间
    RealTime        string  `gorm:"real_time" json:"real_time"`                 // 实际处理时间
    CarFare         float64 `gorm:"car_fare" json:"car_fare"`                   // 交通费
    ChargeAmount    float64 `gorm:"charge_amount" json:"charge_amount"`         // 收费金额
    TimeSpentId     int     `gorm:"time_spent_id" json:"time_spent_id"`         // 花费时间
    FaqId           int     `gorm:"problem_id" json:"problem_id"`               // 常见问题id
    ProblemDesc     string  `gorm:"problem_desc" json:"problem_desc"`           // 问题描述
    Solution        string  `gorm:"solution" json:"solution"`                   // 解决方法
    SolutionRemark  string  `gorm:"solution_remark" json:"solution_remark"`     // 内部备注
    Remark          string  `gorm:"remark" json:"remark"`                       // 备注
}
type UpdateServiceOrder struct {
    Id int `json:"id"`
    model.ServiceOrder
    AddServiceOrder
}
type GetServiceOrderList struct {
model/request/timeSpent.go
New file
@@ -0,0 +1,22 @@
package request
import (
    "aps_crm/constvar"
    "aps_crm/model"
)
type AddTimeSpent struct {
    model.TimeSpent
}
type UpdateTimeSpent struct {
    Id int `json:"id"`
    model.TimeSpent
}
type GetTimeSpentList struct {
    PageInfo
    QueryClass  constvar.TimeSpentQueryClass  `json:"queryClass"`
    KeywordType constvar.TimeSpentKeywordType `json:"keywordType"`
    Keyword     string                           `json:"keyword"`
}
model/serviceOrder.go
@@ -12,26 +12,28 @@
    // ServiceOrder 服务单
    ServiceOrder struct {
        Id              int           `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
        ServiceNumber   string        `gorm:"service_number" json:"service_number"` // 服务单编号
        ClientId        int           `gorm:"client_id" json:"client_id"`           // 客户id
        ServiceNumber   string        `gorm:"service_number" json:"serviceNumber"` // 服务单编号
        ClientId        int           `gorm:"client_id" json:"clientId"`           // 客户id
        Client          Client        `gorm:"foreignKey:ClientId"`
        ContractId      int           `gorm:"contract_id" json:"contract_id"` // 合同id
        ContractId      int           `gorm:"contract_id" json:"contractId"` // 合同id
        Contract        Contract      `gorm:"foreignKey:ContractId"`
        OrderId         int           `gorm:"order_id" json:"order_id"` // 销售订单id
        Order           OrderManage   `gorm:"foreignKey:OrderId"`
        Subject         string        `gorm:"subject" json:"subject"`       // 主题
        ProductId       int           `gorm:"product_id" json:"product_id"` // 产品id
        OrderId         int           `gorm:"order_id" json:"orderId"` // 销售订单id
        OrderManage     OrderManage   `gorm:"foreignKey:OrderId"`
        Subject         string        `gorm:"subject" json:"subject"`      // 主题
        ProductId       int           `gorm:"product_id" json:"productId"` // 产品id
        Product         Product       `gorm:"foreignKey:ProductId"`
        ServiceTypeId   int           `gorm:"service_type_id" json:"service_type_id"` // 服务方式
        ServiceTypeId   int           `gorm:"service_type_id" json:"serviceTypeId"` // 服务方式
        ServiceType     ServiceType   `gorm:"foreignKey:ServiceTypeId"`
        ServiceManId    int           `gorm:"service_man_id" json:"service_man_id"`       // 服务人员
        LinkmanId       int           `gorm:"linkman_id" json:"linkman_id"`               // 联系人id
        ServiceManId    int           `gorm:"service_man_id" json:"serviceManId"` // 服务人员
        ContactId       int           `gorm:"linkman_id" json:"contact_id"`       // 联系人id
        Contact         Contact       `gorm:"foreignKey:ContactId"`
        Address         string        `gorm:"address" json:"address"`                     // 上门地址
        PriorityLevelId int           `gorm:"priority_level_id" json:"priority_level_id"` // 优先级别
        PriorityLevel   PriorityLevel `gorm:"foreignKey:PriorityLevelId"`
        AppointmentTime string        `gorm:"appointment_time" json:"appointment_time"` // 预约上门时间
        SaleLeads       int           `gorm:"sale_leads" json:"sale_leads"`             // 销售机会id
        SeverityId      int           `gorm:"severity_id" json:"severity"`              // 严重程度
        SaleChanceId    int           `gorm:"sale_leads" json:"saleChanceId"`           // 销售机会id
        SaleChance      SaleChance    `gorm:"foreignKey:SaleChanceId"`
        SeverityId      int           `gorm:"severity_id" json:"severity"` // 严重程度
        Severity        Severity      `gorm:"foreignKey:SeverityId"`
        Status          int           `gorm:"status" json:"status"`               // 处理状态
        ExpectTime      string        `gorm:"expect_time" json:"expect_time"`     // 希望处理时间
@@ -76,12 +78,14 @@
        db = db.Where("id = ?", slf.Id)
    }
    if slf.Preload {
        db = db.Model(&ServiceOrder{}).
        db = db.
            Preload("Client").
            Preload("Contract").
            Preload("OrderManage").
            Preload("Product").
            Preload("ServiceType").
            Preload("Contact").
            Preload("SaleChance").
            Preload("PriorityLevel").
            Preload("Severity").
            Preload("Faq")
model/serviceType.go
@@ -12,18 +12,18 @@
    // ServiceType 服务类型
    ServiceType 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"`
    }
    // ServiceTypeSearch 服务类型搜索条件
    ServiceTypeSearch struct {
        ServiceType
        Orm *gorm.DB
        QueryClass  constvar.ServiceTypeQueryClass
        KeywordType constvar.ServiceTypeKeywordType
        Keyword     string
        PageNum  int
        PageSize int
        Orm         *gorm.DB
        QueryClass  constvar.ServiceTypeQueryClass
        KeywordType constvar.ServiceTypeKeywordType
        Keyword     string
        PageNum     int
        PageSize    int
    }
)
@@ -49,6 +49,11 @@
func (slf *ServiceTypeSearch) Create(record *ServiceType) error {
    var db = slf.build()
    return db.Create(record).Error
}
func (slf *ServiceTypeSearch) CreateBatch(records []*ServiceType) error {
    var db = slf.build()
    return db.Create(records).Error
}
func (slf *ServiceTypeSearch) Delete() error {
@@ -111,4 +116,26 @@
    err := db.Find(&records).Error
    return records, total, err
}
}
// InitDefaultData 初始化数据
func (slf *ServiceTypeSearch) InitDefaultData() error {
    var (
        db          = slf.Orm.Table(slf.TableName())
        total int64 = 0
    )
    if err := db.Count(&total).Error; err != nil {
        return err
    }
    if total != 0 {
        return nil
    }
    records := []*ServiceType{
        {Name: "电话"},
        {Name: "远程"},
        {Name: "送修"},
        {Name: "上门"},
        {Name: "其他"},
    }
    return slf.CreateBatch(records)
}
model/severity.go
@@ -12,18 +12,18 @@
    // Severity 严重程度
    Severity 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"`
    }
    // SeveritySearch 严重程度搜索条件
    SeveritySearch struct {
        Severity
        Orm *gorm.DB
        QueryClass  constvar.SeverityQueryClass
        KeywordType constvar.SeverityKeywordType
        Keyword     string
        PageNum  int
        PageSize int
        Orm         *gorm.DB
        QueryClass  constvar.SeverityQueryClass
        KeywordType constvar.SeverityKeywordType
        Keyword     string
        PageNum     int
        PageSize    int
    }
)
@@ -49,6 +49,11 @@
func (slf *SeveritySearch) Create(record *Severity) error {
    var db = slf.build()
    return db.Create(record).Error
}
func (slf *SeveritySearch) CreateBatch(records []*Severity) error {
    var db = slf.build()
    return db.Create(records).Error
}
func (slf *SeveritySearch) Delete() error {
@@ -111,4 +116,25 @@
    err := db.Find(&records).Error
    return records, total, err
}
}
// InitDefaultData 初始化数据
func (slf *SeveritySearch) InitDefaultData() error {
    var (
        db          = slf.Orm.Table(slf.TableName())
        total int64 = 0
    )
    if err := db.Count(&total).Error; err != nil {
        return err
    }
    if total != 0 {
        return nil
    }
    records := []*Severity{
        {Name: "轻"},
        {Name: "严重"},
        {Name: "较严重"},
        {Name: "特严重"},
    }
    return slf.CreateBatch(records)
}
model/timeSpent.go
New file
@@ -0,0 +1,142 @@
package model
import (
    "aps_crm/constvar"
    "aps_crm/pkg/mysqlx"
    "errors"
    "fmt"
    "gorm.io/gorm"
)
type (
    // TimeSpent 花费时间
    TimeSpent struct {
        Id   int    `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
        Name string `json:"name" gorm:"column:name"`
    }
    // TimeSpentSearch 花费时间搜索条件
    TimeSpentSearch struct {
        TimeSpent
        Orm         *gorm.DB
        QueryClass  constvar.TimeSpentQueryClass
        KeywordType constvar.TimeSpentKeywordType
        Keyword     string
        PageNum     int
        PageSize    int
    }
)
func (TimeSpent) TableName() string {
    return "time_spent"
}
func NewTimeSpentSearch() *TimeSpentSearch {
    return &TimeSpentSearch{
        Orm: mysqlx.GetDB(),
    }
}
func (slf *TimeSpentSearch) build() *gorm.DB {
    var db = slf.Orm.Model(&TimeSpent{})
    if slf.Id != 0 {
        db = db.Where("id = ?", slf.Id)
    }
    return db
}
func (slf *TimeSpentSearch) Create(record *TimeSpent) error {
    var db = slf.build()
    return db.Create(record).Error
}
func (slf *TimeSpentSearch) CreateBatch(records []*TimeSpent) error {
    var db = slf.build()
    return db.Create(records).Error
}
func (slf *TimeSpentSearch) Delete() error {
    var db = slf.build()
    return db.Delete(&TimeSpent{}).Error
}
func (slf *TimeSpentSearch) Update(record *TimeSpent) error {
    var db = slf.build()
    return db.Updates(record).Error
}
func (slf *TimeSpentSearch) FindAll() ([]*TimeSpent, error) {
    var db = slf.build()
    var record = make([]*TimeSpent, 0)
    err := db.Find(&record).Error
    return record, err
}
func (slf *TimeSpentSearch) SetId(id int) *TimeSpentSearch {
    slf.Id = id
    return slf
}
func (slf *TimeSpentSearch) First() (*TimeSpent, error) {
    var db = slf.build()
    var record = new(TimeSpent)
    err := db.First(record).Error
    return record, err
}
func (slf *TimeSpentSearch) Updates(values interface{}) error {
    var db = slf.build()
    return db.Updates(values).Error
}
func (slf *TimeSpentSearch) Save(record *TimeSpent) error {
    if record.Id == 0 {
        return errors.New("id为空")
    }
    var db = slf.build()
    if err := db.Save(record).Error; err != nil {
        return fmt.Errorf("save err: %v, record: %+v", err, record)
    }
    return nil
}
func (slf *TimeSpentSearch) Find() ([]*TimeSpent, int64, error) {
    var db = slf.build()
    var records = make([]*TimeSpent, 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)
    }
    err := db.Find(&records).Error
    return records, total, err
}
// InitDefaultData 初始化数据
func (slf *TimeSpentSearch) InitDefaultData() error {
    var (
        db          = slf.Orm.Table(slf.TableName())
        total int64 = 0
    )
    if err := db.Count(&total).Error; err != nil {
        return err
    }
    if total != 0 {
        return nil
    }
    records := []*TimeSpent{
        {Name: "1小时"},
        {Name: "2小时"},
        {Name: "0.5个工作日"},
        {Name: "1个工作日"},
        {Name: "2个工作日"},
        {Name: "2个工作日以上"},
    }
    return slf.CreateBatch(records)
}
pkg/safe/safe.go
@@ -1,7 +1,7 @@
package safe
import (
    "aps_admin/pkg/logx"
    "aps_crm/pkg/logx"
    "runtime/debug"
)
pkg/structx/structx.go
New file
@@ -0,0 +1,16 @@
package structx
import "encoding/json"
func AssignTo(from interface{}, to interface{}) error {
    data, err := json.Marshal(from)
    if err != nil {
        return err
    }
    err = json.Unmarshal(data, to)
    if err != nil {
        return err
    }
    return nil
}
router/faultType.go
New file
@@ -0,0 +1,17 @@
package router
import (
    v1 "aps_crm/api/v1"
    "github.com/gin-gonic/gin"
)
func InitFaultTypeRouter(router *gin.RouterGroup) {
    FaultTypeRouter := router.Group("faultType")
    FaultTypeApi := v1.FaultTypeApi{}
    {
        FaultTypeRouter.POST("add", FaultTypeApi.Add)             // 添加故障类别
        FaultTypeRouter.DELETE("delete/:id", FaultTypeApi.Delete) // 删除故障类别
        FaultTypeRouter.PUT("update", FaultTypeApi.Update)        // 更新故障类别
        FaultTypeRouter.GET("list", FaultTypeApi.List)            // 获取故障类别列表
    }
}
router/timeSpent.go
New file
@@ -0,0 +1,17 @@
package router
import (
    v1 "aps_crm/api/v1"
    "github.com/gin-gonic/gin"
)
func InitTimeSpentRouter(router *gin.RouterGroup) {
    TimeSpentRouter := router.Group("timeSpent")
    TimeSpentApi := v1.TimeSpentApi{}
    {
        TimeSpentRouter.POST("add", TimeSpentApi.Add)             // 添加花费时间
        TimeSpentRouter.DELETE("delete/:id", TimeSpentApi.Delete) // 删除花费时间
        TimeSpentRouter.PUT("update", TimeSpentApi.Update)        // 更新花费时间
        TimeSpentRouter.GET("list", TimeSpentApi.List)            // 获取花费时间列表
    }
}
service/faultType.go
New file
@@ -0,0 +1,66 @@
package service
import (
    "aps_crm/model"
    "aps_crm/model/request"
    "aps_crm/pkg/ecode"
)
type FaultTypeService struct{}
func NewFaultTypeService() FaultTypeService {
    return FaultTypeService{}
}
func (FaultTypeService) AddFaultType(FaultType *model.FaultType) int {
    err := model.NewFaultTypeSearch().Create(FaultType)
    if err != nil {
        return ecode.DBErr
    }
    return ecode.OK
}
func (FaultTypeService) DeleteFaultType(id int) int {
    err := model.NewFaultTypeSearch().SetId(id).Delete()
    if err != nil {
        return ecode.DBErr
    }
    return ecode.OK
}
func (FaultTypeService) GetFaultTypeList() ([]*model.FaultType, int64, int) {
    list, total, err := model.NewFaultTypeSearch().Find()
    if err != nil {
        return nil, 0, ecode.DBErr
    }
    return list, total, ecode.OK
}
func (FaultTypeService) UpdateFaultTypes(FaultTypes []*request.UpdateFaultType) int {
    for _, v := range FaultTypes {
        // check FaultType exist
        _, err := model.NewFaultTypeSearch().SetId(v.Id).First()
        if err != nil {
            return ecode.DBErr
        }
        err = model.NewFaultTypeSearch().SetId(v.Id).Updates(map[string]interface{}{
        })
        if err != nil {
            return ecode.DBErr
        }
    }
    return ecode.OK
}
func (FaultTypeService) UpdateFaultType(faultType *model.FaultType) int {
        err := model.NewFaultTypeSearch().Save(faultType)
        if err != nil {
            return ecode.DBErr
        }
    return ecode.OK
}
service/serviceOrder.go
@@ -30,7 +30,7 @@
}
func (ServiceOrderService) GetServiceOrderList() ([]*model.ServiceOrder, int64, int) {
    list, total, err := model.NewServiceOrderSearch().Find()
    list, total, err := model.NewServiceOrderSearch().SetPreload(true).Find()
    if err != nil {
        return nil, 0, ecode.DBErr
    }
@@ -46,9 +46,7 @@
            return ecode.DBErr
        }
        err = model.NewServiceOrderSearch().SetId(v.Id).Updates(map[string]interface{}{
        })
        err = model.NewServiceOrderSearch().SetId(v.Id).Updates(map[string]interface{}{})
        if err != nil {
            return ecode.DBErr
        }
@@ -58,9 +56,9 @@
}
func (ServiceOrderService) UpdateServiceOrder(serviceOrder *model.ServiceOrder) int {
        err := model.NewServiceOrderSearch().Save(serviceOrder)
        if err != nil {
            return ecode.DBErr
        }
    err := model.NewServiceOrderSearch().Save(serviceOrder)
    if err != nil {
        return ecode.DBErr
    }
    return ecode.OK
}
service/timeSpent.go
New file
@@ -0,0 +1,66 @@
package service
import (
    "aps_crm/model"
    "aps_crm/model/request"
    "aps_crm/pkg/ecode"
)
type TimeSpentService struct{}
func NewTimeSpentService() TimeSpentService {
    return TimeSpentService{}
}
func (TimeSpentService) AddTimeSpent(TimeSpent *model.TimeSpent) int {
    err := model.NewTimeSpentSearch().Create(TimeSpent)
    if err != nil {
        return ecode.DBErr
    }
    return ecode.OK
}
func (TimeSpentService) DeleteTimeSpent(id int) int {
    err := model.NewTimeSpentSearch().SetId(id).Delete()
    if err != nil {
        return ecode.DBErr
    }
    return ecode.OK
}
func (TimeSpentService) GetTimeSpentList() ([]*model.TimeSpent, int64, int) {
    list, total, err := model.NewTimeSpentSearch().Find()
    if err != nil {
        return nil, 0, ecode.DBErr
    }
    return list, total, ecode.OK
}
func (TimeSpentService) UpdateTimeSpents(TimeSpents []*request.UpdateTimeSpent) int {
    for _, v := range TimeSpents {
        // check TimeSpent exist
        _, err := model.NewTimeSpentSearch().SetId(v.Id).First()
        if err != nil {
            return ecode.DBErr
        }
        err = model.NewTimeSpentSearch().SetId(v.Id).Updates(map[string]interface{}{
        })
        if err != nil {
            return ecode.DBErr
        }
    }
    return ecode.OK
}
func (TimeSpentService) UpdateTimeSpent(timeSpent *model.TimeSpent) int {
        err := model.NewTimeSpentSearch().Save(timeSpent)
        if err != nil {
            return ecode.DBErr
        }
    return ecode.OK
}