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; /** * 概述
* *

* 功能
* * * @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 checkUserInfo(@RequestBody Object requestBody) throws Exception { UcenterParam ucenterParam = new ObjectMapper().convertValue(requestBody, new TypeReference() { }); HashMap map = new HashMap(); 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() { }); if (greenUserInfo.getId() != null) { String id = greenUserInfo.getId(); String userInfoSql = "SELECT * FROM GREEN_USER_INFO WHERE id=?"; List 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> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode); Map 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> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode); Map 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> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode); Map 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> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode); Map 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() { }); 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 map * = new HashMap(); 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> dictionaryInfo = greenDictionaryInfoController .getDictionaryInfo("cardShowIcon"); int cardShowIcon = Integer.valueOf(dictionaryInfo.get(0).get("data_value") + ""); Map map = new HashMap(); /* 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() { }); 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 map = new HashMap(); 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() { }); 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 list = new ObjectMapper().convertValue(jsonObject, new TypeReference>() { }); 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() { }); 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 res = new ArrayList(); 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 list = new ObjectMapper().convertValue(jsonObject, new TypeReference>() { }); List res = new ArrayList(); 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() { }); 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> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode); Map 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() { }); String dataType = "businessTokenUrl"; String dataCode = "101"; List> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode); Map 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> tokenInfo = greenDictionaryInfoController.getDictionaryInfo("tokenAppAccount", "101"); String userName = tokenInfo.get(0).get("data_value"); // appid是能力订阅者订购的能力应用id(订购应用后生成) List> 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 map = new HashMap(); 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 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 doRequest(token) * @throws Exception */ public Map 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> urlInfo = greenDictionaryInfoController.getDictionaryInfo(dataType, dataCode); Map 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 map = new HashMap(); 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 tokenMap = new HashMap(); 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 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 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 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 list = new ArrayList(); Iterator iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry elem = (Map.Entry) 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 map = new HashMap(); // 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 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> 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 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> dictionaryInfo = greenDictionaryInfoController.getDictionaryInfo("appIconSwitch"); // 查询访客功能可使用部门集合 String visitDpListEffective = "1"; // 查询访客功能可使用部门集合是否生效 try { List> 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> 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> dictionaryInfo1 = greenDictionaryInfoController.getDictionaryInfo("appParkLs"); String parkOnOff = null; if (!dictionaryInfo1.isEmpty()) { parkOnOff = dictionaryInfo1.get(0).get("data_value") + ""; } List> visitEndSwitchDictionaryInfo = greenDictionaryInfoController .getDictionaryInfo("visitEndSwitch"); int visitEndSwitch = Integer.valueOf(visitEndSwitchDictionaryInfo.get(0).get("data_value") + ""); List> 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> 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> 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> 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() { }); SortedMap parms = new TreeMap(); // 用户名 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 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() { }); 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> 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> 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 list = hibernateDao.queryForListWithSql(sql, new Object[]{userId}, new BeanPropertyRowMapper(GreenPermission.class)); List rList = new ArrayList(); List gpIdList = new ArrayList(); for (GreenPermission greenPermission : list) { if (greenPermission.getParentCode().equals(0)) { // 一级菜单 Map map = new HashMap(); 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 list2 = new ArrayList(); 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 clist = new ArrayList(); 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 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, "数据获取失败!"); } } }