Example #1
0
 public function run()
 {
     $id = intval($this->getDataItem('id', 0));
     if (0 < $id) {
         $this->activity = Activity::query()->columns(['activity_id id', 'city_id city', 'activity_type type', 'activity_title as title', 'activity_intro as intro', '0 beauty_parlors'])->where('activity_id=:id:')->bind(['id' => $id])->execute()->getFirst();
         if ($this->activity) {
             $parlor = ActivityBeautyParlor::query()->columns(['bp_id as id', 'bp_name as name', 'bp_cover as cover', 'bp_address as address', '0 as tags', 'bp_medal as medal'])->leftJoin('Apps\\Common\\Models\\BeautyParlor', 'Apps\\Common\\Models\\ActivityBeautyParlor.beauty_parlor_id=bp.bp_id', 'bp')->where('bp.bp_state > 0 and activity_id = :id:')->bind(['id' => $id])->execute()->toArray();
             $this->activity->beauty_parlors = $parlor;
         }
     }
     $this->activity = $this->activity ? $this->activity : null;
     if ($this->activity) {
         //$this->activity->cover = PicUrl::ActivityCover($this->activity->cover, $this->getDi());
         for ($i = 0; $i < count($this->activity->beauty_parlors); $i++) {
             $this->activity->beauty_parlors[$i]['cover'] = PicUrl::BeautyParlorCover($this->activity->beauty_parlors[$i]['cover'], $this->getDi());
             $medal = $this->activity->beauty_parlors[$i]['medal'];
             unset($this->activity->beauty_parlors[$i]['medal']);
             $this->activity->beauty_parlors[$i]['medal_refund'] = \Apps\Common\Libs\BeautyParlor::getMedalRefund($medal);
             $this->activity->beauty_parlors[$i]['medal_verify'] = \Apps\Common\Libs\BeautyParlor::getMedalVerify($medal);
             $this->activity->beauty_parlors[$i]['tags'] = \Apps\Common\Libs\BeautyParlor::getTags($this->activity->beauty_parlors[$i]['id']);
         }
         $this->activity->intro = \Apps\Common\Libs\BeautyParlor::formatServiceIntro($this->activity->intro, $this->getDi(), true);
     }
     $this->setResult($this->activity);
 }
Example #2
0
 private function getBeautyParlor($id)
 {
     $info = BeautyParlor::query()->columns(['bp_id as id', 'bp_name as name', 'bp_medal as medal', 'bp_address as address', 'bp_tel as tel', 'AsText(bp_coordinate) as bp_coordinate'])->where('bp_id=:id:')->bind(['id' => $id])->execute()->getFirst();
     $coordinate = str_replace("POINT(", '', $info->bp_coordinate);
     $coordinate = str_replace(")", '', $coordinate);
     $coordinate = explode(" ", $coordinate);
     if ($info) {
         return ['id' => $info->id, 'name' => $info->name, 'medal_refund' => \Apps\Common\Libs\BeautyParlor::getMedalRefund($info->medal), 'medal_verify' => \Apps\Common\Libs\BeautyParlor::getMedalVerify($info->medal), 'latitude' => $coordinate[0], 'longitude' => $coordinate[1], 'tel' => $info->tel, 'address' => $info->address];
     }
     return null;
 }
