IncrementOrderImpl.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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. @Override
  32. public void handleOrder(String orderSn, String tradeNo, String openId, int paymentTypeName, Long spaceId) throws Exception {
  33. IncrementOrder responseIncrementOrder = incrementOrderService.getByOrderSn(orderSn);
  34. if (responseIncrementOrder == null) {
  35. log.error("找不到订单:" + orderSn);
  36. throw new Exception("找不到订单,out_trade_no错误");
  37. }
  38. // 更新增值权益订单
  39. boolean result = incrementOrderService.paySuccessIncrementOrder(orderSn, tradeNo, paymentTypeName);
  40. if (!result){
  41. log.error("更新增值权益订单失败");
  42. throw new Exception("更新增值权益订单失败");
  43. }
  44. UserIncrement userIncrementEntity = null;
  45. IncrementType incrementType = incrementTypeService.getById(responseIncrementOrder.getIncrementType());
  46. if(incrementType == null){
  47. throw new Exception("更新增值权益订单失败");
  48. }
  49. if(responseIncrementOrder.getIncrementId() == null){
  50. //新的增值权益套餐方案
  51. Date date = null;
  52. date = DateUserUtil.getDateTime(new Date(),incrementType,responseIncrementOrder.getMonthQy()).toDate();
  53. if(responseIncrementOrder.getCount() > 0){
  54. for(int i = 0, len = responseIncrementOrder.getCount(); i < len; i++){
  55. userIncrementEntity = new UserIncrement();
  56. userIncrementEntity.setKeyWord(UUID.randomUUID().toString().replace("-", ""));
  57. userIncrementEntity.setUserId(responseIncrementOrder.getUserId());
  58. userIncrementEntity.setOrderSn(orderSn);
  59. userIncrementEntity.setIncrementStartTime(DateUserUtil.getDate(new Date()));
  60. userIncrementEntity.setIncrementEndTime(DateUserUtil.getDate(date));
  61. userIncrementEntity.setIsExpired(0);
  62. userIncrementEntity.setIncrementTypeId(responseIncrementOrder.getIncrementType());
  63. userIncrementEntity.setMemberLevels(responseIncrementOrder.getMemberLevels());
  64. userIncrementService.save(userIncrementEntity);
  65. }
  66. }
  67. }else {
  68. userIncrementEntity = userIncrementService.getById(responseIncrementOrder.getIncrementId());
  69. DateTime date = DateUserUtil.getDateTime(DateUserUtil.getDate(userIncrementEntity.getIncrementEndTime()),incrementType,responseIncrementOrder.getMonthQy());
  70. userIncrementEntity.setIncrementEndTime(DateUserUtil.getDate(date.toDate()));
  71. userIncrementEntity.setOrderSn(userIncrementEntity.getOrderSn() + "," + orderSn);
  72. userIncrementEntity.setUpdateTime(DateUserUtil.getDate(new Date()));
  73. userIncrementEntity.setIsExpired(0);
  74. userIncrementService.updateById(userIncrementEntity);
  75. if(userIncrementEntity.getAgentId() != null){
  76. agentNewLogService.addByUserIncrement(userIncrementEntity);
  77. }
  78. //解封所有场景
  79. if(userIncrementEntity.getUserId() != null && userIncrementEntity.getCameraId() != null){
  80. CameraDetail cameraDetail = cameraDetailService.getByCameraId(userIncrementEntity.getCameraId());
  81. sceneProService.lockOrUnLockBySpace(cameraDetail, userIncrementEntity.getCameraId(),1);
  82. }
  83. }
  84. //增加用户下载次数
  85. if(userIncrementEntity != null && userIncrementEntity.getUserId()!=null){
  86. User userEntity = userService.getById(userIncrementEntity.getUserId());
  87. if(userEntity != null && incrementType.getDownloadNum() >0){
  88. userEntity.setDownloadNumTotal(userEntity.getDownloadNumTotal() + responseIncrementOrder.getCount() * incrementType.getDownloadNum());
  89. userService.updateById(userEntity);
  90. }
  91. }
  92. }
  93. @Override
  94. public String getType() {
  95. return "increment";
  96. }
  97. }