ElecServiceImpl.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. package com.happy.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.happy.Model.*;
  5. import com.happy.Unitil_nsh.TLinx2Util;
  6. import com.happy.Unitil_nsh.TLinxAESCoder;
  7. import com.happy.Unitil_nsh.TestParams;
  8. import com.happy.common.wx.WxUtil;
  9. import com.happy.dao.ElecDao;
  10. import com.happy.service.ElecService;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import java.util.Date;
  14. import java.util.List;
  15. import java.util.TreeMap;
  16. @Service("ElecService")
  17. public class ElecServiceImpl implements ElecService {
  18. @Autowired
  19. public ElecDao elecDao;
  20. public ElecDao getElecDao() {
  21. return elecDao;
  22. }
  23. public void setElecDao(ElecDao elecDao) {
  24. this.elecDao = elecDao;
  25. }
  26. public List<Build_elec> querySchool(){
  27. return elecDao.querySchool();
  28. }
  29. public List<Build_elec> queryBuild(String school){
  30. return elecDao.queryBuild(school);
  31. }
  32. public List<Build_elec> queryFloors(String school, String build){
  33. return elecDao.queryFloors(school, build);
  34. }
  35. public List<Build_elec> queryDom(String school, String build, String floors){
  36. return elecDao.queryDom(school, build, floors);
  37. }
  38. public List<Build_elec> queryBuildByDom(String dom){
  39. return elecDao.queryBuildByDom(dom);
  40. }
  41. public List<Build_elec> queryUser_id(String school, String dom){
  42. return elecDao.queryUser_id(school, dom);
  43. }
  44. public List<Build_elec> queryBuildByPoint(String pointid){
  45. return elecDao.queryBuildByPoint(pointid);
  46. }
  47. public JSONObject payOrder(String outNo, String pmtTag, String pmtName, String ordName, Integer originalAmount,
  48. Integer discountAmount, Integer ignoreAmount, Integer tradeAmount, String tradeAccount,
  49. String tradeNo, String tradeResult, String remark, String authCode, String tag,
  50. String jumpUrl, String notifyUrl,String sub_openid) {
  51. JSONObject resultjson = new JSONObject();
  52. // 初始化参数
  53. String timestamp = new Date().getTime() / 1000 + ""; // 时间
  54. try {
  55. // 固定参数
  56. TreeMap<String, String> postmap = new TreeMap<String, String>(); // 请求参数的map
  57. postmap.put("open_id", TestParams.OPEN_ID);
  58. postmap.put("timestamp", timestamp);
  59. TreeMap<String, Object> datamap = new TreeMap<String, Object>(); // data参数的map
  60. datamap.put("out_no", outNo);
  61. datamap.put("pmt_tag", pmtTag);
  62. datamap.put("pmt_name", pmtName);
  63. datamap.put("ord_name", ordName);
  64. datamap.put("original_amount", originalAmount + "");
  65. datamap.put("discount_amount", discountAmount + "");
  66. datamap.put("ignore_amount", ignoreAmount + "");
  67. datamap.put("trade_amount", tradeAmount + "");
  68. datamap.put("trade_account", tradeAccount);
  69. datamap.put("trade_no", tradeNo);
  70. datamap.put("trade_result", tradeResult);
  71. datamap.put("remark", remark);
  72. datamap.put("tag", tag);
  73. datamap.put("notify_url", notifyUrl);
  74. datamap.put("sub_appid", WeiXinUtil.appid_elcn);
  75. datamap.put("sub_openid", sub_openid);
  76. datamap.put("JSAPI","1");
  77. /**
  78. * 1 data字段内容进行AES加密,再二进制转十六进制(bin2hex)
  79. */
  80. TLinx2Util.handleEncrypt(datamap, postmap);
  81. /**
  82. * 2 请求参数签名 按A~z排序,串联成字符串,先进行sha1加密(小写),再进行md5加密(小写),得到签名
  83. */
  84. TLinx2Util.handleSign(postmap);
  85. /**
  86. * 3 请求、响应
  87. */
  88. String rspStr = TLinx2Util.handlePost(postmap, TestParams.PAYORDER);
  89. //System.out.println("====post响应字符串= " + rspStr);
  90. /**
  91. * 4 验签 有data节点时才验签
  92. */
  93. JSONObject respObject = JSONObject.parseObject(rspStr);
  94. //System.out.println("====响应错误码:" + respObject.get("errcode"));
  95. //System.out.println("====响应错误提示:" + respObject.get("msg"));
  96. //System.out.println(respObject);
  97. Object dataStr = respObject.get("data");
  98. if (!rspStr.isEmpty() && (dataStr != null)) {
  99. if (TLinx2Util.verifySign(respObject)) { // 验签成功
  100. /**
  101. * 5 AES解密,并hex2bin
  102. */
  103. String respData = TLinxAESCoder.decrypt(dataStr.toString(), TestParams.OPEN_KEY);
  104. System.out.println("=================响应data内容= " + respData);
  105. JSONObject jsonObject = JSONObject.parseObject(respData);
  106. System.out.println("appid: "+jsonObject);
  107. //Object tradeQrcode = jsonObject.get("trade_qrcode");
  108. resultjson.put("timeStamp", jsonObject.get("timeStamp"));
  109. resultjson.put("nonceStr", jsonObject.get("nonceStr"));
  110. resultjson.put("appId", jsonObject.get("appId"));
  111. resultjson.put("signType", jsonObject.get("signType"));
  112. resultjson.put("package", jsonObject.get("package"));
  113. resultjson.put("paySign", jsonObject.get("paySign"));
  114. return resultjson;
  115. //System.out.println("=================支付二维码地址= " + tradeQrcode.toString());
  116. //System.out.println("=================trade_result= " + jsonObject.get("trade_result").toString());
  117. } else {
  118. //System.out.println("==========验签失败==========");
  119. return resultjson;
  120. }
  121. } else {
  122. //System.out.println("==========没有返回data数据==========");
  123. return resultjson;
  124. }
  125. } catch (Exception e) {
  126. e.printStackTrace();
  127. return resultjson;
  128. }
  129. }
  130. public List<Build_elec> queryAll(){
  131. return elecDao.queryAll();
  132. }
  133. public List<Detail_elc> queryDetailAll(){
  134. return elecDao.queryDetailAll();
  135. }
  136. public List<Detail_elc> queryUse(){
  137. return elecDao.queryUse();
  138. }
  139. public int updateUseState(String pointid, String dataTime){
  140. return elecDao.updateUseState(pointid, dataTime);
  141. }
  142. public List<Detail_elc> queryRe(){
  143. return elecDao.queryRe();
  144. }
  145. // 金额要设置两处
  146. public static void main(String[] args) {
  147. String orderNo = WxUtil.mchOrderNo();
  148. System.out.println(orderNo);
  149. JSONObject j = new ElecServiceImpl().payOrder(orderNo, "WeixinJXYL", null, "自定义订单名称", 1,
  150. 0, 0, 1, null, null, null, null,
  151. null, "附加数据", null, "http://www.baidu.com/tlinx2apidemo1/callback/scanpay_cashier/payResult", "");
  152. System.out.println(j);
  153. }
  154. public int insertDetail(Detail_elc detail_elc){
  155. return elecDao.insertDetail(detail_elc);
  156. }
  157. public List<Detail_elc> queryByTimeAndPoint(String pointid, String dataTime){
  158. return elecDao.queryByTimeAndPoint(pointid, dataTime);
  159. }
  160. public int updateUse(String pointid, String dataTime, double use_elc){
  161. return elecDao.updateUse(pointid, dataTime, use_elc);
  162. }
  163. public List<Recharge_elc> queryByPointAndDay(String pointid, String day_time){
  164. return elecDao.queryByPointAndDay(pointid,day_time);
  165. }
  166. public int updateRe(String pointid, String dataTime, double recharge_elc){
  167. return elecDao.updateRe(pointid, dataTime, recharge_elc);
  168. }
  169. public int updateReState(String pointid, String dataTime){
  170. return elecDao.updateReState(pointid,dataTime);
  171. }
  172. public List<Detail_elc> queryUsable(){
  173. return elecDao.queryUsable();
  174. };
  175. public int updateUsable(String pointid, String dataTime, double usable_elc){
  176. return elecDao.updateUsable(pointid,dataTime,usable_elc);
  177. };
  178. public int updateUsableState(String pointid, String dataTime){
  179. return elecDao.updateUsableState(pointid, dataTime);
  180. }
  181. public List<Detail_elc2> queryDayPower(String dom, String sqlx){
  182. return elecDao.queryDayPower(dom, sqlx);
  183. }
  184. }