From 880d19ec94c1efbd7286075cd44cf123d55b7e34 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Sun, 2 Aug 2026 13:03:56 +0800 Subject: [PATCH 1/7] 11 --- .../mapper/CanteenDailyMenuMapper.xml | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml index 97c691e96..7da7b1a8f 100644 --- a/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml +++ b/pjcloud-canteen/pjcloud-canteen-biz/src/main/resources/mapper/CanteenDailyMenuMapper.xml @@ -30,28 +30,32 @@ - + SELECT DISTINCT + sp.id, + t.id AS tid, sp.name, sp.pic_url, t.hour_type, sp.price, - sp.category_id + sp.category_id, + sp.sort FROM canteen_daily_menu t LEFT JOIN canteen_spu sp - on t.spu_id=sp.id + ON t.spu_id = sp.id AND t.merchant_id = #{merchantId} + AND sp.category_id = #{categoryId} + AND sp.del_flag = 0 AND t.start_time = #{time} - And t.del_flag = 0 + AND t.del_flag = 0 - order by sp.sort asc + ORDER BY sp.sort ASC - select a.id, - a.refund_id, - a.parent_car_id, + \ No newline at end of file From f8f938b04c1c9794b2331e8f5c6ccb38262d509a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Sun, 2 Aug 2026 19:24:09 +0800 Subject: [PATCH 3/7] 111 --- .../impl/door/ThirdDoorApiServiceImpl.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java index 939723b06..69bb09c45 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/door/ThirdDoorApiServiceImpl.java @@ -213,25 +213,31 @@ public class ThirdDoorApiServiceImpl implements ThirdDoorApiService { DoorBaseVo doorBaseVo = new DoorBaseVo(); DoorApi.Api api = DoorApi.OPEN.setBaseUrl(doorConfig.getBaseUrl()); ThirdDoorLogEntity logEntity = api.getInitLogEntity(); + String requestUrl = api.getBaseUrl() + api.getUrl(); + String body = null; + Map> requestHeaders = null; try { dto.setLockNotifyUrl(doorConfig.getCallbackBaseUrl() + doorConfig.getCallbackLockUrl()); dto.setVideoNotifyUrl(doorConfig.getCallbackBaseUrl() + doorConfig.getCallbackVideoUrl()); logEntity.setReq(JSONUtil.toJsonStr(dto)); - String body = JSONUtil.toJsonStr(dto); - String res = api.getHttpRequest().header(apiCountersign(body)).body(body).execute().body(); + body = JSONUtil.toJsonStr(dto); + requestHeaders = apiCountersign(body); + String res = api.getHttpRequest().header(requestHeaders).body(body).execute().body(); if (ObjectUtil.isEmpty(res)) throw new RuntimeException("response响应为空"); logEntity.setRes(res); doorBaseVo = JSONUtil.toBean(res, DoorBaseVo.class); if (!doorBaseVo.isSuccess()) { - String errorLog = String.format("请求错误res|%s|url|%s|body|%s|", res, api, body); + String errorLog = String.format("|%s||open|请求错误|url|%s|headers|%s|body|%s|res|%s|", TAG, requestUrl, JSONUtil.toJsonStr(requestHeaders), body, res); log.error(errorLog); + logEntity.setError(errorLog); DoorOpenVo errorVo = new DoorOpenVo(); errorVo.setMessage(doorBaseVo.getMessage()); return errorVo; } } catch (Exception e) { - String error = String.format("|%s||volume|意外的错误error|%s|stack|%s|", TAG, e.getMessage(), Arrays.toString(e.getStackTrace())); - log.error(error); + String error = String.format("|%s||open|意外错误|url|%s|headers|%s|body|%s|exception|%s|message|%s|", + TAG, requestUrl, JSONUtil.toJsonStr(requestHeaders), body, e.getClass().getName(), e.getMessage()); + log.error(error, e); logEntity.setError(error); } finally { logEntity.setTimeConsuming(Long.toString(System.currentTimeMillis() - startTime)); From be3be6179ff2abaee59127b86e1a55b4d26995b4 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 6 Aug 2026 09:44:52 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E8=AF=AD=E9=9F=B3?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/service/impl/yyx/YyxServiceImpl.java | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/yyx/YyxServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/yyx/YyxServiceImpl.java index f20bdf5c3..1e43dceb3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/yyx/YyxServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/yyx/YyxServiceImpl.java @@ -3,7 +3,8 @@ package com.bsd.pjcloud.hard.service.impl.yyx; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; -import cn.hutool.http.HttpUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; import cn.hutool.json.JSON; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -40,6 +41,7 @@ public class YyxServiceImpl implements YyxService { public void send(Long mchId, Integer payPrice, String phone) { try { if (!ObjectUtil.isAllNotEmpty(mchId, payPrice, phone)) { + log.warn("|{}|发送语音跳过,参数不完整,mchId:|{}|payPrice:|{}|phone:|{}|", TAG, mchId, payPrice, phone); return; } // 查询商户绑定的云音箱设备 @@ -47,6 +49,7 @@ public class YyxServiceImpl implements YyxService { .in(HardManagerEntity::getType, List.of(HardTypeEnum.YYX.getType(), HardTypeEnum.YYX_WIFI.getType())) ); if (ObjectUtil.isEmpty(yyxList)) { + log.info("|{}|发送语音跳过,商户未绑定云音箱,mchId:|{}|payPrice:|{}|phone:|{}|", TAG, mchId, payPrice, phone); return; } @@ -71,13 +74,17 @@ public class YyxServiceImpl implements YyxService { } }); } catch (Exception e) { - log.error("|{}|发送失败,异常:{}", TAG, e.getMessage()); + log.error("|{}|发送语音异常,mchId:|{}|payPrice:|{}|phone:|{}|", TAG, mchId, payPrice, phone, e); } } // 发送语音 private boolean yyx4gHttpSend(String deviceId, String msg) { String msgid = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC) + RandomUtil.randomString(8); + String url = yyxConf.getUrl(); + String requestBody = null; + String responseBody = null; + long startTime = System.currentTimeMillis(); try { HashMap data = new HashMap<>(); data.put("cmd", "voice"); @@ -88,20 +95,30 @@ public class YyxServiceImpl implements YyxService { body.put("sbx_id", deviceId); body.put("agent_id", JSONUtil.toJsonStr(data)); - String res = HttpUtil.post(yyxConf.getUrl(), JSONUtil.toJsonStr(body)); - if (ObjectUtil.isEmpty(res)) { - log.error("|{}|4G版云音箱发送语音,发送失败,返回结果为空", TAG); + requestBody = JSONUtil.toJsonStr(body); + log.info("|{}|4G版云音箱发送语音,请求开始,url:|{}|deviceId:|{}|msgid:|{}|msg:|{}|requestBody:|{}|", TAG, url, deviceId, msgid, msg, requestBody); + + try (HttpResponse response = HttpRequest.post(url).body(requestBody).execute()) { + responseBody = response.body(); + log.info("|{}|4G版云音箱发送语音,请求完成,url:|{}|deviceId:|{}|msgid:|{}|httpStatus:|{}|contentType:|{}|timeConsumingMs:|{}|responseBody:|{}|", TAG, url, deviceId, msgid, response.getStatus(), response.header("Content-Type"), System.currentTimeMillis() - startTime, responseBody); + if (!response.isOk()) { + log.error("|{}|4G版云音箱发送语音,HTTP请求失败,url:|{}|deviceId:|{}|msgid:|{}|httpStatus:|{}|responseBody:|{}|", TAG, url, deviceId, msgid, response.getStatus(), responseBody); + return false; + } + } + + if (ObjectUtil.isEmpty(responseBody)) { + log.error("|{}|4G版云音箱发送语音,发送失败,返回结果为空,url:|{}|deviceId:|{}|msgid:|{}|requestBody:|{}|", TAG, url, deviceId, msgid, requestBody); return false; } - JSON resJson = JSONUtil.parse(res); + JSON resJson = JSONUtil.parse(responseBody); String requestId = resJson.getByPath("RequestId", String.class); if (ObjectUtil.isEmpty(requestId)) { - log.error("|{}|4G版云音箱发送语音,发送失败,返回结果错误res:|{}|", res, TAG); + log.error("|{}|4G版云音箱发送语音,发送失败,响应缺少RequestId,url:|{}|deviceId:|{}|msgid:|{}|requestBody:|{}|responseBody:|{}|", TAG, url, deviceId, msgid, requestBody, responseBody); } return true; } catch (Exception e) { - e.printStackTrace(); - log.error("|{}|4G版云音箱发送语音,发送失败,异常:{}", TAG, e.getMessage()); + log.error("|{}|4G版云音箱发送语音异常,url:|{}|deviceId:|{}|msgid:|{}|msg:|{}|requestBody:|{}|responseBody:|{}|timeConsumingMs:|{}|", TAG, url, deviceId, msgid, msg, requestBody, responseBody, System.currentTimeMillis() - startTime, e); return false; } } From 2560fb1ace54f177bd30a5fa4554510c8657f706 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Sun, 9 Aug 2026 13:26:37 +0800 Subject: [PATCH 5/7] 11 --- local.env | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/local.env b/local.env index ac3080116..a5024b3c0 100644 --- a/local.env +++ b/local.env @@ -1,4 +1,7 @@ MYSQL_HOST=123.157.250.162 MYSQL_PORT=33905 MYSQL_USER=root@sys -MYSQL_PWD=bsd.1799 \ No newline at end of file +MYSQL_PWD=bsd.1799 + +NACOS_HOST=127.0.0.1 +NACOS_PORT=8848 From 2b2969dc927e012ec79089af15e7cac949de52a8 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Sun, 9 Aug 2026 13:47:59 +0800 Subject: [PATCH 6/7] =?UTF-8?q?feat:=E5=88=B7=E6=96=B0=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wallet/controller/mch/MchManageController.java | 9 ++++++++- .../pjcloud/wallet/service/MchManageService.java | 9 ++++++++- .../service/impl/mch/MchManageServiceImpl.java | 14 +++++++++++++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java index 3662c09f4..ce2eada5b 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java @@ -188,6 +188,13 @@ public class MchManageController { return R.ok(); } + @Operation(summary = "刷新全部商户二维码", description = "刷新全部商户二维码") + @GetMapping("/refresh-all-qrcode") + @PreAuthorize("@pms.hasPermission('wallet_mchManage_refresh_qrcode')") + public R refreshAllQrcode() { + return R.ok(mchManageService.refreshAllQrcode()); + } + @Operation(summary = "分页查询", description = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('wallet_mchManage_view')") @@ -258,4 +265,4 @@ public class MchManageController { public List export(MchManageEntity mchManage, Long[] ids) { return mchManageService.list(Wrappers.lambdaQuery(mchManage).in(ArrayUtil.isNotEmpty(ids), MchManageEntity::getId, ids)); } -} \ No newline at end of file +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java index 6c9411f13..8c77c4c70 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/MchManageService.java @@ -54,6 +54,13 @@ public interface MchManageService extends IService { */ void refreshQrcode(Long mchId); + /** + * 刷新全部商户二维码 + * + * @return 处理的商户数量 + */ + int refreshAllQrcode(); + /** * 宁波银行登录 */ @@ -63,4 +70,4 @@ public interface MchManageService extends IService { * 判断用户是否能查看到所有食堂 */ boolean getIsConsumeUser(Long id); -} \ No newline at end of file +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java index bf5c9dd54..5f76ec807 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java @@ -362,6 +362,18 @@ public class MchManageServiceImpl extends ServiceImpl mchList = baseMapper.selectList( + new LambdaQueryWrapper().select(MchManageEntity::getId) + ); + mchList.forEach(mch -> refreshQrcode(mch.getId())); + return mchList.size(); + } + /** * 宁波银行登录 */ @@ -477,4 +489,4 @@ public class MchManageServiceImpl extends ServiceImpl Date: Sun, 9 Aug 2026 14:44:53 +0800 Subject: [PATCH 7/7] =?UTF-8?q?feat=EF=BC=9A=E6=9F=A5=E8=AF=A2=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/mapper/order/HardOrderMapper.java | 20 ++- .../impl/order/HardOrderServiceImpl.java | 115 +++--------------- .../mapper/order/HardOrderMapper.xml | 44 ++++--- 3 files changed, 66 insertions(+), 113 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java index c2def6879..0c9e6cbe8 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardOrderMapper.java @@ -57,11 +57,25 @@ public interface HardOrderMapper extends PjcloudBaseMapper { } default Page pageJoin(Page page, HardOrderDto dto) { - MPJLambdaWrapper wrapper = new MPJLambdaWrapper() - .selectAll(HardOrderEntity.class) + MPJLambdaWrapper wrapper = new MPJLambdaWrapper("a") + .selectAll(HardOrderEntity.class, HardOrderEntity::getMerchantType) + .selectAs("coalesce(mch.types, a.merchant_type)", HardOrderVo::getMerchantType) .selectAs(HardManagerEntity::getName, HardOrderVo::getHardName) .selectAs(HardManagerEntity::getType, HardOrderVo::getHardType) + .selectAs("u.name", HardOrderVo::getUsername) + .selectAs("u.phone", HardOrderVo::getUserMobile) + .selectAs("u.avatar", HardOrderVo::getUserAvatar) + .selectAs("user_dept.name", HardOrderVo::getUserDeptName) + .selectAs("mch.name", HardOrderVo::getMerchantName) + .selectAs("mch.logo_pic", HardOrderVo::getLogoPic) + .selectAs("w_m.wallet_type_id", HardOrderVo::getWalletTypeId) + .selectAs("w_t.unique_code", HardOrderVo::getWalletTypeUniqueCode) .leftJoin(HardManagerEntity.class, HardManagerEntity::getId, HardOrderEntity::getHardId) + .leftJoin("pjcloudx.sys_user u ON u.user_id = a.user_id AND u.tenant_id = a.tenant_id AND u.del_flag = '0'") + .leftJoin("pjcloudx.sys_dept user_dept ON user_dept.dept_id = a.user_dept_id AND user_dept.tenant_id = a.tenant_id AND user_dept.del_flag = '0'") + .leftJoin("pjcloudx_wallet.mch_manage mch ON mch.id = a.merchant_id AND mch.tenant_id = a.tenant_id AND mch.del_flag = '0'") + .leftJoin("pjcloudx_wallet.wallet_manage w_m ON w_m.id = a.wallet_id AND w_m.tenant_id = a.tenant_id AND w_m.del_flag = '0'") + .leftJoin("pjcloudx_wallet.wallet_type w_t ON w_t.id = w_m.wallet_type_id AND w_t.tenant_id = a.tenant_id AND w_t.del_flag = '0'") .eqIfExists(HardOrderEntity::getMerchantId, dto.getMerchantId()) .eqIfExists(HardOrderEntity::getUserId, dto.getUserId()) .eqIfExists(HardOrderEntity::getDeptId, dto.getDeptId()) @@ -179,4 +193,4 @@ public interface HardOrderMapper extends PjcloudBaseMapper { List shopGroupByTimeAndHourType(@Param("dto") PanelProductDto dto); List shopGroupByProduct(@Param("dto") PanelProductDto dto); -} \ No newline at end of file +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index d563abfbc..65ad1aecd 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -10,9 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.admin.api.dto.UserInfo; -import com.bsd.pjcloud.admin.api.entity.SysDept; import com.bsd.pjcloud.admin.api.entity.SysUser; -import com.bsd.pjcloud.admin.api.feign.RemoteDeptService; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.admin.api.vo.UserVO; @@ -38,7 +36,6 @@ import com.bsd.pjcloud.hard.api.dto.ali.AliMicropayDto; import com.bsd.pjcloud.hard.api.dto.ali.AliReverseDto; import com.bsd.pjcloud.hard.api.dto.hard.HandCancelActCodeDto; import com.bsd.pjcloud.hard.api.dto.hard.HardDoneHardQrCodeScanOrderDto; -import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto; import com.bsd.pjcloud.hard.api.dto.hard.HandCancelCodeDto; import com.bsd.pjcloud.hard.api.dto.hard.HardCreateOrderDto; import com.bsd.pjcloud.hard.api.dto.order.HardCreateCarDto; @@ -56,7 +53,6 @@ import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity; import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.entity.order.HardParentCarEntity; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity; -import com.bsd.pjcloud.hard.api.utils.HardUtil; import com.bsd.pjcloud.hard.api.vo.HardDoorFlowVo; import com.bsd.pjcloud.hard.api.vo.manager.HardManagerVo; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; @@ -64,10 +60,8 @@ import com.bsd.pjcloud.hard.api.vo.order.HardCreateHardQrCodeScanOrderVo; import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo; import com.bsd.pjcloud.hard.api.vo.wechat.WechatMicropayVo; import com.bsd.pjcloud.hard.mapper.HardThirdMiOrderMapper; -import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper; import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; import com.bsd.pjcloud.hard.service.*; -import com.bsd.pjcloud.hard.utils.RemoteBatchQueryUtil; import com.bsd.pjcloud.supermarket.api.feign.RemoteMallProductService; import com.bsd.pjcloud.supermarket.api.feign.RemoteShopSkuService; import com.bsd.pjcloud.supermarket.api.feign.RemoteSupermarketSpuService; @@ -107,8 +101,6 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import org.springframework.web.context.request.RequestAttributes; -import org.springframework.web.context.request.RequestContextHolder; import java.math.BigDecimal; import java.math.RoundingMode; @@ -117,6 +109,7 @@ import java.time.LocalTime; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * 订单表 @@ -150,7 +143,6 @@ public class HardOrderServiceImpl extends ServiceImpl list, HardOrderDto dto) { if (ObjectUtil.isEmpty(list)) return; - RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); - // 用户部门 - CompletableFuture deptFuture = CompletableFuture.runAsync(() -> { - RequestContextHolder.setRequestAttributes(requestAttributes); - List userIds = list.stream().map(HardOrderVo::getUserId).filter(ObjectUtil::isNotEmpty).distinct().toList(); - if (ObjectUtil.isNotEmpty(userIds)) { - List userList = userService.getUserDeptByIds(userIds).getData(); - if (ObjectUtil.isNotEmpty(userList)) { - Map map = CollectionUtils.convertMap(userList, UserVO::getUserId); - for (HardOrderVo item : list) { - UserVO userVO = map.get(item.getUserId()); - if (ObjectUtil.isEmpty(userVO)) continue; - item.setUsername(userVO.getName()); - item.setUserMobile(userVO.getPhone()); - item.setUserAvatar(userVO.getAvatar()); - } - } - } - }); - // 当前部门 - CompletableFuture currentDeptFuture = CompletableFuture.runAsync(() -> { - RequestContextHolder.setRequestAttributes(requestAttributes); - List deptIds = list.stream().map(HardOrderVo::getUserDeptId).filter(ObjectUtil::isNotEmpty).distinct().toList(); - if (ObjectUtil.isNotEmpty(deptIds)) { - Map deptList = deptService.getDeptByDeptIds(deptIds).getData(); - if (ObjectUtil.isNotEmpty(deptList)) { - for (HardOrderVo item : list) { - SysDept dept = deptList.get(item.getUserDeptId()); - if (ObjectUtil.isEmpty(dept)) continue; - item.setUserDeptName(dept.getName()); - } - } - } - }); - // 商户 - CompletableFuture mchFuture = CompletableFuture.runAsync(() -> { - RequestContextHolder.setRequestAttributes(requestAttributes); - List mchIds = list.stream().map(HardOrderVo::getMerchantId).filter(ObjectUtil::isNotEmpty).distinct().toList(); - if (ObjectUtil.isNotEmpty(mchIds)) { - R> mchList = remoteMchService.getByIds(mchIds); - if (ObjectUtil.isNotEmpty(mchList.getData())) { - WalletDataUtil.convertMchList(list, CollectionUtils.convertMap(mchList.getData(), MchManageVo::getId)); - } - } - }); - // 设备 - CompletableFuture deviceFuture = CompletableFuture.runAsync(() -> { - RequestContextHolder.setRequestAttributes(requestAttributes); - List hardIds = list.stream().map(HardOrderVo::getHardId).filter(ObjectUtil::isNotEmpty).distinct().toList(); - if (ObjectUtil.isNotEmpty(hardIds)) { - HardManagerDto hardManagerDto = new HardManagerDto(); - hardManagerDto.setIds(hardIds); - List hardList = hardManagerMapper.list(hardManagerDto); - if (ObjectUtil.isNotEmpty(hardList)) { - HardUtil.convertHardList(list, CollectionUtils.convertMap(hardList, HardManagerEntity::getId)); - } - } - }); - // 钱包 - CompletableFuture walletFuture = CompletableFuture.runAsync(() -> { - RequestContextHolder.setRequestAttributes(requestAttributes); - List walletIds = list.stream().map(HardOrderVo::getWalletId).filter(ObjectUtil::isNotEmpty).distinct().toList(); - if (ObjectUtil.isNotEmpty(walletIds)) { - List walletList = getWalletListByIds(walletIds); - Map walletMap = CollectionUtils.convertMap(walletList, WalletManageVo::getId); - for (HardOrderVo v : list) { - WalletManageVo target = walletMap.get(v.getWalletId()); - if (ObjectUtil.isEmpty(target)) continue; - v.setWalletTypeUniqueCode(target.getWalletTypeUniqueCode()); - } - } - }); - // 购物车 - if (dto.getIsFindCarList()) { - for (HardOrderVo v : list) { - if (ObjectUtil.isEmpty(v.getParentCarId())) continue; - List carList = hardCarService.getByParentCarId(v.getParentCarId()); - List carVoList = BeanUtils.toBean(carList, HardCarVo.class); - v.setCarList(carVoList); - } - } - CompletableFuture.allOf(deptFuture, mchFuture, deviceFuture, currentDeptFuture, walletFuture).join(); - } + if (!Boolean.TRUE.equals(dto.getIsFindCarList())) return; - private List getWalletListByIds(List walletIds) { - return RemoteBatchQueryUtil.queryByIds(walletIds, ids -> remoteWalletService.getWalletByIds(ids).getData()); + List parentCarIds = list.stream() + .map(HardOrderVo::getParentCarId) + .filter(ObjectUtil::isNotEmpty) + .distinct() + .toList(); + if (ObjectUtil.isEmpty(parentCarIds)) return; + + List carList = BeanUtils.toBean( + hardCarService.list(new LambdaQueryWrapper() + .in(HardCarEntity::getParentCarId, parentCarIds)), + HardCarVo.class + ); + Map> carMap = carList.stream() + .collect(Collectors.groupingBy(HardCarVo::getParentCarId)); + for (HardOrderVo order : list) { + if (ObjectUtil.isEmpty(order.getParentCarId())) continue; + order.setCarList(carMap.getOrDefault(order.getParentCarId(), Collections.emptyList())); + } } } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml index 7bf128c69..1e9895222 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardOrderMapper.xml @@ -203,7 +203,7 @@ a.user_id, a.user_dept_id, a.merchant_id, - a.merchant_type, + coalesce(mch.types, a.merchant_type) as merchant_type, a.merchant_dept_id, a.hard_id, a.dept_id, @@ -239,11 +239,36 @@ m.name as hardName, m.type as hardType, m.dept_id as hardTypeDeptId, + u.name as username, + u.phone as userMobile, + u.avatar as userAvatar, + user_dept.name as userDeptName, + mch.name as merchantName, + mch.logo_pic as logoPic, s.id as afterSaleId, s.no as afterSaleNo, - w_m.wallet_type_id as walletTypeId - from (select a.id + w_m.wallet_type_id as walletTypeId, + w_t.unique_code as walletTypeUniqueCode from hard_order a + left join hard_manager m + on m.id = a.hard_id and m.tenant_id = a.tenant_id and m.del_flag = '0' + left join pjcloudx.sys_user u + on u.user_id = a.user_id and u.tenant_id = a.tenant_id and u.del_flag = '0' + left join pjcloudx.sys_dept user_dept + on user_dept.dept_id = a.user_dept_id and user_dept.tenant_id = a.tenant_id and user_dept.del_flag = '0' + left join pjcloudx_wallet.mch_manage mch + on mch.id = a.merchant_id and mch.tenant_id = a.tenant_id and mch.del_flag = '0' + left join pjcloudx_wallet.wallet_manage w_m + on w_m.id = a.wallet_id and w_m.tenant_id = a.tenant_id and w_m.del_flag = '0' + left join pjcloudx_wallet.wallet_type w_t + on w_t.id = w_m.wallet_type_id and w_t.tenant_id = a.tenant_id and w_t.del_flag = '0' + left join (select tenant_id, order_id, max(id) as id + from hard_after_sale + where del_flag = '0' + group by tenant_id, order_id) sx + on sx.order_id = a.id and sx.tenant_id = a.tenant_id + left join hard_after_sale s + on s.id = sx.id and s.tenant_id = a.tenant_id and s.del_flag = '0' @@ -258,17 +283,6 @@ and s.no = #{dto.afterSaleNo} - - order by a.create_time desc, a.user_id desc) t - join hard_order a on a.id = t.id - left join hard_manager m on m.id = a.hard_id - left join pjcloudx_wallet.wallet_manage w_m on w_m.id = a.wallet_id - left join (select order_id, max(id) as id - from hard_after_sale - where tenant_id = 1 - group by order_id) sx on sx.order_id = a.id - left join hard_after_sale s on s.id = sx.id - and w_m.wallet_type_id = #{dto.walletTypeId} @@ -1086,4 +1100,4 @@ - \ No newline at end of file +