一、整体架构概述

本药房分店会员积分管理网站采用基于 PHP 8.3 和 SQLite 数据库的架构设计。整体架构分为表现层、业务逻辑层和数据访问层,以实现高内聚、低耦合的软件设计目标,提高系统的可维护性和可扩展性。系统会集中管理会员信息,但会详细记录会员在不同分店的办理和消费情况,同时兼顾分店与总店之间的数据交互需求。

二、架构层次说明

1. 表现层(Presentation Layer)

  • 负责与用户进行交互,展示系统的功能界面。除了包含通用的会员注册、登录页面,会员信息查询与修改页面,积分录入 POS 接口页面,可兑换商品展示页面,商品查询页面,订单创建页面等,还增设分店特色信息展示,如分店的优惠活动、营业时间等。
  • 运用 HTML、CSS 和 JavaScript 技术进行页面布局和交互设计,通过 PHP 动态生成页面内容,确保页面具备动态性和交互性,并且可以根据不同分店的风格进行定制。

2. 业务逻辑层(Business Logic Layer)

  • 作为系统的核心处理层,负责处理各类业务逻辑。涵盖会员注册、登录时的信息验证,积分录入时按规则计算积分与更新会员信息,积分兑换时的商品库存检查与订单创建等逻辑。此外,还需处理分店与总店间的数据交互,例如将分店的消费记录和业务数据及时同步到总店。
  • 对来自表现层的请求进行处理,并调用数据访问层的方法来获取或存储数据。将业务规则封装起来,保证业务逻辑的一致性和准确性。

3. 数据访问层(Data Access Layer)

  • 负责与 SQLite 数据库进行交互,执行数据的增、删、改、查操作。为业务逻辑层提供统一的数据访问接口,隐藏数据库操作的细节。
  • 实现对会员信息表、可兑换商品表、订单表等数据库表的操作,确保数据的完整性和一致性。在操作数据时,准确记录会员在不同分店的办理和消费情况。

三、功能模块架构

1. 用户管理模块

  • 注册功能:POS 端录入会员姓名、卡号、电话、证件、密码等信息进行注册,同时记录会员的办理分店。系统对输入信息进行验证,确保信息合法且唯一,然后将用户信息存储到集中数据库中。
  • 登录功能:用户输入卡号或证件号和密码进行登录,系统在集中数据库中验证用户身份。若验证通过,允许用户进入系统并记录登录状态,同时显示用户在不同分店的相关信息。
  • 信息查询与修改功能:用户可查询自己的会员信息,包含姓名、卡号、积分、总消费、VIP 等级、电话、证件、经验值、消费次数、最后消费时间、是否可用、入会时间以及办理分店等。用户可修改部分信息,如电话、密码等,系统更新集中数据库中的相应记录。

2. 积分管理模块

  • 积分录入功能:在积分录入 POS 接口页面,工作人员可通过卡号、姓名、电话、证件等多种方式查找会员。找到会员后,输入消费金额和消费分店,系统根据积分规则为用户添加积分,并更新总消费金额、消费次数、最后消费时间以及消费分店等信息,同时将这些数据存储到集中数据库。
  • 积分规则:根据消费金额和会员的 VIP 等级,按照一定比例计算积分。积分规则由总店统一制定并同步到各分店,例如普通会员每消费 1 元积 1 分,VIP 会员每消费 1 元积 1.5 分等。

3. 积分兑换模块

  • 可兑换商品展示功能:在网站上展示可兑换的商品列表,包括商品名称、所需积分、库存数量等信息。商品信息由总店统一管理,各分店同步显示。
  • 商品查询功能:用户可以通过商品名称、类别等条件查询可兑换的商品。查询结果基于集中数据库中的商品信息,同时显示商品在各分店的库存分布情况。
  • 订单创建功能:用户选择要兑换的商品并确认后,系统检查用户的积分是否足够以及商品在指定分店的库存是否充足。若满足条件,则创建订单,扣除用户的积分,更新商品的库存数量,并记录订单所属的消费分店,将订单信息存储到集中数据库。
  • POS 端积分兑换功能:在 POS 端也可进行会员积分兑换操作,工作人员输入会员信息、要兑换的商品信息和消费分店,系统进行相应的验证和处理,将结果同步到集中数据库。

