188 lines
7.4 KiB
PHP
188 lines
7.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Server\H5;
|
|
|
|
use App\Models\Server\CollageGroup;
|
|
use App\Models\Server\MEarningShare;
|
|
use App\Models\Server\MerchantAccount;
|
|
use App\Models\User;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Live\Anchor;
|
|
use App\Models\MerchantShop;
|
|
use App\Models\MerchantUsers;
|
|
use App\Models\Server\MerchantUser;
|
|
use App\Models\ShopRecive;
|
|
use App\Models\TouristOrder;
|
|
use App\Services\UserService;
|
|
use Illuminate\Support\Facades\Redis;
|
|
|
|
class ShopController extends Controller
|
|
{
|
|
//商城模块
|
|
/**
|
|
* 商城 -- 商品列表
|
|
* @param Request $request
|
|
* @return JsonResponse|string
|
|
*/
|
|
public function MerchantShops(Request $request)
|
|
{
|
|
try {
|
|
$merchant_id = $request->merchant_id;
|
|
$keyword = $request->keyword;
|
|
$shops = MerchantShop::where('merchant_id', $merchant_id)->where('is_show', 1);
|
|
if ($keyword) {
|
|
$keyword = trim($keyword);
|
|
$shops = $shops->where(function ($sql) use ($keyword) {
|
|
$sql->where('title', 'like', '%' . $keyword . '%');
|
|
});
|
|
}
|
|
$shops = $shops->orderBy('is_top', 'desc')->orderBy('top_time', 'desc')->orderBy('id', 'desc')->paginate();
|
|
$time = date('Y-m-d H:i:s');
|
|
foreach ($shops as $key => $shop) {
|
|
$shop->banners = json_decode($shop->banners, true) ?? [];
|
|
$shop->sku = json_decode($shop->sku, true) ?? [];
|
|
$group = CollageGroup::where('type', 'shop')->where('type_id', $shop->id)->where('start_time', '<', $time)
|
|
->where('end_time', '>', $time)->first();
|
|
if($group){
|
|
$shop->is_group = 1;
|
|
}else{
|
|
$shop->is_group = 0;
|
|
}
|
|
}
|
|
return $this->success('ok', $shops);
|
|
} catch (\Exception $e) {
|
|
$this->getError($e);
|
|
return $this->failure('服务器休息中,请稍后再试');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 商品详情
|
|
* @param Request $request
|
|
* @param $id
|
|
* @return JsonResponse|string
|
|
*/
|
|
public function shop_detail(Request $request, $id)
|
|
{
|
|
try {
|
|
$wechatUser = session('wechat.oauth_user.new');
|
|
if ($wechatUser) {
|
|
$openid = $wechatUser->getId();
|
|
$merchant_user = MerchantUser::where('openid', $openid)->first();
|
|
} else {
|
|
$merchant_user = MerchantUser::where('id', $request->merchant_user_id)->first();
|
|
$openid = $merchant_user->openid;
|
|
}
|
|
$shop = MerchantShop::withTrashed()->where('id', $id)->first();
|
|
$shop->banners = json_decode($shop->banners, true) ?? [];
|
|
$shop->sku = json_decode($shop->sku, true) ?? [];
|
|
$shop->pic = $shop->icon;
|
|
unset($shop->icon);
|
|
Redis::zincrby('shop', 1, $id);
|
|
$merchant_user->preview($shop);
|
|
if (config('app.env') == 'production') {
|
|
$merchant_user->addlog($shop);
|
|
}
|
|
//下架或删除状态 0下架 1正常上架 2已删除
|
|
$publish_state = 0;
|
|
if ($shop->deleted_at) {
|
|
$publish_state = 2;
|
|
} elseif ($shop->is_show) {
|
|
$publish_state = 1;
|
|
} else {
|
|
$publish_state = 0;
|
|
}
|
|
$shop->publish_state = $publish_state;
|
|
$jump_url = urlencode(env('APP_URL') . '/pu/#/mallDetail/' . $shop->id);
|
|
$url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . $shop->merchant_id . '&url=' . $jump_url . '&from_openid=' . $openid;
|
|
$share_qrcode = $this->getPreviewQrcode($url);
|
|
$shop->share_qr_code = $share_qrcode;
|
|
unset($shop->share_qrcode);
|
|
$merchant_user_id = $request->merchant_user_id;
|
|
|
|
$merchant_user = MerchantUser::where('id', $merchant_user_id)->first();
|
|
$linkmen['name'] = '';
|
|
$linkmen['mobile'] = '';
|
|
if ($merchant_user) {
|
|
$shop['share_nickname'] = $merchant_user->nickname ?? '匿名用户';
|
|
$shop['share_avatar'] = $merchant_user->pic ?? User::DefaultAvatar;
|
|
$linkmen['name'] = $merchant_user->nickname;
|
|
$linkmen['mobile'] = $merchant_user->mobile;
|
|
}
|
|
$shop->linkmen = $linkmen;
|
|
if($request->from_openid && $request->from_openid != 'null'){
|
|
$user_service = new UserService();
|
|
$user_service->generateClientComment(0,$openid,$request->from_openid,'商品',$shop->id,$shop->title);
|
|
}
|
|
$merchant = MerchantAccount::find($shop->merchant_id);
|
|
$shop->has_group = $merchant->hasGroup($shop) ? 1 : 0;
|
|
$shop->group = $merchant->groupInformation($shop);
|
|
if ($request->from_openid && $request->from_openid != $merchant_user->openid) {
|
|
MEarningShare::create(["user_id"=>$merchant_user->id, "type"=>MerchantShop::class, 'type_id'=>$id, 'from_openid'=>$request->from_openid]);
|
|
}
|
|
return $this->success('ok', $shop);
|
|
} catch (\Exception $e) {
|
|
$this->getError($e);
|
|
return $this->failure('服务器休息中,请稍后再试');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 我的购买 --商城商品
|
|
* @param Request $request
|
|
* @return JsonResponse|string
|
|
*/
|
|
public function myShopOrder(Request $request)
|
|
{
|
|
try {
|
|
$merchant_user_id = $request->merchant_user_id;
|
|
$result = TouristOrder::where('account_id', $merchant_user_id)->where('merchant_id', $request->merchant_id)->where('type', 'shop')->whereIn('pay_status', [1, 4])->orderBy('id', 'desc')->paginate();
|
|
$state = 0;
|
|
foreach ($result as $key => $value) {
|
|
$shop = MerchantShop::withTrashed()->where('id', $value->type_id)->first();
|
|
$recive = ShopRecive::where('order_id', $value->id)->first();
|
|
if ($recive->is_recived == 0) {
|
|
$state = 1; //确认收货
|
|
} elseif (!$value->comment && !$value->Praise) {
|
|
$state = 2;//去评价
|
|
} else {
|
|
$state = 3;//查看评价
|
|
}
|
|
$value->title = $shop->title;
|
|
$value->pic = $shop->icon;
|
|
$value->Subtitle = $shop->sub_title;
|
|
$value->address = $recive->address;
|
|
$value->state = $state;
|
|
$value->order_status = $recive->order_status;
|
|
}
|
|
return $this->success('ok', $result);
|
|
} catch (\Exception $e) {
|
|
$this->getError($e);
|
|
return $this->failure('服务器休息中,请稍后再试');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 确认收货
|
|
* @param Request $request
|
|
* @param $id
|
|
* @return JsonResponse|string
|
|
*/
|
|
public function reciveShop(Request $request, $id)
|
|
{
|
|
try {
|
|
$recive = ShopRecive::where('order_id', $id)->first();
|
|
if (!$recive) return $this->failure('订单信息有误');
|
|
$recive->is_recived = 1;
|
|
$recive->save();
|
|
return $this->success('ok');
|
|
} catch (\Exception $e) {
|
|
$this->getError($e);
|
|
return $this->failure('服务器休息中,请稍后再试');
|
|
}
|
|
}
|
|
|
|
}
|