Kirin 3 years ago
parent
commit
6466eea81e

+ 43 - 60
app/admin/controller/finance/StoreExtract.php

@@ -14,7 +14,7 @@ use app\models\system\SystemStoreMember;
 use app\models\user\UserBill;
 use think\facade\Route as Url;
 use crmeb\services\JsonService;
-use app\admin\model\user\UserExtract as UserExtractModel;
+use app\admin\model\system\StoreExtract as UserExtractModel;
 use crmeb\services\{UtilService as Util, FormBuilder as Form, WechatService};
 
 /**
@@ -57,9 +57,9 @@ class StoreExtract extends AuthController
 
     public function edit($id)
     {
-        if (!$id) return $this->failed('数据不存在');
+        if (!$id) $this->failed('数据不存在');
         $UserExtract = UserExtractModel::get($id);
-        if (!$UserExtract) return JsonService::fail('数据不存在!');
+        if (!$UserExtract) $this->failed('数据不存在!');
         $f = array();
         $f[] = Form::input('real_name', '姓名', $UserExtract['real_name']);
         $f[] = Form::number('extract_price', '提现金额', $UserExtract['extract_price'])->precision(2);
@@ -80,7 +80,7 @@ class StoreExtract extends AuthController
     public function update($id)
     {
         $UserExtract = UserExtractModel::get($id);
-        if (!$UserExtract) return JsonService::fail('数据不存在!');
+        if (!$UserExtract) JsonService::fail('数据不存在!');
         if ($UserExtract['extract_type'] == 'alipay') {
             $data = Util::postMore([
                 'real_name',
@@ -88,9 +88,9 @@ class StoreExtract extends AuthController
                 'extract_price',
                 'alipay_code',
             ]);
-            if (!$data['real_name']) return JsonService::fail('请输入姓名');
-            if ($data['extract_price'] <= -1) return JsonService::fail('请输入提现金额');
-            if (!$data['alipay_code']) return JsonService::fail('请输入支付宝账号');
+            if (!$data['real_name']) JsonService::fail('请输入姓名');
+            if ($data['extract_price'] <= -1) JsonService::fail('请输入提现金额');
+            if (!$data['alipay_code']) JsonService::fail('请输入支付宝账号');
         } else if ($UserExtract['extract_type'] == 'weixin') {
             $data = Util::postMore([
                 'real_name',
@@ -98,9 +98,8 @@ class StoreExtract extends AuthController
                 'extract_price',
                 'wechat',
             ]);
-//            if(!$data['real_name']) return JsonService::fail('请输入姓名');
-            if ($data['extract_price'] <= -1) return JsonService::fail('请输入提现金额');
-            if (!$data['wechat']) return JsonService::fail('请输入微信账号');
+            if ($data['extract_price'] <= -1) JsonService::fail('请输入提现金额');
+            if (!$data['wechat']) JsonService::fail('请输入微信账号');
         } else {
             $data = Util::postMore([
                 'real_name',
@@ -109,83 +108,67 @@ class StoreExtract extends AuthController
                 'bank_code',
                 'bank_address',
             ]);
-            if (!$data['real_name']) return JsonService::fail('请输入姓名');
-            if ($data['extract_price'] <= -1) return JsonService::fail('请输入提现金额');
-            if (!$data['bank_code']) return JsonService::fail('请输入银行卡号');
-            if (!$data['bank_address']) return JsonService::fail('请输入开户行');
+            if (!$data['real_name']) JsonService::fail('请输入姓名');
+            if ($data['extract_price'] <= -1) JsonService::fail('请输入提现金额');
+            if (!$data['bank_code']) JsonService::fail('请输入银行卡号');
+            if (!$data['bank_address']) JsonService::fail('请输入开户行');
         }
         if (!UserExtractModel::edit($data, $id))
-            return JsonService::fail(UserExtractModel::getErrorInfo('修改失败'));
+            JsonService::fail(UserExtractModel::getErrorInfo('修改失败'));
         else
-            return JsonService::successful('修改成功!');
+            JsonService::successful('修改成功!');
     }
 
     public function fail($id)
     {
-        if (!UserExtractModel::be(['id' => $id, 'status' => 0])) return JsonService::fail('操作记录不存在或状态错误!');
+        if (!UserExtractModel::be(['id' => $id, 'status' => 0])) JsonService::fail('操作记录不存在或状态错误!');
         $fail_msg = request()->post();
         $extract = UserExtractModel::get($id);
-        if (!$extract) return JsonService::fail('操作记录不存在!');
-        if ($extract->status == 1) return JsonService::fail('已经提现,错误操作');
-        if ($extract->status == -1) return JsonService::fail('您的提现申请已被拒绝,请勿重复操作!');
+        if (!$extract) JsonService::fail('操作记录不存在!');
+        if ($extract->status == 1) JsonService::fail('已经提现,错误操作');
+        if ($extract->status == -1) JsonService::fail('您的提现申请已被拒绝,请勿重复操作!');
         $res = UserExtractModel::changeFail($id, $fail_msg['message']);
         if ($res) {
-            return JsonService::successful('操作成功!');
+            JsonService::successful('操作成功!');
         } else {
-            return JsonService::fail('操作失败!');
+            JsonService::fail('操作失败!');
         }
     }
 
     public function succ($id)
     {
         if (!UserExtractModel::be(['id' => $id, 'status' => 0]))
-            return JsonService::fail('操作记录不存在或状态错误!');
+            JsonService::fail('操作记录不存在或状态错误!');
         UserExtractModel::beginTrans();
         $extract = UserExtractModel::get($id);
-        if (!$extract) return JsonService::fail('操作记录不存!');
-        if ($extract->status == 1) return JsonService::fail('您已提现,请勿重复提现!');
-        if ($extract->status == -1) return JsonService::fail('您的提现申请已被拒绝!');
+        if (!$extract) JsonService::fail('操作记录不存!');
+        if ($extract->status == 1) JsonService::fail('您已提现,请勿重复提现!');
+        if ($extract->status == -1) JsonService::fail('您的提现申请已被拒绝!');
         $res = UserExtractModel::changeSuccess($id);
-        if ($extract['commission_consumer'] > 0) {
-            $res = $res && UserBill::income('提现转换(消费券)', $extract['uid'], 'consumer', 'extract_get_consumer', $extract['commission_consumer'], $extract['id'], \app\admin\model\user\User::where('uid', $extract['uid'])->value('consumer') + $extract['commission_consumer'], '提现申请通过,其中部分佣金转换为消费券' . $extract['commission_consumer']);
-            $res = $res && \app\admin\model\user\User::where('uid', $extract['uid'])->inc('consumer', $extract['commission_consumer'])->update();
-        }
-        if ($extract['commission_yue'] > 0) {
-            $res = $res && UserBill::income('提现转换(余额)', $extract['uid'], 'now_money', 'extract_get_now_money', $extract['commission_yue'], $extract['id'], \app\admin\model\user\User::where('uid', $extract['uid'])->value('now_money') + $extract['commission_yue'], '提现申请通过,其中部分佣金转换为余额' . $extract['commission_yue']);
-            $res = $res && \app\admin\model\user\User::where('uid', $extract['uid'])->inc('now_money', $extract['commission_yue'])->update();
-        }
-        if ($extract['commission_gf'] > 0) {
-            $res = $res && UserBill::income('提现转换(股份)', $extract['uid'], 'gf', 'extract_get_gf', $extract['commission_gf'], $extract['id'], \app\admin\model\user\User::where('uid', $extract['uid'])->value('gf') + $extract['commission_gf'], '提现申请通过,其中部分佣金转换为股份' . $extract['commission_gf']);
-            $res = $res && \app\admin\model\user\User::where('uid', $extract['uid'])->inc('gf', $extract['commission_gf'])->update();
-        }
 
-        $real_get = $extract['extract_price'] - $extract['commission_gf'] - $extract['commission_consumer'] - $extract['commission_yue'] - $extract['commission'];
-
-        if ($real_get >= 0.3 && $extract['extract_type'] == 'weixin') {
-            $open_id = WechatUser::where('uid', $extract['uid'])->find();
-            if ($open_id['openid']) {
-                try {
-                    WechatService::paymentService()->batches(
-                        'ex' . date('YmdHis') . $extract['id'],
-                        $open_id['openid'],
-                        $real_get * 100,
-                        sys_config('site_name') . '-' . '用户提现到账'
-                    );
-                } catch (\Exception $e) {
-                    UserExtractModel::rollbackTrans();
-                    return JsonService::fail($e->getMessage());
-                }
-            }
-        }
-//        if ($extract['commission_gf'] > 0 && SystemStoreMember::be(['uid' => $extract['uid']])) {
-//            $res = $res && SystemStoreMember::where('uid', $extract['uid'])->inc('consume_rights', $extract['commission_gf'])->update();
+//        $real_get = $extract['extract_price'] - $extract['commission'];
+//        if ($real_get >= 0.3 && $extract['extract_type'] == 'weixin') {
+//            $open_id = WechatUser::where('uid', $extract['uid'])->find();
+//            if ($open_id['openid']) {
+//                try {
+//                    WechatService::paymentService()->batches(
+//                        'ex' . date('YmdHis') . $extract['id'],
+//                        $open_id['openid'],
+//                        $real_get * 100,
+//                        sys_config('site_name') . '-' . '用户提现到账'
+//                    );
+//                } catch (\Exception $e) {
+//                    UserExtractModel::rollbackTrans();
+//                    return JsonService::fail($e->getMessage());
+//                }
+//            }
 //        }
         if ($res) {
             UserExtractModel::commitTrans();
-            return JsonService::successful('操作成功!');
+            JsonService::successful('操作成功!');
         } else {
             UserExtractModel::rollbackTrans();
-            return JsonService::fail('操作失败!');
+            JsonService::fail('操作失败!');
         }
     }
 }

+ 10 - 0
app/admin/model/system/StoreBill.php

@@ -70,4 +70,14 @@ class StoreBill extends BaseModel
         }
         return $model->field(['A.*', 'A.add_time', 'B.id', 'B.name']);
     }
+
+    /**
+     * 用户获得总佣金
+     * @return float
+     */
+    public static function getBrokerageCount()
+    {
+        return self::where('pm', 1)->where('type','product_sale')->sum('number');
+    }
+
 }

