Merge branch 'master' into fly
# Conflicts:
# model/index.go
| | |
| | | // @Tags 服务单管理 |
| | | // @Summary 获取服务单列表 |
| | | // @Produce application/json |
| | | // @Param object body request.GetServiceOrderList true "参数" |
| | | // @Success 200 {object} response.ListResponse{data=[]model.ServiceOrder} |
| | | // @Router /api/serviceOrder/list [get] |
| | | // @Router /api/serviceOrder/list [post] |
| | | func (s *ServiceOrderApi) List(c *gin.Context) { |
| | | ctx, ok := contextx.NewContext(c, nil) |
| | | var params request.GetServiceOrderList |
| | | ctx, ok := contextx.NewContext(c, ¶ms) |
| | | 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 |
| | |
| | | package constvar |
| | | |
| | | type ServiceOrderQueryClass string |
| | | |
| | | const ( |
| | |
| | | type ServiceOrderKeywordType string |
| | | |
| | | const ( |
| | | ServiceOrderKeywordCustomerName ServiceOrderKeywordType = "" |
| | | ServiceOrderKeywordOrderNumber ServiceOrderKeywordType = "服务单编号" |
| | | ServiceOrderKeywordSubject ServiceOrderKeywordType = "主题" |
| | | ServiceOrderKeywordClientName ServiceOrderKeywordType = "客户名称" |
| | | ServiceOrderKeywordRealProcessTime ServiceOrderKeywordType = "实际处理时间" |
| | | ServiceOrderKeywordServiceMan ServiceOrderKeywordType = "服务人员" |
| | | ServiceOrderKeywordServiceType ServiceOrderKeywordType = "服务方式" |
| | | ServiceOrderKeywordProductType ServiceOrderKeywordType = "产品类别" |
| | | ServiceOrderKeywordFaultType ServiceOrderKeywordType = "故障类别" |
| | | ) |
| | |
| | | } |
| | | }, |
| | | "/api/serviceOrder/list": { |
| | | "get": { |
| | | "post": { |
| | | "produces": [ |
| | | "application/json" |
| | | ], |
| | |
| | | "服务单管理" |
| | | ], |
| | | "summary": "获取服务单列表", |
| | | "parameters": [ |
| | | { |
| | | "description": "参数", |
| | | "name": "object", |
| | | "in": "body", |
| | | "required": true, |
| | | "schema": { |
| | | "$ref": "#/definitions/request.GetServiceOrderList" |
| | | } |
| | | } |
| | | ], |
| | | "responses": { |
| | | "200": { |
| | | "description": "OK", |
| | |
| | | "ServiceFollowupKeywordCustomerServiceNo", |
| | | "ServiceFollowupKeywordVisitor", |
| | | "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": { |
| | |
| | | "model.ServiceFollowup": { |
| | | "type": "object", |
| | | "properties": { |
| | | "Member": { |
| | | "$ref": "#/definitions/model.User" |
| | | }, |
| | | "client": { |
| | | "$ref": "#/definitions/model.Client" |
| | | }, |
| | | "clientId": { |
| | | "type": "integer" |
| | | }, |
| | | "contact": { |
| | | "$ref": "#/definitions/model.Contact" |
| | | }, |
| | | "contactId": { |
| | | "type": "integer" |
| | |
| | | "id": { |
| | | "type": "integer" |
| | | }, |
| | | "isVisit": { |
| | | "$ref": "#/definitions/model.IsVisit" |
| | | }, |
| | | "isVisitId": { |
| | | "type": "integer" |
| | | }, |
| | |
| | | }, |
| | | "number": { |
| | | "type": "string" |
| | | }, |
| | | "oldMember": { |
| | | "$ref": "#/definitions/model.User" |
| | | }, |
| | | "oldMemberId": { |
| | | "type": "integer" |
| | |
| | | "remark": { |
| | | "type": "string" |
| | | }, |
| | | "satisfaction": { |
| | | "$ref": "#/definitions/model.Satisfaction" |
| | | }, |
| | | "satisfactionId": { |
| | | "type": "integer" |
| | | }, |
| | |
| | | "serviceOrder": { |
| | | "$ref": "#/definitions/model.ServiceOrder" |
| | | }, |
| | | "solveRate": { |
| | | "$ref": "#/definitions/model.SolveRate" |
| | | }, |
| | | "solveRateId": { |
| | | "type": "integer" |
| | | }, |
| | | "timelyRate": { |
| | | "$ref": "#/definitions/model.TimelyRate" |
| | | }, |
| | | "timelyRateId": { |
| | | "type": "integer" |
| | |
| | | } |
| | | } |
| | | }, |
| | | "request.GetServiceOrderList": { |
| | | "type": "object", |
| | | "properties": { |
| | | "keyword": { |
| | | "type": "string" |
| | | }, |
| | | "keywordType": { |
| | | "$ref": "#/definitions/constvar.ServiceOrderKeywordType" |
| | | }, |
| | | "page": { |
| | | "description": "页码", |
| | | "type": "integer" |
| | | }, |
| | | "pageSize": { |
| | | "description": "每页大小", |
| | | "type": "integer" |
| | | }, |
| | | "queryClass": { |
| | | "$ref": "#/definitions/constvar.ServiceOrderQueryClass" |
| | | } |
| | | } |
| | | }, |
| | | "request.GetSubOrderList": { |
| | | "type": "object", |
| | | "properties": { |
| | |
| | | } |
| | | }, |
| | | "/api/serviceOrder/list": { |
| | | "get": { |
| | | "post": { |
| | | "produces": [ |
| | | "application/json" |
| | | ], |
| | |
| | | "服务单管理" |
| | | ], |
| | | "summary": "获取服务单列表", |
| | | "parameters": [ |
| | | { |
| | | "description": "参数", |
| | | "name": "object", |
| | | "in": "body", |
| | | "required": true, |
| | | "schema": { |
| | | "$ref": "#/definitions/request.GetServiceOrderList" |
| | | } |
| | | } |
| | | ], |
| | | "responses": { |
| | | "200": { |
| | | "description": "OK", |
| | |
| | | "ServiceFollowupKeywordCustomerServiceNo", |
| | | "ServiceFollowupKeywordVisitor", |
| | | "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": { |
| | |
| | | "model.ServiceFollowup": { |
| | | "type": "object", |
| | | "properties": { |
| | | "Member": { |
| | | "$ref": "#/definitions/model.User" |
| | | }, |
| | | "client": { |
| | | "$ref": "#/definitions/model.Client" |
| | | }, |
| | | "clientId": { |
| | | "type": "integer" |
| | | }, |
| | | "contact": { |
| | | "$ref": "#/definitions/model.Contact" |
| | | }, |
| | | "contactId": { |
| | | "type": "integer" |
| | |
| | | "id": { |
| | | "type": "integer" |
| | | }, |
| | | "isVisit": { |
| | | "$ref": "#/definitions/model.IsVisit" |
| | | }, |
| | | "isVisitId": { |
| | | "type": "integer" |
| | | }, |
| | |
| | | }, |
| | | "number": { |
| | | "type": "string" |
| | | }, |
| | | "oldMember": { |
| | | "$ref": "#/definitions/model.User" |
| | | }, |
| | | "oldMemberId": { |
| | | "type": "integer" |
| | |
| | | "remark": { |
| | | "type": "string" |
| | | }, |
| | | "satisfaction": { |
| | | "$ref": "#/definitions/model.Satisfaction" |
| | | }, |
| | | "satisfactionId": { |
| | | "type": "integer" |
| | | }, |
| | |
| | | "serviceOrder": { |
| | | "$ref": "#/definitions/model.ServiceOrder" |
| | | }, |
| | | "solveRate": { |
| | | "$ref": "#/definitions/model.SolveRate" |
| | | }, |
| | | "solveRateId": { |
| | | "type": "integer" |
| | | }, |
| | | "timelyRate": { |
| | | "$ref": "#/definitions/model.TimelyRate" |
| | | }, |
| | | "timelyRateId": { |
| | | "type": "integer" |
| | |
| | | } |
| | | } |
| | | }, |
| | | "request.GetServiceOrderList": { |
| | | "type": "object", |
| | | "properties": { |
| | | "keyword": { |
| | | "type": "string" |
| | | }, |
| | | "keywordType": { |
| | | "$ref": "#/definitions/constvar.ServiceOrderKeywordType" |
| | | }, |
| | | "page": { |
| | | "description": "页码", |
| | | "type": "integer" |
| | | }, |
| | | "pageSize": { |
| | | "description": "每页大小", |
| | | "type": "integer" |
| | | }, |
| | | "queryClass": { |
| | | "$ref": "#/definitions/constvar.ServiceOrderQueryClass" |
| | | } |
| | | } |
| | | }, |
| | | "request.GetSubOrderList": { |
| | | "type": "object", |
| | | "properties": { |
| | |
| | | - 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 |
| | |
| | | type: object |
| | | model.ServiceFollowup: |
| | | properties: |
| | | Member: |
| | | $ref: '#/definitions/model.User' |
| | | client: |
| | | $ref: '#/definitions/model.Client' |
| | | clientId: |
| | | type: integer |
| | | contact: |
| | | $ref: '#/definitions/model.Contact' |
| | | contactId: |
| | | type: integer |
| | | customerServiceSheet: |
| | |
| | | type: string |
| | | id: |
| | | type: integer |
| | | isVisit: |
| | | $ref: '#/definitions/model.IsVisit' |
| | | isVisitId: |
| | | type: integer |
| | | memberId: |
| | | type: integer |
| | | number: |
| | | type: string |
| | | oldMember: |
| | | $ref: '#/definitions/model.User' |
| | | oldMemberId: |
| | | type: integer |
| | | planId: |
| | | type: integer |
| | | remark: |
| | | type: string |
| | | satisfaction: |
| | | $ref: '#/definitions/model.Satisfaction' |
| | | satisfactionId: |
| | | type: integer |
| | | serviceId: |
| | | type: integer |
| | | serviceOrder: |
| | | $ref: '#/definitions/model.ServiceOrder' |
| | | solveRate: |
| | | $ref: '#/definitions/model.SolveRate' |
| | | solveRateId: |
| | | type: integer |
| | | timelyRate: |
| | | $ref: '#/definitions/model.TimelyRate' |
| | | timelyRateId: |
| | | type: integer |
| | | type: object |
| | |
| | | pageSize: |
| | | description: 每页大小 |
| | | type: integer |
| | | type: object |
| | | request.GetServiceOrderList: |
| | | properties: |
| | | keyword: |
| | | type: string |
| | | keywordType: |
| | | $ref: '#/definitions/constvar.ServiceOrderKeywordType' |
| | | page: |
| | | description: 页码 |
| | | type: integer |
| | | pageSize: |
| | | description: 每页大小 |
| | | type: integer |
| | | queryClass: |
| | | $ref: '#/definitions/constvar.ServiceOrderQueryClass' |
| | | type: object |
| | | request.GetSubOrderList: |
| | | properties: |
| | |
| | | tags: |
| | | - 服务单管理 |
| | | /api/serviceOrder/list: |
| | | get: |
| | | post: |
| | | parameters: |
| | | - description: 参数 |
| | | in: body |
| | | name: object |
| | | required: true |
| | | schema: |
| | | $ref: '#/definitions/request.GetServiceOrderList' |
| | | produces: |
| | | - application/json |
| | | responses: |
| | |
| | | |
| | | 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"` |
| | | } |
| | |
| | | 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 { |
| | |
| | | Quotation Quotation `json:"quotation" gorm:"foreignKey:QuotationId"` |
| | | ServiceContractTypeId int `json:"serviceContractTypeId" gorm:"column:service_contract_type_id;type:int;comment:合同类型id"` |
| | | ServiceContractType ServiceContractType `json:"serviceContractType" gorm:"foreignKey:ServiceContractTypeId"` |
| | | SignTime string `json:"signTime" gorm:"column:sign_time;type:datetime;comment:签约时间"` |
| | | StartTime string `json:"startTime" gorm:"column:start_time;type:datetime;comment:开始时间"` |
| | | EndTime string `json:"endTime" gorm:"column:end_time;type:datetime;comment:结束时间"` |
| | | SignTime string `json:"signTime" gorm:"column:sign_time;type:varchar(255);comment:签约时间"` |
| | | StartTime string `json:"startTime" gorm:"column:start_time;type:varchar(255);comment:开始时间"` |
| | | EndTime string `json:"endTime" gorm:"column:end_time;type:varchar(255);comment:结束时间"` |
| | | ServiceContractStatusId int `json:"serviceContractStatusId" gorm:"column:service_contract_status_id;type:int;comment:合同状态id"` |
| | | ServiceContractStatus ServiceContractStatus `json:"serviceContractStatus" gorm:"foreignKey:ServiceContractStatusId"` |
| | | ServiceTimes int `json:"serviceTimes" gorm:"column:service_times;type:int;comment:服务次数"` |
| | |
| | | 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: |
| | |
| | | ServiceFollowup struct {
|
| | | Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
|
| | | ClientId int `json:"clientId" gorm:"column:client_id;type:int;comment:客户id"`
|
| | | Client Client `json:"client" gorm:"foreignKey:ClientId"` |
| | | Number string `json:"number" gorm:"column:number;type:varchar(255);comment:合同编号"`
|
| | | ContactId int `json:"contactId" gorm:"column:contact_id;type:int;comment:联系人id"`
|
| | | Contact Contact `json:"contact" gorm:"foreignKey:ContactId"` |
| | | ServiceId int `json:"serviceId" gorm:"column:service_id;type:int;comment:客户服务单id"`
|
| | | ServiceOrder ServiceOrder `gorm:"foreignKey:ServiceId"`
|
| | | CustomerServiceSheet CustomerServiceSheet `json:"customerServiceSheet" gorm:"foreignKey:ServiceId"`
|
| | | MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:服务人员id"`
|
| | | Member User `json:"Member" gorm:"foreignKey:MemberId"` |
| | | PlanId int `json:"planId" gorm:"column:plan_id;type:int;comment:服务计划id"`
|
| | | SatisfactionId int `json:"satisfactionId" gorm:"column:satisfaction_id;type:int;comment:满意度id"`
|
| | | Satisfaction Satisfaction `json:"satisfaction" gorm:"foreignKey:SatisfactionId"` |
| | | TimelyRateId int `json:"timelyRateId" gorm:"column:timely_rate_id;type:int;comment:及时率id"`
|
| | | TimelyRate TimelyRate `json:"timelyRate" gorm:"foreignKey:TimelyRateId"` |
| | | SolveRateId int `json:"solveRateId" gorm:"column:solve_rate_id;type:int;comment:解决率id"`
|
| | | SolveRate SolveRate `json:"solveRate" gorm:"foreignKey:SolveRateId"` |
| | | IsVisitId int `json:"isVisitId" gorm:"column:is_visit_id;type:int;comment:服务人员是否来过id"`
|
| | | IsVisit IsVisit `json:"isVisit" gorm:"foreignKey:IsVisitId"` |
| | | OldMemberId int `json:"oldMemberId" gorm:"column:old_member_id;type:int;comment:原服务人员"`
|
| | | OldMember User `json:"oldMember" gorm:"foreignKey:OldMemberId"` |
| | | Remark string `json:"remark" gorm:"column:remark;type:text;comment:备注"`
|
| | | File string `json:"file" gorm:"column:file;type:varchar(255);comment:附件"`
|
| | |
|
| | |
| | | OrderBy string
|
| | | PageNum int
|
| | | PageSize int
|
| | | Preload bool |
| | | }
|
| | | )
|
| | |
|
| | |
| | | case constvar.ServiceFollowupKeywordSatisfactionDegree:
|
| | | db = db.Where("satisfaction_id = ?", slf.Keyword)
|
| | |
|
| | | } |
| | | |
| | | if slf.Preload { |
| | | db = db.Preload("CustomerServiceSheet"). |
| | | Preload("ServiceOrder"). |
| | | Preload("Client"). |
| | | Preload("Contact"). |
| | | Preload("Satisfaction"). |
| | | Preload("TimelyRate"). |
| | | Preload("SolveRate"). |
| | | Preload("IsVisit"). |
| | | Preload("OldMember"). |
| | | Preload("Member") |
| | | }
|
| | |
|
| | | return db
|
| | |
| | | db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize)
|
| | | }
|
| | |
|
| | | err := db.Preload("CustomerServiceSheet").Preload("ServiceOrder").Find(&records).Error
|
| | | err := db.Find(&records).Error |
| | | return records, total, err
|
| | | }
|
| | |
|
| | |
| | | return slf
|
| | | }
|
| | |
|
| | | func (slf *ServiceFollowupSearch) SetPreload(preload bool) *ServiceFollowupSearch { |
| | | slf.Preload = preload |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ServiceFollowupSearch) SetKeywordType(keyword constvar.ServiceFollowupKeywordType) *ServiceFollowupSearch {
|
| | | slf.KeywordType = keyword
|
| | | return slf
|
| | |
| | | "errors" |
| | | "fmt" |
| | | "gorm.io/gorm" |
| | | "gorm.io/gorm/clause" |
| | | ) |
| | | |
| | | type ( |
| | | // ServiceOrder 服务单 |
| | | ServiceOrder struct { |
| | | Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` |
| | | ServiceNumber string `gorm:"service_number" json:"serviceNumber"` // 服务单编号 |
| | | ClientId int `gorm:"client_id" json:"clientId"` // 客户id |
| | | ServiceNumber string `gorm:"column:service_number;type:varchar(255);not null;default:'';comment:'服务单编号'" json:"serviceNumber"` // 服务单编号 |
| | | ClientId int `gorm:"column:client_id;type:int;not null;default:0;comment:'客户id'" json:"clientId"` // 客户id |
| | | Client Client `gorm:"foreignKey:ClientId"` |
| | | ContractId int `gorm:"contract_id" json:"contractId"` // 合同id |
| | | ContractId int `gorm:"column:contract_id;type:int;not null;default:0;comment:'合同id'" json:"contractId"` // 合同id |
| | | Contract Contract `gorm:"foreignKey:ContractId"` |
| | | OrderId int `gorm:"order_id" json:"orderId"` // 销售订单id |
| | | OrderId int `gorm:"column:order_id;type:int;not null;default:0;comment:'销售订单id'" json:"orderId"` // 销售订单id |
| | | OrderManage OrderManage `gorm:"foreignKey:OrderId"` |
| | | Subject string `gorm:"subject" json:"subject"` // 主题 |
| | | ProductId int `gorm:"product_id" json:"productId"` // 产品id |
| | | Subject string `gorm:"column:subject;type:varchar(255);not null;default:'';comment:'主题'" json:"subject"` // 主题 |
| | | ProductId int `gorm:"column:product_id;type:int;not null;default:0;comment:'产品id'" json:"productId"` // 产品id |
| | | Product Product `gorm:"foreignKey:ProductId"` |
| | | ServiceTypeId int `gorm:"service_type_id" json:"serviceTypeId"` // 服务方式id |
| | | ServiceTypeId int `gorm:"column:service_type_id;type:int;not null;default:0;comment:'服务方式id'" json:"serviceTypeId"` // 服务方式id |
| | | ServiceType ServiceType `gorm:"foreignKey:ServiceTypeId"` |
| | | ServiceManId int `gorm:"service_man_id" json:"serviceManId"` // 服务人员 |
| | | ServiceManId int `gorm:"column:service_man_id;type:int;not null;default:0;comment:'服务人员'" json:"serviceManId"` // 服务人员 |
| | | ContactId int `gorm:"linkman_id" json:"contactId"` // 联系人id |
| | | Contact Contact `gorm:"foreignKey:ContactId"` |
| | | Address string `gorm:"address" json:"address"` // 上门地址 |
| | | PriorityLevelId int `gorm:"priority_level_id" json:"priorityLevelId"` // 优先级别id |
| | | Address string `gorm:"column:address;type:varchar(255);not null;default:'';comment:'上门地址'" json:"address"` // 上门地址 |
| | | PriorityLevelId int `gorm:"column:priority_level_id;type:int;not null;default:0;comment:'优先级别id'" json:"priorityLevelId"` // 优先级别id |
| | | PriorityLevel PriorityLevel `gorm:"foreignKey:PriorityLevelId"` |
| | | AppointmentTime string `gorm:"appointment_time" json:"appointmentTime"` // 预约上门时间 |
| | | SaleChanceId int `gorm:"sale_leads" json:"saleChanceId"` // 销售机会id |
| | | |
| | | SaleChanceId int `gorm:"column:sale_chance_id;type:int;not null;default:0;comment:'销售机会id'" json:"saleChanceId"` // 销售机会id |
| | | SaleChance SaleChance `gorm:"foreignKey:SaleChanceId"` |
| | | FaultTypeId int `gorm:"severity_id" json:"faultTypeId"` // 故障类别id |
| | | FaultTypeId int `gorm:"column:severity_id;type:int;not null;default:0;comment:'故障类别id'" json:"faultTypeId"` // 故障类别id |
| | | FaultType FaultType `gorm:"foreignKey:FaultTypeId"` |
| | | SeverityId int `gorm:"severity_id" json:"severity"` // 严重程度id |
| | | SeverityId int `gorm:"column:severity_id;type:int;not null;default:0;comment:'严重程度id'" json:"severity"` // 严重程度id |
| | | Severity Severity `gorm:"foreignKey:SeverityId"` |
| | | Status int `gorm:"status" json:"status"` // 处理状态 |
| | | ExpectTime string `gorm:"expect_time" json:"expectTime"` // 希望处理时间 |
| | | RealTime string `gorm:"real_time" json:"realTime"` // 实际处理时间 |
| | | ExpectTime string `gorm:"column:expect_time;type:varchar(255);not null;default:'';comment:'希望处理时间'" json:"expectTime"` // 希望处理时间 |
| | | RealTime string `gorm:"column:real_time;type:varchar(255);not null;default:'';comment:'实际处理时间'" json:"realTime"` // 实际处理时间 |
| | | CarFare float64 `gorm:"car_fare" json:"carFare"` // 交通费 |
| | | ChargeAmount float64 `gorm:"charge_amount" json:"chargeAmount"` // 收费金额 |
| | | TimeSpentId int `gorm:"time_spent_id" json:"timeSpentId"` // 花费时间 |
| | | TimeSpentId int `gorm:"column:time_spent_id;type:int;not null;default:0;comment:'花费时间'" json:"timeSpentId"` // 花费时间 |
| | | TimeSpent TimeSpent `gorm:"foreignKey:TimeSpentId"` |
| | | FaqId int `gorm:"problem_id" json:"faqId"` // 常见问题id |
| | | FaqId int `gorm:"column:problem_id;type:int;not null;default:0;comment:'常见问题id'" json:"faqId"` // 常见问题id |
| | | Faq Faq `gorm:"foreignKey:FaqId"` |
| | | ProblemDesc string `gorm:"problem_desc" json:"problemDesc"` // 问题描述 |
| | | Solution string `gorm:"solution" json:"solution"` // 解决方法 |
| | | SolutionRemark string `gorm:"solution_remark" json:"solutionRemark"` // 内部备注 |
| | | Remark string `gorm:"remark" json:"remark"` // 备注 |
| | | ProblemDesc string `gorm:"column:subject;type:varchar(255);not null;default:'';comment:'主题'problem_desc" json:"problemDesc"` // 问题描述 |
| | | Solution string `gorm:"column:solution;type:varchar(255);not null;default:'';comment:'解决方法'" json:"solution"` // 解决方法 |
| | | SolutionRemark string `gorm:"column:solution_remark;type:varchar(255);not null;default:'';comment:'内部备注'" json:"solutionRemark"` // 内部备注 |
| | | Remark string `gorm:"column:remark;type:varchar(255);not null;default:'';comment:'备注'" json:"remark"` // 备注 |
| | | } |
| | | |
| | | // ServiceOrderSearch 服务单搜索条件 |
| | |
| | | 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 |
| | | } |
| | |
| | | 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 |
| | |
| | | // TimeSpent 花费时间 |
| | | TimeSpent struct { |
| | | Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` |
| | | Name string `json:"name" gorm:"column:name"` |
| | | Name string `json:"name" gorm:"column:name;type:varchar(255);not null;default:'';comment:名称"` |
| | | } |
| | | |
| | | // TimeSpentSearch 花费时间搜索条件 |
| | |
| | | ServiceOrderRouter.POST("add", ServiceOrderApi.Add) // 添加服务单 |
| | | ServiceOrderRouter.DELETE("delete/:id", ServiceOrderApi.Delete) // 删除服务单 |
| | | ServiceOrderRouter.PUT("update", ServiceOrderApi.Update) // 更新服务单 |
| | | ServiceOrderRouter.GET("list", ServiceOrderApi.List) // 获取服务单列表 |
| | | ServiceOrderRouter.POST("list", ServiceOrderApi.List) // 获取服务单列表 |
| | | } |
| | | } |
| | |
| | | contacts, total, err := model.NewServiceFollowupSearch(). |
| | | SetKeywordType(keywordType). |
| | | SetKeyword(keyword). |
| | | SetPage(page, pageSize).FindAll() |
| | | SetPage(page, pageSize). |
| | | SetPreload(true). |
| | | FindAll() |
| | | if err != nil { |
| | | return nil, 0, ecode.ServiceFollowupListErr |
| | | } |
| | |
| | | package service |
| | | |
| | | import ( |
| | | "aps_crm/constvar" |
| | | "aps_crm/model" |
| | | "aps_crm/model/request" |
| | | "aps_crm/pkg/ecode" |
| | |
| | | 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 |
| | | } |