| | |
| | | |
| | | package v1 |
| | | |
| | | import ( |
| | | "aps_crm/model" |
| | | "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 ServiceContractStatusApi struct{} |
| | | |
| | | // Add |
| | | // |
| | | // @Tags ServiceContractStatus |
| | | // @Summary 添加服务合同状态 |
| | | // @Produce application/json |
| | | // @Param object body request.AddServiceContractStatus true "查询参数" |
| | | // @Success 200 {object} contextx.Response{} |
| | | // @Router /api/serviceContractStatus/add [post] |
| | | // @Tags 合同状态 |
| | | // @Summary 添加合同状态 |
| | | // @Produce application/json |
| | | // @Param object body request.AddServiceContractStatus true "查询参数" |
| | | // @Success 200 {object} contextx.Response{} |
| | | // @Router /api/serviceContractStatus/add [post] |
| | | func (s *ServiceContractStatusApi) Add(c *gin.Context) { |
| | | var params request.AddServiceContractStatus |
| | | ctx, ok := contextx.NewContext(c, ¶ms) |
| | |
| | | return |
| | | } |
| | | |
| | | serviceContractStatus := new(model.ServiceContractStatus) |
| | | serviceContractStatus.Name = params.Name |
| | | |
| | | errCode := serviceContractStatusService.AddServiceContractStatus(serviceContractStatus) |
| | | errCode := service.NewServiceContractStatusService().AddServiceContractStatus(¶ms.ServiceContractStatus) |
| | | if errCode != ecode.OK { |
| | | ctx.Fail(errCode) |
| | | return |
| | |
| | | } |
| | | |
| | | // Delete |
| | | // |
| | | // @Tags ServiceContractStatus |
| | | // @Summary 删除服务合同状态 |
| | | // @Produce application/json |
| | | // @Param id path int true "查询参数" |
| | | // @Success 200 {object} contextx.Response{} |
| | | // @Router /api/serviceContractStatus/delete/{id} [delete] |
| | | // @Tags 合同状态 |
| | | // @Summary 删除合同状态 |
| | | // @Produce application/json |
| | | // @Param id path int true "查询参数" |
| | | // @Success 200 {object} contextx.Response{} |
| | | // @Router /api/serviceContractStatus/delete/{id} [delete] |
| | | func (s *ServiceContractStatusApi) Delete(c *gin.Context) { |
| | | ctx, ok := contextx.NewContext(c, nil) |
| | | if !ok { |
| | |
| | | } |
| | | |
| | | id, _ := strconv.Atoi(c.Param("id")) |
| | | errCode := serviceContractStatusService.DeleteServiceContractStatus(id) |
| | | errCode := service.NewServiceContractStatusService().DeleteServiceContractStatus(id) |
| | | if errCode != ecode.OK { |
| | | ctx.Fail(errCode) |
| | | return |
| | |
| | | } |
| | | |
| | | // Update |
| | | // |
| | | // @Tags ServiceContractStatus |
| | | // @Summary 更新服务合同状态 |
| | | // @Produce application/json |
| | | // @Param object body request.UpdateServiceContractStatuss true "查询参数" |
| | | // @Success 200 {object} contextx.Response{} |
| | | // @Router /api/serviceContractStatus/update [put] |
| | | // @Tags 合同状态 |
| | | // @Summary 更新合同状态 |
| | | // @Produce application/json |
| | | // @Param object body request.UpdateServiceContractStatus true "查询参数" |
| | | // @Success 200 {object} contextx.Response{} |
| | | // @Router /api/serviceContractStatus/update [put] |
| | | func (s *ServiceContractStatusApi) Update(c *gin.Context) { |
| | | var params request.UpdateServiceContractStatuss |
| | | var params request.UpdateServiceContractStatus |
| | | ctx, ok := contextx.NewContext(c, ¶ms) |
| | | if !ok { |
| | | return |
| | | } |
| | | if params.Id == 0 { |
| | | ctx.Fail(ecode.ParamsErr) |
| | | } |
| | | params.ServiceContractStatus.Id = params.Id |
| | | |
| | | errCode := serviceContractStatusService.UpdateServiceContractStatus(params.ServiceContractStatuss) |
| | | errCode := service.NewServiceContractStatusService().UpdateServiceContractStatus(¶ms.ServiceContractStatus) |
| | | if errCode != ecode.OK { |
| | | ctx.Fail(errCode) |
| | | return |
| | |
| | | } |
| | | |
| | | // List |
| | | // |
| | | // @Tags ServiceContractStatus |
| | | // @Summary 获取服务合同状态列表 |
| | | // @Produce application/json |
| | | // @Success 200 {object} contextx.Response{data=response.ServiceContractStatusResponse} |
| | | // @Router /api/serviceContractStatus/list [get] |
| | | // @Tags 合同状态 |
| | | // @Summary 获取合同状态列表 |
| | | // @Produce application/json |
| | | // @Param object query request.GetServiceContractStatusList true "参数" |
| | | // @Success 200 {object} response.ListResponse{data=[]model.ServiceContractStatus} |
| | | // @Router /api/serviceContractStatus/list [get] |
| | | func (s *ServiceContractStatusApi) List(c *gin.Context) { |
| | | ctx, ok := contextx.NewContext(c, nil) |
| | | var params request.GetServiceContractStatusList |
| | | ctx, ok := contextx.NewContext(c, ¶ms) |
| | | if !ok { |
| | | return |
| | | } |
| | | |
| | | serviceContractStatuss, errCode := serviceContractStatusService.GetServiceContractStatusList() |
| | | serviceContractStatus, total, errCode := service.NewServiceContractStatusService().GetServiceContractStatusList() |
| | | if errCode != ecode.OK { |
| | | ctx.Fail(errCode) |
| | | return |
| | | } |
| | | |
| | | ctx.OkWithDetailed(response.ServiceContractStatusResponse{ |
| | | List: serviceContractStatuss, |
| | | ctx.OkWithDetailed(response.ListResponse{ |
| | | Data: serviceContractStatus, |
| | | Count: total, |
| | | }) |
| | | } |
New file |
| | |
| | | package constvar |
| | | type SalesDetailsProductQueryClass string |
| | | |
| | | const ( |
| | | SalesDetailsProductQueryClassExpireLessThen60Days SalesDetailsProductQueryClass = "" |
| | | ) |
| | | |
| | | type SalesDetailsProductKeywordType string |
| | | |
| | | const ( |
| | | SalesDetailsProductKeywordCustomerName SalesDetailsProductKeywordType = "" |
| | | ) |
New file |
| | |
| | | package constvar |
| | | type ServiceContractStatusQueryClass string |
| | | |
| | | const ( |
| | | ServiceContractStatusQueryClassExpireLessThen60Days ServiceContractStatusQueryClass = "" |
| | | ) |
| | | |
| | | type ServiceContractStatusKeywordType string |
| | | |
| | | const ( |
| | | ServiceContractStatusKeywordCustomerName ServiceContractStatusKeywordType = "" |
| | | ) |
| | |
| | | package model |
| | | |
| | | import ( |
| | | "aps_crm/pkg/mysqlx" |
| | | "github.com/shopspring/decimal" |
| | | "gorm.io/gorm" |
| | | ) |
| | | |
| | | type Product struct { |
| | | Id uint `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` |
| | | Name string `json:"name" gorm:"column:name;type:varchar(255);comment:产品名称"` |
| | | Price decimal.Decimal `json:"price" gorm:"column:price;type:decimal(10,2);comment:产品价格"` |
| | | Number string `json:"number" gorm:"column:number;type:varchar(255);comment:产品编号"` |
| | | Amount decimal.Decimal `json:"amount" gorm:"column:amount;type:int;comment:产品数量"` |
| | | Total decimal.Decimal `json:"total" gorm:"column:total;type:decimal(10,2);comment:产品总价"` |
| | | Desc string `json:"desc" gorm:"column:desc;type:varchar(255);comment:产品描述"` |
| | | gorm.Model `json:"-"` |
| | | } |
| | | type ( |
| | | Product struct { |
| | | Id uint `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` |
| | | Name string `json:"name" gorm:"column:name;type:varchar(255);comment:产品名称"` |
| | | Price decimal.Decimal `json:"price" gorm:"column:price;type:decimal(10,2);comment:产品价格"` |
| | | Number string `json:"number" gorm:"column:number;type:varchar(255);comment:产品编号"` |
| | | Amount decimal.Decimal `json:"amount" gorm:"column:amount;type:int;comment:产品数量"` |
| | | Total decimal.Decimal `json:"total" gorm:"column:total;type:decimal(10,2);comment:产品总价"` |
| | | Desc string `json:"desc" gorm:"column:desc;type:varchar(255);comment:产品描述"` |
| | | gorm.Model `json:"-"` |
| | | } |
| | | |
| | | ProductSearch struct { |
| | | Product |
| | | Ids []uint |
| | | Orm *gorm.DB |
| | | } |
| | | ) |
| | | |
| | | func (Product) TableName() string { |
| | | return "products" |
| | | } |
| | | |
| | | func NewProductSearch(db *gorm.DB) *ProductSearch { |
| | | if db == nil { |
| | | db = mysqlx.GetDB() |
| | | } |
| | | |
| | | return &ProductSearch{ |
| | | Orm: db, |
| | | } |
| | | } |
| | | |
| | | func (slf *ProductSearch) build() *gorm.DB { |
| | | var db = slf.Orm.Model(&Product{}) |
| | | if slf.Id != 0 { |
| | | db = db.Where("id = ?", slf.Id) |
| | | } |
| | | if slf.Name != "" { |
| | | db = db.Where("name = ?", slf.Name) |
| | | } |
| | | |
| | | return db |
| | | } |
| | | |
| | | // Create 创建 |
| | | func (slf *ProductSearch) Create(record *Product) error { |
| | | var db = slf.build() |
| | | return db.Create(record).Error |
| | | } |
| | | |
| | | func (slf *ProductSearch) CreateBatch(records []*Product) error { |
| | | var db = slf.build() |
| | | return db.Create(records).Error |
| | | } |
| | | |
| | | func (slf *ProductSearch) Delete() error { |
| | | var db = slf.build() |
| | | return db.Delete(&Product{}).Error |
| | | } |
| | | |
| | | func (slf *ProductSearch) Update(record *Product) error { |
| | | var db = slf.build() |
| | | return db.Updates(record).Error |
| | | } |
| | | |
| | | func (slf *ProductSearch) GetListByIds(ids []int) (result []Product, err error) { |
| | | var db = slf.build() |
| | | err = db.Where("id in (?)", ids).Find(&result).Error |
| | | return |
| | | } |
| | | |
| | | func (slf *ProductSearch) Find() (result []Product, err error) { |
| | | var db = slf.build() |
| | | err = db.Preload("country").Find(&result).Error |
| | | return |
| | | } |
| | | |
| | | func (slf *ProductSearch) SetId(id uint) *ProductSearch { |
| | | slf.Id = id |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ProductSearch) SetIds(ids []uint) *ProductSearch { |
| | | slf.Ids = ids |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ProductSearch) SetName(name string) *ProductSearch { |
| | | slf.Name = name |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ProductSearch) UpdateList(m map[string]interface{}, ids []int) error { |
| | | var db = slf.build() |
| | | return db.Where("id in (?)", ids).Updates(m).Error |
| | | } |
| | | |
| | | func (slf *ProductSearch) First() (result Product, err error) { |
| | | var db = slf.build() |
| | | err = db.First(&result).Error |
| | | return |
| | | } |
| | | |
| | | func (slf *ProductSearch) FindAll() (result []*Product, err error) { |
| | | var db = slf.build() |
| | | err = db.Find(&result).Error |
| | | return |
| | | } |
| | | |
| | | func (slf *ProductSearch) Updates(m map[string]interface{}) error { |
| | | var db = slf.build() |
| | | return db.Updates(m).Error |
| | | } |
New file |
| | |
| | | package request |
| | | |
| | | import ( |
| | | "aps_crm/constvar" |
| | | "aps_crm/model" |
| | | ) |
| | | |
| | | type AddSalesDetailsProduct struct { |
| | | model.SalesDetailsProduct |
| | | } |
| | | |
| | | type UpdateSalesDetailsProduct struct { |
| | | Id int `json:"id"` |
| | | model.SalesDetailsProduct |
| | | } |
| | | |
| | | type GetSalesDetailsProductList struct { |
| | | PageInfo |
| | | QueryClass constvar.SalesDetailsProductQueryClass `json:"queryClass" form:"queryClass"` |
| | | KeywordType constvar.SalesDetailsProductKeywordType `json:"keywordType" form:"keywordType"` |
| | | Keyword string `json:"keyword" form:"keyword"` |
| | | } |
| | |
| | | |
| | | package request |
| | | |
| | | import ( |
| | | "aps_crm/constvar" |
| | | "aps_crm/model" |
| | | ) |
| | | |
| | | type AddServiceContractStatus struct { |
| | | Name string ` json:"name" binding:"required"` |
| | | model.ServiceContractStatus |
| | | } |
| | | |
| | | type UpdateServiceContractStatus struct { |
| | | Id int `json:"id" binding:"required"` |
| | | Name string `json:"name" binding:"required"` |
| | | Id int `json:"id"` |
| | | model.ServiceContractStatus |
| | | } |
| | | |
| | | type UpdateServiceContractStatuss struct { |
| | | ServiceContractStatuss []*UpdateServiceContractStatus `json:"service_contract_status" binding:"required"` |
| | | type GetServiceContractStatusList struct { |
| | | PageInfo |
| | | QueryClass constvar.ServiceContractStatusQueryClass `json:"queryClass" form:"queryClass"` |
| | | KeywordType constvar.ServiceContractStatusKeywordType `json:"keywordType" form:"keywordType"` |
| | | Keyword string `json:"keyword" form:"keyword"` |
| | | } |
| | |
| | | amount = record.AmountUnInvoiced.Add(amount) |
| | | return slf.UpdateByMap(map[string]interface{}{"amount_not_invoiced": amount}) |
| | | } |
| | | |
| | | func (slf *SalesDetailsSearch) UpdateProducts(record *SalesDetails, newProducts, removedProducts []*Product) error { |
| | | var db = slf.build() |
| | | return db.Updates(record).Error |
| | | } |
New file |
| | |
| | | package model |
| | | |
| | | import ( |
| | | "aps_crm/constvar" |
| | | "aps_crm/pkg/mysqlx" |
| | | "fmt" |
| | | "gorm.io/gorm" |
| | | ) |
| | | |
| | | type ( |
| | | // SalesDetailsProduct 销售明细和产品关联 |
| | | SalesDetailsProduct struct { |
| | | SalesDetailsId int `json:"id" gorm:"column:id;type:int;primary_key;AUTO_INCREMENT"` |
| | | ProductId uint `json:"name" gorm:"primary_key;column:name;type:varchar(255);not null;default:'';comment:名称"` |
| | | } |
| | | |
| | | // SalesDetailsProductSearch 销售明细和产品关联搜索条件 |
| | | SalesDetailsProductSearch struct { |
| | | SalesDetailsProduct |
| | | Orm *gorm.DB |
| | | QueryClass constvar.SalesDetailsProductQueryClass |
| | | KeywordType constvar.SalesDetailsProductKeywordType |
| | | Keyword string |
| | | PageNum int |
| | | PageSize int |
| | | } |
| | | ) |
| | | |
| | | func (SalesDetailsProduct) TableName() string { |
| | | return "sales_details_product" |
| | | } |
| | | |
| | | func NewSalesDetailsProductSearch() *SalesDetailsProductSearch { |
| | | return &SalesDetailsProductSearch{ |
| | | Orm: mysqlx.GetDB(), |
| | | } |
| | | } |
| | | |
| | | func (slf *SalesDetailsProductSearch) build() *gorm.DB { |
| | | var db = slf.Orm.Model(&SalesDetailsProduct{}) |
| | | |
| | | return db |
| | | } |
| | | |
| | | func (slf *SalesDetailsProductSearch) Create(record *SalesDetailsProduct) error { |
| | | var db = slf.build() |
| | | return db.Create(record).Error |
| | | } |
| | | |
| | | func (slf *SalesDetailsProductSearch) CreateBatch(records []*SalesDetailsProduct) error { |
| | | var db = slf.build() |
| | | return db.Create(records).Error |
| | | } |
| | | |
| | | func (slf *SalesDetailsProductSearch) Delete() error { |
| | | var db = slf.build() |
| | | return db.Delete(&SalesDetailsProduct{}).Error |
| | | } |
| | | |
| | | func (slf *SalesDetailsProductSearch) Update(record *SalesDetailsProduct) error { |
| | | var db = slf.build() |
| | | return db.Updates(record).Error |
| | | } |
| | | |
| | | func (slf *SalesDetailsProductSearch) FindAll() ([]*SalesDetailsProduct, error) { |
| | | var db = slf.build() |
| | | var record = make([]*SalesDetailsProduct, 0) |
| | | err := db.Find(&record).Error |
| | | return record, err |
| | | } |
| | | |
| | | func (slf *SalesDetailsProductSearch) SetPage(page, size int) *SalesDetailsProductSearch { |
| | | slf.PageNum, slf.PageSize = page, size |
| | | return slf |
| | | } |
| | | |
| | | func (slf *SalesDetailsProductSearch) SetOrm(tx *gorm.DB) *SalesDetailsProductSearch { |
| | | slf.Orm = tx |
| | | return slf |
| | | } |
| | | |
| | | func (slf *SalesDetailsProductSearch) First() (*SalesDetailsProduct, error) { |
| | | var db = slf.build() |
| | | var record = new(SalesDetailsProduct) |
| | | err := db.First(record).Error |
| | | return record, err |
| | | } |
| | | |
| | | func (slf *SalesDetailsProductSearch) Updates(values interface{}) error { |
| | | var db = slf.build() |
| | | return db.Updates(values).Error |
| | | } |
| | | |
| | | func (slf *SalesDetailsProductSearch) Save(record *SalesDetailsProduct) error { |
| | | 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 *SalesDetailsProductSearch) Find() ([]*SalesDetailsProduct, int64, error) { |
| | | var db = slf.build() |
| | | var records = make([]*SalesDetailsProduct, 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 *SalesDetailsProductSearch) 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 := []*SalesDetailsProduct{} |
| | | return slf.CreateBatch(records) |
| | | } |
| | |
| | | package model |
| | | |
| | | import ( |
| | | "aps_crm/constvar" |
| | | "aps_crm/pkg/mysqlx" |
| | | "errors" |
| | | "fmt" |
| | | "gorm.io/gorm" |
| | | "sync" |
| | | ) |
| | | |
| | | type ( |
| | | // ServiceContractStatus 商机阶段 |
| | | // ServiceContractStatus 合同状态 |
| | | ServiceContractStatus struct { |
| | | Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` |
| | | Name string `json:"name" gorm:"column:name;type:varchar(255);comment:商机阶段名称"` |
| | | 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:名称"` |
| | | } |
| | | |
| | | // ServiceContractStatusSearch 合同状态搜索条件 |
| | | ServiceContractStatusSearch struct { |
| | | ServiceContractStatus |
| | | Orm *gorm.DB |
| | | Orm *gorm.DB |
| | | QueryClass constvar.ServiceContractStatusQueryClass |
| | | KeywordType constvar.ServiceContractStatusKeywordType |
| | | Keyword string |
| | | PageNum int |
| | | PageSize int |
| | | } |
| | | ) |
| | | |
| | |
| | | if slf.Id != 0 { |
| | | db = db.Where("id = ?", slf.Id) |
| | | } |
| | | if slf.Name != "" { |
| | | db = db.Where("name = ?", slf.Name) |
| | | } |
| | | |
| | | return db |
| | | } |
| | |
| | | func (slf *ServiceContractStatusSearch) Create(record *ServiceContractStatus) error { |
| | | var db = slf.build() |
| | | return db.Create(record).Error |
| | | } |
| | | |
| | | func (slf *ServiceContractStatusSearch) CreateBatch(records []*ServiceContractStatus) error { |
| | | var db = slf.build() |
| | | return db.Create(records).Error |
| | | } |
| | | |
| | | func (slf *ServiceContractStatusSearch) Delete() error { |
| | |
| | | return db.Updates(record).Error |
| | | } |
| | | |
| | | func (slf *ServiceContractStatusSearch) Find() (*ServiceContractStatus, error) { |
| | | var db = slf.build() |
| | | var record = new(ServiceContractStatus) |
| | | err := db.First(record).Error |
| | | return record, err |
| | | } |
| | | |
| | | func (slf *ServiceContractStatusSearch) FindAll() ([]*ServiceContractStatus, error) { |
| | | var db = slf.build() |
| | | var records = make([]*ServiceContractStatus, 0) |
| | | err := db.Find(&records).Error |
| | | return records, err |
| | | var record = make([]*ServiceContractStatus, 0) |
| | | err := db.Find(&record).Error |
| | | return record, err |
| | | } |
| | | |
| | | func (slf *ServiceContractStatusSearch) SetId(id int) *ServiceContractStatusSearch { |
| | |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ServiceContractStatusSearch) SetName(name string) *ServiceContractStatusSearch { |
| | | slf.Name = name |
| | | func (slf *ServiceContractStatusSearch) SetPage(page, size int) *ServiceContractStatusSearch { |
| | | slf.PageNum, slf.PageSize = page, size |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ServiceContractStatusSearch) Updates(data map[string]interface{}) error { |
| | | var db = slf.build() |
| | | return db.Updates(data).Error |
| | | func (slf *ServiceContractStatusSearch) SetOrm(tx *gorm.DB) *ServiceContractStatusSearch { |
| | | slf.Orm = tx |
| | | return slf |
| | | } |
| | | |
| | | func (slf *ServiceContractStatusSearch) CreateBatch(records []*ServiceContractStatus) error { |
| | | func (slf *ServiceContractStatusSearch) First() (*ServiceContractStatus, error) { |
| | | var db = slf.build() |
| | | return db.Create(records).Error |
| | | var record = new(ServiceContractStatus) |
| | | err := db.First(record).Error |
| | | return record, err |
| | | } |
| | | |
| | | func (slf *ServiceContractStatusSearch) Updates(values interface{}) error { |
| | | var db = slf.build() |
| | | return db.Updates(values).Error |
| | | } |
| | | |
| | | func (slf *ServiceContractStatusSearch) Save(record *ServiceContractStatus) 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 *ServiceContractStatusSearch) Find() ([]*ServiceContractStatus, int64, error) { |
| | | var db = slf.build() |
| | | var records = make([]*ServiceContractStatus, 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 初始化数据 |
| | |
| | | |
| | | package router |
| | | |
| | | import ( |
| | |
| | | serviceContractStatusRouter.PUT("update", serviceContractStatusApi.Update) // 更新$CName$ |
| | | serviceContractStatusRouter.GET("list", serviceContractStatusApi.List) // 获取$CName$列表 |
| | | } |
| | | } |
| | | } |
| | |
| | | data.OrderType = orderTypeList |
| | | |
| | | // get ServiceContractStatus list |
| | | serviceContractStatusList, _ := ServiceGroup.GetServiceContractStatusList() |
| | | serviceContractStatusList, _, _ := ServiceGroup.GetServiceContractStatusList() |
| | | data.ServiceContractStatus = serviceContractStatusList |
| | | |
| | | // get ServiceContractType list |
| | |
| | | currencyList, _ := ServiceGroup.GetCurrencyList() |
| | | data.Currency = currencyList |
| | | |
| | | |
| | | errCode = ecode.OK |
| | | |
| | | return |
| | | } |
| | | } |
| | |
| | | "aps_crm/model" |
| | | "aps_crm/pkg/ecode" |
| | | "github.com/shopspring/decimal" |
| | | "gorm.io/gorm" |
| | | ) |
| | | |
| | | type SalesDetailsService struct{} |
| | |
| | | salesDetails.AmountReceivable = salesDetails.AmountTotal.Sub(salesDetails.AmountReceived) |
| | | salesDetails.AmountUnInvoiced = salesDetails.AmountTotal.Sub(salesDetails.AmountInvoiced) |
| | | |
| | | err = model.NewSalesDetailsSearch().SetId(salesDetails.Id).Update(salesDetails) |
| | | err = model.WithTransaction(func(db *gorm.DB) error { |
| | | err = model.NewSalesDetailsSearch().SetId(salesDetails.Id).Update(salesDetails) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | err = model.NewProductSearch(db).SetIds(removedProductIds).Delete() |
| | | if err != nil { |
| | | return err |
| | | } |
| | | err = model.NewProductSearch(db).CreateBatch(newProducts) |
| | | if err != nil { |
| | | return err |
| | | } |
| | | var rel []*model.SalesDetailsProduct |
| | | for _, p := range newProducts { |
| | | rel = append(rel, &model.SalesDetailsProduct{ |
| | | SalesDetailsId: salesDetails.Id, |
| | | ProductId: p.Id, |
| | | }) |
| | | } |
| | | return model.NewSalesDetailsProductSearch().CreateBatch(rel) |
| | | }) |
| | | |
| | | if err != nil { |
| | | return ecode.SalesDetailsSetErr |
| | | } |
| | |
| | | |
| | | package service |
| | | |
| | | import ( |
| | |
| | | |
| | | type ServiceContractStatusService struct{} |
| | | |
| | | func NewServiceContractStatusService() ServiceContractStatusService { |
| | | return ServiceContractStatusService{} |
| | | } |
| | | |
| | | func (ServiceContractStatusService) AddServiceContractStatus(serviceContractStatus *model.ServiceContractStatus) int { |
| | | err := model.NewServiceContractStatusSearch().Create(serviceContractStatus) |
| | | if err != nil { |
| | | return ecode.ServiceContractStatusExist |
| | | return ecode.DBErr |
| | | } |
| | | |
| | | return ecode.OK |
| | | } |
| | | |
| | | func (ServiceContractStatusService) DeleteServiceContractStatus(id int) int { |
| | | _, err := model.NewServiceContractStatusSearch().SetId(id).Find() |
| | | func (ServiceContractStatusService) GetServiceContractStatus(id int) (*model.ServiceContractStatus, int) { |
| | | serviceContractStatus, err := model.NewServiceContractStatusSearch().SetId(id).First() |
| | | if err != nil { |
| | | return ecode.ServiceContractStatusNotExist |
| | | } |
| | | |
| | | err = model.NewServiceContractStatusSearch().SetId(id).Delete() |
| | | if err != nil { |
| | | return ecode.ServiceContractStatusNotExist |
| | | } |
| | | return ecode.OK |
| | | } |
| | | |
| | | func (ServiceContractStatusService) GetServiceContractStatusList() ([]*model.ServiceContractStatus, int) { |
| | | list, err := model.NewServiceContractStatusSearch().FindAll() |
| | | if err != nil { |
| | | return nil, ecode.ServiceContractStatusListErr |
| | | } |
| | | |
| | | return list, ecode.OK |
| | | } |
| | | |
| | | func (ServiceContractStatusService) UpdateServiceContractStatus(serviceContractStatuss []*request.UpdateServiceContractStatus) int { |
| | | for _, v := range serviceContractStatuss { |
| | | // check serviceContractStatus exist |
| | | _, err := model.NewServiceContractStatusSearch().SetId(v.Id).Find() |
| | | if err != nil { |
| | | return ecode.ServiceContractStatusNotExist |
| | | } |
| | | |
| | | err = model.NewServiceContractStatusSearch().SetId(v.Id).Updates(map[string]interface{}{ |
| | | "name": v.Name, |
| | | }) |
| | | if err != nil { |
| | | return ecode.ServiceContractStatusSetErr |
| | | } |
| | | } |
| | | |
| | | return ecode.OK |
| | | } |
| | | |
| | | func (ServiceContractStatusService) GetServiceContractStatusDetail(id int) (*model.ServiceContractStatus, int) { |
| | | serviceContractStatus, err := model.NewServiceContractStatusSearch().SetId(id).Find() |
| | | if err != nil { |
| | | return nil, ecode.ServiceContractStatusNotExist |
| | | return nil, ecode.DBErr |
| | | } |
| | | |
| | | return serviceContractStatus, ecode.OK |
| | | } |
| | | |
| | | func (ServiceContractStatusService) DeleteServiceContractStatus(id int) int { |
| | | err := model.NewServiceContractStatusSearch().SetId(id).Delete() |
| | | if err != nil { |
| | | return ecode.DBErr |
| | | } |
| | | return ecode.OK |
| | | } |
| | | |
| | | func (ServiceContractStatusService) GetServiceContractStatusList() ([]*model.ServiceContractStatus, int64, int) { |
| | | list, total, err := model.NewServiceContractStatusSearch().Find() |
| | | if err != nil { |
| | | return nil, 0, ecode.DBErr |
| | | } |
| | | |
| | | return list, total, ecode.OK |
| | | } |
| | | |
| | | func (ServiceContractStatusService) UpdateServiceContractStatuss(ServiceContractStatuss []*request.UpdateServiceContractStatus) int { |
| | | for _, v := range ServiceContractStatuss { |
| | | // check ServiceContractStatus exist |
| | | _, err := model.NewServiceContractStatusSearch().SetId(v.Id).First() |
| | | if err != nil { |
| | | return ecode.DBErr |
| | | } |
| | | |
| | | err = model.NewServiceContractStatusSearch().SetId(v.Id).Updates(map[string]interface{}{ |
| | | |
| | | }) |
| | | if err != nil { |
| | | return ecode.DBErr |
| | | } |
| | | } |
| | | |
| | | return ecode.OK |
| | | } |
| | | |
| | | func (ServiceContractStatusService) UpdateServiceContractStatus(serviceContractStatus *model.ServiceContractStatus) int { |
| | | err := model.NewServiceContractStatusSearch().SetId(serviceContractStatus.Id).Save(serviceContractStatus) |
| | | if err != nil { |
| | | return ecode.DBErr |
| | | } |
| | | return ecode.OK |
| | | } |