From 8e262ea4cd665da8400d8f5806ebc51ae3d34cf9 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 24 Sep 2020 11:45:13 +0800 Subject: [PATCH] add member device info --- src/main/java/com/xcong/excoin/utils/HttpUtils.java | 28 ++++++++++++++ src/main/java/com/xcong/excoin/modules/member/service/impl/MemberDeviceInfoServiceImpl.java | 18 +++++++++ src/main/java/com/xcong/excoin/modules/member/entity/MemberDeviceInfo.java | 17 ++++++++ src/main/java/com/xcong/excoin/modules/member/dao/MemberDeviceInfoDao.java | 10 +++++ src/main/java/com/xcong/excoin/common/system/controller/LoginController.java | 21 ++++++++++ src/main/java/com/xcong/excoin/modules/member/service/MemberDeviceInfoService.java | 9 ++++ src/main/resources/mapper/member/MemberDeviceInfoDao.xml | 8 ++++ 7 files changed, 111 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java b/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java index 4754bb5..97ee995 100644 --- a/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java +++ b/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java @@ -18,7 +18,10 @@ import com.xcong.excoin.common.system.dto.RegisterDto; import com.xcong.excoin.configurations.properties.ApplicationProperties; import com.xcong.excoin.configurations.properties.SecurityProperties; +import com.xcong.excoin.modules.member.entity.MemberDeviceInfo; +import com.xcong.excoin.modules.member.service.MemberDeviceInfoService; import com.xcong.excoin.modules.member.service.MemberService; +import com.xcong.excoin.utils.HttpUtils; import com.xcong.excoin.utils.RedisUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -62,6 +65,9 @@ @Resource private RedisUtils redisUtils; + @Resource + private MemberDeviceInfoService memberDeviceInfoService; + @ApiOperation(value = "登陆接口", notes = "登陆接口") @PostMapping("/login") public Result login(@RequestBody @Validated LoginDto loginDto, HttpServletRequest request) { @@ -103,6 +109,21 @@ authInfo.put("token", token); authInfo.put("user", loginUserBean); } + + MemberDeviceInfo deviceInfo = memberDeviceInfoService.getByMemberId(loginUserBean.getMemberEntity().getId()); + String ip = HttpUtils.getRealIp(request); + String userAgent = HttpUtils.getUserAgent(request); + if (deviceInfo == null) { + deviceInfo = new MemberDeviceInfo(); + deviceInfo.setIp(ip); + deviceInfo.setUserAgent(userAgent); + deviceInfo.setMemberId(loginUserBean.getMemberEntity().getId()); + memberDeviceInfoService.save(deviceInfo); + } else { + deviceInfo.setIp(ip); + deviceInfo.setUserAgent(userAgent); + memberDeviceInfoService.updateById(deviceInfo); + } return Result.ok("success", authInfo); } diff --git a/src/main/java/com/xcong/excoin/modules/member/dao/MemberDeviceInfoDao.java b/src/main/java/com/xcong/excoin/modules/member/dao/MemberDeviceInfoDao.java new file mode 100644 index 0000000..079e8c0 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/member/dao/MemberDeviceInfoDao.java @@ -0,0 +1,10 @@ +package com.xcong.excoin.modules.member.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xcong.excoin.modules.member.entity.MemberDeviceInfo; +import org.apache.ibatis.annotations.Param; + +public interface MemberDeviceInfoDao extends BaseMapper<MemberDeviceInfo> { + + public MemberDeviceInfo selectByMemberId(@Param("memberId") Long memberId); +} diff --git a/src/main/java/com/xcong/excoin/modules/member/entity/MemberDeviceInfo.java b/src/main/java/com/xcong/excoin/modules/member/entity/MemberDeviceInfo.java new file mode 100644 index 0000000..2567ead --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/member/entity/MemberDeviceInfo.java @@ -0,0 +1,17 @@ +package com.xcong.excoin.modules.member.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.xcong.excoin.common.system.base.BaseEntity; +import lombok.Data; + +/** + * @author wzy + * @date 2020-09-24 + **/ +@Data +@TableName("member_device_info") +public class MemberDeviceInfo extends BaseEntity { + private Long memberId; + private String ip; + private String userAgent; +} diff --git a/src/main/java/com/xcong/excoin/modules/member/service/MemberDeviceInfoService.java b/src/main/java/com/xcong/excoin/modules/member/service/MemberDeviceInfoService.java new file mode 100644 index 0000000..78baba1 --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/member/service/MemberDeviceInfoService.java @@ -0,0 +1,9 @@ +package com.xcong.excoin.modules.member.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xcong.excoin.modules.member.entity.MemberDeviceInfo; + +public interface MemberDeviceInfoService extends IService<MemberDeviceInfo> { + + MemberDeviceInfo getByMemberId(Long memberId); +} diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberDeviceInfoServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberDeviceInfoServiceImpl.java new file mode 100644 index 0000000..0f00a4c --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberDeviceInfoServiceImpl.java @@ -0,0 +1,18 @@ +package com.xcong.excoin.modules.member.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xcong.excoin.modules.member.dao.MemberDeviceInfoDao; +import com.xcong.excoin.modules.member.entity.MemberDeviceInfo; +import com.xcong.excoin.modules.member.service.MemberDeviceInfoService; + +/** + * @author wzy + * @date 2020-09-24 + **/ +public class MemberDeviceInfoServiceImpl extends ServiceImpl<MemberDeviceInfoDao, MemberDeviceInfo> implements MemberDeviceInfoService { + + @Override + public MemberDeviceInfo getByMemberId(Long memberId) { + return this.baseMapper.selectByMemberId(memberId); + } +} diff --git a/src/main/java/com/xcong/excoin/utils/HttpUtils.java b/src/main/java/com/xcong/excoin/utils/HttpUtils.java new file mode 100644 index 0000000..3a4fbb8 --- /dev/null +++ b/src/main/java/com/xcong/excoin/utils/HttpUtils.java @@ -0,0 +1,28 @@ +package com.xcong.excoin.utils; + +import javax.servlet.http.HttpServletRequest; + +/** + * @author wzy + * @date 2020-09-24 + **/ +public class HttpUtils { + + public static final String FORWARDED ="x-forwarded-for"; + + public static String getRealIp(HttpServletRequest request) { + String ip = null; + + if (request.getHeader(FORWARDED) == null) { + ip = request.getRemoteHost(); + } else { + ip = request.getHeader(FORWARDED); + } + + return ip; + } + + public static String getUserAgent(HttpServletRequest request) { + return request.getHeader("User-Agent"); + } +} diff --git a/src/main/resources/mapper/member/MemberDeviceInfoDao.xml b/src/main/resources/mapper/member/MemberDeviceInfoDao.xml new file mode 100644 index 0000000..81e324d --- /dev/null +++ b/src/main/resources/mapper/member/MemberDeviceInfoDao.xml @@ -0,0 +1,8 @@ +<?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.xcong.excoin.modules.member.dao.MemberDeviceInfoDao"> + + <select id="selectByMemberId" resultType="com.xcong.excoin.modules.member.entity.MemberDeviceInfo"> + select * from member_device_info where member_id=#{memberId} + </select> +</mapper> \ No newline at end of file -- Gitblit v1.9.1