尚医通-用户管理功能实现(三十四)
迪丽瓦拉
2025-05-28 11:33:11
0

目录:

(1)后台系统-用户管理-用户列表接口开发

(2)后台系统-用户管理-用户列表与前端整合

(3)后台系统-用户管理-用户锁定功能

(4)后台系统-用户管理-用户详情功能实现

(5)后台系统-用户管理-用户认证审批功能实现


(1)后台系统-用户管理-用户列表接口开发

前面我们做了用户登录、用户认证与就诊人,现在我们需要把这些信息在我们的平台管理系统做一个统一管理

先把平台管理系统中的controller放到api模块下操作模块:service-user

 

在controller中创建一个用户的controller:

UserInfoQueryVo:条件对象作为参数

 

 

 

package com.atguigu.yygh.user.controller;import com.atguigu.yygh.common.result.Result;
import com.atguigu.yygh.model.user.UserInfo;
import com.atguigu.yygh.user.service.UserInfoService;
import com.atguigu.yygh.vo.user.UserInfoQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/admin/user")
public class UserController {@Autowiredprivate UserInfoService userInfoService;//用户列表(条件查询带分页)@GetMapping("{page}/{limit}")public Result list(@PathVariable Long page,@PathVariable Long limit,UserInfoQueryVo userInfoQueryVo) {//创建Page对象Page pageParam = new Page<>(page,limit);IPage pageModel = userInfoService.selectPage(pageParam,userInfoQueryVo);return Result.ok(pageModel);}
}

 service接口:

package com.atguigu.yygh.user.service;import com.atguigu.yygh.model.user.UserInfo;
import com.atguigu.yygh.vo.user.LoginVo;
import com.atguigu.yygh.vo.user.UserAuthVo;
import com.atguigu.yygh.vo.user.UserInfoQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;import java.util.Map;public interface UserInfoService extends IService {//用户手机登录接口Map login(LoginVo loginVo);//根据openid判断数据库是否存在微信的扫描人信息UserInfo selectWxInfoOpenId(String openid);//用户认证接口void userAuth(Long userId, UserAuthVo userAuthVo);//用户列表(条件查询带分页)IPage selectPage(Page pageParam, UserInfoQueryVo userInfoQueryVo);
}

 实现类:

Model中有个枚举类:

 

