Forráskód Böngészése

withdraw_invoice_count

Xingyu Xian 1 napja
szülő
commit
7c3d3371d1

+ 17 - 0
db/supplier_income.go

@@ -69,3 +69,20 @@ func GetFullSupplierIncomeList(ctx context.Context, supplierId int, incomeStatus
 	}
 	return SupplierIncomeList, nil
 }
+
+// GetFullSupplierIncomeCount 查找服务商收入信息计数
+func GetFullSupplierIncomeCount(ctx context.Context, supplierId int, incomeStatus int) (int64, error) {
+	db := GetReadDB(ctx)
+
+	// 1. 根据基本信息过滤
+	db = db.Model(gorm_model.YounggeeSupplierIncome{}).Where("supplier_id = ? and income_status = ?", supplierId, incomeStatus)
+
+	// 2. 查询计数
+	var count int64
+	err := db.Count(&count).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetFullSupplierIncomeCount] error query mysql, err:%+v", err)
+		return 0, err
+	}
+	return count, nil
+}

+ 38 - 7
db/supplier_invoice.go

@@ -42,22 +42,53 @@ func GetIncomeIdsByInvoiceId(ctx context.Context, invoiceId int) (string, error)
 // GetInvoiceListBySupplierId 根据invoice_status和supplier_id获取发票信息列表
 func GetInvoiceListBySupplierId(ctx context.Context, supplierId int, invoiceStatus int, withdrawStatus int, pageSize int32, pageNum int32) ([]*gorm_model.YounggeeSupplierInvoice, int64, error) {
 	db := GetWriteDB(ctx)
-	// 1. 根据服务商id过滤
-	db = db.Debug().Model(gorm_model.YounggeeSupplierInvoice{}).Where("supplier_id = ? and invoice_status = ? and withdraw_status = ?", supplierId, invoiceStatus, withdrawStatus)
 
-	// 2. 确定查询总数和返回当前页数据
+	// 1. 基础查询:服务商ID和发票状态
+	db = db.Debug().Model(gorm_model.YounggeeSupplierInvoice{}).Where("supplier_id = ? and invoice_status = ?", supplierId, invoiceStatus)
+
+	// 2. 如果withdrawStatus不为0,则添加该条件
+	if withdrawStatus != 0 {
+		db = db.Where("withdraw_status = ?", withdrawStatus)
+	}
+
+	// 3. 查询总数
 	var total int64
-	var invoiceList []*gorm_model.YounggeeSupplierInvoice
 	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetFullProjectList] error query mysql total, err:%+v", err)
+		logrus.WithContext(ctx).Errorf("[GetInvoiceListBySupplierId] error query mysql total, err:%+v", err)
 		return nil, 0, err
 	}
+
+	// 4. 分页查询数据
+	var invoiceList []*gorm_model.YounggeeSupplierInvoice
 	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
+	offset := pageSize * pageNum // 假设pageNum从0开始
 	err := db.Order("invoice_id desc").Limit(int(limit)).Offset(int(offset)).Find(&invoiceList).Error
 	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetFullProjectList] error query mysql total, err:%+v", err)
+		logrus.WithContext(ctx).Errorf("[GetInvoiceListBySupplierId] error query mysql data, err:%+v", err)
 		return nil, 0, err
 	}
+
 	return invoiceList, total, nil
 }
+
+// GetInvoiceCountBySupplierId 根据条件统计发票数量(不返回具体数据,不分页)
+func GetInvoiceCountBySupplierId(ctx context.Context, supplierId int, invoiceStatus int, withdrawStatus int) (int64, error) {
+	db := GetWriteDB(ctx)
+
+	// 1. 基础查询:服务商ID和发票状态
+	db = db.Model(gorm_model.YounggeeSupplierInvoice{}).Where("supplier_id = ? AND invoice_status = ?", supplierId, invoiceStatus)
+
+	// 2. 如果withdrawStatus不为0,则添加该条件
+	if withdrawStatus != 0 {
+		db = db.Where("withdraw_status = ?", withdrawStatus)
+	}
+
+	// 3. 只查询总数(不查询具体数据)
+	var count int64
+	if err := db.Count(&count).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetInvoiceCountBySupplierId] error query count, err:%+v", err)
+		return 0, err
+	}
+
+	return count, nil
+}

