From a37663a122cafccb202fa98c9a29538944189109 Mon Sep 17 00:00:00 2001 From: jiangyong27 Date: Sun, 9 Apr 2023 17:48:01 +0800 Subject: [PATCH] bidprice5 --- worker/dadi/dadi_processor.go | 109 +++++++++++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 2 deletions(-) diff --git a/worker/dadi/dadi_processor.go b/worker/dadi/dadi_processor.go index 5b23d13..de3c6c0 100644 --- a/worker/dadi/dadi_processor.go +++ b/worker/dadi/dadi_processor.go @@ -2,6 +2,7 @@ package dadi import ( "encoding/json" + "errors" "film/base/httputil" "film/model" "film/worker/common" @@ -324,6 +325,72 @@ func (p *Processor) getUserPrice(cinema *Cinema, filmName, showTime string) (*Fi return nil, fmt.Errorf("[%s][%s][%s][%s] not exist", cinema.Name, cinema.Address, filmName, showTime) } +func (p *Processor) getUserCard(cinema *Cinema) ([]*UserCard, *UserCard, error) { + reqUrl := "https://appapi.dadicinema.com/app-web/v1/user/cards" + + body, err := httputil.HttpPostForm(reqUrl, p.getBaseHeader(), p.getBaseParam(cinema)) + if err != nil { + log.Errorf("httpPost url[%s] error : %s", reqUrl, err.Error()) + return nil, nil, err + } + data, err := p.checkError(body) + if err != nil { + return nil, nil, err + } + + allCards := make([]*UserCard, 0) + maxBlance := int64(-1000000) + var defCard *UserCard = nil + for _, c := range cast.ToSlice(data) { + card := cast.ToStringMap(c) + + uCard := new(UserCard) + uCard.CardNo = cast.ToString(card["cardNo"]) + uCard.CardName = cast.ToString(card["cardName"]) + uCard.Balance = int64(cast.ToFloat64(card["amount"]) * 100) + uCard.Expire = cast.ToInt64(card["cardName"]) / 1000 + allCards = append(allCards, uCard) + if uCard.Balance > maxBlance { + defCard = uCard + maxBlance = uCard.Balance + } + } + + return allCards, defCard, nil +} + +func (p *Processor) payOrder(cinema *Cinema, billCode, cardNo string, amount int64) error { + baseReq := p.getBaseParam(cinema) + baseReq["businessSystemCode"] = "c_app" + baseReq["ip"] = "127.0.0.1" + baseReq["amount"] = fmt.Sprintf("%.2f", float64(amount)/100) + baseReq["orderRemark"] = "{\"saleBillUid\":\"\"}" + baseReq["businessSystemName"] = "C_APP" + baseReq["goodBody"] = "APP" + baseReq["orderType"] = "0" + baseReq["payChannelName"] = "大地自营-大地" + baseReq["payChannel"] = "DDZY-DD" + baseReq["payTerminal"] = "APP" + baseReq["businessSystemMainOrderNumber"] = billCode + baseReq["businessSystemFlowNumber"] = cast.ToString(goutil.GetBigID(0, 0)) + baseReq["cardNumber"] = cardNo + baseReq["payWay"] = "MEMBER_CARD_PAY" + reqBody, _ := json.Marshal(baseReq) + + reqUrl := "https://appapi.dadicinema.com/app-web/v1/web/order/confirmPay" + body, err := httputil.HttpPostJson(reqUrl, nil, p.getBaseHeader(), reqBody) + if err != nil { + log.Errorf("httpPost url[%s] error : %s", reqUrl, err.Error()) + return err + } + _, err = p.checkError(body) + if err != nil { + log.Errorf("request : %s", goutil.EncodeJSON(baseReq)) + return err + } + return nil +} + func (p *Processor) CheckOrder(order *model.Order) (*common.CheckInfo, error) { cinema, err := p.getCinema(order.CityName, order.CinemaName) if err != nil { @@ -364,10 +431,48 @@ func (p *Processor) CheckOrder(order *model.Order) (*common.CheckInfo, error) { return result, nil } -func (p *Processor) CreateOrder(*model.Order) (*common.OrderInfo, error) { - return nil, nil +func (p *Processor) CreateOrder(order *model.Order) (*common.OrderInfo, error) { + cinema, err := p.getCinema(order.CityName, order.CinemaName) + if err != nil { + return nil, err + } + + price, err := p.getUserPrice(cinema, order.MovieName, goutil.TimeToDateTime(order.ShowTime)) + if err != nil { + return nil, err + } + + seatGoods, err := p.getSeatGoods(cinema, price.SessionId, order.Seats) + if err != nil { + return nil, err + } + previewOrder, err := p.prevOrderInfo(cinema, seatGoods) + if err != nil { + return nil, err + } + _, defautCard, err := p.getUserCard(cinema) + if err != nil { + return nil, err + } + if defautCard == nil { + return nil, errors.New("No UserCard") + } + if err := p.payOrder(cinema, previewOrder.BillCode, defautCard.CardNo, previewOrder.TotalRealPrice); err != nil { + return nil, err + } + orderInfo := new(common.OrderInfo) + return orderInfo, nil } +func (p *Processor) getOrderDetail(cinema *Cinema, orderNo string) { + return +} + +func (p *Processor) refundOrder(cinema *Cinema, orderNo string) error { + //baseReq := p.getBaseParam(cinema) + //baseReq["orderNo"] = orderNo + return nil +} func (p *Processor) CancelOrder(order *model.Order, checkInfo *common.CheckInfo) error { cinema, err := p.getCinema(order.CityName, order.CinemaName) if err != nil {