From 9c66102a4fae1922aac72dc153e3e76b5856bae3 Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期三, 24 一月 2024 15:07:01 +0800 Subject: [PATCH] 数据权限 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 338 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 269 insertions(+), 69 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 477cd68..b833e9c 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -46,6 +47,7 @@ import com.ruoyi.system.api.constant.DelayTaskEnum; import com.ruoyi.system.api.constant.SecurityConstant; import com.ruoyi.system.api.domain.dto.*; +import com.ruoyi.system.api.domain.poji.activity.Activity; import com.ruoyi.system.api.domain.poji.activity.ActivityRecord; import com.ruoyi.system.api.domain.poji.config.DelayTask; import com.ruoyi.system.api.domain.poji.goods.Goods; @@ -63,6 +65,7 @@ import lombok.extern.log4j.Log4j2; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -954,6 +957,41 @@ R<com.alibaba.fastjson.JSONObject> r = HuiFuTianXiaUtil.weixinPayment(outTradeNo, description, payMoney.doubleValue(), openid, request.getNotifyUrl()); if(r.getCode() != 200){ throw new ServiceException(r.getMsg()); + }else{ + new Thread(new Runnable() { + @Override + public void run() { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + int time = 0; + for (int i = 0; i < 13; i++) { + try { + time += (5000 * i); + Thread.sleep(time); + } catch (InterruptedException e) { + e.printStackTrace(); + } + R<WeixinPaymentNotifyVo> voR = HuiFuTianXiaUtil.queryPayment(outTradeNo, sdf.format(new Date())); + if(voR.getCode() == 200){ + WeixinPaymentNotifyVo data = voR.getData(); + //P:处理中;S:成功;F:失败;I: 初始(初始状态很罕见,请联系汇付技术人员处理); + String transStat = data.getTransStat(); + if("S".equals(transStat)){ + PartnerTransactionsResult transaction = new PartnerTransactionsResult(); + transaction.setOutTradeNo(data.getReqSeqId()); + payBack(transaction, data.getFeeFlag() == 1 ? BigDecimal.ZERO : new BigDecimal(data.getFeeAmount())); + return; + } + if("P".equals(transStat) || "F".equals(transStat)){ + continue; + } + log.error("支付失败,流水号:{}, 状态码:{}", outTradeNo, transStat); + return; + }else{ + log.error("支付查询失败!流水号:{},结果:{}", outTradeNo, voR.getMsg()); + } + } + } + }).start(); } com.alibaba.fastjson.JSONObject data = r.getData(); String mainMchId = WxPayConfiguration.getPlatformTyMacId(); @@ -1229,7 +1267,12 @@ } appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); // 小程序微信下单支付 - createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo, +// createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo, +// orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(), +// appPlaceActivityDto.getSpbillCreateIp()); + + // 小程序微信下单支付 TODO 更换支付渠道(汇付天下) + createWxPayInfo1(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo, orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(), appPlaceActivityDto.getSpbillCreateIp()); //生成自动取消订单延时任务 @@ -1313,11 +1356,104 @@ //处理订单回显 for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) { if(member.getBindingFlag()==0&&appUserOrderPageVo.getOrderFrom()==2){ - appUserOrderPageVo.setShopName("全部店铺"); + //查询秒杀活动的参与店铺 + R<Activity> activity = remoteActivityService.getActivity(appUserOrderPageVo.getActivityId()); + if(activity.getCode() != 200){ + throw new RuntimeException(activity.getMsg()); + } + Activity data = activity.getData(); + if(data.getAreaFlag() == 1){ + appUserOrderPageVo.setShopNumber(0); + appUserOrderPageVo.setShopName("全部店铺"); + } + if(data.getAreaFlag() == 2 && data.getShopFlag() == 1){ + String designatedArea = data.getDesignatedArea(); + String[] split = designatedArea.split(","); + List<String> list = Arrays.asList(split); + R<List<Shop>> listR = remoteShopService.listShopByCityCode(list); + if(listR.getCode() != 200){ + throw new RuntimeException(listR.getMsg()); + } + List<Shop> data1 = listR.getData(); + appUserOrderPageVo.setShopNumber(1); + appUserOrderPageVo.setShopName(JSON.toJSONString(data1)); + } + if(data.getShopFlag() == 2){ + String applicableShop = data.getApplicableShop(); + String[] split = applicableShop.split(","); + List<String> list = Arrays.asList(split); + R<List<Shop>> listR = remoteShopService.listShopByIds(list); + if(listR.getCode() != 200){ + throw new RuntimeException(listR.getMsg()); + } + List<Shop> data1 = listR.getData(); + appUserOrderPageVo.setShopNumber(1); + appUserOrderPageVo.setShopName(JSON.toJSONString(data1)); + } + }else if(member.getBindingFlag()==1&&appUserOrderPageVo.getOrderFrom()==2){ + Long relationShopId = member.getRelationShopId(); + R<Shop> shop = remoteShopService.getShop(relationShopId); + if(shop.getCode() != 200){ + throw new RuntimeException(shop.getMsg()); + } + Shop data1 = shop.getData(); + //查询秒杀活动的参与店铺 + R<Activity> activity = remoteActivityService.getActivity(appUserOrderPageVo.getActivityId()); + if(activity.getCode() != 200){ + throw new RuntimeException(activity.getMsg()); + } + Activity data = activity.getData(); + if(data.getAreaFlag() == 1){ + appUserOrderPageVo.setShopNumber(2); + appUserOrderPageVo.setShopName(data1.getShopName()); + appUserOrderPageVo.setShopServicePhone(data1.getShopServicePhone()); + } + if(data.getAreaFlag() == 2 && data.getShopFlag() == 1){ + String designatedArea = data.getDesignatedArea(); + String[] split = designatedArea.split(","); + List<String> list = Arrays.asList(split); + R<List<Shop>> listR = remoteShopService.listShopByCityCode(list); + if(listR.getCode() != 200){ + throw new RuntimeException(listR.getMsg()); + } + List<Shop> data2 = listR.getData(); + List<Long> collect = data2.stream().map(Shop::getShopId).collect(Collectors.toList()); + if(collect.contains(relationShopId)){ + appUserOrderPageVo.setShopNumber(2); + appUserOrderPageVo.setShopName(data1.getShopName()); + appUserOrderPageVo.setShopServicePhone(data1.getShopServicePhone()); + }else{ + appUserOrderPageVo.setShopNumber(1); + appUserOrderPageVo.setShopName(JSON.toJSONString(data2)); + } + } + if(data.getShopFlag() == 2){ + String applicableShop = data.getApplicableShop(); + String[] split = applicableShop.split(","); + List<String> list = Arrays.asList(split); + R<List<Shop>> listR = remoteShopService.listShopByIds(list); + if(listR.getCode() != 200){ + throw new RuntimeException(listR.getMsg()); + } + List<Shop> data2 = listR.getData(); + List<Long> collect = data2.stream().map(Shop::getShopId).collect(Collectors.toList()); + if(collect.contains(relationShopId)){ + appUserOrderPageVo.setShopNumber(2); + appUserOrderPageVo.setShopName(data1.getShopName()); + appUserOrderPageVo.setShopServicePhone(data1.getShopServicePhone()); + }else{ + appUserOrderPageVo.setShopNumber(1); + appUserOrderPageVo.setShopName(JSON.toJSONString(data2)); + } + } + + + }else{ simpleShopVo = shopMap.get(appUserOrderPageVo.getShopId()); appUserOrderPageVo.setShopName(simpleShopVo.getShopName()); appUserOrderPageVo.setShopServicePhone(simpleShopVo.getShopServicePhone()); + appUserOrderPageVo.setShopNumber(2); if (appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())) { appUserOrderPageVo.setSameShop(1); } else { @@ -1508,11 +1644,6 @@ if (order.getOrderStatus() != 2) { throw new ServiceException(AppErrorConstant.VERIFY_USED); } - //判断商户是否有分账权限 - Shop shop = remoteShopService.getShop(shopId).getData(); - if(shop.getAccountFlag()!=1){ - throw new ServiceException(AppErrorConstant.SHOP_NO_VERIFY); - } // 根据订单用户ID获取用户信息 Member member = remoteMemberService.getMember(order.getUserId()).getData(); // 根据订单ID获取订单商品列表 @@ -1520,20 +1651,10 @@ //判断用户是否绑定 if(member.getBindingFlag()==1){ //绑定用户判断核销商户 - if(order.getOrderFrom()==2&&order.getUnbindingFlag()==1){ - if (!member.getRelationShopId().equals(shopId)) { - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); - } - //未绑定时下的活动订单只需要判断店铺是否支持 - String activityId = order.getActivityId(); - MerActivityShopDto merActivityShopDto = new MerActivityShopDto(); - merActivityShopDto.setShopId(shopId); - merActivityShopDto.setActivityId(activityId); - Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData(); - if(!judge){ - throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY); - } - }else{ + if (order.getOrderFrom()==2&&!member.getRelationShopId().equals(shopId)) { + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + if(order.getOrderFrom() == 1){ //商城订单和绑定后活动订单判断核销商户和订单商户和用户关联商户是否统一 if (!order.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); @@ -1671,12 +1792,16 @@ //获取核销商户 ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData(); Long shopId = shopRelUserVo.getShopId(); + log.info("当前核销员工【" + shopRelUserVo.getUserName() + "】门店ID:" + shopId); //获取订单商品列表 List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); //绑定用户判断核销商户 if(member.getBindingFlag()==1){ //未绑定的活动订单只需要判断店铺是否支持 - if(order.getOrderFrom()==2&&order.getUnbindingFlag()==1){ + if(order.getOrderFrom()==2 && !member.getRelationShopId().equals(shopId)){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + if(order.getOrderFrom()==2 && member.getRelationShopId().equals(shopId)){ String activityId = order.getActivityId(); MerActivityShopDto merActivityShopDto = new MerActivityShopDto(); merActivityShopDto.setShopId(shopId); @@ -1684,11 +1809,6 @@ Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData(); if(!judge){ throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY); - } - }else{ - //绑定用户需直接判断商户一致 - if (!order.getShopId().equals(shopId)) { - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } }else{ @@ -1897,10 +2017,14 @@ } this.saveOrUpdate(order); // 订单金额大于0时进行分账 - if (order.getOnlinePayMoney().compareTo(BigDecimal.ZERO)>0) { + OrderPayment orderPayment = orderPaymentService.getOne(new QueryWrapper<OrderPayment>() + .eq("order_id", order.getOrderId()).eq("pay_status", 2) + .eq("del_flag", 0)); + BigDecimal bigDecimal = orderPayment.getPayMoney().subtract(orderPayment.getFeeAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN); + if (bigDecimal.compareTo(BigDecimal.ZERO)>0) { // TODO: 2023/10/17 更换分账渠道(汇付天下) // submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney(),order.getOrderFrom()); - submitProfitSharing1(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney(),order.getOrderFrom()); + submitProfitSharing1(orderId, order.getOrderNo(), order.getShopId(), bigDecimal, order.getOrderFrom()); } //创建支付记录 if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){ @@ -2061,7 +2185,11 @@ BigDecimal proportionPercent = null; //商户订单获取统一分成 活动订单获取活动分成 if(orderFrom==1){ - proportionPercent = new BigDecimal(vo.getShareRatio()); + if(null == vo.getShareRatio()){ + proportionPercent = new BigDecimal(redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION).toString()); + }else{ + proportionPercent = new BigDecimal(vo.getShareRatio()); + } }else{ R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId); shopProportion = resultShopProportion.getData(); @@ -2079,7 +2207,7 @@ if(proportionPercent.compareTo(BigDecimal.ZERO)>0){ PaymentDelaytransHFTXVo result = new PaymentDelaytransHFTXVo(); // 计算分成金额 - int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue(); + int amount = orderMoney.multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).intValue(); BigDecimal multiply = orderMoney.multiply(proportionPercent.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_EVEN); log.info("订单分账:{} 分账金额: {}", orderNo, amount); if (amount > 0) { @@ -2096,15 +2224,21 @@ //分账对象 JSONArray acctInfos = new JSONArray(); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("div_amt", String.format("%.2f", multiply.doubleValue())); - jsonObject.put("huifu_id", vo.getHuifuId()); + if(multiply.compareTo(BigDecimal.ZERO) > 0){ + JSONObject jsonObject = new JSONObject(); + jsonObject.put("div_amt", String.format("%.2f", multiply.doubleValue())); + jsonObject.put("huifu_id", vo.getHuifuId()); + acctInfos.add(jsonObject); + } //平台商户 - double pt_amount = orderMoney.subtract(multiply).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); - JSONObject jsonObject1 = new JSONObject(); - jsonObject1.put("div_amt", String.format("%.2f", pt_amount)); - jsonObject1.put("huifu_id", "6666000141216769"); - acctInfos.add(jsonObject1); + BigDecimal pt_amount = orderMoney.subtract(multiply).setScale(2, RoundingMode.HALF_EVEN); + if(pt_amount.compareTo(BigDecimal.ZERO) > 0){ + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("div_amt", String.format("%.2f", pt_amount.doubleValue())); + jsonObject1.put("huifu_id", "6666000141216769"); + acctInfos.add(jsonObject1); + } + R<PaymentDelaytransHFTXVo> hftxVoR = HuiFuTianXiaUtil.paymentDelaytrans(request.getOutOrderNo(), org_req_date, outTradeNo, acctInfos); if(hftxVoR.getCode() != 200){ throw new ServiceException(hftxVoR.getMsg()); @@ -2840,7 +2974,7 @@ // 根据用户ID列表获取用户信息 MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); mgtBaseBathDto.setIds(userIdSj.toString()); - List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); + List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userIdSj.toString()).getData(); Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); // 遍历订单列表,设置用户信息 @@ -3000,13 +3134,14 @@ .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); mgtBaseBathDto = new MgtBaseBathDto(); mgtBaseBathDto.setIds(userJoinedString); - List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); + List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData(); Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); // 遍历列表,设置店铺名称、用户名称和未支付金额 for (MgtActivityOrderPageVo mgtActivityOrderPageVo : activityOrderPageVoList) { if(mgtActivityOrderPageVo.getShopId()!=null){ - mgtActivityOrderPageVo.setShopName(shopMap.get(mgtActivityOrderPageVo.getShopId()).getShopName()); + MgtSimpleShopVo mgtSimpleShopVo = shopMap.get(mgtActivityOrderPageVo.getShopId()); + mgtActivityOrderPageVo.setShopName(null == mgtSimpleShopVo ? "" : mgtSimpleShopVo.getShopName()); } if (userMap.get(mgtActivityOrderPageVo.getUserId()) != null) { @@ -3125,7 +3260,7 @@ String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList())); MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); mgtBaseBathDto.setIds(userJoinedString); - List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); + List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData(); userMap = simpleMemberVoList.stream() .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); } @@ -3176,8 +3311,6 @@ Order order = this.getById(orderId); // 获取会员信息 Member member = remoteMemberService.getMember(order.getUserId()).getData(); - // 获取商店信息 - Shop shop = remoteShopService.getShop(order.getShopId()).getData(); // 获取订单商品详细信息 List<MgtOrderGoodsDetailVo> orderGoodsDetailVoList = orderGoodsService.listMgtVoByOrderId(orderId); // 设置MgtOrderDetailVo属性 @@ -3207,6 +3340,7 @@ } // 设置订单编号 mgtOrderDetailVo.setOrderNo(order.getOrderNo()); + mgtOrderDetailVo.setOutTradeNo(order.getOutTradeNo()); // 设置订单来源 switch (order.getOrderFrom()) { case 1: @@ -3237,10 +3371,12 @@ mgtOrderDetailVo.setCancelTime(order.getCancelTime()); mgtOrderDetailVo.setOrderRemark(order.getOrderRemark()); mgtOrderDetailVo.setShopId(order.getShopId()); - if (shop != null) { + if (3 == order.getOrderStatus()) { + // 获取商店信息 + Shop shop = remoteShopService.getShop(order.getShopId()).getData(); mgtOrderDetailVo.setShopName(shop.getShopName()); } else { - mgtOrderDetailVo.setShopName("商户已被删除"); + mgtOrderDetailVo.setShopName(""); } mgtOrderDetailVo.setVerifyTime(order.getUseTime()); //获取支付记录 @@ -3819,14 +3955,52 @@ List<Long> userIdList = new ArrayList<>(); if (mgtBasePlatformDto.getUserId() != null) { userIdList.add(mgtBasePlatformDto.getUserId()); - } else { - MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); - mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId()); - mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData(); - userIdList = mgtUserIdByDept.getUserIdList(); + } + else { + // 如果当前登陆人的可视权限是仅个人 只选择了部门也只能看自己的数据 + SysUser sysUser = SecurityUtils.getSysUser(); + if (sysUser.getDataScope().equals("5")){ + userIdList.add(sysUser.getUserId()); + }else{ + MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); + mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getDeptId()); + mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData(); + userIdList = mgtUserIdByDept.getUserIdList(); + } } if (!userIdList.isEmpty()) { mgtBasePlatformDto.setUserIdList(userIdList); + } + }else{ + // 没有选择筛选部门和员工 获取当前登陆人的可视权限 + SysUser sysUser = SecurityUtils.getSysUser(); + // 如果当前登陆人是查看个人数据 + Long userId1 = null; + // 如果当前登陆人权限是查看部门数据 + List<Long> userList = new ArrayList<>(); + if (sysUser!=null){ + String dataScope = sysUser.getDataScope(); + if (!sysUser.getUserName().equals("admin")){ + if (org.springframework.util.StringUtils.hasLength(dataScope)){ + switch (dataScope){ + case "3": + // 本部门数据 查询当前登陆人属于哪个部门 查询这个部门下所有员工关联的所有店铺 + MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); + mgtUserIdByDept.setDeptId(sysUser.getDeptId()); + mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData(); + userList = mgtUserIdByDept.getUserIdList(); + mgtBasePlatformDto.setDeptId(sysUser.getDeptId()); + mgtBasePlatformDto.setUserIdList(userList); + case "5": + // 仅个人数据 查询当前登陆人关联店铺下的用户 + userId1 = sysUser.getUserId(); + userList.add(userId1); + mgtBasePlatformDto.setDeptId(sysUser.getDeptId()); + mgtBasePlatformDto.setUserIdList(userList); + break; + } + } + } } } MgtTotalOrderTotalVo mgtTotalOrderTotalVo = new MgtTotalOrderTotalVo(); @@ -3837,6 +4011,7 @@ mgtTotalOrderTotalVo.setCycleTotal(0); mgtTotalOrderTotalVo.setExperienceTotal(0); mgtTotalOrderTotalVo.setServiceTotal(0); + mgtTotalOrderTotalVo.setItemTotal(0); mgtTotalOrderTotalVo.setOrderMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setOnlineMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setOfflineMoney(new BigDecimal("0")); @@ -3844,6 +4019,7 @@ mgtTotalOrderTotalVo.setCycleMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setExperienceMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setServiceMoney(new BigDecimal("0")); + mgtTotalOrderTotalVo.setItemMoney(new BigDecimal("0")); mgtTotalOrderTotalVo.setOrderTotalKey(new String[0]); mgtTotalOrderTotalVo.setOrderTotalValue(new Integer[0]); mgtTotalOrderTotalVo.setOrderMoneyValue(new BigDecimal[0]); @@ -3851,6 +4027,7 @@ mgtTotalOrderTotalVo.setGoodsTypeMoneyList(Lists.newArrayList()); mgtTotalOrderTotalVo.setGoodsRankList(Lists.newArrayList()); mgtTotalOrderTotalVo.setOrderFromRankList(Lists.newArrayList()); + List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); if (mgtBasePlatformDto.getUserId() != null || StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) { if(shopIdList==null||shopIdList.isEmpty()){ @@ -3867,7 +4044,7 @@ mgtTotalOrderTotalVo.setOrderTotal(totalOrderTotalVo.getOrderTotal()); mgtTotalOrderTotalVo.setOnlineTotal(totalOrderTotalVo.getOnlineTotal()); mgtTotalOrderTotalVo.setOfflineTotal(totalOrderTotalVo.getOfflineTotal()); - mgtTotalOrderTotalVo.setActivityTotal(0); + mgtTotalOrderTotalVo.setActivityTotal(totalOrderTotalVo.getActivityTotal()); mgtTotalOrderTotalVo.setOrderMoney(totalOrderTotalVo.getOrderMoney()); mgtTotalOrderTotalVo.setOnlineMoney(totalOrderTotalVo.getOnlineMoney()); mgtTotalOrderTotalVo.setOfflineMoney(totalOrderTotalVo.getOfflineMoney()); @@ -3880,6 +4057,8 @@ mgtTotalOrderTotalVo.setCycleMoney(BigDecimal.ZERO); mgtTotalOrderTotalVo.setServiceTotal(0); mgtTotalOrderTotalVo.setServiceMoney(BigDecimal.ZERO); + mgtTotalOrderTotalVo.setItemTotal(0); + mgtTotalOrderTotalVo.setItemMoney(BigDecimal.ZERO); mgtTotalOrderTotalVo.setExperienceTotal(0); mgtTotalOrderTotalVo.setExperienceMoney(BigDecimal.ZERO); if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) { @@ -3916,6 +4095,8 @@ } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) { mgtMapIntTotalVo.setMapKey("单品"); mgtMapBigTotalVo.setMapKey("单品"); + mgtTotalOrderTotalVo.setItemTotal(mgtTotalOrderTotalVo.getItemTotal() + MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); + mgtTotalOrderTotalVo.setItemMoney(mgtTotalOrderTotalVo.getItemMoney().add(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond())); noGoods = false; } goodsTypeTotalList.add(mgtMapIntTotalVo); @@ -5002,7 +5183,7 @@ String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList())); MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); mgtBaseBathDto.setIds(userJoinedString); - List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); + List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userJoinedString).getData(); userMap = simpleMemberVoList.stream() .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); } @@ -5062,6 +5243,9 @@ try { redissonLock.lock(30, TimeUnit.SECONDS); Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId()); + if(null == surpNum){ + surpNum = 0; + } redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum()); } finally { redissonLock.unlock(); @@ -5112,7 +5296,7 @@ @Override @Transactional @GlobalTransactional(rollbackFor = Exception.class) - public void payBack(PartnerTransactionsResult transaction) { + public void payBack(PartnerTransactionsResult transaction, BigDecimal feeAmount) { log.info("订单支付回调---"+transaction.toString()); // Order order = this.getById(orderId); // 更新订单状态 outTradeNo @@ -5166,12 +5350,8 @@ goodsTotalChangeDto.setChangeType(1); goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum()); goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney()); - Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId()); - if (bugGoodsNum == null || bugGoodsNum < 1) { - goodsTotalChangeDto.setPersonNum(1); - }else{ - goodsTotalChangeDto.setPersonNum(0); - } + Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(orderGoods.getGoodsId()); + goodsTotalChangeDto.setPersonNum(bugGoodsNum); goodsTotalChangeDtoList.add(goodsTotalChangeDto); } //更新商品统计 @@ -5246,7 +5426,7 @@ profitsSharingService.applyProfitSharing(request);*/ } //修改支付记录生成支付记录 - orderPaymentService.updatePaySuccess(transaction.getOutTradeNo(), transaction.getTransactionId()); + orderPaymentService.updatePaySuccess(transaction.getOutTradeNo(), feeAmount, transaction.getTransactionId()); PayRecord payRecord = new PayRecord(); payRecord.setDelFlag(0); payRecord.setOrderId(orderId); @@ -5327,6 +5507,9 @@ try { redissonLock.lock(30, TimeUnit.SECONDS); Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId()); + if(null == surpNum){ + surpNum = 0; + } redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum()); } finally { redissonLock.unlock(); @@ -5377,12 +5560,8 @@ goodsTotalChangeDto.setChangeType(2); goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum()); goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney()); - Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId()); - if (bugGoodsNum == null || bugGoodsNum <= orderGoods.getBuyNum()) { - goodsTotalChangeDto.setPersonNum(1); - }else{ - goodsTotalChangeDto.setPersonNum(0); - } + Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(orderGoods.getGoodsId()); + goodsTotalChangeDto.setPersonNum(bugGoodsNum); goodsTotalChangeDtoList.add(goodsTotalChangeDto); } remoteGoodsService.changeGoodsTotal(goodsTotalChangeDtoList); @@ -6064,6 +6243,9 @@ try { redissonLock.lock(30, TimeUnit.SECONDS); Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId()); + if(null == surpNum){ + surpNum = 0; + } redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum()); } finally { redissonLock.unlock(); @@ -6143,7 +6325,7 @@ // 获取用户列表 MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); mgtBaseBathDto.setIds(userIdSj.toString()); - List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); + List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(userIdSj.toString()).getData(); // 将用户列表转换为Map,以便根据用户ID快速查找用户信息 Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); @@ -6224,4 +6406,22 @@ ProfitSharingResult profitSharingResult = wxService.getEcommerceService().queryProfitSharing(request); return profitSharingResult; } + + @Override + public List<String> getActivityOrderGoods(String activityId) { + List<Order> orders = this.baseMapper.selectList(new QueryWrapper<Order>() + .eq("del_flag", 0) + .in("order_status", Arrays.asList(1, 2, 3)) + .eq("activity_id", activityId) + ); + if(orders.size() > 0){ + List<String> collect = orders.stream().map(Order::getOrderId).collect(Collectors.toList()); + List<OrderGoods> list = orderGoodsService.list(new QueryWrapper<OrderGoods>() + .eq("del_flag", 0) + .in("order_id", collect) + ); + return list.stream().map(OrderGoods::getGoodsId).collect(Collectors.toList()); + } + return new ArrayList<>(); + } } -- Gitblit v1.7.1