Kirin 3 年之前
父節點
當前提交
90ef4dabb4

+ 17 - 1
app/admin/controller/finance/Finance.php

@@ -176,7 +176,23 @@ class Finance extends AuthController
                 return app('json')->fail('审核失败');
             }
         } else {
-            return app('json')->fail('请联系后台审核');
+            switch ($order['trade_type']) {
+                case 1:
+                    $res = $res && UserMoney::incomeMoney($order['uid'], $order['money_type'], $order['money_num'], 'buy_fail', '购币失败', '购币失败,出售方ID' . $order['uid']);
+                    break;
+                case 2:
+                    $res = $res && UserMoney::incomeMoney($order['trade_uid'], $order['money_type'], $order['money_num'], 'buy_fail', '购币失败', '购币失败,出售方ID' . $order['trade_uid']);
+                    break;
+                default:
+                    break;
+            }
+            $res = $res && CashTradeOrder::where('id', $id)->update(['status' => 2, 'end_time' => time()]);
+            BaseModel::checkTrans($res);
+            if ($res) {
+                return app('json')->success('退回成功');
+            } else {
+                return app('json')->fail('退回失败');
+            }
         }
     }
 

+ 16 - 1
app/admin/controller/user/User.php

@@ -354,11 +354,13 @@ class User extends AuthController
         $f[] = Form::input('real_name', '真实姓名', $user->getData('real_name'));
         $f[] = Form::text('phone', '手机号', $user->getData('phone'));
         $f[] = Form::text('email', '邮箱', $user->getData('email'));
+        $f[] = Form::number('return_uper', '佣金比例(%)', $user->getData('return_uper'))->step(0.01);
 //        $f[] = Form::date('birthday', '生日', $user->getData('birthday') ? date('Y-m-d', $user->getData('birthday')) : 0);
         $f[] = Form::input('card_id', '身份证号', $user->getData('card_id'));
         $f[] = Form::textarea('mark', '用户备注', $user->getData('mark'));
+
 //        $f[] = Form::radio('is_promoter', '推广员', $user->getData('is_promoter'))->options([['value' => 1, 'label' => '开启'], ['value' => 0, 'label' => '关闭']]);
-//        $f[] = Form::radio('status', '状态', $user->getData('status'))->options([['value' => 1, 'label' => '开启'], ['value' => 0, 'label' => '锁定']]);
+        $f[] = Form::radio('status', '状态', $user->getData('status'))->options([['value' => 1, 'label' => '开启'], ['value' => 0, 'label' => '锁定']]);
         $form = Form::make_post_form('添加用户通知', $f, Url::buildUrl('update', array('uid' => $uid)), 5);
         $this->assign(compact('form'));
         return $this->fetch('public/form-builder');
@@ -373,6 +375,7 @@ class User extends AuthController
             ['phone', 0],
             ['card_id', ''],
             ['birthday', ''],
+            ['return_uper', ''],
             ['mark', ''],
             ['money', 0],
             ['integration_status', 0],
@@ -439,6 +442,18 @@ class User extends AuthController
         $edit['birthday'] = strtotime($data['birthday']);
         $edit['mark'] = $data['mark'];
         $edit['is_promoter'] = $data['is_promoter'];
+        if ($data['return_uper'] != $user['return_uper']) {
+            if ($user['spread_uid']) {
+                $uper = UserModel::where('uid', $user['spread_uid'])->value('return_uper') ?: 0;
+                $child = UserModel::where('spread_uid', $uid)->max('return_uper') ?: 0;
+                if ($data['return_uper'] > $uper) {
+                    Json::fail('佣金比例不可大于上级!');
+                } elseif ($data['return_uper'] < $child) {
+                    Json::fail('佣金比例不可小于下级!');
+                }
+            }
+            $edit['return_uper'] = $data['return_uper'];
+        }
         if ($edit) $res3 = UserModel::edit($edit, $uid);
         else $res3 = true;
         if ($res1 && $res2 && $res3) $res = true;

+ 19 - 19
app/admin/view/finance/finance/cash_trade.php

@@ -32,9 +32,9 @@
                         <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event='check'>
                             通过
                         </button>
