perf(user): 优化用户资金操作逻辑

- 在 UserLogic 中,将用户资金的增加和减少操作从查询后更新改为直接更新
- 使用 where 条件更新用户 purchase_funds 和 now_money 字段,提高效率
- 移除了不必要的对象加载和 save 方法调用,简化了代码结构
This commit is contained in:
mkm 2025-02-06 16:01:37 +08:00
parent 81f9840993
commit 995a63949d

View File

@ -243,12 +243,10 @@ class UserLogic extends BaseLogic
$capitalFlowDao = new CapitalFlowLogic($find, 'user'); $capitalFlowDao = new CapitalFlowLogic($find, 'user');
if ($params['type'] == 1) { if ($params['type'] == 1) {
$capitalFlowDao->userIncome('system_purchase_add', 'system', 0, $params['purchase_funds'],$params['mark']??'',1); $capitalFlowDao->userIncome('system_purchase_add', 'system', 0, $params['purchase_funds'],$params['mark']??'',1);
$find->purchase_funds = bcadd($params['purchase_funds'], $find['purchase_funds'], 2); User::where(['id' => $params['id']])->update(['purchase_funds' => bcadd($params['purchase_funds'], $find['purchase_funds'], 2)]);
$find->save();
} else { } else {
$capitalFlowDao->userExpense('system_purchase_dec', 'system', 0, $params['purchase_funds'],$params['mark']??''); $capitalFlowDao->userExpense('system_purchase_dec', 'system', 0, $params['purchase_funds'],$params['mark']??'');
$find->purchase_funds = bcsub($find['purchase_funds'],$params['purchase_funds'], 2); User::where(['id' => $params['id']])->update(['purchase_funds' =>bcsub($find['purchase_funds'],$params['purchase_funds'], 2)]);
$find->save();
} }
Db::commit(); Db::commit();
return true; return true;
@ -268,12 +266,10 @@ class UserLogic extends BaseLogic
$capitalFlowDao = new CapitalFlowLogic($find, 'user'); $capitalFlowDao = new CapitalFlowLogic($find, 'user');
if ($params['type'] == 1) { if ($params['type'] == 1) {
$capitalFlowDao->userIncome('system_balance_add', 'system', 0, $params['now_money'],$params['mark']??''); $capitalFlowDao->userIncome('system_balance_add', 'system', 0, $params['now_money'],$params['mark']??'');
$find->now_money = bcadd($params['now_money'], $find['now_money'], 2); User::where(['id' => $params['id']])->update(['now_money' => bcadd($params['now_money'], $find['now_money'], 2)]);
$find->save();
} else { } else {
$capitalFlowDao->userExpense('system_balance_reduce', 'system', 0, $params['now_money'],$params['mark']??''); $capitalFlowDao->userExpense('system_balance_reduce', 'system', 0, $params['now_money'],$params['mark']??'');
$find->now_money = bcsub($find['now_money'],$params['now_money'], 2); User::where(['id' => $params['id']])->update(['now_money' =>bcsub($find['now_money'],$params['now_money'], 2)]);
$find->save();
} }
Db::commit(); Db::commit();
return true; return true;