This commit is contained in:
苏尹岚
2020-09-04 16:11:12 +08:00
parent be973b05e7
commit 1929b24bed
3 changed files with 57 additions and 17 deletions

View File

@@ -28,6 +28,12 @@ var (
} }
) )
type DiscountCard struct {
ID int `orm:"column(id)" json:"id"`
PicePercentage int `json:"pricePercentage"`
Price int `json:"price"`
}
type User struct { type User struct {
ModelIDCULD ModelIDCULD
UserID string `orm:"size(48);column(user_id)" json:"userID" compact:"userID"` // 内部唯一标识 UserID string `orm:"size(48);column(user_id)" json:"userID" compact:"userID"` // 内部唯一标识
@@ -203,6 +209,7 @@ type UserMember struct {
MemberType int `json:"memberType"` //会员类型, 1为折扣卡 MemberType int `json:"memberType"` //会员类型, 1为折扣卡
MemberTypeID int `orm:"column(member_type_id)" json:"memberTypeID"` //会员类型ID折扣卡的话代表几档 MemberTypeID int `orm:"column(member_type_id)" json:"memberTypeID"` //会员类型ID折扣卡的话代表几档
EndAt time.Time `json:"endAt"` //会员过期时间 EndAt time.Time `json:"endAt"` //会员过期时间
IsPay int `json:"isPay"`
} }
func (*UserMember) TableUnique() [][]string { func (*UserMember) TableUnique() [][]string {

View File

@@ -322,7 +322,7 @@ func Pay4Order(ctx *jxcontext.Context, orderID int64, payType int, vendorPayType
err = dao.CreateEntity(dao.GetDB(), orderPay) err = dao.CreateEntity(dao.GetDB(), orderPay)
} }
case model.PayTypeTL: case model.PayTypeTL:
if orderPay, err = pay4OrderByTL(ctx, order, vendorPayType); err == nil && orderPay != nil { if orderPay, err = pay4OrderByTL(ctx, order, payType, vendorPayType); err == nil && orderPay != nil {
dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName()) dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName())
err = dao.CreateEntity(dao.GetDB(), orderPay) err = dao.CreateEntity(dao.GetDB(), orderPay)
} }
@@ -339,7 +339,7 @@ func Pay4Order(ctx *jxcontext.Context, orderID int64, payType int, vendorPayType
ActualPayPrice: priceDefendOrders[0].ActualPayPrice, ActualPayPrice: priceDefendOrders[0].ActualPayPrice,
VendorID: model.VendorIDJX, VendorID: model.VendorIDJX,
} }
if orderPay, err = pay4OrderByTL(ctx, order2, vendorPayType); err == nil && orderPay != nil { if orderPay, err = pay4OrderByTL(ctx, order2, payType, vendorPayType); err == nil && orderPay != nil {
dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName()) dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName())
err = dao.CreateEntity(dao.GetDB(), orderPay) err = dao.CreateEntity(dao.GetDB(), orderPay)
} }
@@ -349,15 +349,34 @@ func Pay4Order(ctx *jxcontext.Context, orderID int64, payType int, vendorPayType
func Pay4User(ctx *jxcontext.Context, thingID, payType int, vendorPayType string) (orderPay *model.OrderPay, err error) { func Pay4User(ctx *jxcontext.Context, thingID, payType int, vendorPayType string) (orderPay *model.OrderPay, err error) {
var ( var (
db = dao.GetDB() db = dao.GetDB()
order *model.GoodsOrder
dicountCards []*model.DiscountCard
vendorOrderID string
) )
switch payType { switch payType {
case model.PayTypeTL_DiscountCard: case model.PayTypeTL_DiscountCard:
dao.QueryConfigs(db, "会员折扣卡", model.ConfigTypeDiscountCard, "") if configList, err := dao.QueryConfigs(db, "会员折扣卡", model.ConfigTypeDiscountCard, ""); err == nil {
// if orderPay, err = pay4UserByTL(ctx, thingID, vendorPayType); err == nil && orderPay != nil { err = jxutils.Strings2Objs(configList[0], &dicountCards)
// dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName()) discountCard := findDiscountCard(dicountCards, thingID)
// err = dao.CreateEntity(dao.GetDB(), orderPay) vendorOrderID = utils.Int64ToStr(GenOrderNo(ctx))
// } order = &model.GoodsOrder{
VendorOrderID: vendorOrderID,
ActualPayPrice: int64(discountCard.Price),
VendorID: model.VendorIDJX,
}
if orderPay, err = pay4OrderByTL(ctx, order, payType, vendorPayType); err == nil && orderPay != nil {
dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName())
err = dao.CreateEntity(dao.GetDB(), orderPay)
}
userMember := &model.UserMember{
VendorOrderID: vendorOrderID,
UserID: ctx.GetUserID(),
MemberType: ,
}
dao.WrapAddIDCULDEntity(userMember, ctx.GetUserName())
}
default: default:
err = fmt.Errorf("支付方式:%d当前不支持", payType) err = fmt.Errorf("支付方式:%d当前不支持", payType)
} }
@@ -368,6 +387,15 @@ func time2ShortTimeStr(t time.Time) string {
return t.Format("15:04") return t.Format("15:04")
} }
func findDiscountCard(dicountCards []*model.DiscountCard, thingID int) (dicountCard *model.DiscountCard) {
for _, v := range dicountCards {
if v.ID == thingID {
return v
}
}
return dicountCard
}
func GetAvailableDeliverTime(ctx *jxcontext.Context, storeID int) (deliverTimerList []*DeliveryDayTimeInfo, err error) { func GetAvailableDeliverTime(ctx *jxcontext.Context, storeID int) (deliverTimerList []*DeliveryDayTimeInfo, err error) {
db := dao.GetDB() db := dao.GetDB()
storeDetail, err := dao.GetStoreDetail(db, storeID, model.VendorIDJX) storeDetail, err := dao.GetStoreDetail(db, storeID, model.VendorIDJX)
@@ -461,11 +489,16 @@ func OnPayFinished(orderPay *model.OrderPay) (err error) {
// } // }
} }
} else { } else {
priceDefendOrders, _ := dao.GetPriceDefendOrder(dao.GetDB(), orderPay.VendorOrderID, nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, 0, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false) switch orderPay.PayType {
if len(priceDefendOrders) > 0 { case model.PayTypeTL_DiscountCard:
priceDefendOrders[0].IsPay = model.YES
dao.UpdateEntity(dao.GetDB(), priceDefendOrders[0], "IsPay") default:
err = nil priceDefendOrders, _ := dao.GetPriceDefendOrder(dao.GetDB(), orderPay.VendorOrderID, nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, 0, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false)
if len(priceDefendOrders) > 0 {
priceDefendOrders[0].IsPay = model.YES
dao.UpdateEntity(dao.GetDB(), priceDefendOrders[0], "IsPay")
err = nil
}
} }
} }
return err return err

