Merge branch 'dev'

This commit is contained in:
wucongxing8150 2024-06-26 15:21:29 +08:00
commit 8d946cc6cf
9 changed files with 212 additions and 138 deletions

View File

@ -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") 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") query = query.Order("created_at desc")

View File

@ -2,6 +2,7 @@ package dao
import ( import (
"gorm.io/gorm" "gorm.io/gorm"
"gorm.io/gorm/clause"
"hospital-admin-api/api/model" "hospital-admin-api/api/model"
"hospital-admin-api/global" "hospital-admin-api/global"
) )
@ -18,6 +19,14 @@ func (r *OrderDao) GetOrderById(orderId int64) (m *model.Order, err error) {
return m, nil 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 新增 // AddOrder 新增
func (r *OrderDao) AddOrder(tx *gorm.DB, model *model.Order) (*model.Order, error) { func (r *OrderDao) AddOrder(tx *gorm.DB, model *model.Order) (*model.Order, error) {
if err := tx.Create(model).Error; err != nil { if err := tx.Create(model).Error; err != nil {

View File

@ -23,6 +23,15 @@ func (r *OrderInquiryDao) GetOrderInquiryById(orderInquiryId int64) (m *model.Or
return m, nil 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 // GetOrderInquiryPreloadById 获取问诊订单数据-加载全部关联-问诊订单id
func (r *OrderInquiryDao) GetOrderInquiryPreloadById(orderInquiryId int64) (m *model.OrderInquiry, err error) { func (r *OrderInquiryDao) GetOrderInquiryPreloadById(orderInquiryId int64) (m *model.OrderInquiry, err error) {
err = global.Db.Preload(clause.Associations).First(&m, orderInquiryId).Error err = global.Db.Preload(clause.Associations).First(&m, orderInquiryId).Error

View File

@ -2,7 +2,6 @@ package dto
import ( import (
"fmt" "fmt"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/model" "hospital-admin-api/api/model"
"hospital-admin-api/utils" "hospital-admin-api/utils"
"math" "math"
@ -26,6 +25,7 @@ type DoctorWithdrawalOrderDto struct {
PayChannel int `json:"pay_channel"` // 支付渠道1:小程序支付 2:微信扫码支付 3:模拟支付) PayChannel int `json:"pay_channel"` // 支付渠道1:小程序支付 2:微信扫码支付 3:模拟支付)
PayTime model.LocalTime `json:"pay_time"` // 支付时间 PayTime model.LocalTime `json:"pay_time"` // 支付时间
InquiryNo string `json:"inquiry_no"` // 系统订单编号 InquiryNo string `json:"inquiry_no"` // 系统订单编号
OrderNo string `json:"order_no"` // 系统订单编号
EscrowTradeNo string `json:"escrow_trade_no"` // 第三方支付流水号 EscrowTradeNo string `json:"escrow_trade_no"` // 第三方支付流水号
InquiryStatus int `json:"inquiry_status"` // 问诊订单状态1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消) 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.Order)
response.LoadPatientNameMask(v.OrderInquiry)
}
// 加载患者性别-就诊人 // 加载患者性别-就诊人
if v.OrderInquiry != nil { response.LoadPatientSex(v.Order)
response.LoadPatientSex(v.OrderInquiry)
}
// 加载患者年龄-就诊人 // 加载患者年龄-就诊人
if v.OrderInquiry != nil { response.LoadPatientAge(v.Order)
response.LoadPatientAge(v.OrderInquiry)
}
// 加载患者电话(掩码) // 加载患者电话(掩码)
if v.OrderInquiry != nil { if v.Order.User != nil {
response.LoadPatientMobileMask(v.OrderInquiry) response.LoadPatientMobileMask(v.Order.User)
} }
// 加载支付渠道 // 加载支付渠道
if v.OrderInquiry != nil { if v.Order != nil {
response.LoadPayChannel(v.OrderInquiry) response.LoadPayChannel(v.Order)
} }
// 加载支付时间 // 加载支付时间
if v.OrderInquiry != nil { if v.Order != nil {
response.LoadPayTime(v.OrderInquiry) response.LoadPayTime(v.Order)
} }
// 加载系统订单编号 // 加载系统订单编号
if v.OrderInquiry != nil { if v.Order != nil {
response.LoadInquiryNo(v.OrderInquiry) response.LoadInquiryNo(v.Order)
response.LoadOrderNo(v.Order)
} }
// 加载第三方支付流水号 // 加载第三方支付流水号
if v.OrderInquiry != nil { if v.Order != nil {
response.LoadEscrowTradeNo(v.OrderInquiry) response.LoadEscrowTradeNo(v.Order)
} }
// 加载问诊订单状态 // 加载问诊订单状态
if v.OrderInquiry != nil { if v.Order.OrderInquiry != nil {
response.LoadInquiryStatus(v.OrderInquiry) response.LoadInquiryStatus(v.Order.OrderInquiry)
} }
// 加载医生收益 // 加载医生收益
if v.OrderInquiry != nil { if v.Order.OrderInquiry != nil {
response.LoadDoctorAmount(v.OrderInquiry) response.LoadDoctorAmount(v.Order.OrderInquiry)
} }
// 将转换后的结构体添加到新切片中 // 将转换后的结构体添加到新切片中
@ -128,51 +123,63 @@ func (r *DoctorWithdrawalOrderDto) LoadDoctorName(m *model.UserDoctor) *DoctorWi
} }
// LoadPatientNameMask 加载患者姓名-就诊人(掩码) // LoadPatientNameMask 加载患者姓名-就诊人(掩码)
func (r *DoctorWithdrawalOrderDto) LoadPatientNameMask(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { func (r *DoctorWithdrawalOrderDto) LoadPatientNameMask(m *model.Order) *DoctorWithdrawalOrderDto {
if m != nil { if m.OrderInquiry != nil {
r.PatientNameMask = m.PatientNameMask r.PatientNameMask = m.OrderInquiry.PatientNameMask
} }
if m.OrderServicePackage != nil {
r.PatientNameMask = m.OrderServicePackage.PatientNameMask
}
return r return r
} }
// LoadPatientSex 加载患者性别-就诊人 // LoadPatientSex 加载患者性别-就诊人
func (r *DoctorWithdrawalOrderDto) LoadPatientSex(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { func (r *DoctorWithdrawalOrderDto) LoadPatientSex(m *model.Order) *DoctorWithdrawalOrderDto {
if m != nil { if m.OrderInquiry != nil {
r.PatientSex = m.PatientSex r.PatientSex = m.OrderInquiry.PatientSex
} }
if m.OrderServicePackage != nil {
r.PatientSex = m.OrderServicePackage.PatientSex
}
return r return r
} }
// LoadPatientAge 加载患者年龄-就诊人 // LoadPatientAge 加载患者年龄-就诊人
func (r *DoctorWithdrawalOrderDto) LoadPatientAge(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { func (r *DoctorWithdrawalOrderDto) LoadPatientAge(m *model.Order) *DoctorWithdrawalOrderDto {
if m != nil { if m.OrderInquiry != nil {
r.PatientAge = m.PatientAge r.PatientAge = m.OrderInquiry.PatientAge
} }
if m.OrderServicePackage != nil {
r.PatientAge = m.OrderServicePackage.PatientAge
}
return r return r
} }
// LoadPatientMobileMask 加载患者电话(掩码) // LoadPatientMobileMask 加载患者电话(掩码)
func (r *DoctorWithdrawalOrderDto) LoadPatientMobileMask(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { func (r *DoctorWithdrawalOrderDto) LoadPatientMobileMask(m *model.User) *DoctorWithdrawalOrderDto {
if m != nil { if m != nil {
userDao := dao.UserDao{} r.PatientMobileMask = utils.MaskPhoneStr(m.Mobile)
user, err := userDao.GetUserById(m.UserId)
if err == nil && user != nil {
r.PatientMobileMask = utils.MaskPhoneStr(user.Mobile)
}
} }
return r return r
} }
// LoadPayChannel 加载支付渠道 // LoadPayChannel 加载支付渠道
func (r *DoctorWithdrawalOrderDto) LoadPayChannel(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { func (r *DoctorWithdrawalOrderDto) LoadPayChannel(m *model.Order) *DoctorWithdrawalOrderDto {
if m != nil { if m != nil {
r.PayChannel = m.InquiryPayChannel r.PayChannel = m.PayChannel
} }
return r return r
} }
// LoadPayTime 加载支付时间 // LoadPayTime 加载支付时间
func (r *DoctorWithdrawalOrderDto) LoadPayTime(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { func (r *DoctorWithdrawalOrderDto) LoadPayTime(m *model.Order) *DoctorWithdrawalOrderDto {
if m != nil { if m != nil {
r.PayTime = m.PayTime r.PayTime = m.PayTime
} }
@ -180,15 +187,23 @@ func (r *DoctorWithdrawalOrderDto) LoadPayTime(m *model.OrderInquiry) *DoctorWit
} }
// LoadInquiryNo 加载系统订单编号 // LoadInquiryNo 加载系统订单编号
func (r *DoctorWithdrawalOrderDto) LoadInquiryNo(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { func (r *DoctorWithdrawalOrderDto) LoadInquiryNo(m *model.Order) *DoctorWithdrawalOrderDto {
if m != nil { 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 return r
} }
// LoadEscrowTradeNo 加载第三方支付流水号 // LoadEscrowTradeNo 加载第三方支付流水号
func (r *DoctorWithdrawalOrderDto) LoadEscrowTradeNo(m *model.OrderInquiry) *DoctorWithdrawalOrderDto { func (r *DoctorWithdrawalOrderDto) LoadEscrowTradeNo(m *model.Order) *DoctorWithdrawalOrderDto {
if m != nil { if m != nil {
r.EscrowTradeNo = m.EscrowTradeNo r.EscrowTradeNo = m.EscrowTradeNo
} }

View File

@ -8,12 +8,13 @@ import (
// DoctorWithdrawalOrder 医生提现-关联订单表 // DoctorWithdrawalOrder 医生提现-关联订单表
type DoctorWithdrawalOrder struct { type DoctorWithdrawalOrder struct {
WithdrawalOrderId int64 `gorm:"column:withdrawal_order_id;type:bigint(19);primary_key;comment:主键id" json:"withdrawal_order_id"` 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"` 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"` 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"` OrderId int64 `gorm:"column:order_id;type:bigint(19);comment:订单id;NOT NULL" json:"order_id"`
OrderInquiry *OrderInquiry `gorm:"foreignKey:OrderInquiryId;references:order_inquiry_id" json:"order_inquiry"` // 问诊 OrderInquiryId int64 `gorm:"column:order_inquiry_id;type:bigint(19);comment:订单-问诊id;NOT NULL" json:"order_inquiry_id"`
UserDoctor *UserDoctor `gorm:"foreignKey:DoctorId;references:doctor_id" json:"user_doctor"` // 医生 Order *Order `gorm:"foreignKey:OrderId;references:order_id" json:"order"` // 订单
UserDoctor *UserDoctor `gorm:"foreignKey:DoctorId;references:doctor_id" json:"user_doctor"` // 医生
Model Model
} }

View File

@ -8,27 +8,30 @@ import (
// Order 订单表 // Order 订单表
type Order struct { type Order struct {
OrderId int64 `gorm:"column:order_id;type:bigint(19);primary_key;comment:主键id" json:"order_id"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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"` 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 Model
} }

View File

@ -13,19 +13,19 @@ type CouponRequest struct {
type GetSystemCouponPage struct { type GetSystemCouponPage struct {
Page int `json:"page" form:"page" label:"页码"` Page int `json:"page" form:"page" label:"页码"`
PageSize int `json:"page_size" form:"page_size" label:"每页个数"` PageSize int `json:"page_size" form:"page_size" label:"每页个数"`
CouponName string `json:"coupon_name" form:"coupon_name" label:"优惠卷名称"` // 优惠卷名称 CouponName string `json:"coupon_name" form:"coupon_name" label:"优惠卷名称"` // 优惠卷名称
CouponClient *int `json:"coupon_client" form:"coupon_client" label:"使用平台1:小程序)"` // 使用平台1:小程序) 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:数量) 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:删除) 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:健康包服务用户) 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:全品类药品) 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:检测) 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如不限制品牌此项为空 BrandId string `json:"brand_id" form:"brand_id" label:"关联品牌id如不限制品牌此项为空"` // 关联品牌id如不限制品牌此项为空
IsMutex *int `json:"is_mutex" form:"is_mutex" label:"是否互斥0:否 1:是)互斥情况下无法和其他优惠卷同时使用"` // 是否互斥0:否 1:是)互斥情况下无法和其他优惠卷同时使用 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:是) 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天内有效 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:是) 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:是) IsPopup *int `json:"is_popup" form:"is_popup" label:"是否首页弹窗0:否 1:是)"` // 是否首页弹窗0:否 1:是)
CouponDesc string `json:"coupon_desc" form:"coupon_desc" label:"优惠卷描述"` CouponDesc string `json:"coupon_desc" form:"coupon_desc" label:"优惠卷描述"`
CreatedAt string `json:"created_at" form:"created_at" 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:"头像"` // 优惠卷名称 CouponIcon string `json:"coupon_icon" form:"coupon_icon" label:"头像"` // 优惠卷名称
CouponClient *int `json:"coupon_client" form:"coupon_client" label:"使用平台" validate:"required,oneof=1"` // 使用平台1:小程序) 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:数量) 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"` 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:全品类药品 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:检测) 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如不限制品牌此项为空 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:是)互斥情况下无法和其他优惠卷同时使用 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 { type PutSystemCoupon struct {
CouponName string `json:"coupon_name" form:"coupon_name" label:"优惠卷名称" validate:"required"` // 优惠卷名称 CouponName string `json:"coupon_name" form:"coupon_name" label:"优惠卷名称" validate:"required"` // 优惠卷名称
CouponIcon string `json:"coupon_icon" form:"coupon_icon" label:"头像"` // 优惠卷名称 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:检测) 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如不限制品牌此项为空 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:是)互斥情况下无法和其他优惠卷同时使用 IsMutex *int `json:"is_mutex" form:"is_mutex" label:"是否互斥" validate:"required,oneof=0 1"` // 是否互斥0:否 1:是)互斥情况下无法和其他优惠卷同时使用

View File

@ -257,23 +257,37 @@ func (r *DoctorWithdrawalService) PutDoctorWithdrawalExamine(req requests.PutDoc
} }
// 修改问诊订单提现状态 // 修改问诊订单提现状态
orderDao := dao.OrderDao{}
orderInquiryDao := dao.OrderInquiryDao{}
for _, v := range doctorWithdrawalOrders { for _, v := range doctorWithdrawalOrders {
// 获取订单数据 // 获取订单数据
orderInquiryDao := dao.OrderInquiryDao{} order, err := orderDao.GetOrderPreloadById(v.OrderId)
orderInquiry, err := orderInquiryDao.GetOrderInquiryById(v.OrderInquiryId) if order == nil {
if err != nil {
tx.Rollback() tx.Rollback()
return false, errors.New("关联订单数据错误") return false, errors.New("关联订单数据错误")
} }
orderInquiryData := make(map[string]interface{}) // 修改订单数据
orderInquiryData["is_withdrawal"] = 0 orderData := make(map[string]interface{})
orderInquiryData["withdrawal_time"] = nil orderData["is_withdrawal"] = 0
err = orderInquiryDao.EditOrderInquiryById(tx, orderInquiry.OrderInquiryId, orderInquiryData) orderData["withdrawal_time"] = nil
err = orderDao.EditOrderById(tx, v.OrderId, orderData)
if err != nil { if err != nil {
tx.Rollback() tx.Rollback()
return false, errors.New("回滚关联订单数据失败") 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 { for _, v := range doctorWithdrawalOrders {
// 获取订单数据 // 获取订单数据
orderInquiryDao := dao.OrderInquiryDao{} order, err := orderDao.GetOrderPreloadById(v.OrderId)
orderInquiry, err := orderInquiryDao.GetOrderInquiryById(v.OrderInquiryId) 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 { if err != nil {
tx.Rollback() tx.Rollback()
return false, errors.New("关联订单数据错误") return false, errors.New("关联订单数据错误")
} }
orderInquiryData := make(map[string]interface{}) if order.OrderType == 1 {
orderInquiryData["is_withdrawal"] = 1 orderInquiryData := make(map[string]interface{})
orderInquiryData["withdrawal_time"] = time.Now().Format("2006-01-02 15:04:05") orderInquiryData["is_withdrawal"] = 1
err = orderInquiryDao.EditOrderInquiryById(tx, orderInquiry.OrderInquiryId, orderInquiryData) orderInquiryData["withdrawal_time"] = time.Now().Format("2006-01-02 15:04:05")
if err != nil { err = orderInquiryDao.EditOrderInquiryById(tx, order.OrderInquiry.OrderInquiryId, orderInquiryData)
tx.Rollback() if err != nil {
return false, errors.New("操作关联订单数据失败") tx.Rollback()
return false, errors.New("操作关联订单数据失败")
}
} }
} }
@ -358,31 +386,35 @@ func (r *DoctorWithdrawalService) getDoctorWithdrawalOrderAmountTotal(withdrawal
return 0, errors.New("关联订单数据错误") return 0, errors.New("关联订单数据错误")
} }
orderDao := dao.OrderDao{}
// 总金额 // 总金额
var amountTotal = decimal.NewFromFloat(0) var amountTotal = decimal.NewFromFloat(0)
for _, v := range doctorWithdrawalOrders { for _, v := range doctorWithdrawalOrders {
// 获取订单数据 // 获取订单数据
orderInquiryDao := dao.OrderInquiryDao{} order, err := orderDao.GetOrderPreloadById(v.OrderId)
orderInquiry, err := orderInquiryDao.GetOrderInquiryById(v.OrderInquiryId)
if err != nil { if err != nil {
return 0, errors.New("订单数据错误") return 0, errors.New("订单数据错误")
} }
if orderInquiry.InquiryStatus != 6 { if order.OrderInquiry != nil {
return 0, errors.New("存在未结束订单,数据错误") if order.OrderInquiry.InquiryStatus != 6 {
return 0, errors.New("存在未结束订单,数据错误")
}
} }
if orderInquiry.IsWithdrawal == 1 { if order.IsWithdrawal == 1 {
return 0, errors.New("存在已被提现订单,数据错误") return 0, errors.New("存在已被提现订单,数据错误")
} }
if orderInquiry.InquiryPayStatus != 2 { if order.PayStatus != 2 {
return 0, errors.New("存在支付状态错误订单,数据错误") return 0, errors.New("存在支付状态错误订单,数据错误")
} }
var orderInquiryAmountTotal = decimal.NewFromFloat(orderInquiry.AmountTotal) var orderAmountTotal = decimal.NewFromFloat(order.AmountTotal)
amountTotal = amountTotal.Add(orderInquiryAmountTotal) amountTotal = amountTotal.Add(orderAmountTotal)
} }
// 分成比例 // 分成比例

View File

@ -51,7 +51,6 @@ type DoctorWithdrawalOrderData struct {
PayTime time.Time // 支付时间 PayTime time.Time // 支付时间
InquiryNo string // 系统订单编号 InquiryNo string // 系统订单编号
EscrowTradeNo string // 第三方支付流水号 EscrowTradeNo string // 第三方支付流水号
InquiryStatus string // 问诊订单状态1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
AmountTotal float64 // 订单金额 AmountTotal float64 // 订单金额
CouponAmountTotal float64 // 优惠卷金额 CouponAmountTotal float64 // 优惠卷金额
PaymentAmountTotal 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: "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: 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},
{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 := "未知" payChannel := "未知"
inquiryNo := "未知" inquiryNo := "未知"
escrowTradeNo := "未知" escrowTradeNo := "未知"
inquiryStatus := "未知"
var amountTotal float64 var amountTotal float64
var couponAmountTotal float64 var couponAmountTotal float64
var paymentAmountTotal float64 var paymentAmountTotal float64
var doctorAmount float64 var doctorAmount float64
var payTime time.Time var payTime time.Time
if v.OrderInquiry != nil { if v.Order.OrderInquiry != nil {
patientName = v.OrderInquiry.PatientName 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 { if v.Order.OrderInquiry.User != nil {
patientMobile = v.OrderInquiry.User.Mobile patientMobile = v.Order.OrderInquiry.User.Mobile
} }
// 支付渠道 // 支付渠道
payChannel = utils.PayChannelToString(v.OrderInquiry.InquiryPayChannel) payChannel = utils.PayChannelToString(v.Order.OrderInquiry.InquiryPayChannel)
inquiryNo = v.OrderInquiry.InquiryNo inquiryNo = v.Order.OrderInquiry.InquiryNo
escrowTradeNo = v.OrderInquiry.EscrowTradeNo escrowTradeNo = v.Order.OrderInquiry.EscrowTradeNo
// 问诊订单状态 amountTotal = v.Order.OrderInquiry.AmountTotal
inquiryStatus = utils.InquiryStatusToString(v.OrderInquiry.InquiryStatus) couponAmountTotal = v.Order.OrderInquiry.CouponAmountTotal
paymentAmountTotal = v.Order.OrderInquiry.PaymentAmountTotal
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() doctorAmount, _ = decimal.NewFromFloat(v.Order.OrderInquiry.AmountTotal).Mul(decimal.NewFromFloat(0.75)).Round(2).Float64()
// 时间处理 // 时间处理
if v.OrderInquiry.PayTime != (model.LocalTime{}) { if v.Order.OrderInquiry.PayTime != (model.LocalTime{}) {
t := time.Time(v.OrderInquiry.PayTime) t := time.Time(v.Order.OrderInquiry.PayTime)
payTime = t payTime = t
} }
} }
@ -594,7 +588,6 @@ func (r *ExportService) DoctorWithdrawalOrder(doctorWithdrawalOrders []*model.Do
PayTime: payTime, PayTime: payTime,
InquiryNo: inquiryNo, InquiryNo: inquiryNo,
EscrowTradeNo: escrowTradeNo, EscrowTradeNo: escrowTradeNo,
InquiryStatus: inquiryStatus,
AmountTotal: amountTotal, AmountTotal: amountTotal,
CouponAmountTotal: couponAmountTotal, CouponAmountTotal: couponAmountTotal,
PaymentAmountTotal: paymentAmountTotal, PaymentAmountTotal: paymentAmountTotal,