5396e02ef046c3779137e270391f893fc1f15bd0.svn-base 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package com.chinacreator.videoalliance.order.service;
  2. import com.chinacreator.common.exception.BusinessException;
  3. import com.chinacreator.videoalliance.order.bean.*;
  4. import com.chinacreator.videoalliance.order.dao.SPDao;
  5. import com.chinacreator.videoalliance.order.pojo.*;
  6. import com.chinacreator.videoalliance.order.util.*;
  7. import org.codehaus.jackson.map.ObjectMapper;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.util.StringUtils;
  11. import java.sql.SQLException;
  12. import java.util.*;
  13. /**
  14. * Create by IntelliJ IDEA.
  15. * Author: EricJin
  16. * Date: 08/14/2018 15:35
  17. */
  18. @Service
  19. public class UnifiedAuthService {
  20. @Autowired
  21. private SPDao spDao;
  22. // private static final String AUTH_URL = "http://10.199.99.177:86/unifiedauth/ordersync"; //TEST
  23. // private static final String AUTH_URL = "http://10.199.99.51:809/unifiedauth/ordersync"; //PROD
  24. private static final String AUTH_URL = "http://172.16.1.81:809/unifiedauth/ordersync"; //PROD
  25. /**
  26. * call the unifiedAuth service to Sycn the Order to the unifiedAuth platform
  27. * @param orderInfo
  28. * @return
  29. * @throws Exception
  30. */
  31. public Boolean sycnOrder(OrderInfo orderInfo) throws Exception {
  32. SPInfo spInfo = spDao.findById(orderInfo.getSpid());
  33. if(!StringUtils.isEmpty(orderInfo.getSeqnumber())){
  34. return true;
  35. }
  36. //not need sycn Order, return true to go to order
  37. if(!checkNeededSycnOrder(orderInfo,spInfo)) return true;
  38. //if need to sycn Order , assemble the Bean and post to the unifiedAuth
  39. OrderBean orderBean = assembleOrderBean(orderInfo,spInfo);
  40. //wrap the orderBean to json
  41. ObjectMapper mapper = new ObjectMapper();
  42. String json = mapper.writeValueAsString(orderBean);
  43. System.out.println("【AuthRequ====】" + json);
  44. String resp = URLUtil.post(AUTH_URL, json,10000,"application/json");
  45. System.out.println("【AuthResp----】" + resp);
  46. Map map = JsonUtil.jsonToMap(resp);
  47. //get the response,and check the code.
  48. if ("0000".equals(map.get("resultcode"))) return true;
  49. else throw new BusinessException(map.get("resultcode").toString(), "UnifiedAuth Failed:" + map.get("resultinfo").toString());
  50. }
  51. private boolean checkNeededSycnOrder(OrderInfo orderInfo, SPInfo spInfo) throws Exception {
  52. //not need return false
  53. if (spInfo.getNeedUnifiedAuthSync() == null || !"1".equals(spInfo.getNeedUnifiedAuthSync().trim())) return false;
  54. //need ,then check the token
  55. if (StringUtils.isEmpty(orderInfo.getToken())) {
  56. throw new BusinessException("8002", "TOKEN参数无效");
  57. }
  58. return true;
  59. }
  60. private OrderBean assembleOrderBean(OrderInfo orderInfo, SPInfo spInfo) throws SQLException {
  61. String sequence = DateUtils.getDateFromFormat("MMddhhmmss") + "420010" + SequenceUtils.getSequence();
  62. orderInfo.setSeqnumber(sequence);
  63. OrderBean orderBean = new OrderBean();
  64. orderBean.setSeqNumber(sequence); //订单流水号
  65. orderBean.setAccessType(orderInfo.getAccess()); //h5, sdk
  66. orderBean.setToken(orderInfo.getToken());
  67. orderBean.setOrderId(sequence);
  68. orderBean.setPhone(orderInfo.getUserid());
  69. orderBean.setPrice(spInfo.getPrice());
  70. if ("1".equals(orderBean.getAccessType())) orderBean.setOrderMethod("1"); //web
  71. else if ("2".equals(orderBean.getAccessType())) orderBean.setOrderMethod("5"); //app
  72. orderBean.setFeeplan(spInfo.getType() == 0 ? "3" : "1"); //0 按次--3 包周期 其他包月--1
  73. orderBean.setUpdateType("1"); //1 订购 2 续订
  74. orderBean.setSubscribeType("1");
  75. orderBean.setServiceType("80");
  76. //set product
  77. SpProduct spProduct = new SpProduct(spInfo.getSpid(),spInfo.getSpname());
  78. orderBean.getSpProduct().add(spProduct);
  79. Product product = new Product(spInfo.getVacproductid(),spInfo.getSpname());
  80. orderBean.getProduct().add(product);
  81. orderBean.setSpid(spInfo.getSpcode());
  82. orderBean.setSpName(spInfo.getSpcodename());
  83. orderBean.setDeveloperName("联通在线信息科技有限公司");
  84. orderBean.setSpServPhone("10010"); //sp客服电话
  85. setDate(orderBean);
  86. return orderBean;
  87. }
  88. private void setDate(OrderBean orderBean) {
  89. String format = "yyyyMMddHHmmss";
  90. Calendar calendar = Calendar.getInstance();
  91. calendar.setTime(new Date());
  92. String now = DateUtils.getDateFromFormat(format,calendar);
  93. //set start date
  94. orderBean.setSubscribeTime(now);
  95. orderBean.setRentDate(now);
  96. orderBean.setEffectiveDate(now);
  97. //set end date
  98. calendar.add(Calendar.MONTH,1);
  99. calendar.set(Calendar.HOUR,23);
  100. calendar.set(Calendar.MINUTE,59);
  101. calendar.set(Calendar.SECOND,59);
  102. String expireDate = DateUtils.getDateFromFormat(format,calendar);
  103. orderBean.setExpireDate(expireDate);
  104. }
  105. public static void main(String[] args) {
  106. String sequence = DateUtils.getDateFromFormat("MMddhhmmss") + "420010" + SequenceUtils.getSequence();
  107. System.out.println(sequence);
  108. }
  109. }