+ 17 - 0
db/supplier_withdraw.go

@@ -39,3 +39,20 @@ func GetSupplierWithdrawList(ctx context.Context, pageSize int32, pageNum int32,
 	}
 	return SupplierWithdrawList, total, nil
 }
+
+// GetSupplierWithdrawCount 查询服务商提现记录数量(不分页)
+func GetSupplierWithdrawCount(ctx context.Context, supplierId int, withdrawStatus int) (int64, error) {
+	db := GetReadDB(ctx)
+
+	// 1. 基础查询:服务商ID和提现状态
+	db = db.Model(gorm_model.YounggeeSupplierWithdraw{}).Where("supplier_id = ? AND withdraw_status = ?", supplierId, withdrawStatus)
+
+	// 2. 只查询总数(不查询具体数据)
+	var count int64
+	if err := db.Count(&count).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSupplierWithdrawCount] error query count, err:%+v", err)
+		return 0, err
+	}
+
+	return count, nil
+}

+ 54 - 0
handler/supplier_invoice_count.go

@@ -0,0 +1,54 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+)
+
+func WrapInvoiceCountHandler(ctx *gin.Context) {
+	handler := newInvoiceCountHandler(ctx)
+	baseRun(handler)
+}
+
+func newInvoiceCountHandler(ctx *gin.Context) *InvoiceCountHandler {
+	return &InvoiceCountHandler{
+		req:  http_model.NewInvoiceCountRequest(),
+		resp: http_model.NewInvoiceCountResponse(),
+		ctx:  ctx,
+	}
+}
+
+type InvoiceCountHandler struct {
+	req  *http_model.InvoiceCountRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *InvoiceCountHandler) getRequest() interface{} {
+	return h.req
+}
+
+func (h *InvoiceCountHandler) getContext() *gin.Context {
+	return h.ctx
+}
+
+func (h *InvoiceCountHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *InvoiceCountHandler) run() {
+	count, err := service.Supplier.GetSupplierInvoiceCount(h.ctx, h.req)
+	if err != nil {
+		h.resp.Status = 40000
+		h.resp.Message = err.Error()
+		return
+	}
+	h.resp.Data = count
+	h.resp.Status = 20000
+	h.resp.Message = "ok"
+}
+
+func (h *InvoiceCountHandler) checkParam() error {
+	return nil
+}

+ 51 - 0
handler/supplier_withdraw_count.go

@@ -0,0 +1,51 @@
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"youngee_b_api/model/http_model"
+	"youngee_b_api/service"
+)
+
+func WrapSupplierWithdrawCountHandler(ctx *gin.Context) {
+	handler := newSupplierWithdrawCountHandler(ctx)
+	baseRun(handler)
+}
+
+func newSupplierWithdrawCountHandler(ctx *gin.Context) *SupplierWithdrawCountHandler {
+	return &SupplierWithdrawCountHandler{
+		req:  http_model.NewSupplierWithdrawCountRequest(),
+		resp: http_model.NewSupplierWithdrawCountResponse(),
+		ctx:  ctx,
+	}
+}
+
+type SupplierWithdrawCountHandler struct {
+	req  *http_model.SupplierWithdrawCountRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *SupplierWithdrawCountHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *SupplierWithdrawCountHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *SupplierWithdrawCountHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *SupplierWithdrawCountHandler) run() {
+	toWithdrawCount, err := service.Supplier.GetSupplierWithdrawCount(h.ctx, h.req)
+	if err != nil {
+		h.resp.Status = 40000
+		h.resp.Message = err.Error()
+		return
+	}
+	h.resp.Status = 20000
+	h.resp.Message = "ok"
+	h.resp.Data = toWithdrawCount
+}
+
+func (h *SupplierWithdrawCountHandler) checkParam() error {
+	return nil
+}

+ 1 - 0
model/gorm_model/supplier_invoice.go

