1.项目介绍
帝可得是一个基于物联网
概念下的智能售货机运营管理系统
应用场景:智能家居、共享充电中、智能售货机
智能售货机的优势在于其自我管理能力
。
-
物联网技术:像是售货机的顺风耳和千里眼。
-
智能分析与推荐
-
人员设备绑定管理
-
移动支付支持:
-
线上线下融合(OMO):顾客可以在线上浏览商品,然后直接在售货机上购买,或者在售货机上看到喜欢的商品后,直接在线上下单。
1.1售货机术语
区域管理: 为了更高效地进行经营管理,公司将运营范围划分为若干个逻辑区域。这些区域的划分基于业务需求,可能与地理上的行政区域有所区别,以确保更合理的资源分配和更高效的运营管理。
点位选择: 点位指的是智能售货机的具体放置位置。选择点位时,我们会考虑人流量、目标顾客群体、可见度以及便利性等因素,以最大化售货机的使用效率和顾客的购买体验。
售货机功能: 智能售货机就像是一个自动的小店,里面摆满了各种商品。顾客想要什么,直接在机器上选,然后机器就会把商品送到他们手中,就像是一个自动化的仓库。
货道设计:售货机里面的货道,你可以想象成超市里的那种货架。每一层都有好几个位置可以放商品,这样就能放很多种不同的商品,而且每一层都能放很多,这样顾客的选择就会更多。
1.2平台管理
平台管理员:主要作用有基础数据的管理和创建工单排除员工完成维修或补货。
1.3产品原型
帝可得项目点击链接立即查看 腾讯 CoDesign - 腾讯 CoDesign
1.4库表设计
2.初始AI
2.1AIGC
AIGC(AI Generated Content):AIGC是AI领域的一个应用分支,专注于利用AI技术自动生成内容,包括文本,代码,图片,音频,视频。
AI大模型:通常指的是具有大量参数的深度学习模型,经过大量数据训练,具备复杂计算能力的人工智能系统,它们能够执行多种高级任务,其中包括内容生成。eg:通义千问,智谱清言。
2.2提示工程
1.Prompt
提示(Prompt)是我们对大模型提出的问题。
2.提示工程
提示工程(Prompt Engineering)也被称为上下文提示,它涉及到设计和优化输入文本,也就是Prompt,来引导AI模型生成预期的输出。
简单来说,就像是给AI出一个好问题,让它给我们一个满意的答案。
3.Prompt的组成
-
角色:给 AI 定义一个最匹配任务的角色,比如:「你是一位软件工程师」「你是一位小学老师」
-
指示:对任务进行描述
-
上下文:给出与任务相关的其它背景信息(尤其在多轮交互中)
-
例子:必要时给出举例,[实践证明其对输出正确性有帮助]
-
输入:任务的输入信息;在提示词中明确的标识出输入
-
输出:输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、Java)
例如:表结构,生成数据库说明文档,生成代码,生成代码流程图
3.项目搭建
3.1搭建后端项目
1.初始化项目
Git下载
通过idea克隆源码,仓库地址:dkd-parent: 帝可得后台管理系统
Maven构建
使用idea打开项目(get from VCS)后,等待环境检查(主要是Maven下载项目依赖)
2.MySQL相关
导入sql
1、创建数据库create schema dkd;
2、执行sql脚本文件,完成导入
配置信息
在dkd-admin
模块下,编辑resources
目录下的application-druid.yml
,修改数据库连接
3.Redis相关
启动
在redis解压目录下,编辑redis.windows.conf
配置文件,设置redis密码
在redis解压目录下,执行redis-server.exe redis.windows.conf
启动
配置信息
在dkd-admin
模块下,resources
目录下的application.yml
,设置redis密码等相关信息
4.项目运行
在dkd-admin
模块下,运行com.ruoyi.DkdApplication.java
3.2搭建前端项目
1.初始化项目
通过vscode克隆源码,仓库地址:dkd-vue: 帝可得前端
需要关闭文件夹
2.安装依赖
右上角控制面板
npm install
3.项目运行
npm run dev
4.点位管理
4.1流程
4.2库表设计
你是一位软件工程师,帮我生成MySQL的表结构
需求如下:
1,区域表,表名tb_region,字段有主键id、区域名称
2,合作商表,表名tb_partner,字段有主键id、合作商名称、联系人、联系电话、分成比例(int类型)、账号、密码
3,点位表,表名tb_node,字段有主键id、点位名称、详细地址、商圈类型(int类型)
其他要求:
1,每张表中都有创建时间(create_time)、修改时间(date_time)、创建人(create_by)、修改人(update_by)、备注(remark)这些字段
2,每张表的主键都是自增的
3,区域与点位是一对多的关系,合作商与点位是一对多的关系,请用字段表示出来,并建立外键约束
4,请为所有字段都添加上comment
5,帮我给生成的表中插入一些北京城市相关区域、点位、合作商的测试数据
4.3步骤
①创建目录菜单
创建点位管理目录菜单
②添加数据字典
先创建商圈
的字典类型
再创建商圈
的字典数据
③配置代码生成信息
导入三张表(代码生成器)
④下载代码并导入项目
导入后端代码:右键main
4.4区域管理改造
1.参考页面原型,完成基础布局展示改造
将主键改为序号并升序排序
删除和新增的图标进行删除
2.在区域列表查询中,需要显示每个区域的点位数
实现思路
(1)同步存储:在区域表中有点位数的字段,当点位发生变化时,同步区域表中的点位数。
-
优点:由于是单表查询操作,查询列表效率最高。
-
缺点:需要在点位增删改时修改区域表中的数据,有额外的开销,数据也可能不一致。
(2)关联查询:编写关联查询语句,在mapper 层封装。
-
优点:实时查询,数据100%正确,不需要单独维护。
-
缺点:SQL语句较复杂,如果数据量大,性能比较低。
区域和点位表,记录个数都不是很多,所以我们采用关联查询这种方案。
1.SQL查询:先聚合统计每个区域的点位数,然后与区域表进行关联查询
-- 传统模式
-- 1.先聚合统计每个区域下的点位数
-- 确定查询表 tb_node
-- 确定分组字段 region_id
select region_id,count(*) as node_count from tb_node group by region_id;
-- 2.然后与区域表进行关联查询
select r.id,r.region_name,r.remark,ifnull(n.node_count,0) as node_count from tb_region r
left join (select region_id,count(*) as node_count from tb_node group by region_id) n on r.id=n.region_id;-- AI辅助编程模式
-- 查询区域表所有的信息,需要显示每个区域的点位数
SELECT r.*, COUNT(n.id) AS node_count FROM tb_region r LEFT JOIN tb_node n ON r.id = n.region_id GROUP BY r.id;
2.根据接口文档和sql创建RegionVo(返回给前端的类)
创建包VO
创建RegionVo类
在mapper和xml文件中增加对应的方法
用全类名
改成小写的long
字段别名r.region_name
Mybatis开启自动驼峰命名转换admin-mybatis
然后依次修改service serviceimpl mapper层的方法
4.5合作商管理改造
1.前端修改根据页面原型
2.在PartnerServiceImpl的新增方法中修改将数据库中的密码加密,不能直接看到
使用SecurityUtil工具类,对密码加密,增加系统安全性,避免泄露风险
3.查看详情按钮
1.前端改造
2.查询合作商列表,显示点位数(与区域列表实现方式相同。ctrl+f9实现热部署 )
1.SQL(联表查询)
2.PartnerVo
3.mapper和xml
sql语句后面不能加;
因为用到了分页查询,后面还会自动拼接limit
4.Controller
4.重置密码
开发流程
后端: