You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.8 KiB
96 lines
2.8 KiB
<?php
|
|
|
|
namespace app\money\service;
|
|
|
|
use app\money\model\MoneyLog;
|
|
use app\money\model\MoneyMy;
|
|
use think\facade\Db;
|
|
|
|
class Money extends Base
|
|
{
|
|
/**
|
|
* 更新用户余额并记录明细
|
|
* @param int $user_id 用户ID
|
|
* @param string $type 变动类型
|
|
* @param float $money 变动数量
|
|
* @param string $show_text 显示文案
|
|
* @param string $relation_order_number 关联订单编号
|
|
* @param array $remark 关联信息
|
|
* @date 2022-11-01
|
|
*/
|
|
public function change($user_id, $type, $money, $show_text = '', $relation_order_number = '', $remark = [])
|
|
{
|
|
$my_model = new MoneyMy();
|
|
$log_model = new MoneyLog();
|
|
|
|
// 变动数量不能为0
|
|
if (!$money) {
|
|
return sendErrorArray(2001, '变动数量不可为0');
|
|
}
|
|
|
|
// 查找我的信息
|
|
$my = $my_model->getOneData([
|
|
['uid', '=', $this->mid],
|
|
['user_id', '=', $user_id]
|
|
], 'id,user_id,money,total_money');
|
|
|
|
// 如果用户没有初始化则初始化,再重新获取用户数据
|
|
if (empty($my)) {
|
|
$my_data = [
|
|
'uid' => $this->mid,
|
|
'user_id' => $user_id,
|
|
'money' => 0,
|
|
'total_money' => 0
|
|
];
|
|
$res = $my_model->dataUpdate($my_data);
|
|
if (!$res) {
|
|
return sendErrorArray(2002, '平台初始化失败');
|
|
}
|
|
|
|
// 查找我的信息
|
|
$my = $my_model->getOneData([
|
|
'user_id' => $user_id,
|
|
'uid' => $this->mid
|
|
], 'id,user_id,money,total_money');
|
|
}
|
|
|
|
// 不可减为负数
|
|
if ($money < 0 && abs($money) > $my['money']) {
|
|
return sendErrorArray(2003, '变动余额不可大于当前余额');
|
|
}
|
|
|
|
// 更新我的余额表
|
|
$my_update = [
|
|
'id' => $my['id'],
|
|
'user_id' => $user_id,
|
|
'money' => Db::raw('money + ' . $money)
|
|
];
|
|
if (in_array($type, $log_model->getJoinStatisticsTypes())) {
|
|
$my_update['total_money'] = Db::raw('total_money + ' . $money);
|
|
}
|
|
$res = $my_model->dataUpdate($my_update);
|
|
if (!$res) {
|
|
return sendErrorArray(2004, '用户余额更新失败');
|
|
}
|
|
|
|
// 更新LOG表
|
|
$my_log_data = [
|
|
'uid' => $this->mid,
|
|
'user_id' => $user_id,
|
|
'type' => $type,
|
|
'money' => $money,
|
|
'after_money' => $my['money'] + $money,
|
|
'show_text' => $show_text,
|
|
'relation_order_number' => $relation_order_number,
|
|
'remark' => $remark
|
|
];
|
|
$res = $log_model->dataUpdate($my_log_data);
|
|
if (!$res) {
|
|
return sendErrorArray(2005, '用户余额日志更新失败');
|
|
}
|
|
|
|
return sendSuccessArray();
|
|
}
|
|
|
|
}
|