/// <summary> /// 批量更新大货订单 /// </summary> /// <param name="clientID"></param> /// <param name="token"></param> /// <param name="refreshToken"></param> /// <returns></returns> public static bool UpdateAliBulkOrders(string clientID, string token, string refreshToken, out List <string> failGodesCodes) { failGodesCodes = new List <string>(); #region 获取需要更新的阿里大货订单列表 List <AliOrderUpdateLog> logs = AliOrderBusiness.BaseBusiness.GetAliOrderUpdateLogs(EnumOrderType.LargeOrder, clientID); if (logs.Count == 0) { return(true); } List <AlibabaSdk.MutableOrder> list = new List <AlibabaSdk.MutableOrder>(); foreach (var log in logs) { AlibabaSdk.MutableOrder item = new AlibabaSdk.MutableOrder(); item.bulkGoodsCode = log.AliOrderCode; item.status = AlibabaSdk.HttpRequest.GetEnumDesc <AlibabaSdk.EnumOrderStageStatus>((AlibabaSdk.EnumOrderStageStatus)log.OrderStatus); item.statusDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); item.statusDesc = string.Empty; list.Add(item); } #endregion //分页更新 var totalCount = list.Count; int numb = 10; int size = (int)Math.Ceiling((decimal)totalCount / numb); for (int i = 1; i <= size; i++) { var qList = list.Skip((i - 1) * numb).Take(numb).ToList(); var batchUpdateResult = AlibabaSdk.OrderBusiness.BatchUpdateBulkList(qList, token); #region 批量更新打样订单失败 if (batchUpdateResult.error_code > 0) { //token失效 if (batchUpdateResult.error_code == 401) { //通过refreshToken获取用户token var tokenResult = AlibabaSdk.OauthBusiness.GetTokenByRefreshToken(refreshToken); if (!string.IsNullOrEmpty(tokenResult.access_token)) { token = tokenResult.access_token; AliOrderBusiness.BaseBusiness.UpdateAliOrderDownloadPlanToken(clientID, tokenResult.access_token, refreshToken); batchUpdateResult = AlibabaSdk.OrderBusiness.BatchUpdateBulkList(qList, token); } else { AliOrderBusiness.BaseBusiness.UpdateAliOrderDownloadPlanStatus(clientID, AlibabaSdk.AliOrderPlanStatus.RefreshTokenError, "error_code:" + tokenResult.error_code + " error_message:" + tokenResult.error_message); return(false); } } else { AliOrderBusiness.BaseBusiness.UpdateAliOrderDownloadPlanStatus(clientID, AlibabaSdk.AliOrderPlanStatus.Exception, "error_code:" + batchUpdateResult.error_code + " error_message:" + batchUpdateResult.error_message); return(false); } } #endregion //更新订单更新日志的更新状态成功 List <string> succeseGodesCodeList = batchUpdateResult.succeseGodesCodeList; AliOrderBusiness.BaseBusiness.UpdateAllAliOrderUpdateLogStatus(string.Join(",", succeseGodesCodeList), AlibabaSdk.AliOrderUpdateStatus.Success); //更新订单更新日志的更新状态失败 if (succeseGodesCodeList.Count < list.Count) { List <string> failGodesCodeList = new List <string>(); foreach (var item in list) { if (!succeseGodesCodeList.Contains(item.bulkGoodsCode)) { failGodesCodeList.Add(item.bulkGoodsCode); } } AliOrderBusiness.BaseBusiness.UpdateAllAliOrderUpdateLogStatus(string.Join(",", failGodesCodeList), AlibabaSdk.AliOrderUpdateStatus.Fail); failGodesCodes.AddRange(failGodesCodeList); } } return(failGodesCodes.Count == 0); }
/// <summary> /// 批量更新大货订单 /// </summary> /// <param name="clientID"></param> /// <param name="token"></param> /// <param name="refreshToken"></param> /// <returns></returns> public static bool UpdateAliBulkOrders(string clientID, string token, string refreshToken, out List<string> failGodesCodes) { failGodesCodes = new List<string>(); #region 获取需要更新的阿里大货订单列表 List<AliOrderUpdateLog> logs = AliOrderBusiness.BaseBusiness.GetAliOrderUpdateLogs(EnumOrderType.LargeOrder, clientID); if (logs.Count == 0) return true; List<AlibabaSdk.MutableOrder> list = new List<AlibabaSdk.MutableOrder>(); foreach (var log in logs) { AlibabaSdk.MutableOrder item = new AlibabaSdk.MutableOrder(); item.bulkGoodsCode = log.AliOrderCode; item.status = AlibabaSdk.HttpRequest.GetEnumDesc<AlibabaSdk.EnumOrderStageStatus>((AlibabaSdk.EnumOrderStageStatus)log.OrderStatus); item.statusDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); item.statusDesc = string.Empty; list.Add(item); } #endregion //分页更新 var totalCount = list.Count; int numb = 10; int size = (int)Math.Ceiling((decimal)totalCount / numb); for (int i = 1; i <= size; i++) { var qList = list.Skip((i - 1) * numb).Take(numb).ToList(); var batchUpdateResult = AlibabaSdk.OrderBusiness.BatchUpdateBulkList(qList, token); #region 批量更新打样订单失败 if (batchUpdateResult.error_code > 0) { //token失效 if (batchUpdateResult.error_code == 401) { //通过refreshToken获取用户token var tokenResult = AlibabaSdk.OauthBusiness.GetTokenByRefreshToken(refreshToken); if (!string.IsNullOrEmpty(tokenResult.access_token)) { token = tokenResult.access_token; AliOrderBusiness.BaseBusiness.UpdateAliOrderDownloadPlanToken(clientID, tokenResult.access_token, refreshToken); batchUpdateResult = AlibabaSdk.OrderBusiness.BatchUpdateBulkList(qList, token); } else { AliOrderBusiness.BaseBusiness.UpdateAliOrderDownloadPlanStatus(clientID, AlibabaSdk.AliOrderPlanStatus.RefreshTokenError, "error_code:" + tokenResult.error_code + " error_message:" + tokenResult.error_message); return false; } } else { AliOrderBusiness.BaseBusiness.UpdateAliOrderDownloadPlanStatus(clientID, AlibabaSdk.AliOrderPlanStatus.Exception, "error_code:" + batchUpdateResult.error_code + " error_message:" + batchUpdateResult.error_message); return false; } } #endregion //更新订单更新日志的更新状态成功 List<string> succeseGodesCodeList = batchUpdateResult.succeseGodesCodeList; AliOrderBusiness.BaseBusiness.UpdateAllAliOrderUpdateLogStatus(string.Join(",", succeseGodesCodeList), AlibabaSdk.AliOrderUpdateStatus.Success); //更新订单更新日志的更新状态失败 if (succeseGodesCodeList.Count < list.Count) { List<string> failGodesCodeList = new List<string>(); foreach (var item in list) { if (!succeseGodesCodeList.Contains(item.bulkGoodsCode)) { failGodesCodeList.Add(item.bulkGoodsCode); } } AliOrderBusiness.BaseBusiness.UpdateAllAliOrderUpdateLogStatus(string.Join(",", failGodesCodeList), AlibabaSdk.AliOrderUpdateStatus.Fail); failGodesCodes.AddRange(failGodesCodeList); } } return failGodesCodes.Count==0; }