package com.fdkankan.ucenter.service.impl; import com.amazonaws.services.simpleworkflow.flow.annotations.NoWait; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fdkankan.common.constant.ErrorCode; import com.fdkankan.common.constant.SceneConstant; import com.fdkankan.common.exception.BusinessException; import com.fdkankan.ucenter.common.PageInfo; import com.fdkankan.common.util.NumberUtils; import com.fdkankan.ucenter.common.SkuEnum; import com.fdkankan.ucenter.constant.LoginConstant; import com.fdkankan.ucenter.constant.OrderConstant; import com.fdkankan.ucenter.entity.*; import com.fdkankan.ucenter.httpClient.client.PayClient; import com.fdkankan.ucenter.httpClient.param.PayGoods; import com.fdkankan.ucenter.httpClient.service.PayService; import com.fdkankan.ucenter.httpClient.vo.PayOrderVo; import com.fdkankan.ucenter.mapper.IIncrementOrderMapper; import com.fdkankan.ucenter.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.ucenter.util.DateUserUtil; import com.fdkankan.ucenter.vo.request.DownNumParam; import com.fdkankan.ucenter.vo.request.IncrementOrderParam; import com.fdkankan.ucenter.vo.request.OrderParam; import com.fdkankan.ucenter.vo.response.GoodsSkuVo; import com.fdkankan.ucenter.vo.response.IncrementOrderVo; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import static com.fdkankan.ucenter.util.DateUserUtil.getDateTime; /** *

* 增值权益订单表 服务实现类 *

* * @author * @since 2022-07-13 */ @Service public class IncrementOrderServiceImpl extends ServiceImpl implements IIncrementOrderService { @Autowired IUserService userService; @Autowired IInvoiceService invoiceService; @Autowired IUserIncrementService userIncrementService; @Autowired IGoodsSkuService goodsSkuService; @Autowired IIncrementTypeService incrementTypeService; @Override public PageInfo pageList(IncrementOrderParam param) { User user = userService.getByUserName(param.getUserName()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(IncrementOrder::getUserId,user.getId()); wrapper.eq(IncrementOrder::getPayStatus,1); wrapper.orderByDesc(IncrementOrder::getTradeTime); Page page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper); List listVo =new ArrayList<>(); for (IncrementOrder record : page.getRecords()) { if(StringUtils.isNotBlank(record.getTradeTime())){ record.setTradeTime(DateUserUtil.AddMinute(record.getTradeTime(),record.getTimeZoneOff())); } Invoice invoice = invoiceService.getByIncrementOrderId(record.getId()); IncrementOrderVo vo = new IncrementOrderVo(); BeanUtils.copyProperties(record,vo); vo.setInvoice(invoice); listVo.add(vo); } Page pageVo = new Page<>(param.getPageNum(),param.getPageSize()); pageVo.setRecords(listVo); pageVo.setTotal(page.getTotal()); return PageInfo.PageInfo(pageVo); } @Override public GoodsSkuVo getDownloadPrice(OrderParam param) { if(param.getDateType() == null){ throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001); } // 5 专业会员,6 下载 , 7 高级会员 if(param.getDateType() != 6 && param.getIncrementTypeId() == null && param.getUserIncrementId() == null){ throw new BusinessException(SceneConstant.FAILURE_CODE_5012, SceneConstant.FAILURE_MSG_5012); } return getGoodsSkuVo(param.getDateType(), param.getUserIncrementId(),param.getMonthQy(),param.getIncrementTypeId()); } private GoodsSkuVo getGoodsSkuVo (Integer dateType,Integer userIncrementId,Integer monthDy,Integer incrementTypeId){ GoodsSkuVo goodsSkuVo = new GoodsSkuVo(); if(userIncrementId != null){ UserIncrement userIncrement = userIncrementService.getById(userIncrementId); incrementTypeId = userIncrement.getIncrementTypeId(); } IncrementType incrementType = null; if(incrementTypeId != null){ //购买会员 incrementType = incrementTypeService.getById(incrementTypeId); if(incrementType == null){ throw new BusinessException(ErrorCode.MISSING_REQUIRED_PARAMETERS); } goodsSkuVo.setPrice(incrementType.getPrice()); goodsSkuVo.setSkuSn(incrementType.getId().toString()); goodsSkuVo.setDeadLine(getDateTime(incrementType,userIncrementId,monthDy).toDate().getTime()); return goodsSkuVo; } if(dateType == 6){ //下载场景 incrementType = incrementTypeService.list().get(0); goodsSkuVo.setPrice(incrementType.getDownloadPrice()); goodsSkuVo.setSkuSn(incrementType.getId().toString()); goodsSkuVo.setDeadLine(getDateTime(incrementType,userIncrementId,monthDy).toDate().getTime()); return goodsSkuVo; } return goodsSkuVo; } @Override public DateTime getDateTime(IncrementType incrementType, Integer userIncrementId,Integer count) { Date userTime = new Date(); if(userIncrementId != null){ UserIncrement userIncrement = userIncrementService.getById(userIncrementId); userTime = DateUserUtil.getDate(userIncrement.getIncrementEndTime()); } return DateUserUtil.getDateTime(userTime, incrementType,count); } public GoodsSkuVo getIncrementOrDownloadPrice(Integer dateType) { String skuStr = SkuEnum.skusMap.get(String.valueOf(dateType)); if (StringUtils.isEmpty(skuStr)){ skuStr = SkuEnum.skusMap.get("5"); } GoodsSkuVo responseGoodsSku = new GoodsSkuVo(); GoodsSku goodsSkuEntity = goodsSkuService.getBySku(skuStr); BeanUtils.copyProperties(goodsSkuEntity, responseGoodsSku); return responseGoodsSku; } @Autowired PayService payService; @Override public IncrementOrder insertIncrementOrder(User user, DownNumParam param,IncrementType incrementType) { BigDecimal total = incrementType.getPrice().multiply(new BigDecimal(param.getCount())); if(param.getMonthQy() != null){ total = total.multiply(new BigDecimal(param.getMonthQy())); //高级会员月份 } IncrementOrder incrementOrderEntity = new IncrementOrder(); PayGoods payGoods = new PayGoods(incrementType.getName(),param.getCount(),incrementType.getValidTimeType(),param.getMonthQy()); PayOrderVo payOrderVo = payService.downOrder(total, "incrementOrder",user.getUserName(),user.getNickName(), Arrays.asList(payGoods)); if(payOrderVo == null){ throw new BusinessException(OrderConstant.FAILURE_CODE_8005,OrderConstant.FAILURE_MSG_8005); } incrementOrderEntity.setOrderSn(payOrderVo.getOrderSn()); incrementOrderEntity.setAmount(total); incrementOrderEntity.setPayType(param.getPayType()); incrementOrderEntity.setPayStatus(-1); incrementOrderEntity.setUserId(user.getId()); incrementOrderEntity.setCount(param.getCount()); incrementOrderEntity.setAbroad(param.getAbroad()); incrementOrderEntity.setStatus(param.getIncrementId() == null ? 1 : 2); incrementOrderEntity.setIncrementId(param.getIncrementId()); incrementOrderEntity.setRecStatus("A"); incrementOrderEntity.setCreateTime(DateUserUtil.getDate(new Date())); incrementOrderEntity.setUpdateTime(DateUserUtil.getDate(new Date())); incrementOrderEntity.setIncrementType(incrementType.getId()); incrementOrderEntity.setMonthQy(param.getMonthQy()); incrementOrderEntity.setTimeZoneOff(param.getTimeZoneOff()); if(incrementType.getValidTimeType() == 0){ incrementOrderEntity.setMemberLevels("PR"); } if(incrementType.getValidTimeType() == 1){ incrementOrderEntity.setMemberLevels("SE"); } this.save(incrementOrderEntity); return incrementOrderEntity; } @Override public IncrementOrder getByOrderSn(String orderSn) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(IncrementOrder::getOrderSn,orderSn); List list = this.list(queryWrapper); if(list == null || list.size()<=0){ return null; } return list.get(0); } @Override public IncrementOrder getByOrderSnNoPay(String orderSn) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(IncrementOrder::getOrderSn,orderSn); queryWrapper.lambda().ne(IncrementOrder::getPayStatus,1); List list = this.list(queryWrapper); if(list == null || list.size()<=0){ return null; } return list.get(0); } @Override public boolean paySuccessIncrementOrder(String orderSn, String tradeNo, int paymentTypeName) { LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.set(IncrementOrder::getPayType,paymentTypeName) .set(IncrementOrder::getNumber,tradeNo) .set(IncrementOrder::getPayStatus, 1) .set(IncrementOrder::getTradeTime, new Date()) .eq(IncrementOrder::getOrderSn,orderSn); return this.update(updateWrapper); } }