基于SpringBoot的超市信息管理系

news2024/11/26 4:51:01

✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌

🍅文末获取项目下载方式🍅


一、项目背景介绍:

随着我国经济的不断发展,许多零售企业在发展过程中面临着业务不断增长,而管理水平相对滞后的困境。尤其是许多企业在逐年经营过程中,积累了大量历史数据,但是信息比较分散、相互独立。在信息技术迅猛发展的今天,处于竞争性行业的中小型零售企业如何在未来的市场竞争中借助信息化实时掌握营销动态,不断提升服务水平,提高资源配置水平和核心竞争力,成为他们不得不面对的问题。
在零售企业中引入超市信息管理系统,利用收银机将超市中各种商品的进货、退货、销售等信息输入电脑,使得经营管理者能够及时掌控经营信息,作出合适的各种采购及货物库存决策。
超市信息管理系统,可完成商品采购订货、销售、盘点库存、财务分析等管理功能,并对商品的购销存状态实时跟踪记录。本论文主要介绍超市信息管理系统中的系统登录、商品录入、库存管理、商品销售等部分内容,以展现设计一个完整信息管理系统的思路和步骤。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Spring:Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
  3. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  4. Mybatis:MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。
  5. Thymeleaf:thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它是一个开源的Java库,基于Apache License 2.0许可,由Daniel Fernández创建,该作者还是Java加密库Jasypt的作者。

Thymeleaf提供了一个用于整合Spring MVC的可选模块,在应用开发中,你可以使用Thymeleaf来完全代替JSP或其他模板引擎,如Velocity、FreeMarker等。Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。
6. Redis:redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

三、系统功能模块介绍:

功能模块图

四、数据库设计:

1:‘销售账单表’(bill)

字段名类型默认值列注释
idbigintNULL账单项目编号
product_idvarcharNULL商品编号
product_namevarcharNULL商品名称
category_idbigintNULL分类编号
category_namevarcharNULL所属分类
purchase_pricedecimalNULL进货价
sale_pricedecimalNULL销售价
profitsdecimalNULL净利润
numberbigintNULL购买数量
create_timedatetimeNULL创建日期

2:‘代码生成业务表’(gen_table)

字段名类型默认值列注释
table_idbigintNULL编号
table_namevarcharNULL表名称
table_commentvarcharNULL表描述
sub_table_namevarcharNULL关联子表的表名
sub_table_fk_namevarcharNULL子表关联的外键名
class_namevarcharNULL实体类名称
tpl_categoryvarcharNULL使用的模板(crud单表操作 tree树表操作 sub主子表操作)
package_namevarcharNULL生成包路径
module_namevarcharNULL生成模块名
business_namevarcharNULL生成业务名
function_namevarcharNULL生成功能名
function_authorvarcharNULL生成功能作者
gen_typecharNULL生成代码方式(0zip压缩包 1自定义路径)
gen_pathvarcharNULL生成路径(不填默认项目路径)
optionsvarcharNULL其它生成选项
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间
remarkvarcharNULL备注

3:‘代码生成业务表字段’(gen_table_column)

字段名类型默认值列注释
column_idbigintNULL编号
table_idvarcharNULL归属表编号
column_namevarcharNULL列名称
column_commentvarcharNULL列描述
column_typevarcharNULL列类型
java_typevarcharNULLJAVA类型
java_fieldvarcharNULLJAVA字段名
is_pkcharNULL是否主键(1是)
is_incrementcharNULL是否自增(1是)
is_requiredcharNULL是否必填(1是)
is_insertcharNULL是否为插入字段(1是)
is_editcharNULL是否编辑字段(1是)
is_listcharNULL是否列表字段(1是)
is_querycharNULL是否查询字段(1是)
query_typevarcharNULL查询方式(等于、不等于、大于、小于、范围)
html_typevarcharNULL显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)
dict_typevarcharNULL字典类型
sortintNULL排序
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间

4:‘商品表’(product)

字段名类型默认值列注释
auto_idintNULL商品分类编号
idvarcharNULL条形码
category_idbigintNULL商品分类编号
provider_idbigintNULL供应商编号
namevarcharNULL商品名称
factory_addressvarcharNULL生产地址
purchase_pricedecimalNULL进货价
sale_pricedecimalNULL销售价
stockintNULL库存

5:‘商品分类表’(product_category)

字段名类型默认值列注释
idintNULL商品分类编号
namevarcharNULL商品分类名称

6:‘供应商表’(product_provider)

字段名类型默认值列注释
idbigintNULL供应商编号
namevarcharNULL供应商名称
contact_namevarcharNULL联系人姓名
contact_phonevarcharNULL联系人电话
addressvarcharNULL供应商地址

7:‘Blob类型的触发器表’(qrtz_blob_triggers)

字段名类型默认值列注释
sched_namevarcharNULL调度名称
trigger_namevarcharNULLqrtz_triggers表trigger_name的外键
trigger_groupvarcharNULLqrtz_triggers表trigger_group的外键
blob_datablobNULL存放持久化Trigger对象

8:‘日历信息表’(qrtz_calendars)

字段名类型默认值列注释
sched_namevarcharNULL调度名称
calendar_namevarcharNULL日历名称
calendarblobNULL存放持久化calendar对象

9:‘Cron类型的触发器表’(qrtz_cron_triggers)

字段名类型默认值列注释
sched_namevarcharNULL调度名称
trigger_namevarcharNULLqrtz_triggers表trigger_name的外键
trigger_groupvarcharNULLqrtz_triggers表trigger_group的外键
cron_expressionvarcharNULLcron表达式
time_zone_idvarcharNULL时区

10:‘已触发的触发器表’(qrtz_fired_triggers)

字段名类型默认值列注释
sched_namevarcharNULL调度名称
entry_idvarcharNULL调度器实例id
trigger_namevarcharNULLqrtz_triggers表trigger_name的外键
trigger_groupvarcharNULLqrtz_triggers表trigger_group的外键
instance_namevarcharNULL调度器实例名
fired_timebigintNULL触发的时间
sched_timebigintNULL定时器制定的时间
priorityintNULL优先级
statevarcharNULL状态
job_namevarcharNULL任务名称
job_groupvarcharNULL任务组名
is_nonconcurrentvarcharNULL是否并发
requests_recoveryvarcharNULL是否接受恢复执行

11:‘任务详细信息表’(qrtz_job_details)

字段名类型默认值列注释
sched_namevarcharNULL调度名称
job_namevarcharNULL任务名称
job_groupvarcharNULL任务组名
descriptionvarcharNULL相关介绍
job_class_namevarcharNULL执行任务类名称
is_durablevarcharNULL是否持久化
is_nonconcurrentvarcharNULL是否并发
is_update_datavarcharNULL是否更新数据
requests_recoveryvarcharNULL是否接受恢复执行
job_datablobNULL存放持久化job对象

12:‘存储的悲观锁信息表’(qrtz_locks)

字段名类型默认值列注释
sched_namevarcharNULL调度名称
lock_namevarcharNULL悲观锁名称

13:‘暂停的触发器表’(qrtz_paused_trigger_grps)

字段名类型默认值列注释
sched_namevarcharNULL调度名称
trigger_groupvarcharNULLqrtz_triggers表trigger_group的外键

14:‘调度器状态表’(qrtz_scheduler_state)

字段名类型默认值列注释
sched_namevarcharNULL调度名称
instance_namevarcharNULL实例名称
last_checkin_timebigintNULL上次检查时间
checkin_intervalbigintNULL检查间隔时间

15:‘简单触发器的信息表’(qrtz_simple_triggers)

字段名类型默认值列注释
sched_namevarcharNULL调度名称
trigger_namevarcharNULLqrtz_triggers表trigger_name的外键
trigger_groupvarcharNULLqrtz_triggers表trigger_group的外键
repeat_countbigintNULL重复的次数统计
repeat_intervalbigintNULL重复的间隔时间
times_triggeredbigintNULL已经触发的次数

16:‘同步机制的行锁表’(qrtz_simprop_triggers)

字段名类型默认值列注释
sched_namevarcharNULL调度名称
trigger_namevarcharNULLqrtz_triggers表trigger_name的外键
trigger_groupvarcharNULLqrtz_triggers表trigger_group的外键
str_prop_1varcharNULLString类型的trigger的第一个参数
str_prop_2varcharNULLString类型的trigger的第二个参数
str_prop_3varcharNULLString类型的trigger的第三个参数
int_prop_1intNULLint类型的trigger的第一个参数
int_prop_2intNULLint类型的trigger的第二个参数
long_prop_1bigintNULLlong类型的trigger的第一个参数
long_prop_2bigintNULLlong类型的trigger的第二个参数
dec_prop_1decimalNULLdecimal类型的trigger的第一个参数
dec_prop_2decimalNULLdecimal类型的trigger的第二个参数
bool_prop_1varcharNULLBoolean类型的trigger的第一个参数
bool_prop_2varcharNULLBoolean类型的trigger的第二个参数

17:‘触发器详细信息表’(qrtz_triggers)

字段名类型默认值列注释
sched_namevarcharNULL调度名称
trigger_namevarcharNULL触发器的名字
trigger_groupvarcharNULL触发器所属组的名字
job_namevarcharNULLqrtz_job_details表job_name的外键
job_groupvarcharNULLqrtz_job_details表job_group的外键
descriptionvarcharNULL相关介绍
next_fire_timebigintNULL上一次触发时间(毫秒)
prev_fire_timebigintNULL下一次触发时间(默认为-1表示不触发)
priorityintNULL优先级
trigger_statevarcharNULL触发器状态
trigger_typevarcharNULL触发器的类型
start_timebigintNULL开始时间
end_timebigintNULL结束时间
calendar_namevarcharNULL日程表名称
misfire_instrsmallintNULL补偿执行的策略
job_datablobNULL存放持久化job对象

18:‘参数配置表’(sys_config)

字段名类型默认值列注释
config_idintNULL参数主键
config_namevarcharNULL参数名称
config_keyvarcharNULL参数键名
config_valuevarcharNULL参数键值
config_typecharNULL系统内置(Y是 N否)
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间
remarkvarcharNULL备注

19:‘部门表’(sys_dept)

字段名类型默认值列注释
dept_idbigintNULL部门id
parent_idbigintNULL父部门id
ancestorsvarcharNULL祖级列表
dept_namevarcharNULL部门名称
order_numintNULL显示顺序
leadervarcharNULL负责人
phonevarcharNULL联系电话
emailvarcharNULL邮箱
statuscharNULL部门状态(0正常 1停用)
del_flagcharNULL删除标志(0代表存在 2代表删除)
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间

20:‘字典数据表’(sys_dict_data)

字段名类型默认值列注释
dict_codebigintNULL字典编码
dict_sortintNULL字典排序
dict_labelvarcharNULL字典标签
dict_valuevarcharNULL字典键值
dict_typevarcharNULL字典类型
css_classvarcharNULL样式属性(其他样式扩展)
list_classvarcharNULL表格回显样式
is_defaultcharNULL是否默认(Y是 N否)
statuscharNULL状态(0正常 1停用)
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间
remarkvarcharNULL备注

21:‘字典类型表’(sys_dict_type)

字段名类型默认值列注释
dict_idbigintNULL字典主键
dict_namevarcharNULL字典名称
dict_typevarcharNULL字典类型
statuscharNULL状态(0正常 1停用)
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间
remarkvarcharNULL备注

22:‘定时任务调度表’(sys_job)

字段名类型默认值列注释
job_idbigintNULL任务ID
job_namevarcharNULL任务名称
job_groupvarcharNULL任务组名
invoke_targetvarcharNULL调用目标字符串
cron_expressionvarcharNULLcron执行表达式
misfire_policyvarcharNULL计划执行错误策略(1立即执行 2执行一次 3放弃执行)
concurrentcharNULL是否并发执行(0允许 1禁止)
statuscharNULL状态(0正常 1暂停)
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间
remarkvarcharNULL备注信息

23:‘定时任务调度日志表’(sys_job_log)

字段名类型默认值列注释
job_log_idbigintNULL任务日志ID
job_namevarcharNULL任务名称
job_groupvarcharNULL任务组名
invoke_targetvarcharNULL调用目标字符串
job_messagevarcharNULL日志信息
statuscharNULL执行状态(0正常 1失败)
exception_infovarcharNULL异常信息
create_timedatetimeNULL创建时间

24:‘系统访问记录’(sys_logininfor)

字段名类型默认值列注释
info_idbigintNULL访问ID
login_namevarcharNULL登录账号
ipaddrvarcharNULL登录IP地址
login_locationvarcharNULL登录地点
browservarcharNULL浏览器类型
osvarcharNULL操作系统
statuscharNULL登录状态(0成功 1失败)
msgvarcharNULL提示消息
login_timedatetimeNULL访问时间

25:‘菜单权限表’(sys_menu)

字段名类型默认值列注释
menu_idbigintNULL菜单ID
menu_namevarcharNULL菜单名称
parent_idbigintNULL父菜单ID
order_numintNULL显示顺序
urlvarcharNULL请求地址
targetvarcharNULL打开方式(menuItem页签 menuBlank新窗口)
menu_typecharNULL菜单类型(M目录 C菜单 F按钮)
visiblecharNULL菜单状态(0显示 1隐藏)
is_refreshcharNULL是否刷新(0刷新 1不刷新)
permsvarcharNULL权限标识
iconvarcharNULL菜单图标
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间
remarkvarcharNULL备注

26:‘通知公告表’(sys_notice)

字段名类型默认值列注释
notice_idintNULL公告ID
notice_titlevarcharNULL公告标题
notice_typecharNULL公告类型(1通知 2公告)
notice_contentvarcharNULL公告内容
statuscharNULL公告状态(0正常 1关闭)
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间
remarkvarcharNULL备注

27:‘操作日志记录’(sys_oper_log)

字段名类型默认值列注释
oper_idbigintNULL日志主键
titlevarcharNULL模块标题
business_typeintNULL业务类型(0其它 1新增 2修改 3删除)
methodvarcharNULL方法名称
request_methodvarcharNULL请求方式
operator_typeintNULL操作类别(0其它 1后台用户 2手机端用户)
oper_namevarcharNULL操作人员
dept_namevarcharNULL部门名称
oper_urlvarcharNULL请求URL
oper_ipvarcharNULL主机地址
oper_locationvarcharNULL操作地点
oper_paramvarcharNULL请求参数
json_resultvarcharNULL返回参数
statusintNULL操作状态(0正常 1异常)
error_msgvarcharNULL错误消息
oper_timedatetimeNULL操作时间

28:‘岗位信息表’(sys_post)

字段名类型默认值列注释
post_idbigintNULL岗位ID
post_codevarcharNULL岗位编码
post_namevarcharNULL岗位名称
post_sortintNULL显示顺序
statuscharNULL状态(0正常 1停用)
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间
remarkvarcharNULL备注

29:‘角色信息表’(sys_role)

字段名类型默认值列注释
role_idbigintNULL角色ID
role_namevarcharNULL角色名称
role_keyvarcharNULL角色权限字符串
role_sortintNULL显示顺序
data_scopecharNULL数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)
statuscharNULL角色状态(0正常 1停用)
del_flagcharNULL删除标志(0代表存在 2代表删除)
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间
remarkvarcharNULL备注

30:‘角色和部门关联表’(sys_role_dept)

字段名类型默认值列注释
role_idbigintNULL角色ID
dept_idbigintNULL部门ID

31:‘角色和菜单关联表’(sys_role_menu)

字段名类型默认值列注释
role_idbigintNULL角色ID
menu_idbigintNULL菜单ID

32:‘用户信息表’(sys_user)

字段名类型默认值列注释
user_idbigintNULL用户ID
dept_idbigintNULL部门ID
login_namevarcharNULL登录账号
user_namevarcharNULL用户昵称
user_typevarcharNULL用户类型(00系统用户 01注册用户)
emailvarcharNULL用户邮箱
phonenumbervarcharNULL手机号码
sexcharNULL用户性别(0男 1女 2未知)
avatarvarcharNULL头像路径
passwordvarcharNULL密码
saltvarcharNULL盐加密
statuscharNULL帐号状态(0正常 1停用)
del_flagcharNULL删除标志(0代表存在 2代表删除)
login_ipvarcharNULL最后登录IP
login_datedatetimeNULL最后登录时间
pwd_update_datedatetimeNULL密码最后更新时间
create_byvarcharNULL创建者
create_timedatetimeNULL创建时间
update_byvarcharNULL更新者
update_timedatetimeNULL更新时间
remarkvarcharNULL备注

33:‘在线用户记录’(sys_user_online)

字段名类型默认值列注释
sessionIdvarcharNULL用户会话id
login_namevarcharNULL登录账号
dept_namevarcharNULL部门名称
ipaddrvarcharNULL登录IP地址
login_locationvarcharNULL登录地点
browservarcharNULL浏览器类型
osvarcharNULL操作系统
statusvarcharNULL在线状态on_line在线off_line离线
start_timestampdatetimeNULLsession创建时间
last_access_timedatetimeNULLsession最后访问时间
expire_timeintNULL超时时间,单位为分钟

34:‘用户与岗位关联表’(sys_user_post)

字段名类型默认值列注释
user_idbigintNULL用户ID
post_idbigintNULL岗位ID

35:‘用户和角色关联表’(sys_user_role)

字段名类型默认值列注释
user_idbigintNULL用户ID
role_idbigintNULL角色ID

五、功能模块:

  1. 登录:通过管理员给与的账号登录进入到系统中,不同的账号拥有不同的权限,而权限不同登录进系统所看到的和能够使用的功能也不一样

    登录注册

  2. 系统首页:在系统首页可以查看系统的数据统计信息,系统的用户订单收入等多维度的统计信息

    系统首页

  3. 超市收银台:在超市收银台中输入商品信息和数量系统回自己统计价格,在结账后系统回将金额统计进入销售账单中,并且同步到系统首页的大屏统计中,同时对应的库存也会对应的减少

    超市收银台

  4. 销售账单:销售账单中为收银台的每一笔记账信息

    销售账单

  5. 库存管理:

    库存管理

  6. 商品分类:在商品分类管理中系统回将每个商品进行分类,而可以选择的类型则是在商品分类中进行管理

    商品分类

  7. 供应商:供应商列表对是对超市的供应商做了一个清单管理,超市人员可以很直观的了解超市的供应商信息

    供应商

  8. 数据权限管理:在超市管理中有用户,角色,菜单,部门,岗位等信息的管理,他们的关系是每个用户都拥有有属于的部门,并且管理员可以通过设置不同的角色,角色拥有的菜单和数据权限,用户拥有不同的角色来达到对系统的额权限进行管理.

    数据权限管理

12

10

9

8

六、代码示例:

;

@Controller
@RequestMapping("/system/checkout")
public class CheckOutController extends BaseController {

  private String prefix = "system/checkout";

  @Autowired
  private CheckoutService checkoutService;

//  @RequiresPermissions("system:checkout:view")
  @GetMapping()
  public String product() {
    return prefix + "/checkout";
  }

  /**
   * 新增保存商品分类
   */
  @PostMapping("/tmp-bill-item/add")
  @ResponseBody
  public AjaxResult saveTempBillItem(AddTempBillItemDto addTempBillItemDto)
  {
    User currentUser = ShiroUtils.getSysUser();
    Long userId = currentUser.getUserId();
    boolean success = checkoutService.saveTempBillItem(userId, addTempBillItemDto);
    if (success) {
      return AjaxResult.success("添加成功");
    } else {
      return AjaxResult.error("找不到商品,请检查商品编号是否正确");
    }
  }

  /**
   * 获取数据集合
   */
  @PostMapping("/tmp-bill-item")
  @ResponseBody
  public TableDataInfo getTempBillItem() {
    User currentUser = ShiroUtils.getSysUser();
    Long userId = currentUser.getUserId();
    return getDataTable(checkoutService.getTempBillItems(userId));
  }

  /**
   * 获取数据集合
   */
  @GetMapping("/search-product")
  @ResponseBody
  public AjaxResult collection(@RequestParam("id") String id)
  {
    AjaxResult ajax = new AjaxResult();
    ajax.put("result", checkoutService.matchProductSuggestByProductId(id));
    return ajax;
  }

  /**
   * 获取数据集合
   */
  @GetMapping("/total-should-pay")
  @ResponseBody
  public AjaxResult countTempBillItemsTotalShouldPay() {
    User currentUser = ShiroUtils.getSysUser();
    Long userId = currentUser.getUserId();
    AjaxResult ajax = new AjaxResult();
    ajax.put("result", checkoutService.countTempBillItemsTotalShouldPay(userId).toString());
    return ajax;
  }


  @GetMapping("/tmp-bill-item/remove")
  @ResponseBody
  public AjaxResult removeTempBillItem(@RequestParam("index") int index)
  {
    User currentUser = ShiroUtils.getSysUser();
    Long userId = currentUser.getUserId();
    checkoutService.removeTempBillItem(userId, index);
    return AjaxResult.success("删除成功");
  }