4. 分店管理模块

  • 分店信息管理:提供分店信息的管理功能,包括分店名称、地址、联系方式、营业时间等信息的设置和修改。分店信息存储在集中数据库中,方便总店进行统一管理。
  • 数据同步与统计:分店定期将业务数据(如消费记录、积分录入、订单信息等)同步到总店。同时,分店可以查询和统计本分店的会员业务数据,如会员消费情况、积分兑换情况等。

四、数据库设计架构

1. 会员信息表(members)

字段名 类型 描述
id INTEGER 唯一标识,自增
姓名 VARCHAR(50) 会员姓名
卡号 VARCHAR(20) 会员卡号,唯一
积分 INTEGER 会员当前积分
总消费 DECIMAL(10, 2) 会员总消费金额
VIP 等级 VARCHAR(10) 会员 VIP 等级
电话 VARCHAR(20) 会员联系电话
证件 VARCHAR(20) 会员证件号码
密码 VARCHAR(255) 会员登录密码,加密存储
经验值 INTEGER 会员经验值,用于升级 VIP 等级
消费次数 INTEGER 会员消费次数
最后消费时间 DATETIME 会员最后一次消费的时间
是否可用 BOOLEAN 会员账号是否可用
入会时间 DATETIME 会员入会时间
办理分店 VARCHAR(50) 会员办理业务的分店名称

2. 可兑换商品表(exchange_goods)

字段名 类型 描述
id INTEGER 唯一标识,自增
商品名称 VARCHAR(100) 商品名称
商品图片 VARCHAR(255) 商品图片的存储路径
所需积分 INTEGER 兑换该商品所需的积分
库存数量 INTEGER 商品的当前库存数量
类别 VARCHAR(50) 商品所属类别

3. 订单表(orders)

字段名 类型 描述
id INTEGER 唯一标识,自增
会员 id INTEGER 关联会员信息表的 id,表明该订单所属的会员
商品 id INTEGER 关联可兑换商品表的 id,表明该订单兑换的商品
兑换时间 DATETIME 订单兑换的时间
订单状态 VARCHAR(20) 订单状态,如已完成、待处理、已取消等
消费分店 VARCHAR(50) 订单发生的分店名称

4. 分店信息表(branches)

字段名 类型 描述
id INTEGER 唯一标识,自增
分店名称 VARCHAR(50) 分店的名称
地址 VARCHAR(255) 分店的地址
联系方式 VARCHAR(20) 分店的联系电话
营业时间 VARCHAR(50) 分店的营业时间

五、系统安全架构

1. 用户认证与授权

  • 采用用户名(卡号或证件号)和密码的方式进行用户认证,确保只有合法用户才能访问系统。根据用户的角色(如普通会员、分店管理员、总店管理员等)进行授权,限制用户对系统功能的访问权限。例如,分店管理员只能管理本分店的业务数据,总店管理员可以管理所有分店的数据。
  • 在进行数据同步和交互时,对数据的来源和目的地进行身份验证,确保数据传输的安全性。

2. 数据加密

  • 对用户的密码等敏感信息进行加密存储,防止数据泄露。在数据传输过程中,使用 HTTPS 协议进行加密传输,确保数据的安全性。对于分店与总店之间的数据交互,采用 SSL/TLS 加密技术,保证数据的保密性和完整性。

3. 输入验证

  • 对用户输入的数据进行严格的验证,防止 SQL 注入等安全漏洞。在业务逻辑层和数据访问层对输入数据进行合法性检查,确保数据的安全性和完整性。同时,对数据同步过程中的数据进行验证,保证数据的准确性和一致性。

六、系统性能优化架构

1. 数据库优化

  • 合理设计数据库表结构,建立索引,提高数据查询和更新的效率。例如,在会员信息表的卡号、证件字段和订单表的会员 id、商品 id 字段上建立索引。定期对数据库进行清理和优化,删除无用的数据,提高数据库的性能。
  • 在进行数据同步时,采用批量同步的方式,减少数据传输的次数,提高同步效率。

2. 缓存机制

  • 采用缓存技术,对一些常用的数据(如可兑换商品列表、会员基本信息等)进行缓存,减少对数据库的访问次数,提高系统的响应速度。对于分店系统,可以在本地缓存一些常用的数据,减少与总店数据库的交互。
  • 定期更新缓存数据,确保缓存数据的及时性和准确性。

3. 代码优化

  • 对 PHP 代码进行优化,减少代码的冗余,提高代码的执行效率。采用合理的算法和数据结构,提高系统的性能。在进行数据同步时,优化同步代码,减少同步时间和资源消耗。