doum
10 小时以前 0a206f3acb9af0ec9db650861d34a256cda1c960
server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
@@ -7,15 +7,11 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.IntegralMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.ShopMapper;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.IntegralJoinMapper;
import com.doumee.dao.business.model.Fund;
import com.doumee.dao.business.model.Integral;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Shop;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.web.dto.IntegralDTO;
import com.doumee.dao.web.dto.IntegralRecordDTO;
@@ -67,6 +63,12 @@
    @Autowired
    private ShopMapper shopMapper;
    @Autowired
    private WithdrawRecordMapper withdrawRecordMapper;
    @Autowired
    private GoodsorderMapper goodsorderMapper;
    @Autowired
    private NoticeService noticeService;
@@ -445,6 +447,10 @@
                .lambda()
                .eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
                .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
                .eq(Objects.nonNull(model.getObjType()),Integral::getObjType,model.getObjType())
                .ge(Objects.nonNull(model.getStartDate()),Integral::getCreateDate,  model.getStartDate()+" 00:00:00")
                .le(Objects.nonNull(model.getEndDate()),Integral::getCreateDate,  model.getEndDate()+" 23:59:59")
                .eq(Objects.nonNull(model.getObjType()),Integral::getObjType,model.getObjType())
                .eq(Integral::getMemberId,model.getMemberId())
                .orderByDesc(Integral::getCreateDate)
        );
@@ -452,9 +458,46 @@
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(result.getRecords())){
            for (Integral integral:result.getRecords()) {
                integral.setStrObjType(Constants.IntegralObjType.getName(integral.getObjType()));
                //余额提现 关联 提现记录
                if(Constants.equalsInteger(integral.getObjType(),Constants.IntegralObjType.WITHDRAW_APPLY.getKey())){
                    WithdrawRecord withdrawRecord = withdrawRecordMapper.selectById(integral.getObjId());
                    if(Objects.nonNull(withdrawRecord)){
                        integral.setWithdrawStatus(withdrawRecord.getStatus());
                    }
                }
            }
        }
        return PageData.from(result);
        PageData<Integral> rr =  PageData.from(result);
        if(pageWrap.getPage() == 1  && Constants.equalsInteger(model.getUserType(),Constants.TWO)){
            //如果查询第一页,做数据统计
            rr.setCountData(dealCountIntegralNum(pageWrap));
        }
        return rr;
    }
    private Integral dealCountIntegralNum(PageWrap<IntegralRecordDTO> pageWrap) {
        IntegralRecordDTO model = pageWrap.getModel();
        List<Integral> result = integralMapper.selectList(new QueryWrapper<Integral>()
                .lambda()
                .eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
                .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
                .eq(Objects.nonNull(model.getObjType()),Integral::getObjType,model.getObjType())
                .ge(Objects.nonNull(model.getStartDate()),Integral::getCreateDate,  model.getStartDate()+" 00:00:00")
                .le(Objects.nonNull(model.getEndDate()),Integral::getCreateDate,  model.getEndDate()+" 23:59:59")
                .eq(Objects.nonNull(model.getObjType()),Integral::getObjType,model.getObjType())
                .eq(Integral::getMemberId,model.getMemberId())
                .orderByDesc(Integral::getCreateDate)
        );
        Integral integral = new Integral();
        integral.setInAmount(BigDecimal.ZERO);
        integral.setOutAmount(BigDecimal.ZERO);
        if(CollectionUtils.isEmpty( result)){
            return integral;
        }
        integral.setInAmount(result.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).map(i->i.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
        integral.setOutAmount(result.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getNum()).reduce(BigDecimal.ZERO,BigDecimal::add));
        return integral;
    }
    @Override
@@ -569,22 +612,47 @@
        IntegralDataResponse integralDataResponse = new IntegralDataResponse();
        integralDataResponse.setSurplusIntegral(BigDecimal.ZERO);
        integralDataResponse.setExpiredIntegral(BigDecimal.ZERO);
        Shop shop = shopMapper.selectById(model.getMemberId());
        if (Objects.nonNull(shop)) {
            integralDataResponse.setSurplusIntegral(
                    Constants.equalsInteger(model.getUserType(),Constants.TWO)?shop.getAmount():shop.getIntegral());
        }
        List<Integral> list = integralMapper.selectList(new QueryWrapper<Integral>().lambda()
                .eq(Objects.nonNull(model.getUserType()),Integral::getUserType,model.getUserType())
//                .eq(Objects.nonNull(model.getType()),Integral::getType,model.getType())
                .eq(Integral::getMemberId,model.getMemberId())
                .orderByDesc(Integral::getCreateDate));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(list)){
            integralDataResponse.setSurplusIntegral(
                    list.stream().map(i->i.getNum().multiply(new BigDecimal(i.getType().toString()))
                    ).reduce(BigDecimal.ZERO, BigDecimal::add)
            );
            //提现业务数据
            if(Constants.equalsInteger(model.getUserType(),Constants.TWO)){
                integralDataResponse.setWithdrawAmount(
                        withdrawRecordMapper.selectList(new QueryWrapper<WithdrawRecord>().lambda()
                                .eq(WithdrawRecord::getMemberId,model.getMemberId())
                                .eq(WithdrawRecord::getStatus,Constants.ONE)
                        ).stream().map(WithdrawRecord::getAmount)
                        .reduce(BigDecimal.ZERO, BigDecimal::add)
                );
                integralDataResponse.setWithdrawIngAmount(
                        withdrawRecordMapper.selectList(new QueryWrapper<WithdrawRecord>().lambda()
                                        .eq(WithdrawRecord::getMemberId,model.getMemberId())
                                        .eq(WithdrawRecord::getStatus,Constants.ZERO)
                                ).stream().map(WithdrawRecord::getAmount)
                                .reduce(BigDecimal.ZERO, BigDecimal::add)
                );
                integralDataResponse.setWaitPayAmount(
                        goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
                                .eq(Goodsorder::getDistributionShopId,model.getMemberId())
                                .in(Goodsorder::getStatus,Constants.OrderStatus.WAIT_PAY.getKey(),
                                        Constants.OrderStatus.PAY_DONE.getKey(),
                                        Constants.OrderStatus.WAIT_RECEIVE.getKey())
                        ).stream().map(Goodsorder::getShopSettlement)
                        .reduce(BigDecimal.ZERO, BigDecimal::add)
                );
            }
            //积分失效方式 0长期有效 1按积分产生时间失效
            Integer type  = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDTYPE).getCode());
            //消费者积分 需要查询即将过期积分
            if(Constants.equalsInteger(type,Constants.ONE)){
            if(Constants.equalsInteger(type,Constants.ONE)&& Constants.equalsInteger(model.getUserType(),Constants.ONE)){
                Integer validYear  = Integer.valueOf(systemDictDataBiz.queryByCode(Constants.INTEGRAL_SET, Constants.INTERALSET_INTEGRALINVALIDCIRCLE).getCode());
                if(validYear.compareTo(Constants.ZERO)>Constants.ZERO){
                     list = integralMapper.selectList(new QueryWrapper<Integral>().lambda()