View File

@@ -18,7 +18,7 @@ import (
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
) )
func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, vendorPayType string) (orderPay *model.OrderPay, err error) { func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, payType int, vendorPayType string) (orderPay *model.OrderPay, err error) {
// if order.FromStoreID != 0 { // if order.FromStoreID != 0 {
// result, _ := orderman.GetMatterStoreOrderCount(nil, order.FromStoreID) // result, _ := orderman.GetMatterStoreOrderCount(nil, order.FromStoreID)
// if !result.Flag { // if !result.Flag {
@@ -57,7 +57,7 @@ func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, vendorPayTyp
prePayID := result2.Package[strings.LastIndex(result2.Package, "=")+1 : len(result2.Package)] prePayID := result2.Package[strings.LastIndex(result2.Package, "=")+1 : len(result2.Package)]
orderPay = &model.OrderPay{ orderPay = &model.OrderPay{
PayOrderID: param.Reqsn, PayOrderID: param.Reqsn,
PayType: model.PayTypeTL, PayType: payType,
VendorPayType: vendorPayType, VendorPayType: vendorPayType,
TransactionID: result.TrxID, TransactionID: result.TrxID,
VendorOrderID: order.VendorOrderID, VendorOrderID: order.VendorOrderID,
@@ -87,11 +87,11 @@ func OnTLPayCallback(call *tonglianpayapi.CallBackResult) (err error) {
func onTLpayFinished(call *tonglianpayapi.CallBackResult) (err error) { func onTLpayFinished(call *tonglianpayapi.CallBackResult) (err error) {
orderPay := &model.OrderPay{ orderPay := &model.OrderPay{
PayOrderID: call.CusorderID, PayOrderID: call.CusorderID,
PayType: model.PayTypeTL, // PayType: model.PayTypeTL,
} }
orderPay.DeletedAt = utils.DefaultTimeValue orderPay.DeletedAt = utils.DefaultTimeValue
db := dao.GetDB() db := dao.GetDB()
if err = dao.GetEntity(db, orderPay, "PayOrderID", "PayType", "DeletedAt"); err == nil { if err = dao.GetEntity(db, orderPay, "PayOrderID", "DeletedAt"); err == nil {
if orderPay.Status != 0 { if orderPay.Status != 0 {
globals.SugarLogger.Debugf("already pay msg:%s, err:%v", utils.Format4Output(call, true), err) globals.SugarLogger.Debugf("already pay msg:%s, err:%v", utils.Format4Output(call, true), err)
return err return err