【小白二开系列】通过新增自定义服务,我强制让APP增加了一个食谱模块

[复制链接]
查看2019 | 回复20 | 2024-4-28 08:34:21 | 显示全部楼层 |阅读模式

平台提供了很多API,有的时候我们想要开发一个独立业务,不想要和平台提供API项目柔和在一起,可以考虑增加新的自定义接口服务和业务服务;今天我们就试试弄一个自己的业务API服务,用来实现厨房智能小家电里常用的食谱模块吧;

创建服务:

1、搭建新的业务API服务,需要用到 iot_demo_api_service模板;

2、搭建新的业务服务,需要用到 iot_demo_service模板;

我们先将模板目录Copy出来,修改里面的项目名称,这里我将项目名称定义为 iot_recipes_api_service、iot_recipes_service,这个两个服务专门用于给厨房类家电提供制作食谱相关业务接口;

image.png

数据库表创建:

初步设计有如下数据表:

食谱类型表 食谱信息表 食材表 食材类型表 食谱步骤表 食谱步骤食材关联表 食谱评论评分表 食谱赞、踩、收藏表

业务代码生成:

使用代码目录的代码生成工具,生成食谱业务的所有代码

在生成之前,我们先编辑下代码生成工具的配置文件

image.png

编辑gen.bat文件

image.png

执行gen.bat,实现食谱模块的所有代码生成

image.png

将生成所得的convert、handler、service目录直接复制到iot_recipes_service服务的根目录,注意handler目录有一个handler注册的方法需要手写,你需要打开手动编写下,将所有handler进行注册;

image.png

进入到iot_model目录,创建目录db_recipes,生成和存放食谱相关的model和orm,创建gentoo.bat文件,添加如下代码:

..\\..\\tool\\mysql-to-model\\gentool.exe  -dsn "root:123456@tcp(127.0.0.1:3306)/iot_reciples?charset=utf8mb4&parseTime=True&loc=Local"  -outPath  orm -modelPkgName model

image.png

执行gentoo.bat,得到生成后的model和orm

经过如上操作,基础功能的添删改查就完成;

App api接口实现:

APP中增加食谱类型表、食谱信息表、食材表、食材类型表、食谱步骤表数据查询接口,增加食谱评论评分表、食谱赞、踩、收藏表维护功能;

//食谱
appappi.GET("/recipesInfo/detail/:id", apis.RecipesInfocontroller.GetRecipesInfoDetail)
appappi.GET("/recipesInfo/list", apis.RecipesInfocontroller.QueryRecipesInfoList)

//食谱类型
appappi.GET("/recipesType/list", apis.RecipesTypecontroller.QueryRecipesTypeList)

//食材
appappi.GET("/food/detail/:id", apis.Foodcontroller.GetFoodDetail)
appappi.GET("/food/list", apis.Foodcontroller.QueryFoodList)

//食材类型
appappi.GET("/foodType/list", apis.FoodTypecontroller.QueryFoodTypeList)

//增加食谱评论评分表
appappi.GET("/recipesComment/list", apis.RecipesInfocontroller.QueryRecipesCommentList)
appappi.GET("/recipesComment/add", apis.RecipesInfocontroller.AddRecipesComment)

//食谱赞、踩、收藏表
appappi.GET("/recipesComment/setGood", apis.RecipesCommentcontroller.SetGood)
appappi.GET("/recipesComment/setBad", apis.RecipesCommentcontroller.SetBad)
appappi.GET("/recipesComment/setLike", apis.RecipesCommentcontroller.SetBad)

Cloud api接口实现(添加到iot_cloud_api_service服务):

APP中增加食谱类型表、食谱信息表、食材表、食材类型表、食谱步骤表配置功能接口,增加食谱评论评分表、食谱赞、踩、收藏表查询功能;

//食谱
webapi.GET("/recipesInfo/detail/:id", apis.RecipesInfocontroller.GetRecipesInfoDetail)
webapi.GET("/recipesInfo/list", apis.RecipesInfocontroller.QueryRecipesInfoList)
webapi.POST("/recipesInfo/add", apis.RecipesInfocontroller.AddRecipesInfo)
webapi.POST("/recipesInfo/edit", apis.RecipesInfocontroller.EditRecipesInfo)
webapi.POST("/recipesInfo/publish", apis.RecipesInfocontroller.PublishRecipesInfo)
webapi.POST("/recipesInfo/delete/:id", apis.RecipesInfocontroller.DeleteRecipesInfo)

//食谱类型
webapi.GET("/recipesType/detail/:id", apis.RecipesTypecontroller.GetRecipesTypeDetail)
webapi.GET("/recipesType/list", apis.RecipesTypecontroller.QueryRecipesTypeList)
webapi.POST("/recipesType/add", apis.RecipesTypecontroller.AddRecipesType)
webapi.POST("/recipesType/edit", apis.RecipesTypecontroller.EditRecipesType)
webapi.POST("/recipesType/delete/:id", apis.RecipesTypecontroller.DeleteRecipesType)

