瀏覽代碼

PC 位置坐标

helixiao 2 年之前
父節點
當前提交
3cfbdad9f9

+ 1 - 2
src/main/java/com/ydtech/modules/admin/controller/SysLoginController.java

@@ -12,7 +12,6 @@ import com.ydtech.constants.SysConstants;
 import com.ydtech.constants.sys.SysPasswordEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
-import com.ydtech.modules.admin.constants.SystemType;
 import com.ydtech.modules.admin.model.SysPassword;
 import com.ydtech.modules.admin.model.SysRole;
 import com.ydtech.modules.admin.model.SysUser;
@@ -239,7 +238,7 @@ public class SysLoginController {
         String token = StpUtil.createLoginSession(user.getId());
         StpUtil.getSessionByLoginId(user.getId()).set(SaSession.USER, user);
         // 保存登录信息
-        sysUserService.saveLoginIpAddr(loginBean.getSystemType(),user);
+        //sysUserService.saveLoginIpAddr(loginBean.getSystemType(),user);
         return HttpResult.ok("登录成功", token);
 
     }

+ 17 - 5
src/main/java/com/ydtech/modules/admin/controller/SysPcAddressController.java

@@ -2,14 +2,14 @@ package com.ydtech.modules.admin.controller;
 
 
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.admin.model.SysGeographyPosition;
-import com.ydtech.modules.admin.model.SysGeographyPositionRecord;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.IpInfoDto;
 import com.ydtech.modules.admin.model.dto.SysGeographyPositionPageDto;
-import com.ydtech.modules.admin.model.po.SysPcAddress;
 import com.ydtech.modules.admin.model.po.SysPcAddressHistory;
-import com.ydtech.modules.admin.service.SysGeographyPositionService;
+import com.ydtech.modules.admin.model.po.SysPcAddress;
 import com.ydtech.modules.admin.service.SysPcAddressHistoryService;
 import com.ydtech.modules.admin.service.SysPcAddressService;
+import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
 import io.swagger.annotations.Api;
@@ -23,10 +23,12 @@ import java.util.List;
 @RequestMapping("/sys/ipAddr")
 @RequiredArgsConstructor
 @Api(tags = "PC登录地址")
