377 lines
12 KiB
Plaintext
377 lines
12 KiB
Plaintext
package com.nationalelectric.greenH5;
|
|
|
|
import java.io.IOException;
|
|
import java.util.Date;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
import com.nationalelectirc.Constant.Constant;
|
|
import com.nationalelectirc.utils.PushMessageUtil;
|
|
import com.nationalelectirc.utils.RestResult;
|
|
import com.nationalelectric.greenH5.bizc.BaseServiceImpl;
|
|
import com.nationalelectric.greenH5.bizc.IGreenDepartmentBizc;
|
|
import com.nationalelectric.greenH5.bizc.IGreenGrantAuthBizc;
|
|
import com.nationalelectric.greenH5.bizc.IGreenOperateLogBizc;
|
|
import com.nationalelectric.greenH5.bizc.IGreenUserInfoBizc;
|
|
import com.nationalelectric.greenH5.po.GreenDepartment;
|
|
import com.nationalelectric.greenH5.po.GreenEAccount;
|
|
import com.nationalelectric.greenH5.po.GreenGrantAuth;
|
|
import com.nationalelectric.greenH5.po.GreenOperateLog;
|
|
import com.nationalelectric.greenH5.po.GreenUserInfo;
|
|
import com.nationalelectric.greenH5.utils.AesEncryptUtil;
|
|
import com.nationalelectric.greenH5.utils.DateUtil;
|
|
import com.nationalelectric.greenH5.utils.MD5Util;
|
|
import com.sgcc.isc.core.orm.identity.User;
|
|
import com.sgcc.uap.persistence.IHibernateDao;
|
|
|
|
import net.sf.json.JSONObject;
|
|
|
|
@Component
|
|
public abstract class GreenBaseController {
|
|
@Resource
|
|
private IGreenDepartmentBizc greendepartmentBizc;
|
|
@Autowired
|
|
IHibernateDao hibernateDao;
|
|
@Resource
|
|
private IGreenUserInfoBizc greenuserinfoBizc;
|
|
@Resource
|
|
private IGreenGrantAuthBizc greengainfoBizc;
|
|
/**
|
|
* 操作记录接口
|
|
*/
|
|
@Resource
|
|
private IGreenOperateLogBizc greenoperatelogBizc;
|
|
@Autowired
|
|
private BaseServiceImpl baseService;
|
|
|
|
public GreenDepartment getDepartment(Long departmentId) {
|
|
|
|
GreenDepartment department = null;
|
|
if (departmentId != null) {
|
|
department = greendepartmentBizc.get(departmentId);
|
|
}
|
|
|
|
return department;
|
|
}
|
|
|
|
public GreenUserInfo getUserInfo(String userId) {
|
|
if (userId == null || userId.trim().equals("")) {
|
|
return null;
|
|
}
|
|
/*
|
|
* GreenUserInfo userInfo = null; if (userId != null) {
|
|
* greenuserinfoBizc.get(userId); }
|
|
*/
|
|
GreenUserInfo info = greenuserinfoBizc.get(userId);
|
|
return info;
|
|
}
|
|
|
|
public GreenGrantAuth getGaInfo(String userId) {
|
|
if (userId == null || userId.trim().equals("")) {
|
|
return null;
|
|
}
|
|
/*
|
|
* GreenUserInfo userInfo = null; if (userId != null) {
|
|
* greenuserinfoBizc.get(userId); }
|
|
*/
|
|
GreenGrantAuth info = greengainfoBizc.get(userId);
|
|
return info;
|
|
}
|
|
|
|
/**
|
|
* 描述:获取 post 请求的 byte[] 数组
|
|
*
|
|
* <pre>
|
|
* 举例:
|
|
* </pre>
|
|
*
|
|
* @param request
|
|
* @return
|
|
* @throws IOException
|
|
*/
|
|
public byte[] getRequestPostBytes(HttpServletRequest request) throws IOException {
|
|
int contentLength = request.getContentLength();
|
|
if (contentLength < 0) {
|
|
return null;
|
|
}
|
|
byte buffer[] = new byte[contentLength];
|
|
for (int i = 0; i < contentLength;) {
|
|
int readlen = request.getInputStream().read(buffer, i, contentLength - i);
|
|
if (readlen == -1) {
|
|
break;
|
|
}
|
|
i += readlen;
|
|
}
|
|
return buffer;
|
|
}
|
|
|
|
public Map<String, String> getBodyStr(HttpServletRequest request) {
|
|
try {
|
|
byte[] buffer = getRequestPostBytes(request);
|
|
String jsonStr = new String(buffer, "UTF-8");
|
|
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
|
|
String sign = jsonObject.getString("sign");
|
|
String body = jsonObject.getString("body");
|
|
String checkTimeDate = null;
|
|
if (jsonObject.has("checkTimeDate")) {
|
|
checkTimeDate = jsonObject.getString("checkTime");
|
|
}
|
|
|
|
String md5Sign = MD5Util.encrypt(body);
|
|
if (!sign.equalsIgnoreCase(md5Sign)) {
|
|
// System.out.println("====== md5 error ");
|
|
return null;
|
|
}
|
|
|
|
String bodyData = AesEncryptUtil.desEncrypt(body);
|
|
String checkTime = null;
|
|
if (checkTimeDate != null) {
|
|
checkTime = AesEncryptUtil.desEncrypt(checkTimeDate);
|
|
}
|
|
Map<String, String> map = new HashMap<String, String>();
|
|
if (bodyData == null) {
|
|
// System.out.println("====== aes error ");
|
|
return null;
|
|
}
|
|
map.put("bodyData", bodyData);
|
|
map.put("checkTime", checkTime);
|
|
return map;
|
|
} catch (Exception e) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 根据图片名字拼接全访问路径
|
|
*
|
|
* @param fileName
|
|
* @return
|
|
*/
|
|
public String getPicUrl(String fileName) {
|
|
String url = baseService.getAppImgUrl();
|
|
return url + fileName;
|
|
}
|
|
public static String getRemoteIp1(HttpServletRequest request) {
|
|
|
|
String ip = request.getRemoteAddr();
|
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
ip = request.getHeader("Proxy-Client-IP");
|
|
}
|
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
ip = request.getHeader("WL-Proxy-Client-IP");
|
|
}
|
|
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
|
|
ip = request.getRemoteAddr();
|
|
}
|
|
ip = ip.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ip;
|
|
if (isIP(ip))
|
|
return ip;
|
|
else
|
|
return null;
|
|
|
|
}
|
|
public static boolean isIP(String addr) {
|
|
|
|
if (addr.length() < 7 || addr.length() > 15 || "".equals(addr)) {
|
|
return false;
|
|
}
|
|
/**
|
|
* 判断IP格式和范围
|
|
*/
|
|
String rexp = "([1-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}$";
|
|
|
|
Pattern pat = Pattern.compile(rexp);
|
|
|
|
Matcher mat = pat.matcher(addr);
|
|
|
|
boolean ipAddress = mat.find();
|
|
|
|
return ipAddress;
|
|
}
|
|
/**
|
|
* 记录错误日志
|
|
* @param operatePerson
|
|
* @param function
|
|
* @throws Exception
|
|
*/
|
|
@Transactional(rollbackFor=Exception.class)
|
|
public boolean saveErorrLog(String function, String operateType, String operateStatus,String operateContent,String logRank,String userId){
|
|
try {
|
|
GreenOperateLog greenOperateLog = new GreenOperateLog();
|
|
ServletRequestAttributes ra= (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
|
HttpServletRequest request = ra.getRequest();
|
|
//获取当前登录用户ip地址
|
|
String ipAddr = getRemoteIp1(request);
|
|
|
|
//获取当前登录用户id
|
|
// String userId = list.get(0).getId();
|
|
//获取当前登录用户名
|
|
// String userName = list.get(0).getName();
|
|
String userInfoSql = "SELECT * FROM GREEN_USER_INFO WHERE id=?";
|
|
List<GreenUserInfo> userInfolist = hibernateDao.queryForListWithSql(userInfoSql, new Object[] { userId }, new BeanPropertyRowMapper(GreenUserInfo.class));// 根据用户id获取用户餐卡号
|
|
String userName = "";
|
|
if(userInfolist.size()>0){
|
|
userName = userInfolist.get(0).getRealName();
|
|
}
|
|
//操作人id
|
|
greenOperateLog.setOperatorId(userId);
|
|
//操作人姓名
|
|
greenOperateLog.setOperatorName(userName);
|
|
//登录用户ip地址
|
|
greenOperateLog.setIpAddr(ipAddr);
|
|
//操作功能
|
|
greenOperateLog.setOperateFunction(function);
|
|
//操作类型
|
|
greenOperateLog.setOperateType(operateType);
|
|
//操作状态
|
|
greenOperateLog.setOperateStatus(operateStatus);
|
|
//操作时间
|
|
greenOperateLog.setOperateTime(DateUtil.now());
|
|
//创建者
|
|
greenOperateLog.setCreator(userId);
|
|
//修改者
|
|
greenOperateLog.setModifier(userId);
|
|
//创建时间
|
|
greenOperateLog.setGmtCreated(new Date());
|
|
//修改时间
|
|
greenOperateLog.setGmtModified(new Date());
|
|
//删除标识
|
|
greenOperateLog.setIsDeleted("N");
|
|
//操作内容
|
|
greenOperateLog.setOperatorContent(userName+"-"+operateContent+operateStatus);
|
|
//操作 类型
|
|
greenOperateLog.setLogType("3");
|
|
//来源
|
|
greenOperateLog.setSource("2");
|
|
/**0-业务级 1-系统级*/
|
|
greenOperateLog.setLogRank(logRank);
|
|
//执行保存
|
|
greenoperatelogBizc.add(greenOperateLog);
|
|
|
|
//返回值
|
|
return true;
|
|
} catch (Exception e) {
|
|
// e.printStackTrace();
|
|
return false;
|
|
}
|
|
}
|
|
//批量发消息给临时停车审批权限人员
|
|
@SuppressWarnings("unchecked")
|
|
public void sendMsg(String role_code,String msgname, String tm, String users,IHibernateDao hibernateDao){
|
|
String sql = "SELECT ui.login_name FROM green_role role , green_user_role_rel roler LEFT JOIN green_user_info ui ON roler.user_id = ui.id where role.role_code = ? AND role.id = roler.role_id and roler.is_deleted='N' and ui.is_deleted='N'";
|
|
List<Map<String,Object>> queryList = hibernateDao.queryForListWithSql(sql.toString(),new Object[]{role_code});
|
|
for (int i = 0; i < queryList.size(); i++) {
|
|
try {
|
|
PushMessageUtil.getInstance().pushMessage(msgname, tm, queryList.get(i).get("login_name").toString(),hibernateDao);
|
|
} catch (IOException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
@Transactional(rollbackFor=Exception.class)
|
|
public boolean addLog(String function, String operateType, String operateStatus, String operateContent,String logType,String userId) {
|
|
|
|
try {
|
|
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
|
String url = request.getRequestURL().toString();
|
|
GreenUserInfo userInfo = getUserInfo(userId);
|
|
if (url.contains("/greenMealTicket/scan")) {
|
|
userInfo = new GreenUserInfo();
|
|
userInfo.setId("");
|
|
userInfo.setRealName("扫码");
|
|
}
|
|
/*if (userInfo == null) {
|
|
throw new Exception("返回异常");
|
|
}*/
|
|
GreenOperateLog greenOperateLog = new GreenOperateLog();
|
|
//操作人id
|
|
greenOperateLog.setOperatorId(userId);
|
|
//操作人姓名
|
|
if(userInfo==null){
|
|
greenOperateLog.setOperatorName("非法用户");
|
|
}else{
|
|
greenOperateLog.setOperatorName(userInfo.getRealName());
|
|
}
|
|
//登录用户ip地址
|
|
greenOperateLog.setIpAddr(request.getRemoteAddr());
|
|
//操作功能
|
|
greenOperateLog.setOperateFunction(function);
|
|
//操作类型
|
|
greenOperateLog.setOperateType(operateType);
|
|
//操作状态
|
|
greenOperateLog.setOperateStatus(operateStatus);
|
|
//操作时间
|
|
greenOperateLog.setOperateTime(DateUtil.now());
|
|
//创建者
|
|
greenOperateLog.setCreator(userId);
|
|
//修改者
|
|
greenOperateLog.setModifier(userId);
|
|
//创建时间
|
|
greenOperateLog.setGmtCreated(new Date());
|
|
//修改时间
|
|
greenOperateLog.setGmtModified(new Date());
|
|
//删除标识
|
|
greenOperateLog.setIsDeleted("N");
|
|
//操作内容
|
|
if(userInfo==null){
|
|
greenOperateLog.setOperatorContent("非法用户"+"-"+operateContent+"失败");
|
|
}else{
|
|
greenOperateLog.setOperatorContent(userInfo.getRealName()+"-"+operateContent+operateStatus);
|
|
}
|
|
//日志 类型
|
|
greenOperateLog.setLogType(logType);
|
|
//来源1=pc/2=app
|
|
greenOperateLog.setSource("2");
|
|
if ("登录".equals(function) || "登出".equals(function)) {
|
|
greenOperateLog.setLogRank("1");
|
|
}else {
|
|
greenOperateLog.setLogRank("0");
|
|
}
|
|
greenoperatelogBizc.add(greenOperateLog);
|
|
return true;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* 根据字典类型获取字典信息
|
|
* @param dataType
|
|
* @return
|
|
*/
|
|
@SuppressWarnings("unchecked")
|
|
public List<Map<String,String>> getDictionaryInfo(String dataType) {
|
|
|
|
try {
|
|
String sql = "SELECT DATA_CODE as \"id\",DATA_VALUE as \"name\",DESCRIPTION as \"description\" FROM GREEN_DICTIONARY_INFO WHERE DATA_TYPE = ? AND IS_DELETED = 'N' ";
|
|
List<Map<String,String>> list = hibernateDao.queryForListWithSql(sql,new Object[]{dataType});
|
|
|
|
return list;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return null;
|
|
}
|
|
}
|
|
}
|