public Result List() { var model = new { timestamp = ToolsCommon.GetTimestamp(), app_id = _waimaiAppId, app_poi_code = _shopNo, }; string url = GetUrl("https://waimaiopen.meituan.com/api/v1/food/list", model); string res = HttpCommon.Get(url); JObject json = JObject.Parse(res); if (json["error"] != null) { return(Tools.ResultErr(json["error"]["msg"].ToString())); } JArray data = JArray.Parse(json["data"].ToString()); if (data == null) { return(Tools.ResultErr()); } var list = new List <object>(); foreach (var d in data) { JArray skus = JArray.Parse(d["skus"].ToString()); foreach (var s in skus) { if (d["app_food_code"] != null & s["sku_id"] != null) { if (d["app_food_code"].ToString() != "" && s["sku_id"].ToString() != "") { var prod = new { CateName = d["category_name"], ProdCode = d["app_food_code"], ProdNo = s["sku_id"], ProdName = d["name"], Spec = s["spec"], Price = s["price"], Stock = s["stock"].ToString() == "" ? "9999" : s["stock"], State = d["is_sold_out"] }; list.Add(prod); } } } } return(Tools.ResultOk(list)); }
public Result GetOrderDetail(string orderId) { var data = new { timestamp = ToolsCommon.GetTimestamp(), app_id = _waimaiAppId, order_id = orderId }; return(Tools.ResultMt(HttpCommon.Get(this.GetUrl("https://waimaiopen.meituan.com/api/v1/order/getOrderDetail", data)))); }
public IEnumerable <dynamic> GetMtFoods(Mt_AccountDTO account, string shopNo) { var model = new JObject() { { "timestamp", ToolsCommon.GetTimestamp() }, { "app_id", account.WaimaiAppId }, { "app_poi_code", shopNo } }; var url = GetUrl(account.WaimaiAppSecret, "https://waimaiopen.meituan.com/api/v1/food/list", model); var res = HttpCommon.Get(url); var json = JObject.Parse(res); if (json["error"] != null) { return(new List <dynamic>()); } var data = JArray.Parse(json["data"].ToString()); var list = new List <dynamic>(); foreach (var d in data) { var skus = JArray.Parse(d["skus"].ToString()); foreach (var s in skus) { if (d["app_food_code"] != null & s["sku_id"] != null) { if (d["app_food_code"].ToString() != "" && s["sku_id"].ToString() != "") { var prod = new { CateName = d["category_name"], ProdCode = d["app_food_code"], ProdNo = s["sku_id"], ProdName = d["name"], Spec = s["spec"], Price = s["price"], Stock = s["stock"].ToString() == "" ? "9999" : s["stock"], State = d["is_sold_out"] }; list.Add(prod); } } } } return(list); }
public Result GetOrderIdByDaySeq(DateTime datetime, int daySeq) { var data = new { timestamp = ToolsCommon.GetTimestamp(), app_id = this._waimaiAppId, app_poi_code = this._shopNo, date_time = datetime.ToString("yyyyMMdd"), day_seq = daySeq }; return(Tools.ResultMt(HttpCommon.Get(this.GetUrl("https://waimaiopen.meituan.com/api/v1/order/getOrderIdByDaySeq", (object)data)))); }
public Result Confirm(string orderID) { var model = new { timestamp = ToolsCommon.GetTimestamp(), app_id = _waimaiAppId, order_id = orderID, }; string url = GetUrl("https://waimaiopen.meituan.com/api/v1/order/confirm", model); return(Tools.ResultMt(HttpCommon.Get(url))); }
/// <summary> /// »ñÈ¡ÅäËͶ©µ¥×´Ì¬ /// </summary> /// <param name="orderID"></param> /// <returns></returns> public Result GetLogisticsStatus(string orderID) { var model = new { timestamp = ToolsCommon.GetTimestamp(), app_id = _waimaiAppId, order_id = orderID, is_mt_logistics = 1 }; string url = GetUrl("https://waimaiopen.meituan.com/api/v1/order/logistics/status", model); return(Tools.ResultMt(HttpCommon.Get(url))); }
public Result RefundReject(string orderID, JObject data) { var model = new { timestamp = ToolsCommon.GetTimestamp(), app_id = _waimaiAppId, order_id = orderID, reason = data["Reason"] }; string url = GetUrl("https://waimaiopen.meituan.com/api/v1/order/refund/reject", model); return(Tools.ResultMt(HttpCommon.Get(url))); }
public void MtUpdateStock(Mt_AccountDTO account, string shopNo, IEnumerable <StockModel> data) { var num1 = data.Count(); var size = 50; var num2 = size; var num3 = (num1 + num2 - 1) / size; var msg = ""; for (var index = 0; index < num3; ++index) { var source = data.Skip(index * size).Take(size); var foodDataList = new List <FoodData>(); foreach (var grouping in source.GroupBy(a => a["ProdCode"])) { var code = grouping; var foodData = new FoodData() { app_food_code = code.Key.ToString() }; var tokens = source.Where(a => a["ProdCode"] == code.Key); var skuList = new List <Sku>(); foreach (var jtoken in tokens) { skuList.Add(new Sku() { sku_id = jtoken["ProdNo"]?.ToString(), stock = jtoken["Stock"]?.ToString() }); } foodData.skus = skuList; foodDataList.Add(foodData); } var model = new JObject() { { "timestamp", ToolsCommon.GetTimestamp().ToString() }, { "app_id", account.WaimaiAppId }, { "app_poi_code", shopNo }, { "food_data", JsonConvert.SerializeObject(foodDataList) } }; var url = GetUrl(account.WaimaiAppSecret, "https://waimaiopen.meituan.com/api/v1/food/sku/stock", model); model.Remove("timestamp"); model.Remove("app_id"); var response = HttpCommon.PostJObject(url, model); } }
public async Task <IEnumerable <StockModel> > MtFoods(string waimaiAppId, string waimaiAppSecret, string shopNo) { var model = new JObject() { { "timestamp", ToolsCommon.GetTimestamp() }, { "app_id", waimaiAppId }, { "app_poi_code", shopNo } }; var url = GetUrl(waimaiAppSecret, "https://waimaiopen.meituan.com/api/v1/food/list", model); var res = HttpCommon.Get(url); var json = JObject.Parse(res); if (json["error"] != null) { return(new List <StockModel>()); } var data = JArray.Parse(json["data"].ToString()); var list = new List <StockModel>(); foreach (var d in data) { var skus = JArray.Parse(d["skus"].ToString()); foreach (var s in skus) { if (d["app_food_code"] != null & s["sku_id"] != null) { if (d["app_food_code"].ToString() != "" && s["sku_id"].ToString() != "") { var prod = new StockModel() { ProdCode = d["app_food_code"].ToString(), ProdNo = s["sku_id"].ToString(), }; list.Add(prod); } } } } return(list); }
/// <summary> /// 取Sign /// </summary> /// <param name="obj"></param> /// <returns></returns> protected SignParams GetSign(string token, object obj, string action) { long timestamp = ToolsCommon.GetTimestamp(); JObject jObj = JObject.FromObject(obj); jObj.Add("app_key", EleConfig.APP_KEY); jObj.Add("timestamp", timestamp); string sortJson = JsonSort.SortJson(jObj, null); ////替换掉属性排序关键字 //Regex reg = new Regex("[a-z]__"); //sortJson = reg.Replace(sortJson, ""); jObj = JObject.Parse(sortJson); List <JProperty> listProperty = jObj.Properties().ToList(); StringBuilder buff = new StringBuilder(); foreach (JProperty attr in listProperty) { string pKey = attr.Name; string pValue = attr.Value.ToString(Newtonsoft.Json.Formatting.None); if (attr.Value.Type == JTokenType.String) { pValue = "\"" + attr.Value.ToString() + "\""; } else if (attr.Value.Type == JTokenType.Float) { pValue = float.Parse(pValue).ToString(); } else if (attr.Value.Type == JTokenType.Object) { } buff.Append(pKey + "=" + pValue); } //完整拼接字符串 string fullParams = action + token + buff.ToString() + EleConfig.APP_SECRET; string sign = ToolsCommon.GetMD5(fullParams).ToUpper(); SignParams pSignParams = new SignParams(); pSignParams.sign = sign; pSignParams.timestamp = timestamp; pSignParams.token = token; pSignParams.action = action; return(pSignParams); }
public async Task MtUpdateStock(string waimaiAppId, string waimaiAppSecret, string shopNo, IEnumerable <StockModel> models) { var size = 50; var loop = (models.Count() + size - 1) / size; for (var i = 0; i < loop; ++i) { var data = models.Skip(i * size).Take(size); var foodDataList = new List <FoodData>(); foreach (var grouping in data.GroupBy(a => a.ProdCode)) { var code = grouping; var foodData = new FoodData() { app_food_code = code.Key }; foodData.skus = data .Where(a => a.ProdCode == code.Key) .Select(token => new Sku() { sku_id = token.ProdNo, stock = token.CurrentStock.ToString() }) .ToList(); foodDataList.Add(foodData); } var model = new JObject() { { "timestamp", ToolsCommon.GetTimestamp().ToString() }, { "app_id", waimaiAppId }, { "app_poi_code", shopNo }, { "food_data", JsonConvert.SerializeObject(foodDataList) } }; var url = GetUrl(waimaiAppSecret, "https://waimaiopen.meituan.com/api/v1/food/sku/stock", model); model.Remove("timestamp"); model.Remove("app_id"); var response = await HttpCommon.PostJObjectAsync(url, model); } }
public ActionResult GetUrl(string shopNo, string shopName, bool isMap) { var basicUrl = isMap ? "https://open-api.dianping.com/auth/shopMapping" : "https://open-api.dianping.com/auth/shopMapping/delete"; if (isMap) { var model = new { vendorShopId = shopNo, vendorShopName = shopName, businessType = "101", appKey = _tuangouAppKey, ts = ToolsCommon.GetTimestamp(), version = "2.0", }; string url = CreateUrl(basicUrl, model, null); return(Json(new AjaxResult() { state = "ok", msg = url })); } else { var model = new { vendorShopId = shopNo, businessType = "101", appKey = _tuangouAppKey, ts = ToolsCommon.GetTimestamp(), version = "2.0", }; string url = CreateUrl(basicUrl, model, null); return(Json(new AjaxResult() { state = "ok", msg = url })); } }
public Result UpdateStateSingle(int state, IEnumerable <JToken> data) { var foodDataSellStatusList = new List <FoodDataSellStatus>(); foreach (var grouping in data.GroupBy(a => a["ProdCode"])) { var code = grouping; var foodDataSellStatus = new FoodDataSellStatus() { app_food_code = code.Key.ToString() }; var tokens = data.Where(a => a["ProdCode"] == code.Key); var skuSellStatusList = new List <SkuSellStatus>(); foreach (var token in tokens) { skuSellStatusList.Add(new SkuSellStatus() { sku_id = token["ProdNo"].ToString() }); } foodDataSellStatus.skus = skuSellStatusList; foodDataSellStatusList.Add(foodDataSellStatus); } var data1 = new { timestamp = ToolsCommon.GetTimestamp().ToString(), app_id = _waimaiAppId, app_poi_code = _shopNo, food_data = JsonConvert.SerializeObject(foodDataSellStatusList), sell_status = state }; var data2 = new { app_poi_code = _shopNo, food_data = JsonConvert.SerializeObject(foodDataSellStatusList), sell_status = state }; return(Tools.ResultMt(HttpCommon.Post(GetUrl("https://waimaiopen.meituan.com/api/v1/food/sku/sellStatus", data1), data2))); }
public Result GetRiderInfoPhoneNumber() { var model = new { timestamp = ToolsCommon.GetTimestamp(), app_id = _waimaiAppId, app_poi_code = _shopNo, offset = 0, limit = 999 }; var modelBody = new { app_poi_code = _shopNo, offset = 0, limit = 999 }; string url = GetUrl("https://waimaiopen.meituan.com/api/v1/order/getRiderInfoPhoneNumber", model); return(Tools.ResultMt(HttpCommon.Post(url, modelBody))); }
public async Task MtUpdateState(string waimaiAppId, string waimaiAppSecret, string shopNo, int state, IEnumerable <StockModel> models) { var data = models.Select(item => new FoodDataSellStatus() { app_food_code = item.ProdNo, skus = new List <SkuSellStatus>() { new SkuSellStatus() { sku_id = item.ProdNo } } }); //分批次提交 var size = 50; var loop = (data.Count() + size - 1) / size; for (var j = 0; j < loop; j++) { var batchFoods = data.Skip(j * size).Take(size); var model = new JObject() { { "timestamp", ToolsCommon.GetTimestamp().ToString() }, { "app_id", waimaiAppId }, { "app_poi_code", shopNo }, { "food_data", JsonConvert.SerializeObject(batchFoods) }, { "sell_status", state } }; var url = GetUrl(waimaiAppSecret, "https://waimaiopen.meituan.com/api/v1/food/sku/sellStatus", model); model.Remove("timestamp"); model.Remove("app_id"); var response = await HttpCommon.PostJObjectAsync(url, model); } }
public List <ShopInfo> QueryMapped(List <ShopInfo> list) { int x = 49; int y = list.Count() / x + 1; Parallel.For(0, y, i => { var modelSys = new { appKey = _tuangouAppKey, ts = ToolsCommon.GetTimestamp(), version = "2.0" }; List <string> vendorShopIdList = new List <string>(); for (int j = i * x; j < (i + 1) * x; j++) { if (j >= list.Count()) { break; } vendorShopIdList.Add(list[j].ShopNo); } JArray dpShopIdList = new JArray(); var model = new { dpShopIdList = dpShopIdList, vendorShopIdList = vendorShopIdList.ToArray(), businessType = 101 }; string url = CreateUrl("https://open-api.dianping.com/vendor/shopMapping/query", modelSys, model); string result = HttpCommon.Post(url, model); JObject json = JObject.Parse(result); if (json["code"].ToString() == "200") { JArray jArray = JArray.Parse(json["content"].ToString()); for (int k = 0; k < jArray.Count; k++) { var shopInfo = list.FirstOrDefault(a => a.ShopNo == (jArray[k]["vendorShopId"].ToString())); if (shopInfo != null) { shopInfo.IsMapped = true; } } } }); #region //for (int i = 0; i < y; i++) //{ // var modelSys = new { // appKey = _tuangouAppKey, // ts = ToolsCommon.GetTimestamp(), // version = "2.0" // }; // List<string> vendorShopIdList = new List<string>(); // for (int j = i * x; j < (i + 1) * x; j++) // { // if (j >= list.Count()) break; // vendorShopIdList.Add(list[j].ShopNo); // } // JArray dpShopIdList = new JArray(); // var model = new { // dpShopIdList= dpShopIdList, // vendorShopIdList= vendorShopIdList.ToArray(), // businessType = 101 // }; // string url = CreateUrl("https://open-api.dianping.com/vendor/shopMapping/query", modelSys, model); // string result = HttpCommon.Post(url, model); // JObject json = JObject.Parse(result); // if (json["code"].ToString() == "200") // { // JArray jArray = JArray.Parse(json["content"].ToString()); // for (int k = 0; k < jArray.Count; k++) // { // var shopInfo = list.FirstOrDefault(a => a.ShopNo == (jArray[k]["vendorShopId"].ToString())); // if (shopInfo != null) // shopInfo.IsMapped = true; // } // } //} #endregion return(list); }
public Result SkuStock(JArray data) { //var listFoodData = new List<FoodData>(); //var codes = data.GroupBy(a => a["ProdCode"]); //foreach (var code in codes) //{ // var foodData = new FoodData() { app_food_code = code.Key.ToString() }; // var skus = data.Where(a => a["ProdCode"] == code.Key); // var listSku = new List<Sku>(); // foreach (var sku in skus) // { // listSku.Add(new Sku() { sku_id = sku["ProdNo"].ToString(), stock = sku["Stock"].ToString() }); // } // foodData.skus = listSku; // listFoodData.Add(foodData); //} //var model = new //{ // timestamp = ToolsCommon.GetTimestamp().ToString(), // app_id = _waimaiAppId, // app_poi_code = _shopNo, // food_data = JsonConvert.SerializeObject(listFoodData) //}; //var modelBody = new //{ // app_poi_code = _shopNo, // food_data = JsonConvert.SerializeObject(listFoodData) //}; //string url = GetUrl("https://waimaiopen.meituan.com/api/v1/food/sku/stock", model); //var res = HttpCommon.Post(url, modelBody); //return Tools.ResultMt(res); int num1 = data.Count <JToken>(); int size = 50; int num2 = size; int num3 = (num1 + num2 - 1) / size; string msg = ""; for (int index = 0; index < num3; ++index) { IEnumerable <JToken> source = data.Skip <JToken>(index * size).Take <JToken>(size); System.Collections.Generic.List <FoodData> foodDataList = new System.Collections.Generic.List <FoodData>(); foreach (IGrouping <JToken, JToken> grouping in source.GroupBy <JToken, JToken>((Func <JToken, JToken>)(a => a[(object)"ProdCode"]))) { IGrouping <JToken, JToken> code = grouping; FoodData foodData = new FoodData() { app_food_code = code.Key.ToString() }; IEnumerable <JToken> jtokens = source.Where <JToken>((Func <JToken, bool>)(a => a[(object)"ProdCode"] == code.Key)); System.Collections.Generic.List <Sku> skuList = new System.Collections.Generic.List <Sku>(); foreach (JToken jtoken in jtokens) { skuList.Add(new Sku() { sku_id = jtoken[(object)"ProdNo"].ToString(), stock = jtoken[(object)"Stock"].ToString() }); } foodData.skus = (ICollection <Sku>)skuList; foodDataList.Add(foodData); } var data1 = new { timestamp = ToolsCommon.GetTimestamp().ToString(), app_id = this._waimaiAppId, app_poi_code = this._shopNo, food_data = JsonConvert.SerializeObject((object)foodDataList) }; var data2 = new { app_poi_code = this._shopNo, food_data = JsonConvert.SerializeObject((object)foodDataList) }; Result result = Tools.ResultMt(HttpCommon.Post(this.GetUrl("https://waimaiopen.meituan.com/api/v1/food/sku/stock", (object)data1), (object)data2)); msg += result.Msg; } return(string.IsNullOrEmpty(msg) ? Tools.ResultOk() : Tools.ResultErr(msg)); }