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