Example #3
0
 private function getGoods($orderId)
 {
     $goodsList = UserOrderGoods::query()->columns(['shop_id', 'bp.bp_name shop_name', 'bp.bp_medal shop_medal_refund', 'bp.bp_medal shop_medal_verify', 'goods_id', 'bps.service_name goods_name', 'bps.service_cover goods_cover', 'goods_price', 'bps.service_unit goods_price_show', 'order_goods_number goods_number'])->leftJoin('Apps\\Common\\Models\\BeautyParlor', 'bp.bp_id = shop_id', 'bp')->leftJoin('Apps\\Common\\Models\\BeautyParlorService', 'bps.service_id = goods_id', 'bps')->where('order_id = :oid:', ['oid' => $orderId])->execute()->toArray();
     for ($i = 0; $i < count($goodsList); $i++) {
         $goodsList[$i]['shop_medal_refund'] = \Apps\Common\Libs\BeautyParlor::getMedalRefund($goodsList[$i]['shop_medal_refund']);
         $goodsList[$i]['shop_medal_verify'] = \Apps\Common\Libs\BeautyParlor::getMedalVerify($goodsList[$i]['shop_medal_verify']);
         $goodsList[$i]['goods_cover'] = PicUrl::BeautyParlorCover($goodsList[$i]['goods_cover'], $this->getDi());
         $unit = $goodsList[$i]['goods_price_show'];
         if ($goodsList[$i]['goods_price'] > 0) {
             $goodsList[$i]['goods_price_show'] = $goodsList[$i]['goods_price'] . '元' . ($unit ? '/' . $unit : '');
         } else {
             $goodsList[$i]['goods_price_show'] = '';
         }
     }
     return $goodsList;
 }
 public function sync($id)
 {
     $config = $this->di->get('appConfig')->amap->lbs_cloud;
     $key = $config->key;
     $signKey = $config->sign_key;
     $tableId = $config->table_id;
     $syncLogTableName = 'beauty_parlor_amap_sync_log';
     $lbsColud = new LBSCloud($key, $signKey, $tableId, $syncLogTableName);
     // 获取店铺信息
     $shop = BeautyParlor::query()->columns(['bp_id', 'bp_name', 'bp_address', 'bp_cover', 'bp_tel', 'bp_medal', 'X(bp_coordinate) x', 'Y(bp_coordinate) y'])->where('bp_id=:id:', ['id' => $id])->execute()->getFirst();
     if (!$shop) {
         return false;
     }
     $name = $shop->bp_name;
     $location = $shop->x . ',' . $shop->y;
     $address = $shop->bp_address;
     $customData = ['bp_id' => $shop->bp_id, 'bp_cover' => PicUrl::BeautyParlorCover($shop->bp_cover, $this->di), 'tel' => $shop->bp_tel, 'bp_tags' => implode(',', \Apps\Common\Libs\BeautyParlor::getTags($id)), 'medal_refund' => \Apps\Common\Libs\BeautyParlor::getMedalRefund($shop->bp_medal), 'medal_verify' => \Apps\Common\Libs\BeautyParlor::getMedalVerify($shop->bp_medal)];
     // 获取已经同步的数据
     $aMapData = BeautyParlorAmap::findFirst("source_id={$id}");
     if ($aMapData) {
         // 更新
         $result = $lbsColud->update($id, $aMapData->amap_data_id, $name, $location, $address, $customData, CoordType::AUTONAVI);
         if ($result->status) {
             // 记录更新时间
             $aMapData->sync_time = new RawValue('NOW()');
             if ($aMapData->save() == false) {
                 $this->logDatabaseError($aMapData);
             }
         }
     } else {
         // 新添加
         $result = $lbsColud->create($id, $name, $location, $address, $customData, CoordType::AUTONAVI);
         if ($result->status) {
             // 记录关系数据
             $aMapData = new BeautyParlorAmap();
             $aMapData->source_id = $id;
             $aMapData->amap_data_id = $result->id;
             $aMapData->sync_time = new RawValue('NOW()');
             if ($aMapData->save() == false) {
                 $this->logDatabaseError($aMapData);
             }
         }
     }
     return $result->status;
 }
Example #5
0
 /**
  * 获取用户关注的美容院列表
  * @param $user_id
  * @param int $offset
  * @param int $limit
  * @return mixed
  */
 private function getFavorites($user_id, $offset = 0, $limit = 10)
 {
     $list = BpFavorites::query()->columns(['p.bp_id id', 'p.bp_name name', 'p.bp_cover cover', 'p.bp_address address', 'p.bp_tel tel', 'p.bp_medal medal_verify', 'a.low_price', 'a.facilities'])->leftJoin('Apps\\Common\\Models\\BeautyParlor', 'Apps\\Common\\Models\\BpFavorites.bp_id = p.bp_id', 'p')->leftJoin('Apps\\Common\\Models\\BeautyParlorAttr', 'Apps\\Common\\Models\\BpFavorites.bp_id = a.beauty_parlor_id', 'a')->where('p.bp_state = 1 and user_id = ' . $user_id)->limit($limit, $offset)->execute()->toArray();
     $BeautyParlorTag = new BeautyParlorTag();
     foreach ($list as $k => $val) {
         $tags = [];
         if ($tagList = $BeautyParlorTag->getTagList($val['id'])) {
             foreach ($tagList as $key => $value) {
                 $tags[] = $value['tag_title'];
             }
         } else {
             $tags = [];
         }
         $list[$k]['cover'] = PicUrl::BeautyParlorCover($val['cover'], $this->getDi());
         $list[$k]['medal_verify'] = BeautyParlor::getMedalVerify($val['medal']);
         $list[$k]['facilities'] = $val['facilities'] ? json_decode($val['facilities'], true) : [];
         $list[$k]['tag'] = $tags;
     }
     return $list;
 }
