WebClientRest.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603
  1. package com.cnd3b.common.restful;
  2. import com.alibaba.fastjson.JSONException;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.cnd3b.common.D3BReturnObject_Err;
  5. import com.cnd3b.common.data.Row;
  6. import com.cnd3b.common.data.Rows;
  7. import com.cnd3b.common.data.SQLFactory;
  8. import com.cnd3b.common.data.db.DBConnect;
  9. import com.cnd3b.common.data.db.DataPool;
  10. import com.cnd3b.common.parameter.parameter;
  11. import com.cnd3b.restcontroller.publicmethod.users.Users;
  12. import com.cnd3b.restcontroller.system.system.uploadExcelData;
  13. import com.cnd3b.utility.Encryption;
  14. import com.cnd3b.utility.Sms;
  15. import com.cnd3b.utility.sysmsg;
  16. import com.cnd3b.utility.wechatpay.apppay.POJO.APPQueryOrderRequest;
  17. import com.cnd3b.utility.wechatpay.apppay.POJO.AppWechatOrder;
  18. import com.cnd3b.utility.wechatpay.apppay.apppay;
  19. import com.cnd3b.utility.wechatpay.jsapipay.POJO.JSQueryOrderRequest;
  20. import com.cnd3b.utility.wechatpay.jsapipay.POJO.JSWechatOrder;
  21. import com.cnd3b.utility.wechatpay.jsapipay.jsapipay;
  22. import com.cnd3b.utility.wechatpay.nativepay.nativepay;
  23. import jdk.nashorn.internal.objects.annotations.Getter;
  24. import net.polyv.live.v1.util.LiveSignUtil;
  25. import org.dom4j.dom.DOMElement;
  26. import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
  27. import org.glassfish.jersey.media.multipart.FormDataParam;
  28. import javax.servlet.http.HttpServletRequest;
  29. import javax.ws.rs.*;
  30. import javax.ws.rs.core.Context;
  31. import javax.ws.rs.core.MediaType;
  32. import java.io.InputStream;
  33. import java.lang.reflect.Constructor;
  34. import java.lang.reflect.InvocationTargetException;
  35. import java.lang.reflect.Method;
  36. import java.text.SimpleDateFormat;
  37. import java.util.ArrayList;
  38. import java.util.Arrays;
  39. import java.util.Calendar;
  40. import java.util.Random;
  41. @Path("webclientrest")
  42. public class WebClientRest {
  43. private static String[] nocheckphonenumber = {"13732579910"};
  44. @POST
  45. public String method(@Context HttpServletRequest request, String RequestContent) {
  46. /**
  47. * 验证请求正文是否为规范的SONObject格式
  48. */
  49. JSONObject requestcontent = null;
  50. try {
  51. requestcontent = JSONObject.parseObject(RequestContent);
  52. } catch (Exception e) {
  53. return new D3BReturnObject_Err().setErrMsg("请求正文格式错误,必须为JSONObject格式").toString();
  54. }
  55. /**
  56. * 验证请求正文中是否包含必填的键值
  57. */
  58. String[] mustkeys = {"classname", "method", "content"};
  59. for (String mustkey : mustkeys) {
  60. if (!requestcontent.containsKey(mustkey)) {
  61. return new D3BReturnObject_Err().setErrMsg("json缺少KEY" + mustkey).toString();
  62. }
  63. }
  64. /**
  65. * 验证请求正文中的content是否为规范的SONObject格式
  66. */
  67. JSONObject content = new JSONObject();
  68. try {
  69. content = requestcontent.getJSONObject("content");
  70. } catch (Exception e) {
  71. return new D3BReturnObject_Err().setErrMsg("正文content格式错误,必须为JSONObject格式").toString();
  72. }
  73. /**
  74. * 验证正文中的token是否有效
  75. */
  76. String accesstoken = "";
  77. String className = requestcontent.getString("classname");
  78. if (!className.contains("publicmethod")) {
  79. if (!requestcontent.containsKey("accesstoken")) {
  80. return new D3BReturnObject_Err().setErrMsg("登陆状态已过期,请重新登陆!").toString();
  81. }
  82. accesstoken = requestcontent.getString("accesstoken");
  83. /**
  84. * 盘点当前账号是否存在有效的token
  85. */
  86. if (!parameter.tokenlist.containsKey(accesstoken) && !istokeninuserlist(accesstoken)) {
  87. //如果缓存中不存在,则在账号列表中进行查询,查到结果后,将tokne存入缓存
  88. return new D3BReturnObject_Err().setErrMsg("登陆状态已过期,请重新登陆!").toString();
  89. }
  90. parameter.requesttime.put(accesstoken, Calendar.getInstance().getTime());
  91. }
  92. String methodName = requestcontent.getString("method");
  93. if (content.isEmpty()) {
  94. content = new JSONObject();
  95. }
  96. content.put("$classname", className);
  97. content.put("$method", methodName);
  98. content.put("$accesstoken", accesstoken);
  99. content.put("$requestHost", request.getScheme() + "://" + request.getHeader("Host"));
  100. String key = className + "." + methodName;
  101. String result;
  102. Object obj = null;
  103. try {
  104. boolean getdatafromdbanyway = content.containsKey("getdatafromdbanyway")
  105. && content.getBoolean("getdatafromdbanyway");
  106. content.remove("getdatafromdbanyway");
  107. Object data = null;
  108. if (!getdatafromdbanyway) {
  109. data = DataPool.get(content.toString());
  110. }
  111. if (data != null) {
  112. result = data.toString();
  113. saveCallMethodMsg(key, false, 0L);
  114. } else {
  115. long starttimes = Calendar.getInstance().getTimeInMillis();
  116. /**
  117. * 执行请求方法
  118. */
  119. Class clz = Class.forName("com.cnd3b.restcontroller." + className);
  120. Constructor cla = clz.getDeclaredConstructor(JSONObject.class);
  121. obj = cla.newInstance(content);
  122. Method method = obj.getClass().getDeclaredMethod(methodName);
  123. result = (String) method.invoke(obj);
  124. long endtimes = Calendar.getInstance().getTimeInMillis();
  125. saveCallMethodMsg(key, true, endtimes - starttimes);
  126. }
  127. } catch (ClassNotFoundException e) {
  128. e.printStackTrace();
  129. result = new D3BReturnObject_Err().setErrMsg("找不到指定的类" + className).toString();
  130. } catch (InstantiationException e) {
  131. e.printStackTrace();
  132. result = new D3BReturnObject_Err().setErrMsg("类" + className + "实例化异常").toString();
  133. } catch (IllegalAccessException e) {
  134. e.printStackTrace();
  135. result = new D3BReturnObject_Err().setErrMsg("类" + className + "安全权限异常,可能该类为非public类").toString();
  136. } catch (NoSuchMethodException e) {
  137. e.printStackTrace();
  138. result = new D3BReturnObject_Err().setErrMsg("找不到指定的类" + className + "的" + methodName + "方法").toString();
  139. } catch (IllegalArgumentException e) {
  140. e.printStackTrace();
  141. result = new D3BReturnObject_Err().setErrMsg("类" + className + "的" + methodName + "方法参数不合法").toString();
  142. } catch (InvocationTargetException e) {
  143. Throwable targetException = e.getTargetException();
  144. D3BReturnObject_Err d3BReturnObject_err = new D3BReturnObject_Err();
  145. d3BReturnObject_err.setErrMsg(targetException.getMessage());
  146. result = d3BReturnObject_err.toString();
  147. } catch (Exception e) {
  148. e.printStackTrace();
  149. result = new D3BReturnObject_Err().setErrMsg("发生未知异常" + e.getMessage()).toString();
  150. } finally {
  151. if (obj != null) {
  152. try {
  153. obj.getClass().getMethod("p2ServerSystemPaoSetClose").invoke(obj);
  154. } catch (Exception e) {
  155. e.printStackTrace();
  156. }
  157. }
  158. }
  159. return result;
  160. }
  161. public boolean istokeninuserlist(String accesstoken) {
  162. DBConnect dbConnect = new DBConnect();
  163. SQLFactory factory = new SQLFactory(this, "持久化账号列表查询");
  164. factory.addParameter("accesstoken", accesstoken);
  165. Rows rows = dbConnect.runSqlQuery(factory.getSQL());
  166. if (rows.isEmpty()) {
  167. return false;
  168. } else {
  169. for (Row row : rows) {
  170. long userid = row.getLong("userid");
  171. String token = row.getString("token");
  172. row.put("logintime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime()));
  173. parameter.userIdList.put(userid, row);
  174. parameter.tokenlist.put(token, userid);
  175. }
  176. return true;
  177. }
  178. }
  179. /**
  180. * 记录请求数
  181. *
  182. * @param key
  183. * @param fromdb
  184. * @param time
  185. */
  186. private void saveCallMethodMsg(String key, boolean fromdb, long time) {
  187. long callmethodTimes = parameter.callmethodTimes.containsKey(key) ? parameter.callmethodTimes.get(key) : 0L;
  188. //更新请求总数
  189. parameter.callmethodTimes.put(key, callmethodTimes + 1L);
  190. //最新请求时间
  191. parameter.lastcallmethodtime.put(key, Calendar.getInstance().getTime());
  192. //从缓存获取的次数
  193. long callmethod_fromcacheTimes = parameter.callmethod_fromcacheTimes.containsKey(key) ? parameter.callmethod_fromcacheTimes.get(key) : 0L;
  194. if (!fromdb) {
  195. /**
  196. * 方法请求从缓存获取次数
  197. */
  198. parameter.callmethod_fromcacheTimes.put(key, callmethod_fromcacheTimes + 1L);
  199. } else {
  200. /**
  201. * 方法请求查询最新耗时
  202. */
  203. parameter.callmethodLastTimeLong.put(key, time);
  204. long totaltimes = callmethodTimes - callmethod_fromcacheTimes;
  205. /**
  206. * 方法请求查询平均时间
  207. */
  208. long callmethodTimeLong = parameter.callmethodTimeLong.containsKey(key) ? parameter.callmethodTimeLong.get(key) : 0L;
  209. parameter.callmethodTimeLong.put(key, (callmethodTimeLong * totaltimes + time) / (totaltimes + 1));
  210. }
  211. }
  212. /**
  213. * 获取短信登陆验证码
  214. *
  215. * @param RequestContent
  216. * @return
  217. */
  218. @Path("getpassword")
  219. @POST
  220. public String getPassWord(@Context HttpServletRequest request, String RequestContent) {
  221. /**
  222. * 验证请求正文是否为规范的SONObject格式
  223. */
  224. JSONObject requestcontent = null;
  225. try {
  226. requestcontent = JSONObject.parseObject(RequestContent);
  227. } catch (Exception e) {
  228. return new D3BReturnObject_Err().setErrMsg("请求正文格式错误,必须为JSONObject格式").toString();
  229. }
  230. /**
  231. * 验证请求正文中是否包含必填的键值
  232. */
  233. String[] mustkeys = {"phonenumber"};
  234. for (String mustkey : mustkeys) {
  235. if (!requestcontent.containsKey(mustkey)) {
  236. return new D3BReturnObject_Err().setErrMsg("json缺少KEY" + mustkey).toString();
  237. }
  238. }
  239. String phonenumber = requestcontent.getString("phonenumber");
  240. String client = "";
  241. if (requestcontent.containsKey("client")) {
  242. client = requestcontent.getString("client");
  243. }
  244. // DBConnect dbConnect = new DBConnect();
  245. // if (dbConnect.runSqlQuery("select * from tenterprise_users where fphonenumber='" + phonenumber + "'").isEmpty()) {
  246. // JSONObject object = new JSONObject();
  247. // object.put("code", 0);
  248. // object.put("msg", "当前手机号未注册!");
  249. // return object.toString();
  250. // }
  251. String password = createPassWord();
  252. parameter.phonenumber_password.put(phonenumber, password);
  253. Calendar calendar = Calendar.getInstance();
  254. calendar.add(Calendar.MINUTE, 5);
  255. parameter.phonenumber_date.put(phonenumber, calendar.getTime());
  256. if (parameter.isdebug()) {
  257. JSONObject object = new JSONObject();
  258. object.put("code", 1);
  259. object.put("msg", "手机验证码为:" + password);
  260. System.err.println("手机验证码为:" + password);
  261. return object.toString();
  262. } else {
  263. JSONObject object = new JSONObject();
  264. Sms sms = new Sms();
  265. sms.sendOutMsg(phonenumber, password);
  266. object.put("code", 1);
  267. object.put("msg", "手机验证码已发送,请注意查收!");
  268. return object.toString();
  269. }
  270. }
  271. /**
  272. * 创建验证码
  273. *
  274. * @return
  275. */
  276. public String createPassWord() {
  277. String allChar = "1234567890";
  278. StringBuffer sb = new StringBuffer();
  279. Random random = new Random();
  280. for (int i = 0; i < 6; i++) {
  281. sb.append(allChar.charAt(random.nextInt(allChar.length())));
  282. }
  283. if (parameter.phonenumber_password.containsValue(sb.toString())) {
  284. return createPassWord();
  285. } else {
  286. return sb.toString();
  287. }
  288. }
  289. @Path("login")
  290. @POST
  291. public String login(String RequestContent) {
  292. /**
  293. * 验证请求正文是否为规范的SONObject格式
  294. */
  295. JSONObject requestcontent = null;
  296. try {
  297. requestcontent = JSONObject.parseObject(RequestContent);
  298. } catch (Exception e) {
  299. return new D3BReturnObject_Err().setErrMsg("请求正文格式错误,必须为JSONObject格式").toString();
  300. }
  301. /**
  302. * 验证请求正文中是否包含必填的键值
  303. */
  304. String[] mustkeys = {"phonenumber", "password"};
  305. for (String mustkey : mustkeys) {
  306. if (!requestcontent.containsKey(mustkey)) {
  307. return new D3BReturnObject_Err().setErrMsg("json缺少KEY" + mustkey).toString();
  308. }
  309. }
  310. String phonenumber = requestcontent.getString("phonenumber");
  311. String password = requestcontent.getString("password");
  312. int resultcode;
  313. DBConnect connect = new DBConnect();
  314. if (!parameter.phonenumber_password.containsKey(phonenumber)) {
  315. resultcode = 1;//没有获取验证码
  316. } else if (parameter.phonenumber_date.get(phonenumber).before(Calendar.getInstance().getTime())) {
  317. resultcode = 2;//验证码已失效
  318. } else {
  319. //系统验证码
  320. String syspassword = parameter.phonenumber_password.get(phonenumber);
  321. if (password.equals(new Encryption().Encode_MD5(syspassword))) {
  322. resultcode = 0;//验证码正确
  323. } else {
  324. resultcode = 3;//验证码错误
  325. }
  326. }
  327. int isnewregister = 0;
  328. if (resultcode == 0 || Arrays.asList(nocheckphonenumber).contains(phonenumber)) {
  329. //登陆时,如果验证码验证成功,但是手机号未注册过,则自动进行注册!
  330. if (connect.runSqlQuery("select * from tenterprise_users where fphonenumber='" + phonenumber + "'").isEmpty()) {
  331. Users users = new Users(requestcontent);
  332. users.register_usersByLogin(phonenumber);
  333. isnewregister = 1;
  334. }
  335. SQLFactory factory = new SQLFactory(this, "手机账号列表查询");
  336. factory.addParameter("fphonenumber", phonenumber);
  337. Rows rows = connect.runSqlQuery(factory.getSQL());
  338. ArrayList<String> tokensaveList = new ArrayList<>();
  339. for (Row row : rows) {
  340. long userid = row.getLong("userid");
  341. String usertoken = new Encryption().Encode_MD5(phonenumber + password + userid + Calendar.getInstance().getTimeInMillis());
  342. row.put("token", usertoken);
  343. row.put("logintime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime()));
  344. row.put("isnewregister", isnewregister);
  345. parameter.userIdList.put(userid, row);
  346. parameter.tokenlist.put(usertoken, userid);
  347. tokensaveList.add("update tenterprise_users set accesstoken='" + usertoken + "' where tenterprise_userid=" + userid);
  348. }
  349. if (!tokensaveList.isEmpty()) {
  350. /**
  351. * 账号登录态持久化
  352. */
  353. connect.runSqlUpdate(tokensaveList);
  354. }
  355. JSONObject object = new JSONObject();
  356. object.put("code", 1);
  357. object.put("msg", "成功");
  358. object.put("webclienturl", "");
  359. object.put("servicehotline", "");
  360. object.put("account_list", rows.toJsonArray());
  361. //登录成功,将验证码失效掉;
  362. Calendar calendar = Calendar.getInstance();
  363. calendar.add(Calendar.MINUTE, -5);
  364. parameter.phonenumber_date.put(phonenumber, calendar.getTime());
  365. return object.toString();
  366. } else {
  367. String msg = "";
  368. if (resultcode == 1) {
  369. msg = "请先获取所填手机号验证码!";
  370. } else if (resultcode == 2) {
  371. msg = "验证码已失效,请重新获取!";
  372. } else if (resultcode == 3) {
  373. msg = "无效的验证码!";
  374. }
  375. JSONObject object = new JSONObject();
  376. object.put("code", 0);
  377. object.put("msg", msg);
  378. return object.toString();
  379. }
  380. }
  381. @Path("logout")
  382. @POST
  383. public String logout(String RequestContent) {
  384. /**
  385. * 验证请求正文是否为规范的SONObject格式
  386. */
  387. JSONObject requestcontent = null;
  388. try {
  389. requestcontent = JSONObject.parseObject(RequestContent);
  390. } catch (Exception e) {
  391. return new D3BReturnObject_Err().setErrMsg("请求正文格式错误,必须为JSONObject格式").toString();
  392. }
  393. /**
  394. * 验证请求正文中是否包含必填的键值
  395. */
  396. String[] mustkeys = {"accesstoken"};
  397. for (String mustkey : mustkeys) {
  398. if (!requestcontent.containsKey(mustkey)) {
  399. return new D3BReturnObject_Err().setErrMsg("json缺少KEY" + mustkey).toString();
  400. }
  401. }
  402. /**
  403. * 验证正文中的token是否有效
  404. */
  405. String accesstoken = requestcontent.getString("accesstoken");
  406. parameter.tokenlist.remove(accesstoken);
  407. new DBConnect().runSqlUpdate("update tenterprise_users set accesstoken=null where accesstoken='" + accesstoken + "'");
  408. JSONObject object = new JSONObject();
  409. object.put("status", "ok");
  410. return object.toString();
  411. }
  412. /**
  413. * 数据导入
  414. *
  415. * @param uploadfileInputStream
  416. * @param uploadfile
  417. * @param userid
  418. * @param accesstoken
  419. * @param ftype
  420. * @return
  421. */
  422. @Path("uploadexcel")
  423. @POST
  424. @Consumes({"multipart/form-data"})
  425. @Produces({"application/json"})
  426. public String upLoadDoc(@FormDataParam("uploadfile") InputStream uploadfileInputStream,
  427. @FormDataParam("uploadfile") FormDataContentDisposition uploadfile,
  428. @FormDataParam("userid") String userid,
  429. @FormDataParam("accesstoken") String accesstoken, @FormDataParam("ftype") String ftype) {
  430. /**
  431. * 验证正文中的token是否有效
  432. */
  433. if (!parameter.tokenlist.containsKey(accesstoken)) {
  434. return new D3BReturnObject_Err().setErrMsg("登陆状态已过期,请重新登陆!").toString();
  435. }
  436. JSONObject content = new JSONObject();
  437. content.put("userid", userid);
  438. uploadExcelData uploadExcelData = new uploadExcelData(content);
  439. return uploadExcelData.upLoadExcel(uploadfileInputStream, uploadfile, ftype);
  440. }
  441. /**
  442. * 微信支付回调接口
  443. *
  444. * @param RequestContent
  445. * @return
  446. */
  447. @POST
  448. @Path("wechatpay/returnorderstateapp")
  449. public String wechatpayapp(String RequestContent) {
  450. APPQueryOrderRequest queryOrderRequest = new APPQueryOrderRequest();
  451. AppWechatOrder order = queryOrderRequest.getWechatOrder(RequestContent);
  452. apppay apppay = new apppay();
  453. boolean success = apppay.updateLocalOrder(order);
  454. DOMElement request = new DOMElement("xml");
  455. request.addElement("return_code").addText(success ? "SUCCESS" : "FAIL");
  456. request.addElement("return_msg").addText(success ? "OK" : "校验失败");
  457. return request.asXML();
  458. }
  459. /**
  460. * 微信网页支付回调接口
  461. *
  462. * @param RequestContent
  463. * @return
  464. */
  465. @POST
  466. @Path("wechatpay/returnorderstatenative")
  467. public String wechatpaynative(String RequestContent) {
  468. nativepay nativepay = new nativepay();
  469. JSONObject returnobject = JSONObject.parseObject(RequestContent);
  470. boolean success = nativepay.updateLocalOrder_callback(returnobject);
  471. JSONObject request = new JSONObject();
  472. request.put("code", success ? "SUCCESS" : "FAIL");
  473. request.put("message", success ? "成功" : "校验失败");
  474. return request.toString();
  475. }
  476. /**
  477. * 微信网页支付回调接口
  478. *
  479. * @param RequestContent
  480. * @return
  481. */
  482. @POST
  483. @Path("wechatpay/returnorderstatejs")
  484. public String wechatpayjs(String RequestContent) {
  485. JSQueryOrderRequest queryOrderRequest = new JSQueryOrderRequest();
  486. JSWechatOrder order = queryOrderRequest.getWechatOrder(RequestContent);
  487. jsapipay jsapipay = new jsapipay();
  488. boolean success = jsapipay.updateLocalOrder(order);
  489. DOMElement request = new DOMElement("xml");
  490. request.addElement("return_code").addText(success ? "SUCCESS" : "FAIL");
  491. request.addElement("return_msg").addText(success ? "OK" : "校验失败");
  492. return request.asXML();
  493. }
  494. @Path("sysmsg")
  495. @GET
  496. @Produces(MediaType.TEXT_HTML)
  497. @Consumes(MediaType.TEXT_HTML)
  498. public String sysmsg() throws JSONException {
  499. return new sysmsg().getCustMsg();
  500. }
  501. @GET
  502. @Path("polyvAuth")
  503. public String polyvAuth(@QueryParam("channelId") String channelId, @QueryParam("userid") String userid, @QueryParam("ts") Long ts, @QueryParam("token") String token) {
  504. System.err.println(channelId);
  505. System.err.println(userid);
  506. JSONObject result = new JSONObject();
  507. long timeMillis = System.currentTimeMillis();
  508. long diffTime = Math.abs(timeMillis - ts);
  509. //1、时间戳判断
  510. if (diffTime > 5 * 60 * 1000) {
  511. result.put("status", "0");
  512. //抛出异常时,如果设置errorUrl,则会跳转到 errorUrl ,如果未返回 errorUrl,则先查询 外部授权参数
  513. // externalRedirectUri,externalRedirectUri不为空则跳转externalRedirectUri地址,externalRedirectUri为空则跳转保利威默认页面
  514. result.put("errorUrl", "https://www.polyv.net");
  515. return result.toJSONString();
  516. }
  517. //2、签名判断
  518. DBConnect dbConnect = new DBConnect();
  519. Rows rows = dbConnect.runSqlQuery("select secretkey from tlive where channelId='" + channelId + "'");
  520. if (rows.isEmpty()) {
  521. result.put("errorUrl", "https://www.polyv.net");
  522. return result.toJSONString();
  523. }
  524. String signText = rows.get(0).getString("secretkey") + userid + rows.get(0).getString("secretkey") + ts;
  525. String sign = null;
  526. try {
  527. sign = LiveSignUtil.md5Hex(signText);
  528. } catch (Exception e) {
  529. e.printStackTrace();
  530. }
  531. if (sign == null || !sign.equals(token)) {
  532. result.put("status", "0");
  533. //抛出异常时,如果设置errorUrl,则会跳转到 errorUrl ,如果未返回 errorUrl,则先查询 外部授权参数
  534. // externalRedirectUri,externalRedirectUri不为空则跳转externalRedirectUri地址,externalRedirectUri为空则跳转保利威默认页面
  535. result.put("errorUrl", "https://www.polyv.net");
  536. return result.toJSONString();
  537. }
  538. // 业务逻辑处理,后续需根据具体需求进行数据库操作
  539. //3、正常返回
  540. Rows userrows = dbConnect.runSqlQuery("select *from tenterprise_users where tenterprise_userid='" + userid + "'");
  541. if (userrows.isEmpty()) {
  542. result.put("status", "0");
  543. //抛出异常时,如果设置errorUrl,则会跳转到 errorUrl ,如果未返回 errorUrl,则先查询 外部授权参数
  544. // externalRedirectUri,externalRedirectUri不为空则跳转externalRedirectUri地址,externalRedirectUri为空则跳转保利威默认页面
  545. result.put("errorUrl", "https://www.polyv.net");
  546. return result.toJSONString();
  547. }
  548. result.put("status", "1");
  549. result.put("userid", userid);
  550. result.put("nickname", userrows.get(0).getString("fname"));
  551. result.put("marqueeName", "保利威测试跑马灯");
  552. // result.put("actor", "学生");
  553. result.put("actorFColor", "#2469f3");
  554. result.put("actorBgColor", null);
  555. result.put("param4", null);
  556. result.put("param5", null);
  557. result.put("avatar", "http://dev.polyv.net/favicon.ico");
  558. return result.toJSONString();
  559. }
  560. }