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/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/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-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-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/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-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-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/controller/order/HardCanteenTotalController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/order/HardCanteenTotalController.java index 680f86378..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 @@ -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; @@ -128,4 +130,17 @@ public class HardCanteenTotalController { return R.ok(canteenTotalService.proudctQuery(page, dto)); } + @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/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..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 @@ -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)); } @@ -222,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)); } @@ -385,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')") 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/mapper/order/HardCarMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardCarMapper.java index 477c6b4fe..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 @@ -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; @@ -36,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/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/HardCanteenTotalService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardCanteenTotalService.java index 17b09efa7..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 @@ -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; @@ -50,6 +51,11 @@ public interface HardCanteenTotalService { */ 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/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/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/order/HardCanteenTotalServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardCanteenTotalServiceImpl.java index 10f8631b2..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 @@ -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; @@ -195,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/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/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..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 @@ -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; @@ -136,11 +137,38 @@ 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()); + 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 +179,56 @@ 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(); + + 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 = dto.getWLSum() / 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 +837,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 +860,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 +874,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 +895,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/order/HardCarMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardCarMapper.xml index 51400f14d..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 @@ -223,11 +223,55 @@ 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 + + \ No newline at end of file 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(); 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..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 @@ -271,15 +271,12 @@ public class SysUserServiceImpl extends ServiceImpl impl /** * 分页查询用户信息(含有角色信息) - * - * @param page 分页对象 - * @param userDTO 参数列表 - * @return */ @Override - public IPage getUsersWithRolePage(Page page, UserDTO userDTO) { - DataScope dataScope = DataScope.of(); - dataScope.setScopeUserName(null); + public IPage getUsersWithRolePage(Page page, UserDTO userDTO, DataScope dataScope) { + 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(); 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 9fc1196a0..b861c225f 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 c6ddced00..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 ************************************* */ @@ -92,7 +97,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)) { 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 04ff4878e..d6ac94ebe 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; @@ -21,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; @@ -49,10 +51,11 @@ public class WalletManageController { private final WalletCodeUseService walletCodeUseService; private final WalletManageMapper walletManageMapper; + private final MchDeptViewMapper mchDeptViewMapper; /* ************************************* start android start ************************************* */ - @Operation(summary = "根据短码查询加密信息", description = "根据短码查询加密信息") + @Operation(summary = "获取用户的钱包列表", description = "获取用户的钱包列表") @GetMapping("/ad/wallet/list") public R> adWalletList(@RequestParam Long userId) { WalletManageDto dto = new WalletManageDto(); @@ -199,6 +202,7 @@ public class WalletManageController { /* ************************************* start app start ************************************* */ + @Operation(summary = "分页查询", description = "分页查询") @ApiCryptoAes @GetMapping("/app/get-all") @@ -207,7 +211,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/controller/mch/MchManageController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/mch/MchManageController.java index 616cc0c73..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 @@ -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; @@ -23,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; @@ -49,6 +51,8 @@ public class MchManageController { private final MchManageService mchManageService; + private final MchDeptViewMapper mchDeptViewMapper; + private final RemoteDeptService remoteDeptService; private final RemoteUserService remoteUserService; @@ -154,6 +158,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.getViewsCanteenMch(userInfo.getSysUser().getDeptId(), MerchantTypeEnum.all())); + } + @Operation(summary = "app查询商铺", description = "app查询商铺") @ApiCryptoAes @GetMapping("/app/page-join") 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