Commit 0a713015 authored by 刘可心's avatar 刘可心

迁移帮助中心

parent 998051f2
......@@ -101,6 +101,7 @@ public class MainConfig extends JFinalConfig {
me.add("/sn", SnController.class);
me.add("/medium", MediumController.class);
me.add("/appConfig", AppConfigController.class);
me.add("/helper", HelperController.class);
}
// 先加载开发环境配置,再追加生产环境的少量配置覆盖掉开发环境配置
......
package com.archser.aserver.controller;
import java.io.File;
import java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import com.archser.aserver.interceptor.JwtInterceptor;
import com.archser.aserver.model.Helper;
import com.archser.aserver.model.Menu;
import com.archser.aserver.service.HelperService;
import com.archser.aserver.service.LogService;
import com.archser.aserver.util.DownLoadFileUtil;
import com.jfinal.aop.Inject;
import com.jfinal.core.Controller;
import com.jfinal.kit.Kv;
import com.jfinal.kit.Ret;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.upload.UploadFile;
import dm.jdbc.a.d;
/**
* 帮助中心
*/
public class HelperController extends Controller {
@Inject
private HelperService helperService;
@Inject
private LogService logService;
public void getList(){
String username = getAttr("username");
try {
Integer pageNumber = getParaToInt("pageNumber",1);
Integer pageSize = getParaToInt("pageSize",20);
String searchText = getPara("searchText","");
Page<Helper> list = helperService.getList(pageNumber, pageSize,searchText);
renderJson(Ret.ok("list",list));
logService.saveAsLog("access", username, JwtInterceptor.getIpAddr(getRequest()), "应用管理-帮助中心-帮助中心","aserver");
} catch (Exception e) {
e.printStackTrace();
logService.saveAsLogByFile("error",username,"应用管理-帮助中心-获取帮助中心数据错误",null,e.getMessage(),JwtInterceptor.getIpAddr(getRequest()));
renderJson(Ret.fail("message","服务器出现异常,请联系管理员!"));
}
}
public void add(){
String username = getAttr("username");
try {
UploadFile file = getFile("file");
String name = getPara("name");
String description = getPara("description");
Integer type = getParaToInt("type");
if (helperService.add(file, name, description, type)){
logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()), "应用管理-帮助中心-添加帮助中心数据成功","aserver");
renderJson(Ret.ok("data", "添加成功!"));
return;
}
logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()), "应用管理-帮助中心-添加帮助中心数据失败","aserver");
renderJson(Ret.ok("data", "添加失败!"));
} catch (Exception e) {
e.printStackTrace();
logService.saveAsLogByFile("error",username,"应用管理-帮助中心-添加帮助中心数据错误",null,e.getMessage(),JwtInterceptor.getIpAddr(getRequest()));
renderJson(Ret.fail("msg","服务器出现异常,请联系管理员!"));
}
}
public void edit(){
String username = getAttr("username");
try {
Integer id = getParaToInt("id");
String name = getPara("name");
String description = getPara("description");
Integer type = getParaToInt("type");
if (helperService.edit(id, name, description, type)){
logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()), "应用管理-帮助中心-修改帮助中心数据成功","aserver");
renderJson(Ret.ok("msg", "修改成功"));
} else {
logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()), "应用管理-帮助中心-修改帮助中心数据失败","aserver");
renderJson(Ret.fail("msg","修改失败!"));
}
} catch (Exception e) {
e.printStackTrace();
logService.saveAsLogByFile("error",username,"应用管理-帮助中心-修改帮助中心数据错误",null,e.getMessage(),JwtInterceptor.getIpAddr(getRequest()));
renderJson(Ret.fail("msg","服务器出现异常,请联系管理员!"));
}
}
public void remove(){
String username = getAttr("username");
try {
String ids = getPara("ids");
if ( helperService.remove(ids)){
logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()), "应用管理-帮助中心-删除帮助中心数据成功","aserver");
renderJson(Ret.ok("msg", "删除成功!"));
} else {
logService.saveAsLog("operate", username, JwtInterceptor.getIpAddr(getRequest()), "应用管理-帮助中心-删除帮助中心数据失败","aserver");
renderJson(Ret.fail("msg","删除失败!"));
}
} catch (Exception e) {
e.printStackTrace();
logService.saveAsLogByFile("error",username,"应用管理-帮助中心-删除帮助中心数据错误",null,e.getMessage(),JwtInterceptor.getIpAddr(getRequest()));
renderJson(Ret.fail("msg","服务器出现异常,请联系管理员!"));
}
}
/**
* LiuKexin 20201120 下载操作手册
*/
public void downloadOperation() {
try {
Integer id = getParaToInt("id");
//文件是否存在
Ret downloadOperation = helperService.downloadOperation(id,getResponse());
if (downloadOperation.isOk()) {
Kv pathKv = (Kv) downloadOperation.get("msg");
/**LiuKexin 20210122 处理文件名 start */
String userAgent = getRequest().getHeader("user-agent").toLowerCase();
String fileName = pathKv.getStr("name");
if (userAgent.contains("msie") || userAgent.contains("like gecko") ) {
// win10 ie edge 浏览器 和其他系统的ie
fileName = URLEncoder.encode(fileName, "UTF-8");
} else {
// 非ie
fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
}
/**LiuKexin 20210122 处理文件名 end */
//下载文件
DownLoadFileUtil.downLoadFile(getResponse(), fileName, pathKv.getStr("path"), true);
renderJson(Ret.ok("msg", "下载成功"));
} else {
renderJson(downloadOperation);
}
} catch (Exception e) {
e.printStackTrace();
renderJson(Ret.fail("msg","服务器出现异常,请联系管理员!"));
}
}
}
package com.archser.aserver.model;
import com.archser.aserver.model.base.BaseHelper;
/**
* Generated by JFinal.
*/
@SuppressWarnings("serial")
public class Helper extends BaseHelper<Helper> {
public static final Helper dao = new Helper().dao();
public static final String SEQ_NEXTVAL = "SEQ_LOG.nextval";
}
......@@ -25,6 +25,7 @@ public class _MappingKit {
arp.addMapping("AS_ORGAN", "ID", Organ.class);
arp.addMapping("AS_SYSTEM", "ID", System.class);
arp.addMapping("AS_USER", "ID", User.class);
arp.addMapping("AS_HELPER", "ID", Helper.class);
}
}
package com.archser.aserver.model.base;
import com.jfinal.plugin.activerecord.IBean;
import com.jfinal.plugin.activerecord.Model;
@SuppressWarnings({"serial", "unchecked"})
public abstract class BaseHelper<M extends BaseHelper<M>> extends Model<M> implements IBean {
public M setId(java.lang.Integer id) {
set("ID", id);
return (M)this;
}
public java.lang.Integer getId() {
return getInt("ID");
}
public M setName(java.lang.String name) {
set("NAME", name);
return (M)this;
}
public java.lang.String getName() {
return getStr("NAME");
}
public M setDescription(java.lang.String description) {
set("DESCRIPTION", description);
return (M)this;
}
public java.lang.String getPath() {
return get("PATH");
}
public M setPath(java.lang.String path) {
set("PATH", path);
return (M)this;
}
public java.lang.Integer getType() {
return getInt("TYPE");
}
public M setType(java.lang.Integer type) {
set("TYPE", type);
return (M)this;
}
}
package com.archser.aserver.service;
import com.archser.aserver.model.Helper;
import com.archser.aserver.util.DownLoadFileUtil;
import com.jfinal.kit.Kv;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.Ret;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.upload.UploadFile;
import java.io.File;
import java.util.List;
import java.util.UUID;
import javax.servlet.http.HttpServletResponse;
public class HelperService {
public Page<Helper> getList(int pageNumber, int pageSize,String searchText) {
String type = "";
if (searchText.equals("") || searchText == null) {
System.err.println(Db.getSql("getHelperList"));
return Helper.dao.paginate(pageNumber, pageSize, Db.getSqlPara("getHelperList"));
}
if("标准规范".contains(searchText)) {
type = "0";
} else if("使用手册".contains(searchText)) {
type = "1";
}
searchText = type.equals("")?"": "name like '%"+searchText+"%' or type = '"+type+"' or description like '%"+searchText+"%'";
Page<Helper> page = Helper.dao.paginate(pageNumber, pageSize, Db.getSqlPara("getHelperList",Kv.by("searchText",searchText)));
return page;
}
public boolean add(UploadFile file, String name, String description, Integer type) {
File template = file.getFile();
String formerName = template.getName();
int i = template.getName().lastIndexOf(".");
String ext = formerName.substring(i);
String fileName = File.separator + "helper" + File.separator + UUID.randomUUID() + "." + ext;
template.renameTo(new File(PathKit.getWebRootPath() + fileName));
Helper helper = new Helper();
helper.setId(Db.findFirst(Db.getSql("getHelperId")).getInt("id"));
helper.setName(name);
helper.setDescription(description);
helper.setPath(fileName);
helper.setType(type);
if (helper.save()){
return true;
}
return false;
}
public Ret downloadOperation(Integer id, HttpServletResponse repose) {
try {
//根据id获取操作手册信息
Record operationInfo = Db.findById("AS_HELPER", id);
if (operationInfo == null) {
return Ret.fail("msg", "没有获取到操作手册的信息");
}
//获取路径信息
String path = operationInfo.getStr("path");
path = PathKit.getWebRootPath() + path;
File file = new File(path);
if (file.exists()) {
return Ret.ok("msg", Kv.by("path", path).set("name", operationInfo.getStr("name") + path.substring(path.lastIndexOf("."))));
} else {
return Ret.fail("msg", "没有找到文件");
}
} catch (Exception e) {
e.printStackTrace();
return Ret.fail("msg", "下载操作手册异常");
}
}
public boolean edit(Integer id, String name, String description, Integer type) {
Helper helper = new Helper();
helper.setId(id);
helper.setName(name);
helper.setDescription(description);
helper.setType(type);
if (helper.update()){
return true;
}
return false;
}
public boolean remove(String ids) {
try {
String[] idArr = ids.split(",");
for (int i = 0; i < idArr.length; i++) {
Helper.dao.deleteById(idArr[i]);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
package com.archser.aserver.service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import com.archser.aserver.model.Log;
import com.archser.aserver.model.User;
import com.jfinal.kit.PathKit;
import com.jfinal.plugin.activerecord.Db;
public class LogService {
private static DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH-mm-ss");
private SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public void saveAsLog(String type, String user, String ip, String content, String app) {
try {
Log asLog = new Log();
asLog.set("ID", "SEQ_LOG.nextval");
asLog.setType(type);
Integer userId = Db.queryInt(Db.getSql("getUserId"),user);
Integer userId = Db.queryInt(Db.getSql("getUserId"), user);
asLog.setUserId(userId);
asLog.setContent(content);
// 把时间精确到秒
......@@ -28,4 +38,53 @@ public class LogService {
e.printStackTrace();
}
}
public void saveAsLogByFile(String type, String user, String content, InputStream ins, Object fileContent,
String ip) {
try {
LocalDateTime ldtt = LocalDateTime.now();
String filename = ldtt.format(format);
String path = PathKit.getWebRootPath() + File.separator + "log" + File.separator + filename + "log.txt";
File file = new File(PathKit.getWebRootPath() + File.separator + "log");
if (!file.exists()) {
file.mkdirs();
}
file = new File(path);
if (!file.exists()) {
file.createNewFile();
}
String string = fileContent.toString();
if (ins != null) {
FileOutputStream outs = new FileOutputStream(file);
int len = 0;
byte[] bytes = new byte[1024];
while ((len = ins.read(bytes)) != -1) {
outs.write(bytes, 0, len);
}
outs.close();
} else {
FileWriter outputStream = new FileWriter(file);
outputStream.write(string);
outputStream.close();
}
Log asLog = new Log();
asLog.set("ID", Log.SEQ_NEXTVAL);
asLog.setType(type);
User asUser = User.dao.findFirst(Db.getSql("getUserId"), user);
asLog.setUserId(asUser == null ? null : asUser.getId());
asLog.setContent(content);
// 把时间精确到秒
Date date = new Date();
String time = format2.format(date);
Date date2 = format2.parse(time);
asLog.setCreateTime(date2);
asLog.setSystemType("accession");
asLog.setExtending(path);
asLog.setIp(ip);
asLog.save();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.archser.aserver.util;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownLoadFileUtil {
/**
* 下载文件
*
* @param response HttpServletResponse
* @param fileName 文件名称
* @param filePath 文件磁盘路径
* @param ifDelFile 是否删除文件
*/
public static void downLoadFile(HttpServletResponse response, String fileName, String filePath, boolean ifDelFile) {
try {
if (fileName != null) {
// 设置文件路径
File file = new File(filePath);
if (file.exists()) {
response.setHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition",
"attachment;filename=" + fileName); //LiuKexin 20210122 文件名已处理,此处不用在处理
byte[] buffer = new byte[1024];
FileInputStream fis = null;
BufferedInputStream bis = null;
try {
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
os.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
......@@ -2963,7 +2963,27 @@
</sql>
</version>
<version edition="137" description="帮助中心">
<sql creator="liukexin" createDate="20210301" note="帮助中心">
CREATE TABLE "AS_HELPER"
(
"ID" NUMBER(22,6) NOT NULL,
"NAME" VARCHAR2(50),
"TYPE" NUMBER(22,6),
"DESCRIPTION" VARCHAR2(255),
"PATH" VARCHAR2(255),
CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;
create sequence AS_HELPER_SEQ start with 1 increment by 1 maxvalue 99999999999
</sql>
</version>
<version edition="138" description="帮助中心菜单">
<sql creator="liukexin" createDate="20210301" note="帮助中心">
insert into
AS_MENU(ID,NAME,TITLE,DESCRIPTION,PATH,SYSTEM_ID,FIRST_LEVEL_NAME,SECOND_LEVEL_NAME,GROUP_ORDER)
values(SEQ_MENU.nextval,'helpCenter','帮助中心','帮助中心','#/help',9,'后台管理','系统管理',4);
insert into
AS_MENU(ID,NAME,TITLE,DESCRIPTION,PATH,SYSTEM_ID,FIRST_LEVEL_NAME,SECOND_LEVEL_NAME,GROUP_ORDER)
values(SEQ_MENU.nextval,'helpCenter','帮助中心管理','帮助中心管理','#/helpManager',9,'后台管理','系统管理',4);
</sql>
</version>
</update>
\ No newline at end of file
### SQL模板
### 获取帮助中心列表
#sql("getHelperList")
select *
from AS_HELPER
#if(searchText && searchText!='')
where
#(searchText)
#end
#end
### 获取帮助中心自增id
#sql("getHelperId")
select AS_HELPER_SEQ.nextval id from dual
#end
### 根据部门Id查询全宗信息
#sql("getFondDataByOrganId")
select * from as_fond where organ_id =#para(organ_id)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment