love_php/app/Http/Controllers/Server/Admin/RewardController.php

239 lines
9.1 KiB
PHP
Raw Normal View History

2026-04-02 09:20:51 +08:00
<?php
namespace App\Http\Controllers\Server\Admin;
use App\Http\Controllers\Controller;
use App\Models\Live\Anchor;
use App\Models\Server\MerchantMembers;
use App\Models\Server\RewardFollow;
use App\Models\Server\MerchantUser;
use App\Models\Server\RewardSignUp;
use App\Models\Server\RewardTransmit;
use App\Models\Server\RewardUser;
use App\Models\User;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class RewardController extends Controller
{
/**
* 添加悬赏
* @param Request $request
*/
public function addReward(Request $request)
{
try {
$merchant_id = $request->account_id;
$merchant_user_id = $request->merchant_user_id;
$dead_time = $request->dead_time;
$price = $request->price;
$status = $request->status ?? 1;
if (!$merchant_id || !$merchant_user_id || !$dead_time || !$price) {
return $this->failure('参数不全');
}
$rewards = RewardUser::where('merchant_id', $merchant_id)->where('merchant_user_id', $merchant_user_id)
->first();
if ($rewards) {
return $this->failure('此悬赏已存在');
}
$rewards = new RewardUser();
$rewards->merchant_id = $merchant_id;
$rewards->merchant_user_id = $merchant_user_id;
$rewards->dead_time = $dead_time . ' 23:59:59';
$rewards->price = $price;
$rewards->status = $status;
$rewards->save();
return $this->success('ok', $rewards);
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('服务器休息中,请稍后再试');
}
}
/**
* 更新悬赏
* @param Request $request
* @return JsonResponse|string
*/
public function updateReward(Request $request)
{
try {
$merchant_id = $request->account_id;
$merchant_user_id = $request->merchant_user_id;
$dead_time = $request->dead_time;
$price = $request->price;
$status = $request->status ?? 1;
$reward_id = $request->reward_id;
if (!$merchant_id || !$merchant_user_id || !$dead_time || !$price || !$reward_id) {
return $this->failure('参数不全');
}
$rewards = RewardUser::where('merchant_id', $merchant_id)->where('merchant_user_id', $merchant_user_id)
->where('id', $reward_id)
->first();
if (!$rewards) {
return $this->failure('此悬赏不存在');
}
$rewards->status = $status;
$rewards->merchant_id = $merchant_id;
$rewards->merchant_user_id = $merchant_user_id;
$rewards->dead_time = $dead_time . ' 23:59:59';
$rewards->price = $price;
$rewards->save();
return $this->success('ok', $rewards);
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('服务器休息中,请稍后再试');
}
}
/**
* 悬赏列表
* @param Request $request
* @return LengthAwarePaginator|JsonResponse
*/
public function getReward(Request $request)
{
try {
$reward_id = $request->reward_id;
$merchant_id = $request->account_id;
$merchant_user_id = $request->merchant_user_id;
$reward_list = RewardUser::with('merchantUser', 'merchantUser.mpUser', 'merchantUser.profile')
->where('merchant_id', $merchant_id)
->where('merchant_user_id', $merchant_user_id)
->when($reward_id, function ($query) use ($reward_id) {
$query->where('id', $reward_id);
})
->orderBy('id', 'desc')
->paginate();
foreach ($reward_list as $key => $val) {
$jump_url = urlencode(env('APP_URL') . '/pu/#/rewardIndex/' . $val['id']);
$url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . $merchant_id . '&url=' . $jump_url;
$qr_code_url = $this->getPreviewQrcode($url);
$val->url = $url;
$val->qr_code_url = $qr_code_url;
}
return $reward_list;
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('服务器休息中,请稍后再试');
}
}
/**
* 悬赏转发记录
* @param Request $request
* @return JsonResponse
*/
public function getRewardTransmit(Request $request): JsonResponse
{
try {
$merchant_id = $request->account_id;
$reward_id = $request->reward_id;
$rewards = RewardUser::where('merchant_id', $merchant_id)->where('id', $reward_id)
->first();
if (!$rewards) {
return $this->failure('悬赏不存在或已删除');
}
$transmit = RewardTransmit::where('reward_id', $reward_id)
->orderBy('id', 'desc')
->paginate();
return $this->success('ok', $transmit);
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('服务器休息中,请稍后再试');
}
}
/**
* 悬赏报名记录
* @param Request $request
*/
public function getRewardSignUpList(Request $request)
{
try {
$merchant_id = $request->account_id;
$reward_id = $request->reward_id;
$rewards = RewardUser::where('merchant_id', $merchant_id)->where('id', $reward_id)
->first();
if (!$rewards) {
return $this->failure('悬赏不存在或已删除');
}
$sign = RewardSignUp::with('merchantUser', 'merchantUser.mpUser', 'merchantUser.profile', 'fromUser')
->where('reward_id', $reward_id)
->orderBy('id', 'desc')
->paginate();
foreach ($sign as $key => $value) {
$value->count = RewardFollow::where('reward_id', $value->reward_id)->where('m_user_id', $value->merchant_user_id)->count();
}
return $this->success('ok', $sign);
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('服务器休息中,请稍后再试');
}
}
/**
* 悬赏跟进
* @param Request $request
*/
public function rewardFollow(Request $request)
{
try {
$admin_id = $request->merchant_admin_id ?? 0;
$reward_id = $request->reward_id;
$reward = RewardUser::find($reward_id);
if (!$reward)
return $this->failure('悬赏不存在');
$way = $request->way;
$content = $request->input('content');
$result = $request->result;
RewardFollow::create([
'm_user_id' => $request->m_user_id,
'reward_id' => $reward_id,
'way' => $way,
'content' => $content,
'result' => $result,
'photo' => !empty($request->photo) ? json_encode($request->photo) : null,
'admin_id' => $admin_id,
]);
return $this->success('ok');
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('服务器休息中,请稍后再试');
}
}
/**
* 悬赏跟进列表
* @param Request $request
*/
public function rewardFollows(Request $request)
{
try {
$reward_id = $request->reward_id;
$m_user_id = $request->m_user_id;
if (empty($reward_id) || empty($m_user_id)) return $this->failure('参数不全');
$merchant_user = MerchantUser::where('id', $m_user_id)->select('id', 'nickname', 'mobile')->first();
$follows = RewardFollow::where(['reward_id' => $reward_id, 'm_user_id' => $m_user_id])->orderBy('id', 'desc')->paginate();
foreach ($follows as $key => $value) {
if ($value->admin_id == 0) {
$anchor = Anchor::where('m_id', $request->account_id)->first();
$user['pic'] = !empty($anchor) ? $anchor->pic : User::DefaultAvatar;
$user['name'] = !empty($anchor) ? $anchor->name : '未获取';
} else {
$member = MerchantMembers::where('mch_id', $request->account_id)->where('admin_id', $value->admin_id)->first();
$user['pic'] = !empty($member) ? $member->avatar : User::DefaultAvatar;
$user['name'] = !empty($member) ? $member->name : '未获取';
}
$value->user = $user;
$value->photo = json_decode($value->photo, true);
}
return $this->success('ok', compact('merchant_user', 'follows'));
} catch (\Exception $e) {
$this->getError($e);
return $this->failure('服务器休息中,请稍后再试');
}
}
}