hz-zhhq-app-service/greenH5modul/.svn/pristine/f0/f059afa3a177e7e4bb913af1314...

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;
}
}
}