Browse Source

Merge branch 'coupon_rebate' hot_fix_4

master
weigang 5 years ago
parent
commit
5e3d155771
  1. 6
      app/Amqp/Consumer/couponRebateConsumer.php
  2. 10
      app/Constants/SsdbKeysPrefix.php
  3. 2
      app/Controller/CouponController.php
  4. 3
      app/Controller/CouponRebateController.php
  5. 59
      app/Service/CouponRebateService.php

6
app/Amqp/Consumer/couponRebateConsumer.php

@ -16,7 +16,7 @@ use Hyperf\Di\Annotation\Inject;
/**
* @Consumer(exchange="couponRebate", routingKey="couponRebate", queue="couponRebate", name ="couponRebateConsumer", nums=1)
* @Consumer(exchange="deviceCouponRebate", routingKey="deviceCouponRebate", queue="deviceCouponRebate", name ="couponRebateConsumer", nums=1)
*/
class couponRebateConsumer extends ConsumerMessage
{
@ -28,11 +28,7 @@ class couponRebateConsumer extends ConsumerMessage
public function consumeMessage($data, AMQPMessage $message): string
{
//var_dump($data);
//ar_dump($rebate_id);
//var_dump($message->getBody());
$res = $this->CouponRebateService->couponRebate($data);
//var_dump($res);
if (!$res) {
return Result::REQUEUE;
}

10
app/Constants/SsdbKeysPrefix.php

@ -36,4 +36,14 @@ class SsdbKeysPrefix extends AbstractConstants
* @Message("Coupon rebate Key Prefix")
*/
const COUPON_REBATE_ACTIVITY = 'coupon_rebate_activity';
/**
* @Message("Store New User")
*/
const STORE_NEW_USER = 'store_new_user_';
/**
* @Message("Coupon rebate List")
*/
const COUPON_REBATE_LIST = 'coupon_rebate_list_';
}

2
app/Controller/CouponController.php

@ -153,7 +153,7 @@ class CouponController extends BaseController
['receive.user_id','=',$userId],
])
->whereIn('receive.status',[0,1])
->select('u.*','receive.number_remain')
->select('u.title','u.discounts','u.full_amount','u.discount_type','u.introduce','u.usable_end_time','receive.number_remain')
->orderBy('u.weigh','desc')
->get();

3
app/Controller/CouponRebateController.php

@ -16,6 +16,7 @@ use App\Service\CouponRebateServiceInterface;
use Hyperf\Di\Annotation\Inject;
use App\Request\CouponRebateReceiveRequest;
use App\Request\CouponRebateTieRequest;
use App\Request\UserRequest;
class CouponRebateController extends BaseController
{
@ -28,7 +29,7 @@ class CouponRebateController extends BaseController
/**
* 用户是否领取过领取优惠券
*/
public function isCouponRebate()
public function isCouponRebate(UserRequest $validator)
{
$user_id = $this->request->input('user_id', 0);
$res = $this->CouponRebateService->isCouponRebate($user_id);

59
app/Service/CouponRebateService.php

@ -189,21 +189,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;
}
}
/*
@ -288,8 +286,11 @@ class CouponRebateService implements CouponRebateServiceInterface
->whereIn('r.system_coupon_user_id',$coupon_ids)
->select('r.user_id', 'r.send_user_id')
->first();
/* 如果使用的优惠券为转发活动优惠券 则给赠送者返一张优惠券*/
if (isset($coupon->send_user_id) && ($coupon->send_user_id) > 0) {
/* 如果使用的优惠券为转发活动优惠券
**则给赠送者返一张优惠券
* **自己给自己转发的券不给返券
*/
if ($coupon && ($coupon->user_id != $coupon->send_user_id)) {
//是否已返过券
$exists_coupon_rebate = Db::table('ims_system_coupon_user_receive')
->where([
@ -303,7 +304,7 @@ class CouponRebateService implements CouponRebateServiceInterface
Db::beginTransaction();
try {
//返券
if($exists_coupon_rebate->id){
if($exists_coupon_rebate){
//如果已有该优惠券 则领取数量 和 可用数量 自增1
Db::table('ims_system_coupon_user_receive')
->where([
@ -352,34 +353,30 @@ class CouponRebateService implements CouponRebateServiceInterface
->update(['rebate_type' => 2]);
//更新库存操作
Db::table('ims_system_coupon_user')
->where('id', $active['repay']['repay'])
->where('id', $active['repay'])
->increment('inventory_use');
//添加领取记录到ssdb
$data = [
$order_id,$coupon->user_id,
];
$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_main_id'] = $order_id;
$log_Data['order_id'] = $order_id;
$log_Data['msg'] = '返券失败';
$this->log->event(
LogLabel::COUPON_LOG,
$log_Data
);
// 回滚
Db::rollBack();
}
}
$log_Data = array();
$log_Data['name'] = '返券';
$log_Data['user_id'] = $order_id;
$log_Data['send_user_id'] = $coupon->send_user_id;
$log_Data['order_main_id'] = $order_id;
$log_Data['msg'] = '返券成功';
$this->log->event(
LogLabel::COUPON_LOG,
$log_Data
);
return true;
}

Loading…
Cancel
Save