hrjy преди 2 години
родител
ревизия
1822454790

+ 11 - 3
app/admin/controller/setting/SystemAdmin.php

@@ -4,7 +4,7 @@ namespace app\admin\controller\setting;
 
 use app\admin\controller\AuthController;
 use crmeb\services\{FormBuilder as Form, JsonService as Json, UtilService as Util};
-use app\admin\model\system\{SystemRole, SystemAdmin as AdminModel};
+use app\admin\model\system\{SystemRole, SystemAdmin as AdminModel, SystemStore};
 use think\facade\Route as Url;
 
 /**
@@ -55,6 +55,11 @@ class SystemAdmin extends AuthController
             return $options;
         })->multiple(1);
         $f[] = Form::radio('status', '状态', 1)->options([['label' => '开启', 'value' => 1], ['label' => '关闭', 'value' => 0]]);
+        $f[] = Form::select('mer_id', '绑定商家')
+            ->options(
+                SystemStore::field('id as value,name as label')->select()->toArray()
+            )
+            ->filterable(1);
         $form = Form::make_post_form('添加管理员', $f, Url::buildUrl('save'));
         $this->assign(compact('form'));
         return $this->fetch('public/form-builder');
@@ -74,7 +79,8 @@ class SystemAdmin extends AuthController
             'pwd',
             'real_name',
             ['roles', []],
-            ['status', 0]
+            ['status', 0],
+            ['mer_id']
         ]);
         if (!$data['account']) return Json::fail('请输入管理员账号');
         if (!$data['roles']) return Json::fail('请选择至少一个管理员身份');
@@ -117,6 +123,7 @@ class SystemAdmin extends AuthController
             return $options;
         })->multiple(1);
         $f[] = Form::radio('status', '状态', 1)->options([['label' => '开启', 'value' => 1], ['label' => '关闭', 'value' => 0]]);
+        $f[] = Form::select('mer_id', '绑定商家', (string)$admin->mer_id)->options(SystemStore::field('id as value,name as label')->select()->toArray())->filterable(1);
         $form = Form::make_post_form('编辑管理员', $f, Url::buildUrl('update', compact('id')));
         $this->assign(compact('form'));
         return $this->fetch('public/form-builder');
@@ -137,7 +144,8 @@ class SystemAdmin extends AuthController
             'pwd',
             'real_name',
             ['roles', []],
-            ['status', 0]
+            ['status', 0],
+            ['mer_id']
         ]);
         if (!$data['account']) return Json::fail('请输入管理员账号');
         if (!$data['roles']) return Json::fail('请选择至少一个管理员身份');

+ 118 - 0
app/admin/controller/system/SystemStore.php

@@ -3,10 +3,14 @@
 namespace app\admin\controller\system;
 
 use app\admin\controller\AuthController;
+use app\admin\model\user\User;
+use app\admin\model\user\UserBill;
+use crmeb\services\FormBuilder as Form;
 use crmeb\services\JsonService;
 use crmeb\services\JsonService as Json;
 use app\admin\model\system\SystemStore as SystemStoreModel;
 use crmeb\services\UtilService;
+use think\facade\Route as Url;
 
 /**
  * 门店管理控制器
@@ -43,6 +47,7 @@ class SystemStore extends AuthController
         $hide = SystemStoreModel::where('is_show', 0)->count();//隐藏的门店
         $recycle = SystemStoreModel::where('is_del', 1)->count();//删除的门店
         if ($type == null) $type = 1;
+        $this->assign('role', $this->adminInfo['roles']);
         $this->assign(compact('type', 'show', 'hide', 'recycle'));
         return $this->fetch();
     }
@@ -56,6 +61,7 @@ class SystemStore extends AuthController
     {
         $store = SystemStoreModel::getStoreDispose($id);
         $this->assign(compact('store'));
+        $this->assign('role', $this->adminInfo['roles']);
         return $this->fetch();
     }
 
@@ -127,6 +133,7 @@ class SystemStore extends AuthController
             ['latlng', ''],
             ['valid_time', []],
             ['day_time', []],
+            ['integral', 0],
         ]);
         SystemStoreModel::beginTrans();
         try {
@@ -166,4 +173,115 @@ class SystemStore extends AuthController
             return JsonService::fail($e->getMessage());
         }
     }
+
+    /**
+     * 上传店内图片
+     * @param $id
+     * @return string
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function up($id)
+    {
+        if (!$id) Json::fail('数据不存在');
+        $data = SystemStoreModel::where('id', $id)->find();
+        $f = [];
+        if ($data['slider_image'] and $data['gatehead']){
+            $f[] = Form::frameImages('gatehead', '门头图(640*640px)', Url::buildUrl('admin/widget.images/index', array('fodder' => 'gatehead')), json_decode($data->getData('slider_image'), 1))->maxLength(5)->icon('images')->width('100%')->height('500px');
+            $f[] = Form::frameImages('slider_image', '店内图片(640*640px)', Url::buildUrl('admin/widget.images/index', array('fodder' => 'slider_image')), json_decode($data->getData('slider_image'), 1))->maxLength(5)->icon('images')->width('100%')->height('500px');
+        }else{
+            $f[] = Form::frameImages('gatehead', '门头图(640*640px)', Url::buildUrl('admin/widget.images/index', array('fodder' => 'gatehead')))->maxLength(5)->icon('images')->width('100%')->height('500px');
+            $f[] = Form::frameImages('slider_image', '店内图片(640*640px)', Url::buildUrl('admin/widget.images/index', array('fodder' => 'slider_image')))->maxLength(5)->icon('images')->width('100%')->height('500px');
+        }
+        $f[] = Form::hidden('id', $id);
+        $form = Form::make_post_form('修改', $f, Url::buildUrl('image_save', compact('id')));
+        $this->assign(compact('form'));
+        return $this->fetch('public/form-builder');
+
+    }
+
+    /**
+     * 添加接口
+     * @return void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function image_save()
+    {
+
+        $data = UtilService::postMore([
+            ['gatehead', ''],
+            ['slider_image', ''],
+            ['id']
+        ]);
+        if (empty($data['gatehead']) or empty($data['slider_image']))   return JsonService::fail('门头图或店内图不能为空');
+        $store = SystemStoreModel::find($data['id']);
+        $store['gatehead'] = json_encode($data['gatehead']);
+        $store['slider_image'] = json_encode($data['slider_image']);
+
+        $res = $store->save();
+        if ($res)  return JsonService::success('上传成功');
+        return JsonService::fail('上传失败');
+    }
+
+    /**
+     * 转积分给用户
+     * @param $id
+     * @return string
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function integral($id)
+    {
+        if (!$id) Json::fail('数据不存在');
+        $f = [];
+        $f[] = Form::input('uid', '用户ID');
+        $f[] = Form::number('integral', '转入积分');
+        $f[] = Form::hidden('id', $id);
+        $form = Form::make_post_form('转入', $f, Url::buildUrl('integral_save', compact('id')));
+        $this->assign(compact('form'));
+        return $this->fetch('public/form-builder');
+
+    }
+
+    /**
+     * 转入积分给用户
+     * @return void
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public function integral_save()
+    {
+        $data = UtilService::postMore([
+            ['uid', ''],
+            ['integral', ''],
+            ['id']
+        ]);
+        if (!$data['uid'])   return JsonService::fail('输入用户ID');
+        if (!$data['integral'])   return JsonService::fail('转入积分不能为空');
+
+        $store = SystemStoreModel::find($data['id']);
+        $user = User::where('uid', $data['uid'])->find();
+        if (!$user) return JsonService::fail('用户不存在');
+        if ($store['integral'] < $data['integral']) return JsonService::fail('积分不足');
+
+        $user['integral'] += $data['integral'];
+        $store['integral'] -= $data['integral'];
+        User::beginTrans();
+        $res = $user->save();
+        if ($res)  {
+            $store->save();
+            UserBill::income('商家转积分', $user['uid'], 'integral', 'zz_integral', $data['integral'], $user['spread_uid'], $user['integral'], '接收商家转账积分');
+            \app\models\user\User::bonus(1,$data['integral']);
+            User::commitTrans();
+            return JsonService::success('成功');
+        }
+        User::rollbackTrans();
+        return JsonService::fail('失败');
+
+    }
 }

+ 11 - 0
app/admin/view/system/system_store/add.php

@@ -36,6 +36,16 @@
                                     </i-Col>
                                 </Row>
                             </Form-Item>
+                            {if ($role  == 1)}
+                            <Form-Item>
+                                <Row>
+                                    <i-Col span="13">
+                                        <span>门店积分:</span>
+                                        <i-Input  placeholder="门店积分" v-model="form.integral" style="width: 80%" type="number"></i-Input>
+                                    </i-Col>
+                                </Row>
+                            </Form-Item>
+                            {/if}
                             <Form-Item>
                                 <Row>
                                     <i-Col span="13">
@@ -160,6 +170,7 @@
                         latlng:storeData.latlng || '',
                         valid_time:storeData.valid_time || [],
                         day_time:storeData.day_time || [],
+                        integral:storeData.integral || []
                     },
                     visible:false,
                 }

+ 17 - 0
app/admin/view/system/system_store/index.php

@@ -5,6 +5,7 @@
 {block name="content"}
 <div class="layui-fluid" style="background: #fff;margin-top: -10px;">
     <div class="layui-tab layui-tab-brief" lay-filter="tab">
+        {if ($role  == 1)}
         <ul class="layui-tab-title">
             <li lay-id="list" {eq name='type' value='1'}class="layui-this" {/eq}>
                 <a href="{eq name='type' value='1'}javascript:;{else}{:Url('index',['type'=>1])}{/eq}">显示中的门店({$show})</a>
@@ -16,6 +17,7 @@
                 <a href="{eq name='type' value='3'}javascript:;{else}{:Url('index',['type'=>3])}{/eq}">回收站的门店({$recycle})</a>
             </li>
         </ul>
+        {/if}
     </div>
     <div class="layui-row layui-col-space15">
         <div class="layui-col-md12">
@@ -48,9 +50,11 @@
 <!--                <div class="layui-card-header">门店列表</div>-->
                 <div class="layui-card-body">
                     <div class="layui-btn-container">
+                        {if ($role  == 1)}
                         <button class="layui-btn layui-btn-sm"
                                 onclick="$eb.createModalFrame(this.innerText,'{:Url('add')}',{h:700,w:1100})">添加门店
                         </button>
+                        {/if}
                     </div>
                     <table class="layui-hide" id="List" lay-filter="List"></table>
                     <script type="text/html" id="headimgurl">
@@ -64,9 +68,15 @@
                                lay-text='显示|隐藏' {{ d.is_show== 1 ? 'checked' : '' }}>
                     </script>
                     <script type="text/html" id="act">
+                        <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event='integral'>
+                            转积分
+                        </button>
                         <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event='edit'>
                             编辑门店
                         </button>
+                        <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event='image'>
+                            店内图片
+                        </button>
                         <button type="button" class="layui-btn layui-btn-xs layui-btn-normal" lay-event='del'>
                             {{# if(d.is_del){ }}
                             恢复门店
@@ -90,6 +100,7 @@
             {field: 'id', title: 'ID', sort: true, event: 'id', width: '4%'},
             {field: 'image', title: '门店图片', templet: '#headimgurl', width: '6%'},
             {field: 'name', title: '门店名称', width: '10%'},
+            {field: 'integral', title: '门店积分'},
             {field: 'phone', title: '门店电话', width: '10%'},
             {field: 'address', title: '地址', templet: '#address'},
             {field: 'day_time', title: '营业时间', width: '15%'},
@@ -157,6 +168,12 @@
             case 'edit':
                 $eb.createModalFrame(data.name + '-编辑', layList.U({a: 'add', q: {id: data.id}}), {h: 700, w: 1100});
                 break;
+            case 'image':
+                $eb.createModalFrame(data.name + '-上传图片', layList.U({a: 'up', q: {id: data.id}}), {h: 700, w: 1100});
+                break;
+            case 'integral':
+                $eb.createModalFrame(data.name + '-转积分', layList.U({a: 'integral', q: {id: data.id}}), {h: 700, w: 1100});
+                break;
         }
     })
 </script>

+ 12 - 0
app/common.php

@@ -594,3 +594,15 @@ if (!function_exists('do_request')) {
         return $result;
     }
 }
+
+if (!function_exists('pr')) {
+    function pr($var, $int = '')
+    {
+        $template = PHP_SAPI !== 'cli' ? '<pre>%s</pre>' : "\n%s\n";
+        printf($template, print_r($var, true));
+        if (!empty($int)) {
+            exit($int);
+        }
+
+    }
+}

+ 1 - 0
app/models/store/StoreOrder.php

@@ -680,6 +680,7 @@ class StoreOrder extends BaseModel
         }
         $res = $res1 && $res2 && $res3;
         self::checkTrans($res);
+        User::bonus(2, 0, $uid, $order_id);
         return $res;
     }
 

+ 140 - 0
app/models/user/User.php

@@ -4,6 +4,7 @@
 namespace app\models\user;
 
 use app\models\store\StoreOrder;
+use app\models\store\StoreOrderCartInfo;
 use app\models\store\StoreProduct;
 use crmeb\services\SystemConfigService;
 use think\db\exception\DataNotFoundException;
@@ -736,4 +737,143 @@ class User extends BaseModel
         }
         return $model->where('brokerage_price', '>', $brokerage_price)->count('uid');
     }
+
+
+    public static function bonus($type, $money, $uid = 0, $order_id = '')
+    {
+        $model = new self();
+        $silver_user = $model->where([['level', '=', 1], ['brokerage_price', '<', 200]])->select();// 白银会员
+        $silver = count($silver_user);// 白银会员总数
+        $silver_user = $silver_user ? $silver_user->toArray() : [];
+
+        $gold_user = $model->where([['level', '=', 2], ['brokerage_price', '<', 6000]])->select();// 黄金会员
+        $gold = count($gold_user);// 黄金会员总数
+        $gold_user = $gold_user ? $gold_user->toArray() : [];
+
+        $diamonds_user = $model->where([['level', '=', 3]])->select();// 钻石会员总数
+        $diamonds =  count($diamonds_user);// 钻石会员总数
+        $diamonds_user = $diamonds_user ? $diamonds_user->toArray() : [];
+        switch ($type){
+            case 1:
+                //商家转账积分后
+                $divide = ($money * 0.1)/($silver+$gold);//白银会员和黄金会员分百分之十的金额
+                $diamonds_divide = ($money * 0.01)/$diamonds;//钻石会员销售的百分之1
+                $user = array_merge($silver_user, $gold_user);
+                if ($user){
+                    // 黄金会员和白银会员
+                    foreach ($user as &$item){
+                        if ($item['level'] == 1){
+                            if ($item['brokerage_price']+$divide > 200){
+                                $item['brokerage_price'] += 200 - $item['brokerage_price'];
+                                UserBill::income('佣金', $item['uid'], 'now_money', 'brokerage',  200 - $item['brokerage_price'], $item['spread_uid'], $item['brokerage_price'], '商家销售额分红,已达到上限');
+                            }else{
+                                $item['brokerage_price'] += $divide;
+                                UserBill::income('佣金', $item['uid'], 'now_money', 'brokerage', $divide, $item['spread_uid'], $item['brokerage_price'], '商家销售额分红');
+                            }
+
+                        }elseif ($item['level'] == 2){
+                            if ($item['brokerage_price']+$divide > 6000){
+                                $item['brokerage_price'] += 6000 - $item['brokerage_price'];
+                                UserBill::income('佣金', $item['uid'], 'now_money', 'brokerage',  6000 - $item['brokerage_price'], $item['spread_uid'], $item['brokerage_price'], '商家销售额分红,已达到上限');
+                            }else{
+                                $item['brokerage_price'] += $divide;
+                                UserBill::income('佣金', $item['uid'], 'now_money', 'brokerage', $divide, $item['spread_uid'], $item['brokerage_price'], '商家销售额分红');
+                            }
+                        }
+                    }
+                    $model->saveAll($user);
+                }
+
+                if ($diamonds_user){
+                    // 钻石会员
+                    foreach ($diamonds_user as &$item){
+                        $item['brokerage_price'] += $diamonds_divide;
+                        UserBill::income('佣金', $item['uid'], 'now_money', 'brokerage', $diamonds_divide, $item['spread_uid'], $item['brokerage_price'], '商家销售额分红');
+                    }
+                    $model->saveAll($diamonds_user);
+                }
+                break;
+            case 2:
+                // 礼包分红
+                $order = StoreOrder::where('order_id', $order_id)->find();
+                $user = User::where('uid', $order['uid'])->find();
+                $info = StoreOrderCartInfo::where('oid', $order['id'])->where('product_id', '<=', 2)->select();
+                foreach ($info as $item){
+                    $product = StoreProduct::where('id', $item['product_id'])->find();
+                    if ($user['spread_uid']){
+                        // 当前用户是否有上级
+                        $spread = User::where('uid', $user['spread_uid'])->find();
+                        if ($spread['level'] == 2){
+                            // 如果用户是黄金会员
+                            $push  = $product['price'] * 0.2; //获得价格百分之20的佣金
+                            if ($spread['brokerage_price']+$push > 6000){
+                                $spread['brokerage_price'] += 6000 - $spread['brokerage_price'];
+                                UserBill::income('佣金', $spread['uid'], 'now_money', 'brokerage', 6000 - $spread['brokerage_price'], $spread['spread_uid'], $spread['brokerage_price'], '礼包销售额20%分红,已达到上限');
+                            }else{
+                                $spread['brokerage_price'] += $push;
+                                UserBill::income('佣金', $spread['uid'], 'now_money', 'brokerage', $push, $spread['spread_uid'], $spread['brokerage_price'], '礼包销售直推佣金');
+                            }
+                            $spread->save();
+                        }
+
+                    }
+                    if ($product['price'] == 200){
+                        $divide = ($product['price'] * 0.1)/$silver; // 200礼包的百分之十白银会员平分
+                        $diamonds_divide = ($product['price'] * 0.03)/$diamonds;//钻石会员200礼包的百分之3
+                        if ($silver_user){
+                            foreach ($silver_user as &$value){
+                                if ($value['brokerage_price']+$divide > 200){
+                                    $value['brokerage_price'] += 200 - $value['brokerage_price'];
+                                    UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', 200 - $value['brokerage_price'], $value['spread_uid'], $value['brokerage_price'], '200礼包销售额分红,已达到上限');
+                                }else{
+                                    $value['brokerage_price'] += $divide;
+                                    UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', $divide, $value['spread_uid'], $value['brokerage_price'], '200礼包销售额分红');
+                                }
+                            }
+                            $model->saveAll($silver_user);
+                        }
+                        if ($diamonds_user){
+                            // 钻石会员
+                            foreach ($diamonds_user as &$value){
+                                $value['brokerage_price'] += $diamonds_divide;
+                                UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', $diamonds_divide, $value['spread_uid'], $value['brokerage_price'], '200礼包销售额分红');
+                            }
+                            $model->saveAll($diamonds_user);
+                        }
+                    }elseif ($product['price'] == 1991){
+                        //1991礼包 白银会员和黄金会员分百分之十的金额
+                        $divide = ($product['price'] * 0.1)/($silver+$gold);
+                        $user = array_merge($silver_user, $gold_user);
+                        if ($user){
+                            // 黄金会员和白银会员
+                            foreach ($user as &$value){
+                                if ($value['level'] == 1){
+                                    if ($value['brokerage_price']+$divide > 200){
+                                        $value['brokerage_price'] += 200 - $value['brokerage_price'];
+                                        UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', 200 - $value['brokerage_price'], $value['spread_uid'], $value['brokerage_price'], '1991礼包销售额分红,已达到上限');
+                                    }else{
+                                        $value['brokerage_price'] += $divide;
+                                        UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', $divide, $value['spread_uid'], $value['brokerage_price'], '1991礼包销售额分红');
+                                    }
+
+                                }elseif ($value['level'] == 2){
+                                    if ($value['brokerage_price']+$divide > 6000){
+                                        $value['brokerage_price'] += 6000 - $value['brokerage_price'];
+                                        UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', 6000 - $value['brokerage_price'], $value['spread_uid'], $value['brokerage_price'], '1991礼包销售额分红,已达到上限');
+                                    }else{
+                                        $value['brokerage_price'] += $divide;
+                                        UserBill::income('佣金', $value['uid'], 'now_money', 'brokerage', $divide, $value['spread_uid'], $value['brokerage_price'], '1991礼包销售额分红');
+                                    }
+                                }
+                            }
+                            $model->saveAll($user);
+                        }
+                    }
+                }
+
+                break;
+        }
+
+        return [];
+    }
 }