556 lines
26 KiB
PHP
556 lines
26 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Controllers\Server\H5;
|
||
|
|
|
||
|
|
use App\Http\Controllers\Controller;
|
||
|
|
use App\Models\CommunityActivity;
|
||
|
|
use App\Models\ConsultAccount;
|
||
|
|
use App\Models\Consultation;
|
||
|
|
use App\Models\ConsultationRecords;
|
||
|
|
use App\Models\Coupon;
|
||
|
|
use App\Models\Course\Course;
|
||
|
|
use App\Models\Course\UserCourses;
|
||
|
|
use App\Models\Live\Anchor;
|
||
|
|
use App\Models\MerchantShop;
|
||
|
|
use App\Models\Server\EvaluateList;
|
||
|
|
use App\Models\Server\MerchantAccount;
|
||
|
|
use App\Models\Server\MerchantEvaluate;
|
||
|
|
use App\Models\Server\MerchantUser;
|
||
|
|
use App\Models\Server\TouristOrder;
|
||
|
|
use App\Models\UserCoupon;
|
||
|
|
use App\Models\UserMember;
|
||
|
|
use Illuminate\Http\JsonResponse;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use Illuminate\Support\Facades\DB;
|
||
|
|
|
||
|
|
|
||
|
|
class CouponController extends Controller
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* 优惠券详情
|
||
|
|
* *
|
||
|
|
* @param Request $request
|
||
|
|
* @param $id
|
||
|
|
* @return JsonResponse|string
|
||
|
|
*/
|
||
|
|
|
||
|
|
public function CouponDetail(Request $request, $id)
|
||
|
|
{
|
||
|
|
try {
|
||
|
|
$m_id = $request->merchant_id;
|
||
|
|
$result = Coupon::select('id', 'type_id', 'total_num', 'remain_num', 'm_id', 'type', 'sku','coupon_type', 'discount_rate')
|
||
|
|
->where('m_id', $m_id)->where('id', $id)
|
||
|
|
->first();
|
||
|
|
if (!$result)
|
||
|
|
return $this->failure('该优惠券不存在或已下架');
|
||
|
|
if ($result->type == 'course') {
|
||
|
|
$result->thumb = $result->course->thumb ?? '';
|
||
|
|
$result->title = $result->course->title ?? '';
|
||
|
|
$result->short_description = $result->course->short_description ?? '';
|
||
|
|
unset($result->course);
|
||
|
|
} elseif ($result->type == 'community') {
|
||
|
|
$result->thumb = $result->community->pic ?? '';
|
||
|
|
$result->title = $result->community->title ?? '';
|
||
|
|
$result->short_description = $result->community->Subtitle ?? '';
|
||
|
|
$result->sku = json_decode($result->sku, true);
|
||
|
|
//免费卷
|
||
|
|
if($result->coupon_type === 1){
|
||
|
|
$result->sku = json_decode($result->community->sku, true);
|
||
|
|
}
|
||
|
|
unset($result->community);
|
||
|
|
} elseif ($result->type == 'evaluate') {
|
||
|
|
$result->thumb = $result->evaluate->image ?? '';
|
||
|
|
$result->title = $result->evaluate->title ?? '';
|
||
|
|
$result->short_description = $result->evaluate->title ?? '';
|
||
|
|
$eval = MerchantEvaluate::where('id', $result->type_id)
|
||
|
|
->first();
|
||
|
|
if ($eval) {
|
||
|
|
$list = EvaluateList::where('test_item_id', $eval->test_item_id)
|
||
|
|
->first();
|
||
|
|
if ($list) {
|
||
|
|
$result->evaluate_type = $list->type;
|
||
|
|
} else {
|
||
|
|
return $this->failure('评测不存在');
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
return $this->failure('商家未添加此评测');
|
||
|
|
}
|
||
|
|
} elseif ($result->type == 'consult'){
|
||
|
|
$consult = Consultation::query()->where('id',$result->type_id)->first();
|
||
|
|
if (!$consult){
|
||
|
|
return $this->failure('咨询数据不存在');
|
||
|
|
}
|
||
|
|
$result->thumb = $consult->pic;
|
||
|
|
$result->title = $consult->title;
|
||
|
|
$result->short_description = $consult->title;
|
||
|
|
} else {
|
||
|
|
$result->thumb = '';
|
||
|
|
$result->title = '';
|
||
|
|
$result->short_description = '';
|
||
|
|
}
|
||
|
|
|
||
|
|
// 是否领取过
|
||
|
|
$get_status = UserCoupon::where('m_user_id', $request->merchant_user_id)->where('coupons_id', $id)->exists();
|
||
|
|
$result->get_status = $get_status;
|
||
|
|
//是否曾经购买过
|
||
|
|
$has_buy = TouristOrder::where('type',$result->type)->where('type_id',$result->type_id)->whereIn('pay_status',[1,4])
|
||
|
|
->where('account_id',$request->merchant_user_id)
|
||
|
|
->exists();
|
||
|
|
$result->has_buy = $has_buy;
|
||
|
|
|
||
|
|
//是否有咨询中的订单
|
||
|
|
$consulting_order = null;
|
||
|
|
if (isset($consult)) {
|
||
|
|
$consulting_order = ConsultationRecords::query()
|
||
|
|
->select('id','consulation_id')
|
||
|
|
->where('consulation_id', $consult->id)
|
||
|
|
->where('pay_status', 1)
|
||
|
|
->whereIn('status', [0, 1])
|
||
|
|
->where('merchant_user_id',$request->merchant_user_id)
|
||
|
|
->orderBy('id','desc')
|
||
|
|
->first();
|
||
|
|
if ($consulting_order){
|
||
|
|
$consulation = Consultation::find($consulting_order->consulation_id);
|
||
|
|
$consulting_order->teacher_mobile = ConsultAccount::query()
|
||
|
|
->where('id',$consulation->consult_account_id)
|
||
|
|
->value('mobile');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
$result->consulting_order = $consulting_order;
|
||
|
|
$result->has_consulting_order = $consulting_order ? 1 : 0;
|
||
|
|
|
||
|
|
$m_user = MerchantUser::where('id', $request->merchant_user_id)->first();
|
||
|
|
$linkmen['mobile'] = $m_user->mobile;
|
||
|
|
$linkmen['name'] = $m_user->nickname;
|
||
|
|
$user_status = UserCoupon::where('m_user_id', $request->merchant_user_id)->where('coupons_id', $id)->value('status');
|
||
|
|
$result->user_status = $user_status;
|
||
|
|
$result->linkmen = $linkmen;
|
||
|
|
return $this->success('ok', $result);
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
$this->getError($e);
|
||
|
|
return $this->failure('服务器休息,请稍后再试');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 领取优惠券
|
||
|
|
* @param Request $request
|
||
|
|
* @return JsonResponse|string
|
||
|
|
*/
|
||
|
|
public function ReceiveCoupon(Request $request)
|
||
|
|
{
|
||
|
|
try {
|
||
|
|
$merchant_id = $request->merchant_id;
|
||
|
|
$wechatUser = session('wechat.oauth_user.new');
|
||
|
|
if ($wechatUser) {
|
||
|
|
$openid = $wechatUser->getId();
|
||
|
|
} else {
|
||
|
|
$openid = $request->openid;
|
||
|
|
}
|
||
|
|
$m_id = $request->merchant_id;
|
||
|
|
$m_user_id = $request->merchant_user_id;
|
||
|
|
$coupon_id = $request->coupon_id;
|
||
|
|
$linkmen = $request->linkmen;
|
||
|
|
$user_id = $this->matchFulinkUser($m_user_id);
|
||
|
|
DB::beginTransaction();
|
||
|
|
$get_status = UserCoupon::where('m_user_id', $m_user_id)->where('coupons_id', $coupon_id)->exists();
|
||
|
|
if ($get_status)
|
||
|
|
return $this->failure('您已经领取过该优惠券了');
|
||
|
|
// echo $coupon_id.'--'.$merchant_id;exit;
|
||
|
|
$result = Coupon::where('id', $coupon_id)->where('status', 1)->where('m_id', $merchant_id)->first();
|
||
|
|
if (!$result)
|
||
|
|
return $this->failure('该优惠券已失效。');
|
||
|
|
if ($result->expiration_time && $result->expiration_time < now())
|
||
|
|
return $this->failure('该优惠券已过期');
|
||
|
|
if ($result->remain_num <= 0)
|
||
|
|
return $this->failure('该优惠券无库存');
|
||
|
|
$merchant_user = MerchantUser::where('id', $m_user_id)->first();
|
||
|
|
if ($result->type == 'course') {
|
||
|
|
$user_course = UserCourses::where('merchant_user_id', $m_user_id)->where('course_id', $result->type_id)
|
||
|
|
->where('status', 1)
|
||
|
|
->first();
|
||
|
|
if ($user_course)
|
||
|
|
return $this->failure('您已经是该课程的成员啦');
|
||
|
|
$UserCoupon = new UserCoupon();
|
||
|
|
$UserCoupon->openid = $openid;
|
||
|
|
$UserCoupon->coupons_id = $coupon_id;
|
||
|
|
$UserCoupon->status = 0;
|
||
|
|
$UserCoupon->m_user_id = $m_user_id;
|
||
|
|
$UserCoupon->m_id = $m_id;
|
||
|
|
$UserCoupon->linkmen = json_encode($request->linkmen);
|
||
|
|
$UserCoupon->save();
|
||
|
|
$result->decrement('remain_num', 1);
|
||
|
|
$result->save();
|
||
|
|
}
|
||
|
|
if ($result->type == 'community' || $result->type == 'activity' || $result->type == 'service') {
|
||
|
|
$userMember = UserMember::where('m_user_id', $m_user_id)->where('type', $result->type)
|
||
|
|
->where('type_id', $result->type_id)
|
||
|
|
->first();
|
||
|
|
if ($userMember && $result->remark == 'one') {
|
||
|
|
return $this->failure('您已经参加了此活动啦~');
|
||
|
|
}
|
||
|
|
$UserCoupon = new UserCoupon();
|
||
|
|
$UserCoupon->openid = $openid;
|
||
|
|
$UserCoupon->coupons_id = $coupon_id;
|
||
|
|
$UserCoupon->status = 0;
|
||
|
|
$UserCoupon->m_user_id = $m_user_id;
|
||
|
|
$UserCoupon->m_id = $m_id;
|
||
|
|
$UserCoupon->linkmen = json_encode($request->linkmen);
|
||
|
|
$UserCoupon->save();
|
||
|
|
$result->decrement('remain_num', 1);
|
||
|
|
$result->save();
|
||
|
|
}
|
||
|
|
if($result->type == 'evaluate'){
|
||
|
|
$UserCoupon = new UserCoupon();
|
||
|
|
$UserCoupon->openid = $openid;
|
||
|
|
$UserCoupon->coupons_id = $coupon_id;
|
||
|
|
$UserCoupon->status = 0;
|
||
|
|
$UserCoupon->m_user_id = $m_user_id;
|
||
|
|
$UserCoupon->m_id = $m_id;
|
||
|
|
$UserCoupon->linkmen = json_encode($request->linkmen);
|
||
|
|
$UserCoupon->save();
|
||
|
|
$result->decrement('remain_num', 1);
|
||
|
|
$result->save();
|
||
|
|
$UserCoupon['state'] = 1; //跳转的条件,不可删除
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($result->type == 'consult'){
|
||
|
|
$UserCoupon = new UserCoupon();
|
||
|
|
$UserCoupon->openid = $openid;
|
||
|
|
$UserCoupon->coupons_id = $coupon_id;
|
||
|
|
$UserCoupon->status = 0;
|
||
|
|
$UserCoupon->m_user_id = $m_user_id;
|
||
|
|
$UserCoupon->m_id = $m_id;
|
||
|
|
$UserCoupon->linkmen = json_encode($request->linkmen);
|
||
|
|
$UserCoupon->save();
|
||
|
|
$result->decrement('remain_num', 1);
|
||
|
|
$result->save();
|
||
|
|
}
|
||
|
|
|
||
|
|
$filter_type = ['evaluate','consult'];
|
||
|
|
|
||
|
|
if($result->coupon_type == 1 && !in_array($result->type,$filter_type)) {
|
||
|
|
$trade_no = \CommonUtilsService::getTradeNO();
|
||
|
|
$UserCoupon->status = 1;
|
||
|
|
$UserCoupon->save();
|
||
|
|
$goods = '领取优惠券';
|
||
|
|
|
||
|
|
//优惠券规格
|
||
|
|
if($request->sku_id){
|
||
|
|
$coupon_sku_id = $request->sku_id;
|
||
|
|
}else{
|
||
|
|
$coupon_sku_id = Coupon::where('id', $coupon_id)->value('sku_id');
|
||
|
|
}
|
||
|
|
$sku_price = 0;
|
||
|
|
if ($coupon_sku_id) {
|
||
|
|
if ($result->type = 'community') {
|
||
|
|
$skus = CommunityActivity::where('id', $result->type_id)->value('sku');
|
||
|
|
$skus = json_decode($skus, true);
|
||
|
|
$sku_name = '';
|
||
|
|
foreach ($skus as $sku) {
|
||
|
|
if ($sku['sku_id'] == $coupon_sku_id) {
|
||
|
|
$sku_name = $sku['name'];
|
||
|
|
// $sku_price = $sku['price'];
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
$goods = $goods.'-'.$sku_name;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//生成订单
|
||
|
|
$order = new TouristOrder();
|
||
|
|
$order->open_id = $openid;
|
||
|
|
$order->price = '0.00';
|
||
|
|
$order->num = 1;
|
||
|
|
$order->pay_type = 'free';
|
||
|
|
$order->pay_status = 4;
|
||
|
|
$order->trade_no = $trade_no;
|
||
|
|
$order->withdrawal_radio = 100;
|
||
|
|
$order->from_openid = $request->from_openid;
|
||
|
|
$order->goods = $goods;
|
||
|
|
$order->merchant_id = $m_id;
|
||
|
|
$order->user_coupon_id = $UserCoupon->id;
|
||
|
|
$order->account_id = $m_user_id;
|
||
|
|
$order->channel = 0;
|
||
|
|
$order->linkmen = json_encode([$request->linkmen]);
|
||
|
|
if ($linkmen && $linkmen['mobile'] && $linkmen['name']) {
|
||
|
|
if ($merchant_user) {
|
||
|
|
if (!$merchant_user->mobile) {
|
||
|
|
$old_mobile_user = MerchantUser::where('mobile', $linkmen['mobile'])->first();
|
||
|
|
if (!$old_mobile_user) {
|
||
|
|
//$merchant_user->mobile = $linkmen['mobile'];
|
||
|
|
} else {
|
||
|
|
if ($old_mobile_user->openid) {
|
||
|
|
//throw new \Exception('merchant_user_id='.$m_user_id.'手机号已存在,请联系客服');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (!$merchant_user->nickname) {
|
||
|
|
$merchant_user->nickname = $linkmen['name'];
|
||
|
|
}
|
||
|
|
$merchant_user->save();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
$price = '0.00';
|
||
|
|
if ($result->type == 'course') {
|
||
|
|
$com = Course::where('id', $result->type_id)->first();
|
||
|
|
$non_encode_url = 'https://love.ufutx.com/pu/#/receiveCoupons/' . $coupon_id;
|
||
|
|
$price = $com->charge;
|
||
|
|
} elseif ($result->type == 'community' || $result->type == 'activity' || $result->type == 'service') {
|
||
|
|
$com = CommunityActivity::where('id', $result->type_id)->first();
|
||
|
|
$non_encode_url = $com->class == 'one' ? 'https://love.ufutx.com/pu/#/activityCoupons/' . $coupon_id :
|
||
|
|
'https://love.ufutx.com/pu/#/serveCoupons/' . $coupon_id;
|
||
|
|
if ($coupon_sku_id) {
|
||
|
|
$price = $sku_price;
|
||
|
|
}else {
|
||
|
|
$price = $com->price;
|
||
|
|
}
|
||
|
|
|
||
|
|
} elseif ($result->type == 'consult'){
|
||
|
|
$com = Consultation::where('id', $result->type_id)->first();
|
||
|
|
$non_encode_url = 'https://love.ufutx.com/pu/#/consultCoupons/' . $coupon_id;
|
||
|
|
$price = $com->price;
|
||
|
|
}
|
||
|
|
$link_name = $request->linkmen['name'] ?? ($request->linkmen[0]['name'] ?? null);
|
||
|
|
$link_mobile = $request->linkmen['mobile'] ?? ($request->linkmen[0]['mobile'] ?? '');
|
||
|
|
$order->name = ($request->name ?? ($merchant_user->nickname ?? $link_name)) ?? "";
|
||
|
|
$order->mobile = ($request->mobile ?? ($merchant_user->mobile ?? $link_mobile)) ?? '';
|
||
|
|
$order->type = $result->type;
|
||
|
|
if ($result->type == 'evaluate') {
|
||
|
|
$merchant_evaluates_id = MerchantEvaluate::where('merchant_id', $merchant_id)
|
||
|
|
->where('test_item_id', $result->type_id)
|
||
|
|
->value('id');
|
||
|
|
$order->type_id = $merchant_evaluates_id;
|
||
|
|
} else {
|
||
|
|
$order->type_id = $result->type_id;
|
||
|
|
}
|
||
|
|
if(empty($com)){
|
||
|
|
throw new \Exception('未获取到实体,type_id='.$result->type_id);
|
||
|
|
}
|
||
|
|
$order->desc = $com->title.'-领取优惠券';
|
||
|
|
$order->save();
|
||
|
|
if ($result->type == 'community') {
|
||
|
|
$remark = $this->numMember($order);
|
||
|
|
$order->remark = $remark;
|
||
|
|
$order->save();
|
||
|
|
}elseif($result->type == 'course'){
|
||
|
|
$user_course = new UserCourses();
|
||
|
|
$user_course->user_id = $user_id;
|
||
|
|
$user_course->course_id = $result->type_id;
|
||
|
|
$user_course->type = 'business';
|
||
|
|
$user_course->trade_no = $trade_no;
|
||
|
|
$user_course->status = 1;
|
||
|
|
$user_course->open_id = $openid;
|
||
|
|
$user_course->merchant_user_id = $m_user_id;
|
||
|
|
$user_course->save();
|
||
|
|
}
|
||
|
|
// $openid,$name,$goods,$price,$amount,$url
|
||
|
|
$merchant_openid = MerchantAccount::where('id', $m_id)->value('openid');
|
||
|
|
if (!$merchant_openid) $merchant_openid = Anchor::where('m_id', $m_id)->value('openid');
|
||
|
|
$encode_url = urlencode($non_encode_url);
|
||
|
|
$url = 'https://love.ufutx.com/api/official/live/wechat/FamilyAuth?merchant_id=' . $m_id . '&url=' . $encode_url;
|
||
|
|
\CommonUtilsService::reciveCoupon($merchant_openid, $merchant_user->nickname, $com->title, $price, $result->remain_num, $url);
|
||
|
|
|
||
|
|
//咨询的订单
|
||
|
|
if ($result->type == 'consult'){
|
||
|
|
$consult_order = new ConsultationRecords();
|
||
|
|
$consult_order->anchor_id = 0;
|
||
|
|
$consult_order->merchant_id = $m_id;
|
||
|
|
$consult_order->consulation_id = $com->id;
|
||
|
|
$consult_order->name = ($request->name ?? ($merchant_user->nickname ?? $link_name)) ?? "";
|
||
|
|
$consult_order->phone = ($request->mobile ?? ($merchant_user->mobile ?? $link_mobile)) ?? '';
|
||
|
|
$consult_order->price = 0;
|
||
|
|
$consult_order->num = 1;
|
||
|
|
$consult_order->type = 'consult';
|
||
|
|
$consult_order->class = '';
|
||
|
|
$consult_order->desc = '';
|
||
|
|
$consult_order->pay_status = 1;
|
||
|
|
$consult_order->trade_no = $trade_no;
|
||
|
|
$consult_order->save();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
DB::commit();
|
||
|
|
return $this->success('ok', $UserCoupon);
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
DB::rollBack();
|
||
|
|
$this->getError($e);
|
||
|
|
return $this->failure($e->getMessage().'-'.$e->getLine());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 我的优惠券列表
|
||
|
|
*/
|
||
|
|
public function getCouponList(Request $request)
|
||
|
|
{
|
||
|
|
try {
|
||
|
|
$merchant_id = $request->merchant_id;
|
||
|
|
$type = $request->type;
|
||
|
|
$type_id = $request->type_id;
|
||
|
|
$merchant_user_id = $request->merchant_user_id;
|
||
|
|
$sku_id = $request->input('sku_id');
|
||
|
|
$nopage = $request->nopage;
|
||
|
|
$status = $request->status;
|
||
|
|
$class = $request->class;
|
||
|
|
if (config('app.debug')) {
|
||
|
|
if (!$merchant_id) {
|
||
|
|
return $this->failure('参数不全');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// print_r(compact('merchant_id','type','type_id','merchant_user_id','status'));exit;
|
||
|
|
$user_coupons = UserCoupon::where('m_user_id', $merchant_user_id)->where('m_id', $merchant_id)
|
||
|
|
->with(['coupon' => function ($query) use ($type, $type_id, $class) {
|
||
|
|
$query->where('status', 1);
|
||
|
|
if ($type) {
|
||
|
|
$query->where('type', $type);
|
||
|
|
}
|
||
|
|
if ($type_id) {
|
||
|
|
$query->where('type_id', $type_id);
|
||
|
|
}
|
||
|
|
if ($class) {
|
||
|
|
$query->where('class', $class);
|
||
|
|
}
|
||
|
|
}])
|
||
|
|
->whereHas('coupon', function ($query) use ($type, $type_id, $class, $sku_id) {
|
||
|
|
$query->where('status', 1);
|
||
|
|
if ($type) {
|
||
|
|
$query->where('type', $type);
|
||
|
|
}
|
||
|
|
if ($type_id) {
|
||
|
|
$query->where('type_id', $type_id);
|
||
|
|
}
|
||
|
|
if ($class) {
|
||
|
|
$query->where('class', $class);
|
||
|
|
}
|
||
|
|
if ($sku_id) {
|
||
|
|
$query->where(function ($sql) use($sku_id){
|
||
|
|
$sql->where('sku_id', $sku_id)->orWhereNull('sku_id');
|
||
|
|
});
|
||
|
|
}
|
||
|
|
})
|
||
|
|
->orderBy('status', 'asc')->orderBy('id', 'desc');
|
||
|
|
if (isset($request->status)) {
|
||
|
|
$user_coupons = $user_coupons->where('status', $status);
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($nopage) {
|
||
|
|
$user_coupons = $user_coupons->get();
|
||
|
|
} else {
|
||
|
|
$user_coupons = $user_coupons->paginate();
|
||
|
|
}
|
||
|
|
foreach ($user_coupons as $key => $coupon) {
|
||
|
|
if ($coupon->coupon) {
|
||
|
|
switch ($coupon->coupon->type) {
|
||
|
|
case 'course':
|
||
|
|
$service = Course::where('id', $coupon->coupon->type_id)->where('merchant_id', $merchant_id)
|
||
|
|
->first();
|
||
|
|
if (!$service) {
|
||
|
|
$price = 0.00;;
|
||
|
|
} else {
|
||
|
|
$price = $service->charge;
|
||
|
|
}
|
||
|
|
switch ($coupon->coupon->coupon_type) {
|
||
|
|
case 1:
|
||
|
|
$coupon->coupon->discount_amount = $price;
|
||
|
|
break;
|
||
|
|
case 2:
|
||
|
|
$temp = $coupon->coupon->discount_rate;
|
||
|
|
$coupon->coupon->discount_rate = number_format(10 * $coupon->coupon->discount_rate, 1);
|
||
|
|
$coupon->coupon->discount_amount = number_format($price * (1 - $temp), 2);
|
||
|
|
break;
|
||
|
|
case 3:
|
||
|
|
$coupon->coupon->discount_amount = $coupon->coupon->discount_rate;
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
$coupon->coupon->discount_amount = 0;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
case 'activity':
|
||
|
|
case 'service':
|
||
|
|
case 'community':
|
||
|
|
$service = CommunityActivity::where('id', $coupon->coupon->type_id)->where('merchant_id', $merchant_id)
|
||
|
|
->first();
|
||
|
|
if (!$service) {
|
||
|
|
$price = 0.00;
|
||
|
|
} else {
|
||
|
|
$price = $service->price;
|
||
|
|
$sku = json_decode($service->sku)?:[];
|
||
|
|
$sku_price = [];
|
||
|
|
foreach ($sku as $val) {
|
||
|
|
$sku_price[] = $val->price;
|
||
|
|
}
|
||
|
|
switch ($coupon->coupon->coupon_type) {
|
||
|
|
case 1:
|
||
|
|
$coupon->coupon->discount_amount = max($sku_price);
|
||
|
|
break;
|
||
|
|
case 2:
|
||
|
|
$temp = $coupon->coupon->discount_rate;
|
||
|
|
$coupon->coupon->discount_rate = number_format(10 * $coupon->coupon->discount_rate, 1);
|
||
|
|
$coupon->coupon->discount_amount = number_format((1- $temp) * max($sku_price), 2);
|
||
|
|
break;
|
||
|
|
case 3:
|
||
|
|
$coupon->coupon->discount_amount = $coupon->coupon->discount_rate;
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
$coupon->coupon->discount_amount = 0;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
break;
|
||
|
|
case 'shop':
|
||
|
|
$service = MerchantShop::where('id', $coupon->coupon->type_id)->where('merchant_id', $merchant_id)
|
||
|
|
->first();
|
||
|
|
if (!$service) {
|
||
|
|
$price = 0.00;
|
||
|
|
} else {
|
||
|
|
$price = $service->charge;
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
case 'evaluate':
|
||
|
|
$service = MerchantEvaluate::where('id', $coupon->coupon->type_id)->where('merchant_id', $merchant_id)
|
||
|
|
->first();
|
||
|
|
if (!$service) {
|
||
|
|
$price = 0.00;
|
||
|
|
} else {
|
||
|
|
$price = $service->charge;
|
||
|
|
}
|
||
|
|
break;
|
||
|
|
case 'consult':
|
||
|
|
$service = Consultation::query()->where('id', $coupon->coupon->type_id)
|
||
|
|
->first();
|
||
|
|
switch ($coupon->coupon->coupon_type){
|
||
|
|
case 1:
|
||
|
|
$coupon->coupon->discount_amount = $service->price;
|
||
|
|
break;
|
||
|
|
case 2:
|
||
|
|
$temp = $coupon->coupon->discount_rate;
|
||
|
|
$coupon->coupon->discount_rate = number_format(10 * $coupon->coupon->discount_rate, 1);
|
||
|
|
$coupon->coupon->discount_amount = number_format((1- $temp) * $service->price, 2);
|
||
|
|
break;
|
||
|
|
case 3:
|
||
|
|
$coupon->coupon->discount_amount = $coupon->coupon->discount_rate;
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
$coupon->coupon->discount_amount = 0;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
return $this->failure('优惠券不存在');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return $this->success('ok', $user_coupons);
|
||
|
|
} catch (\Exception $e) {
|
||
|
|
$this->getError($e);
|
||
|
|
return $this->failure('服务器休息,请稍后再试');
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|