zhangqian
2023-08-15 5a356c6178e15b44bdfe4cf3e94c52b0d4a17668
完善退货单查询,fix一些bug
13个文件已修改
260 ■■■■ 已修改文件
api/v1/salesReturn.go 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/saleRefund.go 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/salesRefund.go 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constvar/salesReturn.go 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/docs.go 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.json 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/swagger.yaml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/request/salesRefund.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/request/salesReturn.go 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/salesRefund.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
model/salesReturn.go 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/salesRefund.go 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/salesReturn.go 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/v1/salesReturn.go
@@ -129,7 +129,9 @@
//    @Tags        SalesReturn
//    @Summary    销售退货单列表
//    @Produce    application/json
//    @Param        object    body        request.GetSalesReturnList    true    "参数"
//
// @Param        object    body        request.GetSalesReturnList    true    "参数"
//
//    @Success    200        {object}    contextx.Response{data=response.SalesReturnResponse}
//    @Router        /api/salesReturn/list [post]
func (con *SalesReturnApi) List(c *gin.Context) {
@@ -139,7 +141,7 @@
        return
    }
    salesReturns, total, errCode := salesReturnService.GetSalesReturnList(params.Page, params.PageSize, params.Keyword)
    salesReturns, total, errCode := salesReturnService.GetSalesReturnList(params.Page, params.PageSize, params.KeywordType, params.Keyword)
    if errCode != ecode.OK {
        ctx.Fail(errCode)
        return
constvar/saleRefund.go
@@ -1,15 +1 @@
package constvar
type SalesRefundKeywordType string
const (
    SalesRefundKeywordRefundNumber SalesRefundKeywordType = "销售退货单编号"
    SalesRefundKeywordClientName   SalesRefundKeywordType = "客户名称"
    SalesRefundKeywordRefundDate   SalesRefundKeywordType = "退款日期"
    SalesRefundKeywordAccount      SalesRefundKeywordType = "账户"
    SalesRefundKeywordIsInvoice    SalesRefundKeywordType = "是否开票"
    SalesRefundKeywordPaymentType  SalesRefundKeywordType = "付款方式"
    SalesRefundKeywordPrincipal    SalesRefundKeywordType = "销售负责人"
    SalesRefundKeywordUpdateAt     SalesRefundKeywordType = "修改时间"
    SalesRefundKeywordPriceTotal   SalesRefundKeywordType = "价税合计"
)
constvar/salesRefund.go
@@ -5,3 +5,17 @@
const (
    RefundSourceTypeSalesReturn RefundSourceType = 1 //销售退货
)
type SalesRefundKeywordType string
const (
    SalesRefundKeywordRefundNumber SalesRefundKeywordType = "销售退货单编号"
    SalesRefundKeywordClientName   SalesRefundKeywordType = "客户名称"
    SalesRefundKeywordRefundDate   SalesRefundKeywordType = "退款日期"
    SalesRefundKeywordAccount      SalesRefundKeywordType = "账户"
    SalesRefundKeywordIsInvoice    SalesRefundKeywordType = "是否开票"
    SalesRefundKeywordPaymentType  SalesRefundKeywordType = "付款方式"
    SalesRefundKeywordPrincipal    SalesRefundKeywordType = "销售负责人"
    SalesRefundKeywordUpdateAt     SalesRefundKeywordType = "修改时间"
    SalesRefundKeywordPriceTotal   SalesRefundKeywordType = "价税合计"
)
constvar/salesReturn.go
@@ -5,3 +5,16 @@
const (
    SalesReturnSourceTypeSaleDetails SalesReturnSourceType = 1 //销售明细
)
type SalesReturnKeywordType string
const (
    SalesReturnKeywordReturnNumber       SalesReturnKeywordType = "销售退货单编号"
    SalesReturnKeywordClientName         SalesReturnKeywordType = "客户名称"
    SalesReturnKeywordReturnDate         SalesReturnKeywordType = "退款日期"
    SalesReturnKeywordStatus             SalesReturnKeywordType = "状态"
    SalesReturnKeywordRepository         SalesReturnKeywordType = "退入仓库"
    SalesReturnKeywordAmountShouldRefund SalesReturnKeywordType = "应退款"
    SalesReturnKeywordAmountHasRefund    SalesReturnKeywordType = "已退款"
    SalesReturnKeywordPrincipal          SalesReturnKeywordType = "销售负责人"
)
docs/docs.go
@@ -10263,6 +10263,29 @@
                "SalesRefundKeywordPriceTotal"
            ]
        },
        "constvar.SalesReturnKeywordType": {
            "type": "string",
            "enum": [
                "销售退货单编号",
                "客户名称",
                "退款日期",
                "状态",
                "退入仓库",
                "应退款",
                "已退款",
                "销售负责人"
            ],
            "x-enum-varnames": [
                "SalesReturnKeywordReturnNumber",
                "SalesReturnKeywordClientName",
                "SalesReturnKeywordReturnDate",
                "SalesReturnKeywordStatus",
                "SalesReturnKeywordRepository",
                "SalesReturnKeywordAmountShouldRefund",
                "SalesReturnKeywordAmountHasRefund",
                "SalesReturnKeywordPrincipal"
            ]
        },
        "constvar.SalesReturnSourceType": {
            "type": "integer",
            "enum": [
@@ -12066,7 +12089,7 @@
                    "type": "integer"
                },
                "isInvoice": {
                    "type": "integer"
                    "type": "string"
                },
                "member": {
                    "$ref": "#/definitions/model.User"
@@ -12123,6 +12146,14 @@
                            "$ref": "#/definitions/model.SalesReturnStatus"
                        }
                    ]
                },
                "amountHasRefund": {
                    "description": "已退款金额",
                    "type": "number"
                },
                "amountShouldRefund": {
                    "description": "应退款金额",
                    "type": "number"
                },
                "client": {
                    "$ref": "#/definitions/model.Client"
@@ -15041,6 +15072,9 @@
                "keyword": {
                    "type": "string"
                },
                "keywordType": {
                    "$ref": "#/definitions/constvar.SalesReturnKeywordType"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
@@ -15384,7 +15418,7 @@
                    "type": "integer"
                },
                "isInvoice": {
                    "type": "integer"
                    "type": "string"
                },
                "memberId": {
                    "type": "integer"
docs/swagger.json
@@ -10251,6 +10251,29 @@
                "SalesRefundKeywordPriceTotal"
            ]
        },
        "constvar.SalesReturnKeywordType": {
            "type": "string",
            "enum": [
                "销售退货单编号",
                "客户名称",
                "退款日期",
                "状态",
                "退入仓库",
                "应退款",
                "已退款",
                "销售负责人"
            ],
            "x-enum-varnames": [
                "SalesReturnKeywordReturnNumber",
                "SalesReturnKeywordClientName",
                "SalesReturnKeywordReturnDate",
                "SalesReturnKeywordStatus",
                "SalesReturnKeywordRepository",
                "SalesReturnKeywordAmountShouldRefund",
                "SalesReturnKeywordAmountHasRefund",
                "SalesReturnKeywordPrincipal"
            ]
        },
        "constvar.SalesReturnSourceType": {
            "type": "integer",
            "enum": [
@@ -12054,7 +12077,7 @@
                    "type": "integer"
                },
                "isInvoice": {
                    "type": "integer"
                    "type": "string"
                },
                "member": {
                    "$ref": "#/definitions/model.User"
@@ -12111,6 +12134,14 @@
                            "$ref": "#/definitions/model.SalesReturnStatus"
                        }
                    ]
                },
                "amountHasRefund": {
                    "description": "已退款金额",
                    "type": "number"
                },
                "amountShouldRefund": {
                    "description": "应退款金额",
                    "type": "number"
                },
                "client": {
                    "$ref": "#/definitions/model.Client"
@@ -15029,6 +15060,9 @@
                "keyword": {
                    "type": "string"
                },
                "keywordType": {
                    "$ref": "#/definitions/constvar.SalesReturnKeywordType"
                },
                "page": {
                    "description": "页码",
                    "type": "integer"
@@ -15372,7 +15406,7 @@
                    "type": "integer"
                },
                "isInvoice": {
                    "type": "integer"
                    "type": "string"
                },
                "memberId": {
                    "type": "integer"
docs/swagger.yaml
@@ -186,6 +186,26 @@
    - SalesRefundKeywordPrincipal
    - SalesRefundKeywordUpdateAt
    - SalesRefundKeywordPriceTotal
  constvar.SalesReturnKeywordType:
    enum:
    - 销售退货单编号
    - 客户名称
    - 退款日期
    - 状态
    - 退入仓库
    - 应退款
    - 已退款
    - 销售负责人
    type: string
    x-enum-varnames:
    - SalesReturnKeywordReturnNumber
    - SalesReturnKeywordClientName
    - SalesReturnKeywordReturnDate
    - SalesReturnKeywordStatus
    - SalesReturnKeywordRepository
    - SalesReturnKeywordAmountShouldRefund
    - SalesReturnKeywordAmountHasRefund
    - SalesReturnKeywordPrincipal
  constvar.SalesReturnSourceType:
    enum:
    - 1
@@ -1427,7 +1447,7 @@
      id:
        type: integer
      isInvoice:
        type: integer
        type: string
      member:
        $ref: '#/definitions/model.User'
      memberId:
@@ -1463,6 +1483,12 @@
        allOf:
        - $ref: '#/definitions/model.SalesReturnStatus'
        description: 退货状态
      amountHasRefund:
        description: 已退款金额
        type: number
      amountShouldRefund:
        description: 应退款金额
        type: number
      client:
        $ref: '#/definitions/model.Client'
      clientId:
@@ -3464,6 +3490,8 @@
    properties:
      keyword:
        type: string
      keywordType:
        $ref: '#/definitions/constvar.SalesReturnKeywordType'
      page:
        description: 页码
        type: integer
@@ -3698,7 +3726,7 @@
      clientId:
        type: integer
      isInvoice:
        type: integer
        type: string
      memberId:
        type: integer
      number:
model/request/salesRefund.go
@@ -18,7 +18,7 @@
    RefundDate    string                    `json:"refundDate"`
    PaymentTypeId int                       `gorm:"column:payment_type_id;type:int;not null;default 0;comment:收款方式ID" json:"paymentTypeId"` // 收款方式ID
    BankAccountId int                       `gorm:"column:bank_account_id;type:int;not null;default 0;comment:账户id" json:"bankAccountId"`   // 账户id
    IsInvoice     int                       `json:"isInvoice"`
    IsInvoice     string                    `json:"isInvoice"`
    Reason        string                    `json:"reason"`
    Products      []*model.Product          `json:"products"`
}
model/request/salesReturn.go
@@ -16,12 +16,12 @@
    Number              string                         `json:"number" gorm:"column:number;type:varchar(255);comment:退货单号"`
    Repository          string                         `json:"repository" gorm:"column:repository;type:varchar(255);comment:仓库"`
    MemberId            int                            `json:"memberId" gorm:"column:member_id;type:int;comment:负责人id"`
    ReturnDate          string                         `json:"returnDate" gorm:"column:return_date;type:datetime(3);comment:退货日期"`          //退货日期
    SalesReturnStatusId int                            `json:"salesReturnStatusId" gorm:"column:sales_return_status;type:int;comment:退货状态"` //退货状态id
    CreatorId           int                            `json:"-" gorm:"column:creator_id;type:int;comment:创建人id"`                           //创建人ID
    Creator             User                           `json:"-"  gorm:"foreignKey:CreatorId"`                                              //创建人信息
    Reason              string                         `json:"reason" gorm:"column:reason;type:varchar(255);comment:退货原因"`                  //退货原因
    Products            []*model.Product               `json:"products" gorm:"many2many:salesReturn_product;"`                              //退货产品
    ReturnDate          string                         `json:"returnDate" gorm:"column:return_date;type:datetime(3);comment:退货日期"`             //退货日期
    SalesReturnStatusId int                            `json:"salesReturnStatusId" gorm:"column:sales_return_status_id;type:int;comment:退货状态"` //退货状态id
    CreatorId           int                            `json:"-" gorm:"column:creator_id;type:int;comment:创建人id"`                              //创建人ID
    Creator             User                           `json:"-"  gorm:"foreignKey:CreatorId"`                                                 //创建人信息
    Reason              string                         `json:"reason" gorm:"column:reason;type:varchar(255);comment:退货原因"`                     //退货原因
    Products            []*model.Product               `json:"products" gorm:"many2many:salesReturn_product;"`                                 //退货产品
}
type UpdateSalesReturnRequest struct {
@@ -31,5 +31,6 @@
type GetSalesReturnList struct {
    PageInfo
    Keyword string `json:"keyword"`
    Keyword     string `json:"keyword"`
    KeywordType constvar.SalesReturnKeywordType
}
model/salesRefund.go
@@ -24,7 +24,7 @@
        PaymentType   PaymentType               `gorm:"foreignKey:PaymentTypeId" json:"paymentType"`
        BankAccountId int                       `gorm:"column:bank_account_id;type:int;not null;default 0;comment:账户id" json:"bankAccountId"` // 账户id
        BankAccount   BankAccount               `gorm:"foreignKey:BankAccountId" json:"bankAccount"`
        IsInvoice     int                       `json:"isInvoice" gorm:"column:is_invoice;type:int;comment:是否开票"`
        IsInvoice     string                    `json:"isInvoice" gorm:"column:is_invoice;type:varchar(255);comment:是否开票"`
        Reason        string                    `json:"reason" gorm:"column:reason;type:varchar(255);comment:退款原因"`
        Products      []*Product                `json:"products" gorm:"many2many:salesRefund_product;"`
        AmountTotal   decimal.Decimal           `gorm:"column:amount_total;type:decimal(12,2);comment:价税合计" json:"amountTotal"` // 价税合计
model/salesReturn.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 (
@@ -17,24 +20,29 @@
        Repository          string                         `json:"repository" gorm:"column:repository;type:varchar(255);comment:仓库"`
        MemberId            int                            `json:"memberId" gorm:"column:member_id;type:int;comment:负责人id"`
        Member              User                           `json:"Member"  gorm:"foreignKey:MemberId"`
        ReturnDate          string                         `json:"returnDate" gorm:"column:return_date;type:datetime(3);comment:退货日期"`          //退货日期
        SalesReturnStatusId int                            `json:"salesReturnStatusId" gorm:"column:sales_return_status;type:int;comment:退货状态"` //退货状态id
        SalesReturnStatus   SalesReturnStatus              `json:"SalesReturnStatus" gorm:"foreignKey:SalesReturnStatusId"`                     //退货状态
        CreatorId           int                            `json:"-" gorm:"column:creator_id;type:int;comment:创建人id"`                           //创建人ID
        Creator             User                           `json:"-"  gorm:"foreignKey:CreatorId"`                                              //创建人信息
        Reason              string                         `json:"reason" gorm:"column:reason;type:varchar(255);comment:退货原因"`                  //退货原因
        Products            []*Product                     `json:"products" gorm:"many2many:salesReturn_product;"`                              //退货产品
        ReturnDate          string                         `json:"returnDate" gorm:"column:return_date;type:datetime(3);comment:退货日期"`                     //退货日期
        SalesReturnStatusId int                            `json:"salesReturnStatusId" gorm:"column:sales_return_status;type:int;comment:退货状态"`            //退货状态id
        SalesReturnStatus   SalesReturnStatus              `json:"SalesReturnStatus" gorm:"foreignKey:SalesReturnStatusId"`                                //退货状态
        CreatorId           int                            `json:"-" gorm:"column:creator_id;type:int;comment:创建人id"`                                      //创建人ID
        Creator             User                           `json:"-"  gorm:"foreignKey:CreatorId"`                                                         //创建人信息
        Reason              string                         `json:"reason" gorm:"column:reason;type:varchar(255);comment:退货原因"`                             //退货原因
        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"`       // 已退款金额
        CrmModel
    }
    SalesReturnSearch struct {
        SalesReturn
        Orm      *gorm.DB
        Keyword  string
        OrderBy  string
        PageNum  int
        PageSize int
        Orm         *gorm.DB
        KeywordType constvar.SalesReturnKeywordType
        Keyword     string
        OrderBy     string
        PageNum     int
        PageSize    int
        Preload     bool
    }
)
@@ -49,11 +57,37 @@
func (slf *SalesReturnSearch) build() *gorm.DB {
    var db = slf.Orm.Model(&SalesReturn{})
    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("Member").
            Preload("SalesReturnStatus").
            Preload("Products")
    }
    if slf.KeywordType != "" {
        switch slf.KeywordType {
        case constvar.SalesReturnKeywordReturnNumber:
            db = db.Where("number like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
        case constvar.SalesReturnKeywordClientName:
            db = db.Joins("Client", clause.LeftJoin).Where("Client.name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
        case constvar.SalesReturnKeywordReturnDate:
            db = db.Where("return_date like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
        case constvar.SalesReturnKeywordStatus:
            db = db.Joins("SalesReturnStatus").Where("SalesReturnStatus name like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
        case constvar.SalesReturnKeywordRepository:
            db = db.Where("repository like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
        case constvar.SalesReturnKeywordAmountShouldRefund:
            db = db.Where("amount_should_refund = ?", slf.Keyword)
        case constvar.SalesReturnKeywordPrincipal:
            db = db.Joins("left join user on user.id = sales_refund.member_id").Where("user.username like ?", fmt.Sprintf("%%%s%%", slf.Keyword))
        case constvar.SalesReturnKeywordAmountHasRefund:
            db = db.Where("amount_has_refund = ?", slf.Keyword)
        }
    }
    return db
@@ -106,6 +140,11 @@
    return slf
}
func (slf *SalesReturnSearch) SetKeywordType(keywordType constvar.SalesReturnKeywordType) *SalesReturnSearch {
    slf.KeywordType = keywordType
    return slf
}
func (slf *SalesReturnSearch) SetPage(page, size int) *SalesReturnSearch {
    slf.PageNum, slf.PageSize = page, size
    return slf
@@ -115,3 +154,8 @@
    slf.OrderBy = order
    return slf
}
func (slf *SalesReturnSearch) SetPreload(preload bool) *SalesReturnSearch {
    slf.Preload = preload
    return slf
}
service/salesRefund.go
@@ -62,7 +62,7 @@
        return ecode.SalesRefundNotExist
    }
    salesReturnRecord, err := model.NewSalesReturnSearch().SetId(salesRefund.SourceId).Find()
    salesReturnRecord, err := model.NewSalesReturnSearch().SetId(salesRefund.SourceId).SetPreload(true).Find()
    if err != nil {
        return ecode.SalesReturnNotExist
    }
service/salesReturn.go
@@ -1,6 +1,7 @@
package service
import (
    "aps_crm/constvar"
    "aps_crm/model"
    "aps_crm/pkg/ecode"
)
@@ -44,9 +45,14 @@
    return ecode.OK
}
func (SalesReturnService) GetSalesReturnList(page, pageSize int, keyword string) ([]*model.SalesReturn, int64, int) {
func (SalesReturnService) GetSalesReturnList(page, pageSize int, keywordType constvar.SalesReturnKeywordType, keyword string) ([]*model.SalesReturn, int64, int) {
    // get contact list
    contacts, total, err := model.NewSalesReturnSearch().SetKeyword(keyword).SetPage(page, pageSize).FindAll()
    contacts, total, err := model.NewSalesReturnSearch().
        SetKeywordType(keywordType).
        SetKeyword(keyword).
        SetPage(page, pageSize).
        SetPreload(true).
        FindAll()
    if err != nil {
        return nil, 0, ecode.SalesReturnListErr
    }