Bläddra i källkod

兑换与日志

lizhen_gitee 1 år sedan
förälder
incheckning
c876da7b92
2 ändrade filer med 321 tillägg och 0 borttagningar
  1. 250 0
      application/api/controller/Pay.php
  2. 71 0
      application/api/controller/Userwallet.php

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

@@ -0,0 +1,250 @@
+<?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 = ['*'];
+
+
+    //金币充值
+    public function jewel_config(){
+        $list = Db::name('payjewel_config')->order('weigh asc,id asc')->select();
+        $data['jewelconfig'] = $list;
+
+        $wallet = model('wallet')->getWallet($this->auth->id);
+        $data['wallet'] = $wallet;
+        $this->success('success',$data);
+    }
+
+    //充值金币 创建订单
+    public function jewel_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('请选择或填写充值金额');
+        }
+
+        if(!$this->user_auth_limit()){
+            $this->error('请先完成实名认证');
+        }
+
+        //赋值money
+        if($rc_id){
+            $recharge_config = Db::name('payjewel_config')->where('id',$rc_id)->find();
+            $money = $recharge_config['money'] ?: 0;
+            $jewel  = $recharge_config['jewel'] ?: 0;
+        }
+
+        //自由输入覆盖
+        if(!empty($freemoney)){
+            $rc_id = 0;
+            $money = floatval($freemoney);
+            $bili = config('site.money_to_jewel') ?: 10;
+            $jewel  = bcmul($money,$bili,0);
+        }
+
+        //
+        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'] = 'jewel_recharge';
+        $data['table_id'] = 0;
+        $data['args'] = json_encode(['jewel'=>$jewel]);
+
+        $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/notifynew/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);
+        }
+    }
+
+
+    //收益兑换金币 配置
+    public function moneytojewel_config(){
+        $list = Db::name('moneytojewel_config')->order('weigh asc,id asc')->select();
+        $data['jewelconfig'] = $list;
+
+        $wallet = model('wallet')->getWallet($this->auth->id);
+        $data['wallet'] = $wallet;
+        $data['money_to_jewel'] = config('site.money_to_jewel');
+        $data['remark'] = config('site.money_to_jewel_rule');
+        $this->success('success',$data);
+    }
+
+    //收益兑换金币  兑换
+    public function moneytojewel_exchange(){
+        $rc_id     = input('rc_id',0);
+        $freemoney = input('freemoney',0);
+
+        if(!$rc_id && !$freemoney){
+            $this->error('请选择或填写兑换金额');
+        }
+
+        $uid = $this->auth->id;
+        //赋值money
+        if($rc_id){
+            $recharge_config = Db::name('moneytojewel_config')->where('id',$rc_id)->find();
+            $money = $recharge_config['money'] ?: 0;
+            $jewel  = $recharge_config['jewel'] ?: 0;
+        }
+
+        //自由输入覆盖
+        if(!empty($freemoney)){
+            $rc_id = 0;
+            $money = floatval($freemoney);
+            $bili = config('site.money_to_jewel') ?: 10;
+            $jewel  = bcmul($money,$bili,0);
+        }
+
+        //
+        if($money<=0)
+        {
+            $this->error('兑换金额必须大于0');
+        }
+
+        //扣除money
+        $rs_wallet = model('Wallet')->lockChangeAccountRemain($uid,$money,'-',0,'收益兑换金币',114,'money');
+        if($rs_wallet['status']===false)
+        {
+            Db::rollback();
+            $this->error($rs_wallet['msg']);
+        }
+
+        //增加jewel
+//        $rs_wallet = model('Wallet')->lockChangeAccountRemain($uid,'gold',$jewel,22, '收益兑换金币',$rs_wallet['log_table'],$rs_wallet['log_id']);
+        $rs_wallet = model('Wallet')->lockChangeAccountRemain($uid,$jewel,'+',0,'收益兑换金币',14,'jewel');
+        if($rs_wallet['status']===false)
+        {
+            Db::rollback();
+            $this->error($rs_wallet['msg']);
+        }
+
+        Db::commit();
+        $this->success();
+    }
+
+    ///////////没用到/////////
+    //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);
+        }
+    }
+
+}

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

@@ -0,0 +1,71 @@
+<?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);
+        $this->success('success',$wallet);
+    }
+
+
+
+    //我的余额日志
+    public function my_money_log(){
+        $type = input('type',0);
+
+        $map = [
+           'user_id' => $this->auth->id,
+        ];
+        if($type){
+            $map['type'] = $type;
+        }
+
+        $list = Db::name('user_money_log')
+            ->where($map)->order('id desc')->autopage()->select();
+        $list = $this->list_appen_logtext($list);
+
+        $this->success('success',$list);
+    }
+
+    //金币日志
+    public function my_jewel_log(){
+        $type = input('type',0);
+
+        $map = [
+            'user_id' => $this->auth->id,
+        ];
+        if($type){
+            $map['type'] = $type;
+        }
+
+        $list = Db::name('user_jewel_log')
+            ->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]['type_text'] = isset($conf[$val['type']]) ? $conf[$val['type']] : '';
+            }
+        }
+        return $list;
+    }
+
+}