处理红包使用后未扣除的问题
This commit is contained in:
parent
1318f48558
commit
641f53ec6e
@ -65,7 +65,7 @@ class StoreConsumptionUserDao extends BaseDao
|
||||
$orderValidAmount = min($groupOrder['pay_price'], $this->maxAmount);
|
||||
$scope = $this->getScope($consumption, $orderValidAmount);
|
||||
//用户没有达到 消费金活动 任一档次
|
||||
if ($scope['rate'] <= 0) {
|
||||
if (empty($scope) || $scope['rate'] <= 0) {
|
||||
return false;
|
||||
}
|
||||
Db::startTrans();
|
||||
@ -198,6 +198,7 @@ class StoreConsumptionUserDao extends BaseDao
|
||||
*/
|
||||
public function send($consumption, float $rate, int $userId, string $groupOrderIds, float $amount, $status = -2, $type = 1)
|
||||
{
|
||||
$title = $type == StoreConsumptionUser::TYPE_TWO ? '现金抵扣红包' : '无门槛实物通用红包';
|
||||
$model = StoreConsumptionUser::where('uid', $userId)->where('type', StoreConsumptionUser::TYPE_TWO)->find();
|
||||
$couponPrice = bcmul($amount, $rate, 2);
|
||||
if (!empty($model) && $model['type'] == $type) {
|
||||
@ -207,7 +208,7 @@ class StoreConsumptionUserDao extends BaseDao
|
||||
$model = new StoreConsumptionUser();
|
||||
$model->coupon_id = $consumption['coupon_id'];
|
||||
$model->uid = $userId;
|
||||
$model->coupon_title = $consumption['title'];
|
||||
$model->coupon_title = $title;
|
||||
$model->order_id_set = $groupOrderIds;
|
||||
$model->coupon_price = $couponPrice;
|
||||
$model->balance = $model->coupon_price;
|
||||
@ -221,7 +222,6 @@ class StoreConsumptionUserDao extends BaseDao
|
||||
if (!$model->save()) {
|
||||
throw new \Exception('发放失败');
|
||||
}
|
||||
$title = $type == StoreConsumptionUser::TYPE_TWO ? '现金抵扣红包' : '无门槛实物通用红包';
|
||||
// 写入红包日志
|
||||
/** @var $userBillRepository UserBillRepository */
|
||||
$userBillRepository = app()->make(UserBillRepository::class);
|
||||
@ -258,4 +258,25 @@ class StoreConsumptionUserDao extends BaseDao
|
||||
return strtotime('+1 year', strtotime($datetime));
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* 扣减红包余额
|
||||
* @param $id
|
||||
* @param $amount
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function reduce($id, $amount)
|
||||
{
|
||||
$storeConsumptionUser = StoreConsumptionUser::where('coupon_user_id', $id)->find();
|
||||
if (empty($storeConsumptionUser) || $storeConsumptionUser->balance < $amount) {
|
||||
throw new \Exception('红包余额不足');
|
||||
}
|
||||
$balance = bcsub($storeConsumptionUser->balance, $amount, 2);
|
||||
$storeConsumptionUser->balance = max($balance, 0);
|
||||
if (!$storeConsumptionUser->save()) {
|
||||
throw new \Exception('红包余额更新出错');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -37,8 +37,9 @@ class paySuccess
|
||||
$orderList = $event['groupOrder']['orderList'];
|
||||
$storeConsumptionUserDao = new StoreConsumptionUserDao();
|
||||
$storeConsumptionUserDao->check($event['groupOrder']['uid'], $event['groupOrder']['group_order_id']);
|
||||
$storeConsumptionUserDao->reduce($event['groupOrder']['consumption_id'], $event['groupOrder']['consumption_money']);
|
||||
foreach ($orderList as $k => $order) {
|
||||
//
|
||||
//
|
||||
$StoreProcessing->AutomaticallyCreateOrders($order);
|
||||
$this->recordOrderAddr($order);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user