Example #6
0
 private function getRecommend($cityId)
 {
     $bannerBp = OmBanner::query()->columns('banner_data')->where('city_id = :cid: AND banner_name = :key:', ['cid' => $cityId, 'key' => 'index_bp'])->execute()->getFirst();
     if ($bannerBp) {
         $data = BeautyParlor::query()->columns(['bp_id as id', 'bp_name as name', 'bp_cover as cover', 'bp_address as address', 'bp_medal as medal'])->where('bp_state>0 and bp_id=:id:')->bind(['id' => $bannerBp->banner_data])->execute()->getFirst();
         $bpData = ["id" => $data->id, "name" => $data->name, "cover" => PicUrl::BeautyParlorCover($data->cover, $this->getDi()), "address" => $data->address, "tags" => $this->getBeautyParlorTags($data->id), "medal_refund" => \Apps\Common\Libs\BeautyParlor::getMedalRefund($data->medal), "medal_verify" => \Apps\Common\Libs\BeautyParlor::getMedalVerify($data->medal)];
     } else {
         $bpData = null;
     }
     $pics = OmBanner::query()->columns('banner_data')->where('city_id = :cid: AND banner_name = :key:', ['cid' => $cityId, 'key' => 'index_pics'])->execute()->getFirst();
     if ($pics) {
         $picsData = json_decode($pics->banner_data, true);
     } else {
         $picsData = [];
     }
     for ($i = 0; $i < count($picsData); $i++) {
         $picsData[$i]['url'] = PicUrl::DefaultPics($picsData[$i]['url'], $this->getDi());
     }
     return ['pic' => $picsData, 'beauty_parlor' => $bpData];
 }
Example #7
0
 private function syncBPS($id)
 {
     $info = BeautyParlorService::findFirst('service_id = ' . $id);
     if (!$info) {
         return false;
     }
     // 删除数据
     if ($info->service_state <= 0) {
         $this->delete(SearchDataType::BeautyParlorService, $info->service_id);
         return true;
     }
     // 店铺数据
     $bpInfo = \Apps\Common\Models\BeautyParlor::findFirst('bp_id = ' . $info->beauty_parlor_id);
     // 同步数据
     // 标题中包含的内容
     $titleArr = [$info->service_name, $info->service_description];
     $title = implode(',', $titleArr);
     $searchContent = \Apps\Common\Libs\BeautyParlor::formatServiceIntro($info->service_intro, $this->getDI());
     $tagInt = $info->service_is_sell;
     $tagStr = '';
     $showData = json_encode(['id' => $info->service_id, 'name' => $info->service_name, 'cover' => $info->service_cover, 'price' => $info->service_price, 'unit' => $info->service_unit, 'description' => $info->service_description, 'bp_id' => $bpInfo->bp_id, 'bp_name' => $bpInfo->bp_name]);
     $this->save(SearchDataType::BeautyParlorService, $id, $showData, $title, $searchContent, $tagInt, $tagStr);
     return true;
 }
