Laravel8 添加 二

  /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $data = Fang::getFangAttr();
        return view('admin.fang.create', $data);
    }

    /**
     * Store a newly created resource in storage.
     * 添加到es时机,在数据添加到数据库成功后,才来把数据添加到es索引中
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $params = $request->except(['_token', 'file']);

        //获取房源的详细地址
        $province = City::where('id', '=', $params['fang_province'])->value('name');
        $city = City::where('id', '=', $params['fang_city'])->value('name');
        $region = City::where('id', '=', $params['fang_region'])->value('name');
        $address = $province . $city . $region . $params['fang_addr'];
        //高德地图api
        $url = sprintf(config('gaode.url'), $address);
        //取出高德数据
        $data = file_get_contents($url);
        $location = json_decode($data, true)['geocodes'][0]['location'];
        //获取经纬度
        $newAddr = explode(',', $location);
        $params['latitude'] = $newAddr[0];
        $params['longitude'] = $newAddr[1];

        // 入库
        $data = Fang::create($params);

        //建立es客户端对象
        $client = ClientBuilder::create()->setHosts(config('es.host'))->build();
        // 写文档
        $params = [
            'index' => 'fang',
            'type' => '_doc',
            'id' => $data->id,
            'body' => [
                'fang_name' => $data->fang_name,
                'fang_desn' => $data->fang_desn,
            ],
        ];
        $client->index($params);
        // 跳转
        return redirect(route('admin.fang.index'));
    }



    //创建es索引
    public function esInit()
    {
        //建立es客户端对象
        $client = ClientBuilder::create()->setHosts(config('es.host'))->build();
        // 创建索引
        $params = [
            'index' => 'fang',
            'body' => [
                'settings' => [
                    'number_of_shards' => 5,
                    'number_of_replicas' => 1
                ],
                'mappings' => [
                    '_doc' => [
                        '_source' => [
                            'enabled' => true
                        ],
                        'properties' => [
                            'fang_owner'=>[
                                'type' => 'keyword',
                            ],
                            'fang_name' => [
                                'type' => 'text',
                                'analyzer' => 'ik_max_word',
                                'search_analyzer' => 'ik_max_word'
                            ],
                            'fang_desn' => [
                                'type' => 'text',
                                'analyzer' => 'ik_max_word',
                                'search_analyzer' => 'ik_max_word'
                            ]
                        ]
                    ]
                ]
            ]
        ];
        $response = $client->indices()->create($params);
        dump($response);
    }

    //修改房源状态
    public function fangStatus(Request $request)
    {
        //取出房源id
        $fangID = $request->get('fang_id');
        $fangStatus= $request->get('fang_status');
        Fang::where('id','=',$fangID)->update(['fang_status'=>$fangStatus]);

        return ['errorCode'=>0,'msg'=>'修改成功','data'=>''];

    }

@extends('common.main')

@section('css')
    {{-- webuploader上传样式 --}}
    <link rel="stylesheet" type="text/css" href="/webuploader/webuploader.css"/>
@endsection

@section('cnt')
    <nav class="breadcrumb">
        <i class="Hui-iconfont">&#xe67f;</i> 首页
        <span class="c-gray en">&gt;</span> 管理
        <span class="c-gray en">&gt;</span> 房源
        <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px"
           href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont">&#xe68f;</i></a>
    </nav>
    <article class="page-container">
        {{-- 表单验证提示 --}}
        @include('common.validate')

        <form action="{{ route('house.store') }}" method="post" class="form form-horizontal" id="fang-add">
            @csrf
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>名称:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <input type="text" class="input-text" name="name">
                </div>
            </div>

            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>地址:</label>
                <div class="formControls col-xs-4 col-sm-4">
                    <select name="province" style="width: 100px;" onchange="changeCity(this,'city')">
                        <option value="0">==请选择省==</option>
                        @foreach($city_data as $item)
                            <option value="{{ $item->id }}">{{ $item->name }}</option>
                        @endforeach
                    </select>
                    <select name="city" id="city" style="width: 100px;"
                            onchange="changeCity(this,'region')">
                        <option value="0">==市==</option>
                    </select>
                    <select name="region" id="region" style="width: 100px;">
                        <option value="0">==区/县==</option>
                    </select>
                </div>

{{--            <div class="row cl">--}}
{{--                <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>房屋图片:</label>--}}
{{--                <div class="formControls col-xs-2 col-sm-2">--}}
{{--                    <div id="picker">房屋图片</div>--}}
{{--                </div>--}}
{{--                <div class="formControls col-xs-6 col-sm-7">--}}
{{--                    <!-- 表单提交时,上传图片地址,以#隔开 -->--}}
{{--                    <input type="hidden" name="fang_pic" id="fang_pic"/>--}}
{{--                    <!-- 显示上传成功后的图片容器 -->--}}
{{--                    <div id="imglist"></div>--}}
{{--                </div>--}}
{{--            </div>--}}
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>是否推荐:</label>
                <div class="formControls col-xs-8 col-sm-9 skin-minimal">
                    <div class="radio-box">
                        <label>
                            <input name="is_recommend" type="radio" value="0" checked>
                            否
                        </label>
                    </div>
                    <div class="radio-box">
                        <label>
                            <input type="radio" value="1" name="is_recommend">
                            是
                        </label>
                    </div>
                </div>
            </div>
            <div class="row cl">
                <label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>房屋详情:</label>
                <div class="formControls col-xs-8 col-sm-9">
                    <textarea id="fang_body" name="body">详情信息添加</textarea>
                </div>
            </div>
            <div class="row cl">
                <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
                    <input class="btn btn-primary radius" type="submit" value="添加">
                </div>
            </div>
        </form>
    </article>
@endsection

@section('js')
    <!-- webuploader上传js -->
    <script type="text/javascript" src="/webuploader/webuploader.js"></script>

    <script type="text/javascript" src="/static/lib/jquery.validation/1.14.0/jquery.validate.js"></script>
    <script type="text/javascript" src="/static/lib/jquery.validation/1.14.0/validate-methods.js"></script>
    <script type="text/javascript" src="/static/lib/jquery.validation/1.14.0/messages_zh.js"></script>
    <!-- 配置文件 -->
    <script type="text/javascript" src="/ueditor/ueditor.config.js"></script>
    <!-- 编辑器源码文件 -->
    <script type="text/javascript" src="/ueditor/ueditor.all.js"></script>

    <script>
        // 下拉选择市和地区
        // obj 当前对象
        // selectName 给选中下个处理html的ID 字符串
        async function changeCity(obj, name) {
            //原生js写法
            // console.log(obj.value)
            //jquery 写法
            // console.log($(obj).val())
            //取出选择的省份id
            var id = obj.value;
            //三级联动接口
            var url = '{{route('fang.city')}}?id=' + id;
            //使用fetch()方法发送请求,把异步变成同步,获取数据
            let ret = await fetch(url)
            //取到城市数据
            let cityArr = await ret.json();
            var html = '<option value="0">==市==</option>';
            cityArr.map((item, index) => {
                let {id, name} = item;
                html += ` <option value="${id}">${name}</option>`
            })
            $('#' + name).html(html)
        }

        // 富文本编辑器
        var ue = UE.getEditor('fang_body', {
            initialFrameHeight: 200
        });
        // 初始化Web Uploader
        var uploader = WebUploader.create({
            // 选完文件后,是否自动上传
            auto: true,
            // swf文件路径
            swf: '/webuploader/Uploader.swf',
            // 文件接收服务端 上传PHP的代码
            server: '{{ route('pic.upfile') }}',
            // 文件上传是携带参数
            formData: {
                _token: '{{csrf_token()}}'
            },
            // 文件上传是的表单名称
            fileVal: 'file',
            // 选择文件的按钮
            pick: {
                id: '#picker',
                // 是否开启选择多个文件的能力
                multiple: true
            },
            // 压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
            resize: true,
            duplicate: true
        });
        // 上传成功时的回调方法
        uploader.on('uploadSuccess', function (file, ret) {
            // 解决表单提交时,图片以#隔开解决
            let val = $('#fang_pic').val();
            let tmp = val + '#' + ret.url;
            $('#fang_pic').val(tmp);

            // 图片显示
            let imglist = $('#imglist');
            // 注:一定要用追加还是不html覆盖
            let html = `
            <div style="position: relative;;width:100px;">
                <img src="${ret.url}" style="width:100px;" />
                <strong onclick="delpic(this,'${ret.url}')" style="position: absolute;right: 2px;top: 2px;color: white;font-size: 20px;">X<strong>
            </div>
        `;
            imglist.append(html);
        });

        // 删除图片
        function delpic(obj, picurl) {
            {{--let url = "{{ route('admin.fang_owner.delfile') }}?file=" + picurl;--}}
            // 发起请求删除
            fetch(url);
            // 删除当前点击图片显示
            $(obj).parent().remove();
            // 修改隐藏域表单
            $('#pic').val($('#pic').val().replace(`#${picurl}`, ''));
        }

        // 前端表单验证
        $("#fang-add").validate({
            // 规则
            rules: {
                name: {
                    required: true
                },
                province: {
                    min: 1
                },
                city: {
                    min: 1
                },
                region: {
                    min: 1
                },

            },
            messages: {
                province: {
                    min: '省份不能为空'
                },
                city: {
                    min: '市不能为空'
                },
                region: {
                    min: '区或县不能为空'
                }
            },
            // 取消键盘事件
            onkeyup: false,
            // 验证成功后的样式
            success: "valid",
            // 验证通过后,处理的方法 form dom对象
            submitHandler: function (form) {
                // 表单提交
                form.submit();
            }
        });
    </script>

@endsection

最后是路由

   //上传图片路由
        Route::post('fang_owner/upfile', 'FangOwnerController@upFile')->name('fang_owner.upfile');
        //删除图片
        Route::get('fang_owner/delfile','FangOwnerController@delFile')->name('fang_owner.delfile');


        Route::get('fang_owner/export','FangOwnerController@export')->name('fang_owner.export');

  //简历es索引
        Route::get('fang/es/es_init','FangController@esInit')->name('fang.es_init');
        //修改状态
        Route::get('fang/chang_status','FangController@fangStatus')->name('fang.chang_status');
        //资源路由
        Route::resource('fang','FangController');

        //城市表
        Route::get('fang.city','CityController@fangCity')->name('fang.city');

最后还有个excel导出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悄悄顽皮的猴头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值