heyuntao
2023-05-05 cc09b6fe6ffac34a4eeeb26d313b187713cae0de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using CommonUtil;
using CommonUtil.RabbitMQ;
using Operater.DAL;
using Operater.DTO.System;
using Operater.Service.System;
using System;
using static CommonUtil.RabbitMQ.MQClientFullChannel;
 
namespace ProductDistribution
{
    class Program
    {
 
        public static TokenCach _alibabaToken = new TokenCach();
        /// <summary>
        /// 店铺铺货
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
             Console.Title = "铺货处理";
            //string str = "{\"TaskId\":\"111\"}";
            //HandleExecute(str);
            MainMethod();
        }
 
        public static void HandleExecute(string message)
        {
            Console.WriteLine(message);
            try
            {
                if (_alibabaToken.IsNull() || _alibabaToken.AliToken.IsNullOrEmpty())
                {
                    var appSet = new AppsetDAL().ListGet(t => t.Id != null);
                    _alibabaToken.AliToken = appSet[0].AlibabaToken;
                    _alibabaToken.ExpreTime = DateTime.Now.AddHours(1);
                    _alibabaToken.YzToken = appSet[0].YzToken;
                }
                ItemDistributionService itemDistribution = new ItemDistributionService();
                ProductDistributionMq msg = JSONUtil.JsonToObject<ProductDistributionMq>(message);
                //获取任务信息
                //var taskList = new DistributionHistoryDAL().ListGet(t => t.TaskId == msg.TaskId && t.DisStatus == 0);
                var taskList = new DistributionHistoryDAL().ListGet(t => t.TaskId == msg.TaskId && t.DisStatus == 0);
                if (taskList.IsNull() || taskList.Count == 0)
                {
                    Console.WriteLine("未获取到可执行商品");
                    LogUtil.Info($"未获取到可执行商品:{msg.TaskId}", "铺货日志");
                    return;
                }
                Console.WriteLine($"共获取到{taskList.Count}条任务");
                foreach (var pidItem in taskList)
                {
                    try
                    {
                        bool res = itemDistribution.RunDistribution(pidItem, _alibabaToken.AliToken, _alibabaToken.YzToken).Result;
                        Console.WriteLine("执行:" + (res ? "成功" : "失败"));
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine($"执行错误:{e.ToString()}");
                        LogUtil.Info($"循环错误({pidItem.ProductId}):{e.ToString()}", "铺货error");
                    }
                }
                Console.WriteLine("本轮任务执行完成!");
            }
            catch (Exception e)
            {
                Console.WriteLine($"主逻辑错误:{e.ToString()}");
                LogUtil.Info($"主逻辑错误:{e.ToString()}", "铺货error");
            }
        }
 
        #region 主方法
        private static void MainMethod()
        {
            try
            {
                MQClientFullChannel mQClientFullChannel = new MQClientFullChannel("product_distribution");
                mQClientFullChannel.reConnectTime = 8000;
                mQClientFullChannel.OnMessage += OnMessage;
                mQClientFullChannel.OnConnected += OnConnected;
                mQClientFullChannel.OnDisConnected += OnDisConnected;
                mQClientFullChannel.Connect(0);
                Console.WriteLine("工具已正常开启--");
                Console.ReadLine();
            }
            catch
            {
 
            }
        }
 
        public static void OnMessage(EventMessageResultCluster result)
        {
 
            HandleExecute(result.Content);
 
        }
 
        public static void OnConnected(MQClientParam param)
        {
           // Console.WriteLine(JSONUtil.ObjectToJson(param) + " --> 链接成功");
        }
 
        public static void OnDisConnected(MQClientParam param)
        {
           // Console.WriteLine(JSONUtil.ObjectToJson(param) + " --> 链接关闭");
        }
        #endregion
 
        public class TokenCach
        {
            public string AliToken { get; set; }
 
            public DateTime ExpreTime { get; set; }
 
            public string YzToken { get; set; }
        }
    }
}