quanwei
18 hours ago c441dea81bd86bdfb12dff35821fed51f4cc91c2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
<?php
 
namespace app\api\controller\supplier;
 
use app\api\controller\Controller;
use app\api\model\supplier\DepositOrder as DepositOrderModel;
use app\api\model\supplier\DepositRefund as DepositRefundModel;
use app\api\model\supplier\member\Order as MemberOrderModel;
use app\api\model\supplier\member\Plan as MemberPlanModel;
use app\api\model\supplier\Supplier as SupplierModel;
use app\api\model\plus\coupon\Coupon as CouponModel;
use app\api\model\page\Ad as AdModel;
use app\api\model\order\Order as OrderModel;
use app\api\model\user\Visit as VisitModel;
use app\common\service\statistics\OrderService;
use app\common\service\supplier\MemberService;
use app\supplier\service\statistics\UserService;
use app\supplier\model\order\OrderSettled as OrderSettledModel;
use app\api\model\settings\Setting as SettingModel;
use app\api\model\plus\live\Room as RoomModel;
use app\common\model\supplier\Service as ServiceModel;
use app\api\model\plus\chat\Chat as ChatModel;
use app\api\model\supplier\Category as CategoryModel;
 
// 主营分类 by lyzflash
use app\api\model\user\Card as CardrModel;
 
// 会员卡 by lyzflash
use app\api\model\supplier\User as UserModel;
 
// by lyzflash
use app\api\model\plus\work\Setting as PlusSettingModel;
use app\api\model\supplier\Group as GroupModel;
 
// by yj
use app\common\model\app\App as AppModel;
use app\common\enum\order\OrderTypeEnum;
use app\api\model\store\Store as StoreModel;
use app\api\model\supplier\member\Member as MemberModel;
 
/**
 * 供应商
 */
class Index extends Controller
{
 
    //店铺列表
    public function list()
    {
        $param = $this->postData();
        $SupplierModel = new SupplierModel;
        $list = $SupplierModel->supplierList($param);
 
        $store_open = SettingModel::getStoreOpen();
        return $this->renderSuccess('', compact('list', 'store_open'));
    }
 
    //店铺列表
    public function getLists()
    {
        $param = $this->postData();
        $is_add = 0;//默认未添加群
        // 当前用户信息
        $user = $this->getUser();
        if (!empty($param["source"]) && $param["source"] == 1) {
            //来自于点击企业微信客服的链接
            $save_data = [
                "shop_supplier_id" => $param["shop_supplier_id"],
                "user_id" => $user["user_id"],
                "app_id" => $user["app_id"],
            ];
            $model = new GroupModel;
            $user_group = $model->add($save_data);
            if ($user_group) {
                $is_add = 1;
            }
        } else {
            //来自于扫码
            $where = [
                "shop_supplier_id" => $param["shop_supplier_id"],
                "user_id" => $user["user_id"]
            ];
            $user_group = GroupModel::detailByCondition($where);
            if (!empty($user_group)) {
                $is_add = 1;
            }
        }
 
        $SupplierModel = new SupplierModel;
        $result = $SupplierModel->getLists($param["shop_supplier_id"]);
        $list = $result["list"];
        $index = $result["index"];
 
        $data = PlusSettingModel::getItem('basic');
 
        return $this->renderSuccess('', compact('list', 'index', 'data', 'is_add'));
    }
 
    //店铺列表
    public function category()
    {
        $param = request()->param();
        $category = CategoryModel::getALL($param)->toArray();
        $category = array_merge([['category_id' => 0, 'name' => '全部']], $category);
        return $this->renderSuccess('', compact('category'));
    }
 
    public function getGroupBuyList()
    {
        $param = request()->param();
        $model = new SupplierModel();
        $param['product_num'] = isset($param['product_num']) ? $param['product_num'] : 3;
 
        // 获取用户位置信息
        $param['longitude'] = isset($param['longitude']) ? $param['longitude'] : 0;
        $param['latitude'] = isset($param['latitude']) ? $param['latitude'] : 0;
 
        // 处理筛选参数
        if (isset($param['sortType'])) {
            $sortMap = [
                'smart' => 'all',
                'distance' => 'distance',
                'score' => 'score',
                'price_low' => 'price_asc',
                'price_high' => 'price_desc'
            ];
            if (isset($sortMap[$param['sortType']])) {
                $param['sortType'] = $sortMap[$param['sortType']];
            }
        }
 
        $list = $model->getGroupBuyList($param);
        return $this->renderSuccess('', compact('list'));
    }
 
