基于微服务架构的店铺管理系统的设计与实现

摘要

随着互联网和电商行业的快速发展,越来越多的商铺开始借助信息化手段来提高管理效率、优化客户体验。传统的店铺管理系统往往存在着系统结构单一、维护复杂、扩展性差等问题,这些问题严重影响了店铺的灵活运营和快速响应市场需求的能力。微服务架构的出现为解决这些问题提供了新的思路,它通过将复杂的系统拆解为多个独立的服务模块,能够更好地实现高内聚低耦合,支持系统的灵活扩展和高效维护。

本论文提出了一种基于微服务架构的店铺管理系统设计方案,结合Spring Cloud框架,实现了对店铺日常运营的全面管理。系统分为三类用户:管理员、普通用户和员工用户,满足不同角色的需求。管理员可以通过系统对商品、库存、订单、财务等各类资源进行全面管理,并实现员工和供应商的管理;普通用户则能方便地浏览商品信息、查询新闻资讯、管理个人账户等;员工用户主要负责商品管理、库存管理、出入库操作以及考勤等。整个系统充分利用微服务架构的优势,模块化设计确保了系统的高效性、灵活性和可扩展性。

通过Spring Cloud框架的应用,本系统能够实现各模块间的高效通信与协作,确保系统的稳定性与高可用性。该系统不仅能够提升店铺的运营效率,还能增强用户体验,为店铺管理提供了新的技术支持与解决方案。

关键字:微服务;Spring Cloud;店铺管理;采购入库

Abstract

With the rapid development of the Internet and e-commerce industry, more and more stores have begun to use information technology to improve management efficiency and optimize customer experience. Traditional store management systems often suffer from problems such as a single system structure, complex maintenance, and poor scalability, which seriously affect the flexible operation of stores and their ability to quickly respond to market demand. The emergence of microservice architecture provides new ideas for solving these problems. It decomposes complex systems into multiple independent service modules, which can better achieve high cohesion and low coupling, support flexible expansion and efficient maintenance of the system.

This paper proposes a design scheme for a store management system based on microservice architecture, combined with the Spring Cloud framework, to achieve comprehensive management of daily store operations. The system is divided into three types of users: administrators, regular users, and employee users, meeting the needs of different roles. Administrators can comprehensively manage various resources such as goods, inventory, orders, and finance through the system, and achieve management of employees and suppliers; Ordinary users can conveniently browse product information, search for news and information, manage personal accounts, etc; Employee users are mainly responsible for product management, inventory management, inbound and outbound operations, and attendance. The entire system fully utilizes the advantages of microservice architecture, and modular design ensures the efficiency, flexibility, and scalability of the system.

Through the application of the Spring Cloud framework, this system can achieve efficient communication and collaboration between various modules, ensuring the stability and high availability of the system. This system not only improves the operational efficiency of the store, but also enhances the user experience, providing new technical support and solutions for store management.

Keywords: microservices; Spring Cloud; Store management; Purchase inventory;

目录

++++摘要++++

++++Abstract++++

