api/v1/serviceOrderStatus.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
constvar/serviceOrderStatus.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
model/request/serviceOrderStatus.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
model/serviceOrder.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
model/serviceOrderStatus.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
router/serviceOrderStatus.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service/serviceOrderStatus.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
api/v1/serviceOrderStatus.go
New file @@ -0,0 +1,112 @@ 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 ServiceOrderStatusApi struct{} // Add // @Tags 服务单状态 // @Summary 添加服务单状态 // @Produce application/json // @Param object body request.AddServiceOrderStatus true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/serviceOrderStatus/add [post] func (s *ServiceOrderStatusApi) Add(c *gin.Context) { var params request.AddServiceOrderStatus ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } errCode := service.NewServiceOrderStatusService().AddServiceOrderStatus(¶ms.ServiceOrderStatus) 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/serviceOrderStatus/delete/{id} [delete] func (s *ServiceOrderStatusApi) Delete(c *gin.Context) { ctx, ok := contextx.NewContext(c, nil) if !ok { return } id, _ := strconv.Atoi(c.Param("id")) errCode := service.NewServiceOrderStatusService().DeleteServiceOrderStatus(id) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // Update // @Tags 服务单状态 // @Summary 更新服务单状态 // @Produce application/json // @Param object body request.UpdateServiceOrderStatus true "查询参数" // @Success 200 {object} contextx.Response{} // @Router /api/serviceOrderStatus/update [put] func (s *ServiceOrderStatusApi) Update(c *gin.Context) { var params request.UpdateServiceOrderStatus ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } if params.Id == 0 { ctx.Fail(ecode.ParamsErr) } params.ServiceOrderStatus.Id = params.Id errCode := service.NewServiceOrderStatusService().UpdateServiceOrderStatus(¶ms.ServiceOrderStatus) if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.Ok() } // List // @Tags 服务单状态 // @Summary 获取服务单状态列表 // @Produce application/json // @Param object query request.GetServiceOrderStatusList true "参数" // @Success 200 {object} response.ListResponse{data=[]model.ServiceOrderStatus} // @Router /api/serviceOrderStatus/list [get] func (s *ServiceOrderStatusApi) List(c *gin.Context) { var params request.GetServiceOrderStatusList ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } serviceOrderStatus, total, errCode := service.NewServiceOrderStatusService().GetServiceOrderStatusList() if errCode != ecode.OK { ctx.Fail(errCode) return } ctx.OkWithDetailed(response.ListResponse{ Data: serviceOrderStatus, Count: total, }) } constvar/serviceOrderStatus.go
New file @@ -0,0 +1,12 @@ package constvar type ServiceOrderStatusQueryClass string const ( ServiceOrderStatusQueryClassExpireLessThen60Days ServiceOrderStatusQueryClass = "" ) type ServiceOrderStatusKeywordType string const ( ServiceOrderStatusKeywordCustomerName ServiceOrderStatusKeywordType = "" ) model/request/serviceOrderStatus.go
New file @@ -0,0 +1,22 @@ package request import ( "aps_crm/constvar" "aps_crm/model" ) type AddServiceOrderStatus struct { model.ServiceOrderStatus } type UpdateServiceOrderStatus struct { Id int `json:"id"` model.ServiceOrderStatus } type GetServiceOrderStatusList struct { PageInfo QueryClass constvar.ServiceOrderStatusQueryClass `json:"queryClass" form:"queryClass"` KeywordType constvar.ServiceOrderStatusKeywordType `json:"keywordType" form:"keywordType"` Keyword string `json:"keyword" form:"keyword"` } model/serviceOrder.go
@@ -5,6 +5,7 @@ "aps_crm/pkg/mysqlx" "errors" "fmt" "github.com/shopspring/decimal" "gorm.io/gorm" "gorm.io/gorm/clause" ) @@ -12,45 +13,46 @@ type ( // ServiceOrder 服务单 ServiceOrder struct { Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` 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:"column:contract_id;type:int;not null;default:0;comment:'合同id'" json:"contractId"` // 合同id Contract Contract `gorm:"foreignKey:ContractId"` 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:"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:"column:service_type_id;type:int;not null;default:0;comment:'服务方式id'" json:"serviceTypeId"` // 服务方式id ServiceType ServiceType `gorm:"foreignKey:ServiceTypeId"` 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:"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:"column:sale_chance_id;type:int;not null;default:0;comment:'销售机会id'" json:"saleChanceId"` // 销售机会id SaleChance SaleChance `gorm:"foreignKey:SaleChanceId"` 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:"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:"column:expect_time;type:varchar(255);not null;default:'';comment:'希望处理时间'" json:"expectTime"` // 希望处理时间 RealTime string `gorm:"column:real_time;type:varchar(255);not null;default:'';comment:'实际处理时间'" json:"realTime"` // 实际处理时间 CarFare float64 `gorm:"car_fare" json:"carFare"` // 交通费 ChargeAmount float64 `gorm:"charge_amount" json:"chargeAmount"` // 收费金额 TimeSpentId int `gorm:"column:time_spent_id;type:int;not null;default:0;comment:'花费时间'" json:"timeSpentId"` // 花费时间 TimeSpent TimeSpent `gorm:"foreignKey:TimeSpentId"` FaqId int `gorm:"column:problem_id;type:int;not null;default:0;comment:'常见问题id'" json:"faqId"` // 常见问题id Faq Faq `gorm:"foreignKey:FaqId"` 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"` // 备注 Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` 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:"column:contract_id;type:int;not null;default:0;comment:合同id" json:"contractId"` // 合同id Contract Contract `gorm:"foreignKey:ContractId"` 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:"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:"column:service_type_id;type:int;not null;default:0;comment:服务方式id" json:"serviceTypeId"` // 服务方式id ServiceType ServiceType `gorm:"foreignKey:ServiceTypeId"` 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:"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:"column:sale_chance_id;type:int;not null;default:0;comment:销售机会id" json:"saleChanceId"` // 销售机会id SaleChance SaleChance `gorm:"foreignKey:SaleChanceId"` 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:"column:severity_id;type:int;not null;default:0;comment:严重程度id" json:"severity"` // 严重程度id Severity Severity `gorm:"foreignKey:SeverityId"` ServiceOrderStatusId int `gorm:"column:service_order_status_id;type:int;not null;default:0;comment:服务单状态id" json:"status"` // 处理状态 ServiceOrderStatus ServiceOrderStatus `gorm:"foreignKey:ServiceOrderStatusId"` 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 decimal.Decimal `gorm:"column:car_fare;type:decimal(10,2);not null;default:'0.00';comment:希望处理时间" json:"carFare"` //交通费 // 交通费 ChargeAmount decimal.Decimal `gorm:"column:charge_amount;type:decimal(10,2);not null;default:'0.00';comment:希望处理时间" json:"chargeAmount"` //收费金额 // 收费金额 TimeSpentId int `gorm:"column:time_spent_id;type:int;not null;default:0;comment:花费时间" json:"timeSpentId"` // 花费时间 TimeSpent TimeSpent `gorm:"foreignKey:TimeSpentId"` FaqId int `gorm:"column:faq_id;type:int;not null;default:0;comment:常见问题id" json:"faqId"` // 常见问题id Faq Faq `gorm:"foreignKey:FaqId"` ProblemDesc string `gorm:"column:problem_desc;type:varchar(255);not null;default:'';comment:主题" json:"problemDesc"` // 问题描述 Solution string `gorm:"column:solution;type:varchar(255);not null;default:'';comment:解决方法" json:"solution"` // 解决方法 SolutionRemark string `gorm:"column:solution_remark;type:varchar(255);not null;default:'';comment:内部备注" json:"solutionRemark"` // 内部备注 Remark string `gorm:"column:remark;type:varchar(255);not null;default:'';comment:备注" json:"remark"` // 备注 } // ServiceOrderSearch 服务单搜索条件 model/serviceOrderStatus.go
New file @@ -0,0 +1,145 @@ package model import ( "aps_crm/constvar" "aps_crm/pkg/mysqlx" "errors" "fmt" "gorm.io/gorm" ) type ( // ServiceOrderStatus 服务单状态 ServiceOrderStatus struct { Id int `json:"id" gorm:"column:id;type:int;primary_key;AUTO_INCREMENT"` Name string `json:"name" gorm:"column:name;type:varchar(255);not null;default:'';comment:名称"` } // ServiceOrderStatusSearch 服务单状态搜索条件 ServiceOrderStatusSearch struct { ServiceOrderStatus Orm *gorm.DB QueryClass constvar.ServiceOrderStatusQueryClass KeywordType constvar.ServiceOrderStatusKeywordType Keyword string PageNum int PageSize int } ) func (ServiceOrderStatus) TableName() string { return "service_order_status" } func NewServiceOrderStatusSearch() *ServiceOrderStatusSearch { return &ServiceOrderStatusSearch{ Orm: mysqlx.GetDB(), } } func (slf *ServiceOrderStatusSearch) build() *gorm.DB { var db = slf.Orm.Model(&ServiceOrderStatus{}) if slf.Id != 0 { db = db.Where("id = ?", slf.Id) } return db } func (slf *ServiceOrderStatusSearch) Create(record *ServiceOrderStatus) error { var db = slf.build() return db.Create(record).Error } func (slf *ServiceOrderStatusSearch) CreateBatch(records []*ServiceOrderStatus) error { var db = slf.build() return db.Create(records).Error } func (slf *ServiceOrderStatusSearch) Delete() error { var db = slf.build() return db.Delete(&ServiceOrderStatus{}).Error } func (slf *ServiceOrderStatusSearch) Update(record *ServiceOrderStatus) error { var db = slf.build() return db.Updates(record).Error } func (slf *ServiceOrderStatusSearch) FindAll() ([]*ServiceOrderStatus, error) { var db = slf.build() var record = make([]*ServiceOrderStatus, 0) err := db.Find(&record).Error return record, err } func (slf *ServiceOrderStatusSearch) SetId(id int) *ServiceOrderStatusSearch { slf.Id = id return slf } func (slf *ServiceOrderStatusSearch) SetPage(page, size int) *ServiceOrderStatusSearch { slf.PageNum, slf.PageSize = page, size return slf } func (slf *ServiceOrderStatusSearch) SetOrm(tx *gorm.DB) *ServiceOrderStatusSearch { slf.Orm = tx return slf } func (slf *ServiceOrderStatusSearch) First() (*ServiceOrderStatus, error) { var db = slf.build() var record = new(ServiceOrderStatus) err := db.First(record).Error return record, err } func (slf *ServiceOrderStatusSearch) Updates(values interface{}) error { var db = slf.build() return db.Updates(values).Error } func (slf *ServiceOrderStatusSearch) Save(record *ServiceOrderStatus) 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 *ServiceOrderStatusSearch) Find() ([]*ServiceOrderStatus, int64, error) { var db = slf.build() var records = make([]*ServiceOrderStatus, 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 *ServiceOrderStatusSearch) 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 := []*ServiceOrderStatus{} return slf.CreateBatch(records) } router/serviceOrderStatus.go
New file @@ -0,0 +1,17 @@ package router import ( v1 "aps_crm/api/v1" "github.com/gin-gonic/gin" ) func InitServiceOrderStatusRouter(router *gin.RouterGroup) { ServiceOrderStatusRouter := router.Group("serviceOrderStatus") ServiceOrderStatusApi := v1.ServiceOrderStatusApi{} { ServiceOrderStatusRouter.POST("add", ServiceOrderStatusApi.Add) // 添加服务单状态 ServiceOrderStatusRouter.DELETE("delete/:id", ServiceOrderStatusApi.Delete) // 删除服务单状态 ServiceOrderStatusRouter.PUT("update", ServiceOrderStatusApi.Update) // 更新服务单状态 ServiceOrderStatusRouter.GET("list", ServiceOrderStatusApi.List) // 获取服务单状态列表 } } service/serviceOrderStatus.go
New file @@ -0,0 +1,75 @@ package service import ( "aps_crm/model" "aps_crm/model/request" "aps_crm/pkg/ecode" ) type ServiceOrderStatusService struct{} func NewServiceOrderStatusService() ServiceOrderStatusService { return ServiceOrderStatusService{} } func (ServiceOrderStatusService) AddServiceOrderStatus(serviceOrderStatus *model.ServiceOrderStatus) int { err := model.NewServiceOrderStatusSearch().Create(serviceOrderStatus) if err != nil { return ecode.DBErr } return ecode.OK } func (ServiceOrderStatusService) GetServiceOrderStatus(id int) (*model.ServiceOrderStatus, int) { serviceOrderStatus, err := model.NewServiceOrderStatusSearch().SetId(id).First() if err != nil { return nil, ecode.DBErr } return serviceOrderStatus, ecode.OK } func (ServiceOrderStatusService) DeleteServiceOrderStatus(id int) int { err := model.NewServiceOrderStatusSearch().SetId(id).Delete() if err != nil { return ecode.DBErr } return ecode.OK } func (ServiceOrderStatusService) GetServiceOrderStatusList() ([]*model.ServiceOrderStatus, int64, int) { list, total, err := model.NewServiceOrderStatusSearch().Find() if err != nil { return nil, 0, ecode.DBErr } return list, total, ecode.OK } func (ServiceOrderStatusService) UpdateServiceOrderStatuss(ServiceOrderStatuss []*request.UpdateServiceOrderStatus) int { for _, v := range ServiceOrderStatuss { // check ServiceOrderStatus exist _, err := model.NewServiceOrderStatusSearch().SetId(v.Id).First() if err != nil { return ecode.DBErr } err = model.NewServiceOrderStatusSearch().SetId(v.Id).Updates(map[string]interface{}{ }) if err != nil { return ecode.DBErr } } return ecode.OK } func (ServiceOrderStatusService) UpdateServiceOrderStatus(serviceOrderStatus *model.ServiceOrderStatus) int { err := model.NewServiceOrderStatusSearch().SetId(serviceOrderStatus.Id).Save(serviceOrderStatus) if err != nil { return ecode.DBErr } return ecode.OK }