model = new Service(); $this->banner_model = new Banner(); $this->car_model = new Car(); $this->coach_model = new Coach(); $this->admin_model = new \app\massage\model\Admin(); } /** * @author chenniang * @DataTime: 2021-03-23 09:20 * @功能说明:首页 */ public function index(){ $input = $this->_param; $dis = [ 'uniacid' => $this->_uniacid, 'status' => 1 ]; $data['banner'] = $this->banner_model->where($dis)->field('id,img,link,type_id,connect_type')->order('top desc,id desc')->select()->toArray(); $cate_model = new CateList(); $data['service_cate'] = $cate_model->where($dis)->field('title,id,cover')->order('top desc,id desc')->select()->toArray(); //判断插件权限没有返回空 $config_model = new ConfigSetting(); $config = $config_model->dataInfo($this->_uniacid,['recommend_style','coach_apply_show','auto_recommend']); $data = array_merge($data,$config); if(!empty(['recommend'])||['recommend']==true){ $where[] = ['uniacid','=',$this->_uniacid]; $where[] = ['status','=',2]; $where[] = ['auth_status','=',2]; $where[] = ['is_work','=',1]; // $where[] = ['user_id','>',0]; if(!empty($input['city_id'])){ $where[] = ['city_id','=',$input['city_id']]; } if(!empty($this->getUserId())){ $shield_coach = $this->coach_model->getShieldCoach($this->getUserId()); if(!empty($shield_coach)){ $where[] = ['id','not in',$shield_coach]; } } $lat = !empty($input['lat'])?$input['lat']:0; $lng = !empty($input['lng'])?$input['lng']:0; $alh = 'ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((lat * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((lat * 3.1415) / 180 ) *COS(('.$lng.' * 3.1415) / 180 - (lng * 3.1415) / 180 ) ) * 6378.137*1000 as distance'; //手动推荐 if($data['auto_recommend']==0){ $list = $this->coach_model->coachRecommendSelect($where,$alh); }else{ //自动推荐 $list = $this->coach_model->aotuCoachRecommendSelect($where,$alh); } if(!empty($list)){ $order_model = new Order(); //最近七天注册 $seven = $this->model->getSaleTopSeven($this->_uniacid); foreach ($list as &$v){ //是否是新人 $v['is_new'] = in_array($v['id'],$seven)?1:0; //近30天单量 $v['order_count'] = $order_model->where(['coach_id' => $v['id'], 'pay_type' => 7])->whereTime('create_time','-30 days')->count(); } } $data['recommend_list'] = $list; } return $this->success($data); } /** * @author chenniang * @DataTime: 2021-03-15 14:43 * @功能说明:服务列表 */ public function serviceList(){ $input = $this->_param; $dis[] = ['uniacid','=',$this->_uniacid]; $dis[] = ['status','=',1]; $dis[] = ['type','=',1]; $dis[] = ['check_status','=',2]; $dis[] = ['is_add','=',0]; if(!empty($input['cate_id'])){ $cate_model = new CateConnect(); $id = $cate_model->where(['cate_id'=>$input['cate_id']])->column('service_id'); $dis[] = ['id','in',$id]; } if(!empty($input['name'])){ $dis[] = ['title','like','%'.$input['name'].'%']; } if(!empty($input['title'])){ $dis[] = ['title','like','%'.$input['title'].'%']; } $input['sort'] = !empty($input['sort'])?$input['sort']:'top desc'; $data = $this->model->indexDataList($dis,10,$input['sort']); return $this->success($data); } /** * @author chenniang * @DataTime: 2021-03-15 14:58 * @功能说明:审核详情 */ public function serviceInfo(){ $input = $this->_param; $dis = [ 'id' => $input['id'] ]; $data = $this->model->dataInfo($dis); return $this->success($data); } /** * @author chenniang * @DataTime: 2021-03-23 14:16 * @功能说明:获取配置信息 */ public function configInfo(){ $dis = [ 'uniacid' => $this->_uniacid ]; $config_model = new Config(); $config_model->dataInfo($dis); $arr = 'agent_article_id,bus_end_time,uniacid,appsecret,app_app_secret,appid,app_app_id,web_app_id,web_app_secret,gzh_appid,order_tmp_id,cancel_tmp_id,max_day,time_unit,service_cover_time,can_tx_time,company_pay,short_id,short_secret'; $config = $config_model->where($dis)->withoutField($arr)->find()->toArray(); $pay_config_model = new PayConfig(); $pay_config = $pay_config_model->dataInfo($dis); $config['alipay_status'] = $pay_config['alipay_status']; $short_config_model = new ShortCodeConfig(); $short_config = $short_config_model->dataInfo($dis); $config['short_code_status'] = $short_config['short_code_status']; //代理商文章标题 if(!empty($config['agent_article_id'])){ $article_model = new ArticleList(); $config['agent_article_title'] = $article_model->where(['id'=>$config['agent_article_id']])->value('title'); } $config_model = new ConfigSetting(); $data = $config_model->dataInfo($this->_uniacid,['order_contact_coach','service_recording_show','coach_level_show','attendant_name','service_start_recording','service_end_recording','coach_apply_show','recharge_status','recommend_style','coach_format','wechat_transfer','alipay_transfer','under_transfer']); $config = array_merge($config,$data); $auth = AdminMenu::getAuthList((int)$this->_uniacid,['dynamic','recommend','store','map','recording']); $config_model = new MassageConfig(); $config_data = $config_model->dataInfo(['uniacid'=>$this->_uniacid]); $auth['dynamic'] = !empty($config_data['dynamic_status'])?$auth['dynamic']:0; $config['plugAuth'] = $auth; $config['login_set'] = []; return $this->success($config); } /** * @author chenniang * @DataTime: 2021-07-11 17:12 * @功能说明:技师的服务列表 */ public function coachServiceList(){ $input = $this->_param; $dis[] = ['a.uniacid','=',$this->_uniacid]; $dis[] = ['a.status','=',1]; $dis[] = ['a.check_status','=',2]; if(!empty($input['coach_id'])){ $dis[] = ['b.coach_id','=',$input['coach_id']]; } $is_add = !empty($input['is_add'])?$input['is_add']:0; $dis[] = ['a.is_add','=',$is_add]; //判断插件权限没有返回空 $auth = AdminMenu::getAuthList((int)$this->_uniacid,['store']); if(empty($auth['store'])){ $dis[] = ['a.type','=',1]; } $data['data'] = $this->model->serviceCoachList($dis); $data['car_price'] = $data['car_count'] = 0; if(!empty($data['data'])){ $car_model = new Car(); $store_model = new StoreList(); foreach ($data['data'] as $k=>&$v){ //代理商服务 服务的代理商和技师关联门店的代理商必须相同 if($v['type']==2&&!empty($input['coach_id'])){ $coach_id = $store_model->getAdminStoreCoach($v['admin_id']); if(!in_array($input['coach_id'],$coach_id)){ unset($data['data'][$k]); continue; } } $dis = [ 'service_id' => $v['id'], 'coach_id' => $input['coach_id'], 'user_id' => $this->getUserId(), 'status' => 1, // 'order_id' => 0 ]; $car_info = $car_model->dataInfo($dis); $v['car_id'] = !empty($car_info)?$car_info['id']:0; $v['car_num'] = !empty($car_info)?$car_info['num']:0; if(!empty($car_info)){ $data['car_price'] += $v['price']*$v['car_num']; $data['car_count'] += $v['car_num']; } } } return $this->success($data); } /** * @author chenniang * @DataTime: 2021-07-07 10:21 * @功能说明:服务技师列表 */ public function serviceCoachList(){ $input = $this->_param; $dis[] = ['a.uniacid','=',$this->_uniacid]; $dis[] = ['a.status','=',2]; $dis[] = ['auth_status','=',2]; $dis[] = ['a.is_work','=',1]; // $dis[] = ['a.user_id','>',0]; if(!empty($input['ser_id'])){ $dis[] = ['b.ser_id','=',$input['ser_id']]; } if(!empty($input['coach_name'])){ $dis[] = ['a.coach_name','like','%'.$input['coach_name'].'%']; } if(!empty($input['city_id'])){ $dis[] = ['a.city_id','=',$input['city_id']]; } if(!empty($input['sex'])){ $dis[] = ['a.sex','=',$input['sex']]; } if(!empty($input['work_time_start'])&&!empty($input['work_time_end'])){ $dis[] = ['a.work_time','between',"{$input['work_time_start']},{$input['work_time_end']}"]; } if(!empty($input['cate_id'])){ $cate_model = new CateConnect(); $id = $cate_model->where(['cate_id'=>$input['cate_id']])->column('service_id'); $dis[] = ['b.ser_id','in',$id]; } if(!empty($input['store_id'])){ $store_model = new \app\store\model\StoreList(); $store_coach_id = $store_model->getStoreCoachId($input['store_id']); $dis[] = ['a.id','in',$store_coach_id]; } //服务中 $working_coach = $this->coach_model->getWorkingCoach($this->_uniacid); //当前时间不可预约 $cannot = CoachTimeList::getCannotCoach($this->_uniacid); $working_coach = array_diff($working_coach,$cannot); //如果登录不返回被屏蔽的技师 if(!empty($this->getUserId())){ $shield_coach = $this->coach_model->getShieldCoach($this->getUserId()); if(!empty($input['service_time'])){ //服务中 $working_coach = $this->coach_model->getWorkingCoach($this->_uniacid,$input['service_time']); //当前时间不可预约 $cannot = CoachTimeList::getCannotCoach($this->_uniacid,$input['service_time']); $working_coach = array_merge($working_coach,$cannot); $shield_coach = array_merge($working_coach,$shield_coach); } if(!empty($shield_coach)){ $dis[] = ['a.id','not in',$shield_coach]; } } //可服务不可服务 if(!empty($input['type'])){ //可服务 if($input['type']==1){ $array = array_merge($working_coach,$cannot); $dis[] = ['a.id','not in',$array]; }elseif($input['type']==2){//服务中 $dis[] = ['a.id','in',$working_coach]; }elseif ($input['type']==3){//可预约 $dis[] = ['a.id','in',$cannot]; } } $lat = !empty($input['lat'])?$input['lat']:0; $lng = !empty($input['lng'])?$input['lng']:0; $alh = 'ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((a.lat * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((a.lat * 3.1415) / 180 ) *COS(('.$lng.' * 3.1415) / 180 - (a.lng * 3.1415) / 180 ) ) * 6378.137*1000 as distance'; $data = $this->coach_model->serviceCoachList($dis,$alh); if(!empty($data['data'])){ $collect_model= new CoachCollect(); $config_model = new Config(); $coach_model = new Coach(); $store_model = new StoreList(); $config= $config_model->dataInfo(['uniacid'=>$this->_uniacid]); //销冠 $top = $this->model->getSaleTopOne($this->_uniacid); //销售单量前5 $five = $this->model->getSaleTopFive($this->_uniacid,$top); //最近七天注册 $seven = $this->model->getSaleTopSeven($this->_uniacid); $user_id = !empty($this->getUserId())?$this->getUserId():0; $collect = $collect_model->where(['user_id'=>$user_id])->column('coach_id'); foreach ($data['data'] as &$v){ $v['store'] = $store_model->where(['id'=>$v['store_id'],'status'=>1])->field('id,title')->find(); $v['is_collect'] = in_array($v['id'],$collect)?1:0; $v['near_time'] = $coach_model->getCoachEarliestTime($v['id'],$config); if (in_array($v['id'],$working_coach)){ $text_type = 2; }elseif (!in_array($v['id'],$cannot)){ $text_type = 1; }else{ $text_type = 3; } $v['text_type'] = $text_type; if($v['id']==$top){ $v['coach_type_status'] = 1; }elseif (in_array($v['id'],$five)){ $v['coach_type_status'] = 2; }elseif (in_array($v['id'],$seven)){ $v['coach_type_status'] = 3; }else{ $v['coach_type_status'] = 0; } } } return $this->success($data); } /** * @author chenniang * @DataTime: 2023-05-15 17:00 * @功能说明:代理商详情 */ public function agentInfo(){ $input = $this->_param; $admin_model = new \app\massage\model\Admin(); $data = $admin_model->where(['id'=>$input['admin_id']])->field('agent_name,id,license')->find(); return $this->success($data); } /** * @author chenniang * @DataTime: 2023-02-21 17:03 * @功能说明:第二中板式第技师列表 */ public function typeServiceCoachList(){ $input = $this->_param; $dis[] = ['a.uniacid','=',$this->_uniacid]; $dis[] = ['a.status','=',2]; $dis[] = ['auth_status','=',2]; // $dis[] = ['a.user_id','>',0]; if(!empty($input['ser_id'])){ $dis[] = ['b.ser_id','=',$input['ser_id']]; } if(!empty($input['coach_name'])){ $dis[] = ['a.coach_name','like','%'.$input['coach_name'].'%']; } if(!empty($input['store_id'])){ $dis[] = ['a.store_id','=',$input['store_id']]; } if(!empty($input['sex'])){ $dis[] = ['a.sex','=',$input['sex']]; } if(!empty($input['city_id'])){ $dis[] = ['a.city_id','=',$input['city_id']]; } if(!empty($input['work_time_start'])&&!empty($input['work_time_end'])){ $dis[] = ['a.work_time','between',"{$input['work_time_start']},{$input['work_time_end']}"]; } if(!empty($input['cate_id'])){ $cate_model = new CateConnect(); $id = $cate_model->where(['cate_id'=>$input['cate_id']])->column('service_id'); $dis[] = ['b.ser_id','in',$id]; } $this->coach_model->setIndexTopCoach($this->_uniacid); //如果登录不返回被屏蔽的技师 if(!empty($this->getUserId())){ $shield_coach = $this->coach_model->getShieldCoach($this->getUserId()); if(!empty($input['service_time'])){ //服务中 $working_coach = $this->coach_model->getWorkingCoach($this->_uniacid,$input['service_time']); //当前时间不可预约 $cannot = CoachTimeList::getCannotCoach($this->_uniacid,$input['service_time']); $working_coach = array_merge($working_coach,$cannot); $shield_coach = array_merge($working_coach,$shield_coach); } if(!empty($shield_coach)){ $dis[] = ['a.id','not in',$shield_coach]; } } $lat = !empty($input['lat'])?$input['lat']:0; $lng = !empty($input['lng'])?$input['lng']:0; $alh = 'ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((a.lat * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((a.lat * 3.1415) / 180 ) *COS(('.$lng.' * 3.1415) / 180 - (a.lng * 3.1415) / 180 ) ) * 6378.137*1000 as distance'; $data = $this->coach_model->typeServiceCoachList($dis,$alh); if(!empty($data['data'])){ $collect_model= new CoachCollect(); $config_model = new Config(); $coach_model = new Coach(); $store_model = new StoreList(); $config= $config_model->dataInfo(['uniacid'=>$this->_uniacid]); //销冠 $top = $this->model->getSaleTopOne($this->_uniacid); //销售单量前5 $five = $this->model->getSaleTopFive($this->_uniacid,$top); //最近七天注册 $seven = $this->model->getSaleTopSeven($this->_uniacid); $user_id = !empty($this->getUserId())?$this->getUserId():0; $collect = $collect_model->where(['user_id'=>$user_id])->column('coach_id'); foreach ($data['data'] as &$v){ $v['store'] = $store_model->where(['id'=>$v['store_id'],'status'=>1])->field('id,title')->find(); $v['is_collect'] = in_array($v['id'],$collect)?1:0; $v['near_time'] = $coach_model->getCoachEarliestTime($v['id'],$config); if ($v['is_work']==0){ $text_type = 4; }elseif ($v['index_top']==1){ $text_type = 1; }else{ $text_type = 3; } $v['text_type'] = $text_type; if($v['id']==$top){ $v['coach_type_status'] = 1; }elseif (in_array($v['id'],$five)){ $v['coach_type_status'] = 2; }elseif (in_array($v['id'],$seven)){ $v['coach_type_status'] = 3; }else{ $v['coach_type_status'] = 0; } } } return $this->success($data); } /** * @author chenniang * @DataTime: 2021-03-24 14:07 * @功能说明:购物车信息 */ public function carInfo(){ $input = $this->_param; $order_id = !empty($input['order_id'])?$input['order_id']:0; //购物车信息 $car_info = $this->car_model->carPriceAndCount($this->getUserId(),$input['coach_id'],1,$order_id); return $this->success($car_info); } /** * @author chenniang * @DataTime: 2021-07-23 09:48 * @功能说明:再来一单 */ public function onceMoreOrder(){ $input = $this->_input; $order_model = new Order(); $order = $order_model->dataInfo(['id'=>$input['order_id']]); $coach = $this->coach_model->dataInfo(['id'=>$order['coach_id']]); if($coach['status']!=2||$coach['is_work']==0){ $this->errorMsg('技师未上班'); } //清空购物车 $this->car_model->where(['user_id'=>$this->getUserId(),'coach_id'=>$order['coach_id']])->delete(); Db::startTrans(); foreach ($order['order_goods'] as $v){ $ser = $this->model->dataInfo(['id'=>$v['goods_id']]); if(empty($ser)||$ser['status']!=1){ Db::rollback(); $this->errorMsg('服务已经下架'); } $dis = [ 'user_id' => $this->getUserId(), 'uniacid' => $this->_uniacid, 'coach_id' => $order['coach_id'], 'service_id'=> $v['goods_id'], 'num' => $v['num'] ]; $res = $this->car_model->dataAdd($dis); } Db::commit(); return $this->success($res); } /** * @author chenniang * @DataTime: 2021-03-24 14:46 * @功能说明:添加到购物车 */ public function addCar(){ $input = $this->_input; $order_id = !empty($input['order_id'])?$input['order_id']:0; $insert = [ 'uniacid' => $this->_uniacid, 'user_id' => $this->getUserId(), 'coach_id' => $input['coach_id'], 'service_id'=> $input['service_id'], 'order_id' => $order_id, ]; //目前只能加钟一个 if(!empty($order_id)){ // $this->car_model->where(['order_id'=>$order_id])->delete(); } //从服务详情直接下单 if(!empty($input['coach_service'])){ $this->car_model->where(['coach_id'=>$input['coach_id']])->delete(); } $info = $this->car_model->dataInfo($insert); //增加数量 if(!empty($info)){ if(!empty($input['is_top'])){ return $this->success(1); } $res = $this->car_model->dataUpdate(['id'=>$info['id']],['num'=>$info['num']+$input['num']]); }else{ //添加到购物车 $insert['num'] = $input['num']; $insert['status'] = 1; $res = $this->car_model->dataAdd($insert); $id = $this->car_model->getLastInsID(); return $this->success($id); } return $this->success($res); } /** * @author chenniang * @DataTime: 2021-03-24 14:54 * @功能说明:删除购物车 */ public function delCar(){ $input = $this->_input; $info = $this->car_model->dataInfo(['id'=>$input['id']]); //加少数量 if(!empty($info)&&$info['num']>$input['num']){ $res = $this->car_model->dataUpdate(['id'=>$info['id']],['num'=>$info['num']-$input['num']]); }else{ $res = $this->car_model->where(['id'=>$info['id']])->delete(); } return $this->success($res); } /** * @author chenniang * @DataTime: 2021-03-25 10:39 * @功能说明: */ public function carUpdate(){ $input = $this->_input; $res = $this->car_model->where('id','in',$input['id'])->update(['status'=>$input['status']]); return $this->success($res); } /** * @author chenniang * @DataTime: 2021-03-24 14:59 * @功能说明:批量删除购物车 */ public function delSomeCar(){ $input = $this->_input; $dis = [ 'uniacid' => $this->_uniacid, 'user_id' => $this->getUserId(), 'coach_id'=> $input['coach_id'], ]; $res = $this->car_model->where($dis)->delete(); return $this->success($res); } /** * @author chenniang * @DataTime: 2021-07-05 23:16 * @功能说明:评价列表 */ public function commentList(){ $input = $this->_param; $dis[] = ['a.uniacid','=',$this->_uniacid]; $dis[] = ['a.status','=',1]; if(!empty($input['coach_id'])){ $dis[] = ['d.id','=',$input['coach_id']]; } if(!empty($input['coach_name'])){ $dis[] = ['d.coach_name','like','%'.$input['coach_name'].'%']; } if(!empty($input['goods_name'])){ $dis[] = ['c.goods_name','like','%'.$input['goods_name'].'%']; } $comment_model = new Comment(); $config_model = new Config(); $data = $comment_model->dataList($dis); $anonymous_evaluate = $config_model->where(['uniacid'=>$this->_uniacid])->value('anonymous_evaluate'); if(!empty($data['data'])){ foreach ($data['data'] as &$v){ $v['create_time'] = date('Y-m-d H:i:s',$v['create_time']); //开启匿名评价 if($anonymous_evaluate==1||$v['user_id']==0){ $v['nickName'] = '匿名用户'; $v['avatarUrl']= 'https://lbqny.migugu.com/admin/farm/default-user.png'; } } } return $this->success($data); } /** * @author chenniang * @DataTime: 2021-03-15 14:58 * @功能说明:技师详情 */ public function coachInfo(){ $input = $this->_param; $dis = [ 'id' => $input['id'] ]; $data = $this->coach_model->where($dis)->withoutField('id_card,id_code,mobile,service_price')->find()->toArray(); $user_model = new User(); $data['nickName'] = $user_model->where(['id'=>$data['user_id']])->value('nickName'); $city_model = new City(); $data['city'] = $city_model->where(['id'=>$data['city_id']])->value('title'); $shield_model = new ShieldList(); //是否拉黑 $shield = $shield_model->where(['user_id'=>$this->_user['id'],'coach_id'=>$data['id']])->where('type','in',[2,3])->find(); $data['is_shield'] = !empty($shield)?1:0; $store_model = new StoreList(); //门店名字 $data['store_name'] = $store_model->where(['id'=>$data['store_id'],'status'=>1])->value('title'); $config_model = new Config(); $config= $config_model->dataInfo(['uniacid'=>$this->_uniacid]); //最早可预约时间 $data['near_time'] = $this->coach_model->getCoachEarliestTime($data['id'],$config); //服务状态 $data['text_type'] = $this->coach_model->getCoachWorkStatus($data['id'],$this->_uniacid); //生日 $data['year'] = !empty($data['birthday'])?floor((time()-$data['birthday'])/(86400*365)):0; $data['order_num'] += $data['total_order_num']; return $this->success($data); } /** * @author chenniang * @DataTime: 2022-02-28 11:50 * @功能说明:获取腾讯地图信息 */ public function getMapInfo(){ $input = $this->_param; $dis = [ 'uniacid' => $this->_uniacid ]; $config_model = new Config(); $config = $config_model->dataInfo($dis); $key = $input['location']; $data = getCache($key,$this->_uniacid); if(empty($data)){ $url = 'https://apis.map.qq.com/ws/geocoder/v1/?location='; $url = $url.$input['location'].'&key='.$config['map_secret']; $data = longbingCurl($url,[]); $data_arr = json_decode($data,true); if(!empty($data_arr['message'])&&$data_arr['message']=='Success'){ setCache($key,$data,300,$this->_uniacid); }else{ $msg = !empty($data_arr['message'])?$data_arr['message']:'定位失败'; $this->errorMsg($msg); } } return $this->success($data); } public function getMapInfodidian(){ $input = $this->_param; $dis = [ 'uniacid' => $this->_uniacid ]; $config_model = new Config(); $config = $config_model->dataInfo($dis); $key = $input['location']; // $url = 'https://apis.map.qq.com/ws/place/v1/suggestion?keyword='; $url = 'https://apis.map.qq.com/ws/geocoder/v1/?address='; $url = $url.$input['location'].'&key='.$config['map_secret']; $data = longbingCurl($url,[]); $data_arr = json_decode($data,true); if(!empty($data_arr['message'])&&$data_arr['message']=='Success'){ return $this->success($data_arr['result']); }else{ $msg = !empty($data_arr['message'])?$data_arr['message']:'定位失败'; $this->errorMsg($msg); } } /** * @author chenniang * @DataTime: 2022-06-15 15:48 * @功能说明:获取 */ public function getCity(){ $input = $this->_param; $city_model = new City(); $dis[] = ['uniacid','=',$this->_uniacid]; $dis[] = ['status','=',1]; $dis[] = ['city_type','=',1]; $lat = $input['lat']; $lng = $input['lng']; $alh = 'ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((lat * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((lat * 3.1415) / 180 ) *COS(('.$lng.' * 3.1415) / 180 - (lng * 3.1415) / 180 ) ) * 6378.137*1000 as distance'; $data = $city_model->where($dis)->field(['id,title,lat,lng',$alh])->order('distance asc,id desc')->select()->toArray(); if(!empty($data)){ $key_find = getConfigSetting($this->_uniacid,'index_city_find'); //是否必须定位到当前城市 if($key_find==1){ $keys = round($lng,3).'-'.round($lat,3); $city = getCache($keys,$this->_uniacid); if(empty($city)){ $city = getCityByLongLat($lng,$lat,$this->_uniacid); if(!empty($city)){ setCache($keys,$city,864000,$this->_uniacid); } } $key = array_search($city, array_column($data, 'city')); if(isset($key)&&is_numeric($key)){ $data[$key]['is_select'] = 1; } }else{ $data[0]['is_select'] = 1; } } if(empty($lat)){ $key = 'articleJsapiTicket-'; $keys= 'articleToken-'; setCache($key,'',1,$this->_uniacid); setCache($keys,'',1,$this->_uniacid); } return $this->success($data); } /** * @author chenniang * @DataTime: 2022-06-15 16:29 * @功能说明:优惠券 */ public function couponList(){ file_put_contents('wmc123',$_GET['city']); if(empty($this->getUserId())){ return $this->success([]); } $coupon_record_model = new CouponRecord(); $user_model = new User(); $user_info = $user_model->dataInfo(['id'=>$this->getUserId()]); $have_get = $coupon_record_model->where(['user_id'=>$this->getUserId()])->column('coupon_id'); $dis[] = ['uniacid','=',$this->_uniacid]; $dis[] = ['send_type','in',[2,3]]; $dis[] = ['status','=',1]; $dis[] = ['stock','>',0]; // $dis[] = ['id','not in',$have_get]; $data = Db::name('massage_service_coupon')->where($dis)->field('id,title,user_limit,full,discount,send_type,city')->select(); $list = []; $time = strtotime(date('Y-m-d',time())); if(!empty($data)){ foreach ($data as $k4 => $v){ //过滤地区 if($v['send_type'] == 3){ if(!empty($v['city'])){ if(!empty($_GET['city'])){ if($_GET['city'] != $v['city']){ continue; } } } } if($v['user_limit']==2&&$user_info['create_time']>$time){ $list[] = $v; }elseif ($v['user_limit']==1){ $list[] = $v; } } } $list = array_values($list); return $this->success($list); } /** * @author chenniang * @DataTime: 2022-06-15 22:49 * @功能说明:用户获取卡券 */ public function userGetCoupon(){ $input = $this->_input; $coupon_record_model = new CouponRecord(); $coupon_model = new Coupon(); if(!empty($input['coupon_id'])){ foreach ($input['coupon_id'] as $value){ $dis = [ 'coupon_id' => $value, 'user_id' => $this->getUserId() ]; //判断是否领取过 // $find = $coupon_record_model->dataInfo($dis); // if(!empty($find)){ // continue; // } $dis = [ 'status' => 1, 'uniacid'=> $this->_uniacid, 'send_type' => 2, 'id' => $value ]; //检查优惠券 $coupon = $coupon_model->dataInfo($dis); if(!empty($coupon)){ $coupon_record_model->recordAdd($value,$this->getUserId()); } } } return $this->success(true); } /** * @author chenniang * @DataTime: 2023-01-30 16:59 * @功能说明:获取插件的权限 */ public function plugAuth(){ $data = AdminMenu::getAuthList((int)$this->_uniacid,['dynamic','recommend','store','map']); $config_model = new MassageConfig(); $config = $config_model->dataInfo(['uniacid'=>$this->_uniacid]); $data['dynamic'] = !empty($config['dynamic_status'])?$data['dynamic']:0; return $this->success($data); } /** * @author chenniang * @DataTime: 2023-05-15 17:38 * @功能说明:服务分类 */ public function serviceCateList(){ $cate_model = new CateList(); $dis = [ 'uniacid' => $this->_uniacid, 'status' => 1 ]; $data = $cate_model->where($dis)->field('title,id,cover')->order('top desc,id desc')->select()->toArray(); return $this->success($data); } }