+ 65 - 1
app/admin/model/system/StoreExtract.php

@@ -69,7 +69,7 @@ class StoreExtract extends BaseModel
         $commission = bcmul($data['money'], bcdiv(sys_config('store_commission', 0, true), 100, 3), 2);
         if ($balance < 0) $balance = 0;
         $insertData = [
-            'uid' => $userInfo['uid'],
+            'uid' => $userInfo['id'],
             'extract_type' => $data['extract_type'],
             'extract_price' => $data['money'],
             'add_time' => time(),
@@ -114,4 +114,68 @@ class StoreExtract extends BaseModel
             return self::setErrorInfo('提现失败!');
         }
     }
+
+    /**
+     * 获得用户提现总金额
+     * @param $uid
+     * @return mixed
+     */
+    public static function userExtractTotalPrice($uid, $status = 1, $where = [])
+    {
+        return self::getModelTime($where, self::where('uid', 'in', $uid)->where('status', $status))->sum('extract_price') ?: 0;
+    }
+
+    public static function extractStatistics()
+    {
+        //待提现金额
+        $data['price'] = floatval(self::where('status', 0)->sum('extract_price'));
+        //总获得
+        $data['brokerage_count'] = StoreBill::getBrokerageCount();
+        //已提现金额
+        $data['priced'] = floatval(self::where('status', 1)->sum('extract_price'));
+        //未提现金额
+        $data['brokerage_not'] = bcsub(bcsub($data['brokerage_count'], $data['priced'], 2), $data['price'], 2);
+        return compact('data');
+    }
+
+    /**
+     * @param $where
+     * @return array
+     */
+    public static function systemPage($where)
+    {
+        $model = new self;
+        if ($where['date'] != '') {
+            list($startTime, $endTime) = explode(' - ', $where['date']);
+            $model = $model->where('a.add_time', '>', strtotime($startTime));
+            $model = $model->where('a.add_time', '<', (int)bcadd(strtotime($endTime), 86400, 0));
+        }
+        if ($where['status'] != '') $model = $model->where('a.status', $where['status']);
+        if ($where['extract_type'] != '') $model = $model->where('a.extract_type', $where['extract_type']);
+        if ($where['nireid'] != '') $model = $model->where('a.real_name|a.id|b.name|a.bank_code|a.alipay_code', 'like', "%$where[nireid]%");
+        $model = $model->alias('a');
+        $model = $model->field('a.*,b.name as store_name');
+        $model = $model->join('system_store b', 'b.id=a.store_id', 'LEFT');
+        $model = $model->order('a.id desc');
+        return self::page($model, $where);
+    }
+
+    public static function changeFail($id, $fail_msg)
+    {
+        $fail_time = time();
+        $data = self::get($id);
+        $extract_number = $data['extract_price'];
+        $mark = '提现失败,退回' . $extract_number . '元';
+        $uid = $data['store_id'];
+        $status = -1;
+        $User = SystemStore::where('id', $uid)->find()->toArray();
+        StoreBill::income('提现失败', $uid, 'extract_fail', $extract_number, $id, bcadd($User['money'], $extract_number, 2), $mark);
+        SystemStore::bcInc($uid, 'money', $extract_number, 'id');
+        return self::edit(compact('fail_time', 'fail_msg', 'status'), $id);
+    }
+
+    public static function changeSuccess($id)
+    {
+        return self::edit(['status' => 1], $id);
+    }
 }

