Kirin 2 years ago
parent
commit
aa4013ed3b

+ 21 - 0
app/admin/controller/order/StoreOrder.php

@@ -1154,6 +1154,27 @@ class StoreOrder extends AuthController
         }
     }
 
+    /**
+     * 立即核销
+     * @param $id
+     */
+    public function exchange_delete($id)
+    {
+        StoreExchangeOrder::beginTrans();
+        $orderInfo = StoreExchangeOrder::where('id', $id)->find();
+        if (!$orderInfo) return Json::fail('订单不存在!');
+        if ($orderInfo->status > 0) return Json::fail('订单已处理!');
+
+        $orderInfo->status = 2;
+        if ($orderInfo->save()) {
+            StoreExchangeOrder::commitTrans();
+            return Json::successful('已失效!');
+        } else {
+            StoreExchangeOrder::rollbackTrans();
+            return Json::fail('失效失败');
+        }
+    }
+
 
     public function add_gift_ticket()
     {

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

@@ -149,6 +149,8 @@ class SystemStore extends AuthController
             ['sh_step_money', 0],
             ['sharing', 0],
             ['store_user', 0],
+            ['see', 0],
+            ['pay', 0],
         ]);
         SystemStoreModel::beginTrans();
         try {

+ 18 - 2
app/admin/view/order/store_order/exchange_order.php

@@ -147,19 +147,22 @@
                         <button class="layui-btn layui-btn-xs" type="button" lay-event="verify">
                             <i class="fa fa-calendar"></i> 立即核销
                         </button>
+                        <button class="layui-btn layui-btn-xs layui-btn-danger" type="button" lay-event="delete">
+                            <i class="fa fa-calendar"></i> 失效
+                        </button>
                         {{#  }; }}
+                        {{# if(parseFloat(d.deposit) > parseFloat(d.deposit_back)){ }}
                         <button type="button" class="layui-btn layui-btn-xs" onclick="dropdown(this)">操作 <span
                                     class="caret"></span></button>
                         <ul class="layui-nav-child layui-anim layui-anim-upbit">
-                            {{# if(parseFloat(d.deposit) > parseFloat(d.deposit_back)){ }}
                             <li>
                                 <a href="javascript:void(0);"
                                    onclick="$eb.createModalFrame('退押金','{:Url('refund_exchange_deposit_y')}?id={{d.id}}')">
                                     <i class="fa fa-history"></i> 退押金
                                 </a>
                             </li>
-                            {{# } }}
                         </ul>
+                        {{# } }}
                     </script>
                 </div>
             </div>
@@ -203,6 +206,19 @@
                     });
                 }, {'title': '您确定核销该订单吗?', 'text': '修改后将无法恢复,请谨慎操作!', 'confirm': '是的,我要核销'})
                 break;
+            case 'delete':
+                var url = layList.U({c: 'order.store_order', a: 'exchange_delete', p: {id: data.id}});
+                $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);
+                        } else
+                            return Promise.reject(res.data.msg || '失效失败')
+                    }).catch(function (err) {
+                        $eb.$swal('error', err);
+                    });
+                }, {'title': '您确定核失效该券吗?', 'text': '失效后将无法恢复,请谨慎操作!', 'confirm': '是的,我要失效'})
+                break;
         }
     })
     var action = {

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

@@ -162,6 +162,36 @@
                                     </i-Col>
                                 </Row>
                             </Form-Item>
+                            <Form-Item>
+                                <Row>
+                                    <i-Col span="13">
+                                        <span>可采购:</span>
+                                        <Radio-group v-model="form.see">
+                                            <Radio label="1">
+                                                <span>是</span>
+                                            </Radio>
+                                            <Radio label="0">
+                                                <span>否</span>
+                                            </Radio>
+                                        </Radio-group>
+                                    </i-Col>
+                                </Row>
+                            </Form-Item>
+                            <Form-Item>
+                                <Row>
+                                    <i-Col span="13">
+                                        <span>采购需支付:</span>
+                                        <Radio-group v-model="form.pay">
+                                            <Radio label="1">
+                                                <span>是</span>
+                                            </Radio>
+                                            <Radio label="0">
+                                                <span>否</span>
+                                            </Radio>
+                                        </Radio-group>
+                                    </i-Col>
+                                </Row>
+                            </Form-Item>
                             <Form-Item>
                                 <Row>
                                     <i-Col span="13">
@@ -238,6 +268,8 @@
                         sh_step_money:storeData.sh_step_money || 0,
                         sharing:storeData.sharing || 0,
                         store_user:(storeData.store_user?storeData.store_user.toString():'0'),
+                        see:(storeData.see?storeData.see.toString():'0'),
+                        pay:(storeData.pay?storeData.pay.toString():'0'),
                     },
                     visible:false,
                 }