//食材
webapi.GET("/food/detail/:id", apis.Foodcontroller.GetFoodDetail)
webapi.GET("/food/list", apis.Foodcontroller.QueryFoodList)
webapi.POST("/food/add", apis.Foodcontroller.AddFood)
webapi.POST("/food/edit", apis.Foodcontroller.EditFood)
webapi.POST("/food/delete/:id", apis.Foodcontroller.DeleteFood)

//食材类型
webapi.GET("/foodType/detail/:id", apis.FoodTypecontroller.GetFoodTypeDetail)
webapi.GET("/foodType/list", apis.FoodTypecontroller.QueryFoodTypeList)
webapi.POST("/foodType/add", apis.FoodTypecontroller.AddFoodType)
webapi.POST("/foodType/edit", apis.FoodTypecontroller.EditFoodType)
webapi.POST("/foodType/delete/:id", apis.FoodTypecontroller.DeleteFoodType)

//食谱步骤
webapi.GET("/recipesSteps/list", apis.RecipesStepscontroller.QueryRecipesStepsList)
webapi.POST("/recipesSteps/add", apis.RecipesStepscontroller.AddRecipesSteps)
webapi.POST("/recipesSteps/edit", apis.RecipesStepscontroller.EditRecipesSteps)
webapi.POST("/recipesSteps/delete/:id", apis.RecipesStepscontroller.DeleteRecipesSteps)

//食谱步骤食材关联表
webapi.GET("/recipesStepRe/list", apis.RecipesStepRecontroller.QueryRecipesStepList)
webapi.POST("/recipesStepRe/add", apis.RecipesStepRecontroller.AddRecipesStep)
webapi.POST("/recipesStepRe/delete/:id", apis.RecipesStepRecontroller.DeleteRecipesStep)

//食材步骤关联
webapi.GET("/recipesStepRe/list", apis.RecipesInfocontroller.QueryRecipesStepReList)
webapi.POST("/recipesStepRe/add", apis.RecipesInfocontroller.AddRecipesStepRe)
webapi.POST("/recipesStepRe/delete/:id", apis.RecipesInfocontroller.DeleteRecipesStepRe)

//增加食谱评论评分表
webapi.GET("/recipesComment/list", apis.RecipesInfocontroller.QueryRecipesCommentList)
webapi.GET("/recipesComment/repley", apis.RecipesInfocontroller.AddRecipesComment)

前端功能实现:

开放平台增加食谱管理、食谱类型管理、食材管理、食材类型管理、食材统计等功能页面;

image.png

前端大部分组件使用的ant-design-vue的原生组件,直接参照官方文档就可以开发了;另外框架自定义了 ChartCard、ColorPicker、DemoStep、detailChange、Editor、GlobalHeader、IconFont、IconSelector、ImgCutterDialog、MultiTab、NoData、NProgress、PreviewModal、SelectLang、tableCard、uploadButton、uploadCard、VueQrCode组件,你可以参照已实现示例进行使用;

image.png

APP开发

因为平台提供的开源版APP我没有拿到源代码,无法直接修改,于是我想到一个非常特别的方式来实现APP的功能,就是我创建了一个食谱的产品,然后编写了一套食谱的控制面板,这个食谱的产品默认添加给每一个注册用户,然后食谱面板中完成食谱模块的功能;

image.png

于是我写了一个食谱的H5项目,作为产品的方式默认引入到APP中, 当然你可以使用官方提供的面板的模板进行改造,这样可以使用到于原生交互和设备控制的功能;

image.png

接下来家庭数据获取,为每一个用户提供一个默认食谱面板入口;

找到:iot_app_api_service/controls/user/services/home_service.go,在大概196行的位置增加默认食谱面板的引用,以产品面板的方式加载食谱模块;

注意:deviceList中的设备类型修改3,这样就不会出现开关图标了;

image.png

完美,我让爱星物联开源APP硬生生的扩展了一个食谱的模块了;

image.png

END.

回复

使用道具 举报

jennifer | 2024-4-28 09:02:25 | 显示全部楼层
思路打开了
也成功看饿了
PO主真厉害
回复 支持 反对

使用道具 举报

1084504793 | 2024-4-28 09:07:46 | 显示全部楼层
回复

使用道具 举报

干簧管 | 2024-4-28 09:21:04 | 显示全部楼层
👍
回复

使用道具 举报

WT_0213 | 2024-4-28 09:24:49 | 显示全部楼层
只要思想不滑坡,办法总比困难多
回复 支持 反对

使用道具 举报

爱笑 | 2024-4-28 10:12:07 | 显示全部楼层
不错不错,写的越来越好了!
用心做好保姆工作
回复 支持 反对

使用道具 举报

1055173307 | 2024-4-28 10:55:50 | 显示全部楼层
厉害
回复

使用道具 举报

iiv | 2024-4-28 10:57:04 | 显示全部楼层
很强
回复

使用道具 举报

lazy | 2024-4-28 14:01:40 | 显示全部楼层
回复

使用道具 举报

yff | 2024-4-28 18:03:04 | 显示全部楼层
点赞
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则