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