From 5e15dc38b6ded37d6645e15aa187c370ffa23352 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期日, 13 八月 2023 15:53:37 +0800
Subject: [PATCH] 完善退款单查询
---
api/v1/salesRefund.go | 2
constvar/saleRefund.go | 15 +++
model/salesRefund.go | 62 +++++++++++++--
service/salesRefund.go | 9 +
model/request/salesRefund.go | 3
docs/swagger.yaml | 33 ++++++++
docs/docs.go | 41 ++++++++++
docs/swagger.json | 41 ++++++++++
8 files changed, 193 insertions(+), 13 deletions(-)
diff --git a/api/v1/salesRefund.go b/api/v1/salesRefund.go
index 1027e34..fcc02e1 100644
--- a/api/v1/salesRefund.go
+++ b/api/v1/salesRefund.go
@@ -127,7 +127,7 @@
return
}
- salesRefunds, total, errCode := salesRefundService.GetSalesRefundList(params.Page, params.PageSize, params.Keyword)
+ salesRefunds, total, errCode := salesRefundService.GetSalesRefundList(params.Page, params.PageSize, params.KeywordType, params.Keyword)
if errCode != ecode.OK {
ctx.Fail(errCode)
return
diff --git a/constvar/saleRefund.go b/constvar/saleRefund.go
new file mode 100644
index 0000000..06d3f55
--- /dev/null
+++ b/constvar/saleRefund.go
@@ -0,0 +1,15 @@
+package constvar
+
+type SalesRefundKeywordType string
+
+const (
+ SalesRefundKeywordRefundNumber SalesRefundKeywordType = "閿�鍞��璐у崟缂栧彿"
+ SalesRefundKeywordClientName SalesRefundKeywordType = "瀹㈡埛鍚嶇О"
+ SalesRefundKeywordRefundDate SalesRefundKeywordType = "閫�娆炬棩鏈�"
+ SalesRefundKeywordAccount SalesRefundKeywordType = "璐︽埛"
+ SalesRefundKeywordIsInvoice SalesRefundKeywordType = "鏄惁寮�绁�"
+ SalesRefundKeywordPaymentType SalesRefundKeywordType = "浠樻鏂瑰紡"
+ SalesRefundKeywordPrincipal SalesRefundKeywordType = "閿�鍞礋璐d汉"
+ SalesRefundKeywordUpdateAt SalesRefundKeywordType = "淇敼鏃堕棿"
+ SalesRefundKeywordPriceTotal SalesRefundKeywordType = "浠风◣鍚堣"
+)
diff --git a/docs/docs.go b/docs/docs.go
index b96c515..e22c0b6 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -10057,6 +10057,31 @@
"SalesDetailsKeywordTypeProductName"
]
},
+ "constvar.SalesRefundKeywordType": {
+ "type": "string",
+ "enum": [
+ "閿�鍞��璐у崟缂栧彿",
+ "瀹㈡埛鍚嶇О",
+ "閫�娆炬棩鏈�",
+ "璐︽埛",
+ "鏄惁寮�绁�",
+ "浠樻鏂瑰紡",
+ "閿�鍞礋璐d汉",
+ "淇敼鏃堕棿",
+ "浠风◣鍚堣"
+ ],
+ "x-enum-varnames": [
+ "SalesRefundKeywordRefundNumber",
+ "SalesRefundKeywordClientName",
+ "SalesRefundKeywordRefundDate",
+ "SalesRefundKeywordAccount",
+ "SalesRefundKeywordIsInvoice",
+ "SalesRefundKeywordPaymentType",
+ "SalesRefundKeywordPrincipal",
+ "SalesRefundKeywordUpdateAt",
+ "SalesRefundKeywordPriceTotal"
+ ]
+ },
"constvar.SalesReturnSourceType": {
"type": "integer",
"enum": [
@@ -11747,6 +11772,10 @@
"model.SalesRefund": {
"type": "object",
"properties": {
+ "amountTotal": {
+ "description": "浠风◣鍚堣",
+ "type": "number"
+ },
"bankAccount": {
"$ref": "#/definitions/model.BankAccount"
},
@@ -11760,11 +11789,20 @@
"clientId": {
"type": "integer"
},
+ "createTime": {
+ "type": "string"
+ },
+ "creatorName": {
+ "type": "string"
+ },
"id": {
"type": "integer"
},
"isInvoice": {
"type": "integer"
+ },
+ "member": {
+ "$ref": "#/definitions/model.User"
},
"memberId": {
"type": "integer"
@@ -14672,6 +14710,9 @@
"keyword": {
"type": "string"
},
+ "keywordType": {
+ "$ref": "#/definitions/constvar.SalesRefundKeywordType"
+ },
"page": {
"description": "椤电爜",
"type": "integer"
diff --git a/docs/swagger.json b/docs/swagger.json
index b653cad..b3c3854 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -10045,6 +10045,31 @@
"SalesDetailsKeywordTypeProductName"
]
},
+ "constvar.SalesRefundKeywordType": {
+ "type": "string",
+ "enum": [
+ "閿�鍞��璐у崟缂栧彿",
+ "瀹㈡埛鍚嶇О",
+ "閫�娆炬棩鏈�",
+ "璐︽埛",
+ "鏄惁寮�绁�",
+ "浠樻鏂瑰紡",
+ "閿�鍞礋璐d汉",
+ "淇敼鏃堕棿",
+ "浠风◣鍚堣"
+ ],
+ "x-enum-varnames": [
+ "SalesRefundKeywordRefundNumber",
+ "SalesRefundKeywordClientName",
+ "SalesRefundKeywordRefundDate",
+ "SalesRefundKeywordAccount",
+ "SalesRefundKeywordIsInvoice",
+ "SalesRefundKeywordPaymentType",
+ "SalesRefundKeywordPrincipal",
+ "SalesRefundKeywordUpdateAt",
+ "SalesRefundKeywordPriceTotal"
+ ]
+ },
"constvar.SalesReturnSourceType": {
"type": "integer",
"enum": [
@@ -11735,6 +11760,10 @@
"model.SalesRefund": {
"type": "object",
"properties": {
+ "amountTotal": {
+ "description": "浠风◣鍚堣",
+ "type": "number"
+ },
"bankAccount": {
"$ref": "#/definitions/model.BankAccount"
},
@@ -11748,11 +11777,20 @@
"clientId": {
"type": "integer"
},
+ "createTime": {
+ "type": "string"
+ },
+ "creatorName": {
+ "type": "string"
+ },
"id": {
"type": "integer"
},
"isInvoice": {
"type": "integer"
+ },
+ "member": {
+ "$ref": "#/definitions/model.User"
},
"memberId": {
"type": "integer"
@@ -14660,6 +14698,9 @@
"keyword": {
"type": "string"
},
+ "keywordType": {
+ "$ref": "#/definitions/constvar.SalesRefundKeywordType"
+ },
"page": {
"description": "椤电爜",
"type": "integer"
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 6e74083..1cf8d00 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -164,6 +164,28 @@
- SalesDetailsKeywordTypeSignTime
- SalesDetailsKeywordTypePrincipal
- SalesDetailsKeywordTypeProductName
+ constvar.SalesRefundKeywordType:
+ enum:
+ - 閿�鍞��璐у崟缂栧彿
+ - 瀹㈡埛鍚嶇О
+ - 閫�娆炬棩鏈�
+ - 璐︽埛
+ - 鏄惁寮�绁�
+ - 浠樻鏂瑰紡
+ - 閿�鍞礋璐d汉
+ - 淇敼鏃堕棿
+ - 浠风◣鍚堣
+ type: string
+ x-enum-varnames:
+ - SalesRefundKeywordRefundNumber
+ - SalesRefundKeywordClientName
+ - SalesRefundKeywordRefundDate
+ - SalesRefundKeywordAccount
+ - SalesRefundKeywordIsInvoice
+ - SalesRefundKeywordPaymentType
+ - SalesRefundKeywordPrincipal
+ - SalesRefundKeywordUpdateAt
+ - SalesRefundKeywordPriceTotal
constvar.SalesReturnSourceType:
enum:
- 1
@@ -1310,6 +1332,9 @@
type: object
model.SalesRefund:
properties:
+ amountTotal:
+ description: 浠风◣鍚堣
+ type: number
bankAccount:
$ref: '#/definitions/model.BankAccount'
bankAccountId:
@@ -1319,10 +1344,16 @@
$ref: '#/definitions/model.Client'
clientId:
type: integer
+ createTime:
+ type: string
+ creatorName:
+ type: string
id:
type: integer
isInvoice:
type: integer
+ member:
+ $ref: '#/definitions/model.User'
memberId:
type: integer
number:
@@ -3303,6 +3334,8 @@
properties:
keyword:
type: string
+ keywordType:
+ $ref: '#/definitions/constvar.SalesRefundKeywordType'
page:
description: 椤电爜
type: integer
diff --git a/model/request/salesRefund.go b/model/request/salesRefund.go
index bc31ee5..5f54725 100644
--- a/model/request/salesRefund.go
+++ b/model/request/salesRefund.go
@@ -30,5 +30,6 @@
type GetSalesRefundList struct {
PageInfo
- Keyword string `json:"keyword"`
+ Keyword string `json:"keyword"`
+ KeywordType constvar.SalesRefundKeywordType
}
diff --git a/model/salesRefund.go b/model/salesRefund.go
index 0874372..c3bea82 100644
--- a/model/salesRefund.go
+++ b/model/salesRefund.go
@@ -3,7 +3,10 @@
import (
"aps_crm/constvar"
"aps_crm/pkg/mysqlx"
+ "fmt"
+ "github.com/shopspring/decimal"
"gorm.io/gorm"
+ "gorm.io/gorm/clause"
)
type (
@@ -15,6 +18,7 @@
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
MemberId int `json:"memberId" gorm:"column:member_id;type:int;comment:璐熻矗浜篿d"`
+ Member User `json:"member" gorm:"foreignKey:MemberId"`
RefundDate string `json:"refundDate" gorm:"column:refund_date;type:datetime;comment:閫�娆炬棩鏈�"`
PaymentTypeId int `gorm:"column:payment_type_id;type:int;not null;default 0;comment:鏀舵鏂瑰紡ID" json:"paymentTypeId"` // 鏀舵鏂瑰紡ID
PaymentType PaymentType `gorm:"foreignKey:PaymentTypeId" json:"paymentType"`
@@ -23,17 +27,20 @@
IsInvoice int `json:"isInvoice" gorm:"column:is_invoice;type:int;comment:鏄惁寮�绁�"`
Reason string `json:"reason" gorm:"column:reason;type:varchar(255);comment:閫�娆惧師鍥�"`
Products []*Product `json:"products" gorm:"many2many:salesRefund_product;"`
- gorm.Model `json:"-"`
+ AmountTotal decimal.Decimal `gorm:"column:amount_total;type:decimal(12,2);comment:浠风◣鍚堣" json:"amountTotal"` // 浠风◣鍚堣
+ CrmModel
}
SalesRefundSearch struct {
SalesRefund
- Orm *gorm.DB
- Keyword string
- OrderBy string
- PageNum int
- PageSize int
+ Orm *gorm.DB
+ KeywordType constvar.SalesRefundKeywordType
+ Keyword string
+ OrderBy string
+ PageNum int
+ PageSize int
+ Preload bool
}
)
@@ -49,11 +56,38 @@
func (slf *SalesRefundSearch) build() *gorm.DB {
var db = slf.Orm.Model(&SalesRefund{})
- if slf.Keyword != "" {
- db = db.Where("name LIKE ?", "%"+slf.Keyword+"%")
- }
if slf.Id != 0 {
db = db.Where("id = ?", slf.Id)
+ }
+
+ if slf.Preload {
+ db = db.Preload("Client").
+ Preload("PaymentType").
+ Preload("BankAccount").
+ Preload("Products")
+ }
+ if slf.KeywordType != "" {
+ switch slf.KeywordType {
+ case constvar.SalesRefundKeywordRefundNumber:
+ db = db.Where("number like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+ case constvar.SalesRefundKeywordClientName:
+ db = db.Joins("Client", clause.LeftJoin).Where("Client.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+ case constvar.SalesRefundKeywordRefundDate:
+ db = db.Where("refund_date like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+ case constvar.SalesRefundKeywordAccount:
+ db = db.Joins("BankAccount").Where("BankAccount name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+ case constvar.SalesRefundKeywordIsInvoice:
+ db = db.Where("is_invoice like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+ case constvar.SalesRefundKeywordPaymentType:
+ db = db.Joins("PaymentType").Where("PaymentType.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+ case constvar.SalesRefundKeywordPrincipal:
+ db = db.Joins("left join user on user.id = sales_refund.member_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+ case constvar.SalesRefundKeywordUpdateAt:
+ db = db.Where("updated_at like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+ case constvar.SalesRefundKeywordPriceTotal:
+ db = db.Where("amount_total like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
+
+ }
}
return db
@@ -105,6 +139,16 @@
return slf
}
+func (slf *SalesRefundSearch) SetPreload(preload bool) *SalesRefundSearch {
+ slf.Preload = preload
+ return slf
+}
+
+func (slf *SalesRefundSearch) SetKeywordType(keywordType constvar.SalesRefundKeywordType) *SalesRefundSearch {
+ slf.KeywordType = keywordType
+ return slf
+}
+
func (slf *SalesRefundSearch) SetKeyword(keyword string) *SalesRefundSearch {
slf.Keyword = keyword
return slf
diff --git a/service/salesRefund.go b/service/salesRefund.go
index d3414df..1403dac 100644
--- a/service/salesRefund.go
+++ b/service/salesRefund.go
@@ -1,6 +1,7 @@
package service
import (
+ "aps_crm/constvar"
"aps_crm/model"
"aps_crm/pkg/ecode"
)
@@ -78,9 +79,13 @@
return ecode.OK
}
-func (SalesRefundService) GetSalesRefundList(page, pageSize int, keyword string) ([]*model.SalesRefund, int64, int) {
+func (SalesRefundService) GetSalesRefundList(page, pageSize int, keywordType constvar.SalesRefundKeywordType, keyword string) ([]*model.SalesRefund, int64, int) {
// get contact list
- contacts, total, err := model.NewSalesRefundSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll()
+ contacts, total, err := model.NewSalesRefundSearch().
+ SetKeywordType(keywordType).
+ SetKeyword(keyword).
+ SetPreload(true).
+ SetPage(page, pageSize).FindAll()
if err != nil {
return nil, 0, ecode.SalesRefundListErr
}
--
Gitblit v1.8.0