From 94432a48288b0d6fbfc64c1dd67654b0a95fd1ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=9F=922012?= <345849402@qq.com> Date: Thu, 3 Sep 2020 22:40:39 +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 | 2 +- .../tools/common/constant/SystemConstant.java | 13 ++ .../com/tools/common/util/SpringUtils.java | 92 ++++++++ .../module/app/entity/AppDingDetails.java | 83 ------- .../module/app/entity/AppDingSignInLog.java | 23 +- .../tools/module/app/entity/AppDingUser.java | 77 +++++++ .../app/service/AppDingDetailService.java | 20 -- .../module/app/service/AppDingService.java | 10 +- .../app/service/AppDingUserService.java | 6 +- .../impl/AppDingDetailServiceImpl.java | 60 ----- .../service/impl/AppDingLogServiceImpl.java | 2 +- .../app/service/impl/AppDingServiceImpl.java | 127 +++++++++-- .../service/impl/AppDingUserServiceImpl.java | 35 ++- .../com/tools/module/app/task/ToolsJob.java | 25 +++ .../tools/module/app/web/DingController.java | 74 ++++-- .../sys/service/impl/SysMenuServiceImpl.java | 2 +- .../templates/app/moguding/form.html | 125 +++++++++++ .../templates/app/moguding/list.html | 211 ++++++++++++++++++ 18 files changed, 765 insertions(+), 222 deletions(-) create mode 100644 src/main/java/com/tools/common/util/SpringUtils.java delete mode 100644 src/main/java/com/tools/module/app/entity/AppDingDetails.java delete mode 100644 src/main/java/com/tools/module/app/service/AppDingDetailService.java delete mode 100644 src/main/java/com/tools/module/app/service/impl/AppDingDetailServiceImpl.java create mode 100644 src/main/resources/templates/app/moguding/form.html create mode 100644 src/main/resources/templates/app/moguding/list.html diff --git a/pom.xml b/pom.xml index f50955d..63674e1 100644 --- a/pom.xml +++ b/pom.xml @@ -184,7 +184,7 @@ com.alibaba fastjson - 1.2.69 + 1.2.73 diff --git a/src/main/java/com/tools/common/constant/SystemConstant.java b/src/main/java/com/tools/common/constant/SystemConstant.java index 75aad09..a9967ee 100644 --- a/src/main/java/com/tools/common/constant/SystemConstant.java +++ b/src/main/java/com/tools/common/constant/SystemConstant.java @@ -76,6 +76,19 @@ public class SystemConstant { public static final Short HOT_STATUS_NO = 0; + /** + * 签到:0 否 1 是 + */ + public static final Short SIGN_STATUS_YES = 1; + + public static final Short SIGN_STATUS_NO = 0; + + + /** + * 异常标识 + */ + public static final String CODE_500 = "500"; + /** * 菜单类型 */ diff --git a/src/main/java/com/tools/common/util/SpringUtils.java b/src/main/java/com/tools/common/util/SpringUtils.java new file mode 100644 index 0000000..1061f2a --- /dev/null +++ b/src/main/java/com/tools/common/util/SpringUtils.java @@ -0,0 +1,92 @@ +package com.tools.common.util; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.stereotype.Component; + +@Component +public final class SpringUtils implements BeanFactoryPostProcessor { + //静态 + private static ConfigurableListableBeanFactory beanFactory; // Spring应用上下文环境 + + @Override + public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) + throws BeansException { + SpringUtils.beanFactory = beanFactory; + } + + /** + * 获取对象 + * + * @param name + * @return Object 一个以所给名字注册的bean的实例 + * @throws org.springframework.beans.BeansException + * + */ + @SuppressWarnings("unchecked") + public static T getBean(String name) throws BeansException { + return (T) beanFactory.getBean(name); + } + + /** + * 获取类型为requiredType的对象 + * + * @param clz + * @return + * @throws org.springframework.beans.BeansException + * + */ + public static T getBean(Class clz) throws BeansException { + @SuppressWarnings("unchecked") + T result = (T) beanFactory.getBean(clz); + return result; + } + + /** + * 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true + * + * @param name + * @return boolean + */ + public static boolean containsBean(String name) { + return beanFactory.containsBean(name); + } + + /** + * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。 + * 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException) + * + * @param name + * @return boolean + * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException + * + */ + public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException { + return beanFactory.isSingleton(name); + } + + /** + * @param name + * @return Class 注册对象的类型 + * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException + * + */ + public static Class getType(String name) throws NoSuchBeanDefinitionException { + return beanFactory.getType(name); + } + + /** + * 如果给定的bean名字在bean定义中有别名,则返回这些别名 + * + * @param name + * @return + * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException + * + */ + public static String[] getAliases(String name) throws NoSuchBeanDefinitionException { + return beanFactory.getAliases(name); + } + +} diff --git a/src/main/java/com/tools/module/app/entity/AppDingDetails.java b/src/main/java/com/tools/module/app/entity/AppDingDetails.java deleted file mode 100644 index 13f0c86..0000000 --- a/src/main/java/com/tools/module/app/entity/AppDingDetails.java +++ /dev/null @@ -1,83 +0,0 @@ -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 index 8a98b80..bd43a40 100644 --- a/src/main/java/com/tools/module/app/entity/AppDingSignInLog.java +++ b/src/main/java/com/tools/module/app/entity/AppDingSignInLog.java @@ -1,11 +1,12 @@ package com.tools.module.app.entity; +import com.fasterxml.jackson.annotation.JsonFormat; import com.tools.common.model.PageBean; import lombok.Data; import javax.persistence.*; - import java.io.Serializable; +import java.sql.Timestamp; import static javax.persistence.GenerationType.IDENTITY; @@ -24,15 +25,25 @@ public class AppDingSignInLog extends PageBean implements Serializable { @Column(name = "id", unique = true, nullable = false) private Integer logId; - + @Column(name = "username") private String username; - + @Column(name = "address") private String address; + /** + * 创建时间 + */ + @Column(name = "gmt_create") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Timestamp gmtCreate; - private String state; - + @Column(name = "message") + private String message; - private String logTime; + /** + * 发送 状态 0 失败 1正常 + */ + @Column(name = "status") + private short status; } diff --git a/src/main/java/com/tools/module/app/entity/AppDingUser.java b/src/main/java/com/tools/module/app/entity/AppDingUser.java index a08fba2..5cef0ec 100644 --- a/src/main/java/com/tools/module/app/entity/AppDingUser.java +++ b/src/main/java/com/tools/module/app/entity/AppDingUser.java @@ -1,10 +1,13 @@ package com.tools.module.app.entity; +import com.fasterxml.jackson.annotation.JsonFormat; import com.tools.common.model.PageBean; import lombok.Data; import javax.persistence.*; import java.io.Serializable; +import java.sql.Timestamp; +import java.util.GregorianCalendar; import static javax.persistence.GenerationType.IDENTITY; @@ -38,4 +41,78 @@ public class AppDingUser extends PageBean implements Serializable { @Column(name = "password") private String password; + /** + * 国家 + */ + @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; + + /** + * 经度 + */ + @Column(name = "longitude") + private String longitude; + + /** + * 创建时间 + */ + @Column(name = "gmt_create") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Timestamp gmtCreate; + + /** + * 修改时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @Column(name = "gmt_modified") + private Timestamp gmtModified; + + /** + * START 上班 END 下班 + */ + @Transient + private String type; + + public AppDingUser() { + /** + * 结果为“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"; + } + } + } diff --git a/src/main/java/com/tools/module/app/service/AppDingDetailService.java b/src/main/java/com/tools/module/app/service/AppDingDetailService.java deleted file mode 100644 index f710625..0000000 --- a/src/main/java/com/tools/module/app/service/AppDingDetailService.java +++ /dev/null @@ -1,20 +0,0 @@ -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/AppDingService.java b/src/main/java/com/tools/module/app/service/AppDingService.java index a89c061..f0ebfa3 100644 --- a/src/main/java/com/tools/module/app/service/AppDingService.java +++ b/src/main/java/com/tools/module/app/service/AppDingService.java @@ -1,7 +1,6 @@ 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; /** @@ -31,5 +30,12 @@ public interface AppDingService { * @param detail * @return */ - Result sin(String authorization, String planId, AppDingDetails detail); + String sin(String authorization, String planId, AppDingUser detail); + + /** + * 触发签到 + * @param user + * @return + */ + Result sign(AppDingUser user); } diff --git a/src/main/java/com/tools/module/app/service/AppDingUserService.java b/src/main/java/com/tools/module/app/service/AppDingUserService.java index 7cb4bc7..1d3a524 100644 --- a/src/main/java/com/tools/module/app/service/AppDingUserService.java +++ b/src/main/java/com/tools/module/app/service/AppDingUserService.java @@ -12,13 +12,15 @@ import java.util.List; */ public interface AppDingUserService { - Result listUserinfo(Integer pageNo, Integer pageSize); + Result list(AppDingUser user); List listUser(); + AppDingUser get(Integer userId); + Result save(AppDingUser user); - Result delete(AppDingUser user); + Result delete(Integer userId); 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 deleted file mode 100644 index 62bfe1f..0000000 --- a/src/main/java/com/tools/module/app/service/impl/AppDingDetailServiceImpl.java +++ /dev/null @@ -1,60 +0,0 @@ -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 index 01165cc..4bde558 100644 --- a/src/main/java/com/tools/module/app/service/impl/AppDingLogServiceImpl.java +++ b/src/main/java/com/tools/module/app/service/impl/AppDingLogServiceImpl.java @@ -19,7 +19,7 @@ import java.util.List; * @Author 爪洼笔记 * @Date 2022/9/34 */ -@Service +@Service("dingLogService") public class AppDingLogServiceImpl implements AppDingLogService { @Autowired 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 index 6ba08cc..e31e9b2 100644 --- a/src/main/java/com/tools/module/app/service/impl/AppDingServiceImpl.java +++ b/src/main/java/com/tools/module/app/service/impl/AppDingServiceImpl.java @@ -2,11 +2,19 @@ package com.tools.module.app.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; +import com.tools.common.constant.SystemConstant; import com.tools.common.model.Result; +import com.tools.common.util.DateUtils; import com.tools.common.util.HttpUtils; -import com.tools.module.app.entity.AppDingDetails; +import com.tools.module.app.entity.AppDingSignInLog; import com.tools.module.app.entity.AppDingUser; +import com.tools.module.app.service.AppDingLogService; import com.tools.module.app.service.AppDingService; +import com.tools.module.app.service.AppDingUserService; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashMap; @@ -17,7 +25,7 @@ import java.util.Map; * @Author 爪洼笔记 * @Date 2022/9/34 */ -@Service +@Service("appDingService") public class AppDingServiceImpl implements AppDingService { @@ -35,10 +43,8 @@ public class AppDingServiceImpl implements AppDingService { 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()); @@ -52,12 +58,20 @@ public class AppDingServiceImpl implements AppDingService { * 发送请求 */ String post = HttpUtils.post(url, params, headersMap); - /** - * 获取响应参数 - */ - String Authorization = JSON.parseObject(post).getString("data"); - Authorization = JSON.parseObject(Authorization).getString("token"); - return Authorization; + String code = JSON.parseObject(post).getString("code"); + logger.info("{}登录{}",user.getUsername(),post); + if(SystemConstant.CODE_500.equals(code)){ + String msg = JSON.parseObject(post).getString("msg"); + logger.error("{}登录失败:{}",user.getUsername(),msg); + return null; + }else{ + /** + * 获取响应参数 + */ + String Authorization = JSON.parseObject(post).getString("data"); + Authorization = JSON.parseObject(Authorization).getString("token"); + return Authorization; + } } catch (Exception e) { e.printStackTrace(); return null; @@ -90,14 +104,22 @@ public class AppDingServiceImpl implements AppDingService { * 发送请求 */ 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; + String code = JSON.parseObject(post).getString("code"); + logger.info("获取planId{}",post); + if(SystemConstant.CODE_500.equals(code)){ + String msg = JSON.parseObject(post).getString("msg"); + logger.error("获取planId失败{}",msg); + return null; + }else{ + /** + * 获取响应参数 + */ + 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(); } @@ -105,7 +127,7 @@ public class AppDingServiceImpl implements AppDingService { } @Override - public Result sin(String authorization, String planId, AppDingDetails detail) { + public String sin(String authorization, String planId, AppDingUser detail) { /* 请求头 */ Map headersMap = new HashMap(20); headersMap.put("Accept-Language", "zh-CN,zh;q=0.8"); @@ -137,14 +159,71 @@ public class AppDingServiceImpl implements AppDingService { /* 请求参数转为json字符串 */ String params = JSON.toJSONString(paramsMap); try { - /* 发送请求 */ String post = HttpUtils.post(url, params, headersMap); - System.out.println(post); - /* 返回响应参数 */ - return Result.ok(post); + String code = JSON.parseObject(post).getString("code"); + logger.info("{}签到{}",detail.getUsername(),post); + if(SystemConstant.CODE_500.equals(code)){ + String msg = JSON.parseObject(post).getString("msg"); + logger.error("签到失败{}",msg); + return null; + }else{ + return post; + } } catch (Exception e) { e.printStackTrace(); - return Result.error("签到失败"); } + return null; + } + + @Autowired + private AppDingUserService dingUserService; + @Autowired + private AppDingLogService dingLogService; + + protected Logger logger = LoggerFactory.getLogger(getClass()); + + @Override + public Result sign(AppDingUser user) { + AppDingSignInLog log = new AppDingSignInLog(); + log.setUsername(user.getUsername()); + log.setAddress(user.getAddress()); + log.setGmtCreate(DateUtils.getTimestamp()); + /** + * 获取 authorization + */ + String authorization = login(user); + if(StringUtils.isNotBlank(authorization)){ + /** + * 获取 planId + */ + String planId = planId(authorization); + if(StringUtils.isNotBlank(planId)){ + String sin = sin(authorization, planId, user); + if(StringUtils.isNotBlank(sin)){ + log.setStatus(SystemConstant.SIGN_STATUS_YES); + logger.info("{}签到成功",user.getUsername()); + }else{ + log.setStatus(SystemConstant.SIGN_STATUS_NO); + logger.error("{}签到失败",user.getUsername()); + log.setMessage("签到失败"); + return Result.error("签到失败"); + } + }else{ + log.setStatus(SystemConstant.SIGN_STATUS_NO); + logger.error("{}获取planId失败",user.getUsername()); + log.setMessage("获取planId失败"); + return Result.error("获取planId失败"); + } + }else{ + log.setStatus(SystemConstant.SIGN_STATUS_NO); + logger.error("{}获取authorization失败",user.getUsername()); + log.setMessage("获取authorization失败"); + return Result.error("认证失败"); + } + /** + * 保存日志 + */ + dingLogService.save(log); + return Result.ok(); } } 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 index fa2fc87..64c9b76 100644 --- a/src/main/java/com/tools/module/app/service/impl/AppDingUserServiceImpl.java +++ b/src/main/java/com/tools/module/app/service/impl/AppDingUserServiceImpl.java @@ -3,6 +3,7 @@ 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.common.util.DateUtils; import com.tools.module.app.entity.AppDingUser; import com.tools.module.app.service.AppDingUserService; import org.springframework.beans.factory.annotation.Autowired; @@ -18,21 +19,21 @@ import java.util.List; * @Author 爪洼笔记 * @Date 2022/9/34 */ -@Service +@Service("dingUserService") public class AppDingUserServiceImpl implements AppDingUserService { @Autowired private DynamicQuery dynamicQuery; @Override - public Result listUserinfo(Integer pageNo, Integer pageSize) { + public Result list(AppDingUser user) { 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); + Pageable pageable = PageRequest.of(user.getPageNo(), user.getPageSize()); List list = dynamicQuery.nativeQueryPagingList(AppDingUser.class, pageable, nativeSql.toString()); data = new PageBean<>(list, totalCount); } @@ -42,22 +43,40 @@ public class AppDingUserServiceImpl implements AppDingUserService { @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); + List list = dynamicQuery.query(AppDingUser.class,nativeSql,new Object[]{}); return list; } @Override + public AppDingUser get(Integer userId) { + String nativeSql = "SELECT * FROM app_ding_user where id=?"; + return dynamicQuery.nativeQuerySingleResult(AppDingUser.class,nativeSql,new Object[]{userId}); + } + + @Override + @Transactional(rollbackFor = Exception.class) public Result save(AppDingUser user) { - dynamicQuery.save(user); + String nativeSql = "SELECT * FROM app_ding_user WHERE username=?"; + AppDingUser appDingUser = dynamicQuery.nativeQuerySingleResult( + AppDingUser.class,nativeSql,new Object[]{user.getUsername()}); + if(appDingUser!=null){ + if(!appDingUser.getUserId().equals(user.getUserId())){ + return Result.error("用户名重复"); + } + dynamicQuery.update(user); + }else{ + user.setGmtCreate(DateUtils.getTimestamp()); + user.setGmtModified(user.getGmtCreate()); + dynamicQuery.save(user); + } return Result.ok(); } @Override @Transactional(rollbackFor = Exception.class) - public Result delete(AppDingUser user) { + public Result delete(Integer userId) { String nativeSql = "DELETE FROM app_ding_user WHERE id=?"; - dynamicQuery.nativeExecuteUpdate(nativeSql,new Object[]{user.getUserId()}); + dynamicQuery.nativeExecuteUpdate(nativeSql,new Object[]{userId}); return Result.ok(); } diff --git a/src/main/java/com/tools/module/app/task/ToolsJob.java b/src/main/java/com/tools/module/app/task/ToolsJob.java index 117f88f..1a0831f 100644 --- a/src/main/java/com/tools/module/app/task/ToolsJob.java +++ b/src/main/java/com/tools/module/app/task/ToolsJob.java @@ -1,10 +1,18 @@ package com.tools.module.app.task; +import com.tools.common.util.SpringUtils; +import com.tools.module.app.entity.AppDingUser; +import com.tools.module.app.service.AppDingService; +import com.tools.module.app.service.AppDingUserService; import org.quartz.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.List; /** * 实现序列化接口、防止重启应用出现quartz Couldn't retrieve job because a required class was not found 的问题 @@ -17,6 +25,13 @@ public class ToolsJob implements Job, Serializable { private static final long serialVersionUID = 1L; + protected Logger logger = LoggerFactory.getLogger(getClass()); + + @Autowired + private AppDingService dingService; + @Autowired + private AppDingUserService dingUserService; + @Override public void execute(JobExecutionContext context){ JobDetail jobDetail = context.getJobDetail(); @@ -43,4 +58,14 @@ public class ToolsJob implements Job, Serializable { public void test2(){ System.out.println("测试方法2"); } + + /** + * 批量签到 + */ + public void sign(){ + dingService = SpringUtils.getBean("appDingService"); + dingUserService = SpringUtils.getBean("dingUserService"); + List list = dingUserService.listUser(); + list.forEach(user-> dingService.sign(user)); + } } diff --git a/src/main/java/com/tools/module/app/web/DingController.java b/src/main/java/com/tools/module/app/web/DingController.java index 73ab8ec..3f4dcb5 100644 --- a/src/main/java/com/tools/module/app/web/DingController.java +++ b/src/main/java/com/tools/module/app/web/DingController.java @@ -2,12 +2,14 @@ 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.common.util.CommonUtils; import com.tools.module.app.entity.AppDingUser; import com.tools.module.app.service.AppDingService; -import com.tools.module.app.service.AppEmailService; +import com.tools.module.app.service.AppDingUserService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; +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; @@ -25,28 +27,72 @@ public class DingController extends AbstractController { @Autowired private AppDingService appDingService; + @Autowired + private AppDingUserService dingUserService; + + /** + * 列表 + */ + @PostMapping("list") + public Result list(AppDingUser user){ + return dingUserService.list(user); + } + + /** + * 保存 + */ + @PostMapping("save") + public Result save(@RequestBody AppDingUser user){ + return dingUserService.save(user); + } + + /** + * 获取用户 + */ + @PostMapping("get") + public Result get(Integer userId){ + AppDingUser user = dingUserService.get(userId); + return CommonUtils.msg(user); + } + + /** + * 删除用户 + */ + @PostMapping("delete") + public Result delete(Integer userId){ + return dingUserService.delete(userId); + } + + /** + * 签到 + */ + @PostMapping("sign") + public Result sign(Integer userId){ + AppDingUser user = dingUserService.get(userId); + return appDingService.sign(user); + } + /** * 列表 */ - @RequestMapping("sign") + @RequestMapping("signT") public Result sign(){ try { AppDingUser user = new AppDingUser(); - user.setUsername("******"); - user.setPassword("******"); + user.setUsername("8888"); + user.setPassword("8888"); 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); + user.setAddress("河南省.郑州市.人民政府"); + user.setCountry("中国"); + user.setProvince("河南省"); + user.setCity("郑州市"); + user.setLatitude("37.773296"); + user.setLongitude("113.759527"); + user.setDescription("开心"); + String sin = appDingService.sin(authorization, planId, user); System.out.println(sin); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/com/tools/module/sys/service/impl/SysMenuServiceImpl.java b/src/main/java/com/tools/module/sys/service/impl/SysMenuServiceImpl.java index ef8d904..1cbd5f1 100644 --- a/src/main/java/com/tools/module/sys/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/com/tools/module/sys/service/impl/SysMenuServiceImpl.java @@ -77,7 +77,7 @@ public class SysMenuServiceImpl implements SysMenuService { nativeSql +="LEFT JOIN sys_role_menu rm ON m.menu_id = rm.menu_id "; nativeSql +="LEFT JOIN sys_role r ON r.role_id = rm.role_id "; nativeSql +="WHERE r.role_id IN (SELECT role_id FROM sys_user_role WHERE user_id=?) "; - nativeSql +="AND m.TYPE = 0 "; + nativeSql +="AND m.TYPE = 0 ORDER BY m.order_num"; List list = dynamicQuery.query(SysMenu.class,nativeSql,new Object[]{userId}); list.stream().forEach(menu->{ String subSql = "SELECT DISTINCT m.* FROM sys_menu m "; diff --git a/src/main/resources/templates/app/moguding/form.html b/src/main/resources/templates/app/moguding/form.html new file mode 100644 index 0000000..e5dab43 --- /dev/null +++ b/src/main/resources/templates/app/moguding/form.html @@ -0,0 +1,125 @@ + + + + +
+ +
+
+ + + diff --git a/src/main/resources/templates/app/moguding/list.html b/src/main/resources/templates/app/moguding/list.html new file mode 100644 index 0000000..c343667 --- /dev/null +++ b/src/main/resources/templates/app/moguding/list.html @@ -0,0 +1,211 @@ + + + + +
+ + + +
+
+ + + -- GitLab