doum
12 小时以前 e68e324f91d1a4eb2d4c5f07d27ca105a308bc0c
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
@@ -24,6 +25,7 @@
import com.doumee.dao.web.request.*;
import com.doumee.dao.web.request.goods.*;
import com.doumee.dao.web.response.HomeInfoResponse;
import com.doumee.dao.web.response.MailConfigResponse;
import com.doumee.dao.web.response.MyPageResponse;
import com.doumee.dao.web.response.goods.*;
import com.doumee.service.business.AreasService;
@@ -83,6 +85,12 @@
    private ShopGoodsRelationMapper shopGoodsRelationMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Autowired
    private CouponMapper couponMapper;
    @Autowired
    private MemberCouponJoinMapper memberCouponJoinMapper;
    @Autowired
    private InviteRecordMapper inviteRecordMapper;
    @Autowired
    private GoodsorderDetailMapper goodsorderDetailMapper;
@@ -891,6 +899,8 @@
                    .eq(MemberCoupon::getId,orderPayConfirmResponse.getMemberCoupon().getId())
            );
        }
        goodsorder.setReturnCustomerIntegral(getBackIntegral(goodsorder.getPrice(),Constants.ONE));
        goodsorder.setReturnMemberIntegral(getBackIntegral(goodsorder.getPrice(),Constants.ZERO));
        goodsorderMapper.insert(goodsorder);
        List<OrderGoodsCalculateResponse> goodsCalculateList  = orderPayConfirmResponse.getGoodsCalculateList();
        if(CollectionUtils.isEmpty(goodsCalculateList)){
@@ -1466,6 +1476,7 @@
        //邮费金额
        if(Objects.nonNull(request.getReceiveType())){
            if(Constants.equalsInteger(request.getReceiveType(),Constants.ZERO)){
                MailConfigResponse mailConfigResponse = systemDictDataBiz.getMailConfig();
                if(Objects.nonNull(request.getAddressId())){
                    Addr addr = addrMapper.selectById(request.getAddressId());
                    if(Objects.isNull(addr)){
@@ -1481,28 +1492,28 @@
                        Labels  labels = labelsMapper.selectById(areas.getYunFeeId());
                        if(Objects.nonNull(labels)&&StringUtils.isNotBlank(labels.getParam())){
                            //{weight0:10,fee0:10,weight1:10,fee1:10},{首重:10,首重运费:10,续重:10,续重费:10}
                            mailConfigResponse = JSONObject.parseObject(labels.getParam(),MailConfigResponse.class);
                        }
                    }
                }
                //TODO  根据收货地址 查询运费配置
                //根据收货地址 查询运费配置
                //计算商品信息总重量
                BigDecimal totalWeight = goodsCalculateList.stream().map(i->
                        i.getWeight().multiply(new BigDecimal(i.getGoodsNum().toString()))
                ).reduce(BigDecimal.ZERO,BigDecimal::add);
                //TODO 暂时无运费金额
                mailAmount = BigDecimal.ZERO;
                if(totalWeight.compareTo(mailConfigResponse.getWeight0())>=Constants.ZERO){
                    mailAmount = mailConfigResponse.getFee0();
                }else{
                    //超重重量
                    BigDecimal overWeight = totalWeight.subtract(mailConfigResponse.getWeight0());
                    if (overWeight.compareTo(mailConfigResponse.getWeight1()) >= Constants.ZERO) {
                        mailAmount = mailConfigResponse.getFee0().add(
                                mailConfigResponse.getFee1()
                                .multiply(overWeight.divide(mailConfigResponse.getWeight1(),2,RoundingMode.HALF_UP)));
                    }else{
                        mailAmount = mailConfigResponse.getFee0().add(mailConfigResponse.getFee1());
                    }
                }
                amount = amount.add(mailAmount);
            }
        }
@@ -1677,11 +1688,66 @@
        //根据订单类型进行积分赠送
        //下单确认收货 ,赠送经销商积分
        this.orderAddShopIntegral(goodsorder);
        //下单完成 根据信息确认是否需要赠送邀请者优惠券
        this.orderDoneRewardInviteCoupon(goodsorder);
        //消费者确认收货
        this.orderAddMemberIntegral(goodsorder);
        //经销商 结算金额
        this.orderAddShopCash(goodsorder);
    }
    /**
     * 订单确认收货,赠送邀请者优惠券
     * @param
     */
    public void orderDoneRewardInviteCoupon(Goodsorder goodsorder){
        PlatformConfigDTO platformConfigDTO = systemDictDataService.getPlatformConfigDTO();
        if (platformConfigDTO.getShareCouponRewardStatus().equals(Constants.ONE)) {
            return;
        }
        Member member = memberMapper.selectById(goodsorder.getMemberId());
        if(Objects.isNull(member)||member.getIsdeleted().equals(Constants.ONE)){
            return;
        }
        InviteRecord inviteRecord = inviteRecordMapper.selectOne(new QueryWrapper<InviteRecord>().lambda()
                .eq(InviteRecord::getMemberId,member.getId())
                .eq(InviteRecord::getIsdeleted,Constants.ZERO)
                .eq(InviteRecord::getFirstOrderStatus,Constants.ZERO)
                .last("limit 1")
        );
        if(Objects.isNull(inviteRecord)){
            return;
        }
        Member inviteMember = memberMapper.selectById(inviteRecord.getInviteId());
        if(Objects.isNull(inviteMember)||inviteMember.getIsdeleted().equals(Constants.ONE)){
            return;
        }
        List<JSONObject> shareCouponRewardList = platformConfigDTO.getShareCouponRewardList();
        //[{"num":"2","couponId":6},{"num":"3","couponId":5}]
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(shareCouponRewardList)){
            List<MemberCoupon> memberCouponList = new ArrayList<>();
            for (JSONObject jsonObject:shareCouponRewardList) {
                Integer couponId = jsonObject.getInteger("couponId");
                Integer num = jsonObject.getInteger("num");
                Coupon coupon =  couponMapper.selectById(couponId);
                if(Objects.isNull(coupon)||Constants.equalsInteger(coupon.getIsdeleted(),Constants.ONE)&&num>Constants.ZERO){
                    continue;
                }
                MemberCoupon memberCoupon = MemberCoupon.couponToBean(coupon,inviteMember,new Date(),Constants.ONE,null);
                for (int i = 0; i < num; i++) {
                    memberCouponList.add(memberCoupon);
                }
            }
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberCouponList)){
                memberCouponJoinMapper.insert(memberCouponList);
            }
        }
    }
    /**
     * 订单核销
@@ -1716,6 +1782,8 @@
        if(Constants.equalsInteger(goodsorder.getPayMethod(),Constants.ZERO)){
            //赠送消费者积分
            this.orderAddMemberIntegral(goodsorder);
            //下单完成 根据信息确认是否需要赠送邀请者优惠券
            this.orderDoneRewardInviteCoupon(goodsorder);
            //经销商 添加赠送积分
            this.orderAddShopIntegral(goodsorder);
            //经销商 结算金额