OrderAutoCheck.java 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package service;
  2. import com.alibaba.fastjson2.JSONObject;
  3. import common.Controller;
  4. import common.ServiceController;
  5. import common.api.YOSAPI;
  6. import common.data.Row;
  7. import common.data.Rows;
  8. import restcontroller.R;
  9. import java.util.ArrayList;
  10. import java.util.UUID;
  11. public class OrderAutoCheck extends ServiceController {
  12. @Override
  13. public void serviceRun() throws Exception {
  14. Rows orderRows = dbConnect.runSqlQuery("select t1.sa_orderid,t1.sa_accountclassid,t1.sys_enterpriseid,t1.sonum,sum(t2.amount)as amount from sa_order t1\n" +
  15. "inner join sa_orderitems t2 on t1.sa_orderid=t2.sa_orderid \n" +
  16. "inner join sa_agents t3 on t1.sys_enterpriseid=t3.sys_enterpriseid and t3.submitautocheck=1 \n" +
  17. "where t1.status='提交' and not exists(select * from sa_orderitems t4 where t1.sa_orderid=t4.sa_orderid and t4.remarks is not null)\n" +
  18. " and exists(select * from sa_cashbill t5 where t5.type=1 and t5.status='审核' and t5.sys_enterpriseid=t1.sys_enterpriseid and t5.billdate>=date(now()))\n" +
  19. "group by t1.sa_orderid,t1.sa_accountclassid,t1.sys_enterpriseid,t1.sonum having sum(t2.amount)>0 order by t1.sys_enterpriseid,sum(t2.amount)");
  20. logger.info("监测到有{}个订单待审核", orderRows.size());
  21. Controller md = getSysController("MD");
  22. ArrayList<Long> errenterpriseid = new ArrayList<>();
  23. for (Row orderRow : orderRows) {
  24. long enterpriseid = orderRow.getLong("sys_enterpriseid");
  25. if (!errenterpriseid.contains(enterpriseid)) {
  26. long sa_accountclassid = orderRow.getLong("sa_accountclassid");
  27. double amount = orderRow.getDouble("amount");
  28. Rows accountbalanceRows = dbConnect.runSqlQuery("select ifnull(balance,0)+ifnull(creditquota,0)+ifnull(discountamount,0)-ifnull(freezamount,0) as canuseamount from sa_accountbalance where sys_enterpriseid=" + enterpriseid + " and sa_accountclassid=" + sa_accountclassid);
  29. if (accountbalanceRows.isEmpty() || accountbalanceRows.get(0).getDouble("canuseamount") < amount) {
  30. logger.info("订单{}审核失败;{}", orderRow.getString("sonum"), "账户可用余额不足");
  31. continue;
  32. }
  33. JSONObject content = new JSONObject();
  34. content.put("sa_orderid", orderRow.getLong("sa_orderid"));
  35. content.put("reviewtype", "");
  36. YOSAPI.YosRequest yosRequest = new YOSAPI.YosRequest();
  37. yosRequest.setRequestKey(UUID.randomUUID().toString());
  38. yosRequest.setAccesstoken(md.getAccessToken().getToken());
  39. yosRequest.setRequestsessionid("-1");
  40. yosRequest.setContent(content);
  41. JSONObject resultObject = ((JSONObject) YOSAPI.getApi(R.ID20221108153502.v1.class).action(yosRequest));
  42. if (resultObject.getIntValue("status") == 0) {
  43. logger.info("订单{}审核失败;{}", orderRow.getString("sonum"), resultObject.getString("msg"));
  44. errenterpriseid.add(enterpriseid);
  45. } else {
  46. dbConnect.runSqlUpdate("update sa_order set checkby='自动审核' where sa_orderid=" + orderRow.getLong("sa_orderid"));
  47. logger.info("订单{}审核成功", orderRow.getString("sonum"));
  48. }
  49. }
  50. }
  51. }
  52. @Override
  53. public ServiceParam paramSet() {
  54. return new ServiceParam("订单自动审核", 10, RunType.minute);
  55. }
  56. }