  @GetMapping("/tmp-bill-item/close")
  @ResponseBody
  public AjaxResult closeTempBillItem()
  {
    User currentUser = ShiroUtils.getSysUser();
    Long userId = currentUser.getUserId();
    checkoutService.closeTempBillItem(userId);
    return AjaxResult.success("删除成功");
  }

  /*
    确认结算
   */
  @GetMapping("/tmp-bill-item/submit")
  @ResponseBody
  public AjaxResult submitTempBillItem()
  {
    User currentUser = ShiroUtils.getSysUser();
    Long userId = currentUser.getUserId();
    checkoutService.submitTempBillItem(userId);
    return AjaxResult.success("结算成功");
  }
}


@Controller
@RequestMapping("/system/product")
public class ProductController extends BaseController
{
    private String prefix = "system/product";

    @Autowired
    private IProductService productService;

    @RequiresPermissions("system:product:view")
    @GetMapping()
    public String product()
    {
        return prefix + "/product";
    }

    /**
     * 查询商品列表
     */
    @RequiresPermissions("system:product:list")
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(Product product)
    {
        startPage();
        List<Product> list = productService.selectProductList(product);
        return getDataTable(list);
    }

    /**
     * 导出商品列表
     */
    @RequiresPermissions("system:product:export")
    @Log(title = "商品", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    @ResponseBody
    public AjaxResult export(Product product)
    {
        List<Product> list = productService.selectProductList(product);
        ExcelUtil<Product> util = new ExcelUtil<Product>(Product.class);
        return util.exportExcel(list, "商品数据");
    }

    /**
     * 新增商品
     */
    @GetMapping("/add")
    public String add()
    {
        return prefix + "/add";
    }

    /**
     * 新增保存商品
     */
    @RequiresPermissions("system:product:add")
    @Log(title = "商品", businessType = BusinessType.INSERT)
    @PostMapping("/add")
    @ResponseBody
    public AjaxResult addSave(Product product)
    {
        return toAjax(productService.insertProduct(product));
    }

    /**
     * 修改商品
     */
    @RequiresPermissions("system:product:edit")
    @GetMapping("/edit/{id}")
    public String edit(@PathVariable("id") String id, ModelMap mmap)
    {
        Product product = productService.selectProductById(id);
        mmap.put("product", product);
        return prefix + "/edit";
    }

    /**
     * 修改保存商品
     */
    @RequiresPermissions("system:product:edit")
    @Log(title = "商品", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    @ResponseBody
    public AjaxResult editSave(Product product)
    {
        return toAjax(productService.updateProduct(product));
    }

    /**
     * 删除商品
     */
    @RequiresPermissions("system:product:remove")
    @Log(title = "商品", businessType = BusinessType.DELETE)
    @PostMapping( "/remove")
    @ResponseBody
    public AjaxResult remove(String ids)
    {
        return toAjax(productService.deleteProductByIds(ids));
    }
}


七、论文参考:

论文参考···论文参考图

八、项目总结:

通过对基于springboot的超市信息管理系的开发,让我深刻明白开发一个程序软件需要经历的流程,当确定要开发一个基于springboot的超市信息管理系的程序时,
我在开发期间,对其功能进行合理的需求分析,然后才是程序软件的功能的框架设计,数据库的实体与数据表设计,
程序软件的功能详细界面实现,以及程序的功能测试等进行全方位的细致考虑,虽然在此过程中,各个环节都遇到了大大小小的困难,但是通过对这些问题进行反复的分析,深入的思考,
借助各种相关文献资料提供的方法与解决思路成功解决面临的各个问题,最后成功的让我开发的基于springboot的超市信息管理系得以正常运行。
基于springboot的超市信息管理系在功能上面是基本可以满足用户对系统的操作,但是这个程序软件也有许多方面是不足的,因此,在下一个时间阶段,有几点需要改进的地方需要提出来,它们分别是:
(1)操作页面可以满足用户简易操作的要求,但是在页面多样化设计层面上需要把一些比较丰富的设计结构考虑进来。
(2)程序软件的总体安全性能需要优化,例如程序的退出安全性,以及程序的并发性等问题都需要进行安全性升级,让开发的基于springboot的超市信息管理系中的相关网站更贴合。
(3)需要对程序的数据结构方面,程序的代码方面等进行优化,让运行起来的程序可以保持稳定运行,也让程序能够保证短时间内处理相关事务,节省处理事务的时间,提高事务处理的效率,
同时对服务器上资源占用的比例进行降低。
基于springboot的超市信息管理系的开发一方面是对自身专业知识技能进行最终考核,另一方面也是让自己学会独立解决程序开发过程中所遇到的问题,掌握将理论知识运用于程序开发实践的方法。
基于springboot的超市信息管理系的开发最终目标就是让系统更具人性化,同时在逻辑设计上,让系统能够更加的严谨。

九、源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取项目下载链接,博主联系方式👇🏻👇🏻👇🏻

链接点击直达:下载链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1257734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 OpenCV 发现圆角矩形的轮廓

OpenCV - 如何找到圆角矩形的矩形轮廓? 问题: 在图像中,我试图找到矩形对象的圆角轮廓。然而,我对两者的尝试 HoughLinesP 并 findContours 没有产生预期的结果。 我的目标是找到一个类似于以下形状的矩形: 。 代码: import cv2 import matplotlib.pyplot as plt…

深入理解Transformer,兼谈MHSA(多头自注意力)、LayerNorm、FFN、位置编码

Attention Is All You Need——集中一下注意力 Transformer其实不是完全的Self-Attention结构&#xff0c;还带有残差连接、LayerNorm、类似1维卷积的Position-wise Feed-Forward Networks&#xff08;FFN&#xff09;、MLP和Positional Encoding&#xff08;位置编码&#xf…

H5标签的contenteditable属性在项目种的使用

介绍 contenteditable 是 HTML5 中的新属性。属性值为true 可以编辑元素内容&#xff0c;false 无法编辑元素内容。 简单说: div标签&#xff0c;加上这个属性&#xff0c;就变成可以编辑状态。 <p contenteditable"true">这里可编辑</p>属性可以开发的…

SAP Smartforms设计

第八章 SMART FORMS设计 要点列表 概览&#xff1b; Form&#xff08;表格&#xff09;&#xff1b; Smart Styles&#xff08;样式&#xff09;&#xff1b; Text Module&#xff08;文本模块&#xff09;&#xff1b; 使用标准表方式打印&#xff1b; 使用模板方式打印…

C语言基础篇5:指针(二)

接上篇&#xff1a;C语言基础篇5&#xff1a;指针(一) 4 指针作为函数参数 4.1 指针变量作为函数的参数 指针型变量可以作为函数的参数&#xff0c;使用指针作为函数的参数是将函数的参数声明为一个指针&#xff0c;前面提到当数组作为函数的实参时&#xff0c;值传递数组的地址…

java中SPI机制

一&#xff1a;作用 SPI的作用其实就是&#xff0c;在系统内部&#xff0c;定义一个能力接口&#xff0c;该接口可以满足自己的业务需要&#xff0c;比如发送短信&#xff0c;定义一个发送短信的接口&#xff0c;至于用什么方式实现&#xff0c;可以交给短信服务提供商去实现&…

[C/C++]数据结构 堆排序(详细图解)

一:前言 在[C/C]数据结构 堆的详解中,介绍了什么是堆,并且完成了堆的实现和一系列接口,包括向上调整法和向下调整法等,接下来小编介绍一个有点量级的排序方法------堆排序,时间复杂度为O(n*lgn) 二:堆排序详解 2.1 方法介绍 1.首先将待排序数组建为大堆,此时堆顶元素就为数组…

肖sir __数据库练习__001

建表语句&#xff1a; create table student ( id int(4),age int(8),sex int(4),name varchar(20), class int(4), math int(4)) DEFAULT charsetutf8; INSERT into student VALUES(1,25,1,‘zhansan’,1833,90); INSERT into student VALUES(2,25,1,‘lisi’,1833,67); INSER…

Windows安装Docker、自定义安装目录

目录 前言一、Docker安装包下载二、自定义Docker安装路径、设置到其他盘三、安装Docker四、安装后配置1.修改镜像保存路径2.自定义镜像源 五、Docker运行验证1.docker/welcome-to-docker2.MySQL服务 总结 前言 Docker是一种开源的容器化平台&#xff0c;可以让开发者使用容器的…

异步爬虫提速实践-在Scrapy中使用Aiohttp/Trio

在构建爬虫系统时&#xff0c;提高爬虫速度是一个关键问题。而使用异步爬虫技术可以显著提升爬取效率。在本文中&#xff0c;我将与大家分享如何在Scrapy中利用Aiohttp或Trio库实现异步爬取&#xff0c;以加快爬虫的速度。让我们开始吧&#xff01; 1. 安装所需的库 首先&…

MyBatis-Plus及多数据源入门教程

开发环境配置 JDK 1.8、Maven 3.8.8、 IDEA CE 2023.2、MySQL 8.0.34 框架介绍 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。MyBatis 是一款非常优秀的开源…

企业级应用场景中,LLM 的数据特性剖析及处理对策

编者按&#xff1a;今年以来&#xff0c;大语言模型&#xff08;LLM&#xff09;在消费者(2C)市场崭露头角&#xff0c;同时也吸引了大量企业的关注。但是直接将这些面向消费者的模型引入企业环境&#xff0c;可能会面临一些风险。今天我们为大家带来的这篇文章&#xff0c;作者…

GPTs 初体验 - 1 分钟就能创建一个自己的 ChatGPT? | 京东云技术团队

就在 11.10 号早上&#xff0c;ChatGPT 已经偷摸的把GPTs功能&#xff0c;开放给所有尊贵的 Plus 用户了。 随着这波的功能开放&#xff0c;界面也是改了不少。点击左侧的 Explore 或者左下角的用户处&#xff0c;就可以直接进入新的 GPTs 功能&#xff1a; 这里可以看到我们…

Vue3挂载完毕后,隐藏dom再重新加载组件的方法

组件原本是在PC端使用的&#xff0c;现在需要把组件再封装一次&#xff0c;供app调用&#xff0c;但是在app上会显示tag栏&#xff0c;有占位影响空间&#xff0c;所以需求去掉头部tag&#xff0c;只显示下方组件。 实现方法&#xff0c;以前是直接引用的组件&#xff0c;现在改…

MySQL 前瞻

数据库 是一类软件&#xff0c;这一类软件可以用来“管理数据”&#xff08;对数据进行保存&#xff0c;增删改查 [与数据结构的有什么区别呢&#xff1f;]&#xff09; 数据结构是实现增删改查的具体方式 数据库则是管理数据的软件&#xff0c;实现数据库软件内部就用到了很…

2024重庆大学计算机考研分析

24计算机考研|上岸指南 重庆大学 重庆大学计算机考研招生学院是计算机学院和大数据与软件学院。目前均已出拟录取名单。 重庆大学计算机学院是我国高校最早开展计算机研究的基地之一&#xff0c;1978年和1986年获西南地区首个硕士和博士点&#xff0c;1998年成立计算机学院&a…

主机怎么通过命令行方式向虚拟机传输文件

这是几个月前遇到的问题了&#xff0c;那时候想着要记录下来&#xff0c;但后来忙忘了&#xff0c;这次想起来了&#xff0c;于是记录一下。 之前打靶场的时候需要将netcat-win32-1.12放入虚拟机的/var/www/html下&#xff0c;但是我虚拟机无法上网&#xff0c;也就是说无法直…

一篇搞懂Caffeine

概念 Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库。 缓存和ConcurrentMap有点相似&#xff0c;但还是有所区别。最根本的区别是ConcurrentMap将会持有所有加入到缓存当中的元素&#xff0c;直到它们被从缓存当中手动移除。但是&#xff0c;Caffeine的…

虹科Pico汽车示波器 | 汽车免拆检修 | 2016款东风悦达起亚K5车发动机怠速抖动严重、加速无力

一、故障现象 一辆2016款东风悦达起亚K5车&#xff0c;搭载G4FJ发动机&#xff0c;累计行驶里程约为8.2万km。该车发动机怠速抖动严重、加速无力&#xff0c;同时发动机故障灯异常点亮&#xff0c;为此在其他维修厂更换了所有点火线圈和火花塞&#xff0c;故障依旧&#xff0c;…

JavaScript 的 DOM 知识点有哪些?

文档对象模型&#xff08;Document Object Model&#xff0c;简称 DOM&#xff09;&#xff0c;是一种与平台和语言无关的模型&#xff0c;用来表示 HTML 或 XML 文档。文档对象模型中定义了文档的逻辑结构&#xff0c;以及程序访问和操作文档的方式。 当网页加载时&#xff0…