IncrementOrderImpl.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package com.fdkankan.ucenter.pay.strategy.impl;
  2. import com.fdkankan.ucenter.entity.*;
  3. import com.fdkankan.ucenter.pay.strategy.OrderStrategy;
  4. import com.fdkankan.ucenter.service.*;
  5. import com.fdkankan.ucenter.util.DateUserUtil;
  6. import lombok.extern.log4j.Log4j2;
  7. import org.joda.time.DateTime;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Component;
  10. import java.util.Date;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.UUID;
  14. @Log4j2
  15. @Component
  16. public class IncrementOrderImpl implements OrderStrategy {
  17. @Autowired
  18. private IIncrementOrderService incrementOrderService;
  19. @Autowired
  20. private IUserIncrementService userIncrementService;
  21. @Autowired
  22. private IUserService userService;
  23. @Autowired
  24. ISceneProService sceneProService;
  25. @Autowired
  26. ICameraDetailService cameraDetailService;
  27. @Autowired
  28. IIncrementTypeService incrementTypeService;
  29. @Autowired
  30. IAgentNewLogService agentNewLogService;
  31. @Autowired
  32. IIncrementAutoOrderService incrementAutoOrderService;
  33. @Override
  34. public void handleOrder(String orderSn, String tradeNo, String openId, int paymentTypeName, Long incrementId) throws Exception {
  35. IncrementOrder responseIncrementOrder = incrementOrderService.getByOrderSnNoPay(orderSn);
  36. if (responseIncrementOrder == null) {
  37. log.error("找不到订单:" + orderSn);
  38. throw new Exception("找不到订单,out_trade_no错误");
  39. }
  40. IncrementAutoOrder incrementAutoOrder = null;
  41. if(responseIncrementOrder.getAutoOrderId() != null){
  42. incrementAutoOrder = incrementAutoOrderService.getById(responseIncrementOrder.getAutoOrderId());
  43. if(incrementAutoOrder != null && incrementAutoOrder.getUserIncrementId() !=null){
  44. responseIncrementOrder.setIncrementId(incrementAutoOrder.getUserIncrementId());
  45. }
  46. }
  47. // 更新增值权益订单
  48. boolean result = incrementOrderService.paySuccessIncrementOrder(orderSn, tradeNo, paymentTypeName);
  49. if (!result){
  50. log.error("更新增值权益订单失败");
  51. throw new Exception("更新增值权益订单失败");
  52. }
  53. UserIncrement userIncrementEntity = null;
  54. IncrementType incrementType = incrementTypeService.getById(responseIncrementOrder.getIncrementType());
  55. if(incrementType == null){
  56. throw new Exception("更新增值权益订单失败");
  57. }
  58. Integer expired = 0;
  59. Date date = new Date();
  60. if(responseIncrementOrder.getIncrementId() == null){
  61. //新的增值权益套餐方案
  62. date = DateUserUtil.getDateTime(new Date(),incrementType,responseIncrementOrder.getMonthQy()).toDate();
  63. if(responseIncrementOrder.getCount() > 0){
  64. for(int i = 0, len = responseIncrementOrder.getCount(); i < len; i++){
  65. userIncrementEntity = new UserIncrement();
  66. userIncrementEntity.setKeyWord(UUID.randomUUID().toString().replace("-", ""));
  67. userIncrementEntity.setUserId(responseIncrementOrder.getUserId());
  68. userIncrementEntity.setOrderSn(orderSn);
  69. userIncrementEntity.setIncrementStartTime(DateUserUtil.getDate(new Date()));
  70. userIncrementEntity.setIncrementEndTime(DateUserUtil.getDate(date));
  71. userIncrementEntity.setIsExpired(expired);
  72. userIncrementEntity.setIncrementTypeId(responseIncrementOrder.getIncrementType());
  73. userIncrementEntity.setMemberLevels(responseIncrementOrder.getMemberLevels());
  74. if(incrementAutoOrder!= null){
  75. userIncrementEntity.setSubscriptionOrder(incrementAutoOrder.getSubscriptionId());
  76. }
  77. userIncrementService.save(userIncrementEntity);
  78. incrementAutoOrderService.setIncrementId(incrementAutoOrder,userIncrementEntity.getId());
  79. }
  80. }
  81. }else {
  82. userIncrementEntity = userIncrementService.getById(responseIncrementOrder.getIncrementId());
  83. date = DateUserUtil.getDateTime(DateUserUtil.getDate(userIncrementEntity.getIncrementEndTime()),incrementType,responseIncrementOrder.getMonthQy()).toDate();
  84. userIncrementEntity.setIncrementEndTime(DateUserUtil.getDate(date));
  85. userIncrementEntity.setOrderSn(userIncrementEntity.getOrderSn() + "," + orderSn);
  86. userIncrementEntity.setUpdateTime(DateUserUtil.getDate(new Date()));
  87. userIncrementEntity.setIsExpired(expired);
  88. if(incrementAutoOrder!= null){
  89. userIncrementEntity.setSubscriptionOrder(incrementAutoOrder.getSubscriptionId());
  90. }
  91. userIncrementService.updateById(userIncrementEntity);
  92. if(userIncrementEntity.getAgentId() != null){
  93. agentNewLogService.addByUserIncrement(userIncrementEntity);
  94. }
  95. //解封所有场景
  96. if(userIncrementEntity.getUserId() != null && userIncrementEntity.getCameraId() != null){
  97. CameraDetail cameraDetail = cameraDetailService.getByCameraId(userIncrementEntity.getCameraId());
  98. sceneProService.lockOrUnLockBySpace(cameraDetail, userIncrementEntity.getCameraId());
  99. }
  100. }
  101. //增加用户下载次数
  102. if(userIncrementEntity != null && userIncrementEntity.getUserId()!=null){
  103. User userEntity = userService.getById(userIncrementEntity.getUserId());
  104. if(userEntity != null && incrementType.getDownloadNum() >0){
  105. userEntity.setDownloadNumTotal(userEntity.getDownloadNumTotal() + (responseIncrementOrder.getMonthQy() == null?1:responseIncrementOrder.getMonthQy()) * responseIncrementOrder.getCount() * incrementType.getDownloadNum() );
  106. userService.updateById(userEntity);
  107. }
  108. }
  109. }
  110. @Override
  111. public String getType() {
  112. return "increment";
  113. }
  114. }