From 2f6e522be6e4a7767a89b0b1cdad7a9fc5af6e26 Mon Sep 17 00:00:00 2001
From: "zhipeng.zhang" <345849402@qq.com>
Date: Thu, 3 Sep 2020 18:11:43 +0800
Subject: [PATCH] =?UTF-8?q?=E8=98=91=E8=8F=87=E9=92=89=E5=AE=9A=E6=97=B6?=
=?UTF-8?q?=E6=89=93=E5=8D=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 5 +
.../java/com/tools/common/util/HttpUtils.java | 300 ++++++++++++++++++
.../module/app/entity/AppDingDetails.java | 83 +++++
.../module/app/entity/AppDingSignInLog.java | 38 +++
.../tools/module/app/entity/AppDingUser.java | 41 +++
.../app/service/AppDingDetailService.java | 20 ++
.../module/app/service/AppDingLogService.java | 22 ++
.../module/app/service/AppDingService.java | 35 ++
.../app/service/AppDingUserService.java | 24 ++
.../impl/AppDingDetailServiceImpl.java | 60 ++++
.../service/impl/AppDingLogServiceImpl.java | 62 ++++
.../app/service/impl/AppDingServiceImpl.java | 150 +++++++++
.../service/impl/AppDingUserServiceImpl.java | 70 ++++
.../tools/module/app/web/DingController.java | 57 ++++
14 files changed, 967 insertions(+)
create mode 100644 src/main/java/com/tools/common/util/HttpUtils.java
create mode 100644 src/main/java/com/tools/module/app/entity/AppDingDetails.java
create mode 100644 src/main/java/com/tools/module/app/entity/AppDingSignInLog.java
create mode 100644 src/main/java/com/tools/module/app/entity/AppDingUser.java
create mode 100644 src/main/java/com/tools/module/app/service/AppDingDetailService.java
create mode 100644 src/main/java/com/tools/module/app/service/AppDingLogService.java
create mode 100644 src/main/java/com/tools/module/app/service/AppDingService.java
create mode 100644 src/main/java/com/tools/module/app/service/AppDingUserService.java
create mode 100644 src/main/java/com/tools/module/app/service/impl/AppDingDetailServiceImpl.java
create mode 100644 src/main/java/com/tools/module/app/service/impl/AppDingLogServiceImpl.java
create mode 100644 src/main/java/com/tools/module/app/service/impl/AppDingServiceImpl.java
create mode 100644 src/main/java/com/tools/module/app/service/impl/AppDingUserServiceImpl.java
create mode 100644 src/main/java/com/tools/module/app/web/DingController.java
diff --git a/pom.xml b/pom.xml
index fcb65b6..f50955d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -181,6 +181,11 @@
springfox-swagger-ui
2.9.2
+
+ com.alibaba
+ fastjson
+ 1.2.69
+
picture-bed
diff --git a/src/main/java/com/tools/common/util/HttpUtils.java b/src/main/java/com/tools/common/util/HttpUtils.java
new file mode 100644
index 0000000..9651c33
--- /dev/null
+++ b/src/main/java/com/tools/common/util/HttpUtils.java
@@ -0,0 +1,300 @@
+package com.tools.common.util;
+
+import org.springframework.util.StringUtils;
+
+import javax.net.ssl.*;
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.Map;
+import java.util.Map.Entry;
+
+/**
+ * http、https 请求工具类
+ *
+ * @author jiaxiaoxian
+ */
+public class HttpUtils {
+
+ private static final String DEFAULT_CHARSET = "UTF-8";
+
+ private static final String _GET = "GET"; // GET
+ private static final String _POST = "POST";// POST
+ public static final int DEF_CONN_TIMEOUT = 30000;
+ public static final int DEF_READ_TIMEOUT = 30000;
+
+ /**
+ * 初始化http请求参数
+ *
+ * @param url
+ * @param method
+ * @param headers
+ * @return
+ * @throws Exception
+ */
+ private static HttpURLConnection initHttp(String url, String method,
+ Map headers) throws Exception {
+ URL _url = new URL(url);
+ HttpURLConnection http = (HttpURLConnection) _url.openConnection();
+ // 连接超时
+ http.setConnectTimeout(DEF_CONN_TIMEOUT);
+ // 读取超时 --服务器响应比较慢,增大时间
+ http.setReadTimeout(DEF_READ_TIMEOUT);
+ http.setUseCaches(false);
+ http.setRequestMethod(method);
+ http.setRequestProperty("Content-Type",
+ "application/x-www-form-urlencoded");
+ http.setRequestProperty(
+ "User-Agent",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36");
+ if (null != headers && !headers.isEmpty()) {
+ for (Entry entry : headers.entrySet()) {
+ http.setRequestProperty(entry.getKey(), entry.getValue());
+ }
+ }
+ http.setDoOutput(true);
+ http.setDoInput(true);
+ http.connect();
+ return http;
+ }
+
+ /**
+ * 初始化http请求参数
+ *
+ * @param url
+ * @param method
+ * @return
+ * @throws Exception
+ */
+ private static HttpsURLConnection initHttps(String url, String method,
+ Map headers) throws Exception {
+ TrustManager[] tm = {new MyX509TrustManager()};
+ System.setProperty("https.protocols", "TLSv1");
+ SSLContext sslContext = SSLContext.getInstance("TLS");
+ sslContext.init(null, tm, new java.security.SecureRandom());
+ // 从上述SSLContext对象中得到SSLSocketFactory对象
+ SSLSocketFactory ssf = sslContext.getSocketFactory();
+ URL _url = new URL(url);
+ HttpsURLConnection http = (HttpsURLConnection) _url.openConnection();
+ // 设置域名校验
+ http.setHostnameVerifier(new HttpUtils().new TrustAnyHostnameVerifier());
+ // 连接超时
+ http.setConnectTimeout(DEF_CONN_TIMEOUT);
+ // 读取超时 --服务器响应比较慢,增大时间
+ http.setReadTimeout(DEF_READ_TIMEOUT);
+ http.setUseCaches(false);
+ http.setRequestMethod(method);
+ http.setRequestProperty("Content-Type",
+ "application/x-www-form-urlencoded");
+ http.setRequestProperty(
+ "User-Agent",
+ "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36");
+ if (null != headers && !headers.isEmpty()) {
+ for (Entry entry : headers.entrySet()) {
+ http.setRequestProperty(entry.getKey(), entry.getValue());
+ }
+ }
+ http.setSSLSocketFactory(ssf);
+ http.setDoOutput(true);
+ http.setDoInput(true);
+ http.connect();
+ return http;
+ }
+
+ /**
+ * @return 返回类型:
+ * @throws Exception
+ * @description 功能描述: get 请求
+ */
+ public static String get(String url, Map params,
+ Map headers) throws Exception {
+ HttpURLConnection http = null;
+ if (isHttps(url)) {
+ http = initHttps(initParams(url, params), _GET, headers);
+ } else {
+ http = initHttp(initParams(url, params), _GET, headers);
+ }
+ InputStream in = http.getInputStream();
+ BufferedReader read = new BufferedReader(new InputStreamReader(in,
+ DEFAULT_CHARSET));
+ String valueString = null;
+ StringBuffer bufferRes = new StringBuffer();
+ // 优化,不能光使用!=null做判断。有为""的情况,防止多次空循环
+ while (!StringUtils.isEmpty(valueString = read.readLine())) {
+ bufferRes.append(valueString);
+ }
+ in.close();
+ if (http != null) {
+ http.disconnect();// 关闭连接
+ }
+ return bufferRes.toString();
+ }
+
+ public static String get(String url) throws Exception {
+ return get(url, null);
+ }
+
+ public static String get(String url, Map params)
+ throws Exception {
+ return get(url, params, null);
+ }
+
+ public static String post(String url, String params) throws Exception {
+ HttpURLConnection http = null;
+ if (isHttps(url)) {
+ http = initHttps(url, _POST, null);
+ } else {
+ http = initHttp(url, _POST, null);
+ }
+ OutputStream out = http.getOutputStream();
+ out.write(params.getBytes(DEFAULT_CHARSET));
+ out.flush();
+ out.close();
+
+ InputStream in = http.getInputStream();
+ BufferedReader read = new BufferedReader(new InputStreamReader(in,
+ DEFAULT_CHARSET));
+ String valueString = null;
+ StringBuffer bufferRes = new StringBuffer();
+ while ((valueString = read.readLine()) != null) {
+ bufferRes.append(valueString);
+ }
+ in.close();
+ if (http != null) {
+ http.disconnect();// 关闭连接
+ }
+ return bufferRes.toString();
+ }
+
+ public static String post(String url, String params, Map headers) throws Exception {
+ HttpURLConnection http = null;
+ if (isHttps(url)) {
+ http = initHttps(url, _POST, headers);
+ } else {
+ http = initHttp(url, _POST, headers);
+ }
+ OutputStream out = http.getOutputStream();
+ out.write(params.getBytes(DEFAULT_CHARSET));
+ out.flush();
+ out.close();
+
+ InputStream in = http.getInputStream();
+ BufferedReader read = new BufferedReader(new InputStreamReader(in,
+ DEFAULT_CHARSET));
+ String valueString = null;
+ StringBuffer bufferRes = new StringBuffer();
+ while ((valueString = read.readLine()) != null) {
+ bufferRes.append(valueString);
+ }
+ in.close();
+ if (http != null) {
+ http.disconnect();// 关闭连接
+ }
+ return bufferRes.toString();
+ }
+
+ /**
+ * 功能描述: 构造请求参数
+ *
+ * @return 返回类型:
+ * @throws Exception
+ */
+ public static String initParams(String url, Map params)
+ throws Exception {
+ if (null == params || params.isEmpty()) {
+ return url;
+ }
+ StringBuilder sb = new StringBuilder(url);
+ if (url.indexOf("?") == -1) {
+ sb.append("?");
+ }
+ sb.append(map2Url(params));
+ return sb.toString();
+ }
+
+ /**
+ * map构造url
+ *
+ * @return 返回类型:
+ * @throws Exception
+ */
+ public static String map2Url(Map paramToMap)
+ throws Exception {
+ if (null == paramToMap || paramToMap.isEmpty()) {
+ return null;
+ }
+ StringBuffer url = new StringBuffer();
+ boolean isfist = true;
+ for (Entry entry : paramToMap.entrySet()) {
+ if (isfist) {
+ isfist = false;
+ } else {
+ url.append("&");
+ }
+ url.append(entry.getKey()).append("=");
+ String value = entry.getValue();
+ if (!StringUtils.isEmpty(value)) {
+ url.append(URLEncoder.encode(value, DEFAULT_CHARSET));
+ }
+ }
+ return url.toString();
+ }
+
+ /**
+ * 检测是否https
+ *
+ * @param url
+ */
+ private static boolean isHttps(String url) {
+ return url.startsWith("https");
+ }
+
+ /**
+ * https 域名校验
+ * @return
+ */
+ public class TrustAnyHostnameVerifier implements HostnameVerifier {
+ @Override
+ public boolean verify(String hostname, SSLSession session) {
+ return true;// 直接返回true
+ }
+ }
+
+ private static class MyX509TrustManager implements X509TrustManager {
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+
+ @Override
+ public void checkServerTrusted(X509Certificate[] chain, String authType)
+ throws CertificateException {
+ }
+
+ @Override
+ public void checkClientTrusted(X509Certificate[] chain, String authType)
+ throws CertificateException {
+ }
+ }
+
+ ;
+
+ public static void main(String[] args) {
+ String str = "";
+ try {
+ str = get("https://www.baidu.com");
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ System.out.println(str);
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/tools/module/app/entity/AppDingDetails.java b/src/main/java/com/tools/module/app/entity/AppDingDetails.java
new file mode 100644
index 0000000..13f0c86
--- /dev/null
+++ b/src/main/java/com/tools/module/app/entity/AppDingDetails.java
@@ -0,0 +1,83 @@
+package com.tools.module.app.entity;
+
+
+import com.tools.common.model.PageBean;
+import lombok.Data;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+import java.util.GregorianCalendar;
+
+@Data
+@Entity
+@Table(name = "app_ding_details")
+public class AppDingDetails extends PageBean implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 用户id
+ */
+ @Id
+ private Integer userId;
+
+ /**
+ * 国家
+ */
+ @Column(name = "country")
+ private String country;
+
+ /**
+ * 地址
+ */
+ @Column(name = "address")
+ private String address;
+
+ /**
+ * 省
+ */
+ @Column(name = "province")
+ private String province;
+
+ /**
+ * 城市
+ */
+ @Column(name = "city")
+ private String city;
+
+ /**
+ * 纬度
+ */
+ @Column(name = "latitude")
+ private String latitude;
+
+ /**
+ * 发表的信息
+ */
+ @Column(name = "description")
+ private String description;
+
+ /**
+ * START 上班 END 下班
+ */
+ @Column(name = "type")
+ private String type;
+
+ /**
+ * 经度
+ */
+ private String longitude;
+
+ public AppDingDetails() {
+ // 结果为“0”是上午 结果为“1”是下午
+ GregorianCalendar ca = new GregorianCalendar();
+ if (ca.get(GregorianCalendar.AM_PM) == 0 || "0".equals(ca.get(GregorianCalendar.AM_PM))) {
+ this.type = "START";
+ } else {
+ this.type = "END";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/tools/module/app/entity/AppDingSignInLog.java b/src/main/java/com/tools/module/app/entity/AppDingSignInLog.java
new file mode 100644
index 0000000..8a98b80
--- /dev/null
+++ b/src/main/java/com/tools/module/app/entity/AppDingSignInLog.java
@@ -0,0 +1,38 @@
+package com.tools.module.app.entity;
+
+import com.tools.common.model.PageBean;
+import lombok.Data;
+
+import javax.persistence.*;
+
+import java.io.Serializable;
+
+import static javax.persistence.GenerationType.IDENTITY;
+
+@Data
+@Entity
+@Table(name = "app_ding_signIn_log")
+public class AppDingSignInLog extends PageBean implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = IDENTITY)
+ @Column(name = "id", unique = true, nullable = false)
+ private Integer logId;
+
+
+ private String username;
+
+
+ private String address;
+
+
+ private String state;
+
+
+ private String logTime;
+}
diff --git a/src/main/java/com/tools/module/app/entity/AppDingUser.java b/src/main/java/com/tools/module/app/entity/AppDingUser.java
new file mode 100644
index 0000000..a08fba2
--- /dev/null
+++ b/src/main/java/com/tools/module/app/entity/AppDingUser.java
@@ -0,0 +1,41 @@
+package com.tools.module.app.entity;
+
+import com.tools.common.model.PageBean;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+import static javax.persistence.GenerationType.IDENTITY;
+
+/**
+ * 蘑菇钉用户信息
+ */
+@Data
+@Entity
+@Table(name = "app_ding_user")
+public class AppDingUser extends PageBean implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = IDENTITY)
+ @Column(name = "id", unique = true, nullable = false)
+ private Integer userId;
+
+ /**
+ * 用户名
+ */
+ @Column(name = "username")
+ private String username;
+
+ /**
+ * 密码
+ */
+ @Column(name = "password")
+ private String password;
+
+}
diff --git a/src/main/java/com/tools/module/app/service/AppDingDetailService.java b/src/main/java/com/tools/module/app/service/AppDingDetailService.java
new file mode 100644
index 0000000..f710625
--- /dev/null
+++ b/src/main/java/com/tools/module/app/service/AppDingDetailService.java
@@ -0,0 +1,20 @@
+package com.tools.module.app.service;
+
+import com.tools.common.model.Result;
+import com.tools.module.app.entity.AppDingDetails;
+
+/**
+ * @Description
+ * @Author 爪洼笔记
+ * @Date 2022/9/34
+ */
+public interface AppDingDetailService {
+
+ Result listDetailsBean(AppDingDetails detail);
+
+ Result save(AppDingDetails detail);
+
+ Result delete(AppDingDetails detail);
+
+ Result update(AppDingDetails detail);
+}
diff --git a/src/main/java/com/tools/module/app/service/AppDingLogService.java b/src/main/java/com/tools/module/app/service/AppDingLogService.java
new file mode 100644
index 0000000..831a068
--- /dev/null
+++ b/src/main/java/com/tools/module/app/service/AppDingLogService.java
@@ -0,0 +1,22 @@
+package com.tools.module.app.service;
+
+import com.tools.common.model.Result;
+import com.tools.module.app.entity.AppDingSignInLog;
+
+/**
+ * @Description 蘑菇钉日志
+ * @Author 爪洼笔记
+ * @Date 2022/9/34
+ */
+public interface AppDingLogService {
+
+ /**
+ * 日志管理
+ */
+ Result listSignInLog(AppDingSignInLog log);
+
+ Result delete(AppDingSignInLog signInLog);
+
+ void save(AppDingSignInLog signInLog);
+
+}
diff --git a/src/main/java/com/tools/module/app/service/AppDingService.java b/src/main/java/com/tools/module/app/service/AppDingService.java
new file mode 100644
index 0000000..a89c061
--- /dev/null
+++ b/src/main/java/com/tools/module/app/service/AppDingService.java
@@ -0,0 +1,35 @@
+package com.tools.module.app.service;
+
+import com.tools.common.model.Result;
+import com.tools.module.app.entity.AppDingDetails;
+import com.tools.module.app.entity.AppDingUser;
+
+/**
+ * @Description 蘑菇钉
+ * @Author 爪洼笔记
+ * @Date 2022/9/34
+ */
+public interface AppDingService {
+ /**
+ * 登录获取token
+ * @param user
+ * @return
+ */
+ String login(AppDingUser user);
+
+ /**
+ * 获取计划学校ID
+ * @param authorization
+ * @return
+ */
+ String planId(String authorization);
+
+ /**
+ * 签到
+ * @param authorization
+ * @param planId
+ * @param detail
+ * @return
+ */
+ Result sin(String authorization, String planId, AppDingDetails detail);
+}
diff --git a/src/main/java/com/tools/module/app/service/AppDingUserService.java b/src/main/java/com/tools/module/app/service/AppDingUserService.java
new file mode 100644
index 0000000..7cb4bc7
--- /dev/null
+++ b/src/main/java/com/tools/module/app/service/AppDingUserService.java
@@ -0,0 +1,24 @@
+package com.tools.module.app.service;
+
+import com.tools.common.model.Result;
+import com.tools.module.app.entity.AppDingUser;
+
+import java.util.List;
+
+/**
+ * @Description 蘑菇钉用户
+ * @Author 爪洼笔记
+ * @Date 2022/9/34
+ */
+public interface AppDingUserService {
+
+ Result listUserinfo(Integer pageNo, Integer pageSize);
+
+ List listUser();
+
+ Result save(AppDingUser user);
+
+ Result delete(AppDingUser user);
+
+ Result update(AppDingUser user);
+}
diff --git a/src/main/java/com/tools/module/app/service/impl/AppDingDetailServiceImpl.java b/src/main/java/com/tools/module/app/service/impl/AppDingDetailServiceImpl.java
new file mode 100644
index 0000000..62bfe1f
--- /dev/null
+++ b/src/main/java/com/tools/module/app/service/impl/AppDingDetailServiceImpl.java
@@ -0,0 +1,60 @@
+package com.tools.module.app.service.impl;
+
+import com.tools.common.dynamicquery.DynamicQuery;
+import com.tools.common.model.PageBean;
+import com.tools.common.model.Result;
+import com.tools.module.app.entity.AppDingDetails;
+import com.tools.module.app.service.AppDingDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description 蘑菇钉
+ * @Author 爪洼笔记
+ * @Date 2022/9/34
+ */
+@Service
+public class AppDingDetailServiceImpl implements AppDingDetailService {
+
+ @Autowired
+ private DynamicQuery dynamicQuery;
+
+ @Override
+ public Result listDetailsBean(AppDingDetails detail) {
+ String countSql = "SELECT COUNT(*) FROM app_ding_details";
+ Long totalCount = dynamicQuery.nativeQueryCount(countSql);
+ PageBean data = new PageBean<>();
+ if (totalCount > 0) {
+ StringBuffer nativeSql = new StringBuffer();
+ nativeSql.append("SELECT * FROM app_ding_details ");
+ Object[] params = new Object[]{};
+ Pageable pageable = PageRequest.of(detail.getPageNo() - 1, detail.getPageSize());
+ List list = dynamicQuery.nativeQueryPagingList(AppDingDetails.class, pageable, nativeSql.toString(), params);
+ data = new PageBean<>(list, totalCount);
+ }
+ return Result.ok(data);
+ }
+
+ @Override
+ public Result save(AppDingDetails detail) {
+ dynamicQuery.save(detail);
+ return Result.ok();
+ }
+
+ @Override
+ public Result delete(AppDingDetails detail) {
+ String nativeSql = "DELETE FROM app_ding_details WHERE id=?";
+ dynamicQuery.nativeExecuteUpdate(nativeSql,new Object[]{detail.getUserId()});
+ return Result.ok();
+ }
+
+ @Override
+ public Result update(AppDingDetails detail) {
+ dynamicQuery.update(detail);
+ return Result.ok();
+ }
+}
diff --git a/src/main/java/com/tools/module/app/service/impl/AppDingLogServiceImpl.java b/src/main/java/com/tools/module/app/service/impl/AppDingLogServiceImpl.java
new file mode 100644
index 0000000..01165cc
--- /dev/null
+++ b/src/main/java/com/tools/module/app/service/impl/AppDingLogServiceImpl.java
@@ -0,0 +1,62 @@
+package com.tools.module.app.service.impl;
+
+import com.tools.common.dynamicquery.DynamicQuery;
+import com.tools.common.model.PageBean;
+import com.tools.common.model.Result;
+import com.tools.module.app.entity.AppDingSignInLog;
+import com.tools.module.app.service.AppDingLogService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Description 蘑菇钉日志
+ * @Author 爪洼笔记
+ * @Date 2022/9/34
+ */
+@Service
+public class AppDingLogServiceImpl implements AppDingLogService {
+
+ @Autowired
+ private DynamicQuery dynamicQuery;
+
+ @Override
+ public Result listSignInLog(AppDingSignInLog log) {
+ String countSql = "SELECT COUNT(*) FROM app_ding_signIn_log";
+ Long totalCount = dynamicQuery.nativeQueryCount(countSql);
+ PageBean data = new PageBean<>();
+ if (totalCount > 0) {
+ StringBuffer nativeSql = new StringBuffer();
+ nativeSql.append("SELECT * FROM app_ding_signIn_log ");
+ Object[] params = new Object[]{};
+ if (!StringUtils.isEmpty(log.getUsername())) {
+ nativeSql.append("WHERE username = ?");
+ params = new Object[]{log.getUsername()};
+ }
+ nativeSql.append(" order by logId desc");
+ Pageable pageable = PageRequest.of(log.getPageNo() - 1, log.getPageSize());
+ List list = dynamicQuery.nativeQueryPagingList(AppDingSignInLog.class, pageable, nativeSql.toString(), params);
+ data = new PageBean<>(list, totalCount);
+ }
+ return Result.ok(data);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Result delete(AppDingSignInLog signInLog) {
+ String nativeSql = "DELETE FROM app_ding_signIn_log WHERE id=?";
+ dynamicQuery.nativeExecuteUpdate(nativeSql,new Object[]{signInLog.getLogId()});
+ return Result.ok();
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void save(AppDingSignInLog signInLog) {
+ dynamicQuery.save(signInLog);
+ }
+}
diff --git a/src/main/java/com/tools/module/app/service/impl/AppDingServiceImpl.java b/src/main/java/com/tools/module/app/service/impl/AppDingServiceImpl.java
new file mode 100644
index 0000000..6ba08cc
--- /dev/null
+++ b/src/main/java/com/tools/module/app/service/impl/AppDingServiceImpl.java
@@ -0,0 +1,150 @@
+package com.tools.module.app.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.tools.common.model.Result;
+import com.tools.common.util.HttpUtils;
+import com.tools.module.app.entity.AppDingDetails;
+import com.tools.module.app.entity.AppDingUser;
+import com.tools.module.app.service.AppDingService;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description 蘑菇钉
+ * @Author 爪洼笔记
+ * @Date 2022/9/34
+ */
+@Service
+public class AppDingServiceImpl implements AppDingService {
+
+
+ @Override
+ public String login(AppDingUser user) {
+ /* 请求头 */
+ Map headersMap = new HashMap(20);
+ headersMap.put("Accept-Language", "zh-CN,zh;q=0.8");
+ headersMap.put("User-Agent", "Mozilla/5.0 (Linux; U; Android 8.0.0; zh-cn; MI 6 Build/OPR1.170623.027) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30");
+ headersMap.put("Authorization", "");
+ headersMap.put("roleKey", "");
+ headersMap.put("Content-Type", "application/json; charset=UTF-8");
+ headersMap.put("Content-Length", "85");
+ headersMap.put("Host", "api.moguding.net:9000");
+ headersMap.put("Connection", "close");
+ headersMap.put("Accept-Encoding", "gzip, deflate");
+ headersMap.put("Cache-Control", "no-cache");
+
+ /* 请求地址 */
+ String url = "https://api.moguding.net:9000/session/user/v1/login";
+
+ /* 请求参数 */
+ Map paramsMap = new HashMap(10);
+ paramsMap.put("phone", user.getUsername());
+ paramsMap.put("password", user.getPassword());
+ paramsMap.put("loginType", "android");
+ paramsMap.put("uuid", "");
+ /* 请求参数转为json字符串 */
+ String params = JSON.toJSONString(paramsMap);
+ try {
+ /**
+ * 发送请求
+ */
+ String post = HttpUtils.post(url, params, headersMap);
+ /**
+ * 获取响应参数
+ */
+ String Authorization = JSON.parseObject(post).getString("data");
+ Authorization = JSON.parseObject(Authorization).getString("token");
+ return Authorization;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ @Override
+ public String planId(String authorization) {
+ /* 请求头 */
+ Map headersMap = new HashMap(20);
+ headersMap.put("Accept-Language", "zh-CN,zh;q=0.8");
+ headersMap.put("User-Agent", "Mozilla/5.0 (Linux; U; Android 8.0.0; zh-cn; MI 6 Build/OPR1.170623.027) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30");
+ headersMap.put("Authorization", authorization);
+ headersMap.put("roleKey", "student");
+ headersMap.put("Content-Type", "application/json; charset=UTF-8");
+ headersMap.put("Content-Length", "500");
+ headersMap.put("Host", "api.moguding.net:9000");
+ headersMap.put("Connection", "close");
+ headersMap.put("Accept-Encoding", "gzip, deflate");
+ headersMap.put("Cache-Control", "no-cache");
+ /* 请求地址 */
+ String url = "https://api.moguding.net:9000/practice/plan/v1/getPlanByStu";
+ /* 请求参数 */
+ Map paramsMap = new HashMap(10);
+ paramsMap.put("state", "");
+ /* 请求参数转为json字符串 */
+ String params = JSON.toJSONString(paramsMap);
+ try {
+ /**
+ * 发送请求
+ */
+ String post = HttpUtils.post(url, params, headersMap);
+ /**
+ * 获取响应参数
+ */
+ String planId = JSON.parseObject(post).getString("data");
+ JSONArray array = JSON.parseArray(planId);
+ planId = array.get(0).toString();
+ planId = JSON.parseObject(planId).getString("planId");
+ return planId;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ @Override
+ public Result sin(String authorization, String planId, AppDingDetails detail) {
+ /* 请求头 */
+ Map headersMap = new HashMap(20);
+ headersMap.put("Accept-Language", "zh-CN,zh;q=0.8");
+ headersMap.put("User-Agent", "Mozilla/5.0 (Linux; U; Android 8.0.0; zh-cn; MI 6 Build/OPR1.170623.027) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30");
+ headersMap.put("Authorization", authorization);
+ headersMap.put("roleKey", "student");
+ headersMap.put("Content-Type", "application/json; charset=UTF-8");
+ headersMap.put("Content-Length", "500");
+ headersMap.put("Host", "api.moguding.net:9000");
+ headersMap.put("Connection", "close");
+ headersMap.put("Accept-Encoding", "gzip, deflate");
+ headersMap.put("Cache-Control", "no-cache");
+
+ /* 请求地址 */
+ String url = "https://api.moguding.net:9000/attendence/clock/v1/save";
+
+ /* 请求参数 */
+ Map paramsMap = new HashMap(20);
+ paramsMap.put("country", detail.getCountry());
+ paramsMap.put("address", detail.getAddress());
+ paramsMap.put("province", detail.getProvince());
+ paramsMap.put("city", detail.getCity());
+ paramsMap.put("latitude", detail.getLatitude());
+ paramsMap.put("description", detail.getDescription());
+ paramsMap.put("planId", planId);
+ paramsMap.put("type", detail.getType());
+ paramsMap.put("device", "Android");
+ paramsMap.put("longitude", detail.getLongitude());
+ /* 请求参数转为json字符串 */
+ String params = JSON.toJSONString(paramsMap);
+ try {
+ /* 发送请求 */
+ String post = HttpUtils.post(url, params, headersMap);
+ System.out.println(post);
+ /* 返回响应参数 */
+ return Result.ok(post);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return Result.error("签到失败");
+ }
+ }
+}
diff --git a/src/main/java/com/tools/module/app/service/impl/AppDingUserServiceImpl.java b/src/main/java/com/tools/module/app/service/impl/AppDingUserServiceImpl.java
new file mode 100644
index 0000000..fa2fc87
--- /dev/null
+++ b/src/main/java/com/tools/module/app/service/impl/AppDingUserServiceImpl.java
@@ -0,0 +1,70 @@
+package com.tools.module.app.service.impl;
+
+import com.tools.common.dynamicquery.DynamicQuery;
+import com.tools.common.model.PageBean;
+import com.tools.common.model.Result;
+import com.tools.module.app.entity.AppDingUser;
+import com.tools.module.app.service.AppDingUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * @Description
+ * @Author 爪洼笔记
+ * @Date 2022/9/34
+ */
+@Service
+public class AppDingUserServiceImpl implements AppDingUserService {
+
+ @Autowired
+ private DynamicQuery dynamicQuery;
+
+ @Override
+ public Result listUserinfo(Integer pageNo, Integer pageSize) {
+ String countSql = "SELECT COUNT(*) FROM app_ding_user";
+ Long totalCount = dynamicQuery.nativeQueryCount(countSql);
+ PageBean data = new PageBean<>();
+ if (totalCount > 0) {
+ StringBuffer nativeSql = new StringBuffer();
+ nativeSql.append("SELECT * FROM app_ding_user");
+ Pageable pageable = PageRequest.of(pageNo - 1, pageSize);
+ List list = dynamicQuery.nativeQueryPagingList(AppDingUser.class, pageable, nativeSql.toString());
+ data = new PageBean<>(list, totalCount);
+ }
+ return Result.ok(data);
+ }
+
+ @Override
+ public List listUser() {
+ String nativeSql = "SELECT * FROM app_ding_user";
+ Pageable pageable = PageRequest.of(0, 10);
+ List list = dynamicQuery.nativeQueryPagingList(AppDingUser.class, pageable, nativeSql);
+ return list;
+ }
+
+ @Override
+ public Result save(AppDingUser user) {
+ dynamicQuery.save(user);
+ return Result.ok();
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Result delete(AppDingUser user) {
+ String nativeSql = "DELETE FROM app_ding_user WHERE id=?";
+ dynamicQuery.nativeExecuteUpdate(nativeSql,new Object[]{user.getUserId()});
+ return Result.ok();
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Result update(AppDingUser user) {
+ dynamicQuery.update(user);
+ return Result.ok();
+ }
+}
diff --git a/src/main/java/com/tools/module/app/web/DingController.java b/src/main/java/com/tools/module/app/web/DingController.java
new file mode 100644
index 0000000..73ab8ec
--- /dev/null
+++ b/src/main/java/com/tools/module/app/web/DingController.java
@@ -0,0 +1,57 @@
+package com.tools.module.app.web;
+
+import com.tools.common.config.AbstractController;
+import com.tools.common.model.Result;
+import com.tools.module.app.entity.AppDingDetails;
+import com.tools.module.app.entity.AppDingUser;
+import com.tools.module.app.service.AppDingService;
+import com.tools.module.app.service.AppEmailService;
+import io.swagger.annotations.Api;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Description
+ * @Author 爪哇笔记
+ * @Date 2022/9/3
+ */
+@Api(tags ="蘑菇钉")
+@RestController
+@RequestMapping("/app/ding")
+public class DingController extends AbstractController {
+
+
+ @Autowired
+ private AppDingService appDingService;
+
+ /**
+ * 列表
+ */
+ @RequestMapping("sign")
+ public Result sign(){
+ try {
+ AppDingUser user = new AppDingUser();
+ user.setUsername("******");
+ user.setPassword("******");
+ String authorization = appDingService.login(user);
+ System.out.println(authorization);
+ String planId = appDingService.planId(authorization);
+ System.out.println(planId);
+ AppDingDetails detailsBean = new AppDingDetails();
+ detailsBean.setAddress("河南省.郑州市.人民政府");
+ detailsBean.setCountry("中国");
+ detailsBean.setProvince("河南省");
+ detailsBean.setCity("郑州市");
+ detailsBean.setLatitude("37.773296");
+ detailsBean.setLongitude("113.759527");
+ detailsBean.setDescription("开心");
+ Result sin = appDingService.sin(authorization, planId, detailsBean);
+ System.out.println(sin);
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.out.println("-----------------------签到异常----------------------");
+ }
+ return Result.ok();
+ }
+}
--
GitLab