package com.fdkankan.ucenter.service.impl; import java.util.List; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.fdkankan.ucenter.entity.IncrementAutoOrder; import com.fdkankan.ucenter.entity.User; import com.fdkankan.ucenter.entity.UserIncrement; import com.fdkankan.ucenter.mapper.IIncrementAutoOrderMapper; import com.fdkankan.ucenter.pay.paypal.sdk.AutoPaypalVo; import com.fdkankan.ucenter.pay.strategy.impl.IncrementOrderImpl; import com.fdkankan.ucenter.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** *

* 服务实现类 *

* * @author * @since 2023-11-09 */ @Service public class IncrementAutoOrderServiceImpl extends ServiceImpl implements IIncrementAutoOrderService { @Autowired IUserIncrementService userIncrementService; @Autowired IIncrementOrderService incrementOrderService; @Autowired IncrementOrderImpl incrementOrder; @Autowired IMailTemplateService mailTemplateService; @Autowired IUserService userService; @Override public void addOrder(Long userId, Integer incrementTypeId, Long incrementId, String orderSn,String agentKey) { IncrementAutoOrder autoOrder = new IncrementAutoOrder(); autoOrder.setUserId(userId); autoOrder.setIncrementTypeId(incrementTypeId); autoOrder.setUserIncrementId(incrementId); autoOrder.setOrderSn(orderSn); autoOrder.setAgentKey(agentKey); this.save(autoOrder); } @Override public IncrementAutoOrder getByIncrementId(Long incrementId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IncrementAutoOrder::getUserIncrementId,incrementId); return this.getOne(wrapper); } @Override public void subOrder(String orderSn,String subscriptionId) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(IncrementAutoOrder::getOrderSn,orderSn); wrapper.set(IncrementAutoOrder::getSubscriptionId,subscriptionId); this.update(wrapper); } @Override public IncrementAutoOrder getBySubId(String subscriptionId) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(IncrementAutoOrder::getSubscriptionId,subscriptionId); return this.getOne(wrapper); } @Override public void paySuccess(IncrementAutoOrder incrementAutoOrder, AutoPaypalVo order) throws Exception { incrementOrderService.addNewOrderByOrder(incrementAutoOrder,order); incrementOrder.handleOrder(order.getOrderSn(),order.getTradeNo(),order.getOrderSn(),2,null); } @Override public void payError(IncrementAutoOrder incrementAutoOrder, AutoPaypalVo order) { User user = userService.getById(incrementAutoOrder.getUserId()); if(user != null){ List userIncrements = userIncrementService.getByAutoOrderSn(order.getSubscriptionId()); if(userIncrements.size() >0){ mailTemplateService.sendPayErrorMail(user.getUserName(),userIncrements.get(0).getMemberLevels()); } } } @Override public void subscriptionCancelled(IncrementAutoOrder incrementAutoOrder, AutoPaypalVo order) { List userIncrements = userIncrementService.getByAutoOrderSn(order.getSubscriptionId()); for (UserIncrement increment : userIncrements) { userIncrementService.cancelSubscriptions(increment); User user = userService.getById(increment.getUserId()); if(user != null){ mailTemplateService.sendSubcriptionCancelledMail(user.getUserName(),increment.getMemberLevels()); } } this.removeById(incrementAutoOrder.getId()); } @Override public void setIncrementId(IncrementAutoOrder incrementAutoOrder, Long incrmentId) { if(incrementAutoOrder != null){ LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(IncrementAutoOrder::getId,incrementAutoOrder.getId()); wrapper.set(IncrementAutoOrder::getUserIncrementId,incrmentId); this.update(wrapper); } } @Override public void delByIncrementId(Long incrementId) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(IncrementAutoOrder::getUserIncrementId,incrementId); this.remove(wrapper); } @Override public IncrementAutoOrder getByOrderSn(String orderSn) { LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(IncrementAutoOrder::getOrderSn,orderSn); List list = this.list(wrapper); if(list == null || list.size()<=0){ return null; } return list.get(0); } @Override public IncrementAutoOrder getDelOrder(String subscriptionOrderSn) { return getBaseMapper().getDelOrder(subscriptionOrderSn); } @Override public void updateDelStatus(Integer id) { getBaseMapper().updateDelStatus(id); } }