Commit 3c7bd4eb by 丁伟

迁移初始提交

parent a20d55b5

Too many changes to show.

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

# Default ignored files
/workspace.xml
\ No newline at end of file
sfzx_website
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="sfzx_website" />
</profile>
</annotationProcessing>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
\ No newline at end of file
package ccpit.admin;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/**
* Created by Administrator on 2015/8/24.
*/
@Controller
@RequestMapping("/admin")
public class AdminController {
@RequestMapping("/index")
public Object index(){
return new ModelAndView("home");
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:LoginController.java
* Package Name:ccpit.admin
* Date:2015年9月15日上午11:20:00
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.admin;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import ccpit.base.controller.BaseController;
import ccpit.base.controller.ValidateCodeController;
import ccpit.base.logManage.LogInfoService;
import ccpit.base.user.User;
import ccpit.base.user.UserService;
import ccpit.base.utils.PasswordHash;
import ccpit.base.utils.UserRolesUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/**
* ClassName:LoginController <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO 用户登录控制类 <br/>
* Date: 2015年9月15日 上午11:20:00 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Controller
@RequestMapping("/admin")
public class LoginController extends BaseController{
private static final Logger log = LoggerFactory.getLogger(LoginController.class);
@Autowired
private UserService userService;
@Autowired
private LogInfoService logInfoService;
@Autowired
private UserRolesUtil userRolesUtil;
@RequestMapping("/login")
public Object login(HttpServletRequest request, String validateCode){
log.info("user login!");
Map<String, Object> result = new HashMap<String, Object>();
ModelAndView mv = null;
String loginName = request.getParameter("loginName");
String pass = request.getParameter("passId");
HttpSession session = request.getSession();
if(null != loginName && null != pass && null != validateCode){
if (StringUtils.isEmpty(validateCode)){
session.setAttribute("info", "请输入验证码...");
mv = new ModelAndView("/login/login");
}else {
if (!ValidateCodeController.validate(request,validateCode)){
session.setAttribute("info", "验证码输入错误,请重新输入");
mv = new ModelAndView("/login/login");
}else {
User user = userService.getUserByLoginName(loginName);
if(null == user){
session.setAttribute("info", "用户信息不存在,请联系系统管理员...");
mv = new ModelAndView("/login/login");
}else {
try {
if(PasswordHash.validatePassword(pass,user.getPassword())){
if("back".equals(user.getUserType())){
if(1 == user.getCountStatus()){
user.setLoginCount(null == user.getLoginCount() ? 1 : user.getLoginCount() + 1);
userService.updateUser(user);
result.put("flag", true);
session.removeAttribute(BaseController.USER_IN_SESSION);
session.setAttribute(BaseController.USER_IN_SESSION, user);
request.setAttribute("userName", user.getUsername());
//记录用户操作日志信息
logInfoService.recordLog(request, "系统登录");
//重载权限模块
userRolesUtil.initOrReload(request);
result.put("flag", true);
mv = new ModelAndView("redirect:index");
}else {
session.setAttribute("info", "当前登录用户账号失效,请与系统管理员进行联系!");
mv = new ModelAndView("/login/login");
}
}else {
session.setAttribute("info", "当前登录用户不是后台用户,请与系统管理员进行联系!");
mv = new ModelAndView("/login/login");
}
}else {
session.setAttribute("info", "密码输入错误,请重新输入!");
session.removeAttribute(ValidateCodeController.CODE);
mv = new ModelAndView("/login/login");
}
} catch (Exception e) {
e.printStackTrace();
log.error("密码加密失败...");
}
}
}
}
}else {
mv = new ModelAndView("/login/login");
}
return mv;
}
/**
*
* logout:(系统退出). <br/>
* @author dingwei
* @param request
* @return
* @since JDK 1.6
*/
@RequestMapping("/logout")
public Object logout(HttpServletRequest request) {
//记录用户操作日志信息
logInfoService.recordLog(request, "系统退出");
request.getSession().removeAttribute("user_in_session");
request.getSession().removeAttribute(BaseController.USER_IN_SESSION);
ModelAndView mv = new ModelAndView("/login/login");
return mv;
}
/**
*
* goLoginPage:(进入登录页面). <br/>
* @author dingwei
* @param request
* @return
* @since JDK 1.6
*/
@RequestMapping("/goLoginPage")
public Object goLoginPage(HttpServletRequest request) {
ModelAndView mv = new ModelAndView("/login/login");
return mv;
}
}
package ccpit.base.controller;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import ccpit.base.modol.BaseEntity;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import javax.servlet.http.HttpServletRequest;
/**
* Created by Administrator on 2015/8/13.
*/
public class BaseController {
public static final String USER_IN_SESSION = "user_in_session";
public static final String SUCCESS = "{success:true}";
protected Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
public void setUserSession(HttpServletRequest request, BaseEntity entity) {
request.getSession().setAttribute(USER_IN_SESSION, entity);
}
public <T> T getUserSession(HttpServletRequest request) {
return (T) request.getSession().getAttribute(USER_IN_SESSION);
}
/**
* 方法描述:封装网格查询字段排序和分页信息
*
* @param request
* @return PageRequest
*/
public PageRequest getPage(HttpServletRequest request) {
int page = 1;
int rows = 10;
// 从请求中拿page 判断是否为空
String requestPage = request.getParameter("page");
if (!StringUtils.isEmpty(requestPage)
&& StringUtils.isNumeric(requestPage)) {
page = Integer.parseInt(requestPage);
}
// 从请求中拿rows 判断是否为空
String requestRow = request.getParameter("rows");
if (!StringUtils.isEmpty(requestRow)
&& StringUtils.isNumeric(requestRow)) {
rows = Integer.parseInt(requestRow);
}
String sortName = "";
String sortOrder = "";
// 从请求中拿sortName 判断是否为空
String requestSort = request.getParameter("sort");
if (!StringUtils.isEmpty(requestSort)) {
sortName = StringEscapeUtils.escapeSql(requestSort);
}
// 从请求中拿sortOrder 判断是否为空
String requestOrder = request.getParameter("order");
if (!StringUtils.isEmpty(requestOrder)) {
sortOrder = StringEscapeUtils.escapeSql(requestOrder);
}
PageRequest pageRequest = new PageRequest();
pageRequest.setPageSize(rows);
pageRequest.setPageNo(page);
/**
* 设置排序字段, 多个排序字段时用','分隔.
*/
pageRequest.setOrderBy(sortName + " " + sortOrder);
return pageRequest;
}
/**
* getRequestIp:(获取客户端访问在Ip).
* 如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,那么真正的用户端的真实IP则是取X
* -Forwarded-For中第一个非unknown的有效IP字符串。<br/>
*
* @author dingwei
* @param request
* @return
* @since JDK 1.6
*/
public final static String getRequestIp(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
/*
* //防止xss攻击
*
* @InitBinder public void initBinder(ServletRequestDataBinder binder) {
*//**
* 自动转换日期类型的字段格式
*/
/*
* binder.registerCustomEditor(Date.class, new CustomDateEditor(new
* SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));
*//**
* 防止XSS攻击
*/
/*
* binder.registerCustomEditor(String.class, new StringEscapeEditor(true,
* false)); }
*/
}
package ccpit.base.controller;
import java.util.List;
import java.util.Map;
/**
* Created by Administrator on 2015/9/7.
*/
public interface Convert<T>{
public Map<String,Object> convert(T obj);
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:memberManageSys
* File Name:DownloadFileController.java
* Package Name:ccpit.base.controller
* Date:2016年3月3日下午1:57:15
* Copyright (c) 2016, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.controller;
import java.net.HttpURLConnection;
import java.net.URL;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* ClassName:DownloadFileController <br/>
* Function: 导入模板下载控制类. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2016年3月3日 下午1:57:15 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Controller
@RequestMapping("base/download")
public class DownloadFileController extends BaseController {
private static final Logger log = LoggerFactory.getLogger(DownloadFileController.class);
/* @RequestMapping("/downloadFile")
@ResponseBody
public Object downloadFile(HttpServletRequest request, HttpServletResponse response){
Map result = new HashMap();
//获得请求文件名
String filename = request.getParameter("filename");
String fileRealName = request.getParameter("fileRealName");
try {
fileRealName = java.net.URLDecoder.decode(fileRealName, "UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
//设置文件MIME类型
response.setContentType(request.getSession().getServletContext().getMimeType(filename));
//设置Content-Disposition
try {
response.setHeader("Content-Disposition", "attachment;filename="+new String(fileRealName.getBytes("gb2312"),"ISO8859-1" ));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
//读取目标文件,通过response将目标文件写到客户端
//获取目标文件的绝对路径
String fullFileName = UploadFileController.UPLOADFILEPATH+filename;
//讀取文件
try {
InputStream is = new FileInputStream(fullFileName);
OutputStream os = response.getOutputStream();
//写文件
int b = 0;
while((b = is.read())!= -1){
os.write(b);
}
is.close();
os.close();
result.put("message", true);
result.put("info", "下载成功!");
} catch (FileNotFoundException e) {
log.info("下载文件沒有找到...");
result.put("message", false);
result.put("info", "下载成功!");
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
*/
/**
* isConnect:(判断网站url是否失效). <br/>
*
* @author liyang
* @param urlStr
* @return Date:2016年4月22日下午3:22:05
* @since JDK 1.6
*/
public boolean isConnect(String urlStr) {
int counts = 0;
URL url;
HttpURLConnection con;
int state = -1;
if (urlStr == null || urlStr.length() <= 0) {
return false;
}
while (counts < 5) {
try {
url = new URL(urlStr);
con = (HttpURLConnection) url.openConnection();
state = con.getResponseCode();
System.out.println(counts + "= " + state);
if (state == 200) {
return true;
}
break;
} catch (Exception ex) {
counts++;
System.out.println("URL不可用,连接第 " + counts + " 次");
urlStr = null;
continue;
}
}
return false;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:investWebsite
* File Name:MyMultipartResolver.java
* Package Name:ccpit.base.controller
* Date:2016年7月15日上午10:25:21
* Copyright (c) 2016, liyang@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Repository;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
/**
* ClassName: MyMultipartResolver <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON(可选). <br/>
* date: 2016年7月15日 上午10:25:21 <br/>
*
* @author liyang
* @version
* @since JDK 1.6
*/
public class MyMultipartResolver extends CommonsMultipartResolver {
private String excludeUrls;
//配置自己的url
private String[] excludeUrlArray = {};
public String getExcludeUrls() {
return excludeUrls;
}
public void setExcludeUrls(String excludeUrls) {
this.excludeUrls = excludeUrls;
this.excludeUrlArray = excludeUrls.split(",");
}
/**
* 这里是处理Multipart http的方法。如果这个返回值为true,那么Multipart http body就会MyMultipartResolver 消耗掉.如果这里返回false
* 那么就会交给后面的自己写的处理函数处理例如刚才ServletFileUpload 所在的函数
* @see org.springframework.web.multipart.commons.CommonsMultipartResolver#isMultipart(javax.servlet.http.HttpServletRequest)
*/
@Override
public boolean isMultipart(HttpServletRequest request) {
for (String url: excludeUrlArray) { // 这里可以自己换判断
if (request.getRequestURI().contains(url)) {
return false;
}
}
return super.isMultipart(request);
}
}
package ccpit.base.controller;
import java.util.List;
/**
* Created by Administrator on 2015/8/13.
*/
public class Page<T> extends PageRequest {
List<T> rows = null;
long total = 0L;
public Page(PageRequest request) {
this.pageNo = request.pageNo;
this.pageSize = request.pageSize;
this.countTotal = request.countTotal;
this.orderBy = request.orderBy;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
public long getTotal() {
return total;
}
public void setTotal(long totalLength) {
this.total = totalLength;
}
}
package ccpit.base.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Created by Administrator on 2015/8/13.
*/
public class PageBo <T>{
private List<Map<String,Object>> rows = new ArrayList<Map<String, Object>>();
private long total = 0L;
private int pageNo;
public PageBo() {}
public PageBo(Page<T> page,Convert<T> convert) {
setTotal(page.getTotal());
setPageNo(page.getPageNo());
List<Map<String,Object>> newRows = new ArrayList<Map<String, Object>>();
for (T t:page.getRows()){
newRows.add(convert.convert(t));
}
setRows(newRows);
}
public List<Map<String, Object>> getRows() {
return rows;
}
public void setRows(List<Map<String, Object>> rows) {
this.rows = rows;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
}
package ccpit.base.controller;
/**
* Created by Administrator on 2015/8/13.
*/
public class PageRequest {
protected int pageNo = 0;
protected int pageSize = 10;
protected String orderBy = "";
protected boolean countTotal = true;
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public String getOrderBy() {
return orderBy;
}
public void setOrderBy(String orderBy) {
this.orderBy = orderBy;
}
public boolean isCountTotal() {
return countTotal;
}
public void setCountTotal(boolean countTotal) {
this.countTotal = countTotal;
}
public boolean isOrderBySetted() {
return !(orderBy==null||orderBy.trim().isEmpty());
}
public int getOffset() {
return (this.pageNo - 1) * this.pageSize;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:investWebsite
* File Name:StringEscapeEditor.java
* Package Name:ccpit.base.controller
* Date:2016年8月16日下午1:34:26
* Copyright (c) 2016, liyang@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.controller;
import java.beans.PropertyEditorSupport;
import org.springframework.web.util.HtmlUtils;
import org.springframework.web.util.JavaScriptUtils;
/**
* ClassName: StringEscapeEditor <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON(可选). <br/>
* date: 2016年8月16日 下午1:34:26 <br/>
*
* @author liyang
* @version
* @since JDK 1.6
*/
public class StringEscapeEditor extends PropertyEditorSupport{
private boolean escapeHTML;// 编码HTML
private boolean escapeJavaScript;// 编码javascript
public StringEscapeEditor() {
super();
}
public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript) {
super();
this.escapeHTML = escapeHTML;
this.escapeJavaScript = escapeJavaScript;
}
@Override
public String getAsText() {
Object value = getValue();
return value != null ? value.toString() : "";
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
if (text == null) {
setValue(null);
} else {
String value = text;
if (escapeHTML) {
value = HtmlUtils.htmlEscape(value);
System.out.println("value:"+value);
}
if (escapeJavaScript) {
value = JavaScriptUtils.javaScriptEscape(value);
System.out.println("value:"+value);
}
setValue(value);
}
}
}
package ccpit.base.controller;
import org.apache.commons.lang.StringUtils;
import ccpit.base.utils.ValidateCode;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Date: 2015年10月08日 09:42
*
* @author 孙其鹏
* @version 1.0
*/
@Controller
@RequestMapping("/validate")
public class ValidateCodeController {
public static final String CODE="validate_code_in_session";
@RequestMapping("/code")
public void code(HttpServletRequest request,HttpServletResponse response){
ValidateCode vCode = new ValidateCode(100,30,4,100);
request.getSession().setAttribute(CODE, vCode.getCode().toLowerCase());
try {
vCode.write(response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 验证验证码是否正确 (如果正确则删除session中的验证码)
* @param request
* @param input
* @return
*/
public static boolean validate(HttpServletRequest request,String input){
Object code = request.getSession().getAttribute(CODE);
String reqCode = input;
if (code==null || StringUtils.isEmpty((String) code)||StringUtils.isEmpty(reqCode))
return false;
boolean success = ((String)code).trim().toLowerCase().equals(reqCode.trim().toLowerCase());
if (success){
request.getSession().setAttribute(CODE,"");
}
return success;
}
}
package ccpit.base.dao;
import ccpit.base.controller.Page;
import ccpit.base.controller.PageRequest;
import java.util.List;
/**
* Created by Administrator on 2015/8/18.
*/
public interface IDao<T> {
/**
* 实例化一个实体
* @param
*/
public boolean save(T t);
/**
* 实例化所有实体
* @param
*/
public boolean saveAll(List<T> list);
/**
* 删除一个实体
* @param
*/
public boolean delete(T t);
/**
* 删除一个实体
* @param id
*/
public boolean deleteById(long id);
/**
* 删除所有实体
* @param
*/
public boolean deleteAll(List<T> list);
/**
* 查询实体
* @param
*/
public List<T> query(final String hql, final Object... params);
/**
* 查询所有
* @param
*/
public List<T> queryAll();
/**
* 分页查询
* @param pageRequest
* @param hql
* @param values
* @return
*/
public Page findPage(PageRequest pageRequest, String hql, Object[] values);
/**
* 获取实体的Class
* @param
*/
public Class getEntityClass();
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:memberManageSys
* File Name:IJdbcDao.java
* Package Name:ccpit.base.dao
* Date:2016年2月26日下午4:33:51
* Copyright (c) 2016, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.dao;
import java.util.List;
import java.util.Map;
import ccpit.base.controller.Page;
import ccpit.base.controller.PageRequest;
/**
* ClassName:IJdbcDao <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2016年2月26日 下午4:33:51 <br/>
*
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
public interface IJdbcDao<T> {
public abstract Boolean hasExist(String paramString, Object[] paramArrayOfObject);
public abstract int save(String paramString, Object[] paramArrayOfObject);
public abstract int update(String paramString, Object[] paramArrayOfObject);
public abstract int updateColumn(String paramString1, String paramString2, Object paramObject, String paramString3);
public abstract int updateColumn(String paramString1, String[] paramArrayOfString, Object[] paramArrayOfObject,
String paramString2);
public abstract int delete(String paramString, Object[] paramArrayOfObject);
public abstract int delete(String paramString1, String paramString2, String paramString3);
public abstract int delete(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5);
public abstract List queryForList(String paramString, Object[] paramArrayOfObject);
public abstract List queryForList(String paramString, Object[] paramArrayOfObject, Class paramClass);
public abstract int queryForInt(String paramString, Object[] paramArrayOfObject);
public abstract long queryForLong(String paramString, Object[] paramArrayOfObject);
public abstract Map queryForMap(String paramString, Object[] paramArrayOfObject);
public abstract Object queryForObject(String paramString, Object[] paramArrayOfObject);
public abstract Object queryForObject(String paramString, Object[] paramArrayOfObject, Class paramClass);
public abstract List batchQuery(String[] paramArrayOfString, Class[] paramArrayOfClass);
public abstract void batchExecute(String[] paramArrayOfString);
public abstract int[] batchUpdate(String[] paramArrayOfString);
public abstract void execute(String paramString);
public abstract Page queryPage(PageRequest paramPageRequest, String paramString, Object[] paramArrayOfObject, Class paramClass);
public abstract void clearCache(Class paramClass);
}
/*
* Company Name : 中贸促信息技术有限责任公司
* Project Name:memberManageSys
* File Name:EmailDao.java
* Package Name:ccpit.business.linkManage
* Date:2015年11月30日
* Copyright (c) 2015, jinlong@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.emailSendManage;
import ccpit.base.dao.BaseDao;
import org.springframework.stereotype.Repository;
/**
* ClassName:EmailDao <br/>
* Function: TODO <br/>
* Reason: TODO <br/>
* Date: 2015年11月30日 <br/>
* @author jinlong
* @version
* @since JDK 1.6
* @see
*/
@Repository
public class EmailDao extends BaseDao<EmailInfo>{
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:EmailInfo.java
* Package Name:ccpit.business.emailManage
* Date:2015年10月10日下午2:51:55
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.emailSendManage;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import ccpit.base.user.User;
/**
* ClassName:EmailInfo <br/>
* Function:
* Reason:
* Date: 2015年10月10日 下午2:51:55 <br/>
*
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Entity
@Table(name = "ccoic_emailinfo")
public class EmailInfo implements Serializable {
/**
* serialVersionUID:
*
* @since JDK 1.6
*/
private static final long serialVersionUID = 1L;
private long id;
/**
* 邮件主题
*/
private String title;
/**
* 收件人
*/
private String recipients;
/**
* 发件人
*/
private String addresser;
/**
* 抄送人
*/
private String copyTo;
/**
* 邮件内容
*/
private String content;
/**
* 附件
*/
private String affix;
/**
* 创建人
*/
private User creator;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改人
*/
private User modifyBy;
/**
* 修改时间
*/
private Date modifyTime;
/**这个字段现在没用,原计划是要用的,用来标记邮件发送的状态,
* 发送状态 yfs 已发失败 yfc 已发成功 zz 正在发送 cg 草稿
*/
private String status;
/**
* 收件人名称
*/
private String recipientName;
/**
* 邮件信息是否为被删除状态
*/
private Boolean emailWhether;
/**
* 备用字段1
*/
private String standby1;
/**
* 备用字段2
*/
private String standby2;
/**
* 备用字段3
*/
private String standby3;
/**
* 备用字段4
*/
private String standby4;
/**
* 备用字段5
*/
private String standby5;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getRecipients() {
return recipients;
}
public void setRecipients(String recipients) {
this.recipients = recipients;
}
public String getAddresser() {
return addresser;
}
public void setAddresser(String addresser) {
this.addresser = addresser;
}
public String getCopyTo() {
return copyTo;
}
public void setCopyTo(String copyTo) {
this.copyTo = copyTo;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Boolean getEmailWhether() {
return emailWhether;
}
public void setEmailWhether(Boolean emailWhether) {
this.emailWhether = emailWhether;
}
public String getRecipientName() {
return recipientName;
}
public void setRecipientName(String recipientName) {
this.recipientName = recipientName;
}
public String getAffix() {
return affix;
}
public void setAffix(String affix) {
this.affix = affix;
}
@OneToOne
public User getCreator() {
return creator;
}
public void setCreator(User creator) {
this.creator = creator;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@OneToOne
public User getModifyBy() {
return modifyBy;
}
public void setModifyBy(User modifyBy) {
this.modifyBy = modifyBy;
}
public Date getModifyTime() {
return modifyTime;
}
public void setModifyTime(Date modifyTime) {
this.modifyTime = modifyTime;
}
public String getStandby1() {
return standby1;
}
public void setStandby1(String standby1) {
this.standby1 = standby1;
}
public String getStandby2() {
return standby2;
}
public void setStandby2(String standby2) {
this.standby2 = standby2;
}
public String getStandby3() {
return standby3;
}
public void setStandby3(String standby3) {
this.standby3 = standby3;
}
public String getStandby4() {
return standby4;
}
public void setStandby4(String standby4) {
this.standby4 = standby4;
}
public String getStandby5() {
return standby5;
}
public void setStandby5(String standby5) {
this.standby5 = standby5;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
/*
* Company Name : 中贸促信息技术有限责任公司
* Project Name:memberManageSys
* File Name:EmailSendController.java
* Package Name:ccpit.business.linkManage
* Date:2016年1月21日
* Copyright (c) 2016, jinlong@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.emailSendManage;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import ccpit.base.controller.BaseController;
import ccpit.base.logManage.LogInfoService;
import ccpit.base.metadataManage.MetadataDao;
import ccpit.base.metadataManage.MetadataService;
import ccpit.base.user.User;
import ccpit.base.user.UserDao;
import ccpit.base.user.UserEmail;
import ccpit.base.utils.mailUtil.Mail;
import ccpit.base.utils.mailUtil.MailUtil;
import org.hibernate.Session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* ClassName:EmailSendController <br/>
* Function: TODO <br/>
* Reason: TODO <br/>
* Date: 2016年1月21日 <br/>
* @author jinlong
* @version
* @since JDK 1.6
* @see
*/
@Controller
@RequestMapping("base/emailSendManage")
public class EmailSendController extends BaseController{
private static SimpleDateFormat sdfD = new SimpleDateFormat("yyyy-MM-dd");
private static SimpleDateFormat sdfM = new SimpleDateFormat("yyyy-MM");
private static final Logger log = LoggerFactory.getLogger(EmailSendController.class);
@Autowired
private MetadataService metadataService;
@Autowired
private LogInfoService logInfoService;
@Autowired
private UserDao userDao;
@Autowired
private MetadataDao metadataDao;
//单发
public void sendOneEmail(HttpServletRequest request,String emailAddress,EmailInfo emailInfo,UserEmail userEmail){
Mail mail = null;
if (emailInfo != null && userEmail != null) {
mail = new Mail();
mail.setHost(userEmail.getServerHost());
mail.setProtocol(userEmail.getServerProtocol());
mail.setSender(userEmail.getEmailCount());
mail.setName(null);
mail.setEmailCount(userEmail.getEmailCount());
mail.setEmailPassword(userEmail.getEmailPassword());
mail.setReceiver(emailAddress);
// mail.setCopyTo(emailInfo.getCopyTo());
mail.setMailTitle(emailInfo.getTitle());
mail.setMailMessage(emailInfo.getContent());
String files = getAffixFromDir(emailInfo.getAffix());
mail.setAffix(files);
//监测发送过程,如果发送失败,则把发送失败的名单保留下来,并回显到页面
MailUtil.sendMail(mail);
}
}
public String getAffixFromDir(String dir) {
File file = new File(dir);
StringBuffer fStr = null;
if (file.exists()) {
fStr = new StringBuffer();
File fa[] = file.listFiles();
for (int i = 0; i < fa.length; i++) {
fStr.append(fa[i] + ";");
}
return fStr.toString();
}
return null;
}
public EmailInfo addEmailInfo(HttpServletRequest request) {
EmailInfo emailInfo = new EmailInfo();Session session = null;
try {
// 获取表单信息
String emailStatus = request.getParameter("emailStatus");
String recipients = request.getParameter("addRecipientsName");
String recipientName = request.getParameter("addRecipientNameName");
String title = request.getParameter("addTitleName");
String affixRealPath = request.getParameter("addEmailRealPathName");
String content = request.getParameter("emailContent");
String copyTo = request.getParameter("copyTo");
emailInfo.setStatus(emailStatus);
emailInfo.setRecipients(recipients);
emailInfo.setRecipientName(recipientName);
emailInfo.setTitle(title);
emailInfo.setAffix(affixRealPath);
User user = (User) request.getSession().getAttribute(
BaseController.USER_IN_SESSION);
// User user = (User)userDao.queryById((long)1);
UserEmail userEmail = user.getUserEmail();
if(userEmail==null){
throw new RuntimeException("userEmail为空");
}
emailInfo.setAddresser(userEmail.getEmailCount());
emailInfo.setContent(content);
emailInfo.setEmailWhether(true);
emailInfo.setCreateTime(new Date());
emailInfo.setCreator(user);
emailInfo.setCopyTo(copyTo);
emailInfo.setId(0);
emailInfo.setEmailWhether(true);
session = userDao.getHibernateTemplate().getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(emailInfo);
session.getTransaction().commit();
return emailInfo;
} catch (Exception e) {
session.getTransaction().rollback();
log.info(e.getMessage());
e.printStackTrace();
return null;
}finally{
log.info("添加邮件");
// session.close();
}
}
}
package ccpit.base.logManage;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 自动编写日志的标识注解<br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* @author liyang
* @version
* @since JDK 1.6
* @see
*/
/*这个注解控制这个类里的方法是否输出log*/
@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = ElementType.METHOD)
public @interface AutoWriteLog {
public boolean value() default false;
String description() default "";
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:LogInfo.java
* Package Name:ccpit.base.logManage
* Date:2015年10月16日下午3:06:57
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.logManage;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
* ClassName:LogInfo <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年10月16日 下午3:06:57 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Entity
public class LogInfo implements Serializable{
/**
* serialVersionUID:TODO(用一句话描述这个变量表示什么).
* @since JDK 1.6
*/
private static final long serialVersionUID = 1L;
private long id;
/**
* 操作名称
*/
private String operateName;
/**
* 操作时间
*/
private Date operateTime;
/**
* 操作人
*/
private String operator;
/**
* 操作人ip
*/
private String operatorIp;
/**
* 备用字段1
*/
private String standBy1;
/**
* 备用字段2
*/
private String standBy2;
/**
* 备用字段3
*/
private String standBy3;
/**
* 备用字段4
*/
private String standBy4;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getOperateName() {
return operateName;
}
public void setOperateName(String operateName) {
this.operateName = operateName;
}
public Date getOperateTime() {
return operateTime;
}
public void setOperateTime(Date operateTime) {
this.operateTime = operateTime;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getOperatorIp() {
return operatorIp;
}
public void setOperatorIp(String operatorIp) {
this.operatorIp = operatorIp;
}
public String getStandBy1() {
return standBy1;
}
public void setStandBy1(String standBy1) {
this.standBy1 = standBy1;
}
public String getStandBy2() {
return standBy2;
}
public void setStandBy2(String standBy2) {
this.standBy2 = standBy2;
}
public String getStandBy3() {
return standBy3;
}
public void setStandBy3(String standBy3) {
this.standBy3 = standBy3;
}
public String getStandBy4() {
return standBy4;
}
public void setStandBy4(String standBy4) {
this.standBy4 = standBy4;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:LogInfoController.java
* Package Name:ccpit.base.logManage
* Date:2015年10月19日上午10:23:09
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.logManage;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import net.sf.json.JSONArray;
import ccpit.base.controller.BaseController;
import ccpit.base.controller.Page;
import ccpit.base.controller.PageRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
/**
* ClassName:LogInfoController <br/>
* Function: TODO 日志管理 controller. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年10月19日 上午10:23:09 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Controller
@RequestMapping("/admin/logManage")
public class LogInfoController extends BaseController {
@Autowired
private LogInfoService logInfoService;
/*
* 进入议题组管理列表界面(英文)
*/
@RequestMapping("/goinLogInfoListPage")
public Object goinTopicWorkTeamListPage_en() {
ModelAndView mv = new ModelAndView("admin/logManage/logInfoListPage");
return mv;
}
@RequestMapping("/getAllLogInfos")
@ResponseBody
public Object getAllLogInfos(HttpServletRequest request){
PageRequest pageRequest = getPage(request);
Page<LogInfo> pageRole = logInfoService.queryLinkInfos(pageRequest);
return logInfoService.convert(pageRole);
}
public void addLogInfo(LogInfo logInfo) {
boolean b = logInfoService.addLogInfo(logInfo);
}
/**
* 根据id删除
* @param request
* @param response
* @return
*/
@RequestMapping("/deleteTopicWorkTeamById")
@ResponseBody
public Object deleteTopicWorkTeamById(HttpServletRequest request){
Map result = new HashMap();
String jsonIds = request.getParameter("ids");
JSONArray jsonArray = JSONArray.fromObject(jsonIds);
Object[] ids = jsonArray.toArray();
boolean flag = false;
for(Object workTopicTeamId : ids){
flag = logInfoService.delLogInfoById(Integer.valueOf((Integer) workTopicTeamId));
}
result.put("flag", flag);
return result;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:LogInfoDao.java
* Package Name:ccpit.base.logManage
* Date:2015年10月19日上午10:18:02
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.logManage;
import ccpit.base.dao.BaseDao;
import org.springframework.stereotype.Repository;
/**
* ClassName:LogInfoDao <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年10月19日 上午10:18:02 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Repository
public class LogInfoDao extends BaseDao<LogInfo> {
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:LogInfoService.java
* Package Name:ccpit.base.logManage
* Date:2015年10月19日上午10:18:26
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.logManage;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.transaction.Transactional;
import ccpit.base.controller.BaseController;
import ccpit.base.controller.Convert;
import ccpit.base.controller.Page;
import ccpit.base.controller.PageBo;
import ccpit.base.controller.PageRequest;
import ccpit.base.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
/**
* ClassName:LogInfoService <br/>
* Function: TODO 日志信息管理. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年10月19日 上午10:18:26 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Repository
@Transactional
public class LogInfoService {
private final static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Autowired
private LogInfoDao logInfoDao;
/**
*
* recordLog:(记录用户操作日志信息). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author dingwei
* @param request
* @param operation 操作名称
* @since JDK 1.6
*/
public void recordLog(HttpServletRequest request,String operation){
User user = (User) request.getSession().getAttribute("user_in_session");
LogInfo logInfo = new LogInfo();
logInfo.setOperateName(operation);
logInfo.setOperateTime(new Date());
logInfo.setOperator(user.getUsername());
logInfo.setOperatorIp(BaseController.getRequestIp(request));
logInfoDao.save(logInfo);
}
public boolean addLogInfo(LogInfo logInfo){
return logInfoDao.save(logInfo);
}
public boolean delLogInfoById(long id){
return logInfoDao.deleteById(id);
}
public Page<LogInfo> queryLinkInfos(PageRequest pageRequest){
String hql = "from LogInfo order by operateTime desc";
return logInfoDao.findPage(pageRequest, hql, null);
}
public Map<String,Object> convertToMap(LogInfo LogInfo){
Map<String,Object> map = new HashMap<String, Object>();
if (LogInfo==null){
return map;
}
map.put("id",LogInfo.getId());
map.put("operateName", LogInfo.getOperateName());
map.put("operateTime",null == LogInfo.getOperateTime()? "": sdf.format(LogInfo.getOperateTime()));
map.put("operator", LogInfo.getOperator());
map.put("operatorIp",LogInfo.getOperatorIp());
return map;
}
public PageBo<LogInfo> convert(Page<LogInfo> page){
return new PageBo<LogInfo>(page, new Convert<LogInfo>() {
@Override
public Map<String, Object> convert(LogInfo obj) {
return convertToMap(obj);
}
});
}
}
package ccpit.base.logManage;
import java.lang.reflect.Method;
import java.util.Date;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import ccpit.base.controller.BaseController;
import ccpit.base.user.User;
import org.kopitubruk.util.json.JSONUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
* SystemLogAspect 实现自动编写注解的切点类 <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* @author liyang
* @version
* @since JDK 1.6
* @see
*/
@Aspect
@Component
public class SystemLogAspect {
private static final Logger log = LoggerFactory.getLogger(SystemLogAspect.class);
@Autowired
private LogInfoService infoService;
//Controller层切点
@Pointcut("@annotation(ccpit.base.logManage.AutoWriteLog)")
public void controllerAspect() { }
@Before("controllerAspect()")
public void invokeBefore(JoinPoint joinPoint){
HttpServletRequest request = ((ServletRequestAttributes)
RequestContextHolder.getRequestAttributes()).getRequest();
HttpSession session = request.getSession();
try{
String ip = request.getRemoteAddr();
User user = (User)session.getAttribute(BaseController.USER_IN_SESSION);
log.info("用户名为"+user.getLoginName()+"的用户调用方法"+joinPoint.getTarget().getClass().getName()+
"."+joinPoint.getSignature().getName());
LogInfo logInfo = new LogInfo();
logInfo.setOperateName(joinPoint.getSignature().getName());
logInfo.setOperateTime(new Date());
logInfo.setOperator(user.getLoginName());
logInfo.setOperatorIp(ip);
infoService.addLogInfo(logInfo);
}catch (Exception e){
log.info("记录日志发生异常");
log.info("异常信息为"+e.getMessage());
}
}
@AfterThrowing(pointcut = "controllerAspect()", throwing = "e")
public void invokeAfter(JoinPoint joinPoint , Throwable e){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
HttpSession session = request.getSession();
//获取请求ip
String ip = request.getRemoteAddr();
String params = "";
if (joinPoint.getArgs() != null && joinPoint.getArgs().length > 0) {
for ( int i = 0; i < joinPoint.getArgs().length; i++) {
params += JSONUtil.toJSON(joinPoint.getArgs()[i]) + ";";
}
}
//后台用户写日志
User user = (User)session.getAttribute("USER_IN_SESSION");
log.info("用户名为"+user.getLoginName()+"的用户调用方法"+joinPoint.getTarget().getClass().getName()+
"."+joinPoint.getSignature().getName());
LogInfo logInfo = new LogInfo();
logInfo.setOperateName(joinPoint.getSignature().getName());
logInfo.setOperateTime(new Date());
logInfo.setOperator(user.getLoginName());
logInfo.setOperatorIp(ip);
infoService.addLogInfo(logInfo);
log.info("异常方法:{"+ joinPoint.getTarget().getClass().getName()+"}"
+ "异常代码:{"+ joinPoint.getSignature().getName()+"}"
+ "异常信息:{"+ e.getClass().getName(), e.getMessage()+"}"
+ "参数:{"+params+"}");
}
/**
* 获取注解中对方法的描述信息 用于Controller层注解
*
* @param joinPoint 切点
* @return 方法描述
* @throws Exception
*/
public static String getControllerMethodDescription(JoinPoint joinPoint) throws Exception {
String targetName = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
Object[] arguments = joinPoint.getArgs();
Class targetClass = Class.forName(targetName);
Method[] methods = targetClass.getMethods();
String description = "";
for (Method method : methods) {
if (method.getName().equals(methodName)) {
Class[] clazzs = method.getParameterTypes();
if (clazzs.length == arguments.length) {
description = method.getAnnotation(AutoWriteLog. class).description();
break;
}
}
}
return description;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:Metadata.java
* Package Name:ccpit.base.metadataManage
* Date:2015年9月25日上午9:53:11
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.metadataManage;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
* ClassName:Metadata <br/>
* Function: TODO 数据字典管理,通过数据类型来获取数据的使用. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月25日 上午9:53:11 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Metadata implements Serializable{
/**
* serialVersionUID:TODO(用一句话描述这个变量表示什么).
* @since JDK 1.6
*/
private static final long serialVersionUID = 1L;
private long id;
/**
* 数据名称
*/
private String dataName;
/**
* 数据名称id
*/
private String dataNameId;
/**
* 数据编号
*/
private String dataNum;
/**
* 数据级别 共分三个级别:1级、2级、3级
*/
private Integer dataLevel;
/**
* 数据类型
*/
private String dataType;
/**
* 语言类别(根据 english || chinese 区分)
*/
private String languageType;
/**
* 创建人
*/
private String creator;
/**
* 创建人id
*/
private long creatorId;
/**
* 创建时间
*/
private Date createDate;
/**
* 备注
*/
private String description;
private String standby1;
private String standby2;
private String standby3;
private String standby4;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getDataName() {
return dataName;
}
public void setDataName(String dataName) {
this.dataName = dataName;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getStandby1() {
return standby1;
}
public void setStandby1(String standby1) {
this.standby1 = standby1;
}
public String getStandby2() {
return standby2;
}
public void setStandby2(String standby2) {
this.standby2 = standby2;
}
public String getStandby3() {
return standby3;
}
public void setStandby3(String standby3) {
this.standby3 = standby3;
}
public String getStandby4() {
return standby4;
}
public void setStandby4(String standby4) {
this.standby4 = standby4;
}
public String getDataNameId() {
return dataNameId;
}
public void setDataNameId(String dataNameId) {
this.dataNameId = dataNameId;
}
public long getCreatorId() {
return creatorId;
}
public void setCreatorId(long creatorId) {
this.creatorId = creatorId;
}
public String getLanguageType() {
return languageType;
}
public void setLanguageType(String languageType) {
this.languageType = languageType;
}
public Integer getDataLevel() {
return dataLevel;
}
public void setDataLevel(Integer dataLevel) {
this.dataLevel = dataLevel;
}
public String getDataNum() {
return dataNum;
}
public void setDataNum(String dataNum) {
this.dataNum = dataNum;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:MetadataDao.java
* Package Name:ccpit.base.metadataManage
* Date:2015年9月25日上午10:07:45
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.metadataManage;
import ccpit.base.dao.BaseDao;
import org.springframework.stereotype.Repository;
/**
* ClassName:MetadataDao <br/>
* Function: TODO 数据字典管理数据持久化类. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月25日 上午10:07:45 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Repository
public class MetadataDao extends BaseDao<Metadata> {
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:MetadataService.java
* Package Name:ccpit.base.metadataManage
* Date:2015年9月25日上午10:07:13
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.metadataManage;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.transaction.Transactional;
import ccpit.base.controller.Convert;
import ccpit.base.controller.Page;
import ccpit.base.controller.PageBo;
import ccpit.base.controller.PageRequest;
import ccpit.base.utils.TranslateDataUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
/**
* ClassName:MetadataService <br/>
* Function: TODO 数据字典管理业务逻辑控制类. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月25日 上午10:07:13 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Transactional
@Repository
public class MetadataService {
@Autowired
private MetadataDao metadataDao;
/**
* addMetadata:(添加元数据信息). <br/>
* @author dingwei
* @param metadata
* @return
* @since JDK 1.6
*/
@Transactional
public boolean addMetadata(Metadata metadata){
return metadataDao.save(metadata);
}
/**
* updateMetadata:(更新元数据信息). <br/>
* @author dingwei
* @param metadata
* @return
* @since JDK 1.6
*/
@Transactional
public boolean updateMetadata(Metadata metadata){
return metadataDao.update(metadata);
}
/**
* delMetadata:(根据id删除原数据信息). <br/>
* @author dingwei
* @param id
* @return
* @since JDK 1.6
*/
@Transactional
public boolean delMetadata(long id){
return metadataDao.deleteById(id);
}
/**
* getMetadataById:(根据id查询元数据详细信息). <br/>
* @author dingwei
* @param id
* @return
* @since JDK 1.6
*/
public Metadata getMetadataById(long id){
return (Metadata) metadataDao.queryById(id);
}
public Metadata getMetadataByHql(String hql){
List<Metadata> list = metadataDao.query(hql, null);
if(null != list){
return list.get(0);
}else {
return null;
}
}
/**
* getAllMetadatas:(查询所有元数据列表). <br/>
* @author dingwei
* @return
* @since JDK 1.6
*/
public List<Metadata> getAllMetadatas(){
return metadataDao.getAll();
}
/**
* getAllMetadatas:(根据查询条件查询所有元数据列表). <br/>
* @author dingwei
* @param hql
* @return
* @since JDK 1.6
*/
public List<Metadata> getAllMetadatas(String hql){
return metadataDao.query(hql, null);
}
/**
*
* getAllMetadatas:(根据查询条件查询所有元数据列表). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author sunqipeng
* @param dataType
* @return
* @since JDK 1.6
*/
public List<Metadata> getMetadatasByType(String dataType,String language){
return metadataDao.query("from "+Metadata.class.getName()+" where dataType=? and languageType=?",dataType,language);
}
/**
* 根据datanameid查找唯一的metadata
* @param dataNameId
* @param language
* @return
*/
public Metadata getMetaDataByDataId(String dataNameId,String language){
List<Metadata> metadatas = metadataDao.query("from "+Metadata.class.getName()+" where dataNameId=? and languageType=?",dataNameId,language);
if (metadatas==null ||metadatas.isEmpty())
return null;
return metadatas.get(0);
}
/**
* queryPage:(根据分页查询所有元数据信息按照分页进行显示). <br/>
* @author dingwei
* @param pageRequest
* @return
* @since JDK 1.6
*/
public Page<Metadata> queryPage(PageRequest pageRequest){
Page<Metadata> page = metadataDao.findPage(pageRequest, "from " + Metadata.class.getName(), new String[]{});
return page;
}
/**
* queryPage:(根据输入的查询条件查询所有元数据信息按照分页进行显示). <br/>
* @author dingwei
* @param pageRequest
* @param hql
* @return
* @since JDK 1.6
*/
public Page<Metadata> queryPage(PageRequest pageRequest,String hql){
Page<Metadata> page = metadataDao.findPage(pageRequest, hql, new String[]{});
return page;
}
public Map<String,Object> convertToMap(Metadata metadata){
Map<String,Object> map = new HashMap<String, Object>();
if (metadata==null){
return map;
}
map.put("id",metadata.getId());
map.put("dataName",metadata.getDataName());
map.put("dataType",metadata.getDataType());
map.put("description",metadata.getDescription());
map.put("dataLevel", null == metadata.getDataLevel() ?"":TranslateDataUtil.translateData("dataLevel", metadata.getDataLevel()));
map.put("description",metadata.getDescription());
map.put("languageType", "english".equals(metadata.getLanguageType())?"英文":"中文");
return map;
}
public PageBo<Metadata> convert(Page<Metadata> page){
return new PageBo<Metadata>(page, new Convert<Metadata>() {
@Override
public Map<String, Object> convert(Metadata obj) {
return convertToMap(obj);
}
});
}
//根据元数据名查元数据的集合
public List<Metadata> getMetadatasBydataType(String dataType){
try {
if(null != dataType){
dataType = java.net.URLDecoder.decode(dataType, "UTF-8");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String hql = "from Metadata where dataType ='"+ dataType +"'";
List<Metadata> listBo = getAllMetadatas(hql);
List list = new ArrayList();
if(null != listBo){
for(int i=0;i<listBo.size();i++){
Map result = new HashMap();
result.put("id", listBo.get(i).getId());
result.put("text", listBo.get(i).getDataName());
list.add(result);
}
}
return list;
}
}
package ccpit.base.modol;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.io.Serializable;
import java.lang.annotation.Inherited;
/**
* Created by Administrator on 2015/8/13.
*/
public class BaseEntity implements IEntity,Serializable {
/**
* Serializable ID
*/
private long id;
/**
* set id
*
* @param id
*/
public void setId(long id) {
this.id = id;
}
/**
* Get id
*
* @return
*/
@Override
public long getId() {
return id;
}
}
package ccpit.base.modol;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created by Administrator on 2015/8/13.
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface EscapeHTML {
public String[] except() default {};
}
package ccpit.base.modol;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created by Administrator on 2015/8/13.
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface EscapeSql {
public String[] except() default {};
}
package ccpit.base.modol;
/**
* Created by Administrator on 2015/8/18.
*/
public interface IEntity {
public long getId();
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:OrgDao.java
* Package Name:ccpit.base.orgManage
* Date:2015年9月18日下午4:59:13
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.orgManage;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import ccpit.base.dao.BaseDao;
import ccpit.base.role.Role;
import ccpit.base.user.User;
import org.springframework.stereotype.Repository;
/**
* ClassName:OrgDao <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月18日 下午4:59:13 <br/>
*
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Repository
public class OrgDao extends BaseDao<OrgInfo> {
public List<OrgInfo> getChildOrgById(long id) {
String hql = "from " + OrgInfo.class.getName()+" where parentId=" + id;
List<OrgInfo> orgList = super.query(hql, null);
return orgList;
}
/**
* 查询用户所在的部门
*
* @param user
* @return
*/
public List<OrgInfo> getUserGroupsByUser(User user) {
return query("select distinct ug from " + OrgInfo.class.getName() + " as ug left join ug.users as u " +
"where u.id=? ", user.getId());
}
/**
* 查询所有拥有此角色的部门
*
* @param role
* @return
*/
public List<OrgInfo> getUserGroupsByRole(Role role) {
return query("select distinct ug from " + OrgInfo.class.getName() + " as ug left join ug.roles as r " +
"where r.id=? ", role.getId());
}
/**
* 用户所在的部门是否具有role的角色
*
* @param user
* @param role
* @return
*/
public boolean canUserInGroup(User user, Role role) {
List<OrgInfo> userGroups = getUserGroupsByUser(user);
Set<Role> roleSet = new HashSet<Role>();
for (OrgInfo userGroup : userGroups) {
roleSet.addAll(userGroup.getRoles());
}
return roleSet.contains(role);
}
/**
* 获取用户所在部门的所有角色
* @param user
* @return
*/
public Set<Role> getRolesForUser(User user){
List<OrgInfo> groups = getUserGroupsByUser(user);
Set<Role> roles = new HashSet<Role>();
for (OrgInfo userGroup:groups){
roles.addAll(userGroup.getRoles());
}
return roles;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:OrgInfo.java
* Package Name:ccpit.base.orgManage
* Date:2015年9月18日下午4:45:09
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.orgManage;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import ccpit.base.role.Role;
import ccpit.base.user.User;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.Where;
import com.fasterxml.jackson.annotation.JsonIgnore;
/**
* ClassName:OrgInfo <br/>
* Function: TODO 机构信息实体类 <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月18日 下午4:45:09 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Where(clause ="whetherDelete = 'false'")
public class OrgInfo {
private long id;
/**
* 父id
*/
private long parentId;
/**
* 机构名称
*/
private String name;
/**
* 机构编号
*/
private String orgNum;
/**
* 机构排序号
*/
private Integer orderNumber;
/**
* 机构用户
*/
@JsonIgnore
private Set<User> users = new HashSet<User>();
/**
* 机构角色
*/
@JsonIgnore
private Set<Role> roles = new HashSet<Role>();
/**
* 父机构名称
*/
private String parentName;
/**
* 描述
*/
private String description;
/**
* 创建人
*/
private String createUser;
/**
* 创建时间
*/
private Date createDate;
/**
* 备用字段1
*/
private String standby1;
/**
* 备用字段2
*/
private String standby2;
/**
* 备用字段3
*/
private String standby3;
/**
* 备用字段4
*/
private String standby4;
private Integer checked;
/**
* 是否删除 逻辑删除
*/
private boolean whetherDelete;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getParentId() {
return parentId;
}
public void setParentId(long parentId) {
this.parentId = parentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(Integer orderNumber) {
this.orderNumber = orderNumber;
}
public String getParentName() {
return parentName;
}
public void setParentName(String parentName) {
this.parentName = parentName;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public String getStandby1() {
return standby1;
}
public void setStandby1(String standby1) {
this.standby1 = standby1;
}
public String getStandby2() {
return standby2;
}
public void setStandby2(String standby2) {
this.standby2 = standby2;
}
public String getStandby3() {
return standby3;
}
public void setStandby3(String standby3) {
this.standby3 = standby3;
}
public String getStandby4() {
return standby4;
}
public void setStandby4(String standby4) {
this.standby4 = standby4;
}
public Integer getChecked() {
return checked;
}
public void setChecked(Integer checked) {
this.checked = checked;
}
@ManyToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
@ManyToMany(fetch = FetchType.EAGER,cascade = CascadeType.ALL)
public Set<Role> getRoles() {
return roles;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
public String getOrgNum() {
return orgNum;
}
public void setOrgNum(String orgNum) {
this.orgNum = orgNum;
}
public boolean isWhetherDelete() {
return whetherDelete;
}
public void setWhetherDelete(boolean whetherDelete) {
this.whetherDelete = whetherDelete;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:OrgService.java
* Package Name:ccpit.base.orgManage
* Date:2015年9月18日下午4:55:11
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.orgManage;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.transaction.Transactional;
import ccpit.base.controller.Page;
import ccpit.base.controller.PageRequest;
import ccpit.base.role.Role;
import ccpit.base.role.RoleDao;
import ccpit.base.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
/**
* ClassName:OrgService <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月18日 下午4:55:11 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Repository
@Transactional
public class OrgService {
@Autowired
private OrgDao orgDao;
@Autowired
private RoleDao roleDao;
/**
*
* addOrg:(新增机构信息). <br/>
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public boolean addOrg(OrgInfo orgInfo){
return orgDao.save(orgInfo);
}
/**
*
* updateOrg:(修改机构信息). <br/>
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public boolean updateOrg(OrgInfo orgInfo){
return orgDao.update(orgInfo);
}
/**
*
* updateOrg:(根据Id删除机构信息). <br/>
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public boolean delOrgById(long id){
return orgDao.deleteById(id);
}
/**
*
* updateOrg:(根据id查询机构详细信息). <br/>
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public OrgInfo getOrgById(long id){
return orgDao.queryById(id);
}
/**
*
* updateOrg:(获取机构列表信息). <br/>
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public List<OrgInfo> getOrgInfoList(){
return orgDao.queryAll();
}
/**
*
* getOrgInfoList:(根据条件查询机构信息). <br/>
* @author dingwei
* @param hql
* @return
* @since JDK 1.6
*/
public List<OrgInfo> getOrgInfoList(String hql){
return orgDao.query(hql, null);
}
public List<OrgInfo> getChildOrgById(long id){
return orgDao.getChildOrgById(id);
}
/**
*
* updateOrg:(获取机构列表信息 分页展示). <br/>
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public Page<OrgInfo> queryPage(PageRequest pageRequest){
Page<OrgInfo> page = orgDao.findPage(pageRequest, "from " + OrgInfo.class.getName(), new String[]{});
return page;
}
/**
*
* updateOrg:(根据查询条件获取机构列表信息 分页展示). <br/>
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public Page<OrgInfo> queryPage(PageRequest pageRequest,String hql){
Page<OrgInfo> page = orgDao.findPage(pageRequest, hql + OrgInfo.class.getName(), new String[]{});
return page;
}
public boolean save(OrgInfo org){
return orgDao.save(org);
}
/**
* 查询用户所在的部门
* @param user
* @return
*/
public List<OrgInfo> getUserGroupsByUser(User user){
return orgDao.getUserGroupsByUser(user);
}
/**
* 查询所有拥有此角色的部门
* @param role
* @return
*/
public List<OrgInfo> getUserGroupsByRole(Role role){
return orgDao.getUserGroupsByRole(role);
}
/**
* 用户所在的部门是否具有role的角色
* @param user
* @param role
* @return
*/
public boolean canUserInGroup(User user,Role role){
return orgDao.canUserInGroup(user, role);
}
/**
* 获取用户所在部门的所有角色
* @param user
* @return
*/
public Set<Role> getRolesForUser(User user){
return orgDao.getRolesForUser(user);
}
/**
* Find OrgInfo by id
* @param id
* @return
*/
public OrgInfo get(long id){
return orgDao.queryById(id);
}
/**
*
* setOrg_roles:(给部门设置角色). <br/>
* @author dingwei
* @param orgInfo
* @param ids
* @return
* @since JDK 1.6
*/
public boolean setOrg_roles(OrgInfo orgInfo,Long[] ids){
Set<Role> roleSet = new HashSet<Role>();
boolean flag = false;
for(long id : ids){
roleSet.add(roleDao.queryById(id));
}
orgInfo.getRoles().clear();
boolean flag1 = orgDao.update(orgInfo);
if(flag1){
OrgInfo org = orgDao.queryById(orgInfo.getId());
org.setRoles(roleSet);
flag = orgDao.save(org);
}
return flag;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:Operate.java
* Package Name:ccpit.base.privilegeManage
* Date:2015年9月23日下午3:31:14
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.privilegeManage;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
* ClassName:Operate <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月23日 下午3:31:14 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Operate implements Serializable{
/**
* serialVersionUID:TODO(用一句话描述这个变量表示什么).
* @since JDK 1.6
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
/**
* 上级id
*/
private long parentId;
/**
* 权限名称
*/
private String operateName;
/**
* 上级权限名称
*/
private String parentName;
/**
* 权限url
*/
private String priUrl;
/**
* 权限描述
*/
private String description;
/**
* 创建人
*/
private String createUser;
/**
* 创建时间
*/
private Date createDate;
/**
* 备用字段1
*/
private String standby1;
/**
* 备用字段2
*/
private String standby2;
/**
* 备用字段3
*/
private String standby3;
/**
* 备用字段4
*/
private String standby4;
public String getOperateName() {
return operateName;
}
public void setOperateName(String operateName) {
this.operateName = operateName;
}
public String getPriUrl() {
return priUrl;
}
public void setPriUrl(String priUrl) {
this.priUrl = priUrl;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getParentId() {
return parentId;
}
public void setParentId(long parentId) {
this.parentId = parentId;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public String getStandby1() {
return standby1;
}
public void setStandby1(String standby1) {
this.standby1 = standby1;
}
public String getStandby2() {
return standby2;
}
public void setStandby2(String standby2) {
this.standby2 = standby2;
}
public String getStandby3() {
return standby3;
}
public void setStandby3(String standby3) {
this.standby3 = standby3;
}
public String getStandby4() {
return standby4;
}
public void setStandby4(String standby4) {
this.standby4 = standby4;
}
public String getParentName() {
return parentName;
}
public void setParentName(String parentName) {
this.parentName = parentName;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:OperateController.java
* Package Name:ccpit.base.privilegeManage
* Date:2015年9月23日下午3:33:39
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.privilegeManage;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ccpit.base.role.Role;
import ccpit.base.role.RoleService;
import ccpit.base.role.RoleUrl;
import ccpit.base.user.User;
import ccpit.base.user.UserController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
/**
* ClassName:OperateController <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月23日 下午3:33:39 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Controller
@RequestMapping("/admin/privilegeManage")
public class OperateController {
private static final Logger log = LoggerFactory.getLogger(UserController.class);
@Autowired
private OperateService operateService;
@Autowired
private RoleService roleService;
/*
* 进入权限管理列表界面
*/
@RequestMapping("/goinPriListPage")
public Object goinPriListPage() {
ModelAndView mv = new ModelAndView("admin/privilegeManage/privilegeListPage");
return mv;
}
/*
* 进入角色权限分配管理列表界面
*/
@RequestMapping("/goRolePriListPage")
public Object goRolePriListPage() {
ModelAndView mv = new ModelAndView("admin/privilegeManage/rolePriListPage");
return mv;
}
@RequestMapping({ "/getLeftTree" })
@ResponseBody
public Object getLeftTree(HttpServletRequest request) {
String isroot = request.getParameter("isroot");
User user = (User) request.getSession().getAttribute("user_in_session");
List result = new ArrayList();
List<Operate> orglist = null;
// if (("true".equals(isroot)) ||
// ("superadmin".equals(userBo.getLoginName()))){
// listBo = this.unitService.findUnitByHierarchy("01");
// }
// else {
// }
orglist = this.operateService.getOperateList();
List listBo1 = null;
if (null != orglist) {
for (Operate operate : orglist) {
Map item = new HashMap();
if (1 == operate.getId()) {
item.put("id", operate.getId());
item.put("text", operate.getOperateName());
item.put("priUrl", operate.getPriUrl());
item.put("children", getChildren(operate.getId(), orglist));
result.add(item);
}
}
}
return result;
}
public List<Map<String, Object>> getChildren(long id, List<Operate> orgList) {
List items = new ArrayList();
for (Operate operate : orgList) {
if (operate.getParentId() == id) {
Operate gg = (Operate) operate;
Map item = new HashMap();
item.put("id", gg.getId());
item.put("text", gg.getOperateName());
item.put("priUrl", gg.getPriUrl());
item.put("children", getChildren(gg.getId(), orgList));
items.add(item);
}
}
return items;
}
@RequestMapping("/addOrUpdateOperate")
@ResponseBody
public Object addOrUpdateOperate(HttpServletRequest request,
HttpServletResponse response, Operate opeBo) {
Map map = new HashMap();
User user = (User) request.getSession().getAttribute("user_in_session");
String operatePId = request.getParameter("operatePId");
String operatePName = request.getParameter("operatePName");
String operateType = request.getParameter("operateType");
if (null != operatePName) {
try {
operatePName = java.net.URLDecoder.decode(operatePName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
if ("add".equals(operateType)) {
opeBo.setParentId(Long.valueOf(operatePId));
opeBo.setParentName(operatePName);
opeBo.setCreateDate(new Date());
opeBo.setCreateUser(user.getUsername());
operateService.addOperate(opeBo);
map.put("flag", true);
map.put("info", "权限信息保存成功!");
}else if("edit".equals(operateType)) {
Operate ope = operateService.getOperateByID(Long.valueOf(operatePId));
if(null != opeBo.getOperateName()){
ope.setOperateName(opeBo.getOperateName());
}if(null != opeBo.getPriUrl()){
ope.setPriUrl(opeBo.getPriUrl());
}if(null != opeBo.getDescription()){
ope.setDescription(opeBo.getDescription());
}if(null != opeBo.getParentName()){
ope.setParentName(opeBo.getParentName());
}
operateService.updateOperate(ope);
map.put("flag", true);
map.put("info", "权限信息保存成功!");
}else {
map.put("flag", false);
map.put("info", "权限信息保存失败...");
}
response.setContentType("text/html");
return map;
}
/**
*
* isExistNext:(判断是否存在子权限). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author dingwei
* @param request
* @return
* @since JDK 1.6
*/
@RequestMapping({ "/isExistNext" })
@ResponseBody
public Object isExistNext(HttpServletRequest request) {
String orgId = request.getParameter("orgId");
Map result = new HashMap();
List list = operateService.getChildOperateById(Long.valueOf(orgId));
if (null != list) {
if (list.size() > 0) {
result.put("flag", false);
result.put("info", "当前菜单存在子菜单,无法进行删除!");
} else {
result.put("flag", true);
}
} else {
result.put("flag", true);
}
return result;
}
/**
* 根据id删除
* @param request
* @param response
* @return
*/
@RequestMapping("/deleteOrg")
@ResponseBody
public Object deleteOrg(HttpServletRequest request, HttpServletResponse response){
Map result = new HashMap();
String orgId = request.getParameter("ids");
if(null != orgId){
boolean flag = operateService.delOperateByID(Long.valueOf(orgId));
result.put("flag", true);
}else {
result.put("flag", false);
}
return result;
}
@RequestMapping("/queryOrgById")
@ResponseBody
public Object queryOrgById(HttpServletRequest request,
HttpServletResponse response) {
String orgId = request.getParameter("orgId");
Operate orgInfo = operateService.getOperateByID(Long.valueOf(orgId));
return orgInfo;
}
/**
* 根据角色Id查询权限id
*/
@RequestMapping("/queryPriurlByRoleId")
@ResponseBody
public Object queryPriurlByRoleId(HttpServletRequest request){
Map result = new HashMap();
String roleId = request.getParameter("roleId");
List<Operate> oList = operateService.getOperateList();
Role role = roleService.get(Long.valueOf(roleId));
List<RoleUrl> urlPerfixs = role.getUrlPerfixs();
List<Integer> urlList = new ArrayList<Integer>();
if(null != urlPerfixs){
for(int i=0;i<urlPerfixs.size();i++){
RoleUrl roleUrl = urlPerfixs.get(i);
if(null != oList){
for(Operate o : oList){
if(roleUrl.getUrl().equals(o.getPriUrl())){
urlList.add((int) o.getId());
}
}
}
}
result.put("flag", urlList);
}
return result;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:OperateDao.java
* Package Name:ccpit.base.privilegeManage
* Date:2015年9月23日下午3:34:28
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.privilegeManage;
import java.util.List;
import ccpit.base.dao.BaseDao;
import org.springframework.stereotype.Repository;
/**
* ClassName:OperateDao <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月23日 下午3:34:28 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Repository
public class OperateDao extends BaseDao<Operate>{
public List<Operate> getChildOrgById(long id) {
String hql = "from " + Operate.class.getName()+" where parentId=" + id;
List<Operate> orgList = super.query(hql, null);
return orgList;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:OperateService.java
* Package Name:ccpit.base.privilegeManage
* Date:2015年9月23日下午3:34:18
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package ccpit.base.privilegeManage;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
/**
* ClassName:OperateService <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月23日 下午3:34:18 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Repository
@Transactional
public class OperateService {
@Autowired
private OperateDao operateDao;
public boolean addOperate(Operate operate){
return operateDao.save(operate);
}
public boolean updateOperate(Operate operate){
return operateDao.update(operate);
}
public boolean delOperateByID(long id){
return operateDao.deleteById(id);
}
public Operate getOperateByID(long id){
return operateDao.queryById(id);
}
public List<Operate> getOperateList(){
return operateDao.queryAll();
}
public List<Operate> getChildOperateById(long id){
return operateDao.getChildOrgById(id);
}
}
package ccpit.base.role;
import java.util.List;
/**
*
* ClassName: IRole <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON(可选). <br/>
* date: 2015年4月14日 上午11:45:48 <br/>
*
* @author dingwei
* @version
* @since JDK 1.6
*/
public interface IRole {
public String getRoleName();
public List<RoleUrl> getUrlPerfixs();
public long getId();
}
package ccpit.base.role;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import ccpit.base.modol.BaseEntity;
import ccpit.base.orgManage.OrgInfo;
import ccpit.base.user.User;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.Where;
import com.fasterxml.jackson.annotation.JsonIgnore;
/**
*
* ClassName: Role <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON(可选). <br/>
* date: 2015年4月14日 下午2:15:28 <br/>
*
* @author dingwei
* @version
* @since JDK 1.6
*/
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Where(clause="whetherDelete = 'false'")
public class Role extends BaseEntity implements IRole {
private String roleName;
private List<RoleUrl> urlPerfixs = new ArrayList<RoleUrl>();
private String description;
private boolean whetherDelete;
@JsonIgnore
private List<User> userList = new ArrayList<User>();
@JsonIgnore
private List<OrgInfo> orgList = new ArrayList<OrgInfo>();
@Override
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long getId() {
return super.getId();
}
@Override
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
@Override
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
public List<RoleUrl> getUrlPerfixs() {
return urlPerfixs;
}
public void setUrlPerfixs(List<RoleUrl> urlPerfixs) {
this.urlPerfixs = urlPerfixs;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public int hashCode() {
return ("role"+getId()).hashCode();
}
@Override
public boolean equals(Object o) {
if(o == null){
return false;
}
if(o == this){
return true;
}
if(o.getClass() == Role.class){
return o.hashCode()==this.hashCode();
}
return false;
}
@ManyToMany(fetch=FetchType.LAZY,cascade = CascadeType.PERSIST,mappedBy="roles")
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
@ManyToMany(fetch=FetchType.LAZY,cascade = CascadeType.PERSIST,mappedBy="roles")
public List<OrgInfo> getOrgList() {
return orgList;
}
public void setOrgList(List<OrgInfo> orgList) {
this.orgList = orgList;
}
public boolean isWhetherDelete() {
return whetherDelete;
}
public void setWhetherDelete(boolean whetherDelete) {
this.whetherDelete = whetherDelete;
}
}
package ccpit.base.role;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import ccpit.base.controller.BaseController;
import ccpit.base.controller.Page;
import ccpit.base.controller.PageRequest;
import ccpit.base.orgManage.OrgInfo;
import ccpit.base.orgManage.OrgService;
import ccpit.base.user.User;
import ccpit.base.user.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
/**
* Created by Administrator on 2015/9/6.
*/
@Controller
@RequestMapping("/admin/role")
public class RoleController extends BaseController{
@Autowired
private RoleService roleService;
@Autowired
private UserService userService;
@Autowired
private OrgService orgService;
@RequestMapping("/goinRoleListPage")
public Object manage(){
return new ModelAndView("admin/role/roleListPage");
}
@RequestMapping("/addRole")
public void addRole(String roleName,String urlPerfixs,String description,HttpServletResponse response){
String result = "";
boolean flag = roleService.addRole(roleName,urlPerfixs,description);
if(flag){
result = "{ \"flag\": "+ flag +", \"info\": \"数据保存成功!\" }";
}else {
result = "{ \"flag\": "+ flag +", \"info\": \"数据保存失败!\" }";
}
try {
response.setContentType("text/html");
response.getWriter().write(result);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* addRolePri:(添加角色操作权限). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author dingwei
* @return
* @since JDK 1.6
*/
@RequestMapping("/addRolePri")
public void addRolePri(HttpServletRequest request,HttpServletResponse response){
String result = "";
String roleId = request.getParameter("roleId");
String priIds = request.getParameter("priIds");
String urlPrefixs = priIds.replace("[", "").replace("]", "");
boolean flag = roleService.editRole(Long.valueOf(roleId), "", urlPrefixs, "");
if(flag){
result = "{ \"flag\": "+ flag +", \"info\": \"数据保存成功!\" }";
}else {
result = "{ \"flag\": "+ flag +", \"info\": \"数据保存失败!\" }";
}
try {
response.setContentType("text/html");
response.getWriter().write(result);
} catch (IOException e) {
e.printStackTrace();
}
}
@RequestMapping("/editRole/{id}")
public void editRole(@PathVariable long id,String roleName,String urlPerfixs,String description,HttpServletResponse response){
String result = "";
boolean flag = roleService.editRole(id, roleName, urlPerfixs,description);
if(flag){
result = "{ \"flag\": "+ flag +", \"info\": \"数据保存成功!\" }";
}else {
result = "{ \"flag\": "+ flag +", \"info\": \"数据保存失败!\" }";
}
try {
response.setContentType("text/html");
response.getWriter().write(result);
} catch (IOException e) {
e.printStackTrace();
}
}
@RequestMapping("/userRoles/{id}")
@ResponseBody
public Object userRoles(@PathVariable long id){
User user = userService.getUser(id);
if (user!=null){
return userService.getUserRoles(user);
}
return "false";
}
/**
*
* getOrgRoles:(获取部门所拥有的所有角色). <br/>
* @author dingwei
* @param id
* @return
* @since JDK 1.6
*/
@RequestMapping("/getOrgRoles/{id}")
@ResponseBody
public Object getOrgRoles(@PathVariable long id){
OrgInfo orgInfo = orgService.getOrgById(id);
if(null != orgInfo && orgInfo.getRoles().size()>0){
return orgInfo.getRoles();
}
return "false";
}
@RequestMapping("/delRoles")
@ResponseBody
public Object delRoles(HttpServletRequest request){
Map<String, Object> map = new HashMap<String, Object>();
String jsonIds = request.getParameter("ids");
JSONArray jsonArray = JSONArray.fromObject(jsonIds);
Object[] ids = jsonArray.toArray();
for(Object str : ids){
Role role = roleService.get((Integer) str);
role.setWhetherDelete(true);
roleService.updateRole(role);
}
map.put("flag", true);
map.put("info", "数据删除成功!");
return map;
}
@RequestMapping("/saveUserRoles/{id}")
@ResponseBody
public Object saveUserRoles(@PathVariable long id,HttpServletRequest request,String[] ids){
User user = userService.getUser(id);
//todo save
Map<String, Object> map = new HashMap<String, Object>();
JSONArray jsonArray = JSONArray.fromObject(ids);
Object[] arr = jsonArray.toArray();
Long[] longs = new Long[arr.length];
for (int i=0;i<arr.length;i++){
longs[i] = Long.parseLong(arr[i].toString());
}
boolean flag = userService.saveUserRoles(user,longs);
if (flag){
map.put("flag", true);
map.put("info", "数据删除成功!");
}else{
map.put("flag", false);
map.put("info", "保存失败!");
}
return map;
}
@RequestMapping("/getAllRoles")
@ResponseBody
public Object getAllRoles(HttpServletRequest request){
PageRequest pageRequest = getPage(request);
String roleName = request.getParameter("roleName");
StringBuffer hql = new StringBuffer("from Role where 1=1");
if(null == roleName){
}else {
if(null != roleName){
hql.append(" and roleName like '%" + roleName +"%'");
}
}
Page<Role> pageRole = roleService.getAll(pageRequest, hql.toString());
return roleService.convert(pageRole);
}
@RequestMapping("/getRoleByID")
@ResponseBody
public Role getRoleByID(HttpServletRequest request){
String roleId = request.getParameter("roleId");
Role role = null;
if(null != roleId){
role = roleService.get(Long.valueOf(roleId));
}
return role;
}
@RequestMapping("/getRolesList")
@ResponseBody
public Object getRolesList(HttpServletRequest request){
List<Role> listBo = roleService.getAllRoles();
List list = new ArrayList();
if(null != listBo){
for(int i=0;i<listBo.size();i++){
Map result = new HashMap();
result.put("id", listBo.get(i).getId());
result.put("text", listBo.get(i).getRoleName());
list.add(result);
}
}
return list;
}
}
package ccpit.base.role;
import ccpit.base.dao.BaseDao;
import org.springframework.stereotype.Repository;
/**
*
* ClassName: RoleDao <br/>
* Function: TODO 角色实体操作类. <br/>
* Reason: TODO ADD REASON(可选). <br/>
* date: 2014年4月12日 下午1:46:36 <br/>
*
* @author dingwei
* @version
* @since JDK 1.6
*/
@Repository
public class RoleDao extends BaseDao<Role> {
public Role getRoleByUrl(String url){
Role role = findUnique("select r from "+Role.class.getName()+" as r left join r.urlPerfixs as p where p.url = ?",new String[]{url});
return role;
}
}
package ccpit.base.role;
import org.apache.commons.lang.StringUtils;
import ccpit.base.controller.Convert;
import ccpit.base.controller.Page;
import ccpit.base.controller.PageBo;
import ccpit.base.controller.PageRequest;
import ccpit.base.user.UserDao;
import ccpit.base.utils.UrlRolesMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.transaction.Transactional;
import java.util.*;
/**
*
* ClassName: RoleService <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON(可选). <br/>
* date: 2015年4月14日 下午1:45:05 <br/>
*
* @author dingwei
* @version
* @since JDK 1.6
*/
@Repository
@Transactional
public class RoleService {
@Autowired
private RoleDao roleDao;
@Autowired
private UrlRolesMapper mapper;
public boolean addRole(String roleName, String url,String description) {
Role role = new Role();
role.setRoleName(roleName);
role.setDescription(description);
List<RoleUrl> urlList = new ArrayList<RoleUrl>();
for (String u : url.split(",")) {
RoleUrl ru = new RoleUrl();
ru.setUrl(u);
urlList.add(ru);
}
role.setUrlPerfixs(urlList);
return roleDao.save(role);
}
public boolean addRole(Role role) {
boolean result = roleDao.save(role);
if (result){
mapper.reload();
}
return result;
}
public boolean editRole(long id,String roleName,String urlPrefixs,String description) {
Role role = roleDao.queryById(id);
urlPrefixs = getPriId(urlPrefixs);
if (role!=null){
if(null != roleName && !"".equals(roleName)){
role.setRoleName(roleName);
}
if(null != roleName && !"".equals(description)){
role.setDescription(description);
}
List<RoleUrl> urlList = new ArrayList<RoleUrl>();
for (String u : urlPrefixs.split(",")) {
RoleUrl ru = new RoleUrl();
ru.setUrl(u);
urlList.add(ru);
}
role.setUrlPerfixs(urlList);
boolean result = roleDao.update(role);
if (result)
mapper.reload();
return result;
}
return false;
}
public boolean updateRole(Role role){
return roleDao.update(role);
}
public boolean deleteRole(long id) {
boolean result = roleDao.deleteById(id);
if (result){
mapper.reload();
}
return result;
}
public Role get(long id) {
return roleDao.queryById(id);
}
public Page<Role> getAll(PageRequest pr) {
return roleDao.findPage(pr, "from " + Role.class.getName(), null);
}
public Page<Role> getAll(PageRequest pr,String hql) {
return roleDao.findPage(pr, hql, null);
}
public List<Role> getAll(String hql) {
return roleDao.query(hql);
}
public List<Role> getAllRoles(){
return roleDao.queryAll();
}
public Map<String,Object> convertToMap(Role role){
Map<String,Object> map = new HashMap<String, Object>();
if (role==null)
return map;
List<String> urls = new ArrayList<String>();
for (RoleUrl roleUrl:role.getUrlPerfixs()){
urls.add(roleUrl.getUrl());
}
map.put("urlPrefixs", StringUtils.join(urls,","));
map.put("roleName",role.getRoleName());
map.put("id",role.getId());
map.put("urlPerfixs",urls);
map.put("description",role.getDescription());
return map;
}
public PageBo<Role> convert(Page<Role> page){
return new PageBo<Role>(page, new Convert<Role>() {
@Override
public Map<String, Object> convert(Role obj) {
return convertToMap(obj);
}
});
}
/**
* 根据url查找role
* @param url
* @return
*/
public Role findRoleByUrl(String url){
return roleDao.getRoleByUrl(url);
}
//去掉重复priId
private String getPriId(String priIds){
List list = new ArrayList();
String[] str = priIds.split(",");
if(null != str && !"".equals(str)){
for(int i=0; i<str.length;i++){
if(!list.contains(str[i])){
list.add(str[i]);
}
}
}
String priId = "";
if(null != list && list.size()>0){
for(int j=0;j<list.size();j++){
String id = (String) list.get(j);
priId += id + ",";
}
}
return priId.substring(0, priId.length()-1);
}
}
package ccpit.base.role;
import ccpit.base.modol.BaseEntity;
import org.hibernate.annotations.*;
import javax.persistence.*;
import javax.persistence.Entity;
/**
* 角色 地址 映射表
* Created by Administrator on 2015/9/6.
*/
@Entity
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class RoleUrl extends BaseEntity {
private String url;
@Override
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long getId() {
return super.getId();
}
/**
* 唯一,不可为空
*/
@Column(unique = false, nullable = false)
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
package ccpit.base.security;
import ccpit.base.controller.BaseController;
import ccpit.base.user.User;
import ccpit.base.user.UserService;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
/**
* Created by Administrator on 2015/9/8.
*/
public class CmsTagSupport extends TagSupport implements ApplicationContextAware{
static String SPLIT = ",";
static ApplicationContext ac;
public User getUser(){
HttpServletRequest req = (HttpServletRequest) pageContext.getRequest();
Object obj = req.getSession().getAttribute(BaseController.USER_IN_SESSION);
if (obj==null)
return null;
return (User) obj;
// UserService userService = ac.getBean(UserService.class);
// User user = userService.getUser(1L);
// return user;
}
@Override
public int doStartTag() throws JspException {
if (getUser()==null)
return SKIP_BODY;
return validate()?EVAL_PAGE:SKIP_BODY;
}
/**
* validate the security return the result
* @return
*/
public boolean validate(){
return false;
};
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ac=applicationContext;
}
}
package ccpit.base.security;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import ccpit.base.controller.BaseController;
/**
* 用户登录Filter 拦截后台所有请求
*
* Created by sqp on 2015/9/30.
*/
public class LoginFilter implements Filter {
//排除的URL
private List<String> exceptPaths = new ArrayList<String>();
//拦截之后重定向的url
private String redirectPath = "";
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String exceptPath = filterConfig.getInitParameter("exceptPaths");
if (StringUtils.isNotBlank(exceptPath)) {
exceptPaths.addAll(Arrays.asList(exceptPath.split(",")));
}
redirectPath = filterConfig.getInitParameter("redirectPath");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
if (exceptPaths.contains(request.getRequestURI())){
filterChain.doFilter(request,servletResponse);
return;
}
if (request.getSession().getAttribute(BaseController.USER_IN_SESSION) == null) {
response.sendRedirect(redirectPath);
return;
}
filterChain.doFilter(request,servletResponse);
}
@Override
public void destroy() {
}
}
package ccpit.base.security;
import org.apache.commons.lang.StringUtils;
import ccpit.base.user.User;
import ccpit.base.usergroup.UserGroup;
import ccpit.base.usergroup.UserGroupService;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
/**
* Created by Administrator on 2015/9/7.
*/
public class SecurityAllGroupTag extends CmsTagSupport {
private String groups;
@Override
public boolean validate() {
if (groups==null||groups.isEmpty())
return true;
String[] g = getGroups().split(SPLIT);
UserGroupService userGroupService = ac.getBean(UserGroupService.class);
boolean can = true;
User user = getUser();
for (String gs:g){
if (StringUtils.isNumeric(gs)){
UserGroup userGroup = userGroupService.get(Long.parseLong(gs));
if (!userGroup.getUsers().contains(user)){
can = false;
break;
}
}
}
return can;
}
public String getGroups() {
return groups;
}
public void setGroups(String groups) {
this.groups = groups;
}
}
package ccpit.base.security;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import ccpit.base.role.Role;
import ccpit.base.user.UserService;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* Created by Administrator on 2015/9/7.
*/
public class SecurityAllRoleTag extends CmsTagSupport {
private String roles;
@Override
public boolean validate() {
if (roles==null||roles.isEmpty())
return true;
String[] roles = getRoles().split(SPLIT);
List<Role> tagRoles = new ArrayList<Role>();
for (String roleId:roles){
Role r =new Role();
if (StringUtils.isNumeric(roleId))
r.setId(Long.parseLong(roleId));
tagRoles.add(r);
}
Set<Role> userRoles = ac.getBean(UserService.class).getUserRolesIncludeGroup(getUser());
boolean can = true;
for (Role r:tagRoles){
if (!userRoles.contains(r)){
can = false;
break;
}
}
return can;
}
public String getRoles() {
return roles;
}
public void setRoles(String roles) {
this.roles = roles;
}
}
package ccpit.base.security;
import org.apache.commons.lang.StringUtils;
import ccpit.base.user.User;
import ccpit.base.usergroup.UserGroup;
import ccpit.base.usergroup.UserGroupService;
/**
* Created by Administrator on 2015/9/7.
*/
public class SecurityAnyGroupTag extends CmsTagSupport {
private String groups;
@Override
public boolean validate() {
if (groups==null||groups.isEmpty())
return true;
String[] g = getGroups().split(SPLIT);
UserGroupService userGroupService = ac.getBean(UserGroupService.class);
boolean can = false;
User user = getUser();
for (String gs:g){
if (StringUtils.isNumeric(gs)){
UserGroup userGroup = userGroupService.get(Long.parseLong(gs));
if (userGroup.getUsers().contains(user)){
can = true;
break;
}
}
}
return can;
}
public String getGroups() {
return groups;
}
public void setGroups(String groups) {
this.groups = groups;
}
}
package ccpit.base.security;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import ccpit.base.role.Role;
import ccpit.base.user.UserService;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* Created by Administrator on 2015/9/7.
*/
public class SecurityAnyRoleTag extends CmsTagSupport {
private String roles;
@Override
public boolean validate() {
if (roles==null||roles.isEmpty())
return true;
String[] roles = getRoles().split(SPLIT);
List<Role> tagRoles = new ArrayList<Role>();
for (String roleId:roles){
Role r =new Role();
if (StringUtils.isNumeric(roleId))
r.setId(Long.parseLong(roleId));
tagRoles.add(r);
}
Set<Role> userRoles = ac.getBean(UserService.class).getUserRolesIncludeGroup(getUser());
return CollectionUtils.containsAny(tagRoles,userRoles);
}
public String getRoles() {
return roles;
}
public void setRoles(String roles) {
this.roles = roles;
}
}
package ccpit.base.security;
import org.apache.commons.collections.CollectionUtils;
import ccpit.base.role.Role;
import ccpit.base.user.User;
import ccpit.base.utils.UrlRolesMapper;
import ccpit.base.utils.UserRolesUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Set;
/**
* 安全权限拦截器 拦截所有后台请求 判断User role url的对应关系
* Created by Administrator on 2015/9/2.
*/
@Configurable
public class SecurityInterceptor extends HandlerInterceptorAdapter {
//默认的返回值 没有找到Url对应的角色的时候返回此参数
private static final boolean DEFAULT_RETURN = true;
@Autowired
private UrlRolesMapper urlRolesMapper;
@Autowired
private UserRolesUtil userRolesUtil;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
User user = (User) request.getSession().getAttribute("user_in_session");
if (user == null) {
return true;
}
Set<Role> roles = urlRolesMapper.getRoles(request.getRequestURI());
if (roles == null || roles.isEmpty()) {
return DEFAULT_RETURN;
}
Set<Role> roleSet = userRolesUtil.getAllRoles(request);
return CollectionUtils.containsAny(roles, roleSet);
}
}
package ccpit.base.security;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.collections.CollectionUtils;
import ccpit.base.role.Role;
import ccpit.base.utils.UrlRolesMapper;
import ccpit.base.utils.UserRolesUtil;
import org.springframework.stereotype.Component;
/**
* 自定义标签 判断用户权限
* Created by Administrator on 2015/9/7.
*/
@Component
public class SecurityUriTag extends CmsTagSupport{
/** Uri to check */
private String uri;
@Override
public boolean validate() {
Set<Role> roles = ac.getBean(UrlRolesMapper.class).getRoles(getUri());
if (roles==null || roles.isEmpty()){
return false;
}
UserRolesUtil userRolesUtil = ac.getBean(UserRolesUtil.class);
Set<Role> roleSet = userRolesUtil.getAllRoles((HttpServletRequest) pageContext.getRequest());
if (roleSet.isEmpty()){
return false;
}
return CollectionUtils.containsAny(roles,roleSet);
}
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
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