IncrementOrderImpl.java 5.0 KB

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