package com.atguigu.yygh.enums;public enum AuthStatusEnum {NO_AUTH(0, "未认证"),AUTH_RUN(1, "认证中"),AUTH_SUCCESS(2, "认证成功"),AUTH_FAIL(-1, "认证失败"),;private Integer status;private String name;AuthStatusEnum(Integer status, String name) {this.status = status;this.name = name;}public static String getStatusNameByStatus(Integer status) {AuthStatusEnum arrObj[] = AuthStatusEnum.values();for (AuthStatusEnum obj : arrObj) {if (status.intValue() == obj.getStatus().intValue()) {return obj.getName();}}return "";}public Integer getStatus() {return status;}public void setStatus(Integer status) {this.status = status;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
 //用户列表(条件查询带分页)@Overridepublic IPage selectPage(Page pageParam, UserInfoQueryVo userInfoQueryVo) {//UserInfoQueryVo获取条件值String name = userInfoQueryVo.getKeyword(); //用户名称Integer status = userInfoQueryVo.getStatus();//用户状态Integer authStatus = userInfoQueryVo.getAuthStatus(); //认证状态String createTimeBegin = userInfoQueryVo.getCreateTimeBegin(); //开始时间String createTimeEnd = userInfoQueryVo.getCreateTimeEnd(); //结束时间//对条件值进行非空判断QueryWrapper wrapper = new QueryWrapper<>();if(!StringUtils.isEmpty(name)) {wrapper.like("name",name);}if(!StringUtils.isEmpty(status)) {wrapper.eq("status",status);}if(!StringUtils.isEmpty(authStatus)) {wrapper.eq("auth_status",authStatus);}if(!StringUtils.isEmpty(createTimeBegin)) {wrapper.ge("create_time",createTimeBegin);}if(!StringUtils.isEmpty(createTimeEnd)) {wrapper.le("create_time",createTimeEnd);}//调用mapper的方法IPage pages = baseMapper.selectPage(pageParam, wrapper);//编号变成对应值封装 先遍历pages.getRecords().stream().forEach(item -> {//调用编号变成对应值封装this.packageUserInfo(item);});return pages;}//编号变成对应值封装private UserInfo packageUserInfo(UserInfo userInfo) {//处理认证状态编码 调用枚举类中的方法进行转态转换userInfo.getParam().put("authStatusString",AuthStatusEnum.getStatusNameByStatus(userInfo.getAuthStatus()));//处理用户状态 0  1String statusString = userInfo.getStatus().intValue()==0 ?"锁定" : "正常";userInfo.getParam().put("statusString",statusString);//放到usetInfo的属性里面return userInfo;}

(2)后台系统-用户管理-用户列表与前端整合

打开后台管理系统的项目运行:

在控制台输入 :启动这个项目

 访问:

 http://localhost:9528

 

 

在api目录下创建userInfo.js:

import request from '@/utils/request'const api_name = '/admin/user'export default {//用户列表方法getPageList(page, limit, searchObj) {return request({url: `${api_name}/${page}/${limit}`,method: 'get',params: searchObj})}
}

 添加路由:

在router文件夹下的eindex.js中添加路由:

创建路由中的目录页面: 

 

 



点击左侧用户列表: 

 

(3)后台系统-用户管理-用户锁定功能

 Usercontroller:继续添加:

 //用户锁定@GetMapping("lock/{userId}/{status}")public Result lock(@PathVariable Long userId,@PathVariable Integer status) {userInfoService.lock(userId,status);return Result.ok();}

userInfoservice:接口:

//用户锁定void lock(Long userId, Integer status);

实现类:

//用户锁定@Overridepublic void lock(Long userId, Integer status) {if(status.intValue()==0 || status.intValue()==1) {UserInfo userInfo = baseMapper.selectById(userId);userInfo.setStatus(status);baseMapper.updateById(userInfo);}}

在前端userInfo.js中添加访问:

 

在list.vue页面继续添加锁定按钮:

 

 编写方法:

 

点击取消锁定:

 

 点击锁定:

 

(4)后台系统-用户管理-用户详情功能实现

 在UserController中继续添加:

 //用户详情@GetMapping("show/{userId}")public Result show(@PathVariable Long userId) {Map map = userInfoService.show(userId);return Result.ok(map);}

 userInfoservice接口:

 //用户详情Map show(Long userId);

实现类:

前端写一个隐藏路由做详情跳转的使用:

 

 

 创建在user/userInfo目录下创建show.vue



在userInfo.js中添加访问接口:

在列表页面加详情 查看按钮:

 

 测试:

点击最后一个查看:成功查询

 

 (5)后台系统-用户管理-用户认证审批功能实现

用户认证列表 

添加路由:

{path: 'userInfo/authList',name: '认证审批列表',component: () =>import('@/views/user/userInfo/authList'),meta: { title: '认证审批列表', icon: 'table' }}

 创建authList.vue:这个页面跟前面的List.vue页面代码基本一样,只是显示的时候,只让他显示正在审批的用户:



 用户审批接口开发:

在UserController中:继续添加

//认证审批@GetMapping("approval/{userId}/{authStatus}")public Result approval(@PathVariable Long userId,@PathVariable Integer authStatus) {userInfoService.approval(userId,authStatus);return Result.ok();}

UserInfoService接口:

//认证审批void approval(Long userId, Integer authStatus);

 实现类:

认证状态(0:未认证 1:认证中 2:认证成功 -1:认证失败)

 //认证审批  2通过  -1不通过@Overridepublic void approval(Long userId, Integer authStatus) {if(authStatus.intValue()==2 || authStatus.intValue()==-1) {UserInfo userInfo = baseMapper.selectById(userId);userInfo.setAuthStatus(authStatus);baseMapper.updateById(userInfo);}}

前端在userInfo.js:定义访问:

在authList.vue页面中添加审批组件:

 

在页面中继续添加审批的方法 

 

点击通过:

 

 

数据库中的 字段由1变为2

 

 

 

相关内容