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