@@ -17,6 +17,7 @@ type YounggeeSupplierInvoice struct {
 	RejectTime        *time.Time `gorm:"column:reject_time"`                           // 驳回开票时间
 	FailReason        string     `gorm:"column:fail_reason"`                           // 驳回理由
 	Company           string     `gorm:"column:company"`                               // 开票公司
+	WithDrawStatus    int        `gorm:"column:withdraw_status"`                       // 提现状态,1可提现,2提现中,3已提现,4不可提现
 }
 
 func (m *YounggeeSupplierInvoice) TableName() string {

+ 23 - 0
model/http_model/supplier_invoice_count.go

@@ -0,0 +1,23 @@
+package http_model
+
+type InvoiceCountRequest struct {
+	SupplierId int `json:"supplier_id"` // 服务商ID
+}
+
+type InvoiceCountData struct {
+	Stage1 int64 `json:"stage_1"` // 可回发票数量
+	Stage2 int64 `json:"stage_2"` // 待传发票数量
+	Stage3 int64 `json:"stage_3"` // 平台确认中数量
+	Stage4 int64 `json:"stage_4"` // 已回发票数量
+	Stage5 int64 `json:"stage_5"` // 驳回发票数量
+}
+
+func NewInvoiceCountRequest() *InvoiceCountRequest {
+	return new(InvoiceCountRequest)
+}
+
+func NewInvoiceCountResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(InvoiceCountData)
+	return resp
+}

+ 20 - 0
model/http_model/supplier_withdraw_count.go

@@ -0,0 +1,20 @@
+package http_model
+
+type SupplierWithdrawCountRequest struct {
+	SupplierId int `json:"supplier_id"` // 服务商ID
+}
+type SupplierWithdrawCountData struct {
+	Stage1 int64 `json:"stage_1"` // 提现中
+	Stage2 int64 `json:"stage_2"` // 已提现
+	Stage3 int64 `json:"stage_3"` // 已驳回
+}
+
+func NewSupplierWithdrawCountRequest() *SupplierWithdrawCountRequest {
+	return new(SupplierWithdrawCountRequest)
+}
+
+func NewSupplierWithdrawCountResponse() *CommonResponse {
+	resp := new(CommonResponse)
+	resp.Data = new(SupplierWithdrawCountData)
+	return resp
+}

+ 2 - 0
route/init.go

@@ -165,6 +165,7 @@ func InitRoute(r *gin.Engine) {
 		supplierInvoice.POST("/invoiceList", handler.WrapSupplierInvoiceListHandler)   // 发票列表
 		supplierInvoice.POST("/ygInvoiceInfo", handler.WrapManageInvoiceInfoHandler)   // 平台回票信息
 		supplierInvoice.POST("/amount", handler.WrapInvoiceAmountHandler)              // 可回发票、待传发票、平台确认中、已回发票金额
+		supplierInvoice.POST("/count", handler.WrapInvoiceCountHandler)                // 可回发票、待传发票、平台确认中、已回发票、驳回数量
 	}
 
 	// 提现
@@ -178,6 +179,7 @@ func InitRoute(r *gin.Engine) {
 		supplierWithdraw.POST("/toList", handler.WrapSupplierToWithdrawListHandler)               // 服务商可提现账单列表
 		supplierWithdraw.POST("/create", handler.WrapCreateSupplierWithdrawHandler)               // 服务商提现
 		supplierWithdraw.POST("/List", handler.WrapSupplierWithdrawListHandler)                   // 提现管理列表
+		supplierWithdraw.POST("/count", handler.WrapSupplierWithdrawCountHandler)                 // 提现管理列表数量
 	}
 
 	m := r.Group("/youngee/m")

+ 73 - 1
service/supplier.go

