using System; using System.Collections.Generic; using System.Linq; using MySystem.PxcModels; using Library; using LitJson; namespace MySystem { public class AlipayPayBackService { public readonly static AlipayPayBackService Instance = new AlipayPayBackService(); private AlipayPayBackService() { } 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("PayCallBack"); 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(); ConsumerOrderForNo forNo = db.ConsumerOrderForNo.FirstOrDefault(m => m.OrderNo == OrderNo); if (forNo != null) { ConsumerOrders order = db.ConsumerOrders.FirstOrDefault(m => m.Id == forNo.OrderIds && m.Status == 0); if (order != null) { order.Status = 1; order.UpdateDate = DateTime.Now; order.PayMoney = order.PayMoney; order.MaxDivi = order.MaxDivi; db.SaveChanges(); RedisDbconn.Instance.AddList("ConsumerOrdersStat", order.Id); RedisDbconn.Instance.AddList("ConsumerOrders:Divi:List", order.Id.ToString()); RedisDbconn.Instance.AddRightList("ConsumerOrders:Divi:" + order.MerchantId, order); // ConsumerOrdersStatService.Instance.Stat(order); } } db.Dispose(); } else { op = false; } } } } }