Browse Source

轮播,支付,用户钱包

lizhen_gitee 4 months ago
parent
commit
e4d369f5b5

+ 32 - 0
application/api/controller/Banner.php

@@ -0,0 +1,32 @@
+<?php
+
+namespace app\api\controller;
+
+use app\common\controller\Api;
+use think\Db;
+/**
+ * 示例接口
+ */
+class Banner extends Api
+{
+    protected $noNeedLogin = ['*'];
+    protected $noNeedRight = ['*'];
+
+    //轮播图
+    public function banner()
+    {
+        $where = [
+            'status' => 1
+        ];
+
+        $type = input('type',0);
+        if($type){
+            $where['type'] = $type;
+        }
+
+        $list = Db::name('banner')->field('id, title, image, url')->where($where)->order('weigh', 'desc')->select();
+        $list = list_domain_image($list, ['image']);
+
+        $this->success(1, $list);
+    }
+}

+ 180 - 0
application/api/controller/Pay.php

@@ -0,0 +1,180 @@
+<?php
+
+namespace app\api\controller;
+
+use app\common\controller\Api;
+use think\Db;
+use addons\epay\library\Service;
+/**
+ * 充值配置与充值订单
+ */
+class Pay extends Api
+{
+    protected $noNeedLogin = [];
+    protected $noNeedRight = ['*'];
+
+    //vip用的
+    public function vip_config(){
+        $list = Db::name('payvip_config')->order('weigh asc,id asc')->select();
+        $data['vipconfig'] = $list;
+        $data['vip_endtime'] = model('wallet')->getWallet($this->auth->id,'vip_endtime');
+        $data['is_vip'] = $data['vip_endtime'] > time() ? 1 : 0;
+        $data['avatar'] = localpath_to_netpath($this->auth->avatar);
+        $this->success('success',$data);
+    }
+
+    //vip用的,创建订单
+    public function vip_recharge(){
+
+        $rc_id = input('rc_id',0);
+        $pay_type = input('pay_type','wechat');
+        $platform = 'app';
+        $uid = $this->auth->id;
+
+        if(!$rc_id){
+            $this->error('请选择会员套餐');
+        }
+
+        if(!$this->user_auth_limit()){
+            $this->error('请先完成实名认证');
+        }
+
+
+        //赋值money
+        $recharge_config = Db::name('payvip_config')->where('id',$rc_id)->find();
+        $money = $recharge_config['money'];
+
+        if($money<=0)
+        {
+            $this->error('支付金额必须大于0');
+        }
+        if($money > 10000){
+            $this->error('支付金额太大');
+        }
+
+
+        //创建订单
+        $data = [];
+        $data['user_id'] = $uid;
+        $data['out_trade_no'] = createUniqueNo('P',$uid); // 数据库订单号加密
+        $data['order_amount'] = $money;
+        $data['createtime'] = time();
+
+        $data['pay_type'] = $pay_type;
+        $data['platform'] = $platform;
+        $data['order_status'] = 0;
+        $data['table_name'] = 'vip_recharge';
+        $data['table_id'] = 0;
+        $data['args'] = json_encode(['days'=>$recharge_config['days']]);
+
+        $orderid = Db::name('pay_order')->insertGetId($data);
+
+//        $openid = $this->auth->mini_openid;
+        //下单
+        $params = [
+            'type'         => $pay_type,
+            'orderid'      => $data['out_trade_no'],
+            'title'        => '支付订单',
+            'amount'       => $data['order_amount'],
+            'method'       => $platform,
+//            'openid'       => $openid,
+            'notifyurl' => config('pay_notify_url').'/api/notify/vip_notify_base/paytype/'.$pay_type,
+            'returnurl' => '',
+        ];
+
+        $res = Service::submitOrder($params);
+
+        if($pay_type == 'wechat'){
+            $this->success('success',json_decode($res,true));
+        }else{
+            $this->success('success',$res);
+        }
+    }
+
+
+
+    //人民币充值
+    public function money_config(){
+        $list = Db::name('paymoney_config')->order('weigh asc,id asc')->where('is_show',1)->select();
+        $data['config'] = $list;
+
+        $wallet = model('wallet')->getWallet($this->auth->id);
+        $data['wallet'] = $wallet;
+        $this->success('success',$data);
+    }
+
+    //充值金币 创建订单
+    public function money_recharge(){
+
+        $rc_id     = input('rc_id',0);
+        $pay_type  = input('pay_type','wechat');
+        $platform  = 'app';
+        $freemoney = input('freemoney',0);
+        $uid = $this->auth->id;
+
+        if(!$rc_id && !$freemoney){
+            $this->error('请选择或填写充值金额');
+        }
+
+        //赋值money
+        if($rc_id){
+            $recharge_config = Db::name('paymoney_config')->where('id',$rc_id)->find();
+            $money = $recharge_config['money'] ?: 0;
+        }
+
+        //自由输入覆盖
+        if(!empty($freemoney)){
+            $rc_id = 0;
+            $money = floatval($freemoney);
+        }
+
+        //
+        if($money<=0)
+        {
+            $this->error('支付金额必须大于0');
+        }
+        if($money > 10000){
+            $this->error('支付金额太大');
+        }
+
+        //创建订单
+        $data = [];
+        $data['user_id'] = $uid;
+        $data['out_trade_no'] = createUniqueNo('M',$uid); // 数据库订单号加密
+        $data['order_amount'] = $money;
+        $data['createtime'] = time();
+
+        $data['pay_type'] = $pay_type;
+        $data['platform'] = $platform;
+        $data['order_status'] = 0;
+        $data['table_name'] = 'money_recharge';
+        $data['table_id'] = 0;
+        $data['args'] = '';
+
+        $orderid = Db::name('pay_order')->insertGetId($data);
+
+//        $openid = $this->auth->mini_openid;
+        //下单
+        $params = [
+            'type'         => $pay_type,
+            'orderid'      => $data['out_trade_no'],
+            'title'        => '充值订单',
+            'amount'       => $data['order_amount'],
+            'method'       => $platform,
+//            'openid'       => $openid,
+            'notifyurl' => config('pay_notify_url').'/api/notify/recharge_notify_base/paytype/'.$pay_type,
+            'returnurl' => '',
+        ];
+
+        $res = Service::submitOrder($params);
+
+        if($pay_type == 'wechat'){
+            $this->success('success',json_decode($res,true));
+        }else{
+            $this->success('success',$res);
+        }
+    }
+
+
+
+}

