Commit 16a9e9da by wangsx

初始化提交

0 parents
Showing with 4859 additions and 0 deletions

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

# Created by .ignore support plugin (hsz.mobi)
### Maven template
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# Avoid ignoring Maven wrapper jar file (.jar files are usually ignored)
!/.mvn/wrapper/maven-wrapper.jar
### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
.idea/
# User-specific stuff:
# Sensitive or high-churn files:
# Gradle:
# CMake
cmake-build-debug/
cmake-build-release/
# Mongo Explorer plugin:
.idea/**/mongoSettings.xml
## File-based project format:
*.iml
*.iws
## Plugin-specific files:
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
/bootdo.iml
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
package com.bootdo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
})
@EnableTransactionManagement
@ServletComponentScan
@MapperScan("com.bootdo.*.dao")
@SpringBootApplication
@EnableCaching
public class BootdoApplication {
public static void main(String[] args) {
SpringApplication.run(BootdoApplication.class, args);
System.out.println("ヾ(◍°∇°◍)ノ゙ bootdo启动成功 ヾ(◍°∇°◍)ノ゙\n" +
" ______ _ ______ \n" +
"|_ _ \\ / |_|_ _ `. \n" +
" | |_) | .--. .--. `| |-' | | `. \\ .--. \n" +
" | __'. / .'`\\ \\/ .'`\\ \\| | | | | |/ .'`\\ \\ \n" +
" _| |__) || \\__. || \\__. || |, _| |_.' /| \\__. | \n" +
"|_______/ '.__.' '.__.' \\__/|______.' '.__.' ");
}
}
package com.bootdo.activiti.config;
import org.activiti.engine.*;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.spring.ProcessEngineFactoryBean;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
@Configuration
public class ActivitiConfig {
//流程配置,与spring整合采用SpringProcessEngineConfiguration这个实现
@Bean
public ProcessEngineConfiguration processEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager){
SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration();
processEngineConfiguration.setDataSource(dataSource);
//processEngineConfiguration.setDatabaseSchemaUpdate("true");
processEngineConfiguration.setDatabaseSchemaUpdate("false");
processEngineConfiguration.setDatabaseType("mysql");
processEngineConfiguration.setTransactionManager(transactionManager);
//流程图字体
processEngineConfiguration.setActivityFontName("宋体");
processEngineConfiguration.setAnnotationFontName("宋体");
processEngineConfiguration.setLabelFontName("宋体");
return processEngineConfiguration;
}
//流程引擎,与spring整合使用factoryBean
@Bean
public ProcessEngineFactoryBean processEngine(ProcessEngineConfiguration processEngineConfiguration){
ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean();
processEngineFactoryBean.setProcessEngineConfiguration((ProcessEngineConfigurationImpl) processEngineConfiguration);
return processEngineFactoryBean;
}
//八大接口
@Bean
public RepositoryService repositoryService(ProcessEngine processEngine){
return processEngine.getRepositoryService();
}
@Bean
public RuntimeService runtimeService(ProcessEngine processEngine){
return processEngine.getRuntimeService();
}
@Bean
public TaskService taskService(ProcessEngine processEngine){
return processEngine.getTaskService();
}
@Bean
public HistoryService historyService(ProcessEngine processEngine){
return processEngine.getHistoryService();
}
@Bean
public FormService formService(ProcessEngine processEngine){
return processEngine.getFormService();
}
@Bean
public IdentityService identityService(ProcessEngine processEngine){
return processEngine.getIdentityService();
}
@Bean
public ManagementService managementService(ProcessEngine processEngine){
return processEngine.getManagementService();
}
@Bean
public DynamicBpmnService dynamicBpmnService(ProcessEngine processEngine){
return processEngine.getDynamicBpmnService();
}
//八大接口 end
}
package com.bootdo.activiti.config;
/**
*/
public class ActivitiConstant {
public static final String[] ACTIVITI_SALARY = new String[]{"salary","salary"};
}
package com.bootdo.activiti.controller;
import com.bootdo.activiti.service.ProcessService;
import com.bootdo.activiti.vo.ProcessVO;
import com.bootdo.common.config.Constant;
import com.bootdo.common.controller.BaseController;
import com.bootdo.common.utils.PageUtils;
import com.bootdo.common.utils.R;
import org.activiti.engine.ActivitiException;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import javax.servlet.http.HttpServletResponse;
import javax.xml.stream.XMLStreamException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipInputStream;
@RequestMapping("activiti/process")
@RestController
public class ProcessController extends BaseController{
@Autowired
private RepositoryService repositoryService;
@Autowired
private ProcessService processService;
@Autowired
private RuntimeService runtimeService;
@GetMapping
ModelAndView process() {
return new ModelAndView("act/process/process");
}
@GetMapping("list")
PageUtils list(int offset, int limit) {
List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery()
.listPage(offset, limit);
int count = (int) repositoryService.createProcessDefinitionQuery().count();
List<Object> list = new ArrayList<>();
for(ProcessDefinition processDefinition: processDefinitions){
list.add(new ProcessVO(processDefinition));
}
PageUtils pageUtils = new PageUtils(list, count);
return pageUtils;
}
@GetMapping("/add")
public ModelAndView add() {
return new ModelAndView("act/process/add");
}
@PostMapping("/save")
@Transactional(readOnly = false)
public R deploy(String exportDir, String category, MultipartFile file) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
String message = "";
String fileName = file.getOriginalFilename();
try {
InputStream fileInputStream = file.getInputStream();
Deployment deployment = null;
String extension = FilenameUtils.getExtension(fileName);
if (extension.equals("zip") || extension.equals("bar")) {
ZipInputStream zip = new ZipInputStream(fileInputStream);
deployment = repositoryService.createDeployment().addZipInputStream(zip).deploy();
} else if (extension.equals("png")) {
deployment = repositoryService.createDeployment().addInputStream(fileName, fileInputStream).deploy();
} else if (fileName.indexOf("bpmn20.xml") != -1) {
deployment = repositoryService.createDeployment().addInputStream(fileName, fileInputStream).deploy();
} else if (extension.equals("bpmn")) { // bpmn扩展名特殊处理,转换为bpmn20.xml
String baseName = FilenameUtils.getBaseName(fileName);
deployment = repositoryService.createDeployment().addInputStream(baseName + ".bpmn20.xml", fileInputStream).deploy();
} else {
message = "不支持的文件类型:" + extension;
}
List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).list();
// 设置流程分类
for (ProcessDefinition processDefinition : list) {
// ActUtils.exportDiagramToFile(repositoryService, processDefinition, exportDir);
repositoryService.setProcessDefinitionCategory(processDefinition.getId(), category);
message += "部署成功,流程ID=" + processDefinition.getId() + "<br/>";
}
if (list.size() == 0) {
message = "部署失败,没有流程。";
}
} catch (Exception e) {
throw new ActivitiException("部署失败!", e);
}
return R.ok(message);
}
/**
* 将部署的流程转换为模型
*
* @param procDefId
* @param redirectAttributes
* @return
* @throws UnsupportedEncodingException
* @throws XMLStreamException
*/
@RequestMapping(value = "/convertToModel/{procDefId}")
public R convertToModel(@PathVariable("procDefId") String procDefId, RedirectAttributes redirectAttributes) throws UnsupportedEncodingException, XMLStreamException {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
org.activiti.engine.repository.Model modelData = null;
try {
modelData = processService.convertToModel(procDefId);
return R.ok( "转换模型成功,模型ID=" + modelData.getId());
} catch (Exception e) {
e.printStackTrace();
return R.ok( "转换模型失败");
}
}
@RequestMapping(value = "/resource/read/{xml}/{id}")
public void resourceRead(@PathVariable("xml") String resType, @PathVariable("id") String id, HttpServletResponse response) throws Exception {
InputStream resourceAsStream = processService.resourceRead(id,resType);
byte[] b = new byte[1024];
int len = -1;
while ((len = resourceAsStream.read(b, 0, 1024)) != -1) {
response.getOutputStream().write(b, 0, len);
}
}
@PostMapping("/remove")
public R remove(String id){
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
repositoryService.deleteDeployment(id,true);
return R.ok();
}
@PostMapping("/batchRemove")
public R batchRemove(@RequestParam("ids[]") String[] ids) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
for (String id : ids) {
repositoryService.deleteDeployment(id,true);
}
return R.ok();
}
}
package com.bootdo.activiti.controller;
import com.bootdo.activiti.domain.SalaryDO;
import com.bootdo.activiti.service.SalaryService;
import com.bootdo.activiti.utils.ActivitiUtils;
import com.bootdo.common.config.Constant;
import com.bootdo.common.controller.BaseController;
import com.bootdo.common.utils.PageUtils;
import com.bootdo.common.utils.Query;
import com.bootdo.common.utils.R;
import com.bootdo.common.utils.ShiroUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 审批流程测试表
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-11-25 13:33:16
*/
@Controller
@RequestMapping("/act/salary")
public class SalaryController extends BaseController{
@Autowired
private SalaryService salaryService;
@Autowired
ActivitiUtils activitiUtils;
@GetMapping()
String Salary() {
return "activiti/salary/salary";
}
@ResponseBody
@GetMapping("/list")
public PageUtils list(@RequestParam Map<String, Object> params) {
Query query = new Query(params);
List<SalaryDO> salaryList = salaryService.list(query);
int total = salaryService.count(query);
PageUtils pageUtils = new PageUtils(salaryList, total);
return pageUtils;
}
@GetMapping("/form")
String add() {
return "act/salary/add";
}
@GetMapping("/form/{taskId}")
String edit(@PathVariable("taskId") String taskId, Model model) {
SalaryDO salary = salaryService.get(activitiUtils.getBusinessKeyByTaskId(taskId));
salary.setTaskId(taskId);
model.addAttribute("salary", salary);
return "act/salary/edit";
}
/**
* 保存
*/
@ResponseBody
@PostMapping("/save")
public R saveOrUpdate(SalaryDO salary) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
salary.setCreateDate(new Date());
salary.setUpdateDate(new Date());
salary.setCreateBy(ShiroUtils.getUserId().toString());
salary.setUpdateBy(ShiroUtils.getUserId().toString());
salary.setDelFlag("1");
if (salaryService.save(salary) > 0) {
return R.ok();
}
return R.error();
}
/**
* 修改
*/
@ResponseBody
@RequestMapping("/update")
public R update(SalaryDO salary) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
String taskKey = activitiUtils.getTaskByTaskId(salary.getTaskId()).getTaskDefinitionKey();
if ("audit2".equals(taskKey)) {
salary.setHrText(salary.getTaskComment());
} else if ("audit3".equals(taskKey)) {
salary.setLeadText(salary.getTaskComment());
} else if ("audit4".equals(taskKey)) {
salary.setMainLeadText(salary.getTaskComment());
} else if("apply_end".equals(salary.getTaskComment())){
//流程完成,兑现
}
salaryService.update(salary);
return R.ok();
}
/**
* 删除
*/
@PostMapping("/remove")
@ResponseBody
public R remove(String id) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
if (salaryService.remove(id) > 0) {
return R.ok();
}
return R.error();
}
/**
* 删除
*/
@PostMapping("/batchRemove")
@ResponseBody
public R remove(@RequestParam("ids[]") String[] ids) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
salaryService.batchRemove(ids);
return R.ok();
}
}
package com.bootdo.activiti.controller;
import com.bootdo.activiti.service.ActTaskService;
import com.bootdo.activiti.vo.ProcessVO;
import com.bootdo.activiti.vo.TaskVO;
import com.bootdo.common.utils.PageUtils;
import org.activiti.engine.FormService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
/**
*/
@RequestMapping("activiti/task")
@RestController
public class TaskController {
@Autowired
RepositoryService repositoryService;
@Autowired
FormService formService;
@Autowired
TaskService taskService;
@Autowired
ActTaskService actTaskService;
@GetMapping("goto")
public ModelAndView gotoTask(){
return new ModelAndView("act/task/gotoTask");
}
@GetMapping("/gotoList")
PageUtils list(int offset, int limit) {
List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery()
.listPage(offset, limit);
int count = (int) repositoryService.createProcessDefinitionQuery().count();
List<Object> list = new ArrayList<>();
for(ProcessDefinition processDefinition: processDefinitions){
list.add(new ProcessVO(processDefinition));
}
PageUtils pageUtils = new PageUtils(list, count);
return pageUtils;
}
@GetMapping("/form/{procDefId}")
public void startForm(@PathVariable("procDefId") String procDefId ,HttpServletResponse response) throws IOException {
String formKey = actTaskService.getFormKey(procDefId, null);
response.sendRedirect(formKey);
}
@GetMapping("/form/{procDefId}/{taskId}")
public void form(@PathVariable("procDefId") String procDefId,@PathVariable("taskId") String taskId ,HttpServletResponse response) throws IOException {
// 获取流程XML上的表单KEY
String formKey = actTaskService.getFormKey(procDefId, taskId);
response.sendRedirect(formKey+"/"+taskId);
}
@GetMapping("/todo")
ModelAndView todo(){
return new ModelAndView("act/task/todoTask");
}
@GetMapping("/todoList")
List<TaskVO> todoList(){
List<Task> tasks = taskService.createTaskQuery().taskAssignee("admin").list();
List<TaskVO> taskVOS = new ArrayList<>();
for(Task task : tasks){
TaskVO taskVO = new TaskVO(task);
taskVOS.add(taskVO);
}
return taskVOS;
}
/**
* 读取带跟踪的图片
*/
@RequestMapping(value = "/trace/photo/{procDefId}/{execId}")
public void tracePhoto(@PathVariable("procDefId") String procDefId, @PathVariable("execId") String execId, HttpServletResponse response) throws Exception {
InputStream imageStream = actTaskService.tracePhoto(procDefId, execId);
// 输出资源内容到相应对象
byte[] b = new byte[1024];
int len;
while ((len = imageStream.read(b, 0, 1024)) != -1) {
response.getOutputStream().write(b, 0, len);
}
}
}
package com.bootdo.activiti.dao;
import com.bootdo.activiti.domain.SalaryDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
* 审批流程测试表
* @author chglee
* @email 1992lcg@163.com
* @date 2017-11-25 13:28:58
*/
@Mapper
public interface SalaryDao {
SalaryDO get(String id);
List<SalaryDO> list(Map<String, Object> map);
int count(Map<String, Object> map);
int save(SalaryDO salary);
int update(SalaryDO salary);
int remove(String id);
int batchRemove(String[] ids);
}
package com.bootdo.activiti.domain;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import java.util.Date;
import java.util.List;
/**
*
*/
public class ActivitiDO {
private String taskId; // 任务编号
private String taskName; // 任务名称
private String taskDefKey; // 任务定义Key(任务环节标识)
private String procInsId; // 流程实例ID
private String procDefId; // 流程定义ID
private String procDefKey; // 流程定义Key(流程定义标识)
private String businessTable; // 业务绑定Table
private String businessId; // 业务绑定ID
private String title; // 任务标题
private String status; // 任务状态(todo/claim/finish)
private String procExecUrl; // 流程执行(办理)RUL
private String comment; // 任务意见
private String flag; // 意见状态
private Task task; // 任务对象
private ProcessDefinition procDef; // 流程定义对象
private ProcessInstance procIns; // 流程实例对象
private HistoricTaskInstance histTask; // 历史任务
private HistoricActivityInstance histIns; //历史活动任务
private String assignee; // 任务执行人编号
private String assigneeName; // 任务执行人名称
private Variable vars; // 流程变量
private Variable taskVars; // 流程任务变量
private Date beginDate; // 开始查询日期
private Date endDate; // 结束查询日期
private List<ActivitiDO> list; // 任务列表
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
public String getTaskName() {
return taskName;
}
public void setTaskName(String taskName) {
this.taskName = taskName;
}
public String getTaskDefKey() {
return taskDefKey;
}
public void setTaskDefKey(String taskDefKey) {
this.taskDefKey = taskDefKey;
}
public String getProcInsId() {
return procInsId;
}
public void setProcInsId(String procInsId) {
this.procInsId = procInsId;
}
public String getProcDefId() {
return procDefId;
}
public void setProcDefId(String procDefId) {
this.procDefId = procDefId;
}
public String getProcDefKey() {
return procDefKey;
}
public void setProcDefKey(String procDefKey) {
this.procDefKey = procDefKey;
}
public String getBusinessTable() {
return businessTable;
}
public void setBusinessTable(String businessTable) {
this.businessTable = businessTable;
}
public String getBusinessId() {
return businessId;
}
public void setBusinessId(String businessId) {
this.businessId = businessId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getProcExecUrl() {
return procExecUrl;
}
public void setProcExecUrl(String procExecUrl) {
this.procExecUrl = procExecUrl;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public Task getTask() {
return task;
}
public void setTask(Task task) {
this.task = task;
}
public ProcessDefinition getProcDef() {
return procDef;
}
public void setProcDef(ProcessDefinition procDef) {
this.procDef = procDef;
}
public ProcessInstance getProcIns() {
return procIns;
}
public void setProcIns(ProcessInstance procIns) {
this.procIns = procIns;
}
public HistoricTaskInstance getHistTask() {
return histTask;
}
public void setHistTask(HistoricTaskInstance histTask) {
this.histTask = histTask;
}
public HistoricActivityInstance getHistIns() {
return histIns;
}
public void setHistIns(HistoricActivityInstance histIns) {
this.histIns = histIns;
}
public String getAssignee() {
return assignee;
}
public void setAssignee(String assignee) {
this.assignee = assignee;
}
public String getAssigneeName() {
return assigneeName;
}
public void setAssigneeName(String assigneeName) {
this.assigneeName = assigneeName;
}
public Variable getVars() {
return vars;
}
public void setVars(Variable vars) {
this.vars = vars;
}
public Variable getTaskVars() {
return taskVars;
}
public void setTaskVars(Variable taskVars) {
this.taskVars = taskVars;
}
public Date getBeginDate() {
return beginDate;
}
public void setBeginDate(Date beginDate) {
this.beginDate = beginDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
public List<ActivitiDO> getList() {
return list;
}
public void setList(List<ActivitiDO> list) {
this.list = list;
}
}
package com.bootdo.activiti.domain;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* 审批流程测试表
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-11-25 13:28:58
*/
public class SalaryDO extends TaskDO implements Serializable {
private static final long serialVersionUID = 1L;
//编号
private String id;
//流程实例ID
private String procInsId;
//变动用户
private String userId;
//归属部门
private String officeId;
//岗位
private String post;
//性别
private String age;
//学历
private String edu;
//调整原因
private String content;
//现行标准 薪酬档级
private String olda;
//现行标准 月工资额
private String oldb;
//现行标准 年薪总额
private String oldc;
//调整后标准 薪酬档级
private String newa;
//调整后标准 月工资额
private String newb;
//调整后标准 年薪总额
private String newc;
//月增资
private String addNum;
//执行时间
private String exeDate;
//人力资源部门意见
private String hrText;
//分管领导意见
private String leadText;
//集团主要领导意见
private String mainLeadText;
//创建者
private String createBy;
//创建时间
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createDate;
//更新者
private String updateBy;
//更新时间
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date updateDate;
//备注信息
private String remarks;
//删除标记
private String delFlag;
/**
* 设置:编号
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取:编号
*/
public String getId() {
return id;
}
/**
* 设置:流程实例ID
*/
public void setProcInsId(String procInsId) {
this.procInsId = procInsId;
}
/**
* 获取:流程实例ID
*/
public String getProcInsId() {
return procInsId;
}
/**
* 设置:变动用户
*/
public void setUserId(String userId) {
this.userId = userId;
}
/**
* 获取:变动用户
*/
public String getUserId() {
return userId;
}
/**
* 设置:归属部门
*/
public void setOfficeId(String officeId) {
this.officeId = officeId;
}
/**
* 获取:归属部门
*/
public String getOfficeId() {
return officeId;
}
/**
* 设置:岗位
*/
public void setPost(String post) {
this.post = post;
}
/**
* 获取:岗位
*/
public String getPost() {
return post;
}
/**
* 设置:性别
*/
public void setAge(String age) {
this.age = age;
}
/**
* 获取:性别
*/
public String getAge() {
return age;
}
/**
* 设置:学历
*/
public void setEdu(String edu) {
this.edu = edu;
}
/**
* 获取:学历
*/
public String getEdu() {
return edu;
}
/**
* 设置:调整原因
*/
public void setContent(String content) {
this.content = content;
}
/**
* 获取:调整原因
*/
public String getContent() {
return content;
}
/**
* 设置:现行标准 薪酬档级
*/
public void setOlda(String olda) {
this.olda = olda;
}
/**
* 获取:现行标准 薪酬档级
*/
public String getOlda() {
return olda;
}
/**
* 设置:现行标准 月工资额
*/
public void setOldb(String oldb) {
this.oldb = oldb;
}
/**
* 获取:现行标准 月工资额
*/
public String getOldb() {
return oldb;
}
/**
* 设置:现行标准 年薪总额
*/
public void setOldc(String oldc) {
this.oldc = oldc;
}
/**
* 获取:现行标准 年薪总额
*/
public String getOldc() {
return oldc;
}
/**
* 设置:调整后标准 薪酬档级
*/
public void setNewa(String newa) {
this.newa = newa;
}
/**
* 获取:调整后标准 薪酬档级
*/
public String getNewa() {
return newa;
}
/**
* 设置:调整后标准 月工资额
*/
public void setNewb(String newb) {
this.newb = newb;
}
/**
* 获取:调整后标准 月工资额
*/
public String getNewb() {
return newb;
}
/**
* 设置:调整后标准 年薪总额
*/
public void setNewc(String newc) {
this.newc = newc;
}
/**
* 获取:调整后标准 年薪总额
*/
public String getNewc() {
return newc;
}
/**
* 设置:月增资
*/
public void setAddNum(String addNum) {
this.addNum = addNum;
}
/**
* 获取:月增资
*/
public String getAddNum() {
return addNum;
}
/**
* 设置:执行时间
*/
public void setExeDate(String exeDate) {
this.exeDate = exeDate;
}
/**
* 获取:执行时间
*/
public String getExeDate() {
return exeDate;
}
/**
* 设置:人力资源部门意见
*/
public void setHrText(String hrText) {
this.hrText = hrText;
}
/**
* 获取:人力资源部门意见
*/
public String getHrText() {
return hrText;
}
/**
* 设置:分管领导意见
*/
public void setLeadText(String leadText) {
this.leadText = leadText;
}
/**
* 获取:分管领导意见
*/
public String getLeadText() {
return leadText;
}
/**
* 设置:集团主要领导意见
*/
public void setMainLeadText(String mainLeadText) {
this.mainLeadText = mainLeadText;
}
/**
* 获取:集团主要领导意见
*/
public String getMainLeadText() {
return mainLeadText;
}
/**
* 设置:创建者
*/
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
/**
* 获取:创建者
*/
public String getCreateBy() {
return createBy;
}
/**
* 设置:创建时间
*/
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
/**
* 获取:创建时间
*/
public Date getCreateDate() {
return createDate;
}
/**
* 设置:更新者
*/
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
/**
* 获取:更新者
*/
public String getUpdateBy() {
return updateBy;
}
/**
* 设置:更新时间
*/
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
/**
* 获取:更新时间
*/
public Date getUpdateDate() {
return updateDate;
}
/**
* 设置:备注信息
*/
public void setRemarks(String remarks) {
this.remarks = remarks;
}
/**
* 获取:备注信息
*/
public String getRemarks() {
return remarks;
}
/**
* 设置:删除标记
*/
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
/**
* 获取:删除标记
*/
public String getDelFlag() {
return delFlag;
}
}
package com.bootdo.activiti.domain;
import java.util.Map;
/**
* @author bootdo 1992lcg@163.com
*/
public class TaskDO {
private String taskId;
private String taskComment;
private String taskPass;
private Map<String,Object> vars;
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
public String getTaskComment() {
return taskComment;
}
public void setTaskComment(String taskComment) {
this.taskComment = taskComment;
}
public String getTaskPass() {
return taskPass;
}
public void setTaskPass(String taskPass) {
this.taskPass = taskPass;
}
public Map<String, Object> getVars() {
return vars;
}
public void setVars(Map<String, Object> vars) {
this.vars = vars;
}
}
package com.bootdo.activiti.domain;
/**
*/
public class Variable {
private String keys;
private String values;
private String types;
public String getKeys() {
return keys;
}
public void setKeys(String keys) {
this.keys = keys;
}
public String getValues() {
return values;
}
public void setValues(String values) {
this.values = values;
}
public String getTypes() {
return types;
}
public void setTypes(String types) {
this.types = types;
}
}
package com.bootdo.activiti.service;
import com.bootdo.activiti.domain.ActivitiDO;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
/**
*/
public interface ActTaskService {
List<ActivitiDO> listTodo(ActivitiDO act);
void complete(String taskId, String procInsId, String comment, String title, Map<String, Object> vars);
void complete(String taskId,Map<String,Object> vars);
String startProcess(String procDefKey, String businessTable, String businessId, String title, Map<String, Object> vars);
String getFormKey(String procDefId, String taskDefKey);
InputStream tracePhoto(String processDefinitionId, String executionId);
}
package com.bootdo.activiti.service;
import org.activiti.engine.repository.Model;
import org.springframework.stereotype.Service;
import java.io.InputStream;
/**
*/
@Service
public interface ProcessService {
Model convertToModel(String procDefId) throws Exception;
InputStream resourceRead(String id, String resType) throws Exception;
}
package com.bootdo.activiti.service;
import com.bootdo.activiti.domain.SalaryDO;
import java.util.List;
import java.util.Map;
/**
* 审批流程测试表
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-11-25 13:33:16
*/
public interface SalaryService {
SalaryDO get(String id);
List<SalaryDO> list(Map<String, Object> map);
int count(Map<String, Object> map);
int save(SalaryDO salary);
int update(SalaryDO salary);
int remove(String id);
int batchRemove(String[] ids);
}
package com.bootdo.activiti.service.impl;
import com.bootdo.activiti.service.ProcessService;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.activiti.bpmn.converter.BpmnXMLConverter;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.editor.constants.ModelDataJsonConstants;
import org.activiti.editor.language.json.converter.BpmnJsonConverter;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.repository.Model;
import org.activiti.engine.repository.ProcessDefinition;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
*/
@Service
public class ProcessServiceImpl implements ProcessService {
@Autowired
RepositoryService repositoryService;
@Autowired
RuntimeService runtimeService;
@Override
public Model convertToModel(String procDefId) throws Exception {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId).singleResult();
InputStream bpmnStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(),
processDefinition.getResourceName());
XMLInputFactory xif = XMLInputFactory.newInstance();
InputStreamReader in = new InputStreamReader(bpmnStream, "UTF-8");
XMLStreamReader xtr = xif.createXMLStreamReader(in);
BpmnModel bpmnModel = new BpmnXMLConverter().convertToBpmnModel(xtr);
BpmnJsonConverter converter = new BpmnJsonConverter();
ObjectNode modelNode = converter.convertToJson(bpmnModel);
org.activiti.engine.repository.Model modelData = repositoryService.newModel();
modelData.setKey(processDefinition.getKey());
modelData.setName(processDefinition.getResourceName());
modelData.setCategory(processDefinition.getCategory());//.getDeploymentId());
modelData.setDeploymentId(processDefinition.getDeploymentId());
modelData.setVersion(Integer.parseInt(String.valueOf(repositoryService.createModelQuery().modelKey(modelData.getKey()).count() + 1)));
ObjectNode modelObjectNode = new ObjectMapper().createObjectNode();
modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, processDefinition.getName());
modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, modelData.getVersion());
modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, processDefinition.getDescription());
modelData.setMetaInfo(modelObjectNode.toString());
repositoryService.saveModel(modelData);
repositoryService.addModelEditorSource(modelData.getId(), modelNode.toString().getBytes("utf-8"));
return modelData;
}
@Override
public InputStream resourceRead(String id, String resType) throws Exception {
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(id).singleResult();
String resourceName = "";
if (resType.equals("image")) {
resourceName = processDefinition.getDiagramResourceName();
} else if (resType.equals("xml")) {
resourceName = processDefinition.getResourceName();
}
InputStream resourceAsStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), resourceName);
return resourceAsStream;
}
}
package com.bootdo.activiti.service.impl;
import com.bootdo.activiti.config.ActivitiConstant;
import com.bootdo.common.utils.StringUtils;
import org.activiti.engine.TaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import com.bootdo.activiti.dao.SalaryDao;
import com.bootdo.activiti.domain.SalaryDO;
import com.bootdo.activiti.service.SalaryService;
import org.springframework.transaction.annotation.Transactional;
@Service
public class SalaryServiceImpl implements SalaryService {
@Autowired
private SalaryDao salaryDao;
@Autowired
private ActTaskServiceImpl actTaskService;
@Override
public SalaryDO get(String id){
return salaryDao.get(id);
}
@Override
public List<SalaryDO> list(Map<String, Object> map){
return salaryDao.list(map);
}
@Override
public int count(Map<String, Object> map){
return salaryDao.count(map);
}
@Transactional(rollbackFor=Exception.class)
@Override
public int save(SalaryDO salary){
salary.setId(UUID.randomUUID().toString().replace("-",""));
actTaskService.startProcess(ActivitiConstant.ACTIVITI_SALARY[0],ActivitiConstant.ACTIVITI_SALARY[1],salary.getId(),salary.getContent(),new HashMap<>());
return salaryDao.save(salary);
}
@Transactional(rollbackFor=Exception.class)
@Override
public int update(SalaryDO salary){
Map<String,Object> vars = new HashMap<>(16);
vars.put("pass", salary.getTaskPass() );
vars.put("title","");
actTaskService.complete(salary.getTaskId(),vars);
return salaryDao.update(salary);
}
@Override
public int remove(String id){
return salaryDao.remove(id);
}
@Override
public int batchRemove(String[] ids){
return salaryDao.batchRemove(ids);
}
}
package com.bootdo.activiti.utils;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
*/
@Component
public class ActivitiUtils {
/**
* 根据taskId查找businessKey
*/
@Autowired
TaskService taskService;
@Autowired
RuntimeService runtimeService;
public String getBusinessKeyByTaskId(String taskId){
Task task = taskService
.createTaskQuery()
.taskId(taskId)
.singleResult();
ProcessInstance pi = runtimeService
.createProcessInstanceQuery()
.processInstanceId(task.getProcessInstanceId())
.singleResult();
return pi.getBusinessKey();
}
public Task getTaskByTaskId(String taskId){
Task task = taskService
.createTaskQuery()
.taskId(taskId)
.singleResult();
return task;
}
}
package com.bootdo.activiti.vo;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.activiti.engine.repository.Deployment;
import org.activiti.rest.common.util.DateToStringSerializer;
import java.util.Date;
public class DeploymentResponse {
private String id;
private String name;
@JsonSerialize(using = DateToStringSerializer.class, as=Date.class)
private Date deploymentTime;
private String category;
private String tenantId;
public DeploymentResponse(Deployment deployment) {
setId(deployment.getId());
setName(deployment.getName());
setDeploymentTime(deployment.getDeploymentTime());
setCategory(deployment.getCategory());
setTenantId(deployment.getTenantId());
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDeploymentTime() {
return deploymentTime;
}
public void setDeploymentTime( Date deploymentTime) {
this.deploymentTime = deploymentTime;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
public String getTenantId() {
return tenantId;
}
}
\ No newline at end of file
package com.bootdo.activiti.vo;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
public class ProcessVO {
private String id;
private String name;
private String deploymentId;
public ProcessVO(Deployment processDefinition) {
this.setId(processDefinition.getId());
this.name = processDefinition.getName();
}
public ProcessVO(ProcessDefinition processDefinition) {
this.setId(processDefinition.getId());
this.name = processDefinition.getName();
this.deploymentId = processDefinition.getDeploymentId();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDeploymentId() {
return deploymentId;
}
public void setDeploymentId(String deploymentId) {
this.deploymentId = deploymentId;
}
}
package com.bootdo.activiti.vo;
import org.activiti.engine.task.Task;
/**
*/
public class TaskVO {
public TaskVO(Task task){
this.setId(task.getId());
this.setKey(task.getTaskDefinitionKey());
this.setName(task.getName());
this.setDescription(task.getDescription());
this.setAssignee(task.getAssignee());
this.setFormKey(task.getFormKey());
this.setProcessId(task.getProcessInstanceId());
this.setProcessDefinitionId(task.getProcessDefinitionId());
this.setExecutionId(task.getExecutionId());
}
private String id;
private String name;
private String key;
private String description;
private String formKey;
private String assignee;
private String processId;
private String processDefinitionId;
private String executionId;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getFormKey() {
return formKey;
}
public void setFormKey(String formKey) {
this.formKey = formKey;
}
public String getAssignee() {
return assignee;
}
public void setAssignee(String assignee) {
this.assignee = assignee;
}
public String getProcessId() {
return processId;
}
public void setProcessId(String processId) {
this.processId = processId;
}
public String getProcessDefinitionId() {
return processDefinitionId;
}
public void setProcessDefinitionId(String processDefinitionId) {
this.processDefinitionId = processDefinitionId;
}
public String getExecutionId() {
return executionId;
}
public void setExecutionId(String executionId) {
this.executionId = executionId;
}
}
package com.bootdo.blog.controller;
import com.bootdo.blog.domain.ContentDO;
import com.bootdo.blog.service.ContentService;
import com.bootdo.common.utils.DateUtils;
import com.bootdo.common.utils.PageUtils;
import com.bootdo.common.utils.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author bootdo 1992lcg@163.com
*/
@RequestMapping("/blog")
@Controller
public class BlogController {
@Autowired
ContentService bContentService;
@GetMapping()
String blog() {
return "blog/index/main";
}
@ResponseBody
@GetMapping("/open/list")
public PageUtils opentList(@RequestParam Map<String, Object> params) {
Query query = new Query(params);
List<ContentDO> bContentList = bContentService.list(query);
int total = bContentService.count(query);
PageUtils pageUtils = new PageUtils(bContentList, total);
return pageUtils;
}
@GetMapping("/open/post/{cid}")
String post(@PathVariable("cid") Long cid, Model model) {
ContentDO bContentDO = bContentService.get(cid);
model.addAttribute("bContent", bContentDO);
model.addAttribute("gtmModified", DateUtils.format(bContentDO.getGtmModified()));
return "blog/index/post";
}
@GetMapping("/open/page/{categories}")
String about(@PathVariable("categories") String categories, Model model) {
Map<String, Object> map = new HashMap<>(16);
map.put("categories", categories);
ContentDO bContentDO =null;
if(bContentService.list(map).size()>0){
bContentDO = bContentService.list(map).get(0);
}
model.addAttribute("bContent", bContentDO);
return "blog/index/post";
}
}
package com.bootdo.blog.controller;
import com.bootdo.blog.domain.ContentDO;
import com.bootdo.blog.service.ContentService;
import com.bootdo.common.config.Constant;
import com.bootdo.common.controller.BaseController;
import com.bootdo.common.utils.PageUtils;
import com.bootdo.common.utils.Query;
import com.bootdo.common.utils.R;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 文章内容
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-09-09 10:03:34
*/
@Controller
@RequestMapping("/blog/bContent")
public class ContentController extends BaseController {
@Autowired
ContentService bContentService;
@GetMapping()
@RequiresPermissions("blog:bContent:bContent")
String bContent() {
return "blog/bContent/bContent";
}
@ResponseBody
@GetMapping("/list")
@RequiresPermissions("blog:bContent:bContent")
public PageUtils list(@RequestParam Map<String, Object> params) {
Query query = new Query(params);
List<ContentDO> bContentList = bContentService.list(query);
int total = bContentService.count(query);
PageUtils pageUtils = new PageUtils(bContentList, total);
return pageUtils;
}
@GetMapping("/add")
@RequiresPermissions("blog:bContent:add")
String add() {
return "blog/bContent/add";
}
@GetMapping("/edit/{cid}")
@RequiresPermissions("blog:bContent:edit")
String edit(@PathVariable("cid") Long cid, Model model) {
ContentDO bContentDO = bContentService.get(cid);
model.addAttribute("bContent", bContentDO);
return "blog/bContent/edit";
}
/**
* 保存
*/
@ResponseBody
@RequiresPermissions("blog:bContent:add")
@PostMapping("/save")
public R save(ContentDO bContent) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
if (bContent.getAllowComment() == null) {
bContent.setAllowComment(0);
}
if (bContent.getAllowFeed() == null) {
bContent.setAllowFeed(0);
}
if(null==bContent.getType()) {
bContent.setType("article");
}
bContent.setGtmCreate(new Date());
bContent.setGtmModified(new Date());
int count;
if (bContent.getCid() == null || "".equals(bContent.getCid())) {
count = bContentService.save(bContent);
} else {
count = bContentService.update(bContent);
}
if (count > 0) {
return R.ok().put("cid", bContent.getCid());
}
return R.error();
}
/**
* 修改
*/
@RequiresPermissions("blog:bContent:edit")
@ResponseBody
@RequestMapping("/update")
public R update( ContentDO bContent) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
bContent.setGtmCreate(new Date());
bContentService.update(bContent);
return R.ok();
}
/**
* 删除
*/
@RequiresPermissions("blog:bContent:remove")
@PostMapping("/remove")
@ResponseBody
public R remove(Long id) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
if (bContentService.remove(id) > 0) {
return R.ok();
}
return R.error();
}
/**
* 删除
*/
@RequiresPermissions("blog:bContent:batchRemove")
@PostMapping("/batchRemove")
@ResponseBody
public R remove(@RequestParam("ids[]") Long[] cids) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
bContentService.batchRemove(cids);
return R.ok();
}
}
package com.bootdo.blog.dao;
import com.bootdo.blog.domain.ContentDO;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
/**
* 文章内容
* @author chglee
* @email 1992lcg@163.com
* @date 2017-10-03 16:17:48
*/
@Mapper
public interface ContentDao {
ContentDO get(Long cid);
List<ContentDO> list(Map<String,Object> map);
int count(Map<String,Object> map);
int save(ContentDO content);
int update(ContentDO content);
int remove(Long cid);
int batchRemove(Long[] cids);
}
package com.bootdo.blog.domain;
import java.io.Serializable;
import java.util.Date;
/**
* 文章内容
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-09-22 13:16:10
*/
public class ContentDO implements Serializable {
private static final long serialVersionUID = 1L;
//
private Long cid;
//标题
private String title;
//
private String slug;
//创建人id
private Long created;
//最近修改人id
private Long modified;
//内容
private String content;
//类型
private String type;
//标签
private String tags;
//分类
private String categories;
//
private Integer hits;
//评论数量
private Integer commentsNum;
//开启评论
private Integer allowComment;
//允许ping
private Integer allowPing;
//允许反馈
private Integer allowFeed;
//状态
private Integer status;
//作者
private String author;
//创建时间
private Date gtmCreate;
//修改时间
private Date gtmModified;
/**
* 设置:
*/
public void setCid(Long cid) {
this.cid = cid;
}
/**
* 获取:
*/
public Long getCid() {
return cid;
}
/**
* 设置:标题
*/
public void setTitle(String title) {
this.title = title;
}
/**
* 获取:标题
*/
public String getTitle() {
return title;
}
/**
* 设置:
*/
public void setSlug(String slug) {
this.slug = slug;
}
/**
* 获取:
*/
public String getSlug() {
return slug;
}
/**
* 设置:创建人id
*/
public void setCreated(Long created) {
this.created = created;
}
/**
* 获取:创建人id
*/
public Long getCreated() {
return created;
}
/**
* 设置:最近修改人id
*/
public void setModified(Long modified) {
this.modified = modified;
}
/**
* 获取:最近修改人id
*/
public Long getModified() {
return modified;
}
/**
* 设置:内容
*/
public void setContent(String content) {
this.content = content;
}
/**
* 获取:内容
*/
public String getContent() {
return content;
}
/**
* 设置:类型
*/
public void setType(String type) {
this.type = type;
}
/**
* 获取:类型
*/
public String getType() {
return type;
}
/**
* 设置:标签
*/
public void setTags(String tags) {
this.tags = tags;
}
/**
* 获取:标签
*/
public String getTags() {
return tags;
}
/**
* 设置:分类
*/
public void setCategories(String categories) {
this.categories = categories;
}
/**
* 获取:分类
*/
public String getCategories() {
return categories;
}
/**
* 设置:
*/
public void setHits(Integer hits) {
this.hits = hits;
}
/**
* 获取:
*/
public Integer getHits() {
return hits;
}
/**
* 设置:评论数量
*/
public void setCommentsNum(Integer commentsNum) {
this.commentsNum = commentsNum;
}
/**
* 获取:评论数量
*/
public Integer getCommentsNum() {
return commentsNum;
}
/**
* 设置:开启评论
*/
public void setAllowComment(Integer allowComment) {
this.allowComment = allowComment;
}
/**
* 获取:开启评论
*/
public Integer getAllowComment() {
return allowComment;
}
/**
* 设置:允许ping
*/
public void setAllowPing(Integer allowPing) {
this.allowPing = allowPing;
}
/**
* 获取:允许ping
*/
public Integer getAllowPing() {
return allowPing;
}
/**
* 设置:允许反馈
*/
public void setAllowFeed(Integer allowFeed) {
this.allowFeed = allowFeed;
}
/**
* 获取:允许反馈
*/
public Integer getAllowFeed() {
return allowFeed;
}
/**
* 设置:状态
*/
public void setStatus(Integer status) {
this.status = status;
}
/**
* 获取:状态
*/
public Integer getStatus() {
return status;
}
/**
* 设置:作者
*/
public void setAuthor(String author) {
this.author = author;
}
/**
* 获取:作者
*/
public String getAuthor() {
return author;
}
/**
* 设置:创建时间
*/
public void setGtmCreate(Date gtmCreate) {
this.gtmCreate = gtmCreate;
}
/**
* 获取:创建时间
*/
public Date getGtmCreate() {
return gtmCreate;
}
/**
* 设置:修改时间
*/
public void setGtmModified(Date gtmModified) {
this.gtmModified = gtmModified;
}
/**
* 获取:修改时间
*/
public Date getGtmModified() {
return gtmModified;
}
@Override
public String toString() {
return "ContentDO{" +
"cid=" + cid +
", title='" + title + '\'' +
", slug='" + slug + '\'' +
", created=" + created +
", modified=" + modified +
", content='" + content + '\'' +
", type='" + type + '\'' +
", tags='" + tags + '\'' +
", categories='" + categories + '\'' +
", hits=" + hits +
", commentsNum=" + commentsNum +
", allowComment=" + allowComment +
", allowPing=" + allowPing +
", allowFeed=" + allowFeed +
", status=" + status +
", author='" + author + '\'' +
", gtmCreate=" + gtmCreate +
", gtmModified=" + gtmModified +
'}';
}
}
package com.bootdo.blog.service;
import com.bootdo.blog.domain.ContentDO;
import java.util.List;
import java.util.Map;
/**
* 文章内容
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-09-09 10:03:34
*/
public interface ContentService {
ContentDO get(Long cid);
List<ContentDO> list(Map<String, Object> map);
int count(Map<String, Object> map);
int save(ContentDO bContent);
int update(ContentDO bContent);
int remove(Long cid);
int batchRemove(Long[] cids);
}
package com.bootdo.blog.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import com.bootdo.blog.dao.ContentDao;
import com.bootdo.blog.domain.ContentDO;
import com.bootdo.blog.service.ContentService;
@Service
public class ContentServiceImpl implements ContentService {
@Autowired
private ContentDao bContentMapper;
@Override
public ContentDO get(Long cid){
return bContentMapper.get(cid);
}
@Override
public List<ContentDO> list(Map<String, Object> map){
return bContentMapper.list(map);
}
@Override
public int count(Map<String, Object> map){
return bContentMapper.count(map);
}
@Override
public int save(ContentDO bContent){
return bContentMapper.save(bContent);
}
@Override
public int update(ContentDO bContent){
return bContentMapper.update(bContent);
}
@Override
public int remove(Long cid){
return bContentMapper.remove(cid);
}
@Override
public int batchRemove(Long[] cids){
return bContentMapper.batchRemove(cids);
}
}
package com.bootdo.common.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.lang.annotation.RetentionPolicy;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Log {
String value() default "";
}
package com.bootdo.common.aspect;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
import com.bootdo.common.service.LogService;
import com.bootdo.system.domain.UserToken;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import com.bootdo.common.annotation.Log;
import com.bootdo.common.dao.LogDao;
import com.bootdo.common.domain.LogDO;
import com.bootdo.common.utils.HttpContextUtils;
import com.bootdo.common.utils.IPUtils;
import com.bootdo.common.utils.JSONUtils;
import com.bootdo.common.utils.ShiroUtils;
import com.bootdo.system.domain.UserDO;
@Aspect
@Component
public class LogAspect {
private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);
@Autowired
LogService logService;
@Pointcut("@annotation(com.bootdo.common.annotation.Log)")
public void logPointCut() {
}
@Around("logPointCut()")
public Object around(ProceedingJoinPoint point) throws Throwable {
long beginTime = System.currentTimeMillis();
// 执行方法
Object result = point.proceed();
// 执行时长(毫秒)
long time = System.currentTimeMillis() - beginTime;
//异步保存日志
saveLog(point, time);
return result;
}
void saveLog(ProceedingJoinPoint joinPoint, long time) throws InterruptedException {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
LogDO sysLog = new LogDO();
Log syslog = method.getAnnotation(Log.class);
if (syslog != null) {
// 注解上的描述
sysLog.setOperation(syslog.value());
}
// 请求的方法名
String className = joinPoint.getTarget().getClass().getName();
String methodName = signature.getName();
sysLog.setMethod(className + "." + methodName + "()");
// 请求的参数
Object[] args = joinPoint.getArgs();
try {
String params = JSONUtils.beanToJson(args[0]).substring(0, 4999);
sysLog.setParams(params);
} catch (Exception e) {
}
// 获取request
HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
// 设置IP地址
sysLog.setIp(IPUtils.getIpAddr(request));
// 用户名
UserDO currUser = ShiroUtils.getUser();
if (null == currUser) {
if (null != sysLog.getParams()) {
sysLog.setUserId(-1L);
sysLog.setUsername(sysLog.getParams());
} else {
sysLog.setUserId(-1L);
sysLog.setUsername("获取用户信息为空");
}
} else {
sysLog.setUserId(ShiroUtils.getUserId());
sysLog.setUsername(ShiroUtils.getUser().getUsername());
}
sysLog.setTime((int) time);
// 系统当前时间
Date date = new Date();
sysLog.setGmtCreate(date);
// 保存系统日志
logService.save(sysLog);
}
}
package com.bootdo.common.aspect;
import com.bootdo.common.utils.HttpContextUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import sun.net.util.IPAddressUtil;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.Arrays;
@Aspect
@Component
public class WebLogAspect {
private static final Logger logger = LoggerFactory.getLogger(WebLogAspect.class);
@Pointcut("execution( * com.bootdo..controller.*.*(..))")//两个..代表所有子目录,最后括号里的两个..代表所有参数
public void logPointCut() {
}
@Before("logPointCut()")
public void doBefore(JoinPoint joinPoint) throws Throwable {
// 接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
// 记录下请求内容
logger.info("请求地址 : " + request.getRequestURL().toString());
logger.info("HTTP METHOD : " + request.getMethod());
// 获取真实的ip地址
//logger.info("IP : " + IPAddressUtil.getClientIpAddress(request));
logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "."
+ joinPoint.getSignature().getName());
logger.info("参数 : " + Arrays.toString(joinPoint.getArgs()));
// loggger.info("参数 : " + joinPoint.getArgs());
}
@AfterReturning(returning = "ret", pointcut = "logPointCut()")// returning的值和doAfterReturning的参数名一致
public void doAfterReturning(Object ret) throws Throwable {
// 处理完请求,返回内容(返回值太复杂时,打印的是物理存储空间的地址)
logger.debug("返回值 : " + ret);
}
@Around("logPointCut()")
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
long startTime = System.currentTimeMillis();
Object ob = pjp.proceed();// ob 为方法的返回值
logger.info("耗时 : " + (System.currentTimeMillis() - startTime));
return ob;
}
}
package com.bootdo.common.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
*
* @author chen
* @date 2017/9/4
* <p>
* Email 122741482@qq.com
* <p>
* Describe:
*/
@Component
public class ApplicationContextRegister implements ApplicationContextAware {
private static Logger logger = LoggerFactory.getLogger(ApplicationContextRegister.class);
private static ApplicationContext APPLICATION_CONTEXT;
/**
* 设置spring上下文
* @param applicationContext spring上下文
* @throws BeansException
* */
@Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
logger.debug("ApplicationContext registed-->{}", applicationContext);
APPLICATION_CONTEXT = applicationContext;
}
/**
* 获取容器
* @return
*/
public static ApplicationContext getApplicationContext() {
return APPLICATION_CONTEXT;
}
/**
* 获取容器对象
* @param type
* @param <T>
* @return
*/
public static <T> T getBean(Class<T> type) {
return APPLICATION_CONTEXT.getBean(type);
}
}
\ No newline at end of file
package com.bootdo.common.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix="bootdo")
public class BootdoConfig {
//上传路径
private String uploadPath;
public String getUploadPath() {
return uploadPath;
}
public void setUploadPath(String uploadPath) {
this.uploadPath = uploadPath;
}
}
package com.bootdo.common.config;
public class Constant {
//演示系统账户
public static String DEMO_ACCOUNT = "test";
//自动去除表前缀
public static String AUTO_REOMVE_PRE = "true";
//停止计划任务
public static String STATUS_RUNNING_STOP = "stop";
//开启计划任务
public static String STATUS_RUNNING_START = "start";
//通知公告阅读状态-未读
public static String OA_NOTIFY_READ_NO = "0";
//通知公告阅读状态-已读
public static int OA_NOTIFY_READ_YES = 1;
//部门根节点id
public static Long DEPT_ROOT_ID = 0l;
//缓存方式
public static String CACHE_TYPE_REDIS ="redis";
public static String LOG_ERROR = "error";
}
package com.bootdo.common.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.zip.DataFormatException;
/**
* @author gaoyuzhe
* @date 2017/12/14.
*/
@Configuration
public class DateConverConfig {
@Bean
public Converter<String, Date> stringDateConvert() {
return new Converter<String, Date>() {
@Override
public Date convert(String source) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = sdf.parse((String) source);
} catch (Exception e) {
SimpleDateFormat sdfday = new SimpleDateFormat("yyyy-MM-dd");
try {
date = sdfday.parse((String) source);
} catch (ParseException e1) {
e1.printStackTrace();
}
}
return date;
}
};
}
}
package com.bootdo.common.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
import java.sql.SQLException;
/**
* Created by PrimaryKey on 17/2/4.
*/
@SuppressWarnings("AlibabaRemoveCommentedCode")
@Configuration
public class DruidDBConfig {
private Logger logger = LoggerFactory.getLogger(DruidDBConfig.class);
@Value("${spring.datasource.url}")
private String dbUrl;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.driverClassName}")
private String driverClassName;
@Value("${spring.datasource.initialSize}")
private int initialSize;
@Value("${spring.datasource.minIdle}")
private int minIdle;
@Value("${spring.datasource.maxActive}")
private int maxActive;
@Value("${spring.datasource.maxWait}")
private int maxWait;
@Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
private int timeBetweenEvictionRunsMillis;
@Value("${spring.datasource.minEvictableIdleTimeMillis}")
private int minEvictableIdleTimeMillis;
@Value("${spring.datasource.validationQuery}")
private String validationQuery;
@Value("${spring.datasource.testWhileIdle}")
private boolean testWhileIdle;
@Value("${spring.datasource.testOnBorrow}")
private boolean testOnBorrow;
@Value("${spring.datasource.testOnReturn}")
private boolean testOnReturn;
@Value("${spring.datasource.poolPreparedStatements}")
private boolean poolPreparedStatements;
@Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")
private int maxPoolPreparedStatementPerConnectionSize;
@Value("${spring.datasource.filters}")
private String filters;
@Value("{spring.datasource.connectionProperties}")
private String connectionProperties;
@Bean(initMethod = "init", destroyMethod = "close") //声明其为Bean实例
@Primary //在同样的DataSource中,首先使用被标注的DataSource
public DataSource dataSource() {
DruidDataSource datasource = new DruidDataSource();
datasource.setUrl(this.dbUrl);
datasource.setUsername(username);
datasource.setPassword(password);
datasource.setDriverClassName(driverClassName);
//configuration
datasource.setInitialSize(initialSize);
datasource.setMinIdle(minIdle);
datasource.setMaxActive(maxActive);
datasource.setMaxWait(maxWait);
datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
datasource.setValidationQuery(validationQuery);
datasource.setTestWhileIdle(testWhileIdle);
datasource.setTestOnBorrow(testOnBorrow);
datasource.setTestOnReturn(testOnReturn);
datasource.setPoolPreparedStatements(poolPreparedStatements);
datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
try {
datasource.setFilters(filters);
} catch (SQLException e) {
logger.error("druid configuration initialization filter", e);
}
datasource.setConnectionProperties(connectionProperties);
return datasource;
}
@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean reg = new ServletRegistrationBean();
reg.setServlet(new StatViewServlet());
reg.addUrlMappings("/druid/*");
reg.addInitParameter("allow", ""); //白名单
return reg;
}
@Bean public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
filterRegistrationBean.addInitParameter("profileEnable", "true");
filterRegistrationBean.addInitParameter("principalCookieName","USER_COOKIE");
filterRegistrationBean.addInitParameter("principalSessionName","USER_SESSION");
filterRegistrationBean.addInitParameter("DruidWebStatFilter","/*");
return filterRegistrationBean;
}
}
package com.bootdo.common.config;
import java.io.IOException;
import java.util.Properties;
import org.quartz.Scheduler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import com.bootdo.common.quartz.factory.JobFactory;
@Configuration
public class QuartzConfigration {
@Autowired
JobFactory jobFactory;
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
try {
schedulerFactoryBean.setOverwriteExistingJobs(true);
schedulerFactoryBean.setQuartzProperties(quartzProperties());
schedulerFactoryBean.setJobFactory(jobFactory);
} catch (IOException e) {
e.printStackTrace();
}
return schedulerFactoryBean;
}
// 指定quartz.properties
@Bean
public Properties quartzProperties() throws IOException {
PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
propertiesFactoryBean.setLocation(new ClassPathResource("/config/quartz.properties"));
propertiesFactoryBean.afterPropertiesSet();
return propertiesFactoryBean.getObject();
}
// 创建schedule
@Bean(name = "scheduler")
public Scheduler scheduler() {
return schedulerFactoryBean().getScheduler();
}
}
package com.bootdo.common.config;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Configuration;
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
})
@Configuration
public class SecuityConfig {
}
package com.bootdo.common.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.AsyncTaskExecutor;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Configuration
@EnableAsync
public class SpringAsyncConfig {
// @Bean
// public AsyncTaskExecutor taskExecutor() {
// ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
// executor.setMaxPoolSize(10);
// return executor;
// }
}
\ No newline at end of file
//package com.bootdo.common.config;
//
//import com.bootdo.BootdoApplication;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.boot.builder.SpringApplicationBuilder;
//import org.springframework.boot.web.support.SpringBootServletInitializer;
//
///**
// * war包部署需要
// * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
// */
//public class SpringBootSampleApplication extends SpringBootServletInitializer{
//
// private static final Logger logger = LoggerFactory.getLogger(SpringBootSampleApplication.class);
//
// @Override
// protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// return builder.sources(this.getClass());
// }
//
//}
\ No newline at end of file
package com.bootdo.common.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Component
class WebConfigurer extends WebMvcConfigurerAdapter {
@Autowired
BootdoConfig bootdoConfig;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/files/**").addResourceLocations("file:///"+bootdoConfig.getUploadPath());
}
}
\ No newline at end of file
package com.bootdo.common.controller;
import com.bootdo.system.domain.UserToken;
import org.springframework.stereotype.Controller;
import com.bootdo.common.utils.ShiroUtils;
import com.bootdo.system.domain.UserDO;
@Controller
public class BaseController {
public UserDO getUser() {
return ShiroUtils.getUser();
}
public Long getUserId() {
return getUser().getUserId();
}
public String getUsername() {
return getUser().getUsername();
}
}
\ No newline at end of file
package com.bootdo.common.controller;
import com.bootdo.common.config.Constant;
import com.bootdo.common.domain.DictDO;
import com.bootdo.common.service.DictService;
import com.bootdo.common.utils.PageUtils;
import com.bootdo.common.utils.Query;
import com.bootdo.common.utils.R;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 字典表
* @author chglee
* @email 1992lcg@163.com
* @date 2017-09-29 18:28:07
*/
@Controller
@RequestMapping("/common/dict")
public class DictController extends BaseController {
@Autowired
private DictService dictService;
@GetMapping()
@RequiresPermissions("common:dict:dict")
String dict() {
return "common/dict/dict";
}
@ResponseBody
@GetMapping("/list")
@RequiresPermissions("common:dict:dict")
public PageUtils list(@RequestParam Map<String, Object> params) {
// 查询列表数据
Query query = new Query(params);
List<DictDO> dictList = dictService.list(query);
int total = dictService.count(query);
PageUtils pageUtils = new PageUtils(dictList, total);
return pageUtils;
}
@GetMapping("/add")
@RequiresPermissions("common:dict:add")
String add() {
return "common/dict/add";
}
@GetMapping("/edit/{id}")
@RequiresPermissions("common:dict:edit")
String edit(@PathVariable("id") Long id, Model model) {
DictDO dict = dictService.get(id);
model.addAttribute("dict", dict);
return "common/dict/edit";
}
/**
* 保存
*/
@ResponseBody
@PostMapping("/save")
@RequiresPermissions("common:dict:add")
public R save(DictDO dict) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
if (dictService.save(dict) > 0) {
return R.ok();
}
return R.error();
}
/**
* 修改
*/
@ResponseBody
@RequestMapping("/update")
@RequiresPermissions("common:dict:edit")
public R update(DictDO dict) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
dictService.update(dict);
return R.ok();
}
/**
* 删除
*/
@PostMapping("/remove")
@ResponseBody
@RequiresPermissions("common:dict:remove")
public R remove(Long id) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
if (dictService.remove(id) > 0) {
return R.ok();
}
return R.error();
}
/**
* 删除
*/
@PostMapping("/batchRemove")
@ResponseBody
@RequiresPermissions("common:dict:batchRemove")
public R remove(@RequestParam("ids[]") Long[] ids) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
dictService.batchRemove(ids);
return R.ok();
}
@GetMapping("/type")
@ResponseBody
public List<DictDO> listType() {
return dictService.listType();
};
// 类别已经指定增加
@GetMapping("/add/{type}/{description}")
@RequiresPermissions("common:dict:add")
String addD(Model model, @PathVariable("type") String type, @PathVariable("description") String description) {
model.addAttribute("type", type);
model.addAttribute("description", description);
return "common/dict/add";
}
@ResponseBody
@GetMapping("/list/{type}")
public List<DictDO> listByType(@PathVariable("type") String type) {
// 查询列表数据
Map<String, Object> map = new HashMap<>(16);
map.put("type", type);
List<DictDO> dictList = dictService.list(map);
return dictList;
}
}
package com.bootdo.common.controller;
import com.bootdo.common.config.BootdoConfig;
import com.bootdo.common.domain.FileDO;
import com.bootdo.common.service.FileService;
import com.bootdo.common.utils.*;
import javax.servlet.http.HttpServletRequest;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 文件上传
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-09-19 16:02:20
*/
@Controller
@RequestMapping("/common/sysFile")
public class FileController extends BaseController {
@Autowired
private FileService sysFileService;
@Autowired
private BootdoConfig bootdoConfig;
@GetMapping()
@RequiresPermissions("common:sysFile:sysFile")
String sysFile(Model model) {
Map<String, Object> params = new HashMap<>(16);
return "common/file/file";
}
@ResponseBody
@GetMapping("/list")
@RequiresPermissions("common:sysFile:sysFile")
public PageUtils list(@RequestParam Map<String, Object> params) {
// 查询列表数据
Query query = new Query(params);
List<FileDO> sysFileList = sysFileService.list(query);
int total = sysFileService.count(query);
PageUtils pageUtils = new PageUtils(sysFileList, total);
return pageUtils;
}
@GetMapping("/add")
// @RequiresPermissions("common:bComments")
String add() {
return "common/sysFile/add";
}
@GetMapping("/edit")
// @RequiresPermissions("common:bComments")
String edit(Long id, Model model) {
FileDO sysFile = sysFileService.get(id);
model.addAttribute("sysFile", sysFile);
return "common/sysFile/edit";
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
@RequiresPermissions("common:info")
public R info(@PathVariable("id") Long id) {
FileDO sysFile = sysFileService.get(id);
return R.ok().put("sysFile", sysFile);
}
/**
* 保存
*/
@ResponseBody
@PostMapping("/save")
@RequiresPermissions("common:save")
public R save(FileDO sysFile) {
if (sysFileService.save(sysFile) > 0) {
return R.ok();
}
return R.error();
}
/**
* 修改
*/
@RequestMapping("/update")
@RequiresPermissions("common:update")
public R update(@RequestBody FileDO sysFile) {
sysFileService.update(sysFile);
return R.ok();
}
/**
* 删除
*/
@PostMapping("/remove")
@ResponseBody
// @RequiresPermissions("common:remove")
public R remove(Long id, HttpServletRequest request) {
if ("test".equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
String fileName = bootdoConfig.getUploadPath() + sysFileService.get(id).getUrl().replace("/files/", "");
if (sysFileService.remove(id) > 0) {
boolean b = FileUtil.deleteFile(fileName);
if (!b) {
return R.error("数据库记录删除成功,文件删除失败");
}
return R.ok();
} else {
return R.error();
}
}
/**
* 删除
*/
@PostMapping("/batchRemove")
@ResponseBody
@RequiresPermissions("common:remove")
public R remove(@RequestParam("ids[]") Long[] ids) {
if ("test".equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
sysFileService.batchRemove(ids);
return R.ok();
}
@ResponseBody
@PostMapping("/upload")
R upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
if ("test".equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
String fileName = file.getOriginalFilename();
fileName = FileUtil.renameToUUID(fileName);
FileDO sysFile = new FileDO(FileType.fileType(fileName), "/files/" + fileName, new Date());
try {
FileUtil.uploadFile(file.getBytes(), bootdoConfig.getUploadPath(), fileName);
} catch (Exception e) {
return R.error();
}
if (sysFileService.save(sysFile) > 0) {
return R.ok().put("fileName",sysFile.getUrl());
}
return R.error();
}
}
package com.bootdo.common.controller;
import com.alibaba.fastjson.JSON;
import com.bootdo.common.service.GeneratorService;
import com.bootdo.common.utils.GenUtils;
import com.bootdo.common.utils.R;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RequestMapping("/common/generator")
@Controller
public class GeneratorController {
String prefix = "common/generator";
@Autowired
GeneratorService generatorService;
@GetMapping()
String generator() {
return prefix + "/list";
}
@ResponseBody
@GetMapping("/list")
List<Map<String, Object>> list() {
List<Map<String, Object>> list = generatorService.list();
return list;
};
@RequestMapping("/code/{tableName}")
public void code(HttpServletRequest request, HttpServletResponse response,
@PathVariable("tableName") String tableName) throws IOException {
String[] tableNames = new String[] { tableName };
byte[] data = generatorService.generatorCode(tableNames);
response.reset();
response.setHeader("Content-Disposition", "attachment; filename=\"bootdo.zip\"");
response.addHeader("Content-Length", "" + data.length);
response.setContentType("application/octet-stream; charset=UTF-8");
IOUtils.write(data, response.getOutputStream());
}
@RequestMapping("/batchCode")
public void batchCode(HttpServletRequest request, HttpServletResponse response, String tables) throws IOException {
String[] tableNames = new String[] {};
tableNames = JSON.parseArray(tables).toArray(tableNames);
byte[] data = generatorService.generatorCode(tableNames);
response.reset();
response.setHeader("Content-Disposition", "attachment; filename=\"bootdo.zip\"");
response.addHeader("Content-Length", "" + data.length);
response.setContentType("application/octet-stream; charset=UTF-8");
IOUtils.write(data, response.getOutputStream());
}
@GetMapping("/edit")
public String edit(Model model) {
Configuration conf = GenUtils.getConfig();
Map<String, Object> property = new HashMap<>(16);
property.put("author", conf.getProperty("author"));
property.put("email", conf.getProperty("email"));
property.put("package", conf.getProperty("package"));
property.put("autoRemovePre", conf.getProperty("autoRemovePre"));
property.put("tablePrefix", conf.getProperty("tablePrefix"));
model.addAttribute("property", property);
return prefix + "/edit";
}
@ResponseBody
@PostMapping("/update")
R update(@RequestParam Map<String, Object> map) {
try {
PropertiesConfiguration conf = new PropertiesConfiguration("generator.properties");
conf.setProperty("author", map.get("author"));
conf.setProperty("email", map.get("email"));
conf.setProperty("package", map.get("package"));
conf.setProperty("autoRemovePre", map.get("autoRemovePre"));
conf.setProperty("tablePrefix", map.get("tablePrefix"));
conf.save();
} catch (ConfigurationException e) {
return R.error("保存配置文件出错");
}
return R.ok();
}
}
package com.bootdo.common.controller;
import com.bootdo.common.config.Constant;
import com.bootdo.common.domain.TaskDO;
import com.bootdo.common.service.JobService;
import com.bootdo.common.utils.PageUtils;
import com.bootdo.common.utils.Query;
import com.bootdo.common.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-09-26 20:53:48
*/
@Controller
@RequestMapping("/common/job")
public class JobController extends BaseController{
@Autowired
private JobService taskScheduleJobService;
@GetMapping()
String taskScheduleJob() {
return "common/job/job";
}
@ResponseBody
@GetMapping("/list")
public PageUtils list(@RequestParam Map<String, Object> params) {
// 查询列表数据
Query query = new Query(params);
List<TaskDO> taskScheduleJobList = taskScheduleJobService.list(query);
int total = taskScheduleJobService.count(query);
PageUtils pageUtils = new PageUtils(taskScheduleJobList, total);
return pageUtils;
}
@GetMapping("/add")
String add() {
return "common/job/add";
}
@GetMapping("/edit/{id}")
String edit(@PathVariable("id") Long id, Model model) {
TaskDO job = taskScheduleJobService.get(id);
model.addAttribute("job", job);
return "common/job/edit";
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id) {
TaskDO taskScheduleJob = taskScheduleJobService.get(id);
return R.ok().put("taskScheduleJob", taskScheduleJob);
}
/**
* 保存
*/
@ResponseBody
@PostMapping("/save")
public R save(TaskDO taskScheduleJob) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
if (taskScheduleJobService.save(taskScheduleJob) > 0) {
return R.ok();
}
return R.error();
}
/**
* 修改
*/
@ResponseBody
@PostMapping("/update")
public R update(TaskDO taskScheduleJob) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
taskScheduleJobService.update(taskScheduleJob);
return R.ok();
}
/**
* 删除
*/
@PostMapping("/remove")
@ResponseBody
public R remove(Long id) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
if (taskScheduleJobService.remove(id) > 0) {
return R.ok();
}
return R.error();
}
/**
* 删除
*/
@PostMapping("/batchRemove")
@ResponseBody
public R remove(@RequestParam("ids[]") Long[] ids) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
taskScheduleJobService.batchRemove(ids);
return R.ok();
}
@PostMapping(value = "/changeJobStatus")
@ResponseBody
public R changeJobStatus(Long id,String cmd ) {
if (Constant.DEMO_ACCOUNT.equals(getUsername())) {
return R.error(1, "演示系统不允许修改,完整体验请部署程序");
}
String label = "停止";
if ("start".equals(cmd)) {
label = "启动";
} else {
label = "停止";
}
try {
taskScheduleJobService.changeStatus(id, cmd);
return R.ok("任务" + label + "成功");
} catch (Exception e) {
e.printStackTrace();
}
return R.ok("任务" + label + "失败");
}
}
package com.bootdo.common.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.aspectj.weaver.tools.cache.AsynchronousFileCacheBacking.RemoveCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.bootdo.common.domain.LogDO;
import com.bootdo.common.domain.PageDO;
import com.bootdo.common.service.LogService;
import com.bootdo.common.utils.Query;
import com.bootdo.common.utils.R;
@RequestMapping("/common/log")
@Controller
public class LogController {
@Autowired
LogService logService;
String prefix = "common/log";
@GetMapping()
String log() {
return prefix + "/log";
}
@ResponseBody
@GetMapping("/list")
PageDO<LogDO> list(@RequestParam Map<String, Object> params) {
Query query = new Query(params);
PageDO<LogDO> page = logService.queryList(query);
return page;
}
@ResponseBody
@PostMapping("/remove")
R remove(Long id) {
if (logService.remove(id)>0) {
return R.ok();
}
return R.error();
}
@ResponseBody
@PostMapping("/batchRemove")
R batchRemove(@RequestParam("ids[]") Long[] ids) {
int r = logService.batchRemove(ids);
if (r > 0) {
return R.ok();
}
return R.error();
}
}
package com.bootdo.common.dao;
import com.bootdo.common.domain.DictDO;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
/**
* 字典表
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-10-03 15:45:42
*/
@Mapper
public interface DictDao {
DictDO get(Long id);
List<DictDO> list(Map<String, Object> map);
int count(Map<String, Object> map);
int save(DictDO dict);
int update(DictDO dict);
int remove(Long id);
int batchRemove(Long[] ids);
List<DictDO> listType();
}
package com.bootdo.common.dao;
import com.bootdo.common.domain.FileDO;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
/**
* 文件上传
* @author chglee
* @email 1992lcg@163.com
* @date 2017-10-03 15:45:42
*/
@Mapper
public interface FileDao {
FileDO get(Long id);
List<FileDO> list(Map<String,Object> map);
int count(Map<String,Object> map);
int save(FileDO file);
int update(FileDO file);
int remove(Long id);
int batchRemove(Long[] ids);
}
package com.bootdo.common.dao;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Select;
public interface GeneratorMapper {
@Select("select table_name tableName, engine, table_comment tableComment, create_time createTime from information_schema.tables"
+ " where table_schema = (select database())")
List<Map<String, Object>> list();
@Select("select count(*) from information_schema.tables where table_schema = (select database())")
int count(Map<String, Object> map);
@Select("select table_name tableName, engine, table_comment tableComment, create_time createTime from information_schema.tables \r\n"
+ " where table_schema = (select database()) and table_name = #{tableName}")
Map<String, String> get(String tableName);
@Select("select column_name columnName, data_type dataType, column_comment columnComment, column_key columnKey, extra from information_schema.columns\r\n"
+ " where table_name = #{tableName} and table_schema = (select database()) order by ordinal_position")
List<Map<String, String>> listColumns(String tableName);
}
package com.bootdo.common.dao;
import com.bootdo.common.domain.LogDO;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
/**
* 系统日志
* @author chglee
* @email 1992lcg@163.com
* @date 2017-10-03 15:45:42
*/
@Mapper
public interface LogDao {
LogDO get(Long id);
List<LogDO> list(Map<String,Object> map);
int count(Map<String,Object> map);
int save(LogDO log);
int update(LogDO log);
int remove(Long id);
int batchRemove(Long[] ids);
}
package com.bootdo.common.dao;
import com.bootdo.common.domain.TaskDO;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Mapper;
/**
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-10-03 15:45:42
*/
@Mapper
public interface TaskDao {
TaskDO get(Long id);
List<TaskDO> list(Map<String,Object> map);
int count(Map<String,Object> map);
int save(TaskDO task);
int update(TaskDO task);
int remove(Long id);
int batchRemove(Long[] ids);
}
package com.bootdo.common.domain;
/**
* 列的属性
*
*
*/
public class ColumnDO {
// 列名
private String columnName;
// 列名类型
private String dataType;
// 列名备注
private String comments;
// 属性名称(第一个字母大写),如:user_name => UserName
private String attrName;
// 属性名称(第一个字母小写),如:user_name => userName
private String attrname;
// 属性类型
private String attrType;
// auto_increment
private String extra;
public String getColumnName() {
return columnName;
}
public void setColumnName(String columnName) {
this.columnName = columnName;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getComments() {
return comments;
}
public void setComments(String comments) {
this.comments = comments;
}
public String getAttrname() {
return attrname;
}
public void setAttrname(String attrname) {
this.attrname = attrname;
}
public String getAttrName() {
return attrName;
}
public void setAttrName(String attrName) {
this.attrName = attrName;
}
public String getAttrType() {
return attrType;
}
public void setAttrType(String attrType) {
this.attrType = attrType;
}
public String getExtra() {
return extra;
}
public void setExtra(String extra) {
this.extra = extra;
}
@Override
public String toString() {
return "ColumnDO{" +
"columnName='" + columnName + '\'' +
", dataType='" + dataType + '\'' +
", comments='" + comments + '\'' +
", attrName='" + attrName + '\'' +
", attrname='" + attrname + '\'' +
", attrType='" + attrType + '\'' +
", extra='" + extra + '\'' +
'}';
}
}
package com.bootdo.common.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 字典表
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-09-29 18:28:07
*/
public class DictDO implements Serializable {
private static final long serialVersionUID = 1L;
//编号
private Long id;
//标签名
private String name;
//数据值
private String value;
//类型
private String type;
//描述
private String description;
//排序(升序)
private BigDecimal sort;
//父级编号
private Long parentId;
//创建者
private Integer createBy;
//创建时间
private Date createDate;
//更新者
private Long updateBy;
//更新时间
private Date updateDate;
//备注信息
private String remarks;
//删除标记
private String delFlag;
/**
* 设置:编号
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取:编号
*/
public Long getId() {
return id;
}
/**
* 设置:标签名
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取:标签名
*/
public String getName() {
return name;
}
/**
* 设置:数据值
*/
public void setValue(String value) {
this.value = value;
}
/**
* 获取:数据值
*/
public String getValue() {
return value;
}
/**
* 设置:类型
*/
public void setType(String type) {
this.type = type;
}
/**
* 获取:类型
*/
public String getType() {
return type;
}
/**
* 设置:描述
*/
public void setDescription(String description) {
this.description = description;
}
/**
* 获取:描述
*/
public String getDescription() {
return description;
}
/**
* 设置:排序(升序)
*/
public void setSort(BigDecimal sort) {
this.sort = sort;
}
/**
* 获取:排序(升序)
*/
public BigDecimal getSort() {
return sort;
}
/**
* 设置:父级编号
*/
public void setParentId(Long parentId) {
this.parentId = parentId;
}
/**
* 获取:父级编号
*/
public Long getParentId() {
return parentId;
}
/**
* 设置:创建者
*/
public void setCreateBy(Integer createBy) {
this.createBy = createBy;
}
/**
* 获取:创建者
*/
public Integer getCreateBy() {
return createBy;
}
/**
* 设置:创建时间
*/
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
/**
* 获取:创建时间
*/
public Date getCreateDate() {
return createDate;
}
/**
* 设置:更新者
*/
public void setUpdateBy(Long updateBy) {
this.updateBy = updateBy;
}
/**
* 获取:更新者
*/
public Long getUpdateBy() {
return updateBy;
}
/**
* 设置:更新时间
*/
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
/**
* 获取:更新时间
*/
public Date getUpdateDate() {
return updateDate;
}
/**
* 设置:备注信息
*/
public void setRemarks(String remarks) {
this.remarks = remarks;
}
/**
* 获取:备注信息
*/
public String getRemarks() {
return remarks;
}
/**
* 设置:删除标记
*/
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
/**
* 获取:删除标记
*/
public String getDelFlag() {
return delFlag;
}
@Override
public String toString() {
return "DictDO{" +
"id=" + id +
", name='" + name + '\'' +
", value='" + value + '\'' +
", type='" + type + '\'' +
", description='" + description + '\'' +
", sort=" + sort +
", parentId=" + parentId +
", createBy=" + createBy +
", createDate=" + createDate +
", updateBy=" + updateBy +
", updateDate=" + updateDate +
", remarks='" + remarks + '\'' +
", delFlag='" + delFlag + '\'' +
'}';
}
}
package com.bootdo.common.domain;
import java.io.Serializable;
import java.util.Date;
/**
* 文件上传
*
* @author chglee
* @email 1992lcg@163.com
* @date 2017-09-19 16:02:20
*/
public class FileDO implements Serializable {
private static final long serialVersionUID = 1L;
//
private Long id;
// 文件类型
private Integer type;
// URL地址
private String url;
// 创建时间
private Date createDate;
public FileDO() {
super();
}
public FileDO(Integer type, String url, Date createDate) {
super();
this.type = type;
this.url = url;
this.createDate = createDate;
}
/**
* 设置:
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取:
*/
public Long getId() {
return id;
}
/**
* 设置:文件类型
*/
public void setType(Integer type) {
this.type = type;
}
/**
* 获取:文件类型
*/
public Integer getType() {
return type;
}
/**
* 设置:URL地址
*/
public void setUrl(String url) {
this.url = url;
}
/**
* 获取:URL地址
*/
public String getUrl() {
return url;
}
/**
* 设置:创建时间
*/
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
/**
* 获取:创建时间
*/
public Date getCreateDate() {
return createDate;
}
@Override
public String toString() {
return "FileDO{" +
"id=" + id +
", type=" + type +
", url='" + url + '\'' +
", createDate=" + createDate +
'}';
}
}
package com.bootdo.common.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class LogDO {
private Long id;
private Long userId;
private String username;
private String operation;
private Integer time;
private String method;
private String params;
private String ip;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date gmtCreate;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username == null ? null : username.trim();
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation == null ? null : operation.trim();
}
public Integer getTime() {
return time;
}
public void setTime(Integer time) {
this.time = time;
}
public String getMethod() {
return method;
}
public void setMethod(String method) {
this.method = method == null ? null : method.trim();
}
public String getParams() {
return params;
}
public void setParams(String params) {
this.params = params == null ? null : params.trim();
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip == null ? null : ip.trim();
}
public Date getGmtCreate() {
return gmtCreate;
}
public void setGmtCreate(Date gmtCreate) {
this.gmtCreate = gmtCreate;
}
@Override
public String toString() {
return "LogDO{" +
"id=" + id +
", userId=" + userId +
", username='" + username + '\'' +
", operation='" + operation + '\'' +
", time=" + time +
", method='" + method + '\'' +
", params='" + params + '\'' +
", ip='" + ip + '\'' +
", gmtCreate=" + gmtCreate +
'}';
}
}
\ No newline at end of file
package com.bootdo.common.domain;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PageDO<T> {
private int offset;
private int limit;
private int total;
private Map<String, Object> params;
private String param;
private List<T> rows;
public PageDO() {
super();
this.offset = 0;
this.limit = 10;
this.total = 1;
this.params = new HashMap<>();
this.param = "";
this.rows = new ArrayList<>();
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public int getLimit() {
return limit;
}
public void setLimit(int limit) {
this.limit = limit;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public Map<String, Object> getParams() {
return params;
}
public void setParams(Map<String, Object> params) {
this.params = params;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
public String getParam() {
return param;
}
public void setParam(String param) {
this.param = param;
}
@Override
public String toString() {
return "PageDO{" +
"offset=" + offset +
", limit=" + limit +
", total=" + total +
", params=" + params +
", param='" + param + '\'' +
", rows=" + rows +
'}';
}
}
package com.bootdo.common.domain;
import java.io.Serializable;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
@SuppressWarnings("serial")
public class ScheduleJob implements Serializable ,Job {
public static final String STATUS_RUNNING = "1";
public static final String STATUS_NOT_RUNNING = "0";
public static final String CONCURRENT_IS = "1";
public static final String CONCURRENT_NOT = "0";
/**
* 任务名称
*/
private String jobName;
/**
* 任务分组
*/
private String jobGroup;
/**
* 任务状态 是否启动任务
*/
private String jobStatus;
/**
* cron表达式
*/
private String cronExpression;
/**
* 描述
*/
private String description;
/**
* 任务执行时调用哪个类的方法 包名+类名
*/
private String beanClass;
/**
* 任务是否有状态
*/
private String isConcurrent;
/**
* Spring bean
*/
private String springBean;
/**
* 任务调用的方法名
*/
private String methodName;
public String getJobName() {
return jobName;
}
public void setJobName(String jobName) {
this.jobName = jobName;
}
public String getJobGroup() {
return jobGroup;
}
public void setJobGroup(String jobGroup) {
this.jobGroup = jobGroup;
}
public String getJobStatus() {
return jobStatus;
}
public void setJobStatus(String jobStatus) {
this.jobStatus = jobStatus;
}
public String getCronExpression() {
return cronExpression;
}
public void setCronExpression(String cronExpression) {
this.cronExpression = cronExpression;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getBeanClass() {
return beanClass;
}
public void setBeanClass(String beanClass) {
this.beanClass = beanClass;
}
public String getIsConcurrent() {
return isConcurrent;
}
public void setIsConcurrent(String isConcurrent) {
this.isConcurrent = isConcurrent;
}
public String getMethodName() {
return methodName;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public String getSpringBean() {
return springBean;
}
public void setSpringBean(String springBean) {
this.springBean = springBean;
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// TODO Auto-generated method stub
}
}
\ No newline at end of file
package com.bootdo.common.domain;
import java.util.List;
/**
* 表数据
*
* @author chenshun
* @email sunlightcs@gmail.com
* @date 2016年12月20日 上午12:02:55
*/
public class TableDO {
//表的名称
private String tableName;
//表的备注
private String comments;
//表的主键
private ColumnDO pk;
//表的列名(不包含主键)
private List<ColumnDO> columns;
//类名(第一个字母大写),如:sys_user => SysUser
private String className;
//类名(第一个字母小写),如:sys_user => sysUser
private String classname;
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getComments() {
return comments;
}
public void setComments(String comments) {
this.comments = comments;
}
public ColumnDO getPk() {
return pk;
}
public void setPk(ColumnDO pk) {
this.pk = pk;
}
public List<ColumnDO> getColumns() {
return columns;
}
public void setColumns(List<ColumnDO> columns) {
this.columns = columns;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
@Override
public String toString() {
return "TableDO{" +
"tableName='" + tableName + '\'' +
", comments='" + comments + '\'' +
", pk=" + pk +
", columns=" + columns +
", className='" + className + '\'' +
", classname='" + classname + '\'' +
'}';
}
}
package com.bootdo.common.domain;
import java.io.Serializable;
import java.util.Date;
/**
* @author chglee
* @email 1992lcg@163.com
* @date 2017-09-25 15:09:21
*/
public class TaskDO implements Serializable {
private static final long serialVersionUID = 1L;
//
private Long id;
// cron表达式
private String cronExpression;
// 任务调用的方法名
private String methodName;
// 任务是否有状态
private String isConcurrent;
// 任务描述
private String description;
// 更新者
private String updateBy;
// 任务执行时调用哪个类的方法 包名+类名
private String beanClass;
// 创建时间
private Date createDate;
// 任务状态
private String jobStatus;
// 任务分组
private String jobGroup;
// 更新时间
private Date updateDate;
// 创建者
private String createBy;
// Spring bean
private String springBean;
// 任务名
private String jobName;
/**
* 设置:
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取:
*/
public Long getId() {
return id;
}
/**
* 设置:cron表达式
*/
public void setCronExpression(String cronExpression) {
this.cronExpression = cronExpression;
}
/**
* 获取:cron表达式
*/
public String getCronExpression() {
return cronExpression;
}
/**
* 设置:任务调用的方法名
*/
public void setMethodName(String methodName) {
this.methodName = methodName;
}
/**
* 获取:任务调用的方法名
*/
public String getMethodName() {
return methodName;
}
/**
* 设置:任务是否有状态
*/
public void setIsConcurrent(String isConcurrent) {
this.isConcurrent = isConcurrent;
}
/**
* 获取:任务是否有状态
*/
public String getIsConcurrent() {
return isConcurrent;
}
/**
* 设置:任务描述
*/
public void setDescription(String description) {
this.description = description;
}
/**
* 获取:任务描述
*/
public String getDescription() {
return description;
}
/**
* 设置:更新者
*/
public void setUpdateBy(String updateBy) {
this.updateBy = updateBy;
}
/**
* 获取:更新者
*/
public String getUpdateBy() {
return updateBy;
}
/**
* 设置:任务执行时调用哪个类的方法 包名+类名
*/
public void setBeanClass(String beanClass) {
this.beanClass = beanClass;
}
/**
* 获取:任务执行时调用哪个类的方法 包名+类名
*/
public String getBeanClass() {
return beanClass;
}
/**
* 设置:创建时间
*/
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
/**
* 获取:创建时间
*/
public Date getCreateDate() {
return createDate;
}
/**
* 设置:任务状态
*/
public void setJobStatus(String jobStatus) {
this.jobStatus = jobStatus;
}
/**
* 获取:任务状态
*/
public String getJobStatus() {
return jobStatus;
}
/**
* 设置:任务分组
*/
public void setJobGroup(String jobGroup) {
this.jobGroup = jobGroup;
}
/**
* 获取:任务分组
*/
public String getJobGroup() {
return jobGroup;
}
/**
* 设置:更新时间
*/
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
/**
* 获取:更新时间
*/
public Date getUpdateDate() {
return updateDate;
}
/**
* 设置:创建者
*/
public void setCreateBy(String createBy) {
this.createBy = createBy;
}
/**
* 获取:创建者
*/
public String getCreateBy() {
return createBy;
}
/**
* 设置:Spring bean
*/
public void setSpringBean(String springBean) {
this.springBean = springBean;
}
/**
* 获取:Spring bean
*/
public String getSpringBean() {
return springBean;
}
/**
* 设置:任务名
*/
public void setJobName(String jobName) {
this.jobName = jobName;
}
/**
* 获取:任务名
*/
public String getJobName() {
return jobName;
}
@Override
public String toString() {
return "TaskDO{" +
"id=" + id +
", cronExpression='" + cronExpression + '\'' +
", methodName='" + methodName + '\'' +
", isConcurrent='" + isConcurrent + '\'' +
", description='" + description + '\'' +
", updateBy='" + updateBy + '\'' +
", beanClass='" + beanClass + '\'' +
", createDate=" + createDate +
", jobStatus='" + jobStatus + '\'' +
", jobGroup='" + jobGroup + '\'' +
", updateDate=" + updateDate +
", createBy='" + createBy + '\'' +
", springBean='" + springBean + '\'' +
", jobName='" + jobName + '\'' +
'}';
}
}
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
No preview for this file type
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
No preview for this file type
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
No preview for this file type
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
No preview for this file type
No preview for this file type
No preview for this file type
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!