love_php/app/Http/Controllers/Server/H5/ShopController.php
2026-04-02 09:20:51 +08:00

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('服务器休息中,请稍后再试');
}
}
}