package cc.mrbird.febs.mall.service.impl;
|
|
import cc.mrbird.febs.common.entity.FebsResponse;
|
import cc.mrbird.febs.common.entity.QueryRequest;
|
import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
|
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
|
import cc.mrbird.febs.common.enumerates.OrderDeliveryStateEnum;
|
import cc.mrbird.febs.mall.dto.*;
|
import cc.mrbird.febs.mall.entity.*;
|
import cc.mrbird.febs.mall.mapper.*;
|
import cc.mrbird.febs.mall.service.IAdminMallOrderService;
|
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
|
import cc.mrbird.febs.mall.service.IMallMoneyFlowService;
|
import cc.mrbird.febs.mall.vo.*;
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.math.BigDecimal;
|
import java.util.List;
|
|
@Slf4j
|
@Service
|
@RequiredArgsConstructor
|
@Transactional
|
public class AdminMallOrderService extends ServiceImpl<MallOrderInfoMapper, MallOrderInfo> implements IAdminMallOrderService {
|
|
private final MallOrderInfoMapper mallOrderInfoMapper;
|
|
private final MallExpressInfoMapper mallExpressInfoMapper;
|
|
private final MallOrderItemMapper mallOrderItemMapper;
|
|
private final MallOrderRefundMapper mallOrderRefundMapper;
|
|
private final MallOrderRefundOperationMapper mallOrderRefundOperationMapper;
|
|
private final MallOrderRefundAddressMapper mallOrderRefundAddressMapper;
|
|
private final MallGoodsCommentMapper mallGoodsCommentMapper;
|
|
private final MallMoneyFlowMapper mallMoneyFlowMapper;
|
|
private final IApiMallMemberWalletService iApiMallMemberWalletService;
|
|
private final MallMemberPaymentMapper mallMemberPaymentMapper;
|
|
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
|
private final IMallMoneyFlowService mallMoneyFlowService;
|
private final MallRefundMapper mallRefundMapper;
|
|
|
@Override
|
public IPage<MallOrderInfo> findOrderListInPage(MallOrderInfo mallOrderInfo, QueryRequest request) {
|
Page<MallOrderInfo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
return this.baseMapper.selectInPage(mallOrderInfo, page);
|
}
|
|
@Override
|
public IPage<AdminMallOrderInfoVo> getOrderListInPage(MallOrderInfoDto mallOrderInfo, QueryRequest request) {
|
Page<AdminMallOrderInfoVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminMallOrderInfoVo> adminMallOrderInfoVos = this.baseMapper.selectOrderListInPage(page, mallOrderInfo);
|
if(CollUtil.isNotEmpty(adminMallOrderInfoVos.getRecords())){
|
for(AdminMallOrderInfoVo adminMallOrderInfoVo : adminMallOrderInfoVos.getRecords()){
|
Long orderId = adminMallOrderInfoVo.getId();
|
List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderId);
|
if(CollUtil.isNotEmpty(mallOrderItemList)){
|
StringBuffer stringBuffer = new StringBuffer();
|
for(MallOrderItem mallOrderItem : mallOrderItemList){
|
stringBuffer.append(mallOrderItem.getGoodsName()).append("*").append(mallOrderItem.getCnt()).append(";");
|
}
|
adminMallOrderInfoVo.setGoodsName(stringBuffer.toString());
|
}
|
}
|
}
|
return adminMallOrderInfoVos;
|
}
|
|
@Override
|
public AdminMallOrderVo getMallOrderInfoById(long id) {
|
return this.baseMapper.getMallOrderInfoById(id);
|
}
|
|
@Override
|
public FebsResponse deliverGoods(DeliverGoodsDto deliverGoodsDto) {
|
MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(deliverGoodsDto.getId());
|
if(ObjectUtil.isEmpty(mallOrderInfo)){
|
return new FebsResponse().fail().message("订单不存在,刷新后重试");
|
}
|
Integer status = mallOrderInfo.getStatus();
|
if(2 != status){
|
return new FebsResponse().fail().message("订单不是待发货状态");
|
}
|
Integer deliveryType = mallOrderInfo.getDeliveryType();
|
if(2 != deliveryType){
|
return new FebsResponse().fail().message("订单的配送方式不是快递");
|
}
|
String expressNo = deliverGoodsDto.getExpressNo();
|
if(StrUtil.isEmpty(expressNo)){
|
return new FebsResponse().fail().message("请输入物流单号");
|
}
|
String expressCom = deliverGoodsDto.getExpressCom();
|
if(StrUtil.isEmpty(expressCom)){
|
return new FebsResponse().fail().message("请输入物流公司");
|
}
|
MallExpressInfo mallExpressInfo = new MallExpressInfo();
|
mallExpressInfo.setMemberId(mallOrderInfo.getMemberId());
|
mallExpressInfo.setOrderId(mallOrderInfo.getId());
|
mallExpressInfo.setExpressNo(expressNo);
|
mallExpressInfo.setExpressCom(expressCom);
|
mallExpressInfoMapper.insert(mallExpressInfo);
|
|
mallOrderInfo.setStatus(3);
|
mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_ING.getValue());
|
mallOrderInfoMapper.updateById(mallOrderInfo);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public AdminOrderDetailVo getMallOrderDetailById(long id) {
|
AdminOrderDetailVo adminOrderDetailVo = mallOrderInfoMapper.getMallOrderDetailById(id);
|
MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectByOrderId(id);
|
if(ObjectUtil.isNotEmpty(mallExpressInfo)){
|
adminOrderDetailVo.setExpressNo(mallExpressInfo.getExpressNo());
|
adminOrderDetailVo.setExpressCom(mallExpressInfo.getExpressCom());
|
}
|
List<MallOrderItem> mallOrderItems = mallOrderInfoMapper.getMallOrderItemByOrderId(id);
|
if(CollUtil.isNotEmpty(mallOrderItems)){
|
StringBuffer orderItems = new StringBuffer();
|
for (MallOrderItem item : mallOrderItems){
|
StringBuffer orderItem = new StringBuffer();
|
orderItems.append(item.getGoodsName()+"-"+item.getCnt()+"*"+item.getPrice()+"-合计"+item.getAmount()+"; \n ");
|
orderItems.append(orderItem);
|
}
|
adminOrderDetailVo.setOrderItems(orderItems.toString());
|
}
|
|
return adminOrderDetailVo;
|
}
|
|
@Override
|
public IPage<AdminMallOrderRefundVo> getRefundListInPage(MallOrderRefundDto mallOrderRefundDto, QueryRequest request) {
|
Page<AdminMallOrderRefundVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminMallOrderRefundVo> adminMallOrderRefundVos = mallOrderRefundMapper.selectRefundListInPage(page, mallOrderRefundDto);
|
return adminMallOrderRefundVos;
|
}
|
|
@Override
|
public IPage<AdminMallOrderRefundOperationVo> seeRefund(QueryRequest request, MallOrderRefund mallOrderRefund) {
|
Page<AdminMallOrderRefundOperationVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminMallOrderRefundOperationVo> adminMallOrderRefundOperationVos = mallOrderRefundOperationMapper.selectRefundOperationInPage(page, mallOrderRefund);
|
return adminMallOrderRefundOperationVos;
|
}
|
|
@Override
|
public FebsResponse agreeRefund(Long id) {
|
MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
|
if(ObjectUtil.isEmpty(mallOrderRefund)){
|
return new FebsResponse().fail().message("系统繁忙,请刷新重试");
|
}
|
Integer status = mallOrderRefund.getStatus();
|
if(status != 1){
|
return new FebsResponse().fail().message("申请记录不是已申请状态,请刷新页面");
|
}
|
mallOrderRefund.setStatus(5);
|
mallOrderRefundMapper.updateById(mallOrderRefund);
|
|
MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(mallOrderRefund.getOrderId());
|
mallOrderInfo.setStatus(6);
|
mallOrderInfoMapper.updateById(mallOrderInfo);
|
|
if(!"微信支付".equals(mallOrderInfo.getPayMethod()) && !"支付宝支付".equals(mallOrderInfo.getPayMethod())){
|
BigDecimal amount = mallOrderRefund.getAmount();
|
//用户钱包增加对应的余额
|
iApiMallMemberWalletService.addBalance(amount, mallOrderInfo.getMemberId());
|
|
mallMoneyFlowService.addMoneyFlow(mallOrderRefund.getMemberId(), amount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
|
}
|
|
MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
|
mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
|
mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
|
mallOrderRefundOperation.setContent("已同意退款不退货申请");
|
mallOrderRefundOperationMapper.insert(mallOrderRefundOperation);
|
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public FebsResponse disagreeRefund(Long id) {
|
MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
|
if(ObjectUtil.isEmpty(mallOrderRefund)){
|
return new FebsResponse().fail().message("系统繁忙,请刷新重试");
|
}
|
Integer status = mallOrderRefund.getStatus();
|
if(status != 1){
|
return new FebsResponse().fail().message("申请记录不是已申请状态,请刷新页面");
|
}
|
mallOrderRefund.setStatus(3);
|
mallOrderRefundMapper.updateById(mallOrderRefund);
|
|
MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
|
mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
|
mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
|
mallOrderRefundOperation.setContent("不同意退款申请");
|
mallOrderRefundOperationMapper.insert(mallOrderRefundOperation);
|
//恢复订单状态
|
MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(mallOrderRefund.getOrderId());
|
mallOrderInfo.setStatus(mallOrderRefund.getBeforeStatus());
|
mallOrderInfoMapper.updateById(mallOrderInfo);
|
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public FebsResponse refundConfirm(Long id) {
|
MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
|
if(ObjectUtil.isEmpty(mallOrderRefund)){
|
return new FebsResponse().fail().message("系统繁忙,请刷新重试");
|
}
|
Integer status = mallOrderRefund.getStatus();
|
if(status != 4){
|
return new FebsResponse().fail().message("申请记录不是已提交物流信息状态,请刷新页面");
|
}
|
mallOrderRefund.setStatus(5);
|
mallOrderRefundMapper.updateById(mallOrderRefund);
|
|
MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
|
mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
|
mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
|
mallOrderRefundOperation.setContent("已退款到用户账户");
|
mallOrderRefundOperationMapper.insert(mallOrderRefundOperation);
|
|
MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(mallOrderRefund.getOrderId());
|
if(ObjectUtil.isEmpty(mallOrderInfo)){
|
return new FebsResponse().fail().message("系统繁忙,请刷新重试");
|
}
|
mallOrderInfo.setStatus(6);
|
mallOrderInfoMapper.updateById(mallOrderInfo);
|
|
BigDecimal refundAmount = mallOrderRefund.getAmount();
|
//用户钱包增加对应的余额
|
iApiMallMemberWalletService.addBalance(refundAmount, mallOrderInfo.getMemberId());
|
|
//新增一条资金流水
|
mallMoneyFlowService.addMoneyFlow(mallOrderRefund.getMemberId(), refundAmount, MoneyFlowTypeEnum.REFUND.getValue(), mallOrderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue());
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public IPage<AdminMallOrderRefundAddressVo> getMallOrderRefundAddressInPage(MallOrderRefundAddressDto mallOrderRefundAddressDto, QueryRequest request) {
|
Page<AdminMallOrderRefundAddressVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminMallOrderRefundAddressVo> adminMallOrderRefundAddressVos = mallOrderRefundAddressMapper.getMallOrderRefundAddressInPage(page, mallOrderRefundAddressDto);
|
return adminMallOrderRefundAddressVos;
|
}
|
|
@Override
|
public AdminMallOrderRefundAddressVo getMallOrderRefundAddressInfoById(long id) {
|
AdminMallOrderRefundAddressVo AdminMallOrderRefundAddressVo = mallOrderRefundAddressMapper.getMallOrderRefundAddressInfoById(id);
|
return AdminMallOrderRefundAddressVo;
|
}
|
|
@Override
|
public FebsResponse addressUpdate(AddressUpdateDto addressUpdateDto) {
|
Long id = addressUpdateDto.getId();
|
MallOrderRefundAddress mallOrderRefundAddress = mallOrderRefundAddressMapper.selectById(id);
|
mallOrderRefundAddress.setName(addressUpdateDto.getName());
|
mallOrderRefundAddress.setPhone(addressUpdateDto.getPhone());
|
mallOrderRefundAddress.setAddress(addressUpdateDto.getAddress());
|
mallOrderRefundAddressMapper.updateById(mallOrderRefundAddress);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public FebsResponse deleteAddress(Long id) {
|
mallOrderRefundAddressMapper.deleteById(id);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public FebsResponse addAddress(AddAddressDto addAddressDto) {
|
MallOrderRefundAddress mallOrderRefundAddress = new MallOrderRefundAddress();
|
mallOrderRefundAddress.setName(addAddressDto.getName());
|
mallOrderRefundAddress.setPhone(addAddressDto.getPhone());
|
mallOrderRefundAddress.setAddress(addAddressDto.getAddress());
|
mallOrderRefundAddressMapper.insert(mallOrderRefundAddress);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public List<AdminAddAddressTreeVo> getRefundAddress() {
|
List<AdminAddAddressTreeVo> list = mallOrderRefundAddressMapper.getRefundAddress();
|
return list;
|
}
|
|
@Override
|
public FebsResponse withAddressUpdate(WithAddressUpdateDto withAddressUpdateDto) {
|
Long addressId = withAddressUpdateDto.getAddressId();
|
MallOrderRefundAddress mallOrderRefundAddress = mallOrderRefundAddressMapper.selectById(addressId);
|
|
MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(withAddressUpdateDto.getId());
|
if(ObjectUtil.isEmpty(mallOrderRefund)){
|
return new FebsResponse().fail().message("系统繁忙,请刷新重试");
|
}
|
Integer status = mallOrderRefund.getStatus();
|
if(status != 1){
|
return new FebsResponse().fail().message("申请记录不是已申请状态,请刷新页面");
|
}
|
mallOrderRefund.setStatus(2);
|
mallOrderRefund.setName(mallOrderRefundAddress.getName());
|
mallOrderRefund.setPhone(mallOrderRefundAddress.getPhone());
|
mallOrderRefund.setAddress(mallOrderRefundAddress.getAddress());
|
mallOrderRefundMapper.updateById(mallOrderRefund);
|
|
MallOrderRefundOperation mallOrderRefundOperation = new MallOrderRefundOperation();
|
mallOrderRefundOperation.setRefundId(mallOrderRefund.getId());
|
mallOrderRefundOperation.setOrderId(mallOrderRefund.getOrderId());
|
mallOrderRefundOperation.setContent("已同意退款退货申请");
|
mallOrderRefundOperationMapper.insert(mallOrderRefundOperation);
|
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public AdminMallOrderRefundVo getMallOrderRefundInfoById(long id) {
|
return mallOrderRefundMapper.getMallOrderRefundInfoById(id);
|
}
|
|
@Override
|
public IPage<AdminPayMethodVo> getPayMethodListInPage(PayMethodDto payMethodDto, QueryRequest request) {
|
payMethodDto.setType("PAYMENT_METHOD");
|
Page<AdminPayMethodVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminPayMethodVo> adminPayMethodVos = dataDictionaryCustomMapper.getPayMethodListInPage(page, payMethodDto);
|
return adminPayMethodVos;
|
}
|
|
@Override
|
public AdminMallPayMethodEditVo getMallPayMethodEditInfoById(long id) {
|
AdminMallPayMethodEditVo adminMallPayMethodEditVo = dataDictionaryCustomMapper.getMallPayMethodEditInfoById(id);
|
return adminMallPayMethodEditVo;
|
}
|
|
@Override
|
public FebsResponse payMethodEdit(PayMethodEditDto payMethodEditDto) {
|
DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectById(payMethodEditDto.getId());
|
if(ObjectUtil.isEmpty(dataDictionaryCustom)){
|
return new FebsResponse().fail().message("系统繁忙,请刷新重试");
|
}
|
dataDictionaryCustom.setValue(payMethodEditDto.getValue());
|
dataDictionaryCustomMapper.updateById(dataDictionaryCustom);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public FebsResponse cancelOrder(Long id) {
|
MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(id);
|
if(ObjectUtil.isEmpty(mallOrderInfo)){
|
return new FebsResponse().fail().message("系统繁忙,请刷新重试");
|
}
|
Integer status = mallOrderInfo.getStatus();
|
if(status != 2){
|
return new FebsResponse().fail().message("订单不是代发货状态");
|
}
|
mallOrderInfo.setStatus(7);
|
mallOrderInfoMapper.updateById(mallOrderInfo);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public AdminMallMemberPaymentVo getMallMemberRefundPayInfoByFlowId(long id) {
|
AdminMallMemberPaymentVo adminMallMemberPaymentVo = new AdminMallMemberPaymentVo();
|
MallOrderRefund mallOrderRefund = mallOrderRefundMapper.selectById(id);
|
AdminMallMemberPaymentVo adminMallMemberPaymentVoa = mallMemberPaymentMapper.getMallMemberPaymentInfoByMemberId(mallOrderRefund.getMemberId());
|
if(ObjectUtil.isNotEmpty(adminMallMemberPaymentVoa)){
|
adminMallMemberPaymentVo = adminMallMemberPaymentVoa;
|
}
|
return adminMallMemberPaymentVo;
|
}
|
|
@Override
|
public IPage<AdminMallGoodsCommentVo> getCommentListInPage(AdminMallGoodsCommentDto adminMallGoodsCommentDto, QueryRequest request) {
|
Page<AdminMallGoodsCommentVo> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<AdminMallGoodsCommentVo> adminMallGoodsCommentVos = mallGoodsCommentMapper.getCommentListInPage(page, adminMallGoodsCommentDto);
|
return adminMallGoodsCommentVos;
|
}
|
|
@Override
|
public FebsResponse showStateSwitchOn(Long id) {
|
MallGoodsComment mallGoodsComment = mallGoodsCommentMapper.selectById(id);
|
if (ObjectUtil.isEmpty(mallGoodsComment)) {
|
return new FebsResponse().fail().message("评论不存在,请刷新当前页面");
|
}
|
mallGoodsComment.setShowState(MallGoodsComment.SHOW_STATE_ENABLE);
|
mallGoodsCommentMapper.updateById(mallGoodsComment);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public FebsResponse showStateSwitchOff(Long id) {
|
MallGoodsComment mallGoodsComment = mallGoodsCommentMapper.selectById(id);
|
if (ObjectUtil.isEmpty(mallGoodsComment)) {
|
return new FebsResponse().fail().message("评论不存在,请刷新当前页面");
|
}
|
mallGoodsComment.setShowState(MallGoodsComment.SHOW_STATE_DISABLED);
|
mallGoodsCommentMapper.updateById(mallGoodsComment);
|
return new FebsResponse().success();
|
}
|
|
@Override
|
public void updateOrderStateAndDeliveryState(Long id, int value, int value1) {
|
mallOrderInfoMapper.updateOrderStateAndDeliveryState(id,value,value1);
|
}
|
|
@Override
|
public IPage<MallRefundEntity> getOrderRefundListInPage(MallRefundEntity mallRefundEntity, QueryRequest request) {
|
Page<MallRefundEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
|
IPage<MallRefundEntity> mallRefundEntityIPage = mallRefundMapper.getOrderRefundListInPage(page, mallRefundEntity);
|
List<MallRefundEntity> records = mallRefundEntityIPage.getRecords();
|
if(CollUtil.isNotEmpty(records)){
|
for(MallRefundEntity mallRefundEntityPic : records){
|
String refundPic = mallRefundEntityPic.getRefundPic();
|
if(StrUtil.isNotEmpty(refundPic)){
|
String[] split = StrUtil.split(refundPic, ",");
|
mallRefundEntityPic.setRefundPicList(split);
|
}
|
}
|
}
|
return mallRefundEntityIPage;
|
}
|
|
@Override
|
public void deliverGoodsByOrderNo(DeliverGoodsDto deliverGoodsDto) {
|
MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectByOrderNo(deliverGoodsDto.getOrderNo());
|
if (mallOrderInfo == null) {
|
return;
|
}
|
|
MallExpressInfo mallExpressInfo = new MallExpressInfo();
|
mallExpressInfo.setMemberId(mallOrderInfo.getMemberId());
|
mallExpressInfo.setOrderId(mallOrderInfo.getId());
|
mallExpressInfo.setExpressNo(deliverGoodsDto.getExpressNo());
|
mallExpressInfo.setExpressCom(deliverGoodsDto.getExpressCom());
|
mallExpressInfo.setExpressCode(deliverGoodsDto.getExpressCode());
|
mallExpressInfoMapper.insert(mallExpressInfo);
|
|
mallOrderInfo.setStatus(3);
|
mallOrderInfoMapper.updateById(mallOrderInfo);
|
}
|
}
|