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