Example #8
0
 public function run()
 {
     //判断城市是否开通 未开通城市  banner 广告位显示全国 美容院不显示
     $banners = [];
     //首页banner
     $questionlists = [];
     //首页推荐问答
     $city_code = $this->getDataItem('city_code', 0);
     $userid = $this->getDataItem('user_id', 0);
     $is_open = SysOpenCity::findFirst(['columns' => "city_id", 'conditions' => "city_code = {$city_code} AND city_state = 1"]);
     $city_id = $is_open->city_id > 0 ? $is_open->city_id : 0;
     $alllimit = $this->getConfig()->national;
     //属于全国的banner条数
     //获取全国banner
     $banners = $this->getBanner($alllimit, 0);
     //获取属于全国的广告
     $advert = $this->getAdvert(0, null, "addtime desc", "position");
     //获取城市问答
     $limit_q = $this->getConfig()->question;
     $questionlists = $this->getQuestion(0, $limit_q, $userid, "sort DESC");
     //城市未开通
     if (!$city_id) {
         foreach ($advert as $k => $v) {
             $advert[$k]['advertisement_cover'] = PicUrl::ActivityCover($v['advertisement_cover'], $this->getDi());
         }
         $lists['banner'] = $banners;
         $lists['question'] = $questionlists;
         $lists['parlors'] = null;
         $lists['adverts'] = empty($advert) ? null : $advert;
         $this->setResult($lists);
     } else {
         $citylimit = $this->getConfig()->city;
         //获取城市banner
         $citybanner = $this->getBanner($citylimit, $city_id);
         $banners = array_merge($banners, $citybanner);
         //获取城市问答
         if (count($questionlists) < $limit_q) {
             //如果全国的问答条数不足 则查询城市问答补充
             $limit_c = $limit_q - count($questionlists);
             $questionlist = $this->getQuestion($city_id, $limit_c, $userid, "sort DESC");
             $questionlists = array_merge($questionlists, $questionlist);
         }
         /*************************************************获取城市广告**********************************/
         $pos_ids = array_column($advert, 'position');
         //如果没有全国的位置1的广告 则 查询是否有全国位置为1的广告
         if (!in_array(1, $pos_ids)) {
             $temp = $this->getAdvert($city_id, "position = 1", "addtime desc");
             if (count($temp)) {
                 $advert = array_merge($advert, $temp);
             }
         }
         //如果没有全国的位置2的广告 则 查询是否有全国位置为2的广告
         if (!in_array(2, $pos_ids)) {
             $temp = $this->getAdvert($city_id, "position = 2", "addtime desc");
             if (count($temp)) {
                 $advert = array_merge($advert, $temp);
             }
         }
         //如果没有全国的位置3的广告 则 查询是否有全国位置为3的广告
         if (!in_array(3, $pos_ids)) {
             $temp = $this->getAdvert($city_id, "position = 3", "addtime desc");
             if (count($temp)) {
                 $advert = array_merge($advert, $temp);
             }
         }
         $advert = $this->multi_array_sort($advert, 'position');
         foreach ($advert as $k => $v) {
             $advert[$k]['advertisement_cover'] = PicUrl::ActivityCover($v['advertisement_cover'], $this->getDi());
         }
         /*************************************************美容院*****************************************/
         //获取位置固定的美容院
         $parlor = $this->getParlor($city_id, 3, "show_start_time DESC,id DESC", "sort");
         $sortids = array_column($parlor, 'sort');
         if (count($sortids) < 3) {
             //当固定位置的首页推荐美容院不足时,随机获取没有固定位置的推荐数据
             $limit_r = 3 - count($sortids);
             $parlor_r = $this->getParlorRand($city_id, $limit_r);
             $parlor = array_merge($parlor, $parlor_r);
         }
         $parlor = $this->multi_array_sort($parlor, 'sort');
         foreach ($parlor as $k => $v) {
             if ($v) {
                 $parlor[$k]['cover'] = PicUrl::BeautyParlorCover($v['cover'], $this->getDi());
                 $parlor[$k]['medal_verify'] = \Apps\Common\Libs\BeautyParlor::getMedalVerify($v['bp_medal']);
                 unset($parlor[$k]['bp_medal']);
                 $tag = BeautyParlorTag::query()->columns(['i.tag_title'])->leftJoin('Apps\\Common\\Models\\BeautyParlorTagInfo', 'Apps\\Common\\Models\\BeautyParlorTag.tag_id = i.tag_id', 'i')->where('i.tag_state=1 and bp_id=:bid:')->bind(['bid' => $v['id']])->orderBy('sort desc,bp_tag_addtime asc')->execute()->toArray();
                 $tags = array_column($tag, 'tag_title');
                 $parlor[$k]['tags'] = empty($tags) ? null : $tags;
             }
         }
         /***************************************************返回结果集******************************************/
         $lists['banner'] = empty($banners) ? null : $banners;
         $lists['question'] = empty($questionlists) ? null : $questionlists;
         $lists['parlors'] = empty($parlor) ? null : $parlor;
         $lists['adverts'] = empty($advert) ? null : $advert;
         $this->setResult($lists);
     }
 }
