diff --git a/business/model/user.go b/business/model/user.go index 27bd62ea6..0ea9091d1 100644 --- a/business/model/user.go +++ b/business/model/user.go @@ -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 { ModelIDCULD UserID string `orm:"size(48);column(user_id)" json:"userID" compact:"userID"` // 内部唯一标识 @@ -203,6 +209,7 @@ type UserMember struct { MemberType int `json:"memberType"` //会员类型, 1为折扣卡 MemberTypeID int `orm:"column(member_type_id)" json:"memberTypeID"` //会员类型ID,折扣卡的话代表几档 EndAt time.Time `json:"endAt"` //会员过期时间 + IsPay int `json:"isPay"` } func (*UserMember) TableUnique() [][]string { diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 389ca3740..40d71394a 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -322,7 +322,7 @@ func Pay4Order(ctx *jxcontext.Context, orderID int64, payType int, vendorPayType err = dao.CreateEntity(dao.GetDB(), orderPay) } 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()) err = dao.CreateEntity(dao.GetDB(), orderPay) } @@ -339,7 +339,7 @@ func Pay4Order(ctx *jxcontext.Context, orderID int64, payType int, vendorPayType ActualPayPrice: priceDefendOrders[0].ActualPayPrice, 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()) 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) { var ( - db = dao.GetDB() + db = dao.GetDB() + order *model.GoodsOrder + dicountCards []*model.DiscountCard + vendorOrderID string ) switch payType { case model.PayTypeTL_DiscountCard: - dao.QueryConfigs(db, "会员折扣卡", model.ConfigTypeDiscountCard, "") - // if orderPay, err = pay4UserByTL(ctx, thingID, vendorPayType); err == nil && orderPay != nil { - // dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName()) - // err = dao.CreateEntity(dao.GetDB(), orderPay) - // } + if configList, err := dao.QueryConfigs(db, "会员折扣卡", model.ConfigTypeDiscountCard, ""); err == nil { + err = jxutils.Strings2Objs(configList[0], &dicountCards) + discountCard := findDiscountCard(dicountCards, thingID) + 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: err = fmt.Errorf("支付方式:%d当前不支持", payType) } @@ -368,6 +387,15 @@ func time2ShortTimeStr(t time.Time) string { 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) { db := dao.GetDB() storeDetail, err := dao.GetStoreDetail(db, storeID, model.VendorIDJX) @@ -461,11 +489,16 @@ func OnPayFinished(orderPay *model.OrderPay) (err error) { // } } } else { - 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 + switch orderPay.PayType { + case model.PayTypeTL_DiscountCard: + + default: + 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 diff --git a/business/partner/purchase/jx/localjx/tonglianpay.go b/business/partner/purchase/jx/localjx/tonglianpay.go index 9e20ab298..933b368af 100644 --- a/business/partner/purchase/jx/localjx/tonglianpay.go +++ b/business/partner/purchase/jx/localjx/tonglianpay.go @@ -18,7 +18,7 @@ import ( "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 { // result, _ := orderman.GetMatterStoreOrderCount(nil, order.FromStoreID) // 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)] orderPay = &model.OrderPay{ PayOrderID: param.Reqsn, - PayType: model.PayTypeTL, + PayType: payType, VendorPayType: vendorPayType, TransactionID: result.TrxID, VendorOrderID: order.VendorOrderID, @@ -87,11 +87,11 @@ func OnTLPayCallback(call *tonglianpayapi.CallBackResult) (err error) { func onTLpayFinished(call *tonglianpayapi.CallBackResult) (err error) { orderPay := &model.OrderPay{ PayOrderID: call.CusorderID, - PayType: model.PayTypeTL, + // PayType: model.PayTypeTL, } orderPay.DeletedAt = utils.DefaultTimeValue 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 { globals.SugarLogger.Debugf("already pay msg:%s, err:%v", utils.Format4Output(call, true), err) return err