-<!--                        <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event='cancel'>-->
-<!--                            驳回-->
-<!--                        </button>-->
+                        <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event='cancel'>
+                            退回
+                        </button>
                         {{# } }}
                         {{# if(d.status === 0){ }}
                         <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event='del'>
@@ -143,22 +143,22 @@
                 }, code)
                 break;
 
-            // case 'cancel':
-            //     var url = layList.U({c: 'finance.finance', a: 'check', q: {id: data.id, ok: 'n'}});
-            //     var code = {title: "操作提示", text: "确定驳回该交易?", type: 'info', confirm: '是的,驳回'};
-            //     $eb.$swal('delete', function () {
-            //         $eb.axios.get(url).then(function (res) {
-            //             if (res.status == 200 && res.data.code == 200) {
-            //                 $eb.$swal('success', res.data.msg);
-            //                 obj.del();
-            //                 location.reload();
-            //             } else
-            //                 return Promise.reject(res.data.msg || '驳回失败')
-            //         }).catch(function (err) {
-            //             $eb.$swal('error', err);
-            //         });
-            //     }, code)
-            //     break;
+            case 'cancel':
+                var url = layList.U({c: 'finance.finance', a: 'check', q: {id: data.id, ok: 'n'}});
+                var code = {title: "操作提示", text: "确定驳回该交易?", type: 'info', confirm: '是的,驳回'};
+                $eb.$swal('delete', function () {
+                    $eb.axios.get(url).then(function (res) {
+                        if (res.status == 200 && res.data.code == 200) {
+                            $eb.$swal('success', res.data.msg);
+                            obj.del();
+                            location.reload();
+                        } else
+                            return Promise.reject(res.data.msg || '驳回失败')
+                    }).catch(function (err) {
+                        $eb.$swal('error', err);
+                    });
+                }, code)
+                break;
         }
     })
 </script>

+ 13 - 3
app/api/controller/trade/CashTradeController.php

@@ -305,6 +305,9 @@ class CashTradeController
             ['captcha', '']
         ], $request, true);
         $order = CashTradeOrder::setStatus(1)->where('id', $id)->find();
