doum
11 小时以前 11e35e0257e48667292b4f563ddf6ce02a3a22bb
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -1205,6 +1205,10 @@
        goodsorder.setCancelInfo(cancelInfo);
        goodsorder.setCancelUser(optUserId);
        goodsorderMapper.updateById(goodsorder);
        if(Constants.equalsInteger(goodsorder.getReceiveType(),Constants.ONE)){
            //释放核销码
            this.releaseExchangeCode(goodsorder.getExchangeCode());
        }
        String goodsName = "";
        List<GoodsorderDetail> goodsorderDetailList =  goodsorderDetailMapper.selectList(new QueryWrapper<GoodsorderDetail>().eq("ORDER_ID",goodsorder.getId()));
        if(!Objects.isNull(goodsorderDetailList)&&goodsorderDetailList.size()>Constants.ZERO){
@@ -1282,6 +1286,10 @@
        goodsorder.setCancelInfo(StringUtils.isBlank(cancelInfo)?"用户主动取消":cancelInfo);
        goodsorder.setCancelUser(optUserId);
        goodsorderMapper.updateById(goodsorder);
        if(Constants.equalsInteger(goodsorder.getReceiveType(),Constants.ONE)){
            //释放核销码
            this.releaseExchangeCode(goodsorder.getExchangeCode());
        }
        String goodsName = "";
        List<GoodsorderDetail> goodsorderDetailList =  goodsorderDetailMapper.selectList(new QueryWrapper<GoodsorderDetail>().eq("ORDER_ID",goodsorder.getId()));
        if(!Objects.isNull(goodsorderDetailList)&&goodsorderDetailList.size()>Constants.ZERO){
@@ -1311,8 +1319,6 @@
                memberCouponMapper.updateById(memberCoupon);
            }
        }
    }
    public BigDecimal getDeductAmount(List<PayDetailRequest> requestList){
@@ -1701,6 +1707,9 @@
            List<MemberCoupon> memberCouponList = new ArrayList<>();
            List<CouponNoticeRequest> requestList = new ArrayList<>();
            for (JSONObject jsonObject:shareCouponRewardList) {
                if(!jsonObject.containsKey("couponId")||!jsonObject.containsKey("num")){
                    continue;
                }
                Integer couponId = jsonObject.getInteger("couponId");
                Integer num = jsonObject.getInteger("num");
                Coupon coupon =  couponMapper.selectById(couponId);
@@ -1709,6 +1718,10 @@
                }
                MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,inviteMember,new Date(),Constants.ONE,null);
                for (int i = 0; i < num; i++) {
                    //满减卷不会生成maxPrice 需要根据优惠券减少金额设置
                    if(Constants.equalsInteger(coupon.getCouponType(),Constants.ZERO)){
                        memberCoupon.setMaxPrice(coupon.getPrice());
                    }
                    memberCouponList.add(memberCoupon);
                }
                couponIds = couponIds + (StringUtils.isBlank(couponIds)? ",":"" )+ couponId ;
@@ -1770,6 +1783,8 @@
        goodsorder.setStatus(Constants.OrderStatus.DONE.getKey());
        goodsorder.setDoneDate(new Date());
        goodsorderMapper.updateById(goodsorder);
        //释放核销码
        this.releaseExchangeCode(goodsorder.getExchangeCode());
        //存在现金支付 赠送 积分
        if(Constants.equalsInteger(goodsorder.getPayMethod(),Constants.ZERO)){
            //赠送消费者积分
@@ -1904,8 +1919,6 @@
        if(!goodsorder.getStatus().equals(Constants.OrderStatus.DONE.getKey())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:订单未完成,无法退款!");
        }
    }
@@ -2215,4 +2228,39 @@
    @Override
    public String createExchangeCode(){
        List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
                .eq(Goodsorder::getIsdeleted,Constants.ZERO)
                .eq(Goodsorder::getReceiveType,Constants.ONE)
                .in(Goodsorder::getStatus,Constants.OrderStatus.WAIT_RECEIVE.getKey(),
                Constants.OrderStatus.WAIT_PAY.getKey(),
                Constants.OrderStatus.PAY_DONE.getKey())
        );
        String exchangeCode = UniqueVerificationCodeGenerator.generateNumericCode();
        if(CollectionUtils.isNotEmpty(goodsorderList)){
            Boolean flag = true;
            while (flag){
                String finalExchangeCode = exchangeCode;
                flag = goodsorderList.stream().filter(i->i.getExchangeCode().equals(finalExchangeCode)).count()>0L?true:false;
                if(flag){
                    exchangeCode = UniqueVerificationCodeGenerator.generateNumericCode();
                }
            }
        }
        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.EXCHANGE_KEY+exchangeCode,exchangeCode);
        return exchangeCode;
    }
    /**
     * 释放核销码
     * @param code
     */
    public void releaseExchangeCode(String code){
        if(StringUtils.isNotBlank(code)){
            RedisUtil.deleteObject(redisTemplate,Constants.RedisKeys.EXCHANGE_KEY+code);
        }
    }
}