zhangqian
2023-08-13 5e15dc38b6ded37d6645e15aa187c370ffa23352
完善退款单查询
1个文件已添加
7个文件已修改
206 ■■■■■ 已修改文件
api/v1/salesRefund.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/saleRefund.go 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/request/salesRefund.go 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/salesRefund.go 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/salesRefund.go 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
constvar/saleRefund.go
New file
@@ -0,0 +1,15 @@
package constvar
type SalesRefundKeywordType string
const (
    SalesRefundKeywordRefundNumber SalesRefundKeywordType = "销售退货单编号"
    SalesRefundKeywordClientName   SalesRefundKeywordType = "客户名称"
    SalesRefundKeywordRefundDate   SalesRefundKeywordType = "退款日期"
    SalesRefundKeywordAccount      SalesRefundKeywordType = "账户"
    SalesRefundKeywordIsInvoice    SalesRefundKeywordType = "是否开票"
    SalesRefundKeywordPaymentType  SalesRefundKeywordType = "付款方式"
    SalesRefundKeywordPrincipal    SalesRefundKeywordType = "销售负责人"
    SalesRefundKeywordUpdateAt     SalesRefundKeywordType = "修改时间"
    SalesRefundKeywordPriceTotal   SalesRefundKeywordType = "价税合计"
)
docs/docs.go
@@ -10057,6 +10057,31 @@
                "SalesDetailsKeywordTypeProductName"
            ]
        },
        "constvar.SalesRefundKeywordType": {
            "type": "string",
            "enum": [
                "销售退货单编号",
                "客户名称",
                "退款日期",
                "账户",
                "是否开票",
                "付款方式",
                "销售负责人",
                "修改时间",
                "价税合计"
            ],
            "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"
docs/swagger.json
@@ -10045,6 +10045,31 @@
                "SalesDetailsKeywordTypeProductName"
            ]
        },
        "constvar.SalesRefundKeywordType": {
            "type": "string",
            "enum": [
                "销售退货单编号",
                "客户名称",
                "退款日期",
                "账户",
                "是否开票",
                "付款方式",
                "销售负责人",
                "修改时间",
                "价税合计"
            ],
            "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"
docs/swagger.yaml
@@ -164,6 +164,28 @@
    - SalesDetailsKeywordTypeSignTime
    - SalesDetailsKeywordTypePrincipal
    - SalesDetailsKeywordTypeProductName
  constvar.SalesRefundKeywordType:
    enum:
    - 销售退货单编号
    - 客户名称
    - 退款日期
    - 账户
    - 是否开票
    - 付款方式
    - 销售负责人
    - 修改时间
    - 价税合计
    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
model/request/salesRefund.go
@@ -30,5 +30,6 @@
type GetSalesRefundList struct {
    PageInfo
    Keyword string `json:"keyword"`
    Keyword     string `json:"keyword"`
    KeywordType constvar.SalesRefundKeywordType
}
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:负责人id"`
        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
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
    }