+        if ($order['uid'] == $uid) {
+            return app('json')->fail('不可交易自己发起的订单');
+        }
 //        var_dump(CashTradeOrder::getLastSql());
         if (!$order) {
             return app('json')->fail('订单不存在或已结束挂出');
@@ -439,7 +442,7 @@ class CashTradeController
         $order = CashTradeOrder::get($id);
         if ($order['close_time'] && $order['close_time'] < time()) return app('json')->fail('订单已关闭');
         if ($order['status'] > 0) return app('json')->fail('订单不可撤销');
-        if ($order['uid'] != $request->uid()) return app('json')->fail('订单错误');
+        if ($order['uid'] != $request->uid() && $order['trade_uid'] != $request->uid()) return app('json')->fail('订单错误');
         BaseModel::beginTrans();
         $res = true;
         switch ($order['trade_type']) {
@@ -450,9 +453,15 @@ class CashTradeController
                 break;
             case 2:
 //
-                if ($order['trade_uid'])
+                if ($order['trade_uid'] && $request->uid() == $order['trade_uid']) {
                     $res = $res && UserMoney::incomeMoney($order['trade_uid'], $order['money_type'], $order['money_num'], 'hang_buy_cancel', '挂买取消', '挂买取消,退回钱包');
-                $res = $res && CashTradeOrder::where('id', $order['id'])->update(['status' => 2]);
+                    $res = $res && CashTradeOrder::where('id', $order['id'])->update(['status' => 0, 'trade_uid' => '']);
+                } else {
+                    if ($order['trade_uid']) {
+                        $res = $res && UserMoney::incomeMoney($order['trade_uid'], $order['money_type'], $order['money_num'], 'hang_buy_cancel', '挂买取消', '挂买取消,退回钱包');
+                    }
+                    $res = $res && CashTradeOrder::where('id', $order['id'])->update(['status' => 2]);
+                }
                 break;
             default:
                 break;
@@ -468,6 +477,7 @@ class CashTradeController
     public function check($id, $ok, Request $request)
     {
         $order = CashTradeOrder::where('id', $id)->where('status', 3)->find();
+        if (!$order) return app('json')->fail('订单异常');
         if (!in_array($ok, ['y', 'n'])) return app('json')->fail('参数错误');
         $res = true;
         BaseModel::beginTrans();

+ 1 - 1
app/api/controller/user/UserBillController.php

@@ -89,7 +89,7 @@ class UserBillController
         if ($ratio > $request->user()['return_uper']) {
             return app('json')->fail('佣金比例不能超过自己');
         }
-        $user2 = User::where('spraed_uid', $user['uid'])->max('return_uper');
+        $user2 = User::where('spread_uid', $user['uid'])->max('return_uper');
         if ($ratio < $user2) {
             return app('json')->fail('佣金比例不能低于目标下级');
         }

+ 1 - 1
app/api/controller/user/UserRechargeController.php

@@ -138,7 +138,7 @@ class UserRechargeController
 
         foreach ($money_types as $v) {
             if ($v['code'] == $money_type)
-                return app('json')->successful('充值订单已生成,请前往充值!', $v);
+                return app('json')->successful('充值订单已生成,请前往充值!', array_merge($v, ['id' => $rechargeOrder['id'], 'order_id' => $rechargeOrder['order_id']]));
         }
         return app('json')->successful('充值订单已生成,请前往充值');
     }

+ 10 - 3
app/models/trade/CashTradeOrder.php

@@ -108,7 +108,7 @@ class CashTradeOrder extends BaseModel
         }
         $count = $model->count();
 //        var_dump(self::getLastSql());
-        $list = $model->page((int)$where['page'], (int)$where['limit'])->select()
+        $list = $model->order('add_time', 'desc')->page((int)$where['page'], (int)$where['limit'])->select()
 //        var_dump(self::getLastSql());
             ->each(function ($item) {
                 $item['user'] = User::getUserInfo($item['uid']);
@@ -120,7 +120,7 @@ class CashTradeOrder extends BaseModel
                 $item['_user'] = User::getUserInfo($item['uid'])['nickname'] . '/' . $item['uid'];
                 $item['_trade_user'] = $item['trade_uid'] ? User::getUserInfo($item['trade_uid'])['nickname'] . '/' . $item['trade_uid'] : '--';
                 $item['_add_time'] = time_format($item['add_time']);
-                $item['_end_time'] = $item['_end_time'] ? time_format($item['end_time']) : '--';
+                $item['_end_time'] = $item['end_time'] ? time_format($item['end_time']) : '--';
                 $item['_trade_time'] = $item['trade_time'] ? time_format($item['trade_time']) : '--';
                 $item['_money_type'] = $money_type[$item['money_type']];
                 $item['_trade_type'] = $item['trade_type'] == 2 ? '挂买' : '挂卖';
@@ -481,8 +481,15 @@ class CashTradeOrder extends BaseModel
     public static function brokerage($id)
     {
         $info = self::get($id);
-        $user = User::getUserInfo($info['uid']);
+        if ($info['trade_type'] == 2)
+            $user = User::getUserInfo($info['uid']);
+        else
+            $user = User::getUserInfo($info['trade_uid']);
         $uper = User::getUserInfo($user['spread_uid']);
+//        var_dump($info);
+//        var_dump($user['uid']);
+//        var_dump($user['spread_uid']);
+//        exit;
         $send = 0;
         $res = true;
         while ($uper) {

+ 1 - 1
app/models/user/User.php

@@ -526,7 +526,7 @@ class User extends BaseModel
             ->where('o.is_del', 0)->where('o.is_system_del', 0)->alias('o')->fetchSql(true)->select();
         $model = $model->join("(" . $sql . ") p", 'u.uid = p.uid', 'LEFT');
         $model = $model->where('u.uid', 'IN', $uid);
-        $model = $model->field("u.uid,u.nickname,u.avatar,from_unixtime(u.add_time,'%Y/%m/%d') as time,u.spread_count as childCount,u.pay_count as orderCount,p.numberCount");
+        $model = $model->field("u.uid,u.nickname,u.avatar,from_unixtime(u.add_time,'%Y/%m/%d') as time,u.spread_count as childCount,u.pay_count as orderCount,p.numberCount,u.return_uper");
         if (strlen(trim($keyword))) $model = $model->where('u.nickname|u.phone', 'like', "%$keyword%");
         $model = $model->group('u.uid');
         $model = $model->order($orderBy);

+ 1 - 1
route/api/route.php

@@ -197,7 +197,7 @@ Route::group(function () {
     Route::get('spread/commission/:type', 'user.UserBillController/spread_commission')->name('spreadCommission');//推广佣金明细
     Route::get('spread/count/:type', 'user.UserBillController/spread_count')->name('spreadCount');//推广 佣金 3/提现 4 总和
     Route::get('spread/banner/:uid', 'user.UserBillController/spread_banner')->name('spreadBanner');//推广分销二维码海报生成
-    Route::post('spread/ratio', 'user.UserBillController/setReturnUper')->name('setReturnUper');//设置佣金比例
+    Route::post('spread/ratio/:uid', 'user.UserBillController/setReturnUper')->name('setReturnUper');//设置佣金比例
     Route::get('integral/list', 'user.UserBillController/integral_list')->name('integralList');//积分记录
     //提现类
     Route::get('extract/bank', 'user.UserExtractController/bank')->name('extractBank');//提现银行/提现最低金额