OptController.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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.*;
  37. /**
  38. * @Author : wangming
  39. * @CreateTime : 2022-09-06
  40. * @Desc : 订单类
  41. */
  42. @Controller
  43. @RequestMapping("/process/operation")
  44. @Slf4j
  45. public class OptController {
  46. @Value("${testHttps}")
  47. private String testHttps;
  48. @Value("${prodHttps}")
  49. private String prodHttps;
  50. //订单信息请求接口
  51. @Value("${processUrl}")
  52. private String processUrl;
  53. @Value("${zUrl}")
  54. private String zeUrl;
  55. @Value("${coverUrl}")
  56. private String coverUrl;
  57. @Value("${appId}")
  58. private String appId;
  59. @Value("${sign}")
  60. private String sign;
  61. @Autowired
  62. private ISysInfoConfigService sysInfoConfigService;
  63. @Autowired
  64. private IProcessInfoService processInfoService;
  65. @Autowired
  66. private ICompanyInfoService companyInfoService;
  67. @Autowired
  68. private IProjectInfoService projectInfoService;
  69. /**
  70. * @desc : 此接口用来接收订单推送服务,只用来判断是否成功,,入库操作
  71. * @author : wangming
  72. * @createTime : 2022/9/6 11:04
  73. * @param : [processId 订单id]
  74. * @return : com.ruoyi.common.core.domain.AjaxResult
  75. */
  76. @ResponseBody
  77. @PostMapping("/put_in_storage")
  78. public Rwww chargeOrderNotice(@RequestBody ProcessBo processBo){
  79. log.info("订单信息请求参数信息:" + processBo);
  80. try {
  81. //先验证参数
  82. if (StringUtils.isEmpty(processBo.getProcessId()) || StringUtils.isEmpty(processBo.getAppId()) || StringUtils.isEmpty(processBo.getSign())){
  83. //返回接收失败
  84. return Rwww.paramNull("参数不可为空!");
  85. }
  86. //参数确认没问题以后去请求www服务进行订单信息获取
  87. HashMap<String, String> process = new HashMap<>();
  88. process.put("processId", processBo.getProcessId());
  89. process.put("appId", appId);
  90. process.put("sign", sign);
  91. // String string = JSONObject.valueAsStr(process);
  92. String string = JSON.toJSONString(process);
  93. log.error("调用www订单信息请求接口传参参数:" + string);
  94. String testProcessUrl = testHttps + processUrl;
  95. String prodProcessUrl = processUrl + processUrl;
  96. String zUrl = zeUrl + processUrl;
  97. log.info("订单信息请求中的ip和url是:" + testProcessUrl);
  98. String processResult = HttpUtils.JSONdoPost(testProcessUrl, string);
  99. log.info("订单信息请求返回的json信息是:" + processResult);
  100. //拿到解析结果,进行解析
  101. Map<String, Object> resultMap = JSON.parseObject(processResult, Map.class);
  102. String resultData = resultMap.get("data").toString();
  103. if (!"0".equals(resultMap.get("code"))){
  104. ProcessInfoReq processInfoReq = JSON.parseObject(resultData, ProcessInfoReq.class);
  105. String premiumAmtNum = getPremiumAmtNum(processInfoReq.getLoanAmt());
  106. processInfoReq.setPremium(premiumAmtNum);
  107. if (StringUtils.isNotEmpty(processInfoReq.getProcessId())){
  108. //入本地企业信息库
  109. companyInfoService.insertCompanyInfoByWww(processInfoReq);
  110. } else {
  111. log.info("订单数据为空,请求失败,请求id为:" + processBo.getProcessId());
  112. return Rwww.failwww("aaa");
  113. }
  114. } else {
  115. log.info("订单数据为空,请求失败,请求id为:" + processBo.getProcessId());
  116. return Rwww.failwww("订单数据请求错误,接收失败");
  117. }
  118. } catch (Exception e) {
  119. e.printStackTrace();
  120. log.error("订单接收出错:" + e.getLocalizedMessage());
  121. return Rwww.failwww("订单接收时程序出错");
  122. }
  123. return Rwww.okwww();
  124. }
  125. /**
  126. * @desc : 计算保费
  127. * @author : wangming
  128. * @createTime : 2022/9/9 15:27
  129. * @param : [loanAmt]
  130. * @return : java.lang.String
  131. */
  132. public String getPremiumAmtNum(String loanAmt){
  133. if (StringUtils.isNotEmpty(loanAmt)){
  134. double amt = Double.parseDouble(loanAmt);
  135. double v = amt * 0.005;
  136. if (v > 500){
  137. return String.valueOf(v);
  138. } else {
  139. return "500";
  140. }
  141. } else {
  142. return null;
  143. }
  144. }
  145. /**
  146. * @desc : 承保回调接口
  147. * @author : wangming
  148. * @createTime : 2022/9/8 9:43
  149. * @param : []
  150. * @return : void
  151. */
  152. @ResponseBody
  153. @PostMapping("/cover_callback")
  154. public R coverTheCallback(@RequestBody CoverBo coverBo){
  155. try {
  156. //接到消息开始拆解参数
  157. log.info("承保回调接口开始,请求参数是:" + coverBo);
  158. if (!ObjectUtils.allNotNull(coverBo)){
  159. return R.paramNull("参数不可为空!");
  160. }
  161. //拿到参数开始入库修改
  162. /*LambdaUpdateWrapper<ProcessInfo> updateWrapper = new UpdateWrapper<ProcessInfo>().lambda();
  163. updateWrapper.eq(ProcessInfo::getProcessId, coverBo.getProcessId())
  164. .set(ProcessInfo::getPolicyDlUrl, coverBo.getPolicyDlUrl())
  165. .set(ProcessInfo::getProcessStsCd, coverBo.getStatus());
  166. boolean update = processInfoService.update(null, updateWrapper);*/
  167. ProcessInfo processInfo1 = new ProcessInfo();
  168. processInfo1.setProcessId(coverBo.getProcessId());
  169. processInfo1.setPolicyDlUrl(coverBo.getPolicyDlUrl());
  170. processInfo1.setProcessStsCd(coverBo.getStatus());
  171. processInfoService.updateProcessInfoByProcessId(processInfo1);
  172. log.info("承保回调接口中拿到保函下载地址,修改库成功");
  173. //修改成功,去调www承保回调接口 组装参数
  174. ProcessBo processBo = new ProcessBo();
  175. processBo.setProcessId(coverBo.getProcessId());
  176. processBo.setAppId(appId);
  177. processBo.setSign(sign);
  178. //查出来保单信息
  179. processBo.setPolicyUrl(coverBo.getPolicyDlUrl());
  180. processBo.setPolicyNo("");
  181. processBo.setApplyPolicyNo("");
  182. processBo.setInvoiceUrl("");
  183. String coverParam = JSON.toJSONString(processBo);
  184. log.info("承保回调接口中调用www服务的入参是:" + coverParam);
  185. String coverHttpUrl = testHttps + coverUrl;
  186. log.info("承保回调接口调用url:" + coverHttpUrl);
  187. String coverResult = HttpUtils.JSONdoPost(coverHttpUrl, coverParam);
  188. log.info("承保回调接口调用www返回的参数:" + coverResult);
  189. //拿到解析结果,进行解析
  190. Map<String, Object> resultMap = JSON.parseObject(coverResult, Map.class);
  191. String code = resultMap.get("code").toString();
  192. if ("0000".equals(code)){
  193. return R.ok();
  194. } else {
  195. return R.failwww("推送www消息失败!");
  196. }
  197. } catch (Exception e) {
  198. e.printStackTrace();
  199. log.error("承保回调错误,请检查:" + coverBo.getProcessId());
  200. return R.fail("承保回调错误");
  201. }
  202. }
  203. @ResponseBody
  204. @PostMapping("/test")
  205. public List<ProcessInfo> getaaa(){
  206. LambdaQueryWrapper<ProcessInfo> queryWrapper = new QueryWrapper<ProcessInfo>().lambda();
  207. queryWrapper.eq(ProcessInfo::getProcessId, "12423302203");
  208. List<ProcessInfo> list = processInfoService.list(queryWrapper);
  209. return list;
  210. }
  211. }