-public class SysPcAddressController{
+public class SysPcAddressController extends BaseController{
 
     private final SysPcAddressService sysPcAddressService;
 
+    private final SysUserService sysUserService;
+
     private final SysPcAddressHistoryService sysPcAddressHistoryService;
 
     @GetMapping("/queryPosition")
@@ -47,4 +49,14 @@ public class SysPcAddressController{
         return HttpResult.ok("success", this.sysPcAddressHistoryService.queryPositionList(sysGeographyPositionPageDto));
     }
 
+    @PostMapping(value = "/saveIpInfo")
+    @ApiOperation(value = "保存登录用户位置信息")
+    public HttpResult saveIpInfo(@RequestBody IpInfoDto ipInfoDto) {
+        SysUser user = BaseController.getUser();
+        // 保存登录信息
+        sysUserService.saveLoginIpAddr(ipInfoDto,user);
+        return HttpResult.ok("保存成功");
+
+    }
+
 }

+ 41 - 0
src/main/java/com/ydtech/modules/admin/model/dto/IpInfoDto.java

@@ -0,0 +1,41 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class IpInfoDto {
+
+    @ApiModelProperty("系统类型")
+    private String systemType;
+
+    @ApiModelProperty("ip")
+    private String ip;
+
+    @ApiModelProperty("省会")
+    private String prov;
+
+
+    @ApiModelProperty("城市")
+    private String city;
+
+    @ApiModelProperty("区")
+    private String district;
+    /**
+     * 经度
+     */
+    @TableField(value = "longitude")
+    private String lng;
+
+    /**
+     * 维度
+     */
+    @ApiModelProperty("维度")
+    private String lat;
+
+
+
+
+
+}

+ 13 - 2
src/main/java/com/ydtech/modules/admin/model/po/SysPcAddress.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.admin.model.po;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -15,6 +16,8 @@ import java.util.Date;
 @TableName(value ="sys_pc_address")
 @Data
 public class SysPcAddress implements Serializable {
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
     /**
      * 用户编号
      */
@@ -57,7 +60,15 @@ public class SysPcAddress implements Serializable {
     @TableField(value = "operation_time")
     private Date operationTime;
 
-    @TableField(exist = false)
-    private static final long serialVersionUID = 1L;
+    @ApiModelProperty("省会")
+    private String prov;
+
+
+    @ApiModelProperty("城市")
+    private String city;
+
+    @ApiModelProperty("区")
+    private String district;
+
 
 }

+ 11 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysPcAddressHistory.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -63,6 +64,16 @@ public class SysPcAddressHistory implements Serializable {
     @TableField(value = "operation_time")
     private Date operationTime;
 
+    @ApiModelProperty("省会")
+    private String prov;
+
+
+    @ApiModelProperty("城市")
+    private String city;
+
+    @ApiModelProperty("区")
+    private String district;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 

+ 2 - 1
src/main/java/com/ydtech/modules/admin/service/SysPcAddressService.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.IpInfoDto;
 import com.ydtech.modules.admin.model.po.SysPcAddress;
 
 import java.util.List;
@@ -16,7 +17,7 @@ public interface SysPcAddressService extends IService<SysPcAddress> {
     /**
      * pc保存地址
      */
-    void saveSysPcAddress(SysUser user);
+    void saveSysPcAddress(IpInfoDto ipInfoDto,SysUser user);
 
     /**
      * 获取所有人的地址

+ 2 - 3
src/main/java/com/ydtech/modules/admin/service/SysUserService.java

@@ -10,6 +10,7 @@ import com.ydtech.modules.admin.model.QuTeamNum;
 import com.ydtech.modules.admin.model.QuUserNum;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.SysUserRole;
+import com.ydtech.modules.admin.model.dto.IpInfoDto;
 import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
 import com.ydtech.modules.admin.model.dto.QuUserNumDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
@@ -238,7 +239,6 @@ public interface SysUserService extends BaseIService<SysUser> {
     /**
      * 获取电销人员的id
      *
-     * @param userId 用户id
      * @return
      */
     List<String> getTelemarketingPersonnelData();
@@ -246,9 +246,8 @@ public interface SysUserService extends BaseIService<SysUser> {
     /**
      * 保存 ip 地址
      *
-     * @param systemType 系统类型啊
      */
-    void saveLoginIpAddr(String systemType,SysUser user);
+    void saveLoginIpAddr(IpInfoDto ipInfoDto, SysUser user);
 
 
 }

+ 20 - 29
src/main/java/com/ydtech/modules/admin/service/impl/SysPcAddressServiceImpl.java

@@ -1,62 +1,53 @@
 package com.ydtech.modules.admin.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.jthinking.common.util.ip.IPInfo;
-import com.jthinking.common.util.ip.IPInfoUtils;
 import com.ydtech.modules.admin.dao.SysPcAddressMapper;
 import com.ydtech.modules.admin.model.SysUser;
-import com.ydtech.modules.admin.model.po.SysPcAddress;
+import com.ydtech.modules.admin.model.dto.IpInfoDto;
 import com.ydtech.modules.admin.model.po.SysPcAddressHistory;
+import com.ydtech.modules.admin.model.po.SysPcAddress;
 import com.ydtech.modules.admin.service.SysPcAddressHistoryService;
 import com.ydtech.modules.admin.service.SysPcAddressService;
-import com.ydtech.modules.base.controller.BaseController;
-import com.ydtech.utils.IPUtil;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 /**
-* @author Administrator
-* @description 针对表【sys_pc_address(pc获取ip地址)】的数据库操作Service实现
-* @createDate 2024-09-02 09:40:08
-*/
+ * @author Administrator
+ * @description 针对表【sys_pc_address(pc获取ip地址)】的数据库操作Service实现
+ * @createDate 2024-09-02 09:40:08
+ */
 @Service
 @RequiredArgsConstructor
-public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, SysPcAddress>
-    implements SysPcAddressService {
+public class SysPcAddressServiceImpl extends ServiceImpl<SysPcAddressMapper, SysPcAddress> implements SysPcAddressService {
 
     private final SysPcAddressHistoryService sysPcAddressHistoryService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void saveSysPcAddress(SysUser user) {
+    public void saveSysPcAddress(IpInfoDto ipInfoDto, SysUser user) {
+
         SysPcAddress sysPcAddress = getById(user.getId());
         if (sysPcAddress == null) {
-            sysPcAddress=new SysPcAddress();
+            sysPcAddress = new SysPcAddress();
         }
-        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
-        String ipAddr = IPUtil.getIpAddr(request);
-        IPInfo ipInfo = IPInfoUtils.getIpInfo(ipAddr);
         sysPcAddress.setUserId(user.getId());
         sysPcAddress.setUserName(user.getName());
-        sysPcAddress.setIp(ipAddr);
-        sysPcAddress.setLatitude(String.valueOf(ipInfo.getLat()));
-        sysPcAddress.setLongitude(String.valueOf(ipInfo.getLng()));
-        sysPcAddress.setAddress(ipInfo.getAddress());
+        sysPcAddress.setIp(ipInfoDto.getIp());
+        sysPcAddress.setLatitude(ipInfoDto.getLat());
+        sysPcAddress.setLongitude(ipInfoDto.getLng());
+        sysPcAddress.setProv(ipInfoDto.getProv());
+        sysPcAddress.setCity(ipInfoDto.getCity());
+        sysPcAddress.setDistrict(ipInfoDto.getDistrict());
+        sysPcAddress.setAddress(ipInfoDto.getProv() + ipInfoDto.getCity() + ipInfoDto.getDistrict());
         sysPcAddress.setOperationTime(new Date());
 
+
         SysPcAddressHistory sysPcAddressHistory = new SysPcAddressHistory();
         BeanUtils.copyProperties(sysPcAddress, sysPcAddressHistory);
-        saveOrUpdate(sysPcAddress);
+        this.saveOrUpdate(sysPcAddress);
         sysPcAddressHistoryService.save(sysPcAddressHistory);
     }
 

+ 4 - 3
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -18,6 +18,7 @@ import com.ydtech.modules.admin.constants.SystemType;
 import com.ydtech.modules.admin.constants.UserWorkStatus;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.*;
+import com.ydtech.modules.admin.model.dto.IpInfoDto;
 import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
 import com.ydtech.modules.admin.model.dto.QuUserNumDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
@@ -1611,10 +1612,10 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    public void saveLoginIpAddr(String systemType,SysUser user) {
-        if (SystemType.ST_1.getCode().equals(systemType)) {
+    public void saveLoginIpAddr(IpInfoDto ipInfoDto, SysUser user) {
+        if (SystemType.ST_1.getCode().equals(ipInfoDto.getSystemType())) {
             try {
-                sysPcAddressService.saveSysPcAddress(user);
+                sysPcAddressService.saveSysPcAddress(ipInfoDto,user);
             }catch (Exception e){}
         }