From a698d53742736015601164495628d54fb6d0e1bf Mon Sep 17 00:00:00 2001 From: zt Date: Thu, 12 Jun 2025 09:18:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/activitypay/dto/ActivityPayDTO.java | 2 + .../member/enums/ErrorCodeConstants.java | 6 +- .../api/activitypay/ActivityApiImpl.java | 1 - .../ActivityMerchantController.java | 102 +++++++++++++ .../vo/ActivityMerchantPageReqVO.java | 31 ++++ .../vo/ActivityMerchantRespVO.java | 36 +++++ .../vo/ActivityMerchantSaveReqVO.java | 24 +++ .../activitypay/vo/ActivityPayPageReqVO.java | 20 ++- .../activitypay/vo/ActivityPaySaveReqVO.java | 2 + .../vo/ActivityTablePageReqVO.java | 11 +- .../activitytable/vo/ActivityTableRespVO.java | 1 - .../vo/ActivityTableDishPageReqVO.java | 11 ++ .../vo/ActivityTableDishRespVO.java | 2 + .../vo/ActivityUpdateDishVO.java | 3 + .../ActivityVoucherController.java | 95 ++++++++++++ .../vo/ActivityVoucherPageReqVO.java | 35 +++++ .../vo/ActivityVoucherRespVO.java | 41 +++++ .../vo/ActivityVoucherSaveReqVO.java | 28 ++++ .../ActivityVoucherUserController.java | 95 ++++++++++++ .../vo/ActivityVoucherUserPageReqVO.java | 34 +++++ .../vo/ActivityVoucherUserRespVO.java | 42 ++++++ .../vo/ActivityVoucherUserSaveReqVO.java | 28 ++++ .../activity/AppActivityDrawController.java | 88 +++++++++++ .../app/activity/vo/ActivityVoucherVO.java | 9 ++ .../vo/AppActivityVoucherUserRespVO.java | 51 +++++++ .../app/activity/vo/AppCheckVO.java | 1 + .../app/activity/vo/AppReserveTableVO.java | 15 ++ .../activitymerchant/ActivityMerchantDO.java | 43 ++++++ .../dataobject/activitypay/ActivityPayDO.java | 2 + .../ActivityTableDishDO.java | 2 + .../activityvoucher/ActivityVoucherDO.java | 48 ++++++ .../ActivityVoucherUserDO.java | 47 ++++++ .../ActivityMerchantMapper.java | 29 ++++ .../activitytable/ActivityTableMapper.java | 3 + .../ActivityTableDishMapper.java | 2 + .../ActivityVoucherMapper.java | 30 ++++ .../ActivityVoucherUserMapper.java | 30 ++++ .../service/activity/ActivityServiceImpl.java | 3 +- .../ActivityMerchantService.java | 55 +++++++ .../ActivityMerchantServiceImpl.java | 74 +++++++++ .../activitypay/ActivityPayServiceImpl.java | 13 +- .../activitytable/ActivityTableService.java | 3 + .../ActivityTableServiceImpl.java | 11 +- .../ActivityTableDishService.java | 2 + .../ActivityTableDishServiceImpl.java | 9 ++ .../ActivityVoucherService.java | 55 +++++++ .../ActivityVoucherServiceImpl.java | 74 +++++++++ .../ActivityVoucherUserService.java | 65 ++++++++ .../ActivityVoucherUserServiceImpl.java | 140 ++++++++++++++++++ .../admin/notify/PayNotifyController.java | 1 + .../admin/order/vo/PayOrderSubmitReqVO.java | 2 + .../service/order/PayOrderServiceImpl.java | 3 + 52 files changed, 1549 insertions(+), 11 deletions(-) create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/ActivityMerchantController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/ActivityVoucherController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/ActivityVoucherUserController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/ActivityVoucherVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityVoucherUserRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppReserveTableVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitymerchant/ActivityMerchantDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityvoucher/ActivityVoucherDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityvoucheruser/ActivityVoucherUserDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitymerchant/ActivityMerchantMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityvoucher/ActivityVoucherMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityvoucheruser/ActivityVoucherUserMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitymerchant/ActivityMerchantService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitymerchant/ActivityMerchantServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserServiceImpl.java diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/dto/ActivityPayDTO.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/dto/ActivityPayDTO.java index 6f251056..a01f8f53 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/dto/ActivityPayDTO.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/dto/ActivityPayDTO.java @@ -42,4 +42,6 @@ public class ActivityPayDTO { private String diningPeriod; + private String voucherId; + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java index ce5d7cef..37c1a63b 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java @@ -210,6 +210,10 @@ public interface ErrorCodeConstants { ErrorCode ACTIVITY_PAY_EXPIRE = new ErrorCode(1_005_000_18, "该订单不在有效期内"); ErrorCode ACTIVITY_ADD_DISH_NOT_EXISTS = new ErrorCode(1_005_000_19, "活动用餐桌子加菜不存在"); ErrorCode ACTIVITY_TABLE_DISH_NOT_EXISTS = new ErrorCode(1_005_000_20, "活动用餐桌子配置不存在"); - ErrorCode ACTIVITY_ADD_DISH_NOT_CHANGE = new ErrorCode(1_005_000_19, "请先选择桌子"); + ErrorCode ACTIVITY_ADD_DISH_NOT_CHANGE = new ErrorCode(1_005_000_21, "请先选择桌子"); + ErrorCode ACTIVITY_MERCHANT_NOT_EXISTS = new ErrorCode(1_005_000_22, "活动商家不存在"); + ErrorCode ACTIVITY_VOUCHER_NOT_EXISTS = new ErrorCode(1_005_000_23, "活动代金券不存在"); + ErrorCode ACTIVITY_VOUCHER_USER_NOT_EXISTS = new ErrorCode(1_005_000_24, "活动用户拥有代金券不存在"); + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/ActivityApiImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/ActivityApiImpl.java index e068d581..11887c4f 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/ActivityApiImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/ActivityApiImpl.java @@ -24,6 +24,5 @@ public class ActivityApiImpl implements ActivityApi { public void createActivityPay(ActivityPayDTO createReqVO) { ActivityPaySaveReqVO bean = BeanUtil.toBean(createReqVO, ActivityPaySaveReqVO.class); activityPayService.addActivityPay(bean); - } } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/ActivityMerchantController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/ActivityMerchantController.java new file mode 100644 index 00000000..c70a0275 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/ActivityMerchantController.java @@ -0,0 +1,102 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitymerchant; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.ActivityMerchantPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.ActivityMerchantRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.ActivityMerchantSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitymerchant.ActivityMerchantDO; +import cn.iocoder.yudao.module.member.service.activitymerchant.ActivityMerchantService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; + +@Tag(name = "管理后台 - 活动商家") +@RestController +@RequestMapping("/member/activity-merchant") +@Validated +public class ActivityMerchantController { + + @Resource + private ActivityMerchantService activityMerchantService; + + @PostMapping("/create") + @Operation(summary = "创建活动商家") + @PreAuthorize("@ss.hasPermission('member:activity-merchant:create')") + public CommonResult createActivityMerchant(@Valid @RequestBody ActivityMerchantSaveReqVO createReqVO) { + return success(activityMerchantService.createActivityMerchant(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动商家") + @PreAuthorize("@ss.hasPermission('member:activity-merchant:update')") + public CommonResult updateActivityMerchant(@Valid @RequestBody ActivityMerchantSaveReqVO updateReqVO) { + activityMerchantService.updateActivityMerchant(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动商家") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-merchant:delete')") + public CommonResult deleteActivityMerchant(@RequestParam("id") Long id) { + activityMerchantService.deleteActivityMerchant(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动商家") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-merchant:query')") + public CommonResult getActivityMerchant(@RequestParam("id") Long id) { + ActivityMerchantDO activityMerchant = activityMerchantService.getActivityMerchant(id); + return success(BeanUtils.toBean(activityMerchant, ActivityMerchantRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动商家分页") + @PreAuthorize("@ss.hasPermission('member:activity-merchant:query')") + public CommonResult> getActivityMerchantPage(@Valid ActivityMerchantPageReqVO pageReqVO) { + PageResult pageResult = activityMerchantService.getActivityMerchantPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityMerchantRespVO.class)); + } + + @GetMapping("/list") + @Operation(summary = "获得活动商家列表") + @PreAuthorize("@ss.hasPermission('member:activity-merchant:query')") + public CommonResult> getActivityMerchantList(@Valid ActivityMerchantPageReqVO pageReqVO) { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityMerchantService.getActivityMerchantPage(pageReqVO).getList(); + return success(BeanUtils.toBean(list, ActivityMerchantRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出活动商家 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-merchant:export')") + @OperateLog(type = EXPORT) + public void exportActivityMerchantExcel(@Valid ActivityMerchantPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityMerchantService.getActivityMerchantPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动商家.xls", "数据", ActivityMerchantRespVO.class, + BeanUtils.toBean(list, ActivityMerchantRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantPageReqVO.java new file mode 100644 index 00000000..c8fb5400 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 活动商家分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ActivityMerchantPageReqVO extends PageParam { + + @Schema(description = "商家名", example = "赵六") + private String name; + + @Schema(description = "联系人") + private String person; + + @Schema(description = "电话") + private String mobile; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantRespVO.java new file mode 100644 index 00000000..4001c984 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantRespVO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 活动商家 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ActivityMerchantRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "16185") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "商家名", example = "赵六") + @ExcelProperty("商家名") + private String name; + + @Schema(description = "联系人") + @ExcelProperty("联系人") + private String person; + + @Schema(description = "电话") + @ExcelProperty("电话") + private String mobile; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantSaveReqVO.java new file mode 100644 index 00000000..ef089747 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitymerchant/vo/ActivityMerchantSaveReqVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 活动商家新增/修改 Request VO") +@Data +public class ActivityMerchantSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "16185") + private Long id; + + @Schema(description = "商家名", example = "赵六") + private String name; + + @Schema(description = "联系人") + private String person; + + @Schema(description = "电话") + private String mobile; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageReqVO.java index 6be8b13e..4daf42ca 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageReqVO.java @@ -1,12 +1,15 @@ package cn.iocoder.yudao.module.member.controller.admin.activitypay.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; -import java.math.BigDecimal; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -32,4 +35,13 @@ public class ActivityPayPageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; + @Schema(description = "序号") + private List serialNumberList; + + @Schema(description = "是否查加菜") + private Boolean isDish = false; + + private Long merchantId; + + private String status; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPaySaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPaySaveReqVO.java index ced9f2ba..90094b4c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPaySaveReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPaySaveReqVO.java @@ -35,4 +35,6 @@ public class ActivityPaySaveReqVO { private String diningPeriod; + private String voucherId; + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTablePageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTablePageReqVO.java index 1153877e..230bdf1c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTablePageReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTablePageReqVO.java @@ -8,7 +8,9 @@ import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.util.List; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -38,6 +40,13 @@ public class ActivityTablePageReqVO extends PageParam { private LocalDateTime[] createTime; @Schema(description = "是否只查预定的") - private Boolean isReserve; + private Boolean isReserve = false; + + private LocalDate reserveTime; + + @Schema(description = "序号") + private List serialNumbers; + + private Long merchantId; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableRespVO.java index 9ae04dbf..c4270657 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableRespVO.java @@ -37,7 +37,6 @@ public class ActivityTableRespVO { @ExcelProperty("电话") private String mobile; - private String nickName; private String avatar; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishPageReqVO.java index 33fb33b7..b48ffdae 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishPageReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishPageReqVO.java @@ -8,6 +8,7 @@ import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @@ -37,4 +38,14 @@ public class ActivityTableDishPageReqVO extends PageParam { @Schema(description = "ID", example = "1") private List ids; + + @Schema(description = "序号") + private List serialNumbers; + + @Schema(description = "用户id", example = "13832") + private Long userId; + + private LocalDate reserveTime; + + private Long merchantId; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishRespVO.java index 8ba65d48..772e7871 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishRespVO.java @@ -37,4 +37,6 @@ public class ActivityTableDishRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + private Long merchantId; + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityUpdateDishVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityUpdateDishVO.java index 4c93efcb..e90666cf 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityUpdateDishVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityUpdateDishVO.java @@ -15,4 +15,7 @@ public class ActivityUpdateDishVO { @Schema(description = "套餐菜品") private String dish; + @Schema(description = "商家ID") + private Long merchantId; + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/ActivityVoucherController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/ActivityVoucherController.java new file mode 100644 index 00000000..f73fae6c --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/ActivityVoucherController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityvoucher; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucher.ActivityVoucherDO; +import cn.iocoder.yudao.module.member.service.activityvoucher.ActivityVoucherService; + +@Tag(name = "管理后台 - 活动代金券") +@RestController +@RequestMapping("/member/activity-voucher") +@Validated +public class ActivityVoucherController { + + @Resource + private ActivityVoucherService activityVoucherService; + + @PostMapping("/create") + @Operation(summary = "创建活动代金券") + @PreAuthorize("@ss.hasPermission('member:activity-voucher:create')") + public CommonResult createActivityVoucher(@Valid @RequestBody ActivityVoucherSaveReqVO createReqVO) { + return success(activityVoucherService.createActivityVoucher(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动代金券") + @PreAuthorize("@ss.hasPermission('member:activity-voucher:update')") + public CommonResult updateActivityVoucher(@Valid @RequestBody ActivityVoucherSaveReqVO updateReqVO) { + activityVoucherService.updateActivityVoucher(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动代金券") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-voucher:delete')") + public CommonResult deleteActivityVoucher(@RequestParam("id") Long id) { + activityVoucherService.deleteActivityVoucher(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动代金券") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-voucher:query')") + public CommonResult getActivityVoucher(@RequestParam("id") Long id) { + ActivityVoucherDO activityVoucher = activityVoucherService.getActivityVoucher(id); + return success(BeanUtils.toBean(activityVoucher, ActivityVoucherRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动代金券分页") + @PreAuthorize("@ss.hasPermission('member:activity-voucher:query')") + public CommonResult> getActivityVoucherPage(@Valid ActivityVoucherPageReqVO pageReqVO) { + PageResult pageResult = activityVoucherService.getActivityVoucherPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityVoucherRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出活动代金券 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-voucher:export')") + @OperateLog(type = EXPORT) + public void exportActivityVoucherExcel(@Valid ActivityVoucherPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityVoucherService.getActivityVoucherPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动代金券.xls", "数据", ActivityVoucherRespVO.class, + BeanUtils.toBean(list, ActivityVoucherRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherPageReqVO.java new file mode 100644 index 00000000..f777a3ca --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherPageReqVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 活动代金券分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ActivityVoucherPageReqVO extends PageParam { + + @Schema(description = "代金券名字", example = "张三") + private String name; + + @Schema(description = "类型 1-折扣,2-抵扣", example = "2") + private String type; + + @Schema(description = "数值") + private BigDecimal num; + + @Schema(description = "使用次数") + private Integer limitNum; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherRespVO.java new file mode 100644 index 00000000..1937e1d7 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherRespVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 活动代金券 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ActivityVoucherRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21748") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "代金券名字", example = "张三") + @ExcelProperty("代金券名字") + private String name; + + @Schema(description = "类型 1-折扣,2-抵扣", example = "2") + @ExcelProperty("类型 1-折扣,2-抵扣") + private String type; + + @Schema(description = "数值") + @ExcelProperty("数值") + private BigDecimal num; + + @Schema(description = "使用次数") + @ExcelProperty("使用次数") + private Integer limitNum; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherSaveReqVO.java new file mode 100644 index 00000000..35f742d3 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucher/vo/ActivityVoucherSaveReqVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 活动代金券新增/修改 Request VO") +@Data +public class ActivityVoucherSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21748") + private Long id; + + @Schema(description = "代金券名字", example = "张三") + private String name; + + @Schema(description = "类型 1-折扣,2-抵扣", example = "2") + private String type; + + @Schema(description = "数值") + private BigDecimal num; + + @Schema(description = "使用次数") + private Integer limitNum; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/ActivityVoucherUserController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/ActivityVoucherUserController.java new file mode 100644 index 00000000..53f8b6cc --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/ActivityVoucherUserController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityvoucheruser; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.member.controller.admin.activityvoucheruser.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucheruser.ActivityVoucherUserDO; +import cn.iocoder.yudao.module.member.service.activityvoucheruser.ActivityVoucherUserService; + +@Tag(name = "管理后台 - 活动用户拥有代金券") +@RestController +@RequestMapping("/member/activity-voucher-user") +@Validated +public class ActivityVoucherUserController { + + @Resource + private ActivityVoucherUserService activityVoucherUserService; + + @PostMapping("/create") + @Operation(summary = "创建活动用户拥有代金券") + @PreAuthorize("@ss.hasPermission('member:activity-voucher-user:create')") + public CommonResult createActivityVoucherUser(@Valid @RequestBody ActivityVoucherUserSaveReqVO createReqVO) { + return success(activityVoucherUserService.createActivityVoucherUser(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动用户拥有代金券") + @PreAuthorize("@ss.hasPermission('member:activity-voucher-user:update')") + public CommonResult updateActivityVoucherUser(@Valid @RequestBody ActivityVoucherUserSaveReqVO updateReqVO) { + activityVoucherUserService.updateActivityVoucherUser(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动用户拥有代金券") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-voucher-user:delete')") + public CommonResult deleteActivityVoucherUser(@RequestParam("id") Long id) { + activityVoucherUserService.deleteActivityVoucherUser(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动用户拥有代金券") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-voucher-user:query')") + public CommonResult getActivityVoucherUser(@RequestParam("id") Long id) { + ActivityVoucherUserDO activityVoucherUser = activityVoucherUserService.getActivityVoucherUser(id); + return success(BeanUtils.toBean(activityVoucherUser, ActivityVoucherUserRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动用户拥有代金券分页") + @PreAuthorize("@ss.hasPermission('member:activity-voucher-user:query')") + public CommonResult> getActivityVoucherUserPage(@Valid ActivityVoucherUserPageReqVO pageReqVO) { + PageResult pageResult = activityVoucherUserService.getActivityVoucherUserPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityVoucherUserRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出活动用户拥有代金券 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-voucher-user:export')") + @OperateLog(type = EXPORT) + public void exportActivityVoucherUserExcel(@Valid ActivityVoucherUserPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityVoucherUserService.getActivityVoucherUserPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动用户拥有代金券.xls", "数据", ActivityVoucherUserRespVO.class, + BeanUtils.toBean(list, ActivityVoucherUserRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserPageReqVO.java new file mode 100644 index 00000000..44bc78f5 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserPageReqVO.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityvoucheruser.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 活动用户拥有代金券分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ActivityVoucherUserPageReqVO extends PageParam { + + @Schema(description = "代金券ID", example = "24250") + private Long voucherId; + + @Schema(description = "用户ID", example = "18771") + private Long userId; + + @Schema(description = "电话") + private String mobile; + + @Schema(description = "0-未使用,1-已使用,2-已过期", example = "2") + private String status; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserRespVO.java new file mode 100644 index 00000000..e8d9112f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserRespVO.java @@ -0,0 +1,42 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityvoucheruser.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 活动用户拥有代金券 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ActivityVoucherUserRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32021") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "代金券ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24250") + @ExcelProperty("代金券ID") + private Long voucherId; + + @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18771") + @ExcelProperty("用户ID") + private Long userId; + + @Schema(description = "电话") + @ExcelProperty("电话") + private String mobile; + + @Schema(description = "0-未使用,1-已使用,2-已过期", example = "2") + @ExcelProperty("0-未使用,1-已使用,2-已过期") + private String status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + + + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserSaveReqVO.java new file mode 100644 index 00000000..036d26e3 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityvoucheruser/vo/ActivityVoucherUserSaveReqVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityvoucheruser.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 活动用户拥有代金券新增/修改 Request VO") +@Data +public class ActivityVoucherUserSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32021") + private Long id; + + @Schema(description = "代金券ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24250") + @NotNull(message = "代金券ID不能为空") + private Long voucherId; + + @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18771") + private Long userId; + + @Schema(description = "电话") + private String mobile; + + @Schema(description = "0-未使用,1-已使用,2-已过期", example = "2") + private String status; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/AppActivityDrawController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/AppActivityDrawController.java index 101a47db..2439af66 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/AppActivityDrawController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/AppActivityDrawController.java @@ -14,28 +14,35 @@ import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.Activi import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsRespVO; import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.ActivityMerchantPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.ActivityMerchantRespVO; import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantRespVO; import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishPageReqVO; import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishRespVO; import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucheruser.vo.ActivityVoucherUserPageReqVO; import cn.iocoder.yudao.module.member.controller.app.activity.vo.*; import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO; import cn.iocoder.yudao.module.member.dal.dataobject.activityadddish.ActivityAddDishDO; import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO; import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitymerchant.ActivityMerchantDO; import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO; import cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant.ActivityRestaurantDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitytable.ActivityTableDO; import cn.iocoder.yudao.module.member.dal.dataobject.activitytabledish.ActivityTableDishDO; import cn.iocoder.yudao.module.member.service.activity.ActivityService; import cn.iocoder.yudao.module.member.service.activityadddish.ActivityAddDishService; import cn.iocoder.yudao.module.member.service.activityawards.ActivityAwardsService; import cn.iocoder.yudao.module.member.service.activityawardsuser.ActivityAwardsUserService; +import cn.iocoder.yudao.module.member.service.activitymerchant.ActivityMerchantService; import cn.iocoder.yudao.module.member.service.activitypay.ActivityPayService; import cn.iocoder.yudao.module.member.service.activityrestaurant.ActivityRestaurantService; import cn.iocoder.yudao.module.member.service.activitytable.ActivityTableService; import cn.iocoder.yudao.module.member.service.activitytabledish.ActivityTableDishService; import cn.iocoder.yudao.module.member.service.activityuser.ActivityUserService; +import cn.iocoder.yudao.module.member.service.activityvoucheruser.ActivityVoucherUserService; import cn.iocoder.yudao.module.member.util.QRCodeWithJWTUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -46,6 +53,7 @@ import javax.annotation.Resource; import javax.validation.Valid; import java.time.LocalDate; import java.util.List; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -85,6 +93,12 @@ public class AppActivityDrawController { @Resource private ActivityAddDishService activityAddDishService; + @Resource + private ActivityMerchantService activityMerchantService; + + @Resource + private ActivityVoucherUserService activityVoucherUserService; + @GetMapping("/manage/page") @Operation(summary = "管理员获取当天活动") public CommonResult> getTodayActivityPage(@Valid ActivityPageReqVO pageReqVO) { @@ -298,4 +312,78 @@ public class AppActivityDrawController { List list = activityAddDishService.getActivityAddDishPage(pageReqVO).getList(); return success(BeanUtils.toBean(list, ActivityAddDishRespVO.class)); } + + @GetMapping("/user/reserveTable") + @Operation(summary = "用户获得订餐桌号") + public CommonResult> getActivityAddDishPage(@Valid ActivityTableDishPageReqVO pageReqVO) { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + pageReqVO.setReserveTime(LocalDate.now()); + + List listByActivityIdAndTimeAndUserId = activityTableService.getListByActivityIdAndTimeAndUserId(pageReqVO.getActivityId(), pageReqVO.getReserveTime(), pageReqVO.getUserId()); + if (!listByActivityIdAndTimeAndUserId.isEmpty()) { + List collect = listByActivityIdAndTimeAndUserId.stream().map(ActivityTableDO::getSerialNumber).collect(Collectors.toList()); + pageReqVO.setSerialNumbers(collect); + } + List list = activityTableDishService.getActivityTableDishPage(pageReqVO).getList(); + return success(BeanUtils.toBean(list, ActivityTableDishRespVO.class)); + } + + + @GetMapping("/merchantList") + @Operation(summary = "获得商家列表") + public CommonResult> getMerchantList(@Valid ActivityMerchantPageReqVO pageReqVO) { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityMerchantService.getActivityMerchantPage(pageReqVO).getList(); + return success(BeanUtils.toBean(list, ActivityMerchantRespVO.class)); + } + + + @GetMapping("/checkVoucher") + @Operation(summary = "判断是否能使用代金券") + public CommonResult checkVoucher(@Valid ActivityVoucherVO vo) { + return success(activityVoucherUserService.checkVoucher(vo)); + } + + @GetMapping("/user/voucherPage") + @Operation(summary = "用户查看自己的代金券(分页)") + public CommonResult> getActivityVoucherPage(@Valid ActivityVoucherUserPageReqVO pageReqVO) { + return success(activityVoucherUserService.getActivityVoucherPage(pageReqVO)); + } + + @GetMapping("/user/voucherList") + @Operation(summary = "查看用户的代金券(支付)") + public CommonResult> getActivityVoucherList(@Valid ActivityVoucherUserPageReqVO pageReqVO) { + pageReqVO.setStatus("0"); + pageReqVO.setUserId(SecurityFrameworkUtils.getLoginUserId()); + return success(activityVoucherUserService.getActivityVoucherList(pageReqVO)); + } + +// @GetMapping("/manage/reserveTable") +// @Operation(summary = "管理员查看预定桌子分页") +// public CommonResult> getReserveTablePage(@Valid ActivityTablePageReqVO pageReqVO) { +// List listByActivityIdAndMerchantId = activityTableDishService.getListByActivityIdAndMerchantId(pageReqVO.getActivityId(), pageReqVO.getMerchantId()); +// if (listByActivityIdAndMerchantId.isEmpty()) { +// return success(PageResult.empty()); +// } +// List collect = listByActivityIdAndMerchantId.stream().map(ActivityTableDishDO::getSerialNumber).collect(Collectors.toList()); +// pageReqVO.setSerialNumbers(collect); +// pageReqVO.setIsReserve(true); +// PageResult pageResult = activityTableService.getActivityTablePage(pageReqVO); +// return success(BeanUtils.toBean(pageResult, ActivityTableRespVO.class)); +// } + + @GetMapping("/manage/addDishPage") + @Operation(summary = "管理员查看加菜分页") + public CommonResult> getManageAddDishPage(@Valid ActivityPayPageReqVO pageReqVO) { + List listByActivityIdAndMerchantId = activityTableDishService.getListByActivityIdAndMerchantId(pageReqVO.getActivityId(), pageReqVO.getMerchantId()); + if (listByActivityIdAndMerchantId.isEmpty()) { + return success(PageResult.empty()); + } + List collect = listByActivityIdAndMerchantId.stream().map(ActivityTableDishDO::getSerialNumber).collect(Collectors.toList()); + pageReqVO.setSerialNumberList(collect); + PageResult pageResult = activityPayService.getUserActivityPayPage(pageReqVO); + return success(pageResult); + } + + } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/ActivityVoucherVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/ActivityVoucherVO.java new file mode 100644 index 00000000..918e8314 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/ActivityVoucherVO.java @@ -0,0 +1,9 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + +import lombok.Data; + +@Data +public class ActivityVoucherVO { + + private Long userId; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityVoucherUserRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityVoucherUserRespVO.java new file mode 100644 index 00000000..db6baaa2 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityVoucherUserRespVO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 活动用户拥有代金券 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AppActivityVoucherUserRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32021") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "代金券ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24250") + @ExcelProperty("代金券ID") + private Long voucherId; + + @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "18771") + @ExcelProperty("用户ID") + private Long userId; + + @Schema(description = "电话") + @ExcelProperty("电话") + private String mobile; + + @Schema(description = "0-未使用,1-已使用,2-已过期", example = "2") + @ExcelProperty("0-未使用,1-已使用,2-已过期") + private String status; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + private String name; + /** + * 类型 1-折扣,2-抵扣 + */ + private String type; + /** + * 数值 + */ + private BigDecimal num; + + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppCheckVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppCheckVO.java index 8a72e90a..b5bb2798 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppCheckVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppCheckVO.java @@ -18,4 +18,5 @@ public class AppCheckVO { private BigDecimal price; + } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppReserveTableVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppReserveTableVO.java new file mode 100644 index 00000000..f7d079a1 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppReserveTableVO.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import lombok.Data; + +@Data +public class AppReserveTableVO extends PageParam { + + private Long activityId; + + private Long userId; + + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitymerchant/ActivityMerchantDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitymerchant/ActivityMerchantDO.java new file mode 100644 index 00000000..0eaa5be1 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitymerchant/ActivityMerchantDO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activitymerchant; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 活动商家 DO + * + * @author 我是秦俊旗 + */ +@TableName("member_activity_merchant") +@KeySequence("member_activity_merchant_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityMerchantDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 商家名 + */ + private String name; + /** + * 联系人 + */ + private String person; + /** + * 电话 + */ + private String mobile; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitypay/ActivityPayDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitypay/ActivityPayDO.java index 9ee9a9a9..6827bfea 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitypay/ActivityPayDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitypay/ActivityPayDO.java @@ -58,4 +58,6 @@ public class ActivityPayDO extends BaseDO { private String dish; private String diningPeriod; + + private String voucher; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitytabledish/ActivityTableDishDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitytabledish/ActivityTableDishDO.java index a360695e..d023638a 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitytabledish/ActivityTableDishDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitytabledish/ActivityTableDishDO.java @@ -45,4 +45,6 @@ public class ActivityTableDishDO extends BaseDO { */ private String dish; + + private Long merchantId; } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityvoucher/ActivityVoucherDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityvoucher/ActivityVoucherDO.java new file mode 100644 index 00000000..ad046a7e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityvoucher/ActivityVoucherDO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activityvoucher; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.*; + +import java.math.BigDecimal; + +/** + * 活动代金券 DO + * + * @author 我是秦俊旗 + */ +@TableName("member_activity_voucher") +@KeySequence("member_activity_voucher_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityVoucherDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 代金券名字 + */ + private String name; + /** + * 类型 1-折扣,2-抵扣 + */ + private String type; + /** + * 数值 + */ + private BigDecimal num; + /** + * 使用次数 + */ + private Integer limitNum; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityvoucheruser/ActivityVoucherUserDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityvoucheruser/ActivityVoucherUserDO.java new file mode 100644 index 00000000..9c0c389a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityvoucheruser/ActivityVoucherUserDO.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activityvoucheruser; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 活动用户拥有代金券 DO + * + * @author 我是秦俊旗 + */ +@TableName("member_activity_voucher_user") +@KeySequence("member_activity_voucher_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityVoucherUserDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 代金券ID + */ + private Long voucherId; + /** + * 用户ID + */ + private Long userId; + /** + * 电话 + */ + private String mobile; + /** + * 0-未使用,1-已使用,2-已过期 + */ + private String status; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitymerchant/ActivityMerchantMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitymerchant/ActivityMerchantMapper.java new file mode 100644 index 00000000..4fe0a2d2 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitymerchant/ActivityMerchantMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activitymerchant; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.member.dal.dataobject.activitymerchant.ActivityMerchantDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.*; + +/** + * 活动商家 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityMerchantMapper extends BaseMapperX { + + default PageResult selectPage(ActivityMerchantPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ActivityMerchantDO::getName, reqVO.getName()) + .eqIfPresent(ActivityMerchantDO::getPerson, reqVO.getPerson()) + .eqIfPresent(ActivityMerchantDO::getMobile, reqVO.getMobile()) + .betweenIfPresent(ActivityMerchantDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ActivityMerchantDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytable/ActivityTableMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytable/ActivityTableMapper.java index 5a2f8a5b..fc927fe5 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytable/ActivityTableMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytable/ActivityTableMapper.java @@ -27,7 +27,10 @@ public interface ActivityTableMapper extends BaseMapperX { .eqIfPresent(ActivityTableDO::getUserId, reqVO.getUserId()) .eqIfPresent(ActivityTableDO::getMobile, reqVO.getMobile()) .betweenIfPresent(ActivityTableDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(ActivityTableDO::getReserveTime, reqVO.getReserveTime()) + .inIfPresent(ActivityTableDO::getSerialNumber, reqVO.getSerialNumbers()) .isNotNull(reqVO.getIsReserve(),ActivityTableDO::getUserId) + .orderByAsc(ActivityTableDO::getReserveTime) .orderByDesc(ActivityTableDO::getId)); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytabledish/ActivityTableDishMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytabledish/ActivityTableDishMapper.java index 22d59ced..2243c73a 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytabledish/ActivityTableDishMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytabledish/ActivityTableDishMapper.java @@ -18,11 +18,13 @@ public interface ActivityTableDishMapper extends BaseMapperX selectPage(ActivityTableDishPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(ActivityTableDishDO::getActivityId, reqVO.getActivityId()) + .eqIfPresent(ActivityTableDishDO::getMerchantId, reqVO.getMerchantId()) .eqIfPresent(ActivityTableDishDO::getSerialNumber, reqVO.getSerialNumber()) .eqIfPresent(ActivityTableDishDO::getPrice, reqVO.getPrice()) .eqIfPresent(ActivityTableDishDO::getDish, reqVO.getDish()) .betweenIfPresent(ActivityTableDishDO::getCreateTime, reqVO.getCreateTime()) .inIfPresent(ActivityTableDishDO::getId, reqVO.getIds()) + .inIfPresent(ActivityTableDishDO::getSerialNumber, reqVO.getSerialNumbers()) .orderByAsc(ActivityTableDishDO::getSerialNumber)); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityvoucher/ActivityVoucherMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityvoucher/ActivityVoucherMapper.java new file mode 100644 index 00000000..49ae2df4 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityvoucher/ActivityVoucherMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activityvoucher; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucher.ActivityVoucherDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo.*; + +/** + * 活动代金券 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityVoucherMapper extends BaseMapperX { + + default PageResult selectPage(ActivityVoucherPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ActivityVoucherDO::getName, reqVO.getName()) + .eqIfPresent(ActivityVoucherDO::getType, reqVO.getType()) + .eqIfPresent(ActivityVoucherDO::getNum, reqVO.getNum()) + .eqIfPresent(ActivityVoucherDO::getLimitNum, reqVO.getLimitNum()) + .betweenIfPresent(ActivityVoucherDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ActivityVoucherDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityvoucheruser/ActivityVoucherUserMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityvoucheruser/ActivityVoucherUserMapper.java new file mode 100644 index 00000000..f74d3079 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityvoucheruser/ActivityVoucherUserMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activityvoucheruser; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucheruser.ActivityVoucherUserDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucheruser.vo.*; + +/** + * 活动用户拥有代金券 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityVoucherUserMapper extends BaseMapperX { + + default PageResult selectPage(ActivityVoucherUserPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ActivityVoucherUserDO::getVoucherId, reqVO.getVoucherId()) + .eqIfPresent(ActivityVoucherUserDO::getUserId, reqVO.getUserId()) + .eqIfPresent(ActivityVoucherUserDO::getMobile, reqVO.getMobile()) + .eqIfPresent(ActivityVoucherUserDO::getStatus, reqVO.getStatus()) + .betweenIfPresent(ActivityVoucherUserDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ActivityVoucherUserDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityServiceImpl.java index 69729d17..da6f9d65 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityServiceImpl.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.member.service.activity; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; @@ -241,7 +242,7 @@ public class ActivityServiceImpl implements ActivityService { ActivityDO activityDO = activityMapper.selectById(activityAwards.getActivityId()); if(activityDO.getStartTime().isAfter(LocalDateTime.now())){ - throw exception(ACTIVITY_ERROR); + throw exception(new ErrorCode(1_005_000_10, "活动未开始")); } // 查询报名用户 diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitymerchant/ActivityMerchantService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitymerchant/ActivityMerchantService.java new file mode 100644 index 00000000..3964d67f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitymerchant/ActivityMerchantService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.member.service.activitymerchant; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.activitymerchant.ActivityMerchantDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 活动商家 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityMerchantService { + + /** + * 创建活动商家 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityMerchant(@Valid ActivityMerchantSaveReqVO createReqVO); + + /** + * 更新活动商家 + * + * @param updateReqVO 更新信息 + */ + void updateActivityMerchant(@Valid ActivityMerchantSaveReqVO updateReqVO); + + /** + * 删除活动商家 + * + * @param id 编号 + */ + void deleteActivityMerchant(Long id); + + /** + * 获得活动商家 + * + * @param id 编号 + * @return 活动商家 + */ + ActivityMerchantDO getActivityMerchant(Long id); + + /** + * 获得活动商家分页 + * + * @param pageReqVO 分页查询 + * @return 活动商家分页 + */ + PageResult getActivityMerchantPage(ActivityMerchantPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitymerchant/ActivityMerchantServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitymerchant/ActivityMerchantServiceImpl.java new file mode 100644 index 00000000..8a8df766 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitymerchant/ActivityMerchantServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.member.service.activitymerchant; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.member.controller.admin.activitymerchant.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.activitymerchant.ActivityMerchantDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.member.dal.mysql.activitymerchant.ActivityMerchantMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; + +/** + * 活动商家 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class ActivityMerchantServiceImpl implements ActivityMerchantService { + + @Resource + private ActivityMerchantMapper activityMerchantMapper; + + @Override + public Long createActivityMerchant(ActivityMerchantSaveReqVO createReqVO) { + // 插入 + ActivityMerchantDO activityMerchant = BeanUtils.toBean(createReqVO, ActivityMerchantDO.class); + activityMerchantMapper.insert(activityMerchant); + // 返回 + return activityMerchant.getId(); + } + + @Override + public void updateActivityMerchant(ActivityMerchantSaveReqVO updateReqVO) { + // 校验存在 + validateActivityMerchantExists(updateReqVO.getId()); + // 更新 + ActivityMerchantDO updateObj = BeanUtils.toBean(updateReqVO, ActivityMerchantDO.class); + activityMerchantMapper.updateById(updateObj); + } + + @Override + public void deleteActivityMerchant(Long id) { + // 校验存在 + validateActivityMerchantExists(id); + // 删除 + activityMerchantMapper.deleteById(id); + } + + private void validateActivityMerchantExists(Long id) { + if (activityMerchantMapper.selectById(id) == null) { + throw exception(ACTIVITY_MERCHANT_NOT_EXISTS); + } + } + + @Override + public ActivityMerchantDO getActivityMerchant(Long id) { + return activityMerchantMapper.selectById(id); + } + + @Override + public PageResult getActivityMerchantPage(ActivityMerchantPageReqVO pageReqVO) { + return activityMerchantMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayServiceImpl.java index 64419f30..10c347e0 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.member.service.activitypay; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; @@ -16,6 +17,7 @@ import cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable.ActivityPa import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; import cn.iocoder.yudao.module.member.dal.mysql.activitypay.ActivityPayMapper; import cn.iocoder.yudao.module.member.service.activitypaytable.ActivityPayTableService; +import cn.iocoder.yudao.module.member.service.activityvoucheruser.ActivityVoucherUserService; import cn.iocoder.yudao.module.member.service.user.MemberUserService; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -57,6 +59,9 @@ public class ActivityPayServiceImpl implements ActivityPayService { @Resource @Lazy private MemberUserService memberUserService; + + @Resource + private ActivityVoucherUserService activityVoucherUserService; @Override public Long createActivityPay(ActivityPaySaveReqVO createReqVO) { // 插入 @@ -149,6 +154,10 @@ public class ActivityPayServiceImpl implements ActivityPayService { activityPayTableService.insertBatch(activityPayTableDOS); } + if(StrUtil.isNotBlank(createReqVO.getVoucherId())){ + String voucherId = createReqVO.getVoucherId(); + activityVoucherUserService.updateByVoucherIdAndUserId(Long.valueOf(voucherId)); + } } @@ -161,7 +170,9 @@ public class ActivityPayServiceImpl implements ActivityPayService { .select(ActivityDO::getActivityName) .leftJoin(ActivityDO.class, ActivityDO::getId, ActivityAwardsUserDO::getActivityId) .eq(pageReqVO.getActivityId() != null, ActivityAwardsUserDO::getActivityId, pageReqVO.getActivityId()) - .eq( ActivityPayDO::getUserId, pageReqVO.getUserId()) + .eq(pageReqVO.getUserId() != null, ActivityPayDO::getUserId, pageReqVO.getUserId()) + .isNotNull(pageReqVO.getIsDish(), ActivityPayDO::getDish) + .in(CollectionUtil.isNotEmpty(pageReqVO.getSerialNumberList()), ActivityPayDO::getSerialNumbers,pageReqVO.getSerialNumberList()) .orderByDesc(ActivityPayDO::getCreateTime) ); return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal()); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableService.java index 438576e9..e3a64bfe 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableService.java @@ -10,6 +10,7 @@ import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppUnbindVO; import cn.iocoder.yudao.module.member.dal.dataobject.activitytable.ActivityTableDO; import javax.validation.Valid; +import java.time.LocalDate; import java.util.List; import java.util.Map; @@ -71,4 +72,6 @@ public interface ActivityTableService { Boolean userTableUnbind(AppUnbindVO vo); List getListByActivityId(Long activityId); + + List getListByActivityIdAndTimeAndUserId(Long activityId, LocalDate time, Long userId); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableServiceImpl.java index 03c0e34e..2e049200 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableServiceImpl.java @@ -147,7 +147,6 @@ public class ActivityTableServiceImpl implements ActivityTableService { .collect(Collectors.joining(",")); throw exception(new ErrorCode(1_005_000_02, result + "号桌子已预订")); } - List addList = new ArrayList<>(); Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); MemberUserDO user = memberUserService.getUser(loginUserId); @@ -185,4 +184,14 @@ public class ActivityTableServiceImpl implements ActivityTableService { return activityTableMapper.selectList(Wrappers.lambdaQuery(ActivityTableDO.class) .eq(ActivityTableDO::getActivityId, activityId)); } + + @Override + public List getListByActivityIdAndTimeAndUserId(Long activityId, LocalDate time, Long userId) { + + return activityTableMapper.selectList(Wrappers.lambdaQuery(ActivityTableDO.class) + .eq(ActivityTableDO::getActivityId, activityId) + .eq(ActivityTableDO::getReserveTime, time) + .eq(ActivityTableDO::getUserId, userId) + ); + } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishService.java index c9525da4..5210f52e 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishService.java @@ -60,4 +60,6 @@ public interface ActivityTableDishService { Boolean updateDish( ActivityUpdateDishVO updateReqVO); List getListByIds(List ids); + + List getListByActivityIdAndMerchantId(Long activityId,Long merchantId); } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishServiceImpl.java index cf0a6b27..7def3bf3 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishServiceImpl.java @@ -112,6 +112,7 @@ public class ActivityTableDishServiceImpl implements ActivityTableDishService { public Boolean updateDish(ActivityUpdateDishVO updateReqVO) { int update = activityTableDishMapper.update(Wrappers.lambdaUpdate() .set(ActivityTableDishDO::getDish, updateReqVO.getDish()) + .set(ActivityTableDishDO::getMerchantId, updateReqVO.getMerchantId()) .in(ActivityTableDishDO::getId, updateReqVO.getIds())); return update>0; } @@ -121,4 +122,12 @@ public class ActivityTableDishServiceImpl implements ActivityTableDishService { return activityTableDishMapper.selectList(Wrappers.lambdaQuery() .in(ActivityTableDishDO::getId, ids)); } + + @Override + public List getListByActivityIdAndMerchantId(Long activityId, Long merchantId) { + return activityTableDishMapper.selectList(Wrappers.lambdaQuery() + .eq(ActivityTableDishDO::getMerchantId, merchantId) + .eq(ActivityTableDishDO::getActivityId, activityId) + ); + } } \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherService.java new file mode 100644 index 00000000..3289e259 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.member.service.activityvoucher; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucher.ActivityVoucherDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 活动代金券 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityVoucherService { + + /** + * 创建活动代金券 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityVoucher(@Valid ActivityVoucherSaveReqVO createReqVO); + + /** + * 更新活动代金券 + * + * @param updateReqVO 更新信息 + */ + void updateActivityVoucher(@Valid ActivityVoucherSaveReqVO updateReqVO); + + /** + * 删除活动代金券 + * + * @param id 编号 + */ + void deleteActivityVoucher(Long id); + + /** + * 获得活动代金券 + * + * @param id 编号 + * @return 活动代金券 + */ + ActivityVoucherDO getActivityVoucher(Long id); + + /** + * 获得活动代金券分页 + * + * @param pageReqVO 分页查询 + * @return 活动代金券分页 + */ + PageResult getActivityVoucherPage(ActivityVoucherPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherServiceImpl.java new file mode 100644 index 00000000..f0ef4b4f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucher/ActivityVoucherServiceImpl.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.member.service.activityvoucher; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucher.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucher.ActivityVoucherDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.member.dal.mysql.activityvoucher.ActivityVoucherMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; + +/** + * 活动代金券 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class ActivityVoucherServiceImpl implements ActivityVoucherService { + + @Resource + private ActivityVoucherMapper activityVoucherMapper; + + @Override + public Long createActivityVoucher(ActivityVoucherSaveReqVO createReqVO) { + // 插入 + ActivityVoucherDO activityVoucher = BeanUtils.toBean(createReqVO, ActivityVoucherDO.class); + activityVoucherMapper.insert(activityVoucher); + // 返回 + return activityVoucher.getId(); + } + + @Override + public void updateActivityVoucher(ActivityVoucherSaveReqVO updateReqVO) { + // 校验存在 + validateActivityVoucherExists(updateReqVO.getId()); + // 更新 + ActivityVoucherDO updateObj = BeanUtils.toBean(updateReqVO, ActivityVoucherDO.class); + activityVoucherMapper.updateById(updateObj); + } + + @Override + public void deleteActivityVoucher(Long id) { + // 校验存在 + validateActivityVoucherExists(id); + // 删除 + activityVoucherMapper.deleteById(id); + } + + private void validateActivityVoucherExists(Long id) { + if (activityVoucherMapper.selectById(id) == null) { + throw exception(ACTIVITY_VOUCHER_NOT_EXISTS); + } + } + + @Override + public ActivityVoucherDO getActivityVoucher(Long id) { + return activityVoucherMapper.selectById(id); + } + + @Override + public PageResult getActivityVoucherPage(ActivityVoucherPageReqVO pageReqVO) { + return activityVoucherMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserService.java new file mode 100644 index 00000000..aed9818c --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.member.service.activityvoucheruser; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucheruser.vo.ActivityVoucherUserPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucheruser.vo.ActivityVoucherUserSaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.ActivityVoucherVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityVoucherUserRespVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucheruser.ActivityVoucherUserDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 活动用户拥有代金券 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityVoucherUserService { + + /** + * 创建活动用户拥有代金券 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityVoucherUser(@Valid ActivityVoucherUserSaveReqVO createReqVO); + + /** + * 更新活动用户拥有代金券 + * + * @param updateReqVO 更新信息 + */ + void updateActivityVoucherUser(@Valid ActivityVoucherUserSaveReqVO updateReqVO); + + /** + * 删除活动用户拥有代金券 + * + * @param id 编号 + */ + void deleteActivityVoucherUser(Long id); + + /** + * 获得活动用户拥有代金券 + * + * @param id 编号 + * @return 活动用户拥有代金券 + */ + ActivityVoucherUserDO getActivityVoucherUser(Long id); + + /** + * 获得活动用户拥有代金券分页 + * + * @param pageReqVO 分页查询 + * @return 活动用户拥有代金券分页 + */ + PageResult getActivityVoucherUserPage(ActivityVoucherUserPageReqVO pageReqVO); + + PageResult getActivityVoucherPage(ActivityVoucherUserPageReqVO pageReqVO); + + List getActivityVoucherList(ActivityVoucherUserPageReqVO pageReqVO); + + Boolean checkVoucher( ActivityVoucherVO vo); + + void updateByVoucherIdAndUserId(Long id); +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserServiceImpl.java new file mode 100644 index 00000000..d9fe9c98 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityvoucheruser/ActivityVoucherUserServiceImpl.java @@ -0,0 +1,140 @@ +package cn.iocoder.yudao.module.member.service.activityvoucheruser; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucheruser.vo.ActivityVoucherUserPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityvoucheruser.vo.ActivityVoucherUserSaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.ActivityVoucherVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityVoucherUserRespVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucher.ActivityVoucherDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityvoucheruser.ActivityVoucherUserDO; +import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import cn.iocoder.yudao.module.member.dal.mysql.activityvoucheruser.ActivityVoucherUserMapper; +import cn.iocoder.yudao.module.member.service.user.MemberUserService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_VOUCHER_USER_NOT_EXISTS; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.USER_MOBILE_NOT_EXISTS; + +/** + * 活动用户拥有代金券 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class ActivityVoucherUserServiceImpl implements ActivityVoucherUserService { + + @Resource + private ActivityVoucherUserMapper activityVoucherUserMapper; + + @Resource + @Lazy + private MemberUserService memberUserService; + + @Override + public Long createActivityVoucherUser(ActivityVoucherUserSaveReqVO createReqVO) { + // 插入 + ActivityVoucherUserDO activityVoucherUser = BeanUtils.toBean(createReqVO, ActivityVoucherUserDO.class); + MemberUserDO userByMobile = memberUserService.getUserByMobile(createReqVO.getMobile()); + if(userByMobile == null){ + throw exception(USER_MOBILE_NOT_EXISTS); + } + activityVoucherUser.setUserId(userByMobile.getId()); + activityVoucherUserMapper.insert(activityVoucherUser); + // 返回 + return activityVoucherUser.getId(); + } + + @Override + public void updateActivityVoucherUser(ActivityVoucherUserSaveReqVO updateReqVO) { + // 校验存在 + validateActivityVoucherUserExists(updateReqVO.getId()); + // 更新 + ActivityVoucherUserDO updateObj = BeanUtils.toBean(updateReqVO, ActivityVoucherUserDO.class); + activityVoucherUserMapper.updateById(updateObj); + } + + @Override + public void deleteActivityVoucherUser(Long id) { + // 校验存在 + validateActivityVoucherUserExists(id); + // 删除 + activityVoucherUserMapper.deleteById(id); + } + + private void validateActivityVoucherUserExists(Long id) { + if (activityVoucherUserMapper.selectById(id) == null) { + throw exception(ACTIVITY_VOUCHER_USER_NOT_EXISTS); + } + } + + @Override + public ActivityVoucherUserDO getActivityVoucherUser(Long id) { + return activityVoucherUserMapper.selectById(id); + } + + @Override + public PageResult getActivityVoucherUserPage(ActivityVoucherUserPageReqVO pageReqVO) { + return activityVoucherUserMapper.selectPage(pageReqVO); + } + + @Override + public PageResult getActivityVoucherPage(ActivityVoucherUserPageReqVO pageReqVO) { + + Page activityAwardsUserRespVOPage = activityVoucherUserMapper.selectJoinPage(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), AppActivityVoucherUserRespVO.class, + new MPJLambdaWrapper() + .selectAll(ActivityVoucherUserDO.class) + .select(ActivityVoucherDO::getName, ActivityVoucherDO::getType, ActivityVoucherDO::getNum) + .leftJoin(ActivityVoucherDO.class, ActivityVoucherDO::getId, ActivityVoucherUserDO::getVoucherId) + .eq(ActivityVoucherUserDO::getUserId, pageReqVO.getUserId()) + .orderByDesc(ActivityVoucherUserDO::getCreateTime) + ); + return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal()); + } + + + public List getActivityVoucherList(ActivityVoucherUserPageReqVO pageReqVO) { + + return activityVoucherUserMapper.selectJoinList(AppActivityVoucherUserRespVO.class, + new MPJLambdaWrapper() + .selectAll(ActivityVoucherUserDO.class) + .select(ActivityVoucherDO::getName, ActivityVoucherDO::getType, ActivityVoucherDO::getNum) + .leftJoin(ActivityVoucherDO.class, ActivityVoucherDO::getId, ActivityVoucherUserDO::getVoucherId) + .eq(ActivityVoucherUserDO::getUserId, pageReqVO.getUserId()) + .eq(ActivityVoucherUserDO::getStatus, pageReqVO.getStatus()) + .orderByDesc(ActivityVoucherUserDO::getCreateTime) + ); + } + + @Override + public Boolean checkVoucher(ActivityVoucherVO vo) { + List activityVoucherUserDOS = activityVoucherUserMapper.selectList(Wrappers.lambdaQuery(ActivityVoucherUserDO.class) + .eq(ActivityVoucherUserDO::getUserId, vo.getUserId())); + if (activityVoucherUserDOS.isEmpty()) { + return false; + } + long count = activityVoucherUserDOS.stream().filter(voucher -> "1".equals(voucher.getStatus())).count(); + if (count >= 2) { + return false; + } + return true; + } + + @Override + public void updateByVoucherIdAndUserId(Long id) { + activityVoucherUserMapper.update(null,Wrappers.lambdaUpdate(ActivityVoucherUserDO.class) + .eq(ActivityVoucherUserDO::getId,id) + .set(ActivityVoucherUserDO::getStatus,"1") + ); + } +} \ No newline at end of file diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/notify/PayNotifyController.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/notify/PayNotifyController.java index 3817b708..b9f5abc6 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/notify/PayNotifyController.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/notify/PayNotifyController.java @@ -150,6 +150,7 @@ public class PayNotifyController { activityPayDTO.setReserveTime(deserializedMap.get("reserveTime")); activityPayDTO.setDish( deserializedMap.get("dish")); activityPayDTO.setDiningPeriod( deserializedMap.get("diningPeriod")); + activityPayDTO.setVoucherId( deserializedMap.get("voucherId")); activityApi.createActivityPay(activityPayDTO); notifyRedisTemplate.delete("RESERVED" + notify.getOutTradeNo()); diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderSubmitReqVO.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderSubmitReqVO.java index 9315438b..3de99cd8 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderSubmitReqVO.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/admin/order/vo/PayOrderSubmitReqVO.java @@ -43,4 +43,6 @@ public class PayOrderSubmitReqVO { private String dish; private String diningPeriod; + + private Long voucherId; } diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java index ba4fdd5d..f2021d45 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java @@ -184,6 +184,9 @@ public class PayOrderServiceImpl implements PayOrderService { stringStringHashMap.put("reserveTime",reqVO.getReserveTime()); stringStringHashMap.put("dish",reqVO.getDish()); stringStringHashMap.put("diningPeriod",reqVO.getDiningPeriod()); + if(reqVO.getVoucherId()!=null){ + stringStringHashMap.put("voucherId",reqVO.getVoucherId().toString()); + } payRedis.opsForValue().set("RESERVED"+unifiedOrderReqDTO.getOutTradeNo() , JSONUtil.toJsonStr(stringStringHashMap));