package main

import (
	"flag"
	_ "fmt"
	_ "github.com/ichunt2019/go-msgserver/utils/rabbitmq"
	"github.com/ichunt2019/go-rabbitmq/utils/rabbitmq"
	"github.com/ichunt2019/logger"
	"go-queue-server/dal/db"
	"go-queue-server/order/sendPurchaseEmail/sendEmail"
	"go-queue-server/util"
	_ "sync"
	_ "time"
)





type RecvPro struct {

}

//// 实现消费者 消费消息失败 自动进入延时尝试  尝试3次之后入库db
func (t *RecvPro) Consumer(dataByte []byte) error {
	logger.Info(string(dataByte))
	err := sendEmail.SendPurchaseEmail(string(dataByte))
	////return errors.New("顶顶顶顶")
	return err
}

//消息已经消费3次 失败了 请进行处理
func (t *RecvPro) FailAction(dataByte []byte) error {
	logger.Error("任务处理失败了,我要进入db日志库了")
	logger.Error("任务处理失败了,发送钉钉消息通知主人")
	logger.Error(string(dataByte))
	return nil
}


func initDb(dns string) (err error) {
	err = db.Init(dns)
	if err != nil {
		return
	}

	return
}

var ConfigDir string
var LogDir string

// 解析命令行参数
func initArgs() {
	// worker -config ./worker.json
	// worker -h
	flag.StringVar(&ConfigDir, "configDir", "", "配置文件")
	flag.StringVar(&LogDir, "logDir", "", "日志目录")
	flag.Parse()
}


func main() {

	initArgs()

	//初始化配置文件
	util.Init(ConfigDir)

	//
	logConfig := make(map[string]string)
	logConfig["log_path"] = LogDir+"order/orderSendPurchaseEmail"
	logConfig["log_chan_size"] = "1000"
	logger.InitLogger("file",logConfig)
	logger.Init()
	//初始化db
	initDb(util.Configs.Liexin_databases.Dns)

	t := &RecvPro{}

	//queueExchange := &rabbitmq.QueueExchange{
	//	util.Configs.Rabbitmq_ichunt.QueueName,
	//	util.Configs.Rabbitmq_ichunt.RoutingKey,
	//	util.Configs.Rabbitmq_ichunt.Exchange,
	//	util.Configs.Rabbitmq_ichunt.Type,
	//	util.Configs.Rabbitmq_ichunt.Dns,
	//}

	//for i:=0;i<= 100;i++{
	//	logger.Debug("Debug记录日志555555555555555555555555555555")
	//	logger.Trace("Trace记录日志555555555555555555555555555555")
	//	logger.Info("Info记录日志555555555555555555555555555555")
	//	logger.Warn("Warn记录日志555555555555555555555555555555")
	//	logger.Error("Error记录日志555555555555555555555555555555")
	//	logger.Fatal("Fatal记录日志555555555555555555555555555555")
	//}

	//for{
	//	var wg sync.WaitGroup
	//	fmt.Println("开始执行任务....")
	//	for i := 0;i<3;i++{
	//		wg.Add(1)
	//		go func(wg *sync.WaitGroup){
	//			mq := rabbitmq.New(queueExchange)
	//			mq.RegisterReceiver(t)
	//			err :=mq.Start()
	//			if err != nil{
	//
	//				fmt.Println(err)
	//			}
	//			wg.Done()
	//		}(&wg)
	//	}
	//	wg.Wait()
	//	fmt.Println("执行任务完成....")
	//	time.Sleep(time.Microsecond*10)
	//}

	/*

	{"data":[{"orderNum":"ZTY-HK202004150001","goods":"RC0402JR-070RL","purchasingPrice":"0.001300","unitPrice":"0.001300","brand":"Yageo","nums":"10472","currency":"\u7f8e\u5143","totalPrice":"13.61","remarks":"xxx","material":"E6nwafP+T1+NIcwhjrlPh4iIKlg=","purchasing":"\u5e73\u53f0","projectId":1,"deliveryTime":"v001","send_email":"pingtai@ichunt.com"}],"toUser":["pingtai@ichunt.com"],"ccUser":["zgj@ichunt.com","admin@ichunt.com","long@ichunt.com","zjl@ichunt.com"],"combined":"13.61","order_amount":"13.61","date":"2020-04-17","kefu_remark":"","id":"\u5f20\u5a77\u7389","order_id":3644,"operator_id":1000,"operator_event":"\u53d1\u9001\u90ae\u4ef6\u6210\u529f\uff0c\u6536\u4ef6\u4eba\u90ae\u7bb1\uff1a[\"pingtai@ichunt.com\"]\uff0c\u6284\u9001\u4eba\u90ae\u7bb1\uff1a[\"zgj@ichunt.com\",\"admin@ichunt.com\",\"long@ichunt.com\",\"zjl@ichunt.com\"]"}
	 */

	rabbitmq.Recv(rabbitmq.QueueExchange{
		util.Configs.Rabbitmq_ichunt.QueueName,
		util.Configs.Rabbitmq_ichunt.RoutingKey,
		util.Configs.Rabbitmq_ichunt.Exchange,
		util.Configs.Rabbitmq_ichunt.Type,
		util.Configs.Rabbitmq_ichunt.Dns,
	},t,3)
}