api/v1/salesReturn.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
docs/docs.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
docs/swagger.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
docs/swagger.yaml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
model/salesRefund.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
model/salesReturn.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service/salesRefund.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
service/salesReturn.go | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
api/v1/salesReturn.go
@@ -8,6 +8,7 @@ "aps_crm/pkg/ecode" "github.com/gin-gonic/gin" "strconv" "strings" ) type SalesReturnApi struct{} @@ -79,14 +80,21 @@ if !ok { return } errCode := salesReturnService.BatchDeleteSalesReturn(params.Ids) if errCode != ecode.OK { ctx.Fail(errCode) failIds, _ := salesReturnService.BatchDeleteSalesReturn(params.Ids) if len(failIds) == 0 { ctx.Ok() return } ctx.Ok() salesReturns, code := salesReturnService.GetSalesReturnListByIds(failIds) if code != ecode.OK { ctx.Ok() return } var numbers []string for _, salesReturn := range salesReturns { numbers = append(numbers, salesReturn.Number) } ctx.FailWithMsg(ecode.DBErr, strings.Join(numbers, ",")+"删除失败") } // Update docs/docs.go
@@ -12256,7 +12256,7 @@ "type": "integer" }, "sourceType": { "description": "来源类型(1销售明细单2服务合同3销售发票4收款计划5出库单)", "description": "来源类型(1销售退货)", "allOf": [ { "$ref": "#/definitions/constvar.RefundSourceType" docs/swagger.json
@@ -12244,7 +12244,7 @@ "type": "integer" }, "sourceType": { "description": "来源类型(1销售明细单2服务合同3销售发票4收款计划5出库单)", "description": "来源类型(1销售退货)", "allOf": [ { "$ref": "#/definitions/constvar.RefundSourceType" docs/swagger.yaml
@@ -1480,7 +1480,7 @@ sourceType: allOf: - $ref: '#/definitions/constvar.RefundSourceType' description: 来源类型(1销售明细单2服务合同3销售发票4收款计划5出库单) description: 来源类型(1销售退货) type: object model.SalesReturn: properties: model/salesRefund.go
@@ -15,8 +15,8 @@ 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:退款单号"` SourceType constvar.RefundSourceType `gorm:"column:source_type;type:int;not null;default 0;comment:来源类型(1销售明细单2服务合同3销售发票4收款计划5出库单)" json:"sourceType"` // 来源类型(1销售明细单2服务合同3销售发票4收款计划5出库单) SourceId int `gorm:"column:source_id;type:int;not null;default 0;comment:源单id " json:"sourceId"` // 源单id SourceType constvar.RefundSourceType `gorm:"column:source_type;type:int;not null;default 0;comment:来源类型(1销售退货)" json:"sourceType"` // 来源类型(1销售退货) SourceId int `gorm:"column:source_id;type:int;not null;default 0;comment:源单id " json:"sourceId"` // 源单id MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:负责人id"` Member User `json:"member" gorm:"foreignKey:MemberId"` RefundDate string `json:"refundDate" gorm:"column:refund_date;type:datetime;comment:退款日期"` @@ -138,6 +138,16 @@ return slf } func (slf *SalesRefundSearch) SetSourceType(sourceType constvar.RefundSourceType) *SalesRefundSearch { slf.SourceType = sourceType return slf } func (slf *SalesRefundSearch) SetSourceId(id int) *SalesRefundSearch { slf.SourceId = id return slf } func (slf *SalesRefundSearch) SetPreload(preload bool) *SalesRefundSearch { slf.Preload = preload return slf model/salesReturn.go
@@ -29,7 +29,7 @@ Products []*Product `json:"products" gorm:"many2many:salesReturn_product;"` //退货产品 AmountShouldRefund decimal.Decimal `gorm:"column:amount_should_refund;type:decimal(12,2);comment:应退款金额" json:"amountShouldRefund"` // 应退款金额 AmountHasRefund decimal.Decimal `gorm:"column:amount_has_refund;type:decimal(12,2);comment:已退款金额" json:"amountHasRefund"` // 已退款金额 AmountTotal decimal.Decimal `gorm:"column:amount_total;type:decimal(12,2);comment:退货产品总金额" json:"-"` CrmModel } @@ -43,6 +43,7 @@ PageNum int PageSize int Preload bool Ids []int } ) @@ -59,6 +60,9 @@ var db = slf.Orm.Model(&SalesReturn{}) if slf.Id != 0 { db = db.Where("id = ?", slf.Id) } if len(slf.Ids) != 0 { db = db.Where("id in ?", slf.Ids) } if slf.Preload { @@ -114,7 +118,7 @@ return db.Updates(record).Error } func (slf *SalesReturnSearch) Find() (*SalesReturn, error) { func (slf *SalesReturnSearch) First() (*SalesReturn, error) { var db = slf.build() var record = new(SalesReturn) err := db.First(record).Error @@ -131,16 +135,28 @@ if slf.PageNum > 0 && slf.PageSize > 0 { db = db.Limit(slf.PageSize).Offset((slf.PageNum - 1) * slf.PageSize) } err := db.Preload("Member").Preload("Client").Preload("Products").Order("id desc").Find(&records).Error return records, total, err } func (slf *SalesReturnSearch) Find() ([]*SalesReturn, error) { var db = slf.build() var records = make([]*SalesReturn, 0) err := db.Find(&records).Error return records, err } func (slf *SalesReturnSearch) SetId(id int) *SalesReturnSearch { slf.Id = id return slf } func (slf *SalesReturnSearch) SetIds(id []int) *SalesReturnSearch { slf.Ids = id return slf } func (slf *SalesReturnSearch) SetKeyword(keyword string) *SalesReturnSearch { slf.Keyword = keyword return slf service/salesRefund.go
@@ -9,7 +9,7 @@ type SalesRefundService struct{} func (SalesRefundService) AddSalesRefund(salesRefund *model.SalesRefund) int { salesReturnRecord, err := model.NewSalesReturnSearch().SetId(salesRefund.SourceId).SetPreload(true).Find() salesReturnRecord, err := model.NewSalesReturnSearch().SetId(salesRefund.SourceId).SetPreload(true).First() if err != nil { return ecode.SalesReturnNotExist } @@ -62,7 +62,7 @@ return ecode.SalesRefundNotExist } salesReturnRecord, err := model.NewSalesReturnSearch().SetId(salesRefund.SourceId).SetPreload(true).Find() salesReturnRecord, err := model.NewSalesReturnSearch().SetId(salesRefund.SourceId).SetPreload(true).First() if err != nil { return ecode.SalesReturnNotExist } service/salesReturn.go
@@ -4,11 +4,20 @@ "aps_crm/constvar" "aps_crm/model" "aps_crm/pkg/ecode" "github.com/shopspring/decimal" "gorm.io/gorm" ) type SalesReturnService struct{} func (slf SalesReturnService) AddSalesReturn(salesReturn *model.SalesReturn) int { salesReturn.AmountShouldRefund = decimal.Zero salesReturn.AmountHasRefund = decimal.Zero salesReturn.AmountTotal = decimal.Zero for _, product := range salesReturn.Products { salesReturn.AmountTotal = salesReturn.AmountTotal.Add(product.Amount.Mul(product.Price)) } salesReturn.AmountShouldRefund = salesReturn.AmountTotal err := model.NewSalesReturnSearch().Create(salesReturn) if err != nil { return ecode.SalesReturnExist @@ -17,33 +26,52 @@ return ecode.OK } func (SalesReturnService) DeleteSalesReturn(id int) int { _, err := model.NewSalesReturnSearch().SetId(id).Find() func (slf SalesReturnService) DeleteSalesReturn(id int) int { _, err := model.NewSalesReturnSearch().SetId(id).First() if err != nil { return ecode.SalesReturnNotExist } err = model.NewSalesReturnSearch().SetId(id).Delete() err = model.WithTransaction(func(db *gorm.DB) error { err = model.NewSalesReturnSearch().SetId(id).Delete() if err != nil { return err } err = model.NewSalesRefundSearch().SetSourceType(constvar.RefundSourceTypeSalesReturn).SetSourceId(id).Delete() if err != nil { return err } return nil }) if err != nil { return ecode.SalesReturnNotExist } return ecode.OK } func (SalesReturnService) BatchDeleteSalesReturn(ids []int) int { err := model.NewSalesReturnSearch().DeleteByIds(ids) if err != nil { return ecode.DBErr func (slf SalesReturnService) BatchDeleteSalesReturn(ids []int) (failIds []int, code int) { for _, id := range ids { code = slf.DeleteSalesReturn(id) if code != ecode.OK { failIds = append(failIds, id) } } return ecode.OK return failIds, code } func (SalesReturnService) UpdateSalesReturn(salesReturn *model.SalesReturn) int { // check salesReturn exist _, err := model.NewSalesReturnSearch().SetId(salesReturn.Id).Find() _, err := model.NewSalesReturnSearch().SetId(salesReturn.Id).First() if err != nil { return ecode.SalesReturnNotExist } salesReturn.AmountShouldRefund = decimal.Zero salesReturn.AmountHasRefund = decimal.Zero salesReturn.AmountTotal = decimal.Zero for _, product := range salesReturn.Products { salesReturn.AmountTotal = salesReturn.AmountTotal.Add(product.Amount.Mul(product.Price)) } salesReturn.AmountShouldRefund = salesReturn.AmountTotal err = model.NewSalesReturnSearch().SetId(salesReturn.Id).Update(salesReturn) if err != nil { @@ -66,3 +94,14 @@ } return contacts, total, ecode.OK } func (SalesReturnService) GetSalesReturnListByIds(ids []int) ([]*model.SalesReturn, int) { // get contact list salesReturns, err := model.NewSalesReturnSearch(). SetIds(ids). Find() if err != nil { return nil, ecode.SalesReturnListErr } return salesReturns, ecode.OK }