登录信息修改的优化

This commit is contained in:
none 2023-02-17 15:31:59 +08:00
parent 9a9226baa3
commit 635783dd49
7 changed files with 20 additions and 27 deletions

View File

@ -62,7 +62,7 @@ public class LoginController {
data.put("token", token.getToken()); data.put("token", token.getToken());
data.put("expire", token.getExpire()); data.put("expire", token.getExpire());
applicationContext.publishEvent(new AdminUserLoginEvent(this, adminUser.getId(), new Date(), token.getToken(), IpUtil.getHostIp(), adminUser.getLoginTimes())); applicationContext.publishEvent(new AdminUserLoginEvent(this, adminUser.getId(), new Date(), token.getToken(), IpUtil.getIpAddress(), adminUser.getLoginTimes()));
return JsonResponse.data(data); return JsonResponse.data(data);
} }

View File

@ -5,8 +5,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import xyz.playedu.api.domain.AdminUser;
import xyz.playedu.api.event.AdminUserLoginEvent; import xyz.playedu.api.event.AdminUserLoginEvent;
import xyz.playedu.api.service.AdminUserService; import xyz.playedu.api.service.AdminUserService;
import xyz.playedu.api.util.IpUtil;
@Component @Component
@Slf4j @Slf4j
@ -17,14 +19,23 @@ public class AdminUserLoginListener {
@Order(1) @Order(1)
@EventListener @EventListener
public void updateLoginAtAndTimes(AdminUserLoginEvent event) { public void updateLoginInfo(AdminUserLoginEvent event) {
adminUserService.updateLoginTimesAndLoginAt(event.getAdminId(), event.getLoginAt(), event.getLoginTimes() + 1); AdminUser adminUser = new AdminUser();
adminUser.setId(event.getAdminId());
adminUser.setLoginAt(event.getLoginAt());
adminUser.setLoginTimes(event.getLoginTimes() + 1);
adminUser.setLoginIp(event.getIp());
adminUserService.updateById(adminUser);
} }
@Order(10) @Order(10)
@EventListener @EventListener
public void recordLoginIp(AdminUserLoginEvent event) { public void recordLoginIp(AdminUserLoginEvent event) {
log.info("我执行了:recordLoginIp"); String area = IpUtil.getRealAddressByIP(event.getIp());
log.info("地区:" + area);
} }
} }

View File

@ -4,8 +4,6 @@ import org.apache.ibatis.annotations.Mapper;
import xyz.playedu.api.domain.AdminUser; import xyz.playedu.api.domain.AdminUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.Date;
@Mapper @Mapper
/** /**
* @author tengteng * @author tengteng
@ -13,7 +11,6 @@ import java.util.Date;
* @createDate 2023-02-11 10:58:52 * @createDate 2023-02-11 10:58:52
* @Entity xyz.playedu.api.domain.AdminUser * @Entity xyz.playedu.api.domain.AdminUser
*/ public interface AdminUserMapper extends BaseMapper<AdminUser> { */ public interface AdminUserMapper extends BaseMapper<AdminUser> {
Integer updateLoginAtAndLoginTimes(Integer id, Date loginAt, Integer loginTimes);
} }

View File

@ -18,6 +18,4 @@ public interface AdminUserService extends IService<AdminUser> {
AdminUser findByEmail(String email); AdminUser findByEmail(String email);
AdminUser findById(Integer id); AdminUser findById(Integer id);
Integer updateLoginTimesAndLoginAt(Integer id, Date loginAt, Integer loginTimes);
} }

View File

@ -39,11 +39,6 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
queryWrapper.eq("id", id); queryWrapper.eq("id", id);
return this.getBaseMapper().selectOne(queryWrapper); return this.getBaseMapper().selectOne(queryWrapper);
} }
@Override
public Integer updateLoginTimesAndLoginAt(Integer id, Date loginAt, Integer loginTimes) {
return this.getBaseMapper().updateLoginAtAndLoginTimes(id, loginAt, loginTimes);
}
} }

View File

@ -5,6 +5,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
@ -48,16 +49,15 @@ public class IpUtil {
* 根据IP获取所在地址 * 根据IP获取所在地址
* *
* @param ip Ip地址 * @param ip Ip地址
* @return String (广州省 广州市) * @return String (广州省-广州市)
* @author fzr * @author fzr
*/ */
public static String getRealAddressByIP(String ip) { public static String getRealAddressByIP(String ip) {
String IP_URL = "https://whois.pconline.com.cn/ipJson.jsp"; String IP_URL = "https://whois.pconline.com.cn/ipJson.jsp";
String UNKNOWN = "XX XX"; String UNKNOWN = "未知";
// 内网不查询
if (IpUtil.internalIp(ip)) { if (IpUtil.internalIp(ip)) {
return "内网IP"; return "内网";
} }
try { try {
@ -69,7 +69,7 @@ public class IpUtil {
JSONObject obj = JSONObject.parseObject(rspStr); JSONObject obj = JSONObject.parseObject(rspStr);
String region = obj.getString("pro"); String region = obj.getString("pro");
String city = obj.getString("city"); String city = obj.getString("city");
return String.format("%s %s", region, city); return String.format("%s-%s", region, city);
} catch (Exception e) { } catch (Exception e) {
log.error("获取地理位置异常 {}", ip); log.error("获取地理位置异常 {}", ip);
} }

View File

@ -25,12 +25,4 @@
login_at,is_ban_login,login_times, login_at,is_ban_login,login_times,
created_at,updated_at created_at,updated_at
</sql> </sql>
<update id="updateLoginAtAndLoginTimes">
UPDATE `admin_users`
SET `login_at` = #{loginAt},
`login_times`= #{loginTimes}
where id = #{id}
and `login_times` = ${loginTimes - 1} limit 1
</update>
</mapper> </mapper>