zhangqian
2023-08-10 99945ed9e1282863e435510abeced599fee4e02e
修改gorm字段
6个文件已添加
1个文件已修改
463 ■■■■■ 已修改文件
api/v1/serviceOrderStatus.go 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/serviceOrderStatus.go 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/request/serviceOrderStatus.go 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/serviceOrder.go 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/serviceOrderStatus.go 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
router/serviceOrderStatus.go 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/serviceOrderStatus.go 75 ●●●●● 补丁 | 查看 | 原始文档 | 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, &params)
    if !ok {
        return
    }
    errCode := service.NewServiceOrderStatusService().AddServiceOrderStatus(&params.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, &params)
    if !ok {
        return
    }
    if params.Id == 0 {
        ctx.Fail(ecode.ParamsErr)
    }
    params.ServiceOrderStatus.Id = params.Id
    errCode := service.NewServiceOrderStatusService().UpdateServiceOrderStatus(&params.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, &params)
    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
}