123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- using System;
- using System.Collections.Generic;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Linq;
- using Microsoft.Extensions.Hosting;
- using MySystem;
- using MySystem.Models;
- using Library;
- using LitJson;
- public class PublicService : BackgroundService
- {
- protected override async Task ExecuteAsync(CancellationToken stoppingToken)
- {
- while (!stoppingToken.IsCancellationRequested)
- {
- ProgressStart();
- int timespan = 1;
- await Task.Delay(timespan);
- }
- }
- private void ProgressStart()
- {
- List<Brand> BrandList = RedisDbconn.Instance.GetList<Brand>("brands", 1, 100);
- foreach(Brand brand in BrandList)
- {
- Dictionary<string, string> data = new Dictionary<string, string>();
- try
- {
- data = RedisDbconn.Instance.RPop<Dictionary<string, string>>(brand.QueueName);
- if (data != null)
- {
- DoQueue(data["Content"], brand);
- }
- }
- catch (Exception ex)
- {
- if (!data.ContainsKey("ErrNum"))
- {
- data.Add("ErrTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
- data.Add("ErrMsg", ex.ToString());
- data.Add("ErrNum", "1");
- RedisDbconn.Instance.AddList(brand.QueueName + "_err", data);
- }
- else
- {
- int ErrNum = int.Parse(data["ErrNum"]) + 1;
- data["ErrTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- data["ErrMsg"] = ex.ToString();
- data["ErrNum"] = ErrNum.ToString();
- if (ErrNum > 2)
- {
- RedisDbconn.Instance.AddList(brand.QueueName + "_dead", data);
- }
- else
- {
- RedisDbconn.Instance.AddList(brand.QueueName + "_err", data);
- }
- }
- }
- }
- }
- // private void ProgressStart()
- // {
- // List<Brand> BrandList = RedisDbconn.Instance.GetList<Brand>("brands", 1, 100);
- // Parallel.ForEach(BrandList, brand =>
- // {
- // Dictionary<string, string> data = new Dictionary<string, string>();
- // try
- // {
- // data = RedisDbconn.Instance.RPop<Dictionary<string, string>>(brand.QueueName);
- // if (data != null)
- // {
- // DoQueue(data["Content"], brand);
- // }
- // }
- // catch (Exception ex)
- // {
- // if (!data.ContainsKey("ErrNum"))
- // {
- // data.Add("ErrTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
- // data.Add("ErrMsg", ex.ToString());
- // data.Add("ErrNum", "1");
- // RedisDbconn.Instance.AddList(brand.QueueName + "_err", data);
- // }
- // else
- // {
- // int ErrNum = int.Parse(data["ErrNum"]) + 1;
- // data["ErrTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
- // data["ErrMsg"] = ex.ToString();
- // data["ErrNum"] = ErrNum.ToString();
- // if (ErrNum > 2)
- // {
- // RedisDbconn.Instance.AddList(brand.QueueName + "_dead", data);
- // }
- // else
- // {
- // RedisDbconn.Instance.AddList(brand.QueueName + "_err", data);
- // }
- // }
- // }
- // });
- // }
- //要执行的方法
- public void DoQueue(string data, Brand brand)
- {
- //数据开始入库
- JsonData jsonObj = JsonMapper.ToObject(data);
- string fields = "";
- string fieldvals = "";
- foreach (FieldRelationTable field in brand.FieldRelation)
- {
- string fType = field.TargetFieldType;
- string val = jsonObj[field.SourceFieldName].ToString();
- fields += field.TargetFieldName + ",";
- if (fType == "int")
- {
- fieldvals += int.Parse(function.CheckInt(val)) + ",";
- }
- else if (fType == "decimal")
- {
- fieldvals += decimal.Parse(function.CheckNum(val)) + ",";
- }
- else if (fType == "datetime")
- {
- fieldvals += "'" + DateTime.Parse(val) + "',";
- }
- else
- {
- fieldvals += "'" + val + "',";
- }
- }
- fields = fields.TrimEnd(',');
- fieldvals = fieldvals.TrimEnd(',');
- string sql = "insert into " + brand.TargetTableName + " (" + fields + ") values (" + fieldvals + ")";
- dbconn.op(sql);
-
- }
- }
|