mirror of http://gitlab.batiao8.com/yic/film.git
102 lines
3.5 KiB
Go
102 lines
3.5 KiB
Go
|
package worker
|
|||
|
|
|||
|
import (
|
|||
|
"film/base/util"
|
|||
|
"film/config"
|
|||
|
"film/model"
|
|||
|
"film/worker/dadi"
|
|||
|
"film/worker/haha"
|
|||
|
"fmt"
|
|||
|
log "github.com/sirupsen/logrus"
|
|||
|
"github.com/smbrave/goutil"
|
|||
|
"gitlab.com/jiangyong27/gobase/wxapi"
|
|||
|
"strings"
|
|||
|
"time"
|
|||
|
)
|
|||
|
|
|||
|
type Worker struct {
|
|||
|
qyClient *wxapi.WxQiye
|
|||
|
}
|
|||
|
|
|||
|
func (w *Worker) initQyWeixin() {
|
|||
|
cfg := config.GetConfig()
|
|||
|
w.qyClient = wxapi.NewQiye(&wxapi.QiyeConfig{
|
|||
|
Corpid: cfg.Weixin.QiyeAppid,
|
|||
|
Secret: cfg.Weixin.Qiyesecret,
|
|||
|
Sender: cfg.Weixin.QiyeAgent,
|
|||
|
})
|
|||
|
}
|
|||
|
func (w *Worker) Run() {
|
|||
|
w.initQyWeixin()
|
|||
|
cfg := config.GetConfig()
|
|||
|
newOrderChan := make(chan *model.Order, 100000)
|
|||
|
updateOrderChan := make(chan *model.Order, 100000)
|
|||
|
hahaSyncer := haha.NewSyncOrder(&haha.SyncOrderConfig{
|
|||
|
Token: cfg.Film.HahaToken,
|
|||
|
NewOrder: newOrderChan,
|
|||
|
UpdateOrder: updateOrderChan,
|
|||
|
})
|
|||
|
|
|||
|
hahaSyncer.Sync()
|
|||
|
|
|||
|
//order, _ := model.GetOrder(590623)
|
|||
|
//newOrderChan <- order
|
|||
|
|
|||
|
//hahaProcessor := haha.NewProcessor(&haha.ProcessorConfig{Token: cfg.Film.HahaToken})
|
|||
|
dadiProcessor, err := dadi.NewProcessor(&dadi.ProcessorConfig{Token: cfg.Film.DadiToken})
|
|||
|
if err != nil {
|
|||
|
panic(err)
|
|||
|
}
|
|||
|
for {
|
|||
|
select {
|
|||
|
case order := <-newOrderChan:
|
|||
|
if order.IsSeat == 2 || order.IsSeat == 1 {
|
|||
|
w.qyClient.SendText([]string{"jiangyong"}, order.CinemaName+":"+order.MovieName)
|
|||
|
}
|
|||
|
if !strings.Contains(order.CinemaName, "大地影院") {
|
|||
|
continue
|
|||
|
}
|
|||
|
checkInfo, err := dadiProcessor.CheckOrder(order)
|
|||
|
if err != nil {
|
|||
|
log.Errorf("check orrder[%s] error : %s", order.OrderId, err.Error())
|
|||
|
continue
|
|||
|
}
|
|||
|
|
|||
|
//hahaProcessor.BidPrice(order.Id, checkInfo.UnitPrice)
|
|||
|
go func() {
|
|||
|
time.Sleep(60 * time.Second)
|
|||
|
if err := dadiProcessor.CancelOrder(order, checkInfo); err != nil {
|
|||
|
log.Errorf("cancel order[%s] error[%s]", order.OrderId, err.Error())
|
|||
|
}
|
|||
|
}()
|
|||
|
|
|||
|
// 发送信息
|
|||
|
message := make([]string, 0)
|
|||
|
message = append(message, "【哈哈票订单信息】")
|
|||
|
message = append(message, fmt.Sprintf("城市:%s", order.CityName))
|
|||
|
message = append(message, fmt.Sprintf("影院:%s", order.CinemaName))
|
|||
|
message = append(message, fmt.Sprintf("影厅:%s", order.Ting))
|
|||
|
message = append(message, fmt.Sprintf("影片:%s", order.MovieName))
|
|||
|
message = append(message, fmt.Sprintf("座位:%s,%s,%s", order.Seats,
|
|||
|
goutil.If(order.IsSeat == 3, "可以调座", "不可调座"),
|
|||
|
goutil.If(order.LoverSeat == 1, "情侣座", "普通座")))
|
|||
|
message = append(message, fmt.Sprintf("原价:%.2f", float64(order.MaoyanPrice)/100))
|
|||
|
message = append(message, fmt.Sprintf("编号:%s", order.OrderId))
|
|||
|
message = append(message, fmt.Sprintf("总金额:%.2f(%d)", float64(order.TotalPrice)/100, order.SeatNum))
|
|||
|
message = append(message, fmt.Sprintf("报价范围:%.2f~%.2f", float64(order.MinPrice)/100, float64(order.MaxPrice)/100))
|
|||
|
message = append(message, fmt.Sprintf("订单时间:%s", time.Unix(order.PayTime, 0).Format("2006-01-02 15:04")))
|
|||
|
message = append(message, fmt.Sprintf("放映时间:%s", time.Unix(order.ShowTime, 0).Format("2006-01-02 15:04")))
|
|||
|
message = append(message, "\n")
|
|||
|
message = append(message, "【大地订单信息】")
|
|||
|
message = append(message, fmt.Sprintf("单价:%s", util.MoneyFen(checkInfo.UnitPrice)))
|
|||
|
message = append(message, fmt.Sprintf("总价:%s", util.MoneyFen(checkInfo.TotalPrice)))
|
|||
|
if err := w.qyClient.SendText([]string{"jiangyong"}, strings.Join(message, "\n")); err != nil {
|
|||
|
log.Errorf("send message error : %s", err.Error())
|
|||
|
}
|
|||
|
case updateOrder := <-updateOrderChan:
|
|||
|
log.Debugf("update:", goutil.EncodeJSON(updateOrder))
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|