Commit 9f295dc1 by 丁伟

培训中心报名系统初始提交

parent d91822c1
eclipse.preferences.version=1
encoding/<project>=UTF-8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.6
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="registration">
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<wb-resource deploy-path="/" source-path="/webapp"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/config"/>
<property name="context-root" value="registration"/>
<property name="java-output-path" value="/registration/build/classes"/>
</wb-module>
</project-modules>
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<runtime name="Apache Tomcat v7.0"/>
<fixed facet="wst.jsdt.web"/>
<fixed facet="jst.web"/>
<fixed facet="java"/>
<installed facet="java" version="1.6"/>
<installed facet="jst.web" version="3.0"/>
<installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>
org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
Window
\ No newline at end of file
disabled=06target
eclipse.preferences.version=1
初始提交
\ No newline at end of file
This diff is collapsed. Click to expand it.
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:LoginController.java
* Package Name:org.ccpit.admin
* Date:2015年9月15日上午11:20:00
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.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 org.ccpit.base.controller.BaseController;
import org.ccpit.base.controller.ValidateCodeController;
import org.ccpit.base.logManage.LogInfoService;
import org.ccpit.base.user.User;
import org.ccpit.base.user.UserService;
import org.ccpit.base.utils.PasswordHash;
import org.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", "密码输入错误,请重新输入!");
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 org.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 org.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(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 org.ccpit.base.controller;
import org.apache.commons.lang.StringUtils;
/**
* 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:project
* File Name:LogInfo.java
* Package Name:org.ccpit.base.logManage
* Date:2015年10月16日下午3:06:57
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.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:org.ccpit.base.logManage
* Date:2015年10月19日上午10:23:09
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.logManage;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import net.sf.json.JSONArray;
import org.ccpit.base.controller.BaseController;
import org.ccpit.base.controller.Page;
import org.ccpit.base.controller.PageRequest;
import org.ccpit.base.user.User;
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:org.ccpit.base.logManage
* Date:2015年10月19日上午10:18:02
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.logManage;
import org.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:org.ccpit.base.logManage
* Date:2015年10月19日上午10:18:26
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.logManage;
import org.ccpit.base.controller.*;
import org.ccpit.base.user.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.servlet.http.HttpServletRequest;
import javax.transaction.Transactional;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* 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 MM:hh: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);
}
});
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:Metadata.java
* Package Name:org.ccpit.base.metadataManage
* Date:2015年9月25日上午9:53:11
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.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 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;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:MetadataController.java
* Package Name:org.ccpit.base.metadataManage
* Date:2015年9月25日上午10:24:53
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.metadataManage;
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 net.sf.json.JSONArray;
import org.ccpit.base.controller.BaseController;
import org.ccpit.base.controller.Page;
import org.ccpit.base.controller.PageRequest;
import org.ccpit.base.user.User;
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:MetadataController <br/>
* Function: TODO 数据字典管理控制类. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月25日 上午10:24:53 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Controller
@RequestMapping("/admin/metadataManage")
public class MetadataController extends BaseController {
private static final Logger log = LoggerFactory.getLogger(MetadataController.class);
@Autowired
private MetadataService metadataService;
/*
* 进入机构管理列表界面
*/
@RequestMapping("/goinMetadataListPage")
public Object goinOrgListPage() {
ModelAndView mv = new ModelAndView("admin/metadataManage/metadataListPage");
return mv;
}
@RequestMapping("/getAllMetadatas")
@ResponseBody
public Object getAllMetadatas(HttpServletRequest request){
PageRequest pageRequest = getPage(request);
String dataType = request.getParameter("dataType");
String roleName = request.getParameter("roleName");
StringBuffer hql = new StringBuffer("from Metadata where 1=1");
if(null != roleName && null != dataType){
if(null != roleName && !"".equals(roleName)){
hql.append(" and dataName like '%"+ roleName +"%'");
}
if(null != dataType && !"".equals(dataType)){
hql.append(" and dataType ='"+ dataType +"'");
}
}
hql.append(" order by createDate desc");
Page<Metadata> pageRole = metadataService.queryPage(pageRequest,hql.toString());
return metadataService.convert(pageRole);
}
@RequestMapping("/addOrUpdateMetadata")
@ResponseBody
public Object addOrUpdateMetadata(HttpServletRequest request,HttpServletResponse response, Metadata metadata) {
Map map = new HashMap();
User user = (User) request.getSession().getAttribute("user_in_session");
String metadataId = request.getParameter("metadataId");
String languageType = request.getParameter("languageType");
//判断操作类别 新增或修改
String operate = request.getParameter("operate");
metadata.setLanguageType(languageType);
if ("add".equals(operate)) {
metadata.setCreateDate(new Date());
metadata.setCreator(user.getUsername());
metadata.setCreatorId(user.getId());
metadataService.addMetadata(metadata);
map.put("flag", true);
map.put("info", "信息保存成功!");
}else if("edit".equals(operate)) {
Metadata metadata1 = metadataService.getMetadataById(Long.valueOf(metadataId));
if(null != metadata.getDataName()){
metadata1.setDataName(metadata.getDataName());
}
if(null != metadata.getDataType()){
metadata1.setDataType(metadata.getDataType());
}
if(null != metadata.getDescription()){
metadata1.setDescription(metadata.getDescription());
}
if(null != metadata.getDataNameId()){
metadata1.setDataNameId(metadata.getDataNameId());
}
if(null != metadata.getLanguageType()){
metadata1.setLanguageType(metadata.getLanguageType());
}
metadataService.updateMetadata(metadata1);
map.put("flag", true);
map.put("info", "信息保存成功!");
}else {
map.put("flag", false);
}
return map;
}
/**
* 根据id删除
* @param request
* @param response
* @return
*/
@RequestMapping("/deleteMetadata")
@ResponseBody
public Object deleteMetadata(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 metadataId : ids){
flag = metadataService.delMetadata((Integer)metadataId);
}
result.put("flag", flag);
return result;
}
@RequestMapping("/queryMetadataById")
@ResponseBody
public Object queryMetadataById(HttpServletRequest request) {
String metadataId = request.getParameter("metadataId");
Metadata metadata = metadataService.getMetadataById(Long.valueOf(metadataId));
return metadata;
}
@RequestMapping("/getMetadatasList")
@ResponseBody
public Object getMetadatasList(HttpServletRequest request){
String dataType = request.getParameter("dataType");
String languageType = request.getParameter("languageType");
String hql = "from Metadata where dataType ='"+ dataType +"'";
List<Metadata> listBo = metadataService.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).getDataNameId());
result.put("text", listBo.get(i).getDataName());
list.add(result);
}
}
return list;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:MetadataDao.java
* Package Name:org.ccpit.base.metadataManage
* Date:2015年9月25日上午10:07:45
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.metadataManage;
import org.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:org.ccpit.base.metadataManage
* Date:2015年9月25日上午10:07:13
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.metadataManage;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.transaction.Transactional;
import org.ccpit.base.controller.Convert;
import org.ccpit.base.controller.Page;
import org.ccpit.base.controller.PageBo;
import org.ccpit.base.controller.PageRequest;
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
*/
@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);
}
/**
* 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);
}
/**
*
* getAllMetadatas:(根据查询条件查询所有元数据列表). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author sunqipeng
* @param dataType
* @return
* @since JDK 1.6
*/
public List<Metadata> getMetadatasByType2(String dataType){
return metadataDao.query("from "+Metadata.class.getName()+" where dataType= ?",dataType);
}
/**
* 根据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("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);
}
});
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:OrgController.java
* Package Name:org.ccpit.base.orgManage
* Date:2015年9月21日上午8:37:32
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.orgManage;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.ccpit.base.controller.BaseController;
import org.ccpit.base.controller.Page;
import org.ccpit.base.controller.PageRequest;
import org.ccpit.base.user.User;
import org.ccpit.base.user.UserController;
import org.ccpit.base.user.UserService;
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:OrgController <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年9月21日 上午8:37:32 <br/>
*
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
@Controller
@RequestMapping("/admin/org")
public class OrgController extends BaseController {
private static final Logger log = LoggerFactory.getLogger(UserController.class);
@Autowired
private OrgService orgService;
@Autowired
private UserService userService;
/*
* 进入机构管理列表界面
*/
@RequestMapping("/goinOrgListPage")
public Object goinOrgListPage() {
ModelAndView mv = new ModelAndView("admin/orgManage/orgListPage");
return mv;
}
/**
*
* getAllOrgs:(默认查询出所有的机构信息). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author dingwei
* @param request
* @return
* @since JDK 1.6
*/
@RequestMapping("/getAllOrgs")
@ResponseBody
public Object getAllOrgs(HttpServletRequest request) {
Map<String, Object> map = new HashMap<String, Object>();
PageRequest pageRequest = this.getPage(request);
Page<OrgInfo> users = orgService.queryPage(pageRequest);
map.put("total", users.getTotal());
map.put("rows", users.getRows());
return map;
}
@RequestMapping({ "/getLeftTree" })
@ResponseBody
public Object getLeftTree(HttpServletRequest request) {
String isroot = request.getParameter("isroot");
// UserBo userBo = (UserBo)
User user = (User) request.getSession().getAttribute("user_in_session");
List result = new ArrayList();
List<OrgInfo> orglist = null;
// if (("true".equals(isroot)) ||
// ("superadmin".equals(userBo.getLoginName()))){
// listBo = this.unitService.findUnitByHierarchy("01");
// }
// else {
// }
orglist = this.orgService.getOrgInfoList();
List listBo1 = null;
if (null != orglist) {
for (OrgInfo orgInfo : orglist) {
Map item = new HashMap();
if (1 == orgInfo.getId()) {
item.put("id", orgInfo.getId());
item.put("text", orgInfo.getName());
item.put("children", getChildren(orgInfo.getId(), orglist));
result.add(item);
}
}
}
return result;
}
public List<Map<String, Object>> getChildren(long id, List<OrgInfo> orgList) {
List items = new ArrayList();
for (OrgInfo boinfo : orgList) {
if (boinfo.getParentId() == id) {
OrgInfo gg = (OrgInfo) boinfo;
Map item = new HashMap();
item.put("id", gg.getId());
item.put("text", gg.getName());
item.put("children", getChildren(gg.getId(), orgList));
items.add(item);
}
}
return items;
}
@RequestMapping("/addOrUpdateOrgInfo")
public void addOrUpdateOrgInfo(HttpServletRequest request,HttpServletResponse response, OrgInfo orgInfo) {
String result = "";
User user = (User) request.getSession().getAttribute("user_in_session");
String orgId = request.getParameter("orgId");
String orgName = request.getParameter("orgName");
String operate = request.getParameter("operate");
boolean flag = false;
if (null != orgName) {
try {
orgName = java.net.URLDecoder.decode(orgName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
if (null != orgId) {
if ("add".equals(operate)) {
orgInfo.setParentId(Long.valueOf(orgId));
orgInfo.setParentName(orgName);
orgInfo.setCreateDate(new Date());
orgInfo.setCreateUser(user.getUsername());
flag = orgService.addOrg(orgInfo);
}else if("edit".equals(operate)) {
OrgInfo org = orgService.getOrgById(Long.valueOf(orgId));
if(null != orgInfo.getName()){
org.setName(orgInfo.getName());
}if(null != orgInfo.getOrderNumber()){
org.setOrderNumber(orgInfo.getOrderNumber());
}if(null != orgInfo.getDescription()){
org.setDescription(orgInfo.getDescription());
}if(null != orgInfo.getParentName()){
org.setParentName(orgInfo.getParentName());
}
flag = orgService.updateOrg(org);
}
}
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();
}
}
/**
*
* orgAddUsers:(机构关联用户). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author dingwei
* @param request
* @return
* @since JDK 1.6
*/
@RequestMapping({ "/orgAddUsers" })
@ResponseBody
public Object orgAddUsers(HttpServletRequest request){
Map map = new HashMap();
String orgId = request.getParameter("orgId");
String userId = request.getParameter("userId");
boolean flag = false;
if(null != orgId){
OrgInfo org = orgService.getOrgById(Long.valueOf(orgId));
if(null != userId){
User user = userService.getUser(Long.valueOf(userId));
org.getUsers().add(user);
}
flag = orgService.updateOrg(org);
}
return map.put("flag", flag);
}
@RequestMapping({ "/getOrgUserByOrdId" })
@ResponseBody
public Object getOrgUserByOrdId(HttpServletRequest request){
Map map = new HashMap();
String orgId = request.getParameter("orgId");
Set<User> setUser = new HashSet<User>();
PageRequest pageRequest = this.getPage(request);
Page<User> users = new Page<User>(pageRequest);
boolean flag = false;
if(null != orgId){
OrgInfo org = orgService.getOrgById(Long.valueOf(orgId));
setUser = org.getUsers();
map.put("total", setUser.size());
map.put("rows", setUser);
}
return map;
}
@RequestMapping({ "/delOrgUserByOrdId" })
@ResponseBody
public Object delOrgUserByOrdId(HttpServletRequest request){
Map map = new HashMap();
String orgId = request.getParameter("orgId");
String userId = request.getParameter("userId");
Set<User> setUser = new HashSet<User>();
PageRequest pageRequest = this.getPage(request);
Page<User> users = new Page<User>(pageRequest);
boolean flag = false;
if(null != orgId){
OrgInfo org = orgService.getOrgById(Long.valueOf(orgId));
setUser = org.getUsers();
if(null != userId){
User user = userService.getUser(Long.valueOf(userId));
if(setUser.contains(user)){
setUser.remove(user);
}
org.setUsers(setUser);
orgService.updateOrg(org);
}
map.put("total", setUser.size());
map.put("rows", setUser);
}
return map;
}
@RequestMapping({ "/isExistNext" })
@ResponseBody
public Object isExistNext(HttpServletRequest request) {
String orgId = request.getParameter("orgId");
Map result = new HashMap();
List list = orgService.getChildOrgById(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 = orgService.delOrgById(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");
OrgInfo orgInfo = orgService.getOrgById(Long.valueOf(orgId));
return orgInfo;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:OrgDao.java
* Package Name:org.ccpit.base.orgManage
* Date:2015年9月18日下午4:59:13
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.orgManage;
import java.util.List;
import org.ccpit.base.dao.BaseDao;
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;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:OrgInfo.java
* Package Name:org.ccpit.base.orgManage
* Date:2015年9月18日下午4:45:09
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.orgManage;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
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 org.ccpit.base.role.Role;
import org.ccpit.base.user.User;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
/**
* 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)
public class OrgInfo implements Serializable{
/**
* serialVersionUID:TODO(用一句话描述这个变量表示什么).
* @since JDK 1.6
*/
private static final long serialVersionUID = 1L;
private long id;
/**
* 父id
*/
private long parentId;
/**
* 机构名称
*/
private String name;
/**
* 机构编号
*/
private String orgNum;
/**
* 排序
*/
private Integer orderNumber;
/**
* 机构用户
*/
private Set<User> users;
/**
* 机构角色
*/
private Set<Role> roles;
/**
* 父机构名称
*/
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;
@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)
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
@ManyToMany(fetch = FetchType.EAGER)
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;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:OrgService.java
* Package Name:org.ccpit.base.orgManage
* Date:2015年9月18日下午4:55:11
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.orgManage;
import java.util.List;
import javax.transaction.Transactional;
import org.ccpit.base.controller.Page;
import org.ccpit.base.controller.PageRequest;
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;
/**
*
* addOrg:(新增机构信息). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public boolean addOrg(OrgInfo orgInfo){
return orgDao.save(orgInfo);
}
/**
*
* updateOrg:(修改机构信息). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public boolean updateOrg(OrgInfo orgInfo){
return orgDao.update(orgInfo);
}
/**
*
* updateOrg:(根据Id删除机构信息). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public boolean delOrgById(long id){
return orgDao.deleteById(id);
}
/**
*
* updateOrg:(根据id查询机构详细信息). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public OrgInfo getOrgById(long id){
return orgDao.queryById(id);
}
/**
*
* updateOrg:(获取机构列表信息). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<br/>
*
* @author dingwei
* @param orgInfo
* @return
* @since JDK 1.6
*/
public List<OrgInfo> getOrgInfoList(){
return orgDao.queryAll();
}
public List<OrgInfo> getChildOrgById(long id){
return orgDao.getChildOrgById(id);
}
/**
*
* updateOrg:(获取机构列表信息 分页展示). <br/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<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/>
* TODO(这里描述这个方法适用条件 – 可选).<br/>
* TODO(这里描述这个方法的执行流程 – 可选).<br/>
* TODO(这里描述这个方法的使用方法 – 可选).<br/>
* TODO(这里描述这个方法的注意事项 – 可选).<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;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:Operate.java
* Package Name:org.ccpit.base.privilegeManage
* Date:2015年9月23日下午3:31:14
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.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:org.ccpit.base.privilegeManage
* Date:2015年9月23日下午3:33:39
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.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 org.ccpit.base.role.Role;
import org.ccpit.base.role.RoleService;
import org.ccpit.base.role.RoleUrl;
import org.ccpit.base.user.User;
import org.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());
}
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:org.ccpit.base.privilegeManage
* Date:2015年9月23日下午3:34:28
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.privilegeManage;
import java.util.List;
import org.ccpit.base.dao.BaseDao;
import org.ccpit.base.orgManage.OrgInfo;
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:org.ccpit.base.privilegeManage
* Date:2015年9月23日下午3:34:18
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.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 org.ccpit.base.role;
import org.ccpit.base.modol.BaseEntity;
import org.hibernate.annotations.*;
import javax.persistence.*;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2015/9/2.
*/
@Entity
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Role extends BaseEntity implements IRole {
private String roleName;
private List<RoleUrl> urlPerfixs = new ArrayList<RoleUrl>();
private String description;
@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;
}
}
package org.ccpit.base.role;
import java.io.IOException;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
import org.ccpit.base.controller.BaseController;
import org.ccpit.base.controller.Page;
import org.ccpit.base.controller.PageRequest;
import org.ccpit.base.user.User;
import org.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;
@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 urlPrefixs = request.getParameter("priIds");
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";
}
@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){
boolean flag = roleService.deleteRole((Integer) str);
}
map.put("flag", true);
map.put("info", "数据删除成功!");
return map;
}
@RequestMapping("/saveUserRoles/{id}")
@ResponseBody
public Object saveUserRoles(@PathVariable long id,HttpServletRequest request,String[] ids){
System.out.println(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 +"%'");
}
}
List<Role> pageRole = roleService.getAll(hql.toString());
return 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 org.ccpit.base.role;
import org.ccpit.base.dao.BaseDao;
import org.springframework.stereotype.Repository;
/**
* 角色实体操作类
* Created by Administrator on 2015/9/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 org.ccpit.base.role;
import org.apache.commons.lang.StringUtils;
import org.ccpit.base.controller.Convert;
import org.ccpit.base.controller.Page;
import org.ccpit.base.controller.PageBo;
import org.ccpit.base.controller.PageRequest;
import org.ccpit.base.user.UserDao;
import org.ccpit.base.utils.UrlRolesMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import javax.transaction.Transactional;
import java.util.*;
/**
* Created by Administrator on 2015/9/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 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 org.ccpit.base.role;
import org.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 org.ccpit.base.security;
import org.apache.commons.lang.StringUtils;
import org.ccpit.base.controller.BaseController;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.jstl.sql.Result;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 用户登录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&&request.getSession().getAttribute("registerInfo")==null) {
response.sendRedirect(redirectPath);
return;
}
filterChain.doFilter(request,servletResponse);
}
@Override
public void destroy() {
}
}
package org.ccpit.base.security;
import org.apache.commons.lang.StringUtils;
import org.ccpit.base.user.User;
import org.ccpit.base.usergroup.UserGroup;
import org.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 org.ccpit.base.security;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.ccpit.base.role.Role;
import org.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 org.ccpit.base.security;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.ccpit.base.role.Role;
import org.ccpit.base.user.User;
import org.ccpit.base.user.UserService;
import org.ccpit.base.usergroup.UserGroup;
import org.ccpit.base.usergroup.UserGroupDao;
import org.ccpit.base.usergroup.UserGroupService;
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 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 org.ccpit.base.security;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.ccpit.base.role.Role;
import org.ccpit.base.user.UserService;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.util.ArrayList;
import java.util.Arrays;
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 org.ccpit.base.security;
import org.apache.commons.collections.CollectionUtils;
import org.ccpit.base.role.Role;
import org.ccpit.base.user.User;
import org.ccpit.base.utils.UrlRolesMapper;
import org.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 org.ccpit.base.security;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.collections.CollectionUtils;
import org.ccpit.base.role.Role;
import org.ccpit.base.utils.UrlRolesMapper;
import org.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;
}
}
package org.ccpit.base.utils;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.log4j.Logger;
import org.ccpit.base.user.User;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Date;
import java.util.Map;
import java.util.Properties;
/**
* 邮件发送工具类
* Date: 2015年10月29日 09:58
*
* @author 孙其鹏
* @version 1.0
*/
public class MailSender {
private static String USERNAME;
private static String PASSWORD;
private static String SMTP;
private static final Logger logger = Logger.getLogger(MailSender.class);
static{
Map<String,String> configMap = ReadConfigUtil.getPlatformConfig();
USERNAME = configMap.get("email.name");
PASSWORD = configMap.get("email.password");
SMTP = configMap.get("email.smtp");
}
/**
* 发送邮件
* @param targetAddress 收件人
* @param subject 主题
* @param body 内容
* @return 发送成功
*/
public static boolean send(String targetAddress,String subject,String body){
EmailBody emailBody = new EmailBody();
emailBody.setContent(body);
emailBody.setSubject(subject);
emailBody.setSentDate(new Date());
return send(targetAddress,emailBody);
}
/**
* 发送邮件
*
* @param: @param userName 邮箱账号
* @param: @param password 邮箱密码
* @param: @param targetAddress 目标邮箱地址
* @param: @param mimeDTO 邮件部分参数
* @return: boolean
*/
public static boolean send(String targetAddress, EmailBody body){
Properties props = new Properties();
props.put("mail.smtp.host", SMTP);
props.setProperty("mail.smtp.auth", "true");
props.put("mail.smtp.user", USERNAME);
props.put("mail.smtp.password", PASSWORD);
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port",25);
Session session = Session.getInstance(props, new PopupAuthenticator(USERNAME, PASSWORD));
boolean success = false;
try {
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(USERNAME));
msg.setRecipients(Message.RecipientType.TO, targetAddress);
msg.setSubject(body.getSubject());
msg.setSentDate(body.getSentDate());
BodyPart mdp = new MimeBodyPart();
mdp.setContent(body.getContent(), "text/html;charset=utf-8");
Multipart mm = new MimeMultipart();
mm.addBodyPart(mdp);
msg.setContent(mm);
msg.saveChanges();
//发送邮件
Transport.send(msg);
success = true;
logger.info("成功发送了邮件到" + targetAddress + " 主题:[" + body.getSubject() + "] 内容[" + body.getContent() + "]");
} catch (Exception e) {
success = false;
logger.warn("到"+targetAddress+"的邮件发送失败,"+e);
// throw new RuntimeException("email send error",e);
}
return success;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:project
* File Name:PasswordHash.java
* Package Name:org.ccpit.base.utils
* Date:2015年10月23日下午2:10:48
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.utils;
import java.math.BigInteger;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.spec.InvalidKeySpecException;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
/**
* ClassName:PasswordHash <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年10月23日 下午2:10:48 <br/>
*
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
public class PasswordHash {
public static final String PBKDF2_ALGORITHM = "PBKDF2WithHmacSHA1";
// The following constants may be changed without breaking existing hashes.
public static final int SALT_BYTE_SIZE = 24;
public static final int HASH_BYTE_SIZE = 24;
public static final int PBKDF2_ITERATIONS = 1000;
public static final int ITERATION_INDEX = 0;
public static final int SALT_INDEX = 1;
public static final int PBKDF2_INDEX = 2;
/**
* Returns a salted PBKDF2 hash of the password.
*
* @param password
* the password to hash
* @return a salted PBKDF2 hash of the password
*/
public static String createHash(String password) throws NoSuchAlgorithmException, InvalidKeySpecException {
return createHash(password.toCharArray());
}
/**
* Returns a salted PBKDF2 hash of the password.
*
* @param password
* the password to hash
* @return a salted PBKDF2 hash of the password
*/
public static String createHash(char[] password) throws NoSuchAlgorithmException, InvalidKeySpecException {
// Generate a random salt
SecureRandom random = new SecureRandom();
byte[] salt = new byte[SALT_BYTE_SIZE];
random.nextBytes(salt);
// Hash the password
byte[] hash = pbkdf2(password, salt, PBKDF2_ITERATIONS, HASH_BYTE_SIZE);
// format iterations:salt:hash
return PBKDF2_ITERATIONS + ":" + toHex(salt) + ":" + toHex(hash);
}
/**
* Validates a password using a hash.
*
* @param password
* the password to check
* @param correctHash
* the hash of the valid password
* @return true if the password is correct, false if not
*/
public static boolean validatePassword(String password, String correctHash)
throws NoSuchAlgorithmException, InvalidKeySpecException {
return validatePassword(password.toCharArray(), correctHash);
}
/**
* Validates a password using a hash.
*
* @param password
* the password to check
* @param correctHash
* the hash of the valid password
* @return true if the password is correct, false if not
*/
public static boolean validatePassword(char[] password, String correctHash)
throws NoSuchAlgorithmException, InvalidKeySpecException {
// Decode the hash into its parameters
String[] params = correctHash.split(":");
if (params.length <= 1) {
return false;
}
int iterations = Integer.parseInt(params[ITERATION_INDEX]);
byte[] salt = fromHex(params[SALT_INDEX]);
byte[] hash = fromHex(params[PBKDF2_INDEX]);
// Compute the hash of the provided password, using the same salt,
// iteration count, and hash length
byte[] testHash = pbkdf2(password, salt, iterations, hash.length);
// Compare the hashes in constant time. The password is correct if
// both hashes match.
return slowEquals(hash, testHash);
}
/**
* Compares two byte arrays in length-constant time. This comparison method
* is used so that password hashes cannot be extracted from an on-line
* system using a timing attack and then attacked off-line.
*
* @param a
* the first byte array
* @param b
* the second byte array
* @return true if both byte arrays are the same, false if not
*/
private static boolean slowEquals(byte[] a, byte[] b) {
int diff = a.length ^ b.length;
for (int i = 0; i < a.length && i < b.length; i++)
diff |= a[i] ^ b[i];
return diff == 0;
}
/**
* Computes the PBKDF2 hash of a password.
*
* @param password
* the password to hash.
* @param salt
* the salt
* @param iterations
* the iteration count (slowness factor)
* @param bytes
* the length of the hash to compute in bytes
* @return the PBDKF2 hash of the password
*/
private static byte[] pbkdf2(char[] password, byte[] salt, int iterations,
int bytes) throws NoSuchAlgorithmException, InvalidKeySpecException {
PBEKeySpec spec = new PBEKeySpec(password, salt, iterations, bytes * 8);
SecretKeyFactory skf = SecretKeyFactory.getInstance(PBKDF2_ALGORITHM);
return skf.generateSecret(spec).getEncoded();
}
/**
* Converts a string of hexadecimal characters into a byte array.
*
* @param hex
* the hex string
* @return the hex string decoded into a byte array
*/
private static byte[] fromHex(String hex) {
byte[] binary = new byte[hex.length() / 2];
for (int i = 0; i < binary.length; i++) {
binary[i] = (byte) Integer.parseInt(
hex.substring(2 * i, 2 * i + 2), 16);
}
return binary;
}
/**
* Converts a byte array into a hexadecimal string.
*
* @param array
* the byte array to convert
* @return a length*2 character string encoding the byte array
*/
private static String toHex(byte[] array) {
BigInteger bi = new BigInteger(1, array);
String hex = bi.toString(16);
int paddingLength = (array.length * 2) - hex.length();
if (paddingLength > 0)
return String.format("%0" + paddingLength + "d", 0) + hex;
else
return hex;
}
/**
* Tests the basic functionality of the PasswordHash class
*
* @param args
* ignored
*/
public static void main(String[] args) {
try {
// Print out 10 hashes
for (int i = 0; i < 10; i++)
System.out.println(PasswordHash.createHash("p\r\nassw0Rd!"));
// Test password validation
boolean failure = false;
System.out.println("Running tests...");
for (int i = 0; i < 100; i++) {
String password = "" + i;
String hash = createHash(password);
String secondHash = createHash(password);
if (hash.equals(secondHash)) {
System.out.println("FAILURE: TWO HASHES ARE EQUAL!");
failure = true;
}
String wrongPassword = "" + (i + 1);
if (validatePassword(wrongPassword, hash)) {
System.out.println("FAILURE: WRONG PASSWORD ACCEPTED!");
failure = true;
}
if (!validatePassword(password, hash)) {
System.out.println("FAILURE: GOOD PASSWORD NOT ACCEPTED!");
failure = true;
}
}
if (failure)
System.out.println("TESTS FAILED!");
else
System.out.println("TESTS PASSED!");
} catch (Exception ex) {
System.out.println("ERROR: " + ex);
}
}
}
package org.ccpit.base.utils;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/**
* Date: 2015年10月29日 10:32
*
* @author 孙其鹏
* @version 1.0
*/
public class PopupAuthenticator extends Authenticator {
private String username = null;
private String password = null;
public PopupAuthenticator(String user, String pass) {
this.username = user;
this.password = pass;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
package org.ccpit.base.utils;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @Description TODO【用一句话描述该文件做什么】
* @Author dingwei
* @Date 2015年4月1日 上午10:00:02
* @Version V0.1
*/
public class ReadConfigUtil {
private static final String PLATFORM_CONFIG_PROPERTIES_NAME = "framework.properties";
protected static final Logger log = LoggerFactory
.getLogger(ReadConfigUtil.class);
private static String propertiesName = "";
private static Properties properties = null;
public static String getPropertiesName() {
return propertiesName;
}
public static void setPropertiesName(String propertiesName) {
propertiesName = propertiesName;
}
public static Map<String, String> getPlatformConfig() {
Map resultMap = new HashMap();
try {
if (properties == null) {
properties = loadPlatformConfigProperties();
}
if (properties != null)
for (Enumeration en = properties.propertyNames(); en
.hasMoreElements();) {
String key = (String) en.nextElement();
String value = properties.getProperty(key);
resultMap.put(key, value);
}
} catch (Exception ex) {
ex.printStackTrace();
log.error("读取配置文件错误!!!");
}
return resultMap;
}
public static Map<String, String> getPlatformConfig(String[] key) {
Map result = new HashMap();
if (key.length == 0)
return result;
try {
if (properties == null) {
properties = loadPlatformConfigProperties();
}
String[] arrayOfString = key;
int j = key.length;
for (int i = 0; i < j; i++) {
String tempkey = arrayOfString[i];
result.put(tempkey, properties.getProperty(tempkey));
}
} catch (Exception ex) {
ex.printStackTrace();
log.error("读取配置文件错误!!!");
}
return result;
}
public static String getPlatformConfig(String key) {
String value = null;
try {
if (properties == null) {
properties = loadPlatformConfigProperties();
}
value = properties.getProperty(key);
} catch (Exception ex) {
ex.printStackTrace();
log.error("读取配置文件错误!!!");
}
return value;
}
public static Properties loadPlatformConfigProperties() {
try {
InputStream properInput = null;
if ((propertiesName == null) || (propertiesName.equals("")))
properInput = ReadConfigUtil.class.getClassLoader()
.getResourceAsStream("framework.properties");
else {
properInput = ReadConfigUtil.class.getClassLoader()
.getResourceAsStream(propertiesName);
}
Properties properties = new Properties();
properties.load(properInput);
return properties;
} catch (Exception ex) {
ex.printStackTrace();
log.error("读取配置文件错误!!!");
}
return null;
}
public static Properties loadPlatformConfigProperties(
String propertiesFileName) {
if (StringUtils.isEmpty(propertiesFileName))
propertiesFileName = "framework.properties";
try {
InputStream properInput = ReadConfigUtil.class.getClassLoader()
.getResourceAsStream(propertiesFileName);
Properties properties = new Properties();
properties.load(properInput);
return properties;
} catch (Exception ex) {
ex.printStackTrace();
log.error("读取配置文件错误!!!");
}
return null;
}
}
package org.ccpit.base.utils;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.context.annotation.AnnotationBeanNameGenerator;
/**
* 重新定义bean的命名规则 为全路径
* Created by Administrator on 2015/9/8.
*/
public class SpringBeanNameGenerator extends AnnotationBeanNameGenerator {
@Override
public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) {
return definition.getBeanClassName();
}
}
package org.ccpit.base.utils;
/**
* Created by Administrator on 2015/8/13.
*/
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.ccpit.base.modol.EscapeSql;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Html 标签过滤工具,防止js注入
* 只对String类型的字段进行过滤
* Created by Sunqipeng on 2015/7/24.
*/
public class SqlEscapeUtil<T> {
/**
* 实体
*/
private T entry;
/**
* 排除的字段
*/
private List<String> escapes = new ArrayList<String>();
/**
* 添加要排除的字段
*
* @param propertyName
* @return
*/
public SqlEscapeUtil<T> except(String propertyName) {
escapes.add(propertyName);
return this;
}
/**
* 添加多个排除的字段
*
* @param propertyNames
* @return
*/
public SqlEscapeUtil<T> except(String... propertyNames) {
escapes.addAll(Arrays.asList(propertyNames));
return this;
}
/**
* 设置要过滤的实体
*
* @param entry
* @return
*/
public SqlEscapeUtil<T> encode(T entry) {
this.entry = entry;
return this;
}
/**
* 执行过滤操作
*
* @return
*/
public T execute() {
if (entry == null)
return null;
Field[] fields = entry.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field f = fields[i];
String name = f.getName();
if (escapes.contains(name))
continue;
if (f.getType().isAssignableFrom(String.class)) {
String upName = name.replaceFirst(name.substring(0, 1), name.substring(0, 1).toUpperCase());
try {
Method method = entry.getClass().getMethod("get" + upName);
String value = (String) method.invoke(entry);
if (!StringUtils.isEmpty(value)) {
value = escapeSql(value);
Method setter = entry.getClass().getMethod("set" + upName, String.class);
setter.invoke(entry, value);
}
} catch (NoSuchMethodException e) {
System.out.println("未找到方法:" + upName);
continue;
} catch (Exception e) {
e.printStackTrace();
}
}
}
return entry;
}
/**
* Escape the Sql with the annotation
* @param t
* @return
*/
public T escape(T t){
EscapeSql annotation = t.getClass().getAnnotation(EscapeSql.class);
if (annotation!=null){
encode(t);
except(annotation.except());
execute();
}
return t;
}
/**
* 过滤方法
*
* @param prop
* @return
*/
public static String escapeSql(String prop) {
prop = StringEscapeUtils.escapeSql(prop);
return prop;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:memberManageSys
* File Name:Mail.java
* Package Name:org.ccpit.base.utils.mailUtil
* Date:2015年11月19日上午10:50:34
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.utils.mailUtil;
import java.io.Serializable;
/**
* ClassName:Mail <br/>
* Function: 邮件信息属性实体类. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年11月19日 上午10:50:34 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
public class Mail implements Serializable{
/**
* serialVersionUID:TODO(用一句话描述这个变量表示什么).
* @since JDK 1.6
*/
private static final long serialVersionUID = 1L;
public static final String ENCODEING = "utf-8";
/**
* 邮件服务器地址
*/
private String host;
/**
* 协议
*/
private String protocol;
/**
* 发件人地址
*/
private String sender;
/**
* 收件人地址
*/
private String receiver;
/**
* 抄送人
*/
private String copyTo;
/**
* 发件人昵称
*/
private String name;
/**
* 发件人邮箱账号
*/
private String emailCount;
/**
* 发件人邮箱账号密码
*/
private String emailPassword;
/**
* 邮件主题
*/
private String mailTitle;
/**
* 邮件内容
*/
private String mailMessage;
//附件
private String affix;
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public String getReceiver() {
return receiver;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmailCount() {
return emailCount;
}
public void setEmailCount(String emailCount) {
this.emailCount = emailCount;
}
public String getEmailPassword() {
return emailPassword;
}
public void setEmailPassword(String emailPassword) {
this.emailPassword = emailPassword;
}
public String getMailTitle() {
return mailTitle;
}
public void setMailTitle(String mailTitle) {
this.mailTitle = mailTitle;
}
public String getMailMessage() {
return mailMessage;
}
public void setMailMessage(String mailMessage) {
this.mailMessage = mailMessage;
}
public String getProtocol() {
return protocol;
}
public void setProtocol(String protocol) {
this.protocol = protocol;
}
public String getCopyTo() {
return copyTo;
}
public void setCopyTo(String copyTo) {
this.copyTo = copyTo;
}
public String getAffix() {
return affix;
}
public void setAffix(String affix) {
this.affix = affix;
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:memberManageSys
* File Name:MailUtil.java
* Package Name:org.ccpit.base.utils.mailUtil
* Date:2015年11月19日上午11:15:36
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*
*/
package org.ccpit.base.utils.mailUtil;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
/**
* ClassName:MailUtil <br/>
* Function: 邮件发送工具类. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年11月19日 上午11:15:36 <br/>
* @author dingwei
* @version
* @since JDK 1.6
* @see
*/
public class MailUtil {
public static boolean sendMail(Mail mail){
Properties properties = new Properties();
properties.setProperty("mail.host", mail.getHost());
properties.setProperty("mail.transport.protocol", mail.getProtocol());
properties.setProperty("mail.smtp.auth", "true");
//使用JavaMail发送邮件的5个步骤
//1、创建session
Session session = Session.getInstance(properties);
//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
boolean flag = false;
try {
//2、通过session得到transport对象
final Transport transport = session.getTransport();
//3、连上邮件服务器
transport.connect(mail.getHost(), mail.getEmailCount(), mail.getEmailPassword());
//4、创建邮件
final Message message = createMail(session,mail);
//5、发送邮件
new Thread(){
@Override
public void run(){
for(int i=0;i<5;i++){
try {
transport.sendMessage(message, message.getAllRecipients());
transport.close();
break;
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
}.start();
flag = true;
} catch (NoSuchProviderException e) {
e.printStackTrace();
flag = false;
} catch (MessagingException e) {
flag = false;
e.printStackTrace();
}
return flag;
}
public static MimeMessage createMail(Session session,Mail mail){
MimeMessage mimeMessage = new MimeMessage(session);//构建邮件体
try {
if(null != mail.getSender()){
//设置发件人
mimeMessage.setFrom(new InternetAddress(mail.getSender()));
}
if(null != mail.getReceiver()){
String[] address = mail.getReceiver().split(";");
InternetAddress[] addresses = new InternetAddress[address.length];
for(int i=0; i<address.length;i++){
addresses[i] = new InternetAddress(address[i]);
}
//设置收件人 群发
mimeMessage.setRecipients(Message.RecipientType.TO, addresses);
}
if(null != mail.getCopyTo()){
String[] address = mail.getReceiver().split(";");
InternetAddress[] addresses = new InternetAddress[address.length];
for(int i=0; i<address.length;i++){
addresses[i] = new InternetAddress(address[i]);
}
//抄送人 群发
mimeMessage.setRecipients(Message.RecipientType.CC, addresses);
}
//邮件主题
mimeMessage.setSubject(mail.getMailTitle()==null?"":mail.getMailTitle());
//创建邮件正文 为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码
MimeBodyPart mimeBodyPart = new MimeBodyPart();
mimeBodyPart.setContent(mail.getMailMessage(), "text/html;charset=UTF-8");
Set<MimeBodyPart> mimeBodyPartSet = new HashSet<MimeBodyPart>();
//创建邮件附件
if(null != mail.getAffix()&&!"".equals(mail.getAffix())){
//多附件,附件地址之间以";"分隔
String[] affixs = mail.getAffix().split(";");
for(int i=0; i<affixs.length;i++){
File file = new File(affixs[i]);
MimeBodyPart mbp = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource(file));
mbp.setDataHandler(dh);
mbp.setFileName(MimeUtility.encodeText(dh.getName()));
mimeBodyPartSet.add(mbp);
}
}
//创建容器描述数据关系
MimeMultipart mimeMultipart = new MimeMultipart();
mimeMultipart.addBodyPart(mimeBodyPart);
if(null != mimeBodyPartSet && mimeBodyPartSet.size()>0){
for(MimeBodyPart mbp : mimeBodyPartSet){
mimeMultipart.addBodyPart(mbp);
}
}
mimeMultipart.setSubType("mixed");
mimeMessage.setContent(mimeMultipart);
mimeMessage.saveChanges();
} catch (MessagingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return mimeMessage;
}
}
package org.ccpit.business.phase;
import org.ccpit.base.modol.BaseEntity;
import org.hibernate.annotations.*;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
* 报名期数
* 如 2005-03期
* Date: 2015年11月16日 08:23
*
* @author 孙其鹏
* @version 1.0
*/
@Entity
@Table(name = "reg_phrase")
@Where(clause = "whetherDelete='false'")
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE,region = "phase.entity")
public class Phase extends BaseEntity{
// 名称
private String name;
// 考试时间
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date time;
// 是否启用
private boolean active;
// 是否删除
private boolean whetherDelete;
@Override
@Id()
@GeneratedValue(strategy = GenerationType.AUTO)
public long getId() {
return super.getId();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public boolean isWhetherDelete() {
return whetherDelete;
}
public void setWhetherDelete(boolean whetherDelete) {
this.whetherDelete = whetherDelete;
}
}
package org.ccpit.business.phase;
import com.alibaba.fastjson.JSON;
import org.apache.commons.lang.StringUtils;
import org.ccpit.base.controller.BaseController;
import org.ccpit.base.controller.Page;
import org.ccpit.base.controller.PageRequest;
import org.ccpit.base.utils.MailSender;
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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Date: 2015年11月16日 09:59
*
* @author 孙其鹏
* @version 1.0
*/
@Controller
@RequestMapping("/admin/business/phaseManage")
public class PhaseController extends BaseController {
@Autowired
private PhaseService phaseService;
@RequestMapping("/page")
public ModelAndView toPage(){
ModelAndView mv = new ModelAndView("business/phaseListPage");
return mv;
}
@RequestMapping("/query")
@ResponseBody
public Page<Phase> query(HttpServletRequest request,String name){
PageRequest pr = getPage(request);
if (StringUtils.isNotEmpty(name)){
return phaseService.queryByPage(pr,"from Phase where name like '%"+name+"%'",null);
}
return phaseService.queryByPage(pr,"from Phase ",null);
}
@RequestMapping("/queryById/{id}")
@ResponseBody
public Phase queryById(@PathVariable Long id){
return phaseService.queryById(id);
}
@RequestMapping("/deleteById")
@ResponseBody
public Object deleteById(HttpServletRequest request){
String ids = request.getParameter("ids");
List<Long> list = JSON.parseArray(ids, Long.class);
boolean success = phaseService.deletePhases(list);
Map<String,Object> map = new HashMap<String, Object>();
map.put("flag",success);
return map;
}
@RequestMapping("/addOrUpdate")
@ResponseBody
public Object addOrUpdate(Phase phase,String operate,HttpServletResponse response){
boolean success = false;
if (StringUtils.isNotEmpty(operate)&&operate.equals("add")){
phase.setActive(false);
success = phaseService.add(phase);
}else if (StringUtils.isNotEmpty(operate)&&operate.equals("edit")){
Phase p = phaseService.queryById(phase.getId());
p.setName(phase.getName());
p.setTime(phase.getTime());
success = phaseService.update(p);
}
Map<String,Object> map = new HashMap<String, Object>();
map.put("flag",success);
map.put("info", success ? "保存成功" : "保存失败");
try {
response.getWriter().print("{flag:" + success + ",info:'" + (success?"保存成功":"保存失败")+"'}");
} catch (IOException e) {
}
return null;
}
@RequestMapping("/active/{id}")
@ResponseBody
public Object active(@PathVariable Long id,HttpServletResponse response){
Phase phase = phaseService.queryById(id);
phase.setActive(true);
Phase ap = phaseService.getActivePhase();
if (ap!=null && !id.equals(ap.getId())){
Map<String,Object> map = new HashMap<String, Object>();
map.put("flag",false);
map.put("info","已经有启动的期数,请先取消再启用新的");
return map;
}
boolean success = phaseService.update(phase);
Map<String,Object> map = new HashMap<String, Object>();
map.put("flag",success);
map.put("info",success?"启用成功":"启用失败");
response.setHeader("expires","0");
response.setHeader("cache-control","max-age=0");
response.setHeader("Pragma","no-cache");
return map;
}
@RequestMapping("/inActive/{id}")
@ResponseBody
public Object inActive(@PathVariable Long id){
Phase phase = phaseService.queryById(id);
phase.setActive(false);
boolean success = phaseService.update(phase);
Map<String,Object> map = new HashMap<String, Object>();
map.put("flag",success);
map.put("info",success?"关闭成功":"关闭失败");
return map;
}
}
package org.ccpit.business.phase;
import org.ccpit.base.dao.BaseDao;
import org.springframework.stereotype.Repository;
/**
* Date: 2015年11月16日 09:58
*
* @author 孙其鹏
* @version 1.0
*/
@Repository
public class PhaseDao extends BaseDao<Phase>{
}
package org.ccpit.business.phase;
import org.ccpit.base.controller.Page;
import org.ccpit.base.controller.PageRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.Phased;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List;
/**
* Date: 2015年11月16日 09:58
*
* @author 孙其鹏
* @version 1.0
*/
@Service
public class PhaseService {
@Autowired
private PhaseDao phaseDao;
@Transactional
public boolean add(Phase phase){
return phaseDao.save(phase);
}
@Transactional
public boolean update(Phase phase){
return phaseDao.save(phase);
}
@Transactional
public boolean delete(Phase phase){
if (phase==null){
return false;
}
if (phase.isWhetherDelete())
return true;
phase.setWhetherDelete(true);
return phaseDao.save(phase);
}
@Transactional
public boolean deletePhases(List<Long> ids){
boolean success = true;
for (long id:ids){
boolean result = delete(queryById(id));
if (!result){
success = false;
}
}
return success;
}
public Page<Phase> queryByPage(PageRequest pr, String hql, String... params) {
return phaseDao.findPage(pr, hql, params);
}
public List<Phase> queryAll() {
return phaseDao.query("from Phase order by time desc");
}
public Phase queryById(Long id) {
return phaseDao.queryById(id);
}
/**
* 获取状态为active的Phase 只有0或1个
* @return
*/
public Phase getActivePhase(){
List<Phase> phaseList = phaseDao.query("from Phase where active = ?",true);
if (phaseList==null || phaseList.isEmpty()){
return null;
}
return phaseList.get(0);
}
}
/**
* Company Name : 中贸促信息技术有限责任公司
* Project Name:memberManageSys
* File Name:RegisterDao.java
* Package Name:org.ccpit.business.registerManage
* Date:2015年11月10日上午8:56:35
* Copyright (c) 2015, dingwei@ccpit.org All Rights Reserved.
*/
package org.ccpit.business.registerManage;
import org.ccpit.base.dao.BaseDao;
import org.springframework.stereotype.Repository;
/**
* ClassName:RegisterDao <br/>
* Function: TODO ADD FUNCTION. <br/>
* Reason: TODO ADD REASON. <br/>
* Date: 2015年11月10日 上午8:56:35 <br/>
*
* @author sunqipeng
* @see
* @since JDK 1.6
*/
@Repository
public class RegisterDao extends BaseDao<RegisterInfo> {
}
package org.ccpit.ueditor;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PathFormat {
private static final String TIME = "time";
private static final String FULL_YEAR = "yyyy";
private static final String YEAR = "yy";
private static final String MONTH = "mm";
private static final String DAY = "dd";
private static final String HOUR = "hh";
private static final String MINUTE = "ii";
private static final String SECOND = "ss";
private static final String RAND = "rand";
private static Date currentDate = null;
public static String parse ( String input ) {
Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE );
Matcher matcher = pattern.matcher(input);
PathFormat.currentDate = new Date();
StringBuffer sb = new StringBuffer();
while ( matcher.find() ) {
matcher.appendReplacement(sb, PathFormat.getString( matcher.group( 1 ) ) );
}
matcher.appendTail(sb);
return sb.toString();
}
/**
* 格式化路径, 把windows路径替换成标准路径
* @param input 待格式化的路径
* @return 格式化后的路径
*/
public static String format ( String input ) {
return input.replace( "\\", "/" );
}
public static String parse ( String input, String filename ) {
Pattern pattern = Pattern.compile( "\\{([^\\}]+)\\}", Pattern.CASE_INSENSITIVE );
Matcher matcher = pattern.matcher(input);
String matchStr = null;
PathFormat.currentDate = new Date();
StringBuffer sb = new StringBuffer();
while ( matcher.find() ) {
matchStr = matcher.group( 1 );
if ( matchStr.indexOf( "filename" ) != -1 ) {
filename = filename.replace( "$", "\\$" ).replaceAll( "[\\/:*?\"<>|]", "" );
matcher.appendReplacement(sb, filename );
} else {
matcher.appendReplacement(sb, PathFormat.getString( matchStr ) );
}
}
matcher.appendTail(sb);
return sb.toString();
}
private static String getString ( String pattern ) {
pattern = pattern.toLowerCase();
// time 处理
if ( pattern.indexOf( PathFormat.TIME ) != -1 ) {
return PathFormat.getTimestamp();
} else if ( pattern.indexOf( PathFormat.FULL_YEAR ) != -1 ) {
return PathFormat.getFullYear();
} else if ( pattern.indexOf( PathFormat.YEAR ) != -1 ) {
return PathFormat.getYear();
} else if ( pattern.indexOf( PathFormat.MONTH ) != -1 ) {
return PathFormat.getMonth();
} else if ( pattern.indexOf( PathFormat.DAY ) != -1 ) {
return PathFormat.getDay();
} else if ( pattern.indexOf( PathFormat.HOUR ) != -1 ) {
return PathFormat.getHour();
} else if ( pattern.indexOf( PathFormat.MINUTE ) != -1 ) {
return PathFormat.getMinute();
} else if ( pattern.indexOf( PathFormat.SECOND ) != -1 ) {
return PathFormat.getSecond();
} else if ( pattern.indexOf( PathFormat.RAND ) != -1 ) {
return PathFormat.getRandom( pattern );
}
return pattern;
}
private static String getTimestamp () {
return System.currentTimeMillis() + "";
}
private static String getFullYear () {
return new SimpleDateFormat( "yyyy" ).format( PathFormat.currentDate );
}
private static String getYear () {
return new SimpleDateFormat( "yy" ).format( PathFormat.currentDate );
}
private static String getMonth () {
return new SimpleDateFormat( "MM" ).format( PathFormat.currentDate );
}
private static String getDay () {
return new SimpleDateFormat( "dd" ).format( PathFormat.currentDate );
}
private static String getHour () {
return new SimpleDateFormat( "HH" ).format( PathFormat.currentDate );
}
private static String getMinute () {
return new SimpleDateFormat( "mm" ).format( PathFormat.currentDate );
}
private static String getSecond () {
return new SimpleDateFormat( "ss" ).format( PathFormat.currentDate );
}
private static String getRandom ( String pattern ) {
int length = 0;
pattern = pattern.split( ":" )[ 1 ].trim();
length = Integer.parseInt( pattern );
return ( Math.random() + "" ).replace( ".", "" ).substring( 0, length );
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
package org.ccpit.ueditor.define;
import java.util.HashMap;
import java.util.Map;
public class MIMEType {
public static final Map<String, String> types = new HashMap<String, String>(){{
put( "image/gif", ".gif" );
put( "image/jpeg", ".jpg" );
put( "image/jpg", ".jpg" );
put( "image/png", ".png" );
put( "image/bmp", ".bmp" );
}};
public static String getSuffix ( String mime ) {
return MIMEType.types.get( mime );
}
}
package org.ccpit.ueditor.define;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.ccpit.ueditor.Encoder;
/**
* 多状态集合状态
* 其包含了多个状态的集合, 其本身自己也是一个状态
* @author hancong03@baidu.com
*
*/
public class MultiState implements State {
private boolean state = false;
private String info = null;
private Map<String, Long> intMap = new HashMap<String, Long>();
private Map<String, String> infoMap = new HashMap<String, String>();
private List<String> stateList = new ArrayList<String>();
public MultiState ( boolean state ) {
this.state = state;
}
public MultiState ( boolean state, String info ) {
this.state = state;
this.info = info;
}
public MultiState ( boolean state, int infoKey ) {
this.state = state;
this.info = AppInfo.getStateInfo( infoKey );
}
@Override
public boolean isSuccess() {
return this.state;
}
public void addState ( State state ) {
stateList.add( state.toJSONString() );
}
/**
* 该方法调用无效果
*/
@Override
public void putInfo(String name, String val) {
this.infoMap.put(name, val);
}
@Override
public String toJSONString() {
String stateVal = this.isSuccess() ? AppInfo.getStateInfo( AppInfo.SUCCESS ) : this.info;
StringBuilder builder = new StringBuilder();
builder.append( "{\"state\": \"" + stateVal + "\"" );
// 数字转换
Iterator<String> iterator = this.intMap.keySet().iterator();
while ( iterator.hasNext() ) {
stateVal = iterator.next();
builder.append( ",\""+ stateVal +"\": " + this.intMap.get( stateVal ) );
}
iterator = this.infoMap.keySet().iterator();
while ( iterator.hasNext() ) {
stateVal = iterator.next();
builder.append( ",\""+ stateVal +"\": \"" + this.infoMap.get( stateVal ) + "\"" );
}
builder.append( ", list: [" );
iterator = this.stateList.iterator();
while ( iterator.hasNext() ) {
builder.append( iterator.next() + "," );
}
if ( this.stateList.size() > 0 ) {
builder.deleteCharAt( builder.length() - 1 );
}
builder.append( " ]}" );
return Encoder.toUnicode( builder.toString() );
}
@Override
public void putInfo(String name, long val) {
this.intMap.put( name, val );
}
}
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