From 60f3867f7c1afa5b0ad7e1aa6588b1debb77d26c Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 10 Apr 2026 14:37:18 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=E6=88=91=E8=A6=81=E8=B5=9A=E7=B1=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/dto/hard/HandCancelActCodeDto.java | 18 ++ .../controller/hard/HardApiController.java | 12 +- .../hard/service/HardOrderService.java | 6 + .../impl/order/HardOrderServiceImpl.java | 86 +++++++ .../pjcloud-integrated-api/pom.xml | 4 + .../api/feign/RemoteAdRecordService.java | 18 ++ .../integrated/dto/ad/AdRecordDto.java | 7 +- .../integrated/entity}/AdRecordEntity.java | 4 +- .../pjcloud/integrated/vo/ad/AdRecordVo.java | 5 +- ...mework.cloud.openfeign.FeignClient.imports | 1 + .../controller/ad/AdRecordController.java | 12 +- .../mapper/ad/ThirdAdRecordMapper.java | 5 +- .../integrated/service/AdRecordService.java | 10 +- .../service/impl/ad/AdRecordServiceImpl.java | 7 +- .../mapper/ad/ThirdAdRecordMapper.xml | 43 ++-- .../Integral/WalletIntegralBizEnum.java | 3 +- .../constant/act/ActUniqueCodeConstant.java | 8 + .../api/constant/act/ActUserReceiveEnum.java | 3 + .../wallet/api/dto/act/ActComCancelDto.java | 31 +++ .../api/dto/act/ActCouponRecordDto.java | 2 + .../wallet/api/entity/act/ActAdEntity.java | 6 + .../wallet/api/feign/RemoteComActService.java | 41 ++++ .../wallet/api/vo/act/ActComItemVo.java | 22 ++ .../wallet/api/vo/act/ActSimpleNotfiyVo.java | 14 ++ .../wallet/api/vo/act/ActUserTotalVo.java | 23 ++ ...mework.cloud.openfeign.FeignClient.imports | 1 + pjcloud-wallet/pjcloud-wallet-biz/pom.xml | 6 + .../controller/act/ActAdController.java | 15 +- .../controller/act/ActComController.java | 92 ++++++++ .../act/ActCouponRecordController.java | 7 + .../mapper/integral/IntegralManageMapper.java | 2 +- .../pjcloud/wallet/service/ActAdService.java | 5 + .../wallet/service/ActCancelItemService.java | 18 ++ .../pjcloud/wallet/service/ActComService.java | 48 ++++ .../service/ActCouponRecordService.java | 6 + .../service/impl/act/ActAdServiceImpl.java | 19 +- .../impl/act/ActCancelItemServiceImpl.java | 61 +++++ .../service/impl/act/ActComServiceImpl.java | 210 ++++++++++++++++++ .../impl/act/ActCouponRecordServiceImpl.java | 67 +++++- .../impl/act/ActCouponServiceImpl.java | 12 +- .../integral/IntegralManageServiceImpl.java | 21 +- .../main/resources/mapper/act/ActAdMapper.xml | 4 + .../mapper/act/ActCouponRecordMapper.xml | 3 + 43 files changed, 934 insertions(+), 54 deletions(-) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/hard/HandCancelActCodeDto.java create mode 100644 pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/api/feign/RemoteAdRecordService.java rename pjcloud-integrated/{pjcloud-integrated-biz => pjcloud-integrated-api}/src/main/java/com/bsd/pjcloud/integrated/dto/ad/AdRecordDto.java (68%) rename pjcloud-integrated/{pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/ad => pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/entity}/AdRecordEntity.java (98%) mode change 100755 => 100644 rename pjcloud-integrated/{pjcloud-integrated-biz => pjcloud-integrated-api}/src/main/java/com/bsd/pjcloud/integrated/vo/ad/AdRecordVo.java (86%) create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUniqueCodeConstant.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/act/ActComCancelDto.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteComActService.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActComItemVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActSimpleNotfiyVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActUserTotalVo.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActComController.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActComService.java create mode 100644 pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActComServiceImpl.java diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/hard/HandCancelActCodeDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/hard/HandCancelActCodeDto.java new file mode 100644 index 00000000..6c641aaf --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/hard/HandCancelActCodeDto.java @@ -0,0 +1,18 @@ +package com.bsd.pjcloud.hard.api.dto.hard; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class HandCancelActCodeDto { + + @Schema(description = "用户id不能为空") + @NotNull(message = "核销活动子id不能为空") + private Long actItemId; + + @Schema(description = "用户id") + @NotNull(message = "用户id不能为空") + private Long userId; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java index 687657ed..89502db5 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/hard/HardApiController.java @@ -9,10 +9,7 @@ import com.bsd.pjcloud.hard.api.constant.HardProductNatureEnum; import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; import com.bsd.pjcloud.hard.api.dto.async.SyncOfflineReqVo; -import com.bsd.pjcloud.hard.api.dto.hard.HandCancelCodeDto; -import com.bsd.pjcloud.hard.api.dto.hard.HardBindDto; -import com.bsd.pjcloud.hard.api.dto.hard.HardCreateOrderDto; -import com.bsd.pjcloud.hard.api.dto.hard.HardDoneHardQrCodeScanOrderDto; +import com.bsd.pjcloud.hard.api.dto.hard.*; import com.bsd.pjcloud.hard.api.dto.order.HardChartLatitudeVo; import com.bsd.pjcloud.hard.api.dto.order.HardCreateCarDto; import com.bsd.pjcloud.hard.api.vo.HardInvoiceVo; @@ -129,6 +126,13 @@ public class HardApiController { return R.ok(hardwareOrderService.handCancelCode(dto)); } + @PostMapping("/cancel-act-code") + @Operation(summary = "核销二维码") + @Idempotent(expireTime = 10, key = "'/hard-api/ad/cancel-act-code' + #dto.getActItemId() ", info = "正在核销中,请勿重复操作") + public R handCancelActCode(@Validated @RequestBody HandCancelActCodeDto dto) { + return R.ok(hardwareOrderService.handCancelActCode(dto)); + } + @GetMapping("/generate-invoice") @Operation(summary = "生成发票") @Idempotent(expireTime = 10, info = "正在生成中,请勿重复操作") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java index 40dfa628..4e41e57c 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardOrderService.java @@ -10,6 +10,7 @@ import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; +import com.bsd.pjcloud.hard.api.dto.hard.HandCancelActCodeDto; import com.bsd.pjcloud.hard.api.dto.hard.HandCancelCodeDto; import com.bsd.pjcloud.hard.api.dto.hard.HardCreateOrderDto; import com.bsd.pjcloud.hard.api.dto.hard.HardDoneHardQrCodeScanOrderDto; @@ -159,6 +160,11 @@ public interface HardOrderService extends IService { */ Boolean handCancelCode(HandCancelCodeDto dto); + /** + * 核销二维码 + */ + Boolean handCancelActCode(HandCancelActCodeDto dto); + /** * 创建订单后发送mq消息 */ diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index 7aec07e3..5728d346 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -43,6 +43,7 @@ import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; import com.bsd.pjcloud.hard.api.constant.xfj.HardXfjTypeEnum; import com.bsd.pjcloud.hard.api.dto.ali.AliMicropayDto; import com.bsd.pjcloud.hard.api.dto.ali.AliReverseDto; +import com.bsd.pjcloud.hard.api.dto.hard.HandCancelActCodeDto; import com.bsd.pjcloud.hard.api.dto.hard.HardDoneHardQrCodeScanOrderDto; import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto; import com.bsd.pjcloud.hard.api.dto.hard.HandCancelCodeDto; @@ -91,6 +92,7 @@ import com.bsd.pjcloud.wallet.api.constant.mch.WalletMchRulePriceTypeEnum; import com.bsd.pjcloud.wallet.api.constant.mch.WalletMchSupType; import com.bsd.pjcloud.wallet.api.dto.WalletBalanceTransactionDto; import com.bsd.pjcloud.wallet.api.dto.act.ActCancelItemDto; +import com.bsd.pjcloud.wallet.api.dto.act.ActComCancelDto; import com.bsd.pjcloud.wallet.api.entity.WalletCodeUseEntity; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.WalletTransactionEntity; @@ -100,6 +102,7 @@ import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletManageVo; import com.bsd.pjcloud.wallet.api.vo.WalletSettingVo; import com.bsd.pjcloud.wallet.api.vo.act.ActCancelItemVo; +import com.bsd.pjcloud.wallet.api.vo.act.ActComItemVo; import com.bsd.pjcloud.wallet.api.vo.mch.MchPickUpVo; import com.bsd.pjcloud.wallet.api.vo.mch.MchRuleJoinDtoVo; import jakarta.validation.Valid; @@ -162,6 +165,7 @@ public class HardOrderServiceImpl extends ServiceImpl 0; } + /** + * 核销二维码 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean handCancelActCode(HandCancelActCodeDto dto) { + // 1. 查看活动是否存在 + ActComItemVo detail = remoteComActService.remoteGetComAct(dto.getActItemId(), dto.getUserId()).getData(); + if (ObjectUtil.isEmpty(detail)) { + throw new RuntimeException("活动不存在"); + } + // 2. 参加活动人员 + UserInfo userInfo = userService.getInnerByUserId(detail.getUserId()).getData(); + if (ObjectUtil.isEmpty(userInfo)) { + throw new RuntimeException("参加活动用户不存在"); + } + SysUser sysUser = userInfo.getSysUser(); + // 3. 查询商户 + MchManageVo mch = remoteMchService.getById(detail.getMchId()).getData(); + if (ObjectUtil.isEmpty(mch)) { + throw new RuntimeException("商户不存在"); + } + // 4. 是否已经核销过 + String errorMsg = remoteComActService.remoteIsCanCancel(dto.getActItemId(), dto.getUserId()).getData(); + if (ObjectUtil.isNotEmpty(errorMsg)) { + throw new RuntimeException(errorMsg); + } + // 5. 钱包(默认饭卡钱包) + WalletManageEntity wallet = remoteWalletService.getWallet(dto.getUserId(), WalletTypeEnum.EAT).getData(); + + // 6. 创建订单 + + // 是否需要支付 + boolean isPay = true; + // 门槛金额 + // 减免金额 + // 商品描述 + // 优惠金额 + int useAmountPrice = 0; + String orderDesc = "浦江活动商品 x *"; + // 总金额,额外金额,支付金额 + int totalPrice = 0, extraPrice = 0, payPrice = 0; + // 添加硬件订单 + HardOrderEntity orderObj = HardOrderEntity.builder() + .androidOrderCode(null) + .userId(sysUser.getUserId()) + .userDeptId(sysUser.getDeptId()) + .walletId(wallet.getId()) + .sysType(HardTypeEnum.NONE.getType()) + .hourType("-1") + .parentCarId(null) + // .hardId() + .orderStatus(HardOrderStatusEnum.CREATE.getType()) + .merchantId(mch.getId()) + .merchantType(mch.getTypes()) + .merchantDeptId(mch.getDeptId()) + .deptId(mch.getDeptId()) + .orderType(HardOrderTypeEnum.RESERVE.getType()) + .payType(HardPayTypeEnum.ACT_CANCEL.getType()) + .orderSourceTypeId(dto.getActItemId()) + .totalPrice(totalPrice) + .extraPrice(extraPrice) + .payPrice(totalPrice + extraPrice) + .isOfflineOrder(YesNoEnum.NO.getCode()) + .productDesc(orderDesc) + .build(); + baseMapper.insert(orderObj); + // 核销 + ActComCancelDto cancelDto = new ActComCancelDto(); + cancelDto.setActItemId(dto.getActItemId()); + cancelDto.setUserId(dto.getUserId()); + cancelDto.setOrderId(orderObj.getId()); + cancelDto.setUseAmountPrice(useAmountPrice); + Boolean isCancelSuccess = remoteComActService.remoteDoCancel(cancelDto).getData(); + if (ObjectUtil.isEmpty(isCancelSuccess) || !isCancelSuccess) { + throw new RuntimeException("核销失败"); + } + // 钱包扣款 + getSelf().fastReduceBalance(orderObj); + return true; + } + @Override // @GlobalTransactional @Transactional(rollbackFor = Exception.class) diff --git a/pjcloud-integrated/pjcloud-integrated-api/pom.xml b/pjcloud-integrated/pjcloud-integrated-api/pom.xml index 9595afc2..39b7d640 100644 --- a/pjcloud-integrated/pjcloud-integrated-api/pom.xml +++ b/pjcloud-integrated/pjcloud-integrated-api/pom.xml @@ -48,5 +48,9 @@ 5.7.0 compile + + com.bsd + pjcloud-upms-api + diff --git a/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/api/feign/RemoteAdRecordService.java b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/api/feign/RemoteAdRecordService.java new file mode 100644 index 00000000..91c59041 --- /dev/null +++ b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/api/feign/RemoteAdRecordService.java @@ -0,0 +1,18 @@ +package com.bsd.pjcloud.integrated.api.feign; + +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.integrated.dto.ad.AdRecordDto; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(contextId = "remoteAdRecordService", value = ServiceNameConstants.INTEGRATED_SERVICE) +public interface RemoteAdRecordService { + + @NoToken + @PostMapping("/ad-record/remote/count") + R remoteCount(@RequestBody AdRecordDto dto); + +} diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/dto/ad/AdRecordDto.java b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/dto/ad/AdRecordDto.java similarity index 68% rename from pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/dto/ad/AdRecordDto.java rename to pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/dto/ad/AdRecordDto.java index e2e5751b..77f2fa6e 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/dto/ad/AdRecordDto.java +++ b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/dto/ad/AdRecordDto.java @@ -1,10 +1,14 @@ package com.bsd.pjcloud.integrated.dto.ad; -import com.bsd.pjcloud.integrated.entity.ad.AdRecordEntity; +import com.bsd.pjcloud.integrated.entity.AdRecordEntity; import lombok.Data; import java.time.LocalDateTime; +/** + * @author liusiyang_dxm + * @since 2026/4/10 + */ @Data public class AdRecordDto extends AdRecordEntity { @@ -13,3 +17,4 @@ public class AdRecordDto extends AdRecordEntity { private LocalDateTime[] createTimeList; } + diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/ad/AdRecordEntity.java b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/entity/AdRecordEntity.java old mode 100755 new mode 100644 similarity index 98% rename from pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/ad/AdRecordEntity.java rename to pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/entity/AdRecordEntity.java index 5618d8ed..4c4f4eb7 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/entity/ad/AdRecordEntity.java +++ b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/entity/AdRecordEntity.java @@ -1,11 +1,11 @@ -package com.bsd.pjcloud.integrated.entity.ad; +package com.bsd.pjcloud.integrated.entity; import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.bsd.pjcloud.common.core.util.TenantTable; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; -import com.bsd.pjcloud.common.core.util.TenantTable; import java.time.LocalDateTime; diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/vo/ad/AdRecordVo.java b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/ad/AdRecordVo.java similarity index 86% rename from pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/vo/ad/AdRecordVo.java rename to pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/ad/AdRecordVo.java index c9cfff5d..ae83ff63 100644 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/vo/ad/AdRecordVo.java +++ b/pjcloud-integrated/pjcloud-integrated-api/src/main/java/com/bsd/pjcloud/integrated/vo/ad/AdRecordVo.java @@ -1,9 +1,10 @@ package com.bsd.pjcloud.integrated.vo.ad; import com.bsd.pjcloud.admin.api.vo.base.BaseUserDeptInterface; -import com.bsd.pjcloud.integrated.entity.ad.AdRecordEntity; +import com.bsd.pjcloud.integrated.entity.AdRecordEntity; import lombok.Data; + @Data public class AdRecordVo extends AdRecordEntity implements BaseUserDeptInterface { @@ -16,4 +17,4 @@ public class AdRecordVo extends AdRecordEntity implements BaseUserDeptInterface private Long userDeptId; private String userDeptName; -} +} \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports b/pjcloud-integrated/pjcloud-integrated-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports index 899644c9..5c2eea23 100644 --- a/pjcloud-integrated/pjcloud-integrated-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports +++ b/pjcloud-integrated/pjcloud-integrated-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports @@ -1 +1,2 @@ +com.bsd.pjcloud.integrated.api.feign.RemoteAdRecordService com.bsd.pjcloud.integrated.api.feign.RemoterIntegratedAdService \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/ad/AdRecordController.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/ad/AdRecordController.java index 0b71d0ff..6d40ec42 100755 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/ad/AdRecordController.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/ad/AdRecordController.java @@ -11,10 +11,9 @@ 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.integrated.dto.ad.AdRecordDto; +import com.bsd.pjcloud.integrated.entity.AdRecordEntity; import com.bsd.pjcloud.integrated.service.AdRecordService; -import com.bsd.pjcloud.integrated.vo.ad.AdIntegralTotalVo; import com.bsd.pjcloud.integrated.vo.ad.AdRecordVo; -import com.bsd.pjcloud.integrated.entity.ad.AdRecordEntity; import com.bsd.pjcloud.thirdparty.dto.ad.UniappAdCallbackDto; import org.springframework.security.access.prepost.PreAuthorize; import com.bsd.pjcloud.common.excel.annotation.ResponseExcel; @@ -42,13 +41,20 @@ public class AdRecordController { /* ************************************* start 远程调用 start ************************************* */ - @Operation(summary = "uniapp广告回调", description = "uniapp广告回调") @Inner + @Operation(summary = "uniapp广告回调", description = "uniapp广告回调") @PostMapping("/uniapp-ad-callback") public R uniappAdCallback(@RequestBody UniappAdCallbackDto body) { return R.ok(adRecordService.uniappAdCallback(body)); } + @Inner + @Operation(summary = "观看广告列表", description = "观看广告列表") + @PostMapping("/remote/count") + public R remoteCount(@RequestBody AdRecordDto dto) { + return R.ok(adRecordService.count(dto)); + } + /* ************************************* start 远程调用 start ************************************* */ /* ************************************* start app start ************************************* */ diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/mapper/ad/ThirdAdRecordMapper.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/mapper/ad/ThirdAdRecordMapper.java index 28781cb1..79120bc2 100755 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/mapper/ad/ThirdAdRecordMapper.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/mapper/ad/ThirdAdRecordMapper.java @@ -3,14 +3,17 @@ package com.bsd.pjcloud.integrated.mapper.ad; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; import com.bsd.pjcloud.integrated.dto.ad.AdRecordDto; -import com.bsd.pjcloud.integrated.entity.ad.AdRecordEntity; +import com.bsd.pjcloud.integrated.entity.AdRecordEntity; import com.bsd.pjcloud.integrated.vo.ad.AdRecordVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + @Mapper public interface ThirdAdRecordMapper extends PjcloudBaseMapper { Page selectPage(Page page, @Param("dto") AdRecordDto dto); + Long count(@Param("dto") AdRecordDto dto); } \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/AdRecordService.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/AdRecordService.java index ec5bbf27..b6bdd9e4 100755 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/AdRecordService.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/AdRecordService.java @@ -3,11 +3,12 @@ package com.bsd.pjcloud.integrated.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.integrated.dto.ad.AdRecordDto; -import com.bsd.pjcloud.integrated.vo.ad.AdIntegralTotalVo; +import com.bsd.pjcloud.integrated.entity.AdRecordEntity; import com.bsd.pjcloud.integrated.vo.ad.AdRecordVo; -import com.bsd.pjcloud.integrated.entity.ad.AdRecordEntity; import com.bsd.pjcloud.thirdparty.dto.ad.UniappAdCallbackDto; +import java.util.List; + public interface AdRecordService extends IService { /** @@ -21,4 +22,9 @@ public interface AdRecordService extends IService { Boolean reportAdView(AdRecordDto dto); Page pageList(Page page, AdRecordDto dto); + + /** + * 观看广告列表 + */ + Long count(AdRecordDto dto); } \ No newline at end of file diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/ad/AdRecordServiceImpl.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/ad/AdRecordServiceImpl.java index af907179..a5f6c3ed 100755 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/ad/AdRecordServiceImpl.java +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/service/impl/ad/AdRecordServiceImpl.java @@ -13,10 +13,10 @@ import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.integrated.constant.ad.AdRecordStatus; import com.bsd.pjcloud.integrated.constant.ad.AdTypeEnum; import com.bsd.pjcloud.integrated.dto.ad.AdRecordDto; +import com.bsd.pjcloud.integrated.entity.AdRecordEntity; import com.bsd.pjcloud.integrated.mapper.ad.ThirdAdRecordMapper; import com.bsd.pjcloud.integrated.service.AdRecordService; import com.bsd.pjcloud.integrated.vo.ad.AdRecordVo; -import com.bsd.pjcloud.integrated.entity.ad.AdRecordEntity; import com.bsd.pjcloud.thirdparty.dto.ad.UniappAdCallbackDto; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -88,6 +88,11 @@ public class AdRecordServiceImpl extends ServiceImpl records) { if (ObjectUtil.isEmpty(records)) return; List userIdList = records.stream().map(AdRecordVo::getUserId).distinct().filter(ObjectUtil::isNotNull).toList(); diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/ad/ThirdAdRecordMapper.xml b/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/ad/ThirdAdRecordMapper.xml index e35a0651..09ca6012 100755 --- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/ad/ThirdAdRecordMapper.xml +++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/resources/mapper/ad/ThirdAdRecordMapper.xml @@ -4,23 +4,23 @@ select a.id, - a.user_id, - a.trans_id, - a.ad_id, - a.ad_type, - a.ad_provider, - a.visit_platform, - a.visit_start_time, - a.visit_end_time, - a.visit_duration, - a.status, - a.extra, - a.create_time, - a.update_time, - a.create_by, - a.update_by, - a.del_flag, - a.tenant_id + a.user_id, + a.trans_id, + a.ad_id, + a.ad_type, + a.ad_provider, + a.visit_platform, + a.visit_start_time, + a.visit_end_time, + a.visit_duration, + a.status, + a.extra, + a.create_time, + a.update_time, + a.create_by, + a.update_by, + a.del_flag, + a.tenant_id @@ -53,4 +53,13 @@ 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/constant/Integral/WalletIntegralBizEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/Integral/WalletIntegralBizEnum.java index eb483da7..cbdd5a92 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/Integral/WalletIntegralBizEnum.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/Integral/WalletIntegralBizEnum.java @@ -9,13 +9,14 @@ import java.util.Arrays; import java.util.List; /** - * 积分业务枚举 + * 积分业务枚举 exchange */ @Getter @AllArgsConstructor public enum WalletIntegralBizEnum { REWARDED_AD("1", "激励广告"), UPDATE("5", "更新积分"), + EXCHANGE("10", "兑换"), ; private final String code; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUniqueCodeConstant.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUniqueCodeConstant.java new file mode 100644 index 00000000..3698440b --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUniqueCodeConstant.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.wallet.api.constant.act; + + +public class ActUniqueCodeConstant { + + public static final String REWARDED_AD_UNIQUE_CODE = "D6YATz"; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUserReceiveEnum.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUserReceiveEnum.java index ec115f59..6225a0ca 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUserReceiveEnum.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUserReceiveEnum.java @@ -26,6 +26,9 @@ public enum ActUserReceiveEnum { PLEASE_RECEIVE_IN_BIRTH_MONTH("-100", "请在生日当月领取"), PLEASE_FILL_BIRTH_DATE("-101", "请填写出生日期"), BIRTHDAY_PERIOD_ENDED("-102", "生日已结束"), + + // 积分不足 + INTEGRAL_NOT_ENOUGH("-200", "积分不足"), ; private final String code; diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/act/ActComCancelDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/act/ActComCancelDto.java new file mode 100644 index 00000000..28dc0f56 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/act/ActComCancelDto.java @@ -0,0 +1,31 @@ +package com.bsd.pjcloud.wallet.api.dto.act; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class ActComCancelDto { + + /** + * 活动子id + */ + @NotNull(message = "活动子id不能为空") + private Long actItemId; + + /** + * 用户id + */ + @NotNull(message = "用户id不能为空") + private Long userId; + + /** + * 订单id + */ + private Long orderId; + + /** + * 活动抵扣金额 + */ + private Integer useAmountPrice; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/act/ActCouponRecordDto.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/act/ActCouponRecordDto.java index fd7266f8..61b6cf67 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/act/ActCouponRecordDto.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/dto/act/ActCouponRecordDto.java @@ -20,4 +20,6 @@ public class ActCouponRecordDto extends ActCouponRecordEntity { private Long parentActId; + private Long mchId; + } diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/act/ActAdEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/act/ActAdEntity.java index 2ce3c6f8..215b7b04 100755 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/act/ActAdEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/act/ActAdEntity.java @@ -26,6 +26,12 @@ public class ActAdEntity extends Model { @Schema(description = "广告活动id") private Long id; + /** + * 商户id + */ + @Schema(description = "商户id") + private Long mchId; + /** * 广告活动唯一code */ diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteComActService.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteComActService.java new file mode 100644 index 00000000..4e0395c6 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/feign/RemoteComActService.java @@ -0,0 +1,41 @@ +package com.bsd.pjcloud.wallet.api.feign; + +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.dto.act.ActComCancelDto; +import com.bsd.pjcloud.wallet.api.vo.act.ActComItemVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +@FeignClient(contextId = "RemoteComActService", value = ServiceNameConstants.WALLET_SERVICE) +public interface RemoteComActService { + + /** + * 根据活动id查询对应的活动 + */ + @NoToken + @GetMapping("/act/com/remote/get-act") + R remoteGetComAct(@RequestParam Long actItemId, @RequestParam Long userId); + + /** + * 活动是否能够核销 + */ + @NoToken + @GetMapping("/act/com/remote/is-can-cancel") + R remoteIsCanCancel(@RequestParam Long actItemId, @RequestParam Long userId); + + /** + * 核销活动 + */ + @NoToken + @PostMapping("/act/com/remote/do-cancel") + R remoteDoCancel(@Validated @RequestBody ActComCancelDto body); + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActComItemVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActComItemVo.java new file mode 100644 index 00000000..dc429cb7 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActComItemVo.java @@ -0,0 +1,22 @@ +package com.bsd.pjcloud.wallet.api.vo.act; + +import lombok.Data; + +@Data +public class ActComItemVo { + + private String actType; + + private Long actItemId; + + private Long userId; + + private Long mchId; + + private String username; + + private String userAvatar; + + private T detail; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActSimpleNotfiyVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActSimpleNotfiyVo.java new file mode 100644 index 00000000..44c4fc6d --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActSimpleNotfiyVo.java @@ -0,0 +1,14 @@ +package com.bsd.pjcloud.wallet.api.vo.act; + +import com.bsd.pjcloud.wallet.api.constant.act.ActTypeEnum; +import lombok.Data; + +@Data +public class ActSimpleNotfiyVo { + + private ActTypeEnum actType; + + private Long actId; + + private T detail; +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActUserTotalVo.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActUserTotalVo.java new file mode 100644 index 00000000..8c5458a6 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/vo/act/ActUserTotalVo.java @@ -0,0 +1,23 @@ +package com.bsd.pjcloud.wallet.api.vo.act; + +import lombok.Data; + +@Data +public class ActUserTotalVo { + + /** + * 所有活动总数 + */ + private Long allCount; + + /** + * 核销活动总数 + */ + private Long cancelCount; + + /** + * 优惠券活动总数 + */ + private Long couponCount; + +} diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports b/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports index e7517385..c16eafd0 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/resources/META-INF/spring/org.springframework.cloud.openfeign.FeignClient.imports @@ -1,5 +1,6 @@ com.bsd.pjcloud.wallet.api.feign.RemoteActCancelService com.bsd.pjcloud.wallet.api.feign.RemoteWalletService +com.bsd.pjcloud.wallet.api.feign.RemoteComActService com.bsd.pjcloud.wallet.api.feign.RemoteIntegralTransactionService com.bsd.pjcloud.wallet.api.feign.RemoteMchPickUpService com.bsd.pjcloud.wallet.api.feign.RemoteMchRuleJoinService diff --git a/pjcloud-wallet/pjcloud-wallet-biz/pom.xml b/pjcloud-wallet/pjcloud-wallet-biz/pom.xml index 7458306d..54acbf8d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/pom.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/pom.xml @@ -118,6 +118,12 @@ 5.7.0 compile + + com.bsd + pjcloud-integrated-api + 5.7.0 + compile + diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActAdController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActAdController.java index 0f508890..acafdb6e 100755 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActAdController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActAdController.java @@ -50,17 +50,20 @@ public class ActAdController { @Operation(summary = "激励广告兑换券领取分页", description = "激励广告兑换券领取分页") - @GetMapping("/app/rewarded-ad0-apply-coupon-page") - public R> rewardedAdApplyCouponPage(@ParameterObject Page page) { - + @GetMapping("/app/rewarded-ad-apply-coupon-page") + public R> rewardedAdApplyCouponPage(@ParameterObject Page page, @ParameterObject ActCouponRecordDto dto) { PjcloudUser user = SecurityUtils.getUser(); - - ActCouponRecordDto dto = new ActCouponRecordDto(); dto.setUserId(user.getId()); - return R.ok(actAdService.rewardedAdApplyCouponPage(page, dto)); } + @Operation(summary = "激励广告兑换券兑换", description = "激励广告兑换券兑换") + @GetMapping("/app/rewarded-ad-apply-coupon") + public R rewardedAdApplyCoupon(@RequestParam Long couponId) { + PjcloudUser user = SecurityUtils.getUser(); + return R.ok(actAdService.appReceive(couponId, user.getId())); + } + /* ************************************* end app end ************************************* */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActComController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActComController.java new file mode 100644 index 00000000..0a5cc082 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActComController.java @@ -0,0 +1,92 @@ +package com.bsd.pjcloud.wallet.controller.act; + +import com.bsd.pjcloud.common.core.util.R; +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.constant.act.ActTypeEnum; +import com.bsd.pjcloud.wallet.api.dto.act.ActComCancelDto; +import com.bsd.pjcloud.wallet.api.vo.act.ActComItemVo; +import com.bsd.pjcloud.wallet.api.vo.act.ActSimpleNotfiyVo; +import com.bsd.pjcloud.wallet.api.vo.act.ActUserTotalVo; +import com.bsd.pjcloud.wallet.service.ActComService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpHeaders; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 活动公用方法 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/act/com") +@Tag(description = "act-com", name = "活动公用方法") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class ActComController { + + private final ActComService actComService; + + /* ************************************* start 远程调用 start ************************************* */ + @Operation(summary = "根据公告id查询对应的活动", description = "根据公告id查询对应的活动") + @GetMapping("/remote/get-act") + @Inner + public R remoteGetComAct(@RequestParam Long actItemId, @RequestParam Long userId) { + return R.ok(actComService.getComAct(actItemId, userId)); + } + + @Operation(summary = "活动是否能够核销", description = "活动是否能够核销") + @GetMapping("/remote/is-can-cancel") + @Inner + public R remoteIsCanCancel(@RequestParam Long actItemId, @RequestParam Long userId) { + return R.ok(actComService.actIsCanCancel(actItemId, userId)); + } + + @Operation(summary = "核销活动", description = "核销活动") + @PostMapping("/remote/do-cancel") + @Inner + public R remoteDoCancel(@Validated @RequestBody ActComCancelDto body) { + return R.ok(actComService.doCancel(body)); + } + /* ************************************* end 远程调用 end ************************************* */ + + + /* ************************************* start ad start ************************************* */ + @Operation(summary = "根据公告id查询对应的活动", description = "根据公告id查询对应的活动") + @GetMapping("/ad/get-act") + public R getComAct(@RequestParam Long actItemId, @RequestParam Long userId) { + return R.ok(actComService.getComAct(actItemId, userId)); + } + /* ************************************* end ad end ************************************* */ + + @Operation(summary = "根据公告id查询对应的活动", description = "根据公告id查询对应的活动") + @GetMapping("/app/get-act-by-notify-id") + public R getActByNotifyId(@RequestParam Long notifyId) { + return R.ok(actComService.getActByNotifyId(notifyId)); + } + + @Operation(summary = "获取活动详情", description = "获取活动详情") + @GetMapping("/app/get-act-detail") + public R getActDetail(@RequestParam ActTypeEnum actType, @RequestParam Long actId) { + return R.ok(actComService.getActDetail(actType, actId)); + } + + @Operation(summary = "判断用户是否可以参加活动", description = "判断用户是否可以参加活动") + @GetMapping("/app/is-eligible-for-act") + public R isEligibleForAct(@RequestParam ActTypeEnum actType, @RequestParam Long actId) { + PjcloudUser user = SecurityUtils.getUser(); + return R.ok(actComService.isEligibleForAct(actType, actId, user.getId())); + } + + @Operation(summary = "用户参加活动的数量统计", description = "用户参加活动的数量统计") + @GetMapping("/app/user-total") + public R userTotal() { + PjcloudUser user = SecurityUtils.getUser(); + return R.ok(actComService.userTotal(user.getId())); + } + + +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActCouponRecordController.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActCouponRecordController.java index e12a2b0a..77e44e48 100755 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActCouponRecordController.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/controller/act/ActCouponRecordController.java @@ -66,6 +66,13 @@ public class ActCouponRecordController { return R.ok(actCouponRecordService.pageList(page, dto)); } + @Operation(summary = "app查询本店优惠券列表", description = "app查询本店优惠券列表") + @GetMapping("/app/mch/page") + public R> appMchPage(@ParameterObject Page page, @ParameterObject ActCouponRecordDto dto) { + PjcloudUser user = SecurityUtils.getUser(); + return R.ok(actCouponRecordService.appMchPage(page, user, dto)); + } + /* ************************************* end app end ************************************* */ /** diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/integral/IntegralManageMapper.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/integral/IntegralManageMapper.java index fd889ff5..dd410747 100755 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/integral/IntegralManageMapper.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/mapper/integral/IntegralManageMapper.java @@ -46,7 +46,7 @@ public interface IntegralManageMapper extends PjcloudBaseMapper { * 激励广告兑换券领取分页 */ Page rewardedAdApplyCouponPage(Page page, ActCouponRecordDto dto); + + /** + * 激励广告兑换券兑换 + */ + Long appReceive(Long couponId, Long receiveUserId); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActCancelItemService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActCancelItemService.java index 5acc3833..6c606677 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActCancelItemService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActCancelItemService.java @@ -3,6 +3,7 @@ package com.bsd.pjcloud.wallet.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.bsd.pjcloud.common.security.service.PjcloudUser; +import com.bsd.pjcloud.wallet.api.constant.act.ActUserReceiveEnum; import com.bsd.pjcloud.wallet.api.dto.act.ActCancelItemDto; import com.bsd.pjcloud.wallet.api.entity.act.ActCancelItemEntity; import com.bsd.pjcloud.wallet.api.vo.act.ActCancelItemVo; @@ -22,6 +23,11 @@ public interface ActCancelItemService extends IService { */ ActCancelItemVo appFindUnique(Long actId, PjcloudUser user); + /** + * 判断用户是否可以参加活动 + */ + ActUserReceiveEnum isEligibleForAct(Long actId, Long userId); + /** * app查询本店优惠券列表 */ @@ -32,8 +38,20 @@ public interface ActCancelItemService extends IService { */ Boolean cancel(ActCancelItemDto dto); + /** + * 活动是否能够核销 + */ + String actIsCanCancel(ActCancelItemDto detail); + /** * 查询详情 */ ActCancelItemVo getDetail(Long cancelId); + + ActCancelItemVo getDetail(Long actItemId, Long userId); + + /** + * 用户参加活动的数量统计 + */ + Long userTotal(Long userId); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActComService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActComService.java new file mode 100644 index 00000000..8c986330 --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActComService.java @@ -0,0 +1,48 @@ +package com.bsd.pjcloud.wallet.service; + + +import com.bsd.pjcloud.wallet.api.constant.act.ActTypeEnum; +import com.bsd.pjcloud.wallet.api.dto.act.ActComCancelDto; +import com.bsd.pjcloud.wallet.api.vo.act.ActComItemVo; +import com.bsd.pjcloud.wallet.api.vo.act.ActSimpleNotfiyVo; +import com.bsd.pjcloud.wallet.api.vo.act.ActUserTotalVo; + +public interface ActComService { + + /** + * 获取活动 + */ + ActComItemVo getComAct(Long actId, Long userId); + + /** + * 活动是否能够核销 + * + * @return 错误信息 + */ + String actIsCanCancel(Long actItemId, Long userId); + + /** + * 核销活动 + */ + Boolean doCancel(ActComCancelDto body); + + /** + * 根据公告id查询对应的活动 + */ + ActSimpleNotfiyVo getActByNotifyId(Long notifyId); + + /** + * 获取活动详情 + */ + ActSimpleNotfiyVo getActDetail(ActTypeEnum actType, Long actId); + + /** + * 判断用户是否可以参加活动 + */ + String isEligibleForAct(ActTypeEnum actType, Long actId, Long userId); + + /** + * 用户参加活动的数量统计 + */ + ActUserTotalVo userTotal(Long userId); +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActCouponRecordService.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActCouponRecordService.java index 5e8f605e..fa168b22 100755 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActCouponRecordService.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/ActCouponRecordService.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.wallet.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.wallet.api.constant.act.ActUserReceiveEnum; import com.bsd.pjcloud.wallet.api.dto.act.ActCouponReceiveDto; import com.bsd.pjcloud.wallet.api.dto.act.ActCouponRecordDto; @@ -46,4 +47,9 @@ public interface ActCouponRecordService extends IService * 用户参加活动的数量统计 */ Long userTotal(Long userId); + + /** + * app查询本店优惠券列表 + */ + Page appMchPage(Page page, PjcloudUser user, ActCouponRecordDto dto); } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActAdServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActAdServiceImpl.java index d9bea4f0..3f04617c 100755 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActAdServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActAdServiceImpl.java @@ -8,10 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bsd.pjcloud.common.data.datascope.DataScope; import com.bsd.pjcloud.wallet.api.constant.act.*; -import com.bsd.pjcloud.wallet.api.dto.act.ActAdDto; -import com.bsd.pjcloud.wallet.api.dto.act.ActCouponDto; -import com.bsd.pjcloud.wallet.api.dto.act.ActCouponRecordDto; -import com.bsd.pjcloud.wallet.api.dto.act.ActCreateAdCouponDto; +import com.bsd.pjcloud.wallet.api.dto.act.*; import com.bsd.pjcloud.wallet.api.entity.act.ActAdEntity; import com.bsd.pjcloud.wallet.api.entity.act.ActCouponEntity; import com.bsd.pjcloud.wallet.api.vo.act.ActAdVo; @@ -24,6 +21,7 @@ import com.bsd.pjcloud.wallet.service.ActCouponService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; @@ -36,8 +34,6 @@ import java.util.List; @RequiredArgsConstructor public class ActAdServiceImpl extends ServiceImpl implements ActAdService { - private final static String REWARDED_AD_UNIQUE_CODE = "wbcHjM"; - private final ActCouponService actCouponService; private final ActCouponRecordService actCouponRecordService; @@ -103,6 +99,17 @@ public class ActAdServiceImpl extends ServiceImpl impl return actCouponRecordService.pageList(page, dto); } + /** + * 激励广告兑换券兑换 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Long appReceive(Long couponId, Long receiveUserId) { + ActCouponReceiveDto dto = new ActCouponReceiveDto(); + dto.setReceiveUserId(receiveUserId); + dto.setCouponId(couponId); + return actCouponRecordService.appReceive(dto); + } /* ************************************* end app end ************************************* */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCancelItemServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCancelItemServiceImpl.java index 44f69e7b..c69406d8 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCancelItemServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCancelItemServiceImpl.java @@ -16,6 +16,7 @@ import com.bsd.pjcloud.common.security.service.PjcloudUser; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; import com.bsd.pjcloud.wallet.api.constant.act.ActCancelStatusEnum; import com.bsd.pjcloud.wallet.api.constant.act.ActStatusEnum; +import com.bsd.pjcloud.wallet.api.constant.act.ActUserReceiveEnum; import com.bsd.pjcloud.wallet.api.dto.act.ActCancelItemDto; import com.bsd.pjcloud.wallet.api.entity.WalletManageEntity; import com.bsd.pjcloud.wallet.api.entity.act.ActCancelEntity; @@ -289,6 +290,66 @@ public class ActCancelItemServiceImpl extends ServiceImpl() + .eq(ActCancelItemEntity::getActId, actId) + .eq(ActCancelItemEntity::getReceiverUserId, userId) + ); + if (ObjectUtil.isEmpty(detail)) { + return ActUserReceiveEnum.USER_CAN_JOIN_ACT; + } + return ActUserReceiveEnum.USER_LIMIT_REACHED; + } + + @Override + public ActCancelItemVo getDetail(Long actItemId, Long userId) { + return null; + } + + @Override + public Long userTotal(Long userId) { + return 0L; + } + // 判断车牌号是否重复 private boolean existAct(Long userId, Long actId) { Long count = baseMapper.selectCount(new LambdaQueryWrapper() diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActComServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActComServiceImpl.java new file mode 100644 index 00000000..eae71d2b --- /dev/null +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActComServiceImpl.java @@ -0,0 +1,210 @@ +package com.bsd.pjcloud.wallet.service.impl.act; + +import cn.hutool.core.util.ObjectUtil; +import com.bsd.pjcloud.admin.api.dto.UserInfo; +import com.bsd.pjcloud.admin.api.entity.SysUser; +import com.bsd.pjcloud.admin.api.feign.RemoteUserService; +import com.bsd.pjcloud.wallet.api.constant.act.ActCouponUseScopeTypeEnum; +import com.bsd.pjcloud.wallet.api.constant.act.ActTypeEnum; +import com.bsd.pjcloud.wallet.api.constant.act.ActUserReceiveEnum; +import com.bsd.pjcloud.wallet.api.dto.act.ActCancelItemDto; +import com.bsd.pjcloud.wallet.api.dto.act.ActComCancelDto; +import com.bsd.pjcloud.wallet.api.entity.act.ActCancelEntity; +import com.bsd.pjcloud.wallet.api.entity.act.ActCouponEntity; +import com.bsd.pjcloud.wallet.api.entity.act.ActCouponRecordEntity; +import com.bsd.pjcloud.wallet.api.vo.act.ActCancelItemVo; +import com.bsd.pjcloud.wallet.api.vo.act.ActComItemVo; +import com.bsd.pjcloud.wallet.api.vo.act.ActSimpleNotfiyVo; +import com.bsd.pjcloud.wallet.api.vo.act.ActUserTotalVo; +import com.bsd.pjcloud.wallet.service.*; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 活动公用方法 + */ +@Service +@Slf4j +@RequiredArgsConstructor +public class ActComServiceImpl implements ActComService { + + private final ActCancelService actCancelService; + private final ActCancelItemService actCancelItemService; + + private final ActCouponService actCouponService; + private final ActCouponRecordService actCouponRecordService; + + private final RemoteUserService remoteUserService; + + /** + * 获取活动 + */ + @Override + public ActComItemVo getComAct(Long actItemId, Long userId) { + ActComItemVo result = new ActComItemVo<>(); + List actEnumList = ActTypeEnum.sortList(); + for (ActTypeEnum act : actEnumList) { + if (ObjectUtil.equals(act, ActTypeEnum.CANCEL_ACT)) { + ActCancelItemVo detail = actCancelItemService.getDetail(actItemId, userId); + if (ObjectUtil.isNotEmpty(detail)) { + result.setActItemId(detail.getId()); + result.setActType(act.getCode()); + result.setMchId(detail.getMchId()); + result.setDetail(detail); + break; + } + } + if (ObjectUtil.equals(act, ActTypeEnum.COUPON_ACT)) { + ActCouponRecordEntity detail = actCouponRecordService.getDetail(actItemId, userId); + if (ObjectUtil.isNotEmpty(detail)) { + ActCouponEntity actCouponDetail = actCouponService.getById(detail.getCouponId()); + result.setActItemId(detail.getId()); + result.setActType(act.getCode()); + if (ObjectUtil.isNotEmpty(actCouponDetail) && ObjectUtil.equals(actCouponDetail.getUseScopeType(), ActCouponUseScopeTypeEnum.SPECIFIED_MERCHANT.getCode())) { + result.setMchId(Long.valueOf(actCouponDetail.getScopeId())); + } + result.setDetail(detail); + break; + } + } + } + if (ObjectUtil.isEmpty(result)) return null; + // 查询用户 + UserInfo userInfo = remoteUserService.getInnerByUserId(userId).getData(); + if (ObjectUtil.isNotEmpty(userInfo)) { + SysUser sysUser = userInfo.getSysUser(); + result.setUserId(sysUser.getUserId()); + result.setUsername(sysUser.getName()); + result.setUserAvatar(sysUser.getAvatar()); + return result; + } + return null; + } + + /** + * 活动是否能够核销 + * + * @return 错误信息 + */ + @Override + public String actIsCanCancel(Long actItemId, Long userId) { + ActComItemVo comAct = getComAct(actItemId, userId); + ActTypeEnum actType = ActTypeEnum.valueOfByType(comAct.getActType()); + switch (actType) { + case CANCEL_ACT: + return actCancelItemService.actIsCanCancel((ActCancelItemDto) comAct.getDetail()); + case COUPON_ACT: + return actCouponRecordService.actIsCanCancel((ActCouponRecordEntity) comAct.getDetail()); + } + return null; + } + + /** + * 核销活动 + */ + @Override + public Boolean doCancel(ActComCancelDto body) { + ActComItemVo comAct = getComAct(body.getActItemId(), body.getUserId()); + ActTypeEnum actType = ActTypeEnum.valueOfByType(comAct.getActType()); + switch (actType) { + case CANCEL_ACT: + actCancelItemService.cancel((ActCancelItemDto) comAct.getDetail()); + return true; + case COUPON_ACT: + actCouponRecordService.cancel((ActCouponRecordEntity) comAct.getDetail(), body.getOrderId(), body.getUseAmountPrice()); + return true; + } + return false; + } + + /** + * 根据公告id查询对应的活动 + */ + @Override + public ActSimpleNotfiyVo getActByNotifyId(Long notifyId) { + ActSimpleNotfiyVo result = new ActSimpleNotfiyVo<>(); + List actEnumList = ActTypeEnum.sortList(); + for (ActTypeEnum act : actEnumList) { + if (ObjectUtil.equals(act, ActTypeEnum.CANCEL_ACT)) { + ActCancelEntity detail = actCancelService.getDetailByNoticeId(notifyId); + if (ObjectUtil.isNotEmpty(detail)) { + result.setActId(detail.getId()); + result.setActType(act); + result.setDetail(detail); + return result; + } + } + if (ObjectUtil.equals(act, ActTypeEnum.COUPON_ACT)) { + ActCouponEntity detail = actCouponService.getDetailByNoticeId(notifyId); + if (ObjectUtil.isNotEmpty(detail)) { + result.setActId(detail.getId()); + result.setActType(act); + result.setDetail(detail); + return result; + } + } + } + return null; + } + + /** + * 获取活动详情 + */ + @Override + public ActSimpleNotfiyVo getActDetail(ActTypeEnum actType, Long actId) { + ActSimpleNotfiyVo result = new ActSimpleNotfiyVo<>(); + result.setActId(actId); + if (ObjectUtil.equals(actType, ActTypeEnum.CANCEL_ACT)) { + ActCancelEntity detail = actCancelService.getById(actId); + if (ObjectUtil.isNotEmpty(detail)) { + result.setActType(actType); + result.setDetail(detail); + return result; + } + } + if (ObjectUtil.equals(actType, ActTypeEnum.COUPON_ACT)) { + ActCouponEntity detail = actCouponService.getById(actId); + if (ObjectUtil.isNotEmpty(detail)) { + result.setActType(actType); + result.setDetail(detail); + return result; + } + } + return null; + } + + /** + * 判断用户是否可以参加活动 + */ + @Override + public String isEligibleForAct(ActTypeEnum actType, Long actId, Long userId) { + ActUserReceiveEnum status = ActUserReceiveEnum.USER_CANNOT_PARTICIPATE; + // 核销活动目前只能参加一次 + if (ObjectUtil.equals(actType, ActTypeEnum.CANCEL_ACT)) { + status = actCancelItemService.isEligibleForAct(actId, userId); + } + if (ObjectUtil.equals(actType, ActTypeEnum.COUPON_ACT)) { + status = actCouponRecordService.isEligibleForAct(actId, userId); + } + return status.getCode(); + } + + /** + * 用户参加活动的数量统计 + */ + @Override + public ActUserTotalVo userTotal(Long userId) { + ActUserTotalVo result = new ActUserTotalVo(); + // 查询用户参加核销活动的总数 + Long cancelCount = actCancelItemService.userTotal(userId); + // 查询用户参加优惠券活动的总数 + Long couponCount = actCouponRecordService.userTotal(userId); + result.setCancelCount(cancelCount); + result.setCouponCount(couponCount); + result.setAllCount(cancelCount + couponCount); + return result; + } +} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponRecordServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponRecordServiceImpl.java index c53791ed..57d04499 100755 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponRecordServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponRecordServiceImpl.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.wallet.service.impl.act; import cn.hutool.core.collection.IterUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -10,16 +11,23 @@ import com.bsd.pjcloud.admin.api.entity.SysUser; import com.bsd.pjcloud.admin.api.feign.RemoteUserService; import com.bsd.pjcloud.admin.api.utils.DataUtil; import com.bsd.pjcloud.admin.api.vo.UserVO; +import com.bsd.pjcloud.common.core.constant.CommonRoleConstant; +import com.bsd.pjcloud.common.core.constant.enums.MerchantTypeEnum; import com.bsd.pjcloud.common.core.exception.ServiceException; import com.bsd.pjcloud.common.core.util.CollectionUtils; import com.bsd.pjcloud.common.core.util.R; -import com.bsd.pjcloud.wallet.api.constant.WalletCodeBizEnum; +import com.bsd.pjcloud.common.security.service.PjcloudUser; +import com.bsd.pjcloud.wallet.api.constant.Integral.WalletIntegralBizEnum; import com.bsd.pjcloud.wallet.api.constant.act.ActCouponRecordStatusEnum; +import com.bsd.pjcloud.wallet.api.constant.act.ActUniqueCodeConstant; import com.bsd.pjcloud.wallet.api.constant.act.ActUserReceiveEnum; import com.bsd.pjcloud.wallet.api.dto.act.ActCouponReceiveDto; import com.bsd.pjcloud.wallet.api.dto.act.ActCouponRecordDto; import com.bsd.pjcloud.wallet.api.entity.act.ActCouponEntity; import com.bsd.pjcloud.wallet.api.entity.act.ActCouponRecordEntity; +import com.bsd.pjcloud.wallet.api.entity.integral.IntegralManageEntity; +import com.bsd.pjcloud.wallet.api.entity.integral.IntegralTransactionEntity; +import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import com.bsd.pjcloud.wallet.api.vo.act.ActCouponRecordVo; import com.bsd.pjcloud.wallet.mapper.act.ActCouponMapper; import com.bsd.pjcloud.wallet.mapper.act.ActCouponRecordMapper; @@ -31,6 +39,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -50,6 +59,9 @@ public class ActCouponRecordServiceImpl extends ServiceImpl appMchPage(Page page, PjcloudUser user, ActCouponRecordDto dto) { + if (ObjectUtil.isEmpty(user.getDeptId())) return null; + // 查询用户 + UserInfo userInfo = remoteUserService.getByUserId(user.getId()).getData(); + if (ObjectUtil.isEmpty(userInfo)) return null; + // 查询商户 + MchManageVo mchDetail = mchManageService.getByDeptId(userInfo.getSysUser().getDeptId(), MerchantTypeEnum.SUPERMARKET); + if (ObjectUtil.isEmpty(mchDetail)) return null; + // 判断是否有商户权限 + if (ObjectUtil.isEmpty(userInfo.getRoleCodes()) || !Arrays.asList(userInfo.getRoleCodes()).contains(CommonRoleConstant.MCH_USER)) { + return null; + } + dto.setMchId(mchDetail.getId()); + return baseMapper.pageList(page, dto); + } + private void disposePageList(List list) { // 用户 List userIds = list.stream().map(ActCouponRecordVo::getUserId).distinct().toList(); diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponServiceImpl.java index c437fc67..90adbabe 100755 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponServiceImpl.java @@ -74,16 +74,20 @@ public class ActCouponServiceImpl extends ServiceImpl select a.id, + a.mch_id, a.unique_code, a.name, a.description, @@ -23,6 +24,9 @@ a.del_flag = '0' + + and a.mch_id = #{dto.mchId} + and a.unique_code = #{dto.uniqueCode} diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/act/ActCouponRecordMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/act/ActCouponRecordMapper.xml index 20562527..8435db68 100755 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/act/ActCouponRecordMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/act/ActCouponRecordMapper.xml @@ -34,6 +34,9 @@ and a.user_id = #{dto.userId} + + and a.user_name LIKE concat('%',#{dto.userName},'%') + and a.status = #{dto.status} From be45e01c557cb83162f4148a25a44185b243853a Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Fri, 10 Apr 2026 15:03:21 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/constant/act/ActUniqueCodeConstant.java | 2 +- .../service/impl/act/ActCouponRecordServiceImpl.java | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUniqueCodeConstant.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUniqueCodeConstant.java index 3698440b..9fe03a09 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUniqueCodeConstant.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/constant/act/ActUniqueCodeConstant.java @@ -3,6 +3,6 @@ package com.bsd.pjcloud.wallet.api.constant.act; public class ActUniqueCodeConstant { - public static final String REWARDED_AD_UNIQUE_CODE = "D6YATz"; + public static final String REWARDED_AD_UNIQUE_CODE = "wbcHjM"; } diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponRecordServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponRecordServiceImpl.java index 57d04499..dda1bb98 100755 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponRecordServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/act/ActCouponRecordServiceImpl.java @@ -23,12 +23,14 @@ import com.bsd.pjcloud.wallet.api.constant.act.ActUniqueCodeConstant; import com.bsd.pjcloud.wallet.api.constant.act.ActUserReceiveEnum; import com.bsd.pjcloud.wallet.api.dto.act.ActCouponReceiveDto; import com.bsd.pjcloud.wallet.api.dto.act.ActCouponRecordDto; +import com.bsd.pjcloud.wallet.api.entity.act.ActAdEntity; import com.bsd.pjcloud.wallet.api.entity.act.ActCouponEntity; import com.bsd.pjcloud.wallet.api.entity.act.ActCouponRecordEntity; import com.bsd.pjcloud.wallet.api.entity.integral.IntegralManageEntity; import com.bsd.pjcloud.wallet.api.entity.integral.IntegralTransactionEntity; import com.bsd.pjcloud.wallet.api.vo.MchManageVo; import com.bsd.pjcloud.wallet.api.vo.act.ActCouponRecordVo; +import com.bsd.pjcloud.wallet.mapper.act.ActAdMapper; import com.bsd.pjcloud.wallet.mapper.act.ActCouponMapper; import com.bsd.pjcloud.wallet.mapper.act.ActCouponRecordMapper; import com.bsd.pjcloud.wallet.service.*; @@ -63,6 +65,8 @@ public class ActCouponRecordServiceImpl extends ServiceImpl Date: Fri, 10 Apr 2026 17:25:28 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=E6=88=91=E8=A6=81=E8=B5=9A=E7=B1=B3bu?= =?UTF-8?q?g=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/800pjcloudx_hardware.sql | 26 ++++ .../dto/order/app/HardAppCreateOrderDto.java | 6 +- .../app/HardAppCreateTakeOutOrderDto.java | 8 +- ...ess.java => HardAppTakeOutAddressDto.java} | 3 +- .../dto/order/app/HardAppTakeOutApptDto.java | 46 +++++++ .../entity/order/HardTakeOutApptEntity.java | 115 ++++++++++++++++++ .../controller/order/HardOrderController.java | 1 + .../mapper/order/HardTakeOutApptMapper.java | 10 ++ .../hard/service/HardTakeOutApptService.java | 8 ++ .../impl/order/HardOrderServiceImpl.java | 20 ++- .../order/HardTakeOutApptServiceImpl.java | 15 +++ .../mapper/order/HardTakeOutApptMapper.xml | 33 +++++ .../controller/mch/MchManageController.java | 22 ++-- 13 files changed, 289 insertions(+), 24 deletions(-) rename pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/{HardAppTakeOutAddress.java => HardAppTakeOutAddressDto.java} (92%) create mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppTakeOutApptDto.java create mode 100755 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardTakeOutApptEntity.java create mode 100755 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardTakeOutApptMapper.java create mode 100755 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardTakeOutApptService.java create mode 100755 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardTakeOutApptServiceImpl.java create mode 100755 pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardTakeOutApptMapper.xml diff --git a/db/800pjcloudx_hardware.sql b/db/800pjcloudx_hardware.sql index 8c639496..ed48fcb3 100644 --- a/db/800pjcloudx_hardware.sql +++ b/db/800pjcloudx_hardware.sql @@ -332,6 +332,32 @@ CREATE TABLE hard_order_address PRIMARY KEY (id) ) ENGINE = InnoDB COMMENT ='订单地址'; + +-- ---------------------------- +-- Table structure for hard_take_out_appt +-- ---------------------------- +DROP TABLE IF EXISTS `hard_take_out_appt`; +CREATE TABLE hard_take_out_appt +( + id bigint NOT NULL COMMENT '编号', + user_id bigint NOT NULL COMMENT '用户id', + order_id bigint NOT NULL COMMENT '订单id', + + expect_delivery_type varchar(16) NOT NULL COMMENT 'IMMEDIATE:立即送;SCHEDULED:预约时段;', + expect_delivery_date date DEFAULT NULL COMMENT '预约送达日历日(仅SCHEDULED使用)', + expect_delivery_start time DEFAULT NULL COMMENT '预约时段开始时间', + expect_delivery_end time DEFAULT NULL COMMENT '预约时段结束时间', + expect_arrive_time datetime DEFAULT NULL COMMENT '立即送时预计送达时间点可选', + + create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人', + create_time datetime DEFAULT NULL COMMENT '创建时间', + update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人', + update_time datetime DEFAULT NULL COMMENT '修改时间', + del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记', + tenant_id bigint DEFAULT NULL COMMENT '租户ID', + PRIMARY KEY (id) +) ENGINE = InnoDB COMMENT ='外卖送达时间'; + -- ---------------------------- -- Table structure for hard_after_sale -- ---------------------------- diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java index bc7c3b51..7229ed61 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateOrderDto.java @@ -4,7 +4,6 @@ import com.bsd.pjcloud.hard.api.constant.HardTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardOrderTypeEnum; import com.bsd.pjcloud.hard.api.constant.order.HardPayTypeEnum; import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum; -import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; @@ -52,6 +51,9 @@ public class HardAppCreateOrderDto { private Long apptId; // 地址 - private HardAppTakeOutAddress address; + private HardAppTakeOutAddressDto address; + + // 预约时间信息 + private HardAppTakeOutApptDto appt; } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateTakeOutOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateTakeOutOrderDto.java index 37e3c6fb..83b11379 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateTakeOutOrderDto.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppCreateTakeOutOrderDto.java @@ -21,6 +21,12 @@ public class HardAppCreateTakeOutOrderDto { * 外卖地址 */ @NotNull(message = "外卖地址不能为空") - private HardAppTakeOutAddress address; + private HardAppTakeOutAddressDto address; + + /** + * 外卖预约信息 + */ + @NotNull(message = "预约时间信息不能为空") + private HardAppTakeOutApptDto appt; } diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppTakeOutAddress.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppTakeOutAddressDto.java similarity index 92% rename from pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppTakeOutAddress.java rename to pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppTakeOutAddressDto.java index 2b01250a..72bfc6d0 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppTakeOutAddress.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppTakeOutAddressDto.java @@ -1,11 +1,10 @@ package com.bsd.pjcloud.hard.api.dto.order.app; import cn.hutool.core.util.ObjectUtil; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @Data -public class HardAppTakeOutAddress { +public class HardAppTakeOutAddressDto { /** * 地址id diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppTakeOutApptDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppTakeOutApptDto.java new file mode 100644 index 00000000..cc999e6d --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/app/HardAppTakeOutApptDto.java @@ -0,0 +1,46 @@ +package com.bsd.pjcloud.hard.api.dto.order.app; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; + +@Data +public class HardAppTakeOutApptDto { + + /** + * IMMEDIATE:立即送;SCHEDULED:预约时段; + */ + @Schema(description = "IMMEDIATE:立即送;SCHEDULED:预约时段;") + private String expectDeliveryType; + + /** + * 预约送达日历日(仅SCHEDULED使用) + */ + @Schema(description = "预约送达日历日(仅SCHEDULED使用)") + private LocalDate expectDeliveryDate; + + /** + * 预约时段开始时间 + */ + @Schema(description = "预约时段开始时间") + @JsonFormat(pattern = "HH:mm:ss") + private LocalTime expectDeliveryStart; + + /** + * 预约时段结束时间 + */ + @Schema(description = "预约时段结束时间") + @JsonFormat(pattern = "HH:mm:ss") + private LocalTime expectDeliveryEnd; + + /** + * 立即送时预计送达时间点可选 + */ + @Schema(description = "立即送时预计送达时间点可选") + private LocalDateTime expectArriveTime; + +} diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardTakeOutApptEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardTakeOutApptEntity.java new file mode 100755 index 00000000..e6843c8f --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/order/HardTakeOutApptEntity.java @@ -0,0 +1,115 @@ +package com.bsd.pjcloud.hard.api.entity.order; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import com.bsd.pjcloud.common.core.util.TenantTable; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; + +/** + * 外卖送达时间 + */ +@Data +@TenantTable +@TableName("hard_take_out_appt") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "外卖送达时间") +public class HardTakeOutApptEntity extends Model { + + + /** + * 编号 + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "编号") + private Long id; + + /** + * 用户id + */ + @Schema(description = "用户id") + private Long userId; + + /** + * 订单id + */ + @Schema(description = "订单id") + private Long orderId; + + /** + * IMMEDIATE:立即送;SCHEDULED:预约时段; + */ + @Schema(description = "IMMEDIATE:立即送;SCHEDULED:预约时段;") + private String expectDeliveryType; + + /** + * 预约送达日历日(仅SCHEDULED使用) + */ + @Schema(description = "预约送达日历日(仅SCHEDULED使用)") + private LocalDate expectDeliveryDate; + + /** + * 预约时段开始时间 + */ + @Schema(description = "预约时段开始时间") + private LocalTime expectDeliveryStart; + + /** + * 预约时段结束时间 + */ + @Schema(description = "预约时段结束时间") + private LocalTime expectDeliveryEnd; + + /** + * 立即送时预计送达时间点可选 + */ + @Schema(description = "立即送时预计送达时间点可选") + private LocalDateTime expectArriveTime; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") + private LocalDateTime createTime; + + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改人") + private String updateBy; + + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改时间") + private LocalDateTime updateTime; + + /** + * 删除标记 + */ + @TableLogic + @TableField(fill = FieldFill.INSERT) + @Schema(description = "删除标记") + private String delFlag; + + /** + * 租户ID + */ + @Schema(description = "租户ID") + private Long tenantId; +} \ No newline at end of file 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 8cafc401..0bc99c25 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 @@ -221,6 +221,7 @@ public class HardOrderController { .apptId(null) .address(dto.getAddress()) .deliveryPrice(dto.getDeliveryPrice()) + .appt(dto.getAppt()) .build(); return R.ok(hardwareOrderService.appCreateTakeOutOrder(createOrderDto)); } diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardTakeOutApptMapper.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardTakeOutApptMapper.java new file mode 100755 index 00000000..2c072f03 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/mapper/order/HardTakeOutApptMapper.java @@ -0,0 +1,10 @@ +package com.bsd.pjcloud.hard.mapper.order; + +import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper; +import com.bsd.pjcloud.hard.api.entity.order.HardTakeOutApptEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface HardTakeOutApptMapper extends PjcloudBaseMapper { + +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardTakeOutApptService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardTakeOutApptService.java new file mode 100755 index 00000000..f8ef44a8 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardTakeOutApptService.java @@ -0,0 +1,8 @@ +package com.bsd.pjcloud.hard.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.bsd.pjcloud.hard.api.entity.order.HardTakeOutApptEntity; + +public interface HardTakeOutApptService extends IService { + +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java index f8a37914..34f26193 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardOrderServiceImpl.java @@ -62,10 +62,7 @@ import com.bsd.pjcloud.hard.api.dto.wechat.WechatMicropayDto; import com.bsd.pjcloud.hard.api.entity.HardApptEntity; import com.bsd.pjcloud.hard.api.entity.HardThirdMiOrderEntity; import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity; -import com.bsd.pjcloud.hard.api.entity.order.HardCarEntity; -import com.bsd.pjcloud.hard.api.entity.order.HardOrderAddressEntity; -import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; -import com.bsd.pjcloud.hard.api.entity.order.HardParentCarEntity; +import com.bsd.pjcloud.hard.api.entity.order.*; import com.bsd.pjcloud.hard.api.entity.spu.HardSpuEntity; import com.bsd.pjcloud.hard.api.utils.HardUtil; import com.bsd.pjcloud.hard.api.vo.HardDoorFlowVo; @@ -150,6 +147,7 @@ public class HardOrderServiceImpl extends ServiceImpl choiceGroups = remoteOnlineCanteenSpuService.getChoiceGroups(String.valueOf(parentCar.getMerchantId())); - if (!choiceGroups.isOk()){ + if (!choiceGroups.isOk()) { throw new RuntimeException("未选择必选菜品"); } @@ -703,6 +701,18 @@ public class HardOrderServiceImpl extends ServiceImpl implements HardTakeOutApptService { + +} \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardTakeOutApptMapper.xml b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardTakeOutApptMapper.xml new file mode 100755 index 00000000..71ce1681 --- /dev/null +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/resources/mapper/order/HardTakeOutApptMapper.xml @@ -0,0 +1,33 @@ + + + + + + + select a.id, + a.user_id, + a.order_id, + a.expect_delivery_type, + a.expect_delivery_date, + a.expect_delivery_start, + a.expect_delivery_end, + a.expect_arrive_time, + a.create_by, + a.create_time, + a.update_by, + a.update_time, + a.del_flag, + a.tenant_id + + + + a.del_flag = '0' + + and a.user_id = #{dto.userId} + + + and a.order_id = #{dto.orderId} + + + + \ No newline at end of file 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 f2008ff5..66d04a48 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 @@ -135,21 +135,15 @@ public class MchManageController { public R> appPageJoin(@ParameterObject Page page, @ParameterObject MchManageDto dto) { PjcloudUser user = SecurityUtils.getUser(); dto.setVisibleMobile(YesNoEnum.YES.getCode()); - if (ObjectUtil.equals(dto.getType(), MerchantTypeEnum.CANTEEN.getType())) { - // 查询用户 - UserInfo userInfo = remoteUserService.getByUserId(user.getId()).getData(); - // 如果是食堂判断用户是否能查看到所有食堂 - boolean isConsumeUser = mchManageService.getIsConsumeUser(user.getId()); - if (isConsumeUser) { - dto.setCanteenIsOpen(YesNoEnum.YES.getCode()); - } - if (ObjectUtil.isNotEmpty(userInfo)) { - // 只能查到自己部门下面的食堂 - MchManageVo mch = mchManageService.getFirstMchByDeptId(userInfo.getSysUser().getDeptId(), List.of(MerchantTypeEnum.CANTEEN)); - if (ObjectUtil.isNotEmpty(mch)) { - dto.setId(mch.getId()); - } + if (ObjectUtil.isNotEmpty(user) && ObjectUtil.isNotEmpty(user.getDeptId())) { + UserInfo userInfo = remoteUserService.getInnerByUserId(user.getId()).getData(); + List pageList = remoteDeptService.getDescendantList(userInfo.getSysUser().getDeptId()).getData(); + if (ObjectUtil.isNotEmpty(pageList)) { + List deptList = pageList.stream().map(SysDept::getDeptId).distinct().toList(); + dto.setDeptIds(deptList); } + } else { + R.ok(new Page<>()); } return R.ok(mchManageService.pageJoin(page, dto)); }