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] =?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 000000000..6c641aaf4 --- /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 687657edf..89502db58 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 40dfa628b..4e41e57c2 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 7aec07e36..5728d3466 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 9595afc27..39b7d6403 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 000000000..91c59041b --- /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 e2e5751b7..77f2fa6e7 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 5618d8ed6..4c4f4eb70 --- 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 c9cfff5dd..ae83ff637 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 899644c99..5c2eea230 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 0b71d0ffe..6d40ec427 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 28781cb1a..79120bc2a 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 ec5bbf270..b6bdd9e4f 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 af9071794..a5f6c3ed3 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 e35a0651e..09ca60122 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 eb483da7c..cbdd5a92b 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 000000000..3698440bb --- /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 ec115f598..6225a0caa 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 000000000..28dc0f568 --- /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 fd7266f81..61b6cf67c 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 2ce3c6f83..215b7b04d 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 000000000..4e0395c62 --- /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 000000000..dc429cb77 --- /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 000000000..44c4fc6da --- /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 000000000..8c5458a6d --- /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 e7517385b..c16eafd08 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 7458306d7..54acbf8d6 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 0f5088907..acafdb6ec 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 000000000..0a5cc082d --- /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 e12a2b0a2..77e44e48f 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 fd889ff5b..dd410747d 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 5acc3833a..6c6066779 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 000000000..8c986330a --- /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 5e8f605e3..fa168b22f 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 d9bea4f05..3f04617c4 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 44f69e7b5..c69406d8d 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 000000000..eae71d2bf --- /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 c53791ed5..57d04499f 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 c437fc672..90adbabe2 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 205625273..8435db68b 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}