提现记录-关联订单-导出

This commit is contained in:
2023-11-13 17:23:14 +08:00
parent d05ea66f01
commit 0c23273c81
5 changed files with 254 additions and 8 deletions
+161
View File
@@ -2,6 +2,7 @@ package service
import (
"fmt"
"github.com/shopspring/decimal"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/model"
"hospital-admin-api/extend/aliyun"
@@ -36,6 +37,24 @@ type DoctorWithdrawalData struct {
CreatedAt time.Time // 创建时间
}
type DoctorWithdrawalOrderData struct {
DoctorName string // 医生姓名
PatientName string // 患者姓名-就诊人
PatientSex string // 患者性别-就诊人(0:未知 1:男 2:女)
PatientAge string // 患者年龄-就诊人
PatientMobile string // 患者电话
PayChannel string // 支付渠道(1:小程序支付 2:微信扫码支付 3:模拟支付)
PayTime time.Time // 支付时间
InquiryNo string // 系统订单编号
EscrowTradeNo string // 第三方支付流水号
InquiryStatus string // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
AmountTotal float64 // 订单金额
CouponAmountTotal float64 // 优惠卷金额
PaymentAmountTotal float64 // 实际付款金额
DoctorAmount float64 // 医生收益
}
// DoctorWithdrawal 提现记录
func (r *ExportService) DoctorWithdrawal(doctorWithdrawals []*model.DoctorWithdrawal) (string, error) {
header := []utils.HeaderCellData{
@@ -186,3 +205,145 @@ func (r *ExportService) DoctorWithdrawal(doctorWithdrawals []*model.DoctorWithdr
ossPath = utils.AddOssDomain("/" + ossPath)
return ossPath, nil
}
// DoctorWithdrawalOrder 提现记录-关联订单
func (r *ExportService) DoctorWithdrawalOrder(doctorWithdrawalOrders []*model.DoctorWithdrawalOrder) (string, error) {
header := []utils.HeaderCellData{
{Value: "医生姓名", CellType: "string", NumberFmt: "", ColWidth: 18},
{Value: "就诊人姓名", CellType: "string", NumberFmt: "", ColWidth: 18},
{Value: "就诊人性别", CellType: "string", NumberFmt: "", ColWidth: 18},
{Value: "就诊人年龄", CellType: "string", NumberFmt: "", ColWidth: 18},
{Value: "患者电话", CellType: "string", NumberFmt: "", ColWidth: 20},
{Value: "支付渠道", CellType: "float", NumberFmt: "", ColWidth: 18},
{Value: "支付时间", CellType: "date", NumberFmt: "yyyy-mm-dd hh:mm:ss", ColWidth: 30},
{Value: "系统订单编号", CellType: "string", NumberFmt: "", ColWidth: 30},
{Value: "第三方支付流水号", CellType: "string", NumberFmt: "", ColWidth: 30},
{Value: "订单状态", CellType: "string", NumberFmt: "", ColWidth: 18},
{Value: "订单金额", CellType: "float", NumberFmt: "0.0000", ColWidth: 18},
{Value: "优惠卷金额", CellType: "float", NumberFmt: "0.0000", ColWidth: 18},
{Value: "付款金额", CellType: "float", NumberFmt: "0.0000", ColWidth: 18},
{Value: "医生收益", CellType: "float", NumberFmt: "0.0000", ColWidth: 18},
}
var interfaceSlice []interface{}
for _, v := range doctorWithdrawalOrders {
// 医生姓名
doctorName := ""
if v.UserDoctor != nil {
doctorName = v.UserDoctor.UserName
}
// 就诊人数据
patientName := "未知"
patientSex := ""
patientAge := ""
patientMobile := ""
payChannel := "未知"
inquiryNo := "未知"
escrowTradeNo := "未知"
inquiryStatus := "未知"
var amountTotal float64
var couponAmountTotal float64
var paymentAmountTotal float64
var doctorAmount float64
var payTime time.Time
if v.OrderInquiry != nil {
patientName = v.OrderInquiry.PatientName
if v.OrderInquiry.PatientSex == 1 {
patientSex = "男"
} else if v.OrderInquiry.PatientSex == 2 {
patientSex = "女"
}
// 患者年龄
patientAge = fmt.Sprintf("%d", v.OrderInquiry.PatientAge)
// 患者电话
if v.OrderInquiry.User != nil {
patientMobile = v.OrderInquiry.User.Mobile
}
// 支付渠道
if v.OrderInquiry.InquiryPayChannel == 1 {
payChannel = "小程序支付"
} else if v.OrderInquiry.InquiryPayChannel == 2 {
payChannel = "微信扫码支付"
} else if v.OrderInquiry.InquiryPayChannel == 3 {
payChannel = "模拟支付"
}
inquiryNo = v.OrderInquiry.InquiryNo
escrowTradeNo = v.OrderInquiry.EscrowTradeNo
if v.OrderInquiry.InquiryStatus == 1 {
inquiryStatus = "待支付"
} else if v.OrderInquiry.InquiryStatus == 2 {
inquiryStatus = "待分配"
} else if v.OrderInquiry.InquiryStatus == 3 {
inquiryStatus = "待接诊"
} else if v.OrderInquiry.InquiryStatus == 4 {
inquiryStatus = "已接诊"
} else if v.OrderInquiry.InquiryStatus == 5 {
inquiryStatus = "已完成"
} else if v.OrderInquiry.InquiryStatus == 6 {
inquiryStatus = "已结束"
} else if v.OrderInquiry.InquiryStatus == 7 {
inquiryStatus = "已取消"
}
amountTotal = v.OrderInquiry.AmountTotal
couponAmountTotal = v.OrderInquiry.CouponAmountTotal
paymentAmountTotal = v.OrderInquiry.PaymentAmountTotal
// 医生收益
doctorAmount, _ = decimal.NewFromFloat(v.OrderInquiry.AmountTotal).Mul(decimal.NewFromFloat(0.75)).Round(2).Float64()
// 时间处理
if v.OrderInquiry.PayTime != (model.LocalTime{}) {
t := time.Time(v.OrderInquiry.PayTime)
payTime = t
}
}
doctorWithdrawalOrderData := DoctorWithdrawalOrderData{
DoctorName: doctorName,
PatientName: patientName,
PatientSex: patientSex,
PatientAge: patientAge,
PatientMobile: patientMobile,
PayChannel: payChannel,
PayTime: payTime,
InquiryNo: inquiryNo,
EscrowTradeNo: escrowTradeNo,
InquiryStatus: inquiryStatus,
AmountTotal: amountTotal,
CouponAmountTotal: couponAmountTotal,
PaymentAmountTotal: paymentAmountTotal,
DoctorAmount: doctorAmount,
}
interfaceSlice = append(interfaceSlice, doctorWithdrawalOrderData)
}
file, err := utils.Export(header, interfaceSlice)
if err != nil {
return "", err
}
// 设置文件名字
now := time.Now()
dateTimeString := now.Format("20060102150405") // 当前时间字符串
rand.Seed(time.Now().UnixNano()) // 设置随机数
ossPath := "admin/export/output" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx"
// 上传oss
_, err = aliyun.PutObjectByte(ossPath, file.Bytes())
if err != nil {
return "", err
}
ossPath = utils.AddOssDomain("/" + ossPath)
return ossPath, nil
}