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-使用福利"}) cloud-server-account/src/main/java/com/dsh/account/feignclient/other/SysLogClient.java
New file @@ -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); } 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); } 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); } } } 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中的对应用户信息 } } } cloud-server-other/src/main/java/com/dsh/other/controller/UserLoginLogController.java
New file @@ -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); } } cloud-server-other/src/main/java/com/dsh/other/entity/SysLoginLog.java
New file @@ -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; } } cloud-server-other/src/main/java/com/dsh/other/feignclient/SysLogClient.java
New file @@ -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); } cloud-server-other/src/main/java/com/dsh/other/mapper/SysLoginLogMapper.java
New file @@ -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> { } cloud-server-other/src/main/java/com/dsh/other/service/SysLoginLogService.java
New file @@ -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> { } cloud-server-other/src/main/java/com/dsh/other/service/impl/SysLoginLogServiceImpl.java
New file @@ -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 { } cloud-server-other/src/main/resources/mapper/SysLoginLogMapper.xml
New file @@ -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>