添加发起提现、列表

This commit is contained in:
luofei 2023-07-24 16:37:03 +08:00
parent e51684c991
commit 7abdcd8952
4 changed files with 129 additions and 4 deletions

View File

@ -0,0 +1,38 @@
<?php
namespace app\adminapi\controller\finance;
use app\adminapi\controller\BaseAdminController;
use app\adminapi\lists\finance\AccountLogLists;
use app\common\enum\user\AccountLogEnum;
use app\common\model\user\Withdraw;
class WithdrawController extends BaseAdminController
{
public function index()
{
[$page, $limit] = $this->getPage();
$query = Withdraw::where('status', '<>', -1);
$count = $query->count();
$list = $query->order('id', 'desc')->page($page)->limit($limit)->select()->toArray();
return $this->success('success', ['count' => $count, 'data' => $list]);
}
public function update($id)
{
$status = $this->request->param('status');
if (!in_array($status, [1, 2, 3])) {
return $this->fail('参数错误');
}
$data = Withdraw::find($id);
if (empty($data)) {
return $this->fail('数据不存在');
}
$data->status = $status;
$data->udpate_time = time();
$data->save();
return $this->success('操作成功', [], 1, 1);
}
}

View File

@ -144,4 +144,22 @@ class UserController extends BaseApiController
return $this->fail(UserLogic::getError());
}
public function withdraw()
{
$params = $this->request->param();
$params['user_id'] = $this->userId;
$result = UserLogic::withdraw($params);
if($result) {
return $this->success('提现申请已提交', [], 1, 1);
}
return $this->fail(UserLogic::getError());
}
public function withdrawList()
{
[$page, $limit] = $this->getPage();
[$count, $list] = UserLogic::withdrawList($this->userId, $page, $limit);
return $this->success('success', ['count' => $count, 'data' => $list]);
}
}

View File

@ -14,17 +14,20 @@
namespace app\api\logic;
use app\common\{enum\notice\NoticeEnum,
enum\user\UserTerminalEnum,
enum\YesNoEnum,
logic\BaseLogic,
model\user\User,
model\user\UserAuth,
model\user\Withdraw,
service\sms\SmsDriver,
service\wechat\WeChatMnpService};
use app\Request;
service\wechat\WeChatMnpService
};
use think\db\exception\DataNotFoundException;
use think\exception\ValidateException;
use think\facade\Config;
use think\facade\Db;
/**
* 会员逻辑层
@ -118,7 +121,7 @@ class UserLogic extends BaseLogic
public static function hasWechatAuth(int $userId)
{
//是否有微信授权登录
$terminal = [UserTerminalEnum::WECHAT_MMP, UserTerminalEnum::WECHAT_OA,UserTerminalEnum::PC];
$terminal = [UserTerminalEnum::WECHAT_MMP, UserTerminalEnum::WECHAT_OA, UserTerminalEnum::PC];
$auth = UserAuth::where(['user_id' => $userId])
->whereIn('terminal', $terminal)
->findOrEmpty();
@ -289,4 +292,54 @@ class UserLogic extends BaseLogic
}
}
public static function withdraw($params)
{
Db::startTrans();
try {
$user = User::findOrEmpty($params['user_id']);
if ($user->isEmpty()) {
throw new DataNotFoundException('用户不存在');
}
// 校验提现金额
if ($params['amount'] <= 0) {
throw new ValidateException('提现金额错误');
}
// 校验提现金额
if ($params['amount'] > $user['user_money']) {
throw new ValidateException('余额不足');
}
// 保存提现记录
$withdraw = new Withdraw();
$withdraw->user_id = $user['id'];
$withdraw->admin_id = $user['admin_id'];
$withdraw->order_sn = $withdraw->buildOrderSn();
$withdraw->amount = $params['amount'];
$withdraw->create_time = time();
$withdraw->update_time = time();
$withdraw->save();
// 扣除余额
$user->user_money = $user['user_money'] - $params['amount'];
$user->save();
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
}
}
public static function withdrawList($userId, $page, $limit)
{
$query = Withdraw::where('user_id', $userId);
$count = $query->count();
$list = $query->order('id', 'desc')->page($page)->limit($limit)->select()->toArray();
return [$count, $list];
}
}

View File

@ -0,0 +1,16 @@
<?php
namespace app\common\model\user;
use think\model;
class Withdraw extends Model
{
public function buildOrderSn()
{
return 'TX' . date('YmdHis') . rand(10000, 99999);
}
}