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