| | |
| | | import com.doumee.dao.business.join.PlanorderDetailJoinMapper; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.web.dto.CouponDTO; |
| | | import com.doumee.dao.web.request.DealIntegralRequest; |
| | | import com.doumee.dao.web.request.OrderPayRequest; |
| | | import com.doumee.dao.web.request.PayDetailRequest; |
| | | import com.doumee.dao.web.request.ShopOrderPayRequest; |
| | | import com.doumee.dao.web.request.*; |
| | | import com.doumee.dao.web.request.goods.MemberOrderRequest; |
| | | import com.doumee.dao.web.request.goods.DealOrderRequest; |
| | | import com.doumee.dao.web.request.goods.OrderCommentRequest; |
| | | import com.doumee.dao.web.request.goods.OrderGoodsCommentRequest; |
| | | import com.doumee.dao.web.response.HomeInfoResponse; |
| | | import com.doumee.dao.web.response.MyPageResponse; |
| | | import com.doumee.dao.web.response.goods.*; |
| | | import com.doumee.service.business.AreasService; |
| | |
| | | private ActivitySignMapper activitySignMapper; |
| | | @Autowired |
| | | private AftersaleMapper aftersaleMapper; |
| | | |
| | | @Autowired |
| | | private ShopGoodsRelationMapper shopGoodsRelationMapper; |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | |
| | |
| | | private ShopMapper shopMapper; |
| | | |
| | | @Autowired |
| | | private ShopGoodsRelationMapper relationMapper; |
| | | |
| | | @Autowired |
| | | private MemberCouponMapper memberCouponMapper; |
| | | |
| | | @Autowired |
| | | private CollectMapper collectMapper; |
| | | |
| | | @Autowired |
| | | private WxMiniUtilService wxMiniUtilService; |
| | |
| | | /****************************************移动端接口开始********************************************************************/ |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class,BusinessException.class}) |
| | | public PayResponse orderPay(OrderPayRequest orderPayRequest){ |
| | | Member member = memberMapper.selectById(orderPayRequest.getMemberId()); |
| | |
| | | |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class,BusinessException.class}) |
| | | public PayResponse orderPay(ShopOrderPayRequest orderPayRequest,MemberCouponServiceImpl memberCouponService){ |
| | | Member member = memberMapper.selectById(orderPayRequest.getMemberId()); |
| | |
| | | if(Objects.isNull(shop)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"请选择正确的自提门店!"); |
| | | } |
| | | //判断门店是否设置商品的价格信息 |
| | | |
| | | |
| | | //根据选择商户进行会员与商户信息绑定 |
| | |
| | | .eq(Member::getId,member.getId()) |
| | | ); |
| | | } |
| | | |
| | | goodsorder.setPickUpShopId(shop.getId()); |
| | | goodsorder.setDistributionShopId(shop.getId()); |
| | | if(Objects.isNull(member.getBindShopId())){ |
| | |
| | | goodsorder.setPrice(orderPayConfirmResponse.getPayAmount()); |
| | | goodsorder.setTotalPrice(orderPayConfirmResponse.getAmount()); |
| | | goodsorder.setUseIntegral(orderPayConfirmResponse.getDeductIntegral()); |
| | | goodsorder.setIntegral(goodsorder.getUseIntegral()); |
| | | goodsorder.setIntegralPrice(orderPayConfirmResponse.getIntegralAmount()); |
| | | |
| | | if(Objects.nonNull(orderPayConfirmResponse.getMemberCoupon())){ |
| | |
| | | goodsOrderDetail.setCouponDeduct(payDetailRequest.getCouponDeductCash()); |
| | | goodsOrderDetail.setIntegralDeduct(payDetailRequest.getIntegralDeductCash()); |
| | | goodsOrderDetail.setOrderId(goodsorder.getId()); |
| | | |
| | | //判断门店是否设置商品的价格信息 |
| | | if(Objects.nonNull(goodsorder.getDistributionShopId())){ |
| | | ShopGoodsRelation shopGoodsRelation = relationMapper.selectOne(new QueryWrapper<ShopGoodsRelation>().lambda() |
| | | .eq(ShopGoodsRelation::getIsdeleted,Constants.ZERO) .eq(ShopGoodsRelation::getShopId,goodsorder.getDistributionShopId()) |
| | | .eq(ShopGoodsRelation::getStatus,Constants.ZERO) |
| | | .eq(ShopGoodsRelation::getIsdeleted,Constants.ZERO) |
| | | .eq(ShopGoodsRelation::getGoodsSkuId,goodsOrderDetail.getGoodsSkuId()) |
| | | .last(" limit 1 ") |
| | | ); |
| | | if(Objects.isNull(shopGoodsRelation)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,关联经销商未绑定["+goods.getName()+"]商品,请联系管理员!"); |
| | | } |
| | | goodsOrderDetail.setShopSettlement(shopGoodsRelation.getPrice()); |
| | | } |
| | | goodsOrderDetailList.add(goodsOrderDetail); |
| | | //删除购物车商品 |
| | | shopcartMapper.delete(new QueryWrapper<Shopcart>().lambda() |
| | |
| | | ); |
| | | } |
| | | //积分变动记录 |
| | | Integral integral =Integral.createIntegral(member.getId(),Constants.INTEGRAL_TYPE.ORDER_PAY,goodsorder.getId()); |
| | | integral.setNum(goodsorder.getUseIntegral()); |
| | | integral.setTotalNum(member.getIntegral().subtract(goodsorder.getUseIntegral())); |
| | | integralMapper.insert(integral); |
| | | //更新用户积分 |
| | | memberMapper.subtractIntegral(member.getId(),goodsorder.getUseIntegral()); |
| | | if(goodsorder.getUseIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){ |
| | | //更新余额信息 添加积分变动记录 |
| | | DealIntegralRequest dealIntegralRequest = new DealIntegralRequest(); |
| | | dealIntegralRequest.setIntegralNum(goodsorder.getUseIntegral()); |
| | | dealIntegralRequest.setDealType(Constants.ONE); |
| | | dealIntegralRequest.setMemberId(member.getId()); |
| | | dealIntegralRequest.setObjId(goodsorder.getId()); |
| | | dealIntegralRequest.setOrderCode(goodsorder.getCode().toString()); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER); |
| | | integralService.dealIntegral(dealIntegralRequest); |
| | | } |
| | | |
| | | if(goodsorder.getPrice().compareTo(orderPayRequest.getTitlePrice())!=Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"商品价格发生变化,请刷新后重新支付!"); |
| | | } |
| | |
| | | j.setImgUrl(fullUrl + j.getImgUrl()); |
| | | }); |
| | | memberOrderResponse.setMemberOrderDetailResponseList(memberOrderDetailResponseList); |
| | | if(Constants.equalsInteger(memberOrderResponse.getReceiveType(),Constants.ONE)){ |
| | | memberOrderResponse.setShopInfo(shopMapper.selectById(memberOrderResponse.getShopId())); |
| | | } |
| | | return memberOrderResponse; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class,BusinessException.class}) |
| | | public void cancelOrderNew(Integer orderId,Integer optUserId,String cancelInfo){ |
| | | if(Objects.isNull(orderId)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | Goodsorder goodsorder = goodsorderMapper.selectById(orderId); |
| | | if(Objects.isNull(goodsorder)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if(!(Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_PAY.getKey()) |
| | | || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey()) |
| | | || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_RECEIVE.getKey()) )){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"订单取消失败:订单状态已流转!"); |
| | | } |
| | | if(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO){ |
| | | //微信现金退款 |
| | | String refundCode = WxMiniUtilService.wxRefund(goodsorder.getCode().toString(), goodsorder.getPrice(), goodsorder.getPrice()); |
| | | Fund fund = new Fund(); |
| | | fund.setOrderCode(refundCode); |
| | | fund.setCreateDate(new Date()); |
| | | fund.setIsdeleted(Constants.ZERO); |
| | | fund.setRemark(goodsorder.getId().toString()); |
| | | fund.setMemberId(goodsorder.getCreator()); |
| | | fund.setTitle("订单取消"); |
| | | fund.setContent(StringUtils.isBlank(cancelInfo)?"用户主动取消":cancelInfo); |
| | | fund.setObjId(goodsorder.getId()); |
| | | fund.setObjType(Constants.ONE); |
| | | fund.setType(Constants.ONE); |
| | | fund.setNum(goodsorder.getPrice()); |
| | | fundMapper.insert(fund); |
| | | } |
| | | if(goodsorder.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){ |
| | | //更新余额信息 添加积分变动记录 |
| | | DealIntegralRequest dealIntegralRequest = new DealIntegralRequest(); |
| | | dealIntegralRequest.setIntegralNum(goodsorder.getIntegral()); |
| | | dealIntegralRequest.setDealType(Constants.ZERO); |
| | | dealIntegralRequest.setMemberId(goodsorder.getMemberId()); |
| | | dealIntegralRequest.setObjId(goodsorder.getId()); |
| | | dealIntegralRequest.setOrderCode(goodsorder.getCode().toString()); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_CANCEL); |
| | | integralService.dealIntegral(dealIntegralRequest); |
| | | } |
| | | //订单信息取消 |
| | | goodsorder.setStatus(Constants.OrderStatus.CLOSE.getKey()); |
| | | goodsorder.setCancelDate(new Date()); |
| | | goodsorder.setCancelInfo(StringUtils.isBlank(cancelInfo)?"用户主动取消":cancelInfo); |
| | | goodsorder.setCancelUser(optUserId); |
| | | goodsorderMapper.updateById(goodsorder); |
| | | String goodsName = ""; |
| | | List<GoodsorderDetail> goodsorderDetailList = goodsorderDetailMapper.selectList(new QueryWrapper<GoodsorderDetail>().eq("ORDER_ID",goodsorder.getId())); |
| | | if(!Objects.isNull(goodsorderDetailList)&&goodsorderDetailList.size()>Constants.ZERO){ |
| | | for (GoodsorderDetail goodsorderDetail:goodsorderDetailList) { |
| | | GoodsSku goodsSku = goodsSkuMapper.selectById(goodsorderDetail.getGoodsSkuId()); |
| | | if(StringUtils.isBlank(goodsName)){ |
| | | Goods goods = goodsMapper.selectById(goodsSku.getGoodsId()); |
| | | goodsName = goods.getName(); |
| | | } |
| | | if(!Objects.isNull(goodsSku)){ |
| | | goodsSku.setStock(goodsSku.getStock().add(new BigDecimal(Constants.formatIntegerNum(goodsorderDetail.getGoodsNum())))); |
| | | goodsSkuMapper.updateById(goodsSku); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //SendWxMessage.orderCancel(goodsorder,memberMapper.selectById(goodsorder.getMemberId()),goodsName); |
| | | |
| | | //查询优惠券信息记录 |
| | | if(!Objects.isNull(goodsorder.getCouponId())){ |
| | | MemberCoupon memberCoupon = memberCouponMapper.selectById(goodsorder.getCouponId()); |
| | | if(!Objects.isNull(memberCoupon)){ |
| | | memberCoupon.setStatus(Constants.ZERO); |
| | | memberCouponMapper.updateById(memberCoupon); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public BigDecimal getDeductAmount(List<PayDetailRequest> requestList){ |
| | | List<MemberCoupon> memberCouponList = new ArrayList<>(); |
| | |
| | | orderUrgeMapper.insert(orderUrge); |
| | | } |
| | | |
| | | @Override |
| | | public void delOrder(Integer orderId,Integer memberId){ |
| | | Goodsorder goodsorder = goodsorderMapper.selectById(orderId); |
| | | if(!goodsorder.getMemberId().equals(memberId)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:用户信息匹配失败!"); |
| | | } |
| | | if(!goodsorder.getStatus().equals(Constants.OrderStatus.CLOSE.getKey())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:当前订单状态,无法进行该操作!"); |
| | | } |
| | | goodsorder.setIsdeleted(Constants.ONE); |
| | | goodsorder.setEditDate(new Date()); |
| | | goodsorderMapper.updateById(goodsorder); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 订单确认收货 |
| | |
| | | if(!goodsorder.getMemberId().equals(memberId)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:用户信息匹配失败!"); |
| | | } |
| | | if(Constants.equalsInteger(goodsorder.getReceiveType(),Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:自提订单,无法进行该操作!"); |
| | | } |
| | | if(!goodsorder.getStatus().equals(Constants.OrderStatus.WAIT_RECEIVE.getKey())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:订单未发货,无法进行确认!"); |
| | | } |
| | |
| | | goodsorder.setStatus(Constants.OrderStatus.DONE.getKey()); |
| | | goodsorder.setDoneDate(new Date()); |
| | | goodsorderMapper.updateById(goodsorder); |
| | | //经销商分销 添加分销金额记录 |
| | | this.addShopIntegral(goodsorder); |
| | | } |
| | | |
| | | /** |
| | | * 订单核销 |
| | | * @param code |
| | | * @param memberId |
| | | */ |
| | | @Override |
| | | public void orderWriteOff(String exchangeCode,Integer memberId){ |
| | | Goodsorder goodsorder = goodsorderMapper.selectOne(new QueryWrapper<Goodsorder>().lambda() |
| | | .eq(Goodsorder::getExchangeCode,exchangeCode) |
| | | .eq(Goodsorder::getIsdeleted,Constants.ZERO).last("limit 1 ")); |
| | | if(Objects.isNull(goodsorder)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if(!Constants.equalsInteger(goodsorder.getReceiveType(),Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:配送订单,无法进行该操作!"); |
| | | } |
| | | if(!goodsorder.getStatus().equals(Constants.OrderStatus.PAY_DONE.getKey())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:订单状态已流转,无法进行该操作!"); |
| | | } |
| | | Shop shop = shopMapper.selectById(goodsorder.getPickUpShopId());/*selectOne(new QueryWrapper<Shop>().lambda().eq(Shop::getMemberId,memberId) |
| | | .eq(Shop::getIsdeleted,Constants.ZERO).last("limit 1 ") |
| | | );*/ |
| | | if(Objects.isNull(shop)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到订单关联经销商信息,请联系管理员"); |
| | | } |
| | | if(!Constants.equalsInteger(shop.getMemberId(),memberId)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"["+shop.getName()+"]非您绑定的经销商,无法进行该操作!"); |
| | | } |
| | | goodsorder.setStatus(Constants.OrderStatus.DONE.getKey()); |
| | | goodsorder.setDoneDate(new Date()); |
| | | goodsorderMapper.updateById(goodsorder); |
| | | //经销商分销 添加分销金额记录 |
| | | this.addShopIntegral(goodsorder); |
| | | } |
| | | |
| | | |
| | | public void addShopIntegral(Goodsorder goodsorder){ |
| | | if(Objects.isNull(goodsorder.getDistributionShopId())){ |
| | | return; |
| | | } |
| | | List<GoodsorderDetail> detailList = goodsorderDetailMapper.selectList(new QueryWrapper<GoodsorderDetail>().lambda() |
| | | .eq(GoodsorderDetail::getOrderId,goodsorder.getId()) |
| | | .isNotNull(GoodsorderDetail::getShopSettlement) |
| | | ); |
| | | if(CollectionUtils.isNotEmpty(detailList)){ |
| | | BigDecimal settlement = detailList.stream().map(i->i.getShopSettlement()).reduce(BigDecimal.ZERO,BigDecimal::add); |
| | | //更新余额信息 添加积分变动记录 |
| | | DealIntegralRequest dealIntegralRequest = new DealIntegralRequest(); |
| | | dealIntegralRequest.setIntegralNum(settlement); |
| | | dealIntegralRequest.setDealType(Constants.ZERO); |
| | | dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId()); |
| | | dealIntegralRequest.setObjId(goodsorder.getId()); |
| | | dealIntegralRequest.setOrderCode(goodsorder.getCode().toString()); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_SETTLEMENT); |
| | | integralService.dealShopIntegral(dealIntegralRequest); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public HomeInfoResponse getHomeInfo(int memberId){ |
| | | HomeInfoResponse homeInfoResponse = new HomeInfoResponse(); |
| | | Member member = memberMapper.selectById(memberId); |
| | | if(Objects.isNull(member)){ |
| | | return homeInfoResponse; |
| | | } |
| | | homeInfoResponse.setMember(member); |
| | | homeInfoResponse.setWaitReceiveNum( |
| | | goodsorderMapper.selectCount(new QueryWrapper<Goodsorder>().lambda().eq(Goodsorder::getIsdeleted,Constants.ZERO) |
| | | .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) |
| | | .eq(Shopcart::getMemberId,member.getId())) |
| | | ); |
| | | homeInfoResponse.setCouponNum( |
| | | memberCouponMapper.selectCount(new QueryWrapper<MemberCoupon>().lambda() |
| | | .eq(MemberCoupon::getIsdeleted,Constants.ZERO) |
| | | .eq(MemberCoupon::getMemberId,member.getId()) |
| | | .eq(MemberCoupon::getStatus,Constants.ZERO) |
| | | .apply(" end_date >now() ") |
| | | ) |
| | | ); |
| | | homeInfoResponse.setCollectNum( |
| | | collectMapper.selectCount(new QueryWrapper<Collect>().lambda() |
| | | .eq(Collect::getIsdeleted,Constants.ZERO) |
| | | .eq(Collect::getMemberId,member.getId()) |
| | | ) |
| | | ); |
| | | |
| | | return homeInfoResponse; |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |