# salemanagesys **Repository Path**: neufurious/salemanagesys ## Basic Information - **Project Name**: salemanagesys - **Description**: 简易门店进销管理系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-04-27 - **Last Updated**: 2023-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简易门店进销管理系统 #### 介绍 该项目为简易版门店进销管理系统,包含的功能模块有登录模块、商品查询模块、商品入库模块、商品出库模块 #### 代码结构 本简易门店进销管理系统的代码结构如下图所示: ![输入图片说明](image/%E4%BB%A3%E7%A0%81%E7%BB%93%E6%9E%84%E5%9B%BE.png) #### 服务结构 ![输入图片说明](image/%E6%9C%8D%E5%8A%A1%E7%BB%93%E6%9E%84%E5%9B%BE.png) #### 功能介绍 ##### 1. 用户模块 1)点击【注册】按钮进行新用户的注册,点击后会弹出如下窗口 用户名【必填】,密码【必填】,手机号【必填】 ![输入图片说明](image/%E7%99%BB%E5%BD%951.png) 2)点击【确定】按钮进行确认信息后注册新用户 ![输入图片说明](image/%E7%99%BB%E5%BD%952.png) 3)登录成功后进入主页面 ![输入图片说明](image/%E7%99%BB%E5%BD%953.png) ##### 2. 库存查询模块 1)点击【新增】按钮可以新增产品 ![输入图片说明](image/%E5%BA%93%E5%AD%981.png) 2)产品名称【必填】,产品编码【必填】,产品单价【必填】,单击【确认】按钮后即可创建一个新的产品记录。 ![输入图片说明](image/%E5%BA%93%E5%AD%982.png) 3)搜索栏可以根据产品名称或产品编码精确搜索符合满足条件的产品记录。 入库总量=所有入库明细记录的总入库数量之和, 出库总量=所有出库明细记录的总出库数量之和, 剩余总量=入库总量-出库总量 产品总价=剩余总量*产品单价 ![输入图片说明](image/%E5%BA%93%E5%AD%983.png) 4)每条记录旁的【编辑】按钮可以对相应记录进行编辑更改 ![输入图片说明](image/%E5%BA%93%E5%AD%984.png) ##### 3. 产品入库模块 1)点击【新增】按钮可以新增产品入库明细,产品名称【必填】,入库批号【必填】,入库数量【必填】 ![输入图片说明](image/%E5%85%A5%E5%BA%931.png) ![输入图片说明](image/%E5%85%A5%E5%BA%932.png) 2)搜索栏可以根据产品名称或产品编码精确搜索符合满足条件的产品入库记录 ![输入图片说明](image/%E5%85%A5%E5%BA%933.png) ##### 4. 产品出库模块 1)点击【新增】按钮可以新增产品出库明细,产品名称【必填】,出库批号【必填】,出库数量【必填】 ![输入图片说明](image/%E5%87%BA%E5%BA%931.png) ![输入图片说明](image/%E5%87%BA%E5%BA%932.png) 2)搜索栏可以根据产品名称或产品编码精确搜索符合满足条件的产品出库记录 ![输入图片说明](image/%E5%87%BA%E5%BA%933.png) #### 内部实现 ##### 1. 用户模块 1)用户登录流程设计 ![输入图片说明](image/%E8%B4%A6%E5%8F%B7%E7%99%BB%E5%BD%95%E6%B5%81%E7%A8%8B%E5%9B%BE.png) 2)用户重置密码 用户重置密码采用先更新数据库后删除Redis的方式,通过MQ重试的方式保障Redis和数据中的数据一致性。MQ生成消息的保证通过将生成MQ信息与更新用户数据放在一个事务中实现,MQ投递消息的保证通过定时扫描MQ信息记录的重试机制实现。执行Redis删除命令的MQ消息的保证通过RabbitMQ自身的重试机制实现。 ![输入图片说明](image/%E9%87%8D%E7%BD%AE%E5%AF%86%E7%A0%81%E6%B5%81%E7%A8%8B%E5%9B%BE.png) 3)用户密码校验 Vue端接收到用户输入的明码后通过与固定的盐值Salt1进行MD5计算后,将计算后的结果进行网络传输,防止中间人截取到明码。Springboot端接收到网络传输的MD5(Salt1+密码明码)后,随机生成Salt2,计算MD5(MD5(Salt1+密码明码)+Salt2),并将此计算结果存入数据库,防止脱库后相关密码习惯信息曝露。 ![输入图片说明](image/%E5%AF%86%E7%A0%81%E7%94%9F%E6%88%90%E6%B5%81%E7%A8%8B.png) #### 参考文献及开源代码 - https://next.attojs.com/guide/documentation/dataFetching.html - https://blog.csdn.net/s_frozen/article/details/126262949 - https://www.runoob.com/sqlite/sqlite-tutorial.html - https://www.cnblogs.com/a001jingzhao/p/15858463.html - https://zhuanlan.zhihu.com/p/552263428 - https://zhuanlan.zhihu.com/p/531338144 - https://blog.csdn.net/u011077966/article/details/126869822 - https://blog.csdn.net/A_yonga/article/details/116481433 - https://github.com/HanJJIE/redis - https://github.com/zaiyunduan123/springboot-seckill - https://github.com/TiantianUpup/springboot-log - https://blog.csdn.net/weixin_43727372/article/details/100513553