    public function getGroupBuyCondition()
    {
        $sortOptions = [
            ['text' => '智能排序', 'value' => 'smart'],
            ['text' => '距离最近', 'value' => 'distance'],
            ['text' => '评分最高', 'value' => 'score'],
            ['text' => '价格最低', 'value' => 'price_low'],
            ['text' => '价格最高', 'value' => 'price_high']
        ];
 
        $distanceOptions = [
            ['label' => '不限', 'value' => -1],
            ['label' => '500m以内', 'value' => 0.5],
            ['label' => '1km以内', 'value' => 1],
            ['label' => '2km以内', 'value' => 2],
            ['label' => '3km以内', 'value' => 3],
            ['label' => '5km以内', 'value' => 5]
        ];
        $priceOptions = [
            ['label' => '不限', 'value' => -1],
            ['label' => '50元以下', 'value' => ['min' => 0, 'max' => 50]],
            ['label' => '50-100元', 'value' => ['min' => 50, 'max' => 100]],
            ['label' => '100-200元', 'value' => ['min' => 100, 'max' => 200]],
            ['label' => '200元以上', 'value' => ['min' => 200, 'max' => -1]]
        ];
        $scoreOptions = [
            ['label' => '不限', 'value' => -1],
            ['label' => '4.0分以上', 'value' => 4.0],
            ['label' => '4.5分以上', 'value' => 4.5],
            ['label' => '4.8分以上', 'value' => 4.8]
        ];
        $category = CategoryModel::getALL(['category_type'=>20])->toArray();
        $category = array_merge([['category_id' => 0, 'name' => '全部']], $category);
        return $this->renderSuccess('', compact('sortOptions', 'distanceOptions', 'priceOptions', 'scoreOptions','category'));
    }
 
    /**
     * 供应商中心主页
     */
    public function index()
    {
        $data = $this->postData();
        $supplier = new SupplierModel;
        $user = $this->getUser(false);
        //获取店铺信息
        $detail = $supplier->getDetail($data, $user);
        if (!$detail) {
            return $this->renderError('店铺不存在');
        }
        //banner图
        $AdModel = new AdModel;
        $adList = $AdModel->getIndex(['shop_supplier_id' => $data['shop_supplier_id'], 'status' => 1], 5);
        //优惠券
        $dataCoupon['shop_supplier_id'] = $data['shop_supplier_id'];
        $model = new CouponModel;
        $couponList = $model->getWaitList($dataCoupon, $user, 1);
        // 访问记录
        (new VisitModel())->addVisit($user, $detail, $data['visitcode'], null);
        //直播列表
        $model = new RoomModel();
        $liveList = $model->getStoreList($this->postData());
        //是否显示直播
        $liv_status = SettingModel::getItem('live');
        //是否开启客服
        $service_open = SettingModel::getSysConfig()['service_open'];
        //店铺客服信息
        $mp_service = ServiceModel::detail($data['shop_supplier_id']);
        // 会员卡数量
        $card_num = CardrModel::getCardCount();
        //获取门店信息
        $store_setting = SettingModel::getItem("store");
        $store_id = '';
        //展示门店的信息
        if (!empty($store_setting) && !empty($store_setting["store_type"]) && $store_setting["store_type"] == 1) {
            $store_id = storeModel::getStoreIdBySupplierId($data['shop_supplier_id']);
        }
 
        return $this->renderSuccess('', compact('detail', 'couponList', 'adList', 'liveList', 'liv_status', 'service_open', 'mp_service', 'card_num', 'store_id'));
    }
 
    //成交数据
    public function tradeData($url = '')
    {
        $data = $this->postData();
        $user = $this->getUser();
        $data['shop_supplier_id'] = $this->getSupplierUser($user)['shop_supplier_id'];
        if (!$data['shop_supplier_id'] > 0) {
            return $this->renderError('您还未开通店铺');
        }
        $is_open = SettingModel::getItem('live')['is_open'];
        //累积成交笔数
        $totalCount = OrderModel::getTotalPayOrder($data['shop_supplier_id']);
        //今日成交笔数
        $todayCount = OrderModel::getTodayPayOrder($data['shop_supplier_id']);
        //累积领取
        $supplier = SupplierModel::detail($data['shop_supplier_id']);
        // 客服消息
        $msg_count = ChatModel::getNoReadCount($this->getSupplierUser($user)['supplier_user_id']);
        $member = MemberModel::supplierDetail([
            'shop_supplier_id' => $data['shop_supplier_id'],
            'is_expire' => 0
        ]);
        return $this->renderSuccess('', compact('totalCount', 'todayCount', 'supplier', 'is_open', 'msg_count', 'member'));
    }
 
