From 7a7278c7a76009215512c3cbf464861ff7d422b6 Mon Sep 17 00:00:00 2001
From: zhangyongzhangyong <2012005003@qq.coom>
Date: Tue, 21 Jul 2020 17:59:19 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../dto/form/resi/ActUserClockLogFormDTO.java | 81 +++++++++++++++++++
.../resi/ResiActCaculateDistanceFormDTO.java | 45 +++++++++++
.../result/resi/ActClockListResultDTO.java | 48 +++++++++++
.../com/epmet/utils/CaculateDistance.java | 40 +++++++++
4 files changed, 214 insertions(+)
create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ActUserClockLogFormDTO.java
create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActCaculateDistanceFormDTO.java
create mode 100644 epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ActClockListResultDTO.java
create mode 100644 epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/utils/CaculateDistance.java
diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ActUserClockLogFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ActUserClockLogFormDTO.java
new file mode 100644
index 0000000000..fa7e943ebf
--- /dev/null
+++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ActUserClockLogFormDTO.java
@@ -0,0 +1,81 @@
+/**
+ * Copyright 2018 人人开源 https://www.renren.io
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.epmet.dto.form.resi;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+
+/**
+ * 用户活动打卡参数
+ *
+ * @author zhangyong
+ * @since v1.0.0 2020-07-14
+ */
+@Data
+public class ActUserClockLogFormDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 用户ID
+ */
+ private String userId;
+ /**
+ * 活动ID
+ */
+ @NotBlank(message = "活动ID不能为空")
+ private String actId;
+ /**
+ * 打卡类型(0-打卡,1-更新打卡)
+ */
+ @NotBlank(message = "打卡类型不能为空")
+ private String clockType;
+ /**
+ * 打卡位置经度
+ */
+ @NotBlank(message = "打卡位置经度不能为空")
+ private BigDecimal clockLongitude;
+ /**
+ * 打卡位置纬度
+ */
+ @NotBlank(message = "打卡位置纬度不能为空")
+ private BigDecimal clockLatitude;
+ /**
+ * 打卡地址
+ */
+ @NotBlank(message = "打卡地址不能为空")
+ private String clockAddress;
+ /**
+ * 打卡描述
+ */
+ @NotBlank(message = "打卡描述不能为空")
+ private String clockDesc;
+ /**
+ * 打卡是否有效(0-否,1-是)
+ */
+ @NotBlank(message = "打卡是否有效不能为空")
+ private String effectiveFlag;
+ /**
+ * 打卡图片
+ */
+ private ArrayList images;
+}
diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActCaculateDistanceFormDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActCaculateDistanceFormDTO.java
new file mode 100644
index 0000000000..b48ff6bb08
--- /dev/null
+++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/form/resi/ResiActCaculateDistanceFormDTO.java
@@ -0,0 +1,45 @@
+package com.epmet.dto.form.resi;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * 重新定位 入参
+ *
+ * @author zhangyong
+ * @since v1.0.0 2020-07-20
+ */
+@Data
+public class ResiActCaculateDistanceFormDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ //>>>>>>>>>>>>>>>>>校验分组开始>>>>>>>>>>>>>>>>>>>>>
+ /**
+ * 添加用户操作的内部异常分组
+ * 出现错误会提示给前端7000错误码,返回信息为:服务器开小差...
+ */
+ public interface AddUserInternalGroup {}
+
+ // <<<<<<<<<<<<<<<<<<<校验分组结束<<<<<<<<<<<<<<<<<<<<<<<<
+
+ /**
+ * 经度
+ */
+ @NotBlank(message = "经度不能为空", groups = { ResiActBaseFormDTO.AddUserInternalGroup.class })
+ private Double longitude;
+
+ /**
+ * 纬度
+ */
+ @NotBlank(message = "纬度不能为空", groups = { ResiActBaseFormDTO.AddUserInternalGroup.class })
+ private Double latitude;
+
+ /**
+ * 用户id
+ */
+ @NotBlank(message = "活动ID不能为空", groups = { ResiActBaseFormDTO.AddUserInternalGroup.class })
+ private String actId;
+}
diff --git a/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ActClockListResultDTO.java b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ActClockListResultDTO.java
new file mode 100644
index 0000000000..cb3cc26361
--- /dev/null
+++ b/epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/dto/result/resi/ActClockListResultDTO.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright 2018 人人开源 https://www.renren.io
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.epmet.dto.result.resi;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 打卡列表
+ *
+ * @author zhangyong
+ * @since v1.0.0 2020-07-14
+ */
+@Data
+public class ActClockListResultDTO implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 活动打卡人次
+ */
+ private Integer clockNum;
+
+ /**
+ * 打卡列表
+ */
+ private List clocks;
+
+
+
+}
diff --git a/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/utils/CaculateDistance.java b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/utils/CaculateDistance.java
new file mode 100644
index 0000000000..5a772706da
--- /dev/null
+++ b/epmet-module/epmet-heart/epmet-heart-server/src/main/java/com/epmet/utils/CaculateDistance.java
@@ -0,0 +1,40 @@
+package com.epmet.utils;
+
+
+/**
+ * 计算两个经纬度之间相差的距离(米)
+ *
+ * @Auther: zhangyong
+ * @Date: 2020-07-17 14:54
+ */
+public class CaculateDistance {
+
+ private static final double EARTH_RADIUS = 6378137;
+ private static double rad(double d) {
+ return d * Math.PI / 180.0;
+ }
+
+ /**
+ * 根据两点间经纬度坐标(double值),计算两点间距离,单位为米
+ *
+ * @param lng1 经度1
+ * @param lat1 纬度1
+ * @param lng2 经度2
+ * @param lat2 纬度2
+ * @return double
+ * @Author zhangyong
+ * @Date 14:56 2020-07-17
+ **/
+ public static double getDistance(double lng1, double lat1, double lng2, double lat2) {
+ double radLat1 = rad(lat1);
+ double radLat2 = rad(lat2);
+ double a = radLat1 - radLat2;
+ double b = rad(lng1) - rad(lng2);
+ double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
+ Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
+ s = s * EARTH_RADIUS;
+ s = Math.round(s * 10000) / 10000;
+ return s;
+ }
+
+}