OptController.java 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package com.ruoyi.web.controller.opt;
  2. import com.alibaba.druid.support.json.JSONUtils;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  7. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  8. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  9. import com.ruoyi.common.core.domain.AjaxResult;
  10. import com.ruoyi.common.core.domain.R;
  11. import com.ruoyi.common.core.domain.Rwww;
  12. import com.ruoyi.common.json.JSONObject;
  13. import com.ruoyi.common.request.PayInfomBo;
  14. import com.ruoyi.common.request.ProcessInfoReq;
  15. import com.ruoyi.common.utils.http.HttpUtils;
  16. import com.ruoyi.common.utils.http.HttpsUtil;
  17. import com.ruoyi.opt.domain.CompanyInfo;
  18. import com.ruoyi.opt.domain.ProcessInfo;
  19. import com.ruoyi.opt.service.ICompanyInfoService;
  20. import com.ruoyi.opt.service.IProcessInfoService;
  21. import com.ruoyi.opt.service.IProjectInfoService;
  22. import com.ruoyi.opt.service.ISysInfoConfigService;
  23. import com.ruoyi.web.controller.demo.domain.CoverBo;
  24. import com.ruoyi.web.controller.demo.domain.ProcessBo;
  25. import lombok.extern.slf4j.Slf4j;
  26. import org.apache.commons.lang3.ObjectUtils;
  27. import org.apache.commons.lang3.StringUtils;
  28. import org.apache.ibatis.annotations.Param;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.beans.factory.annotation.Value;
  31. import org.springframework.stereotype.Controller;
  32. import org.springframework.web.bind.annotation.PostMapping;
  33. import org.springframework.web.bind.annotation.RequestBody;
  34. import org.springframework.web.bind.annotation.RequestMapping;
  35. import org.springframework.web.bind.annotation.ResponseBody;
  36. import java.util.HashMap;
  37. import java.util.Map;
  38. import java.util.SortedMap;
  39. import java.util.TreeMap;
  40. /**
  41. * @Author : wangming
  42. * @CreateTime : 2022-09-06
  43. * @Desc : 订单类
  44. */
  45. @Controller
  46. @RequestMapping("/process/operation")
  47. @Slf4j
  48. public class OptController {
  49. @Value("${testHttps}")
  50. private String testHttps;
  51. @Value("${prodHttps}")
  52. private String prodHttps;
  53. //订单信息请求接口
  54. @Value("${processUrl}")
  55. private String processUrl;
  56. @Value("${zUrl}")
  57. private String zeUrl;
  58. @Value("${coverUrl}")
  59. private String coverUrl;
  60. @Value("${appId}")
  61. private String appId;
  62. @Value("${sign}")
  63. private String sign;
  64. @Autowired
  65. private ISysInfoConfigService sysInfoConfigService;
  66. @Autowired
  67. private IProcessInfoService processInfoService;
  68. @Autowired
  69. private ICompanyInfoService companyInfoService;
  70. @Autowired
  71. private IProjectInfoService projectInfoService;
  72. /**
  73. * @desc : 此接口用来接收订单推送服务,只用来判断是否成功,,入库操作
  74. * @author : wangming
  75. * @createTime : 2022/9/6 11:04
  76. * @param : [processId 订单id]
  77. * @return : com.ruoyi.common.core.domain.AjaxResult
  78. */
  79. @ResponseBody
  80. @PostMapping("/put_in_storage")
  81. public Rwww chargeOrderNotice(@RequestBody ProcessBo processBo){
  82. try {
  83. //先验证参数
  84. if (StringUtils.isEmpty(processBo.getProcessId()) || StringUtils.isEmpty(processBo.getAppId()) || StringUtils.isEmpty(processBo.getSign())){
  85. //返回接收失败
  86. return Rwww.paramNull("参数不可为空!");
  87. }
  88. //参数确认没问题以后去请求www服务进行订单信息获取
  89. HashMap<String, String> process = new HashMap<>();
  90. process.put("processId", processBo.getProcessId());
  91. process.put("appId", appId);
  92. process.put("sign", sign);
  93. // String string = JSONObject.valueAsStr(process);
  94. String string = JSON.toJSONString(process);
  95. String testProcessUrl = testHttps + processUrl;
  96. String prodProcessUrl = processUrl + processUrl;
  97. String zUrl = zeUrl + processUrl;
  98. String processResult = HttpUtils.JSONdoPost(testProcessUrl, string);
  99. //拿到解析结果,进行解析
  100. Map<String, Object> resultMap = JSON.parseObject(processResult, Map.class);
  101. String resultData = resultMap.get("data").toString();
  102. if (!"0".equals(resultMap.get("code"))){
  103. ProcessInfoReq processInfoReq = JSON.parseObject(resultData, ProcessInfoReq.class);
  104. if (StringUtils.isNotEmpty(processInfoReq.getProcessId())){
  105. //入本地企业信息库
  106. companyInfoService.insertCompanyInfoByWww(processInfoReq);
  107. } else {
  108. log.info("订单数据为空,请求失败,请求id为:" + processBo.getProcessId());
  109. return Rwww.failwww("aaa");
  110. }
  111. } else {
  112. log.info("订单数据为空,请求失败,请求id为:" + processBo.getProcessId());
  113. return Rwww.failwww("订单数据请求错误,接收失败");
  114. }
  115. } catch (Exception e) {
  116. e.printStackTrace();
  117. log.error("订单接收出错:" + e.getLocalizedMessage());
  118. return Rwww.failwww("订单接收时程序出错");
  119. }
  120. return Rwww.okwww();
  121. }
  122. /**
  123. * @desc : 承保回调接口
  124. * @author : wangming
  125. * @createTime : 2022/9/8 9:43
  126. * @param : []
  127. * @return : void
  128. */
  129. @ResponseBody
  130. @PostMapping("/cover_callback")
  131. public R coverTheCallback(@RequestBody CoverBo coverBo){
  132. try {
  133. //接到消息开始拆解参数
  134. log.info("1111111111111111111111111开始");
  135. if (!ObjectUtils.allNotNull(coverBo)){
  136. return R.paramNull("参数不可为空!");
  137. }
  138. //拿到参数开始入库修改
  139. /*LambdaUpdateWrapper<ProcessInfo> updateWrapper = new UpdateWrapper<ProcessInfo>().lambda();
  140. updateWrapper.eq(ProcessInfo::getProcessId, coverBo.getProcessId())
  141. .set(ProcessInfo::getPolicyDlUrl, coverBo.getPolicyDlUrl())
  142. .set(ProcessInfo::getProcessStsCd, coverBo.getStatus());
  143. boolean update = processInfoService.update(null, updateWrapper);*/
  144. ProcessInfo processInfo1 = new ProcessInfo();
  145. processInfo1.setProcessId(coverBo.getProcessId());
  146. processInfo1.setPolicyDlUrl(coverBo.getPolicyDlUrl());
  147. processInfo1.setProcessStsCd(coverBo.getStatus());
  148. processInfoService.updateProcessInfoByProcessId(processInfo1);
  149. //修改成功,去调www承保回调接口 组装参数
  150. ProcessBo processBo = new ProcessBo();
  151. processBo.setProcessId(coverBo.getProcessId());
  152. processBo.setAppId(appId);
  153. processBo.setSign(sign);
  154. //查出来保单信息
  155. processBo.setPolicyUrl(coverBo.getPolicyDlUrl());
  156. processBo.setPolicyNo("");
  157. processBo.setApplyPolicyNo("");
  158. processBo.setInvoiceUrl("");
  159. String coverParam = JSON.toJSONString(processBo);
  160. String coverHttpUrl = testHttps + coverUrl;
  161. String coverResult = HttpUtils.JSONdoPost(coverHttpUrl, coverParam);
  162. //拿到解析结果,进行解析
  163. Map<String, Object> resultMap = JSON.parseObject(coverResult, Map.class);
  164. String code = resultMap.get("code").toString();
  165. if ("0000".equals(code)){
  166. return R.ok();
  167. } else {
  168. return R.failwww("推送www消息失败!");
  169. }
  170. } catch (Exception e) {
  171. e.printStackTrace();
  172. log.error("承保回调错误,请检查:" + coverBo.getProcessId());
  173. return R.fail("承保回调错误");
  174. }
  175. }
  176. }