hz-zhhq-app-service/greenH5modul/.svn/pristine/f2/f2780c29099c38d34cefe6da7ad...

1666 lines
58 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.nationalelectric.greenH5;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URLDecoder;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.nationalelectirc.Constant.Constant;
import com.nationalelectirc.utils.AESUtil;
import com.nationalelectirc.utils.AesEncryptUtil;
import com.nationalelectirc.utils.HttpClient;
import com.nationalelectirc.utils.MD5Util;
import com.nationalelectirc.utils.RestResult;
import com.nationalelectric.greenH5.DTO.GreenCardConsumptionDTO;
import com.nationalelectric.greenH5.bizc.IGreenImageInfoBizc;
import com.nationalelectric.greenH5.bizc.IGreenOperateLogBizc;
import com.nationalelectric.greenH5.bizc.IGreenUserInfoBizc;
import com.nationalelectric.greenH5.po.CheckUserInfo;
import com.nationalelectric.greenH5.po.GreenCardConsumption;
import com.nationalelectric.greenH5.po.GreenImageInfo;
import com.nationalelectric.greenH5.po.GreenPermission;
import com.nationalelectric.greenH5.po.GreenUserInfo;
import com.nationalelectric.greenH5.po.Result;
import com.nationalelectric.greenH5.po.SysMealInfo;
import com.nationalelectric.greenH5.po.UcenterParam;
import com.nationalelectric.greenH5.po.UserVo;
import com.nationalelectric.greenH5.utils.DateUtil;
import com.nationalelectric.greenH5.utils.DesUtil;
import com.nationalelectric.greenH5.utils.EncryptUtil;
import com.nationalelectric.greenH5.utils.JSONUtil;
import com.sgcc.isc.service.adapter.utils.JsonUtil;
import com.sgcc.uap.mdd.model.utils.StringUtil;
import com.sgcc.uap.persistence.IHibernateDao;
import net.sf.json.JSONArray;
/**
* <b>概述</b><br>
*
* <p>
* <b>功能</b><br>
*
*
* @author chenweikang
*/
@Controller
@RequestMapping("/greenUserInfo")
public class GreenUserInfoController extends GreenBaseController {
/**
* greenuserinfo GreenUserInfo逻辑构件
*/
@Resource
private IGreenUserInfoBizc greenuserinfoBizc;
@Resource
private IGreenUserInfoBizc greenUserInfoBizc;
@Resource
private IGreenOperateLogBizc greenOperateLogBizc;
@Resource
private GreenDictionaryInfoController greenDictionaryInfoController;
/**
* HibernateDao逻辑构件
*/
@Autowired
IHibernateDao hibernateDao;
private static final String KY = "e7033d5ccecd45ba";
private static final String IV = "d885b28044194523";
private String CK_MONEY_URL = null;
private String CK_JY_URL = null;
private String CK_KY = null;
private String CK_IV = null;
private String CK_CONSUM_URL = null;
// @Autowired
// private JdbcUtil jdbcUtil;
@Resource
private IGreenImageInfoBizc greenimageinfoBizc;
/*
*
*/
@ResponseBody
@RequestMapping(value = "/checkUserInfo", method = RequestMethod.POST)
public HashMap<String, Object> checkUserInfo(@RequestBody Object requestBody) throws Exception {
UcenterParam ucenterParam = new ObjectMapper().convertValue(requestBody, new TypeReference<UcenterParam>() {
});
HashMap<String, Object> map = new HashMap<String, Object>();
System.out.println("checkUserInfo:数据--->" + ucenterParam.getData());
String DATAstring = AesEncryptUtil.desEncrypt(ucenterParam.getData());
// System.out.println("我们的解密:"+DATAstring);
String dataString2 = AESUtil.Decrypt(ucenterParam.getData(), KY, IV);
System.out.println("third en---->:" + dataString2);
JSONObject preDataSandUserCode = new JSONObject(dataString2);
String userCode = preDataSandUserCode.getString("usercode");
String str = "green_tk_" + userCode;
String md5 = MD5Util.getMD5(str);
if (!md5.equals(preDataSandUserCode.getString("sign"))) {
return map;
}
String desData = null;
CheckUserInfo userInfo = null;
try {
// String stri =
// "{\"mobile_phone\":\"13709801236\",\"meal_no\":\"\",\"user_name\":\"n123\",\"department\":\"n123\",\"company\":\"n123\",\"channelNum\":\"001\"}";
GreenUserInfo greenUserInfo = greenUserInfoBizc.get(userCode);
// JSONObject json = new JSONObject(stri);
userInfo = new CheckUserInfo();
userInfo.setUser_name(greenUserInfo.getLoginName());
userInfo.setCompany(greenUserInfo.getCompony());
userInfo.setDepartment(greenUserInfo.getDepartmentName());
userInfo.setMeal_no(greenUserInfo.getMealNo());
userInfo.setMobile_phone(greenUserInfo.getMobile());
// json.put("mobile_phone", greenUserInfo.getMobile());
// json.put("meal_no", greenUserInfo.getMealNo());
// json.put("user_name", greenUserInfo.getLoginName());
// json.put("department", greenUserInfo.getDepartmentName());
// json.put("company", greenUserInfo.getCompony());
String json = JsonUtil.toJson(userInfo);
desData = AESUtil.Encrypt(json, KY, IV);
map.put("data", desData);
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
/*
*
* 作废接口,不再使用了 前端 获取token 校验用户是否绑定餐卡
*/
@ResponseBody
@RequestMapping(value = "/userMealNo", method = RequestMethod.POST)
public RestResult userMealNo(@RequestBody Object requestBody) {
try {
GreenUserInfo greenUserInfo = new ObjectMapper().convertValue(requestBody,
new TypeReference<GreenUserInfo>() {
});
if (greenUserInfo.getId() != null) {
String id = greenUserInfo.getId();
String userInfoSql = "SELECT * FROM GREEN_USER_INFO WHERE id=?";
List<GreenUserInfo> userInfolist = hibernateDao.queryForListWithSql(userInfoSql, new Object[] { id },
new BeanPropertyRowMapper(GreenUserInfo.class));// 根据用户id获取用户餐卡号
if (userInfolist.get(0).getMealNo() != null) {
return new RestResult(Constant.SUCCESS, "请求成功!");
}
return new RestResult(Constant.FAILED, "卡号不存在");
}
return new RestResult(Constant.FAILED, "用户id为空");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return new RestResult(Constant.FAILED, "请求失败");
}
}
/**
* 取余额请求URL
*
* @return
*/
private String getCkMoneyUrl() {
if (this.CK_MONEY_URL == null) {
String dataType = "ticketUrl";
String dataCode = "001";
List<Map<String, String>> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode);
Map<String, String> urlMap = urlInfo.get(0);
String ticketUrl = urlMap.get("data_value");
String tmp = ticketUrl.substring(ticketUrl.length() - 1);
if (tmp.equals("/")) {
ticketUrl = ticketUrl.substring(0, ticketUrl.length() - 1);
}
this.CK_MONEY_URL = ticketUrl;
}
return this.CK_MONEY_URL;
}
/**
* 查询餐卡消费记录的URL
*
* @return
*/
private String getCkConsumUrl() {
if (this.CK_CONSUM_URL == null) {
String dataType = "CKConsumUrl";
String dataCode = "001";
List<Map<String, String>> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode);
Map<String, String> urlMap = urlInfo.get(0);
String ticketUrl = urlMap.get("data_value");
String tmp = ticketUrl.substring(ticketUrl.length() - 1);
if (tmp.equals("/")) {
ticketUrl = ticketUrl.substring(0, ticketUrl.length() - 1);
}
this.CK_CONSUM_URL = ticketUrl;
}
return this.CK_CONSUM_URL;
}
/**
* 取余额请求KY
*
* @return
*/
private String getCkKy() {
if (this.CK_KY == null) {
String dataType = "mealcard_key";
String dataCode = "01";
List<Map<String, String>> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode);
Map<String, String> urlMap = urlInfo.get(0);
String ky = urlMap.get("data_value");
this.CK_KY = ky;
}
return this.CK_KY;
}
/**
* 取余额请求IV
*
* @return
*/
private String getCkIv() {
if (this.CK_IV == null) {
String dataType = "mealcard_iv";
String dataCode = "01";
List<Map<String, String>> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode);
Map<String, String> urlMap = urlInfo.get(0);
String iv = urlMap.get("data_value");
this.CK_IV = iv;
}
return this.CK_IV;
}
/**
* 取餐卡余额请求body
*
* @param mealNo
* @return
* @throws Exception
*/
private String getCkMoneySignBody(String mealNo) throws Exception {
String ky = getCkKy();
String iv = getCkIv();
// String url = "http://192.168.222.121:8008/PersonMoney";
mealNo = DesUtil.encrypt(mealNo, ky, iv);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String dt = simpleDateFormat.format(new Date());
StringBuffer sBuffer = new StringBuffer("");
sBuffer.append("\"CardCode\":\"");
sBuffer.append(mealNo);
sBuffer.append("\",\"timestamp\":\"");
sBuffer.append(dt);
sBuffer.append("\"");
String ss = sBuffer.toString();
System.out.println("=======待签名数据:" + ss);
String sign = MD5Util.getMD5(ss);
// ==================================
StringBuffer ret = new StringBuffer("{");
ret.append("\"CardCode\":\"");
ret.append(mealNo);
ret.append("\",\"timestamp\":\"");
ret.append(dt);
ret.append("\",\"sign\":\"");
ret.append(sign);
ret.append("\"}");
String jsonString = ret.toString();
System.out.println("===签名后组装的jsonString:" + jsonString);
return jsonString;
}
/**
* 解密餐卡数据
*
* @param base64Str
* @return
* @throws Exception
*/
private String getCkData(String base64Str) throws Exception {
String ky = getCkKy();
String iv = getCkIv();
String res = DesUtil.decrypt(base64Str, ky, iv);
return res;
}
/**
* 取餐卡消费记录请求body
*
* @param mealNo
* @return
* @throws Exception
*/
private String getCkConsumSignBody(String mealNo) throws Exception {
String ky = getCkKy();
String iv = getCkIv();
mealNo = DesUtil.encrypt(mealNo, ky, iv);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String dt = simpleDateFormat.format(new Date());
SimpleDateFormat ymdFormat = new SimpleDateFormat("yyyy-MM-dd");
String ymd = ymdFormat.format(new Date());
String start = ymd + " 00:00:00";
String end = ymd + " 23:59:59";
// String start = "2019-09-20 00:00:00";
// String end ="2019-09-20 23:59:59";
StringBuffer sBuffer = new StringBuffer("");
sBuffer.append("\"CardCode\":\"");
sBuffer.append(mealNo);
sBuffer.append("\",\"Start_Time\":\"");
sBuffer.append(start);
sBuffer.append("\",\"End_Time\":\"");
sBuffer.append(end);
sBuffer.append("\",\"timestamp\":\"");
sBuffer.append(dt);
sBuffer.append("\"");
String ss = sBuffer.toString();
String sign = MD5Util.getMD5(ss);
StringBuffer ret = new StringBuffer("{");
ret.append("\"CardCode\":\"");
ret.append(mealNo);
ret.append("\",\"Start_Time\":\"");
ret.append(start);
ret.append("\",\"End_Time\":\"");
ret.append(end);
ret.append("\",\"timestamp\":\"");
ret.append(dt);
ret.append("\",\"sign\":\"");
ret.append(sign);
ret.append("\"}");
String jsonString = ret.toString();
return jsonString;
}
/**
* 取餐卡消费记录请求body(最近一个月)
*
* @param mealNo
* @return
* @throws Exception
*/
private String getCkConsumSignBody_lastmonth(String mealNo) throws Exception {
String ky = getCkKy();
String iv = getCkIv();
mealNo = DesUtil.encrypt(mealNo, ky, iv);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String dt = simpleDateFormat.format(new Date());
SimpleDateFormat ymdFormat = new SimpleDateFormat("yyyy-MM-dd");
String ymd = ymdFormat.format(new Date());
// 取30天前日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date today = new Date();
// 获取三十天前日期
Calendar theCa = Calendar.getInstance();
theCa.setTime(today);
theCa.add(theCa.DATE, -30);// 最后一个数字30可改30天的意思
Date startTime = theCa.getTime();
String startDate = sdf.format(startTime);// 三十天之前日期
String start = startDate + " 00:00:00";
String end = ymd + " 23:59:59";
// String start = "2019-09-20 00:00:00";
// String end ="2019-09-20 23:59:59";
StringBuffer sBuffer = new StringBuffer("");
sBuffer.append("\"CardCode\":\"");
sBuffer.append(mealNo);
sBuffer.append("\",\"Start_Time\":\"");
sBuffer.append(start);
sBuffer.append("\",\"End_Time\":\"");
sBuffer.append(end);
sBuffer.append("\",\"timestamp\":\"");
sBuffer.append(dt);
sBuffer.append("\"");
String ss = sBuffer.toString();
String sign = MD5Util.getMD5(ss);
StringBuffer ret = new StringBuffer("{");
ret.append("\"CardCode\":\"");
ret.append(mealNo);
ret.append("\",\"Start_Time\":\"");
ret.append(start);
ret.append("\",\"End_Time\":\"");
ret.append(end);
ret.append("\",\"timestamp\":\"");
ret.append(dt);
ret.append("\",\"sign\":\"");
ret.append(sign);
ret.append("\"}");
String jsonString = ret.toString();
return jsonString;
}
// public static void main(String[] args) throws Exception {
// // String string = getCkSignBody("0004774159");
// }
/**
* 前端返回二维码
*
* 前端调用接口返回时间戳和餐卡卡号和余额
*
* @param userId
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping(value = "/buildNumber", method = RequestMethod.POST)
public RestResult buildNumber(@RequestBody Object requestBody) {
try {
UserVo user = new ObjectMapper().convertValue(requestBody, new TypeReference<UserVo>() {
});
String userId = user.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
// 此处时间戳+餐卡失效时长2分钟
String timeStr = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date().getTime() + 120000);
// 根据userId查询卡号
GreenUserInfo greenUserInfo = greenUserInfoBizc.get(user.getUserId());
String mealNo = greenUserInfo.getMealNo();
if (mealNo != null && !"".equals(mealNo)) {
/*
* String url = getCkMoneyUrl(); // String url =
* "http://124.193.158.122:8009/PersonMoney";//测试接口 String param
* = getCkMoneySignBody(mealNo);
*
* // 根据url和餐卡卡号调用餐卡接口 JSONObject jsonObject =
* HttpClient.httpPostSpecialTimeOut(url, param); if
* (jsonObject.has("StatusCode")) { // error return new
* RestResult(Constant.FAILED,
* jsonObject.getString("StatusMessage")); } if
* ((jsonObject.has("status") && jsonObject.getInt("status") !=
* 200) || jsonObject.has("getFail")) { // 如果是http请求错误或抛出异常捕获
* 都只返回二维码 String greenCard = mealNo + "_" + timeStr; // 餐卡加密
* int key = 0x0610; String enCode =
* EncryptUtil.Encrypt(greenCard, key); Map<String, String> map
* = new HashMap<String, String>(); map.put("enCode", enCode);
* map.put("balance", null); // JSONArray json =
* JSONArray.fromObject(map); return new
* RestResult(Constant.SUCCESS, "成功", map); }
*/
/*
* // 查询卡号余额 String balance =
* jsonObject.get("value").toString();
* System.out.println("==== 原始余额数据:" + balance); balance =
* getCkData(balance); BigDecimal a =
* BigDecimal.valueOf(Double.valueOf(balance)); BigDecimal
* b=a.setScale(2, RoundingMode.HALF_UP);
* System.out.println("==== 解密余额数据:" + b.toString());
*/
String greenCard = mealNo + "_" + timeStr;
// 餐卡加密
int key = 0x0610;
String enCode = EncryptUtil.Encrypt(greenCard, key);
List<Map<String, Object>> dictionaryInfo = greenDictionaryInfoController
.getDictionaryInfo("cardShowIcon");
int cardShowIcon = Integer.valueOf(dictionaryInfo.get(0).get("data_value") + "");
Map<String, String> map = new HashMap<String, String>();
/* map.put("balance", b.toString()); */
map.put("enCode", enCode);
map.put("showIcon", cardShowIcon + "");
// JSONArray json = JSONArray.fromObject(map);
return new RestResult(Constant.SUCCESS, "成功", map);
}
return new RestResult(Constant.NO_CK, "餐卡号不存在");
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "请求失败");
}
}
/**
* 获取餐卡余额
*
* @param requestBody
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping(value = "/getBalance", method = RequestMethod.POST)
public RestResult getBalance(@RequestBody Object requestBody) {
try {
UserVo user = new ObjectMapper().convertValue(requestBody, new TypeReference<UserVo>() {
});
String userId = user.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
// 根据userId查询卡号
GreenUserInfo greenUserInfo = greenUserInfoBizc.get(user.getUserId());
String mealNo = greenUserInfo.getMealNo();
if (mealNo != null && !"".equals(mealNo)) {
String url = getCkMoneyUrl();
// String url = "http://124.193.158.122:8009/PersonMoney";//测试接口
String param = getCkMoneySignBody(mealNo);
// 根据url和餐卡卡号调用餐卡接口
JSONObject jsonObject = HttpClient.httpPostSpecialTimeOut(url, param);
if (jsonObject.has("StatusCode")) {
// error
return new RestResult(Constant.FAILED, jsonObject.getString("StatusMessage"));
}
if ((jsonObject.has("status") && jsonObject.getInt("status") != 200) || jsonObject.has("getFail")) {
saveErorrLog("餐卡-获取余额", Constant.INSERT, Constant.OPERATE_FAIL, "获取餐卡余额失败!", "0", userId);
return new RestResult(Constant.FAILED, "餐卡余额获取失败!");
}
// 查询卡号余额
String balance = jsonObject.get("value").toString();
balance = getCkData(balance);
BigDecimal a = BigDecimal.valueOf(Double.valueOf(balance));
BigDecimal b = a.setScale(2, RoundingMode.HALF_UP);
System.out.println("==== 解密余额数据:" + b.toString());
Map<String, String> map = new HashMap<String, String>();
map.put("balance", b.toString());
// JSONArray json = JSONArray.fromObject(map);
return new RestResult(Constant.SUCCESS, "成功", map);
}
return new RestResult(Constant.NO_CK, "餐卡号不存在");
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "请求失败");
}
}
/**
* 记录餐卡消费记录
*
* @param userId
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping(value = "/cardConsum", method = RequestMethod.POST)
public RestResult cardConsum(@RequestBody Object requestBody) {
try {
UserVo user = new ObjectMapper().convertValue(requestBody, new TypeReference<UserVo>() {
});
String userId = user.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
// 根据userId查询卡号
GreenUserInfo greenUserInfo = greenUserInfoBizc.get(user.getUserId());
String mealNo = greenUserInfo.getMealNo();
if (mealNo != null) {
String url = getCkConsumUrl();
// String url =
// "http://124.193.158.122:8009/consume_Records";//测试接口
String param = getCkConsumSignBody(mealNo);
// 根据url和餐卡卡号和起始时间+结束时间 调用餐卡消费记录接口
com.alibaba.fastjson.JSONArray jsonObject = HttpClient.httpPostSpecialTimeOutToArray(url, param);
if (jsonObject.isEmpty()) {
saveErorrLog("餐卡-消费记录", Constant.INSERT, Constant.OPERATE_FAIL, "获取餐卡消费记录失败!", "0", userId);
return new RestResult(Constant.FAILED, "请求失败");
}
List<GreenCardConsumptionDTO> list = new ObjectMapper().convertValue(jsonObject,
new TypeReference<List<GreenCardConsumptionDTO>>() {
});
for (GreenCardConsumptionDTO greenCardConsumptionDTO : list) {
GreenCardConsumption greenCardConsumption = new GreenCardConsumption();
greenCardConsumption.setRecordid(getCkData(greenCardConsumptionDTO.getRecordid()));
greenCardConsumption.setEmpno(getCkData(greenCardConsumptionDTO.getEmpno()));
greenCardConsumption.setCardid(getCkData(greenCardConsumptionDTO.getCardid()));
greenCardConsumption.setOutmoney(getCkData(greenCardConsumptionDTO.getOutmoney()));
greenCardConsumption.setSoutmoney(getCkData(greenCardConsumptionDTO.getSoutmoney()));
greenCardConsumption.setBefmoney(getCkData(greenCardConsumptionDTO.getBefmoney()));
greenCardConsumption.setSbefmoney(getCkData(greenCardConsumptionDTO.getSbefmoney()));
greenCardConsumption.setCardtime(greenCardConsumptionDTO.getCardtime());
greenCardConsumption.setEmpname(greenCardConsumptionDTO.getEmpname());
greenCardConsumption.setBmname(greenCardConsumptionDTO.getBmname());
greenCardConsumption.setPosnanme(greenCardConsumptionDTO.getPosnanme());
greenCardConsumption.setSecName(greenCardConsumptionDTO.getSec_name());
greenCardConsumption.setConsname(greenCardConsumptionDTO.getConsname());
greenCardConsumption.setGmtCreated(new Date());
greenCardConsumption.setGmtModified(new Date());
greenCardConsumption.setCreator(info.getLoginName());
greenCardConsumption.setModifier(info.getLoginName());
greenCardConsumption.setIsDeleted("N");
hibernateDao.saveObject(greenCardConsumption);
}
return new RestResult(Constant.SUCCESS, "成功");
}
return new RestResult(Constant.NO_CK, "卡号不存在");
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "请求失败");
}
}
/**
* 查询餐卡消费记录返回30条
*
* @param userId
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping(value = "/listConsumRecords", method = RequestMethod.POST)
public RestResult listConsumRecords(@RequestBody Object requestBody) {
try {
UserVo user = new ObjectMapper().convertValue(requestBody, new TypeReference<UserVo>() {
});
String userId = user.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
// 根据userId查询卡号
GreenUserInfo greenUserInfo = greenUserInfoBizc.get(user.getUserId());
String mealNo = greenUserInfo.getMealNo();
if (mealNo != null) {
// String url = getCkConsumUrl();
String url = "http://124.193.158.122:8009/consume_Records";// 测试接口
String param = getCkConsumSignBody_lastmonth(mealNo);
// 根据url和餐卡卡号和起始时间+结束时间 调用餐卡消费记录接口
com.alibaba.fastjson.JSONArray jsonObject = null;
try {
jsonObject = HttpClient.httpPostSpecialTimeOutToArray(url, param);
if (jsonObject.isEmpty()) {
saveErorrLog("餐卡-消费记录", Constant.INSERT, Constant.OPERATE_FAIL, "获取餐卡消费记录失败!", "0", userId);
return new RestResult(Constant.FAILED, "餐卡系统请求失败");
}
} catch (Exception e) {
List<Object> res = new ArrayList<Object>();
GreenCardConsumption greenCardConsumption = new GreenCardConsumption();
greenCardConsumption.setOutmoney("");
greenCardConsumption.setCardtime("暂未获取到消费记录");
res.add(greenCardConsumption);
saveErorrLog("餐卡-消费记录", Constant.INSERT, Constant.OPERATE_FAIL, "获取餐卡消费记录失败!", "0", userId);
return new RestResult(Constant.SUCCESS, res);
// return new RestResult(Constant.FAILED, "餐卡系统请求失败");
}
List<GreenCardConsumptionDTO> list = new ObjectMapper().convertValue(jsonObject,
new TypeReference<List<GreenCardConsumptionDTO>>() {
});
List<Object> res = new ArrayList<Object>();
int index = 0;
for (GreenCardConsumptionDTO greenCardConsumptionDTO : list) {
GreenCardConsumption greenCardConsumption = new GreenCardConsumption();
BigDecimal b1 = new BigDecimal(getCkData(greenCardConsumptionDTO.getOutmoney()));
BigDecimal b2 = b1.setScale(2, BigDecimal.ROUND_HALF_EVEN);
greenCardConsumption.setOutmoney(b2.toString());
greenCardConsumption.setCardtime(greenCardConsumptionDTO.getCardtime());
res.add(greenCardConsumption);
index = index + 1;
if (index > 30) {
break;
}
}
return new RestResult(Constant.SUCCESS, res);
}
return new RestResult(Constant.NO_CK, "卡号不存在");
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "请求失败");
}
}
/**
* 前端轮询调用接口返回查询二维码扫描支付结果
*
* 作废的代码
*
* @param userId
* @return
* @throws Exception
*/
@ResponseBody
@RequestMapping(value = "/buildCode", method = RequestMethod.POST)
public RestResult buildCode(@RequestBody Object requestBody) {
UserVo user = new ObjectMapper().convertValue(requestBody, new TypeReference<UserVo>() {
});
try {
String userId = user.getUserId();
GreenUserInfo info = getUserInfo(userId);
if (info == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
// 根据userId查询卡号
GreenUserInfo greenUserInfo = greenUserInfoBizc.get(user.getUserId());
String mealNo = greenUserInfo.getMealNo();
if (mealNo != null) {
String dataType = "ticketUrl";
String dataCode = "002";
List<Map<String, String>> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode);
Map<String, String> urlMap = urlInfo.get(0);
String ticketUrl = urlMap.get("data_value");
String url = ticketUrl + mealNo;
// 根据url和餐卡卡号调用餐卡接口
JSONObject jsonObject = HttpClient.httpGet(url);
// 餐卡加密
// int key=0x0610;
// String enCode=EncryptUtil.Encrypt(greenCard,key);
// JSONArray json = JSONArray.fromObject(map);
return new RestResult(Constant.SUCCESS, "成功", jsonObject);
}
} catch (Exception e) {
return new RestResult(Constant.FAILED, "失败", null);
}
return new RestResult(Constant.FAILED, "失败", "卡号不存在");
}
/*
* @ResponseBody
*
* @RequestMapping(value="/verifyUser",method=RequestMethod.POST) public
* RestResult verifyUser(@RequestParam(value="userId",required=true) String
* userId) throws Exception{
*
* return new RestResult(Constant.SUCCESS,userAccess(userId));
*
* }
*/
@SuppressWarnings("deprecation")
/**
* 第三方能力平台认证接口调用
*
* @param operatorItemModel
* @return
* @throws Exception
*/
@RequestMapping(value = "/platformAuthen", method = RequestMethod.POST)
public @ResponseBody RestResult platformAuthen(@RequestBody Object requestBody) {
try {
GreenUserInfo greenUserInfo = new ObjectMapper().convertValue(requestBody,
new TypeReference<GreenUserInfo>() {
});
String dataType = "businessTokenUrl";
String dataCode = "101";
List<Map<String, String>> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode);
Map<String, String> urlMap = urlInfo.get(0);
String businessTokenUrl = urlMap.get("data_value");
// String url =
// "http://211.160.22.123:19084/protocolTrans/openapi/sunbox_gateway_api_service_system_SysSupportApiService_login1";
JSONObject model = new JSONObject();
JSONObject body = new JSONObject();
// 能力平台提供的服务订阅者账号(能力平台提供)
// String possword = "85eb01d4aebad7a093385a302e49b57e";
// 账号(能力平台提供)
List<Map<String, String>> tokenInfo = greenDictionaryInfoController.getDictionaryInfo("tokenAppAccount",
"101");
String userName = tokenInfo.get(0).get("data_value");
// appid是能力订阅者订购的能力应用id(订购应用后生成)
List<Map<String, String>> tokenInfoUser = greenDictionaryInfoController
.getDictionaryInfo("tokenAppPossword", "101");
String possword = MD5Util.getMD5(tokenInfoUser.get(0).get("data_value"));
String appId = "4028e5c66add2246016b69c764940133";
// 固定值(5为能力)
int businessLabel = 5;
// 封装账户信息
model.put("password", possword);
model.put("userName", userName);
model.put("businessLabel", businessLabel);
// 保存能力id
body.put("appId", appId);
// 参数加密
body.put("OperatorItemModel", AESUtil.Encrypt(model.toString(), KY, IV));
Map<String, Object> map = new HashMap<String, Object>();
map.put("args", body);
// 1.能力平台认证
String doRequest = "";
try {
doRequest = mapPost(businessTokenUrl, map, "utf-8");
} catch (Exception e) {
saveErorrLog("第三方能力平台认证接口", Constant.INSERT, Constant.OPERATE_FAIL, "第三方能力平台认证接口调用失败!", "0",
greenUserInfo.getId());
}
JSONObject result = new JSONObject(doRequest);
if (result.getInt("status") == 0) {// 成功
String datasytr = result.getString("data");
// 解密后的Data
String decrypt = URLDecoder.decode(AESUtil.Decrypt(datasytr, KY, IV));
JSONObject dataJson = new JSONObject(decrypt).getJSONObject("data");
// 用户token
String userToken = dataJson.getString("token");
// userID获取随后改为动态
String userId = greenUserInfo.getId();
// String appid = "appId";
// 2.用户认证
Map<Object, Object> tokenMap = userAccess(userId, userToken, appId);
return new RestResult(Constant.SUCCESS, "请求成功!", tokenMap);
}
saveErorrLog("第三方能力平台认证接口", Constant.INSERT, Constant.OPERATE_FAIL, "第三方能力平台认证接口调用失败!", "0",
greenUserInfo.getId());
return new RestResult(Constant.FAILED, "访问商城请求异常!");
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "请求失败");
}
}
/**
* 用户认证/注册三方接口
*
* @param userId
* @return doRequesttoken
* @throws Exception
*/
public Map<Object, Object> userAccess(String userId, String userToken, String appid) throws Exception {
// 访问地址
// String url =
// "http://192.168.101.71:8080/protocolTrans/openapi/ShopService";
String dataType = "userTokenUrl";
String dataCode = "101";
List<Map<String, String>> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode);
Map<String, String> urlMap = urlInfo.get(0);
String userTokenUrl = urlMap.get("data_value");
JSONObject arg = new JSONObject();
JSONObject body = new JSONObject();
// 认证接口返回的token
body.put("authToken", AESUtil.Encrypt(userToken, KY, IV));
// 能力订阅后的应用id
body.put("appId", appid);
// 接口参数(后勤提供的用户唯一标识)
body.put("userCode", AESUtil.Encrypt(userId, KY, IV));
arg.put("args", body);
Map<String, Object> map = new HashMap<String, Object>();
map.put("args", body);
String tokenJson = mapPost(userTokenUrl, map, "utf-8");
JSONObject ouCardObj = new JSONObject(tokenJson);
// JSONObject ouCardObj = JSONObject.parseObject(tokenJson);
if (ouCardObj != null) {
if (ouCardObj.getInt("status") == 0) {
String decodeOuCar = ouCardObj.getString("data");
String decode = URLDecoder.decode(AESUtil.Decrypt(decodeOuCar, KY, IV));
JSONObject tokenData = new JSONObject(decode);
String token = tokenData.getString("data");
Map<Object, Object> tokenMap = new HashMap<Object, Object>();
tokenMap.put("authToken", userToken);
tokenMap.put("endToken", token);
return tokenMap;
}
}
return null;
}
/**
* 登录 获取 Cookie
*
* @param url
* API地址
* @param username
* 账号, 注意不要使用admin@megvii.com
* @param possword
* 密码
* @return cookie CookieStore
* @throws IOException
* @throws Exception
*/
// public static String dopost(String url, Map<String, Object> map) throws
// IOException{
//
// CloseableHttpClient httpclient = null;
// String responseBody = null;
// try {
// RequestConfig requestConfig =
// RequestConfig.custom().setConnectTimeout(2000).setConnectionRequestTimeout(3000)
// .setSocketTimeout(3000).build();
// httpclient = HttpClients.createDefault();
// HttpPost request = new HttpPost(url);
// request.setConfig(requestConfig);
//
// // 设置user-agent为 "Koala Admin"
// // 设置Content-Type为 "application/json"
// request.setHeader("Content-Type", "application/json");
//
// JSONObject json = new JSONObject(map);
//
// request.setEntity(new StringEntity(json.toString(), "UTF-8"));
//
// // 发起网络请求,获取结果值
// HttpClientContext context = HttpClientContext.create();
// CloseableHttpResponse response = httpclient.execute(request, context);
// responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
//
// /*
// * //解析JSON数据 JSONObject resp = new JSONObject(responseBody); int result
// * = resp.optInt("code", -1); if (result != 0) {
// * System.err.println("Login failed, code:" + result); }else{
// * System.out.println("Login Success,id:" +
// * resp.getJSONObject("data").getInt("id")); return
// * context.getCookieStore(); }
// */
//
//
// } catch (Exception e) {
// e.printStackTrace();
// }finally {
// if (httpclient != null) {
// httpclient.close();
// }
// }
// return responseBody;
// }
// public static String doFormPost(String url, Map<String, Object> map) {
// RequestConfig requestConfig =
// RequestConfig.custom().setConnectTimeout(2000).setConnectionRequestTimeout(3000)
// .setSocketTimeout(3000).build();
// CloseableHttpClient httpclient = null;
// String responseBody = "";
// try {
//
// httpclient = HttpClients.createDefault();
// HttpPost request = new HttpPost(url);
// request.setConfig(requestConfig);
//
// // 设置user-agent为 "Koala Admin"
// // 设置Content-Type为 "application/json"
// // request.setHeader("Content-Type", "application/json");
// request.setHeader("Content-Type", "application/x-www-form-urlencoded");
// MultipartEntity reqEntity = new MultipartEntity();
//
// // JSONObject json = new JSONObject(map);
// for (String key : map.keySet()) {
// reqEntity.addPart(key, new StringBody(map.get(key).toString()));
// }
//
// request.setEntity(reqEntity);
//
// // 发起网络请求,获取结果值
// HttpClientContext context = HttpClientContext.create();
// CloseableHttpResponse response = httpclient.execute(request, context);
// responseBody = EntityUtils.toString(response.getEntity(), "UTF-8");
//
// /*
// * //解析JSON数据 JSONObject resp = new JSONObject(responseBody); int result
// * = resp.optInt("code", -1); if (result != 0) {
// * System.err.println("Login failed, code:" + result); }else{
// * System.out.println("Login Success,id:" +
// * resp.getJSONObject("data").getInt("id")); return
// * context.getCookieStore(); }
// */
// return responseBody;
// }
// catch (Exception e) {
//
// e.printStackTrace();
// }finally {
// try {
// if(httpclient!=null){
// httpclient.close();
// }
// } catch (IOException e) {
//
// e.printStackTrace();
// }
// }
// return null;
// }
/**
* 每日食堂
*
* @param url
* @param map
* @param encoding
* @return
* @throws IOException
*/
public static String mapPost(String url, Map<String, Object> map, String encoding) throws IOException {
System.out.println("调用http请求:" + url + "参数为:---->" + map.toString());
CloseableHttpClient httpClient = null;
HttpPost httpPost = null;
String result = null;
String userTokenUrl = "http://211.160.22.123:19118/protocolTrans/openapi/ShopService";
String businessTokenUrl = "http://211.160.22.123:19118/protocolTrans/openapi/sunbox_gateway_api_service_system_SysSupportApiService_login1";
// 不进行判断直接使用库里的url调用
try {
// if (!userTokenUrl.equals(url) && !businessTokenUrl.equals(url)) {
// return "";
// }
httpClient = HttpClients.createDefault();
httpPost = new HttpPost(url);
List<NameValuePair> list = new ArrayList<NameValuePair>();
Iterator iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> elem = (Map.Entry<String, String>) iterator.next();
String regex = "[`~!@#$%^&*()\\+\\=\\{}|:\"?><【】\\/r\\/n]";
Pattern pa = Pattern.compile(regex);
Matcher ma = pa.matcher(String.valueOf(elem.getValue()));
if (ma.find()) {
list.add(new BasicNameValuePair(elem.getKey(), String.valueOf(elem.getValue())));
} else {
return "";
}
}
if (list.size() > 0) {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list, encoding);
httpPost.setEntity(entity);
}
HttpResponse response = httpClient.execute(httpPost);
if (response != null) {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
result = EntityUtils.toString(resEntity, encoding);
}
}
System.out.println("调用http请求结果:" + result);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (httpClient != null) {
httpClient.close();
}
}
return result;
}
public static String getToken() throws Exception {
// // 访问地址(测试内网)
// String url =
// "http://192.168.101.71:8080/protocolTrans/openapi/sunbox_gateway_api_service_system_SysSupportApiService_login1";
// JSONObject model = new JSONObject();
// JSONObject body = new JSONObject();
// // 能力平台提供的服务订阅者账号(能力平台提供)
// String possword = "85eb01d4aebad7a093385a302e49b57e";
// // 账号(能力平台提供)
// String userName = "hqapp";
// // appid是能力订阅者订购的能力应用id(订购应用后生成)
// String appId = "4028e5c66add2246016b69c764940133";
// // 固定值(5为能力)
// int businessLabel = 5;
// // 封装账户信息
// model.put("password", possword);
// model.put("userName", userName);
// model.put("businessLabel", businessLabel);
// // 保存能力id
// body.put("appId", appId);
// // 参数加密
// body.put("OperatorItemModel",
// AesEncryptUtil.encrypt(model.toString()));
// Map<String, Object> map = new HashMap<String, Object>();
// map.put("args", body);
// String tokenJson = mapPost(url, map, "utf-8");
//
String token = null;
// JSONObject tokenObj = new JSONObject(tokenJson);
// // JSONObject tokenObj = JSONObject.parseObject(tokenJson);
// tokenObj.put("data",
// URLDecoder.decode(AesEncryptUtil.desEncrypt(tokenObj.getString("data"))));
// if (tokenObj.getString("status").equals("0")) {
// String d = tokenObj.getString("data");
// // JSONObject jj = (JSONObject)JSONObject.parse(d);
// // token = jj.get("data").toString();
// }
// JSONObject rr = (JSONObject)JSONObject.parse(token);
// System.err.println("------------"+rr.get("token"));
// return String.valueOf(rr.get("token"));
return token;
}
// public static void main(String[] args) throws Exception {
// getToken();
// }
/**
* 根据用户id查询该用户具有的权限
*
* @param greenUserInfo
* @return
*/
@SuppressWarnings("unchecked")
@RequestMapping(value = "/getRoleInfo", method = RequestMethod.POST)
// public @ResponseBody RestResult getRoleInfo(@RequestBody Result Result) {
public @ResponseBody RestResult getRoleInfo(HttpServletRequest request) {
Map<String, String> str = getBodyStr(request);
String checkTime = str.get("checkTime");
Result Result = JSONUtil.json2Object(str.get("bodyData"), Result.class);
/*
* if(Utils.list.contains("greenUserInfo/getRoleInfo"+checkTime)){
* return new RestResult(Constant.FAILED, "您的请求存在异常!请重新请求..."); }else{
* Utils.list.add("greenUserInfo/getRoleInfo"+checkTime); }
*/
try {
// 查询sql
// String sql = " SELECT urr.user_id,ui.real_name,owner_location
// locationId,ui.mobile,ui.meal_no, "
// + " GROUP_CONCAT(" + " DISTINCT urr.role_id ORDER BY urr.role_id)
// AS userRole"
// + " FROM GREEN_USER_ROLE_REL urr" + " INNER JOIN
// GREEN_ROLE_COMPETENCE_REL rcr"
// + " ON urr.role_id = rcr.role_id AND rcr.is_deleted = 'N'" + "
// INNER JOIN GREEN_USER_INFO ui"
// + " ON urr.user_id = ui.id AND ui.is_deleted = 'N'" + " WHERE
// urr.is_deleted = 'N'"
// + " AND ui.id = ?" + " GROUP BY" + " urr.user_id,ui.real_name";
String sql = " SELECT dp.name departmentName,ui.id ,ui.real_name,ui.department_id,owner_location locationId,ui.mobile,ui.meal_no, "
+ " GROUP_CONCAT( DISTINCT urr.role_id ORDER BY urr.role_id) AS userRole"
+ " FROM GREEN_USER_INFO ui LEFT JOIN GREEN_USER_ROLE_REL urr"
+ " ON urr.user_id = ui.id AND urr.is_deleted = 'N' "
+ " LEFT JOIN green_department dp on ui.department_id = dp.id "
+ " WHERE ui.is_deleted = 'N' AND ui.id = ? GROUP BY urr.user_id,ui.real_name";
// 执行sql
List<Map<String, Object>> list = hibernateDao.queryForListWithSql(sql, new Object[] { Result.getUserId() });
System.err.println(Result.getUserId());
// 不存在当前用户
if (list.size() <= 0) {
addLog(Constant.LOGIN, Constant.LOGIN, Constant.OPERATE_FAIL, "非法用户登录", Constant.LOG_OPERATE,
Result.getUserId());
return new RestResult(Constant.FAILED, "非法用户");
}
Map<String, Object> userMap = list.get(0);
// 获取用户拥有的所有角色
Object userRole = list.get(0).get("userRole");
// 判断该用户拥有的角色是否为空
String departmentName = list.get(0).get("departmentName").toString();
String department_id = list.get(0).get("department_id").toString();
if (userRole == null || "".equals(userRole)) {
String[] userRoleArr = new String[] { "1" };
Map map = new HashMap();
map.put("userRole", userRoleArr);
Map user = list.get(0);
map.put("userInfo", user);
return new RestResult(Constant.SUCCESS, "", map);
// return new RestResult(Constant.FAILED, "该角色暂无任何权限,请联系管理员!");
}
Object meal_no = userMap.get("meal_no");
userMap.put("mealcardBindStatus", "0");
if (meal_no != null && !String.valueOf(meal_no).trim().equals("")) {
userMap.put("mealcardBindStatus", "1");
}
userMap.remove("meal_no");
// 切割查询的权限
String[] userRoleArr = userRole.toString().split(",");
/*
* //判断当前用户的权限并封装返回结果 for(String userRoleStr:userRoleArr){
* //判断该角色是否是后端管理平台需要的角色
* if(userRoleMap.get(userRoleStr)!=null&&!"".equals(userRoleMap.get
* (userRoleStr))){
* resultList.add(userRoleMap.get(userRoleStr).toString()); }else{
* continue; } }
*/
// 返回数据
Map map = new HashMap();
// 查询app端功能是否启用集合
List<Map<String, Object>> dictionaryInfo = greenDictionaryInfoController.getDictionaryInfo("appIconSwitch");
// 查询访客功能可使用部门集合
String visitDpListEffective = "1";
// 查询访客功能可使用部门集合是否生效
try {
List<Map<String, Object>> visitDpListEffectiveMap = greenDictionaryInfoController
.getDictionaryInfo("visitDpListEffective");
visitDpListEffective = visitDpListEffectiveMap.get(0).get("data_value").toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (visitDpListEffective.equals("1")) {
List<Map<String, Object>> visitDpList = greenDictionaryInfoController.getDictionaryInfo("visitDpList");
for (int i = 0; i < dictionaryInfo.size(); i++) {
if (visitDpList.get(0).get("data_value").toString().contains(department_id)
&& "appVisitSwitch".equals(dictionaryInfo.get(i).get("data_code").toString())) {
map.put(dictionaryInfo.get(i).get("data_code").toString(), "1");
} else {
map.put(dictionaryInfo.get(i).get("data_code").toString(),
dictionaryInfo.get(i).get("data_value") + "");
}
}
} else {
for (int i = 0; i < dictionaryInfo.size(); i++) {
map.put(dictionaryInfo.get(i).get("data_code").toString(),
dictionaryInfo.get(i).get("data_value") + "");
}
}
String visitSwitch = "0";
if (!dictionaryInfo.isEmpty()) {
visitSwitch = dictionaryInfo.get(0).get("data_value") + "";
}
List<Map<String, Object>> dictionaryInfo1 = greenDictionaryInfoController.getDictionaryInfo("appParkLs");
String parkOnOff = null;
if (!dictionaryInfo1.isEmpty()) {
parkOnOff = dictionaryInfo1.get(0).get("data_value") + "";
}
List<Map<String, Object>> visitEndSwitchDictionaryInfo = greenDictionaryInfoController
.getDictionaryInfo("visitEndSwitch");
int visitEndSwitch = Integer.valueOf(visitEndSwitchDictionaryInfo.get(0).get("data_value") + "");
List<Map<String, String>> visitOutMsgMap = greenDictionaryInfoController.getDictionaryInfo("appTipMsg",
"appVisitOut");
String visitOutMsg = visitOutMsgMap.get(0).get("data_value").toString();
map.put("visitOutMsg", visitOutMsg);
map.put("visitEndSwitch", visitEndSwitch);
map.put("userRole", userRoleArr);
Map user = list.get(0);
map.put("userInfo", user);
map.put("parkOnOff", Integer.valueOf(parkOnOff));
map.put("departmentName", departmentName);
return new RestResult(Constant.SUCCESS, "", map);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "登录失败!");
}
}
/**
* 根据用户id查询该用户具有的权限
*
* @param greenUserInfo
* @return
*/
@SuppressWarnings("unchecked")
public List<Map<String, Object>> queryRoleById(String userId) {
// 查询sql
// String sql = " SELECT urr.user_id,urr.user_name," + " GROUP_CONCAT("
// + " DISTINCT rcr.role_id ORDER BY urr.role_id) AS userRole" + " FROM
// GREEN_USER_ROLE_REL urr"
// + " INNER JOIN GREEN_ROLE_COMPETENCE_REL rcr" + " ON urr.role_id =
// rcr.role_id AND rcr.is_deleted = 'N'"
// + " INNER JOIN GREEN_USER_INFO ui" + " ON urr.user_id = ui.id AND
// ui.is_deleted = 'N'"
// + " WHERE urr.is_deleted = 'N' AND ui.id = ?" + " GROUP BY
// urr.user_id,urr.user_name";
String sql = " SELECT ui.id ,ui.real_name,owner_location locationId,ui.mobile,ui.meal_no, " + " GROUP_CONCAT("
+ " DISTINCT urr.role_id ORDER BY urr.role_id) AS userRole" + " FROM GREEN_USER_INFO ui"
+ " LEFT JOIN GREEN_USER_ROLE_REL urr" + " ON urr.user_id = ui.id AND urr.is_deleted = 'N'"
+ " WHERE ui.is_deleted = 'N'" + " AND ui.id = ?" + " GROUP BY" + " urr.user_id,ui.real_name";
return hibernateDao.queryForListWithSql(sql, new Object[] { userId });
}
/**
* 根据用户id查询该用户具有的权限
*
* @param greenUserInfo
* @return
*/
@SuppressWarnings("unchecked")
public List<Map<String, Object>> queryRoleById1(String userId) {
String sql = " SELECT ui.id ,ui.real_name,owner_location locationId,ui.mobile,ui.meal_no, " + " GROUP_CONCAT("
+ " DISTINCT gr.role_code ORDER BY gr.role_code) AS userRole" + " FROM GREEN_USER_INFO ui"
+ " LEFT JOIN GREEN_USER_ROLE_REL urr" + " ON urr.user_id = ui.id LEFT JOIN green_role gr "
+ " on urr.role_id=gr.id AND urr.is_deleted = 'N'" + " WHERE ui.is_deleted = 'N'" + " AND ui.id = ?"
+ " GROUP BY" + " urr.user_id,ui.real_name";
return hibernateDao.queryForListWithSql(sql, new Object[] { userId });
}
/**
* 根据用户id查询用户信息
*
* @param userId
* @return
*/
public GreenUserInfo queryInfoById(String userId) {
return greenuserinfoBizc.get(userId);
}
/**
* 根据用户手机号查询用户信息
*
* @param userId
* @return
*/
public List<Map<String, Object>> getInfoByPhoneNum(String phoneNum) {
String sql = "select t.id,t.department_name,t.org_name from GREEN_USER_INFO t where t.mobile = ?";
return hibernateDao.queryForListWithSql(sql, new Object[]{phoneNum});
}
/**
* 餐卡数据同步接口
*
* @param mealInfo
* @return
* @throws UnsupportedEncodingException
* @throws NoSuchAlgorithmException
*/
@ResponseBody
@RequestMapping(value = "/sysmealInfo", method = RequestMethod.POST)
public RestResult sysmealInfo(@RequestBody Object requestBody)
throws UnsupportedEncodingException, NoSuchAlgorithmException {
SysMealInfo mealInfo = new ObjectMapper().convertValue(requestBody, new TypeReference<SysMealInfo>() {
});
SortedMap<String, String> parms = new TreeMap<String, String>();
// 用户名
String real_name = mealInfo.getReal_name();
// 部门名称
String department_name = mealInfo.getDepartment_name();
// 请求参数中的中文按照urlEncoder utf-8 格式编码
if (MD5SignUtil.isContainChinese(real_name))
real_name = java.net.URLEncoder.encode(real_name, "utf-8");
if (MD5SignUtil.isContainChinese(department_name))
department_name = java.net.URLEncoder.encode(department_name, "utf-8");
parms.put("mobile", mealInfo.getMobile());
parms.put("real_name", real_name);
parms.put("department_name", department_name);
parms.put("meal_no", mealInfo.getMeal_no());
parms.put("status", mealInfo.getStatus());
parms.put("operate", mealInfo.getOperate());
// 生成sign
String createSign = MD5SignUtil.createSign(parms);
if (!mealInfo.getSign().equals(createSign)) {
return new RestResult("-1", "签名错误");
}
String mealInfoSql = "SELECT * FROM GREEN_USER_INFO user WHERE `user`.mobile=? AND is_deleted = 'N'";
List<GreenUserInfo> userList = hibernateDao.queryForListWithSql(mealInfoSql,
new Object[] { mealInfo.getMobile() }, new BeanPropertyRowMapper(GreenUserInfo.class));
if (userList.size() > 0) {
// 根据操作值判断用户操作
String operate = mealInfo.getOperate();
if (operate.equals("0")) {
GreenUserInfo user = userList.get(0);
user.setDepartmentName(mealInfo.getDepartment_name());
user.setMealStatus(mealInfo.getStatus());
user.setMealNo(mealInfo.getMeal_no());
greenUserInfoBizc.update(user, user.getId());
return new RestResult("200", "新增成功");
}
if (operate.equals("1")) {
GreenUserInfo userInfo = userList.get(0);
userInfo.setMobile(mealInfo.getMobile());
userInfo.setRealName(mealInfo.getReal_name());
userInfo.setDepartmentName(mealInfo.getDepartment_name());
userInfo.setMealNo(mealInfo.getMeal_no());
userInfo.setMealStatus(mealInfo.getStatus());
greenUserInfoBizc.update(userInfo, userInfo.getId());
return new RestResult("200", "修改成功");
}
if (operate.equals("2")) {
hibernateDao.updateWithSql("UPDATE GREEN_USER_INFO SET is_deleted ='Y' WHERE mobile=?",
new Object[] { mealInfo.getMobile() });
return new RestResult("200", "删除成功");
}
}
return new RestResult("1", "未找到匹配信息");
}
public static void main(String[] args) throws Exception {
//
System.out.println(MD5Util.getMD5("ddqc_123"));
System.out.println(AESUtil.Encrypt("ddqc_123", KY, IV));
}
@RequestMapping("/test")
@ResponseBody
public RestResult test() {
// jdbcUtil.getDataSource();
// Object object =
// ApplicationContextHelper.getBean("transactionManager");
// System.out.println("==== " + object.toString());
GreenImageInfo info = greenimageinfoBizc.get("50d02873dd264e918a7ac4b7c083e535");
try {
InputStream is = info.getImageContentBlob().getBinaryStream();
StringBuffer stringBuffer = new StringBuffer();
byte[] byt = new byte[4096];
for (int i; (i = is.read(byt)) != -1;) {
stringBuffer.append(new String(byt, 0, i));
}
String ss = stringBuffer.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return new RestResult("1");
}
/*
*
* 获取临时停车审批权限
*/
@ResponseBody
@RequestMapping(value = "/getParkRole", method = RequestMethod.POST)
public RestResult getParkRole(@RequestBody Object requestBody) {
try {
UserVo userVo = new ObjectMapper().convertValue(requestBody, new TypeReference<UserVo>() {
});
if (userVo != null) {
GreenUserInfo userInfo = getUserInfo(userVo.getUserId());
if (userInfo != null) {
String parkRoleSql = "SELECT i.id as userId,i.real_name as realName, i.login_name as loginName,i.mobile as mobile FROM green_user_info i LEFT JOIN green_user_role_rel r ON i.id = r.user_id LEFT JOIN green_role gr ON gr.id = r.role_id where 1=1 AND r.is_deleted = 'N' AND i.is_deleted = 'N' and i.is_deleted='N' AND gr.role_code = ? AND i.department_id=?";
String greenPark = "temp_park_section";
List<Map<String, Object>> list = hibernateDao.queryForListWithSql(parkRoleSql,
new Object[] { greenPark, userInfo.getDepartmentId() });
return new RestResult(Constant.SUCCESS, "成功", list);
}
return new RestResult(Constant.FAILED, "用户数据为空");
}
return new RestResult(Constant.FAILED, "数据类型为空");
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "数据获取失败!");
}
}
/*
*
* 获取用户信息 by wxopenId
*/
@ResponseBody
@RequestMapping(value = "/getUserInfoByOpenId", method = RequestMethod.POST)
public RestResult getUserInfoByOpenId(@RequestBody GreenUserInfo greenUserInfo) {
try {
String parkRoleSql = "select id,login_name,real_name as username,mobile,department_id as deptId,department_name as deptName,idnumber,wx_profile "
+ " from green_user_info where is_deleted='N' and wxopenid = ? ";
List<Map<String, Object>> list = hibernateDao.queryForListWithSql(parkRoleSql,
new Object[] { greenUserInfo.getWxOpenId() });
if (list.size() > 0) {
return new RestResult(Constant.SUCCESS, "成功", list.get(0));
} else {
return new RestResult(Constant.FAILED, "您还没有注册,请先在个人中心注册账号!");
}
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "数据获取失败!");
}
}
/**
* 获取用户权限
*
* @param greenUserInfo
* @return
*/
@SuppressWarnings("unchecked")
@ResponseBody
@RequestMapping("/getUserPers")
public RestResult getUserPermission(@RequestBody String userId,String deptId) {
try {
String sql = " SELECT p1.* FROM green_permission p1 WHERE p1.code IN ( SELECT rp.permission_id FROM green_user_info u "
+ " LEFT JOIN green_user_role_rel urr ON u.id = urr.user_id "
+ " LEFT JOIN green_role gr ON gr.id = urr.role_id "
+ " LEFT JOIN green_role_permission rp ON rp.role_id = gr.id WHERE u.id = ? ) ORDER BY p1.sort asc ";
List<GreenPermission> list = hibernateDao.queryForListWithSql(sql, new Object[]{userId}, new BeanPropertyRowMapper(GreenPermission.class));
List<Object> rList = new ArrayList<Object>();
List<Integer> gpIdList = new ArrayList<Integer>();
for (GreenPermission greenPermission : list) {
if (greenPermission.getParentCode().equals(0)) { // 一级菜单
Map<String, Object> map = new HashMap<String, Object>();
map.put("name",greenPermission.getName());
map.put("isOpen", greenPermission.getIsOpen());
map.put("pageUrl", greenPermission.getPageUrl());
map.put("iconUrl", greenPermission.getIconUrl());
map.put("code", greenPermission.getCode());
List<GreenPermission> list2 = new ArrayList<GreenPermission>();
for (GreenPermission gp : list) {
Integer tipNum = gp.getTipNum();
String tipNumQuery = gp.getTipNumQuery();
if(tipNum==1&&(!StringUtil.isEmpty(tipNumQuery))&&!gpIdList.contains(gp.getId())){
Integer tipNumDate=0;
if(tipNumQuery.indexOf("deptid=?")!=-1){
tipNumDate = hibernateDao.queryForIntWithSql(tipNumQuery, new Object[]{deptId});
}else if(tipNumQuery.indexOf("apply_date=?")!=-1){
String nowDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
tipNumDate = hibernateDao.queryForIntWithSql(tipNumQuery, new Object[]{nowDate});
}else if(tipNumQuery.indexOf("take_food_time=?")!=-1){
String takeDay = "";
Integer week = DateUtil.getWeek(new Date());
if(week==1){
takeDay = DateUtil.addDays(2, new Date()).toString("yyyy-MM-dd");
}else if(week==2){
takeDay = DateUtil.addDays(1, new Date()).toString("yyyy-MM-dd");
}else if(week==3){
takeDay = DateUtil.addDays(0, new Date()).toString("yyyy-MM-dd");
}else if(week==4){
takeDay = DateUtil.addDays(1, new Date()).toString("yyyy-MM-dd");
}else if(week==5){
takeDay = DateUtil.addDays(0, new Date()).toString("yyyy-MM-dd");
}else if(week==6){
takeDay = DateUtil.addDays(4, new Date()).toString("yyyy-MM-dd");
}else if(week==7){
takeDay = DateUtil.addDays(3, new Date()).toString("yyyy-MM-dd");
}
tipNumDate = hibernateDao.queryForIntWithSql(tipNumQuery, new Object[]{takeDay});
}
else{
tipNumDate = hibernateDao.queryForIntWithSql(tipNumQuery);
}
gp.setTipNumDate(tipNumDate);
gpIdList.add(gp.getId());
}
List<GreenPermission> clist = new ArrayList<GreenPermission>();
for(GreenPermission per3 : list){
if(gp.getCode().equals(per3.getParentCode())){
clist.add(per3);
}
}
gp.setChildren(clist);
if (gp.getParentCode().equals(greenPermission.getCode())) {
list2.add(gp);
}
}
map.put("children", list2);
rList.add(map);
}
}
return new RestResult(Constant.SUCCESS, "",rList);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "数据获取失败!");
}
}
/**
* 获取用户权限
*
* @param greenUserInfo
* @return
*/
@SuppressWarnings("unchecked")
@ResponseBody
@RequestMapping("/getUserPermission3")
public RestResult getUserPermission3(@RequestBody String userId,String parentCode) {
try {
String sql = " SELECT p1.* FROM green_permission p1 WHERE p1.code IN ( SELECT rp.permission_id FROM green_user_info u "
+ " LEFT JOIN green_user_role_rel urr ON u.id = urr.user_id "
+ " LEFT JOIN green_role gr ON gr.id = urr.role_id "
+ " LEFT JOIN green_role_permission rp ON rp.role_id = gr.id WHERE u.id = ? "
+ " and PARENT_CODE=? "
+ ") ORDER BY p1.sort asc ";
List<GreenPermission> list = hibernateDao.queryForListWithSql(sql, new Object[]{userId,parentCode}, new BeanPropertyRowMapper(GreenPermission.class));
return new RestResult(Constant.SUCCESS, "",list);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "数据获取失败!");
}
}
}