123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package com.fdkankan.ucenter.pay.strategy.impl;
- import com.fdkankan.ucenter.entity.*;
- import com.fdkankan.ucenter.pay.strategy.OrderStrategy;
- import com.fdkankan.ucenter.service.*;
- import com.fdkankan.ucenter.util.DateUserUtil;
- import lombok.extern.log4j.Log4j2;
- import org.joda.time.DateTime;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.UUID;
- @Log4j2
- @Component
- public class IncrementOrderImpl implements OrderStrategy {
- @Autowired
- private IIncrementOrderService incrementOrderService;
- @Autowired
- private IUserIncrementService userIncrementService;
- @Autowired
- private IUserService userService;
- @Autowired
- ISceneProService sceneProService;
- @Autowired
- ICameraDetailService cameraDetailService;
- @Autowired
- IIncrementTypeService incrementTypeService;
- @Autowired
- IAgentNewLogService agentNewLogService;
- @Autowired
- IIncrementAutoOrderService incrementAutoOrderService;
- @Override
- public void handleOrder(String orderSn, String tradeNo, String openId, int paymentTypeName, Long incrementId) throws Exception {
- IncrementOrder responseIncrementOrder = incrementOrderService.getByOrderSnNoPay(orderSn);
- if (responseIncrementOrder == null) {
- log.error("找不到订单:" + orderSn);
- throw new Exception("找不到订单,out_trade_no错误");
- }
- IncrementAutoOrder incrementAutoOrder = null;
- if(responseIncrementOrder.getAutoOrderId() != null){
- incrementAutoOrder = incrementAutoOrderService.getById(responseIncrementOrder.getAutoOrderId());
- if(incrementAutoOrder != null && incrementAutoOrder.getUserIncrementId() !=null){
- responseIncrementOrder.setIncrementId(incrementAutoOrder.getUserIncrementId());
- }
- }
- // 更新增值权益订单
- boolean result = incrementOrderService.paySuccessIncrementOrder(orderSn, tradeNo, paymentTypeName);
- if (!result){
- log.error("更新增值权益订单失败");
- throw new Exception("更新增值权益订单失败");
- }
- UserIncrement userIncrementEntity = null;
- IncrementType incrementType = incrementTypeService.getById(responseIncrementOrder.getIncrementType());
- if(incrementType == null){
- throw new Exception("更新增值权益订单失败");
- }
- Integer expired = 0;
- Date date = new Date();
- if(responseIncrementOrder.getIncrementId() == null){
- //新的增值权益套餐方案
- date = DateUserUtil.getDateTime(new Date(),incrementType,responseIncrementOrder.getMonthQy()).toDate();
- if(responseIncrementOrder.getCount() > 0){
- for(int i = 0, len = responseIncrementOrder.getCount(); i < len; i++){
- userIncrementEntity = new UserIncrement();
- userIncrementEntity.setKeyWord(UUID.randomUUID().toString().replace("-", ""));
- userIncrementEntity.setUserId(responseIncrementOrder.getUserId());
- userIncrementEntity.setOrderSn(orderSn);
- userIncrementEntity.setIncrementStartTime(DateUserUtil.getDate(new Date()));
- userIncrementEntity.setIncrementEndTime(DateUserUtil.getDate(date));
- userIncrementEntity.setIsExpired(expired);
- userIncrementEntity.setIncrementTypeId(responseIncrementOrder.getIncrementType());
- userIncrementEntity.setMemberLevels(responseIncrementOrder.getMemberLevels());
- if(incrementAutoOrder!= null){
- userIncrementEntity.setSubscriptionOrder(incrementAutoOrder.getSubscriptionId());
- }
- userIncrementService.save(userIncrementEntity);
- incrementAutoOrderService.setIncrementId(incrementAutoOrder,userIncrementEntity.getId());
- }
- }
- }else {
- userIncrementEntity = userIncrementService.getById(responseIncrementOrder.getIncrementId());
- date = DateUserUtil.getDateTime(DateUserUtil.getDate(userIncrementEntity.getIncrementEndTime()),incrementType,responseIncrementOrder.getMonthQy()).toDate();
- userIncrementEntity.setIncrementEndTime(DateUserUtil.getDate(date));
- userIncrementEntity.setOrderSn(userIncrementEntity.getOrderSn() + "," + orderSn);
- userIncrementEntity.setUpdateTime(DateUserUtil.getDate(new Date()));
- userIncrementEntity.setIsExpired(expired);
- if(incrementAutoOrder!= null){
- userIncrementEntity.setSubscriptionOrder(incrementAutoOrder.getSubscriptionId());
- }
- userIncrementService.updateById(userIncrementEntity);
- if(userIncrementEntity.getAgentId() != null){
- agentNewLogService.addByUserIncrement(userIncrementEntity);
- }
- //解封所有场景
- if(userIncrementEntity.getUserId() != null && userIncrementEntity.getCameraId() != null){
- CameraDetail cameraDetail = cameraDetailService.getByCameraId(userIncrementEntity.getCameraId());
- sceneProService.lockOrUnLockBySpace(cameraDetail, userIncrementEntity.getCameraId());
- }
- }
- //增加用户下载次数
- if(userIncrementEntity != null && userIncrementEntity.getUserId()!=null){
- User userEntity = userService.getById(userIncrementEntity.getUserId());
- if(userEntity != null && incrementType.getDownloadNum() >0){
- userEntity.setDownloadNumTotal(userEntity.getDownloadNumTotal() + (responseIncrementOrder.getMonthQy() == null?1:responseIncrementOrder.getMonthQy()) * responseIncrementOrder.getCount() * incrementType.getDownloadNum() );
- userService.updateById(userEntity);
- }
- }
- }
- @Override
- public String getType() {
- return "increment";
- }
- }
|