| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | import com.github.binarywang.wxpay.exception.WxPayException; |
| | | import com.github.xiaoymin.knife4j.core.util.CollectionUtils; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import okhttp3.Address; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.checkerframework.checker.units.qual.C; |
| | |
| | | private ShopMapper shopMapper; |
| | | |
| | | @Autowired |
| | | private LabelsMapper labelsMapper; |
| | | |
| | | @Autowired |
| | | private ShopGoodsRelationMapper relationMapper; |
| | | |
| | | @Autowired |
| | |
| | | |
| | | @Autowired |
| | | private AreasService areasService; |
| | | |
| | | @Autowired |
| | | private AreasMapper areasMapper; |
| | | |
| | | @Autowired |
| | | private GoodsorderDetailJoinMapper goodsorderDetailJoinMapper; |
| | |
| | | goodsorderMapper.updateById(goodsorder); |
| | | } |
| | | |
| | | @Override |
| | | /*@Override |
| | | public IPage<Shop> getShopPage(PageWrap<Shop> pageWrap) { |
| | | IPage<Shop> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | Shop model = pageWrap.getModel(); |
| | |
| | | .like(StringUtils.isNotBlank(model.getName()),Shop::getName,model.getName()) |
| | | .orderByAsc(" distance ") |
| | | ); |
| | | } |
| | | }*/ |
| | | |
| | | |
| | | /** |
| | |
| | | goodsorder.setDistributionShopId(shop.getId()); |
| | | if(Objects.isNull(member.getBindShopId())){ |
| | | member.setBindShopId(shop.getId()); |
| | | member.setBindShopDate(new Date()); |
| | | } |
| | | } |
| | | |
| | |
| | | goodsorder.setPrice(orderPayConfirmResponse.getPayAmount()); |
| | | goodsorder.setTotalPrice(orderPayConfirmResponse.getAmount()); |
| | | goodsorder.setUseIntegral(orderPayConfirmResponse.getDeductIntegral()); |
| | | goodsorder.setIntegral(goodsorder.getUseIntegral()); |
| | | goodsorder.setIntegralPrice(orderPayConfirmResponse.getIntegralAmount()); |
| | | goodsorder.setIntegral(orderPayConfirmResponse.getIntegralAmount()); |
| | | goodsorder.setMailPrice(orderPayConfirmResponse.getMailAmount()); |
| | | goodsorder.setPayMethod(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO?Constants.ZERO:Constants.ONE); |
| | | if(Objects.nonNull(orderPayConfirmResponse.getMemberCoupon())){ |
| | |
| | | .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)){ |
| | |
| | | memberOrderResponse.setMemberOrderDetailResponseList(memberOrderDetailResponseList); |
| | | if(Constants.equalsInteger(memberOrderResponse.getReceiveType(),Constants.ONE)){ |
| | | memberOrderResponse.setShopInfo(shopMapper.selectById(memberOrderResponse.getShopId())); |
| | | } |
| | | Member member = memberMapper.selectById(memberOrderResponse.getMemberId()); |
| | | if(Objects.nonNull(member)){ |
| | | String memberfullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ |
| | | systemDictDataBiz.queryByCode(Constants.OSS,Constants.MEMBER_FILE).getCode(); |
| | | member.setImgFullUrl(memberfullUrl + member.getImgurl()); |
| | | memberOrderResponse.setMember(member); |
| | | } |
| | | return memberOrderResponse; |
| | | } |
| | |
| | | //邮费金额 |
| | | if(Objects.nonNull(request.getReceiveType())){ |
| | | if(Constants.equalsInteger(request.getReceiveType(),Constants.ZERO)){ |
| | | //TODO 根据收货地址 查询运费配置 |
| | | MailConfigResponse mailConfigResponse = systemDictDataBiz.getMailConfig(); |
| | | if(Objects.nonNull(request.getAddressId())){ |
| | | Addr addr = addrMapper.selectById(request.getAddressId()); |
| | | if(Objects.isNull(addr)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到收货地址信息"); |
| | | } |
| | | Areas areas = areasMapper.selectOne(new QueryWrapper<Areas>().lambda() |
| | | .eq(Areas::getIsdeleted,Constants.ZERO) |
| | | .eq(Areas::getId,StringUtils.leftPad(addr.getAreaId().toString().substring(0,2),6,"0")) |
| | | .isNotNull(Areas::getYunFeeId) |
| | | .last(" limit 1 ") |
| | | ); |
| | | if(Objects.nonNull(areas)){ |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | //根据收货地址 查询运费配置 |
| | | //计算商品信息总重量 |
| | | 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); |
| | | } |
| | | } |
| | |
| | | RedisUtil.addObject(redisTemplate,Constants.RedisKeys.GOODSORDER_KEY,0); |
| | | //加入redis缓存,刷新今天售后编号0开始 |
| | | RedisUtil.addObject(redisTemplate,Constants.RedisKeys.AFTERSALE_KEY,0); |
| | | //加入redis缓存,刷新今天售后编号0开始 |
| | | RedisUtil.addObject(redisTemplate,Constants.RedisKeys.WITHDRAW_KEY,0); |
| | | } |
| | | @Override |
| | | public void refreshOrderCodes(){ |
| | | long countOrder = 0,countSign=0,countSale=0; |
| | | long countOrder = 0,countSign=0,countSale=0,countWithdraw=0; |
| | | |
| | | QueryWrapper<Goodsorder> order = new QueryWrapper<>(); |
| | | order.apply(true, "TO_DAYS(NOW())=TO_DAYS(create_date)"); |
| | |
| | | } |
| | | //加入redis缓存,刷新今天售后编号0开始 |
| | | RedisUtil.addObject(redisTemplate,Constants.RedisKeys.AFTERSALE_KEY,countSale); |
| | | |
| | | |
| | | |
| | | QueryWrapper<WithdrawRecord> withdraw = new QueryWrapper<>(); |
| | | withdraw.apply(true, "TO_DAYS(NOW())=TO_DAYS(create_date)"); |
| | | withdraw.orderByDesc(" CODE "); |
| | | withdraw.last(" limit 1 "); |
| | | Aftersale maxWithdrawOrder = aftersaleMapper.selectOne(sale); |
| | | if(!Objects.isNull(maxWithdrawOrder)){ |
| | | countWithdraw = Integer.valueOf(maxOrder.getCode().toString().substring(8,12)); |
| | | } |
| | | //加入redis缓存,刷新今天售后编号0开始 |
| | | RedisUtil.addObject(redisTemplate,Constants.RedisKeys.WITHDRAW_KEY,countWithdraw); |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | .eq(Goodsorder::getMemberId,member.getId()) |
| | | .eq(Goodsorder::getStatus,Constants.OrderStatus.WAIT_RECEIVE.getKey())) |
| | | ); |
| | | |
| | | homeInfoResponse.setWaitPayNum( |
| | | goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>().lambda().eq(Goodsorder::getIsdeleted,Constants.ZERO) |
| | | .eq(Goodsorder::getMemberId,member.getId()) |
| | | .eq(Goodsorder::getStatus,Constants.OrderStatus.WAIT_PAY.getKey())) |
| | | ); |
| | | |
| | | homeInfoResponse.setCartTypeNum( |
| | | shopcartMapper.selectCount(new QueryWrapper<Shopcart>().lambda() |
| | | .eq(Shopcart::getIsdeleted,Constants.ZERO) |
| | |
| | | ); |
| | | |
| | | return homeInfoResponse; |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public PageData<Goodsorder> shopOrderPage(PageWrap<ShopOrderRequest> pageWrap) { |
| | | Integer shopId = null; |
| | | Integer status = null; |
| | | IPage<Goodsorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>(); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | ShopOrderRequest model = pageWrap.getModel(); |
| | | queryWrapper.selectAll(Goodsorder.class); |
| | | // queryWrapper.selectAs(Member::getNickname,Goodsorder::getNickName); |
| | | // queryWrapper.selectAs(Member::getPhone,Goodsorder::getPhone); |
| | | // queryWrapper.selectAs(Member::getImgurl,Goodsorder::getImgurl); |
| | | queryWrapper.eq(Goodsorder::getIsdeleted,Constants.ZERO); |
| | | queryWrapper.eq(Objects.nonNull(model.getStatus()),Goodsorder::getStatus,model.getStatus()); |
| | | queryWrapper.eq(Objects.nonNull(model.getShopId()),Goodsorder::getDistributionShopId,model.getShopId()); |
| | | queryWrapper.orderByDesc(Goodsorder::getCreateDate); |
| | | |
| | | IPage<Goodsorder> result = goodsorderJoinMapper.selectJoinPage(page, Goodsorder.class, queryWrapper); |
| | | |
| | | String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + |
| | | systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode(); |
| | | |
| | | for(Goodsorder goodsorder:result.getRecords()){ |
| | | |
| | | List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailJoinMapper.selectList(new QueryWrapper<GoodsorderDetail>().lambda() |
| | | .eq(GoodsorderDetail::getOrderId,goodsorder.getId())); |
| | | goodsorderDetailList.stream().forEach(s ->{ |
| | | if(StringUtils.isBlank(s.getImgurl())){ |
| | | s.setImgurl(path + s.getGoodsImgurl()); |
| | | } |
| | | }); |
| | | goodsorder.setGoodsorderDetailList(goodsorderDetailList); |
| | | } |
| | | return PageData.from(result); |
| | | } |
| | | |
| | | |
| | | |