全部开发者教程

企业级在线办公系统

我们现在可以添加用户了,接下来要完成的是用户信息修改,这个需要我们编写后端的SQL语句和Java代码,本小节咱们就来实现后端部分的程序。

一、编写持久层代码

因为我们无法判断用户在弹窗页面中修改了用户信息的哪部分,所以我们编写UPDATE语句需要判断提交的数据只要不为空,就更新到数据表中。

TbUserDao.xml文件中,声明UPDATE语句。

<update id="update" parameterType="HashMap">
    UPDATE tb_user
    SET
    <if test="username!=null and password!=null">
        username = #{username},
        password = HEX(AES_ENCRYPT(#{password},#{username})),
    </if>
    <if test="name!=null">
        name = #{name},
    </if>
    <if test="sex!=null">
        sex = #{sex},
    </if>
    <if test="tel!=null">
        tel = #{tel},
    </if>
    <if test="email!=null">
        email = #{email},
    </if>
    <if test="hiredate!=null">
        hiredate = #{hiredate},
    </if>
    <if test="role!=null">
        role = #{role},
    </if>
    <if test="root!=null">
        root = #{root},
    </if>
    <if test="deptId!=null">
        dept_id = #{deptId},
    </if>
    <if test="status!=null">
        status = #{status},
    </if>
    id=id
    WHERE id=#{userId}
</update>

TbUserDao.java接口中,定义抽象方法。

@Mapper
public interface TbUserDao {
    ……
    public int update(HashMap param);
}

二、编写业务层代码

UserService.java接口中,声明抽象方法。

public interface UserService {
    ……
    public int update(HashMap param);
}

UserServiceImpl.java类中,实现抽象方法。

public class UserServiceImpl implements UserService {
    ……
    @Override
    public int update(HashMap param) {
        int rows = userDao.update(param);
        return rows;
    }
}

三、编写Web层代码

创建UpdateUserForm.java类,用于保存Ajax提交的数据。

@Schema(description = "修改用户信息表单")
@Data
public class UpdateUserForm {

    @NotNull(message = "userId不能为空")
    @Min(value = 1, message = "userId不能小于1")
    @Schema(description = "用户ID")
    private Integer userId;

    @NotBlank(message = "username不能为空")
    @Pattern(regexp = "^[a-zA-Z0-9]{5,20}$", message = "username内容不正确")
    @Schema(description = "用户名")
    private String username;
    
    @NotBlank(message = "password不能为空")
    @Pattern(regexp = "^[a-zA-Z0-9]{6,20}$", message = "password内容不正确")
    @Schema(description = "密码")
    private String password;

    @NotBlank(message = "name不能为空")
    @Pattern(regexp = "^[\\u4e00-\\u9fa5]{2,10}$", message = "name内容不正确")
    @Schema(description = "姓名")
    private String name;

    @NotBlank(message = "sex不能为空")
    @Pattern(regexp = "^男$|^女$", message = "sex内容不正确")
    @Schema(description = "性别")
    private String sex;

    @NotBlank(message = "tel不能为空")
    @Pattern(regexp = "^1\\d{10}$", message = "tel内容不正确")
    @Schema(description = "电话")
    private String tel;

    @NotBlank(message = "email不能为空")
    @Email(message = "email内容不正确")
    @Schema(description = "邮箱")
    private String email;

    @NotBlank(message = "hiredate日期不能为空")
    @Pattern(regexp = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$", message = "hiredate内容不正确")
    @Schema(description = "入职日期")
    private String hiredate;

    @NotEmpty(message = "role不能为空")
    @Schema(description = "角色")
    private Integer[] role;

    @NotNull(message = "deptId不能为空")
    @Min(value = 1, message = "deptId不能小于1")
    @Schema(description = "部门")
    private Integer deptId;
    
}

UserController.java类中,定义Web方法。

public class UserController {
    ……
    @PostMapping("/update")
    @SaCheckPermission(value = {"ROOT", "USER:UPDATE"}, mode = SaMode.OR)
    @Operation(summary = "修改用户")
    public R update(@Valid @RequestBody UpdateUserForm form) {
        HashMap param = JSONUtil.parse(form).toBean(HashMap.class);
        param.replace("role", JSONUtil.parseArray(form.getRole()).toString());
        int rows = userService.update(param);
        if (rows == 1) {
            //修改资料后,把该用户踢下线
            StpUtil.logoutByLoginId(form.getUserId());
        }
        return R.ok().put("rows", rows);
    }
}