尚医通-day12【token续期和就诊人管理】(内附源码)

打印 上一主题 下一主题

主题 859|帖子 859|积分 2577

页面预览

就诊人管理

就诊人列表


添加就诊人




查看就诊人

![image-20230225060710

管理员系统用户管理

前面我们完成了用户登录、用户认证与就诊人管理,现在我们需要把这些信息在我们的平台管理系统中进行统一管理
用户列表

用户详情


第01章-token刷新

简单的设置redis和cookie的过期时间,会导致用户在操作的过程中掉线,为了解决这个问题,我们可以使用token续期的方案,具体的做法是生成一个刷新token。
1、存储token

设置token与refreshToken,都包含用户信息(userId、name、headimgurl),可以一样可以不一样,refreshToken比token时间更长,如token30分钟,refreshToken60分钟
在ApiWxController的callback方法的return "redirect:"前面,将之前的生成token和存储token的相关代码封装到saveToken方法中。
将如下代码进行封装:

封装成如下代码:
  1. @Resource
  2. private AuthContextHolder authContextHolder;
复制代码
  1. UserVo userVo = new UserVo();
  2. userVo.setName(name);
  3. userVo.setUserId(userInfo.getId());
  4. userVo.setHeadimgurl(userInfo.getHeadImgUrl());
  5. authContextHolder.saveToken(userVo, response);
  6. return "redirect:" + constantProperties.getSytBaseUrl();
复制代码
service-util中引入依赖
  1. <dependency>
  2.     <groupId>com.atguigu</groupId>
  3.     <artifactId>model</artifactId>
  4.     <version>1.0</version>
  5. </dependency>
复制代码
在AuthContextHolder中添加如下方法:
  1. /**
  2.      * 将token和refreshToken保存在redis和cookie中的通用方法
  3.      * @param userVo
  4.      * @param response
  5.      */
  6. public void saveToken(UserVo userVo, HttpServletResponse response) {
  7.     int redisMaxTime = 30;
  8.     //生成token/refreshToken
  9.     String token = getToken();
  10.     String refreshToken = getToken();
  11.     //将生成token/refreshToken存入redis:token做键,userVo做值
  12.     redisTemplate.opsForValue()//30分钟
  13.         .set("user:token:" + token, userVo, redisMaxTime, TimeUnit.MINUTES);
  14.     redisTemplate.opsForValue()//60分钟
  15.         .set("user:refreshToken:" + refreshToken, userVo, redisMaxTime * 2, TimeUnit.MINUTES);
  16.     //将token、refreshToken和name存入cookie
  17.     int cookieMaxTime = 60 * 30;//30分钟
  18.     CookieUtils.setCookie(response, "token", token, cookieMaxTime);
  19.     CookieUtils.setCookie(response, "refreshToken", refreshToken, cookieMaxTime * 2);
  20.     CookieUtils.setCookie(response, "name", URLEncoder.encode(userVo.getName()), cookieMaxTime * 2);
  21.     CookieUtils.setCookie(response, "headimgurl", URLEncoder.encode(userVo.getHeadimgurl()), cookieMaxTime * 2);
  22. }
复制代码
  1. private String getToken(){
  2.     return UUID.randomUUID().toString().replaceAll("-", "");
  3. }
复制代码
3、续期token

修改checkAuth方法,当token不存在时,续期token
  1. /**
  2.      * 检查授权状态并续期
  3.      * @param request
  4.      * @return
  5.      */
  6. public Long checkAuth(HttpServletRequest request, HttpServletResponse response){
  7.     //从http请求头中获取token
  8.     String token = request.getHeader("token");
  9.     if(StringUtils.isEmpty(token)) {
  10.         //throw new GuiguException(ResultCodeEnum.LOGIN_AUTH);
  11.         return refreshToken(request, response);//刷新token
  12.     }
  13.     Object userVoObj = redisTemplate.opsForValue().get("user:token:" + token);
  14.     if(userVoObj == null){
  15.         //throw new GuiguException(ResultCodeEnum.LOGIN_AUTH);
  16.         return refreshToken(request, response);//刷新token
  17.     }
  18.     UserVo userVo = (UserVo)userVoObj;
  19.     return userVo.getUserId();
  20. }
复制代码
  1. /**
  2.      * 刷新token
  3.      * @param request
  4.      * @param response
  5.      * @return
  6.      */
  7. public Long refreshToken(HttpServletRequest request, HttpServletResponse response) {
  8.     //从cookie中获取刷新token
  9.     String refreshToken = CookieUtils.getCookie(request, "refreshToken");
  10.     //从redis中根据刷新token获取用户信息
  11.     Object userVoObj = redisTemplate.opsForValue().get("user:refreshToken:" + refreshToken);
  12.     if(userVoObj == null) {
  13.         //LOGIN_AURH(214, "登录过期"),
  14.         throw new GuiguException(ResultCodeEnum.LOGIN_TIMEOUT);//登录过期
  15.     }
  16.     UserVo userVo = (UserVo) userVoObj;
  17.     saveToken(userVo, response);
  18.     return userVo.getUserId();
  19. }
复制代码
4、修改checkAuth方法的调用

FrontUserInfoController和FrontFileController中的方法,添加response参数
5、cookie跨域

跨域ajax访问时,session_id不会被存储,cookie不会被传递到后端,因此需要解决cookie跨域存储的问题
解决方案:
(1)网关配置文件CorsConfig中添加如下设置:
  1. config.setAllowCredentials(true); //避免跨域访问时session_id每次不一致
复制代码
(2)前端axios初始化文件request.js添加如下设置:
  1. withCredentials: true //避免跨域访问时session_id每次不一致
复制代码
6、前端request.js拦截处理

如果接口返回214状态(登录超时),说明用户超时未操作,直接退出。
  1. // http response 拦截器
  2. service.interceptors.response.use(
  3.         response => {
  4.                 //如果响应码是214,则需要登录超时
  5.                 if (response.data.code === 214) {
  6.                         // to re-login
  7.                         MessageBox.confirm('登录超时, 请重新登录', '确认退出', {
  8.                                 confirmButtonText: '重新登录',
  9.                                 cancelButtonText: '回到首页',
  10.                                 type: 'warning'
  11.                         }).then(() => {
  12.                                 window.location.href = process.env.BASE_API + '/front/user/wx/login'
  13.                         }).catch(()=>{
  14.                                 window.location.href = '/'
  15.                         })
  16.                        
  17.                 }else if (response.data.code !== 200) {
  18.                         Message({
  19.                                 message: response.data.message,
  20.                                 type: 'error',
  21.                                 duration: 5 * 1000
  22.                         })
  23.                         return Promise.reject(response.data)
  24.                 } else {
  25.                         return response.data
  26.                 }
  27.         },
  28.         error => {
  29.                 return Promise.reject(error.response)
  30.         })
复制代码
7、myheader.vue

myheader.vue中showInfo方法的修改,保证token过期后,用户名信息依然显示
  1. showInfo() {
  2.     let refreshToken = cookie.get('refreshToken')
  3.     if (refreshToken) {
  4.         this.name = cookie.get('name')
  5.         this.headimgurl = cookie.get('headimgurl')
  6.     }
  7. },
复制代码
myheader.vue中退出登录方法的修改,需要清空refreshToken
  1. cookie.set('name', '', {domain: 'localhost'})
  2. cookie.set('token', '', {domain: 'localhost'})
  3. cookie.set('refreshToken', '', {domain: 'localhost'}) //清空refreshToken
  4. cookie.set('headimgurl', '', {domain: 'localhost'})
复制代码
补充:由于我们解决了cookie的ajax传递跨域问题,因此之前通过header传输的token其实可以不必要了,我们可以直接在后端从cookie中获取token的值,如下:
  1. String token = request.getHeader("token");
  2. //以上可以替换为如下:
  3. String token = CookieUtils.getCookie(request, "token");
复制代码
第02章-就诊人管理

1、后端接口

1.1、添加就诊人

FrontPatientController:
  1. package com.atguigu.syt.user.controller.front;
  2. @Api(tags = "就诊人管理")
  3. @RestController
  4. @RequestMapping("/front/user/patient")
  5. public class FrontPatientController {
  6.     @Resource
  7.     private PatientService patientService;
  8.     @Resource
  9.     private AuthContextHolder authContextHolder;
  10.     @ApiOperation("添加就诊人")
  11.     @ApiImplicitParam(name = "patient",value = "就诊人对象", required = true)
  12.     @PostMapping("/auth/save")
  13.     public Result savePatient(@RequestBody Patient patient, HttpServletRequest request, HttpServletResponse response) {
  14.         Long userId = authContextHolder.checkAuth(request, response);
  15.         patient.setUserId(userId);
  16.         patientService.save(patient);
  17.         return Result.ok().message("保存成功");
  18.     }
  19. }
复制代码
1.2、修改

FrontPatientController:
  1. @ApiOperation("修改就诊人")
  2. @ApiImplicitParam(name = "patient",value = "就诊人对象", required = true)
  3. @PutMapping("/auth/update")
  4. public Result updatePatient(@RequestBody Patient patient, HttpServletRequest request, HttpServletResponse response) {
  5.     authContextHolder.checkAuth(request, response);
  6.     patientService.updateById(patient);
  7.     return Result.ok().message("修改成功");
  8. }
复制代码
1.3、根据id获取就诊人

FrontPatientController:
  1. @ApiOperation("根据id获取就诊人信息")
  2. @ApiImplicitParam(name = "id",value = "就诊人id", required = true)
  3. @GetMapping("/auth/get/{id}")
  4. public Result<Patient> getPatient(@PathVariable Long id, HttpServletRequest request, HttpServletResponse response) {
  5.     Long userId = authContextHolder.checkAuth(request, response);
  6.     //加上userId参数,只可以获取自己名下的就诊人信息
  7.     Patient patient = patientService.getPatientById(id, userId);
  8.     return Result.ok(patient);
  9. }
复制代码
接口:PatientService
  1. /**
  2.      * 根据id获取本人名下的就诊人信息
  3.      * @param id
  4.      * @param userId
  5.      * @return
  6.      */
  7. Patient getPatientById(Long id, Long userId);
复制代码
实现:PatientServiceImpl
  1. @Override
  2. public Patient getPatientById(Long id, Long userId) {
  3.     LambdaQueryWrapper<Patient> queryWrapper = new LambdaQueryWrapper<>();
  4.     queryWrapper.eq(Patient::getUserId, userId).eq(Patient::getId, id);
  5.     Patient patient = baseMapper.selectOne(queryWrapper);
  6.     //封装数据
  7.     return this.packPatient(patient);
  8. }
复制代码
辅助方法
  1. @Resource
  2. private DictFeignClient dictFeignClient;
  3. @Resource
  4. private RegionFeignClient regionFeignClient;
复制代码
  1. /**
  2.      * 封装Patient对象里面其他参数
  3.      * @param patient
  4.      * @return
  5.      */
  6. private Patient packPatient(Patient patient) {
  7.     String certificatesTypeString = dictFeignClient.getName(DictTypeEnum.CERTIFICATES_TYPE.getDictTypeId(),patient.getCertificatesType());
  8.     String contactsCertificatesTypeString = dictFeignClient.getName(
  9.         DictTypeEnum.CERTIFICATES_TYPE.getDictTypeId(),patient.getContactsCertificatesType());
  10.     String provinceString = regionFeignClient.getName(patient.getProvinceCode());
  11.     String cityString = regionFeignClient.getName(patient.getCityCode());
  12.     String districtString = regionFeignClient.getName(patient.getDistrictCode());
  13.     patient.getParam().put("certificatesTypeString", certificatesTypeString);
  14.     patient.getParam().put("contactsCertificatesTypeString", contactsCertificatesTypeString);
  15.     patient.getParam().put("provinceString", provinceString);
  16.     patient.getParam().put("cityString", cityString);
  17.     patient.getParam().put("districtString", districtString);
  18.     patient.getParam().put("fullAddress",
  19.                           provinceString + cityString + districtString + patient.getAddress());
  20.     return patient;
  21. }
复制代码
1.4、获取就诊人列表

FrontPatientController
  1. @ApiOperation("获取就诊人列表")
  2. @GetMapping("/auth/findAll")
  3. public Result<List<Patient>> findAll(HttpServletRequest request, HttpServletResponse response) {
  4.     Long userId = authContextHolder.checkAuth(request, response);
  5.     List<Patient> list = patientService.findByUserId(userId);
  6.     return Result.ok(list);
  7. }
复制代码
接口:PatientService
  1. /**
  2.      * 根据userId获取就诊人列表
  3.      * @param userId
  4.      * @return
  5.      */
  6. List<Patient> findByUserId(Long userId);
复制代码
实现:PatientServiceImpl
  1. @Override
  2. public List<Patient> findByUserId(Long userId) {
  3.     LambdaQueryWrapper<Patient> queryWrapper = new LambdaQueryWrapper<>();
  4.     queryWrapper.eq(Patient::getUserId, userId);
  5.     List<Patient> patientList = baseMapper.selectList(queryWrapper);
  6.     patientList.forEach(patient -> {
  7.         patient.getParam().put("expenseMethod", patient.getIsInsure()==0?"自费":"医保");
  8.     });
  9.     return patientList;
  10. }
复制代码
1.5、删除就诊人

FrontPatientController:
  1. @ApiOperation("删除就诊人")
  2. @DeleteMapping("/auth/remove/{id}")
  3. public Result removePatient(@PathVariable Long id, HttpServletRequest request, HttpServletResponse response) {
  4.     Long userId = authContextHolder.checkAuth(request, response);
  5.     //加上userId参数,只可以删除自己名下的就诊人信息
  6.     patientService.removeById(id, userId);
  7.     return Result.ok();
  8. }
复制代码
接口:PatientService
  1. /**
  2. * 根据id删除自己名下的就诊人信息
  3. * @param id
  4. * @param userId
  5. */
  6. void removeById(Long id, Long userId);
复制代码
实现:PatientServiceImpl
  1. @Override
  2. public void removeById(Long id, Long userId) {
  3.     LambdaQueryWrapper<Patient> queryWrapper = new LambdaQueryWrapper<>();
  4.     queryWrapper.eq(Patient::getUserId, userId).eq(Patient::getId, id);
  5.     baseMapper.delete(queryWrapper);
  6. }
复制代码
2、前端整合

2.1、api

创建api/patient.js
  1. import request from '~/utils/request'
  2. export default {
  3.   save(patient) {
  4.     return request({
  5.       url: `/front/user/patient/auth/save`,
  6.       method: 'post',
  7.       data: patient
  8.     })
  9.   },
  10.   updateById(patient) {
  11.     return request({
  12.       url: `/front/user/patient/auth/update`,
  13.       method: 'put',
  14.       data: patient
  15.     })
  16.   },
  17.   getById(id) {
  18.     return request({
  19.       url: `/front/user/patient/auth/get/${id}`,
  20.       method: 'get'
  21.     })
  22.   },
  23.   findList() {
  24.     return request({
  25.       url: `/front/user/patient/auth/findAll`,
  26.       method: `get`
  27.     })
  28.   },
  29.   removeById(id) {
  30.     return request({
  31.       url: `/front/user/patient/auth/remove/${id}`,
  32.       method: 'delete'
  33.     })
  34.   }
  35. }
复制代码
2.2、页面渲染

资料:资料>就诊人管理>
就诊人列表:pages/patient/index.vue
就诊人添加与修改 :pages/patient/add.vue
就诊人详情与删除:pages/patient/show.vue
第03章-管理系统用户管理(作业)

1、后端接口

1.1、用户列表

AdminUserInfoController:
  1. package com.atguigu.syt.user.controller.admin;
  2. @Api(tags = "用户管理接口")
  3. @RestController
  4. @RequestMapping("/admin/user/userInfo")
  5. public class AdminUserInfoController {
  6.     @Resource
  7.     private UserInfoService userInfoService;
  8.     @ApiOperation("分页条件查询")
  9.     @ApiImplicitParams({
  10.             @ApiImplicitParam(name = "page",value = "页码",required = true),
  11.             @ApiImplicitParam(name = "limit",value = "每页记录数",required = true),
  12.             @ApiImplicitParam(name = "userInfoQueryVo",value = "查询对象",required = false)
  13.     })
  14.     @GetMapping("/{page}/{limit}")
  15.     public Result<IPage<UserInfo>> list(
  16.             @PathVariable Long page,
  17.             @PathVariable Long limit,
  18.             UserInfoQueryVo userInfoQueryVo
  19.     ) {
  20.         Page<UserInfo> pageParam = new Page<>(page,limit);
  21.         IPage<UserInfo> pageModel = userInfoService.selectPage(pageParam, userInfoQueryVo);
  22.         return Result.ok(pageModel);
  23.     }
  24. }
复制代码
Service接口:UserInfoService
  1. /**
  2.      * 查询用户分页列表
  3.      * @param pageParam
  4.      * @param userInfoQueryVo
  5.      * @return
  6.      */
  7. IPage<UserInfo> selectPage(Page<UserInfo> pageParam, UserInfoQueryVo userInfoQueryVo);
复制代码
Service实现:UserInfoServiceImpl
  1. @Override
  2. public IPage<UserInfo> selectPage(Page<UserInfo> pageParam, UserInfoQueryVo userInfoQueryVo) {
  3.     //UserInfoQueryVo获取条件值
  4.     String keyword = userInfoQueryVo.getKeyword(); //用户名称
  5.     String createTimeBegin = userInfoQueryVo.getCreateTimeBegin(); //开始时间
  6.     String createTimeEnd = userInfoQueryVo.getCreateTimeEnd(); //结束时间
  7.     //对条件值进行非空判断
  8.     LambdaQueryWrapper<UserInfo> wrapper = new LambdaQueryWrapper<>();
  9.     wrapper.and(!StringUtils.isEmpty(keyword),
  10.                 i -> i.like(UserInfo::getName, keyword).or().like(UserInfo::getPhone, keyword))
  11.         .ge(!StringUtils.isEmpty(createTimeBegin), UserInfo::getCreateTime, createTimeBegin)
  12.         .le(!StringUtils.isEmpty(createTimeEnd), UserInfo::getCreateTime, createTimeEnd);
  13.     //调用mapper的方法
  14.     IPage<UserInfo> pages = baseMapper.selectPage(pageParam, wrapper);
  15.     //编号变成对应值封装
  16.     pages.getRecords().forEach(this::packUserInfoForList);
  17.     return pages;
  18. }
复制代码
辅助方法:
  1. /**
  2.      * 封装用户状态、认证状态、证件类型信息
  3.      * @param userInfo
  4.      * @return
  5.      */
  6. private UserInfo packUserInfoForList(UserInfo userInfo) {
  7.     //判断用户是否已经提交实名认证
  8.     if(userInfo.getAuthStatus().intValue() != AuthStatusEnum.NO_AUTH.getStatus().intValue()){
  9.         String certificatesTypeString = dictFeignClient.getName(
  10.             DictTypeEnum.CERTIFICATES_TYPE.getDictTypeId(),
  11.             userInfo.getCertificatesType()
  12.         );
  13.         userInfo.getParam().put("certificatesTypeString", certificatesTypeString);
  14.     }
  15.    
  16.     userInfo.getParam().put("authStatusString", AuthStatusEnum.getStatusNameByStatus(userInfo.getAuthStatus()));
  17.     userInfo.getParam().put("statusString", UserStatusEnum.getStatusNameByStatus(userInfo.getStatus()));
  18.     return userInfo;
  19. }
复制代码
1.2、锁定和解锁

Controller:在AdminUserInfoController中添加方法
  1. @ApiOperation("锁定和解锁")
  2. @ApiImplicitParams({
  3.     @ApiImplicitParam(name = "userId",value = "用户id",required = true),
  4.     @ApiImplicitParam(name = "status",value = "用户状态",required = true)
  5. })
  6. @PutMapping("lock/{userId}/{status}")
  7. public Result lock(
  8.     @PathVariable("userId") Long userId,
  9.     @PathVariable("status") Integer status){
  10.     boolean result = userInfoService.lock(userId, status);
  11.     if(result){
  12.         return Result.ok().message("设置成功");
  13.     }else{
  14.         return Result.ok().message("设置失败");
  15.     }
  16. }
复制代码
Service接口:UserInfoService
  1. /**
  2.      * 锁定和解锁用户
  3.      * @param userId
  4.      * @param status
  5.      * @return
  6.      */
  7. boolean lock(Long userId, Integer status);
复制代码
Service实现:UserInfoServiceImpl
  1. @Override
  2. public boolean lock(Long userId, Integer status) {
  3.     if(status == 0 || status == 1){
  4.         UserInfo userInfo = new UserInfo();
  5.         userInfo.setId(userId);
  6.         userInfo.setStatus(status);
  7.         return this.updateById(userInfo);
  8.     }
  9.     return false;
  10. }
复制代码
1.3、用户详情

Controller:在AdminUserInfoController中添加方法
  1. @ApiOperation("用户详情")
  2. @ApiImplicitParam(name = "userId",value = "用户id",required = true)
  3. @GetMapping("show/{userId}")
  4. public Result<Map<String, Object>> show(@PathVariable Long userId) {
  5.     return Result.ok(userInfoService.show(userId));
  6. }
复制代码
Service接口:UserInfoService
  1. /**
  2.      * 根据用户id获取用户详情
  3.      * @param userId
  4.      * @return
  5.      */
  6. Map<String, Object> show(Long userId);
复制代码
Service实现:UserInfoServiceImpl
  1. @Resource
  2. private PatientService patientService;
复制代码
  1. @Override
  2. public Map<String, Object> show(Long userId) {
  3.     Map<String,Object> map = new HashMap<>();
  4.     //根据userid查询用户信息
  5.     UserInfo userInfo = this.packUserInfo(baseMapper.selectById(userId));
  6.     map.put("userInfo",userInfo);
  7.     //根据userid查询就诊人信息
  8.     List<Patient> patientList = patientService.findByUserId(userId);
  9.     map.put("patientList",patientList);
  10.     return map;
  11. }
复制代码
1.4、用户认证审批

Controller:在AdminUserInfoController中添加方法
  1. @ApiOperation("认证审批")
  2. @ApiImplicitParams({
  3.     @ApiImplicitParam(name = "userId",value = "用户id",required = true),
  4.     @ApiImplicitParam(name = "authStatus",value = "用户认证审批状态",required = true)
  5. })
  6. @PutMapping("approval/{userId}/{authStatus}")
  7. public Result approval(@PathVariable Long userId, @PathVariable Integer authStatus) {
  8.     boolean result = userInfoService.approval(userId,authStatus);
  9.     if(result){
  10.         return Result.ok().message("审批成功");
  11.     }else{
  12.         return Result.ok().message("审批失败");
  13.     }
  14. }
复制代码
Service接口:UserInfoService
  1. /**
  2.      * 审核用户
  3.      * @param userId
  4.      * @param authStatus
  5.      * @return
  6.      */
  7. boolean approval(Long userId, Integer authStatus);
复制代码
Service实现:UserInfoServiceImpl
  1. /**
  2.      * 认证审批  2通过  -1不通过
  3.      * @param userId
  4.      * @param authStatus
  5.      * @return
  6.      */
  7. @Override
  8. public boolean approval(Long userId, Integer authStatus) {
  9.     if(authStatus == AuthStatusEnum.AUTH_SUCCESS.getStatus()
  10.        || authStatus == AuthStatusEnum.AUTH_FAIL.getStatus()){
  11.         UserInfo userInfo = new UserInfo();
  12.         userInfo.setId(userId);
  13.         userInfo.setAuthStatus(authStatus);
  14.         return this.updateById(userInfo);
  15.     }
  16.     return false;
  17. }
复制代码
2、前端整合

2.1、页面

在后台管理系统前端项目中添加如下页面,资料:资料>用户管理
用户列表:src/views/syt/userInfo/list.vue
用户详情,详情页面展示用户信息、用户就诊人信息:src/views/syt/userInfo/show.vue
2.2、路由

静态路由:
  1.   {
  2.     path: '/userInfo',
  3.     component: Layout,
  4.     redirect: '/userInfo/list',
  5.     name: 'userInfo',
  6.     meta: { title: '用户管理', icon: 'user' },
  7.     alwaysShow: true,
  8.     children: [
  9.       {
  10.         path: 'list',
  11.         name: 'userInfoList',
  12.         component: () => import('@/views/syt/userInfo/list'),
  13.         meta: { title: '用户列表', icon: 'el-icon-s-unfold' }
  14.       },
  15.       {
  16.         path: 'show/:id',
  17.         name: 'userInfoShow',
  18.         component: () => import('@/views/syt/userInfo/show'),
  19.         meta: { title: '查看用户' },
  20.         hidden: true
  21.       }
  22.     ]
  23.   },
复制代码
动态路由:
用户管理:

用户列表:

查看用户:

2.3、api

创建src/api/syt/userInfo.js
  1. import request from '@/utils/request'
  2. const apiName = '/admin/user/userInfo'
  3. export default {
  4.   //用户列表
  5.   getPageList(page, limit, searchObj) {
  6.     return request({
  7.       url: `${apiName}/${page}/${limit}`,
  8.       method: 'get',
  9.       params: searchObj
  10.     })
  11.   },
  12.   //锁定与解锁
  13.   lock(id, status) {
  14.     return request({
  15.       url: `${apiName}/lock/${id}/${status}`,
  16.       method: 'put'
  17.     })
  18.   },
  19.   //用户详情
  20.   show(id) {
  21.     return request({
  22.       url: `${apiName}/show/${id}`,
  23.       method: 'get'
  24.     })
  25.   },
  26.   //认证审批
  27.   approval(id, authStatus) {
  28.     return request({
  29.       url: `${apiName}/approval/${id}/${authStatus}`,
  30.       method: 'put'
  31.     })
  32.   }
  33. }
复制代码
源码:https://gitee.com/dengyaojava/guigu-syt-parent

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表