mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-08-13 01:31:53 +08:00
Merge branch 'feature/mall_product' of https://gitee.com/CrazyWorld/ruoyi-vue-pro into feature/mall_product
# Conflicts: # yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
package cn.iocoder.yudao.module.trade.api.aftersale;
|
||||
|
||||
import cn.iocoder.yudao.module.trade.api.aftersale.dto.AfterSaleSummaryRespDTO;
|
||||
import cn.iocoder.yudao.module.trade.service.aftersale.AfterSaleService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 售后 API 接口实现类
|
||||
*
|
||||
* @author owen
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class TradeAfterSaleApiImpl implements TradeAfterSaleApi {
|
||||
|
||||
@Resource
|
||||
private AfterSaleService afterSaleService;
|
||||
|
||||
@Override
|
||||
public AfterSaleSummaryRespDTO getAfterSaleSummary(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
return afterSaleService.getAfterSaleSummary(beginTime, endTime);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,27 @@
|
||||
package cn.iocoder.yudao.module.trade.api.brokerage;
|
||||
|
||||
import cn.iocoder.yudao.module.trade.service.brokerage.BrokerageRecordService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 订单 API 接口实现类
|
||||
*
|
||||
* @author HUIHUI
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class TradeBrokerageApiImpl implements TradeBrokerageApi {
|
||||
|
||||
@Resource
|
||||
private BrokerageRecordService brokerageRecordService;
|
||||
|
||||
@Override
|
||||
public Integer getBrokerageSettlementPriceSummary(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
return brokerageRecordService.getBrokerageSettlementPriceSummary(beginTime, endTime);
|
||||
}
|
||||
|
||||
}
|
@@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.trade.api.order;
|
||||
|
||||
import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderSummaryRespDTO;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
|
||||
import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -7,6 +8,8 @@ import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.ORDER_NOT_FOUND;
|
||||
|
||||
@@ -31,4 +34,9 @@ public class TradeOrderApiImpl implements TradeOrderApi {
|
||||
return order.getStatus();
|
||||
}
|
||||
|
||||
@Override
|
||||
public TradeOrderSummaryRespDTO getOrderSummary(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
return tradeOrderQueryService.getOrderSummary(beginTime, endTime);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -126,6 +126,12 @@ public class TradeOrderController {
|
||||
return success(true);
|
||||
}
|
||||
|
||||
// TODO :核销逻辑
|
||||
@PutMapping("/pick-up")
|
||||
@Operation(summary = "订单核销")
|
||||
@PreAuthorize("@ss.hasPermission('trade:order:pick-up')")
|
||||
public CommonResult<Boolean> pickUpOrder(@RequestParam("id") Long id) {
|
||||
tradeOrderUpdateService.pickUpOrder(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -40,6 +40,9 @@ public class TradeOrderPageReqVO extends PageParam {
|
||||
@Schema(description = "自提门店编号", example = "[1,2]")
|
||||
private List<Long> pickUpStoreIds;
|
||||
|
||||
@Schema(description = "自提核销码", example = "12345678")
|
||||
private String pickUpVerifyCode;
|
||||
|
||||
@Schema(description = "订单类型", example = "1")
|
||||
private Integer type;
|
||||
|
||||
|
@@ -113,6 +113,9 @@ public class AppTradeOrderDetailRespVO {
|
||||
@Schema(description = "自提门店编号", example = "1088")
|
||||
private Long pickUpStoreId;
|
||||
|
||||
@Schema(description = "自提核销码", example = "40964096")
|
||||
private String pickUpVerifyCode;
|
||||
|
||||
// ========== 售后基本信息 ==========
|
||||
|
||||
// ========== 营销基本信息 ==========
|
||||
|
@@ -1,14 +1,19 @@
|
||||
package cn.iocoder.yudao.module.trade.dal.mysql.aftersale;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.trade.api.aftersale.dto.AfterSaleSummaryRespDTO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSalePageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.aftersale.AfterSaleDO;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.github.yulichang.toolkit.MPJWrappers;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
|
||||
@Mapper
|
||||
@@ -48,4 +53,12 @@ public interface AfterSaleMapper extends BaseMapperX<AfterSaleDO> {
|
||||
.in(AfterSaleDO::getStatus, statuses));
|
||||
}
|
||||
|
||||
default AfterSaleSummaryRespDTO selectSummaryByRefundTimeBetween(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
return BeanUtil.copyProperties(CollUtil.get(selectMaps(MPJWrappers.<AfterSaleDO>lambdaJoin()
|
||||
.selectCount(AfterSaleDO::getId, AfterSaleSummaryRespDTO::getAfterSaleCount)
|
||||
.selectSum(AfterSaleDO::getRefundPrice, AfterSaleSummaryRespDTO::getAfterSaleRefundPrice)
|
||||
.between(AfterSaleDO::getRefundTime, beginTime, endTime)), 0),
|
||||
AfterSaleSummaryRespDTO.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,6 +1,8 @@
|
||||
package cn.iocoder.yudao.module.trade.dal.mysql.brokerage;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -108,4 +110,14 @@ public interface BrokerageRecordMapper extends BaseMapperX<BrokerageRecordDO> {
|
||||
@Param("status") Integer status,
|
||||
@Param("beginTime") LocalDateTime beginTime,
|
||||
@Param("endTime") LocalDateTime endTime);
|
||||
|
||||
default Integer selectSummaryPriceByStatusAndUnfreezeTimeBetween(Integer bizType, Integer status,
|
||||
LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
return Convert.toInt(CollUtil.getFirst(selectObjs(MPJWrappers.<BrokerageRecordDO>lambdaJoin()
|
||||
.selectSum(BrokerageRecordDO::getPrice)
|
||||
.eq(BrokerageRecordDO::getBizType, bizType)
|
||||
.eq(BrokerageRecordDO::getStatus, status)
|
||||
.between(BrokerageRecordDO::getUnfreezeTime, beginTime, endTime))), 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,12 +1,16 @@
|
||||
package cn.iocoder.yudao.module.trade.dal.mysql.order;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderSummaryRespDTO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.github.yulichang.toolkit.MPJWrappers;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
@@ -37,6 +41,7 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
||||
.eqIfPresent(TradeOrderDO::getTerminal, reqVO.getTerminal())
|
||||
.eqIfPresent(TradeOrderDO::getLogisticsId, reqVO.getLogisticsId())
|
||||
.inIfPresent(TradeOrderDO::getPickUpStoreId, reqVO.getPickUpStoreIds())
|
||||
.likeIfPresent(TradeOrderDO::getPickUpVerifyCode, reqVO.getPickUpVerifyCode())
|
||||
.betweenIfPresent(TradeOrderDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(TradeOrderDO::getId));
|
||||
}
|
||||
@@ -88,4 +93,21 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
|
||||
.eq(TradeOrderDO::getSeckillActivityId, seckillActivityId));
|
||||
}
|
||||
|
||||
default TradeOrderSummaryRespDTO selectSummaryByPayTimeBetween(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
return BeanUtil.copyProperties(CollUtil.get(selectMaps(MPJWrappers.<TradeOrderDO>lambdaJoin()
|
||||
.selectCount(TradeOrderDO::getId, TradeOrderSummaryRespDTO::getOrderPayCount)
|
||||
.selectSum(TradeOrderDO::getPayPrice, TradeOrderSummaryRespDTO::getOrderPayPrice)
|
||||
.between(TradeOrderDO::getPayTime, beginTime, endTime)), 0),
|
||||
TradeOrderSummaryRespDTO.class);
|
||||
}
|
||||
|
||||
default Long selectCountByCreateTimeBetween(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
return selectCount(new LambdaQueryWrapperX<TradeOrderDO>()
|
||||
.between(TradeOrderDO::getCreateTime, beginTime, endTime));
|
||||
}
|
||||
|
||||
default TradeOrderDO selectOneByPickUpVerifyCode(String pickUpVerifyCode) {
|
||||
return selectOne(TradeOrderDO::getPickUpVerifyCode, pickUpVerifyCode);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.trade.service.aftersale;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.trade.api.aftersale.dto.AfterSaleSummaryRespDTO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleDisagreeReqVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSalePageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleRefuseReqVO;
|
||||
@@ -9,6 +10,8 @@ import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppAfterSaleCre
|
||||
import cn.iocoder.yudao.module.trade.controller.app.aftersale.vo.AppAfterSaleDeliveryReqVO;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.aftersale.AfterSaleDO;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 售后订单 Service 接口
|
||||
*
|
||||
@@ -27,7 +30,7 @@ public interface AfterSaleService {
|
||||
/**
|
||||
* 【会员】获得售后订单分页
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param userId 用户编号
|
||||
* @param pageParam 分页参数
|
||||
* @return 售后订单分页
|
||||
*/
|
||||
@@ -37,7 +40,7 @@ public interface AfterSaleService {
|
||||
* 【会员】获得售后单
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param id 售后编号
|
||||
* @param id 售后编号
|
||||
* @return 售后订单
|
||||
*/
|
||||
AfterSaleDO getAfterSale(Long userId, Long id);
|
||||
@@ -53,7 +56,7 @@ public interface AfterSaleService {
|
||||
/**
|
||||
* 【会员】创建售后订单
|
||||
*
|
||||
* @param userId 会员用户编号
|
||||
* @param userId 会员用户编号
|
||||
* @param createReqVO 创建 Request 信息
|
||||
* @return 售后编号
|
||||
*/
|
||||
@@ -63,14 +66,14 @@ public interface AfterSaleService {
|
||||
* 【管理员】同意售后订单
|
||||
*
|
||||
* @param userId 管理员用户编号
|
||||
* @param id 售后编号
|
||||
* @param id 售后编号
|
||||
*/
|
||||
void agreeAfterSale(Long userId, Long id);
|
||||
|
||||
/**
|
||||
* 【管理员】拒绝售后订单
|
||||
*
|
||||
* @param userId 管理员用户编号
|
||||
* @param userId 管理员用户编号
|
||||
* @param auditReqVO 审批 Request 信息
|
||||
*/
|
||||
void disagreeAfterSale(Long userId, AfterSaleDisagreeReqVO auditReqVO);
|
||||
@@ -78,7 +81,7 @@ public interface AfterSaleService {
|
||||
/**
|
||||
* 【会员】退回货物
|
||||
*
|
||||
* @param userId 会员用户编号
|
||||
* @param userId 会员用户编号
|
||||
* @param deliveryReqVO 退货 Request 信息
|
||||
*/
|
||||
void deliveryAfterSale(Long userId, AppAfterSaleDeliveryReqVO deliveryReqVO);
|
||||
@@ -87,14 +90,14 @@ public interface AfterSaleService {
|
||||
* 【管理员】确认收货
|
||||
*
|
||||
* @param userId 管理员编号
|
||||
* @param id 售后编号
|
||||
* @param id 售后编号
|
||||
*/
|
||||
void receiveAfterSale(Long userId, Long id);
|
||||
|
||||
/**
|
||||
* 【管理员】拒绝收货
|
||||
*
|
||||
* @param userId 管理员用户编号
|
||||
* @param userId 管理员用户编号
|
||||
* @param refuseReqVO 拒绝收货 Request 信息
|
||||
*/
|
||||
void refuseAfterSale(Long userId, AfterSaleRefuseReqVO refuseReqVO);
|
||||
@@ -104,7 +107,7 @@ public interface AfterSaleService {
|
||||
*
|
||||
* @param userId 管理员用户编号
|
||||
* @param userIp 管理员用户 IP
|
||||
* @param id 售后编号
|
||||
* @param id 售后编号
|
||||
*/
|
||||
void refundAfterSale(Long userId, String userIp, Long id);
|
||||
|
||||
@@ -112,7 +115,7 @@ public interface AfterSaleService {
|
||||
* 【会员】取消售后
|
||||
*
|
||||
* @param userId 会员用户编号
|
||||
* @param id 售后编号
|
||||
* @param id 售后编号
|
||||
*/
|
||||
void cancelAfterSale(Long userId, Long id);
|
||||
|
||||
@@ -124,4 +127,13 @@ public interface AfterSaleService {
|
||||
*/
|
||||
Long getApplyingAfterSaleCount(Long userId);
|
||||
|
||||
/**
|
||||
* 获取售后单统计
|
||||
*
|
||||
* @param beginTime 起始时间
|
||||
* @param endTime 截止时间
|
||||
* @return 售后统计结果
|
||||
*/
|
||||
AfterSaleSummaryRespDTO getAfterSaleSummary(LocalDateTime beginTime, LocalDateTime endTime);
|
||||
|
||||
}
|
||||
|
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
|
||||
import cn.iocoder.yudao.module.pay.api.refund.PayRefundApi;
|
||||
import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundCreateReqDTO;
|
||||
import cn.iocoder.yudao.module.trade.api.aftersale.dto.AfterSaleSummaryRespDTO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleDisagreeReqVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSalePageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.aftersale.vo.AfterSaleRefuseReqVO;
|
||||
@@ -410,4 +411,9 @@ public class AfterSaleServiceImpl implements AfterSaleService {
|
||||
return tradeAfterSaleMapper.selectCountByUserIdAndStatus(userId, AfterSaleStatusEnum.APPLYING_STATUSES);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AfterSaleSummaryRespDTO getAfterSaleSummary(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
return tradeAfterSaleMapper.selectSummaryByRefundTimeBetween(beginTime,endTime);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -156,4 +156,13 @@ public interface BrokerageRecordService {
|
||||
*/
|
||||
AppBrokerageProductPriceRespVO calculateProductBrokeragePrice(Long userId, Long spuId);
|
||||
|
||||
/**
|
||||
* 获取已结算的佣金金额
|
||||
*
|
||||
* @param beginTime 起始时间
|
||||
* @param endTime 截止时间
|
||||
* @return 已结算的佣金金额
|
||||
*/
|
||||
Integer getBrokerageSettlementPriceSummary(LocalDateTime beginTime, LocalDateTime endTime);
|
||||
|
||||
}
|
||||
|
@@ -356,6 +356,13 @@ public class BrokerageRecordServiceImpl implements BrokerageRecordService {
|
||||
return respVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getBrokerageSettlementPriceSummary(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
return brokerageRecordMapper.selectSummaryPriceByStatusAndUnfreezeTimeBetween(
|
||||
BrokerageRecordBizTypeEnum.ORDER.getType(), BrokerageRecordStatusEnum.SETTLEMENT.getStatus(),
|
||||
beginTime, endTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得自身的代理对象,解决 AOP 生效问题
|
||||
*
|
||||
|
@@ -1,12 +1,14 @@
|
||||
package cn.iocoder.yudao.module.trade.service.order;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderSummaryRespDTO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
|
||||
import cn.iocoder.yudao.module.trade.framework.delivery.core.client.dto.ExpressTrackRespDTO;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@@ -33,7 +35,7 @@ public interface TradeOrderQueryService {
|
||||
* 获得指定用户,指定的交易订单
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param id 交易订单编号
|
||||
* @param id 交易订单编号
|
||||
* @return 交易订单
|
||||
*/
|
||||
TradeOrderDO getOrder(Long userId, Long id);
|
||||
@@ -50,7 +52,7 @@ public interface TradeOrderQueryService {
|
||||
* 【会员】获得交易订单分页
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param reqVO 分页请求
|
||||
* @param reqVO 分页请求
|
||||
* @return 交易订单
|
||||
*/
|
||||
PageResult<TradeOrderDO> getOrderPage(Long userId, AppTradeOrderPageReqVO reqVO);
|
||||
@@ -68,7 +70,7 @@ public interface TradeOrderQueryService {
|
||||
/**
|
||||
* 【前台】获得订单的物流轨迹
|
||||
*
|
||||
* @param id 订单编号
|
||||
* @param id 订单编号
|
||||
* @param userId 用户编号
|
||||
* @return 物流轨迹数组
|
||||
*/
|
||||
@@ -128,4 +130,13 @@ public interface TradeOrderQueryService {
|
||||
*/
|
||||
List<TradeOrderItemDO> getOrderItemListByOrderId(Collection<Long> orderIds);
|
||||
|
||||
/**
|
||||
* 获取订单统计
|
||||
*
|
||||
* @param beginTime 起始时间
|
||||
* @param endTime 截止时间
|
||||
* @return 订单统计结果
|
||||
*/
|
||||
TradeOrderSummaryRespDTO getOrderSummary(LocalDateTime beginTime, LocalDateTime endTime);
|
||||
|
||||
}
|
||||
|
@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
|
||||
import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
|
||||
import cn.iocoder.yudao.module.trade.api.order.dto.TradeOrderSummaryRespDTO;
|
||||
import cn.iocoder.yudao.module.trade.controller.admin.order.vo.TradeOrderPageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderPageReqVO;
|
||||
import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
|
||||
@@ -21,6 +22,7 @@ import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
@@ -156,6 +158,14 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
|
||||
.setPhone(order.getReceiverMobile()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public TradeOrderSummaryRespDTO getOrderSummary(LocalDateTime beginTime, LocalDateTime endTime) {
|
||||
TradeOrderSummaryRespDTO dto = tradeOrderMapper.selectSummaryByPayTimeBetween(beginTime, endTime);
|
||||
dto.setOrderCreateCount(tradeOrderMapper.selectCountByCreateTimeBetween(beginTime, endTime));
|
||||
return dto;
|
||||
}
|
||||
|
||||
|
||||
// =================== Order Item ===================
|
||||
|
||||
@Override
|
||||
|
@@ -115,6 +115,20 @@ public interface TradeOrderUpdateService {
|
||||
*/
|
||||
void updateOrderAddress(TradeOrderUpdateAddressReqVO reqVO);
|
||||
|
||||
/**
|
||||
* 【管理员】核销订单
|
||||
*
|
||||
* @param id 订单编号
|
||||
*/
|
||||
void pickUpOrder(Long id);
|
||||
|
||||
/**
|
||||
* 【管理员】核销订单
|
||||
*
|
||||
* @param pickUpVerifyCode 自提核销码
|
||||
*/
|
||||
void pickUpOrder(String pickUpVerifyCode);
|
||||
|
||||
// =================== Order Item ===================
|
||||
|
||||
/**
|
||||
|
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.trade.service.order;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
@@ -233,7 +234,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
order.setReceiverName(createReqVO.getReceiverName()).setReceiverMobile(createReqVO.getReceiverMobile());
|
||||
order.setPickUpVerifyCode(RandomUtil.randomNumbers(8)); // 随机一个核销码,长度为 8 位
|
||||
}
|
||||
// TODO @疯狂:是不是可以在这里设置下推广人哈;
|
||||
// 设置订单推广人
|
||||
BrokerageUserDO brokerageUser = brokerageUserService.getBrokerageUser(order.getUserId());
|
||||
if (brokerageUser != null && brokerageUser.getBindUserId() != null) {
|
||||
order.setBrokerageUserId(brokerageUser.getBindUserId());
|
||||
}
|
||||
return order;
|
||||
}
|
||||
|
||||
@@ -294,12 +299,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
// 6. 插入订单日志
|
||||
TradeOrderLogUtils.setOrderInfo(order.getId(), null, order.getStatus());
|
||||
|
||||
// 7. 设置订单推广人
|
||||
BrokerageUserDO brokerageUser = brokerageUserService.getBrokerageUser(order.getUserId());
|
||||
if (brokerageUser != null && brokerageUser.getBindUserId() != null) {
|
||||
tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setBrokerageUserId(brokerageUser.getBindUserId()));
|
||||
}
|
||||
|
||||
// TODO @LeeYan9: 是可以思考下, 订单的营销优惠记录, 应该记录在哪里, 微信讨论起来!
|
||||
}
|
||||
|
||||
@@ -751,6 +750,29 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
||||
// TODO @puhui999:操作日志
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pickUpOrder(Long id) {
|
||||
getSelf().pickUpOrder(tradeOrderMapper.selectById(id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pickUpOrder(String pickUpVerifyCode) {
|
||||
getSelf().pickUpOrder(tradeOrderMapper.selectOneByPickUpVerifyCode(pickUpVerifyCode));
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@TradeOrderLog(operateType = TradeOrderOperateTypeEnum.PICK_UP_RECEIVE)
|
||||
public void pickUpOrder(TradeOrderDO order) {
|
||||
if (order == null) {
|
||||
throw exception(ORDER_NOT_FOUND);
|
||||
}
|
||||
if (ObjUtil.notEqual(DeliveryTypeEnum.PICK_UP.getType(), order.getDeliveryType())) {
|
||||
throw exception(ORDER_RECEIVE_FAIL_DELIVERY_TYPE_NOT_PICK_UP);
|
||||
}
|
||||
// todo 校验核销操作人?
|
||||
receiveOrder0(order);
|
||||
}
|
||||
|
||||
// =================== Order Item ===================
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user