优化积分和余额并发

pull/299/head
Karson 2021-04-06 12:03:25 +08:00
parent 0236b39df0
commit ab083686a8
1 changed files with 37 additions and 24 deletions

View File

@ -2,6 +2,7 @@
namespace app\common\model; namespace app\common\model;
use think\Db;
use think\Model; use think\Model;
/** /**
@ -87,7 +88,9 @@ class User extends Model
*/ */
public static function money($money, $user_id, $memo) public static function money($money, $user_id, $memo)
{ {
$user = self::get($user_id); Db::startTrans();
try {
$user = self::lock(true)->find($user_id);
if ($user && $money != 0) { if ($user && $money != 0) {
$before = $user->money; $before = $user->money;
//$after = $user->money + $money; //$after = $user->money + $money;
@ -97,6 +100,10 @@ class User extends Model
//写入日志 //写入日志
MoneyLog::create(['user_id' => $user_id, 'money' => $money, 'before' => $before, 'after' => $after, 'memo' => $memo]); MoneyLog::create(['user_id' => $user_id, 'money' => $money, 'before' => $before, 'after' => $after, 'memo' => $memo]);
} }
Db::commit();
} catch (\Exception $e) {
Db::rollback();
}
} }
/** /**
@ -107,7 +114,9 @@ class User extends Model
*/ */
public static function score($score, $user_id, $memo) public static function score($score, $user_id, $memo)
{ {
$user = self::get($user_id); Db::startTrans();
try {
$user = self::lock(true)->find($user_id);
if ($user && $score != 0) { if ($user && $score != 0) {
$before = $user->score; $before = $user->score;
$after = $user->score + $score; $after = $user->score + $score;
@ -117,6 +126,10 @@ class User extends Model
//写入日志 //写入日志
ScoreLog::create(['user_id' => $user_id, 'score' => $score, 'before' => $before, 'after' => $after, 'memo' => $memo]); ScoreLog::create(['user_id' => $user_id, 'score' => $score, 'before' => $before, 'after' => $after, 'memo' => $memo]);
} }
Db::commit();
} catch (\Exception $e) {
Db::rollback();
}
} }
/** /**