基于web应用开发编写用户信息汇总

一、用户管理模块设计及实现

1.1 与用户管理需求

对于任何一个管理系统,用户管理功能都是必不可少的。通常,在使用系统之前,用户需要先注册。在使用过程中,往往还存在修改需求,如修改个人联系方式、收货地址等。

在线书店管理系统中主要有两类用户——普通用户和管理员。

  • 普通用户的操作包括用户注册、用户登录、用户退出和用户个人信息修改等。

  • 管理员的操作包括用户登录、用户退出和用户管理(包括新增普通用户、对普通用户的信息进行编辑和删除普通用户)等。

我们将实现用户注册、用户登录和用户管理等功能。

普通用户在首次使用系统之前,需要注册,建立个人账户,此时需要提供必要的个人信息,如登录账号、密码、全名、电话、收货地址等,以便完成图书的支付和购买流程。普通用户注册流程如下图所示。

用户登录系统,输入用户名和密码后,系统会验证用户角色,因为系统需要知道此时登录的用户是管理员还是普通用户。若系统验证其为普通用户,则进入普通用户登录后的页面;若是管理员,则进入管理员管理页面;否则,系统提示用户名或密码错误的信息。用户登录流程如下图所示。

本系统有两种角色,一种是管理员,二种是普通用户。管理员可以新增和删除普通用户,并且可以对普通用户的信息进行编辑。用户管理流程如下图:

1.2 接口需求分析

针对用户管理要求,我们定义如下接口。

  1. 用户注册接口。

  • 接口名称:/registration

  • 接口参数:User类的对象

  • 返回类型:若注册成功,则返回/login页面;否则,返回registration(注册)页面。

  1. 用户信息查询接口。

  • 接口名称:/profile。利用GET方式获取用户信息。

  • 接口参数:用户信息。

  • 返回类型:若查询到用户信息,则返回/profile页面。

  1. 用户信息编辑接口。

  • 接口名称:/users/edit/{userId}。

  • 接口参数:User类的对象。

  • 返回类型:若用户信息修改成功,则返回修改后信息的/profile页面。

  1. 用户添加接口。

  • 接口名称:/user/add。利用POST方式添加用户信息。

  • 接口参数:User类的对象。

  • 返回类型:若用户添加成功,则返回/addUser页面。

  1. 用户删除接口

  • 接口名称:/users/delete/{userId}。利用DELETE方式删除用户。

  • 接口参数:userId(用户ID)。

  • 返回类型:返回用户列表(showAllUsers)页面。

    1.3 后端设计及编码


    本节介绍用户域模型设计、Repository实现、用户服务接口实现和控制层实现。

1.编写User类

 

  • userId:用户ID,自动生成的主键。
  • userName:用户名,长度在1到50之间。
  • userPassword:用户密码,最大长度为60。
  • userFullname:用户全名,最大长度为50。
  • userPhone:用户电话,最大长度为50。
  • userAddress:用户地址,最大长度为120。
  • userBankcard:用户银行卡号,最大长度为80。

该用户类还与另一个实体类Roles之间存在多对多的映射关系。每个用户可以拥有多个角色。

该类提供了构造函数、getter和setter方法,并重写了equals()和hashCode()方法

 2.编写Roles实体

 

 

这是一个使用Java编写的角色实体类。根据代码可以看出,该类使用了@Data@Entity@Table注解来标识它是一个数据实体类,并且与数据库中的"roles"表进行映射。

其中,@Id注解表示该属性是表的主键,@Column注解指定了映射到数据库中的列名。

该类有一个属性rolename,它是一个字符串类型的变量,用于表示角色名称。

另外,该类实现了Serializable接口,表示该类的对象可以被序列化。

3.Order实体