Example #9
0
 public function run()
 {
     $id = intval($this->getDataItem('id', 0));
     $user_id = intval($this->getDataItem('user_id', 0));
     if (0 < $id) {
         /**
          * 查询基础信息
          */
         $info = BeautyParlorModel::query()->columns(['bp_id as id', 'bp_name as name', 'bp_cover as cover', 'bp_address as address', 'bp_tel as tel', 'bp_medal as medal', 'bp_intro as intro', 'X(bp_coordinate) latitude', 'Y(bp_coordinate) longitude'])->where('bp_state>0 and bp_id=:id:')->bind(['id' => $id])->execute()->getFirst();
     } else {
         return $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, '参数异常');
     }
     if ($info) {
         $this->parlor['id'] = $info->id;
         $this->parlor['name'] = $info->name;
         $this->parlor['cover'] = $info->cover;
         $this->parlor['address'] = $info->address;
         $this->parlor['tel'] = $info->tel;
         $this->parlor['intro'] = $info->intro;
         $this->parlor['latitude'] = $info->latitude;
         $this->parlor['longitude'] = $info->longitude;
         $this->parlor['medal_refund'] = \Apps\Common\Libs\BeautyParlor::getMedalRefund($info->medal);
         $this->parlor['medal_verify'] = \Apps\Common\Libs\BeautyParlor::getMedalVerify($info->medal);
         /**
          * 增加图片列表
          */
         $pics = BeautyParlorPhotos::query()->columns(['photo_url url'])->where('photo_state>0 and beauty_parlor_id=:bid:')->bind(['bid' => $id])->execute()->toArray();
         $this->parlor['pics'] = [];
         foreach ($pics as $pic) {
             $this->parlor['pics'][] = PicUrl::BeautyParlorPic($pic['url'], $this->getDi());
         }
         /**
          * 增加服务范围列表
          */
         $service = BeautyParlorService::query()->columns(['service_id id', 'service_cover cover', 'service_name name', 'service_price price', 'service_unit unit', 'service_description description'])->where('service_state>0 and service_is_sell = 1 and beauty_parlor_id=:bid:')->bind(['bid' => $id])->execute()->toArray();
         $this->parlor['services'] = [];
         foreach ($service as $d) {
             $d['cover'] = PicUrl::BeautyParlorCover($d['cover'], $this->getDi());
             $unit = $d['unit'];
             unset($d['unit']);
             $d['price_show'] = '';
             if ($d['price'] > 0) {
                 $d['price_show'] = $d['price'] . '元' . ($unit ? '/' . $unit : '');
             }
             $this->parlor['services'][] = $d;
         }
         // 评论总数
         $this->parlor['comment_num'] = BeautyParlorComment::count(['conditions' => 'beauty_parlor_id = :bid: and comment_state = 1', 'bind' => ['bid' => $id]]);
     } else {
         $this->errorLog(ResultStatus::QUERY_DATA_NOT_EXIST, 'ID不存在');
     }
     $this->parlor['favorite_num'] = BpFavorites::count(['conditions' => "bp_id = " . $this->parlor['id']]);
     if ($user_id != '') {
         $is_favorite = BpFavorites::findFirst("user_id = {$user_id} and bp_id =" . $this->parlor['id']);
         /* var_dump($is_favorite);
            exit; */
         if ($is_favorite) {
             $this->parlor['is_favorite'] = 1;
             //已收藏
         } else {
             $this->parlor['is_favorite'] = 0;
             //未收藏
         }
     } else {
         $this->parlor['is_favorite'] = 0;
     }
     $this->setResult($this->parlor);
 }
