| | |
| | | import com.doumee.dao.business.join.PlanorderDetailJoinMapper; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.system.dto.PlatformConfigDTO; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.dao.web.dto.CouponDTO; |
| | | import com.doumee.dao.web.request.*; |
| | | import com.doumee.dao.web.request.goods.*; |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.doumee.service.business.IntegralService; |
| | | import com.doumee.service.business.NoticeService; |
| | | import com.doumee.service.system.SystemDictDataService; |
| | | import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; |
| | | import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; |
| | |
| | | private MemberMapper memberMapper; |
| | | @Autowired |
| | | private CouponMapper couponMapper; |
| | | @Autowired |
| | | private NoticeService noticeService; |
| | | @Autowired |
| | | private NoticeMapper noticeMapper; |
| | | @Autowired |
| | | private MemberCouponJoinMapper memberCouponJoinMapper; |
| | | @Autowired |
| | |
| | | Constants.UserActionType.CHANGE_ORDER_KD, |
| | | userActionMapper, |
| | | update.getEditDate(), |
| | | new String[]{user.getUsername(), DateUtil.getPlusTime2(update.getEditDate()),"备注:"+goodsorder.getKdInfo()}, |
| | | new String[]{goodsorder.getKdInfo()}, |
| | | JSONObject.toJSONString(update) , |
| | | query.getKdName()+"(单号:"+query.getKdCode()+")", |
| | | goodsorder.getKdName()+"(单号:"+goodsorder.getKdCode()+")"); |
| | |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),ResponseStatus.DATA_EMPTY.getMessage()); |
| | | } |
| | | |
| | | cancelOrder( query.getId(), user.getId(),goodsorder.getCancelInfo() ); |
| | | cancelOrderNew( query.getId(), user.getId(),goodsorder.getCancelInfo() ); |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | @Override |
| | | public Goodsorder findById(Integer id) { |
| | | Goodsorder result=goodsorderJoinMapper.selectById(id); |
| | | MPJLambdaWrapper<Goodsorder> q = new MPJLambdaWrapper<Goodsorder>() |
| | | .selectAll(Goodsorder.class) |
| | | .selectAs(Shop::getName,Goodsorder::getShopName) |
| | | .selectAs(Member::getNickname,Goodsorder::getNickName) |
| | | .selectAs(Member::getPhone,Goodsorder::getPhone) |
| | | .selectAs(Member::getName,Goodsorder::getMemberName) |
| | | .selectAs(MemberCoupon::getName,Goodsorder::getCouponName) |
| | | .select("t4.realname",Goodsorder::getKdUserName) |
| | | .select("t5.realname",Goodsorder::getCancelUserName) |
| | | .select("t6.realname",Goodsorder::getRefundUserName) |
| | | .selectAs(Shop::getName,Goodsorder::getShopName) |
| | | .leftJoin(MemberCoupon.class,MemberCoupon::getId,Goodsorder::getCouponId) |
| | | .leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId) |
| | | .leftJoin(Member.class,Member::getId,Goodsorder::getMemberId) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getKdUser) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getCancelUser) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getRefundUserId) |
| | | .eq(Goodsorder::getId,id); |
| | | Goodsorder result=goodsorderJoinMapper.selectJoinOne(Goodsorder.class,q); |
| | | if(Objects.nonNull(result)){ |
| | | MPJLambdaWrapper<GoodsorderDetail> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper.selectAll(GoodsorderDetail.class); |
| | | queryWrapper.selectAs(Shop::getName,Goodsorder::getShopName); |
| | | queryWrapper.selectAs(Labels::getName,GoodsorderDetail::getLablesName); |
| | | queryWrapper.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO); |
| | | queryWrapper.eq(GoodsorderDetail::getOrderId,result.getId()); |
| | | queryWrapper.leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId); |
| | | queryWrapper.leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId); |
| | | queryWrapper.leftJoin(Labels.class,Labels::getId,Goods::getCategoryId); |
| | | queryWrapper.leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId); |
| | | queryWrapper.selectAll(GoodsorderDetail.class) |
| | | .selectAs(Labels::getName,GoodsorderDetail::getCategoryName) |
| | | .eq(GoodsorderDetail::getIsdeleted,Constants.ZERO) |
| | | .leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId) |
| | | .leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId) |
| | | .leftJoin(Labels.class,Labels::getId,Goods::getCategoryId) |
| | | .eq(GoodsorderDetail::getOrderId,result.getId()) ; |
| | | List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailMapper.selectList(queryWrapper); |
| | | String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode(); |
| | | |
| | | String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() |
| | | + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode(); |
| | | for(GoodsorderDetail model:goodsorderDetailList){ |
| | | if(StringUtils.isNotBlank(model.getImgurl())){ |
| | | model.setImgurl(path+ model.getImgurl()); |
| | | } |
| | | //小计 |
| | | model.setTotalPrice(Constants.formatBigdecimal(model.getPrice()).multiply(new BigDecimal(Constants.formatIntegerNum(model.getGoodsNum())))); |
| | | } |
| | | result.setGoodsorderDetailList(goodsorderDetailList); |
| | | |
| | | //查询咖啡计划订阅周期 |
| | | if(Constants.equalsInteger(result.getType(),Constants.TWO)){ |
| | | MPJLambdaWrapper<PlanorderDetail> queryplan = new MPJLambdaWrapper<>(); |
| | | queryplan.eq(PlanorderDetail::getOrderId,result.getId()); |
| | | queryplan.last("limit 1"); |
| | | PlanorderDetail planorderDetail= planorderDetailJoinMapper.selectOne( queryplan); |
| | | result.setPlanorderDetail(planorderDetail); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | |
| | | queryWrapper.selectAll(Goodsorder.class); |
| | | queryWrapper.selectAs(Shop::getName,Goodsorder::getShopName); |
| | | initPageQueryWrapper(queryWrapper,pageWrap); |
| | | queryWrapper.selectAs(MemberCoupon::getName,Goodsorder::getCouponName); |
| | | queryWrapper.leftJoin(MemberCoupon.class,MemberCoupon::getId,Goodsorder::getCouponId); |
| | | queryWrapper.eq(pageWrap.getModel().getStatus()!=null,Goodsorder::getStatus,pageWrap.getModel().getStatus()); |
| | | queryWrapper.orderByDesc(Goodsorder::getCreateDate); |
| | | |
| | |
| | | dealOrderDetailsBiz(idList,result);//查询订单明细 |
| | | } |
| | | PageData<Goodsorder> rr = PageData.from(result); |
| | | if(pageWrap.getPage() == 1){ |
| | | if(pageWrap.getPage() == 1 && pageWrap.getModel().getNeedCount()!=null&& pageWrap.getModel().getNeedCount()){ |
| | | //如果查询第一页,做数据统计 |
| | | rr.setCountData(dealCountOrderNum(pageWrap)); |
| | | } |
| | |
| | | |
| | | |
| | | @Override |
| | | public List<Goodsorder> exportExcel(Goodsorder pageWrap) { |
| | | |
| | | MPJLambdaWrapper<Goodsorder> queryWrapper = new MPJLambdaWrapper<>(); |
| | | |
| | | |
| | | queryWrapper.selectAll(Goodsorder.class); |
| | | queryWrapper.selectAs(GoodsorderDetail::getName,Goodsorder::getGoodsName); |
| | | queryWrapper.selectAs(GoodsorderDetail::getSkuName,Goodsorder::getSkuName); |
| | | queryWrapper.selectAs(GoodsorderDetail::getGoodsNum,Goodsorder::getGoodsNum); |
| | | queryWrapper.selectAs(GoodsorderDetail::getPrice,Goodsorder::getGoodsPrice); |
| | | queryWrapper.selectAs(Member::getNickname,Goodsorder::getNickName); |
| | | queryWrapper.selectAs(Member::getPhone,Goodsorder::getPhone); |
| | | queryWrapper.selectAs(Addr::getAddr,Goodsorder::getAddr); |
| | | queryWrapper.select("(select CREATE_DATE from order_urge where ORDER_ID=t.id and ISDELETED=0 ORDER BY CREATE_DATE desc limit 1) as urgeCreateDate "); |
| | | queryWrapper.leftJoin(Member.class,Member::getId,Goodsorder::getMemberId); |
| | | queryWrapper.leftJoin(Addr.class,Addr::getMemberId,Member::getId); |
| | | queryWrapper.leftJoin(GoodsorderDetail.class,GoodsorderDetail::getOrderId,Goodsorder::getId); |
| | | queryWrapper.eq(GoodsorderDetail::getIsdeleted,Constants.ZERO); |
| | | queryWrapper.eq(Addr::getIsDefault,Constants.ONE); |
| | | |
| | | queryWrapper.eq(pageWrap.getCode()!=null,Goodsorder::getCode,pageWrap.getCode()); |
| | | queryWrapper.and(StringUtils.isNotBlank(pageWrap.getNickName()),ms->ms.like(Goodsorder::getLinkname,pageWrap.getNickName()) |
| | | .or().like(Goodsorder::getLinkphone,pageWrap.getNickName()) |
| | | ); |
| | | queryWrapper.ge(pageWrap.getStarttime()!=null,Goodsorder::getCreateDate,pageWrap.getStarttime()); |
| | | queryWrapper.le(pageWrap.getEndtime()!=null,Goodsorder::getCreateDate, pageWrap.getEndtime()); |
| | | |
| | | queryWrapper.eq(pageWrap.getStatus()!=null,Goodsorder::getStatus,pageWrap.getStatus()); |
| | | queryWrapper.eq(pageWrap.getIsdeleted()==null,Goodsorder::getIsdeleted,Constants.ZERO); |
| | | queryWrapper.eq(pageWrap.getIsdeleted()!=null,Goodsorder::getIsdeleted,pageWrap.getIsdeleted()); |
| | | queryWrapper.orderByDesc(Goodsorder::getCreateDate); |
| | | |
| | | List<Goodsorder> result = goodsorderJoinMapper.selectJoinList(Goodsorder.class, queryWrapper); |
| | | |
| | | |
| | | public List<GoodsorderExport> exportExcel(PageWrap<Goodsorder> pageWrap) { |
| | | pageWrap.getModel().setNeedCount(false); |
| | | PageData<Goodsorder> list = findPage(pageWrap); |
| | | List<GoodsorderExport> result = new ArrayList<>(); |
| | | if(list!=null && list.getRecords()!=null){ |
| | | for(Goodsorder order: list.getRecords()){ |
| | | GoodsorderExport param = new GoodsorderExport(); |
| | | param.setCode(order.getCode()); |
| | | String goodsInfo = ""; |
| | | int goodsNum= 0; |
| | | if(order.getGoodsorderDetailList()!=null && order.getGoodsorderDetailList().size()>0){ |
| | | for(GoodsorderDetail detail:order.getGoodsorderDetailList()){ |
| | | goodsNum += Constants.formatIntegerNum(detail.getGoodsNum()); |
| | | goodsInfo+= StringUtils.defaultString(detail.getName(),"")+"/"+Constants.formatBigdecimal(detail.getGoodsWeight())+"kg" |
| | | +"("+Constants.formatBigdecimal(detail.getPrice())+" x "+Constants.formatIntegerNum(detail.getGoodsNum())+");\n"; |
| | | } |
| | | } |
| | | param.setTotalNum(goodsNum); |
| | | param.setGoodsName(goodsInfo); |
| | | param.setTotalPrice(order.getTotalPrice()); |
| | | param.setIntegralPrice(order.getIntegral()); |
| | | param.setCouponPrice(order.getCouponPrice()); |
| | | param.setMailPrice(order.getMailPrice()); |
| | | param.setPrice(order.getPrice()); |
| | | param.setShopName(order.getShopName()); |
| | | param.setShopSettlement(order.getShopSettlement()); |
| | | param.setReceiveType(order.getReceiveType()); |
| | | param.setLinkname(order.getLinkname()); |
| | | param.setLinkphone(order.getLinkphone()); |
| | | param.setAddr(order.getLinkaddr()); |
| | | param.setKdInfo(StringUtils.defaultString(order.getKdName(),"")+StringUtils.defaultString(order.getKdCode(),"")); |
| | | param.setStatus(order.getStatus()); |
| | | param.setCreateDate(order.getCreateDate()); |
| | | result.add(param); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | /****************************************移动端接口开始********************************************************************/ |
| | | |
| | | |
| | | @Transactional(rollbackFor = {Exception.class,BusinessException.class}) |
| | | public PayResponse orderPay(OrderPayRequest orderPayRequest){ |
| | | Member member = memberMapper.selectById(orderPayRequest.getMemberId()); |
| | | //查询收货地址 |
| | | Addr addr = addrMapper.selectById(orderPayRequest.getAddressId()); |
| | | if(Objects.isNull(addr)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到收货地址信息!"); |
| | | } |
| | | Areas area = areasService.findById(addr.getAreaId(), Constants.TWO); |
| | | if(Objects.isNull(area)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"收货地址区划信息发生变化,请更新后下单!"); |
| | | } |
| | | Goodsorder goodsorder = new Goodsorder(); |
| | | goodsorder.setCreator(orderPayRequest.getMemberId()); |
| | | goodsorder.setIntegral(BigDecimal.ZERO); |
| | | goodsorder.setCreateDate(new Date()); |
| | | goodsorder.setIsdeleted(Constants.ZERO); |
| | | goodsorder.setMemberInfo(orderPayRequest.getRemark()); |
| | | goodsorder.setAddrId(addr.getId()); |
| | | goodsorder.setLinkaddr(area.getProvinceName()+area.getCityName() + area.getName() + addr.getAddr()); |
| | | goodsorder.setLinkphone(addr.getPhone()); |
| | | goodsorder.setLinkname(addr.getName()); |
| | | goodsorder.setMemberId(member.getId()); |
| | | goodsorder.setType(orderPayRequest.getOrderType()); |
| | | //单据编号 自增 |
| | | goodsorder.setCode(getNextInCode()); |
| | | //计算订单总金额 |
| | | BigDecimal sumPrice = BigDecimal.ZERO; |
| | | //存储记录明细 |
| | | List<PayDetailRequest> payDetailRequestList = orderPayRequest.getPayDetailRequestList(); |
| | | if(Objects.isNull(payDetailRequestList)||payDetailRequestList.size()==Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"无明细数据,请检查选择数据!"); |
| | | } |
| | | List<GoodsorderDetail> goodsOrderDetailList = new ArrayList<>(); |
| | | for (PayDetailRequest payDetailRequest:payDetailRequestList) { |
| | | //查询商品 |
| | | GoodsSku goodsSku = goodsSkuMapper.selectById(payDetailRequest.getGoodsSkuId()); |
| | | if(Objects.isNull(goodsSku)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到商品SKU信息!"); |
| | | } |
| | | Goods goods = goodsMapper.selectById(goodsSku.getGoodsId()); |
| | | if(Objects.isNull(goods)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到商品信息!"); |
| | | } |
| | | if(goods.getStatus().equals(Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在商品已删除或已下架,无法下单"); |
| | | } |
| | | if(goodsSku.getStock().compareTo(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum())))<Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在商品库存不足,无法下单!"); |
| | | } |
| | | //商品库存扣除 |
| | | goodsSku.setStock(goodsSku.getStock().subtract(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum())))); |
| | | goodsSkuMapper.updateById(goodsSku); |
| | | GoodsorderDetail goodsOrderDetail = new GoodsorderDetail(); |
| | | goodsOrderDetail.setCreator(member.getId()); |
| | | goodsOrderDetail.setCreateDate(new Date()); |
| | | goodsOrderDetail.setImgurl(StringUtils.isBlank(goodsSku.getImgurl())?goods.getImgurl():goodsSku.getImgurl()); |
| | | goodsOrderDetail.setName(goods.getName()); |
| | | goodsOrderDetail.setGoodsSkuId(goodsSku.getId().toString()); |
| | | goodsOrderDetail.setSkuName(goodsSku.getName()); |
| | | goodsOrderDetail.setPrice(goodsSku.getPrice()); |
| | | goodsOrderDetail.setGoodsNum(payDetailRequest.getGoodsNum()); |
| | | goodsOrderDetailList.add(goodsOrderDetail); |
| | | sumPrice = sumPrice.add(goodsSku.getPrice().multiply(new BigDecimal(payDetailRequest.getGoodsNum()))); |
| | | //购物车支付 删除购物车商品 |
| | | if(orderPayRequest.getIsShopChart().equals(Constants.ONE)){ |
| | | shopcartMapper.deleteById(payDetailRequest.getShopCartId()); |
| | | } |
| | | } |
| | | |
| | | //订单支付现金金额 |
| | | goodsorder.setPrice((sumPrice.subtract(orderPayRequest.getDeductionBalance()))); |
| | | MemberCoupon memberCoupon = new MemberCoupon(); |
| | | if(!Objects.isNull(orderPayRequest.getCouponId())){ |
| | | memberCoupon = memberCouponMapper.selectById(orderPayRequest.getCouponId()); |
| | | if(Objects.isNull(memberCoupon)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到优惠券信息!"); |
| | | } |
| | | if(sumPrice.compareTo(memberCoupon.getLimitPrice())<Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"订单金额小于优惠券总金额,无法使用!"); |
| | | } |
| | | if(memberCoupon.getStatus().equals(Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"优惠券已使用!"); |
| | | } |
| | | sumPrice = sumPrice.subtract(memberCoupon.getPrice()); |
| | | goodsorder.setCouponId(orderPayRequest.getCouponId()); |
| | | goodsorder.setCouponPrice(memberCoupon.getPrice()); |
| | | } |
| | | |
| | | goodsorder.setCode(getNextInCode()); |
| | | if(!Objects.isNull(memberCoupon)){ |
| | | memberCoupon.setStatus(Constants.ONE); |
| | | memberCouponMapper.updateById(memberCoupon); |
| | | } |
| | | //咖豆商城订单 单独处理 扣减积分 添加积分变动记录 |
| | | if(orderPayRequest.getOrderType().equals(Constants.ONE)){ |
| | | if(member.getIntegral().compareTo(sumPrice)<=Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "咖豆不足,无法兑换!"); |
| | | } |
| | | goodsorder.setStatus(Constants.OrderStatus.PAY_DONE.getKey()); |
| | | goodsorder.setPayStatus(Constants.ZERO); |
| | | goodsorder.setPayDate(new Date()); |
| | | goodsorderMapper.insert(goodsorder); |
| | | //更新用户积分 |
| | | memberMapper.subtractIntegral(member.getId(),sumPrice); |
| | | PayResponse payResponse = new PayResponse(); |
| | | payResponse.setOrderId(goodsorder.getId()); |
| | | return payResponse; |
| | | } |
| | | goodsorder.setIntegral(orderPayRequest.getDeductionBalance()); |
| | | goodsorderMapper.insert(goodsorder); |
| | | //数据存储 |
| | | BigDecimal total = Constants.formatBigdecimal(goodsorder.getPrice()).add(Constants.formatBigdecimal(goodsorder.getIntegral())).add(Constants.formatBigdecimal(goodsorder.getCouponPrice())); |
| | | BigDecimal rate =Constants.formatBigdecimal(goodsorder.getCouponPrice()).divide(total,4,BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal totalWxMoney = new BigDecimal(0); |
| | | BigDecimal totalIntegral = new BigDecimal(0); |
| | | for (int i =0;i< goodsOrderDetailList.size();i++) { |
| | | GoodsorderDetail goodsOrderDetail= goodsOrderDetailList.get(i); |
| | | goodsOrderDetail.setOrderId(goodsorder.getId()); |
| | | BigDecimal wxMoney ; |
| | | BigDecimal integral; |
| | | if(i!=0 && i == goodsOrderDetailList.size() -1){ |
| | | //处理因为四舍五入造成的可退金额损失 |
| | | wxMoney = Constants.formatBigdecimal(goodsorder.getPrice()).subtract(totalWxMoney); |
| | | integral = Constants.formatBigdecimal(goodsorder.getIntegral()).subtract(totalIntegral);; |
| | | }else{ |
| | | //当前明细实际价格 |
| | | BigDecimal detialTotal = Constants.formatBigdecimal(goodsOrderDetail.getPrice()).multiply(new BigDecimal(Constants.formatIntegerNum(goodsOrderDetail.getGoodsNum()))); |
| | | //折算优惠券后支付价格(包含现金和余额部分) |
| | | BigDecimal actDetialTotal = detialTotal.subtract(detialTotal.multiply(rate)); |
| | | //按现金和积分支付比例,折算每个明细现金和积分支付的数量 |
| | | BigDecimal rate1 = detialTotal .divide(total,4,BigDecimal.ROUND_HALF_UP); |
| | | //可退现金金额 |
| | | wxMoney = Constants.formatBigdecimal(goodsorder.getPrice()).multiply(rate1); |
| | | //剩下的是余额抵扣 |
| | | integral =actDetialTotal.subtract(wxMoney); |
| | | totalWxMoney = totalWxMoney.add(wxMoney);//累计 |
| | | totalIntegral= totalIntegral.add(integral);//累计 |
| | | } |
| | | goodsOrderDetail.setMoney(wxMoney); |
| | | goodsOrderDetail.setIntegral(integral); |
| | | goodsorderDetailMapper.insert(goodsOrderDetail); |
| | | } |
| | | //如果抵扣金额大于 0 则进行余额业务处理 |
| | | if(orderPayRequest.getDeductionBalance().compareTo(BigDecimal.ZERO)>Constants.ZERO){ |
| | | //抵扣金额小于会员剩余余额 |
| | | if(orderPayRequest.getDeductionBalance().compareTo(member.getIntegral())<=Constants.ZERO){ |
| | | //更新余额信息 添加积分变动记录 |
| | | DealIntegralRequest dealIntegralRequest = new DealIntegralRequest(); |
| | | dealIntegralRequest.setIntegralNum(orderPayRequest.getDeductionBalance()); |
| | | 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); |
| | | //发送微信小程序订阅消息 |
| | | SendWxMessage.integralChangeNotice(member,orderPayRequest.getDeductionBalance()); |
| | | //余额全部抵扣 |
| | | if(goodsorder.getPrice().compareTo(BigDecimal.ZERO)==Constants.ZERO){ |
| | | goodsorder.setStatus(Constants.OrderStatus.PAY_DONE.getKey()); |
| | | goodsorder.setPayStatus(Constants.ONE); |
| | | goodsorder.setPayDate(new Date()); |
| | | goodsorderMapper.updateById(goodsorder); |
| | | PayResponse payResponse = new PayResponse(); |
| | | payResponse.setOrderId(goodsorder.getId()); |
| | | return payResponse; |
| | | } |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"余额不足,无法进行支付,当前剩余余额:【"+member.getIntegral()+"】!"); |
| | | } |
| | | } |
| | | if(goodsorder.getPrice().compareTo(orderPayRequest.getTitlePrice())!=Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"商品价格发生变化,请刷新后重新支付!"); |
| | | } |
| | | return this.wxPay(goodsorder,member); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class,BusinessException.class}) |
| | |
| | | dealIntegralRequest.setMemberId(member.getId()); |
| | | dealIntegralRequest.setObjId(goodsorder.getId()); |
| | | dealIntegralRequest.setOrderCode(goodsorder.getCode().toString()); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.MEMBER_ORDER); |
| | | integralService.dealIntegral(dealIntegralRequest); |
| | | } |
| | | |
| | |
| | | PayResponse payResponse = new PayResponse(); |
| | | payResponse.setOrderId(goodsorder.getId()); |
| | | payResponse.setPayType(Constants.ONE); |
| | | //发送通知 |
| | | if(Objects.nonNull(goodsorder.getPickUpShopId())){ |
| | | //发送站内信 - 经销商 |
| | | noticeService.orderPayNotice(goodsorder.getPickUpShopId(),goodsorder.getId(),goodsorder.getReceiveType()); |
| | | } |
| | | |
| | | |
| | | return payResponse; |
| | | } |
| | | |
| | |
| | | dealIntegralRequest.setMemberId(goodsorder.getMemberId()); |
| | | dealIntegralRequest.setObjId(goodsorder.getId()); |
| | | dealIntegralRequest.setOrderCode(goodsorder.getCode().toString()); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_CANCEL); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.MEMBER_ORDER_CANCEL); |
| | | integralService.dealIntegral(dealIntegralRequest); |
| | | } |
| | | //订单信息取消 |
| | |
| | | |
| | | SendWxMessage.orderCancel(goodsorder,memberMapper.selectById(goodsorder.getMemberId()),goodsName); |
| | | |
| | | |
| | | |
| | | //查询优惠券信息记录 |
| | | if(!Objects.isNull(goodsorder.getCouponId())){ |
| | | MemberCoupon memberCoupon = memberCouponMapper.selectById(goodsorder.getCouponId()); |
| | |
| | | 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()) )){ |
| | | || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey()) )){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"订单取消失败:订单状态已流转!"); |
| | | } |
| | | if(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO){ |
| | | if(Constants.formatBigdecimal(goodsorder.getPrice()).compareTo(BigDecimal.ZERO)>Constants.ZERO |
| | | && Constants.equalsObject(goodsorder.getPayStatus(),Constants.ONE) ){ |
| | | //微信现金退款 |
| | | String refundCode = WxMiniUtilService.wxRefund(goodsorder.getCode().toString(), goodsorder.getPrice(), goodsorder.getPrice()); |
| | | Fund fund = new Fund(); |
| | |
| | | fund.setNum(goodsorder.getPrice()); |
| | | fundMapper.insert(fund); |
| | | } |
| | | if(goodsorder.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){ |
| | | //订单已支付状态 , 使用了积分 且积分使用大于0 |
| | | if(goodsorder.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO |
| | | &&Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey())){ |
| | | //更新余额信息 添加积分变动记录 |
| | | DealIntegralRequest dealIntegralRequest = new DealIntegralRequest(); |
| | | dealIntegralRequest.setIntegralNum(goodsorder.getIntegral()); |
| | |
| | | dealIntegralRequest.setMemberId(goodsorder.getMemberId()); |
| | | dealIntegralRequest.setObjId(goodsorder.getId()); |
| | | dealIntegralRequest.setOrderCode(goodsorder.getCode().toString()); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER_CANCEL); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.MEMBER_ORDER_CANCEL); |
| | | integralService.dealIntegral(dealIntegralRequest); |
| | | } |
| | | //订单信息取消 |
| | |
| | | } |
| | | } |
| | | |
| | | //SendWxMessage.orderCancel(goodsorder,memberMapper.selectById(goodsorder.getMemberId()),goodsName); |
| | | // 用户主动取消 发送经销商站内消息 |
| | | if(Objects.nonNull(goodsorder.getPickUpShopId())&&StringUtils.isBlank(cancelInfo)){ |
| | | noticeService.orderCancelNotice(goodsorder.getPickUpShopId(),goodsorder.getId(),goodsorder.getCode().toString()); |
| | | } |
| | | |
| | | //查询优惠券信息记录 |
| | | if(!Objects.isNull(goodsorder.getCouponId())){ |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public BigDecimal getDeductAmount(List<PayDetailRequest> requestList){ |
| | | List<MemberCoupon> memberCouponList = new ArrayList<>(); |
| | |
| | | String couponNames = ""; |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(shareCouponRewardList)){ |
| | | List<MemberCoupon> memberCouponList = new ArrayList<>(); |
| | | List<CouponNoticeRequest> requestList = new ArrayList<>(); |
| | | for (JSONObject jsonObject:shareCouponRewardList) { |
| | | Integer couponId = jsonObject.getInteger("couponId"); |
| | | Integer num = jsonObject.getInteger("num"); |
| | |
| | | } |
| | | couponIds = couponIds + (StringUtils.isBlank(couponIds)? ",":"" )+ couponId ; |
| | | couponNames = couponNames + (StringUtils.isBlank(couponNames)? ",":"" )+ coupon.getName() ; |
| | | |
| | | |
| | | CouponNoticeRequest couponNoticeRequest = new CouponNoticeRequest(); |
| | | couponNoticeRequest.setMemberCoupon(memberCoupon); |
| | | couponNoticeRequest.setNum(num); |
| | | requestList.add(couponNoticeRequest); |
| | | } |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberCouponList)){ |
| | | memberCouponJoinMapper.insert(memberCouponList); |
| | | } |
| | | if(CollectionUtils.isNotEmpty(requestList)){ |
| | | //发送站内信 |
| | | noticeService.couponNotice(inviteMember.getId(),requestList); |
| | | } |
| | | } |
| | | inviteRecordMapper.update(new UpdateWrapper<InviteRecord>().lambda() |
| | |
| | | dealIntegralRequest.setMemberId(goodsorder.getDistributionShopId()); |
| | | dealIntegralRequest.setObjId(goodsorder.getId()); |
| | | dealIntegralRequest.setOrderCode(goodsorder.getCode().toString()); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.ORDER_DONATE); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.SHOP_ORDER); |
| | | Member member = memberMapper.selectById(goodsorder.getMemberId()); |
| | | if(Objects.nonNull(member)){ |
| | | dealIntegralRequest.setParam1(member.getNickname()); |
| | | } |
| | | integralService.dealShopIntegral(dealIntegralRequest); |
| | | } |
| | | } |
| | |
| | | dealIntegralRequest.setObjId(goodsorder.getId()); |
| | | dealIntegralRequest.setOrderCode(goodsorder.getCode().toString()); |
| | | dealIntegralRequest.setIntegralObjType(Constants.IntegralObjType.ORDER_DONE_AMOUNT); |
| | | dealIntegralRequest.setParam1(goodsorder.getCode().toString()); |
| | | integralService.dealShopAmount(dealIntegralRequest); |
| | | } |
| | | } |
| | |
| | | goodsorder.setIsComment(Constants.ONE); |
| | | goodsorderMapper.updateById(goodsorder); |
| | | } |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void orderRefund(Goodsorder param){ |
| | | Goodsorder goodsorder = goodsorderMapper.selectById(param.getId()); |
| | | if(!goodsorder.getMemberId().equals(goodsorder.getMemberId())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:用户信息匹配失败!"); |
| | | } |
| | | if(!goodsorder.getStatus().equals(Constants.OrderStatus.DONE.getKey())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:订单未完成,无法退款!"); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | @Override |
| | |
| | | )); |
| | | myPageResponse.setAfterOrders(aftersaleMapper.selectCount(new QueryWrapper<Aftersale>() |
| | | .apply(" ID in ( select g.id from goodsorder g where g.MEMBER_ID = '"+memberId+"' ) ") |
| | | .notIn("STATUS",Constants.AftersaleStatus.DONE,Constants.AftersaleStatus.SHOP_REFUSE,Constants.AftersaleStatus.CANCEL) |
| | | .notIn("STATUS",Constants.AftersaleStatus.DONE.getKey(),Constants.AftersaleStatus.SHOP_REFUSE.getKey(),Constants.AftersaleStatus.CANCEL.getKey()) |
| | | )); |
| | | |
| | | |
| | |
| | | .eq(Collect::getMemberId,member.getId()) |
| | | ) |
| | | ); |
| | | homeInfoResponse.setUnRead( |
| | | noticeMapper.selectCount(new QueryWrapper<Notice>().lambda() |
| | | .eq(Notice::getIsdeleted,Constants.ZERO) |
| | | .eq(Notice::getMemberId,member.getId()) |
| | | .eq(Notice::getStatus,Constants.ZERO) |
| | | )>=Constants.ZERO?Constants.ZERO:Constants.ONE |
| | | ); |
| | | |
| | | return homeInfoResponse; |
| | | } |