我大概记得这个需求做之前我是很无聊的,都说没活,找组长,找经理,都说让先看看工作台代码熟悉一下。然后我在12月底接触到了工作台的第一个需求,总之一趟做下来感觉就是各种不会和不适应。所幸熬了过来,有点收获赶快记下来免得忘掉。
首先说明一下需求是干什么,大概就是从另一个系统里同步到工作台的数据完成页面显示和搜索以及导出等相关工作,其实搜索和导出因为已经有相对成熟的内容了,也就是配置一下就好,不用纠结什么同步异步的问题。其实感觉整个需求的大部分时间都是在走一个配置的流程。配置完了,也就通了,不过这也导致我其实对于功能是怎么实现的半懂不懂,只是对大概在哪个文件里做个操作有点印象……(完了,要变成熟练工了😱)算了,总结一下干了什么也好,以后有相似工作可以抄抄作业。
首先是前端页面,作为Laravel框架的一部分使用,这个内容是逃不掉的,然后采用的方式主要是把相似结构的页面粘贴过来然后去掉没用的地方,对有用的组件进行一下复制和修改……反正自己手打一个页面对我目前来说很难,想做出风格相对统一的页面只能这样。页面上一开始就是一个搜索框的样式和一个装模作样的表头。至于表格数据的填充,我一开始以为是会像之前做的通知系统那样,写个控制器方法把数据传到页面上,然后在页面上写长长的控制内容显示代码……但是没有,是写一堆配置文件,我目前还是没有理解究竟是哪里在解析这些配置文件,感觉就是把该写的东西写完了然后就自然而然完成了。😵
然后是路由和控制器什么的,这个倒没什么可说的,甚至控制器方法简单了太多,就返回了一些配置参数和配置里写死的一些内容给页面,另外还有个TableApiController的控制器用来控制所有表格对Service,即数据组装层的访问,从这个角度感觉这个控制器反而比单独页面的控制器要重要的多。
配置文件大概包括的内容是table.php,配置了表头,和workbench.php,记录了相关的具体文件的相关配置内容。像是type的配置位置,schema的配置位置等等配置的相关名字。
再就是Repository类文件,这类文件在之前做过的需求里主要是用来写Model之类的访问函数的,但是在这个项目里似乎除了这部分之外,还承载着处理请求的功能,其实就是把请求转成搜索语句,再把搜索到的结果返回给上一层。感觉似乎把我之前写的那种把请求处理逻辑放在控制器方法里的想法改变了一点。
然后是Service文件,这类文件目前看来的作用主要是数据组装,像是处理数据为空的情况下数据的值之类的东西,其实就是把数据传递到页面上。具体的数据显示可以在table.php中进行处理,像是一个字段内显示两个数据,Service只是返回了两个数据给显示层,但是处理显示的格式需要在前端定义个局部的模板来处理。
之后进展到GraphQL和EsModel部分,其实我不懂,这部分也不是我做的,但是为了能之后有点印象,还是写一下。EsModel其实就是数据源是Es的Model,其实实际绑定好之后用法和MySQL的一样(目前我是没发现哪里有不同的地方)。GraphQL就有点迷惑了,感觉像是某种绑定Es数据的东西,可以用这种方法把要用的字段都进行一个绑定,然后有些关联在其他表的字段也可以在这里直接处理掉,方便之后的直接使用。到时候Service直接访问对应的GraphQL模块就可以(但是Schema,Type里Search类文件的配置我是没有看懂究竟是什么意思的,大概是某种主键的确定什么的?)。总之这部分没懂,自己也没做这部分,只能后面看看。
还要配置个数据库什么的,有个表,主要内容是声明表格字段的名字和来源系统什么的,虽然不写好像照样可以跑……这个目前也不懂怎么写。
下面是整理的需求的简单目录结构,也不知道有没有用:

大概就这么多东西,下次至少应该碰见相似的东西可以写的顺利一点点。