某装修平台项目技术总结

一、非技术层面

1. 项目----拆分----> 模块

项目开始时,应把项目分解为多个模块.按照模块间耦合度排序.按照低耦合==>高耦合开发.
比如该项目的顺序就是:
登录注册=>钱包模块=>我的模块=>商家=>任务=>工人=>IM=>订单=>工程
前端和程序一块开始项目,稍微等登录注册写两个页面就可以开干了.缩短了项目周期
前端15天 + 程序20天 = 35天 ===> 前端15天 + 程序20天 = 21天

2.让原型图发挥最大作用.

下面一张被侮辱过后的原型图


某装修平台项目技术总结_第1张图片
原型图

✔ 代表前端此页面已完成,并在下方标注模板页面名称(如订单十几个长相差不多的页面,项目总计180+个页面,不标注根本分不清楚)
▲ 代表美工已审阅前端做出页面
⭐代表程序已经开发完此页面
在此页面上测试人员也可以做出一种标记,不会出现漏测页面情况.

3.与前端沟通交流(插件)

  • 项目开始初:大体总结出页面什么地方需要插件,插件的作用.
  • 项目开始中:程序给你什么数据(前端要什么数据) + 程序拿到什么数据(前端抛出来什么数据) 前端适当的暴露给程序接口.
下面我要举栗子了:

需求:项目需要显示地图可视范围内的任务,顶部是筛选插件(工种,时间段,关键词)

  • 前期
    程序会给前端 工种
    程序需要得到 工种,时间段,关键词
    程序需要json对象格式
  • 开发中
    发现在app中调用plus的地图会打开一个新的webview,使用css的z-index是无效的
    所以需要在插件展开和折叠触发回调(callbackSlideDown、callbackSlideUp)使地图hide和show
  • 开发后
    上帝想在点击遮罩层的时候折叠插件,和前端沟通好后不需要改模板任何代码.只需要在点击遮罩折叠触发callbackSlideUp即可
  • 总结
    在写插件时候,尽量保持让每个方法处理单独的逻辑(一个方法或函数仅有一个职责).这样使前期的开发和后期的维护更方便.


    某装修平台项目技术总结_第2张图片
    插件

    某装修平台项目技术总结_第3张图片
    任务筛选插件主要代码
某装修平台项目技术总结_第4张图片
选择管理人插件

二、技术层面

1. Plus地图

上述插件主要逻辑

  • 定义地图全局变量
  • 搜索局部变量
  • 存在地图 && 销毁存在的地图
  • 生成地图
  • 设置中心点
  • 拿到数据数据设置点(覆盖物)
  • 地图改变(onstatuschanged) 重新设置点(覆盖物)

2.Elasticsearch(es)在实际项目中的应用

某装修平台项目技术总结_第5张图片
es中的排序

上述需求如果只是根据距离排序,那么只需要使用sort就可以完成.
但是如果按照评分和最近发布来排序应该怎么处理?
如何拿到距离?

  • 修改前


    某装修平台项目技术总结_第6张图片
    es中根据geo排序
  • 修改后


    某装修平台项目技术总结_第7张图片
    es中自定义脚本

    使用自定义脚本后可以使sort更加灵活.根据前端传的排序规则拼装es查询语句.

组合查询例子:

Array
(
    [query] => Array
        (
            [bool] => Array
                (
                    [must] => Array
                        (
                            [0] => Array
                                (
                                    [term] => Array
                                        (
                                            [city_id] => 76
                                        )

                                )

                            [1] => Array
                                (
                                    [term] => Array
                                        (
                                            [type] => 2
                                        )

                                )

                            [2] => Array
                                (
                                    [multi_match] => Array
                                        (
                                            [query] => 李
                                            [fields] => Array
                                                (
                                                    [0] => name
                                                    [1] => contact_tel
                                                )

                                        )

                                )

                            [3] => Array
                                (
                                    [term] => Array
                                        (
                                            [area] => 锡山区
                                        )

                                )

                            [4] => Array
                                (
                                    [terms] => Array
                                        (
                                            [worktype] => Illuminate\Support\Collection Object
                                                (
                                                    [items:protected] => Array
                                                        (
                                                            [0] => 吊顶隔墙
                                                            [1] => 装门
                                                            [2] => 定制家具
                                                        )

                                                )

                                        )

                                )

                            [5] => Array
                                (
                                    [range] => Array
                                        (
                                            [workyear] => Array
                                                (
                                                    [lte] => 2013
                                                )

                                        )

                                )

                            [6] => Array
                                (
                                    [terms] => Array
                                        (
                                            [tag] => Array
                                                (
                                                    [0] => 系统认证
                                                    [1] => 掌柜认证
                                                    [2] => 已购保险
                                                )

                                        )

                                )

                        )

                    [must_not] => Array
                        (
                            [0] => Array
                                (
                                    [terms] => Array
                                        (
                                            [busydate] => Array
                                                (
                                                    [0] => 20180730
                                                    [1] => 20180731
                                                )

                                        )

                                )

                        )

                )

        )

    [_source] => Array
        (
        )

    [script_fields] => Array
        (
            [geo] => Array
                (
                    [script] => doc['geo'].arcDistance(31.589228,120.342128)*0.001
                )

        )

    [sort] => Array
        (
            [send_score] => Array
                (
                    [order] => desc
                )

        )

)

你可能感兴趣的:(某装修平台项目技术总结)