+ 5 - 19
app/admin/view/finance/store_extract/index.php

@@ -91,8 +91,8 @@
                     <div class="col-sm-3 ui-sortable">
                         <div class="ibox float-e-margins">
                             <div class="ibox-title">
-                                <span class="label label-success pull-right"></span>
-                                <h5>佣金总金额</h5>
+                                <span class="label label-success pull-right"></span>
+                                <h5>总销售额</h5>
                             </div>
                             <div class="ibox-content">
                                 <h1 class="no-margins">{$data.brokerage_count}</h1>
@@ -118,7 +118,6 @@
                             <th class="text-center">编号</th>
                             <th class="text-center">用户信息</th>
                             <th class="text-center">提现金额</th>
-                            <th class="text-center">提现来源</th>
                             <th class="text-center">提现方式</th>
                             <th class="text-center">添加时间</th>
                             <th class="text-center">备注</th>
@@ -133,22 +132,12 @@
                                 {$vo.id}
                             </td>
                             <td class="text-center">
-                                用户昵称: {$vo.nickname}/用户id:{$vo.uid}
+                                店铺: {$vo.store_name}/id:{$vo.store_id}
                             </td>
                             <td class="text-center" style="color: #00aa00;">
                                 提现金额:{$vo.extract_price}<br>