    /**
     * 付押金
     */
    public function deposit()
    {
        // 用户信息
        $user = $this->getUser();
        $supplier = SupplierModel::detail($this->getSupplierUser($user)['shop_supplier_id'], ['category']);
        // 类目
        $category = $supplier['category'];
        if ($this->request->isGet()) {
            // 返回结算信息
            return $this->renderSuccess('', compact('category'));
        }
        $params = $this->request->param();
        $result = ['data' => ['order_id' => 0]];
       if (!empty($params['plan_id'])){
           $plans = (new MemberPlanModel())->detail($params['plan_id']);
           if ($plans['price'] > 0) {
               $memberService = new MemberService();
               $result = $memberService->createOrder($supplier['shop_supplier_id'], $params['plan_id'], $user);
               if (!$result['status']) {
                   return $this->renderError($result['msg'] ?: '创建订单失败');
               }
           }
       }
 
        // 生成订单
        $model = new DepositOrderModel;
        $order_id = $model->createOrder($user, $supplier, $result);
 
        if (!$order_id) {
            return $this->renderError($model->getError() ?: '创建订单失败');
        }
        // 在线支付
        //$payment = DepositOrderModel::onOrderPayment($user, $model, $params['pay_type'], $params['pay_source']);
        // 返回结算信息
        return $this->renderSuccess('', [
            'order_id' => $order_id,   // 订单id
        ]);
    }
 
    /**
     * 立即支付
     */
    public function pay($order_id)
    {
        // 用户信息
        $user = $this->getUser();
        // 获取订单详情
        $model = DepositOrderModel::getUserOrderDetail($order_id, $user['user_id']);
        $params = $this->postData();
        if ($this->request->isGet()) {
            // 开启的支付类型
            $payTypes = AppModel::getPayType($model['app_id'], $params['pay_source']);
            // 支付金额
            $payPrice = $model['pay_price'];
            $balance = $user['balance'];
            return $this->renderSuccess('', compact('payTypes', 'payPrice', 'balance'));
        }
        // 订单支付事件
        if ($model['pay_status'] != 10) {
            return $this->renderError($model->getError() ?: '订单已支付');
        }
        // 构建微信支付请求
        $DepositOrderModel = new DepositOrderModel;
        $payInfo = $DepositOrderModel->OrderPay($params, $model, $user);
        if (!$payInfo) {
            return $this->renderError($DepositOrderModel->getError() ?: '订单支付失败');
        }
        // 支付状态提醒
        return $this->renderSuccess('', [
            'order_id' => $order_id,   // 订单id
            'pay_type' => $payInfo['payType'],  // 支付方式
            'payment' => $payInfo['payment'],   // 微信支付参数
            'order_type' => OrderTypeEnum::CASH, //订单类型
            'use_balance' => $payInfo['use_balance']// 是否使用余额
        ]);
    }
 
    //店铺数据
    public function storedata()
    {
        $user = $this->getUser();
        $shop_supplier_id = $this->getSupplierUser($user)['shop_supplier_id'];
        //成交量
        $order = (new OrderService($shop_supplier_id))->getData();
        // 访问量
        $visit = (new UserService($shop_supplier_id))->getData();
        //订单结算
        $ordersettle = (new OrderSettledModel())->getList($shop_supplier_id, $this->postData());
        return $this->renderSuccess('', compact('order', 'visit', 'ordersettle'));
    }
 
    /**
     * 详情
     */
    public function settledetail($settled_id)
    {
        $model = OrderSettledModel::detail($settled_id);
        $order = OrderModel::detail($model['order_id']);
        return $this->renderSuccess('', compact('model', 'order'));
    }
 
    public function editPass()
    {
        // 用户信息
        $user = $this->getUser();
        $model = UserModel::detail(['user_id' => $user['user_id']]);
        if ($this->request->isGet()) {
            return $this->renderSuccess('', compact('model'));
        }
        if ($model->editPass($this->postData())) {
            return $this->renderSuccess('修改成功');
        } else {
            return $this->renderError($model->getError() ?: '修改失败');
        }
    }
 
    public function refundDeposit()
    {
        $data = $this->postData();
        $model = new DepositRefundModel;
        $shop_supplier = SupplierModel::detail($data['shop_supplier_id']);
        if (!$shop_supplier) {
            return $this->renderError('店铺不存在');
        }
        if ($shop_supplier['status'] == 10) {
            return $this->renderError('退还押金申请中,不能重复申请');
        }
        $data['deposit_money'] = $shop_supplier['deposit_money'];
        if ($model->add($data)) {
            return $this->renderSuccess('提交成功');
        } else {
            return $this->renderError($model->getError() ?: '提交失败');
        }
    }
}