Browse Source

已领取优惠券列表

master
parent
commit
bb193b9d46
  1. 1
      app/Amqp/Consumer/couponRebateConsumer.php
  2. 2
      app/Constants/SsdbKeysPrefix.php
  3. 11
      app/Controller/CouponController.php
  4. 39
      app/Service/CouponRebateService.php

1
app/Amqp/Consumer/couponRebateConsumer.php

@ -28,7 +28,6 @@ class couponRebateConsumer extends ConsumerMessage
public function consumeMessage($data, AMQPMessage $message): string
{
var_dump($data);
$res = $this->CouponRebateService->couponRebate($data);
if (!$res) {
return Result::REQUEUE;

2
app/Constants/SsdbKeysPrefix.php

@ -45,5 +45,5 @@ class SsdbKeysPrefix extends AbstractConstants
/**
* @Message("Coupon rebate List")
*/
const COUPON_REBATE_LIST = 'coupon_rebate_list';
const COUPON_REBATE_LIST = 'coupon_rebate_list_';
}

11
app/Controller/CouponController.php

@ -153,11 +153,20 @@ class CouponController extends BaseController
['receive.user_id','=',$userId],
])
->whereIn('receive.status',[0,1])
->select('u.*','receive.number_remain')
->select('u.discounts','u.full_amount','u.introduce','u.usable_end_time','receive.number_remain')
->orderBy('u.weigh','desc')
->get();
foreach ($coupons as $key => $coupon) {
//拼接满减文字提示
$coupon->full_amount = '满' . $coupon->full_amount . "可用";
//判断是折扣优惠券还是满减优惠券
if($coupon->discount_type == 1){
$coupon->discounts = '¥ '.$coupon->discounts;
}elseif($coupon->discount_type == 2){
$coupon->discounts = floatval($coupon->discounts)."";
}
if ($coupon->usable_end_time < $nowTime || $coupon->number_remain <= 0) {
$expired[] = $coupon;
} else {

39
app/Service/CouponRebateService.php

@ -176,21 +176,19 @@ class CouponRebateService implements CouponRebateServiceInterface
* */
public function isCouponRebate($user_id)
{
//获取SSDB上的活动信息
$ssdb = ApplicationContext::getContainer()->get(SSDBTask::class);
$active = $ssdb->exec('hgetall',SsdbKeysPrefix::COUPON_REBATE_ACTIVITY);
$coupon_ids = explode(',',$active['forward']);
$res = Db::table('ims_system_coupon_user as u')
->leftjoin('ims_system_coupon_user_receive as r', 'u.id', '=', 'r.system_coupon_user_id')
->whereIn('r.system_coupon_user_id',$coupon_ids)
->where([
['r.user_id', '=', $user_id],
['r.receive_type', '=', 4],
['u.active_type', '=', 2],
])
->select('r.id')
->first();
return $res;
$activity = $ssdb->exec('hget', SsdbKeysPrefix::COUPON_REBATE_ACTIVITY ,'activity');
// ssdb 键值
$ssdbKey = 'activity_'.$activity.'_user_'.$user_id;
// 判断是否已全部领取过
$userReceive = $ssdb->exec('hget', SsdbKeysPrefix::COUPON_REBATE_RECEIVE,$ssdbKey);
if($userReceive === false || is_null($userReceive)){
return false;
}else{
return $userReceive;
}
}
/*
@ -201,6 +199,7 @@ class CouponRebateService implements CouponRebateServiceInterface
//获取SSDB上的活动信息
$ssdb = ApplicationContext::getContainer()->get(SSDBTask::class);
$active = $ssdb->exec('hgetall',SsdbKeysPrefix::COUPON_REBATE_ACTIVITY);
return $active;
$coupon_ids = explode(',',$active['forward']);
$time = time();
$res = Db::table('ims_system_coupon_user')
@ -347,17 +346,13 @@ class CouponRebateService implements CouponRebateServiceInterface
//添加领取记录到ssdb
$data = [
'msg', '领券',
'order_id',$order_id,
'user_id' , $coupon->user_id,
'send_usr_id' , $coupon->send_user_id
$order_id,$coupon->user_id,
];
$ssdb->execWithoutTask('multi_hset', SsdbKeysPrefix::COUPON_REBATE_LIST, $data);
$ssdb->execWithoutTask('multi_hset', SsdbKeysPrefix::COUPON_REBATE_LIST.$coupon->send_user_id, $data);
// 提交
Db::commit();
} catch (\Exception $e) {
// 回滚
Db::rollBack();
//写入日志文件
$log_Data = array();
$log_Data['name'] = '返券';
$log_Data['order_id'] = $order_id;
@ -366,6 +361,8 @@ class CouponRebateService implements CouponRebateServiceInterface
LogLabel::COUPON_LOG,
$log_Data
);
// 回滚
Db::rollBack();
}
}
return true;

Loading…
Cancel
Save