提现记录-关联订单-导出
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user