@@ -668,7 +668,7 @@ func (*supplier) UpdateSupplierIncomeStatus(ctx context.Context, incomeIds strin
 // GetSupplierInvoiceList 查找服务商发票列表
 func (*supplier) GetSupplierInvoiceList(ctx context.Context, req *http_model.SupplierInvoiceListRequest) (*http_model.SupplierInvoiceListData, error) {
 	// 1. 查询服务商发票信息
-	supplierInvoiceList, total, err := db.GetInvoiceListBySupplierId(ctx, req.SupplierId, req.InvoiceStatus, 4, req.PageSize, req.PageNum-1)
+	supplierInvoiceList, total, err := db.GetInvoiceListBySupplierId(ctx, req.SupplierId, req.InvoiceStatus, 0, req.PageSize, req.PageNum-1)
 	if err != nil {
 		return nil, err
 	}
@@ -1460,3 +1460,75 @@ func (*supplier) SendCodeT(ctx context.Context, phone string, code string) error
 	fmt.Printf("短信发送成功,响应: %v\n", resp)
 	return nil
 }
+
+// GetSupplierInvoiceCount 可回发票、待传发票、平台确认中、已回发票、已驳回数量
+func (*supplier) GetSupplierInvoiceCount(ctx context.Context, req *http_model.InvoiceCountRequest) (*http_model.InvoiceCountData, error) {
+	var invoiceAmountCount *http_model.InvoiceCountData
+	invoiceAmountCount = &http_model.InvoiceCountData{}
+
+	// 可回发票
+	supplierIncomeCount, supplierIncomeErr := db.GetFullSupplierIncomeCount(ctx, req.SupplierId, 1)
+	if supplierIncomeErr != nil {
+		return nil, supplierIncomeErr
+	}
+	invoiceAmountCount.Stage1 = supplierIncomeCount
+
+	// 待传发票数量
+	Stage2, Stage2Err := db.GetInvoiceCountBySupplierId(ctx, req.SupplierId, 1, 0)
+	if Stage2Err != nil {
+		return nil, Stage2Err
+	}
+	invoiceAmountCount.Stage2 = Stage2
+
+	// 平台确认中数量
+	Stage3, Stage3Err := db.GetInvoiceCountBySupplierId(ctx, req.SupplierId, 2, 0)
+	if Stage3Err != nil {
+		return nil, Stage2Err
+	}
+	invoiceAmountCount.Stage3 = Stage3
+
+	// 平台已经确认数量
+	Stage4, Stage4Err := db.GetInvoiceCountBySupplierId(ctx, req.SupplierId, 3, 0)
+	if Stage4Err != nil {
+		return nil, Stage4Err
+	}
+	invoiceAmountCount.Stage4 = Stage4
+
+	// 平台已经驳回数量
+	Stage5, Stage5Err := db.GetInvoiceCountBySupplierId(ctx, req.SupplierId, 4, 0)
+	if Stage5Err != nil {
+		return nil, Stage5Err
+	}
+	invoiceAmountCount.Stage5 = Stage5
+
+	return invoiceAmountCount, nil
+}
+
+// GetSupplierWithdrawCount 提现列表数量
+func (*supplier) GetSupplierWithdrawCount(ctx context.Context, req *http_model.SupplierWithdrawCountRequest) (*http_model.SupplierWithdrawCountData, error) {
+	var WithdrawCount *http_model.SupplierWithdrawCountData
+	WithdrawCount = &http_model.SupplierWithdrawCountData{}
+
+	// 提现中
+	supplierIncomeCount, supplierIncomeErr := db.GetSupplierWithdrawCount(ctx, req.SupplierId, 2)
+	if supplierIncomeErr != nil {
+		return nil, supplierIncomeErr
+	}
+	WithdrawCount.Stage1 = supplierIncomeCount
+
+	// 已提现
+	Stage2, Stage2Err := db.GetSupplierWithdrawCount(ctx, req.SupplierId, 3)
+	if Stage2Err != nil {
+		return nil, Stage2Err
+	}
+	WithdrawCount.Stage2 = Stage2
+
+	// 已驳回
+	Stage3, Stage3Err := db.GetSupplierWithdrawCount(ctx, req.SupplierId, 4)
+	if Stage3Err != nil {
+		return nil, Stage2Err
+	}
+	WithdrawCount.Stage3 = Stage3
+
+	return WithdrawCount, nil
+}