这段代码是一个简单的 Java 实体类,用于描述一个订单对象。它使用了 JPA(Java Persistence API)注解来映射到数据库表中的字段。下面是每个字段的解释:

  • orderid:订单 ID,使用 @Id 注解标记为主键,并使用 @GeneratedValue 指定自增长策略。
  • userId:用户 ID,使用 @NotNull 注解标记为非空字段,表示该订单必须关联到一个用户。
  • orderdate:订单日期,使用 @NotNull 注解标记为非空字段,表示该订单必须有一个有效的日期。
  • status:订单状态,使用 @Column 注解指定该字段在数据库表中的列名,并设置 nullable=false 表示该字段不允许为空。
  • totalprice:订单总价,使用 @Column 注解指定该字段在数据库表中的列名,并设置 precision=5 和 scale=1 表示该字段最多可以存储 5 位数字,其中小数部分最多为 1 位。

该实体类包含一个默认构造函数和一个带参数的构造函数,用于创建新的订单对象。该类还实现了 Serializable 接口,以便在网络传输或保存到文件系统中时可以进行序列化。

4.用户Repository接口

5.RolesRepository接口 

6.OrderRepository接口 

1.3 用户服务接口实现 

 

这是一个用户服务类(UserService),用于处理与用户相关的业务逻辑。该类使用了自动装配注解@Autowired来注入依赖的三个仓库类:UserRepository、RolesRepository和OrderRepository。

该类提供了以下方法:

  • findByUserName(String userName):通过用户名查找用户。

  • registerUser(User user):注册用户。该方法创建一个新的用户对象,将传入的用户信息设置到新用户对象中,并对密码进行加密处理。然后将新用户保存到数据库中。

  • updateUser(User user):更新用户信息。该方法根据传入的用户ID查找数据库中对应的用户对象,然后更新用户的全名、地址、电话和银行卡号,并将更新后的用户保存到数据库中。

  • findAllUsers():查找所有用户信息。该方法返回数据库中所有的用户对象列表。

  • findUserById(Long userId):通过用户ID查找用户。

  • deleteUserById(Long userId):通过用户ID删除用户。

  • getUserOrderAmount(Long userId):查询用户对应的订单数量。该方法根据用户ID查找数据库中该用户的订单列表,并返回订单的数量。如果订单列表为空,则返回0。

请注意,这些方法依赖于三个仓库类(UserRepository、RolesRepository和OrderRepository),你需要确保这些仓库类已经正确地实现并配置了相应的数据库操作。

1.3.1 用户控制层实现

 

这段代码是一个 UserService 类,用于处理用户相关的业务逻辑。它使用了 Spring Framework 的注解来实现依赖注入,其中涉及到三个仓库类:UserRepository、RolesRepository 和 OrderRepository。

下面是每个方法的功能解释:

  • findByUserName(String userName):通过用户名查找用户。调用 userRepository.findByUserName(userName) 方法来查询数据库中对应的用户信息,并返回 User 对象。
  • registerUser(User user):注册用户。创建一个新的 User 对象,并设置用户名、加密后的密码、全名、电话、地址和银行卡等信息。通过 rolesRepository.findById("ROLE_USER") 方法查找到 "ROLE_USER" 角色信息,并将其添加到新用户的角色集合中。最后调用 userRepository.save(newUser) 方法保存用户信息,并返回新创建的 User 对象。
  • updateUser(User user):更新用户信息。通过用户ID从数据库中查找到对应的用户对象,并更新其全名、地址、电话和银行卡等信息。最后调用 userRepository.save(updateUser) 方法保存更新后的用户信息。
  • findAllUsers():查找所有用户信息。调用 userRepository.findAll() 方法返回数据库中所有用户的列表。
  • findUserById(Long userId):通过用户ID查找用户。调用 userRepository.findById(userId).get() 方法根据用户ID从数据库中查找对应的用户信息,并返回 User 对象。
  • deleteUserById(Long userId):通过用户ID删除用户。调用 userRepository.deleteById(userId) 方法根据用户ID从数据库中删除对应的用户信息。
  • getUserOrderAmount(Long userId):查询用户对应的订单数量。调用 orderRepository.findByUserId(userId) 方法根据用户ID从数据库中查找对应的订单信息,并返回订单数量。

这个 UserService 类封装了与用户相关的操作,通过调用 UserRepository 和 OrderRepository 实现对用户数据和订单数据的访问和操作。

 

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值