package com.sinata.shop.modular.mall.service.impl;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.SqlHelper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.google.common.collect.Lists;
|
import com.ijpay.core.kit.WxPayKit;
|
import com.sinata.common.enums.EnumPayType;
|
import com.sinata.common.enums.EnumUserBankDetailDoneType;
|
import com.sinata.common.enums.EnumUserBankDetailType;
|
import com.sinata.common.enums.mall.EnumMallOrderState;
|
import com.sinata.core.exception.GunsException;
|
import com.sinata.core.util.Convert;
|
import com.sinata.shop.config.properties.WxPayProperties;
|
import com.sinata.shop.core.common.exception.BizExceptionEnum;
|
import com.sinata.shop.core.shiro.ShiroKit;
|
import com.sinata.shop.core.util.PayUtil;
|
import com.sinata.shop.modular.mall.dao.MallOrderMapper;
|
import com.sinata.shop.modular.mall.dto.OrderClassPriceVo;
|
import com.sinata.shop.modular.mall.dto.OrderPriceVo;
|
import com.sinata.shop.modular.mall.model.MallOrder;
|
import com.sinata.shop.modular.mall.model.MallOrderDetail;
|
import com.sinata.shop.modular.mall.service.IMallOrderDetailService;
|
import com.sinata.shop.modular.mall.service.IMallOrderService;
|
import com.sinata.shop.modular.mall.service.IMemMerchantService;
|
import com.sinata.shop.modular.member.model.MemUserBankDetail;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.ibatis.session.RowBounds;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Objects;
|
|
/**
|
* <p>
|
* 商品订单 服务实现类
|
* </p>
|
*
|
* @author frankevil
|
* @since 2023-03-19
|
*/
|
@Slf4j
|
@Service
|
public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder> implements IMallOrderService {
|
|
@Resource
|
private IMemMerchantService merchantService;
|
|
@Resource
|
private WxPayProperties wxPayProperties;
|
|
@Resource
|
private IMallOrderDetailService mallOrderDetailService;
|
|
@Override
|
public List<OrderClassPriceVo> orderIndex(Integer merchantId) {
|
return baseMapper.orderIndex(merchantId);
|
}
|
|
@Override
|
public OrderPriceVo orderPriceIndex(Integer merchantId) {
|
return baseMapper.orderPriceIndex(merchantId);
|
}
|
|
@Override
|
public Integer orderUse(Integer merchantId) {
|
return baseMapper.orderUse(merchantId);
|
}
|
|
@Override
|
public Page<MallOrder> findPage(Page<MallOrder> page, Wrapper<?> wrapper) {
|
wrapper = SqlHelper.fillWrapper(page, wrapper);
|
page.setRecords(baseMapper.findList(page, wrapper));
|
return page;
|
}
|
|
@Override
|
public List<MallOrder> findList(Wrapper<?> wrapper) {
|
return this.baseMapper.findList(RowBounds.DEFAULT, wrapper);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public void cancelOrder(String orderNo) {
|
MallOrder order = this.selectById(orderNo);
|
|
List<Integer> noState = Lists.newArrayList(EnumMallOrderState.WAIT_PAY.getIndex(), EnumMallOrderState.WAIT_CHECK.getIndex());
|
if (order == null || noState.stream().noneMatch(s -> s.equals(order.getState()))) {
|
throw new GunsException(BizExceptionEnum.REQUEST_NULL.getCode(), "只有未支付或未核销的订单才能取消");
|
}
|
|
|
order.setCancelType(1);
|
order.setCancelTime(new Date());
|
order.setState(EnumMallOrderState.CANCEL.getIndex());
|
|
//修改状态
|
this.updateById(order);
|
}
|
|
@Override
|
public boolean fullRefund(String orderNo) {
|
Object obj = this.mallOrderDetailService.selectObj(new EntityWrapper<MallOrderDetail>()
|
.setSqlSelect("IFNULL(SUM(goods_num-refund_num),0)")
|
.eq("order_no", orderNo));
|
return Convert.toInt(obj, 0) <= 0;
|
}
|
|
@Override
|
public String getFirstGoodsImag(String orderNo) {
|
return (String) this.mallOrderDetailService.selectObj(new EntityWrapper<MallOrderDetail>()
|
.setSqlSelect("goods_image")
|
.eq("order_no", orderNo)
|
.last("LIMIT 1"));
|
}
|
|
@Override
|
public List<Map<String, Object>> countOrderIncome(Wrapper<?> wrapper) {
|
return this.baseMapper.countOrderIncome(wrapper);
|
}
|
|
@Override
|
public List<Map<String, Object>> getDataTrend(Integer dataType,Integer merchantId, String startTime, String endTime,String dateFormat) {
|
return baseMapper.getDataTrend(dataType,merchantId,startTime,endTime,dateFormat);
|
}
|
public List<Map<String, Object>> getDataTrend2(Integer dataType,Integer merchantId, String startTime, String endTime,String dateFormat) {
|
return baseMapper.getDataTrend2(dataType,merchantId,startTime,endTime,dateFormat);
|
}
|
}
|