提交 94432a48 编写于 作者: 小柒2012

蘑菇钉定时打卡

上级 2f6e522b
......@@ -184,7 +184,7 @@
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.69</version>
<version>1.2.73</version>
</dependency>
</dependencies>
<build>
......
......@@ -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";
/**
* 菜单类型
*/
......
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> T getBean(String name) throws BeansException {
return (T) beanFactory.getBean(name);
}
/**
* 获取类型为requiredType的对象
*
* @param clz
* @return
* @throws org.springframework.beans.BeansException
*
*/
public static <T> T getBean(Class<T> 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);
}
}
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
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;
}
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";
}
}
}
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);
}
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);
}
......@@ -12,13 +12,15 @@ import java.util.List;
*/
public interface AppDingUserService {
Result listUserinfo(Integer pageNo, Integer pageSize);
Result list(AppDingUser user);
List<AppDingUser> listUser();
AppDingUser get(Integer userId);
Result save(AppDingUser user);
Result delete(AppDingUser user);
Result delete(Integer userId);
Result update(AppDingUser user);
}
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<AppDingDetails> 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<AppDingDetails> 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();
}
}
......@@ -19,7 +19,7 @@ import java.util.List;
* @Author 爪洼笔记
* @Date 2022/9/34
*/
@Service
@Service("dingLogService")
public class AppDingLogServiceImpl implements AppDingLogService {
@Autowired
......
......@@ -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<String,String> 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<String,String> 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();
}
}
......@@ -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<AppDingUser> 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<AppDingUser> 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<AppDingUser> listUser() {
String nativeSql = "SELECT * FROM app_ding_user";
Pageable pageable = PageRequest.of(0, 10);
List<AppDingUser> list = dynamicQuery.nativeQueryPagingList(AppDingUser.class, pageable, nativeSql);
List<AppDingUser> 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();
}
......
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<AppDingUser> list = dingUserService.listUser();
list.forEach(user-> dingService.sign(user));
}
}
......@@ -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();
......
......@@ -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<SysMenu> list = dynamicQuery.query(SysMenu.class,nativeSql,new Object[]{userId});
list.stream().forEach(menu->{
String subSql = "SELECT DISTINCT m.* FROM sys_menu m ";
......
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head th:replace="common/head :: head(links)"/>
<body>
<div class="ok-body" id="app" v-cloak>
<template>
<i-form ref="checkForm" :model="user" :rules="ruleValidate" :label-width="100">
<form-item prop="username" label="用户名:" v-if="user.userId==null">
<i-input maxlength="20" v-model="user.username" placeholder="请输入用户名"></i-input>
</form-item>
<form-item prop="username" label="用户名:" v-if="user.userId!=null">
{{user.username}}
</form-item>
<form-item prop="password" label="密码:" >
<i-input maxlength="20" v-model="user.password" placeholder="请输入密码"></i-input>
</form-item>
<form-item prop="address" label="地址:">
<i-input maxlength="20" v-model="user.address" placeholder="请输入地址"></i-input>
</form-item>
<form-item prop="country" label="国家:">
<i-input v-model="user.country" placeholder="请输入国家"></i-input>
</form-item>
<form-item prop="province" label="省:">
<i-input v-model="user.province" placeholder="请输入省"></i-input>
</form-item>
<form-item prop="city" label="市:">
<i-input v-model="user.city" placeholder="请输入市"></i-input>
</form-item>
<form-item prop="latitude" label="纬度:">
<i-input v-model="user.latitude" placeholder="请输入纬度"></i-input>
</form-item>
<form-item prop="longitude" label="经度:">
<i-input v-model="user.longitude" placeholder="请输入经度"></i-input>
</form-item>
<form-item prop="description" label="心情:">
<i-input v-model="user.description" placeholder="请输入心情"></i-input>
</form-item>
</i-form>
</template>
</div>
<div th:replace="common/foot :: foot(script)"></div>
<script th:inline="none">
var vm = new Vue({
el: '#app',
data:{
user:{
status:1,
orgName:'',
orgId:null
},
roleName:"",
statusList:[{"label":"正常","value":1},{"label":"禁用","value":0}],
ruleValidate : {
username: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
password: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
address: [
{ required: true, message: '不能为空', trigger: 'change' }
],
country: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
province: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
city: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
latitude: [
{ required: true, message: '不能为空', trigger: 'blur' }
],
longitude: [
{ required: true, message: '不能为空', trigger: 'change' }
],
description: [
{ required: true, message: '不能为空', trigger: 'change' }
]
},
okUtils:null,
okLayer:null
},
methods: {
load : function(){
layui.use(["okUtils", "okLayer"], function () {
vm.okUtils = layui.okUtils;
vm.okLayer = layui.okLayer;
if(vm.user.userId!=undefined){
vm.okUtils.ajaxCloud({
url:"/app/ding/get",
param : {userId:vm.user.userId},
close : false,
success : function(result) {
vm.user = result.msg;
}
});
}
});
},
acceptClick : function(dialog){
vm.$refs.checkForm.validate(function(valid){
if (valid) {
vm.okUtils.ajaxCloud({
url:"/app/ding/save",
param : vm.user,
json:true,
success : function(result) {
vm.okLayer.msg.greenTick(result.msg, function () {
dialog.load();
})
}
});
}
});
}
},
created: function() {
}
});
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head th:replace="common/head :: head(link)"/>
<body>
<div id="app" class="ok-body" v-cloak>
<!--模糊搜索区域-->
<template>
<div style="margin-bottom: 8px;margin-top: 8px;">
<i-input placeholder="输入内容" v-model="user.description" style="width: 300px"></i-input>
<i-button type="primary" icon="ios-search" @click="load()">搜索</i-button>
<i-button type="primary" icon="ios-redo" @click="reload()" >重置</i-button>
<i-button type="primary" style="float:right;" icon="md-add" @click="add()">新增</i-button>
</div>
</template>
<template>
<i-table size="small" :columns="tableTitle" :data="tableData">
</i-table>
<br>
<Page style="float: right;" :current="user.pageNo" :total="tableSize" :page-size="user.pageSize" @on-change="changePage" @on-page-size-change="changePageSize" show-elevator show-sizer show-total></Page>
</template>
</div>
<div th:replace="common/foot :: foot(script)"></div>
<script th:inline="none">
layui.use(["okUtils", "okLayer"], function () {
var okUtils = layui.okUtils;
var okLayer = layui.okLayer;
var vm = new Vue({
el: '#app',
data: function(){
var that = this;
return {
tableTitle : [{
title: '序号',
minWidth : 100,
render: function(h, params) {
return h('span', params.index + (that.user.pageNo- 1) * that.user.pageSize + 1);
}
},{
key : "username",
title : "用户名",
minWidth:100
},{
key : "address",
title : "地址",
minWidth:100
},{
key : "description",
title : "信息",
minWidth:150
},{
key : "gmtCreate",
title : "创建时间",
sortable: true,
minWidth:150
},{
title : '操作',
key : 'action',
minWidth : 200,
align : 'center',
render : function(h, params) {
var functionList = [];
var edit = h('Button', {
props : {
type : 'primary',
size : 'small',
icon : 'md-create'
},
style : {
marginRight : '8px'
},
on : {
click : function() {
vm.edit(params.row);
}
}
}, '修改');
functionList.push(edit);
var remove = h('Button', {
props : {
type : 'primary',
size : 'small',
icon : 'md-trash'
},
style : {
marginRight : '8px'
},
on : {
click : function() {
vm.remove(params.row);
}
}
}, '删除');
functionList.push(remove);
var sign = h('Button', {
props : {
type : 'primary',
size : 'small',
icon : 'md-create'
},
style : {
marginRight : '8px'
},
on : {
click : function() {
vm.sign(params.row);
}
}
}, '签到');
functionList.push(sign);
return h('div', functionList);
}
} ],
tableData : [],
user : {
pageSize : 10,
pageNo : 1,
description:''
},
tableSize : 50,
}
},
methods: {
load : function() {
var that = this;
okUtils.ajaxCloud({
url:"/app/ding/list",
param : that.user,
success : function(result) {
that.tableData = result.msg.pageData;
that.tableSize = result.msg.totalCount;
}
});
},
reload : function(){
vm.user.pageSize = 10;
vm.user.pageNo = 1;
vm.user.description = '';
this.load();
},
changePage : function(pageNo) {
vm.user.pageNo = pageNo;
vm.load();
},
changePageSize : function(pageSize) {
vm.user.pageSize = pageSize;
vm.load();
},
edit : function(user) {
okUtils.dialogOpen({
title: '修改',
url: "app/moguding/form.html",
scroll : true,
width: '40%',
height: '90%',
success : function(dialog) {
dialog.vm.user.userId = user.userId;
dialog.vm.load();
},
yes : function(dialog) {
dialog.vm.acceptClick(vm);
}
});
},
add:function(){
okUtils.dialogOpen({
title: '新增',
url: "app/moguding/form.html",
scroll : true,
width: '40%',
height: '90%',
success : function(dialog) {
dialog.vm.load();
},
yes : function(dialog) {
dialog.vm.acceptClick(vm);
}
});
},
remove:function(user) {
okLayer.confirm("确定要删除吗?", function () {
okUtils.ajaxCloud({
url:"/app/ding/delete",
param : {userId: user.userId},
success : function(result) {
okLayer.msg.greenTick(result.msg, function () {
vm.load();
});
}
});
})
},
sign:function(user) {
okLayer.confirm("确定要签到吗?", function () {
okUtils.ajaxCloud({
url:"/app/ding/sign",
param : {userId: user.userId},
success : function(result) {
okLayer.msg.greenTick(result.msg)
}
});
})
}
},
created: function() {
this.load()
}
})
});
</script>
</body>
</html>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册