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

This commit is contained in:
2026-01-07 17:00:37 +08:00
parent 3cc5ee00b8
commit b7538b0340

View File

@@ -241,68 +241,70 @@ 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)
{
//如果是金币 则表为user_wallet_coin 否则 表为user_wallet_earnings
if ($money_type == self::MONEYTYPECOIN) {
$table_name = 'user_wallet_coin';
} else {
$table_name = 'user_wallet_earnings';
}
if ($change_type == 1) {//后台充值逻辑处理
if ($money_type == self::MONEYTYPECOIN) {//金币
if ($change_value > 0) {//大于0为增加金币
$change_type = self::BACKGROUND_RECHARGE_COIN;
} else {//小于0为扣除金币
$change_type = self::BACKGROUND_DEDUCTION_COIN;
}
} else {//钻石
if ($change_value > 0) {// 大于0为增加钻石
$change_type = self::BACKGROUND_RECHARGE_DIAMOND;
} else {// 小于0为扣除钻石
$change_type = self::BACKGROUND_DEDUCTION_DIAMOND;
}
// 确定操作的表
$table_name = $money_type == self::MONEYTYPECOIN ? 'user_wallet_coin' : 'user_wallet_earnings';
// 如果是后台操作change_type == 1则根据金额正负自动设置具体的变更类型
if ($change_type == 1) {
if ($money_type == self::MONEYTYPECOIN) {
$change_type = $change_value > 0 ? self::BACKGROUND_RECHARGE_COIN : self::BACKGROUND_DEDUCTION_COIN;
} else {
$change_type = $change_value > 0 ? self::BACKGROUND_RECHARGE_DIAMOND : self::BACKGROUND_DEDUCTION_DIAMOND;
}
}
// 验证用户信息
$user_info = db::name('user')->find($user_id);
if (empty($user_info['id'])) {
return ['code' => 0, 'msg' => "用户信息错误", 'data' => null];
}
// 获取用户钱包信息
$user_wallet = db::name($table_name)->where(['user_id' => $user_id])->find();
if (empty($user_wallet['id'])) {
return ['code' => 0, 'msg' => "用户信息错误", 'data' => null];
return ['code' => 0, 'msg' => "用户钱包信息错误", 'data' => null];
}
// 验证资金类型
$money_type_str = $this->getMoneyType($money_type);
if (empty($money_type_str)) {
return ['code' => 0, 'msg' => "非法资金类型", 'data' => null];
}
// 检查金额是否为数字
if (!is_numeric($change_value)) {
return ['code' => 0, 'msg' => "变动的数值必须为数字", 'data' => null];
}
// 验证并检查余额上限
if ($money_type == self::MONEYTYPECOIN) {
$after_coin = $user_wallet['coin'];
$after_coin += $change_value;
$after_coin = $user_wallet['coin'] + $change_value;
if ($after_coin > 99999999) {
return ['code' => 0, 'msg' => "当前用户金币已达上限", 'data' => null];
}
} elseif ($money_type == self::MONEYTYPEARNINGS) {
$after_earnings = $user_wallet['earnings'];
$after_earnings += $change_value;
$after_earnings = $user_wallet['earnings'] + $change_value;
if ($after_earnings > 99999999) {
return ['code' => 0, 'msg' => "当前用户钻石已达上限", 'data' => null];
}
} else {
return ['code' => 0, 'msg' => "非法资金类型", 'data' => null];
}
// 验证变更类型
$change_name = $this->ChangeTypeLable($change_type);
if (empty($change_name)) {
return ['code' => 0, 'msg' => "非法资金变动类型", 'data' => null];
}
if (!is_numeric($change_value)) {
return ['code' => 0, 'msg' => "变动的数值必须为数字", 'data' => null];
}
// 记录资金变动日志
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 {