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

212 lines
7.9 KiB
PHP

<?php
namespace App\Http\Controllers\Server\H5;
use App\Http\Controllers\Controller;
use App\Models\Match\MerchantUser;
use App\Models\ProfileCourtship;
use App\Models\Server\RewardSignUp;
use App\Models\Server\RewardTransmit;
use App\Models\Server\RewardUser;
use App\Models\User;
use App\Repositories\Eloquent\SmsRepository as Sms;
use Illuminate\Container\Container as App;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class RewardController extends Controller
{
/**
* 记录转发接口
* @param Request $request
*/
public function postRewardTransmit(Request $request)
{
try {
$merchant_user_id = $request->merchant_user_id;
$reward_id = $request->reward_id;
if(!$reward_id){
return $this->failure('悬赏ID不能为空');
}
$reward_transmit = new RewardTransmit();
$reward_transmit->reward_id = $reward_id;
$reward_transmit->merchant_user_id = $merchant_user_id;
$reward_transmit->save();
return $this->success('ok');
}catch (\Exception $e) {
$this->getError($e);
return $this->failure('服务器休息中,请稍后再试');
}
}
/**
* 悬赏列表
* @param Request $request
* @return LengthAwarePaginator|JsonResponse
*/
public function getRewardList(Request $request){
try {
$reward_id = $request->reward_id;
$merchant_id = $request->merchant_id;
$reward_list = RewardUser::with('merchantUser','merchantUser.mpUser')
->where('status',1)
->where('merchant_id', $merchant_id)
->when($reward_id,function ($query) use($reward_id){
$query->where('id',$reward_id);
})
->orderBy('id','desc')
->paginate();
return $this->success('ok',$reward_list);
}catch (\Exception $e) {
$this->getError($e);
return $this->failure('服务器休息中,请稍后再试');
}
}
/**
* 悬赏详情
* @param Request $request
* @return LengthAwarePaginator|JsonResponse
*/
public function getRewardDetail(Request $request){
try {
$reward_id = $request->reward_id;
$merchant_id = $request->merchant_id;
$reward = RewardUser::with('merchantUser','merchantUser.mpUser','merchantUser.profile')
->where('merchant_id', $merchant_id)
->when($reward_id,function ($query) use($reward_id){
$query->where('id',$reward_id);
})
->first();
$wechatUser = session('wechat.oauth_user.new');
if ($wechatUser) {
$openid = $wechatUser->getId();
} else {
$openid = MerchantUser::where('id', $request->merchant_user_id)->value('openid');
}
$jump_url = urlencode(env('APP_URL') . '/pu/#/rewardEditor/' . $reward['id']);
$url = env('APP_URL') . '/api/official/live/wechat/FamilyAuth?merchant_id=' . $merchant_id . '&from_openid=' . $openid . '&url=' . $jump_url;
$qr_code_url = $this->getPreviewQrcode($url);
$reward->qr_code_url = $qr_code_url;
$reward_sign = RewardSignUp::where('reward_id',$reward_id)
->where('merchant_user_id',$request->merchant_user_id)
->first();
if($reward_sign){
$reward->is_sign_up = 1;
}else{
$reward->is_sign_up = 0;
}
return $this->success('ok',$reward);
}catch (\Exception $e) {
$this->getError($e);
return $this->failure('服务器休息中,请稍后再试');
}
}
/**
* 悬赏报名
* @param Request $request
* @return JsonResponse|string
*/
public function rewardSignUp(Request $request){
try {
$merchant_id = $request->merchant_id;
$reward_id = $request->reward_id;
$merchant_user_id = $request->merchant_user_id;
$mobile = $request->mobile;
$name = $request->name;
$code = $request->code;
$from_openid = $request->from_openid;
if(!$mobile || !$name || !$code || !$reward_id || !$merchant_id){
return $this->failure('参数不全');
}
$sms = new Sms(new App);
$result = $sms->check($mobile, $code);
if ($result) {
switch ($result) {
case '请填写验证码':
return $this->respv2($result, ['status' => 7, 'message' => '请填写验证码']);
break;
case '验证码有误':
return $this->respv2($result, ['status' => 8, 'message' => '验证码有误']);
break;
case '验证码过期':
return $this->respv2($result, ['status' => 9, 'message' => '验证码过期']);
break;
case '验证码已使用':
return $this->respv2($result, ['status' => 10, 'message' => '验证码已使用']);
break;
default:
# code...
break;
}
}
$reward = RewardUser::where('merchant_id',$merchant_id)->where('id',$reward_id)
->where('status',1)
->first();
if(!$reward){
return $this->failure('你慢了一步,此悬赏已结束');
}
DB::beginTransaction();
$user_id = $this->matchFulinkUser($merchant_user_id);
if(!$user_id) {
$user = User::where('mobile',$mobile)->first();
}else{
$user = User::where('id', $user_id)->first();
}
if (!$user) {
$user = new User();
$user->mobile = $mobile;
$user->nickname = $name;
$user->save();
}
$profile = ProfileCourtship::where('user_id', $user->id)
->first();
if ($profile) {
if ($profile->user_id && $profile->user_id != $user->id) {
$profile->user_id = $user->id;
$profile->save();
}
} else {
$profile = new ProfileCourtship();
$profile->user_id = $user->id;
$profile->save();
}
$merchant_user = MerchantUser::where('id',$merchant_user_id)
->first();
if($merchant_user){
$old_mobile_user = MerchantUser::where('mobile',$mobile)->first();
if(!$old_mobile_user) {
if ($merchant_user->mobile != $mobile) {
$merchant_user->mobile = $mobile;
}
}
if(!$merchant_user->user_id){
$merchant_user->user_id = $user->id;
}
$merchant_user->save();
}
$linkmen = json_encode(['name' => $name,'mobile' =>$mobile]);
$reward_sign = new RewardSignUp();
$reward_sign->from_openid = $from_openid;
$reward_sign->merchant_user_id = $merchant_user_id;
$reward_sign->reward_id = $reward_id;
$reward_sign->linkmen = $linkmen;
$reward_sign->save();
DB::commit();
return $this->success('ok');
}catch (\Exception $e) {
DB::rollBack();
$this->getError($e);
return $this->failure('服务器休息中,请稍后再试');
}
}
}