diff --git a/api/dao/doctorWithdrawalOrder.go b/api/dao/doctorWithdrawalOrder.go index 2a4978a..1fb83d8 100644 --- a/api/dao/doctorWithdrawalOrder.go +++ b/api/dao/doctorWithdrawalOrder.go @@ -47,10 +47,16 @@ func (r *DoctorWithdrawalOrderDao) GetDoctorWithdrawalOrderPageSearch(req reques }) // 订单 - query = query.Preload("OrderInquiry") + query = query.Preload("Order") + + // 订单-问诊 + query = query.Preload("Order.OrderInquiry") + + // 订单-服务包 + query = query.Preload("Order.OrderServicePackage") // 患者 - query = query.Preload("OrderInquiry.User") + query = query.Preload("Order.User") // 排序 query = query.Order("created_at desc") @@ -82,10 +88,16 @@ func (r *DoctorWithdrawalOrderDao) GetDoctorWithdrawalOrderExportListSearch(req }) // 订单 - query = query.Preload("OrderInquiry") + query = query.Preload("Order") + + // 订单-问诊 + query = query.Preload("Order.OrderInquiry") + + // 订单-服务包 + query = query.Preload("Order.OrderServicePackage") // 患者 - query = query.Preload("OrderInquiry.User") + query = query.Preload("Order.User") // 排序 query = query.Order("created_at desc") diff --git a/api/dao/order.go b/api/dao/order.go index 41b4d97..1fb00de 100644 --- a/api/dao/order.go +++ b/api/dao/order.go @@ -2,6 +2,7 @@ package dao import ( "gorm.io/gorm" + "gorm.io/gorm/clause" "hospital-admin-api/api/model" "hospital-admin-api/global" ) @@ -18,6 +19,14 @@ func (r *OrderDao) GetOrderById(orderId int64) (m *model.Order, err error) { return m, nil } +func (r *OrderDao) GetOrderPreloadById(orderId int64) (m *model.Order, err error) { + err = global.Db.Preload(clause.Associations).First(&m, orderId).Error + if err != nil { + return nil, err + } + return m, nil +} + // AddOrder 新增 func (r *OrderDao) AddOrder(tx *gorm.DB, model *model.Order) (*model.Order, error) { if err := tx.Create(model).Error; err != nil { diff --git a/api/dao/orderInquiry.go b/api/dao/orderInquiry.go index d243a0c..4aa7a39 100644 --- a/api/dao/orderInquiry.go +++ b/api/dao/orderInquiry.go @@ -23,6 +23,15 @@ func (r *OrderInquiryDao) GetOrderInquiryById(orderInquiryId int64) (m *model.Or return m, nil } +// GetOrderInquiryByOrderId 获取问诊订单数据-订单id +func (r *OrderInquiryDao) GetOrderInquiryByOrderId(orderId int64) (m *model.OrderInquiry, err error) { + err = global.Db.Where("order_id = ?", orderId).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + // GetOrderInquiryPreloadById 获取问诊订单数据-加载全部关联-问诊订单id func (r *OrderInquiryDao) GetOrderInquiryPreloadById(orderInquiryId int64) (m *model.OrderInquiry, err error) { err = global.Db.Preload(clause.Associations).First(&m, orderInquiryId).Error diff --git a/api/dto/DoctorWithdrawalOrder.go b/api/dto/DoctorWithdrawalOrder.go index e186303..129e4c6 100644 --- a/api/dto/DoctorWithdrawalOrder.go +++ b/api/dto/DoctorWithdrawalOrder.go @@ -2,7 +2,6 @@ package dto import ( "fmt" - "hospital-admin-api/api/dao" "hospital-admin-api/api/model" "hospital-admin-api/utils" "math" @@ -26,6 +25,7 @@ type DoctorWithdrawalOrderDto struct { PayChannel int `json:"pay_channel"` // 支付渠道(1:小程序支付 2:微信扫码支付 3:模拟支付) PayTime model.LocalTime `json:"pay_time"` // 支付时间 InquiryNo string `json:"inquiry_no"` // 系统订单编号 + OrderNo string `json:"order_no"` // 系统订单编号 EscrowTradeNo string `json:"escrow_trade_no"` // 第三方支付流水号 InquiryStatus int `json:"inquiry_status"` // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) } @@ -62,53 +62,48 @@ func GetDoctorWithdrawalOrderListDto(m []*model.DoctorWithdrawalOrder) []*Doctor } // 加载患者姓名-就诊人(掩码) - if v.OrderInquiry != nil { - response.LoadPatientNameMask(v.OrderInquiry) - } + response.LoadPatientNameMask(v.Order) // 加载患者性别-就诊人 - if v.OrderInquiry != nil { - response.LoadPatientSex(v.OrderInquiry) - } + response.LoadPatientSex(v.Order) // 加载患者年龄-就诊人 - if v.OrderInquiry != nil { - response.LoadPatientAge(v.OrderInquiry) - } + response.LoadPatientAge(v.Order) // 加载患者电话(掩码) - if v.OrderInquiry != nil { - response.LoadPatientMobileMask(v.OrderInquiry) + if v.Order.User != nil { + response.LoadPatientMobileMask(v.Order.User) } // 加载支付渠道 - if v.OrderInquiry != nil { - response.LoadPayChannel(v.OrderInquiry) + if v.Order != nil { + response.LoadPayChannel(v.Order) } // 加载支付时间 - if v.OrderInquiry != nil { - response.LoadPayTime(v.OrderInquiry) + if v.Order != nil { + response.LoadPayTime(v.Order) } // 加载系统订单编号 - if v.OrderInquiry != nil { - response.LoadInquiryNo(v.OrderInquiry) + if v.Order != nil { + response.LoadInquiryNo(v.Order) + response.LoadOrderNo(v.Order) } // 加载第三方支付流水号 - if v.OrderInquiry != nil { - response.LoadEscrowTradeNo(v.OrderInquiry) + if v.Order != nil { + response.LoadEscrowTradeNo(v.Order) } // 加载问诊订单状态 - if v.OrderInquiry != nil { - response.LoadInquiryStatus(v.OrderInquiry) + if v.Order.OrderInquiry != nil { + response.LoadInquiryStatus(v.Order.OrderInquiry) } // 加载医生收益 - if v.OrderInquiry != nil { - response.LoadDoctorAmount(v.OrderInquiry) + if v.Order.OrderInquiry != nil { + response.LoadDoctorAmount(v.Order.OrderInquiry) } // 将转换后的结构体添加到新切片中 @@ -128,51 +123,63 @@ func (r *DoctorWithdrawalOrderDto) LoadDoctorName(m *model.UserDoctor) *DoctorWi } // LoadPatientNameMask 加载患者姓名-就诊人(掩码) -func (r *DoctorWithdrawalOrderDto) LoadPatientNameMask(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { - if m != nil { - r.PatientNameMask = m.PatientNameMask +func (r *DoctorWithdrawalOrderDto) LoadPatientNameMask(m *model.Order) *DoctorWithdrawalOrderDto { + if m.OrderInquiry != nil { + r.PatientNameMask = m.OrderInquiry.PatientNameMask } + + if m.OrderServicePackage != nil { + r.PatientNameMask = m.OrderServicePackage.PatientNameMask + } + return r } // LoadPatientSex 加载患者性别-就诊人 -func (r *DoctorWithdrawalOrderDto) LoadPatientSex(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { - if m != nil { - r.PatientSex = m.PatientSex +func (r *DoctorWithdrawalOrderDto) LoadPatientSex(m *model.Order) *DoctorWithdrawalOrderDto { + if m.OrderInquiry != nil { + r.PatientSex = m.OrderInquiry.PatientSex } + + if m.OrderServicePackage != nil { + r.PatientSex = m.OrderServicePackage.PatientSex + } + return r } // LoadPatientAge 加载患者年龄-就诊人 -func (r *DoctorWithdrawalOrderDto) LoadPatientAge(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { - if m != nil { - r.PatientAge = m.PatientAge +func (r *DoctorWithdrawalOrderDto) LoadPatientAge(m *model.Order) *DoctorWithdrawalOrderDto { + if m.OrderInquiry != nil { + r.PatientAge = m.OrderInquiry.PatientAge } + + if m.OrderServicePackage != nil { + r.PatientAge = m.OrderServicePackage.PatientAge + } + return r } // LoadPatientMobileMask 加载患者电话(掩码) -func (r *DoctorWithdrawalOrderDto) LoadPatientMobileMask(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { +func (r *DoctorWithdrawalOrderDto) LoadPatientMobileMask(m *model.User) *DoctorWithdrawalOrderDto { if m != nil { - userDao := dao.UserDao{} - user, err := userDao.GetUserById(m.UserId) - if err == nil && user != nil { - r.PatientMobileMask = utils.MaskPhoneStr(user.Mobile) - } + r.PatientMobileMask = utils.MaskPhoneStr(m.Mobile) } + return r } // LoadPayChannel 加载支付渠道 -func (r *DoctorWithdrawalOrderDto) LoadPayChannel(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { +func (r *DoctorWithdrawalOrderDto) LoadPayChannel(m *model.Order) *DoctorWithdrawalOrderDto { if m != nil { - r.PayChannel = m.InquiryPayChannel + r.PayChannel = m.PayChannel } return r } // LoadPayTime 加载支付时间 -func (r *DoctorWithdrawalOrderDto) LoadPayTime(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { +func (r *DoctorWithdrawalOrderDto) LoadPayTime(m *model.Order) *DoctorWithdrawalOrderDto { if m != nil { r.PayTime = m.PayTime } @@ -180,15 +187,23 @@ func (r *DoctorWithdrawalOrderDto) LoadPayTime(m *model.OrderInquiry) *DoctorWit } // LoadInquiryNo 加载系统订单编号 -func (r *DoctorWithdrawalOrderDto) LoadInquiryNo(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { +func (r *DoctorWithdrawalOrderDto) LoadInquiryNo(m *model.Order) *DoctorWithdrawalOrderDto { if m != nil { - r.InquiryNo = m.InquiryNo + r.InquiryNo = m.OrderNo + } + return r +} + +// LoadOrderNo 加载系统订单编号 +func (r *DoctorWithdrawalOrderDto) LoadOrderNo(m *model.Order) *DoctorWithdrawalOrderDto { + if m != nil { + r.OrderNo = m.OrderNo } return r } // LoadEscrowTradeNo 加载第三方支付流水号 -func (r *DoctorWithdrawalOrderDto) LoadEscrowTradeNo(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { +func (r *DoctorWithdrawalOrderDto) LoadEscrowTradeNo(m *model.Order) *DoctorWithdrawalOrderDto { if m != nil { r.EscrowTradeNo = m.EscrowTradeNo } diff --git a/api/model/doctorWithdrawalOrder.go b/api/model/doctorWithdrawalOrder.go index 400a99f..0d354ee 100644 --- a/api/model/doctorWithdrawalOrder.go +++ b/api/model/doctorWithdrawalOrder.go @@ -8,12 +8,13 @@ import ( // DoctorWithdrawalOrder 医生提现-关联订单表 type DoctorWithdrawalOrder struct { - WithdrawalOrderId int64 `gorm:"column:withdrawal_order_id;type:bigint(19);primary_key;comment:主键id" json:"withdrawal_order_id"` - WithdrawalId int64 `gorm:"column:withdrawal_id;type:bigint(19);comment:提现表id;NOT NULL" json:"withdrawal_id"` - DoctorId int64 `gorm:"column:doctor_id;type:bigint(19);comment:医生id;NOT NULL" json:"doctor_id"` - OrderInquiryId int64 `gorm:"column:order_inquiry_id;type:bigint(19);comment:订单-问诊id;NOT NULL" json:"order_inquiry_id"` - OrderInquiry *OrderInquiry `gorm:"foreignKey:OrderInquiryId;references:order_inquiry_id" json:"order_inquiry"` // 问诊 - UserDoctor *UserDoctor `gorm:"foreignKey:DoctorId;references:doctor_id" json:"user_doctor"` // 医生 + WithdrawalOrderId int64 `gorm:"column:withdrawal_order_id;type:bigint(19);primary_key;comment:主键id" json:"withdrawal_order_id"` + WithdrawalId int64 `gorm:"column:withdrawal_id;type:bigint(19);comment:提现表id;NOT NULL" json:"withdrawal_id"` + DoctorId int64 `gorm:"column:doctor_id;type:bigint(19);comment:医生id;NOT NULL" json:"doctor_id"` + OrderId int64 `gorm:"column:order_id;type:bigint(19);comment:订单id;NOT NULL" json:"order_id"` + OrderInquiryId int64 `gorm:"column:order_inquiry_id;type:bigint(19);comment:订单-问诊id;NOT NULL" json:"order_inquiry_id"` + Order *Order `gorm:"foreignKey:OrderId;references:order_id" json:"order"` // 订单 + UserDoctor *UserDoctor `gorm:"foreignKey:DoctorId;references:doctor_id" json:"user_doctor"` // 医生 Model } diff --git a/api/model/order.go b/api/model/order.go index 8c4b5a5..e6eaac6 100644 --- a/api/model/order.go +++ b/api/model/order.go @@ -8,27 +8,30 @@ import ( // Order 订单表 type Order struct { - OrderId int64 `gorm:"column:order_id;type:bigint(19);primary_key;comment:主键id" json:"order_id"` - UserId int64 `gorm:"column:user_id;type:bigint(19);comment:用户id-患者;NOT NULL" json:"user_id"` - PatientId int64 `gorm:"column:patient_id;type:bigint(19);comment:患者id;NOT NULL" json:"patient_id"` - DoctorId int64 `gorm:"column:doctor_id;type:bigint(19);comment:医生id(存在为null的情况)" json:"doctor_id"` - OrderType int `gorm:"column:order_type;type:tinyint(1);comment:订单类型(1:问诊订单 2:药品订单 3:检测订单 4:随访包订单 5:健康包订单);NOT NULL" json:"order_type"` - IsDelete int `gorm:"column:is_delete;type:tinyint(1);default:0;comment:删除状态(0:否 1:是)" json:"is_delete"` - PayChannel int `gorm:"column:pay_channel;type:tinyint(1);default:1;comment:支付渠道(1:小程序支付 2:微信扫码支付 3:模拟支付);NOT NULL" json:"pay_channel"` - PayStatus int `gorm:"column:pay_status;type:tinyint(1);default:1;comment:支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款);NOT NULL" json:"pay_status"` - PayTime LocalTime `gorm:"column:pay_time;type:datetime;comment:支付时间" json:"pay_time"` - RefundStatus int `gorm:"column:refund_status;type:tinyint(1);default:0;comment:订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常 7:部分退款);NOT NULL" json:"refund_status"` - OrderNo string `gorm:"column:order_no;type:varchar(30);comment:系统订单编号;NOT NULL" json:"order_no"` - EscrowTradeNo string `gorm:"column:escrow_trade_no;type:varchar(100);comment:第三方支付流水号" json:"escrow_trade_no"` - AmountTotal float64 `gorm:"column:amount_total;type:decimal(10,2) unsigned;default:0.00;comment:订单金额" json:"amount_total"` - CouponAmountTotal float64 `gorm:"column:coupon_amount_total;type:decimal(10,2) unsigned;default:0.00;comment:优惠卷总金额" json:"coupon_amount_total"` - PaymentAmountTotal float64 `gorm:"column:payment_amount_total;type:decimal(10,2) unsigned;default:0.00;comment:实际付款金额" json:"payment_amount_total"` - CancelStatus int `gorm:"column:cancel_status;type:tinyint(1);default:0;comment:取消状态(0:否 1:是)" json:"cancel_status"` - CancelTime LocalTime `gorm:"column:cancel_time;type:datetime;comment:订单取消时间" json:"cancel_time"` - CancelRemarks string `gorm:"column:cancel_remarks;type:varchar(255);comment:取消订单备注" json:"cancel_remarks"` - OrderRemarks string `gorm:"column:order_remarks;type:varchar(255);comment:订单备注" json:"order_remarks"` - IsWithdrawal int `gorm:"column:is_withdrawal;type:tinyint(1);default:0;comment:是否提现(0:否 1:是 2:提现中 3:无需提现)" json:"is_withdrawal"` - WithdrawalTime LocalTime `gorm:"column:withdrawal_time;type:datetime;comment:提现时间" json:"withdrawal_time"` + OrderId int64 `gorm:"column:order_id;type:bigint(19);primary_key;comment:主键id" json:"order_id"` + UserId int64 `gorm:"column:user_id;type:bigint(19);comment:用户id-患者;NOT NULL" json:"user_id"` + PatientId int64 `gorm:"column:patient_id;type:bigint(19);comment:患者id;NOT NULL" json:"patient_id"` + DoctorId int64 `gorm:"column:doctor_id;type:bigint(19);comment:医生id(存在为null的情况)" json:"doctor_id"` + OrderType int `gorm:"column:order_type;type:tinyint(1);comment:订单类型(1:问诊订单 2:药品订单 3:检测订单 4:随访包订单 5:健康包订单);NOT NULL" json:"order_type"` + IsDelete int `gorm:"column:is_delete;type:tinyint(1);default:0;comment:删除状态(0:否 1:是)" json:"is_delete"` + PayChannel int `gorm:"column:pay_channel;type:tinyint(1);default:1;comment:支付渠道(1:小程序支付 2:微信扫码支付 3:模拟支付);NOT NULL" json:"pay_channel"` + PayStatus int `gorm:"column:pay_status;type:tinyint(1);default:1;comment:支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款);NOT NULL" json:"pay_status"` + PayTime LocalTime `gorm:"column:pay_time;type:datetime;comment:支付时间" json:"pay_time"` + RefundStatus int `gorm:"column:refund_status;type:tinyint(1);default:0;comment:订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常 7:部分退款);NOT NULL" json:"refund_status"` + OrderNo string `gorm:"column:order_no;type:varchar(30);comment:系统订单编号;NOT NULL" json:"order_no"` + EscrowTradeNo string `gorm:"column:escrow_trade_no;type:varchar(100);comment:第三方支付流水号" json:"escrow_trade_no"` + AmountTotal float64 `gorm:"column:amount_total;type:decimal(10,2) unsigned;default:0.00;comment:订单金额" json:"amount_total"` + CouponAmountTotal float64 `gorm:"column:coupon_amount_total;type:decimal(10,2) unsigned;default:0.00;comment:优惠卷总金额" json:"coupon_amount_total"` + PaymentAmountTotal float64 `gorm:"column:payment_amount_total;type:decimal(10,2) unsigned;default:0.00;comment:实际付款金额" json:"payment_amount_total"` + CancelStatus int `gorm:"column:cancel_status;type:tinyint(1);default:0;comment:取消状态(0:否 1:是)" json:"cancel_status"` + CancelTime LocalTime `gorm:"column:cancel_time;type:datetime;comment:订单取消时间" json:"cancel_time"` + CancelRemarks string `gorm:"column:cancel_remarks;type:varchar(255);comment:取消订单备注" json:"cancel_remarks"` + OrderRemarks string `gorm:"column:order_remarks;type:varchar(255);comment:订单备注" json:"order_remarks"` + IsWithdrawal int `gorm:"column:is_withdrawal;type:tinyint(1);default:0;comment:是否提现(0:否 1:是 2:提现中 3:无需提现)" json:"is_withdrawal"` + WithdrawalTime LocalTime `gorm:"column:withdrawal_time;type:datetime;comment:提现时间" json:"withdrawal_time"` + OrderInquiry *OrderInquiry `gorm:"foreignKey:OrderId;references:order_id" json:"order_inquiry"` + OrderServicePackage *OrderServicePackage `gorm:"foreignKey:OrderId;references:order_id" json:"order_service_package"` + User *User `gorm:"foreignKey:UserId;references:user_id" json:"user"` Model } diff --git a/api/requests/coupon.go b/api/requests/coupon.go index 85c5454..7bdca92 100644 --- a/api/requests/coupon.go +++ b/api/requests/coupon.go @@ -13,19 +13,19 @@ type CouponRequest struct { type GetSystemCouponPage struct { Page int `json:"page" form:"page" label:"页码"` PageSize int `json:"page_size" form:"page_size" label:"每页个数"` - CouponName string `json:"coupon_name" form:"coupon_name" label:"优惠卷名称"` // 优惠卷名称 - CouponClient *int `json:"coupon_client" form:"coupon_client" label:"使用平台(1:小程序)"` // 使用平台(1:小程序) - CouponType *int `json:"coupon_type" form:"coupon_type" label:"优惠卷类型(1:无门槛 2:满减 3:数量)"` // 优惠卷类型(1:无门槛 2:满减 3:数量) - CouponStatus *int `json:"coupon_status" form:"coupon_status" label:"状态(1:正常 2:强制失效 3:结束 4:删除)"` // 状态(1:正常 2:强制失效 3:结束 4:删除) - DistributionObject *int `json:"distribution_object" form:"distribution_object" label:"发放对象(1:全部用户 2:新注册用户 3:会员 4:近期消费 5:近期购药 6:存量用户 7:健康包服务用户)"` // 发放对象(1:全部用户 2:新注册用户 3:会员 4:近期消费 5:近期购药 6:存量用户 7:健康包服务用户) - ApplicationScope *int `json:"application_scope" form:"application_scope" label:"适用范围(1:全场通用 2:问诊 3:按品牌适用 4:按类别适用 5:单品使用 6:全品类药品)"` // 适用范围(1:全场通用 2:问诊 3:按品牌适用 4:按类别适用 5:单品使用 6:全品类药品) - InquiryType string `json:"inquiry_type" form:"inquiry_type" label:"关联问诊类型,application_scope=问诊时存在生效,逗号分隔(1:全部 2:快速问诊 3:专家问诊 4:公益问诊 5:问诊购药 6:检测)"` // 关联问诊类型,application_scope=问诊时存在生效,逗号分隔(1:全部 2:快速问诊 3:专家问诊 4:公益问诊 5:问诊购药 6:检测) - BrandId string `json:"brand_id" form:"brand_id" label:"关联品牌id(如不限制品牌,此项为空)"` // 关联品牌id(如不限制品牌,此项为空) - IsMutex *int `json:"is_mutex" form:"is_mutex" label:"是否互斥(0:否 1:是)互斥情况下无法和其他优惠卷同时使用"` // 是否互斥(0:否 1:是)互斥情况下无法和其他优惠卷同时使用 - IsDisplay *int `json:"is_display" form:"is_display" label:"是否展示(0:否 1:是)"` // 是否展示(0:否 1:是) - ValidType *int `json:"valid_type" form:"valid_type" label:"有效类型(1:绝对时效,xxx-xxx时间段有效 2:相对时效 n天内有效)"` // 有效类型(1:绝对时效,xxx-xxx时间段有效 2:相对时效 n天内有效) - IsReissuableAfterExpire *int `json:"is_reissuable_after_expire" form:"is_reissuable_after_expire" label:"过期之后是否允许再次发放(0:否 1:是)"` // 过期之后是否允许再次发放(0:否 1:是) - IsPopup *int `json:"is_popup" form:"is_popup" label:"是否首页弹窗(0:否 1:是)"` // 是否首页弹窗(0:否 1:是) + CouponName string `json:"coupon_name" form:"coupon_name" label:"优惠卷名称"` // 优惠卷名称 + CouponClient *int `json:"coupon_client" form:"coupon_client" label:"使用平台(1:小程序)"` // 使用平台(1:小程序) + CouponType *int `json:"coupon_type" form:"coupon_type" label:"优惠卷类型(1:无门槛 2:满减 3:数量)"` // 优惠卷类型(1:无门槛 2:满减 3:数量) + CouponStatus *int `json:"coupon_status" form:"coupon_status" label:"状态(1:正常 2:强制失效 3:结束 4:删除)"` // 状态(1:正常 2:强制失效 3:结束 4:删除) + DistributionObject *int `json:"distribution_object" form:"distribution_object" label:"发放对象(1:全部用户 2:新注册用户 3:会员 4:近期消费 5:近期购药 6:存量用户 7:健康包服务用户 8:app用户)"` // (1:全部用户 2:新注册用户 3:会员 4:近期消费 5:近期购药 6:存量用户 7:健康包服务用户 8:app用户) + ApplicationScope *int `json:"application_scope" form:"application_scope" label:"适用范围(1:全场通用 2:问诊 3:按品牌适用 4:按类别适用 5:单品使用 6:全品类药品)"` // 适用范围(1:全场通用 2:问诊 3:按品牌适用 4:按类别适用 5:单品使用 6:全品类药品) + InquiryType string `json:"inquiry_type" form:"inquiry_type" label:"关联问诊类型,application_scope=问诊时存在生效,逗号分隔(1:全部 2:快速问诊 3:专家问诊 4:公益问诊 5:问诊购药 6:检测)"` // 关联问诊类型,application_scope=问诊时存在生效,逗号分隔(1:全部 2:快速问诊 3:专家问诊 4:公益问诊 5:问诊购药 6:检测) + BrandId string `json:"brand_id" form:"brand_id" label:"关联品牌id(如不限制品牌,此项为空)"` // 关联品牌id(如不限制品牌,此项为空) + IsMutex *int `json:"is_mutex" form:"is_mutex" label:"是否互斥(0:否 1:是)互斥情况下无法和其他优惠卷同时使用"` // 是否互斥(0:否 1:是)互斥情况下无法和其他优惠卷同时使用 + IsDisplay *int `json:"is_display" form:"is_display" label:"是否展示(0:否 1:是)"` // 是否展示(0:否 1:是) + ValidType *int `json:"valid_type" form:"valid_type" label:"有效类型(1:绝对时效,xxx-xxx时间段有效 2:相对时效 n天内有效)"` // 有效类型(1:绝对时效,xxx-xxx时间段有效 2:相对时效 n天内有效) + IsReissuableAfterExpire *int `json:"is_reissuable_after_expire" form:"is_reissuable_after_expire" label:"过期之后是否允许再次发放(0:否 1:是)"` // 过期之后是否允许再次发放(0:否 1:是) + IsPopup *int `json:"is_popup" form:"is_popup" label:"是否首页弹窗(0:否 1:是)"` // 是否首页弹窗(0:否 1:是) CouponDesc string `json:"coupon_desc" form:"coupon_desc" label:"优惠卷描述"` CreatedAt string `json:"created_at" form:"created_at" label:"创建时间"` // 创建时间 } @@ -36,8 +36,8 @@ type AddSystemCoupon struct { CouponIcon string `json:"coupon_icon" form:"coupon_icon" label:"头像"` // 优惠卷名称 CouponClient *int `json:"coupon_client" form:"coupon_client" label:"使用平台" validate:"required,oneof=1"` // 使用平台(1:小程序) CouponType *int `json:"coupon_type" form:"coupon_type" label:"优惠卷类型" validate:"required,oneof=1 2 3"` // 优惠卷类型(1 :无门槛 2:满减 3:数量) - DistributionObject *int `json:"distribution_object" form:"distribution_object" label:"发放对象" validate:"required,oneof=1 2 3 4 5 6 7"` - ApplicationScope *int `json:"application_scope" form:"application_scope" label:"适用范围" validate:"required,oneof=1 2 3 4 5 6"` // (1:全场通用 2:问诊 3:按品牌适用 4:按类别适用 5:单品使用 6:全品类药品) + DistributionObject *int `json:"distribution_object" form:"distribution_object" label:"发放对象" validate:"required,oneof=1 2 3 4 5 6 7 8"` + ApplicationScope *int `json:"application_scope" form:"application_scope" label:"适用范围" validate:"required,oneof=1 2 3 4 5 6"` // (1:全部用户 2:新注册用户 3:会员 4:近期消费 5:近期购药 6:存量用户 7:健康包服务用户 8:app用户) InquiryType []string `json:"inquiry_type" form:"inquiry_type" label:"关联问诊类型"` // 关联问诊类型,application_scope=问诊时存在生效,逗号分隔(1:全部 2:快速问诊 3:专家问诊 4:公益问诊 5:问诊购药 6:检测) BrandId *string `json:"brand_id" form:"brand_id" label:"关联品牌id"` // 关联品牌id(如不限制品牌,此项为空) IsMutex *int `json:"is_mutex" form:"is_mutex" label:"是否互斥" validate:"required,oneof=0 1"` // 是否互斥(0:否 1:是)互斥情况下无法和其他优惠卷同时使用 @@ -62,7 +62,7 @@ type AddSystemCoupon struct { type PutSystemCoupon struct { CouponName string `json:"coupon_name" form:"coupon_name" label:"优惠卷名称" validate:"required"` // 优惠卷名称 CouponIcon string `json:"coupon_icon" form:"coupon_icon" label:"头像"` // 优惠卷名称 - DistributionObject *int `json:"distribution_object" form:"distribution_object" label:"发放对象" validate:"required,oneof=1 2 3 4 5 6 7"` // (1:全部用户 2:新注册用户 3:会员 4:近期消费 5:近期购药 6:存量用户 7:健康包服务用户) + DistributionObject *int `json:"distribution_object" form:"distribution_object" label:"发放对象" validate:"required,oneof=1 2 3 4 5 6 7 8"` // (1:全部用户 2:新注册用户 3:会员 4:近期消费 5:近期购药 6:存量用户 7:健康包服务用户 8:app用户) InquiryType []string `json:"inquiry_type" form:"inquiry_type" label:"关联问诊类型"` // 关联问诊类型,application_scope=问诊时存在生效,逗号分隔(1:全部 2:快速问诊 3:专家问诊 4:公益问诊 5:问诊购药 6:检测) BrandId *string `json:"brand_id" form:"brand_id" label:"关联品牌id"` // 关联品牌id(如不限制品牌,此项为空) IsMutex *int `json:"is_mutex" form:"is_mutex" label:"是否互斥" validate:"required,oneof=0 1"` // 是否互斥(0:否 1:是)互斥情况下无法和其他优惠卷同时使用 diff --git a/api/service/doctorWithdrawal.go b/api/service/doctorWithdrawal.go index 228dff7..213fcc9 100644 --- a/api/service/doctorWithdrawal.go +++ b/api/service/doctorWithdrawal.go @@ -257,23 +257,37 @@ func (r *DoctorWithdrawalService) PutDoctorWithdrawalExamine(req requests.PutDoc } // 修改问诊订单提现状态 + orderDao := dao.OrderDao{} + orderInquiryDao := dao.OrderInquiryDao{} for _, v := range doctorWithdrawalOrders { // 获取订单数据 - orderInquiryDao := dao.OrderInquiryDao{} - orderInquiry, err := orderInquiryDao.GetOrderInquiryById(v.OrderInquiryId) - if err != nil { + order, err := orderDao.GetOrderPreloadById(v.OrderId) + if order == nil { tx.Rollback() return false, errors.New("关联订单数据错误") } - orderInquiryData := make(map[string]interface{}) - orderInquiryData["is_withdrawal"] = 0 - orderInquiryData["withdrawal_time"] = nil - err = orderInquiryDao.EditOrderInquiryById(tx, orderInquiry.OrderInquiryId, orderInquiryData) + // 修改订单数据 + orderData := make(map[string]interface{}) + orderData["is_withdrawal"] = 0 + orderData["withdrawal_time"] = nil + + err = orderDao.EditOrderById(tx, v.OrderId, orderData) if err != nil { tx.Rollback() return false, errors.New("回滚关联订单数据失败") } + + if order.OrderType == 1 { + orderInquiryData := make(map[string]interface{}) + orderInquiryData["is_withdrawal"] = 0 + orderInquiryData["withdrawal_time"] = nil + err = orderInquiryDao.EditOrderInquiryById(tx, order.OrderInquiry.OrderInquiryId, orderInquiryData) + if err != nil { + tx.Rollback() + return false, errors.New("操作关联订单数据失败") + } + } } } @@ -326,22 +340,36 @@ func (r *DoctorWithdrawalService) PutDoctorWithdrawalPayment(withdrawalId, admin } // 修改问诊订单提现状态 + orderDao := dao.OrderDao{} + orderInquiryDao := dao.OrderInquiryDao{} for _, v := range doctorWithdrawalOrders { // 获取订单数据 - orderInquiryDao := dao.OrderInquiryDao{} - orderInquiry, err := orderInquiryDao.GetOrderInquiryById(v.OrderInquiryId) + order, err := orderDao.GetOrderPreloadById(v.OrderId) + if order == nil { + tx.Rollback() + return false, errors.New("关联订单数据错误") + } + + // 修改订单数据 + orderData := make(map[string]interface{}) + orderData["is_withdrawal"] = 1 + orderData["withdrawal_time"] = time.Now().Format("2006-01-02 15:04:05") + + err = orderDao.EditOrderById(tx, v.OrderId, orderData) if err != nil { tx.Rollback() return false, errors.New("关联订单数据错误") } - orderInquiryData := make(map[string]interface{}) - orderInquiryData["is_withdrawal"] = 1 - orderInquiryData["withdrawal_time"] = time.Now().Format("2006-01-02 15:04:05") - err = orderInquiryDao.EditOrderInquiryById(tx, orderInquiry.OrderInquiryId, orderInquiryData) - if err != nil { - tx.Rollback() - return false, errors.New("操作关联订单数据失败") + if order.OrderType == 1 { + orderInquiryData := make(map[string]interface{}) + orderInquiryData["is_withdrawal"] = 1 + orderInquiryData["withdrawal_time"] = time.Now().Format("2006-01-02 15:04:05") + err = orderInquiryDao.EditOrderInquiryById(tx, order.OrderInquiry.OrderInquiryId, orderInquiryData) + if err != nil { + tx.Rollback() + return false, errors.New("操作关联订单数据失败") + } } } @@ -358,31 +386,35 @@ func (r *DoctorWithdrawalService) getDoctorWithdrawalOrderAmountTotal(withdrawal return 0, errors.New("关联订单数据错误") } + orderDao := dao.OrderDao{} + // 总金额 var amountTotal = decimal.NewFromFloat(0) for _, v := range doctorWithdrawalOrders { // 获取订单数据 - orderInquiryDao := dao.OrderInquiryDao{} - orderInquiry, err := orderInquiryDao.GetOrderInquiryById(v.OrderInquiryId) + order, err := orderDao.GetOrderPreloadById(v.OrderId) if err != nil { return 0, errors.New("订单数据错误") } - if orderInquiry.InquiryStatus != 6 { - return 0, errors.New("存在未结束订单,数据错误") + if order.OrderInquiry != nil { + if order.OrderInquiry.InquiryStatus != 6 { + return 0, errors.New("存在未结束订单,数据错误") + } + } - if orderInquiry.IsWithdrawal == 1 { + if order.IsWithdrawal == 1 { return 0, errors.New("存在已被提现订单,数据错误") } - if orderInquiry.InquiryPayStatus != 2 { + if order.PayStatus != 2 { return 0, errors.New("存在支付状态错误订单,数据错误") } - var orderInquiryAmountTotal = decimal.NewFromFloat(orderInquiry.AmountTotal) + var orderAmountTotal = decimal.NewFromFloat(order.AmountTotal) - amountTotal = amountTotal.Add(orderInquiryAmountTotal) + amountTotal = amountTotal.Add(orderAmountTotal) } // 分成比例 diff --git a/api/service/export.go b/api/service/export.go index 2e42ea6..c70155a 100644 --- a/api/service/export.go +++ b/api/service/export.go @@ -51,7 +51,6 @@ type DoctorWithdrawalOrderData struct { PayTime time.Time // 支付时间 InquiryNo string // 系统订单编号 EscrowTradeNo string // 第三方支付流水号 - InquiryStatus string // 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) AmountTotal float64 // 订单金额 CouponAmountTotal float64 // 优惠卷金额 PaymentAmountTotal float64 // 实际付款金额 @@ -517,7 +516,6 @@ func (r *ExportService) DoctorWithdrawalOrder(doctorWithdrawalOrders []*model.Do {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}, @@ -540,46 +538,42 @@ func (r *ExportService) DoctorWithdrawalOrder(doctorWithdrawalOrders []*model.Do 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.Order.OrderInquiry != nil { + patientName = v.Order.OrderInquiry.PatientName // 患者性别 - patientSex = utils.SexToString(v.OrderInquiry.PatientSex) + patientSex = utils.SexToString(v.Order.OrderInquiry.PatientSex) // 患者年龄 - patientAge = fmt.Sprintf("%d", v.OrderInquiry.PatientAge) + patientAge = fmt.Sprintf("%d", v.Order.OrderInquiry.PatientAge) // 患者电话 - if v.OrderInquiry.User != nil { - patientMobile = v.OrderInquiry.User.Mobile + if v.Order.OrderInquiry.User != nil { + patientMobile = v.Order.OrderInquiry.User.Mobile } // 支付渠道 - payChannel = utils.PayChannelToString(v.OrderInquiry.InquiryPayChannel) + payChannel = utils.PayChannelToString(v.Order.OrderInquiry.InquiryPayChannel) - inquiryNo = v.OrderInquiry.InquiryNo - escrowTradeNo = v.OrderInquiry.EscrowTradeNo + inquiryNo = v.Order.OrderInquiry.InquiryNo + escrowTradeNo = v.Order.OrderInquiry.EscrowTradeNo - // 问诊订单状态 - inquiryStatus = utils.InquiryStatusToString(v.OrderInquiry.InquiryStatus) - - amountTotal = v.OrderInquiry.AmountTotal - couponAmountTotal = v.OrderInquiry.CouponAmountTotal - paymentAmountTotal = v.OrderInquiry.PaymentAmountTotal + amountTotal = v.Order.OrderInquiry.AmountTotal + couponAmountTotal = v.Order.OrderInquiry.CouponAmountTotal + paymentAmountTotal = v.Order.OrderInquiry.PaymentAmountTotal // 医生收益 - doctorAmount, _ = decimal.NewFromFloat(v.OrderInquiry.AmountTotal).Mul(decimal.NewFromFloat(0.75)).Round(2).Float64() + doctorAmount, _ = decimal.NewFromFloat(v.Order.OrderInquiry.AmountTotal).Mul(decimal.NewFromFloat(0.75)).Round(2).Float64() // 时间处理 - if v.OrderInquiry.PayTime != (model.LocalTime{}) { - t := time.Time(v.OrderInquiry.PayTime) + if v.Order.OrderInquiry.PayTime != (model.LocalTime{}) { + t := time.Time(v.Order.OrderInquiry.PayTime) payTime = t } } @@ -594,7 +588,6 @@ func (r *ExportService) DoctorWithdrawalOrder(doctorWithdrawalOrders []*model.Do PayTime: payTime, InquiryNo: inquiryNo, EscrowTradeNo: escrowTradeNo, - InquiryStatus: inquiryStatus, AmountTotal: amountTotal, CouponAmountTotal: couponAmountTotal, PaymentAmountTotal: paymentAmountTotal,