优化:积分日志排序错误导致当前积分额度可能与上一条对不上的问题

添加:退款时同步退还赠送积分
This commit is contained in:
wuhui_zzw 2023-11-14 10:10:24 +08:00
parent d05d5af8ca
commit b3243283a3
2 changed files with 28 additions and 5 deletions

View File

@ -1182,7 +1182,30 @@ class StoreRefundOrderRepository extends BaseRepository
{
if ($refundOrder->refund_price > 0 && $refundOrder->order->pay_price > 0) {
$userBillRepository = app()->make(UserBillRepository::class);
$bill = $userBillRepository->getWhere(['category' => 'integral', 'type' => 'lock', 'link_id' => $refundOrder->order->group_order_id]);
$bill = $userBillRepository->getWhere(['category' => 'integral', 'type' => 'lock', 'link_id' => $refundOrder->order_id]);// 获取积分赠送记录
if ($bill) {
// 计算扣除的积分
if ($refundOrder->order->status == -1) $number = bcsub($bill->number, $userBillRepository->refundIntegral($refundOrder->order_id, $bill->uid), 0);
else $number = ($refundOrder['refund_price'] / $refundOrder->order->pay_price) * $refundOrder->order->give_integral;
if ($number <= 0) return;
// 修改用户持有的总积分
$make = app()->make(UserRepository::class);
$make->update($refundOrder->uid, ['integral' => Db::raw('integral-' . $number)]);
$userIntegral = $make->get($refundOrder->uid)->integral;
// 添加记录
$userBillRepository->decBill($bill->uid, 'integral', 'refund_lock', [
'link_id' => $refundOrder->order_id,
'status' => 1,
'title' => '扣除赠送积分',
'number' => $number,
'mark' => '订单退款扣除赠送商户积分' . intval($number),
'balance' => $userIntegral
]);
// 赠送的都是商户积分 这里也要退商户积分
app()->make(IntegralRepository::class)->changeIntegral((int)$refundOrder->uid,(int)$refundOrder->mer_id,(float)sprintf('%.2f',0 - $number));
}
/*$bill = $userBillRepository->getWhere(['category' => 'integral', 'type' => 'lock', 'link_id' => $refundOrder->order->group_order_id]);
if ($bill && $bill->status != 1) {
if ($refundOrder->order->status == -1) {
@ -1201,7 +1224,7 @@ class StoreRefundOrderRepository extends BaseRepository
'mark' => '订单退款扣除赠送积分' . intval($number),
'balance' => $refundOrder->user->integral
]);
}
}*/
}
}
@ -1332,11 +1355,11 @@ class StoreRefundOrderRepository extends BaseRepository
if((float)$refundOrder->order->use_mer_integral > 0){
// 使用的商户积分
app()->make(IntegralRepository::class)->changeIntegral((int)$refundOrder->uid,(int)$refundOrder->mer_id,(float)sprintf('%.2f',$refundOrder->integral));
$mark = '订单退款,返还' . intval($refundOrder->integral) . '商户积分';
$mark = '订单退款,返还积分抵扣使用的' . intval($refundOrder->integral) . '商户积分';
}else{
// 使用的平台积分
app()->make(IntegralRepository::class)->changeIntegral((int)$refundOrder->uid,(int)0,(float)sprintf('%.2f',$refundOrder->integral));
$mark = '订单退款,返还' . intval($refundOrder->integral) . '平台积分';
$mark = '订单退款,返还积分抵扣使用的' . intval($refundOrder->integral) . '平台积分';
}

View File

@ -96,7 +96,7 @@ class UserBillRepository extends BaseRepository
public function getList($where, $page, $limit)
{
$query = $this->dao->searchJoin($where)->order('a.create_time DESC');
$query = $this->dao->searchJoin($where)->order('a.create_time DESC')->order('a.bill_id DESC');
$count = $query->count();
$list = $query->page($page, $limit)->select();
return compact('count', 'list');