Example #10
0
 public function run()
 {
     //先验证城市是否开通 modify by tanjinyun 2016/01/11
     $city_code = $this->getDataItem('city_code');
     if ($city_code == null || $city_code == '') {
         return $this->errorLog(ResultStatus::POST_BODY_PARAM_ERROR, "城市编码为空");
         exit;
     }
     $is_open = SysOpenCity::findFirst(['columns' => "city_id", 'conditions' => "city_code = {$city_code} AND city_state = 1"]);
     if (!$is_open->city_id > 0) {
         return $this->errorLog(ResultStatus::CITY_NOT_OPEN, "城市未开通");
         exit;
     }
     $longitude = $this->getDataItem('longitude', 0);
     $latitude = $this->getDataItem('latitude', 0);
     $page = intval($this->getDataItem('page', 1));
     $medal = intval($this->getDataItem('medal', 0));
     $keyword = trim($this->getDataItem('keyword', null));
     $limit = $this->getConfig()->limit;
     //                $longitude = 106.515605;
     //                $latitude = 29.539727;
     $config = $this->getDi()->get('appConfig')->amap->lbs_cloud;
     $key = $config->key;
     $signKey = $config->sign_key;
     $tableId = $config->table_id;
     $syncLogTableName = 'beauty_parlor_amap_sync_log';
     //v2.0新增 筛选
     $filter = $medal == 1 ? "medal_verify:1" : null;
     $keywords = $keyword != null ? $keyword : null;
     $lbs = new LBSCloud($key, $signKey, $tableId, $syncLogTableName);
     $result = $lbs->around($latitude, $longitude, $limit, $page, $filter, $keywords);
     if ($result->status) {
         //         	var_dump($result);exit;
         foreach ($result->response as $data) {
             /**
              * modify by jinyu
              * 查询美容院扩展信息
              */
             $info = BeautyParlorAttr::query()->columns(['b.bp_id', 'b.bp_name', 'b.bp_address', 'b.bp_cover', 'b.bp_tel', 'b.bp_medal', 'open_time', 'close_time', 'low_price', 'open_year', 'shop_area', 'service_num', 'facilities'])->rightJoin('Apps\\Common\\Models\\BeautyParlor', 'b.bp_id = Apps\\Common\\Models\\BeautyParlorAttr.beauty_parlor_id', 'b')->where('beauty_parlor_id=:bp_id: AND bp_state >0')->bind(['bp_id' => $data['bp_id']])->execute()->getFirst();
             if ($info) {
                 $this->parlors[] = ['id' => $info['bp_id'], 'name' => $info['bp_name'], 'cover' => PicUrl::BeautyParlorCover($info['bp_cover'], $this->getDi()), 'address' => $info['bp_address'], 'tel' => $info['bp_tel'], 'tags' => $this->formatTagsV2($info['bp_id']), 'distance' => $this->formatDistance($data['_distance']), 'medal_verify' => \Apps\Common\Libs\BeautyParlor::getMedalVerify($info['bp_medal']), 'open_time' => $info['open_time'] == null ? '' : $info['open_time'], 'close_time' => $info['close_time'] == null ? '' : $info['close_time'], 'low_price' => $info['low_price'] == null ? '' : $info['low_price'], 'open_year' => $info['open_year'] == null ? '' : $info['open_year'], 'shop_area' => $info['shop_area'] == null ? '' : $info['shop_area'], 'service_num' => $info['service_num'] == null ? '' : $info['service_num'], 'facilities' => $info['facilities'] == null ? null : (json_decode($info['facilities']) ?: null)];
             } else {
                 continue;
             }
         }
     }
     /**
      * 第一页获取banner
      */
     if ($page == 1) {
         $banner = OmBanner::query()->columns(['banner_data'])->where('state = 1 AND banner_name =3 AND city_id =:city_id:')->bind(['city_id' => $is_open->city_id])->execute()->toArray();
         foreach ($banner as $k => $v) {
             $data = json_decode($v['banner_data']);
             $temp[$k]['url'] = PicUrl::DefaultPics($data->url, $this->getDi());
             $temp[$k]['link_type'] = $data->link_type;
             $temp[$k]['link_data'] = !empty(json_decode($data->link_data)) ? json_decode($data->link_data) : null;
         }
     }
     $list['banner'] = $temp;
     $list['parlors'] = empty($this->parlors) ? null : $this->parlors;
     $this->setResult($list);
 }