+ 5 - 1
app/api/controller/PublicController.php

@@ -318,7 +318,11 @@ class PublicController
             ['page', 1],
             ['limit', 10]
         ], $request, true);
-        $list = SystemStore::lst($latitude, $longitude, $page, $limit);
+        $store = false;
+        if ($request->uid()) {
+            $store = $request->user()['admin_id'];
+        }
+        $list = SystemStore::lst($latitude, $longitude, $page, $limit, $store);
         if (!$list) $list = [];
         $data['list'] = $list;
         $data['tengxun_map_key'] = sys_config('tengxun_map_key');

+ 1 - 0
app/api/controller/admin/StoreOrderController.php

@@ -871,6 +871,7 @@ class StoreOrderController
         if (!$verify_code) return app('json')->fail('缺少核销码');
         $orderInfo = StoreExchangeOrder::where('verify_code', $verify_code)->where('store_id', 'in', [SystemStoreStaff::where('uid', $uid)->value('store_id'), 0])->where('refund_status', 0)->find();
         if (!$orderInfo) return app('json')->fail('核销的兑换券不存在于该门店或未支付或已退款');
+        if ($orderInfo->status == 2) return app('json')->fail('兑换券已经失效');
         if ($orderInfo->status > 0) return app('json')->fail('兑换券已经核销');
         if (!$is_confirm) {
             $orderInfo['image'] = StoreCart::getProductImage($orderInfo->cart_id);

+ 8 - 1
app/api/controller/store/CategoryController.php

@@ -2,7 +2,9 @@
 
 namespace app\api\controller\store;
 
+use app\admin\model\system\SystemAdmin;
 use app\models\store\StoreCategory;
+use app\models\system\SystemStore;
 use app\models\user\User;
 use app\Request;
 
@@ -12,7 +14,12 @@ class CategoryController
     {
         $model = StoreCategory::with('children')->where('is_show', 1)->order('sort desc,id desc')->where('pid', 0);
         $user = User::getUserInfo($request->uid());
-        if (!($user['admin_id'] ?? 0)) {
+        $store_user = 0;
+        if ($user['admin_id']) {
+            $admin = SystemAdmin::where('id', $user['admin_id'])->find();
+            $store_user = SystemStore::where('id', $admin['store_id'] ?? 0)->value('see');
+        }
+        if ($store_user) {
             $model = $model->where('only_store_user', 0);
         }
         $cateogry = $model->select();

+ 11 - 2
app/api/controller/store/StoreProductController.php

@@ -3,6 +3,7 @@
 namespace app\api\controller\store;
 
 use app\admin\model\store\StoreDescription;
+use app\admin\model\system\SystemAdmin;
 use app\admin\model\system\SystemAttachment;
 use app\admin\model\system\SystemStoreProductStock;
 use app\models\routine\RoutineCode;
@@ -129,7 +130,14 @@ class StoreProductController
         if ($request->isLogin())
             $user = $request->user();
         $data['uid'] = $uid;
-        if (!$id || !($storeInfo = StoreProduct::getValidProduct($id, $user['admin_id'] ?? 0))) return app('json')->fail('商品不存在或已下架');
+
+        $store_user = 0;
+        if ($user['admin_id']) {
+            $admin = SystemAdmin::where('id', $user['admin_id'])->find();
+            $store_user = SystemStore::where('id', $admin['store_id'] ?? 0)->value('see');
+        }
+
+        if (!$id || !($storeInfo = StoreProduct::getValidProduct($id, $store_user))) return app('json')->fail('商品不存在或已下架');
         $siteUrl = sys_config('site_url');
         $storeInfo['image'] = set_file_url($storeInfo['image'], $siteUrl);
         $storeInfo['image_base'] = set_file_url($storeInfo['image'], $siteUrl);
@@ -176,7 +184,8 @@ class StoreProductController
         } else $data['replyChance'] = 0;
         $data['mer_id'] = $storeInfo['mer_id'];
         $data['system_store'] = ($res = SystemStore::getStoreDispose()) ? $res : [];
-        $data['good_list'] = StoreProduct::getGoodList(18, $user['admin_id'] ?? 0, 'image,store_name,price,id,ot_price');
+
+        $data['good_list'] = StoreProduct::getGoodList(18, $store_user, 'image,store_name,price,id,ot_price');
         $data['mapKey'] = sys_config('tengxun_map_key');
         $data['store_self_mention'] = (int)sys_config('store_self_mention') ?? 0;//门店自提是否开启
         $data['activity'] = StoreProduct::activity($data['storeInfo']['id'], false);

+ 1 - 1
app/models/store/StoreExchangeOrder.php

@@ -77,7 +77,7 @@ class StoreExchangeOrder extends BaseModel
         foreach ($data as &$v) {
             $v['nickname'] = User::where('uid', $v['uid'])->value('nickname');
             $v['giftnickname'] = User::where('uid', $v['gift_uid'])->value('nickname');
-            $v['status_name'] = $v['status'] == 1 ? "已使用" : "未使用";
+            $v['status_name'] = $v['status'] == 1 ? "已使用" : ($v['status'] == 2 ? "已失效" : "未使用");
             $_info = StoreOrderCartInfo::where('cart_id', $v['cart_id'])->field('cart_info')->select();
             $_info = count($_info) ? $_info->toArray() : [];
             foreach ($_info as $k => $vv) {

+ 14 - 3
app/models/store/StoreOrder.php

@@ -318,9 +318,6 @@ class StoreOrder extends BaseModel
             $priceGroup = $cartGroup['priceGroup'];
             $other = $cartGroup['other'];
             $distance = 0;
-            if (!$userInfo['admin_id'] && ($other['only_store_user'] ?? 0)) {
-                return self::setErrorInfo('不支持采购!', true);
-            }
             if ($other['store_id'] != $storeId && !$store_order && !$free_check && !$test) {
                 self::clearCacheOrderInfo($uid, $key);
                 return self::setErrorInfo('所选门店改变,请刷新当前页面!', true);
@@ -336,6 +333,19 @@ class StoreOrder extends BaseModel
                 $payPostage = self::getOrderPriceGroup($cartInfo, $addr)['storePostage'];
                 $payPostageSh = self::getOrderPriceGroup($cartInfo, $addr, $storeId)['storePostageSh'];
             }
+            if (!$userInfo['admin_id'] && ($other['only_store_user'] ?? 0)) {
+                return self::setErrorInfo('不支持采购!', true);
+            } else {
+                $ADMIN = SystemAdmin::where('id', $userInfo['admin_id'])->find();
+                if (!$ADMIN || !$ADMIN['store_id']) {
+                    return self::setErrorInfo('不支持采购!', true);
+                } else {
+                    if (!SystemStore::where('id', $ADMIN['store_id'])->value('pay')) {
+                        $payPrice = 0;
+                    }
+                }
+            }
+
 
             $cartIds = [];
             $totalNum = 0;
@@ -485,6 +495,7 @@ class StoreOrder extends BaseModel
                     'store' => SystemStore::verificWhere()->find($storeId),
                     'deposit' => $deposit,
                     'distance' => $distance,
+                    'store_user' => $other['only_store_user'] ?? 0,
                 ];
             }
             $orderInfo = [

+ 52 - 8
app/models/store/StoreProduct.php

@@ -8,7 +8,9 @@
 namespace app\models\store;
 
 use app\admin\model\store\StoreProductAttrValue as StoreProductAttrValueModel;
+use app\admin\model\system\SystemAdmin;
 use app\admin\model\system\SystemStoreProductStock;
+use app\models\system\SystemStore;
 use app\models\system\SystemUserLevel;
 use app\models\user\User;
 use app\models\user\UserLevel;
@@ -103,7 +105,14 @@ class StoreProduct extends BaseModel
         $page = 1;
         $limit = 1000;
         $type = $data['type']; // 某些模板需要购物车数量 1 = 需要查询,0 = 不需要
-        $model = self::validWhere($user['admin_id'] ?? 0);
+
+        $store_user = 0;
+        if ($user['admin_id']) {
+            $admin = SystemAdmin::where('id', $user['admin_id'])->find();
+            $store_user = SystemStore::where('id', $admin['store_id'] ?? 0)->value('see');
+        }
+        $model = self::validWhere($store_user);
+
         if ($sId) {
             $model->whereIn('id', function ($query) use ($sId) {
                 $query->name('store_product_cate')->where('cate_id', $sId)->field('product_id')->select();
@@ -154,7 +163,12 @@ class StoreProduct extends BaseModel
     public static function getSearchStorePage($keyword, $page, $limit, $uid, $cutApart = [' ', ',', '-'])
     {
         $user = User::getUserInfo($uid);
-        $model = self::validWhere($user['admin_id'] ?? 0);
+        $store_user = 0;
+        if ($user['admin_id']) {
+            $admin = SystemAdmin::where('id', $user['admin_id'])->find();
+            $store_user = SystemStore::where('id', $admin['store_id'] ?? 0)->value('see');
+        }
+        $model = self::validWhere($store_user);
         $keyword = trim($keyword);
         if (strlen($keyword)) {
             $cut = false;
@@ -199,7 +213,12 @@ class StoreProduct extends BaseModel
             ->where('stock', '>', 0)->where('is_show', 1)->field($field)
             ->order('sort DESC, id DESC');
         $user = User::getUserInfo($uid);
-        if (!($user['admin_id'] ?? 0)) {
+        $store_user = 0;
+        if ($user['admin_id']) {
+            $admin = SystemAdmin::where('id', $user['admin_id'])->find();
+            $store_user = SystemStore::where('id', $admin['store_id'] ?? 0)->value('see');
+        }
+        if (!$store_user) {
             $model = $model->where('only_store_user', 0);
         }
         if ($limit) $model->limit($limit);
@@ -230,7 +249,12 @@ class StoreProduct extends BaseModel
             ->where('stock', '>', 0)->where('is_show', 1)->field($field)
             ->order('sort DESC, id DESC');
         $user = User::getUserInfo($uid);
-        if (!($user['admin_id'] ?? 0)) {
+        $store_user = 0;
+        if ($user['admin_id']) {
+            $admin = SystemAdmin::where('id', $user['admin_id'])->find();
+            $store_user = SystemStore::where('id', $admin['store_id'] ?? 0)->value('see');
+        }
+        if (!$store_user) {
             $model = $model->where('only_store_user', 0);
         }
         if ($limit) $model->limit($limit);
@@ -266,7 +290,12 @@ class StoreProduct extends BaseModel
             ->where('stock', '>', 0)->where('is_show', 1)->field($field)
             ->order('sort DESC, id DESC');
         $user = User::getUserInfo($uid);
-        if (!($user['admin_id'] ?? 0)) {
+        $store_user = 0;
+        if ($user['admin_id']) {
+            $admin = SystemAdmin::where('id', $user['admin_id'])->find();
+            $store_user = SystemStore::where('id', $admin['store_id'] ?? 0)->value('see');
+        }
+        if (!$store_user) {
             $model = $model->where('only_store_user', 0);
         }
         if ($page) $model->page($page, $limit);
@@ -288,7 +317,12 @@ class StoreProduct extends BaseModel
             ->where('stock', '>', 0)->where('is_show', 1)->field($field)
             ->order('sort DESC, id DESC');
         $user = User::getUserInfo($uid);
-        if (!($user['admin_id'] ?? 0)) {
+        $store_user = 0;
+        if ($user['admin_id']) {
+            $admin = SystemAdmin::where('id', $user['admin_id'])->find();
+            $store_user = SystemStore::where('id', $admin['store_id'] ?? 0)->value('see');
+        }
+        if (!$store_user) {
             $model = $model->where('only_store_user', 0);
         }
         if ($limit) $model->limit($limit);
@@ -360,7 +394,12 @@ class StoreProduct extends BaseModel
             ->where('is_show', 1)->field($field)
             ->order('sort DESC, id DESC');
         $user = User::getUserInfo($uid);
-        if (!($user['admin_id'] ?? 0)) {
+        $store_user = 0;
+        if ($user['admin_id']) {
+            $admin = SystemAdmin::where('id', $user['admin_id'])->find();
+            $store_user = SystemStore::where('id', $admin['store_id'] ?? 0)->value('see');
+        }
+        if (!$store_user) {
             $model = $model->where('only_store_user', 0);
         }
         if ($limit) $model->limit($limit);
@@ -389,7 +428,12 @@ class StoreProduct extends BaseModel
         $model = self::where('cate_id', 'IN', $cid)->where('is_show', 1)->where('is_del', 0)
             ->field($field)->order('sort DESC,id DESC');
         $user = User::getUserInfo($uid);
-        if (!($user['admin_id'] ?? 0)) {
+        $store_user = 0;
+        if ($user['admin_id']) {
+            $admin = SystemAdmin::where('id', $user['admin_id'])->find();
+            $store_user = SystemStore::where('id', $admin['store_id'] ?? 0)->value('see');
+        }
+        if (!$store_user) {
             $model = $model->where('only_store_user', 0);
         }
         if ($limit) $model->limit($limit);

+ 11 - 3
app/models/system/SystemStore.php

@@ -153,15 +153,23 @@ class SystemStore extends BaseModel
      * 门店列表
      * @return mixed
      */
-    public static function lst($latitude, $longitude, $page, $limit)
+    public static function lst($latitude, $longitude, $page, $limit, $store_user = false)
     {
         $model = new self();
         $model = $model->where('is_del', 0);
         $model = $model->where('is_show', 1);
+        $order = '';
         if ($latitude && $longitude) {
-            $model = $model->field(['*', self::distanceSql($latitude, $longitude)])->order('distance asc');
+            $model = $model->field(['*', self::distanceSql($latitude, $longitude)]);
+            $order = 'distance asc';
         }
-        $list = $model->page((int)$page, (int)$limit)
+        if ($store_user) {
+            if ($order)
+                $order .= ",store_user desc";
+            else
+                $order .= "store_user desc";
+        }
+        $list = $model->order($order)->page((int)$page, (int)$limit)
             ->select()
             ->hidden(['is_show', 'is_del'])
             ->toArray();