ソースを参照

新增接口:商品列表,详情,订单列表,详情,用户收货地址新增,编辑,设置默认,详情,删除

phperli 3 年 前
コミット
5a031fcc66

+ 96 - 0
app/Http/Controllers/V1/AddressController.php

xqd
@@ -0,0 +1,96 @@
+<?php
+
+namespace App\Http\Controllers\V1;
+
+use App\Http\Requests\MallIdentify;
+use App\Http\Requests\UpdateUser;
+use App\Models\User;
+use App\Models\UserAddress;
+use App\Models\WarehouseGoods;
+use App\Services\Api\BalanceService;
+use App\Services\Api\ErrorMsgServive;
+use App\Services\Api\UserService;
+use App\Services\Api\WarehouseService;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Validator;
+use PHPUnit\Util\Exception;
+
+class AddressController extends Controller
+{
+    public function __construct()
+    {
+        $this->user = auth('api')->user();
+        $this->userId = $this->user ? $this->user->id : 0;
+    }
+
+    //添加收货地址
+    public function add(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'name'   => 'required',
+            'mobile' => 'required',
+            'adress' => 'required',
+        ]);
+        if ($validator->fails()) {
+            return $this->error($validator->errors()->first());
+        }
+        if (!$res = UserService::saveAddress($request, $this->userId)) {
+            return $this->error('提交失败!');
+        }
+
+        return $this->success('', '提交成功!');
+    }
+
+    //我的地址
+    public function mine()
+    {
+        $list = UserAddress::query()->where('user_id', $this->userId)->notDelete()->get();
+
+        return $this->success($list);
+    }
+
+    //设为默认地址
+    public function setDefault(Request $request)
+    {
+        DB::beginTransaction();
+        try{
+            UserAddress::query()->where('user_id', $this->userId)->update(['is_default' => 0]);
+            $address = UserAddress::find($request->address_id);
+            $address->is_default = 1;
+            $address->save();
+            DB::commit();
+        }catch (Exception $exception){
+            DB::rollBack();
+            ErrorMsgServive::write($exception, $request->url());
+            return $this->error('设置失败!');
+        }
+
+        return $this->success('', '设置成功!');
+    }
+
+    //删除地址
+    public function  delAddress(Request $request)
+    {
+        $address = UserAddress::query()
+            ->where('id', $request->address_id)
+            ->where('user_id', $this->userId)
+            ->first();
+
+        if(!$address){
+            return $this->error('删除失败!');
+        }
+        $address->delete();
+
+        return $this->success('', '删除成功!');
+    }
+
+    //地址信息
+    public function info(Request $request)
+    {
+        $info = UserAddress::find($request->address_id);
+
+        return $this->success($info);
+    }
+
+}

+ 1 - 1
app/Http/Controllers/V1/ChatTeamController.php

xqd
@@ -57,7 +57,7 @@ class ChatTeamController extends Controller
 
             //发一条群公告,目的是为了让群自动发一条消息
             $initData['GroupId'] = $res['GroupId'];
-            $initData['Introduction'] = 'Hello everyone!, Welcome to join us!';
+            $initData['Introduction'] = 'Welcome to the group!';
             $this->groupService->modifyGroupBaseInfo($initData);
 
             DB::commit();

+ 2 - 2
app/Http/Controllers/V1/GameController.php

xqd xqd
@@ -52,7 +52,7 @@ class GameController extends Controller
         } catch (\Exception $exception) {
             return $this->error($exception->getMessage());
         }
-        return $this->success();
+        return $this->success('', 0, trans('api.DONE'));
     }
 
     //比赛信息
@@ -519,7 +519,7 @@ class GameController extends Controller
 
         Redis::del('ovarallScore'); //删除精彩时刻总杆缓存
 
-        return $this->success();
+        return $this->success('', 0, trans('api.END_GAME'));
     }
 
     //设置比赛权限

+ 48 - 0
app/Http/Controllers/V1/GoodsController.php

xqd
@@ -0,0 +1,48 @@
+<?php
+
+namespace App\Http\Controllers\V1;
+
+use App\Models\Goods;
+use App\Models\GoodsComment;
+use App\Models\Order;
+use App\Models\User;
+use App\Services\Api\GoodsService;
+use App\Services\Api\UserSearchService;
+use Illuminate\Http\Request;
+use Illuminate\Support\Arr;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\Validator;
+
+class GoodsController extends Controller
+{
+    public function __construct()
+    {
+        $this->user = auth('api')->user();
+        $this->userId = $this->user ? $this->user->id : 0;
+    }
+
+    //获取商品列表
+    public function getList(Request $request)
+    {
+        $map = [];
+        $keyword = $request->input('keyword', null);
+
+        if (!empty($keyword)) {
+            $map[] = ['name', 'like', '%' . htmlspecialchars($keyword) . '%'];
+        }
+        $list = GoodsService::getGoodsList($map, $request->input('page', 1), 20, $ids = []);
+
+        return $this->success($list);
+    }
+
+    //商品详情
+    public function detail(Request $request)
+    {
+        $goodsId = $request->goods_id;
+
+        $data = GoodsService::getDetail($goodsId);
+
+        return $this->success($data);
+    }
+
+}

+ 104 - 0
app/Http/Controllers/V1/OrderController.php

xqd
@@ -0,0 +1,104 @@
+<?php
+
+namespace App\Http\Controllers\V1;
+
+use App\Models\Order;
+use App\Models\WarehouseGoods;
+use App\Services\Api\OrderService;
+use App\Services\Api\GoodsService;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Validator;
+
+class OrderController extends Controller
+{
+    public function __construct()
+    {
+        $this->user = auth('api')->user();
+        $this->userId = $this->user ? $this->user->id : 0;
+    }
+
+    //提交订单
+    public function submit(Request $request)
+    {
+        $validator = Validator::make($request->all(), [
+            'remark' => 'min:0|max:100'
+        ], [
+            'remark.max' => '备注不应超过100个字符',
+        ]);
+        if ($validator->fails()) {
+            return $this->error($validator->errors()->first());
+        }
+        if (!$goods = GoodsService::isGoodsCanBuy($request->goods_id)) {
+            return $this->error('商品已下架!');
+        }
+        if (!$res = OrderService::saveOrder($request, $this->userId, $goods)) {
+            return $this->error('下单出错!');
+        };
+
+        return $this->success();
+    }
+
+    //取消订单
+    public function delay(Request $request)
+    {
+        $orderId = $request->order_id;
+        $order = Order::find($orderId);
+        $order->cancel_status = 1; //1.申请取消 2.已取消
+        $order->save();
+
+        return $this->success('', '已申请取消');
+    }
+
+    //确认收货
+    public function confirm(Request $request)
+    {
+        $orderId = $request->order_id;
+        $order = Order::find($orderId);
+        $order->status = 2; //1.进行中 2.已完成
+        $order->save();
+
+        return $this->success('', '已确认收货');
+    }
+
+    //兑换订单
+    public function orderList(Request $request)
+    {
+        $keyword = $request->input('keyword', null);
+        $status = $request->input('status', 0);
+
+        $map[] = ['user_id', '=', $this->userId];
+        if($status){
+            $map[] = ['status', '=', $status];
+        }
+        $goodsIds = [];
+        if (!empty($keyword)) {
+            $goodsIds = GoodsService::getGoodsIds($keyword);
+        }
+
+        $list = OrderService::getMyOrderList($map, $request->input('page', 1), $goodsIds);
+
+        return $this->success($list);
+    }
+
+    //订单详情
+    public function orderDetail(Request $request)
+    {
+        $orderId = $request->order_id;
+
+        $data = OrderService::getOrderDetail($orderId);
+
+        return $this->success($data);
+    }
+
+    //修改收货地址
+    public function changeAddress(Request $request)
+    {
+        if(!$res = OrderService::changeAddress($request)){
+            return $this->error('修改失败!');
+        };
+
+        return $this->success('修改成功!');
+    }
+
+
+}

+ 22 - 0
app/Models/UserAddress.php

xqd
@@ -0,0 +1,22 @@
+<?php
+
+namespace App\Models;
+
+use DateTimeInterface;
+use Illuminate\Database\Eloquent\Factories\HasFactory;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+class UserAddress extends BaseModel
+{
+    use HasFactory,SoftDeletes;
+
+    protected $table = 'user_address';
+    protected $fillable = ['id'];
+
+    protected $hidden = [
+        'created_at',
+        'updated_at',
+        'deleted_at',
+    ];
+
+}

+ 1 - 1
app/Models/UserIntegral.php

xqd
@@ -5,7 +5,7 @@ namespace App\Models;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 
-class UserIntegral extends Model
+class UserIntegral extends BaseModel
 {
     use HasFactory;
 

+ 8 - 0
app/Providers/AppServiceProvider.php

xqd xqd
@@ -5,7 +5,9 @@ namespace App\Providers;
 use App\Models\ChatTeam;
 use App\Models\CourseField;
 use App\Models\GameUserScore;
+use App\Models\Order;
 use App\Models\User;
+use App\Models\UserAddress;
 use App\Models\UserExtra;
 use App\Models\UserIntegral;
 use Illuminate\Support\ServiceProvider;
@@ -40,6 +42,12 @@ class AppServiceProvider extends ServiceProvider
         $this->app->singleton('getGameUserScoreInstance', function (){
             return new GameUserScore();
         });
+        $this->app->singleton('getOrderInstance', function (){
+            return new Order();
+        });
+        $this->app->singleton('getUserAddressInstance', function (){
+            return new UserAddress();
+        });
 
     }
 

+ 7 - 4
app/Services/Api/GameService.php

