758eb66465fb9473f0e873146b21ca89a97ac4bd.svn-base 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package com.chinacreator.videoalliance.order.service;
  2. import java.sql.SQLException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Calendar;
  5. import java.util.Date;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import org.apache.log4j.Logger;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Component;
  11. import org.springframework.util.StringUtils;
  12. import com.chinacreator.common.exception.BusinessException;
  13. import com.chinacreator.common.util.Base64;
  14. import com.chinacreator.common.util.UsermobUtil;
  15. import com.chinacreator.videoalliance.common.bean.AreaInfo;
  16. import com.chinacreator.videoalliance.common.bean.CPInfo;
  17. import com.chinacreator.videoalliance.common.util.AreaUtil;
  18. import com.chinacreator.videoalliance.common.util.ConfigUtil;
  19. import com.chinacreator.videoalliance.order.bean.OrderInfo;
  20. import com.chinacreator.videoalliance.order.bean.SPInfo;
  21. import com.chinacreator.videoalliance.order.dao.BackBusiOrderDao;
  22. import com.chinacreator.videoalliance.order.dao.BlackWhiteDao;
  23. import com.chinacreator.videoalliance.order.dao.HeyueOrderDao;
  24. import com.chinacreator.videoalliance.order.dao.OrderDao;
  25. import com.chinacreator.videoalliance.order.dao.SPDao;
  26. /**
  27. * 违约金合约包服务类
  28. * @author xu.zhou
  29. * @date 20210902
  30. CPID为wyj的产品,只能在测试页面上订购,订购此产品没有任何服务,只是扣费,可重复调用
  31. */
  32. @Component
  33. public class WyjOrderService {
  34. private static Logger logger = Logger.getLogger("orderError");
  35. @Autowired
  36. private SPDao spDao;
  37. @Autowired
  38. private OrderService orderService;
  39. @Autowired
  40. CapOrderService capOrderService;
  41. @Autowired
  42. private HeyueOrderDao heyueOrderDao;
  43. @Autowired
  44. private BlackWhiteDao blackWhiteDao;
  45. @Autowired
  46. private ShareOrderService shareOrderService;
  47. private void orderCheck(OrderInfo orderInfo) throws Exception {
  48. //只有CPID为wyj(违约金)
  49. if(!"wyj".equals(orderInfo.getCpid())){
  50. throw new BusinessException("9012", "该产品不支持订购操作", new String[0]);
  51. }
  52. orderService.checkUserid(orderInfo);
  53. orderService.checkCpInfo(orderInfo);
  54. checkSpInfo(orderInfo);
  55. orderService.checkToken(orderInfo);
  56. String userid = orderInfo.getUserid();
  57. AreaInfo areaInfo = AreaUtil.getAreaInfoByUserid(userid);
  58. if (areaInfo == null) {
  59. areaInfo = new AreaInfo();
  60. }
  61. orderInfo.setProvince(areaInfo.getProvince());
  62. orderInfo.setArea(areaInfo.getArea());
  63. }
  64. private void checkSpInfo(OrderInfo orderInfo) throws Exception {
  65. SPInfo spInfo = this.spDao.findById(orderInfo.getSpid());
  66. /**
  67. //根据CPID获取TB_SP_INFO表的信息
  68. List<SPInfo> spList = this.spDao.findByCP(orderInfo.getCpid());
  69. if(spList != null){
  70. for(SPInfo tmp : spList){
  71. if(orderInfo.getSpid().equals(tmp.getSpid())){
  72. spInfo = tmp;
  73. break;
  74. }
  75. }
  76. }
  77. **/
  78. if (spInfo == null) {
  79. throw new BusinessException("5305", "产品标识符无效", new String[0]);
  80. }
  81. orderInfo.setSpid(spInfo.getSpid());
  82. if (spInfo.getCanorder() == 1 && StringUtils.isEmpty(orderInfo.getOrderchannel())) {
  83. throw new BusinessException("9012", "该产品不支持订购操作", new String[0]);
  84. }
  85. orderInfo.setSpid(spInfo.getSpid());
  86. orderInfo.setMutex(spInfo.getMutex());
  87. orderInfo.setRelationSp(spInfo.getRelationSp());
  88. orderInfo.setPaytype(spInfo.getPaytype());
  89. orderInfo.setErrorhandle(spInfo.getErrorhandle());
  90. orderInfo.setDirectype(spInfo.getDirectype());
  91. }
  92. /**
  93. * 订购
  94. * @param orderInfo
  95. * @throws Exception
  96. */
  97. public void process(OrderInfo orderInfo) throws Exception {
  98. orderCheck(orderInfo);
  99. order(orderInfo);
  100. }
  101. /**
  102. * 调接口订购
  103. * @param orderInfo
  104. * @throws Exception
  105. */
  106. private void order(OrderInfo orderInfo) throws Exception {
  107. //结果编码
  108. String resultcode = "";
  109. //结果信息
  110. String resultinfo = "";
  111. //调接口结果
  112. String result = "";
  113. String extend1 = "";
  114. try {
  115. //是否为白名单用户,用于测试
  116. if (!this.blackWhiteDao.isWhiteUser(orderInfo.getUserid(), orderInfo.getCpid())) {
  117. logger.info(orderInfo.getSpid()+"_"+orderInfo.getPaytype());
  118. //走能力平台订购
  119. if(orderInfo.getPaytype() == 4){
  120. shareOrderService.order(orderInfo.getUserid(), orderInfo.getCpid(), orderInfo.getSpid());
  121. result = "0";
  122. }else{//走CAP平台订购
  123. result = this.capOrderService.order(orderInfo, "1");
  124. }
  125. //成功
  126. if("0".equals(result)){
  127. resultcode = result;
  128. resultinfo = "订购成功";
  129. extend1 = "2";
  130. }
  131. }else{//是白名单
  132. resultcode = "0";
  133. resultinfo = "白名单用户";
  134. extend1 = "2";
  135. }
  136. } catch (Exception e) {
  137. if(e instanceof BusinessException){
  138. resultcode = ((BusinessException) e).getCode();
  139. resultinfo = ((BusinessException) e).getMessage();
  140. if(resultinfo.length()>500){
  141. resultinfo = resultinfo.substring(0, 400);
  142. }
  143. extend1 = "1";
  144. }else{
  145. e.printStackTrace();
  146. resultcode = "8000";
  147. resultinfo = e.getMessage();
  148. extend1 = "1";
  149. logger.error(orderInfo.getUserid()+", "+orderInfo.getSpid()+", 违约金产品订购出现异常,"+e.getMessage());
  150. }
  151. throw e;
  152. } finally {
  153. try {
  154. //订购数据入库
  155. boolean res = heyueOrderDao.addWyjOrderRec(orderInfo, resultcode, resultinfo,extend1);
  156. } catch (Exception e2) {
  157. resultcode = "8000";
  158. resultinfo = e2.getMessage();
  159. logger.error(orderInfo.getUserid()+", "+orderInfo.getSpid()+", 违约金产品保存订购出现异常,"+e2.getMessage());
  160. throw new BusinessException("8000","违约金产品保存订购出现异常,"+e2.getMessage());
  161. }
  162. }
  163. }
  164. }