From 39c50b28a9a9783ec3e25ee773b9112c94ede442 Mon Sep 17 00:00:00 2001 From: lisy <linlangsur163@163.com> Date: 星期五, 07 七月 2023 09:48:20 +0800 Subject: [PATCH] course:使用福利-账号退出和注销 --- cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java | 60 ++++++++++++ cloud-server-other/src/main/java/com/dsh/other/feignclient/SysLogClient.java | 16 +++ cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java | 11 + cloud-server-account/src/main/java/com/dsh/account/util/TokenUtil.java | 18 +++ cloud-server-other/src/main/java/com/dsh/other/controller/UserLoginLogController.java | 44 ++++++++ cloud-server-other/src/main/java/com/dsh/other/entity/SysLoginLog.java | 66 +++++++++++++ cloud-server-other/src/main/java/com/dsh/other/mapper/SysLoginLogMapper.java | 16 +++ cloud-server-other/src/main/resources/mapper/SysLoginLogMapper.xml | 6 + cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SysLogClient.java | 16 +++ cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java | 6 + cloud-server-other/src/main/java/com/dsh/other/service/SysLoginLogService.java | 16 +++ cloud-server-other/src/main/java/com/dsh/other/service/impl/SysLoginLogServiceImpl.java | 20 ++++ 12 files changed, 293 insertions(+), 2 deletions(-) diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java index 6e0c8ec..797d8e1 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java +++ b/cloud-server-account/src/main/java/com/dsh/account/controller/UseBenefitsController.java @@ -2,6 +2,7 @@ import com.dsh.account.entity.TAppUser; +import com.dsh.account.feignclient.other.SysLogClient; import com.dsh.account.model.vo.userBenefitDetail.AppUserDetailsVo; import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo; import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo; @@ -16,6 +17,10 @@ import java.text.SimpleDateFormat; +/** + * 使用福利 控制器 + */ + @RestController @RequestMapping("") public class UseBenefitsController { @@ -26,6 +31,9 @@ @Autowired private TokenUtil tokenUtil; + + @Autowired + private SysLogClient slClient; private final SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); @@ -78,6 +86,58 @@ } } + + + @ResponseBody + @PostMapping("/api/useBenefit/cancellation") + @ApiOperation(value = "个人信息-注销账号", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil cancellationAccount(){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } +// 变更账号的状态为删除 + tauService.cancellation(appUserId); +// 增加一条注销账号的日志 + slClient.cancellation(appUserId); +// 删除redis中用户key + tokenUtil.logout(); + return ResultUtil.success(); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + + @ResponseBody + @PostMapping("/api/useBenefit/logOut") + @ApiOperation(value = "个人信息-退出登录", tags = {"APP-使用福利"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil logOutAccount(){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + // 增加一条退出账号的日志 + slClient.logOut(appUserId); + // 删除redis中用户key + tokenUtil.logout(); + return ResultUtil.success(); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + @ResponseBody @PostMapping("/api/useBenefit/userBilling") @ApiOperation(value = "账单", tags = {"APP-使用福利"}) diff --git a/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SysLogClient.java b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SysLogClient.java new file mode 100644 index 0000000..d027cbe --- /dev/null +++ b/cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SysLogClient.java @@ -0,0 +1,16 @@ +package com.dsh.account.feignclient.other; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(value = "mb-cloud-other") +public interface SysLogClient { + + @PostMapping("/appUser/logOut") + void logOut(@RequestBody Integer appUserId); + + @PostMapping("/appUser/cancellation") + void cancellation(@RequestBody Integer appUserId); + +} diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java index 22f4e1b..138a47f 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java @@ -109,4 +109,10 @@ */ BillingDetailsVo queryUserBillingDetails(String yearMonth, Integer recordId); + /** + * 注销账号 + * @param appUserId + */ + void cancellation(Integer appUserId); + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java index 13c01eb..09ad5c6 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java +++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java @@ -8,7 +8,6 @@ import com.dsh.account.feignclient.activity.MerChandiseClient; import com.dsh.account.feignclient.course.CoursePaymentClient; import com.dsh.account.feignclient.course.model.CourseOfStoreVo; -import com.dsh.account.feignclient.course.model.PurchaseVo; import com.dsh.account.feignclient.course.model.QueryStoreList; import com.dsh.account.feignclient.course.model.StuCourseResp; import com.dsh.account.feignclient.other.ImgConfigClient; @@ -26,7 +25,6 @@ import com.dsh.account.model.vo.classDetails.RegisteredCourse; import com.dsh.account.model.vo.classDetails.WeekedCourse; import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo; -import com.dsh.account.model.vo.classDetails.classInsVo.RegisterCourseVo; import com.dsh.account.model.vo.userBenefitDetail.BillingDetailsVo; import com.dsh.account.model.vo.userBenefitDetail.IndexOfUserBenefirVo; import com.dsh.account.service.TAppUserService; @@ -483,4 +481,13 @@ return null; } + @Override + public void cancellation(Integer appUserId) { + TAppUser tAppUser = this.baseMapper.selectById(appUserId); + if (null != tAppUser){ + tAppUser.setState(3); + this.baseMapper.updateById(tAppUser); + } + } + } diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/TokenUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/TokenUtil.java index 5397637..775a29d 100644 --- a/cloud-server-account/src/main/java/com/dsh/account/util/TokenUtil.java +++ b/cloud-server-account/src/main/java/com/dsh/account/util/TokenUtil.java @@ -33,4 +33,22 @@ return null; } } + + public void logout() { + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = servletRequestAttributes.getRequest(); + String requestHeader = request.getHeader("Authorization"); + if (requestHeader != null && requestHeader.startsWith("Bearer ")) { + requestHeader = requestHeader.substring(requestHeader.indexOf(" ") + 1); + String key = null; + int length = requestHeader.length(); + if (length > 32) { + key = requestHeader.substring(length - 32); + } else { + key = requestHeader; + } + redisUtil.remove(key); // 删除存储在Redis中的对应用户信息 + } + } + } diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/UserLoginLogController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/UserLoginLogController.java new file mode 100644 index 0000000..7bddb2c --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/controller/UserLoginLogController.java @@ -0,0 +1,44 @@ +package com.dsh.other.controller; + + +import com.dsh.other.entity.SysLoginLog; +import com.dsh.other.service.SysLoginLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; + +@RestController +@RequestMapping("") +public class UserLoginLogController { + + + @Autowired + private SysLoginLogService ssllService; + + + @PostMapping("/appUser/logOut") + public void logOut(@RequestBody Integer appUserId){ + SysLoginLog sysLoginLog = new SysLoginLog(); + sysLoginLog.setCreatetime(new Date()); + sysLoginLog.setUserid(appUserId); + sysLoginLog.setSucceed("执行成功"); + sysLoginLog.setMessage("退出成功"); + sysLoginLog.setLogname("APP用户退出账号"); + ssllService.save(sysLoginLog); + } + + @PostMapping("/appUser/cancellation") + public void cancellation(@RequestBody Integer appUserId){ + SysLoginLog sysLoginLog = new SysLoginLog(); + sysLoginLog.setCreatetime(new Date()); + sysLoginLog.setUserid(appUserId); + sysLoginLog.setSucceed("执行成功"); + sysLoginLog.setMessage("注销成功"); + sysLoginLog.setLogname("APP用户注销账号"); + ssllService.save(sysLoginLog); + } + + + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/SysLoginLog.java b/cloud-server-other/src/main/java/com/dsh/other/entity/SysLoginLog.java new file mode 100644 index 0000000..d9922ab --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/entity/SysLoginLog.java @@ -0,0 +1,66 @@ +package com.dsh.other.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * <p> + * 登录记录 + * </p> + * + * @author jqs + * @since 2023-07-07 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("sys_login_log") +public class SysLoginLog extends Model<SysLoginLog> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 日志名称 + */ + private String logname; + /** + * 管理员id + */ + private Integer userid; + /** + * 创建时间 + */ + private Date createtime; + /** + * 是否执行成功 + */ + private String succeed; + /** + * 具体消息 + */ + private String message; + /** + * 登录ip + */ + private String ip; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/feignclient/SysLogClient.java b/cloud-server-other/src/main/java/com/dsh/other/feignclient/SysLogClient.java new file mode 100644 index 0000000..e9b6592 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/feignclient/SysLogClient.java @@ -0,0 +1,16 @@ +package com.dsh.other.feignclient; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(value = "mb-cloud-other") +public interface SysLogClient { + + @PostMapping("/appUser/logOut") + void logOut(@RequestBody Integer appUserId); + + @PostMapping("/appUser/cancellation") + void cancellation(@RequestBody Integer appUserId); + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/SysLoginLogMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/SysLoginLogMapper.java new file mode 100644 index 0000000..0d2fb06 --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/SysLoginLogMapper.java @@ -0,0 +1,16 @@ +package com.dsh.other.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.other.entity.SysLoginLog; + +/** + * <p> + * 登录记录 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-07-07 + */ +public interface SysLoginLogMapper extends BaseMapper<SysLoginLog> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/SysLoginLogService.java b/cloud-server-other/src/main/java/com/dsh/other/service/SysLoginLogService.java new file mode 100644 index 0000000..7ba050c --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/SysLoginLogService.java @@ -0,0 +1,16 @@ +package com.dsh.other.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.other.entity.SysLoginLog; + +/** + * <p> + * 登录记录 服务类 + * </p> + * + * @author jqs + * @since 2023-07-07 + */ +public interface SysLoginLogService extends IService<SysLoginLog> { + +} diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/SysLoginLogServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SysLoginLogServiceImpl.java new file mode 100644 index 0000000..750061f --- /dev/null +++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/SysLoginLogServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.other.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.other.entity.SysLoginLog; +import com.dsh.other.mapper.SysLoginLogMapper; +import com.dsh.other.service.SysLoginLogService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 登录记录 服务实现类 + * </p> + * + * @author jqs + * @since 2023-07-07 + */ +@Service +public class SysLoginLogServiceImpl extends ServiceImpl<SysLoginLogMapper, SysLoginLog> implements SysLoginLogService { + +} diff --git a/cloud-server-other/src/main/resources/mapper/SysLoginLogMapper.xml b/cloud-server-other/src/main/resources/mapper/SysLoginLogMapper.xml new file mode 100644 index 0000000..f5e0333 --- /dev/null +++ b/cloud-server-other/src/main/resources/mapper/SysLoginLogMapper.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.dsh.other.mapper.SysLoginLogMapper"> + + +</mapper> -- Gitblit v1.7.1