| | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 小程序支付下单API |
| | | * @param appPlaceOrderVo |
| | | * @param userId |
| | | * @param shopId |
| | | * @param goodsName |
| | | * @param outTradeNo |
| | | * @param orderId |
| | | * @param payMoney |
| | | * @param openid |
| | | * @param payerClientIp |
| | | */ |
| | | |
| | | private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId, |
| | | String goodsName, String outTradeNo, |
| | | String orderId, BigDecimal payMoney, |
| | | String openid, String payerClientIp){ |
| | | try { |
| | | |
| | | |
| | | |
| | | // 支付相关信息返回 |
| | | appPlaceOrderVo.setAppId(result.getAppId()); |
| | | appPlaceOrderVo.setMchId(config.getMchId()); |
| | | appPlaceOrderVo.setTimeStamp(result.getTimeStamp()); |
| | | appPlaceOrderVo.setNonceStr(result.getNonceStr()); |
| | | appPlaceOrderVo.setPackageStr(result.getPackageValue()); |
| | | appPlaceOrderVo.setSignType(result.getSignType()); |
| | | appPlaceOrderVo.setPaySign(result.getPaySign()); |
| | | appPlaceOrderVo.setPrepayId(result.getPackageValue()); |
| | | |
| | | // 保存支付订单统一下单日志 |
| | | paymentMessageService.savePaymentMessage("1", orderId, payRequestJson, payResponseJson); |
| | | |
| | | // 保存支付订单统一下单支付记录 |
| | | orderPaymentService.saveOrderPayment(userId, shopId, mainMchId, orderId, outTradeNo, payMoney, |
| | | appPlaceOrderVo.getEndTime(), "Y", openid, |
| | | goodsName, result.getPackageValue()); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * @param appPlaceActivityDto |
| | | * @return AppPlaceOrderVo |
| | |
| | | if (appUserOrderPageVoList != null && !appUserOrderPageVoList.isEmpty()) { |
| | | Long shopId; |
| | | String activityId; |
| | | Shop shop; |
| | | HashSet<Long> shopSet = new HashSet<Long>(); |
| | | HashSet<String> activitySet = new HashSet<String>(); |
| | | // 遍历订单列表,获取店铺ID和活动ID |
| | | for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) { |
| | | shopId = appUserOrderPageVo.getShopId(); |
| | | shopSet.add(shopId); |
| | |
| | | activitySet.add(activityId); |
| | | } |
| | | } |
| | | Map<Long, Shop> shopMap = new HashMap<>(); |
| | | shopSet.forEach(shopIdLong -> { |
| | | Shop shopTemp = remoteShopService.getShop(shopIdLong).getData(); |
| | | shopMap.put(shopIdLong, shopTemp); |
| | | }); |
| | | String shopJoinedString = String.join(",", shopSet.stream().map(Object::toString).collect(Collectors.toList())); |
| | | MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(shopJoinedString); |
| | | List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); |
| | | MgtSimpleShopVo simpleShopVo; |
| | | Integer delayTime = 30; |
| | | if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { |
| | | delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); |
| | | } |
| | | //处理订单回显 |
| | | for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) { |
| | | if(member.getBindingFlag()==0&&appUserOrderPageVo.getOrderFrom()==2){ |
| | | appUserOrderPageVo.setShopName("全部店铺"); |
| | | }else{ |
| | | shop = shopMap.get(appUserOrderPageVo.getShopId()); |
| | | appUserOrderPageVo.setShopName(shop.getShopName()); |
| | | appUserOrderPageVo.setShopServicePhone(shop.getShopServicePhone()); |
| | | simpleShopVo = shopMap.get(appUserOrderPageVo.getShopId()); |
| | | appUserOrderPageVo.setShopName(simpleShopVo.getShopName()); |
| | | appUserOrderPageVo.setShopServicePhone(simpleShopVo.getShopServicePhone()); |
| | | if (appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())) { |
| | | appUserOrderPageVo.setSameShop(1); |
| | | } else { |
| | |
| | | payRecord.setPayType(merVerifyOrderDto.getPayType()); |
| | | payRecordService.save(payRecord); |
| | | } |
| | | //更新用户消费统计 |
| | | //更新用户积分和消费统计 |
| | | MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); |
| | | memberTotalChangeDto.setUserId(order.getUserId()); |
| | | // 如果存在积分兑换比例,则计算积分 |
| | | if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) { |
| | | Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL); |
| | | BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue); |
| | | BigDecimal integralBig = moneyValueBig.multiply(order.getOnlinePayMoney()).setScale(0,BigDecimal.ROUND_HALF_UP); |
| | | Integer integral = Integer.valueOf(integralBig.toString()); |
| | | if(integral>0){ |
| | | memberTotalChangeDto.setChangeIntegral(integral); |
| | | memberTotalChangeDto.setTypeIntegral(1); |
| | | memberTotalChangeDto.setOrderId(orderId); |
| | | memberTotalChangeDto.setOrderNo(order.getOrderNo()); |
| | | } |
| | | } |
| | | //更新消费时间 |
| | | memberTotalChangeDto.setConsumeTime(nowTime); |
| | | remoteMemberService.changeMemberTotal(memberTotalChangeDto); |
| | | return merVerifyOrderVo; |
| | |
| | | MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo(); |
| | | // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象 |
| | | List<Goods> goodsList = verifyCouponGetVo.getGoodsList(); |
| | | String relGoodsIds = memberCoupon.getRelGoodsIds(); |
| | | String[] relGoodsIdArr = relGoodsIds.split(","); |
| | | if(relGoodsIdArr.length!=goodsList.size()){ |
| | | throw new ServiceException(AppErrorConstant.GOODS_DOWN); |
| | | } |
| | | merVerifyCouponVo.setUserName(member.getRealName()); |
| | | merVerifyCouponVo.setUserMobile(member.getMobile()); |
| | | merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom()); |
| | | merVerifyCouponVo.setCouponName(memberCoupon.getCouponName()); |
| | | merVerifyCouponVo.setCreateTime(memberCoupon.getReceiveTime()); |
| | | // 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性 |
| | | List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream() |
| | | .map(goods -> { |
| | | MerCouponGoodsListVo merCouponGoods = new MerCouponGoodsListVo(); |
| | | merCouponGoods.setGoodsId(goods.getGoodsId()); |
| | | merCouponGoods.setGoodsName(goods.getGoodsName()); |
| | | if (goods.getGoodsType() == 1) { |
| | | merCouponGoods.setGoodsType("周期"); |
| | | } else if (goods.getGoodsType() == 2) { |
| | | merCouponGoods.setGoodsType("服务"); |
| | | } else if (goods.getGoodsType() == 3) { |
| | | merCouponGoods.setGoodsType("体验"); |
| | | } else if (goods.getGoodsType() == 4) { |
| | | merCouponGoods.setGoodsType("单品"); |
| | | } |
| | | // 设置其他属性 |
| | | return merCouponGoods; |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | List<MerCouponGoodsListVo> merCouponGoodsList = new ArrayList<>(); |
| | | MerCouponGoodsListVo merCouponGoods; |
| | | for(Goods goods : goodsList){ |
| | | if(goods.getGoodsStatus()!=1){ |
| | | throw new ServiceException(AppErrorConstant.GOODS_DOWN); |
| | | } |
| | | merCouponGoods = new MerCouponGoodsListVo(); |
| | | merCouponGoods.setGoodsId(goods.getGoodsId()); |
| | | merCouponGoods.setGoodsName(goods.getGoodsName()); |
| | | if (goods.getGoodsType() == 1) { |
| | | merCouponGoods.setGoodsType("周期"); |
| | | } else if (goods.getGoodsType() == 2) { |
| | | merCouponGoods.setGoodsType("服务"); |
| | | } else if (goods.getGoodsType() == 3) { |
| | | merCouponGoods.setGoodsType("体验"); |
| | | } else if (goods.getGoodsType() == 4) { |
| | | merCouponGoods.setGoodsType("单品"); |
| | | } |
| | | merCouponGoodsList.add(merCouponGoods); |
| | | } |
| | | // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList |
| | | merVerifyCouponVo.setGoodsList(merCouponGoodsList); |
| | | //生成服务 |
| | |
| | | SysUser sysUser; |
| | | if (member != null) { |
| | | sysUser = remoteUserService.getSysUser(member.getUserId()).getData(); |
| | | if(member.getBindingFlag()==1&&!member.getRelationShopId().equals(merNewOrderDto.getShopId())){ |
| | | throw new ServiceException(AppErrorConstant.USER_BINDING_ERROR); |
| | | } |
| | | } else { |
| | | //创建新用户 |
| | | String memberId = IdUtils.simpleUUID(); |
| | |
| | | // 初始化会员统计信息 |
| | | MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); |
| | | memberTotalChangeDto.setUserId(order.getUserId()); |
| | | // 如果存在积分兑换比例,则计算积分 |
| | | if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) { |
| | | // 如果存在积分兑换比例,则计算积分 2023-09-14改为核销后获取积分 |
| | | /*if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) { |
| | | Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL); |
| | | BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue); |
| | | BigDecimal integralBig = moneyValueBig.multiply(order.getPayMoney()).setScale(0,BigDecimal.ROUND_HALF_UP); |
| | | Integer integral = Integer.valueOf(integralBig.toString()); |
| | | memberTotalChangeDto.setChangeIntegral(integral); |
| | | memberTotalChangeDto.setTypeIntegral(1); |
| | | memberTotalChangeDto.setOrderId(orderId); |
| | | memberTotalChangeDto.setOrderNo(order.getOrderNo()); |
| | | } |
| | | if(integral>0){ |
| | | memberTotalChangeDto.setChangeIntegral(integral); |
| | | memberTotalChangeDto.setTypeIntegral(1); |
| | | memberTotalChangeDto.setOrderId(orderId); |
| | | memberTotalChangeDto.setOrderNo(order.getOrderNo()); |
| | | } |
| | | }*/ |
| | | // 设置会员支付金额和支付时间 |
| | | memberTotalChangeDto.setPayMoney(order.getPayMoney()); |
| | | memberTotalChangeDto.setPayTime(new Date()); |
| | |
| | | activityTotalChangeDto.setChangeNum(1); |
| | | activityTotalChangeDto.setMoney(order.getPayMoney()); |
| | | Integer userActivityNum = orderMapper.countUserActivityByActivity(order.getUserId(), order.getActivityId()); |
| | | //判断用户是否下过单 如果只有当前订单则为1 |
| | | if (userActivityNum == 1) { |
| | | activityTotalChangeDto.setPersonNum(1); |
| | | } else { |
| | |
| | | // 初始化会员统计信息 |
| | | MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); |
| | | memberTotalChangeDto.setUserId(order.getUserId()); |
| | | // 如果存在积分兑换比例,则计算积分 |
| | | // 如果存在积分兑换比例,则计算积分 2023-09-14改为核销后获取积分 |
| | | /*if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) { |
| | | Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL); |
| | | BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue); |
| | |
| | | // 更新会员统计信息 |
| | | remoteMemberService.changeMemberTotal(memberTotalChangeDto); |
| | | // 如果订单来源于活动,则更新活动统计信息 |
| | | //TODO 可考虑改成定时任务统一查询后增加 减少服务器压力但会增加延后性 |
| | | if (order.getOrderFrom() == 2) { |
| | | ActivityTotalChangeDto activityTotalChangeDto = new ActivityTotalChangeDto(); |
| | | activityTotalChangeDto.setActivityId(order.getActivityId()); |
| | |
| | | activityTotalChangeDto.setRefundNum(1); |
| | | activityTotalChangeDto.setMoney(order.getPayMoney()); |
| | | Integer userActivityNum = orderMapper.countUserActivityByActivity(order.getUserId(), order.getActivityId()); |
| | | //判断用户是否还有活动订单 无则减少人数 |
| | | if (userActivityNum > 0) { |
| | | activityTotalChangeDto.setPersonNum(1); |
| | | } else { |
| | | activityTotalChangeDto.setPersonNum(0); |
| | | } else { |
| | | activityTotalChangeDto.setPersonNum(1); |
| | | } |
| | | activityTotalChangeDto.setUserId(order.getUserId()); |
| | | remoteActivityService.changeActivityTotal(activityTotalChangeDto); |
| | |
| | | */ |
| | | @Override |
| | | public List<MerOrderPageVo> pageMerMemberPayOrder(Page page,MerMemberNoClearOrderDto merOrderPageDto){ |
| | | // 获取订单列表 |
| | | List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerMemberPayOrder(page, merOrderPageDto); |
| | | // 如果订单列表不为空 |
| | | if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) { |
| | | Long userId; |
| | | BigDecimal zeroBig = new BigDecimal("0.00"); |
| | | StringJoiner userIdSj = new StringJoiner(","); |
| | | // 遍历订单列表 |
| | | for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) { |
| | | userId = merOrderPageVo.getUserId(); |
| | | userIdSj.add(userId.toString()); |
| | | if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){ |
| | | // 如果未支付金额小于零,则设置为零 |
| | | if (merOrderPageVo.getUnPaidMoney().compareTo(zeroBig) < 0) { |
| | | merOrderPageVo.setUnPaidMoney(zeroBig); |
| | | } |
| | | } |
| | | // 获取用户列表 |
| | | MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); |
| | | mgtBaseBathDto.setIds(userIdSj.toString()); |
| | | List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); |
| | | // 将用户列表转换为Map,以便根据用户ID快速查找用户信息 |
| | | Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() |
| | | .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); |
| | | // 遍历订单列表 |
| | | for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) { |
| | | if(merOrderPageVo.getUserId()!=null&&userMap.get(merOrderPageVo.getUserId())!=null){ |
| | | // 如果订单的用户ID不为空,并且用户Map中存在对应的用户信息 |
| | | if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) { |
| | | // 设置订单的用户名、昵称和手机号 |
| | | merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName()); |
| | | merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName()); |
| | | merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile()); |
| | | }else{ |
| | | log.debug("订单merOrderPageVo"+merOrderPageVo.getOrderId()+"缺少用户"); |
| | | } else { |
| | | log.debug("订单merOrderPageVo" + merOrderPageVo.getOrderId() + "缺少用户"); |
| | | } |
| | | } |
| | | } |
| | |
| | | public ProfitSharingResult queryBill(String orderId) throws WxPayException { |
| | | OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId); |
| | | ProfitSharing profitSharing = profitSharingService.getByOrderId(orderId); |
| | | |
| | | ProfitSharingQueryRequest request = new ProfitSharingQueryRequest(); |
| | | request.setSubMchid("1650744551"); |
| | | request.setTransactionId(orderPayment.getTransactionId()); |