mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 04:08:43 +08:00 
			
		
		
		
	【代码评审】商城:满减送订单
This commit is contained in:
		@@ -36,20 +36,23 @@ public interface CouponApi {
 | 
			
		||||
     */
 | 
			
		||||
    CouponRespDTO validateCoupon(@Valid CouponValidReqDTO validReqDTO);
 | 
			
		||||
 | 
			
		||||
    // TODO @puhui999:可能需要根据 TradeOrderDO 的建议,进行修改;需要返回优惠劵编号
 | 
			
		||||
    /**
 | 
			
		||||
     * 【管理员】给指定用户批量发送优惠券
 | 
			
		||||
     *
 | 
			
		||||
     * @param giveCouponsMap  key: 优惠劵编号,value:对应的优惠券数量
 | 
			
		||||
     * @param userId      用户编号
 | 
			
		||||
     */
 | 
			
		||||
    // TODO @puhui999:giveCouponsMap 可能改成 giveCoupons 更合适?优惠劵模版编号、数量
 | 
			
		||||
    void takeCouponsByAdmin(Map<Long, Integer> giveCouponsMap, Long userId);
 | 
			
		||||
 | 
			
		||||
    // TODO @puhui999:可能需要根据 TradeOrderDO 的建议,进行修改 giveCouponsMap 参数
 | 
			
		||||
    /**
 | 
			
		||||
     * 【管理员】收回给指定用户批量发送优惠券
 | 
			
		||||
     * 【管理员】作废指定用户的指定优惠劵
 | 
			
		||||
     *
 | 
			
		||||
     * @param giveCouponsMap key: 优惠劵编号,value:对应的优惠券数量
 | 
			
		||||
     * @param userId         用户编号
 | 
			
		||||
     */
 | 
			
		||||
    void takeBackCouponsByAdmin(Map<Long, Integer> giveCouponsMap, Long userId);
 | 
			
		||||
    void invalidateCouponsByAdmin(Map<Long, Integer> giveCouponsMap, Long userId);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -86,6 +86,7 @@ public class RewardActivityMatchRespDTO {
 | 
			
		||||
         * 是否包邮
 | 
			
		||||
         */
 | 
			
		||||
        private Boolean freeDelivery;
 | 
			
		||||
        // TODO @puhui999:建议不返回 + 去掉 givePoint、giveCoupon 字段哈。
 | 
			
		||||
        /**
 | 
			
		||||
         * 是否赠送积分
 | 
			
		||||
         */
 | 
			
		||||
@@ -98,10 +99,12 @@ public class RewardActivityMatchRespDTO {
 | 
			
		||||
         * 是否赠送优惠券
 | 
			
		||||
         */
 | 
			
		||||
        private Boolean giveCoupon;
 | 
			
		||||
        // TODO @puhui999:giveCoupons 即可
 | 
			
		||||
        /**
 | 
			
		||||
         * 赠送的优惠劵
 | 
			
		||||
         *
 | 
			
		||||
         *  key: 优惠劵编号,value:对应的优惠券数量
 | 
			
		||||
         * key: 优惠劵模版编号
 | 
			
		||||
         * value:对应的优惠券数量
 | 
			
		||||
         */
 | 
			
		||||
        private Map<Long, Integer> giveCouponsMap;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,7 @@ public enum CouponStatusEnum implements IntArrayValuable {
 | 
			
		||||
    UNUSED(1, "未使用"),
 | 
			
		||||
    USED(2, "已使用"),
 | 
			
		||||
    EXPIRE(3, "已过期"),
 | 
			
		||||
    // TODO @puhui999:捉摸了下,貌似搞成逻辑删除好了?不然好多地方的 status 都要做一些变动。可能未来加个 invalidateType 来标识,是管理后台删除,还是取消回收。或者优惠劵的 change log 可能更好。
 | 
			
		||||
    INVALID(4, "已作废");
 | 
			
		||||
 | 
			
		||||
    public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(CouponStatusEnum::getStatus).toArray();
 | 
			
		||||
 
 | 
			
		||||
@@ -48,8 +48,8 @@ public class CouponApiImpl implements CouponApi {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void takeBackCouponsByAdmin(Map<Long, Integer> giveCouponsMap, Long userId) {
 | 
			
		||||
        couponService.takeBackCouponsByAdmin(giveCouponsMap, userId);
 | 
			
		||||
    public void invalidateCouponsByAdmin(Map<Long, Integer> giveCouponsMap, Long userId) {
 | 
			
		||||
        couponService.invalidateCouponsByAdmin(giveCouponsMap, userId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -119,7 +119,7 @@ public interface CouponService {
 | 
			
		||||
     * @param giveCouponsMap key: 优惠劵编号,value:对应的优惠券数量
 | 
			
		||||
     * @param userId         用户编号
 | 
			
		||||
     */
 | 
			
		||||
    void takeBackCouponsByAdmin(Map<Long, Integer> giveCouponsMap, Long userId);
 | 
			
		||||
    void invalidateCouponsByAdmin(Map<Long, Integer> giveCouponsMap, Long userId);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 【会员】领取优惠券
 | 
			
		||||
 
 | 
			
		||||
@@ -198,7 +198,7 @@ public class CouponServiceImpl implements CouponService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void takeBackCouponsByAdmin(Map<Long, Integer> giveCouponsMap, Long userId) {
 | 
			
		||||
    public void invalidateCouponsByAdmin(Map<Long, Integer> giveCouponsMap, Long userId) {
 | 
			
		||||
        // 循环收回
 | 
			
		||||
        for (Map.Entry<Long, Integer> entry : giveCouponsMap.entrySet()) {
 | 
			
		||||
            try {
 | 
			
		||||
 
 | 
			
		||||
@@ -294,10 +294,13 @@ public class TradeOrderDO extends BaseDO {
 | 
			
		||||
     */
 | 
			
		||||
    private Integer vipPrice;
 | 
			
		||||
 | 
			
		||||
    // TODO @puhui999:项了下,貌似这里存储 List<Long> giveCouponIds 更合适。因为优惠劵赠送到最后是对应的编号,然后从而进行取消?
 | 
			
		||||
    /**
 | 
			
		||||
     * 赠送的优惠劵
 | 
			
		||||
     *
 | 
			
		||||
     *  key: 优惠劵编号,value:对应的优惠券数量
 | 
			
		||||
     * key: 优惠劵编号
 | 
			
		||||
     * value:对应的优惠券数量
 | 
			
		||||
     *
 | 
			
		||||
     * 目的:用于后续取消或者售后订单时,需要扣减赠送
 | 
			
		||||
     */
 | 
			
		||||
    @TableField(typeHandler = JacksonTypeHandler.class)
 | 
			
		||||
 
 | 
			
		||||
@@ -51,7 +51,7 @@ public class TradeCouponOrderHandler implements TradeOrderHandler {
 | 
			
		||||
        if (CollUtil.isEmpty(order.getGiveCouponsMap())) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        couponApi.takeBackCouponsByAdmin(order.getGiveCouponsMap(), order.getUserId());
 | 
			
		||||
        couponApi.invalidateCouponsByAdmin(order.getGiveCouponsMap(), order.getUserId());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user