-                                转换股份:{$vo.commission_gf}<br>
-                                转消费券:{$vo.commission_consumer}<br>
-                                转换余额:{$vo.commission_yue}<br>
                                 手 续 费:{$vo.commission}<br>
-                                实际到账:{$vo.extract_price-$vo.commission_gf-$vo.commission_consumer-$vo.commission_yue-$vo.commission}<br>
-                            </td>
-                            <td class="text-center" style="color: #00aa00;">
-                                {if condition="$vo['from'] eq 'brokerage_price'"}
-                                佣金
-                                {else/}
-                                余额
-                                {/if}
+                                实际到账:{$vo.extract_price-$vo.commission}<br>
                             </td>
                             <td class="text-left">
                                 {if condition="$vo['extract_type'] eq 'bank'"}
@@ -157,10 +146,7 @@
                                 <br/>
                                 银行名称:{$vo.bank_address}
                                 {elseif condition="$vo['extract_type'] eq 'weixin'"/}
-                                微信昵称:{$vo.nickname}<br>
-<!--                                微信号:{$vo.wechat}-->
-                                {elseif condition="$vo['extract_type'] eq 'balance'"/}
-                                转余额
+                                微信号:{$vo.wechat}
                                 {else/}
                                 姓名:{$vo.real_name}<br>
                                 支付宝号:{$vo.alipay_code}