+ 57 - 0
application/api/controller/Userwallet.php

@@ -0,0 +1,57 @@
+<?php
+
+namespace app\api\controller;
+
+use app\common\controller\Api;
+use think\Db;
+//use app\common\model\wallet;
+/**
+ * 用户钱包
+ */
+class Userwallet extends Api
+{
+    protected $noNeedLogin = [];
+    protected $noNeedRight = ['*'];
+
+    //我的钱包余额
+    public function my_wallet(){
+        $wallet = model('wallet')->getwallet($this->auth->id);
+        $wallet['is_vip'] = $wallet['vip_endtime'] > time() ? 1 : 0;
+        $this->success('success',$wallet);
+    }
+
+
+
+    //我的余额日志
+    public function my_money_log(){
+        $type = input('type',0);
+
+        $map = [
+           'user_id' => $this->auth->id,
+        ];
+        if($type){
+            $map['log_type'] = $type;
+        }
+
+        $list = Db::name('user_money_log')
+            ->field('id,log_type,before,change_value,remain,remark,createtime')
+            ->where($map)->order('id desc')->autopage()->select();
+        $list = $this->list_appen_logtext($list);
+
+        $this->success('success',$list);
+    }
+
+
+
+    //追加log_text
+    private function list_appen_logtext($list){
+        if(!empty($list)){
+            $conf = config('wallet.logtype');
+            foreach($list as $key => $val){
+                $list[$key]['log_text'] = isset($conf[$val['log_type']]) ? $conf[$val['log_type']] : '';
+            }
+        }
+        return $list;
+    }
+
+}

+ 0 - 1
application/extra/wallet.php

@@ -32,7 +32,6 @@ return [
     ],
     'moneyname' => [
         'money'    => '余额',
-        'gold'     => '金币',
     ],
 
 ];