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