verify_sign(); // 检查登录 $uid = $this->checkLogin(); // 查询信息 $list = $Model->getListByCustom($uid); // 返回结果 return json_send(['code'=>'success','msg'=>'获取成功','data'=>$list]); } /** * 添加 /api/custom_addr/add * * @param string $code 授权码 * * */ public function add(Request $request,Model $Model,Custom $Custom,City $City,WeiBanFollow $WeiBanFollow){ // 接口验签 // $this->verify_sign(); // 验证参数 $request->scene('add')->validate(); // 检查登录 $uid = $this->checkLogin(); // 获取客户信息 $custom = $Custom->getOne($uid); // 如果客户信息不存在的话 if( !$custom ) return json_send(['code'=>'error','msg'=>'客户信息不存在','data'=>['error'=>'客户信息不存在']]); // 如果用户状态被拉黑,不允许登录 if( $custom['status'] ) return json_send(['code'=>'error','msg'=>'禁用账号','data'=>['error'=>'禁用账号']]); // 接收参数 $data['contact_province'] = trim(request('contact_province','')); $data['contact_city'] = trim(request('contact_city','')); $data['contact_area'] = trim(request('contact_area','')); $data['contact_addr'] = trim(request('contact_addr','')); $data['contact_name'] = trim(request('contact_name','')); $data['contact_shop'] = trim(request('contact_shop','')); $data['shop_type'] = trim(request('shop_type',0)); $data['contact_phone'] = trim(request('contact_phone','')); $data['is_default'] = request('is_default',0); $data['custom_uid'] = $uid; $cityName = $custom['city_id'] ? $City->getOne($custom['city_id'],'name') : ''; $pid = $custom['city_id'] ? $City->getOne($custom['city_id'],'pid') : 0; // 如果上级不是省份 if( strlen($custom['city_id']) > 4) $pid = (int) $City->getOne($pid,'pid'); $province = $pid ? $City->getOne($pid,'name') : ''; // 如果不是海南, if( $province != '海南省' ) { // 判断选择的城市名称是不是一致 if( trim($cityName) != trim($data['contact_city']) ) return json_send(['code'=>'error','msg'=>'收货地址请选择'.($province=='直辖县级'?$cityName:$province).'/'.$cityName,'data'=>['error'=>'收货地址需与您所选城市一致']]); }else{ if( trim($data['contact_province']) != trim($province) ) return json_send(['code'=>'error','msg'=>'收货地址请选择海南范围','data'=>['error'=>'收货地址需与您所选城市一致']]); } // 替换地址中间的空格 $data['contact_addr'] = str_ireplace(' ','',$data['contact_addr']); // 最大数量 $limitMax = 20; $havaNum = $Model->query()->where([['custom_uid','=',$uid]])->count(); // 如果是最大数量的话 if( $havaNum > $limitMax ) return json_send(['code'=>'error','msg'=>'您已经有'.$limitMax.'条地址了','data'=>['error'=>'最多只能保20条地址']]); // 如果需要默认当前的话 if( $data['is_default'] ) $Model->query()->where([['custom_uid','=',$uid]])->update(['is_default'=>0]); // 查询是否已经提交过 $result = $Model->add($data); // 如果用户状态被拉黑,不允许登录 if( !$result ) return json_send(['code'=>'error','msg'=>'保存失败,请重试','data'=>['error'=>'写入失败']]); // 如果存在微伴ID if( !$custom['weiban_extid'] ) return json_send(['code'=>'success','msg'=>'保存成功','data'=>$data]); // 获取客服对应的备注等信息 $staffId = $WeiBanFollow->query()->where([['weiban_extid','=',$custom['weiban_extid']]])->value('staff_id'); // 如果存在微伴ID if( !$staffId ) return json_send(['code'=>'success','msg'=>'保存成功','data'=>$data]); // 自动标签 if( !$havaNum ) $this->autoTags($province,$cityName,$data['shop_type'],$staffId,$custom['weiban_extid']); // 返回结果 return json_send(['code'=>'success','msg'=>'保存成功','data'=>$data]); } /** * 自动标签 */ private function autoTags($province,$cityName,$shopType,$staffId,$weibanExtid){ // 如果有地址信息 switch ($shopType) { case '1': $shopType = '单店'; break; case '2': $shopType = '连锁'; break; case '3': $shopType = '第三终端'; break; default: $shopType = ''; break; } // 省份 $province = str_ireplace(['自治区','壮族','回族','维吾尔','特别行政区','省'],'',$province); // 城市 $cityName = rtrim($cityName,'市'); $cityName = str_ireplace(['自治州','自治县','蒙古','蒙古族','回族','藏族','维吾尔','苗族','彝族','壮族','布依族','朝鲜族','满族','侗族','瑶族','白族','土家族','哈尼族','哈萨克','傣族','黎族','傈僳族','佤族','畲族','拉祜族','水族','东乡族','纳西族','景颇族','柯尔克孜','土族','达斡尔族','仫佬族','羌族','布朗族','撒拉族','毛南族','仡佬族','锡伯','阿昌族','普米族','塔吉克','怒族','鄂温克族','德昂族','保安族','裕固族','塔塔尔','独龙族'],'',$cityName); // 打标签 if( $province ) OpenApi::addTag($staffId,$weibanExtid,'省份',$province); if( $cityName ) OpenApi::addTag($staffId,$weibanExtid,$province.'城市',$cityName); if( $shopType ) OpenApi::addTag($staffId,$weibanExtid,'企业类型',$shopType); // 返回结果 return ['success'=>'返回结果']; } /** * 修改 /api/custom_addr/edit * * @param string $code 授权码 * * */ public function edit(Request $request,Model $Model,Custom $Custom,City $City){ // 接口验签 // $this->verify_sign(); // 检查登录 $uid = $this->checkLogin(); // 验证参数 $request->scene('edit')->validate(); // 接收参数 $id = request('id',0); $data['contact_province'] = trim(request('contact_province','')); $data['contact_city'] = trim(request('contact_city','')); $data['contact_area'] = trim(request('contact_area','')); $data['contact_addr'] = trim(request('contact_addr','')); $data['contact_name'] = trim(request('contact_name','')); $data['contact_shop'] = trim(request('contact_shop','')); $data['shop_type'] = trim(request('shop_type',0)); $data['contact_phone'] = trim(request('contact_phone','')); $data['is_default'] = request('is_default',0); // 获取客户城市ID $cityId = (int) $Custom->getValue($uid,'city_id'); $cityName = $City->getOne($cityId,'name'); $pid = $City->getOne($cityId,'pid'); // 如果上级不是省份 if( strlen($cityId) > 4 ) $pid = (int) $City->getOne($pid,'pid'); $province = $City->getOne($pid,'name'); // 如果不是海南, if( $province != '海南省' ) { // 判断选择的城市名称是不是一致 if( trim($cityName) != trim($data['contact_city']) ) return json_send(['code'=>'error','msg'=>'收货地址请选择'.($province=='直辖县级'?$cityName:$province).'/'.$cityName,'data'=>['error'=>'收货地址需与您所选城市一致']]); }else{ if( trim($data['contact_province']) != trim($province) ) return json_send(['code'=>'error','msg'=>'收货地址请选择海南范围','data'=>['error'=>'收货地址需与您所选城市一致']]); } // 替换地址中间的空格 $data['contact_addr'] = str_ireplace(' ','',$data['contact_addr']); // 如果需要默认当前的话 if( $data['is_default'] ) $Model->query()->where([['custom_uid','=',$uid]])->update(['is_default'=>0]); // 查询是否已经提交过 $result = $Model->edit($id,$data); // 如果用户状态被拉黑,不允许登录 if( !$result ) return json_send(['code'=>'error','msg'=>'保存失败,请重试','data'=>['error'=>'写入失败']]); // 返回结果 return json_send(['code'=>'success','msg'=>'保存成功','data'=>$data]); } /** * 删除 /api/custom_addr/del * * @param string $code 授权码 * * */ public function del(Request $request,Model $Model){ // 接口验签 // $this->verify_sign(); // 检查登录 $uid = $this->checkLogin(); // 验证参数 $request->scene('del')->validate(); // 接收参数 $id = request('id',0); // 如果需要默认当前的话 $result = $Model->del($id); // 如果用户状态被拉黑,不允许登录 if( !$result ) return json_send(['code'=>'success','msg'=>'删除失败','data'=>['error'=>'删除失败']]); // 返回结果 return json_send(['code'=>'success','msg'=>'删除成功','data'=>['id'=>$id]]); } /** * 修改 /api/custom_addr/set_default * * @param string $code 授权码 * * */ public function set_default(Request $request,Model $Model){ // 接口验签 // $this->verify_sign(); // 检查登录 $uid = $this->checkLogin(); // 验证参数 $request->scene('set_default')->validate(); // 接收参数 $id = request('id',0); // 如果需要默认当前的话 $Model->query()->where([['custom_uid','=',$uid]])->update(['is_default'=>0]); // 查询是否已经提交过 $result = $Model->edit($id,['is_default'=>1]); // 如果用户状态被拉黑,不允许登录 if( !$result ) return json_send(['code'=>'error','msg'=>'保存失败,请重试','data'=>['error'=>'写入失败']]); // 返回结果 return json_send(['code'=>'success','msg'=>'保存成功','data'=>['id'=>$id]]); } /** * 获取用户地址信息 /api/custom_addr/get_remark_addr * */ public function get_remark_addr(Custom $Custom,City $City,WeiBanFollow $WeiBanFollow){ // 接口验签 // $this->verify_sign(); // 检查登录 $uid = $this->checkLogin(); // 获取客户城市ID $custom = $Custom->getOne($uid); // 数据组合 $data = ['contact_province'=>'','contact_city'=>'','contact_area'=>'','contact_addr'=>'','contact_name'=>'','contact_shop'=>'','contact_phone'=>'','shop_type'=>1]; // 如果不存在用户信息 if( !$custom ) return json_send(['code'=>'success','msg'=>'获取成功','data'=>$data]); // 省份 $data['contact_phone'] = $custom['phone']; // 获取用户城市信息 $city = $City->getOne($custom['city_id']); // 如果有城市信息 if( !$city ) return json_send(['code'=>'success','msg'=>'获取成功','data'=>$data]); // 获取上级城市/省份 $parentCity = $City->getOne($city['pid']); // 如果上级是省辖,获取省份 if( isset($parentCity['name']) && $parentCity['name'] == '直辖县级' ) $parentCity = $City->getOne($parentCity['pid']); // 如果有获取到省份信息 if( !$parentCity ) return json_send(['code'=>'success','msg'=>'获取成功','data'=>$data]); // 省份 $data['contact_province'] = $parentCity['name']; // 省份 $data['contact_city'] = $city['name']; // 如果用户没有绑定对应的微伴账号 if( !$custom['weiban_extid'] ) return json_send(['code'=>'success','msg'=>'获取成功','data'=>$data]); // 获取客服对应的备注等信息 $follow = $WeiBanFollow->getListByWeibanExtid($custom['weiban_extid']); // 获取备注列表 $remark = array_filter(array_column($follow,'remark'),function($value) {return !empty($value);}); // 获取备注列表 $contactShop = array_filter(array_column($follow,'remark_corp_name'),function($value) {return !empty($value);}); // 如果有备注信息 if( isset($remark[0]) ) $data['contact_name'] = $remark[0]; // 如果有备注信息 if( isset($contactShop[0]) ) $data['contact_shop'] = $contactShop[0]; // 返回结果 return json_send(['code'=>'success','msg'=>'获取成功','data'=>$data]); } /** * 获取可能性地址 /api/custom_addr/get_guess_addr * */ public function get_guess_addr(Request $request,Model $Model){ // 接口验签 // $this->verify_sign(); // 检查登录 $uid = $this->checkLogin(); // 接收参数 $request->scene('get_guess_addr')->validate(); // 接收参数 $contactShop = request('contact_shop',''); // 获取参数 $map = [['contact_shop','LIKE','%'.$contactShop.'%']]; // 查询 $list = $Model->query()->where($map)->limit('20')->get(['contact_province','contact_city','contact_area','contact_addr','contact_shop','shop_type'])->toArray(); // 返回结果 return json_send(['code'=>'success','msg'=>'获取成功','data'=>$list]); } }