Newadd.php 4.3 KB
<?php
/**
 * user 小猿砸
 * date 2024/2/18
 */

namespace app\api\controller;

use app\api\model\User;
use app\api\model\UserMoneyLog;
use app\api\model\UsermoneyTixian;
use app\common\controller\Api;
use think\Db;

/**
 * @ApiTitle    (新增)
 */
class Newadd extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    protected $rule = [
        'money'  =>  'require,',
    ];

    protected $message = [
        'money'  =>  '金额格式错误',
    ];

    /**
     * @ApiTitle    (获取用户身份)
     * @ApiMethod   (post)
     */
    public function getIdentity()
    {
        $id = $this->auth->id;
        $identity = User::get($id);
        $this->success('ok', $identity['fenxiao']);
    }
    /**
     * 分销员身份信息
     *
     * @ApiTitle    (分销员身份信息)
     * @ApiMethod   (post)
     * @ApiReturn   ({
        "code": 1,
        "msg": "",
        "time": "1603767463",
        "data": {{
        "userinfo": {用户信息},
        "money_log": {余额记录},
        "commission": {分佣记录},
        }}
    })
     */
    public function getUserInfo()
    {
        /** 用户信息 */
        $id = $this->auth->id;
        empty($id) && $this->error('请刷新后重试');
        $userinfo = User::get($id);
        $log = new UserMoneyLog();
        /** 用户账户明细 */
        $money_log = $log->alias('l')
            ->join('user u', 'l.f_id = u.id', 'left')
            ->where('l.user_id', $id)
            ->field('l.*, u.avatar, u.nickname, u.mobile')
            ->select();
        /** 佣金明细 */
        $list = [];
        foreach ($money_log as $v){
            if ($v['type'] == '+'){
                $list[] = $v;
            }
        }

        $data = [
            'userinfo'=>[
                'nickname'=>$userinfo['nickname'],
                'avatar'=>$userinfo['avatar'],
                'mobile'=>$userinfo['phone'],
            ],
            'money_log'=>$money_log,
            'commission'=>$list
        ];
        $this->success('ok', $data);
    }

    /**
     * @ApiTitle    (提现申请)
     * @ApiMethod   (post)
     * @ApiParams   (name="money", type="array", required=true, description="提现金额")
     */
    public function tixian()
    {
        $id = $this->auth->id;
        $params = $this->request->param();
        $money = preg_match('/[1-9]\d*.\d*|0\.\d*[1-9]\d*/', $params['money']);
        empty($money) && $this->error('请输入正确格式的金额');
        $userinfo = User::get($id);
//        $user_money_log = \db('user_money_log')->where('user_id', $id)->order('id', 'desc')->value('after');
        if ($params['money'] > $userinfo['money']){
            $this->error('余额不足');
        }
        $data = [
            'order_on'=>code(),
            'money'=>$params['money'],
            'user_id'=> $id,
        ];
        Db::startTrans();
        $usertixian = new UsermoneyTixian();
        $userlog = new UserMoneyLog();
        try {
            $tixian = $usertixian->allowField(true)->save($data);
            $log = $userlog->allowField(true)->save(['user_id'=>$id, 'money'=>$params['money'], 'before'=>$userinfo['money'],'after'=>$userinfo['money']-$params['money'], 'type'=>'-', 'memo'=>'提现']);
            $user = User::where('id', $id)->setDec('money', $params['money']);
            Db::commit();
        } catch (\Exception $e){
            Db::rollback();
            $this->error($e->getMessage());
        }
        $this->success('提现申请提交成功');
    }

    /**
     * @ApiTitle    (提现记录)
     * @ApiMethod   (post)
     *
     * @ApiReturn   ({
        "code": 1,
        "msg": "ok",
        "time": "1708495188",
        "data": [
        {
        "id": 2,
        "user_id": 用户id,
        "money": "提现金额",
        "status": 状态:0=审核中,1=审核通过,2=已到账,3=审核失败,
        "memo": 备注,
        "createtime": 提交时间
        }
        ]
     *})
     */
    public function TixianLog()
    {
        $id = $this->auth->id;
        $log = UsermoneyTixian::where('user_id', $id)->order('id', 'desc')->select();
        $this->success('ok', $log);
    }

    public function ti()
    {
        $this->success('ok', code());
    }

    public function ip()
    {
        $this->auth->direct('28977');
        $this->success('ok', $this->auth->getUserinfo());
    }
}