xqd
@@ -558,14 +558,17 @@ class GameService
     {
         $userId = $this->user->id;
 
-        $gameIds = UserJoin::query()
+        $query = UserJoin::query()
             ->join('games', 'games.id', '=', 'user_joins.matter_id')
             ->whereNull('games.deleted_at')
-            ->where('games.begin_time', '<', Carbon::now())
             ->where('user_id', $userId)
             ->where('user_joins.status', $status)
-            ->where('type', 2)
-            ->orderBy('games.created_at', 'asc')
+            ->where('type', 2);
+
+        if($status == 0){
+            $query->where('games.begin_time', '>', Carbon::now());
+        }
+        $gameIds = $query->orderBy('games.created_at', 'asc')
             ->pluck('games.id')
             ->toArray();
 

+ 398 - 0
app/Services/Api/GoodsService.php

xqd
@@ -0,0 +1,398 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 22/05/04
+ * Time: 22:00
+ */
+
+namespace App\Services\Api;
+
+use App\Models\Goods;
+use App\Models\GoodsAttr;
+use App\Models\GoodsCat;
+use App\Models\GoodsComment;
+use App\Models\GoodsLook;
+use App\Models\Order;
+use App\Models\OrderComment;
+use App\Models\User;
+use App\Models\UserCollect;
+use App\Models\UserMessage;
+use App\Models\UserSearchLog;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\App;
+use Illuminate\Support\Facades\DB;
+
+class GoodsService
+{
+    //获取商品属性 1产地,2所在地,3容量,4桶型,5级别,6批次,7风味,8品牌
+    public static function getCatList()
+    {
+        $list = GoodsAttr::query()
+            ->whereNull('deleted_at')
+            ->select('id', 'type', 'name')
+            ->orderBy('type')
+            ->get();
+
+        $list = $list->isNotEmpty() ? $list->toArray() : [];
+        $catList = [];
+        $catList['cat_list'] = GoodsCat::query()->where('status', 1)->whereNull('deleted_at')->select('id', 'name', 'pic_url')->get();
+
+        foreach ($list as $key => $val) {
+            switch ($val['type']) {
+                case 1: //原产地
+                    $catList['origin_list'][] = $val;
+                    break;
+                case 2: //所在地
+                    $catList['region_list'][] = $val;
+                    break;
+                case 3: //容量
+                    $catList['capacity_list'][] = $val;
+                    break;
+                case 4: //桶型
+                    $catList['barrel_list'][] = $val;
+                    break;
+                case 5: //级别
+                    $catList['level_list'][] = $val;
+                    break;
+                case 6: //批次
+                    $catList['batch_list'][] = $val;
+                    break;
+                case 7: //风味
+                    $catList['flavor_list'][] = $val;
+                    break;
+                case 8: //品牌
+                    $catList['brand_list'][] = $val;
+                    break;
+            }
+        }
+
+        return $catList;
+    }
+
+    //添加发布商品
+    public static function add($request, $userId)
+    {
+        $goods = App::make('getGoodsInstance');
+
+        $goods->user_id = $userId;
+        $goods->name = $request->name; //名称
+        $goods->is_old = $request->is_old; //新旧
+        $goods->cat_id = $request->cat_id; //类别
+        $goods->brand_id = $request->brand_id; //品牌
+        $goods->barrel_id = $request->barrel_id; //桶型
+        $goods->capacity_id = $request->capacity_id; //容量
+        $goods->origin_place_id = $request->origin_place_id; //原产地
+        $goods->region_id = $request->region_id; //所在地
+        $goods->level_id = $request->level_id; //等级
+        $goods->batch_id = $request->batch_id; //批次
+        $goods->flavor_id = $request->flavor_id;  //风味
+        $goods->alcohol_id = $request->alcohol_id;  //酒精度
+        $goods->tag = $request->tag; //标签
+        $goods->notice = $request->notice; //提示
+        $goods->introduce = $request->introduce; //介绍
+        $goods->price = $request->price; //价格
+        $goods->img = $request->img; //图片
+        $goods->cover_imgs = $request->cover_imgs; //封面图
+        $goods->product_year = $request->product_year; //产品年份
+        $goods->distill_year = $request->distill_year; //蒸馏年份
+        $goods->bottling_year = $request->bottling_year; //装瓶年份
+
+        $goods->pre_seller = $request->pre_seller ?: 0; //上一卖家(新品上架不填,售卖仓库商品必填)
+        $goods->trace_code = $request->trace_code ?: self::createTraceCode($userId); //溯源码 (新品上架自动生成,售卖仓库商品填商品的)
+
+        if (!$goods->save()) {
+            return false;
+        }
+
+        return true;
+    }
+
+    //生成溯源码
+    public static function createTraceCode()
+    {
+        return md5(date('YmdHis') . rand(1000, 9999));
+    }
+
+    //获取商品列表
+    public static function getGoodsList($map = [], $page = 1, $limit = null, $ids = [])
+    {
+        $limit  = $limit ?: 20;
+        $offset = ($page - 1) * $limit;
+        $list = Goods::query()
+            ->when($map, function ($query, $map) {
+                $query->where($map);
+            })
+            ->when($ids, function ($query, $ids) {
+                $query->whereIn('id', $ids);
+            })
+            ->select('id', 'name', 'img', 'integral')
+            ->offset($offset)
+            ->limit($limit)
+            ->get();
+
+        if($list->isEmpty()){
+            return [];
+        }
+        $list->makeHidden(['created_at', 'updated_at', 'deleted_at']);
+
+        return $list->toArray();
+    }
+
+    //获取详情
+    public static function getDetail($goodsId)
+    {
+        $goods = Goods::query()
+            ->where('id', $goodsId)
+            ->whereNull('deleted_at')
+            ->first();
+
+        $goods->makeHidden(['created_at', 'updated_at', 'deleted_at']);
+        $goods =  $goods->toArray();
+        $goods['cover_imgs'] = json_decode($goods['cover_imgs'], true);
+        $goods['specific_list'] = json_decode($goods['specific_list'], true);
+
+        return $goods;
+    }
+
+    //获取历史购买者信息
+    public static function getHistoryBuyers($goodsId)
+    {
+        $list = Order::query()
+            ->with('users:id,username,avatar')
+            ->where('goods_id', $goodsId)
+            ->whereNull('deleted_at')
+            ->select('user_id', 'unit_price', 'created_at')
+            ->get();
+
+        foreach ($list as $key => $val) {
+            $val['date'] = date('Y-m-d', strtotime($val['created_at']));
+            unset($val['created_at']);
+            $list[$key] = $val;
+        }
+
+        return $list;
+    }
+
+    //获取历史价格纪录(需要修改)
+    public static function getHistoryPrices($goodsId)
+    {
+        $list = Order::query()->where('goods_id', $goodsId)->whereNull('deleted_at')->select('unit_price', 'created_at')->get();
+
+        foreach ($list as $key => $val) {
+            $val['date'] = date('Y-m-d', strtotime($val['created_at']));
+            unset($val['created_at']);
+            $list[$key] = $val;
+        }
+
+        return $list;
+    }
+
+    //获取商品收藏记录
+    public static function getGoodsCollects($goodsId)
+    {
+        $date = Carbon::parse()->subDays(7)->toDateTimeString();
+
+        $list = UserCollect::query()
+            ->with('users:id,username,avatar')
+            ->where('goods_id', $goodsId)
+            ->where('status', 1)
+            ->where('created_at', '>', $date)
+            ->select('user_id', 'created_at')
+            ->get();
+
+        foreach ($list as $key => $val) {
+            $val['date'] = date('Y-m-d', strtotime($val['created_at']));
+            unset($val['created_at']);
+            $list[$key] = $val;
+        }
+
+        $totalCount = UserCollect::query()->where('goods_id', $goodsId)->where('status', 1)->count('id');
+
+        $result = [
+            'list' => $list,
+            'seven_count' => count($list),
+            'total_count' => $totalCount
+        ];
+
+        return $result;
+    }
+
+    //获取用户浏览记录(七日)
+    public static function getGoodsLooks($goods_id)
+    {
+        $date = Carbon::parse()->subDays(7)->toDateTimeString();
+        $list = GoodsLook::query()
+            ->where('goods_id', $goods_id)
+            ->select(DB::raw('DATE(created_at) as date'), DB::raw('COUNT(id) as amount'))
+            ->groupBy('date')
+            ->having('date', '>', $date)
+            ->orderBy('date', 'ASC')
+            ->get();
+
+        $list = $list->isNotEmpty() ? $list->toArray() : [];
+
+        $sevenCount = array_sum(array_column($list, 'amount'));
+
+        for ($i = 0; $i < 7; $i++) {
+            $day = Carbon::parse('-' . $i . ' days')->toDateString();
+            $arr = ['date' => $day, 'amount' => 0];
+            foreach ($list as $key => $val) {
+                if ($day == $val['date']) {
+                    $arr['amount'] = $val['amount'];
+                }
+            }
+            $arr['date'] = date('d', strtotime($day));
+            $res[] = $arr;
+        }
+
+        $result = [
+            'list' => $res,
+            'seven_count' => $sevenCount
+        ];
+
+        return $result;
+    }
+
+    //商品 收藏/取消
+    public static function collectGoods($goodsId, $userId)
+    {
+        DB::beginTransaction();
+        try {
+            $collect = UserCollect::query()->where(['user_id' => $userId, 'goods_id' => $goodsId])->first();
+            if ($collect) {
+                $status = $collect->status;
+                $collect->status = $status ? 0 : 1;
+                $collect->save();
+                if ($status) {
+                    self::collectNumDec($goodsId);
+                    UserService::collectNumDec($userId);
+                } else {
+                    self::collectNumInc($goodsId);
+                    UserService::collectNumInc($userId);
+                }
+            } else {
+                $collect = App::make('getUserCollectInstance');
+                $collect->user_id = $userId;
+                $collect->goods_id = $goodsId;
+                $collect->status = 1;
+                $collect->save();
+                self::collectNumInc($goodsId); //商品被收藏数 +1
+                UserService::collectNumInc($userId); //用户收藏商品数 +1
+            }
+            DB::commit();
+            return true;
+        } catch (\Exception $exception) {
+            DB::rollBack();
+            ErrorMsgServive::write($exception, request()->fullUrl());
+            return false;
+        }
+    }
+
+    //收藏数+1
+    public static function collectNumInc($goodsId)
+    {
+        Goods::query()->where('id', $goodsId)->increment('collect_num');
+    }
+
+    //收藏数-1
+    public static function collectNumDec($goodsId)
+    {
+        Goods::query()->where('id', $goodsId)->decrement('collect_num');
+    }
+
+    //增加曝光量
+    public static function addOpenNum($goodsId)
+    {
+        Goods::query()->where('id', $goodsId)->increment('open_num');
+    }
+
+    //增加浏览记录
+    public static function addGoodsLook($userId, $goodsId)
+    {
+        $goodsLook = App::make('getGoodsLookInstance');
+        $goodsLook->user_id = $userId;
+        $goodsLook->goods_id = $goodsId;
+        $goodsLook->save();
+    }
+
+    //商品是否可买
+    public static function isGoodsCanBuy($goodsId)
+    {
+        $info = Goods::query()->where('id', $goodsId)->where('status', 1)->whereNull('deleted_at')->first();
+
+        return empty($info) ? false : $info;
+    }
+
+    //通过商品名 模糊搜索商品id
+    public static function getGoodsIds($keyword)
+    {
+        $ids = Goods::query()
+            ->where('name', 'like', '%' . $keyword . '%')
+            ->pluck('id');
+
+        return $ids->isNotEmpty() ? array_unique($ids->toArray()) : [];
+    }
+
+    //我售卖的商品id
+    public static function mySellGoodsIds($userId)
+    {
+        $ids = Goods::query()
+            ->where('user_id', $userId)
+            ->pluck('id');
+
+        return $ids->isNotEmpty() ? array_unique($ids->toArray()) : [];
+    }
+
+    //添加评论
+    public static function addComment($request, $userId)
+    {
+        $goods = Goods::find($request->goods_id);
+
+        $comment = App::make('getGoodsCommentInstance');
+        $comment->user_id = $userId;
+        $comment->goods_id = $request->goods_id;
+        $comment->goods_user_id = $goods->user_id; //售卖商品的人
+        $comment->score = $request->score;
+        $comment->content = $request->content;
+        $comment->pic_url = $request->pic_url;
+        if (!$comment->save()) {
+            return false;
+        }
+        //商品被评价进行消息通知
+        $type = 'comment';
+        $user = User::find($userId);
+        $content = $user->username.'评价了您的商品';
+        MessageService::sendNotice($goods->user_id, $userId, $type, UserMessage::TYPE[$type], $content);
+
+        return true;
+    }
+
+    //获取评论列表 $type: 1全部,2买家评论,卖家评论
+    public static function getCommentList($userId, $type = null, $page = 1)
+    {
+        $limit = 20;
+        $offset = ($page - 1) * $limit;
+
+        $list = GoodsComment::query()
+            ->with('users:id,username,name,avatar')
+            ->with('goods:id,name,img,price')
+            ->where('user_id', $userId)
+            ->where('is_show', 1)
+            ->offset($offset)
+            ->limit($limit)
+            ->orderByDesc('is_top')
+            ->get();
+
+        foreach ($list as $key => $val) {
+            $format = CommonService::formatTime($val['created_at']);
+            $val['date_format_1'] = $format['date_format_1'];
+            $val['date_format_2'] = $format['date_format_2'];
+            $val['date_format_3'] = $format['date_format_3'];
+            $list[$key] = $val;
+        }
+
+        return $list;
+    }
+
+}

+ 2 - 2
app/Services/Api/MessageService.php

xqd xqd
@@ -146,7 +146,7 @@ class MessageService
                     ->leftJoin('games', 'user_joins.matter_id', '=', 'games.id')
                     ->select(['user_joins.id', 'user_joins.status', 'user_joins.reason', 'games.id as games_id', 'games.name as games_name'])
                     ->where(['user_joins.id' => $v['sub_id']])
-                    ->where('games.begin_time', '<', Carbon::now())
+                    ->where('games.begin_time', '>', Carbon::now())
                     ->whereNull('games.deleted_at')
                     ->first();
                 if ($user_join) {
@@ -192,7 +192,7 @@ class MessageService
                     ->leftJoin('games', 'user_joins.matter_id', '=', 'games.id')
                     ->select(['user_joins.id', 'user_joins.status', 'user_joins.reason', 'games.id as games_id', 'games.name as games_name'])
                     ->where(['user_joins.id' => $v['sub_id']])
-                    ->where('games.begin_time', '<', Carbon::now())
+                    ->where('games.begin_time', '>', Carbon::now())
                     ->whereNull('games.deleted_at')
                     ->first();
                 if ($user_join) {

+ 107 - 0
app/Services/Api/OrderService.php

xqd
@@ -0,0 +1,107 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: Administrator
+ * Date: 22/05/10
+ * Time: 14:23
+ */
+
+namespace App\Services\Api;
+
+use App\Models\Goods;
+use App\Models\GoodsAttr;
+use App\Models\Order;
+use App\Models\UserAddress;
+use Illuminate\Support\Facades\App;
+use Illuminate\Support\Facades\DB;
+use PHPUnit\Util\Exception;
+
+class OrderService
+{
+    //订单提交
+    public static function saveOrder($request, $userId, $goods)
+    {
+        $userAddress = UserAddress::find($request->address_id);
+
+        $order = App::make('getOrderInstance');
+        $order->user_id = $userId;
+        $order->goods_id = $request->goods_id;
+        $order->goods_attr_id = $request->goods_attr_id;
+        $order->num = $request->num;
+        $order->total_integral = $request->integral * $request->num;
+        $order->reamrk = $request->input('remark', '');
+        $order->receiver = $userAddress->name;
+        $order->receiver_address = $userAddress->address;
+        $order->receiver_mobile = $userAddress->mobile;
+        $order->order_no = self::createOrderSn();
+        $order->created_at = date('Y-m-d H:i:s');
+
+        if (!$order->save()) {
+            return false;
+        }
+        return true;
+    }
+
+    //生成单号:年月日时分秒毫秒 + 4位随机数 如 202205101604398525623
+    public static function createOrderSn($prefix = '')
+    {
+        $utimestamp = microtime(true);
+        $timestamp = floor($utimestamp);
+        $milliseconds = round(($utimestamp - $timestamp) * 1000);
+
+        return $prefix . date(preg_replace('`(?<!\\\\)u`', $milliseconds, 'YmdHisu'), $timestamp) . rand(1000, 9999);
+    }
+
+    //获取订单列表
+    public static function getMyOrderList($map = [], $page = 1, $goodsIds = [])
+    {
+        $limit = 20;
+        $offset = ($page - 1) * $limit;
+
+        $query = Order::query()->with('goods:id,name,img,integral');
+
+        if (!empty($goodsIds)) {
+            $query->whereIn('goods_id', $goodsIds);
+        }
+        $list = $query->when($map, function ($query, $map) {
+                $query->where($map);
+            })
+            ->select('id', 'user_id', 'goods_id', 'goods_attr_id', 'order_no', 'num', 'integral', 'created_at')
+            ->offset($offset)
+            ->limit($limit)
+            ->get();
+
+        return $list;
+    }
+
+    //订单信息
+    public static function getOrderDetail($orderId)
+    {
+        $order = Order::query()
+            ->with('goods:id,name,img,integral')
+            ->where('id', $orderId)
+            ->first();
+
+        $order = $order->makeHidden('updated_at', 'deleted_at');
+
+        return $order;
+    }
+
+    //修改收货地址
+    public static function changeAddress($request)
+    {
+        $order = Order::find($request->order_id);
+        $order->name = $request->name;
+        $order->mobile = $request->mobile;
+        $order->address = $request->address;
+
+        // 要考虑跨区收费....
+
+        if (!$order->save()) {
+            return false;
+        }
+
+        return true;
+    }
+
+}

+ 32 - 1
app/Services/Api/UserService.php

xqd xqd xqd
@@ -7,6 +7,7 @@ use App\Models\CourseUser;
 use App\Models\GameUser;
 use App\Models\TeamUser;
 use App\Models\User;
+use App\Models\UserAddress;
 use App\Models\UserExtra;
 use App\Models\UserFollow;
 use App\Models\UserFriend;
@@ -564,7 +565,7 @@ class UserService
     public function getIntegrals($userId, $page)
     {
         $limit = 20;
-        $offset = ($page - 1) * $offset;
+        $offset = ($page - 1) * $limit;
         $list = UserIntegral::query()
             ->where('user_id', $userId)
             ->limit($limit)
@@ -577,9 +578,39 @@ class UserService
         $list = $list->toArray();
         foreach ($list as $key => &$val) {
             $val['type_name'] = UserIntegral::getTypeName($val['type']);
+            $val['for_human_read'] = Carbon::parse($val['created_at'])->diffForHumans();
         }
 
         return $list;
     }
 
+    //用户 添加、编辑 地址
+    public static function saveAddress($request, $userId)
+    {
+        DB::beginTransaction();
+        try {
+            if ($request->filled('id')) { //判断一个值在请求中是否存在,并且不为空
+                $userAddress = UserAddress::find($request->id);
+            } else {
+                $userAddress = App::make('getUserAddressInstance');
+            }
+            if ($request->is_default == 1) {
+                UserAddress::query()->where('user_id', $userId)->update(['is_default' => 0]);
+            }
+            $userAddress->address = $request->adress; //格式如:四川省 成都市 青白江区 凤凰东一路195号
+            $userAddress->user_id = $userId;
+            $userAddress->name = $request->name;
+            $userAddress->mobile = $request->mobile;
+            $userAddress->save();
+
+            DB::commit();
+        } catch (Exception $exception) {
+
+            DB::rollBack();
+            ErrorMsgServive::write($exception, request()->url());
+            return false;
+        }
+
+        return true;
+    }
 }

+ 226 - 1307
public/request.log

xqd
@@ -1,1307 +1,226 @@
-2022-06-20 14:45:24---language-handle-
-2022-06-20 14:48:36---language-handle-
-2022-06-20 14:48:44---language-handle-
-2022-06-20 14:48:52---language-handle-
-2022-06-20 14:48:54---language-handle-
-2022-06-20 14:48:58---language-handle-
-2022-06-20 14:48:58---language-handle-
-2022-06-20 14:48:58---language-handle-
-2022-06-20 14:48:58---language-handle-
-2022-06-20 14:48:58---language-handle-
-2022-06-20 14:48:58---language-handle-
-2022-06-20 14:48:59---language-handle-
-2022-06-20 14:48:59---language-handle-
-2022-06-20 14:49:03---language-handle-
-2022-06-20 14:56:16---language-handle-
-2022-06-20 14:56:18---language-handle-
-2022-06-20 14:56:18---language-handle-
-2022-06-20 14:56:18---language-handle-
-2022-06-20 14:56:18---language-handle-
-2022-06-20 14:56:18---language-handle-
-2022-06-20 14:56:18---language-handle-
-2022-06-20 14:56:19---language-handle-
-2022-06-20 14:56:19---language-handle-
-2022-06-20 14:57:45---language-handle-
-2022-06-20 14:57:46---language-handle-
-2022-06-20 14:57:46---language-handle-
-2022-06-20 14:57:46---language-handle-
-2022-06-20 14:57:46---language-handle-
-2022-06-20 14:57:46---language-handle-
-2022-06-20 14:57:46---language-handle-
-2022-06-20 14:57:47---language-handle-
-2022-06-20 14:57:47---language-handle-
-2022-06-20 14:57:50---language-handle-
-2022-06-20 14:57:53---language-handle-
-2022-06-20 14:57:55---language-handle-
-2022-06-20 14:57:57---language-handle-
-2022-06-20 14:57:57---language-handle-
-2022-06-20 14:57:57---language-handle-
-2022-06-20 14:57:57---language-handle-
-2022-06-20 14:57:57---language-handle-
-2022-06-20 14:57:57---language-handle-
-2022-06-20 14:57:57---language-handle-
-2022-06-20 14:57:57---language-handle-
-2022-06-20 15:38:38---language-handle-
-2022-06-20 15:38:40---language-handle-
-2022-06-20 15:38:44---language-handle-
-2022-06-20 15:39:29---language-handle-
-2022-06-20 15:39:30---language-handle-
-2022-06-20 15:39:39---language-handle-
-2022-06-20 15:48:41---language-handle-
-2022-06-20 15:49:55---language-handle-
-2022-06-20 15:50:27---language-handle-
-2022-06-20 15:51:06---language-handle-
-2022-06-20 15:51:41---language-handle-
-2022-06-20 15:52:00---language-handle-
-2022-06-20 15:52:16---language-handle-
-2022-06-20 15:58:49---language-handle-
-2022-06-20 15:58:58---language-handle-
-2022-06-20 16:00:25---language-handle-
-2022-06-20 16:00:26---language-handle-
-2022-06-20 16:00:40---language-handle-
-2022-06-20 16:01:20---language-handle-
-2022-06-20 16:05:48---language-handle-
-2022-06-20 16:06:38---language-handle-
-2022-06-20 16:06:53---language-handle-
-2022-06-20 16:07:33---language-handle-
-2022-06-20 16:08:27---language-handle-
-2022-06-20 16:08:56---language-handle-
-2022-06-20 16:14:28---language-handle-
-2022-06-20 16:14:55---language-handle-
-2022-06-20 16:14:55---language-handle-
-2022-06-20 16:15:10---language-handle-
-2022-06-20 16:16:51---language-handle-
-2022-06-20 16:17:03---language-handle-
-2022-06-20 16:17:12---language-handle-
-2022-06-20 16:19:06---language-handle-
-2022-06-20 16:19:13---language-handle-
-2022-06-20 16:19:16---language-handle-
-2022-06-20 16:19:24---language-handle-
-2022-06-20 16:19:28---language-handle-
-2022-06-20 16:19:46---language-handle-
-2022-06-20 16:20:03---language-handle-
-2022-06-20 16:20:09---language-handle-
-2022-06-20 16:20:22---language-handle-
-2022-06-20 16:21:13---language-handle-
-2022-06-20 16:22:01---language-handle-
-2022-06-20 16:22:31---language-handle-
-2022-06-20 16:24:12---language-handle-
-2022-06-20 16:26:38---language-handle-
-2022-06-20 16:28:02---language-handle-
-2022-06-20 16:28:46---language-handle-
-2022-06-20 16:29:17---language-handle-
-2022-06-20 16:30:03---language-handle-
-2022-06-20 16:33:02---language-handle-
-2022-06-20 16:33:36---language-handle-
-2022-06-20 16:33:56---language-handle-
-2022-06-20 16:34:38---language-handle-
-2022-06-20 16:36:03---language-handle-
-2022-06-20 16:40:09---language-handle-
-2022-06-20 16:44:07---language-handle-
-2022-06-20 16:44:09---language-handle-
-2022-06-20 16:49:59---language-handle-
-2022-06-20 16:50:31---language-handle-
-2022-06-20 16:51:00---language-handle-
-2022-06-20 16:51:30---language-handle-
-2022-06-20 16:52:19---language-handle-
-2022-06-20 16:53:38---language-handle-
-2022-06-20 16:54:29---language-handle-
-2022-06-20 16:56:13---language-handle-
-2022-06-20 16:56:57---language-handle-
-2022-06-20 16:57:52---language-handle-
-2022-06-20 16:58:43---language-handle-
-2022-06-20 16:59:11---language-handle-
-2022-06-20 16:59:33---language-handle-
-2022-06-20 17:00:03---language-handle-
-2022-06-20 17:00:14---language-handle-
-2022-06-20 17:00:28---language-handle-
-2022-06-20 17:00:50---language-handle-
-2022-06-20 17:03:37---language-handle-
-2022-06-20 17:04:24---language-handle-
-2022-06-20 17:04:46---language-handle-
-2022-06-20 17:05:00---language-handle-
-2022-06-20 17:05:20---language-handle-
-2022-06-20 17:06:22---language-handle-
-2022-06-20 17:06:42---language-handle-
-2022-06-20 17:12:17---language-handle-
-2022-06-20 17:12:22---language-handle-
-2022-06-20 17:13:27---language-handle-
-2022-06-20 17:14:36---language-handle-
-2022-06-20 17:15:00---language-handle-
-2022-06-20 17:16:31---language-handle-
-2022-06-20 17:19:34---language-handle-
-2022-06-20 17:19:56---language-handle-
-2022-06-20 17:20:23---language-handle-
-2022-06-20 17:21:17---language-handle-
-2022-06-20 17:21:44---language-handle-
-2022-06-20 17:22:34---language-handle-
-2022-06-20 17:24:11---language-handle-
-2022-06-20 17:24:34---language-handle-
-2022-06-20 17:26:10---language-handle-
-2022-06-20 17:28:58---language-handle-
-2022-06-20 17:29:24---language-handle-
-2022-06-20 17:33:31---language-handle-
-2022-06-20 17:33:31---language-handle-
-2022-06-20 17:33:31---language-handle-
-2022-06-20 17:33:35---language-handle-
-2022-06-20 17:34:28---language-handle-
-2022-06-20 17:34:45---language-handle-
-2022-06-20 17:34:52---language-handle-
-2022-06-20 17:35:08---language-handle-
-2022-06-20 17:35:28---language-handle-
-2022-06-20 17:35:29---language-handle-
-2022-06-20 17:36:07---language-handle-
-2022-06-20 17:36:13---language-handle-
-2022-06-20 17:36:14---language-handle-
-2022-06-20 17:36:14---language-handle-
-2022-06-20 17:36:15---language-handle-
-2022-06-20 17:36:15---language-handle-
-2022-06-20 17:36:15---language-handle-
-2022-06-20 17:36:15---language-handle-
-2022-06-20 17:36:15---language-handle-
-2022-06-20 17:36:15---language-handle-
-2022-06-20 17:36:17---language-handle-
-2022-06-20 17:36:17---language-handle-
-2022-06-20 17:36:19---language-handle-
-2022-06-20 17:36:20---language-handle-
-2022-06-20 17:36:52---language-handle-
-2022-06-20 17:37:23---language-handle-
-2022-06-20 17:37:25---language-handle-
-2022-06-20 17:38:14---language-handle-
-2022-06-20 17:38:46---language-handle-
-2022-06-20 17:39:14---language-handle-
-2022-06-20 17:40:48---language-handle-
-2022-06-20 17:40:53---language-handle-
-2022-06-20 17:40:55---language-handle-
-2022-06-20 17:40:57---language-handle-
-2022-06-20 17:40:59---language-handle-
-2022-06-20 17:41:50---language-handle-
-2022-06-20 17:41:51---language-handle-
-2022-06-20 17:41:55---language-handle-
-2022-06-20 17:42:28---language-handle-
-2022-06-20 17:43:04---language-handle-
-2022-06-20 17:43:04---language-handle-
-2022-06-20 17:43:04---language-handle-
-2022-06-20 17:43:13---language-handle-
-2022-06-20 17:43:17---language-handle-
-2022-06-20 17:43:18---language-handle-
-2022-06-20 17:43:20---language-handle-
-2022-06-20 17:45:37---language-handle-
-2022-06-20 17:45:39---language-handle-
-2022-06-20 17:45:50---language-handle-
-2022-06-20 17:47:14---language-handle-
-2022-06-20 17:49:01---language-handle-
-2022-06-20 17:50:04---language-handle-
-2022-06-20 17:50:05---language-handle-
-2022-06-20 17:50:06---language-handle-
-2022-06-20 17:50:11---language-handle-
-2022-06-20 17:51:52---language-handle-
-2022-06-20 17:52:02---language-handle-
-2022-06-20 17:52:03---language-handle-
-2022-06-20 17:52:05---language-handle-
-2022-06-20 17:52:07---language-handle-
-2022-06-20 17:52:29---language-handle-
-2022-06-20 17:52:30---language-handle-
-2022-06-20 17:53:01---language-handle-
-2022-06-20 17:53:35---language-handle-
-2022-06-20 17:53:36---language-handle-
-2022-06-20 17:55:04---language-handle-
-2022-06-20 17:58:25---language-handle-
-2022-06-20 17:59:48---language-handle-
-2022-06-20 18:03:22---language-handle-
-2022-06-20 18:03:23---language-handle-
-2022-06-20 18:03:24---language-handle-
-2022-06-20 18:05:25---language-handle-
-2022-06-20 18:06:06---language-handle-
-2022-06-20 18:06:07---language-handle-
-2022-06-20 18:06:25---language-handle-
-2022-06-20 18:07:35---language-handle-
-2022-06-20 18:10:41---language-handle-
-2022-06-21 11:00:25---language-handle-
-2022-06-21 11:00:36---language-handle-
-2022-06-21 11:00:38---language-handle-
-2022-06-21 11:00:40---language-handle-
-2022-06-21 11:00:40---language-handle-
-2022-06-21 11:00:40---language-handle-
-2022-06-21 11:00:40---language-handle-
-2022-06-21 11:00:40---language-handle-
-2022-06-21 11:00:40---language-handle-
-2022-06-21 11:00:41---language-handle-
-2022-06-21 11:00:41---language-handle-
-2022-06-21 11:00:42---language-handle-
-2022-06-21 11:00:45---language-handle-
-2022-06-21 11:00:47---language-handle-
-2022-06-21 11:00:48---language-handle-
-2022-06-21 11:00:48---language-handle-
-2022-06-21 11:00:48---language-handle-
-2022-06-21 11:00:48---language-handle-
-2022-06-21 11:00:48---language-handle-
-2022-06-21 11:00:49---language-handle-
-2022-06-21 11:00:49---language-handle-
-2022-06-21 11:00:54---language-handle-
-2022-06-21 11:00:54---language-handle-
-2022-06-21 11:00:58---language-handle-
-2022-06-21 11:04:02---language-handle-
-2022-06-21 11:04:06---language-handle-
-2022-06-21 11:04:07---language-handle-
-2022-06-21 11:04:16---language-handle-
-2022-06-21 11:05:17---language-handle-
-2022-06-21 11:10:19---language-handle-
-2022-06-21 11:14:08---language-handle-
-2022-06-21 11:14:09---language-handle-
-2022-06-21 11:14:13---language-handle-
-2022-06-21 11:15:15---language-handle-
-2022-06-21 11:15:16---language-handle-
-2022-06-21 11:15:19---language-handle-
-2022-06-21 11:15:22---language-handle-
-2022-06-21 11:15:23---language-handle-
-2022-06-21 11:16:17---language-handle-
-2022-06-21 11:16:18---language-handle-
-2022-06-21 11:16:21---language-handle-
-2022-06-21 11:16:22---language-handle-
-2022-06-21 11:27:57---language-handle-
-2022-06-21 11:29:09---language-handle-
-2022-06-21 11:30:20---language-handle-
-2022-06-21 11:35:30---language-handle-
-2022-06-21 11:36:03---language-handle-
-2022-06-21 11:37:00---language-handle-
-2022-06-21 11:37:13---language-handle-
-2022-06-21 11:37:26---language-handle-
-2022-06-21 11:37:59---language-handle-
-2022-06-21 11:38:51---language-handle-
-2022-06-21 11:39:38---language-handle-
-2022-06-21 11:39:58---language-handle-
-2022-06-21 14:09:56---language-handle-
-2022-06-21 14:10:04---language-handle-
-2022-06-21 14:10:14---language-handle-
-2022-06-21 14:10:17---language-handle-
-2022-06-21 14:10:26---language-handle-
-2022-06-21 14:10:36---language-handle-
-2022-06-21 14:10:38---language-handle-
-2022-06-21 14:10:40---language-handle-
-2022-06-21 14:10:40---language-handle-
-2022-06-21 14:10:40---language-handle-
-2022-06-21 14:10:40---language-handle-
-2022-06-21 14:10:40---language-handle-
-2022-06-21 14:10:40---language-handle-
-2022-06-21 14:10:41---language-handle-
-2022-06-21 14:10:41---language-handle-
-2022-06-21 14:10:41---language-handle-
-2022-06-21 14:10:45---language-handle-
-2022-06-21 14:10:46---language-handle-
-2022-06-21 14:10:48---language-handle-
-2022-06-21 14:10:48---language-handle-
-2022-06-21 14:10:48---language-handle-
-2022-06-21 14:10:48---language-handle-
-2022-06-21 14:10:48---language-handle-
-2022-06-21 14:10:48---language-handle-
-2022-06-21 14:10:49---language-handle-
-2022-06-21 14:10:49---language-handle-
-2022-06-21 14:10:54---language-handle-
-2022-06-21 14:10:55---language-handle-
-2022-06-21 14:11:12---language-handle-
-2022-06-21 14:12:32---language-handle-
-2022-06-21 14:19:37---language-handle-
-2022-06-21 14:33:45---language-handle-
-2022-06-21 14:40:58---language-handle-
-2022-06-21 14:46:15---language-handle-
-2022-06-21 14:55:33---language-handle-
-2022-06-21 14:57:00---language-handle-
-2022-06-21 14:57:25---language-handle-
-2022-06-21 14:58:02---language-handle-
-2022-06-21 14:58:31---language-handle-
-2022-06-21 15:08:30---language-handle-
-2022-06-21 15:13:32---language-handle-
-2022-06-21 15:14:20---language-handle-
-2022-06-21 15:15:13---language-handle-
-2022-06-21 15:16:36---language-handle-
-2022-06-21 15:17:42---language-handle-
-2022-06-21 15:24:53---language-handle-
-2022-06-21 15:27:17---language-handle-
-2022-06-21 15:29:17---language-handle-
-2022-06-21 15:30:07---language-handle-
-2022-06-21 15:30:15---language-handle-
-2022-06-21 15:30:15---language-handle-
-2022-06-21 15:30:17---language-handle-
-2022-06-21 15:30:18---language-handle-
-2022-06-21 15:30:21---language-handle-
-2022-06-21 15:30:42---language-handle-
-2022-06-21 15:41:57---language-handle-
-2022-06-21 15:42:46---language-handle-
-2022-06-21 15:44:56---language-handle-
-2022-06-21 15:46:11---language-handle-
-2022-06-21 15:49:31---language-handle-
-2022-06-21 15:50:26---language-handle-
-2022-06-21 15:51:39---language-handle-
-2022-06-21 15:51:53---language-handle-
-2022-06-21 15:52:32---language-handle-
-2022-06-21 15:52:56---language-handle-
-2022-06-21 16:12:31---language-handle-
-2022-06-21 16:16:01---language-handle-
-2022-06-21 16:16:05---language-handle-
-2022-06-21 16:16:54---language-handle-
-2022-06-21 16:17:04---language-handle-
-2022-06-21 16:20:55---language-handle-
-2022-06-21 16:20:59---language-handle-
-2022-06-21 16:21:04---language-handle-
-2022-06-21 16:22:20---language-handle-
-2022-06-21 16:22:24---language-handle-
-2022-06-21 16:24:59---language-handle-
-2022-06-21 16:25:02---language-handle-
-2022-06-21 16:25:16---language-handle-
-2022-06-21 16:27:10---language-handle-
-2022-06-21 16:27:14---language-handle-
-2022-06-21 16:28:14---language-handle-
-2022-06-21 16:29:13---language-handle-
-2022-06-21 16:29:16---language-handle-
-2022-06-21 16:30:47---language-handle-
-2022-06-21 16:30:51---language-handle-
-2022-06-21 16:31:04---language-handle-
-2022-06-21 16:32:04---language-handle-
-2022-06-21 16:32:09---language-handle-
-2022-06-21 16:32:12---language-handle-
-2022-06-21 16:35:54---language-handle-
-2022-06-21 16:35:57---language-handle-
-2022-06-21 16:37:17---language-handle-
-2022-06-21 16:37:44---language-handle-
-2022-06-21 16:37:49---language-handle-
-2022-06-21 16:42:06---language-handle-
-2022-06-21 16:42:10---language-handle-
-2022-06-21 16:42:21---language-handle-
-2022-06-21 16:43:52---language-handle-
-2022-06-21 16:43:55---language-handle-
-2022-06-21 16:44:49---language-handle-
-2022-06-21 16:44:52---language-handle-
-2022-06-21 16:44:56---language-handle-
-2022-06-21 16:44:58---language-handle-
-2022-06-21 16:46:04---language-handle-
-2022-06-21 16:46:07---language-handle-
-2022-06-21 16:46:08---language-handle-
-2022-06-21 16:47:01---language-handle-
-2022-06-21 16:54:09---language-handle-
-2022-06-21 16:54:13---language-handle-
-2022-06-21 16:54:21---language-handle-
-2022-06-21 16:54:22---language-handle-
-2022-06-21 16:54:35---language-handle-
-2022-06-21 16:54:38---language-handle-
-2022-06-21 16:54:44---language-handle-
-2022-06-21 16:54:45---language-handle-
-2022-06-21 16:58:54---language-handle-
-2022-06-21 16:58:59---language-handle-
-2022-06-21 17:02:37---language-handle-
-2022-06-21 17:03:11---language-handle-
-2022-06-21 17:03:43---language-handle-
-2022-06-21 17:04:17---language-handle-
-2022-06-21 17:06:22---language-handle-
-2022-06-21 17:07:21---language-handle-
-2022-06-21 17:07:38---language-handle-
-2022-06-21 17:08:20---language-handle-
-2022-06-21 17:10:16---language-handle-
-2022-06-21 17:12:17---language-handle-
-2022-06-21 17:15:39---language-handle-
-2022-06-21 17:18:53---language-handle-
-2022-06-21 17:19:20---language-handle-
-2022-06-21 17:21:58---language-handle-
-2022-06-21 17:28:13---language-handle-
-2022-06-21 17:29:21---language-handle-
-2022-06-21 17:32:38---language-handle-
-2022-06-21 17:33:16---language-handle-
-2022-06-21 17:34:15---language-handle-
-2022-06-21 17:35:37---language-handle-
-2022-06-21 17:36:23---language-handle-
-2022-06-21 17:37:04---language-handle-
-2022-06-21 17:38:38---language-handle-
-2022-06-21 17:38:52---language-handle-
-2022-06-21 17:39:25---language-handle-
-2022-06-21 17:39:40---language-handle-
-2022-06-21 17:40:08---language-handle-
-2022-06-21 17:40:26---language-handle-
-2022-06-21 17:40:34---language-handle-
-2022-06-21 17:40:46---language-handle-
-2022-06-21 17:41:29---language-handle-
-2022-06-21 17:41:50---language-handle-
-2022-06-21 17:42:13---language-handle-
-2022-06-21 17:42:48---language-handle-
-2022-06-21 17:44:04---language-handle-
-2022-06-21 17:47:13---language-handle-
-2022-06-21 17:47:31---language-handle-
-2022-06-21 17:47:46---language-handle-
-2022-06-21 19:06:51---language-handle-
-2022-06-21 19:06:54---language-handle-
-2022-06-21 19:06:56---language-handle-
-2022-06-21 19:12:20---language-handle-
-2022-06-21 19:12:39---language-handle-
-2022-06-21 19:12:57---language-handle-
-2022-06-21 19:14:41---language-handle-
-2022-06-21 19:16:07---language-handle-
-2022-06-21 19:24:33---language-handle-
-2022-06-21 19:26:37---language-handle-
-2022-06-21 19:30:01---language-handle-
-2022-06-21 19:30:12---language-handle-
-2022-06-21 19:30:13---language-handle-
-2022-06-21 19:31:55---language-handle-
-2022-06-21 19:31:56---language-handle-
-2022-06-21 19:32:59---language-handle-
-2022-06-21 19:33:00---language-handle-
-2022-06-21 19:33:10---language-handle-
-2022-06-21 19:33:12---language-handle-
-2022-06-21 19:35:03---language-handle-
-2022-06-21 19:35:04---language-handle-
-2022-06-21 19:35:23---language-handle-
-2022-06-21 19:35:24---language-handle-
-2022-06-21 19:35:31---language-handle-
-2022-06-21 19:36:49---language-handle-
-2022-06-21 19:37:49---language-handle-
-2022-06-21 19:38:49---language-handle-
-2022-06-21 19:39:02---language-handle-
-2022-06-21 19:39:03---language-handle-
-2022-06-21 19:39:56---language-handle-
-2022-06-21 19:40:11---language-handle-
-2022-06-21 19:41:15---language-handle-
-2022-06-21 19:41:40---language-handle-
-2022-06-21 19:47:29---language-handle-
-2022-06-21 19:59:41---language-handle-
-2022-06-21 20:05:45---language-handle-
-2022-06-21 20:05:58---language-handle-
-2022-06-21 20:06:01---language-handle-
-2022-06-21 20:06:28---language-handle-
-2022-06-21 20:07:03---language-handle-
-2022-06-21 20:07:27---language-handle-
-2022-06-21 20:08:56---language-handle-
-2022-06-21 20:09:01---language-handle-
-2022-06-21 20:14:37---language-handle-
-2022-06-21 20:16:27---language-handle-
-2022-06-21 20:16:47---language-handle-
-2022-06-21 20:18:11---language-handle-
-2022-06-21 20:18:29---language-handle-
-2022-06-21 20:18:51---language-handle-
-2022-06-21 20:18:56---language-handle-
-2022-06-21 20:18:59---language-handle-
-2022-06-21 20:19:01---language-handle-
-2022-06-21 20:20:47---language-handle-
-2022-06-21 20:20:52---language-handle-
-2022-06-21 20:20:52---language-handle-
-2022-06-21 20:23:08---language-handle-
-2022-06-21 20:23:10---language-handle-
-2022-06-21 20:23:36---language-handle-
-2022-06-21 20:26:08---language-handle-
-2022-06-21 20:26:35---language-handle-
-2022-06-21 20:27:23---language-handle-
-2022-06-21 20:27:24---language-handle-
-2022-06-21 20:31:14---language-handle-
-2022-06-21 20:35:02---language-handle-
-2022-06-21 20:35:28---language-handle-
-2022-06-21 20:36:13---language-handle-
-2022-06-21 20:36:14---language-handle-
-2022-06-21 20:39:08---language-handle-
-2022-06-21 20:40:07---language-handle-
-2022-06-21 20:41:54---language-handle-
-2022-06-21 20:42:41---language-handle-
-2022-06-21 20:44:32---language-handle-
-2022-06-21 20:44:46---language-handle-
-2022-06-21 20:45:11---language-handle-
-2022-06-21 20:46:49---language-handle-
-2022-06-21 20:47:56---language-handle-
-2022-06-21 20:58:08---language-handle-
-2022-06-21 20:58:39---language-handle-
-2022-06-21 20:59:55---language-handle-
-2022-06-21 21:01:14---language-handle-
-2022-06-22 09:24:49---language-handle-
-2022-06-22 09:24:59---language-handle-
-2022-06-22 09:25:01---language-handle-
-2022-06-22 09:25:03---language-handle-
-2022-06-22 09:25:03---language-handle-
-2022-06-22 09:25:03---language-handle-
-2022-06-22 09:25:03---language-handle-
-2022-06-22 09:25:03---language-handle-
-2022-06-22 09:25:04---language-handle-
-2022-06-22 09:25:04---language-handle-
-2022-06-22 09:25:04---language-handle-
-2022-06-22 09:25:05---language-handle-
-2022-06-22 09:25:08---language-handle-
-2022-06-22 09:25:10---language-handle-
-2022-06-22 09:25:12---language-handle-
-2022-06-22 09:25:12---language-handle-
-2022-06-22 09:25:12---language-handle-
-2022-06-22 09:25:12---language-handle-
-2022-06-22 09:25:12---language-handle-
-2022-06-22 09:25:13---language-handle-
-2022-06-22 09:25:13---language-handle-
-2022-06-22 09:25:13---language-handle-
-2022-06-22 09:25:20---language-handle-
-2022-06-22 09:25:22---language-handle-
-2022-06-22 09:28:56---language-handle-
-2022-06-22 09:29:02---language-handle-
-2022-06-22 09:29:49---language-handle-
-2022-06-22 09:48:46---language-handle-
-2022-06-22 10:11:57---language-handle-
-2022-06-22 10:14:28---language-handle-
-2022-06-22 10:14:41---language-handle-
-2022-06-22 10:15:20---language-handle-
-2022-06-22 10:15:24---language-handle-
-2022-06-22 10:15:28---language-handle-
-2022-06-22 10:19:59---language-handle-
-2022-06-22 10:20:03---language-handle-
-2022-06-22 10:20:46---language-handle-
-2022-06-22 10:21:09---language-handle-
-2022-06-22 10:21:22---language-handle-
-2022-06-22 10:28:05---language-handle-
-2022-06-22 10:28:41---language-handle-
-2022-06-22 10:41:25---language-handle-
-2022-06-22 10:41:58---language-handle-
-2022-06-22 10:44:20---language-handle-
-2022-06-22 10:47:51---language-handle-
-2022-06-22 10:47:57---language-handle-
-2022-06-22 10:48:18---language-handle-
-2022-06-22 10:48:30---language-handle-
-2022-06-22 10:49:27---language-handle-
-2022-06-22 10:51:32---language-handle-
-2022-06-22 11:01:18---language-handle-
-2022-06-22 11:03:50---language-handle-
-2022-06-22 11:07:15---language-handle-
-2022-06-22 11:07:50---language-handle-
-2022-06-22 11:08:31---language-handle-
-2022-06-22 11:08:49---language-handle-
-2022-06-22 11:09:09---language-handle-
-2022-06-22 11:09:36---language-handle-
-2022-06-22 11:10:37---language-handle-
-2022-06-22 11:11:04---language-handle-
-2022-06-22 11:11:48---language-handle-
-2022-06-22 11:14:44---language-handle-
-2022-06-22 11:14:46---language-handle-
-2022-06-22 11:15:07---language-handle-
-2022-06-22 11:15:39---language-handle-
-2022-06-22 11:18:28---language-handle-
-2022-06-22 11:18:37---language-handle-
-2022-06-22 11:18:46---language-handle-
-2022-06-22 11:19:05---language-handle-
-2022-06-22 11:19:08---language-handle-
-2022-06-22 11:19:13---language-handle-
-2022-06-22 11:19:14---language-handle-
-2022-06-22 11:19:56---language-handle-
-2022-06-22 11:20:07---language-handle-
-2022-06-22 11:20:18---language-handle-
-2022-06-22 11:20:48---language-handle-
-2022-06-22 11:21:12---language-handle-
-2022-06-22 11:21:26---language-handle-
-2022-06-22 11:22:54---language-handle-
-2022-06-22 11:24:10---language-handle-
-2022-06-22 11:24:13---language-handle-
-2022-06-22 11:24:16---language-handle-
-2022-06-22 11:25:08---language-handle-
-2022-06-22 11:25:27---language-handle-
-2022-06-22 11:27:43---language-handle-
-2022-06-22 11:27:50---language-handle-
-2022-06-22 11:27:53---language-handle-
-2022-06-22 11:28:01---language-handle-
-2022-06-22 11:28:09---language-handle-
-2022-06-22 11:28:25---language-handle-
-2022-06-22 11:29:21---language-handle-
-2022-06-22 11:29:26---language-handle-
-2022-06-22 11:29:27---language-handle-
-2022-06-22 11:29:37---language-handle-
-2022-06-22 11:30:40---language-handle-
-2022-06-22 11:30:53---language-handle-
-2022-06-22 11:31:43---language-handle-
-2022-06-22 11:35:15---language-handle-
-2022-06-22 11:35:35---language-handle-
-2022-06-22 11:36:47---language-handle-
-2022-06-22 11:37:03---language-handle-
-2022-06-22 11:37:05---language-handle-
-2022-06-22 11:38:48---language-handle-
-2022-06-22 11:39:06---language-handle-
-2022-06-22 11:43:17---language-handle-
-2022-06-22 11:43:58---language-handle-
-2022-06-22 11:44:05---language-handle-
-2022-06-22 11:44:08---language-handle-
-2022-06-22 11:44:56---language-handle-
-2022-06-22 11:44:59---language-handle-
-2022-06-22 11:45:02---language-handle-
-2022-06-22 11:45:07---language-handle-
-2022-06-22 11:45:09---language-handle-
-2022-06-22 11:45:36---language-handle-
-2022-06-22 11:45:40---language-handle-
-2022-06-22 11:46:33---language-handle-
-2022-06-22 11:46:39---language-handle-
-2022-06-22 11:46:50---language-handle-
-2022-06-22 11:46:53---language-handle-
-2022-06-22 11:46:58---language-handle-
-2022-06-22 11:48:01---language-handle-
-2022-06-22 11:48:36---language-handle-
-2022-06-22 11:48:38---language-handle-
-2022-06-22 11:48:43---language-handle-
-2022-06-22 11:48:48---language-handle-
-2022-06-22 11:50:33---language-handle-
-2022-06-22 11:50:55---language-handle-
-2022-06-22 11:51:04---language-handle-
-2022-06-22 11:51:20---language-handle-
-2022-06-22 11:51:27---language-handle-
-2022-06-22 11:51:35---language-handle-
-2022-06-22 11:58:17---language-handle-
-2022-06-22 11:58:27---language-handle-
-2022-06-22 11:59:10---language-handle-
-2022-06-22 11:59:29---language-handle-
-2022-06-22 12:00:06---language-handle-
-2022-06-22 12:00:36---language-handle-
-2022-06-22 13:37:05---language-handle-
-2022-06-22 13:52:43---language-handle-
-2022-06-22 13:53:34---language-handle-
-2022-06-22 13:59:01---language-handle-
-2022-06-22 14:00:00---language-handle-
-2022-06-22 14:02:03---language-handle-
-2022-06-22 14:03:59---language-handle-
-2022-06-22 14:04:11---language-handle-
-2022-06-22 14:05:08---language-handle-
-2022-06-22 14:06:39---language-handle-
-2022-06-22 14:06:49---language-handle-
-2022-06-22 14:07:11---language-handle-
-2022-06-22 14:07:23---language-handle-
-2022-06-22 14:07:32---language-handle-
-2022-06-22 14:08:47---language-handle-
-2022-06-22 14:10:05---language-handle-
-2022-06-22 14:13:02---language-handle-
-2022-06-22 14:15:33---language-handle-
-2022-06-22 14:15:58---language-handle-
-2022-06-22 14:19:18---language-handle-
-2022-06-22 14:19:45---language-handle-
-2022-06-22 14:20:21---language-handle-
-2022-06-22 14:20:28---language-handle-
-2022-06-22 14:20:33---language-handle-
-2022-06-22 14:20:56---language-handle-
-2022-06-22 14:21:09---language-handle-
-2022-06-22 14:21:31---language-handle-
-2022-06-22 14:22:08---language-handle-
-2022-06-22 14:23:01---language-handle-
-2022-06-22 14:23:20---language-handle-
-2022-06-22 14:23:35---language-handle-
-2022-06-22 14:23:53---language-handle-
-2022-06-22 14:24:05---language-handle-
-2022-06-22 14:24:25---language-handle-
-2022-06-22 14:24:44---language-handle-
-2022-06-22 14:24:58---language-handle-
-2022-06-22 14:25:32---language-handle-
-2022-06-22 14:25:47---language-handle-
-2022-06-22 14:27:09---language-handle-
-2022-06-22 14:27:25---language-handle-
-2022-06-22 14:32:41---language-handle-
-2022-06-22 14:32:48---language-handle-
-2022-06-22 14:33:07---language-handle-
-2022-06-22 14:33:12---language-handle-
-2022-06-22 14:33:41---language-handle-
-2022-06-22 14:33:45---language-handle-
-2022-06-22 14:34:08---language-handle-
-2022-06-22 14:34:26---language-handle-
-2022-06-22 14:35:30---language-handle-
-2022-06-22 14:35:42---language-handle-
-2022-06-22 14:35:44---language-handle-
-2022-06-22 14:36:08---language-handle-
-2022-06-22 14:36:11---language-handle-
-2022-06-22 14:36:18---language-handle-
-2022-06-22 14:36:39---language-handle-
-2022-06-22 14:36:41---language-handle-
-2022-06-22 14:36:50---language-handle-
-2022-06-22 14:36:52---language-handle-
-2022-06-22 14:36:59---language-handle-
-2022-06-22 14:40:48---language-handle-
-2022-06-22 14:40:57---language-handle-
-2022-06-22 14:41:00---language-handle-
-2022-06-22 14:41:04---language-handle-
-2022-06-22 14:41:09---language-handle-
-2022-06-22 14:41:12---language-handle-
-2022-06-22 14:41:14---language-handle-
-2022-06-22 14:41:18---language-handle-
-2022-06-22 14:41:20---language-handle-
-2022-06-22 14:41:25---language-handle-
-2022-06-22 14:42:18---language-handle-
-2022-06-22 14:42:38---language-handle-
-2022-06-22 14:43:07---language-handle-
-2022-06-22 14:43:34---language-handle-
-2022-06-22 14:43:53---language-handle-
-2022-06-22 14:43:57---language-handle-
-2022-06-22 14:44:40---language-handle-
-2022-06-22 14:44:41---language-handle-
-2022-06-22 14:44:49---language-handle-
-2022-06-22 14:46:08---language-handle-
-2022-06-22 14:47:24---language-handle-
-2022-06-22 14:47:46---language-handle-
-2022-06-22 14:48:16---language-handle-
-2022-06-22 14:48:38---language-handle-
-2022-06-22 14:51:12---language-handle-
-2022-06-22 14:51:30---language-handle-
-2022-06-22 14:52:17---language-handle-
-2022-06-22 14:52:49---language-handle-
-2022-06-22 14:53:03---language-handle-
-2022-06-22 14:54:21---language-handle-
-2022-06-22 14:55:49---language-handle-
-2022-06-22 14:56:26---language-handle-
-2022-06-22 14:56:54---language-handle-
-2022-06-22 14:57:41---language-handle-
-2022-06-22 14:58:32---language-handle-
-2022-06-22 14:58:42---language-handle-
-2022-06-22 15:01:06---language-handle-
-2022-06-22 15:01:13---language-handle-
-2022-06-22 15:01:29---language-handle-
-2022-06-22 15:01:39---language-handle-
-2022-06-22 15:03:10---language-handle-
-2022-06-22 15:04:40---language-handle-
-2022-06-22 15:04:50---language-handle-
-2022-06-22 15:05:13---language-handle-
-2022-06-22 15:05:24---language-handle-
-2022-06-22 15:10:24---language-handle-
-2022-06-22 15:10:52---language-handle-
-2022-06-22 15:11:04---language-handle-
-2022-06-22 15:11:06---language-handle-
-2022-06-22 15:12:17---language-handle-
-2022-06-22 15:12:19---language-handle-
-2022-06-22 15:12:24---language-handle-
-2022-06-22 15:12:46---language-handle-
-2022-06-22 15:12:49---language-handle-
-2022-06-22 15:13:40---language-handle-
-2022-06-22 15:14:16---language-handle-
-2022-06-22 15:14:18---language-handle-
-2022-06-22 15:14:21---language-handle-
-2022-06-22 15:14:23---language-handle-
-2022-06-22 15:16:42---language-handle-
-2022-06-22 15:16:45---language-handle-
-2022-06-22 15:16:52---language-handle-
-2022-06-22 15:16:55---language-handle-
-2022-06-22 15:18:25---language-handle-
-2022-06-22 16:11:06---language-handle-
-2022-06-22 16:11:13---language-handle-
-2022-06-22 16:11:18---language-handle-
-2022-06-22 16:11:20---language-handle-
-2022-06-22 16:11:25---language-handle-
-2022-06-22 16:11:29---language-handle-
-2022-06-22 16:11:32---language-handle-
-2022-06-22 17:26:46---language-handle-
-2022-06-22 17:26:52---language-handle-
-2022-06-22 17:37:35---language-handle-
-2022-06-22 17:37:41---language-handle-
-2022-06-22 17:37:49---language-handle-
-2022-06-22 17:37:59---language-handle-
-2022-06-22 17:52:11---language-handle-
-2022-06-22 17:53:22---language-handle-
-2022-06-22 17:53:32---language-handle-
-2022-06-22 17:53:42---language-handle-
-2022-06-22 17:53:44---language-handle-
-2022-06-22 17:55:46---language-handle-
-2022-06-22 17:55:55---language-handle-
-2022-06-22 17:57:09---language-handle-
-2022-06-22 17:57:48---language-handle-
-2022-06-22 17:57:49---language-handle-
-2022-06-22 18:02:28---language-handle-
-2022-06-22 18:02:48---language-handle-
-2022-06-22 18:02:49---language-handle-
-2022-06-22 18:04:40---language-handle-
-2022-06-22 18:04:41---language-handle-
-2022-06-22 18:04:45---language-handle-
-2022-06-22 18:05:42---language-handle-
-2022-06-22 18:05:44---language-handle-
-2022-06-22 18:05:54---language-handle-
-2022-06-22 18:05:56---language-handle-
-2022-06-22 18:06:20---language-handle-
-2022-06-22 18:06:21---language-handle-
-2022-06-22 18:06:38---language-handle-
-2022-06-22 18:06:49---language-handle-
-2022-06-22 18:06:53---language-handle-
-2022-06-22 18:06:56---language-handle-
-2022-06-22 18:07:16---language-handle-
-2022-06-22 18:08:15---language-handle-
-2022-06-22 18:09:13---language-handle-
-2022-06-22 18:09:14---language-handle-
-2022-06-22 18:09:17---language-handle-
-2022-06-22 18:10:14---language-handle-
-2022-06-23 09:05:03---language-handle-
-2022-06-23 09:05:28---language-handle-
-2022-06-23 09:05:31---language-handle-
-2022-06-23 09:11:18---language-handle-
-2022-06-23 09:11:20---language-handle-
-2022-06-23 09:11:23---language-handle-
-2022-06-23 09:11:23---language-handle-
-2022-06-23 09:11:23---language-handle-
-2022-06-23 09:11:23---language-handle-
-2022-06-23 09:11:23---language-handle-
-2022-06-23 09:11:23---language-handle-
-2022-06-23 09:11:24---language-handle-
-2022-06-23 09:11:24---language-handle-
-2022-06-23 09:11:24---language-handle-
-2022-06-23 09:11:28---language-handle-
-2022-06-23 09:11:29---language-handle-
-2022-06-23 09:11:31---language-handle-
-2022-06-23 09:11:31---language-handle-
-2022-06-23 09:11:31---language-handle-
-2022-06-23 09:11:31---language-handle-
-2022-06-23 09:11:31---language-handle-
-2022-06-23 09:11:31---language-handle-
-2022-06-23 09:11:32---language-handle-
-2022-06-23 09:11:32---language-handle-
-2022-06-23 09:11:44---language-handle-
-2022-06-23 09:11:50---language-handle-
-2022-06-23 09:12:06---language-handle-
-2022-06-23 10:20:24---language-handle-
-2022-06-23 10:20:30---language-handle-
-2022-06-23 10:20:33---language-handle-
-2022-06-23 10:20:37---language-handle-
-2022-06-23 10:20:41---language-handle-
-2022-06-23 10:20:42---language-handle-
-2022-06-23 10:20:45---language-handle-
-2022-06-23 10:20:48---language-handle-
-2022-06-23 10:21:15---language-handle-
-2022-06-23 10:21:19---language-handle-
-2022-06-23 10:21:21---language-handle-
-2022-06-23 10:21:22---language-handle-
-2022-06-23 10:21:34---language-handle-
-2022-06-23 10:21:37---language-handle-
-2022-06-23 10:22:06---language-handle-
-2022-06-23 10:22:15---language-handle-
-2022-06-23 10:22:21---language-handle-
-2022-06-23 10:22:23---language-handle-
-2022-06-23 10:22:43---language-handle-
-2022-06-23 10:23:05---language-handle-
-2022-06-23 10:23:06---language-handle-
-2022-06-23 10:30:33---language-handle-
-2022-06-23 10:30:40---language-handle-
-2022-06-23 10:30:44---language-handle-
-2022-06-23 10:30:49---language-handle-
-2022-06-23 10:30:57---language-handle-
-2022-06-23 10:31:03---language-handle-
-2022-06-23 10:31:09---language-handle-
-2022-06-23 10:31:17---language-handle-
-2022-06-23 10:31:22---language-handle-
-2022-06-23 10:31:41---language-handle-
-2022-06-23 10:31:43---language-handle-
-2022-06-23 10:31:46---language-handle-
-2022-06-23 10:31:47---language-handle-
-2022-06-23 10:32:00---language-handle-
-2022-06-23 10:32:05---language-handle-
-2022-06-23 10:32:34---language-handle-
-2022-06-23 11:07:06---language-handle-
-2022-06-23 11:07:27---language-handle-
-2022-06-23 11:07:48---language-handle-
-2022-06-23 11:10:06---language-handle-
-2022-06-23 11:10:07---language-handle-
-2022-06-23 11:10:10---language-handle-
-2022-06-23 11:10:13---language-handle-
-2022-06-23 11:10:28---language-handle-
-2022-06-23 11:10:30---language-handle-
-2022-06-23 11:10:44---language-handle-
-2022-06-23 11:10:51---language-handle-
-2022-06-23 11:10:56---language-handle-
-2022-06-23 11:11:10---language-handle-
-2022-06-23 11:11:11---language-handle-
-2022-06-23 11:11:20---language-handle-
-2022-06-23 11:14:08---language-handle-
-2022-06-23 11:14:12---language-handle-
-2022-06-23 11:14:53---language-handle-
-2022-06-23 11:15:29---language-handle-
-2022-06-23 11:15:39---language-handle-
-2022-06-23 11:15:43---language-handle-
-2022-06-23 11:16:02---language-handle-
-2022-06-23 11:16:32---language-handle-
-2022-06-23 11:17:21---language-handle-
-2022-06-23 11:22:41---language-handle-
-2022-06-23 11:22:47---language-handle-
-2022-06-23 11:23:41---language-handle-
-2022-06-23 11:23:45---language-handle-
-2022-06-23 11:23:55---language-handle-
-2022-06-23 15:09:16---language-handle-
-2022-06-23 15:26:02---language-handle-
-2022-06-23 15:26:04---language-handle-
-2022-06-23 15:26:07---language-handle-
-2022-06-23 15:26:07---language-handle-
-2022-06-23 15:26:07---language-handle-
-2022-06-23 15:26:07---language-handle-
-2022-06-23 15:26:07---language-handle-
-2022-06-23 15:26:07---language-handle-
-2022-06-23 15:26:08---language-handle-
-2022-06-23 15:26:08---language-handle-
-2022-06-23 15:26:11---language-handle-
-2022-06-23 15:28:33---language-handle-
-2022-06-23 15:28:36---language-handle-
-2022-06-23 15:28:38---language-handle-
-2022-06-23 15:28:40---language-handle-
-2022-06-23 15:28:40---language-handle-
-2022-06-23 15:28:40---language-handle-
-2022-06-23 15:28:40---language-handle-
-2022-06-23 15:28:40---language-handle-
-2022-06-23 15:28:40---language-handle-
-2022-06-23 15:28:41---language-handle-
-2022-06-23 15:28:41---language-handle-
-2022-06-23 16:15:13---language-handle-
-2022-06-23 16:15:22---language-handle-
-2022-06-23 16:15:23---language-handle-
-2022-06-23 16:17:16---language-handle-
-2022-06-23 16:17:18---language-handle-
-2022-06-23 16:22:00---language-handle-
-2022-06-23 16:22:24---language-handle-
-2022-06-23 16:22:32---language-handle-
-2022-06-23 16:23:37---language-handle-
-2022-06-23 16:27:01---language-handle-
-2022-06-23 16:29:43---language-handle-
-2022-06-23 16:30:24---language-handle-
-2022-06-23 16:31:34---language-handle-
-2022-06-23 16:31:47---language-handle-
-2022-06-23 16:33:42---language-handle-
-2022-06-23 16:34:42---language-handle-
-2022-06-23 16:35:24---language-handle-
-2022-06-23 16:37:10---language-handle-
-2022-06-23 16:37:41---language-handle-
-2022-06-23 16:39:06---language-handle-
-2022-06-23 16:42:29---language-handle-
-2022-06-23 16:42:50---language-handle-
-2022-06-23 16:43:42---language-handle-
-2022-06-23 16:44:06---language-handle-
-2022-06-23 16:44:50---language-handle-
-2022-06-23 16:46:19---language-handle-
-2022-06-23 16:47:01---language-handle-
-2022-06-23 16:48:21---language-handle-
-2022-06-23 16:48:27---language-handle-
-2022-06-23 16:48:31---language-handle-
-2022-06-23 16:49:13---language-handle-
-2022-06-23 16:49:16---language-handle-
-2022-06-23 16:49:18---language-handle-
-2022-06-23 16:50:13---language-handle-
-2022-06-23 16:50:17---language-handle-
-2022-06-23 16:54:02---language-handle-
-2022-06-23 17:02:07---language-handle-
-2022-06-23 17:03:38---language-handle-
-2022-06-23 17:04:34---language-handle-
-2022-06-23 17:05:09---language-handle-
-2022-06-23 17:06:05---language-handle-
-2022-06-23 17:07:07---language-handle-
-2022-06-23 17:21:15---language-handle-
-2022-06-23 17:21:23---language-handle-
-2022-06-23 17:21:26---language-handle-
-2022-06-23 17:21:51---language-handle-
-2022-06-23 17:22:03---language-handle-
-2022-06-23 17:22:05---language-handle-
-2022-06-23 17:22:13---language-handle-
-2022-06-23 17:22:17---language-handle-
-2022-06-23 17:22:25---language-handle-
-2022-06-23 17:22:45---language-handle-
-2022-06-23 17:22:57---language-handle-
-2022-06-23 17:22:59---language-handle-
-2022-06-23 17:23:23---language-handle-
-2022-06-23 17:23:24---language-handle-
-2022-06-23 17:23:33---language-handle-
-2022-06-23 17:24:12---language-handle-
-2022-06-23 17:26:43---language-handle-
-2022-06-23 17:27:02---language-handle-
-2022-06-23 17:27:13---language-handle-
-2022-06-23 17:27:16---language-handle-
-2022-06-23 17:27:37---language-handle-
-2022-06-23 17:27:39---language-handle-
-2022-06-23 17:31:30---language-handle-
-2022-06-23 17:31:57---language-handle-
-2022-06-23 17:32:41---language-handle-
-2022-06-23 17:33:10---language-handle-
-2022-06-23 17:33:37---language-handle-
-2022-06-23 17:37:23---language-handle-
-2022-06-23 17:37:44---language-handle-
-2022-06-23 17:38:19---language-handle-
-2022-06-23 17:59:13---language-handle-
-2022-06-23 19:14:55---language-handle-
-2022-06-23 19:15:02---language-handle-
-2022-06-23 19:16:12---language-handle-
-2022-06-23 19:17:43---language-handle-
-2022-06-23 19:19:30---language-handle-
-2022-06-24 11:22:44---language-handle-
-2022-06-24 11:22:52---language-handle-
-2022-06-24 11:22:58---language-handle-
-2022-06-24 11:22:58---language-handle-
-2022-06-24 11:22:58---language-handle-
-2022-06-24 11:22:58---language-handle-
-2022-06-24 11:22:59---language-handle-
-2022-06-24 11:22:59---language-handle-
-2022-06-24 11:22:59---language-handle-
-2022-06-24 11:23:00---language-handle-
-2022-06-24 11:31:48---language-handle-
-2022-06-24 11:31:51---language-handle-
-2022-06-24 11:31:51---language-handle-
-2022-06-24 11:31:51---language-handle-
-2022-06-24 11:31:51---language-handle-
-2022-06-24 11:31:51---language-handle-
-2022-06-24 11:31:51---language-handle-
-2022-06-24 11:31:52---language-handle-
-2022-06-24 11:31:52---language-handle-
-2022-06-24 11:31:52---language-handle-
-2022-06-24 11:31:56---language-handle-
-2022-06-24 11:31:57---language-handle-
-2022-06-24 11:31:59---language-handle-
-2022-06-24 11:31:59---language-handle-
-2022-06-24 11:31:59---language-handle-
-2022-06-24 11:31:59---language-handle-
-2022-06-24 11:31:59---language-handle-
-2022-06-24 11:32:00---language-handle-
-2022-06-24 11:32:00---language-handle-
-2022-06-24 11:32:48---language-handle-
-2022-06-24 11:33:03---language-handle-
-2022-06-24 11:33:11---language-handle-
-2022-06-24 11:33:16---language-handle-
-2022-06-24 11:33:20---language-handle-
-2022-06-24 11:33:31---language-handle-
-2022-06-24 11:33:34---language-handle-
-2022-06-24 11:33:36---language-handle-
-2022-06-24 11:33:38---language-handle-
-2022-06-24 11:34:12---language-handle-
-2022-06-24 11:34:16---language-handle-
-2022-06-24 11:34:50---language-handle-
-2022-06-24 11:35:12---language-handle-
-2022-06-24 11:41:11---language-handle-
-2022-06-24 11:41:38---language-handle-
-2022-06-24 11:41:54---language-handle-
-2022-06-24 11:44:27---language-handle-
-2022-06-24 11:44:47---language-handle-
-2022-06-24 11:53:15---language-handle-
-2022-06-24 12:01:03---language-handle-
-2022-06-24 12:05:44---language-handle-
-2022-06-24 12:06:02---language-handle-
-2022-06-24 12:06:13---language-handle-
-2022-06-24 12:06:43---language-handle-
-2022-06-24 13:32:59---language-handle-
-2022-06-24 13:34:34---language-handle-
-2022-06-24 13:35:26---language-handle-
-2022-06-24 13:35:52---language-handle-
-2022-06-24 13:36:15---language-handle-
-2022-06-24 13:36:36---language-handle-
-2022-06-24 13:37:09---language-handle-
-2022-06-24 13:37:57---language-handle-
-2022-06-24 13:39:09---language-handle-
-2022-06-24 13:39:26---language-handle-
-2022-06-24 15:21:47---language-handle-
-2022-06-24 15:21:50---language-handle-
-2022-06-24 15:21:54---language-handle-
-2022-06-24 15:22:08---language-handle-
-2022-06-24 15:22:09---language-handle-
-2022-06-24 15:22:13---language-handle-
-2022-06-24 15:23:31---language-handle-
-2022-06-24 15:23:36---language-handle-
-2022-06-24 15:24:23---language-handle-
-2022-06-24 15:24:26---language-handle-
-2022-06-24 15:25:02---language-handle-
-2022-06-24 15:25:05---language-handle-
-2022-06-24 15:25:48---language-handle-
-2022-06-24 15:25:55---language-handle-
-2022-06-24 15:27:35---language-handle-
-2022-06-24 15:28:01---language-handle-
-2022-06-24 15:28:31---language-handle-
-2022-06-24 15:28:32---language-handle-
-2022-06-24 15:28:57---language-handle-
-2022-06-24 15:28:58---language-handle-
-2022-06-24 15:33:17---language-handle-
-2022-06-24 15:33:45---language-handle-
-2022-06-24 15:33:48---language-handle-
-2022-06-24 15:34:05---language-handle-
-2022-06-24 15:34:08---language-handle-
-2022-06-24 15:34:11---language-handle-
-2022-06-24 15:34:13---language-handle-
-2022-06-24 15:36:06---language-handle-
-2022-06-24 15:36:08---language-handle-
-2022-06-24 15:39:51---language-handle-
-2022-06-24 15:40:11---language-handle-
-2022-06-24 15:40:12---language-handle-
-2022-06-24 15:41:17---language-handle-
-2022-06-24 15:41:19---language-handle-
-2022-06-24 15:41:52---language-handle-
-2022-06-24 15:41:55---language-handle-
-2022-06-24 15:41:57---language-handle-
-2022-06-24 15:41:59---language-handle-
-2022-06-24 15:42:31---language-handle-
-2022-06-24 15:42:32---language-handle-
-2022-06-24 15:49:35---language-handle-
-2022-06-24 15:49:37---language-handle-
-2022-06-24 16:34:52---language-handle-
-2022-06-24 16:35:13---language-handle-
-2022-06-24 16:35:22---language-handle-
-2022-06-24 16:35:23---language-handle-
-2022-06-24 16:45:16---language-handle-
-2022-06-24 16:45:23---language-handle-
-2022-06-24 16:45:23---language-handle-
-2022-06-24 16:46:26---language-handle-
-2022-06-24 16:46:29---language-handle-
-2022-06-24 16:49:39---language-handle-
-2022-06-24 16:49:43---language-handle-
-2022-06-24 16:50:36---language-handle-
-2022-06-24 16:53:23---language-handle-
-2022-06-24 16:53:58---language-handle-
-2022-06-24 17:00:15---language-handle-
-2022-06-24 17:00:57---language-handle-
-2022-06-24 17:01:44---language-handle-
-2022-06-24 17:02:08---language-handle-
-2022-06-24 17:06:55---language-handle-
-2022-06-24 17:08:15---language-handle-
-2022-06-24 17:08:49---language-handle-
-2022-06-24 17:09:10---language-handle-
-2022-06-24 17:10:07---language-handle-
-2022-06-24 17:10:24---language-handle-
-2022-06-24 17:13:07---language-handle-
-2022-06-24 17:13:38---language-handle-
-2022-06-24 17:13:55---language-handle-
-2022-06-24 17:21:33---language-handle-
-2022-06-24 17:29:59---language-handle-
-2022-06-24 17:30:17---language-handle-
-2022-06-24 17:32:15---language-handle-
-2022-06-24 17:33:18---language-handle-
-2022-06-24 17:33:29---language-handle-
-2022-06-24 17:33:32---language-handle-
-2022-06-24 17:33:38---language-handle-
-2022-06-24 17:34:53---language-handle-
-2022-06-24 17:34:58---language-handle-
-2022-06-24 17:35:11---language-handle-
-2022-06-24 17:35:15---language-handle-
-2022-06-24 17:35:26---language-handle-
-2022-06-24 17:35:27---language-handle-
-2022-06-24 17:36:33---language-handle-
-2022-06-24 17:36:37---language-handle-
-2022-06-24 17:36:39---language-handle-
-2022-06-24 17:36:46---language-handle-
-2022-06-24 17:37:06---language-handle-
-2022-06-24 17:37:11---language-handle-
-2022-06-24 17:38:09---language-handle-
-2022-06-24 17:38:16---language-handle-
-2022-06-24 17:51:20---language-handle-
-2022-06-24 17:51:57---language-handle-
-2022-06-24 17:52:00---language-handle-
-2022-06-24 17:52:06---language-handle-
-2022-06-24 17:52:07---language-handle-
-2022-06-24 17:52:37---language-handle-
-2022-06-24 17:53:57---language-handle-
-2022-06-24 17:55:42---language-handle-
-2022-06-24 17:55:53---language-handle-
-2022-06-24 17:55:58---language-handle-
-2022-06-24 17:56:52---language-handle-
-2022-06-24 17:58:03---language-handle-
-2022-06-24 17:58:39---language-handle-
-2022-06-24 17:59:14---language-handle-
-2022-06-24 17:59:21---language-handle-
-2022-06-24 17:59:27---language-handle-
-2022-06-24 17:59:35---language-handle-
-2022-06-24 17:59:37---language-handle-
-2022-06-24 18:04:11---language-handle-
-2022-06-24 18:06:24---language-handle-
-2022-06-24 18:06:58---language-handle-
-2022-06-24 18:07:16---language-handle-
-2022-06-27 10:31:49---language-handle-
-2022-06-27 10:31:52---language-handle-
-2022-06-27 10:31:53---language-handle-
-2022-06-27 10:31:53---language-handle-
-2022-06-27 10:31:53---language-handle-
-2022-06-27 10:31:54---language-handle-
-2022-06-27 10:31:54---language-handle-
-2022-06-27 10:31:54---language-handle-
-2022-06-27 10:31:54---language-handle-
-2022-06-27 10:31:54---language-handle-
-2022-06-27 10:31:59---language-handle-
-2022-06-27 10:32:12---language-handle-
-2022-06-27 10:32:15---language-handle-
-2022-06-27 10:32:21---language-handle-
-2022-06-27 10:32:25---language-handle-
-2022-06-27 10:32:31---language-handle-
-2022-06-27 10:32:45---language-handle-
-2022-06-27 10:33:35---language-handle-
-2022-06-27 10:33:39---language-handle-
-2022-06-27 10:33:43---language-handle-
-2022-06-27 10:33:45---language-handle-
-2022-06-27 10:33:59---language-handle-
-2022-06-27 15:28:39---language-handle-
-2022-06-27 15:32:45---language-handle-
-2022-06-27 15:33:38---language-handle-
-2022-06-27 15:34:31---language-handle-
-2022-06-27 15:34:59---language-handle-
-2022-06-27 15:38:09---language-handle-
-2022-06-27 15:45:42---language-handle-
-2022-06-27 15:46:51---language-handle-
-2022-06-27 15:47:10---language-handle-
-2022-06-27 15:47:17---language-handle-
-2022-06-27 16:04:56---language-handle-
-2022-06-27 16:05:00---language-handle-
-2022-06-27 16:05:00---language-handle-
-2022-06-27 16:05:00---language-handle-
-2022-06-27 16:05:00---language-handle-
-2022-06-27 16:05:00---language-handle-
-2022-06-27 16:05:00---language-handle-
-2022-06-27 16:05:01---language-handle-
-2022-06-27 16:05:01---language-handle-
-2022-06-27 16:05:01---language-handle-
-2022-06-27 16:05:04---language-handle-
-2022-06-27 16:05:06---language-handle-
-2022-06-27 16:05:08---language-handle-
-2022-06-27 16:05:08---language-handle-
-2022-06-27 16:05:08---language-handle-
-2022-06-27 16:05:08---language-handle-
-2022-06-27 16:05:08---language-handle-
-2022-06-27 16:05:08---language-handle-
-2022-06-27 16:05:09---language-handle-
-2022-06-27 16:05:09---language-handle-
-2022-06-27 16:05:09---language-handle-
-2022-06-27 16:05:16---language-handle-
-2022-06-27 16:05:18---language-handle-
-2022-06-27 16:05:25---language-handle-
-2022-06-27 16:05:28---language-handle-
-2022-06-27 16:05:40---language-handle-
-2022-06-27 16:05:45---language-handle-
-2022-06-27 16:05:47---language-handle-
-2022-06-27 16:05:51---language-handle-
-2022-06-27 16:17:11---language-handle-
-2022-06-27 16:17:28---language-handle-
-2022-06-27 16:18:19---language-handle-
-2022-06-27 16:22:14---language-handle-
-2022-06-27 16:32:36---language-handle-
-2022-06-27 16:36:48---language-handle-
-2022-06-27 16:40:29---language-handle-
-2022-06-27 16:40:46---language-handle-
-2022-06-27 16:41:28---language-handle-
-2022-06-27 16:42:15---language-handle-
-2022-06-27 16:42:38---language-handle-
-2022-06-27 16:43:19---language-handle-
-2022-06-27 16:43:44---language-handle-
-2022-06-27 16:46:02---language-handle-
-2022-06-27 16:48:20---language-handle-
-2022-06-27 17:12:34---language-handle-
-2022-06-27 17:13:56---language-handle-
-2022-06-27 17:14:38---language-handle-
-2022-06-27 17:14:54---language-handle-
-2022-06-27 17:23:09---language-handle-
-2022-06-27 17:27:22---language-handle-
-2022-06-27 17:28:07---language-handle-
-2022-06-27 17:31:54---language-handle-
-2022-06-27 17:34:16---language-handle-
-2022-06-27 17:34:21---language-handle-
-2022-06-27 17:34:23---language-handle-
-2022-06-27 17:34:24---language-handle-
-2022-06-27 17:39:20---language-handle-
-2022-06-27 17:40:04---language-handle-
-2022-06-27 17:40:40---language-handle-
-2022-06-27 17:41:32---language-handle-
-2022-06-27 17:42:18---language-handle-
-2022-06-27 17:44:37---language-handle-
-2022-06-27 17:44:53---language-handle-
-2022-06-27 17:48:03---language-handle-
-2022-06-27 17:49:25---language-handle-
-2022-06-27 17:49:44---language-handle-
-2022-06-27 17:50:01---language-handle-
-2022-06-27 17:53:29---language-handle-
-2022-06-27 17:54:48---language-handle-
-2022-06-27 17:54:52---language-handle-
-2022-06-27 17:54:55---language-handle-
-2022-06-27 17:55:00---language-handle-
-2022-06-27 17:55:05---language-handle-
-2022-06-27 17:55:22---language-handle-
-2022-06-27 17:56:11---language-handle-
-2022-06-27 17:56:13---language-handle-
-2022-06-27 17:56:21---language-handle-
-2022-06-27 17:56:27---language-handle-
-2022-06-27 17:56:36---language-handle-
-2022-06-27 17:58:56---language-handle-
-2022-06-27 17:59:10---language-handle-
-2022-06-27 18:03:43---language-handle-
-2022-06-27 18:04:07---language-handle-
-2022-06-27 18:04:38---language-handle-
-2022-06-27 18:05:07---language-handle-
-2022-06-27 18:05:39---language-handle-
-2022-06-27 18:05:44---language-handle-
-2022-06-27 18:05:53---language-handle-
-2022-06-27 18:06:14---language-handle-
-2022-06-27 18:07:46---language-handle-
-2022-06-27 18:07:55---language-handle-
-2022-06-27 18:08:10---language-handle-
+2022-06-28 14:27:08---language-handle-
+2022-06-28 14:38:17---language-handle-
+2022-06-28 14:38:35---language-handle-
+2022-06-28 14:38:50---language-handle-
+2022-06-28 14:39:51---language-handle-
+2022-06-28 14:41:07---language-handle-
+2022-06-28 14:41:40---language-handle-
+2022-06-28 14:42:53---language-handle-
+2022-06-28 14:43:26---language-handle-
+2022-06-28 14:44:01---language-handle-
+2022-06-28 14:51:35---language-handle-
+2022-06-28 14:52:19---language-handle-
+2022-06-28 14:56:15---language-handle-
+2022-06-28 14:59:00---language-handle-
+2022-06-28 14:59:47---language-handle-
+2022-06-28 15:01:59---language-handle-
+2022-06-28 15:06:57---language-handle-
+2022-06-28 15:10:19---language-handle-
+2022-06-28 15:10:59---language-handle-
+2022-06-28 15:12:55---language-handle-
+2022-06-28 15:12:58---language-handle-
+2022-06-28 15:13:39---language-handle-
+2022-06-28 15:13:47---language-handle-
+2022-06-28 15:14:10---language-handle-
+2022-06-28 15:14:13---language-handle-
+2022-06-28 15:14:26---language-handle-
+2022-06-28 15:14:28---language-handle-
+2022-06-28 15:14:33---language-handle-
+2022-06-28 15:14:38---language-handle-
+2022-06-28 15:14:43---language-handle-
+2022-06-28 15:14:52---language-handle-
+2022-06-28 15:14:54---language-handle-
+2022-06-28 15:14:58---language-handle-
+2022-06-28 15:17:51---language-handle-
+2022-06-28 15:17:58---language-handle-
+2022-06-28 15:18:02---language-handle-
+2022-06-28 15:18:42---language-handle-
+2022-06-28 15:18:44---language-handle-
+2022-06-28 15:18:49---language-handle-
+2022-06-28 15:20:55---language-handle-
+2022-06-28 15:21:00---language-handle-
+2022-06-28 15:21:22---language-handle-
+2022-06-28 15:22:36---language-handle-
+2022-06-28 15:25:19---language-handle-
+2022-06-28 15:25:21---language-handle-
+2022-06-28 15:25:52---language-handle-
+2022-06-28 15:26:01---language-handle-
+2022-06-28 15:26:20---language-handle-
+2022-06-28 15:26:21---language-handle-
+2022-06-28 15:26:36---language-handle-
+2022-06-28 15:26:42---language-handle-
+2022-06-28 15:28:00---language-handle-
+2022-06-28 15:28:07---language-handle-
+2022-06-28 15:28:13---language-handle-
+2022-06-28 15:28:14---language-handle-
+2022-06-28 15:28:18---language-handle-
+2022-06-28 15:28:22---language-handle-
+2022-06-28 15:28:29---language-handle-
+2022-06-28 15:28:31---language-handle-
+2022-06-28 15:28:35---language-handle-
+2022-06-28 15:28:40---language-handle-
+2022-06-28 15:30:19---language-handle-
+2022-06-28 15:30:51---language-handle-
+2022-06-28 15:30:54---language-handle-
+2022-06-28 15:30:56---language-handle-
+2022-06-28 15:31:02---language-handle-
+2022-06-28 15:31:08---language-handle-
+2022-06-28 15:31:10---language-handle-
+2022-06-28 15:44:28---language-handle-
+2022-06-28 15:45:21---language-handle-
+2022-06-28 15:46:00---language-handle-
+2022-06-28 15:46:37---language-handle-
+2022-06-28 15:46:55---language-handle-
+2022-06-28 15:48:20---language-handle-
+2022-06-28 15:49:26---language-handle-
+2022-06-28 15:50:12---language-handle-
+2022-06-28 15:50:31---language-handle-
+2022-06-28 16:12:41---language-handle-
+2022-06-28 16:17:32---language-handle-
+2022-06-28 16:17:38---language-handle-
+2022-06-28 16:22:46---language-handle-
+2022-06-28 16:29:51---language-handle-
+2022-06-28 16:29:58---language-handle-
+2022-06-28 16:30:30---language-handle-
+2022-06-28 16:32:40---language-handle-
+2022-06-28 17:26:08---language-handle-
+2022-06-28 17:26:25---language-handle-
+2022-06-28 17:26:59---language-handle-
+2022-06-28 17:28:06---language-handle-
+2022-06-28 17:28:32---language-handle-
+2022-06-28 17:28:47---language-handle-
+2022-06-28 17:31:19---language-handle-
+2022-06-28 17:31:56---language-handle-
+2022-06-28 17:32:23---language-handle-
+2022-06-28 17:32:41---language-handle-
+2022-06-28 17:34:15---language-handle-
+2022-06-28 17:34:27---language-handle-
+2022-06-28 17:34:32---language-handle-
+2022-06-28 17:34:36---language-handle-
+2022-06-28 17:34:38---language-handle-
+2022-06-28 17:34:55---language-handle-
+2022-06-28 17:34:59---language-handle-
+2022-06-28 17:35:12---language-handle-
+2022-06-28 17:35:14---language-handle-
+2022-06-28 17:35:19---language-handle-
+2022-06-28 17:37:13---language-handle-
+2022-06-28 17:37:23---language-handle-
+2022-06-28 17:38:06---language-handle-
+2022-06-28 17:38:27---language-handle-
+2022-06-28 17:38:46---language-handle-
+2022-06-28 17:41:25---language-handle-
+2022-06-28 17:45:40---language-handle-
+2022-06-28 17:46:46---language-handle-
+2022-06-28 17:48:53---language-handle-
+2022-06-28 17:49:30---language-handle-
+2022-06-28 17:49:53---language-handle-
+2022-06-28 17:50:21---language-handle-
+2022-06-28 17:51:06---language-handle-
+2022-06-28 17:51:32---language-handle-
+2022-06-28 17:51:54---language-handle-
+2022-06-28 17:52:45---language-handle-
+2022-06-28 17:53:19---language-handle-
+2022-06-28 17:53:51---language-handle-
+2022-06-28 17:54:10---language-handle-
+2022-06-28 17:54:45---language-handle-
+2022-06-28 17:58:08---language-handle-
+2022-06-28 17:58:25---language-handle-
+2022-06-28 19:06:23---language-handle-
+2022-06-28 19:07:08---language-handle-
+2022-06-28 19:09:41---language-handle-
+2022-06-28 19:27:04---language-handle-
+2022-06-28 19:27:33---language-handle-
+2022-06-28 19:27:54---language-handle-
+2022-06-28 19:28:29---language-handle-
+2022-06-28 19:47:57---language-handle-
+2022-06-28 20:18:01---language-handle-
+2022-06-28 20:18:04---language-handle-
+2022-06-28 20:18:11---language-handle-
+2022-06-28 20:18:15---language-handle-
+2022-06-28 20:18:17---language-handle-
+2022-06-28 20:18:20---language-handle-
+2022-06-28 20:18:24---language-handle-
+2022-06-28 20:18:29---language-handle-
+2022-06-28 20:18:32---language-handle-
+2022-06-28 20:18:46---language-handle-
+2022-06-28 20:19:00---language-handle-
+2022-06-28 21:02:10---language-handle-
+2022-06-28 21:02:13---language-handle-
+2022-06-28 21:02:23---language-handle-
+2022-06-29 09:07:01---language-handle-
+2022-06-29 09:07:14---language-handle-
+2022-06-29 09:07:18---language-handle-
+2022-06-29 09:07:20---language-handle-
+2022-06-29 09:07:25---language-handle-
+2022-06-29 09:08:00---language-handle-
+2022-06-29 09:08:09---language-handle-
+2022-06-29 09:16:22---language-handle-
+2022-06-29 09:16:41---language-handle-
+2022-06-29 09:17:18---language-handle-
+2022-06-29 09:18:05---language-handle-
+2022-06-29 09:19:51---language-handle-
+2022-06-29 11:10:47---language-handle-
+2022-06-29 11:11:02---language-handle-
+2022-06-29 11:19:33---language-handle-
+2022-06-29 11:21:06---language-handle-
+2022-06-29 11:22:38---language-handle-
+2022-06-29 11:35:53---language-handle-
+2022-06-29 14:06:19---language-handle-
+2022-06-29 14:07:37---language-handle-
+2022-06-29 14:11:45---language-handle-
+2022-06-29 14:12:22---language-handle-
+2022-06-29 14:16:43---language-handle-
+2022-06-29 14:19:09---language-handle-
+2022-06-29 14:20:26---language-handle-
+2022-06-29 14:20:49---language-handle-
+2022-06-29 14:35:45---language-handle-
+2022-06-29 14:50:02---language-handle-
+2022-06-29 14:50:26---language-handle-
+2022-06-29 14:51:37---language-handle-
+2022-06-29 14:52:00---language-handle-
+2022-06-29 14:53:10---language-handle-
+2022-06-29 14:55:52---language-handle-
+2022-06-29 14:57:54---language-handle-
+2022-06-29 14:58:11---language-handle-
+2022-06-29 14:58:23---language-handle-
+2022-06-29 14:58:45---language-handle-
+2022-06-29 14:58:55---language-handle-
+2022-06-29 15:00:50---language-handle-
+2022-06-29 15:01:11---language-handle-
+2022-06-29 15:01:54---language-handle-
+2022-06-29 15:03:37---language-handle-
+2022-06-29 15:04:05---language-handle-
+2022-06-29 15:04:26---language-handle-
+2022-06-29 15:04:55---language-handle-
+2022-06-29 15:07:14---language-handle-
+2022-06-29 15:07:27---language-handle-
+2022-06-29 15:10:12---language-handle-
+2022-06-29 15:10:19---language-handle-
+2022-06-29 15:10:26---language-handle-
+2022-06-29 15:15:49---language-handle-
+2022-06-29 15:20:00---language-handle-
+2022-06-29 15:21:05---language-handle-
+2022-06-29 15:21:17---language-handle-
+2022-06-29 15:22:42---language-handle-
+2022-06-29 15:50:24---language-handle-
+2022-06-29 15:51:14---language-handle-
+2022-06-29 15:51:31---language-handle-
+2022-06-29 15:52:26---language-handle-
+2022-06-29 15:54:39---language-handle-
+2022-06-29 15:55:26---language-handle-
+2022-06-29 15:56:34---language-handle-
+2022-06-29 15:58:19---language-handle-
+2022-06-29 16:23:50---language-handle-
+2022-06-29 16:23:59---language-handle-
+2022-06-29 16:24:29---language-handle-
+2022-06-29 16:26:30---language-handle-
+2022-06-29 16:27:00---language-handle-
+2022-06-29 16:44:05---language-handle-
+2022-06-29 16:44:57---language-handle-
+2022-06-29 16:57:05---language-handle-
+2022-06-29 16:57:24---language-handle-
+2022-06-29 16:57:52---language-handle-
+2022-06-29 17:33:17---language-handle-
+2022-06-29 17:33:41---language-handle-
+2022-06-29 17:34:06---language-handle-
+2022-06-29 17:35:44---language-handle-

+ 4 - 3
resources/lang/en/api.php

xqd xqd xqd
@@ -7,7 +7,7 @@ return [
     | Api Language Lines
     |--------------------------------------------------------------------------
     */
-    'SUCCESS' => 'Changes Saved',
+    'SUCCESS' => 'Success',
     'FAIL' => 'Fail',
     'NOT_EMPTY' => 'Cannot be empty',
     'UPLOAD_SUCCESS' => 'Upload success',
@@ -191,7 +191,7 @@ return [
     'COMMENT' => 'Comment on your dynamic', //评论
     'REPLY' => 'Reply your comment', //回复
     'INVITE_TEAM' => 'Invite join team ', //邀请加入球队
-    'APPLY_TEAM' => 'Apply to join team', //申请加入球队
+    'APPLY_TEAM' => 'Request to join the team', //申请加入球队
     'INVITE_GAME' => 'Invite join game ', //邀请加入比赛
     'GAME_APPLY' => 'Game apply', //申请加入比赛
 
@@ -200,6 +200,7 @@ return [
 
     'MALE' => 'Male',
     'FEMALE' => 'Female',
-
+    'DONE' => 'Done',
+    'END_GAME' => 'Ended'
 
 ];

+ 2 - 1
resources/lang/zh/api.php

xqd
@@ -222,5 +222,6 @@ return [
 
     'MALE' => '男士',
     'FEMALE' => '女士',
-
+    'DONE' => '创建成功',
+    'END_GAME' => '操作成功!',
 ];

+ 59 - 25
routes/api.php

xqd xqd xqd xqd xqd xqd xqd
@@ -19,13 +19,13 @@ $api = app('Dingo\Api\Routing\Router');
 
 $api->version('v1', ['namespace' => 'App\Http\Controllers\V1'], function ($api) {
 
-    $api->group(['middleware' => ['api.throttle','switch_lang']], function ($api) {
+    $api->group(['middleware' => ['api.throttle', 'switch_lang']], function ($api) {
         //语言切换
         $api->any('/changeLocale', 'HomeController@language');
     });
 
     //测试数据接口
-    $api->group(['prefix'=>'test'], function($api){
+    $api->group(['prefix' => 'test'], function ($api) {
         //创建 球员比赛成绩
         $api->any('create_holes', 'TestController@createHoles');
         //创建 球员比赛成绩
@@ -38,13 +38,11 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\V1'], function ($api)
         $api->any('clear_table', 'TestController@clearTable');
         //测试
         $api->any('index', 'TestController@index');
-
     });
 
-
     //不需要登录的接口
     $api->group([
-        'middleware' => ['api.throttle','switch_lang','lang'],
+        'middleware' => ['api.throttle', 'switch_lang', 'lang'],
         'limit' => config('api.rate_limits.access.limit'),
         'expires' => config('api.rate_limits.access.expires')
     ], function ($api) {
@@ -69,15 +67,15 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\V1'], function ($api)
             //账号登录(手机号/邮箱 + 密码)create_group
             $api->any('login', 'AuthController@login');
             //退出
-            $api->any('logout',  'AuthController@logout');
+            $api->any('logout', 'AuthController@logout');
             //三方登录跳转
-            $api->any('auth_redirect',  'AuthController@authRedirect');
+            $api->any('auth_redirect', 'AuthController@authRedirect');
             //三方登录验证
-            $api->any('auth_login',  'AuthController@authLogin');
+            $api->any('auth_login', 'AuthController@authLogin');
             //facebook 登录
-            $api->any('facebook_login',  'AuthController@facebookLogin');
+            $api->any('facebook_login', 'AuthController@facebookLogin');
             //苹果 登录
-            $api->any('apple_login',  'AuthController@appleLogin');
+            $api->any('apple_login', 'AuthController@appleLogin');
             //短信验证码登录
             $api->any('login_by_code', 'AuthController@loginByCode');
             //忘记密码
@@ -142,14 +140,52 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\V1'], function ($api)
 
 
     //需要 token 验证的接口
-    $api->group(['middleware' => ['api.auth','switch_lang','lang'],
+    $api->group([
+        'middleware' => ['api.auth', 'switch_lang', 'lang'],
         'limit' => config('api.rate_limits.access.limit'),
         'expires' => config('api.rate_limits.access.expires')], function ($api) {
         /*
-      |--------------------------------------------------------------
-      |  球队相关
-      |--------------------------------------------------------------
-      */
+         |--------------------------------------------------------------
+         |  积分商品
+         |--------------------------------------------------------------
+         */
+        $api->group(['prefix' => 'goods'], function ($api) {
+            $api->any('list', 'GoodsController@getList'); //商品列表
+            $api->any('category', 'GoodsController@category'); //商品类型
+            $api->any('detail', 'GoodsController@detail'); //商品详情
+
+        });
+        /*
+         |--------------------------------------------------------------
+         |  积分订单
+         |--------------------------------------------------------------
+         */
+        $api->group(['prefix' => 'order'], function ($api) {
+            //商品列表
+            $api->any('submit', 'OrderController@submit'); //确认提交
+            $api->any('order_list', 'OrderController@orderList'); //订单列表
+            $api->any('delay', 'OrderController@delay'); //取消订单
+            $api->any('confirm', 'OrderController@confirm'); //确认收货
+            $api->any('order_detail', 'OrderController@orderDetail'); //订单详情
+            $api->any('change_address', 'OrderController@changeAddress'); //修改收货地址
+        });
+        /*
+         |--------------------------------------------------------------
+         |  用户地址
+         |--------------------------------------------------------------
+         */
+        $api->group(['prefix' => 'address'], function ($api) {
+            $api->any('add', 'AddressController@add');   //添加地址
+            $api->any('mine', 'AddressController@mine'); //我的地址
+            $api->any('info', 'AddressController@info'); //地址信息
+            $api->any('set_default', 'AddressController@setDefault'); //设置默认地址
+            $api->any('del_address', 'AddressController@delAddress'); //删除地址
+        });
+        /*
+        |--------------------------------------------------------------
+        |  球队相关
+        |--------------------------------------------------------------
+        */
         $api->group(['prefix' => 'team'], function ($api) {
             //创建球队
             $api->any('create', ['uses' => 'TeamController@store']);
@@ -421,7 +457,6 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\V1'], function ($api)
         });
 
 
-
         /*
         |--------------------------------------------------------------
         |  好友相关
@@ -440,11 +475,11 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\V1'], function ($api)
             $api->any('friend_pass', 'FriendController@friendPass')->name('message.friend_pass');
         });
 
-       /*
-       |--------------------------------------------------------------
-       |  群聊相关
-       |--------------------------------------------------------------
-       */
+        /*
+        |--------------------------------------------------------------
+        |  群聊相关
+        |--------------------------------------------------------------
+        */
         $api->group(['prefix' => 'chat_team'], function ($api) {
             //创建群聊
             $api->any('create_group', 'ChatTeamController@createGroup')->name('message.create_group');
@@ -473,16 +508,15 @@ $api->version('v1', ['namespace' => 'App\Http\Controllers\V1'], function ($api)
     //腾讯IM操作回调
     $api->any('/tencent_notify', 'TencentController@notify')->name('notify');
     // 通用配置
-    $api->any('base/config', ['as' => 'base.config', 'uses' => 'BaseConfigController@index', ]);
+    $api->any('base/config', ['as' => 'base.config', 'uses' => 'BaseConfigController@index',]);
     // 上传附件
     $api->any('attachment/upload', ['as' => 'attachment.upload', 'uses' => 'AttachmentController@upload',]);
     // 删除附件
-    $api->any('attachment/delete/{md5}', [ 'as' => 'attachment.delete','uses' => 'AttachmentController@delete', ]);
+    $api->any('attachment/delete/{md5}', ['as' => 'attachment.delete', 'uses' => 'AttachmentController@delete',]);
     //上传头像
     $api->any('auth/avatar', ['as' => 'auth.avatar', 'uses' => 'AuthController@avatar',]);
     // test
-    $api->any('test', [ 'as' => 'test','uses' => 'TestController@index', ]);
-
+    $api->any('test', ['as' => 'test', 'uses' => 'TestController@index',]);
 
 
 });