using System; using System.Collections.Generic; using System.Linq; using MySystem.PxcModels; using Library; using LitJson; namespace MySystem { public class AlipayPayBack2Service { public readonly static AlipayPayBack2Service Instance = new AlipayPayBack2Service(); private AlipayPayBack2Service() { } public void Start(JobMqMsg jobInfo) { string content = ""; try { dosomething(); string Msg = "success"; jobInfo.Status = Msg == "success" ? 1 : 0; jobInfo.Msg = Msg == "success" ? "执行完成" : Msg; RabbitMQClient.Instance.SendMsg(Newtonsoft.Json.JsonConvert.SerializeObject(jobInfo), "PublicBack"); } catch (Exception ex) { if (!string.IsNullOrEmpty(content)) { Dictionary data = new Dictionary(); data.Add("ErrTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); data.Add("ErrMsg", ex.ToString()); function.WriteLog(Newtonsoft.Json.JsonConvert.SerializeObject(data), "public_err"); } else { function.WriteLog(DateTime.Now.ToString() + ":" + ex.ToString(), "public_service"); } } } private void dosomething() { bool op = true; while (op) { string content = RedisDbconn.Instance.RPop("PayCallBack2"); if (!string.IsNullOrEmpty(content)) { JsonData jsonObj = JsonMapper.ToObject(content); string OrderNo = jsonObj["out_trade_no"].ToString(); string TradeNo = jsonObj["transaction_id"].ToString(); decimal TotalFee = decimal.Parse(function.CheckNum(jsonObj["total_fee"].ToString())); WebCMSEntities db = new WebCMSEntities(); OrderForNo forNo = db.OrderForNo.FirstOrDefault(m => m.OrderNo == OrderNo); if (forNo != null) { string[] ids = forNo.OrderIds.Split(','); foreach (string idString in ids) { int OrderId = int.Parse(idString); Orders order = db.Orders.FirstOrDefault(m => m.Id == OrderId && m.Status == 0); if (order != null) { order.Status = 1; order.PayDate = DateTime.Now; order.PayStatus = 1; db.SaveChanges(); BothdisDbconn.Instance.SendMq("Pop:Orders", order); } } } db.Dispose(); } else { op = false; } } } } }