如何解决Xamarin.forms更新后,来自Api的json数据出现问题
我正在为我的Xamarin Apps Backend使用Laravel 7.0。直到我更新xamarin.forms为止,它都工作正常。现在,我无法按类别显示产品。这就是我获得产品的方式
$products = Product::select("products.*",DB::raw("COALESCE(cart.quantity,0) as cart_quantity"),DB::raw("COALESCE(cart.id,0) as cart_id"),DB::raw("(0) as SecondLoad"),DB::raw("(0) as checkPickerLoad"),DB::raw("IF ((select count(favourite_products.product_id) from favourite_products where favourite_products.product_id = products.id and favourite_products.user_id='$user_id' and favourite_products.status='AC') > 0,'Favourites_selected.png','Favourites.png') as favourite"),DB::raw("(select product_variations.price from product_variations where product_variations.product_id = products.id and product_variations.status='AC' limit 1) as price"),DB::raw("(select product_variations.special_price from product_variations where product_variations.product_id = products.id and product_variations.status='AC' limit 1) as special_price"),DB::raw("(select round((product_variations.price - product_variations.special_price)*100 / product_variations.price) from product_variations where product_variations.product_id = products.id and product_variations.status='AC' limit 1) as discount"))->join('product_variations','product_variations.product_id','=','products.id')->leftJoin("cart",function ($join) use ($user_id) {
$join->on("cart.product_id","=","products.id");
$join->where(["cart.user_id" => $user_id,"cart.status" => "AC"]);
})->with(['get_product_variations' => function ($q) {
$q->with(['product_units' => function ($q) {
$q->select('id','name','h_name');
}])->where('status','AC');
},'product_brand' => function ($query) {
$query->select('id','name as brand_name');
}])
->where(['products.status' => 'AC','category_id' => $request->category_id,'product_variations.status' => 'AC'])
->groupBy('products.id')
->orderBy('products.name')
->get();
这是我得到的格式。
{
"status": 200,"message": "OK","data": [{
"id": 180,"name": "Blueberry Juice","category_id": 6,"description": "Juice","image":"http:\/\/127.0.0.1:8000\/uploads\/products\/5f150c6847a77_Wild-Blueberry-Juice.jpg","is_featured":0,"is_quick_grab":0,"is_offered":0,"status":"AC","brand_id":1,"h_name":null,"h_description":null,"price":"2.00","quantity":0,"cgst":"0.00","sgst":"0.00","igst":"0.00","created_at":"2020-08-15T11:35:27.000000Z","updated_at":"2020-08-15T11:35:27.000000Z","cart_quantity":0,"cart_id":0,"SecondLoad":0,"checkPickerLoad":0,"favourite":"Favourites.png","special_price":"1.00","discount":"50","get_product_variations":[{"id":7,"product_id":180,"unit_id":6,"weight":1,"created_at":"2020-07-20T03:16:01.000000Z","updated_at":"2020-07-20T03:16:01.000000Z","product_units":{"id":6,"name":"Each","h_name":""}}],"product_brand":{"id":1,"brand_name":"Local"}}]}
不幸的是,该页面目前没有显示任何数据...如果我将代码更改为此
$products = Product::join('product_variations','product_variations.status' => 'AC'])
->groupBy('products.id')
->orderBy('products.name')
->get();
这意味着删除select(“ ***”),然后再次起作用,当然缺少很多信息。最近4天我一直在努力。我到处搜索了所有的xamarin组等。没有机会,这一切都发生在xamarin.forms更新到最新版本之后。由于某些原因,当我发送带有选择的数据时,它无法处理它。
我也在添加我的产品逻辑。产品,ProductDetail和SearchProduct任务就是有问题的。
public class ProductLogic
{
public static async Task<ProductResponce> GetProducts(int CategoryId,string UserId)
{
ProductResponce productResponce;
using (HttpClient httpClient = new HttpClient(new NativeMessageHandler()))
{
var url = string.Format(Config.GetProductList,CategoryId,UserId);
var response = await httpClient.GetAsync(url);
var json = await response.Content.ReadAsStringAsync();
productResponce = JsonConvert.DeserializeObject<ProductResponce>(json);
}
return productResponce;
}
public static async Task<ProductDetailResponce> GetProduct(int ProductId)
{
ProductDetailResponce product = new ProductDetailResponce();
using (HttpClient httpClient = new HttpClient(new NativeMessageHandler()))
{
var url = string.Format(Config.GetSingleProduct,ProductId);
var response = await httpClient.GetAsync(url);
var json = await response.Content.ReadAsStringAsync();
var productDetail = JsonConvert.DeserializeObject<ProductDetailResponce>(json);
product = productDetail;
}
return product;
}
public static async Task<SearchProductResponce> GetSearchProducts(string text,string UserId)
{
SearchProductResponce productResponce;
using (HttpClient httpClient = new HttpClient(new NativeMessageHandler()))
{
var url = string.Format(Config.GetSearchProductList,text,UserId);
var response = await httpClient.GetAsync(url);
var json = await response.Content.ReadAsStringAsync();
productResponce = JsonConvert.DeserializeObject<SearchProductResponce>(json);
}
return productResponce;
}
public static async Task<FavouriteProductResponce> AddFavouriteProduct(Dictionary<string,int> data)
{
FavouriteProductResponce favouriteProduct;
using (HttpClient httpClient = new HttpClient(new NativeMessageHandler()))
{
var jsonData = new StringContent(JsonConvert.SerializeObject(data),Encoding.UTF8,"application/json");
var response = await httpClient.PostAsync(Config.AddFavourite,jsonData);
var json = await response.Content.ReadAsStringAsync();
favouriteProduct = JsonConvert.DeserializeObject<FavouriteProductResponce>(json);
}
return favouriteProduct;
}
public static async Task<FavouriteProductListResponse> GetFavouriteProducts(int user_id)
{
FavouriteProductListResponse favouriteProduct;
using (HttpClient httpClient = new HttpClient(new NativeMessageHandler()))
{
var url = string.Format(Config.GetFavouriteProducts,user_id);
var response = await httpClient.GetAsync(url);
var json = await response.Content.ReadAsStringAsync();
favouriteProduct = JsonConvert.DeserializeObject<FavouriteProductListResponse>(json);
}
return favouriteProduct;
}
public static async Task<DeleteFavouriteProductResponce> DeleteFavouriteProduct(Dictionary<string,string> data)
{
DeleteFavouriteProductResponce deleteFavouriteProduct;
using (HttpClient httpClient = new HttpClient(new NativeMessageHandler()))
{
var jsonData = new StringContent(JsonConvert.SerializeObject(data),"application/json");
var response = await httpClient.PostAsync(Config.DeleteFavourite,jsonData);
var json = await response.Content.ReadAsStringAsync();
deleteFavouriteProduct = JsonConvert.DeserializeObject<DeleteFavouriteProductResponce>(json);
}
return deleteFavouriteProduct;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。