Browse Source

Merge remote-tracking branch 'origin/master'

liao-sea 11 months ago
parent
commit
f126f849d9

+ 12 - 0
h5app/src/api/position/index.ts

@@ -0,0 +1,12 @@
+import {request} from '@/utils/request';
+
+export function saveLongitudeLatitude(data:any) {
+    return request(
+        {
+            url: 'longitudeLatitude/save',
+            method: 'post',
+            data: data,
+        },
+        { isNew: true },
+    );
+}

+ 17 - 1
h5app/src/store/modules/user.ts

@@ -6,6 +6,7 @@ import {ACCESS_TOKEN_KEY, USER_INFO_KEY} from '@/enums/cacheEnum';
 import { Storage } from '@/utils/Storage';
 import { logout, getInfo, permmenu } from '@/api/account';
 import {oauthLogin} from "@/api/oauth";
+import {alertController} from "@ionic/vue";
 
 interface UserState {
   token: string;
@@ -15,6 +16,7 @@ interface UserState {
   perms: string[];
   menus: API.Menu[];
   userInfo: Partial<API.AdminUserInfo>;
+  timer: any
 }
 
 export const useUserStore = defineStore({
@@ -25,7 +27,8 @@ export const useUserStore = defineStore({
     avatar: '',
     perms: [],
     menus: [],
-    userInfo: Storage.get(USER_INFO_KEY, null)
+    userInfo: Storage.get(USER_INFO_KEY, null),
+    timer: null
   }),
   getters: {
     getToken(): string {
@@ -119,8 +122,21 @@ export const useUserStore = defineStore({
       //const wsStore = useWsStore();
       //wsStore.closeSocket();
       this.resetToken();
+      this.clearTimer();
       //resetRouter();
     },
+    /**
+     * 设置获取经纬度定时器
+     */
+    setTimer(timer: any) {
+      this.timer = timer
+    },
+    /**
+     * 清除经纬度定时器
+     */
+    clearTimer(){
+      clearInterval(this.timer);
+    }
   },
 });
 

+ 51 - 0
h5app/src/views/login.vue

@@ -47,6 +47,9 @@ import {useUserStore} from '@/store/modules/user';
 import router from '../router';
 import {useVuelidate} from '@vuelidate/core'
 import {required, minLength} from '@vuelidate/validators'
+import {present} from "@ionic/core/dist/types/utils/overlays";
+import dayjs from "dayjs";
+import {saveLongitudeLatitude} from "@/api/position";
 
 const {appContext: {config: {globalProperties}}} = getCurrentInstance();
 
@@ -73,6 +76,7 @@ const rules = computed(() => {
 const userStore = useUserStore();
 const user = ref(userStore.getUserInfo);
 const isDev = ref(false);
+const lonLat = ref(userStore.getLonLat);
 
 const v$ = useVuelidate(rules, state.formInline);
 
@@ -109,6 +113,11 @@ const handleSubmit = async () => {
   const userReq = userStore.login(state.formInline);
   userReq.then((data: any) => {
     state.loading = false;
+    // 获取经纬度并保存
+    sendPosition()
+    // 设置定时器实时记录经纬度
+    const time = setInterval(sendPosition, 1000 * 60 * 10);
+    userStore.setTimer(time);
     router.push('/tabs/tabMain');
   }, (err) => {
     state.loading = false;
@@ -117,6 +126,48 @@ const handleSubmit = async () => {
   });
 };
 
+// 发送经纬度到后端
+const sendPosition = function (){
+  getPosition().then((data: any) => {
+    console.log("当前经度:" + data.longitude + "\n 当前纬度:" + data.latitude)
+    if (userStore.getUserInfo.userID && data.longitude && data.latitude){
+      const sendData = {
+        userId: userStore.getUserInfo.userID,
+        time: Date.now(),
+        longitude: data.longitude,
+        latitude: data.latitude,
+      }
+      // 发送请求
+      saveLongitudeLatitude(sendData);
+    }
+  })
+}
+
+// 获取经纬度
+function getPosition () {
+  return new Promise((resolve, reject) => {
+    if (navigator.geolocation) {
+      navigator.geolocation.getCurrentPosition(function (position) {
+        const latitude = position.coords.latitude.toFixed(5)
+        const longitude = position.coords.longitude.toFixed(5)
+        const data = {
+          latitude: latitude,
+          longitude: longitude
+        }
+        resolve(data)
+      }, function () {
+        // eslint-disable-next-line prefer-rest-params
+        reject(arguments)
+      }, {
+        enableHighAccuracy: true,
+        timeout: 5000
+      })
+    } else {
+      reject('你的浏览器不支持当前地理位置信息获取')
+    }
+  })
+}
+
 onIonViewDidEnter(() => {
   state.formInline.password = '';
 });

+ 26 - 0
src/main/java/com/hz/employmentsite/controller/LongitudeLatitudeController.java

@@ -0,0 +1,26 @@
+package com.hz.employmentsite.controller;
+
+import com.hz.employmentsite.filter.exception.BaseResponse;
+import com.hz.employmentsite.filter.exception.RespGenerstor;
+import com.hz.employmentsite.model.PcLongitudeLatitude;
+import com.hz.employmentsite.services.service.LongitudeLatitudeService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("/api/longitudeLatitude")
+public class LongitudeLatitudeController {
+
+    @Resource
+    private LongitudeLatitudeService longitudeLatitudeService;
+
+    @PostMapping("/save")
+    public BaseResponse save(@RequestBody PcLongitudeLatitude data) {
+        return RespGenerstor.success(longitudeLatitudeService.save(data));
+    }
+
+}

+ 7 - 0
src/main/java/com/hz/employmentsite/mapper/PcLongitudeLatitudeMapper.java

@@ -0,0 +1,7 @@
+package com.hz.employmentsite.mapper;
+
+import com.hz.employmentsite.model.PcLongitudeLatitude;
+
+public interface PcLongitudeLatitudeMapper {
+    int insert(PcLongitudeLatitude row);
+}

+ 92 - 0
src/main/java/com/hz/employmentsite/model/PcLongitudeLatitude.java

@@ -0,0 +1,92 @@
+package com.hz.employmentsite.model;
+
+import java.util.Date;
+
+public class PcLongitudeLatitude {
+    /**
+     * ID
+     */
+    private String longitudeLatitudeId;
+
+    /**
+     * 用户Id
+     */
+    private String userId;
+
+    /**
+     * 采集时间
+     */
+    private Date time;
+
+    /**
+     * 经度
+     */
+    private String longitude;
+
+    /**
+     * 纬度
+     */
+    private String latitude;
+
+    public PcLongitudeLatitude() {
+    }
+
+    public PcLongitudeLatitude(String longitudeLatitudeId, String userId, Date time, String longitude, String latitude) {
+        this.longitudeLatitudeId = longitudeLatitudeId;
+        this.userId = userId;
+        this.time = time;
+        this.longitude = longitude;
+        this.latitude = latitude;
+    }
+
+    public String getLongitudeLatitudeId() {
+        return longitudeLatitudeId;
+    }
+
+    public void setLongitudeLatitudeId(String longitudeLatitudeId) {
+        this.longitudeLatitudeId = longitudeLatitudeId;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public Date getTime() {
+        return time;
+    }
+
+    public void setTime(Date time) {
+        this.time = time;
+    }
+
+    public String getLongitude() {
+        return longitude;
+    }
+
+    public void setLongitude(String longitude) {
+        this.longitude = longitude;
+    }
+
+    public String getLatitude() {
+        return latitude;
+    }
+
+    public void setLatitude(String latitude) {
+        this.latitude = latitude;
+    }
+
+    @Override
+    public String toString() {
+        return "PcLongitudeLatitude{" +
+                "longitudeLatitudeId='" + longitudeLatitudeId + '\'' +
+                ", userId='" + userId + '\'' +
+                ", time=" + time +
+                ", longitude='" + longitude + '\'' +
+                ", latitude='" + latitude + '\'' +
+                '}';
+    }
+}

+ 25 - 0
src/main/java/com/hz/employmentsite/services/impl/LongitudeLatitudeServiceImpl.java

@@ -0,0 +1,25 @@
+package com.hz.employmentsite.services.impl;
+
+import com.hz.employmentsite.mapper.PcLongitudeLatitudeMapper;
+import com.hz.employmentsite.model.PcLongitudeLatitude;
+import com.hz.employmentsite.services.service.LongitudeLatitudeService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.UUID;
+
+@Service
+public class LongitudeLatitudeServiceImpl implements LongitudeLatitudeService {
+
+    @Resource
+    private PcLongitudeLatitudeMapper pcLongitudeLatitudeMapper;
+
+    @Override
+    public Integer save(PcLongitudeLatitude data) {
+        Integer result = 0;
+        data.setLongitudeLatitudeId(UUID.randomUUID().toString());
+        result = pcLongitudeLatitudeMapper.insert(data);
+
+        return result;
+    }
+}

+ 7 - 0
src/main/java/com/hz/employmentsite/services/service/LongitudeLatitudeService.java

@@ -0,0 +1,7 @@
+package com.hz.employmentsite.services.service;
+
+import com.hz.employmentsite.model.PcLongitudeLatitude;
+
+public interface LongitudeLatitudeService {
+    Integer save(PcLongitudeLatitude data);
+}

+ 18 - 0
src/main/resources/mapping/PcLongitudeLatitudeMapper.xml

@@ -0,0 +1,18 @@
+<?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.hz.employmentsite.mapper.PcLongitudeLatitudeMapper">
+    <resultMap id="BaseResultMap" type="com.hz.employmentsite.model.PcLongitudeLatitude">
+        <id column="LongitudeLatitudeId" jdbcType="VARCHAR" property="longitudeLatitudeId"/>
+        <result column="UserId" jdbcType="VARCHAR" property="userId"/>
+        <result column="Time" jdbcType="TIMESTAMP" property="time"/>
+        <result column="Longitude" jdbcType="VARCHAR" property="longitude"/>
+        <result column="Latitude" jdbcType="VARCHAR" property="latitude"/>
+    </resultMap>
+
+    <insert id="insert" parameterType="com.hz.employmentsite.model.PcLongitudeLatitude">
+        insert into pc_longitude_latitude (LongitudeLatitudeId, UserId, Time,
+                                           Longitude, Latitude)
+        values (#{longitudeLatitudeId,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR}, #{time,jdbcType=TIMESTAMP},
+                #{longitude,jdbcType=VARCHAR}, #{latitude,jdbcType=VARCHAR})
+    </insert>
+</mapper>