Example #11
0
 public function run()
 {
     $id = intval($this->getDataItem('id', 0));
     $user_id = intval($this->getDataItem('user_id', 0));
     if (0 < $id) {
         /**
          * 查询基础信息
          */
         $info = BeautyParlorModel::query()->columns(['bp_id as id', 'bp_name as name', 'bp_cover as cover', 'bp_address as address', 'bp_tel as tel', 'bp_medal as medal', 'bp_intro as intro', 'X(bp_coordinate) latitude', 'Y(bp_coordinate) longitude', 'bpa.open_time', 'bpa.close_time', 'bpa.low_price', 'bpa.open_year', 'bpa.shop_area', 'bpa.service_num', 'bpa.facilities'])->leftJoin('Apps\\Common\\Models\\BeautyParlorAttr', 'Apps\\Common\\Models\\BeautyParlor.bp_id = bpa.beauty_parlor_id', 'bpa')->where('Apps\\Common\\Models\\BeautyParlor.bp_state>0 and Apps\\Common\\Models\\BeautyParlor.bp_id=:id:')->bind(['id' => $id])->execute()->getFirst();
     } else {
         return $this->errorLog(ResultStatus::URL_PARAM_CANNOT_EMPTY, '参数异常');
     }
     if ($info) {
         $this->parlor['id'] = $info->id;
         $this->parlor['name'] = $info->name;
         $this->parlor['cover'] = PicUrl::BeautyParlorCover($info->cover, $this->getDi());
         $this->parlor['address'] = $info->address;
         $this->parlor['tel'] = $info->tel;
         $this->parlor['intro'] = $info->intro;
         $this->parlor['latitude'] = $info->latitude;
         $this->parlor['longitude'] = $info->longitude;
         $this->parlor['medal_refund'] = \Apps\Common\Libs\BeautyParlor::getMedalRefund($info->medal);
         $this->parlor['medal_verify'] = \Apps\Common\Libs\BeautyParlor::getMedalVerify($info->medal);
         $this->parlor['open_time'] = $info->open_time == null ? '' : $info->open_time;
         $this->parlor['close_time'] = $info->close_time == null ? '' : $info->close_time;
         $this->parlor['low_price'] = $info->low_price == null ? '' : $info->low_price;
         $this->parlor['open_year'] = $info->open_year == null ? '' : $info->open_year;
         $this->parlor['shop_area'] = $info->shop_area == null ? '' : $info->shop_area;
         $this->parlor['facilities'] = $info->facilities == null ? [] : (json_decode($info->facilities) ?: []);
         $this->parlor['pics'] = [];
         $this->parlor['services'] = [];
         /**
          * 增加图片列表 如果深度验店 
          */
         if ($this->parlor['medal_verify']) {
             $pics = BeautyParlorPhotos::query()->columns(['photo_url url'])->where('photo_state>0 and beauty_parlor_id=:bid:')->bind(['bid' => $id])->execute()->toArray();
             foreach ($pics as $pic) {
                 $this->parlor['pics'][] = PicUrl::BeautyParlorPic($pic['url'], $this->getDi());
             }
             /**
              * 增加服务范围列表
              */
             $service = BeautyParlorService::query()->columns(['service_id id', 'service_cover cover', 'service_name name', 'service_price price', 'service_unit unit', 'service_description description'])->where('service_state>0 and service_is_sell = 1 and beauty_parlor_id=:bid:')->bind(['bid' => $id])->limit(3, 0)->execute()->toArray();
             foreach ($service as $d) {
                 $d['cover'] = PicUrl::BeautyParlorCover($d['cover'], $this->getDi());
                 $unit = $d['unit'];
                 unset($d['unit']);
                 $d['price_show'] = '';
                 if ($d['price'] > 0) {
                     $d['price_show'] = $d['price'] . '元' . ($unit ? '/' . $unit : '');
                 }
                 $this->parlor['services'][] = $d;
             }
         }
         /**
          * 增加tag列表
          */
         $tag = BeautyParlorTag::query()->columns(['i.tag_title'])->leftJoin('Apps\\Common\\Models\\BeautyParlorTagInfo', 'Apps\\Common\\Models\\BeautyParlorTag.tag_id = i.tag_id', 'i')->where('i.tag_state=1 and bp_id=:bid:')->bind(['bid' => $id])->orderBy('sort desc,bp_tag_addtime asc')->execute()->toArray();
         $this->parlor['tags'] = $tag;
         // 评论总数
         $this->parlor['comment_num'] = BeautyParlorComment::count(['conditions' => 'beauty_parlor_id = :bid: and comment_state = 1', 'bind' => ['bid' => $id]]);
         //获取3条评论
         $comments = BeautyParlorComment::query()->columns(['u.user_id', 'u.user_nickname', 'u.user_cover', 'u.user_gender', 'u.user_expert', 'Apps\\Common\\Models\\BeautyParlorComment.comment_id as comment_id', 'Apps\\Common\\Models\\BeautyParlorComment.comment_info as comment_info', 'Apps\\Common\\Models\\BeautyParlorComment.comment_photos as comment_photos', 'Apps\\Common\\Models\\BeautyParlorComment.comment_floor as comment_floor', 'Apps\\Common\\Models\\BeautyParlorComment.comment_addtime as addtime'])->leftJoin('Apps\\Common\\Models\\UserBase', 'Apps\\Common\\Models\\BeautyParlorComment.user_id=u.user_id', 'u')->where('Apps\\Common\\Models\\BeautyParlorComment.beauty_parlor_id=' . $id . ' and Apps\\Common\\Models\\BeautyParlorComment.comment_state = 1')->orderBy('Apps\\Common\\Models\\BeautyParlorComment.comment_addtime desc')->limit(3, 0)->execute()->toArray();
         foreach ($comments as $arr) {
             $arr['user_cover'] = PicUrl::UserCover($arr['user_cover'], $this->getDi());
             $arr['comment_photos'] = PicUrl::BeautyParlorComment(json_decode($arr['comment_photos']), $this->getDi());
             if (unserialize(base64_decode($arr['comment_info']))) {
                 $arr['comment_info'] = unserialize(base64_decode($arr['comment_info']));
             }
             $data[] = $arr;
         }
         $this->parlor['comments'] = $data;
     } else {
         return $this->errorLog(ResultStatus::QUERY_DATA_NOT_EXIST, 'ID不存在');
     }
     $this->parlor['favorite_num'] = BpFavorites::count(['conditions' => "bp_id = " . $this->parlor['id']]);
     if ($user_id != '') {
         $is_favorite = BpFavorites::findFirst("user_id = {$user_id} and bp_id =" . $this->parlor['id']);
         /* var_dump($is_favorite);
            exit; */
         if ($is_favorite) {
             $this->parlor['is_favorite'] = 1;
             //已关注
         } else {
             $this->parlor['is_favorite'] = 0;
             //未关注
         }
     } else {
         $this->parlor['is_favorite'] = 0;
     }
     $this->setResult($this->parlor);
 }
