/// <summary> /// 获取订单退款失败原因 /// </summary> /// <param name="orderId"></param> /// <returns></returns> public ActionResult GetOutOrderFailRemark(int orderId = 0) { Return_Msg returnData = new Return_Msg(); try { PlatChildGoodsOrder order = PlatChildGoodsOrderBLL.SingleModel.GetModel(orderId); CityMorders ctiyMorder = new CityMordersBLL().GetModel(order.OrderId); ReFundResult outOrderRsult = RefundResultBLL.SingleModel.GetModelByTradeno(ctiyMorder.trade_no); if (outOrderRsult == null) { returnData.Msg = "未知原因!"; } else { returnData.Msg = outOrderRsult.err_code_des ?? outOrderRsult.return_msg; returnData.isok = true; } } catch (Exception ex) { returnData.Msg = ex.Message; } return(Json(returnData)); }
///// <summary> ///// 跟进 退款状态 (退款是否成功) ///// </summary> ///// <returns></returns> public bool FoodUpdateReFundQueueState() { TransactionModel tranModel = new TransactionModel(); List <FoodGoodsOrder> itemList = FoodGoodsOrderBLL.SingleModel.GetList($" State = {(int)miniAppFoodOrderState.退款中} and outOrderDate <= (NOW()-interval 17 second) ", 1000, 1) ?? new List <FoodGoodsOrder>(); List <CityMorders> orderList = new List <CityMorders>(); List <ReFundResult> outOrderList = new List <ReFundResult>(); if (itemList.Any()) { orderList = _cityMordersBLL.GetList($" Id in ({string.Join(",", itemList.Select(x => x.OrderId))}) ", 1000, 1) ?? new List <CityMorders>(); if (orderList.Any()) { outOrderList = RefundResultBLL.SingleModel.GetList($" transaction_id in ('{string.Join("','", orderList.Select(x => x.trade_no))}') and retype = 1") ?? new List <ReFundResult>(); itemList.ForEach(x => { CityMorders curOrder = orderList.Where(y => y.Id == x.OrderId).FirstOrDefault(); if (curOrder != null) { //退款是排程处理,故无法确定何时执行退款,而现阶段退款操作成败与否都会记录在系统内 ReFundResult curOutOrder = outOrderList.Where(y => y.transaction_id == curOrder.trade_no).FirstOrDefault(); if (curOutOrder != null && curOutOrder.result_code.Equals("SUCCESS")) { x.State = (int)miniAppFoodOrderState.已退款; tranModel.Add(FoodGoodsOrderBLL.SingleModel.BuildUpdateSql(x, "State")); } else if (curOutOrder != null && !curOutOrder.result_code.Equals("SUCCESS")) { x.State = (int)miniAppFoodOrderState.退款失败; tranModel.Add(FoodGoodsOrderBLL.SingleModel.BuildUpdateSql(x, "State")); } } }); } } return(ExecuteTransactionDataCorect(tranModel.sqlArray, tranModel.ParameterArray)); }