[++++1++++ ++++绪论++++](#1 绪论)

[++++1.1++++ ++++研究背景与意义++++](#1.1 研究背景与意义)

[++++1.1.1 研究背景++++](#1.1.1 研究背景)

[++++1.1.2 研究意义++++](#1.1.2 研究意义)

[++++1.2++++ ++++国内外研究现状++++](#1.2 国内外研究现状)

[++++1.2.1 国内研究现状++++](#1.2.1 国内研究现状)

[++++1.2.2 国外研究现状++++](#1.2.2 国外研究现状)

[++++1.3++++ ++++论文组织结构++++](#1.3 论文组织结构)

[++++2++++ ++++相关技术介绍++++](#2 相关技术介绍)

[++++2.1++++ ++++Java语言++++](#2.1 Java语言)

[++++2.2++++ ++++B/S框架++++](#2.2 B/S框架)

[++++2.3++++ ++++Spring Cloud框架++++](#2.3 Spring Cloud框架)

[++++2.4++++ ++++Vue技术++++](#2.4 Vue技术)

[++++2.5++++ ++++MySQL数据库++++](#2.5 MySQL数据库)

[++++3++++ ++++需求分析++++](#3 需求分析)

[++++3.1++++ ++++功能需求分析++++](#3.1 功能需求分析)

[++++3.1.1 注册用户功能++++](#3.1.1 注册用户功能)

[++++3.1.2 管理员功能++++](#3.1.2 管理员功能)

[++++3.1.3 员工用户功能++++](#3.1.3 员工用户功能)

[++++3.2++++ ++++非功能需求分析++++](#3.2 非功能需求分析)

[++++3.3++++ ++++可行性分析++++](#3.3 可行性分析)

[++++3.3.1 技术可行性++++](#3.3.1 技术可行性)

[++++3.3.2 操作可行性++++](#3.3.2 操作可行性)

[++++3.3.3 经济可行性++++](#3.3.3 经济可行性)

[++++4++++ ++++系统设计++++](#4 系统设计)

[++++4.1++++ ++++系统架构设计++++](#4.1 系统架构设计)

[++++4.2++++ ++++系统总体流程设计++++](#4.2 系统总体流程设计)

[++++4.2.1 用户++++ ++++登录流程++++](#4.2.1 用户登录流程)

[++++4.2.2++++ ++++添加信息流程++++](#4.2.2 添加信息流程)

[++++4.2.3++++ ++++修改信息流程++++](#4.2.3 修改信息流程)

[++++4.2.4++++ ++++删除信息流程++++](#4.2.4 删除信息流程)

[++++4.3++++ ++++系统总体功能设计++++](#4.3 系统总体功能设计)

[++++4.4++++ ++++数据库设计++++](#4.4 数据库设计)

[++++4.4.1 概念设计++++](#4.4.1 概念设计)

[++++4.4.2 数据库表设计++++](#4.4.2 数据库表设计)

[++++5++++ ++++系统实现++++](#5 系统实现)

[++++5.1++++ ++++普通用户功能实现++++](#5.1 普通用户功能实现)

[++++5.1.1 注册界面++++](#5.1.1 注册界面)

[++++5.1.2 登录界面++++](#5.1.2 登录界面)

[++++5.1.3 首页界面++++](#5.1.3 首页界面)

[++++5.1.4 新闻咨询界面++++](#5.1.4 新闻咨询界面)

[++++5.2++++ ++++员工用户功能实现++++](#5.2 员工用户功能实现)

[++++5.2.1 个人信息修改界面++++](#5.2.1 个人信息修改界面)

[++++5.2.2 打卡签到管理++++](#5.2.2 打卡签到管理)

[++++5.2.3 入库信息管理++++](#5.2.3 入库信息管理)

[++++5.2.4 库存信息管理++++](#5.2.4 库存信息管理)

[++++5.2.5 出库信息管理++++](#5.2.5 出库信息管理)

[++++5.3++++ ++++管理员功能实现++++](#5.3 管理员功能实现)

[++++5.3.1 商品类型管理++++](#5.3.1 商品类型管理)

[++++5.3.2 商品库存管理++++](#5.3.2 商品库存管理)

[++++5.3.3 入库信息管理++++](#5.3.3 入库信息管理)

[++++5.3.4 系统管理++++](#5.3.4 系统管理)

[++++6++++ ++++系统测试++++](#6 系统测试)

[++++6.1++++ ++++测试目的++++](#6.1 测试目的)

[++++6.2++++ ++++测试方法++++](#6.2 测试方法)

[++++6.3++++ ++++测试内容++++](#6.3 测试内容)

[++++6.4++++ ++++测试分析++++](#6.4 测试分析)

[++++7++++ ++++总结++++](#7 总结)

++++参考文献++++

++++致谢++++

++++附录++++

++++系统核心代码设计++++

  1. 绪论
    1. 研究背景与意义
      1. 研究背景

随着电子商务的飞速发展,传统店铺管理模式已逐渐暴露出效率低、响应慢、数据难以共享等问题。在这种背景下,如何有效提升店铺管理效率、降低运营成本,并在竞争激烈的市场中保持灵活的应变能力,成为了企业有待解决的课题。传统的店铺管理系统通常采用单体架构,难以满足系统的高并发、高可用性和灵活扩展需求。因此,采用微服务架构来构建店铺管理系统,成为了提升系统性能与可扩展性的理想选择。微服务架构能够将店铺管理的不同功能模块拆解为独立服务,支持灵活扩展和快速迭代,能够更好地应对复杂业务场景,提升店铺运营效率和用户体验。

      1. 研究意义

本研究通过设计一种基于微服务架构的店铺管理系统,结合Spring Cloud框架,探索了如何将微服务应用于电商领域的店铺管理中。系统的设计不仅提高了各个管理模块的独立性和可维护性,还通过分布式架构实现了系统的高可用性和高容错性,从而保障了店铺的稳定运营。此外,该系统提供了针对管理员、员工和普通用户的不同功能模块,有效满足了不同角色的业务需求,增强了系统的灵活性和扩展性。研究结果对传统店铺管理信息化转型具有重要的指导意义,为企业在提升运营效率和客户满意度的同时,也为系统架构的优化提供了可行的技术路线。

    1. 国内外研究现状
      1. 国内研究现状

随着国内电子商务的快速发展,越来越多的学者和企业开始关注店铺管理系统的优化与创新。近年来,国内很多研究聚焦于基于云计算、大数据和人工智能的店铺管理系统设计,尤其在商品信息管理、库存管理、订单处理等方面进行了一定程度的探索。传统的单体架构系统逐渐暴露出扩展性差、维护困难等问题,因此,越来越多的研究开始关注微服务架构在店铺管理系统中的应用。通过引入Spring Cloud、Docker等技术,国内部分企业和学者已经开始尝试将微服务架构应用于电商系统的各个模块,如商品管理、订单管理和用户管理等。尽管取得了一定的成果,但在实际应用中,如何高效集成不同微服务模块、如何保障系统的高并发处理能力、如何优化系统安全性等问题仍需进一步研究和解决。

      1. 国外研究现状

在国外,微服务架构的应用已较为成熟,并广泛用于各种领域的管理系统中,特别是在大规模电商平台的构建中。例如,Amazon、eBay等国际电商巨头早已采用微服务架构来处理平台上海量的用户请求和商品数据。国外研究主要集中在微服务架构的标准化设计、跨服务的通信协议优化和服务自动化部署等方面。基于Spring Cloud框架的微服务设计方法,已成为业界的主流技术方向之一,相关研究也多集中于如何提高服务的可扩展性、可靠性与安全性。在电商领域,国外学者还深入探讨了如何利用微服务架构实现数据一致性、服务治理以及容器化技术的优化等问题。此外,国外一些研究还结合人工智能、大数据分析等先进技术,提升店铺管理系统的智能化和自动化水平,推动了电商平台的技术进步和运营效率提升。

    1. 论文组织结构

本论文共分为七个主要章节,具体结构如下:

  1. 绪论:介绍研究背景与意义,回顾国内外研究现状,并概述论文的组织结构。

  2. 相关技术介绍:详细介绍与本研究相关的技术,包括Java语言、B/S框架、Spring Cloud框架、Vue技术和MySQL数据库。

  3. 需求分析:对系统的功能需求和非功能需求进行分析,明确用户和管理员的需求,并进行可行性分析,包括技术、操作和经济可行性。

  4. 系统设计:涵盖系统架构设计、总体流程设计和功能设计,并进行数据库的概念设计与表设计。

  5. 系统实现:具体描述各个功能模块的实现过程,展示系统如何根据需求进行开发。

  6. 系统测试:阐述测试的目的、方法和内容,分析测试结果并得出结论,以验证系统的稳定性和功能完整性。

  7. 总结:总结研究的主要成果和贡献,指出存在的不足及未来的研究方向。

  8. 相关技术介绍

    1. Java语言

Java语言是一种广泛使用的高级编程语言,具有平台无关性、面向对象特性和丰富的标准库1。Java通过Java虚拟机(JVM)实现跨平台运行,开发者可以编写一次代码,在任何支持JVM的环境中执行。Java的面向对象特性使得代码复用和模块化变得更加容易,促进了软件的维护和扩展。Java支持多线程编程,允许开发者在同一程序中同时执行多个任务,提升了应用程序的性能。

Java语言的语法结构简洁且易于理解,吸引了大量开发者2。Java的标准库包含数据结构、输入输出处理、网络编程等众多功能模块。这使得开发者在构建应用程序时能够高效利用已有工具,减少重复劳动。Java广泛应用于企业级应用、移动应用、Web开发和大数据处理等领域。

    1. B/S框架

B/S(Browser/Server)架构是一种基于浏览器和服务器的系统架构模式,用户通过浏览器与服务器进行交互。B/S架构简化了客户端的部署和管理,用户无需在本地安装复杂的软件,只需使用标准浏览器即可访问应用程序。服务器端负责处理业务逻辑和数据存储,客户端则主要负责展示用户界面和数据交互3。B/S架构的设计使得系统更新和维护集中在服务器端,降低了维护成本。

B/S架构通常采用Web技术进行实现,包括HTML、CSS和JavaScript等。用户在浏览器中发起请求,服务器响应并返回数据。数据传输通常通过HTTP或HTTPS协议进行,B/S架构的灵活性使其适用于在线购物、信息管理系统和社交网络等各类应用场景4。由于其易于扩展性,B/S架构可以方便地支持大规模用户访问,适应不断变化的业务需求。

    1. Spring Cloud框架

Spring Cloud框架是一个基于Spring Boot的开源微服务架构工具集,它专为构建分布式系统而设计。该框架提供了一系列核心组件,这些组件可以无缝集成到Spring应用中,帮助开发者快速搭建起一个功能完备的微服务架构。

Spring Cloud的核心组件包括但不限于服务发现、配置管理、负载均衡、断路器以及API网关等。其中,服务发现组件可以帮助微服务实例在集群中自动注册和发现,从而简化服务间的调用和通信;配置管理组件则支持集中式的配置信息管理和动态刷新,提高了系统的可维护性和灵活性5

此外,Spring Cloud还整合了Netflix OSS中的Eureka、Hystrix等服务治理组件,并结合开源社区的力量,为开发者提供了一个功能强大且易于使用的微服务开发平台。借助Spring Cloud,开发者可以更加专注于业务逻辑的实现,而无需过多关注底层的技术细节,从而提高了开发效率和系统的可靠性6

    1. Vue技术

Vue是一种渐进式JavaScript框架,专注于构建用户界面。Vue采用组件化的开发模式,允许开发者将应用程序拆分为独立的、可重用的组件,从而提高了开发效率和代码的可维护性7。框架的核心库专注于视图层,支持数据绑定和DOM操作,提供了简洁的API。Vue的虚拟DOM机制提升了应用的性能,减少了实际DOM操作的次数。

Vue支持双向数据绑定,能够自动更新视图与模型之间的变化。开发者可以通过Vue的指令系统,简化数据展示和事件处理。Vue还支持路由管理和状态管理,使得开发复杂单页面应用变得更加容易8。借助Vue的生态系统,开发者能够使用多种工具和库来扩展功能,满足不同的业务需求。Vue在前端开发中逐渐成为主流选择,受到广泛关注和应用。

    1. MySQL数据库

MySQL是一种开源关系型数据库管理系统,广泛应用于Web应用和企业级数据存储。MySQL支持结构化查询语言,允许开发者通过标准语句进行数据的创建、读取、更新和删除操作9。数据库通过表格形式组织数据,支持数据完整性和约束条件的定义。MySQL的存储引擎机制使得用户可以根据具体需求选择不同的存储引擎,以优化性能和功能。

MySQL具有高性能和可扩展性,支持大规模数据存储和高并发访问。系统提供了丰富的用户权限管理和数据加密安全特性。MySQL能够与多种编程语言和框架兼容,广泛应用于内容管理系统、电子商务平台和数据分析等各种场景。

  1. 需求分析
    1. 功能需求分析

UML(统一建模语言)用例图是需求分析阶段常用的工具,通过直观的图形方式表示系统的功能需求和参与者。每个用例图包含一系列用例,即系统能够执行的特定功能,以及与之交互的参与者。本文将对系统按照角色模块进行需求分析。

      1. 注册用户功能

注册用户用例图如图3-1所示。

图3-1 普通用户用例图

      1. 管理员功能

管理员用例图如图3-2所示。

图3-2 管理员用例图

      1. 员工用户功能

员工用户用例图如图3-3所示。

图3-3员工用户用例图

    1. 非功能需求分析
  1. 可用性

系统应具备高可用性,用户在任何时间都能顺畅访问。系统的正常运行时间应达到99.9%以上,用户不会因系统故障而影响操作体验。用户界面设计应简洁明了,降低操作复杂性。

  1. 可靠性

系统需要具备高可靠性,在故障发生时能够快速恢复。数据应定期备份,在意外情况下不丢失。系统应具备故障检测机制,自动识别并处理潜在问题。

  1. 安全性

系统应实现严格的安全控制,保护用户数据的隐私和完整性。用户信息应加密存储,传输过程中的数据也需采用加密协议,防止数据泄露。系统应具备权限管理功能,不同用户只能访问相应的数据和功能。

  1. 可扩展性

系统设计应具备良好的可扩展性,模块化设计使得新功能可以方便地集成,系统能够支持更高的用户负载而无需重构基础架构。

  1. 性能

系统的响应时间应控制在合理范围内,通常不超过2秒。

    1. 可行性分析
      1. 技术可行性

系统采用当前主流的Spring Cloud和Vue.js开发框架,具备良好的技术基础。这些技术已被广泛应用于多种商业项目,具备成熟的文档和社区支持,便于开发获取必要的资源与解决方案。个人拥有丰富的相关技术经验,能够有效应对潜在技术挑战。所需的软硬件资源易于获取,且具备良好的兼容性,降低了技术实现的难度。

      1. 操作可行性

系统具备直观友好的用户界面,支持简便的导航和功能访问,极大地提升了用户的使用体验。系统提供了自定义的工作流程和角色权限管理,使不同层级的用户能够快速上手,完成各自的任务。

      1. 经济可行性

系统所使用的软件为开源技术,降低了使用费用,同时硬件成本较低,使得整体初始投入相对合理,具备较高性价比。因此,系统在经济上是完全可行的。

  1. 系统设计
    1. 系统架构设计

系统采用Spring Cloud 框架开发,该系统分为VIEW层、Controller层、Model层、DAO层和持久化数据存储层,VIEW层支持电脑浏览器访问系统。VIEW 层与 Controller 层紧密结合并系协同工作,共同完成前台页面的数据展示;Controller层为控制层,通过接收前端请求的参数进行业务处理,返回指定的路径或数据;Model层主要是服务层,用于业务逻辑处理;DAO 和持久化层,主要用于访问数据库和持久化数据10。整个系统架构如图4-1所示。

图4-1 系统架构图

    1. 系统总体流程设计
      1. 用户登录流程

用户输入用户名和密码后,系统先检查输入是否为空,再验证用户名是否存在,若存在则通过用户名获取密码并校验。若密码正确则登录成功,否则提示密码错误。若用户名不存在或无法登录,提示用户操作无效。如图4-2所示。

图4-2登录流程图

      1. 添加信息流程

管理员可以添加信息,用户添加可以自己权限内的信息,输入信息后,要想利用这个软件来进行系统的安全管理,首先需要登录到该软件中。添加信息流程如图4-3所示。

图4-3添加信息流程图

      1. 修改信息流程

用户首先选择需要修改的记录,输入修改后的数据,系统判断输入数据是否合法。若数据不合法,提示重新输入;若数据合法,则将修改后的数据写入数据库,完成操作后流程结束。修改信息流程图如图4-4所示。

图4-4修改信息流程图

      1. 删除信息流程

用户选择需要删除的记录后,系统判断是否确认删除。若未确认,返回选择环节;若确认删除,则更新数据库,删除对应记录,完成操作后流程结束。删除信息流程图如图4-5所示。

图4-5删除信息流程图

    1. 系统总体功能设计

系统功能结构图如图4-6所示。

图4-6系统功能结构图

    1. 数据库设计

在进行数据库设计时,概念设计帮助明确系统的整体结构和需求。在这一阶段,需要确定实体、属性以及它们之间的关系,为后续的数据库表设计奠定基础。接下来,将深入探讨数据库表设计的具体细节,实现更高效的数据存储和管理。

注册用户实体图如图4-7所示。

图4-7 注册用户实体图

销售出库实体图如图4-8所示。

图4-8 销售出库实体图

评分实体图如图4-9所示。

图4-9评分实体图

系统全局E-R图如图4-10所示。

图4-10系统E-R图

      1. 概念设计

概念设计是数据库设计的第一步,其主要目标是对系统的数据需求进行全面的理解和抽象11。在这一阶段,通过建立实体-关系模型(ER模型)来识别系统中的关键实体、属性及其相互关系。概念设计的输出是一个清晰的ER图,作为后续数据库表设计的基础。以下将展示系统的全局E-R图以及各个实体的属性图。

      1. 数据库表设计

这一阶段的重点是将概念模型转换为实际的数据库结构,包括表的创建、字段的定义及数据类型的选择。每个实体通常对应于数据库中的一张表,而实体的属性则转化为表的列12。以下是系统的数据库表设计展示。

表 4-1-access_token(登陆访问时长)

|----|-------------|-----------|-------|------|------|------------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | | 是 | 是 | 临时访问牌ID |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | | 是 | 否 | 最大寿命:默认2小时 |
| 5 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 6 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 7 | user_id | int | | 是 | 否 | 用户编号 |

表 4-2-article(文章)

|----|-------------|-----------|------------|------|------|------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | article_id | mediumint | | 是 | 是 | 文章id |
| 2 | title | varchar | 125 | 是 | 是 | 标题 |
| 3 | type | varchar | 64 | 是 | 否 | 文章分类 |
| 4 | hits | int | | 是 | 否 | 点击数 |
| 5 | praise_len | int | | 是 | 否 | 点赞数 |
| 6 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 7 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 8 | source | varchar | 255 | 否 | 否 | 来源 |
| 9 | url | varchar | 255 | 否 | 否 | 来源地址 |
| 10 | tag | varchar | 255 | 否 | 否 | 标签 |
| 11 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 12 | img | varchar | 255 | 否 | 否 | 封面图 |
| 13 | description | text | 65535 | 否 | 否 | 文章描述 |

表 4-3-article_type(文章分类)

|----|-------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | type_id | smallint | | 是 | 是 | 分类ID |
| 2 | display | smallint | | 是 | 否 | 显示顺序 |
| 3 | name | varchar | 16 | 是 | 否 | 分类名称 |
| 4 | father_id | smallint | | 是 | 否 | 上级分类ID |
| 5 | description | varchar | 255 | 否 | 否 | 描述 |
| 6 | icon | text | 65535 | 否 | 否 | 分类图标 |
| 7 | url | varchar | 255 | 否 | 否 | 外链地址 |
| 8 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 9 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-4-auth(用户权限管理)

|----|----------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | | 是 | 是 | 授权ID |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | | 是 | 否 | 父级菜单排序 |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | | 是 | 否 | 是否可增加 |
| 12 | del | tinyint | | 是 | 否 | 是否可删除 |
| 13 | set | tinyint | | 是 | 否 | 是否可修改 |
| 14 | get | tinyint | | 是 | 否 | 是否可查看 |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 22 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-5-code_token(验证码)

|----|---------------|-----------|-----|------|------|-------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | | 是 | 是 | 验证码ID |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | | 是 | 否 | 失效时间 |
| 5 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 6 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-6-collect(收藏)

|----|--------------|-----------|-----|------|------|-------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | collect_id | int | | 是 | 是 | 收藏ID |
| 2 | user_id | int | | 是 | 是 | 收藏人ID |
| 3 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 4 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 5 | source_id | int | | 是 | 否 | 来源ID |
| 6 | title | varchar | 255 | 否 | 否 | 标题 |
| 7 | img | varchar | 255 | 否 | 否 | 封面 |
| 8 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 9 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-7-comment(评论)

|----|--------------|-----------|------------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | comment_id | int | | 是 | 是 | 评论ID |
| 2 | user_id | int | | 是 | 是 | 评论人ID |
| 3 | reply_to_id | int | | 是 | 否 | 回复评论ID |
| 4 | content | longtext | 4294967295 | 否 | 否 | 内容 |
| 5 | nickname | varchar | 255 | 否 | 否 | 昵称 |
| 6 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 7 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 8 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 9 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 10 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 11 | source_id | int | | 是 | 否 | 来源ID |

表 4-8-commodity_information(商品信息)

|----|-------------------------------|-----------|------------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | commodity_information_id | int | | 是 | 是 | 商品信息ID |
| 2 | name_of_commodity | varchar | 64 | 否 | 否 | 商品名称 |
| 3 | commodity_number | varchar | 64 | 否 | 否 | 商品编号 |
| 4 | commodity_specifications | varchar | 64 | 否 | 否 | 商品规格 |
| 5 | quality_guarantee_date | date | | 否 | 否 | 保质日期 |
| 6 | commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
| 7 | commodity_price | double | | 否 | 否 | 商品价格 |
| 8 | employee_user | int | | 否 | 否 | 员工用户 |
| 9 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 10 | commodity_picture | varchar | 255 | 否 | 否 | 商品图片 |
| 11 | commodity_introduction | longtext | 4294967295 | 否 | 否 | 商品简介 |
| 12 | hits | int | | 是 | 否 | 点击数 |
| 13 | praise_len | int | | 是 | 否 | 点赞数 |
| 14 | collect_len | int | | 是 | 否 | 收藏数 |
| 15 | comment_len | int | | 是 | 否 | 评论数 |
| 16 | recommend | int | | 是 | 否 | 智能推荐 |
| 17 | expired_reminder_limit_times | int | | 是 | 否 | 提醒限制次数 |
| 18 | purchase_of_goods_limit_times | int | | 是 | 否 | 购买限制次数 |
| 19 | create_time | datetime | | 是 | 否 | 创建时间 |
| 20 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-9-commodity_type(商品类型)

|----|-------------------|-----------|----|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | commodity_type_id | int | | 是 | 是 | 商品类型ID |
| 2 | commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
| 3 | create_time | datetime | | 是 | 否 | 创建时间 |
| 4 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-10-employee_user(员工用户)

|----|------------------|-----------|----|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | employee_user_id | int | | 是 | 是 | 员工用户ID |
| 2 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 3 | employee_number | varchar | 64 | 否 | 否 | 员工号码 |
| 4 | employee_gender | varchar | 64 | 否 | 否 | 员工性别 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | | 是 | 否 | 用户ID |
| 7 | create_time | datetime | | 是 | 否 | 创建时间 |
| 8 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-11-expired_goods(过期商品)

|----|------------------------|-----------|------------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | expired_goods_id | int | | 是 | 是 | 过期商品ID |
| 2 | name_of_commodity | varchar | 64 | 否 | 否 | 商品名称 |
| 3 | commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
| 4 | quality_guarantee_date | date | | 否 | 否 | 保质日期 |
| 5 | expired_duration | varchar | 64 | 否 | 否 | 过期时长 |
| 6 | commodity_picture | varchar | 255 | 否 | 否 | 商品图片 |
| 7 | commodity_introduction | longtext | 4294967295 | 否 | 否 | 商品简介 |
| 8 | praise_len | int | | 是 | 否 | 点赞数 |
| 9 | collect_len | int | | 是 | 否 | 收藏数 |
| 10 | comment_len | int | | 是 | 否 | 评论数 |
| 11 | create_time | datetime | | 是 | 否 | 创建时间 |
| 12 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-12-expired_reminder(过期提醒)

|----|--------------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | expired_reminder_id | int | | 是 | 是 | 过期提醒ID |
| 2 | name_of_commodity | varchar | 64 | 否 | 否 | 商品名称 |
| 3 | commodity_number | varchar | 64 | 否 | 否 | 商品编号 |
| 4 | commodity_specifications | varchar | 64 | 否 | 否 | 商品规格 |
| 5 | quality_guarantee_date | date | | 否 | 否 | 保质日期 |
| 6 | commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
| 7 | commodity_price | double | | 否 | 否 | 商品价格 |
| 8 | employee_user | int | | 否 | 否 | 员工用户 |
| 9 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 10 | reminder_content | text | 65535 | 否 | 否 | 提醒内容 |
| 11 | create_time | datetime | | 是 | 否 | 创建时间 |
| 12 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 13 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 14 | source_id | int | | 否 | 否 | 来源ID |
| 15 | source_user_id | int | | 否 | 否 | 来源用户 |

表 4-13-hits(用户点击)

|----|--------------|-----------|-----|------|------|------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | | 是 | 是 | 点赞ID |
| 2 | user_id | int | | 是 | 否 | 点赞人 |
| 3 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 4 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | | 是 | 否 | 来源ID |

表 4-14-income_and_expenditure_records(收支记录)

|----|-----------------------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | income_and_expenditure_records_id | int | | 是 | 是 | 收支记录ID |
| 2 | record_name | varchar | 64 | 否 | 否 | 记录名称 |
| 3 | record_type | varchar | 64 | 否 | 否 | 记录类型 |
| 4 | record_date | date | | 否 | 否 | 记录日期 |
| 5 | amount_of_income | double | | 否 | 否 | 收入金额 |
| 6 | expenditure_amount | double | | 否 | 否 | 支出金额 |
| 7 | employee_user | int | | 否 | 否 | 员工用户 |
| 8 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 9 | collection_and_payment_method | varchar | 64 | 否 | 否 | 收付方式 |
| 10 | income_introduction | text | 65535 | 否 | 否 | 收入简介 |
| 11 | expenditure_profile | text | 65535 | 否 | 否 | 支出简介 |
| 12 | create_time | datetime | | 是 | 否 | 创建时间 |
| 13 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-15-inventory_information(库存信息)

|----|---------------------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | inventory_information_id | int | | 是 | 是 | 库存信息ID |
| 2 | name_of_commodity | varchar | 64 | 否 | 否 | 商品名称 |
| 3 | commodity_number | varchar | 64 | 是 | 是 | 商品编号 |
| 4 | commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
| 5 | inventory_location | varchar | 64 | 否 | 否 | 库存位置 |
| 6 | inventory_quantity | double | | 否 | 否 | 库存数量 |
| 7 | inventory_remarks | text | 65535 | 否 | 否 | 库存备注 |
| 8 | issue_information_limit_times | int | | 是 | 否 | 出库限制次数 |
| 9 | receipt_information_limit_times | int | | 是 | 否 | 入库限制次数 |
| 10 | create_time | datetime | | 是 | 否 | 创建时间 |
| 11 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-16-issue_information(出库信息)

|----|----------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | issue_information_id | int | | 是 | 是 | 出库信息ID |
| 2 | name_of_commodity | varchar | 64 | 否 | 否 | 商品名称 |
| 3 | commodity_number | varchar | 64 | 否 | 否 | 商品编号 |
| 4 | commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
| 5 | quantity_of_issue | double | | 否 | 否 | 出库数量 |
| 6 | issue_date | date | | 否 | 否 | 出库日期 |
| 7 | employee_user | int | | 否 | 否 | 员工用户 |
| 8 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 9 | outbound_remarks | text | 65535 | 否 | 否 | 出库备注 |
| 10 | create_time | datetime | | 是 | 否 | 创建时间 |
| 11 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 12 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 13 | source_id | int | | 否 | 否 | 来源ID |
| 14 | source_user_id | int | | 否 | 否 | 来源用户 |

表 4-17-notice(公告)

|----|-------------|-----------|------------|------|------|------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | notice_id | mediumint | | 是 | 是 | 公告ID |
| 2 | title | varchar | 125 | 是 | 否 | 标题 |
| 3 | content | longtext | 4294967295 | 否 | 否 | 正文 |
| 4 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 5 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-18-order_information(订单信息)

|----|--------------------------|-----------|-----|------|------|-----------------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | order_information_id | int | | 是 | 是 | 订单信息ID |
| 2 | name_of_commodity | varchar | 64 | 否 | 否 | 商品名称 |
| 3 | commodity_number | varchar | 64 | 否 | 否 | 商品编号 |
| 4 | commodity_specifications | varchar | 64 | 否 | 否 | 商品规格 |
| 5 | commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
| 6 | commodity_price | double | | 否 | 否 | 商品价格 |
| 7 | employee_user | int | | 否 | 否 | 员工用户 |
| 8 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 9 | ordinary_user | int | | 否 | 否 | 普通用户 |
| 10 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 11 | purchase_quantity | double | | 否 | 否 | 购买数量 |
| 12 | total_payment | double | | 否 | 否 | 合计支付 |
| 13 | order_status | varchar | 64 | 否 | 否 | 订单状态 |
| 14 | pay_state | varchar | 16 | 是 | 否 | 支付状态 |
| 15 | pay_type | varchar | 16 | 否 | 否 | 支付类型: 微信、支付宝、网银 |
| 16 | create_time | datetime | | 是 | 否 | 创建时间 |
| 17 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 18 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 19 | source_id | int | | 否 | 否 | 来源ID |
| 20 | source_user_id | int | | 否 | 否 | 来源用户 |

表 4-19-ordinary_user(普通用户)

|----|---------------------|-----------|----|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | ordinary_user_id | int | | 是 | 是 | 普通用户ID |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | contact_information | varchar | 64 | 否 | 否 | 联系方式 |
| 4 | user_gender | varchar | 64 | 否 | 否 | 用户性别 |
| 5 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 6 | user_id | int | | 是 | 否 | 用户ID |
| 7 | create_time | datetime | | 是 | 否 | 创建时间 |
| 8 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-20-praise(点赞)

|----|--------------|-----------|-----|------|------|----------------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | praise_id | int | | 是 | 是 | 点赞ID |
| 2 | user_id | int | | 是 | 是 | 点赞人 |
| 3 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 4 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | | 是 | 否 | 来源ID |
| 8 | status | tinyint | | 是 | 否 | 点赞状态:1为点赞,0已取消 |

表 4-21-punch_in(打卡签到)

|----|-------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | punch_in_id | int | | 是 | 是 | 打卡签到ID |
| 2 | pin_title | varchar | 64 | 否 | 否 | 打卡标题 |
| 3 | clock_in_time | datetime | | 否 | 否 | 打卡时间 |
| 4 | punch_in_location | varchar | 64 | 否 | 否 | 打卡地点 |
| 5 | punch_in_type | varchar | 64 | 否 | 否 | 打卡类型 |
| 6 | employee_user | int | | 否 | 否 | 员工用户 |
| 7 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 8 | employee_number | varchar | 64 | 否 | 否 | 员工号码 |
| 9 | clock_in_remarks | text | 65535 | 否 | 否 | 打卡备注 |
| 10 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 11 | examine_reply | varchar | 255 | 否 | 否 | 审核回复 |
| 12 | create_time | datetime | | 是 | 否 | 创建时间 |
| 13 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-22-purchase_of_goods(商品购买)

|----|-------------------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | purchase_of_goods_id | int | | 是 | 是 | 商品购买ID |
| 2 | name_of_commodity | varchar | 64 | 否 | 否 | 商品名称 |
| 3 | commodity_number | varchar | 64 | 否 | 否 | 商品编号 |
| 4 | commodity_specifications | varchar | 64 | 否 | 否 | 商品规格 |
| 5 | commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
| 6 | commodity_price | double | | 否 | 否 | 商品价格 |
| 7 | employee_user | int | | 否 | 否 | 员工用户 |
| 8 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 9 | ordinary_user | int | | 否 | 否 | 普通用户 |
| 10 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 11 | purchase_quantity | varchar | 64 | 否 | 否 | 购买数量 |
| 12 | purchase_notes | text | 65535 | 否 | 否 | 购买备注 |
| 13 | order_information_limit_times | int | | 是 | 否 | 订单限制次数 |
| 14 | create_time | datetime | | 是 | 否 | 创建时间 |
| 15 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 16 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 17 | source_id | int | | 否 | 否 | 来源ID |
| 18 | source_user_id | int | | 否 | 否 | 来源用户 |

表 4-23-receipt_information(入库信息)

|----|------------------------|-----------|-------|------|------|--------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | receipt_information_id | int | | 是 | 是 | 入库信息ID |
| 2 | name_of_commodity | varchar | 64 | 否 | 否 | 商品名称 |
| 3 | commodity_number | varchar | 64 | 否 | 否 | 商品编号 |
| 4 | commodity_type | varchar | 64 | 否 | 否 | 商品类型 |
| 5 | receipt_quantity | double | | 否 | 否 | 入库数量 |
| 6 | receipt_date | date | | 否 | 否 | 入库日期 |
| 7 | inventory_location | varchar | 64 | 否 | 否 | 库存位置 |
| 8 | employee_user | int | | 否 | 否 | 员工用户 |
| 9 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 10 | receipt_remarks | text | 65535 | 否 | 否 | 入库备注 |
| 11 | create_time | datetime | | 是 | 否 | 创建时间 |
| 12 | update_time | timestamp | | 是 | 否 | 更新时间 |
| 13 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 14 | source_id | int | | 否 | 否 | 来源ID |
| 15 | source_user_id | int | | 否 | 否 | 来源用户 |

表 4-24-slides(轮播图)

|----|-------------|-----------|-----|------|------|-------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | slides_id | int | | 是 | 是 | 轮播图ID |
| 2 | title | varchar | 64 | 否 | 否 | 标题 |
| 3 | content | varchar | 255 | 否 | 否 | 内容 |
| 4 | url | varchar | 255 | 否 | 否 | 链接 |
| 5 | img | varchar | 255 | 否 | 否 | 轮播图 |
| 6 | hits | int | | 是 | 否 | 点击量 |
| 7 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 8 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-25-supplier_information(供应商信息)

|----|-------------------------|-----------|-------|------|------|---------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | supplier_information_id | int | | 是 | 是 | 供应商信息ID |
| 2 | supplier_name | varchar | 64 | 否 | 否 | 供应商名称 |
| 3 | vendor_type | varchar | 64 | 否 | 否 | 供应商类型 |
| 4 | supplier_address | varchar | 64 | 否 | 否 | 供应商地址 |
| 5 | supplier_representative | varchar | 64 | 否 | 否 | 供应商代表 |
| 6 | vendor_phone | varchar | 64 | 否 | 否 | 供应商电话 |
| 7 | monthly_supply_quantity | double | | 否 | 否 | 月供货数量 |
| 8 | monthly_defective_goods | double | | 否 | 否 | 月残次商品 |
| 9 | supplier_profile | text | 65535 | 否 | 否 | 供应商简介 |
| 10 | create_time | datetime | | 是 | 否 | 创建时间 |
| 11 | update_time | timestamp | | 是 | 否 | 更新时间 |

表 4-26-upload(文件上传)

|----|-----------|---------|-----|------|------|------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | | 是 | 是 | 上传ID |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | | 否 | 否 | 父级ID |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |

表 4-27-user(用户账户)

|----|-------------|-----------|-----|------|------|-----------------------------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | | 是 | 是 | 用户ID |
| 2 | state | smallint | | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | | 是 | 否 | 上次登录时间 |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | email | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | | 是 | 否 | 创建时间 |

表 4-28-user_group(用户组)

|----|--------------|-----------|-----|------|------|-------|
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | | 是 | 是 | 用户组ID |
| 2 | display | smallint | | 是 | 否 | 显示顺序 |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | | 是 | 否 | 来源ID |
| 8 | register | smallint | | 否 | 否 | 注册位置 |
| 9 | create_time | timestamp | | 是 | 否 | 创建时间 |
| 10 | update_time | timestamp | | 是 | 否 | 更新时间 |

  1. 系统实现
    1. 普通用户功能实现
      1. 注册界面

当用户点击"注册"按钮,填写上自己的账号+密码+确认密码+昵称等,再点击"注册"按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可用户注册成功。注册界面展示如5-1所示。

图5-1注册界面图

      1. 登录界面

店铺管理系统注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并通过输入验证通过后,点击"登录"按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到店铺管理系统的首页中;否则将会提示相应错误信息,登录界面如5-2所示。

图5-2用户登录界面图

      1. 首页界面

普通用户首页界面为用户提供了一个直观的操作平台,集成了多个关键功能模块。界面首页、通知公告、新闻资讯、过期商品、商品信息等模块。界面如下图5-3所示。

图5-3普通用户首页界面图

      1. 新闻咨询界面

普通用户可以点击查看新闻资讯,并对感兴趣的新闻资讯进行点赞和收藏。界面如下图5-4所示。

图5-4新闻资讯界面图

    1. 员工用户功能实现
      1. 个人信息修改界面

员工用户登陆系统后,可对个人信息进行修改和提交。界面如图5-5所示。

图5-5 本人信息界面

      1. 打卡签到管理

员工用户登录系统后,可以进行打卡签到,记录工作时间,系统可根据签到数据生成员工考勤记录,方便管理层进行考勤审核与管理。界面如图5-6所示。

图5-6打卡签到管理界面

      1. 入库信息管理

用户可通过入库信息管理功能,轻松提交入库信息申请。系统将自动记录新采购商品的详细信息,包括商品名称、数量、供应商等,并支持生成入库单,便于后续跟踪和审核。界面如图5-7所示。

图5-7入库信息管理管理界面

      1. 库存信息管理

用户可在库存信息管理模块中,详细查看每件商品的库存数量、库存位置、生产日期等关键信息。同时,支持对库存信息进行即时更新,确保数据的准确性和时效性。界面如图5-8所示。

图5-8库存信息管理界面

      1. 出库信息管理

出库信息管理功能允许用户根据销售订单快速处理出库请求。系统将自动更新商品库存,同时生成出库单和销售报表,为企业的销售分析和财务管理提供有力支持。界面如图5-9所示。

图5-9出库信息管理界面

    1. 管理员功能实现
      1. 商品类型管理

管理员可通过商品类型管理功能,轻松定义和修改商品类型。这将有助于企业更好地分类和管理商品,提高库存管理的效率和准确性。界面如图5-10所示。

图5-10 商品类型管理界面

      1. 商品库存管理

管理员在商品库存管理模块中,不仅可以查看所有商品的库存信息,还可以对库存进行盘点、调整等操作。系统支持生成库存报表,为企业的库存决策提供有力支持。界面如图5-11所示。

图5-11商品库存管理界面

      1. 入库信息管理

管理员在入库信息管理模块中,可以审核和处理所有采购入库申请。系统将自动记录审核结果和入库状态,确保采购流程的顺畅进行。界面如图5-12所示。

图5-12入库信息管理界面

      1. 系统管理

管理员通过对轮播插图的添加和管理来展示最新动态和重要通知,帮助管理员及时了解系统状态和关键更新。界面如图5-13所示。

图5-13 系统管理界面

  1. 系统测试
    1. 测试目的

测试的主要目的是确保系统的功能和性能满足预期的需求,同时识别和修复潜在的缺陷。通过系统测试,可以验证各个功能模块的正确性和稳定性,确保系统在不同使用场景下的表现符合设计要求。测试目的包括确认系统功能的完整性、验证数据处理的准确性、评估系统的性能和安全性。测试还可以提高用户满意度,保证用户在使用系统时获得流畅和可靠的体验。通过全面的测试,可以降低后期维护成本,减少系统上线后出现故障的风险,从而保障系统的长期稳定运行。

    1. 测试方法

在本系统中,测试方法主要依赖于测试用例的设计与执行。测试用例是根据系统需求文档编写的,覆盖所有功能模块及其边界情况。每个测试用例包含输入数据、预期结果和实际结果的对比,以验证系统的功能是否按预期工作。

常见的测试用例包括功能测试用例、边界测试用例和异常测试用例13。功能测试用例针对系统的各项功能进行验证;边界测试用例则侧重于输入数据的边界条件,验证系统在极端情况下是否能够稳定运行;异常测试用例则用于验证系统在处理错误输入或异常情况时的反应。本文选择功能测试用例进行系统测试。

在测试执行过程中,记录每个用例的执行结果,并根据实际结果与预期结果的对比,判断系统是否存在缺陷。通过系统化的测试用例执行,可以有效提高测试的覆盖率和效率,为系统的最终上线提供保障。

    1. 测试内容

下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6-1系统登录功能测试用例

|-----------------|-------------|---------|
| 功能描述 | 用于系统登录 ||
| 测试目的 | 检测登录时的合法性检查 ||
| 测试数据以及操作 | 预期结果 | 实际结果 |
| 输入的用户名和密码带有非法字符 | 提示用户名或者密码错误 | 与预期结果一致 |
| 输入的用户名或者密码为空 | 提示用户名或者密码错误 | 与预期结果一致 |
| 输入的用户名和密码不存在 | 提示用户名或者密码错误 | 与预期结果一致 |
| 输入正确的用户名和密码 | 登录成功 | 与预期结果一致 |

下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。

表6-2注册功能测试用例

|------------|--------------|---------|
| 功能描述 | 用于用户注册 ||
| 测试目的 | 检测用户注册时的合法性检查 ||
| 测试数据以及操作 | 预期结果 | 实际结果 |
| 输入的手机号不合法 | 提示请输入正确的手机号码 | 与预期结果一致 |
| 输入的字段为空 | 提示必填项不能为空 | 与预期结果一致 |
| 输入的密码少于6位 | 提示密码必须为6-12位 | 与预期结果一致 |
| 输入的密码大于12位 | 提示密码必须为6-12位 | 与预期结果一致 |

库存信息浏览功能测试用例表是用来验证用户能否正确浏览和筛选库存信息的测试用例。库存信息浏览功能测试用例表如下表所示。

表6-3库存信息浏览功能测试用例

|------------|----------------|------------------|----------|
| 测试项 | 测试用例 | 预期结果 | 结论 |
| 库存信息浏览功能测试 | 1. 打开库存信息浏览页面。 | 页面正常加载,显示库存信息列表。 | 与预期结果一致。 |
| 库存信息浏览功能测试 | 2. 选择筛选条件 | 筛选条件被成功选中。 | 与预期结果一致。 |
| 库存信息浏览功能测试 | 3. 点击搜索按钮。 | 系统根据筛选条件进行搜索。 | 与预期结果一致。 |
| 库存信息浏览功能测试 | 4. 查看筛选结果。 | 页面显示符合条件的库存信息列表。 | 与预期结果一致。 |


添加库存信息功能测试用例表是用来验证用户能否正确添加库存信息的测试用例。添加库存信息功能测试用例表如下表所示。

表6-4添加库存信息功能测试用例

|------------|----------------|-----------------------|----------|
| 测试项 | 测试用例 | 预期结果 | 结论 |
| 添加库存信息功能测试 | 1. 打开添加库存信息页面。 | 页面正常加载,显示信息填写表单。 | 与预期结果一致。 |
| 添加库存信息功能测试 | 2. 填写库存信息基本信息 | 信息成功输入并保存。 | 与预期结果一致。 |
| 添加库存信息功能测试 | 3. 上传库存信息照片。 | 照片成功上传并显示预览。 | 与预期结果一致。 |
| 添加库存信息功能测试 | 4. 点击提交按钮。 | 页面提示信息提交成功,并显示等待审核状态。 | 与预期结果一致。 |


    1. 测试分析

基于微服务架构的店铺管理系统开发与设计满足相关信息的管理需求,在设计时借鉴了国内外优秀网站的优点,从界面到系统设计都保证了管理员以及用户能够方便操作。系统的主要特点和优点归纳如下:

(1)本系统用的移置性和针对性都比较高,因为针对性高可以提供更好的服务而移置性可以在多个系统上运行,更给客户带来了极大的方便。

(2)该基于微服务架构的店铺管理系统开发与设计内容全面,管理方便可以及时的全面的处理各种错误,异常,这样避免了很多因客户的马虎操作而出现的失误,其操作方便,用户界面友好,能够上网的人都可以很好的进行操作。

经过对上述的测试结果分析,所有基本功能齐全,操作简单,系统运行性能良好,系统安全可靠,能促进本基于微服务架构的店铺管理系统的发展,发展前景广阔。

  1. 总结

本研究基于微服务架构,结合Spring Cloud框架,设计并实现了一套高效、可扩展的店铺管理系统。系统针对管理员、员工和普通用户的不同需求,提供了商品管理、订单管理、库存管理、财务管理、考勤管理等核心功能,确保了店铺运营的全面性和高效性。通过微服务架构的拆分,各个模块独立运行,降低了系统耦合度,提高了系统的稳定性和可维护性。此外,Spring Cloud框架的应用,使得系统在分布式环境下能够实现服务的自动注册与发现、负载均衡、熔断处理等,保障了系统的高可用性和灵活扩展能力。

研究表明,采用微服务架构能够有效提升店铺管理系统的性能和可靠性,使系统在面对高并发、海量数据处理和动态扩展需求时更加高效。本研究的成果不仅为店铺管理信息化提供了一种可行的解决方案,也为未来基于微服务的电商系统开发提供了有益的参考。后续研究可进一步优化微服务间的通信机制,引入人工智能和大数据分析技术,提高系统的智能化水平,增强用户体验和运营效率。

参考文献

1Ma N ,Tang A ,Xiong Z , et al.A deep multi-agent reinforcement learning approach for the micro-service migration problem with affinity in the cloudJ.Expert Systems With Applications,2025,273126856-126856.

2Ahmad H ,Treude C ,Wagner M , et al.Towards resource-efficient reactive and proactive auto-scaling for microservice architecturesJ.The Journal of Systems & Software,2025,225112390-112390.

3武开有.基于微服务架构的融合媒体内容智能生产系统建设实践J.广播与电视技术,2025,52(03):17-20.DOI:10.16171/j.cnki.rtbe.2025003001.

4唐炜,杨剑,陈罡,等.基于微服务架构的广播融媒微信小程序矩阵设计与实践J.广播与电视技术,2025,52(03):21-26.DOI:10.16171/j.cnki.rtbe.2025003002.

5马成忠,陈超.基于微服务的河湖基础数据核查更新系统的设计与实现J.测绘与空间地理信息,2025,48(02):150-152+156.

6蒙华,刘国源,石昌荆,等.微服务下某互联网医院鉴权体系的设计和实现J.中国数字医学,2025,20(02):102-108.

7陈丽阳,吴宇.浅谈Spring Cloud分布式微服务集群架构在企业智慧食堂管理平台构建中的应用J.广东通信技术,2024,44(12):62-66.

8叶成.基于微服务架构的ERP系统设计与实现J.电脑编程技巧与维护,2024,(09):54-57+64.DOI:10.16184/j.cnki.comprg.2024.09.041.

9靳超,师昊煜,贾祥宇,等.基于微服务架构的零售企业门店商品库存管理系统设计J.数字通信世界,2024,(07):37-39.

10鲁懿德.基于微服务的B2C电商系统的设计与实现D.北京邮电大学,2024.DOI:10.26969/d.cnki.gbydu.2024.002095.

11陶敏.基于微服务的分布式农产品销售与溯源管理系统实现D.江西农业大学,2024.DOI:10.27177/d.cnki.gjxnu.2024.000165.

12梁自豪,荆浩,李雪源.基于微服务的中小型B2C电商抢购系统的设计与实现J.长江信息通信,2024,37(04):155-157.DOI:10.20153/j.issn.2096-9759.2024.04.046.

13叶成.基于微服务架构的企业库存管理系统设计与实现D.长江大学,2024.DOI:10.26981/d.cnki.gjhsc.2024.001579.

14王魁生,杨柳.基于微服务的智能制造仓储系统研究与应用J.电脑知识与技术,2024,20(06):68-70.DOI:10.14004/j.cnki.ckt.2024.0319.

15潘子豪.一种面向商圈店铺管理规划的机器学习建模分析技术J.中国新技术新产品,2024,(03):132-136.DOI:10.13612/j.cnki.cntp.2024.03.045.

16谢天豪.基于微服务架构的系统整合框架设计与实现D.杭州师范大学,2023.DOI:10.27076/d.cnki.ghzsc.2023.000980.

17林景朗.基于微服务架构的金融资讯服务平台的设计与实现D.华东师范大学,2023.DOI:10.27149/d.cnki.ghdsu.2023.004620.

18刘争光.基于微服务架构的进销存管理信息系统的研究D.北京建筑大学,2023.DOI:10.26943/d.cnki.gbjzc.2023.000590.

19刘博.基于SpringCloud的海产品服务平台设计与实现D.大连海洋大学,2023.DOI:10.27821/d.cnki.gdlhy.2023.000363.

20李宇杰.基于微服务架构的电商微信小程序的设计与实现D.华东师范大学,2023.DOI:10.27149/d.cnki.ghdsu.2023.003555.

致谢

在本项目的实施过程中,许多人给予了我无私的支持和帮助,令我深感感谢。

我要衷心感谢我的指导老师。不仅在项目的初期提供了宝贵的建议,还在整个过程中给予了我细致入微的指导。专业知识和严谨态度始终激励着我,让我在遇到困难时能够保持信心,继续前行。每一次的讨论都让我对项目有了更深刻的理解,帮助我克服了许多技术难题。

我也要感谢参与用户测试的同学们。你们的反馈和建议为我们系统的优化提供了重要的参考,帮助我们更好地理解用户需求。正是因为有了你们的参与,我们才能够不断改进,提升系统的用户体验。感谢所有支持我的家人和朋友。你们的理解与鼓励让我在项目的紧张时刻始终能够保持积极的心态,成为我前进的动力。每当我遇到挑战时,想到你们的支持,我就能够重新振作,继续努力。最后,我要感谢所有在我职业发展过程中给予帮助的人。每一次的交流与分享都让我受益匪浅,拓宽了我的视野,让我在这条道路上走得更加坚定。

项目的完成不仅是我个人努力的结果,更是许多人共同支持与协作的成果。在此,我再次向所有关心和支持我的人表达衷心的感谢。希望未来我们能够继续携手,共同创造更多的价值和成就。

附录

系统核心代码设计

新增一条数据,通过post传入一个json对象,然后经过request.getReader(),最后经过readBody()转成一个Map,含有String和Object,key用的是字段名,Object存放数据,最终得到Map,insert用拼装sql,读取body,组装成一个insert对象,runCountSql()语句,代码如下:

@PostMapping("/add")

@Transactional

public Map<String, Object> add(HttpServletRequest request) throws IOException {

service.insert(service.readBody(request.getReader()));

return success(1);

}

@Transactional

public Map<String, Object> addMap(Map<String,Object> map){

service.insert(map);

return success(1);

}

修改一个数据,原理与add基本一致,不同点在于通过readConfig()读取关键字,以及通过readQuery()获取URL后面?指定位置的标识,转成Map对象后,执行update操作,同样通过拼接的sql语句执行,执行过程读取query,toWhereSql()语句完成数据库操作,body为修改对象的值,代码如下:

@PostMapping("/set")

@Transactional

public Map<String, Object> set(HttpServletRequest request) throws IOException {

service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));

return success(1);

}

@Transactional

public void update(Map<String,String> query,Map<String,String> config,Map<String,Object> body){

QueryWrapper wrapper = new QueryWrapper<E>();

toWhereWrapper(query,"0".equals(config.get(FindConfig.LIKE)),wrapper);

E entity = JSON.parseObject(JSON.toJSONString(body),eClass);

baseMapper.update(entity,wrapper);

log.info("{} - 更新操作:{}",entity);

}

删除一条数据,通过readQuery(),获取URL后面的对象地址,删除FROM具体的table,query删除查询FindConfig语句,代码如下:

@RequestMapping(value = "/del")

@Transactional

public Map<String, Object> del(HttpServletRequest request) {

service.delete(service.readQuery(request), service.readConfig(request));

return success(1);

}

@Transactional

public void delete(Map<String,String> query,Map<String,String> config){

QueryWrapper wrapper = new QueryWrapper<E>();

toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);

baseMapper.delete(wrapper);

log.info("{} - 删除操作:{}",wrapper.getSqlSelect());

}

通过请求的参数获取一条数据,通过readQuery(),获取URL后面的对象地址,查询FindConfig语句,select筛选Map对象,FIELD为查询字段,未传输的情况下传入"*",代码如下:

@RequestMapping("/get_obj")

public Map<String, Object> obj(HttpServletRequest request) {

List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

if (resultList.size() > 0) {

JSONObject jsonObject = new JSONObject();

jsonObject.put("obj",resultList.get(0));

return success(jsonObject);

} else {

return success(null);

}

}

}

通过请求的参数获取列表数据,代码如下:

@RequestMapping("/get_list")

public Map<String, Object> getList(HttpServletRequest request) {

Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

return success(map);

}

获取某个组下面的数量,代码如下:

@RequestMapping(value = {"/count_group", "/count"})

public Map<String, Object> count(HttpServletRequest request) {

Integer value= service.selectSqlToInteger(service.groupCount(service.readQuery(request), service.readConfig(request)));

return success(value);

}

获取某个组下面的总计值,代码如下:

@RequestMapping(value = {"/sum_group", "/sum"})

public Map<String, Object> sum(HttpServletRequest request) {

Integer value = service.selectSqlToInteger(service.sum(service.readQuery(request), service.readConfig(request)));

return success(value);

}

图片或文件等的上传方法通过MultipartFile,代码如下:

@PostMapping("/upload")

public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {

log.info("进入方法");

if (file.isEmpty()) {

return error(30000, "没有选择文件");

}

try {

String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";

File targetDir = new File(filePath);

if (!targetDir.exists() && !targetDir.isDirectory()) {

if (targetDir.mkdirs()) {

log.info("创建目录成功");

} else {

log.error("创建目录失败");

}

}

String fileName = file.getOriginalFilename();

File dest = new File(filePath + fileName);

log.info("文件路径:{}", dest.getPath());

log.info("文件名:{}", dest.getName());

file.transferTo(dest);

JSONObject jsonObject = new JSONObject();

jsonObject.put("url", "/api/upload/" + fileName);

return success(jsonObject);

} catch (IOException e) {

log.info("上传失败:{}", e.getMessage());

}

return error(30000, "上传失败");

}

注册页UserController.java,传入user对象,并将"user_id"、 "state"、 "user_group"、"login_time"、"phone"、"phone_state"、 "username"、"nickname"、"password"、"email"、"email_state"、"avatar"、"create_time"输入,重点是 "username"、"nickname"、"password"必须输入,通过获取username,数据库查询是否有该用户,如果存在,则提示"用户已存在",否则执行将UserId置为空(数据库表中该字段已设置自动递增),代码如下:

@PostMapping("register")

public Map<String, Object> signUp(@RequestBody User user) {

// 查询用户

Map<String, String> query = new HashMap<>();

Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));

query.put("username",user.getUsername());

List list = service.selectBaseList(service.select(query, new HashMap<>()));

注册页password则使用了MD5加密,代码如下:

public String encryption(String plainText) {

String re_md5 = new String();

try {

MessageDigest md = MessageDigest.getInstance("MD5");

md.update(plainText.getBytes());

byte b\[\] = md.digest();

int i;

StringBuffer buf = new StringBuffer("");

for (int offset = 0; offset < b.length; offset++) {

i = boffset;

if (i < 0)

i += 256;

if (i < 16)

buf.append("0");

buf.append(Integer.toHexString(i));

}

re_md5 = buf.toString();

} catch (Exception e) {

e.printStackTrace();

}

return re_md5;

}

登录页,首先传入"username"、"email"、"phone"、"password",用户可通过用户名、邮箱、手机号进行登陆,通过判断resultList来确定查询结果,然后执行查询用户组UserGroup,用户组里面不存在,依然报"用户不存在",执行完以上代码,最后涉及到用户带有"审核"的,会查询examine_state(用户的审核状态),数据库表user_group中含有source_table和source_field进行查询,以上步骤完成,对输入的密码进行存储Token到数据库,匹对账号和密码,数据库中的AccessToken为令牌,用于身份认证,其代码如下:

@PostMapping("login")

public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

log.info("执行登录接口");

String username = data.get("username");

String email = data.get("email");

String phone = data.get("phone");

String password = data.get("password");

List resultList = null;

Map<String, String> map = new HashMap<>();

找回密码,接收用户输入的用户名、密码、验证码,并进行条件判断,代码如下:

@PostMapping("forget_password")

public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {

JSONObject ret = new JSONObject();

String username = form.getUsername();

String code = form.getCode();

String password = form.getPassword();

if(code == null || code.length() == 0){

return error(30000, "验证码不能为空");

}

if(username == null || username.length() == 0){

return error(30000, "用户名不能为空");

}

if(password == null || password.length() == 0){

return error(30000, "密码不能为空");

}

Map<String, String> query = new HashMap<>();

query.put("username",username);

Query select = service.select(query, service.readConfig(request));

List list = select.getResultList();

if (list.size() > 0) {

User o = (User) list.get(0);

JSONObject query2 = new JSONObject();

JSONObject form2 = new JSONObject();

// 修改用户密码

query2.put("user_id",o.getUserId());

form2.put("password",service.encryption(password));

service.update(query, service.readConfig(request), form2);

return success(1);

}

return error(70000,"用户不存在");

}

修改密码,通过请求data,获取旧密码,并将新密码重新赋值,期间都是需要通过加密,代码如下:

@PostMapping("change_password")

public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){

String token = request.getHeader("x-auth-token");

Integer userId = tokenGetUserId(token);

Map<String, String> query = new HashMap<>();

String o_password = data.get("o_password");

query.put("user_id" ,String.valueOf(userId));

query.put("password" ,service.encryption(o_password));

int count = service.selectBaseCount(service.count(query, service.readConfig(request)));

if(count > 0){

Map<String,Object> form = new HashMap<>();

form.put("password",service.encryption(data.get("password")));

service.update(query,service.readConfig(request),form);

return success(1);

}

return error(10000,"密码修改失败!");

}

相关推荐
cspttty1 小时前
2026年财务分析岗JD中的Excel、SQL、BI与业务分析要求
大数据·sql·excel
芒鸽1 小时前
把 Agent 运行时做成插件系统:agent-harness(openJiuwen Rust版) 的实践
开发语言·后端·rust
CHHH_HHH1 小时前
【Linux系统篇】进程间通信揭秘:从管道到共享内存
linux·服务器·c语言·开发语言·后端·ubuntu
Q26433650232 小时前
【有源码】基于大数据的零售交易者行为特征与生存状况数据分析及可视化 Hadoop+Spark大数据项目
大数据·hadoop·信息可视化·数据挖掘·数据分析·spark·毕业设计
mldong2 小时前
Node 开发者也有自己的轻量工作流引擎了:npm i 一行,5 分钟跑通一条审批流
javascript·后端·typescript
Q26433650234 小时前
【有源码】基于 Hadoop 生态的化妆品销售数据存储分析与可视化 面向化妆品行业的用户画像构建与销售机会识别研究
大数据·hadoop·python·机器学习·spark·毕业设计·课程设计
考虑考虑10 小时前
cmd局部设置java变量
运维·后端·自动化运维
头茬韭菜10 小时前
第 1 篇:「Glass-Box 的骨架」——全景架构与六层数据流水线
架构·agent·semantica
2601_9622186110 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法