where('name', 'like', '%' . $params['search'] . '%'); } if(isset($params['shop_supplier_ids'])&&$params['shop_supplier_ids']){ $model = $model->where('shop_supplier_id', 'in', $params['shop_supplier_ids']); } if(isset($params['is_takeout']) && $params['is_takeout'] > -1){ $model = $model->where('is_takeout', '=', $params['is_takeout']); } // 查询列表数据 return $model->with(['logo', 'superUser', 'business', 'qyQrcode']) ->where('is_delete', '=', '0') ->order(['create_time' => 'desc']) ->paginate($params); } /** * 添加 */ public function add($data) { // 开启事务 $this->startTrans(); try { $supplier = $data['supplier']; if (SupplierUserModel::checkExist($supplier['user_name'])) { $this->error = '用户名已存在'; return false; } // 用户是否已绑定 $user = null; if($supplier['user_id'] > 0){ $user = UserModel::detail($supplier['user_id']); if ($user['user_type'] != 1) { $this->error = '该用户已绑定'; return false; } $isApply = $this->isApply($supplier['user_id']); if ($isApply) { $this->error = '已经申请开店'; return false; } } $supplier = $this->createData($supplier); // 添加供应商 $supplier['app_id'] = self::$app_id; $this->save($supplier); // 添加登录用户 $user_model = new SupplierUserModel(); $user_model->save([ 'user_id' => $supplier['user_id'], 'user_name' => $supplier['user_name'], 'password' => salt_hash($supplier['password']), 'real_name' => $supplier['user_name'], 'shop_supplier_id' => $this['shop_supplier_id'], 'is_super' => 1, 'app_id' => self::$app_id, ]); // 后台添加的直接算审核通过 if($user){ $user->save([ 'user_type' => 2 ]); } // 同时添加门店 by lyzflash $this->addStore($supplier); $this->commit(); return true; } catch (\Exception $e) { $this->error = $e->getMessage(); $this->rollback(); return false; } } /** * 创建数据 */ private function createData($data) { $data['app_id'] = self::$app_id; // 格式化坐标信息 $coordinate = explode(',', $data['coordinate']); $data['latitude'] = $coordinate[0]; $data['longitude'] = $coordinate[1]; // 生成geohash $Geohash = new Geohash; $data['geohash'] = $Geohash->encode($data['longitude'], $data['latitude']); return $data; } /** * 同时创建门店 */ private function addStore($data) { $data['store_name'] = $data['name']; $data['linkman'] = $data['link_name']; $data['phone'] = $data['link_phone']; $data['logo_image_id'] = $data['logo_id']; $data['summary'] = $data['description']; $data['shop_supplier_id'] = $this['shop_supplier_id']; $data['status'] = 1; return (new StoreModel)->save($data); } /** * 修改 */ public function edit($data) { // 开启事务 $this->startTrans(); try { $supplier = $data['supplier']; $old_user_id = 0; if($this['superUser']){ $old_user_id = $this['superUser']['user_id']; } if ($this['superUser'] && $supplier['user_name'] != $this['superUser']['user_name'] && SupplierUserModel::checkExist($supplier['user_name'])) { $this->error = '用户名已存在'; return false; } // 用户是否已绑定 $user = null; $userChange = false; if (!empty($supplier['user_id'])){ if($this['superUser'] && $supplier['user_id'] > 0 && $supplier['user_id'] != $this['superUser']['user_id']){ $user = UserModel::detail($supplier['user_id']); if ($user['user_type'] != 1) { $this->error = '该用户已绑定'; return false; } $isApply = $this->isApply($supplier['user_id']); if ($isApply) { $this->error = '已经申请开店'; return false; } $userChange = true; } $user=UserModel::detail($supplier['user_id']); $supplier['referee_id'] = $user['referee_id']; } // 修改供应商 $this->save($supplier); // 修改登录用户 $user_model = $this['superUser']; $user_data = [ 'user_id' => $supplier['user_id'], 'user_name' => $supplier['user_name'] ]; if (isset($supplier['password']) && !empty($supplier['password'])) { $user_data['password'] = salt_hash($supplier['password']); } $user_model->save($user_data); // 后台添加的直接算审核通过 if($userChange){ $user->save([ 'user_type' => 2 ]); //取消原来的 if ($old_user_id > 0){ (new UserModel())->where('user_id', '=', $old_user_id)->update([ 'user_type' => 1 ]); } } $this->commit(); return true; } catch (\Exception $e) { $this->error = $e->getMessage(); $this->rollback(); return false; } } /** * 软删除 */ public function setDelete() { return $this->save(['is_delete' => 1]); } /** * 开启禁止 */ public function setRecycle($is_recycle) { // 开启事务 $this->startTrans(); try { if($is_recycle==1){ //产品下架 (new ProductModel())->where('shop_supplier_id','=',$this['shop_supplier_id'])->update(['product_status' => 20]); } //更改店铺状态 $this->save(['is_recycle' => $is_recycle]); $this->commit(); return true; } catch (\Exception $e) { $this->error = $e->getMessage(); $this->rollback(); return false; } } /** * 获取列表数据 */ public static function getAll() { $model = new static(); // 查询列表数据 return $model->field(['shop_supplier_id,name'])->where('is_delete', '=', '0') ->order(['create_time' => 'desc']) ->select(); } /** * 提现驳回:解冻资金 */ public static function backFreezeMoney($shop_supplier_id, $money) { $model = self::detail($shop_supplier_id); return $model->save([ 'money' => $model['money'] + $money, 'freeze_money' => $model['freeze_money'] - $money, ]); } /** * 提现打款成功:累积提现金额 */ public static function totalMoney($shop_supplier_id, $money) { $model = self::detail($shop_supplier_id); return $model->save([ 'freeze_money' => $model['freeze_money'] - $money, 'cash_money' => $model['cash_money'] + $money, ]); } /** * 获取供应商数量 */ public static function getTotal($where) { $model = new static; return $model->where($where)->count(); } /** * 获取供应商总数量 */ public function getSupplierTotal() { return $this->where(['is_delete' => 0])->count(); } /** * 获取供应商总数量 */ public static function getSupplierTotalByDay($day) { $startTime = strtotime($day); return (new static())->where('create_time', '>=', $startTime) ->where('create_time', '<', $startTime + 86400) ->count(); } /** * 获取供应商统计数量 */ public function getSupplierData($startDate = null, $endDate = null, $type) { $model = $this; if(!is_null($startDate)){ $model = $model->where('create_time', '>=', strtotime($startDate)); } if(is_null($endDate)){ $model = $model->where('create_time', '<', strtotime($startDate) + 86400); }else{ $model = $model->where('create_time', '<', strtotime($endDate) + 86400); } if($type == 'supplier_total' || $type == 'supplier_add'){ return $model->count(); } return 0; } /** * 获取平台的总销售额 */ public function getTotalMoney($type = 'total_money',$postData=[]) { $model = $this; if(!empty($postData["supplier_name"])){ //获取商户id $shop_supplier_id = SupplierModel::getSupplierIdByName($postData['supplier_name']); $model = $model->where('shop_supplier_id', '=', $shop_supplier_id); } if($type == 'total'){ return $model->sum('total_money'); } else if($type == 'money'){ return $model->sum('money'); } else if($type == 'freeze_money'){ return $model->sum('freeze_money'); } else if($type == 'cash_money'){ return $model->sum('cash_money'); } else if($type == 'deposit_money'){ return $model->sum('deposit_money'); } return 0; } //判断用户是否申请 public function isApply($user_id) { return $this->where('user_id', '=', $user_id)->where('status', '=', 0)->count(); } /** * 获取列表数据 */ public function getStatisticsList($params,$is_page = true) { $model = $this; if (isset($params['search']) && $params['search']) { $model = $model->where('name', 'like', '%' . $params['search'] . '%'); } //搜索时间段 $create_time = empty($params['create_time']) ? 0 : $params['create_time']; $model = $model->field("shop_supplier_id,name") ->where('is_delete', '=', '0') ->order(['create_time' => 'desc']); // 查询列表数据 if($is_page){ $list = $model->paginate($params); foreach ($list->toArray()["data"] as $key => $value) { $list[$key]["coupon_money"] = orderModel::getCouponMoneyBySupplier($value["shop_supplier_id"],$create_time); $list[$key]["coupon_num"] = orderModel::getCouponNumBySupplier($value["shop_supplier_id"],$create_time); $list[$key]["store_coupon_money"] = StoreCouponModel::getCouponMoneyBySupplier($value["shop_supplier_id"],$create_time); $list[$key]["store_coupon_num"] = StoreCouponModel::getCouponNumBySupplier($value["shop_supplier_id"],$create_time); $list[$key]["total_coupon_money"] = $list[$key]["coupon_money"] + $list[$key]["store_coupon_money"]; } }else{ $list = $model->select(); foreach ($list as $key => $value) { $list[$key]["coupon_money"] = orderModel::getCouponMoneyBySupplier($value["shop_supplier_id"],$create_time); $list[$key]["coupon_num"] = orderModel::getCouponNumBySupplier($value["shop_supplier_id"],$create_time); $list[$key]["store_coupon_money"] = StoreCouponModel::getCouponMoneyBySupplier($value["shop_supplier_id"],$create_time); $list[$key]["store_coupon_num"] = StoreCouponModel::getCouponNumBySupplier($value["shop_supplier_id"],$create_time); $list[$key]["total_coupon_money"] = $list[$key]["coupon_money"] + $list[$key]["store_coupon_money"]; } } return $list; } /** * 订单导出 */ public function exportList($params) { // 获取订单列表 $list = $this->getStatisticsList($params,false); // 导出excel文件 return (new Exportservice)->supplierStatisticsList($list); } }