Example #12
0
 /**
  * 美容院服务
  */
 public function beautyParlorServiceAction()
 {
     $id = $this->request->getQuery('id');
     if (empty($id)) {
         echo '美容院服务项目不存在!';
         $this->view->disable();
         return;
     }
     $service = BeautyParlorService::query()->columns(['service_id as id', 'service_cover cover', 'service_name as name', 'service_price as price', 'service_unit as price_show', 'service_description as description', 'service_intro as intro', 'beauty_parlor_id as bp_id'])->where('service_state>0 and service_id=:id:')->bind(['id' => $id])->execute()->getFirst();
     if (!$service) {
         echo '美容院服务项目不存在!';
         $this->view->disable();
         return;
     }
     $data = ['id' => $service->id, 'cover' => PicUrl::BeautyParlorCover($service->cover, $this->getDi()), 'name' => $service->name, 'price' => $service->price, 'description' => $service->description, 'intro' => \Apps\Common\Libs\BeautyParlor::formatServiceIntro($service->intro, $this->di)];
     if ($service->price > 0) {
         $unit = $service->price_show;
         $data['price_show'] = $service->price . '元' . ($unit ? '/' . $unit : '');
     }
     $data['beauty_parlor'] = BeautyParlor::query()->columns(['bp_id as id', 'bp_name as name', 'bp_medal as medal'])->where('bp_id=:id:')->bind(['id' => $service->bp_id])->execute()->getFirst();
     $this->view->setVar('service', $data);
     $this->tag->setTitle($data['beauty_parlor']->name);
 }