优化:用户钱包操作方法修改。

This commit is contained in:
2026-01-07 16:44:54 +08:00
parent 95768638ac
commit eeba316880

View File

@@ -229,17 +229,17 @@ class UserWallet extends Model
*/
public function change_user_money($user_id, $change_value, $money_type,$change_type, $remarks = "", $room_id=0,$from_uid = 0, $from_id = 0)
{
if (in_array($change_type, $this->coin_consumption_type_array) && $money_type==self::MONEYTYPECOIN) {//金币支出
$change_value = $change_value * -1;
}
if (in_array($change_type, $this->diamond_consumption_type_array) && $money_type==self::MONEYTYPEARNINGS){//钻石支出
$change_value = $change_value * -1;
//如果是金币 则表为user_wallet_coin 否则 表为user_wallet_earnings
if($money_type==self::MONEYTYPECOIN){
$table_name = 'user_wallet_coin';
}else{
$table_name = 'user_wallet_earnings';
}
$user_info = db::name('user')->find($user_id);
if (empty($user_info['id'])) {
return ['code' => 0, 'msg' => "用户信息错误", 'data' => null];
}
$user_wallet = db::name('user_wallet')->where(['user_id' => $user_id])->find();
$user_wallet = db::name($table_name)->where(['user_id' => $user_id])->find();
if (empty($user_wallet['id'])) {
return ['code' => 0, 'msg' => "用户信息错误", 'data' => null];
}
@@ -247,16 +247,14 @@ class UserWallet extends Model
if (empty($money_type_str)) {
return ['code' => 0, 'msg' => "非法资金类型", 'data' => null];
}
$after_coin = $user_wallet['coin'];
$after_earnings = $user_wallet['earnings'];
if ($money_type == 1) {
$change_field = "coin";
if ($money_type==self::MONEYTYPECOIN) {
$after_coin = $user_wallet['coin'];
$after_coin += $change_value;
if($after_coin > 99999999){
return ['code' => 0, 'msg' => "当前用户金币已达上限", 'data' => null];
}
} elseif ($money_type == 2) {
$change_field = "earnings";
} elseif ($money_type==self::MONEYTYPEARNINGS) {
$after_earnings = $user_wallet['earnings'];
$after_earnings += $change_value;
if($after_earnings > 99999999){
return ['code' => 0, 'msg' => "当前用户钻石已达上限", 'data' => null];
@@ -271,43 +269,15 @@ class UserWallet extends Model
if (!is_numeric($change_value)) {
return ['code' => 0, 'msg' => "变动的数值必须为数字", 'data' => null];
}
$data = [];
$data['user_id'] = $user_id;
$data['room_id'] = $room_id;
$data['change_type'] = $change_type;
$data['money_type'] = $money_type;
$data['change_value'] = abs($change_value);
$data['after_coin'] = $after_coin;
$data['after_earnings'] = $after_earnings;
$data['from_id'] = $from_id;
$data['from_uid'] = $from_uid;
$data['remarks'] = $remarks;
$data['createtime'] = time();
$data['updatetime'] = time();
Db::startTrans();
try {
if($change_value < 0){
$change_value_abs = abs($change_value);
$change_value_up = $user_wallet[$change_field] - $change_value_abs;
if($change_value_up<0){
Db::rollback();
return ['code' => 0, 'msg' => $money_type_str . "不足", 'data' => null];
}
}
Db::name('user_wallet')->where('user_id', $user_id)->inc($change_field, $change_value)->update(['updatetime' => time()]);
$reslut = Db::name('vs_user_money_log')->insert($data);
if (!$reslut) {
Db::rollback();
return ['code' => 0, 'msg' => "请重试", 'data' => null];
}
// 提交事务
Db::commit();
return ['code' => 1, 'msg' => "操作成功", 'data' => null];
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
if($money_type==self::MONEYTYPECOIN){
$return = model('api/UserWallet')->change_user_cion_log($user_id,$change_value,$room_id,$change_type,$remarks);
}else{
$return = model('api/UserWallet')->change_user_earnings_log($user_id,$change_value,$room_id,$change_type,$remarks);
}
if($return) {
return ['code' => 0, 'msg' => "请重试", 'data' => null];
}else{
return ['code' => 1, 'msg' => "操作成功", 'data' => null];
}
}
@@ -315,8 +285,10 @@ class UserWallet extends Model
* 用户资金变动日志
*/
public function money_change_log($user_id,$seach, $money_type=0, $page=0,$page_limit=30){
if($money_type){
$where['money_type'] =$money_type;
if($money_type==self::MONEYTYPECOIN){
$table_name_log = 'user_coin_log';
}else{
$table_name_log = 'user_earnings_log';
}
if($seach['stime']){
$where['createtime'] = ['>=',strtotime($seach['stime'])];
@@ -327,8 +299,8 @@ class UserWallet extends Model
if($seach['change_type']){
$where['change_type'] =$seach['change_type'];
}
$log['count'] = Db::name('vs_user_money_log')->where($where)->where('user_id',$user_id)->count();
$log_select = Db::name('vs_user_money_log')
$log['count'] = Db::name($table_name_log)->where($where)->where('user_id',$user_id)->count('id');
$log_select = Db::name($table_name_log)
->where($where)
->where('user_id',$user_id)
->order('log_id desc');
@@ -337,11 +309,11 @@ class UserWallet extends Model
}
$log['list'] = $log_select->select();
foreach ($log['list'] as $key => &$value) {
$value['money_type'] = $this->getMoneyType($value['money_type']);
$value['money_type'] = $this->getMoneyType($money_type);
$change_type = $value['change_type'];
$value['change_type'] = $this->ChangeTypeLable($value['change_type']);
$value['createtime'] = date('Y-m-d H:i:s',$value['createtime']);
if($money_type==1 ){
if($money_type==self::MONEYTYPECOIN){
if(in_array($change_type,$this->coin_consumption_type_array)){
$value['change_in_out'] = "支出";
$value['change_value'] = $value['change_value']*-1;