123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- 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;
- /**
- * <p>
- * 增值权益订单表 服务实现类
- * </p>
- *
- * @author
- * @since 2022-07-13
- */
- @Service
- public class IncrementOrderServiceImpl extends ServiceImpl<IIncrementOrderMapper, IncrementOrder> 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<IncrementOrder> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(IncrementOrder::getUserId,user.getId());
- wrapper.eq(IncrementOrder::getPayStatus,1);
- wrapper.orderByDesc(IncrementOrder::getTradeTime);
- Page<IncrementOrder> page = this.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
- List<IncrementOrderVo> 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<IncrementOrderVo> 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<IncrementOrder> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(IncrementOrder::getOrderSn,orderSn);
- List<IncrementOrder> list = this.list(queryWrapper);
- if(list == null || list.size()<=0){
- return null;
- }
- return list.get(0);
- }
- @Override
- public IncrementOrder getByOrderSnNoPay(String orderSn) {
- QueryWrapper<IncrementOrder> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(IncrementOrder::getOrderSn,orderSn);
- queryWrapper.lambda().ne(IncrementOrder::getPayStatus,1);
- List<IncrementOrder> 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<IncrementOrder> 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);
- }
- }
|