大赛链接>>华为云DevCloud啤酒供需数字化管理系统开发赛
分享者昵称:jinxingfei
一、参赛收获、思考
首先,这是第二次使用APP Egnine平台开发作品并参与比赛了。相比较而言,这次的开发较为顺利,对于赛题的理解也较深入。个人总结原因还是在于熟能生巧,平时多点开APP Engine,有些好的想法可以动手实践一下,用的多了,渐渐的了解了怎么定义对象,编写脚本,为前端页面定义对象模型,页面组件有哪些事件。懂得了前端页面是如何通过传参并调用后台Script或Folw,对外开发RESTful接口。在开发时,也能够根据个人想法对作品做修改优化,新增业务处理和逻辑判断等。总之,一切从实践中来,多谢APP Engine这一开放平台,让有想法的人能够付之行动,反馈了问题后很快得到回应。
其次,谈一谈在开发过程中,对于本赛题的一些思考。
1、页面布局的优化。针对参考教程所提供的页面布局,进行修改。包括啤酒信息列表和订单列表。主要思路是借助栅格容器中 行布局(分割比例),字体高亮(基于此,浏览啤酒页面、查看订单页面和评价页面风格均保持一致)。首页中新增直达订单查询界面的按钮,无须点击购物车后,再跳转至查询订单页面。其中订单查询页面中的订单数据,除了在后端模型视图中添加 查询订单的服务模型,可以添加 查询啤酒信息的服务模型,根据订单中啤酒的ID去查询到啤酒的图片、单价和销量等数据,显得更加直观。
效果如下图:
参考界面:

优化后:

2、消费者购买啤酒之后,可以通过手机号查询订单,并分页展示。若该手机号对应订单较多,例如50个“已下单”订单和1个“派送中”订单,单独查找“派送中”订单就需要一页页查找。所以应该支持按照订单状态查询,消费者输入手机号和选择所查询状态,对订单进行一个初步过滤,更方便。
主要思路是:在查询订单列表的脚本代码中,新增一个参数 status,在后台模型中自定义order_status字段,并与前端下拉框进行值绑定。页面初加载时,默认查询全部状态的订单,用户可以通过点击下拉框选择查询特定状态的订单。另,针对手机号为空,手机号不合法,手机号没有对应订单等情景进行校验和提示。


3、新增评价和自取两个功能,如下图所示,不同状态的订单应该具有不同的操作,那么如何使得 已下单-->取消订单, 待自取-->自取, 已签收-->评价等状态一一对应呢,具体思路是在后台模型中字段buttonName,该字段与红色按钮的属性显示值绑定,在查询到一系列订单列表后,编写JS代码,根据当前状态对字段进行赋值,达到不同订单的按钮显示不一致的目的,然后再根据订单状态的不同去调用不同的后台脚本。例如 点击取消订单调用editMgtInfo, 点击自取调用editMgtInfo,点击评价调用appraiseOrder




4、参考常用的APP,作品可以提供一个“评价”功能。当订单完成派送,显示“已签收”,此时消费者可以对订单进行评价,输入意见和评分。评价后商品销量+1,并生成综合评分。
主要思路是当消费者点击“评价”按钮时,跳转至评价页面,输入评分和评价信息,点击确定。后台对应新增脚本appraiseOrder。该脚本需要的参数包括:啤酒ID(用于修改啤酒的销量和评分)、评分和订单ID(用于修改订单的状态)。具体的代码和修改订单信息、修改啤酒信息类似,在此不做赘述。


5、赛题所提供的物流方“接单”和“关单”功能,有一些不恰当之处,首先物流方不能查询“已下单”、“已取消”、“待自取”等状态下的订单,这属于消费者的信息,只能供应方查看,不应该被物流方查看到,且和物流方没有业务关联。
“待发货”状态订单被接单后,状态变为“派送中”,此时已经处于派送状态或者已完成投递,那么不应该允许物流方再次进行接单操作,接单功能应该禁用,否则整个流程不符合日常逻辑。“总之,物流方接单时,只能操作“待发货”状态的订单,而不能随意操作其他订单。同理,关单操作也是如此。
具体思路是在操作按钮中输入表达式运算,根据订单状态来决定操作结果。

除此以外,对于期望到货日期不在三天之后、输入非法字符、手机号不合法、查询订单结果为空,取消订单的状态不是“已下单”,物流方查询不属于其业务状态的订单等情况,都应通过消息框或错误框进行提示,以提高作品的易用性。
以上所提及的建议和问题,本人在所提交作品中均有新增和优化,并针对页面布局优化。
二、作品讲解视频
作品讲解视频链接:
https://v.qq.com/x/page/z3158b8fhy6.html

