From 6608a86825d02fe9ec298481aa7d1bedf6d15235 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 11 Jun 2026 14:11:06 +0800 Subject: [PATCH 01/13] =?UTF-8?q?feat:=E7=94=A8=E6=88=B7=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pjcloud/admin/controller/SysUserController.java | 11 ++++++++++- .../bsd/pjcloud/admin/service/SysUserService.java | 7 ++----- .../admin/service/impl/SysUserServiceImpl.java | 7 +------ .../wallet/controller/WalletManageController.java | 13 +++++++++++-- .../service/impl/WalletManageServiceImpl.java | 3 --- 5 files changed, 24 insertions(+), 17 deletions(-) diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java index f8dd82402..87c9c5ba5 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/controller/SysUserController.java @@ -41,6 +41,7 @@ import com.bsd.pjcloud.common.core.constant.CommonConstants; import com.bsd.pjcloud.common.core.exception.ErrorCodes; import com.bsd.pjcloud.common.core.util.MsgUtils; import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.excel.annotation.RequestExcel; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; import com.bsd.pjcloud.common.log.annotation.SysLog; @@ -61,6 +62,7 @@ import jakarta.annotation.PostConstruct; import jakarta.validation.Valid; import lombok.AllArgsConstructor; +import lombok.Data; import org.apache.commons.lang3.StringUtils; import org.springdoc.core.annotations.ParameterObject; import org.springframework.http.HttpHeaders; @@ -276,9 +278,16 @@ public class SysUserController { @PostMapping("/page") public R getUserPage(@ParameterObject Page page, @RequestBody UserDTO userDTO) { userDTO.setIsFindCheckUser(true); - return R.ok(userService.getUsersWithRolePage(page, userDTO)); + return R.ok(userService.getUsersWithRolePage(page, userDTO, DataScope.of())); } + @PostMapping("/select") + public R userPage(@ParameterObject Page page, @RequestBody UserDTO userDTO) { + userDTO.setIsFindCheckUser(true); + return R.ok(userService.getUsersWithRolePage(page, userDTO, null)); + } + + /** * 分页查询用户 */ diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java index f6ef0be3d..0f2f66436 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/SysUserService.java @@ -29,6 +29,7 @@ import com.bsd.pjcloud.admin.api.dto.UserInfo; import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.vo.*; import com.bsd.pjcloud.common.core.util.R; +import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.flow.task.dto.ProcessNodeRecordAssignUserParamDto; import org.springframework.validation.BindingResult; @@ -57,12 +58,8 @@ public interface SysUserService extends IService { /** * 分页查询用户信息(含有角色信息) - * - * @param page 分页对象 - * @param userDTO 参数列表 - * @return */ - IPage getUsersWithRolePage(Page page, UserDTO userDTO); + IPage getUsersWithRolePage(Page page, UserDTO userDTO, DataScope dataScope); IPage innerPage(Page page, UserDTO userDTO); diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java index 61bef5e74..4d55ea7cc 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java @@ -271,14 +271,9 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * 分页查询用户信息(含有角色信息) - * - * @param page 分页对象 - * @param userDTO 参数列表 - * @return */ @Override - public IPage getUsersWithRolePage(Page page, UserDTO userDTO) { - DataScope dataScope = DataScope.of(); + public IPage getUsersWithRolePage(Page page, UserDTO userDTO, DataScope dataScope) { dataScope.setScopeUserName(null); IPage list = baseMapper.getUserVosPage(page, userDTO, dataScope); if (ObjectUtil.isNotEmpty(list.getRecords())) { diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java index 6ca9cc5b5..994426c42 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java @@ -1,4 +1,5 @@ package com.bsd.pjcloud.wallet.controller; + import com.bsd.pjcloud.common.api.encrypt.annotation.crypto.ApiCryptoAes; import cn.hutool.core.collection.CollUtil; @@ -52,7 +53,7 @@ public class WalletManageController { /* ************************************* start android start ************************************* */ - @Operation(summary = "根据短码查询加密信息", description = "根据短码查询加密信息") + @Operation(summary = "获取用户的钱包列表", description = "获取用户的钱包列表") @GetMapping("/ad/wallet/list") public R> adWalletList(@RequestParam Long userId) { WalletManageDto dto = new WalletManageDto(); @@ -189,6 +190,14 @@ public class WalletManageController { /* ************************************* start app start ************************************* */ + @Operation(summary = "查询用户的直属商户", description = "查询用户的直属商户") + @ApiCryptoAes + @GetMapping("/app/get") + public R appZsMch() { + return R.ok(); + } + + @Operation(summary = "分页查询", description = "分页查询") @ApiCryptoAes @GetMapping("/app/get-all") @@ -197,7 +206,7 @@ public class WalletManageController { WalletManageDto dto = new WalletManageDto(); dto.setUserId(user.getId()); DataScope dataScope = null; - return R.ok(walletManageService.appPageList(user,page, dto, dataScope)); + return R.ok(walletManageService.appPageList(user, page, dto, dataScope)); } @Operation(summary = "分页查询", description = "分页查询") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java index c79f418bd..3a066b241 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletManageServiceImpl.java @@ -71,9 +71,6 @@ import java.util.concurrent.CopyOnWriteArrayList; /** * 钱包管理 - * - * @author dzc - * @date 2024-12-30 09:06:35 */ @Validated @Slf4j From 38d1acf27a89d07f6880ffd99542d38a82a4c242 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 11 Jun 2026 14:18:15 +0800 Subject: [PATCH 02/13] 11 --- .../bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java index 4d55ea7cc..55505f7cf 100644 --- a/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java +++ b/pjcloud-upms/pjcloud-upms-biz/src/main/java/com/bsd/pjcloud/admin/service/impl/SysUserServiceImpl.java @@ -274,7 +274,9 @@ public class SysUserServiceImpl extends ServiceImpl impl */ @Override public IPage getUsersWithRolePage(Page page, UserDTO userDTO, DataScope dataScope) { - dataScope.setScopeUserName(null); + if (ObjectUtil.isNotEmpty(dataScope)) { + dataScope.setScopeUserName(null); + } IPage list = baseMapper.getUserVosPage(page, userDTO, dataScope); if (ObjectUtil.isNotEmpty(list.getRecords())) { List userIds = list.getRecords().stream().map(UserVO::getUserId).distinct().toList(); From c3a86bbfd911c1296bba8235db334b943d565057 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 11 Jun 2026 17:36:13 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E7=BB=9F=E8=AE=A1:=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=9A=84=E7=9B=B4=E5=B1=9E=E5=95=86=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/api/constant/order/HardPayTypeEnum.java | 1 + .../bsd/pjcloud/hard/api/dto/order/HardOrderDto.java | 2 ++ .../service/impl/manager/HardManagerServiceImpl.java | 2 +- .../service/impl/order/HardOrderTotalServiceImpl.java | 6 +++--- .../main/resources/mapper/order/HardOrderMapper.xml | 8 ++++---- .../wallet/controller/WalletManageController.java | 9 ++------- .../wallet/controller/mch/MchManageController.java | 10 ++++++++++ 7 files changed, 23 insertions(+), 15 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java index 8a111fb35..4647ca5f5 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/order/HardPayTypeEnum.java @@ -39,6 +39,7 @@ public enum HardPayTypeEnum { WALLET_DEFAULT, WALLET_QR_CODE, WALLET_QR_CODE_SCAN, + WALLET_CARD, FACE, CASH, WECHANT_SELF_QR_CODE_PAY, diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java index 30aaf4233..73f39f1dd 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardOrderDto.java @@ -67,6 +67,8 @@ public class HardOrderDto extends HardOrderEntity implements BaseIsIncludeTreeIn private String createTimeStr; + private List saleStatusCodes; + /** * 是否查询时间段为空的数据 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardManagerServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardManagerServiceImpl.java index 358217f8f..5f911f684 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardManagerServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardManagerServiceImpl.java @@ -237,7 +237,7 @@ public class HardManagerServiceImpl extends ServiceImpl roleList = Arrays.asList(roles); - if (roleList.contains(CommonRoleConstant.ROLE_ADMIN) || roleList.contains(CommonRoleConstant.JG_ADMIN) || roleList.contains(CommonRoleConstant.CANTEEN_FINANCE)) { + if (roleList.contains(CommonRoleConstant.DEPT_ADMIN) || roleList.contains(CommonRoleConstant.ROLE_ADMIN) || roleList.contains(CommonRoleConstant.JG_ADMIN) || roleList.contains(CommonRoleConstant.CANTEEN_FINANCE)) { result.setCanteenView(true); result.setSupermarket(true); return result; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java index a3016a793..b0ec39e0e 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderTotalServiceImpl.java @@ -83,10 +83,10 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { totalDataScope.setScopeDeptName("merchant_dept_id"); List totalList = hardOrderMapper.listSb(totalDto, totalDataScope); // 扣款总流水 - HardOrderDto refundDto = BeanUtil.toBean(dto, HardOrderDto.class); + HardOrderDto refundDto = new HardOrderDto(); refundDto.setPayTimeList(null); refundDto.setRefundTimeList(dto.getPayTimeList()); - refundDto.setRefundStatusCodes(List.of(HardSaleStatusEnum.COMPLETE.getStatus())); + refundDto.setSaleStatusCodes(List.of(HardSaleStatusEnum.COMPLETE.getStatus())); refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes()); DataScope refundDataScope = DataScope.of().func(DataScopeFuncEnum.ALL); refundDataScope.setScopeDeptName("merchant_dept_id"); @@ -613,7 +613,7 @@ public class HardOrderTotalServiceImpl implements HardOrderTotalService { refundDto.setPayTimeList(null); refundDto.setRefundTimeList(dto.getPayTimeList()); refundDto.setOrderStatusCodes(HardOrderStatusEnum.getPayErrorCodes()); - refundDto.setRefundStatusCodes(List.of(HardSaleStatusEnum.COMPLETE.getStatus())); + refundDto.setSaleStatusCodes(List.of(HardSaleStatusEnum.COMPLETE.getStatus())); refundDto.setOrderPayTypeCodes(payTypeList); List refundList = hardOrderMapper.listOrerRefundPayType(refundDto); for (HardOrderPayTypeVo v : totalList) { 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 81be7458b..0466aa3a7 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 @@ -280,7 +280,7 @@ a.hard_id, a.merchant_id, a.user_dept_id, - a.merchant_dept_id, + m.dept_id as merchant_dept_id, sum(a.pay_price) as totalPayPrice, count(0) as totalPayCount from hard_order a @@ -324,7 +324,7 @@ select a.hard_id, a.merchant_id, a.user_dept_id, - a.merchant_dept_id, + m.dept_id as merchant_dept_id, sum(r.refund_price) as totalPayPrice, count(0) as totalPayCount from hard_after_sale r @@ -342,9 +342,9 @@ and r.audit_time between #{dto.refundTimeList[0]} and #{dto.refundTimeList[1]} - + and r.status in - + #{v} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java index 994426c42..aa20845ec 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletManageController.java @@ -22,6 +22,7 @@ import com.bsd.pjcloud.wallet.api.entity.mch.MchTakeOutSettingEntity; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletQbTotalVo; import com.bsd.pjcloud.wallet.mapper.WalletManageMapper; +import com.bsd.pjcloud.wallet.mapper.mch.view.MchDeptViewMapper; import com.bsd.pjcloud.wallet.service.WalletCodeUseService; import com.bsd.pjcloud.wallet.service.WalletManageService; import jakarta.servlet.http.HttpServletResponse; @@ -50,6 +51,7 @@ public class WalletManageController { private final WalletCodeUseService walletCodeUseService; private final WalletManageMapper walletManageMapper; + private final MchDeptViewMapper mchDeptViewMapper; /* ************************************* start android start ************************************* */ @@ -190,13 +192,6 @@ public class WalletManageController { /* ************************************* start app start ************************************* */ - @Operation(summary = "查询用户的直属商户", description = "查询用户的直属商户") - @ApiCryptoAes - @GetMapping("/app/get") - public R appZsMch() { - return R.ok(); - } - @Operation(summary = "分页查询", description = "分页查询") @ApiCryptoAes 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 616cc0c73..dee9e19b5 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 @@ -1,4 +1,5 @@ package com.bsd.pjcloud.wallet.controller.mch; + import com.bsd.pjcloud.common.api.encrypt.annotation.crypto.ApiCryptoAes; import cn.hutool.core.util.ArrayUtil; @@ -154,6 +155,15 @@ public class MchManageController { /* ************************************* end 远程调用 end ************************************* */ /* ************************************* start app start ************************************* */ + @Operation(summary = "查询用户的直属商户", description = "查询用户的直属商户") + @ApiCryptoAes + @GetMapping("/app/getZsMch") + public R appZsMch() { + PjcloudUser user = SecurityUtils.getUser(); + UserInfo userInfo = remoteUserService.getByUserId(user.getId()).getData(); + return R.ok(mchManageService.getViewsCanteenMchByDeptId(userInfo.getSysUser().getDeptId())); + } + @Operation(summary = "app查询商铺", description = "app查询商铺") @ApiCryptoAes @GetMapping("/app/page-join") From 833ed69889d1b5bda6848e5655727341d9e5554d Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 11 Jun 2026 17:59:43 +0800 Subject: [PATCH 04/13] =?UTF-8?q?fix:android=E5=BC=80=E5=8D=A1=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bsd/pjcloud/wallet/controller/WalletActiveController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java index c6ddced00..583835014 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java @@ -92,7 +92,7 @@ public class WalletActiveController { UserInfo userInfo = remoteUserService.getInnerByUserId(user.getId()).getData(); MchManageVo targetMch = mchManageService.getViewsCanteenMchByDeptId(userInfo.getSysUser().getDeptId()); if (ObjectUtil.isNotEmpty(targetMch)) { - dto.setDeptIds(List.of(targetMch.getId())); + dto.setDeptIds(List.of(targetMch.getDeptId())); } else { List deptIdList = remoteDeptService.getDescendantList(userInfo.getSysUser().getDeptId()).getData(); if (ObjectUtil.isNotEmpty(deptIdList)) { From 0e0160680f419639ae7100a4c7e697038fb8ae19 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 11 Jun 2026 18:36:05 +0800 Subject: [PATCH 05/13] =?UTF-8?q?fix:app=E6=9F=A5=E8=AF=A2=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E7=94=A8=E6=88=B7=E7=9A=84=E9=A2=84=E7=BA=A6=E8=AE=A2?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bsd/pjcloud/hard/controller/order/HardOrderController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index 445217441..b1d7e7407 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -1,4 +1,5 @@ package com.bsd.pjcloud.hard.controller.order; + import com.bsd.pjcloud.common.api.encrypt.annotation.crypto.ApiCryptoAes; import cn.hutool.core.date.DatePattern; @@ -145,6 +146,7 @@ public class HardOrderController { } ); dto.setOrderType(HardOrderTypeEnum.RESERVE.getType()); + dto.setOrderStatusCodes(List.of(HardOrderStatusEnum.PAY.getType())); return R.ok(hardwareOrderService.scopeList(dto, null)); } From ef19515f6edb7c3c23b8c6e7af5e2b16f49b3c87 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 12 Jun 2026 09:52:37 +0800 Subject: [PATCH 06/13] 1 --- .../service/impl/appplus/ThirdAppPlusWechatServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatServiceImpl.java index d9bb2cbd2..863571ab6 100644 --- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatServiceImpl.java +++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatServiceImpl.java @@ -229,7 +229,7 @@ public class ThirdAppPlusWechatServiceImpl implements ThirdAppPlusWechatService if (ObjectUtil.isEmpty(refundFee)) { refundFee = thirdPayOrder.getPrice(); } - if (!isFzRefund) { + if (!isFzRefund && ObjectUtil.isNotEmpty(thirdPayOrder.getFzPrice())) { refundFee = thirdPayOrder.getPrice() - thirdPayOrder.getFzPrice(); } String refundNo = "refund_" + thirdPayOrder.getPayNo(); From 17621430cbd5ca34d41d724a1950b21afbd70342 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 12 Jun 2026 16:57:45 +0800 Subject: [PATCH 07/13] =?UTF-8?q?feat:=E6=B6=88=E8=B4=B9=E6=9C=BA=E7=99=BD?= =?UTF-8?q?=E5=90=8D=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/1003pjcloudx_view.sql | 63 ++++++++++- .../core/constant/enums/MerchantTypeEnum.java | 6 + .../hard/api/dto/xfj/XfjServerTimeDto.java | 5 - .../hard/api/vo/xfj/XfjWhiteListVo.java | 6 +- .../java/com/bsd/pjcloud/hard/HardApp.java | 2 + .../bsd/pjcloud/hard/job/DeleteLogJob.java | 35 ++++++ .../service/impl/xfj/HardXfjServiceImpl.java | 104 ++++++++++++------ .../resources/mapper/xfj/HardXfjLogMapper.xml | 1 + .../api/dto/WalletRemoteOpenCardCountDto.java | 19 ++++ .../mch/view/WalletMchDeptViewEntity.java | 6 + .../wallet/api/feign/RemoteWalletService.java | 6 + .../controller/WalletActiveController.java | 13 ++- .../controller/mch/MchManageController.java | 5 +- .../wallet/mapper/WalletActiveMapper.java | 3 + .../mapper/mch/view/MchDeptViewMapper.java | 2 +- .../wallet/service/MchManageService.java | 2 + .../wallet/service/WalletActiveService.java | 6 + .../service/impl/WalletActiveServiceImpl.java | 8 ++ .../impl/mch/MchManageServiceImpl.java | 23 +++- .../resources/mapper/WalletActiveMapper.xml | 15 +++ .../mapper/mch/view/MchDeptViewMapper.xml | 13 ++- 21 files changed, 289 insertions(+), 54 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/job/DeleteLogJob.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletRemoteOpenCardCountDto.java diff --git a/db/1003pjcloudx_view.sql b/db/1003pjcloudx_view.sql index c9448c588..b4d16a736 100644 --- a/db/1003pjcloudx_view.sql +++ b/db/1003pjcloudx_view.sql @@ -40,4 +40,65 @@ SELECT root_dept_id AS mchDeptId, dept_name AS deptName, level AS level FROM r -ORDER BY mchDeptId, level, deptId; \ No newline at end of file +ORDER BY mchDeptId, level, deptId; + + + + +CREATE OR REPLACE VIEW pjcloudx_wallet.v_all_mch_dept_tree AS +WITH RECURSIVE + root AS (SELECT m.types AS mch_type, + m.dept_id AS root_dept_id, + m.id AS mch_id, + m.name AS mch_name + FROM pjcloudx_wallet.mch_manage AS m + JOIN pjcloudx.sys_dept AS d + ON d.dept_id = m.dept_id + AND d.del_flag = '0' + WHERE m.del_flag = '0'), + r ( + mch_type, + dept_id, + parent_id, + dept_name, + root_dept_id, + mch_id, + mch_name, + level + ) AS (SELECT root.mch_type, + d.dept_id, + d.parent_id, + d.name, + root.root_dept_id, + root.mch_id, + root.mch_name, + 0 + FROM pjcloudx.sys_dept AS d + JOIN root + ON root.root_dept_id = d.dept_id + WHERE d.del_flag = '0' + + UNION ALL + + SELECT r.mch_type, + c.dept_id, + c.parent_id, + c.name, + r.root_dept_id, + r.mch_id, + r.mch_name, + r.level + 1 + FROM pjcloudx.sys_dept AS c + JOIN r + ON c.parent_id = r.dept_id + WHERE c.del_flag = '0') +SELECT mch_type AS mchType, + root_dept_id AS mchDeptId, + mch_id AS mchId, + mch_name AS mchName, + dept_id AS deptId, + parent_id AS parentId, + dept_name AS deptName, + level AS level +FROM r +ORDER BY mchType, mchDeptId, level, deptId; \ No newline at end of file diff --git a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/enums/MerchantTypeEnum.java b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/enums/MerchantTypeEnum.java index 7221143ff..7ac4c067e 100644 --- a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/enums/MerchantTypeEnum.java +++ b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/enums/MerchantTypeEnum.java @@ -3,6 +3,8 @@ package com.bsd.pjcloud.common.core.constant.enums; import lombok.Getter; import lombok.RequiredArgsConstructor; +import java.util.List; + @RequiredArgsConstructor @Getter public enum MerchantTypeEnum { @@ -22,4 +24,8 @@ public enum MerchantTypeEnum { * 类型名 */ private final String name; + + static public List all() { + return List.of(values()); + } } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjServerTimeDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjServerTimeDto.java index 2d284bd13..8bea6a2df 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjServerTimeDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/xfj/XfjServerTimeDto.java @@ -10,9 +10,4 @@ public class XfjServerTimeDto { */ private Integer WLSum; - /** - * 自定义机号 - */ - private Integer DeviceID; - } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjWhiteListVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjWhiteListVo.java index d16942560..31b798b42 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjWhiteListVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/xfj/XfjWhiteListVo.java @@ -13,12 +13,12 @@ public class XfjWhiteListVo extends XfjBaseVo { /** * 页数(获取那一页的数据) */ - private Long Page; + private Integer Page; /** * 名单个数 */ - private Long PageLen; + private Integer PageLen; /** * 白名单数据(1|0000000001|1,序号|卡号|操作) @@ -31,6 +31,6 @@ public class XfjWhiteListVo extends XfjBaseVo { * 1:继续获取 * 0:已经更新完成 */ - private String Uptate; + private Integer Uptate; } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/HardApp.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/HardApp.java index 324e9f6e7..ce83ad1cf 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/HardApp.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/HardApp.java @@ -6,6 +6,7 @@ import com.bsd.pjcloud.common.swagger.annotation.EnableOpenApi; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.scheduling.annotation.EnableScheduling; /** * @author archetype auto @@ -17,6 +18,7 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @EnableDiscoveryClient @EnablePjcloudResourceServer @SpringBootApplication +@EnableScheduling public class HardApp { public static void main(String[] args) { SpringApplication.run(HardApp.class, args); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/job/DeleteLogJob.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/job/DeleteLogJob.java new file mode 100644 index 000000000..9dd5bac5a --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/job/DeleteLogJob.java @@ -0,0 +1,35 @@ +package com.bsd.pjcloud.hard.job; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.bsd.pjcloud.hard.api.entity.xfj.HardXfjLogEntity; +import com.bsd.pjcloud.hard.mapper.xfj.HardXfjLogMapper; +import jakarta.annotation.PostConstruct; +import lombok.AllArgsConstructor; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Component +@AllArgsConstructor +public class DeleteLogJob { + + private final HardXfjLogMapper hardXfjLogMapper; + + // 一天删除一次 + @Scheduled(cron = "0 0 0 * * ?") + public void deleteXfjLog() { + LocalDateTime before = LocalDate.now().minusDays(30).atStartOfDay(); + // 删除30天前的数据 + Long count = hardXfjLogMapper.selectCount(new LambdaQueryWrapper() + .le(HardXfjLogEntity::getCreateTime, before) + ); + if (count >= 10000) { + hardXfjLogMapper.delete(new LambdaQueryWrapper() + .le(HardXfjLogEntity::getCreateTime, before) + ); + } + } + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java index 52a8839de..a23e3985d 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java @@ -27,6 +27,7 @@ import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; import com.bsd.pjcloud.hard.service.*; import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletRemoteOpenCardCountDto; import com.bsd.pjcloud.wallet.api.dto.WalletRemoteOpenCardListDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity; @@ -141,6 +142,11 @@ public class HardXfjServiceImpl implements HardXfjService { HardManagerEntity entity = checkSignAndReturnConfig(body, headers); logger.setUniqueCode(entity.getUniqueCode()); + XfjServerTimeDto dto = JSONUtil.toBean(body, XfjServerTimeDto.class); + if (ObjectUtil.isEmpty(dto)) { + throw new RuntimeException("解析参数为空"); + } + LocalDateTime now = LocalDateTime.now(); String timeStr = LocalDateTimeUtil.format(now, DatePattern.PURE_DATETIME_PATTERN); int dayOfWeek = now.getDayOfWeek().getValue(); @@ -151,9 +157,60 @@ public class HardXfjServiceImpl implements HardXfjService { timeStr += dayOfWeek; result.setTime(timeStr); - result.setWLUptate(1); - result.setWLPage(0); logger.setRes(JSONUtil.toJsonStr(result)); + + WalletRemoteOpenCardCountDto countDto = new WalletRemoteOpenCardCountDto(); + countDto.setMchId(entity.getMerchantId()); + countDto.setCarNumberLength(10); + Integer carCount = walletService.remoteOpenCardCount(countDto).getData(); + + String lockKey = CacheConstants.HARD_XFJ_WHITE_LIST_LOCK + ":" + entity.getUniqueCode(); + // 检查是否存在锁 + Boolean hasLock = false; + hasLock = redisTemplate.hasKey(lockKey); + if (ObjectUtil.isNotEmpty(hasLock) && hasLock && dto.getWLSum() > 0) { + log.warn("|获取服务器时间接口|设备uniqueCode:{}在30分钟内已查询过,拒绝重复查询", entity.getUniqueCode()); + result.setWLUptate(0); + result.setWLPage(1); + return result; + } + // 起始页数(当WLUptate为1却WLPage为0时清除所有白名单) + int currentHour = LocalDateTime.now().getHour(); + if (currentHour == 3) { + result.setWLUptate(1); + result.setWLPage(0); + // 更新完成,设置30分钟的锁 + redisTemplate.opsForValue().set(lockKey, "1", Duration.ofMinutes(30)); + log.info("|获取服务器时间接口|设备 {} 3点清空白名单,设置30分钟锁", entity.getUniqueCode()); + } + // 查询错误不更新 + else if (ObjectUtil.isEmpty(carCount)) { + result.setWLUptate(0); + result.setWLPage(1); + } + // 已经更新完了 + else if (dto.getWLSum() >= carCount) { + result.setWLUptate(0); + result.setWLPage(1); + // 更新完成,设置30分钟的锁 + redisTemplate.opsForValue().set(lockKey, "1", Duration.ofMinutes(30)); + log.info("|获取服务器时间接口|设备 {} 更新完成,设置30分钟锁", entity.getUniqueCode()); + } + // 还未更新完 + else { + // 计算当前开始页面 + int startPage = carCount / 10; + if (startPage <= 0) { + startPage = 1; + } + result.setWLUptate(1); + result.setWLPage(startPage); + + // 设置锁 + // 启动更新,设置30分钟的锁 + redisTemplate.opsForValue().set(lockKey, "1", Duration.ofMinutes(30)); + log.info("|获取服务器时间接口|设备 {} 启动更新,设置30分钟锁", entity.getUniqueCode()); + } return result; } catch (Exception e) { logger.setError(e.getMessage()); @@ -762,24 +819,6 @@ public class HardXfjServiceImpl implements HardXfjService { HardXfjLogEntity logger = initLogger(body, headers, "获取卡号白名单接口"); XfjWhiteListVo result = new XfjWhiteListVo(); - Boolean hasLock = false; - - Map transitionHeader = new LinkedHashMap<>(); - for (Map.Entry entry : headers.entrySet()) { - transitionHeader.put(entry.getKey().toUpperCase(), entry.getValue()); - } - String uniqueCode = transitionHeader.get("DEVICE-ID"); - if (ObjectUtil.isEmpty(uniqueCode)) { - return null; - } - String lockKey = CacheConstants.HARD_XFJ_WHITE_LIST_LOCK + ":" + uniqueCode; - // 检查是否存在锁 - hasLock = redisTemplate.hasKey(lockKey); - if (ObjectUtil.isNotEmpty(hasLock) && hasLock) { - log.warn("|获取卡号白名单接口|设备uniqueCode:{}在30分钟内已查询过,拒绝重复查询", uniqueCode); - return null; - } - try { HardManagerEntity entity = checkSignAndReturnConfig(body, headers); if (ObjectUtil.isEmpty(entity)) { @@ -803,15 +842,12 @@ public class HardXfjServiceImpl implements HardXfjService { openCardListDto.setCarNumberLength(10); Page walletActivePage = walletService.remoteOpenCardList(openCardListDto).getData(); if (ObjectUtil.isEmpty(walletActivePage) || ObjectUtil.isEmpty(walletActivePage.getRecords())) { - // 查询完成,设置30分钟的锁 - redisTemplate.opsForValue().set(lockKey, "1", Duration.ofMinutes(30)); - log.info("|获取卡号白名单接口|设备 {} 查询完成,设置30分钟锁", entity.getUniqueCode()); - result.setCommID(dto.getCommID()); - result.setPage(dto.getPage()); - result.setPageLen(0L); - result.setUptate("0"); + result.setPage(Math.toIntExact(dto.getPage())); + result.setPageLen(0); + result.setUptate(0); result.setWLData(""); + logger.setRes(JSONUtil.toJsonStr(result)); return result; } List walletActiveRecords = walletActivePage.getRecords(); @@ -820,20 +856,18 @@ public class HardXfjServiceImpl implements HardXfjService { boolean isSelectEnd = false; if (walletActiveRecords.size() < dto.getPageNumber()) { isSelectEnd = true; - // 查询完成,设置30分钟的锁 - redisTemplate.opsForValue().set(lockKey, "1", Duration.ofMinutes(30)); - log.info("|获取卡号白名单接口|设备 {} 查询完成,设置30分钟锁", entity.getUniqueCode()); } for (int i = 0; i < walletActiveRecords.size(); i++) { WalletActiveEntity traget = walletActiveRecords.get(i); - String whiteCarNumber = generateWhiteCarNumber(String.valueOf(i + 1), traget.getCardNumber(), ObjectUtil.equals(traget.getDelFlag(), YesNoEnum.YES.getCode()) ? "0" : "1"); + String whiteCarNumber = generateWhiteCarNumber(String.valueOf(traget.getCardSort()), traget.getCardNumber(), ObjectUtil.equals(traget.getDelFlag(), YesNoEnum.YES.getCode()) ? "0" : "1"); whiteCarList.add(whiteCarNumber); } result.setCommID(dto.getCommID()); - result.setPage(dto.getPage()); - result.setPageLen((long) walletActiveRecords.size()); - result.setUptate(isSelectEnd ? "0" : "1"); + result.setPage(Math.toIntExact(dto.getPage())); + result.setPageLen(walletActiveRecords.size()); + result.setUptate(isSelectEnd ? 0 : 1); result.setWLData(whiteCarList.stream().collect(Collectors.joining(","))); + logger.setRes(JSONUtil.toJsonStr(result)); return result; } catch (Exception e) { logger.setError(e.getMessage()); @@ -843,7 +877,7 @@ public class HardXfjServiceImpl implements HardXfjService { result.setMsg(e.getMessage()); return result; } finally { - if (ObjectUtil.isNotEmpty(hasLock) && !hasLock) { + if (ObjectUtil.isNotEmpty(result)) { saveLogger(logger); } } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/xfj/HardXfjLogMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/xfj/HardXfjLogMapper.xml index 34943127d..4d261b461 100755 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/xfj/HardXfjLogMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/xfj/HardXfjLogMapper.xml @@ -48,6 +48,7 @@ and m.name LIKE CONCAT('%', #{dto.hardName}, '%') + order by a.create_time desc, a.id desc \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletRemoteOpenCardCountDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletRemoteOpenCardCountDto.java new file mode 100644 index 000000000..e20dd85b0 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/WalletRemoteOpenCardCountDto.java @@ -0,0 +1,19 @@ +package com.bsd.pjcloud.wallet.api.dto; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class WalletRemoteOpenCardCountDto { + + /** + * 商户id + */ + @NotNull(message = "商户id不能为空") + private Long mchId; + + /** + * 卡号长度 + */ + private Integer carNumberLength; +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/view/WalletMchDeptViewEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/view/WalletMchDeptViewEntity.java index 3bc3ba566..79c3edb1f 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/view/WalletMchDeptViewEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/view/WalletMchDeptViewEntity.java @@ -10,6 +10,12 @@ import lombok.Data; @Schema(description = "商户部门视图") public class WalletMchDeptViewEntity { + + /** + * 商户类型 + */ + private String mchType; + /** * 商户部门id */ diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java index e89022406..1edc3b0c3 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteWalletService.java @@ -5,6 +5,7 @@ import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.feign.annotation.NoToken; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; +import com.bsd.pjcloud.wallet.api.dto.WalletRemoteOpenCardCountDto; import com.bsd.pjcloud.wallet.api.dto.WalletRemoteOpenCardListDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; @@ -79,4 +80,9 @@ public interface RemoteWalletService { @NoToken @PostMapping("/wallet-active/remote/open-card-list") R> remoteOpenCardList(@RequestBody WalletRemoteOpenCardListDto body); + + + @NoToken + @PostMapping("/wallet-active/remote/open-card-count") + R remoteOpenCardCount(@RequestBody WalletRemoteOpenCardCountDto dto); } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java index 583835014..97f95194a 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/WalletActiveController.java @@ -1,4 +1,5 @@ package com.bsd.pjcloud.wallet.controller; + import com.bsd.pjcloud.common.api.encrypt.annotation.crypto.ApiCryptoAes; import cn.hutool.core.util.ArrayUtil; @@ -19,10 +20,7 @@ import com.bsd.pjcloud.common.log.annotation.SysLog; import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.common.security.util.SecurityUtils; -import com.bsd.pjcloud.wallet.api.dto.WalletImportActiveDto; -import com.bsd.pjcloud.wallet.api.dto.WalletRemoteOpenCardListDto; -import com.bsd.pjcloud.wallet.api.dto.WalletActiveBindCardDto; -import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; +import com.bsd.pjcloud.wallet.api.dto.*; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletActiveVo; @@ -81,6 +79,13 @@ public class WalletActiveController { return R.ok(walletActiveService.openCardList(page, dto)); } + @Inner() + @PostMapping("/remote/open-card-count") + @Operation(summary = "远程调用开卡并且绑定用户的总数") + public R remoteOpenCardCount(@RequestBody WalletRemoteOpenCardCountDto dto) { + return R.ok(walletActiveService.openCardCount(dto)); + } + /* ************************************* end 远程调用 end ************************************* */ /* ************************************* start android start ************************************* */ 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 dee9e19b5..b513a0e08 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 @@ -24,6 +24,7 @@ import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.wallet.api.dto.MchManageDto; import com.bsd.pjcloud.wallet.api.entity.mch.MchManageEntity; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; +import com.bsd.pjcloud.wallet.mapper.mch.view.MchDeptViewMapper; import com.bsd.pjcloud.wallet.service.MchManageService; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; @@ -50,6 +51,8 @@ public class MchManageController { private final MchManageService mchManageService; + private final MchDeptViewMapper mchDeptViewMapper; + private final RemoteDeptService remoteDeptService; private final RemoteUserService remoteUserService; @@ -161,7 +164,7 @@ public class MchManageController { public R appZsMch() { PjcloudUser user = SecurityUtils.getUser(); UserInfo userInfo = remoteUserService.getByUserId(user.getId()).getData(); - return R.ok(mchManageService.getViewsCanteenMchByDeptId(userInfo.getSysUser().getDeptId())); + return R.ok(mchManageService.getViewsCanteenMch(userInfo.getSysUser().getDeptId(), MerchantTypeEnum.all())); } @Operation(summary = "app查询商铺", description = "app查询商铺") diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java index f02d50047..0f0e0679c 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/WalletActiveMapper.java @@ -8,6 +8,7 @@ import com.bsd.pjcloud.common.core.util.BeanUtils; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; +import com.bsd.pjcloud.wallet.api.dto.WalletRemoteOpenCardCountDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.vo.WalletActiveVo; import com.github.yulichang.query.MPJLambdaQueryWrapper; @@ -60,4 +61,6 @@ public interface WalletActiveMapper extends PjcloudBaseMapper openCardList(Page page, @Param("dto") WalletActiveDto dto); + + Integer openCardCount(@Param("dto") WalletRemoteOpenCardCountDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/view/MchDeptViewMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/view/MchDeptViewMapper.java index d1d0ecee9..e93df381f 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/view/MchDeptViewMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/mch/view/MchDeptViewMapper.java @@ -14,6 +14,6 @@ public interface MchDeptViewMapper { List selectList(@Param("dto") WalletMchDeptViewDto dto); - WalletMchDeptViewVo selectByDeptId(@Param("deptId") Long deptId); + WalletMchDeptViewVo selectByDeptId(@Param("deptId") Long deptId, @Param("mchTypeList") List mchTypeList); } 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 d0f5db899..98ed67dbf 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 @@ -45,6 +45,8 @@ public interface MchManageService extends IService { MchManageVo getFirstMchByDeptId(Long deptId, List mchTypeList); + MchManageVo getViewsCanteenMch(Long deptId, List mchTypeList); + /** * 从视图里获取食堂商户信息 */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java index 31ec5054d..e3f9c26ed 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/WalletActiveService.java @@ -6,6 +6,7 @@ import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.wallet.api.dto.WalletActiveBindCardDto; import com.bsd.pjcloud.wallet.api.dto.WalletActiveDto; import com.bsd.pjcloud.wallet.api.dto.WalletImportActiveDto; +import com.bsd.pjcloud.wallet.api.dto.WalletRemoteOpenCardCountDto; import com.bsd.pjcloud.wallet.api.dto.recharge.excel.WalletRechargeExcelDto; import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; @@ -79,6 +80,11 @@ public interface WalletActiveService extends IService { */ Page openCardList(Page page, WalletActiveDto dto); + /** + * 远程调用开卡并且绑定用户的总数 + */ + Integer openCardCount(WalletRemoteOpenCardCountDto dto); + /** * 更新 */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java index 01a120cb2..dceb52cb7 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/WalletActiveServiceImpl.java @@ -302,6 +302,14 @@ public class WalletActiveServiceImpl extends ServiceImpl mchTypeList) { + List mchTypeStrList = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(mchTypeList)) { + mchTypeStrList = mchTypeList.stream().map(MerchantTypeEnum::getType).toList(); + } + WalletMchDeptViewVo walletMchDeptView = mchDeptViewMapper.selectByDeptId(deptId, mchTypeStrList); + if (ObjectUtil.isEmpty(walletMchDeptView) || ObjectUtil.isEmpty(walletMchDeptView.getDeptId())) { + return null; + } + MchManageVo result = baseMapper.join(walletMchDeptView.getMchId()); + MchPaySettingDto paySettingDto = new MchPaySettingDto(); + paySettingDto.setMchId(result.getId()); + paySettingDto.setEnable(YesNoEnum.YES.getCode()); + List paySettingList = paySettingService.pageList(paySettingDto, null); + if (ObjectUtil.isNotEmpty(paySettingList)) { + result.setPaySettingList(paySettingList); + } + return result; + } + /** * 从视图里获取食堂商户信息 */ @@ -397,7 +418,7 @@ public class MchManageServiceImpl extends ServiceImpl order by a.card_sort asc, a.id asc + + \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/view/MchDeptViewMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/view/MchDeptViewMapper.xml index 95384c6d7..ebdf41185 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/view/MchDeptViewMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/view/MchDeptViewMapper.xml @@ -4,7 +4,8 @@ - select a.mchDeptId, + select a.mchType, + a.mchDeptId, a.mchId, a.mchName, a.deptId, @@ -45,7 +46,7 @@ - from v_mch_dept_tree a + from v_all_mch_dept_tree a and a.deptId = #{deptId} + + and a.mchType IN + + #{v} + + order by a.level asc limit 1 From a90d19504eae117866fabbc9e011ecb6857abd2e Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 12 Jun 2026 18:02:30 +0800 Subject: [PATCH 08/13] 11 --- .../bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java index a23e3985d..1d2028f48 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java @@ -199,7 +199,7 @@ public class HardXfjServiceImpl implements HardXfjService { // 还未更新完 else { // 计算当前开始页面 - int startPage = carCount / 10; + int startPage = dto.getWLSum() / 10; if (startPage <= 0) { startPage = 1; } From 07a46ad56bc1c22488ac3e6d0154706727b232d4 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 16 Jun 2026 10:00:20 +0800 Subject: [PATCH 09/13] =?UTF-8?q?feat:=E8=8F=9C=E5=93=81=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/api/vo/order/HardCarTotalVo.java | 40 +++++++++++++++++++ .../order/HardCanteenTotalController.java | 4 +- .../hard/mapper/order/HardCarMapper.java | 1 + .../hard/service/HardCanteenTotalService.java | 3 +- .../order/HardCanteenTotalServiceImpl.java | 3 +- .../resources/mapper/order/HardCarMapper.xml | 6 +++ 6 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCarTotalVo.java diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCarTotalVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCarTotalVo.java new file mode 100644 index 000000000..1689942f7 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCarTotalVo.java @@ -0,0 +1,40 @@ +package com.bsd.pjcloud.hard.api.vo.order; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class HardCarTotalVo { + + /** + * 商品id + */ + @Schema(description = "商品id") + private Long productId; + + /** + * 商品名 + */ + @Schema(description = "商品名") + private String productName; + + /** + * 商品图片 + */ + @Schema(description = "商品图片") + private String productPic; + + /** + * 商品价格 + */ + @Schema(description = "商品价格") + private Integer productPrice; + + /** + * 购买总数 + */ + @Schema(description = "购买总数") + private Integer payToalNum; + + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java index 680f86378..6826b0ec3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java @@ -1,4 +1,5 @@ package com.bsd.pjcloud.hard.controller.order; + import com.bsd.pjcloud.common.api.encrypt.annotation.crypto.ApiCryptoAes; import cn.hutool.core.util.ObjectUtil; @@ -15,6 +16,7 @@ import com.bsd.pjcloud.hard.api.dto.order.app.HardAppProductByClassifyDto; import com.bsd.pjcloud.hard.api.dto.order.app.HardAppProductLikeTopDto; import com.bsd.pjcloud.hard.api.vo.order.HardCanteenProductTotalVo; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.vo.order.HardCarTotalVo; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByCanteenVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByClassifyVo; @@ -122,7 +124,7 @@ public class HardCanteenTotalController { return R.ok(canteenTotalService.productTotal(page, dto, null)); } - @Operation(summary = "菜品出售统计", description = "菜品出售统计") + @Operation(summary = "菜品出售记录", description = "菜品出售记录") @PostMapping("/proudct-query") public R> proudctQuery(@ParameterObject Page page, @RequestBody HardCarDto dto) { return R.ok(canteenTotalService.proudctQuery(page, dto)); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java index 477c6b4fe..3ced5bcf5 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java @@ -10,6 +10,7 @@ import com.bsd.pjcloud.hard.api.vo.order.HardCanteenProductTotalVo; import com.bsd.pjcloud.hard.api.dto.order.HardCarDto; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity; +import com.bsd.pjcloud.hard.api.vo.order.HardCarTotalVo; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByCanteenVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByClassifyVo; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java index 17b09efa7..fb4d6ebdc 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java @@ -10,6 +10,7 @@ import com.bsd.pjcloud.hard.api.dto.order.app.HardAppProductByClassifyDto; import com.bsd.pjcloud.hard.api.dto.order.app.HardAppProductLikeTopDto; import com.bsd.pjcloud.hard.api.vo.order.HardCanteenProductTotalVo; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.vo.order.HardCarTotalVo; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByCanteenVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByClassifyVo; @@ -46,7 +47,7 @@ public interface HardCanteenTotalService { Page productTotal(Page page, HardOrderDto dto, DataScope dataScope); /** - * 菜品出售统计 + * 菜品出售记录 */ Page proudctQuery(Page page, HardCarDto dto); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java index 10f8631b2..bb62b2996 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java @@ -23,6 +23,7 @@ import com.bsd.pjcloud.hard.api.dto.order.app.HardAppProductByClassifyDto; import com.bsd.pjcloud.hard.api.dto.order.app.HardAppProductLikeTopDto; import com.bsd.pjcloud.hard.api.vo.order.HardCanteenProductTotalVo; import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto; +import com.bsd.pjcloud.hard.api.vo.order.HardCarTotalVo; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByCanteenVo; import com.bsd.pjcloud.hard.api.vo.order.app.HardAppProductByClassifyVo; @@ -187,7 +188,7 @@ public class HardCanteenTotalServiceImpl implements HardCanteenTotalService { } /** - * 菜品出售统计 + * 菜品出售记录 */ @Override public Page proudctQuery(Page page, HardCarDto dto) { diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml index 51400f14d..b7256ed53 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml @@ -223,6 +223,9 @@ and o.merchant_id = #{dto.merchantId} + + and a.product_name LIKE concat('%',#{dto.productName},'%') + group by a.product_id order by SUM(a.product_count) desc @@ -413,4 +416,7 @@ order by SUM(a.product_count) desc limit 10; + + \ No newline at end of file From 8b3b86a67904846bbc5ba3e96f206cc30fa0fa96 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 16 Jun 2026 10:23:45 +0800 Subject: [PATCH 10/13] =?UTF-8?q?feat:=E8=8F=9C=E5=93=81=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pjcloud/hard/api/vo/order/HardCarVo.java | 5 +++ .../order/HardCanteenTotalController.java | 8 +++- .../hard/mapper/order/HardCarMapper.java | 5 +++ .../hard/service/HardCanteenTotalService.java | 7 +++- .../order/HardCanteenTotalServiceImpl.java | 25 +++++++++++- .../resources/mapper/order/HardCarMapper.xml | 38 +++++++++++++++++-- 6 files changed, 82 insertions(+), 6 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCarVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCarVo.java index 59dabb76d..7cc03382e 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCarVo.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/order/HardCarVo.java @@ -21,4 +21,9 @@ public class HardCarVo extends HardCarEntity { // 购买次数【统计使用】 private Long payCount; + // 统计使用 + private Long merchantId; + + private String merchantName; + } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java index 6826b0ec3..d80725199 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java @@ -124,10 +124,16 @@ public class HardCanteenTotalController { return R.ok(canteenTotalService.productTotal(page, dto, null)); } - @Operation(summary = "菜品出售记录", description = "菜品出售记录") + @Operation(summary = "菜品出售统计", description = "菜品出售统计") @PostMapping("/proudct-query") public R> proudctQuery(@ParameterObject Page page, @RequestBody HardCarDto dto) { return R.ok(canteenTotalService.proudctQuery(page, dto)); } + @Operation(summary = "菜品出售商户统计", description = "菜品出售商户统计") + @PostMapping("/proudct-mch-query") + public R> proudctMchQuery(@ParameterObject Page page, @RequestBody HardCarDto dto) { + return R.ok(canteenTotalService.proudctMchQuery(page, dto)); + } + } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java index 3ced5bcf5..85c6cb09b 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java @@ -37,6 +37,11 @@ public interface HardCarMapper extends PjcloudBaseMapper { Page proudctQuery(Page page, @Param("dto") HardCarDto dto); + /** + * 菜品出售商户统计 + */ + Page proudctMchQuery(Page page, HardCarDto dto); + List listByDept(@Param("dto") HardOrderDto dto, DataScope dataScope); List listByHourType(@Param("dto") HardOrderDto dto); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java index fb4d6ebdc..7dec6c5fc 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java @@ -47,10 +47,15 @@ public interface HardCanteenTotalService { Page productTotal(Page page, HardOrderDto dto, DataScope dataScope); /** - * 菜品出售记录 + * 菜品出售统计 */ Page proudctQuery(Page page, HardCarDto dto); + /** + * 菜品出售商户统计 + */ + Page proudctMchQuery(Page page, HardCarDto dto); + /** * 食堂菜品购买部门统计 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java index bb62b2996..f3c8045db 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java @@ -188,7 +188,7 @@ public class HardCanteenTotalServiceImpl implements HardCanteenTotalService { } /** - * 菜品出售记录 + * 菜品出售统计 */ @Override public Page proudctQuery(Page page, HardCarDto dto) { @@ -196,6 +196,29 @@ public class HardCanteenTotalServiceImpl implements HardCanteenTotalService { return hardCarMapper.proudctQuery(page, dto); } + /** + * 菜品出售商户统计 + */ + @Override + public Page proudctMchQuery(Page page, HardCarDto dto) { + dto.setOrderStatusCodes(HardOrderStatusEnum.getPaySuccessCodes()); + Page pageList = hardCarMapper.proudctMchQuery(page, dto); + List records = pageList.getRecords(); + // 查询商户 + if (ObjectUtil.isNotEmpty(records)) { + List mchIdList = records.stream().map(HardCarVo::getMerchantId).distinct().filter(ObjectUtil::isNotEmpty).toList(); + if (ObjectUtil.isNotEmpty(mchIdList)) { + List mchList = remoteMchService.getByIds(mchIdList).getData(); + if (ObjectUtil.isNotEmpty(mchList)) { + for (HardCarVo i : records) { + mchList.stream().filter(m -> ObjectUtil.equals(i.getMerchantId(), m.getId())).findFirst().ifPresent(mch -> i.setMerchantName(mch.getName())); + } + } + } + } + return pageList; + } + /** * 食堂菜品购买部门统计 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml index b7256ed53..7347db5a1 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml @@ -231,6 +231,41 @@ order by SUM(a.product_count) desc + + - - \ No newline at end of file From 9bee9781cc3a3b8cf5cb2a948f1be009ac973263 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 16 Jun 2026 14:50:32 +0800 Subject: [PATCH 11/13] =?UTF-8?q?feat:=E6=B6=88=E8=B4=B9=E6=9C=BA=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E8=AF=B7=E6=B1=82=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/order/HardOrderController.java | 1 + .../hard/mapper/order/HardOrderMapper.java | 1 + .../impl/order/HardAfterSaleServiceImpl.java | 4 +-- .../service/impl/xfj/HardXfjServiceImpl.java | 26 ++++++++++++++++--- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index b1d7e7407..649c5ccf4 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -224,6 +224,7 @@ public class HardOrderController { PjcloudUser user = SecurityUtils.getUser(); dto.setUserId(user.getId()); dto.setIsFindCarList(true); + dto.setIsFindApptList(true); dto.setMchTypeCodes(List.of(MerchantTypeEnum.CANTEEN.getType())); return R.ok(hardwareOrderService.pagejoin(page, dto)); } 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 054096429..3c7617f3e 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 @@ -71,6 +71,7 @@ public interface HardOrderMapper extends PjcloudBaseMapper { .in(ObjectUtil.isNotEmpty(dto.getUserIds()), HardOrderEntity::getUserId, dto.getUserIds()) .in(ObjectUtil.isNotEmpty(dto.getMchIds()), HardOrderEntity::getMerchantId, dto.getMchIds()) .in(ObjectUtil.isNotEmpty(dto.getMchTypeCodes()), HardOrderEntity::getMerchantType, dto.getMchTypeCodes()) + .in(ObjectUtil.isNotEmpty(dto.getRefundStatusCodes()), HardOrderEntity::getRefundStatus, dto.getRefundStatusCodes()) .between( ObjectUtil.isNotEmpty(dto.getCreateTimeList()), HardOrderEntity::getCreateTime, diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java index bf905f152..19908fa54 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleServiceImpl.java @@ -159,7 +159,7 @@ public class HardAfterSaleServiceImpl extends ServiceImpl updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.set(HardOrderEntity::getApplyCancelTime, null) .set(HardOrderEntity::getOrderStatus, HardOrderStatusEnum.REFUND.getType()) - .set(HardOrderEntity::getRefundStatus, HardRefundStatusEnum.NONE.getStatus()) + .set(HardOrderEntity::getRefundStatus, HardRefundStatusEnum.APPLY.getStatus()) .eq(HardOrderEntity::getId, order.getId()); hardOrderService.update(updateWrapper); return saveObj; diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java index 1d2028f48..a8c6403b3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java @@ -137,8 +137,30 @@ public class HardXfjServiceImpl implements HardXfjService { @Override public XfjServerTimeVo serverTime(String body, Map headers) { HardXfjLogEntity logger = initLogger(body, headers, "获取服务器时间接口"); + XfjServerTimeVo result = new XfjServerTimeVo(); try { + + // 是否重复请求 + Map transitionHeader = new LinkedHashMap<>(); + for (Map.Entry entry : headers.entrySet()) { + transitionHeader.put(entry.getKey().toUpperCase(), entry.getValue()); + } + String deviceId = transitionHeader.get("DEVICE-ID"); + if (ObjectUtil.isEmpty(deviceId)) { + throw new RuntimeException("|检查设备并返回配置|错误,deviceId不存在"); + } + String lockKey = CacheConstants.HARD_XFJ_WHITE_LIST_LOCK + ":" + deviceId; + // 检查是否存在锁 + Boolean hasLock = false; + hasLock = redisTemplate.hasKey(lockKey); + if (ObjectUtil.isNotEmpty(hasLock) && hasLock) { + log.warn("|获取服务器时间接口|设备uniqueCode:{}在30分钟内已查询过,拒绝重复查询", deviceId); + result.setWLUptate(0); + result.setWLPage(1); + return result; + } + HardManagerEntity entity = checkSignAndReturnConfig(body, headers); logger.setUniqueCode(entity.getUniqueCode()); @@ -164,10 +186,6 @@ public class HardXfjServiceImpl implements HardXfjService { countDto.setCarNumberLength(10); Integer carCount = walletService.remoteOpenCardCount(countDto).getData(); - String lockKey = CacheConstants.HARD_XFJ_WHITE_LIST_LOCK + ":" + entity.getUniqueCode(); - // 检查是否存在锁 - Boolean hasLock = false; - hasLock = redisTemplate.hasKey(lockKey); if (ObjectUtil.isNotEmpty(hasLock) && hasLock && dto.getWLSum() > 0) { log.warn("|获取服务器时间接口|设备uniqueCode:{}在30分钟内已查询过,拒绝重复查询", entity.getUniqueCode()); result.setWLUptate(0); From 0b81ac20caaac587d42eb9a127a37a0108842403 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 16 Jun 2026 16:42:50 +0800 Subject: [PATCH 12/13] =?UTF-8?q?feat:=E6=89=8B=E5=8A=A8=E6=A0=B8=E9=94=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/controller/order/HardOrderController.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java index 649c5ccf4..ca9b8ee51 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardOrderController.java @@ -388,6 +388,17 @@ public class HardOrderController { /* ************************************* end app end ************************************* */ + @Operation(summary = "admin手动核销线上预订", description = "admin手动核销线上预订") + @PutMapping("/rserve-cancel-order/{orderId}") + @Idempotent(expireTime = 1, key = "'/hard-order/rserve-cancel-order' + #orderId ", info = "正在核销中,请勿重复操作") + @PreAuthorize("@pms.hasPermission('hard_hardAfterSale_cancel')") + public R adminRserveCancelOrder(@PathVariable Long orderId) { + HandCancelCodeDto body = new HandCancelCodeDto(); + body.setOrderId(orderId); + body.setHardwareId(-1L); + return R.ok(hardwareOrderService.handCancelCode(body)); + } + @Operation(summary = "分页查询", description = "分页查询") @PostMapping("/page") @PreAuthorize("@pms.hasPermission('hard_hardwareOrder_view')") From 04990cb1bd146c01db95d0b48cd2bdf747a2715a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 16 Jun 2026 17:17:04 +0800 Subject: [PATCH 13/13] =?UTF-8?q?feat:=E5=95=86=E5=93=81=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java | 2 ++ .../hard/controller/order/HardCanteenTotalController.java | 7 +++++++ .../src/main/resources/mapper/order/HardCarMapper.xml | 6 ++++++ 3 files changed, 15 insertions(+) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java index e246c21de..3e6103736 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/HardCarDto.java @@ -21,4 +21,6 @@ public class HardCarDto extends HardCarEntity { private Long merchantId; + private List mchIds; + } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java index d80725199..852f8defd 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java @@ -133,6 +133,13 @@ public class HardCanteenTotalController { @Operation(summary = "菜品出售商户统计", description = "菜品出售商户统计") @PostMapping("/proudct-mch-query") public R> proudctMchQuery(@ParameterObject Page page, @RequestBody HardCarDto dto) { + // 查询商户 + MchManageDto mchManageDto = new MchManageDto(); + mchManageDto.setTypesList(List.of(MerchantTypeEnum.CANTEEN.getType())); + List mchList = remoteMchService.scopeList(mchManageDto).getData(); + if (ObjectUtil.isNotEmpty(mchList) && ObjectUtil.isEmpty(dto.getMchIds())) { + dto.setMchIds(mchList.stream().map(MchManageVo::getId).toList()); + } return R.ok(canteenTotalService.proudctMchQuery(page, dto)); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml index 7347db5a1..0cc339c64 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml @@ -261,6 +261,12 @@ and a.product_name LIKE concat('%',#{dto.productName},'%') + + and o.merchant_id in + + #{v} + + group by o.merchant_id, a.product_id order by o.merchant_id, SUM(a.product_count) desc