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.
104 lines
3.6 KiB
104 lines
3.6 KiB
<?php
|
|
|
|
namespace addons\shopro\controller\user;
|
|
|
|
use addons\shopro\controller\Common;
|
|
use addons\shopro\service\Wallet as WalletService;
|
|
use app\admin\model\shopro\user\User as UserModel;
|
|
use app\admin\model\shopro\user\WalletLog as UserWalletLogModel;
|
|
use app\common\library\Sms;
|
|
use think\Db;
|
|
|
|
class WalletLog extends Common
|
|
{
|
|
|
|
protected $noNeedLogin = [];
|
|
protected $noNeedRight = ['*'];
|
|
|
|
|
|
public function index()
|
|
{
|
|
$type = $this->request->param('type', 'money');
|
|
$tab = $this->request->param('tab', 'all');
|
|
$list_rows = $this->request->param('list_rows', 10);
|
|
$date = $this->request->param('date/a');
|
|
$user = auth_user();
|
|
$where['user_id'] = $user->id;
|
|
|
|
switch ($tab) {
|
|
case 'income':
|
|
$where['amount'] = ['>', 0];
|
|
break;
|
|
case 'expense':
|
|
$where['amount'] = ['<', 0];
|
|
break;
|
|
}
|
|
|
|
$income = UserWalletLogModel::where('user_id', $user->id)->{$type}()->where('amount', '>', 0)->whereTime('createtime', 'between', $date)->sum('amount');
|
|
$expense = UserWalletLogModel::where('user_id', $user->id)->{$type}()->where('amount', '<', 0)->whereTime('createtime', 'between', $date)->sum('amount');
|
|
$logs = UserWalletLogModel::where($where)->{$type}()->whereTime('createtime', 'between', $date)->order('createtime', 'desc')->paginate($list_rows);
|
|
$this->success('获取成功', ['list' => $logs, 'income' => $income, 'expense' => $expense]);
|
|
}
|
|
|
|
/**
|
|
* 用户充值积分
|
|
*/
|
|
public function recharge()
|
|
{
|
|
$params = $this->request->only(['type', 'amount']);
|
|
if (!in_array($params['type'], ['money', 'score'])) {
|
|
$this->error('参数错误');
|
|
}
|
|
$user = auth_user();
|
|
$user_id = $user->id;
|
|
$result = Db::transaction(function () use ($params, $user_id) {
|
|
return WalletService::change($user_id, $params['type'], $params['amount'], 'user_recharge', [], '积分充值');
|
|
});
|
|
if ($result) {
|
|
$this->success('充值成功');
|
|
}
|
|
$this->error('充值失败');
|
|
}
|
|
|
|
/**
|
|
* 用户转让积分
|
|
*/
|
|
public function exchange() {
|
|
$params = $this->request->only(['type', 'exchange_amount', 'exchange_phone', 'code']);
|
|
if (!in_array($params['type'], ['money', 'score'])) {
|
|
$this->error('参数错误');
|
|
}
|
|
|
|
$user = auth_user();
|
|
$user_id = $user->id;
|
|
|
|
if ($user->mobile == $params['exchange_phone']) {
|
|
$this->error('转让人不能是自己');
|
|
}
|
|
|
|
$exchange_user = UserModel::getByMobile($params['exchange_phone']);
|
|
if ($exchange_user) {
|
|
if ($exchange_user->status != 'normal') {
|
|
$this->error(__('转让账户已经被锁定'));
|
|
}
|
|
}else {
|
|
$this->error('未查到转让用户');
|
|
}
|
|
|
|
if (!Sms::check($params['exchange_phone'], $params['code'], 'score')) {
|
|
$this->error('验证码不正确');
|
|
}
|
|
|
|
$exchange_user_id = $exchange_user->id;
|
|
|
|
$result = Db::transaction(function () use ($params, $exchange_user_id, $user_id) {
|
|
WalletService::change($user_id, $params['type'], -$params['exchange_amount'], 'user_exchange', [], '积分转让');
|
|
return WalletService::change($exchange_user_id, $params['type'], $params['exchange_amount'], 'user_exchange', [], '积分转让');
|
|
});
|
|
if ($result) {
|
|
$this->success('转让成功');
|
|
}
|
|
$this->error('转让失败');
|
|
}
|
|
|
|
}
|
|
|