rk
11 小时以前 b1dbef13075c3a6fea62e41db4cdcd7334e1e92b
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -507,6 +507,9 @@
        queryWrapper.le(pageWrap.getModel().getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getModel().getEndtime());
        queryWrapper.eq(pageWrap.getModel().getReceiveType()!=null,Goodsorder::getReceiveType,pageWrap.getModel().getReceiveType());
        queryWrapper.eq(pageWrap.getModel().getPayOrderId()!=null,Goodsorder::getPayOrderId,pageWrap.getModel().getPayOrderId());
        if (StringUtils.isNotBlank(pageWrap.getModel().getGoodsName())) {
            queryWrapper.exists("select gs.id  from goodsorder_detail gs  where gs.order_id=t.id and gs.isdeleted=0 and gs.NAME like '%"+pageWrap.getModel().getGoodsName()+"%' ");
        }
    }
@@ -1202,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){
@@ -1279,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){
@@ -1308,8 +1319,6 @@
                memberCouponMapper.updateById(memberCoupon);
            }
        }
    }
    public BigDecimal getDeductAmount(List<PayDetailRequest> requestList){
@@ -1698,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);
@@ -1705,14 +1717,11 @@
                    continue;
                }
                MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,inviteMember,new Date(),Constants.ONE,null);
                if(Constants.equalsInteger(memberCoupon.getCouponType(),Constants.ZERO)){
                    memberCoupon.setMaxPrice(memberCoupon.getPrice());
                }else if(Constants.equalsInteger(memberCoupon.getCouponType(),Constants.ONE)){
                    memberCoupon.setMaxPrice(memberCoupon.getLimitPrice().subtract(memberCoupon.getLimitPrice().multiply(memberCoupon.getPrice()).divide(new BigDecimal("100"),2, RoundingMode.HALF_UP)));
                }else{
                    memberCoupon.setMaxPrice(BigDecimal.ZERO);
                }
                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 ;
@@ -1774,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)){
            //赠送消费者积分
@@ -1908,8 +1919,6 @@
        if(!goodsorder.getStatus().equals(Constants.OrderStatus.DONE.getKey())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:订单未完成,无法退款!");
        }
    }
@@ -2219,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);
        }
    }
}