From 6b92d0f800e7f8f17d75a6951dc1f96f9f238f09 Mon Sep 17 00:00:00 2001 From: zt Date: Tue, 10 Jun 2025 21:17:29 +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 --- .../member/api/activitypay/ActivityApi.java | 15 + .../api/activitypay/dto/ActivityPayDTO.java | 45 ++ .../member/enums/ErrorCodeConstants.java | 23 + .../yudao-module-member-biz/pom.xml | 4 + .../api/activitypay/ActivityApiImpl.java | 29 ++ .../admin/activity/ActivityController.java | 100 +++++ .../admin/activity/vo/ActivityPageReqVO.java | 56 +++ .../admin/activity/vo/ActivityRespVO.java | 77 ++++ .../admin/activity/vo/ActivitySaveReqVO.java | 53 +++ .../ActivityAddDishController.java | 102 +++++ .../vo/ActivityAddDishPageReqVO.java | 44 ++ .../vo/ActivityAddDishRespVO.java | 45 ++ .../vo/ActivityAddDishSaveBatchVO.java | 28 ++ .../vo/ActivityAddDishSaveReqVO.java | 33 ++ .../ActivityAwardsController.java | 101 +++++ .../vo/ActivityAwardsListDTO.java | 30 ++ .../vo/ActivityAwardsPageReqVO.java | 41 ++ .../vo/ActivityAwardsRespVO.java | 46 ++ .../vo/ActivityAwardsSaveReqVO.java | 37 ++ .../ActivityAwardsUserController.java | 101 +++++ .../vo/ActivityAwardsUserCountVO.java | 19 + .../vo/ActivityAwardsUserPageReqVO.java | 38 ++ .../vo/ActivityAwardsUserRespVO.java | 58 +++ .../vo/ActivityAwardsUserSaveReqVO.java | 29 ++ .../activitypay/ActivityPayController.java | 93 ++++ .../activitypay/vo/ActivityPayCountVO.java | 21 + .../activitypay/vo/ActivityPayPageReqVO.java | 35 ++ .../activitypay/vo/ActivityPayRespVO.java | 41 ++ .../activitypay/vo/ActivityPaySaveReqVO.java | 38 ++ .../ActivityPayTableController.java | 100 +++++ .../vo/ActivityPayTablePageReqVO.java | 35 ++ .../vo/ActivityPayTableRespVO.java | 41 ++ .../vo/ActivityPayTableSaveReqVO.java | 30 ++ .../ActivityRestaurantController.java | 95 ++++ .../vo/ActivityRestaurantPageReqVO.java | 41 ++ .../vo/ActivityRestaurantRespVO.java | 49 +++ .../vo/ActivityRestaurantSaveDto.java | 33 ++ .../vo/ActivityRestaurantSaveReqVO.java | 36 ++ .../ActivityTableController.java | 103 +++++ .../vo/ActivityTableCountVO.java | 20 + .../vo/ActivityTablePageReqVO.java | 43 ++ .../activitytable/vo/ActivityTableRespVO.java | 49 +++ .../vo/ActivityTableSaveReqVO.java | 33 ++ .../activitytable/vo/ActivityTableVO.java | 8 + .../ActivityTableDishController.java | 108 +++++ .../vo/ActivityTableDishPageReqVO.java | 40 ++ .../vo/ActivityTableDishRespVO.java | 40 ++ .../vo/ActivityTableDishSaveReqVO.java | 30 ++ .../vo/ActivityUpdateDishVO.java | 18 + .../activityuser/ActivityUserController.java | 95 ++++ .../activityuser/vo/ActivityUserCountVO.java | 19 + .../vo/ActivityUserPageReqVO.java | 31 ++ .../activityuser/vo/ActivityUserRespVO.java | 39 ++ .../vo/ActivityUserSaveReqVO.java | 26 ++ .../activity/AppActivityDrawController.java | 301 +++++++++++++ .../app/activity/vo/AppActivityPayRespVO.java | 50 +++ .../activity/vo/AppActivityPrizeDrawVO.java | 20 + .../app/activity/vo/AppActivityRespVO.java | 83 ++++ .../activity/vo/AppActivityTableRespVO.java | 51 +++ .../activity/vo/AppActivityUserRespVO.java | 39 ++ .../app/activity/vo/AppCancelVO.java | 11 + .../app/activity/vo/AppCheckVO.java | 21 + .../app/activity/vo/AppQrCodeVO.java | 19 + .../app/activity/vo/AppReserveQrCodeVO.java | 19 + .../app/activity/vo/AppUnbindVO.java | 15 + .../app/activity/vo/AppUserApplyVO.java | 23 + .../app/activity/vo/AppUserAwardsVO.java | 16 + .../dal/dataobject/activity/ActivityDO.java | 69 +++ .../activityadddish/ActivityAddDishDO.java | 52 +++ .../activityawards/ActivityAwardsDO.java | 54 +++ .../ActivityAwardsUserDO.java | 56 +++ .../dataobject/activitypay/ActivityPayDO.java | 61 +++ .../activitypaytable/ActivityPayTableDO.java | 58 +++ .../ActivityRestaurantDO.java | 56 +++ .../activitytable/ActivityTableDO.java | 59 +++ .../ActivityTableDishDO.java | 48 ++ .../activityuser/ActivityUserDO.java | 45 ++ .../dal/mysql/activity/ActivityMapper.java | 52 +++ .../ActivityAddDishMapper.java | 30 ++ .../activityawards/ActivityAwardsMapper.java | 29 ++ .../ActivityAwardsUserMapper.java | 54 +++ .../mysql/activitypay/ActivityPayMapper.java | 35 ++ .../ActivityPayTableMapper.java | 30 ++ .../ActivityRestaurantMapper.java | 32 ++ .../activitytable/ActivityTableMapper.java | 38 ++ .../ActivityTableDishMapper.java | 29 ++ .../activityuser/ActivityUserMapper.java | 47 ++ .../yudao/module/member/job/ActivityJob.java | 47 ++ .../module/member/job/ActivityReserveJob.java | 47 ++ .../service/activity/ActivityService.java | 79 ++++ .../service/activity/ActivityServiceImpl.java | 416 ++++++++++++++++++ .../ActivityAddDishService.java | 58 +++ .../ActivityAddDishServiceImpl.java | 105 +++++ .../activityawards/ActivityAwardsService.java | 69 +++ .../ActivityAwardsServiceImpl.java | 111 +++++ .../ActivityAwardsUserService.java | 76 ++++ .../ActivityAwardsUserServiceImpl.java | 160 +++++++ .../activitypay/ActivityPayService.java | 71 +++ .../activitypay/ActivityPayServiceImpl.java | 201 +++++++++ .../ActivityPayTableService.java | 59 +++ .../ActivityPayTableServiceImpl.java | 88 ++++ .../ActivityRestaurantService.java | 58 +++ .../ActivityRestaurantServiceImpl.java | 81 ++++ .../activitytable/ActivityTableService.java | 74 ++++ .../ActivityTableServiceImpl.java | 188 ++++++++ .../ActivityTableDishService.java | 63 +++ .../ActivityTableDishServiceImpl.java | 124 ++++++ .../activityuser/ActivityUserService.java | 77 ++++ .../activityuser/ActivityUserServiceImpl.java | 193 ++++++++ .../mapper/activity/ActivityMapper.xml | 12 + .../activityawards/ActivityAwardsMapper.xml | 12 + .../ActivityAwardsUserMapper.xml | 23 + .../mapper/activitypay/ActivityPayMapper.xml | 25 ++ .../ActivityRestaurantMapper.xml | 12 + .../activitytable/ActivityTableMapper.xml | 29 ++ .../activityuser/ActivityUserMapper.xml | 26 ++ .../admin/notify/PayNotifyController.java | 54 ++- .../admin/order/vo/PayOrderSubmitReqVO.java | 13 + .../AppPayWalletRechargeCreateReqVO.java | 3 + .../framework/pay/config/PayProperties.java | 5 + .../service/order/PayOrderServiceImpl.java | 34 +- .../wallet/PayWalletRechargeServiceImpl.java | 7 +- .../src/main/resources/application-local.yaml | 10 +- 123 files changed, 6837 insertions(+), 19 deletions(-) create mode 100644 yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/ActivityApi.java create mode 100644 yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/dto/ActivityPayDTO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/ActivityApiImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/ActivityController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/vo/ActivityPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/vo/ActivityRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/vo/ActivitySaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/ActivityAddDishController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishSaveBatchVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/ActivityAwardsController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsListDTO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/ActivityAwardsUserController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserCountVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/ActivityPayController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayCountVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPaySaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/ActivityPayTableController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/vo/ActivityPayTablePageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/vo/ActivityPayTableRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/vo/ActivityPayTableSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/ActivityRestaurantController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantSaveDto.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/ActivityTableController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableCountVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTablePageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/ActivityTableDishController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityUpdateDishVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/ActivityUserController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserCountVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserPageReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserSaveReqVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/AppActivityDrawController.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityPayRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityPrizeDrawVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityTableRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityUserRespVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppCancelVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppCheckVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppQrCodeVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppReserveQrCodeVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUnbindVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUserApplyVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUserAwardsVO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activity/ActivityDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityadddish/ActivityAddDishDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityawards/ActivityAwardsDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityawardsuser/ActivityAwardsUserDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitypay/ActivityPayDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitypaytable/ActivityPayTableDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityrestaurant/ActivityRestaurantDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitytable/ActivityTableDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitytabledish/ActivityTableDishDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityuser/ActivityUserDO.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activity/ActivityMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityadddish/ActivityAddDishMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityawards/ActivityAwardsMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityawardsuser/ActivityAwardsUserMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitypay/ActivityPayMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitypaytable/ActivityPayTableMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityrestaurant/ActivityRestaurantMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytable/ActivityTableMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytabledish/ActivityTableDishMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityuser/ActivityUserMapper.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/ActivityJob.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/ActivityReserveJob.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityadddish/ActivityAddDishService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityadddish/ActivityAddDishServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawards/ActivityAwardsService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawards/ActivityAwardsServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawardsuser/ActivityAwardsUserService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawardsuser/ActivityAwardsUserServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypaytable/ActivityPayTableService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypaytable/ActivityPayTableServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityrestaurant/ActivityRestaurantService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityrestaurant/ActivityRestaurantServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityuser/ActivityUserService.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityuser/ActivityUserServiceImpl.java create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activity/ActivityMapper.xml create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityawards/ActivityAwardsMapper.xml create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityawardsuser/ActivityAwardsUserMapper.xml create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitypay/ActivityPayMapper.xml create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityrestaurant/ActivityRestaurantMapper.xml create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitytable/ActivityTableMapper.xml create mode 100644 yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityuser/ActivityUserMapper.xml diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/ActivityApi.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/ActivityApi.java new file mode 100644 index 00000000..26fe3e16 --- /dev/null +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/ActivityApi.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.module.member.api.activitypay; + +import cn.iocoder.yudao.module.member.api.activitypay.dto.ActivityPayDTO; + +/** + * 用户收件地址 API 接口 + * + * @author 芋道源码 + */ +public interface ActivityApi { + + + void createActivityPay(ActivityPayDTO createReqVO); + +} 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 new file mode 100644 index 00000000..6f251056 --- /dev/null +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/dto/ActivityPayDTO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.member.api.activitypay.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * 活动付款 DO + * + * @author 我是秦俊旗 + */ +// 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ActivityPayDTO { + + /** + * 活动id + */ + private Long activityId; + /** + * 桌号 + */ + private String serialNumbers; + /** + * 价格 + */ + private BigDecimal price; + /** + * 用户id + */ + private Long userId; + + private String status; + + private String reserveTime; + + private String dish; + + private String diningPeriod; + +} \ 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 a865e002..ce5d7cef 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 @@ -188,5 +188,28 @@ public interface ErrorCodeConstants { ErrorCode DINING_PLATES_BIND_MAX = new ErrorCode(1_004_033_02, "可绑定的餐盘已达到上限"); ErrorCode STORE_DISCOUNT_NOT_EXISTS = new ErrorCode(1_004_033_03, "门店超市折扣不存在"); + + + ErrorCode ACTIVITY_USER_NOT_EXISTS = new ErrorCode(1_005_000_01, "活动参加人员不存在"); + ErrorCode ACTIVITY_TABLE_NOT_EXISTS = new ErrorCode(1_005_000_02, "活动用餐桌子不存在"); + ErrorCode ACTIVITY_RESTAURANT_NOT_EXISTS = new ErrorCode(1_005_000_03, "活动用餐不存在"); + ErrorCode ACTIVITY_AWARDS_USER_NOT_EXISTS = new ErrorCode(1_005_000_04, "活动中奖人员不存在"); + ErrorCode ACTIVITY_AWARDS_NOT_EXISTS = new ErrorCode(1_005_000_05, "活动奖项不存在"); + ErrorCode ACTIVITY_NOT_EXISTS = new ErrorCode(1_005_000_06, "活动不存在"); + ErrorCode ACTIVITY_START = new ErrorCode(1_005_000_07, "活动已开始或结束"); + ErrorCode ACTIVITY_TABLE_ZERO = new ErrorCode(1_005_000_08, "总桌数至少为1"); + ErrorCode ACTIVITY_AWARDS_EXCEED = new ErrorCode(1_005_000_09, "中奖人数超出"); + ErrorCode ACTIVITY_ERROR = new ErrorCode(1_005_000_10, "活动已结束"); + ErrorCode ACTIVITY_USER_JOIN = new ErrorCode(1_005_000_11, "该活动已报名"); + ErrorCode ACTIVITY_TABLE_RESERVED = new ErrorCode(1_005_000_12, "桌子已预订"); + ErrorCode ACTIVITY_PAY_NOT_EXISTS = new ErrorCode(1_005_000_13, "活动付款不存在"); + ErrorCode ACTIVITY_AWARDS_USER_NOT_EFFECTIVE = new ErrorCode(1_005_000_14, "该奖项已兑换或已过期"); + ErrorCode ACTIVITY_NO_USER = new ErrorCode(1_005_000_15, "活动无参与人员"); + ErrorCode ACTIVITY_PAY_TABLE_NOT_EXISTS = new ErrorCode(1_005_000_16, "活动付款不存在"); + ErrorCode ACTIVITY_PAY_USE = new ErrorCode(1_005_000_17, "该订单已使用"); + 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, "请先选择桌子"); } diff --git a/yudao-module-member/yudao-module-member-biz/pom.xml b/yudao-module-member/yudao-module-member-biz/pom.xml index e57c02ea..d38ebdf5 100644 --- a/yudao-module-member/yudao-module-member-biz/pom.xml +++ b/yudao-module-member/yudao-module-member-biz/pom.xml @@ -110,6 +110,10 @@ javase 3.4.1 + + cn.iocoder.boot + yudao-spring-boot-starter-protection + 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 new file mode 100644 index 00000000..e068d581 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/api/activitypay/ActivityApiImpl.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.member.api.activitypay; + +import cn.hutool.core.bean.BeanUtil; +import cn.iocoder.yudao.module.member.api.activitypay.dto.ActivityPayDTO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPaySaveReqVO; +import cn.iocoder.yudao.module.member.service.activitypay.ActivityPayService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 用户收件地址 API 接口 + * + * @author 芋道源码 + */ +@Service +public class ActivityApiImpl implements ActivityApi { + + + @Resource + private ActivityPayService activityPayService; + + @Override + 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/activity/ActivityController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/ActivityController.java new file mode 100644 index 00000000..33ec2e3f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/ActivityController.java @@ -0,0 +1,100 @@ +package cn.iocoder.yudao.module.member.controller.admin.activity; + +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.activity.vo.ActivityPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivitySaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantRespVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant.ActivityRestaurantDO; +import cn.iocoder.yudao.module.member.service.activity.ActivityService; +import cn.iocoder.yudao.module.member.service.activityrestaurant.ActivityRestaurantService; +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") +@Validated +public class ActivityController { + + @Resource + private ActivityService activityService; + @Resource + private ActivityRestaurantService activityRestaurantService; + + @PostMapping("/create") + @Operation(summary = "创建活动") + public CommonResult createActivity(@Valid @RequestBody ActivitySaveReqVO createReqVO) { + return success(activityService.createActivity(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动") + @PreAuthorize("@ss.hasPermission('member:activity:update')") + public CommonResult updateActivity(@Valid @RequestBody ActivitySaveReqVO updateReqVO) { + activityService.updateActivity(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity:delete')") + public CommonResult deleteActivity(@RequestParam("id") Long id) { + activityService.deleteActivity(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity:query')") + public CommonResult getActivity(@RequestParam("id") Long id) { + ActivityDO activity = activityService.getActivity(id); + ActivityRespVO bean = BeanUtils.toBean(activity, ActivityRespVO.class); + ActivityRestaurantDO activityRestaurantDO = activityRestaurantService.getByActivityId(id); + bean.setActivityRestaurantSaveDto(BeanUtils.toBean(activityRestaurantDO, ActivityRestaurantRespVO.class)); + return success(bean); + } + + @GetMapping("/page") + @Operation(summary = "获得活动分页") + @PreAuthorize("@ss.hasPermission('member:activity:query')") + public CommonResult> getActivityPage(@Valid ActivityPageReqVO pageReqVO) { + PageResult pageResult = activityService.getActivityPage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出活动 Excel") + @PreAuthorize("@ss.hasPermission('member:activity:export')") + @OperateLog(type = EXPORT) + public void exportActivityExcel(@Valid ActivityPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityService.getActivityPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动.xls", "数据", ActivityRespVO.class, + list); + } + +} \ 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/activity/vo/ActivityPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/vo/ActivityPageReqVO.java new file mode 100644 index 00000000..d53758a1 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/vo/ActivityPageReqVO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.member.controller.admin.activity.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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.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 ActivityPageReqVO extends PageParam { + + @Schema(description = "活动名称", example = "李四") + private String activityName; + + @Schema(description = "活动开始时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] startTime; + + @Schema(description = "活动结束时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] endTime; + + @Schema(description = "描述", example = "你猜") + private String description; + + @Schema(description = "封面图") + private String img; + + @Schema(description = "地点") + private String location; + + @Schema(description = "主办方") + private String sponsor; + + @Schema(description = "可抽奖次数") + private Integer lotteryNum; + + @Schema(description = "用餐状态,0-禁用,1-启用 ", example = "1") + private String reservationStatus; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "用户ID") + private 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/controller/admin/activity/vo/ActivityRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/vo/ActivityRespVO.java new file mode 100644 index 00000000..72be58f3 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/vo/ActivityRespVO.java @@ -0,0 +1,77 @@ +package cn.iocoder.yudao.module.member.controller.admin.activity.vo; + +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantRespVO; +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 ActivityRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29158") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("活动名称") + private String activityName; + + @Schema(description = "活动开始时间") + @ExcelProperty("活动开始时间") + private LocalDateTime startTime; + + @Schema(description = "活动结束时间") + @ExcelProperty("活动结束时间") + private LocalDateTime endTime; + + @Schema(description = "描述", example = "你猜") + @ExcelProperty("描述") + private String description; + + @Schema(description = "封面图") + @ExcelProperty("封面图") + private String img; + + @Schema(description = "地点") + @ExcelProperty("地点") + private String location; + + @Schema(description = "主办方") + @ExcelProperty("主办方") + private String sponsor; + + @Schema(description = "可抽奖次数") + @ExcelProperty("可抽奖次数") + private Integer lotteryNum; + + @Schema(description = "用餐状态,0-禁用,1-启用 ", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("用餐状态,0-禁用,1-启用 ") + private String reservationStatus; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "报名人数") + private Integer applyNum; + + @Schema(description = "中奖人数") + private Integer awardsNum; + + @Schema(description = "预定人数") + private Integer reserveNum; + + @Schema(description = "收入") + private BigDecimal income; + + @Schema(description = "是否报名") + private Boolean isApply; + + private ActivityRestaurantRespVO activityRestaurantSaveDto; +} \ 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/activity/vo/ActivitySaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/vo/ActivitySaveReqVO.java new file mode 100644 index 00000000..db52883a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activity/vo/ActivitySaveReqVO.java @@ -0,0 +1,53 @@ +package cn.iocoder.yudao.module.member.controller.admin.activity.vo; + +import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsListDTO; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveDto; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 活动新增/修改 Request VO") +@Data +public class ActivitySaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29158") + private Long id; + + @Schema(description = "活动名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "活动名称不能为空") + private String activityName; + + @Schema(description = "活动开始时间") + private LocalDateTime startTime; + + @Schema(description = "活动结束时间") + private LocalDateTime endTime; + + @Schema(description = "描述", example = "你猜") + private String description; + + @Schema(description = "封面图") + private String img; + + @Schema(description = "地点") + private String location; + + @Schema(description = "主办方") + private String sponsor; + + @Schema(description = "可抽奖次数") + private Integer lotteryNum; + + @Schema(description = "用餐状态,0-禁用,1-启用 ", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "用餐状态,0-禁用,1-启用 不能为空") + private String reservationStatus; + + @Schema(description = "奖项列表") + private List activityAwardsList; + + @Schema(description = "用餐设置") + private ActivityRestaurantSaveDto activityRestaurantSaveDto; +} \ 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/activityadddish/ActivityAddDishController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/ActivityAddDishController.java new file mode 100644 index 00000000..589916c3 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/ActivityAddDishController.java @@ -0,0 +1,102 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityadddish; + +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.activityadddish.vo.ActivityAddDishPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveBatchVO; +import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityadddish.ActivityAddDishDO; +import cn.iocoder.yudao.module.member.service.activityadddish.ActivityAddDishService; +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-add-dish") +@Validated +public class ActivityAddDishController { + + @Resource + private ActivityAddDishService activityAddDishService; + + @PostMapping("/create") + @Operation(summary = "创建活动用餐桌子加菜") + @PreAuthorize("@ss.hasPermission('member:activity-add-dish:create')") + public CommonResult createActivityAddDish(@Valid @RequestBody ActivityAddDishSaveReqVO createReqVO) { + return success(activityAddDishService.createActivityAddDish(createReqVO)); + } + + @PostMapping("/createBatch") + @Operation(summary = "创建活动用餐桌子加菜批量") + @PreAuthorize("@ss.hasPermission('member:activity-add-dish:create')") + public CommonResult createActivityAddDish(@Valid @RequestBody ActivityAddDishSaveBatchVO createReqVO) { + activityAddDishService.createActivityAddDishBatch(createReqVO); + return success(true); + } + + @PutMapping("/update") + @Operation(summary = "更新活动用餐桌子加菜") + @PreAuthorize("@ss.hasPermission('member:activity-add-dish:update')") + public CommonResult updateActivityAddDish(@Valid @RequestBody ActivityAddDishSaveReqVO updateReqVO) { + activityAddDishService.updateActivityAddDish(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动用餐桌子加菜") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-add-dish:delete')") + public CommonResult deleteActivityAddDish(@RequestParam("id") Long id) { + activityAddDishService.deleteActivityAddDish(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动用餐桌子加菜") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-add-dish:query')") + public CommonResult getActivityAddDish(@RequestParam("id") Long id) { + ActivityAddDishDO activityAddDish = activityAddDishService.getActivityAddDish(id); + return success(BeanUtils.toBean(activityAddDish, ActivityAddDishRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动用餐桌子加菜分页") + @PreAuthorize("@ss.hasPermission('member:activity-add-dish:query')") + public CommonResult> getActivityAddDishPage(@Valid ActivityAddDishPageReqVO pageReqVO) { + PageResult pageResult = activityAddDishService.getActivityAddDishPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityAddDishRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出活动用餐桌子加菜 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-add-dish:export')") + @OperateLog(type = EXPORT) + public void exportActivityAddDishExcel(@Valid ActivityAddDishPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityAddDishService.getActivityAddDishPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动用餐桌子加菜.xls", "数据", ActivityAddDishRespVO.class, + BeanUtils.toBean(list, ActivityAddDishRespVO.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/activityadddish/vo/ActivityAddDishPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishPageReqVO.java new file mode 100644 index 00000000..8dc4a910 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishPageReqVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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; + +@Schema(description = "管理后台 - 活动用餐桌子加菜分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ActivityAddDishPageReqVO extends PageParam { + + @Schema(description = "桌子", example = "18726") + private Long tableDishId; + + @Schema(description = "序号") + private Integer serialNumber; + + @Schema(description = "菜名", example = "赵六") + private String dishName; + + @Schema(description = "菜品价格", example = "12669") + private BigDecimal dishPrice; + + @Schema(description = "菜品图片") + private String dishImg; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "桌子", example = "18726") + private List tableDishIds; + +} \ 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/activityadddish/vo/ActivityAddDishRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishRespVO.java new file mode 100644 index 00000000..2dbd4051 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishRespVO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityadddish.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 ActivityAddDishRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15656") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "桌子", requiredMode = Schema.RequiredMode.REQUIRED, example = "18726") + @ExcelProperty("桌子") + private Long tableDishId; + + @Schema(description = "序号") + @ExcelProperty("序号") + private Integer serialNumber; + + @Schema(description = "菜名", example = "赵六") + @ExcelProperty("菜名") + private String dishName; + + @Schema(description = "菜品价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "12669") + @ExcelProperty("菜品价格") + private BigDecimal dishPrice; + + @Schema(description = "菜品图片") + @ExcelProperty("菜品图片") + private String dishImg; + + @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/activityadddish/vo/ActivityAddDishSaveBatchVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishSaveBatchVO.java new file mode 100644 index 00000000..df6ec493 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishSaveBatchVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +@Schema(description = "管理后台 - 活动用餐桌子加菜新增/修改 Request VO") +@Data +public class ActivityAddDishSaveBatchVO { + + @Schema(description = "桌子", requiredMode = Schema.RequiredMode.REQUIRED, example = "18726") + @NotNull(message = "桌子不能为空") + private List tableDishIds; + + @Schema(description = "菜名", example = "赵六") + private String dishName; + + @Schema(description = "菜品价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "12669") + @NotNull(message = "菜品价格不能为空") + private BigDecimal dishPrice; + + @Schema(description = "菜品图片") + private String dishImg; + +} \ 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/activityadddish/vo/ActivityAddDishSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishSaveReqVO.java new file mode 100644 index 00000000..d802858e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityadddish/vo/ActivityAddDishSaveReqVO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 活动用餐桌子加菜新增/修改 Request VO") +@Data +public class ActivityAddDishSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15656") + private Long id; + + @Schema(description = "桌子", requiredMode = Schema.RequiredMode.REQUIRED, example = "18726") + @NotNull(message = "桌子不能为空") + private Long tableDishId; + + @Schema(description = "序号") + private Integer serialNumber; + + @Schema(description = "菜名", example = "赵六") + private String dishName; + + @Schema(description = "菜品价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "12669") + @NotNull(message = "菜品价格不能为空") + private BigDecimal dishPrice; + + @Schema(description = "菜品图片") + private String dishImg; + +} \ 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/activityawards/ActivityAwardsController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/ActivityAwardsController.java new file mode 100644 index 00000000..e9812a80 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/ActivityAwardsController.java @@ -0,0 +1,101 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityawards; + +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.activityawards.vo.ActivityAwardsPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO; +import cn.iocoder.yudao.module.member.service.activityawards.ActivityAwardsService; +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-awards") +@Validated +public class ActivityAwardsController { + + @Resource + private ActivityAwardsService activityAwardsService; + + @PostMapping("/create") + @Operation(summary = "创建活动奖项") + @PreAuthorize("@ss.hasPermission('member:activity-awards:create')") + public CommonResult createActivityAwards(@Valid @RequestBody ActivityAwardsSaveReqVO createReqVO) { + return success(activityAwardsService.createActivityAwards(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动奖项") + @PreAuthorize("@ss.hasPermission('member:activity-awards:update')") + public CommonResult updateActivityAwards(@Valid @RequestBody ActivityAwardsSaveReqVO updateReqVO) { + activityAwardsService.updateActivityAwards(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动奖项") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-awards:delete')") + public CommonResult deleteActivityAwards(@RequestParam("id") Long id) { + activityAwardsService.deleteActivityAwards(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动奖项") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-awards:query')") + public CommonResult getActivityAwards(@RequestParam("id") Long id) { + ActivityAwardsDO activityAwards = activityAwardsService.getActivityAwards(id); + return success(BeanUtils.toBean(activityAwards, ActivityAwardsRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动奖项分页") + @PreAuthorize("@ss.hasPermission('member:activity-awards:query')") + public CommonResult> getActivityAwardsPage(@Valid ActivityAwardsPageReqVO pageReqVO) { + PageResult pageResult = activityAwardsService.getActivityAwardsPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityAwardsRespVO.class)); + } + + @GetMapping("/list") + @Operation(summary = "获得活动奖项列表") + public CommonResult> getActivityAwardsList(@Valid ActivityAwardsPageReqVO pageReqVO) { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityAwardsService.getActivityAwardsPage(pageReqVO).getList(); + return success(BeanUtils.toBean(list, ActivityAwardsRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出活动奖项 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-awards:export')") + @OperateLog(type = EXPORT) + public void exportActivityAwardsExcel(@Valid ActivityAwardsPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityAwardsService.getActivityAwardsPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动奖项.xls", "数据", ActivityAwardsRespVO.class, + BeanUtils.toBean(list, ActivityAwardsRespVO.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/activityawards/vo/ActivityAwardsListDTO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsListDTO.java new file mode 100644 index 00000000..e6a170c1 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsListDTO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityawards.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 活动奖项新增/修改 Request VO") +@Data +public class ActivityAwardsListDTO { + + + @Schema(description = "奖项名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "奖项名称不能为空") + private String awardsName; + + private String limitType; + + @Schema(description = "奖项人数") + private Integer awardsNum; + + @Schema(description = "奖品") + private String prize; + + @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "排序不能为空") + private Integer sortNum; + +} \ 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/activityawards/vo/ActivityAwardsPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsPageReqVO.java new file mode 100644 index 00000000..1d645522 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsPageReqVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityawards.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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.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 ActivityAwardsPageReqVO extends PageParam { + + @Schema(description = "活动id", example = "3061") + private Long activityId; + + @Schema(description = "奖项名称", example = "芋艿") + private String awardsName; + + private String limitType; + + @Schema(description = "奖项人数") + private Integer awardsNum; + + @Schema(description = "奖品") + private String prize; + + @Schema(description = "排序") + private Integer sortNum; + + @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/activityawards/vo/ActivityAwardsRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsRespVO.java new file mode 100644 index 00000000..f66cde8b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsRespVO.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityawards.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 ActivityAwardsRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13226") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3061") + @ExcelProperty("活动id") + private Long activityId; + + @Schema(description = "奖项名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("奖项名称") + private String awardsName; + + + private String limitType; + + @Schema(description = "奖项人数") + @ExcelProperty("奖项人数") + private Integer awardsNum; + + @Schema(description = "奖品") + @ExcelProperty("奖品") + private String prize; + + @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("排序") + private Integer sortNum; + + @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/activityawards/vo/ActivityAwardsSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsSaveReqVO.java new file mode 100644 index 00000000..b27b08b1 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawards/vo/ActivityAwardsSaveReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityawards.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 活动奖项新增/修改 Request VO") +@Data +public class ActivityAwardsSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13226") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3061") + @NotNull(message = "活动id不能为空") + private Long activityId; + + + private String limitType; + + @Schema(description = "奖项名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "奖项名称不能为空") + private String awardsName; + + @Schema(description = "奖项人数") + private Integer awardsNum; + + @Schema(description = "奖品") + private String prize; + + @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "排序不能为空") + private Integer sortNum; + +} \ 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/activityawardsuser/ActivityAwardsUserController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/ActivityAwardsUserController.java new file mode 100644 index 00000000..7e4fdb65 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/ActivityAwardsUserController.java @@ -0,0 +1,101 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityawardsuser; + +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.activityawardsuser.vo.ActivityAwardsUserPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO; +import cn.iocoder.yudao.module.member.service.activityawardsuser.ActivityAwardsUserService; +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-awards-user") +@Validated +public class ActivityAwardsUserController { + + @Resource + private ActivityAwardsUserService activityAwardsUserService; + + @PostMapping("/create") + @Operation(summary = "创建活动中奖人员") + @PreAuthorize("@ss.hasPermission('member:activity-awards-user:create')") + public CommonResult createActivityAwardsUser(@Valid @RequestBody ActivityAwardsUserSaveReqVO createReqVO) { + return success(activityAwardsUserService.createActivityAwardsUser(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动中奖人员") + @PreAuthorize("@ss.hasPermission('member:activity-awards-user:update')") + public CommonResult updateActivityAwardsUser(@Valid @RequestBody ActivityAwardsUserSaveReqVO updateReqVO) { + activityAwardsUserService.updateActivityAwardsUser(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动中奖人员") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-awards-user:delete')") + public CommonResult deleteActivityAwardsUser(@RequestParam("id") Long id) { + activityAwardsUserService.deleteActivityAwardsUser(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动中奖人员") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-awards-user:query')") + public CommonResult getActivityAwardsUser(@RequestParam("id") Long id) { + ActivityAwardsUserDO activityAwardsUser = activityAwardsUserService.getActivityAwardsUser(id); + return success(BeanUtils.toBean(activityAwardsUser, ActivityAwardsUserRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动中奖人员分页") + @PreAuthorize("@ss.hasPermission('member:activity-awards-user:query')") + public CommonResult> getActivityAwardsUserPage(@Valid ActivityAwardsUserPageReqVO pageReqVO) { + PageResult pageResult = activityAwardsUserService.getActivityAwardsUserPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityAwardsUserRespVO.class)); + } + + @GetMapping("/JoinPage") + @Operation(summary = "获得活动中奖人员分页") + public CommonResult> getActivityAwardsUserJoinPage(@Valid ActivityAwardsUserPageReqVO pageReqVO) { + return success(activityAwardsUserService.getActivityAwardsUserJoinPage(pageReqVO)); + } + + + + @GetMapping("/export-excel") + @Operation(summary = "导出活动中奖人员 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-awards-user:export')") + @OperateLog(type = EXPORT) + public void exportActivityAwardsUserExcel(@Valid ActivityAwardsUserPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityAwardsUserService.getActivityAwardsUserPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动中奖人员.xls", "数据", ActivityAwardsUserRespVO.class, + BeanUtils.toBean(list, ActivityAwardsUserRespVO.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/activityawardsuser/vo/ActivityAwardsUserCountVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserCountVO.java new file mode 100644 index 00000000..2c12b0b1 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserCountVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 活动参加人员 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ActivityAwardsUserCountVO { + + + @Schema(description = "活动id") + private Long activityId; + + @Schema(description = "中奖人数") + private Integer awardsNum= 0; + +} \ 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/activityawardsuser/vo/ActivityAwardsUserPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserPageReqVO.java new file mode 100644 index 00000000..0de5ac78 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserPageReqVO.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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.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 ActivityAwardsUserPageReqVO extends PageParam { + + @Schema(description = "活动id", example = "8386") + private Long activityId; + + @Schema(description = "用户id", example = "19931") + private Long userId; + + @Schema(description = "电话") + private String mobile; + + @Schema(description = "奖品id", example = "3358") + private Long awardsId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + + private String awardsStatus; +} \ 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/activityawardsuser/vo/ActivityAwardsUserRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserRespVO.java new file mode 100644 index 00000000..58eb3c93 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserRespVO.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.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 ActivityAwardsUserRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32607") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8386") + @ExcelProperty("活动id") + private Long activityId; + + @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19931") + @ExcelProperty("用户id") + private Long userId; + + @Schema(description = "电话") + @ExcelProperty("电话") + private String mobile; + + private String nickName; + + private String avatar; + + /** + * 领奖状态(0-未领奖,1-已领奖,2-已过期) + */ + private String awardsStatus; + + @Schema(description = "奖品id", example = "3358") + @ExcelProperty("奖品id") + private Long awardsId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + /** + * 奖项名称 + */ + private String awardsName; + + /** + * 奖品 + */ + private String prize; + +} \ 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/activityawardsuser/vo/ActivityAwardsUserSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserSaveReqVO.java new file mode 100644 index 00000000..6dae9dc3 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityawardsuser/vo/ActivityAwardsUserSaveReqVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.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 ActivityAwardsUserSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32607") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8386") + @NotNull(message = "活动id不能为空") + private Long activityId; + + @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19931") + @NotNull(message = "用户id不能为空") + private Long userId; + + @Schema(description = "电话") + private String mobile; + + @Schema(description = "奖品id", example = "3358") + private Long awardsId; + +} \ 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/ActivityPayController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/ActivityPayController.java new file mode 100644 index 00000000..78606164 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/ActivityPayController.java @@ -0,0 +1,93 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitypay; + +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.activitypay.vo.ActivityPayPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPaySaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO; +import cn.iocoder.yudao.module.member.service.activitypay.ActivityPayService; +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-pay") +@Validated +public class ActivityPayController { + + @Resource + private ActivityPayService activityPayService; + + @PostMapping("/create") + @Operation(summary = "创建活动付款") + @PreAuthorize("@ss.hasPermission('member:activity-pay:create')") + public CommonResult createActivityPay(@Valid @RequestBody ActivityPaySaveReqVO createReqVO) { + return success(activityPayService.createActivityPay(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动付款") + @PreAuthorize("@ss.hasPermission('member:activity-pay:update')") + public CommonResult updateActivityPay(@Valid @RequestBody ActivityPaySaveReqVO updateReqVO) { + activityPayService.updateActivityPay(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动付款") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-pay:delete')") + public CommonResult deleteActivityPay(@RequestParam("id") Long id) { + activityPayService.deleteActivityPay(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动付款") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-pay:query')") + public CommonResult getActivityPay(@RequestParam("id") Long id) { + ActivityPayDO activityPay = activityPayService.getActivityPay(id); + return success(BeanUtils.toBean(activityPay, ActivityPayRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动付款分页") + @PreAuthorize("@ss.hasPermission('member:activity-pay:query')") + public CommonResult> getActivityPayPage(@Valid ActivityPayPageReqVO pageReqVO) { + PageResult pageResult = activityPayService.getActivityPayPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityPayRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出活动付款 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-pay:export')") + @OperateLog(type = EXPORT) + public void exportActivityPayExcel(@Valid ActivityPayPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityPayService.getActivityPayPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动付款.xls", "数据", ActivityPayRespVO.class, + BeanUtils.toBean(list, ActivityPayRespVO.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/activitypay/vo/ActivityPayCountVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayCountVO.java new file mode 100644 index 00000000..8b2f9533 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayCountVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitypay.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 活动参加人员 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ActivityPayCountVO { + + + @Schema(description = "活动id") + private Long activityId; + + @Schema(description = "已收钱款") + private BigDecimal income= BigDecimal.ZERO; + +} \ 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 new file mode 100644 index 00000000..6be8b13e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayPageReqVO.java @@ -0,0 +1,35 @@ +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 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 ActivityPayPageReqVO extends PageParam { + + @Schema(description = "活动id", example = "27391") + private Long activityId; + + @Schema(description = "桌号") + private String serialNumbers; + + @Schema(description = "价格", example = "7717") + private BigDecimal price; + + @Schema(description = "用户id", example = "5313") + private Long userId; + + @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/activitypay/vo/ActivityPayRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayRespVO.java new file mode 100644 index 00000000..917dc010 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPayRespVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitypay.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 ActivityPayRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24970") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27391") + @ExcelProperty("活动id") + private Long activityId; + + @Schema(description = "桌号") + @ExcelProperty("桌号") + private String serialNumbers; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "7717") + @ExcelProperty("价格") + private BigDecimal price; + + @Schema(description = "用户id", example = "5313") + @ExcelProperty("用户id") + private Long userId; + + @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/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 new file mode 100644 index 00000000..ced9f2ba --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypay/vo/ActivityPaySaveReqVO.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitypay.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 活动付款新增/修改 Request VO") +@Data +public class ActivityPaySaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24970") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27391") + @NotNull(message = "活动id不能为空") + private Long activityId; + + @Schema(description = "桌号") + private String serialNumbers; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "7717") + @NotNull(message = "价格不能为空") + private BigDecimal price; + + @Schema(description = "用户id", example = "5313") + private Long userId; + + private String status; + + private String reserveTime; + + private String dish; + + private String diningPeriod; + +} \ 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/activitypaytable/ActivityPayTableController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/ActivityPayTableController.java new file mode 100644 index 00000000..d0afebfe --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/ActivityPayTableController.java @@ -0,0 +1,100 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitypaytable; + +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.activitypaytable.vo.ActivityPayTablePageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.ActivityPayTableRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.ActivityPayTableSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable.ActivityPayTableDO; +import cn.iocoder.yudao.module.member.service.activitypaytable.ActivityPayTableService; +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-pay-table") +@Validated +public class ActivityPayTableController { + + @Resource + private ActivityPayTableService activityPayTableService; + + @PostMapping("/create") + @Operation(summary = "创建活动付款") + @PreAuthorize("@ss.hasPermission('member:activity-pay-table:create')") + public CommonResult createActivityPayTable(@Valid @RequestBody ActivityPayTableSaveReqVO createReqVO) { + return success(activityPayTableService.createActivityPayTable(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动付款") + @PreAuthorize("@ss.hasPermission('member:activity-pay-table:update')") + public CommonResult updateActivityPayTable(@Valid @RequestBody ActivityPayTableSaveReqVO updateReqVO) { + activityPayTableService.updateActivityPayTable(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动付款") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-pay-table:delete')") + public CommonResult deleteActivityPayTable(@RequestParam("id") Long id) { + activityPayTableService.deleteActivityPayTable(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动付款") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-pay-table:query')") + public CommonResult getActivityPayTable(@RequestParam("id") Long id) { + ActivityPayTableDO activityPayTable = activityPayTableService.getActivityPayTable(id); + return success(BeanUtils.toBean(activityPayTable, ActivityPayTableRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动付款分页") + @PreAuthorize("@ss.hasPermission('member:activity-pay-table:query')") + public CommonResult> getActivityPayTablePage(@Valid ActivityPayTablePageReqVO pageReqVO) { + PageResult pageResult = activityPayTableService.getActivityPayTablePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityPayTableRespVO.class)); + } + + @GetMapping("/groupPage") + @Operation(summary = "获得活动付款分页") + public CommonResult> getActivityPayTableGroupPage(@Valid ActivityPayTablePageReqVO pageReqVO) { + PageResult pageResult = activityPayTableService. getActivityPayTableGroupPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityPayTableRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出活动付款 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-pay-table:export')") + @OperateLog(type = EXPORT) + public void exportActivityPayTableExcel(@Valid ActivityPayTablePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityPayTableService.getActivityPayTablePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动付款.xls", "数据", ActivityPayTableRespVO.class, + BeanUtils.toBean(list, ActivityPayTableRespVO.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/activitypaytable/vo/ActivityPayTablePageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/vo/ActivityPayTablePageReqVO.java new file mode 100644 index 00000000..fc0c6487 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/vo/ActivityPayTablePageReqVO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitypaytable.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 ActivityPayTablePageReqVO extends PageParam { + + @Schema(description = "活动id", example = "11464") + private Long activityId; + + @Schema(description = "桌号") + private String serialNumbers; + + @Schema(description = "价格", example = "18695") + private BigDecimal price; + + @Schema(description = "用户id", example = "19527") + private Long userId; + + @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/activitypaytable/vo/ActivityPayTableRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/vo/ActivityPayTableRespVO.java new file mode 100644 index 00000000..5a1cac97 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/vo/ActivityPayTableRespVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitypaytable.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 ActivityPayTableRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2305") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11464") + @ExcelProperty("活动id") + private Long activityId; + + @Schema(description = "桌号") + @ExcelProperty("桌号") + private String serialNumbers; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "18695") + @ExcelProperty("价格") + private BigDecimal price; + + @Schema(description = "用户id", example = "19527") + @ExcelProperty("用户id") + private Long userId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + private BigDecimal allPrice; +} \ 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/activitypaytable/vo/ActivityPayTableSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/vo/ActivityPayTableSaveReqVO.java new file mode 100644 index 00000000..c938a49b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitypaytable/vo/ActivityPayTableSaveReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitypaytable.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 ActivityPayTableSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2305") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11464") + @NotNull(message = "活动id不能为空") + private Long activityId; + + @Schema(description = "桌号") + private String serialNumbers; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "18695") + @NotNull(message = "价格不能为空") + private BigDecimal price; + + @Schema(description = "用户id", example = "19527") + private 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/controller/admin/activityrestaurant/ActivityRestaurantController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/ActivityRestaurantController.java new file mode 100644 index 00000000..aa4f78cb --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/ActivityRestaurantController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityrestaurant; + +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.activityrestaurant.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant.ActivityRestaurantDO; +import cn.iocoder.yudao.module.member.service.activityrestaurant.ActivityRestaurantService; + +@Tag(name = "管理后台 - 活动用餐") +@RestController +@RequestMapping("/member/activity-restaurant") +@Validated +public class ActivityRestaurantController { + + @Resource + private ActivityRestaurantService activityRestaurantService; + + @PostMapping("/create") + @Operation(summary = "创建活动用餐") + @PreAuthorize("@ss.hasPermission('member:activity-restaurant:create')") + public CommonResult createActivityRestaurant(@Valid @RequestBody ActivityRestaurantSaveReqVO createReqVO) { + return success(activityRestaurantService.createActivityRestaurant(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动用餐") + @PreAuthorize("@ss.hasPermission('member:activity-restaurant:update')") + public CommonResult updateActivityRestaurant(@Valid @RequestBody ActivityRestaurantSaveReqVO updateReqVO) { + activityRestaurantService.updateActivityRestaurant(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动用餐") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-restaurant:delete')") + public CommonResult deleteActivityRestaurant(@RequestParam("id") Long id) { + activityRestaurantService.deleteActivityRestaurant(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动用餐") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-restaurant:query')") + public CommonResult getActivityRestaurant(@RequestParam("id") Long id) { + ActivityRestaurantDO activityRestaurant = activityRestaurantService.getActivityRestaurant(id); + return success(BeanUtils.toBean(activityRestaurant, ActivityRestaurantRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动用餐分页") + @PreAuthorize("@ss.hasPermission('member:activity-restaurant:query')") + public CommonResult> getActivityRestaurantPage(@Valid ActivityRestaurantPageReqVO pageReqVO) { + PageResult pageResult = activityRestaurantService.getActivityRestaurantPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityRestaurantRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出活动用餐 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-restaurant:export')") + @OperateLog(type = EXPORT) + public void exportActivityRestaurantExcel(@Valid ActivityRestaurantPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityRestaurantService.getActivityRestaurantPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动用餐.xls", "数据", ActivityRestaurantRespVO.class, + BeanUtils.toBean(list, ActivityRestaurantRespVO.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/activityrestaurant/vo/ActivityRestaurantPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantPageReqVO.java new file mode 100644 index 00000000..04593d52 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantPageReqVO.java @@ -0,0 +1,41 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.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 ActivityRestaurantPageReqVO extends PageParam { + + @Schema(description = "活动id", example = "17921") + private Long activityId; + + @Schema(description = "总桌数") + private Integer totalTable; + + @Schema(description = "每桌人数") + private Integer tableNum; + + @Schema(description = "价格", example = "11086") + private BigDecimal price; + + @Schema(description = "菜谱图片", example = "https://www.iocoder.cn") + private String dishUrl; + + @Schema(description = "描述", example = "随便") + private String description; + + @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/activityrestaurant/vo/ActivityRestaurantRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantRespVO.java new file mode 100644 index 00000000..d8cb96cb --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantRespVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.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 ActivityRestaurantRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32692") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17921") + @ExcelProperty("活动id") + private Long activityId; + + @Schema(description = "总桌数") + @ExcelProperty("总桌数") + private Integer totalTable; + + @Schema(description = "每桌人数") + @ExcelProperty("每桌人数") + private Integer tableNum; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "11086") + @ExcelProperty("价格") + private BigDecimal price; + + @Schema(description = "菜谱图片", example = "https://www.iocoder.cn") + @ExcelProperty("菜谱图片") + private String dishUrl; + + @Schema(description = "描述", example = "随便") + @ExcelProperty("描述") + private String description; + + @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/activityrestaurant/vo/ActivityRestaurantSaveDto.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantSaveDto.java new file mode 100644 index 00000000..8364cbf4 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantSaveDto.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 活动用餐新增/修改 Request VO") +@Data +public class ActivityRestaurantSaveDto { + + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32692") + private Long id; + + @Schema(description = "总桌数") + private Integer totalTable; + + @Schema(description = "每桌人数") + private Integer tableNum; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "11086") + @NotNull(message = "价格不能为空") + private BigDecimal price; + + @Schema(description = "菜谱图片", example = "https://www.iocoder.cn") + private String dishUrl; + + @Schema(description = "描述", example = "随便") + private String description; + +} \ 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/activityrestaurant/vo/ActivityRestaurantSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantSaveReqVO.java new file mode 100644 index 00000000..9a311400 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityrestaurant/vo/ActivityRestaurantSaveReqVO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.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 ActivityRestaurantSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32692") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "17921") + @NotNull(message = "活动id不能为空") + private Long activityId; + + @Schema(description = "总桌数") + private Integer totalTable; + + @Schema(description = "每桌人数") + private Integer tableNum; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "11086") + @NotNull(message = "价格不能为空") + private BigDecimal price; + + @Schema(description = "菜谱图片", example = "https://www.iocoder.cn") + private String dishUrl; + + @Schema(description = "描述", example = "随便") + private String description; + +} \ 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/ActivityTableController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/ActivityTableController.java new file mode 100644 index 00000000..509ab6f5 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/ActivityTableController.java @@ -0,0 +1,103 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitytable; + +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.activitytable.vo.ActivityTablePageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitytable.ActivityTableDO; +import cn.iocoder.yudao.module.member.service.activitytable.ActivityTableService; +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-table") +@Validated +public class ActivityTableController { + + @Resource + private ActivityTableService activityTableService; + + @PostMapping("/create") + @Operation(summary = "创建活动用餐桌子") + @PreAuthorize("@ss.hasPermission('member:activity-table:create')") + public CommonResult createActivityTable(@Valid @RequestBody ActivityTableSaveReqVO createReqVO) { + return success(activityTableService.createActivityTable(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动用餐桌子") + @PreAuthorize("@ss.hasPermission('member:activity-table:update')") + public CommonResult updateActivityTable(@Valid @RequestBody ActivityTableSaveReqVO updateReqVO) { + activityTableService.updateActivityTable(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动用餐桌子") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-table:delete')") + public CommonResult deleteActivityTable(@RequestParam("id") Long id) { + activityTableService.deleteActivityTable(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动用餐桌子") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-table:query')") + public CommonResult getActivityTable(@RequestParam("id") Long id) { + ActivityTableDO activityTable = activityTableService.getActivityTable(id); + return success(BeanUtils.toBean(activityTable, ActivityTableRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动用餐桌子分页") + @PreAuthorize("@ss.hasPermission('member:activity-table:query')") + public CommonResult> getActivityTablePage(@Valid ActivityTablePageReqVO pageReqVO) { + PageResult pageResult = activityTableService.getActivityTablePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityTableRespVO.class)); + } + + @GetMapping("/list") + @Operation(summary = "获得所有活动用餐桌子") + @PreAuthorize("@ss.hasPermission('member:activity-table:query')") + public CommonResult> getActivityTableList(@Valid ActivityTablePageReqVO pageReqVO) { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityTableService.getActivityTablePage(pageReqVO).getList(); + return success(BeanUtils.toBean(list, ActivityTableRespVO.class)); + } + + + @GetMapping("/export-excel") + @Operation(summary = "导出活动用餐桌子 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-table:export')") + @OperateLog(type = EXPORT) + public void exportActivityTableExcel(@Valid ActivityTablePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityTableService.getActivityTablePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动用餐桌子.xls", "数据", ActivityTableRespVO.class, + BeanUtils.toBean(list, ActivityTableRespVO.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/activitytable/vo/ActivityTableCountVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableCountVO.java new file mode 100644 index 00000000..a0c9db25 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableCountVO.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitytable.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 活动用餐桌子 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ActivityTableCountVO { + + + @Schema(description = "活动id") + private Long activityId; + + @Schema(description = "预定人数") + private Integer reserveNum= 0; + + +} \ 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 new file mode 100644 index 00000000..1153877e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTablePageReqVO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitytable.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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 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 ActivityTablePageReqVO extends PageParam { + + @Schema(description = "活动id", example = "8513") + private Long activityId; + + @Schema(description = "序号") + private Integer serialNumber; + + @Schema(description = "价格", example = "515") + private BigDecimal price; + + @Schema(description = "用户id", example = "13832") + private Long userId; + + @Schema(description = "电话") + private String mobile; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "是否只查预定的") + private Boolean isReserve; + +} \ 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 new file mode 100644 index 00000000..9ae04dbf --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableRespVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitytable.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 ActivityTableRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5590") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8513") + @ExcelProperty("活动id") + private Long activityId; + + @Schema(description = "序号") + @ExcelProperty("序号") + private Integer serialNumber; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "515") + @ExcelProperty("价格") + private BigDecimal price; + + @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13832") + @ExcelProperty("用户id") + private Long userId; + + @Schema(description = "电话") + @ExcelProperty("电话") + private String mobile; + + + private String nickName; + + private String avatar; + + @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/activitytable/vo/ActivityTableSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableSaveReqVO.java new file mode 100644 index 00000000..8e932973 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableSaveReqVO.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitytable.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 活动用餐桌子新增/修改 Request VO") +@Data +public class ActivityTableSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5590") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8513") + @NotNull(message = "活动id不能为空") + private Long activityId; + + @Schema(description = "序号") + private Integer serialNumber; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "515") + @NotNull(message = "价格不能为空") + private BigDecimal price; + + @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13832") + private Long userId; + + @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/activitytable/vo/ActivityTableVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableVO.java new file mode 100644 index 00000000..0960591c --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytable/vo/ActivityTableVO.java @@ -0,0 +1,8 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitytable.vo; + + +import lombok.Data; + +@Data +public class ActivityTableVO { +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/ActivityTableDishController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/ActivityTableDishController.java new file mode 100644 index 00000000..dccc8db9 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/ActivityTableDishController.java @@ -0,0 +1,108 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitytabledish; + +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.activitytabledish.vo.ActivityTableDishPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishSaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityUpdateDishVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitytabledish.ActivityTableDishDO; +import cn.iocoder.yudao.module.member.service.activitytabledish.ActivityTableDishService; +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-table-dish") +@Validated +public class ActivityTableDishController { + + @Resource + private ActivityTableDishService activityTableDishService; + + @PostMapping("/create") + @Operation(summary = "创建活动用餐桌子配置") + @PreAuthorize("@ss.hasPermission('member:activity-table-dish:create')") + public CommonResult createActivityTableDish(@Valid @RequestBody ActivityTableDishSaveReqVO createReqVO) { + return success(activityTableDishService.createActivityTableDish(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动用餐桌子配置") + @PreAuthorize("@ss.hasPermission('member:activity-table-dish:update')") + public CommonResult updateActivityTableDish(@Valid @RequestBody ActivityTableDishSaveReqVO updateReqVO) { + activityTableDishService.updateActivityTableDish(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动用餐桌子配置") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-table-dish:delete')") + public CommonResult deleteActivityTableDish(@RequestParam("id") Long id) { + activityTableDishService.deleteActivityTableDish(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动用餐桌子配置") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-table-dish:query')") + public CommonResult getActivityTableDish(@RequestParam("id") Long id) { + ActivityTableDishDO activityTableDish = activityTableDishService.getActivityTableDish(id); + return success(BeanUtils.toBean(activityTableDish, ActivityTableDishRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动用餐桌子配置分页") + @PreAuthorize("@ss.hasPermission('member:activity-table-dish:query')") + public CommonResult> getActivityTableDishPage(@Valid ActivityTableDishPageReqVO pageReqVO) { + PageResult pageResult = activityTableDishService.getActivityTableDishPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityTableDishRespVO.class)); + } + + @GetMapping("/list") + @Operation(summary = "获得所有活动用餐桌子") + @PreAuthorize("@ss.hasPermission('member:activity-table-dish:query')") + public CommonResult> getActivityTableDishList(@Valid ActivityTableDishPageReqVO pageReqVO) { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityTableDishService.getActivityTableDishPage(pageReqVO).getList(); + return success(BeanUtils.toBean(list, ActivityTableDishRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出活动用餐桌子配置 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-table-dish:export')") + @OperateLog(type = EXPORT) + public void exportActivityTableDishExcel(@Valid ActivityTableDishPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityTableDishService.getActivityTableDishPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动用餐桌子配置.xls", "数据", ActivityTableDishRespVO.class, + BeanUtils.toBean(list, ActivityTableDishRespVO.class)); + } + + @PutMapping("/updateDish") + @Operation(summary = "批量更新活动用餐桌子套餐菜品") + public CommonResult updateDish(@Valid @RequestBody ActivityUpdateDishVO updateReqVO) { + return success(activityTableDishService.updateDish(updateReqVO)); + } +} \ 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/ActivityTableDishPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishPageReqVO.java new file mode 100644 index 00000000..33fb33b7 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishPageReqVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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; + +@Schema(description = "管理后台 - 活动用餐桌子配置分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ActivityTableDishPageReqVO extends PageParam { + + @Schema(description = "活动id", example = "16826") + private Long activityId; + + @Schema(description = "序号") + private Integer serialNumber; + + @Schema(description = "价格", example = "9524") + private BigDecimal price; + + @Schema(description = "套餐菜品") + private String dish; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "ID", example = "1") + private List ids; +} \ 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 new file mode 100644 index 00000000..8ba65d48 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishRespVO.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitytabledish.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 ActivityTableDishRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21273") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16826") + @ExcelProperty("活动id") + private Long activityId; + + @Schema(description = "序号") + @ExcelProperty("序号") + private Integer serialNumber; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "9524") + @ExcelProperty("价格") + private BigDecimal price; + + @Schema(description = "套餐菜品") + @ExcelProperty("套餐菜品") + private String dish; + + @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/activitytabledish/vo/ActivityTableDishSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishSaveReqVO.java new file mode 100644 index 00000000..ee3f41fd --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityTableDishSaveReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 活动用餐桌子配置新增/修改 Request VO") +@Data +public class ActivityTableDishSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21273") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "16826") + @NotNull(message = "活动id不能为空") + private Long activityId; + + @Schema(description = "序号") + private Integer serialNumber; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "9524") + @NotNull(message = "价格不能为空") + private BigDecimal price; + + @Schema(description = "套餐菜品") + private String dish; + +} \ 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 new file mode 100644 index 00000000..4c93efcb --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activitytabledish/vo/ActivityUpdateDishVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "管理后台 - 活动用餐桌子配置新增/修改 Request VO") +@Data +public class ActivityUpdateDishVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21273") + private List ids; + + @Schema(description = "套餐菜品") + private String dish; + +} \ 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/activityuser/ActivityUserController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/ActivityUserController.java new file mode 100644 index 00000000..072eb2e4 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/ActivityUserController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityuser; + +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.activityuser.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.activityuser.ActivityUserDO; +import cn.iocoder.yudao.module.member.service.activityuser.ActivityUserService; + +@Tag(name = "管理后台 - 活动参加人员") +@RestController +@RequestMapping("/member/activity-user") +@Validated +public class ActivityUserController { + + @Resource + private ActivityUserService activityUserService; + + @PostMapping("/create") + @Operation(summary = "创建活动参加人员") + @PreAuthorize("@ss.hasPermission('member:activity-user:create')") + public CommonResult createActivityUser(@Valid @RequestBody ActivityUserSaveReqVO createReqVO) { + return success(activityUserService.createActivityUser(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新活动参加人员") + @PreAuthorize("@ss.hasPermission('member:activity-user:update')") + public CommonResult updateActivityUser(@Valid @RequestBody ActivityUserSaveReqVO updateReqVO) { + activityUserService.updateActivityUser(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除活动参加人员") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:activity-user:delete')") + public CommonResult deleteActivityUser(@RequestParam("id") Long id) { + activityUserService.deleteActivityUser(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得活动参加人员") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:activity-user:query')") + public CommonResult getActivityUser(@RequestParam("id") Long id) { + ActivityUserDO activityUser = activityUserService.getActivityUser(id); + return success(BeanUtils.toBean(activityUser, ActivityUserRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得活动参加人员分页") + @PreAuthorize("@ss.hasPermission('member:activity-user:query')") + public CommonResult> getActivityUserPage(@Valid ActivityUserPageReqVO pageReqVO) { + PageResult pageResult = activityUserService.getActivityUserPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityUserRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出活动参加人员 Excel") + @PreAuthorize("@ss.hasPermission('member:activity-user:export')") + @OperateLog(type = EXPORT) + public void exportActivityUserExcel(@Valid ActivityUserPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityUserService.getActivityUserPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "活动参加人员.xls", "数据", ActivityUserRespVO.class, + BeanUtils.toBean(list, ActivityUserRespVO.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/activityuser/vo/ActivityUserCountVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserCountVO.java new file mode 100644 index 00000000..c7a704ce --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserCountVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityuser.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 活动参加人员 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ActivityUserCountVO { + + + @Schema(description = "活动id") + private Long activityId; + + @Schema(description = "参加人数") + private Integer applyNum = 0; + +} \ 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/activityuser/vo/ActivityUserPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserPageReqVO.java new file mode 100644 index 00000000..a78ce90a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityuser.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 ActivityUserPageReqVO extends PageParam { + + @Schema(description = "活动id", example = "12749") + private Long activityId; + + @Schema(description = "用户id", example = "6186") + private Long userId; + + @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/activityuser/vo/ActivityUserRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserRespVO.java new file mode 100644 index 00000000..29911e75 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserRespVO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityuser.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 ActivityUserRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17804") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12749") + @ExcelProperty("活动id") + private Long activityId; + + @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6186") + @ExcelProperty("用户id") + private Long userId; + + @Schema(description = "电话") + @ExcelProperty("电话") + private String mobile; + + private String nickName; + + private String avatar; + + @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/activityuser/vo/ActivityUserSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserSaveReqVO.java new file mode 100644 index 00000000..4befc252 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/activityuser/vo/ActivityUserSaveReqVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.member.controller.admin.activityuser.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 ActivityUserSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17804") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12749") + @NotNull(message = "活动id不能为空") + private Long activityId; + + @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6186") + @NotNull(message = "用户id不能为空") + private Long userId; + + @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/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 new file mode 100644 index 00000000..101a47db --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/AppActivityDrawController.java @@ -0,0 +1,301 @@ +package cn.iocoder.yudao.module.member.controller.app.activity; + +import cn.hutool.json.JSONUtil; +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.idempotent.core.annotation.Idempotent; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishRespVO; +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.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.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.activitypay.ActivityPayDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant.ActivityRestaurantDO; +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.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.util.QRCodeWithJWTUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.time.LocalDate; +import java.util.List; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; + + +@Tag(name = "用户 APP - 活动") +@RestController +@RequestMapping("/member/activity") +@Validated +public class AppActivityDrawController { + + @Resource + private ActivityService activityService; + + @Resource + private ActivityAwardsService activityAwardsService; + + @Resource + private ActivityAwardsUserService activityAwardsUserService; + + @Resource + private ActivityUserService activityUserService; + + @Resource + private ActivityTableService activityTableService; + + @Resource + private ActivityPayService activityPayService; + + @Resource + private ActivityRestaurantService activityRestaurantService; + + @Resource + private ActivityTableDishService activityTableDishService; + + @Resource + private ActivityAddDishService activityAddDishService; + + @GetMapping("/manage/page") + @Operation(summary = "管理员获取当天活动") + public CommonResult> getTodayActivityPage(@Valid ActivityPageReqVO pageReqVO) { + PageResult pageResult = activityService.getActivityPage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/user/page") + @Operation(summary = "用户获取所有活动") + public CommonResult> getAllActivityPage(@Valid ActivityPageReqVO pageReqVO) { + PageResult pageResult = activityService.getUserActivityPage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/userRecord/page") + @Operation(summary = "用户获取自己的活动记录") + public CommonResult> getUserRecordActivityPage(@Valid ActivityUserPageReqVO pageReqVO) { + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + pageReqVO.setUserId(loginUserId); + return success(activityUserService.getUserRecordPage(pageReqVO)); + } + + @GetMapping("/prizeDraw") + @Operation(summary = "抽奖") + @Idempotent(timeout = 10) + public CommonResult> prizeDraw(@Valid AppActivityPrizeDrawVO drawVO) { + return success( activityService.prizeDraw(drawVO)); + } + + @GetMapping("/awardsUser/page") + @Operation(summary = "中奖人员分页") + public CommonResult> getActivityAwardsUserPage(@Valid ActivityAwardsUserPageReqVO pageReqVO) { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + PageResult pageResult = activityAwardsUserService.getActivityAwardsUserPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ActivityAwardsUserRespVO.class)); + } + + @PostMapping("/user/apply") + @Operation(summary = "用户报名") + @Idempotent(timeout = 10) + public CommonResult userApply(@Valid @RequestBody AppUserApplyVO appUserApplyVO) { + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + appUserApplyVO.setUserId(loginUserId); + return success( activityUserService.userApply(appUserApplyVO)); + } + + + @GetMapping("/manage/get") + @Operation(summary = "管理员获得活动详情") + public CommonResult getActivity(@RequestParam("id") Long id) { + ActivityDO activity = activityService.getActivity(id); + ActivityRespVO bean = BeanUtils.toBean(activity, ActivityRespVO.class); + return success(bean); + } + + @GetMapping("/user/activity") + @Operation(summary = "用户获得活动详情(记录)") + public CommonResult getUserActivity(@RequestParam("id") Long id) { + AppActivityRespVO activity = activityService.getUserActivity(id,SecurityFrameworkUtils.getLoginUserId()); + return success(activity); + } + + @GetMapping("/user/activity/applyInfo") + @Operation(summary = "用户获得活动详情(报名)") + public CommonResult getUserActivityApplyInfo(@RequestParam("id") Long id) { + AppActivityRespVO activity = activityService.getUserActivityApplyInfo(id,SecurityFrameworkUtils.getLoginUserId()); + return success(activity); + } + + + @GetMapping("/user/activityList") + @Operation(summary = "用户获得可订餐的活动") + public CommonResult> getUserActivityList() { + return success(activityService.getReservatList()); + } + + @GetMapping("/user/activityList/page") + @Operation(summary = "用户获得可订餐的活动分页") + public CommonResult> getActivityReservePage(@Valid ActivityPageReqVO pageReqVO) { + PageResult pageResult = activityService.getActivityReservePage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/user/table") + @Operation(summary = "用户获取已订餐桌号") + public CommonResult> getUserTableList(@RequestParam("activityId") Long activityId,@RequestParam("time") String time) { + return success(BeanUtils.toBean(activityTableService.getListByActivityIdAndTime(activityId,time), AppActivityTableRespVO.class)); + } + + + @PostMapping("/user/check") + @Operation(summary = "用户订餐桌号检测") + public CommonResult userTableCheck(@RequestBody AppCheckVO vo) { + return success(activityTableService.userTableCheck(vo)); + } + + @PutMapping("/user/unbind") + @Operation(summary = "支付失败取消用户餐桌绑定") + public CommonResult userTableUnbind(@RequestBody AppUnbindVO vo) { + return success(activityTableService.userTableUnbind(vo)); + } + + @GetMapping("/qrCode") + @Operation(summary = "获取核销二维码(抽奖)") + public CommonResult getQrCode(@RequestParam("activityAwardsUserId") Long activityAwardsUserId) { + + ActivityAwardsUserDO activityAwardsUserDO = activityAwardsUserService.getActivityAwardsUser(activityAwardsUserId); + if(!"0".equals(activityAwardsUserDO.getAwardsStatus())){ + throw exception(ACTIVITY_AWARDS_USER_NOT_EFFECTIVE); + } + ActivityDO activity = activityService.getActivity(activityAwardsUserDO.getActivityId()); + ActivityAwardsDO activityAwards = activityAwardsService.getActivityAwards(activityAwardsUserDO.getAwardsId()); + + + AppQrCodeVO appQrCodeVO = new AppQrCodeVO(); + appQrCodeVO.setActivityAwardsUserId(activityAwardsUserId); + appQrCodeVO.setNickName(activityAwardsUserDO.getNickName()); + appQrCodeVO.setMobile(activityAwardsUserDO.getMobile()); + appQrCodeVO.setPrize(activityAwards.getPrize()); + appQrCodeVO.setActivityName(activity.getActivityName()); + appQrCodeVO.setType("1"); + + String qrCode = QRCodeWithJWTUtil.generateQRCode(JSONUtil.toJsonStr(appQrCodeVO), 350, 350, null);// 生 + return success(qrCode); + } + + @PutMapping("/cancel") + @Operation(summary = "核销(抽奖)") + public CommonResult cancel(@RequestBody AppCancelVO vo) { + return success(activityAwardsUserService.cancel(vo)); + } + + @GetMapping("/manage/applyUserList") + @Operation(summary = "报名人员列表") + public CommonResult> applyUserList(@RequestParam("activityId") Long activityId) { + return success(activityUserService.applyUserList(activityId)); + } + + @GetMapping("/awardsList") + @Operation(summary = "获得活动奖项列表") + public CommonResult> getActivityAwardsList(@RequestParam("activityId") Long activityId) { + List list = activityAwardsService.getListByActivity(activityId); + return success(BeanUtils.toBean(list, ActivityAwardsRespVO.class)); + } + + @GetMapping("/user/pay/page") + @Operation(summary = "用户付款记录分页") + public CommonResult> getUserActivityPayPage(@Valid ActivityPayPageReqVO pageReqVO) { + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + pageReqVO.setUserId(loginUserId); + PageResult pageResult = activityPayService.getUserActivityPayPage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/user/activity/reserveInfo") + @Operation(summary = "用户获得订餐活动详情") + public CommonResult getUserActivityReserveInfo(@RequestParam("id") Long id) { + ActivityDO activity = activityService.getActivity(id); + AppActivityRespVO bean = BeanUtils.toBean(activity, AppActivityRespVO.class); + ActivityRestaurantDO activityRestaurantDO = activityRestaurantService.getByActivityId(id); + bean.setActivityRestaurantSaveDto(BeanUtils.toBean(activityRestaurantDO, ActivityRestaurantRespVO.class)); + return success(bean); + } + + @GetMapping("/reserveQrCode") + @Operation(summary = "获取核销二维码(订餐)") + public CommonResult getReserveQrCode(@RequestParam("activityPayId") Long activityPayId) { + ActivityPayDO activityPay = activityPayService.getActivityPay(activityPayId); + if(!"0".equals(activityPay.getStatus())){ + throw exception(ACTIVITY_PAY_USE); + } + //获取当天日期 + LocalDate now = LocalDate.now(); + //比较日期是否相等 + if(! now.isEqual(activityPay.getReserveTime())){ + throw exception(ACTIVITY_PAY_EXPIRE); + } + + ActivityDO activity = activityService.getActivity(activityPay.getActivityId()); + + AppReserveQrCodeVO appReserveQrCodeVO = new AppReserveQrCodeVO(); + appReserveQrCodeVO.setActivityPayId(activityPayId); + appReserveQrCodeVO.setNickName(activityPay.getNickName()); + appReserveQrCodeVO.setMobile(activityPay.getMobile()); + appReserveQrCodeVO.setActivityName(activity.getActivityName()); + appReserveQrCodeVO.setSerialNumbers(activityPay.getSerialNumbers()); + appReserveQrCodeVO.setType("2"); + String qrCode = QRCodeWithJWTUtil.generateQRCode(JSONUtil.toJsonStr(appReserveQrCodeVO), 350, 350, null);// 生 + return success(qrCode); + + } + + @PutMapping("/reserveCancel") + @Operation(summary = "核销(订餐)") + public CommonResult reserveCancel(@RequestBody AppCancelVO vo) { + return success(activityPayService.reserveCancel(vo)); + } + + @GetMapping("/tableList") + @Operation(summary = "获得所有活动用餐桌子") + public CommonResult> getActivityTableDishList(@Valid ActivityTableDishPageReqVO pageReqVO) { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityTableDishService.getActivityTableDishPage(pageReqVO).getList(); + return success(BeanUtils.toBean(list, ActivityTableDishRespVO.class)); + } + + @GetMapping("/addDishList") + @Operation(summary = "获得活动用餐桌子加菜列表") + public CommonResult> getActivityAddDishPage(@Valid ActivityAddDishPageReqVO pageReqVO) { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = activityAddDishService.getActivityAddDishPage(pageReqVO).getList(); + return success(BeanUtils.toBean(list, ActivityAddDishRespVO.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/app/activity/vo/AppActivityPayRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityPayRespVO.java new file mode 100644 index 00000000..3f361b9b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityPayRespVO.java @@ -0,0 +1,50 @@ +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.LocalDate; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 活动付款 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AppActivityPayRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24970") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27391") + @ExcelProperty("活动id") + private Long activityId; + + private String activityName; + + @Schema(description = "桌号") + @ExcelProperty("桌号") + private String serialNumbers; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "7717") + @ExcelProperty("价格") + private BigDecimal price; + + @Schema(description = "用户id", example = "5313") + @ExcelProperty("用户id") + private Long userId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + private String status; + + private LocalDate reserveTime; + + private String dish; + + private String diningPeriod; +} \ 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/AppActivityPrizeDrawVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityPrizeDrawVO.java new file mode 100644 index 00000000..122b5a5c --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityPrizeDrawVO.java @@ -0,0 +1,20 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +@Data +public class AppActivityPrizeDrawVO { + + + @Schema(description = "奖项Id") + @NotNull(message = "奖项不能为空") + private Long awardsId; + + @Schema(description = "抽奖人数") + @Min(value = 1, message = "数值不能小于 1") + private Integer num; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityRespVO.java new file mode 100644 index 00000000..6fa367df --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityRespVO.java @@ -0,0 +1,83 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantRespVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO; +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; +import java.util.List; + +@Schema(description = "管理后台 - 活动 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AppActivityRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29158") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("活动名称") + private String activityName; + + @Schema(description = "活动开始时间") + @ExcelProperty("活动开始时间") + private LocalDateTime startTime; + + @Schema(description = "活动结束时间") + @ExcelProperty("活动结束时间") + private LocalDateTime endTime; + + @Schema(description = "描述", example = "你猜") + @ExcelProperty("描述") + private String description; + + @Schema(description = "封面图") + @ExcelProperty("封面图") + private String img; + + @Schema(description = "地点") + @ExcelProperty("地点") + private String location; + + @Schema(description = "主办方") + @ExcelProperty("主办方") + private String sponsor; + + @Schema(description = "可抽奖次数") + @ExcelProperty("可抽奖次数") + private Integer lotteryNum; + + @Schema(description = "用餐状态,0-禁用,1-启用 ", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("用餐状态,0-禁用,1-启用 ") + private String reservationStatus; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "报名人数") + private Integer applyNum; + + @Schema(description = "中奖人数") + private Integer awardsNum; + + @Schema(description = "预定人数") + private Integer reserveNum; + + @Schema(description = "收入") + private BigDecimal income; + + @Schema(description = "是否报名") + private Boolean isApply; + + private ActivityRestaurantRespVO activityRestaurantSaveDto; + + private List awards; + + private List awardList; +} \ 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/AppActivityTableRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityTableRespVO.java new file mode 100644 index 00000000..b3a5df5f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityTableRespVO.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.LocalDate; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 活动用餐桌子 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AppActivityTableRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5590") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8513") + @ExcelProperty("活动id") + private Long activityId; + + @Schema(description = "序号") + @ExcelProperty("序号") + private Integer serialNumber; + + @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "515") + @ExcelProperty("价格") + private BigDecimal price; + + @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "13832") + @ExcelProperty("用户id") + private Long userId; + + @Schema(description = "电话") + @ExcelProperty("电话") + private String mobile; + + + private String nickName; + + private String avatar; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + private LocalDate reserveTime; +} \ 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/AppActivityUserRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityUserRespVO.java new file mode 100644 index 00000000..56ea3eb0 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppActivityUserRespVO.java @@ -0,0 +1,39 @@ +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.time.LocalDateTime; + +@Schema(description = "管理后台 - 活动参加人员 Response VO") +@Data +@ExcelIgnoreUnannotated +public class AppActivityUserRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17804") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12749") + @ExcelProperty("活动id") + private Long activityId; + + @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "6186") + @ExcelProperty("用户id") + private Long userId; + + @Schema(description = "电话") + @ExcelProperty("电话") + private String mobile; + + private String nickName; + + private String avatar; + + @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/app/activity/vo/AppCancelVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppCancelVO.java new file mode 100644 index 00000000..a7947d1b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppCancelVO.java @@ -0,0 +1,11 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + +import lombok.Data; + +@Data +public class AppCancelVO { + + private Long activityAwardsUserId; + + private Long activityPayId; +} 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 new file mode 100644 index 00000000..8a72e90a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppCheckVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class AppCheckVO { + + + private List serialNumbers; + + private String time; + + private Long activityId; + + 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/AppQrCodeVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppQrCodeVO.java new file mode 100644 index 00000000..25b31a0c --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppQrCodeVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + +import lombok.Data; + +@Data +public class AppQrCodeVO { + + private Long activityAwardsUserId; + + private String nickName; + + private String mobile; + + private String prize; + + private String activityName; + + private String type; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppReserveQrCodeVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppReserveQrCodeVO.java new file mode 100644 index 00000000..36e94197 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppReserveQrCodeVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + +import lombok.Data; + +@Data +public class AppReserveQrCodeVO { + + private Long activityPayId; + + private String mobile; + + private String serialNumbers; + + private String activityName; + + private String nickName; + + private String type; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUnbindVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUnbindVO.java new file mode 100644 index 00000000..6f201a60 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUnbindVO.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class AppUnbindVO { + + private List serialNumbers; + + private String time; + + private Long activityId; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUserApplyVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUserApplyVO.java new file mode 100644 index 00000000..ea9ace5d --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUserApplyVO.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class AppUserApplyVO { + + + @Schema(description = "活动id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12749") + @NotNull(message = "活动id不能为空") + private Long activityId; + + @Schema(description = "用户Id") + private Long userId; + + @Schema(description = "电话") + @NotBlank(message = "用户电话不能为空") + private String mobile; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUserAwardsVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUserAwardsVO.java new file mode 100644 index 00000000..920bf62d --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/activity/vo/AppUserAwardsVO.java @@ -0,0 +1,16 @@ +package cn.iocoder.yudao.module.member.controller.app.activity.vo; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class AppUserAwardsVO { + + private Long id; + private String awardsName; + private String prize; + private String awardsStatus; + private LocalDateTime createTime; + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activity/ActivityDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activity/ActivityDO.java new file mode 100644 index 00000000..6770788b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activity/ActivityDO.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activity; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +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") +@KeySequence("member_activity_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 活动名称 + */ + private String activityName; + /** + * 活动开始时间 + */ + private LocalDateTime startTime; + /** + * 活动结束时间 + */ + private LocalDateTime endTime; + /** + * 描述 + */ + private String description; + /** + * 封面图 + */ + private String img; + /** + * 地点 + */ + private String location; + /** + * 主办方 + */ + private String sponsor; + /** + * 可抽奖次数 + */ + private Integer lotteryNum; + /** + * 用餐状态,0-禁用,1-启用 + */ + private String reservationStatus; + +} \ 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/activityadddish/ActivityAddDishDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityadddish/ActivityAddDishDO.java new file mode 100644 index 00000000..9e7cf1c8 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityadddish/ActivityAddDishDO.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activityadddish; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +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_add_dish") +@KeySequence("member_activity_add_dish_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityAddDishDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 桌子 + */ + private Long tableDishId; + /** + * 序号 + */ + private Integer serialNumber; + /** + * 菜名 + */ + private String dishName; + /** + * 菜品价格 + */ + private BigDecimal dishPrice; + /** + * 菜品图片 + */ + private String dishImg; + +} \ 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/activityawards/ActivityAwardsDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityawards/ActivityAwardsDO.java new file mode 100644 index 00000000..4b086b76 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityawards/ActivityAwardsDO.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activityawards; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +/** + * 活动奖项 DO + * + * @author 我是秦俊旗 + */ +@TableName("member_activity_awards") +@KeySequence("member_activity_awards_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityAwardsDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 活动id + */ + private Long activityId; + /** + * 奖项名称 + */ + private String awardsName; + + /** + * 限制类型(1-整个活动,2-单个奖项,3-无限制) + */ + private String limitType; + /** + * 奖项人数 + */ + @TableField(updateStrategy = FieldStrategy.ALWAYS) + private Integer awardsNum; + /** + * 奖品 + */ + private String prize; + /** + * 排序 + */ + private Integer sortNum; + +} \ 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/activityawardsuser/ActivityAwardsUserDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityawardsuser/ActivityAwardsUserDO.java new file mode 100644 index 00000000..9a95ab46 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityawardsuser/ActivityAwardsUserDO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser; + +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.*; + +/** + * 活动中奖人员 DO + * + * @author 我是秦俊旗 + */ +@TableName("member_activity_awards_user") +@KeySequence("member_activity_awards_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityAwardsUserDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 活动id + */ + private Long activityId; + /** + * 用户id + */ + private Long userId; + + private String nickName; + + private String avatar; + + /** + * 领奖状态(0-未领奖,1-已领奖,2-已过期) + */ + private String awardsStatus; + + /** + * 电话 + */ + private String mobile; + /** + * 奖品id + */ + private Long awardsId; + +} \ 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 new file mode 100644 index 00000000..9ee9a9a9 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitypay/ActivityPayDO.java @@ -0,0 +1,61 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activitypay; + +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; +import java.time.LocalDate; + +/** + * 活动付款 DO + * + * @author 我是秦俊旗 + */ +@TableName("member_activity_pay") +@KeySequence("member_activity_pay_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityPayDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 活动id + */ + private Long activityId; + /** + * 桌号 + */ + private String serialNumbers; + /** + * 价格 + */ + private BigDecimal price; + /** + * 用户id + */ + private Long userId; + + + private String status; + + private LocalDate reserveTime; + + private String nickName; + + private String mobile; + + private String dish; + + private String diningPeriod; +} \ 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/activitypaytable/ActivityPayTableDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitypaytable/ActivityPayTableDO.java new file mode 100644 index 00000000..953921d5 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitypaytable/ActivityPayTableDO.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import com.baomidou.mybatisplus.annotation.*; +import lombok.*; + +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * 活动付款 DO + * + * @author 我是秦俊旗 + */ +@TableName("member_activity_pay_table") +@KeySequence("member_activity_pay_table_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityPayTableDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 活动id + */ + private Long activityId; + /** + * 桌号 + */ + private String serialNumbers; + /** + * 价格 + */ + private BigDecimal price; + /** + * 用户id + */ + private Long userId; + + /** + * 预定时间 + */ + private LocalDate reserveTime; + + @TableField(value = "sum(price)",insertStrategy = FieldStrategy.NEVER,updateStrategy = FieldStrategy.NEVER) + private BigDecimal allPrice; + + private String nickName; + + 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/activityrestaurant/ActivityRestaurantDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityrestaurant/ActivityRestaurantDO.java new file mode 100644 index 00000000..543fae41 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityrestaurant/ActivityRestaurantDO.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +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_restaurant") +@KeySequence("member_activity_restaurant_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityRestaurantDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 活动id + */ + private Long activityId; + /** + * 总桌数 + */ + private Integer totalTable; + /** + * 每桌人数 + */ + private Integer tableNum; + /** + * 价格 + */ + private BigDecimal price; + /** + * 菜谱图片 + */ + private String dishUrl; + /** + * 描述 + */ + private String description; + +} \ 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/activitytable/ActivityTableDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitytable/ActivityTableDO.java new file mode 100644 index 00000000..e6610086 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitytable/ActivityTableDO.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activitytable; + +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; +import java.time.LocalDate; + +/** + * 活动用餐桌子 DO + * + * @author 我是秦俊旗 + */ +@TableName("member_activity_table") +@KeySequence("member_activity_table_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityTableDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 活动id + */ + private Long activityId; + /** + * 序号 + */ + private Integer serialNumber; + /** + * 价格 + */ + private BigDecimal price; + /** + * 用户id + */ + private Long userId; + /** + * 电话 + */ + private String mobile; + + private String nickName; + + private String avatar; + + private LocalDate reserveTime; + +} \ 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 new file mode 100644 index 00000000..a360695e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activitytabledish/ActivityTableDishDO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activitytabledish; + +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_table_dish") +@KeySequence("member_activity_table_dish_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityTableDishDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 活动id + */ + private Long activityId; + /** + * 序号 + */ + private Integer serialNumber; + /** + * 价格 + */ + private BigDecimal price; + /** + * 套餐菜品 + */ + private String dish; + +} \ 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/activityuser/ActivityUserDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityuser/ActivityUserDO.java new file mode 100644 index 00000000..644fea7b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/activityuser/ActivityUserDO.java @@ -0,0 +1,45 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.activityuser; + +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.*; + +/** + * 活动参加人员 DO + * + * @author 我是秦俊旗 + */ +@TableName("member_activity_user") +@KeySequence("member_activity_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ActivityUserDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 活动id + */ + private Long activityId; + /** + * 用户id + */ + private Long userId; + /** + * 电话 + */ + private String mobile; + + private String nickName; + + private String avatar; +} \ 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/activity/ActivityMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activity/ActivityMapper.java new file mode 100644 index 00000000..7c229a87 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activity/ActivityMapper.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activity; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityPageReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 活动 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityMapper extends BaseMapperX { + + default PageResult selectPage(ActivityPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ActivityDO::getActivityName, reqVO.getActivityName()) + .leIfPresent(ActivityDO::getStartTime, reqVO.getStartTime()) + .geIfPresent(ActivityDO::getEndTime, reqVO.getStartTime()) + .eqIfPresent(ActivityDO::getDescription, reqVO.getDescription()) + .eqIfPresent(ActivityDO::getImg, reqVO.getImg()) + .eqIfPresent(ActivityDO::getLocation, reqVO.getLocation()) + .eqIfPresent(ActivityDO::getSponsor, reqVO.getSponsor()) + .eqIfPresent(ActivityDO::getLotteryNum, reqVO.getLotteryNum()) + .eqIfPresent(ActivityDO::getReservationStatus, reqVO.getReservationStatus()) + .betweenIfPresent(ActivityDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ActivityDO::getId)); + } + + default PageResult selectPageApp(ActivityPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ActivityDO::getActivityName, reqVO.getActivityName()) + .leIfPresent(ActivityDO::getStartTime, reqVO.getStartTime()) + .geIfPresent(ActivityDO::getEndTime, reqVO.getStartTime()) + .eqIfPresent(ActivityDO::getDescription, reqVO.getDescription()) + .eqIfPresent(ActivityDO::getImg, reqVO.getImg()) + .eqIfPresent(ActivityDO::getLocation, reqVO.getLocation()) + .eqIfPresent(ActivityDO::getSponsor, reqVO.getSponsor()) + .eqIfPresent(ActivityDO::getLotteryNum, reqVO.getLotteryNum()) + .eqIfPresent(ActivityDO::getReservationStatus, reqVO.getReservationStatus()) + .betweenIfPresent(ActivityDO::getCreateTime, reqVO.getCreateTime()) + .last("ORDER BY " + + " CASE " + + " WHEN start_time <= NOW() AND end_time >= NOW() THEN 0 " + + " ELSE 1 " + + " END," + + " end_time ASC ")); + } +} \ 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/activityadddish/ActivityAddDishMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityadddish/ActivityAddDishMapper.java new file mode 100644 index 00000000..37a0036b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityadddish/ActivityAddDishMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activityadddish; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishPageReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityadddish.ActivityAddDishDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 活动用餐桌子加菜 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityAddDishMapper extends BaseMapperX { + + default PageResult selectPage(ActivityAddDishPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ActivityAddDishDO::getTableDishId, reqVO.getTableDishId()) + .eqIfPresent(ActivityAddDishDO::getSerialNumber, reqVO.getSerialNumber()) + .likeIfPresent(ActivityAddDishDO::getDishName, reqVO.getDishName()) + .eqIfPresent(ActivityAddDishDO::getDishPrice, reqVO.getDishPrice()) + .eqIfPresent(ActivityAddDishDO::getDishImg, reqVO.getDishImg()) + .betweenIfPresent(ActivityAddDishDO::getCreateTime, reqVO.getCreateTime()) + .inIfPresent(ActivityAddDishDO::getTableDishId, reqVO.getTableDishIds()) + .orderByDesc(ActivityAddDishDO::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/activityawards/ActivityAwardsMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityawards/ActivityAwardsMapper.java new file mode 100644 index 00000000..1bb4aef1 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityawards/ActivityAwardsMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activityawards; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsPageReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 活动奖项 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityAwardsMapper extends BaseMapperX { + + default PageResult selectPage(ActivityAwardsPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ActivityAwardsDO::getActivityId, reqVO.getActivityId()) + .likeIfPresent(ActivityAwardsDO::getAwardsName, reqVO.getAwardsName()) + .eqIfPresent(ActivityAwardsDO::getAwardsNum, reqVO.getAwardsNum()) + .eqIfPresent(ActivityAwardsDO::getPrize, reqVO.getPrize()) + .eqIfPresent(ActivityAwardsDO::getSortNum, reqVO.getSortNum()) + .betweenIfPresent(ActivityAwardsDO::getCreateTime, reqVO.getCreateTime()) + .orderByAsc(ActivityAwardsDO::getSortNum)); + } + +} \ 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/activityawardsuser/ActivityAwardsUserMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityawardsuser/ActivityAwardsUserMapper.java new file mode 100644 index 00000000..2214858e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityawardsuser/ActivityAwardsUserMapper.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activityawardsuser; + +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserCountVO; +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.dal.dataobject.activityawards.ActivityAwardsDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 活动中奖人员 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityAwardsUserMapper extends BaseMapperX { + + default PageResult selectPage(ActivityAwardsUserPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ActivityAwardsUserDO::getActivityId, reqVO.getActivityId()) + .eqIfPresent(ActivityAwardsUserDO::getUserId, reqVO.getUserId()) + .eqIfPresent(ActivityAwardsUserDO::getMobile, reqVO.getMobile()) + .eqIfPresent(ActivityAwardsUserDO::getAwardsId, reqVO.getAwardsId()) + .betweenIfPresent(ActivityAwardsUserDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ActivityAwardsUserDO::getId)); + } + + List countByActivityIds(@Param("activityIds") List activityIds); + + default PageResult selectJoinPage(ActivityAwardsUserPageReqVO reqVO) { + Page activityAwardsUserRespVOPage = selectJoinPage(new Page<>(reqVO.getPageNo(), reqVO.getPageSize()), ActivityAwardsUserRespVO.class, + new MPJLambdaWrapper() + .selectAll(ActivityAwardsUserDO.class) + .select(ActivityAwardsDO::getAwardsName, ActivityAwardsDO::getPrize) + .leftJoin(ActivityAwardsDO.class, ActivityAwardsDO::getId, ActivityAwardsUserDO::getAwardsId) + .eq(reqVO.getActivityId() != null, ActivityAwardsUserDO::getActivityId, reqVO.getActivityId()) + .eq(reqVO.getAwardsId() != null, ActivityAwardsUserDO::getAwardsId, reqVO.getAwardsId()) + .eq(StrUtil.isNotBlank(reqVO.getAwardsStatus()), ActivityAwardsUserDO::getAwardsStatus,reqVO.getAwardsStatus()) + .eq(StrUtil.isNotBlank(reqVO.getMobile()), ActivityAwardsUserDO::getMobile, reqVO.getMobile()) + .orderByAsc(ActivityAwardsDO::getSortNum) + ); + return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal()); + } + +} \ 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/activitypay/ActivityPayMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitypay/ActivityPayMapper.java new file mode 100644 index 00000000..64970c45 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitypay/ActivityPayMapper.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activitypay; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 活动付款 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityPayMapper extends BaseMapperX { + + default PageResult selectPage(ActivityPayPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ActivityPayDO::getActivityId, reqVO.getActivityId()) + .eqIfPresent(ActivityPayDO::getSerialNumbers, reqVO.getSerialNumbers()) + .eqIfPresent(ActivityPayDO::getPrice, reqVO.getPrice()) + .eqIfPresent(ActivityPayDO::getUserId, reqVO.getUserId()) + .betweenIfPresent(ActivityPayDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ActivityPayDO::getId)); + } + + + List countByActivityIds(@Param("activityIds") List activityIds); + +} \ 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/activitypaytable/ActivityPayTableMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitypaytable/ActivityPayTableMapper.java new file mode 100644 index 00000000..ce59eae7 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitypaytable/ActivityPayTableMapper.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activitypaytable; + +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.activitypaytable.ActivityPayTableDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.*; + +/** + * 活动付款 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityPayTableMapper extends BaseMapperX { + + default PageResult selectPage(ActivityPayTablePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ActivityPayTableDO::getActivityId, reqVO.getActivityId()) + .eqIfPresent(ActivityPayTableDO::getSerialNumbers, reqVO.getSerialNumbers()) + .eqIfPresent(ActivityPayTableDO::getPrice, reqVO.getPrice()) + .eqIfPresent(ActivityPayTableDO::getUserId, reqVO.getUserId()) + .betweenIfPresent(ActivityPayTableDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ActivityPayTableDO::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/activityrestaurant/ActivityRestaurantMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityrestaurant/ActivityRestaurantMapper.java new file mode 100644 index 00000000..0f167186 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityrestaurant/ActivityRestaurantMapper.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activityrestaurant; + +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.activityrestaurant.ActivityRestaurantDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.*; + +/** + * 活动用餐 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityRestaurantMapper extends BaseMapperX { + + default PageResult selectPage(ActivityRestaurantPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ActivityRestaurantDO::getActivityId, reqVO.getActivityId()) + .eqIfPresent(ActivityRestaurantDO::getTotalTable, reqVO.getTotalTable()) + .eqIfPresent(ActivityRestaurantDO::getTableNum, reqVO.getTableNum()) + .eqIfPresent(ActivityRestaurantDO::getPrice, reqVO.getPrice()) + .eqIfPresent(ActivityRestaurantDO::getDishUrl, reqVO.getDishUrl()) + .eqIfPresent(ActivityRestaurantDO::getDescription, reqVO.getDescription()) + .betweenIfPresent(ActivityRestaurantDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ActivityRestaurantDO::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 new file mode 100644 index 00000000..5a2f8a5b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytable/ActivityTableMapper.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activitytable; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTablePageReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitytable.ActivityTableDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 活动用餐桌子 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityTableMapper extends BaseMapperX { + + default PageResult selectPage(ActivityTablePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ActivityTableDO::getActivityId, reqVO.getActivityId()) + .eqIfPresent(ActivityTableDO::getSerialNumber, reqVO.getSerialNumber()) + .eqIfPresent(ActivityTableDO::getPrice, reqVO.getPrice()) + .eqIfPresent(ActivityTableDO::getUserId, reqVO.getUserId()) + .eqIfPresent(ActivityTableDO::getMobile, reqVO.getMobile()) + .betweenIfPresent(ActivityTableDO::getCreateTime, reqVO.getCreateTime()) + .isNotNull(reqVO.getIsReserve(),ActivityTableDO::getUserId) + .orderByDesc(ActivityTableDO::getId)); + } + + List countByActivityIds(@Param("activityIds") List activityIds); + + + void deleteByActivityId(@Param("activityId")Long 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/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 new file mode 100644 index 00000000..22d59ced --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activitytabledish/ActivityTableDishMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activitytabledish; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishPageReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitytabledish.ActivityTableDishDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 活动用餐桌子配置 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityTableDishMapper extends BaseMapperX { + + default PageResult selectPage(ActivityTableDishPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ActivityTableDishDO::getActivityId, reqVO.getActivityId()) + .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()) + .orderByAsc(ActivityTableDishDO::getSerialNumber)); + } + +} \ 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/activityuser/ActivityUserMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityuser/ActivityUserMapper.java new file mode 100644 index 00000000..b3ff938d --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/activityuser/ActivityUserMapper.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.member.dal.mysql.activityuser; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserPageReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityRespVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityuser.ActivityUserDO; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 活动参加人员 Mapper + * + * @author 我是秦俊旗 + */ +@Mapper +public interface ActivityUserMapper extends BaseMapperX { + + default PageResult selectPage(ActivityUserPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ActivityUserDO::getActivityId, reqVO.getActivityId()) + .eqIfPresent(ActivityUserDO::getUserId, reqVO.getUserId()) + .eqIfPresent(ActivityUserDO::getMobile, reqVO.getMobile()) + .betweenIfPresent(ActivityUserDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(ActivityUserDO::getId)); + } + + List countByActivityIds(@Param("activityIds") List activityIds); + + default PageResult selectUserRecordPage(ActivityUserPageReqVO reqVO) { + Page activityAwardsUserRespVOPage = selectJoinPage(new Page<>(reqVO.getPageNo(), reqVO.getPageSize()), AppActivityRespVO.class, + new MPJLambdaWrapper() + .selectAll(ActivityDO.class) + .leftJoin(ActivityDO.class, ActivityDO::getId, ActivityUserDO::getActivityId) + .eq(ActivityUserDO::getUserId, reqVO.getUserId()) + .orderByDesc(ActivityUserDO::getCreateTime) + ); + return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal()); + } +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/ActivityJob.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/ActivityJob.java new file mode 100644 index 00000000..b072baea --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/ActivityJob.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.member.job; + +import cn.hutool.core.collection.CollectionUtil; +import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; +import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; +import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO; +import cn.iocoder.yudao.module.member.service.activityawardsuser.ActivityAwardsUserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author:qjq + * @Date:2024/4/3 14:50 + */ +@Slf4j +@Component +public class ActivityJob implements JobHandler { + + + @Resource + private ActivityAwardsUserService activityAwardsUserService; + /** + * 执行任务 + * + * @param param 参数 + * @return 结果 + * @throws Exception 异常 + */ + @Override + @TenantIgnore + public String execute(String param){ + + List listByTime = activityAwardsUserService.getListByTime(); + if(CollectionUtil.isNotEmpty(listByTime)){ + for (ActivityAwardsUserDO activityAwardsUserDO : listByTime) { + activityAwardsUserDO.setAwardsStatus("2"); + } + activityAwardsUserService.updateBatch(listByTime); + } + + log.info("[execute][上一天中奖信息过期 {}条]", listByTime.size()); + return String.format("中奖信息过期 %s 条 ", listByTime.size()); + } +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/ActivityReserveJob.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/ActivityReserveJob.java new file mode 100644 index 00000000..51b5868c --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/job/ActivityReserveJob.java @@ -0,0 +1,47 @@ +package cn.iocoder.yudao.module.member.job; + +import cn.hutool.core.collection.CollectionUtil; +import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler; +import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore; +import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO; +import cn.iocoder.yudao.module.member.service.activitypay.ActivityPayService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author:qjq + * @Date:2024/4/3 14:50 + */ +@Slf4j +@Component +public class ActivityReserveJob implements JobHandler { + + + @Resource + private ActivityPayService activityPayService; + /** + * 执行任务 + * + * @param param 参数 + * @return 结果 + * @throws Exception 异常 + */ + @Override + @TenantIgnore + public String execute(String param){ + + List listByTime = activityPayService.getListByTime(); + if(CollectionUtil.isNotEmpty(listByTime)){ + for (ActivityPayDO activityPayDO : listByTime) { + activityPayDO.setStatus("2"); + } + activityPayService.updateBatch(listByTime); + } + + log.info("[execute][上一天预约信息过期 {}条]", listByTime.size()); + return String.format("预约信息过期 %s 条 ",listByTime.size()); + } +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityService.java new file mode 100644 index 00000000..5fbe62ac --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityService.java @@ -0,0 +1,79 @@ +package cn.iocoder.yudao.module.member.service.activity; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivitySaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPrizeDrawVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityRespVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 活动 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityService { + + /** + * 创建活动 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivity(@Valid ActivitySaveReqVO createReqVO); + + /** + * 更新活动 + * + * @param updateReqVO 更新信息 + */ + void updateActivity(@Valid ActivitySaveReqVO updateReqVO); + + /** + * 删除活动 + * + * @param id 编号 + */ + void deleteActivity(Long id); + + /** + * 获得活动 + * + * @param id 编号 + * @return 活动 + */ + ActivityDO getActivity(Long id); + + /** + * 获得活动分页 + * + * @param pageReqVO 分页查询 + * @return 活动分页 + */ + PageResult getActivityPage(ActivityPageReqVO pageReqVO); + + + + /** + * 获得用户活动分页 + * + */ + PageResult getUserActivityPage(ActivityPageReqVO pageReqVO); + + + List prizeDraw(@Valid AppActivityPrizeDrawVO drawVO); + + AppActivityRespVO getUserActivity(Long id,Long userId); + + AppActivityRespVO getUserActivityApplyInfo(Long id,Long userId); + + List getReservatList(); + + PageResult getActivityReservePage(ActivityPageReqVO 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/activity/ActivityServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityServiceImpl.java new file mode 100644 index 00000000..69729d17 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activity/ActivityServiceImpl.java @@ -0,0 +1,416 @@ +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.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivityRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activity.vo.ActivitySaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsListDTO; +import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantRespVO; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveDto; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserCountVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPrizeDrawVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityRespVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO; +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.activityrestaurant.ActivityRestaurantDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityuser.ActivityUserDO; +import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import cn.iocoder.yudao.module.member.dal.mysql.activity.ActivityMapper; +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.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.user.MemberUserService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + +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 ActivityServiceImpl implements ActivityService { + + @Resource + private ActivityMapper activityMapper; + + @Resource + @Lazy + private ActivityAwardsService activityAwardsService; + + @Resource + @Lazy + private ActivityUserService activityUserService; + + @Resource + @Lazy + private ActivityTableService activityTableService; + + @Resource + @Lazy + private ActivityRestaurantService activityRestaurantService; + + @Resource + @Lazy + private ActivityAwardsUserService activityAwardsUserService; + + @Resource + private MemberUserService memberUserService; + + @Resource + @Lazy + private ActivityPayService activityPayService; + @Resource + @Lazy + private ActivityTableDishService activityTableDishService; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createActivity(ActivitySaveReqVO createReqVO) { + // 插入 + ActivityDO activity = BeanUtils.toBean(createReqVO, ActivityDO.class); + activityMapper.insert(activity); + ArrayList activityAwardsDOarrayList = new ArrayList(); + for (ActivityAwardsListDTO dto : createReqVO.getActivityAwardsList()) { + ActivityAwardsDO activityAwardsDO = BeanUtils.toBean(dto, ActivityAwardsDO.class); + activityAwardsDO.setActivityId(activity.getId()); + activityAwardsDOarrayList.add(activityAwardsDO); + } + if (CollectionUtil.isNotEmpty(activityAwardsDOarrayList)) { + activityAwardsService.insertActivityAwards(activityAwardsDOarrayList); + } + if ("1".equals(createReqVO.getReservationStatus()) && createReqVO.getActivityRestaurantSaveDto() != null) { + + ActivityRestaurantSaveReqVO bean = BeanUtils.toBean(createReqVO.getActivityRestaurantSaveDto(), ActivityRestaurantSaveReqVO.class); + if (bean.getTotalTable() <= 0) { + throw exception(ACTIVITY_TABLE_ZERO); + } + bean.setActivityId(activity.getId()); + activityRestaurantService.createActivityRestaurant(bean); + activityTableDishService.createByRestaurant(bean); + } + + // 返回 + return activity.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateActivity(ActivitySaveReqVO updateReqVO) { + // 校验存在 + validateActivityExists(updateReqVO.getId()); + validateActivityTime(updateReqVO.getId()); + // 更新 + ActivityDO updateObj = BeanUtils.toBean(updateReqVO, ActivityDO.class); + + if ("1".equals(updateReqVO.getReservationStatus()) && updateReqVO.getActivityRestaurantSaveDto() != null) { + + ActivityRestaurantSaveDto activityRestaurantSaveDto = updateReqVO.getActivityRestaurantSaveDto(); + ActivityRestaurantSaveReqVO bean = BeanUtils.toBean(activityRestaurantSaveDto, ActivityRestaurantSaveReqVO.class); + if (bean.getTotalTable() <= 0) { + throw exception(ACTIVITY_TABLE_ZERO); + } + bean.setActivityId(updateObj.getId()); + if (bean.getId() != null) { +// activityTableService.deleteByActivityId(updateObj.getId()); + activityRestaurantService.updateActivityRestaurant(bean); + } else { + bean.setActivityId(updateObj.getId()); + activityRestaurantService.createActivityRestaurant(bean); + activityTableDishService.createByRestaurant(bean); + } + } + activityMapper.updateById(updateObj); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteActivity(Long id) { + // 校验存在 + validateActivityExists(id); + validateActivityTime(id); + // 删除 + activityMapper.deleteById(id); + activityAwardsService.deleteByActivityId(id); + activityRestaurantService.deleteByActivityId(id); + + } + + private void validateActivityExists(Long id) { + if (activityMapper.selectById(id) == null) { + throw exception(ACTIVITY_NOT_EXISTS); + } + } + + private void validateActivityTime(Long id) { + ActivityDO activityDO = activityMapper.selectById(id); + LocalDateTime startTime = activityDO.getStartTime(); + LocalDateTime endTime = activityDO.getEndTime(); + //现在时间再开始时间之后 + if (startTime.isBefore(LocalDateTime.now())) { + throw exception(ACTIVITY_START); + } + + } + + @Override + public ActivityDO getActivity(Long id) { + return activityMapper.selectById(id); + } + + @Override + public PageResult getActivityPage(ActivityPageReqVO pageReqVO) { + PageResult activityDOPageResult = activityMapper.selectPage(pageReqVO); + List list = activityDOPageResult.getList(); + List activityIds = list.stream().map(ActivityDO::getId).collect(Collectors.toList()); + if (CollectionUtil.isEmpty(activityIds)) { + return BeanUtils.toBean(activityDOPageResult, ActivityRespVO.class); + } + Map userCountVOMap = activityUserService.countByActivityIds(activityIds); + Map tableCountVOMap = activityTableService.countByActivityIds(activityIds); + Map awardsUserCountVOMap = activityAwardsUserService.countByActivityIds(activityIds); + Map longActivityPayCountVOMap = activityPayService.countByActivityIds(activityIds); + ArrayList activityRespVOS = new ArrayList<>(); + + for (ActivityDO activity : list) { + ActivityRespVO bean = BeanUtils.toBean(activity, ActivityRespVO.class); + bean.setApplyNum(userCountVOMap.getOrDefault(activity.getId(), new ActivityUserCountVO()).getApplyNum()); + bean.setReserveNum(tableCountVOMap.getOrDefault(activity.getId(), new ActivityTableCountVO()).getReserveNum()); + bean.setIncome((longActivityPayCountVOMap.getOrDefault(activity.getId(), new ActivityPayCountVO()).getIncome())); + bean.setAwardsNum(awardsUserCountVOMap.getOrDefault(activity.getId(), new ActivityAwardsUserCountVO()).getAwardsNum()); + activityRespVOS.add(bean); + } + return new PageResult<>(activityRespVOS, activityDOPageResult.getTotal()); + } + + @Override + public PageResult getUserActivityPage(ActivityPageReqVO pageReqVO) { + pageReqVO.setUserId(SecurityFrameworkUtils.getLoginUserId()); + PageResult activityDOPageResult = activityMapper.selectPageApp(pageReqVO); + List list = activityDOPageResult.getList(); + List activityIds = list.stream().map(ActivityDO::getId).collect(Collectors.toList()); + if (CollectionUtil.isEmpty(activityIds)) { + return BeanUtils.toBean(activityDOPageResult, ActivityRespVO.class); + } + Map userCountVOMap = activityUserService.countByActivityIds(activityIds); + List applyByActivityIds = activityUserService.isApplyByActivityIds(activityIds, pageReqVO.getUserId()); + + ArrayList activityRespVOS = new ArrayList<>(); + for (ActivityDO activity : list) { + ActivityRespVO bean = BeanUtils.toBean(activity, ActivityRespVO.class); + bean.setApplyNum(userCountVOMap.getOrDefault(activity.getId(), new ActivityUserCountVO()).getApplyNum()); + bean.setIsApply(applyByActivityIds.contains(activity.getId())); + activityRespVOS.add(bean); + } + return new PageResult<>(activityRespVOS, activityDOPageResult.getTotal()); + } + + @Override + public List prizeDraw(AppActivityPrizeDrawVO drawVO) { + + // 查询奖品 + ActivityAwardsDO activityAwards = activityAwardsService.getActivityAwards(drawVO.getAwardsId()); + + // 查询活动 + ActivityDO activityDO = activityMapper.selectById(activityAwards.getActivityId()); + + if(activityDO.getStartTime().isAfter(LocalDateTime.now())){ + throw exception(ACTIVITY_ERROR); + } + + // 查询报名用户 + List activityUserDOList = activityUserService.getUserListByActivityId(activityDO.getId()); + + //抽奖用户池 + Set drawUserPool = activityUserDOList.stream().map(ActivityUserDO::getUserId).collect(Collectors.toSet()); + + if(CollectionUtil.isEmpty(drawUserPool)){ + throw exception(ACTIVITY_NO_USER); + } + + // 查询当天中奖用户 + List activityAwardsUserDOList = activityAwardsUserService.getAwardsUserListByActivityId(activityDO.getId()); + + + //统计已中该奖项的人数 +// int count = (int) activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwards.getId())).count(); +// +// if (count + drawVO.getNum() > activityAwards.getAwardsNum()) { +// throw exception(ACTIVITY_AWARDS_EXCEED); +// } + + //查询整个活动中限制类型为整个活动(1)的奖项 + List limitTypeList = activityAwardsService.getListByActivityIdAndAwardsStatus(activityDO.getId(), "1"); + //优先排除这批中奖人员 + if(CollectionUtil.isNotEmpty(limitTypeList)){ + for (ActivityAwardsDO activityAwardsDO : limitTypeList) { + Map map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwardsDO.getId())) + .collect(Collectors.groupingBy( + ActivityAwardsUserDO::getUserId, + Collectors.counting() + )); + Integer awardsNum = activityAwardsDO.getAwardsNum(); + // 筛选出次数 大于限定次数 的用户ID,存入Set去重 + Set inconsistentUserList = map.entrySet().stream() + .filter(entry -> entry.getValue() >= awardsNum) + .map(Map.Entry::getKey) + .collect(Collectors.toSet()); + // 从抽奖用户池中移除次数大于限定次数的用户 + drawUserPool.removeAll(inconsistentUserList); + } + } + + // 获取该奖项的限制类型 + String limitType = activityAwards.getLimitType(); + + //如果是单个奖项(2)的话,需要排除该奖项次数满的 整个活动(1)的话上面已排除 无限制(3)无需排除 + if ("2".equals(limitType)){ + Map map = activityAwardsUserDOList.stream().filter(vo -> vo.getAwardsId().equals(activityAwards.getId())) + .collect(Collectors.groupingBy( + ActivityAwardsUserDO::getUserId, + Collectors.counting() + )); + + //每个人可中奖次数 + Integer awardsNum = activityAwards.getAwardsNum(); + + // 筛选出次数 大于限定次数 的用户ID,存入Set去重 + Set inconsistentUserList = map.entrySet().stream() + .filter(entry -> entry.getValue() >= awardsNum) + .map(Map.Entry::getKey) + .collect(Collectors.toSet()); + drawUserPool.removeAll(inconsistentUserList); + } + + //开始抽奖 + List longs = selectRandom(drawUserPool, drawVO.getNum()); + + //中奖人员信息 + List userList = memberUserService.getUserList(longs); + + //插入数据库 + ArrayList list = new ArrayList<>(); + for (MemberUserDO user : userList) { + ActivityAwardsUserDO activityAwardsUserDO = new ActivityAwardsUserDO(); + activityAwardsUserDO.setActivityId(activityDO.getId()); + activityAwardsUserDO.setUserId(user.getId()); + activityAwardsUserDO.setNickName(user.getNickname()); + activityAwardsUserDO.setAvatar(user.getAvatar()); + activityAwardsUserDO.setMobile(user.getMobile()); + activityAwardsUserDO.setAwardsId(activityAwards.getId()); + activityAwardsUserDO.setAwardsStatus("0"); + list.add(activityAwardsUserDO); + } + activityAwardsUserService.insertBatch(list); + return list; + } + + public static List selectRandom(Set drawUserPool, int count) { + // 校验输入 + if (drawUserPool == null || drawUserPool.isEmpty()) { + return Collections.emptyList(); + } + int total = drawUserPool.size(); + if (count >= total) { + return new ArrayList<>(drawUserPool); // 直接返回所有元素 + } + + // 转换为列表并复制,避免修改原始集合 + List list = new ArrayList<>(drawUserPool); + Random random = new Random(); + + // Fisher-Yates 洗牌算法(原地打乱) + for (int i = total - 1; i > 0; i--) { + int j = random.nextInt(i + 1); // 生成 [0, i] 之间的随机索引 + Collections.swap(list, i, j); // 交换元素,确保每个位置等概率出现 + } + + // 取前 count 个元素 + return list.subList(0, count); + } + + + @Override + public AppActivityRespVO getUserActivity(Long id,Long userId) { + ActivityDO activityDO = activityMapper.selectById(id); + if( activityDO == null){ + throw exception(ACTIVITY_NOT_EXISTS); + } + AppActivityRespVO activity = BeanUtil.toBean(activityDO, AppActivityRespVO.class); + Map userCountVOMap = activityUserService.countByActivityIds(Collections.singletonList(id)); + activity.setApplyNum(userCountVOMap.getOrDefault(activity.getId(), new ActivityUserCountVO()).getApplyNum()); + + activity.setAwards(activityAwardsUserService.getListByActivityIdAndUserId(id, userId)); + return activity; + } + + @Override + public AppActivityRespVO getUserActivityApplyInfo(Long id, Long userId) { + ActivityDO activityDO = activityMapper.selectById(id); + if( activityDO == null){ + throw exception(ACTIVITY_NOT_EXISTS); + } + AppActivityRespVO activity = BeanUtil.toBean(activityDO, AppActivityRespVO.class); + Map userCountVOMap = activityUserService.countByActivityIds(Collections.singletonList(id)); + activity.setApplyNum(userCountVOMap.getOrDefault(activity.getId(), new ActivityUserCountVO()).getApplyNum()); + + activity.setIsApply(activityUserService.selectIsApply(id, userId)); + + activity.setAwardList(activityAwardsService.getListByActivityId(id)); + return activity; + } + + @Override + public List getReservatList() { + LocalDateTime now = LocalDateTime.now(); + List activityDOS = activityMapper.selectList(Wrappers.lambdaQuery() + .eq(ActivityDO::getReservationStatus, "1") + .ge(ActivityDO::getEndTime, now) +// .le(ActivityDO::getStartTime, now) + ); + List result = new ArrayList<>(); + for (ActivityDO activityDO : activityDOS) { + AppActivityRespVO bean = BeanUtils.toBean(activityDO, AppActivityRespVO.class); + ActivityRestaurantDO activityRestaurantDO = activityRestaurantService.getByActivityId(activityDO.getId()); + bean.setActivityRestaurantSaveDto(BeanUtils.toBean(activityRestaurantDO, ActivityRestaurantRespVO.class)); + result.add(bean); + } + return result; + } + + @Override + public PageResult getActivityReservePage(ActivityPageReqVO reqVO) { + PageResult activityDOPageResult = activityMapper.selectPage(reqVO, new LambdaQueryWrapperX() + .eq(ActivityDO::getReservationStatus, "1") + .ge(ActivityDO::getEndTime, LocalDateTime.now()) + .orderByDesc(ActivityDO::getId)); + return BeanUtils.toBean(activityDOPageResult, ActivityRespVO.class); + } +} + diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityadddish/ActivityAddDishService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityadddish/ActivityAddDishService.java new file mode 100644 index 00000000..2dbe1a5f --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityadddish/ActivityAddDishService.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.member.service.activityadddish; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveBatchVO; +import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityadddish.ActivityAddDishDO; + +import javax.validation.Valid; + +/** + * 活动用餐桌子加菜 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityAddDishService { + + /** + * 创建活动用餐桌子加菜 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityAddDish(@Valid ActivityAddDishSaveReqVO createReqVO); + + /** + * 更新活动用餐桌子加菜 + * + * @param updateReqVO 更新信息 + */ + void updateActivityAddDish(@Valid ActivityAddDishSaveReqVO updateReqVO); + + /** + * 删除活动用餐桌子加菜 + * + * @param id 编号 + */ + void deleteActivityAddDish(Long id); + + /** + * 获得活动用餐桌子加菜 + * + * @param id 编号 + * @return 活动用餐桌子加菜 + */ + ActivityAddDishDO getActivityAddDish(Long id); + + /** + * 获得活动用餐桌子加菜分页 + * + * @param pageReqVO 分页查询 + * @return 活动用餐桌子加菜分页 + */ + PageResult getActivityAddDishPage(ActivityAddDishPageReqVO pageReqVO); + + + void createActivityAddDishBatch(ActivityAddDishSaveBatchVO activityAddDishSaveBatchVO); +} \ 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/activityadddish/ActivityAddDishServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityadddish/ActivityAddDishServiceImpl.java new file mode 100644 index 00000000..863b6b78 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityadddish/ActivityAddDishServiceImpl.java @@ -0,0 +1,105 @@ +package cn.iocoder.yudao.module.member.service.activityadddish; + +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.activityadddish.vo.ActivityAddDishPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveBatchVO; +import cn.iocoder.yudao.module.member.controller.admin.activityadddish.vo.ActivityAddDishSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityadddish.ActivityAddDishDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitytabledish.ActivityTableDishDO; +import cn.iocoder.yudao.module.member.dal.mysql.activityadddish.ActivityAddDishMapper; +import cn.iocoder.yudao.module.member.service.activitytabledish.ActivityTableDishService; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_ADD_DISH_NOT_CHANGE; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_ADD_DISH_NOT_EXISTS; + +/** + * 活动用餐桌子加菜 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class ActivityAddDishServiceImpl implements ActivityAddDishService { + + @Resource + private ActivityAddDishMapper activityAddDishMapper; + @Resource + private ActivityTableDishService activityTableDishService; + + @Override + public Long createActivityAddDish(ActivityAddDishSaveReqVO createReqVO) { + // 插入 + ActivityAddDishDO activityAddDish = BeanUtils.toBean(createReqVO, ActivityAddDishDO.class); + activityAddDishMapper.insert(activityAddDish); + // 返回 + return activityAddDish.getId(); + } + + @Override + public void updateActivityAddDish(ActivityAddDishSaveReqVO updateReqVO) { + // 校验存在 + validateActivityAddDishExists(updateReqVO.getId()); + // 更新 + ActivityAddDishDO updateObj = BeanUtils.toBean(updateReqVO, ActivityAddDishDO.class); + activityAddDishMapper.updateById(updateObj); + } + + @Override + public void deleteActivityAddDish(Long id) { + // 校验存在 + validateActivityAddDishExists(id); + // 删除 + activityAddDishMapper.deleteById(id); + } + + private void validateActivityAddDishExists(Long id) { + if (activityAddDishMapper.selectById(id) == null) { + throw exception(ACTIVITY_ADD_DISH_NOT_EXISTS); + } + } + + @Override + public ActivityAddDishDO getActivityAddDish(Long id) { + return activityAddDishMapper.selectById(id); + } + + @Override + public PageResult getActivityAddDishPage(ActivityAddDishPageReqVO pageReqVO) { + return activityAddDishMapper.selectPage(pageReqVO); + } + + @Override + public void createActivityAddDishBatch(ActivityAddDishSaveBatchVO activityAddDishSaveBatchVO) { + + List tableDishIds = activityAddDishSaveBatchVO.getTableDishIds(); + if(tableDishIds == null){ + throw exception(ACTIVITY_ADD_DISH_NOT_CHANGE); + } + List listByIds = activityTableDishService.getListByIds(tableDishIds); + Map collect = listByIds.stream().collect(Collectors.toMap(ActivityTableDishDO::getId, ActivityTableDishDO::getSerialNumber)); + + + List list = new ArrayList<>(); + for (Long tableDishId : tableDishIds){ + ActivityAddDishDO activityAddDishDO = new ActivityAddDishDO(); + activityAddDishDO.setTableDishId(tableDishId); + activityAddDishDO.setDishName(activityAddDishSaveBatchVO.getDishName()); + activityAddDishDO.setDishPrice(activityAddDishSaveBatchVO.getDishPrice()); + activityAddDishDO.setDishImg(activityAddDishSaveBatchVO.getDishImg()); + activityAddDishDO.setSerialNumber(collect.get(tableDishId)); + list.add(activityAddDishDO); + } + activityAddDishMapper.insertBatch(list); + } + +} \ 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/activityawards/ActivityAwardsService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawards/ActivityAwardsService.java new file mode 100644 index 00000000..a6265b39 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawards/ActivityAwardsService.java @@ -0,0 +1,69 @@ +package cn.iocoder.yudao.module.member.service.activityawards; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 活动奖项 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityAwardsService { + + /** + * 创建活动奖项 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityAwards(@Valid ActivityAwardsSaveReqVO createReqVO); + + /** + * 更新活动奖项 + * + * @param updateReqVO 更新信息 + */ + void updateActivityAwards(@Valid ActivityAwardsSaveReqVO updateReqVO); + + /** + * 删除活动奖项 + * + * @param id 编号 + */ + void deleteActivityAwards(Long id); + + /** + * 获得活动奖项 + * + * @param id 编号 + * @return 活动奖项 + */ + ActivityAwardsDO getActivityAwards(Long id); + + /** + * 获得活动奖项分页 + * + * @param pageReqVO 分页查询 + * @return 活动奖项分页 + */ + PageResult getActivityAwardsPage(ActivityAwardsPageReqVO pageReqVO); + + + void insertActivityAwards(List activityAwardsDOList); + + void deleteByActivityId(Long activityId); + + List getListByActivityId(Long activityId); + + List getListByIds(List ids); + + List getListByActivityIdAndAwardsStatus(Long activityId, String limitType); + + List getListByActivity(Long 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/activityawards/ActivityAwardsServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawards/ActivityAwardsServiceImpl.java new file mode 100644 index 00000000..86f51189 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawards/ActivityAwardsServiceImpl.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.member.service.activityawards; + +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.activityawards.vo.ActivityAwardsPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityawards.vo.ActivityAwardsSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityawards.ActivityAwardsDO; +import cn.iocoder.yudao.module.member.dal.mysql.activityawards.ActivityAwardsMapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.Collections; +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_AWARDS_NOT_EXISTS; + +/** + * 活动奖项 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class ActivityAwardsServiceImpl implements ActivityAwardsService { + + @Resource + private ActivityAwardsMapper activityAwardsMapper; + + @Override + public Long createActivityAwards(ActivityAwardsSaveReqVO createReqVO) { + // 插入 + ActivityAwardsDO activityAwards = BeanUtils.toBean(createReqVO, ActivityAwardsDO.class); + activityAwardsMapper.insert(activityAwards); + // 返回 + return activityAwards.getId(); + } + + @Override + public void updateActivityAwards(ActivityAwardsSaveReqVO updateReqVO) { + // 校验存在 + validateActivityAwardsExists(updateReqVO.getId()); + // 更新 + ActivityAwardsDO updateObj = BeanUtils.toBean(updateReqVO, ActivityAwardsDO.class); + activityAwardsMapper.updateById(updateObj); + } + + @Override + public void deleteActivityAwards(Long id) { + // 校验存在 + validateActivityAwardsExists(id); + // 删除 + activityAwardsMapper.deleteById(id); + } + + private void validateActivityAwardsExists(Long id) { + if (activityAwardsMapper.selectById(id) == null) { + throw exception(ACTIVITY_AWARDS_NOT_EXISTS); + } + } + + @Override + public ActivityAwardsDO getActivityAwards(Long id) { + return activityAwardsMapper.selectById(id); + } + + @Override + public PageResult getActivityAwardsPage(ActivityAwardsPageReqVO pageReqVO) { + return activityAwardsMapper.selectPage(pageReqVO); + } + + @Override + public void insertActivityAwards(List activityAwardsDOList) { + activityAwardsMapper.insertBatch(activityAwardsDOList); + } + + @Override + public void deleteByActivityId(Long activityId) { + activityAwardsMapper.delete(Wrappers.lambdaQuery(ActivityAwardsDO.class).eq(ActivityAwardsDO::getActivityId,activityId)); + } + + @Override + public List getListByActivityId(Long activityId) { + + return activityAwardsMapper.selectList(Wrappers.lambdaQuery(ActivityAwardsDO.class) + .eq(ActivityAwardsDO::getActivityId, activityId) + .orderByAsc(ActivityAwardsDO::getSortNum)); + } + + @Override + public List getListByIds(List ids) { + return activityAwardsMapper.selectList(Wrappers.lambdaQuery(ActivityAwardsDO.class) + .in(ActivityAwardsDO::getId, ids) + .orderByAsc(ActivityAwardsDO::getSortNum)); + } + + @Override + public List getListByActivityIdAndAwardsStatus(Long activityId, String limitType) { + return activityAwardsMapper.selectList(Wrappers.lambdaQuery(ActivityAwardsDO.class) + .eq(ActivityAwardsDO::getActivityId, activityId) + .eq(ActivityAwardsDO::getLimitType, limitType)); + } + + @Override + public List getListByActivity(Long activityId) { + return activityAwardsMapper.selectList(Wrappers.lambdaQuery(ActivityAwardsDO.class) + .eq(ActivityAwardsDO::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/activityawardsuser/ActivityAwardsUserService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawardsuser/ActivityAwardsUserService.java new file mode 100644 index 00000000..7d020915 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawardsuser/ActivityAwardsUserService.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.module.member.service.activityawardsuser; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserCountVO; +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.activityawardsuser.vo.ActivityAwardsUserSaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCancelVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppUserAwardsVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO; + +import javax.validation.Valid; +import java.util.List; +import java.util.Map; + +/** + * 活动中奖人员 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityAwardsUserService { + + /** + * 创建活动中奖人员 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityAwardsUser(@Valid ActivityAwardsUserSaveReqVO createReqVO); + + /** + * 更新活动中奖人员 + * + * @param updateReqVO 更新信息 + */ + void updateActivityAwardsUser(@Valid ActivityAwardsUserSaveReqVO updateReqVO); + + /** + * 删除活动中奖人员 + * + * @param id 编号 + */ + void deleteActivityAwardsUser(Long id); + + /** + * 获得活动中奖人员 + * + * @param id 编号 + * @return 活动中奖人员 + */ + ActivityAwardsUserDO getActivityAwardsUser(Long id); + + /** + * 获得活动中奖人员分页 + * + * @param pageReqVO 分页查询 + * @return 活动中奖人员分页 + */ + PageResult getActivityAwardsUserPage(ActivityAwardsUserPageReqVO pageReqVO); + + PageResult getActivityAwardsUserJoinPage(ActivityAwardsUserPageReqVO pageReqVO); + + Map countByActivityIds(List activityIds); + + List getAwardsUserListByActivityId(Long activityId); + + void insertBatch(List list); + + List getListByActivityIdAndUserId(Long activityId, Long userId); + + Boolean cancel(AppCancelVO vo); + + List getListByTime(); + + void updateBatch(List list ); +} \ 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/activityawardsuser/ActivityAwardsUserServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawardsuser/ActivityAwardsUserServiceImpl.java new file mode 100644 index 00000000..5f3dda44 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityawardsuser/ActivityAwardsUserServiceImpl.java @@ -0,0 +1,160 @@ +package cn.iocoder.yudao.module.member.service.activityawardsuser; + +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.activityawardsuser.vo.ActivityAwardsUserCountVO; +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.activityawardsuser.vo.ActivityAwardsUserSaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCancelVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppUserAwardsVO; +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.mysql.activityawardsuser.ActivityAwardsUserMapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_AWARDS_USER_NOT_EFFECTIVE; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_AWARDS_USER_NOT_EXISTS; + +/** + * 活动中奖人员 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class ActivityAwardsUserServiceImpl implements ActivityAwardsUserService { + + @Resource + private ActivityAwardsUserMapper activityAwardsUserMapper; + + @Override + public Long createActivityAwardsUser(ActivityAwardsUserSaveReqVO createReqVO) { + // 插入 + ActivityAwardsUserDO activityAwardsUser = BeanUtils.toBean(createReqVO, ActivityAwardsUserDO.class); + activityAwardsUserMapper.insert(activityAwardsUser); + // 返回 + return activityAwardsUser.getId(); + } + + @Override + public void updateActivityAwardsUser(ActivityAwardsUserSaveReqVO updateReqVO) { + // 校验存在 + validateActivityAwardsUserExists(updateReqVO.getId()); + // 更新 + ActivityAwardsUserDO updateObj = BeanUtils.toBean(updateReqVO, ActivityAwardsUserDO.class); + activityAwardsUserMapper.updateById(updateObj); + } + + @Override + public void deleteActivityAwardsUser(Long id) { + // 校验存在 + validateActivityAwardsUserExists(id); + // 删除 + activityAwardsUserMapper.deleteById(id); + } + + private void validateActivityAwardsUserExists(Long id) { + if (activityAwardsUserMapper.selectById(id) == null) { + throw exception(ACTIVITY_AWARDS_USER_NOT_EXISTS); + } + } + + @Override + public ActivityAwardsUserDO getActivityAwardsUser(Long id) { + return activityAwardsUserMapper.selectById(id); + } + + @Override + public PageResult getActivityAwardsUserPage(ActivityAwardsUserPageReqVO pageReqVO) { + return activityAwardsUserMapper.selectPage(pageReqVO); + } + + @Override + public PageResult getActivityAwardsUserJoinPage(ActivityAwardsUserPageReqVO pageReqVO) { + return activityAwardsUserMapper.selectJoinPage(pageReqVO); + } + + @Override + public Map countByActivityIds(List activityIds) { + List activityAwardsUserCountVOS = activityAwardsUserMapper.countByActivityIds(activityIds); + if (activityAwardsUserCountVOS.isEmpty()) { + return Collections.emptyMap(); + } + return activityAwardsUserCountVOS.stream().collect(Collectors.toMap(ActivityAwardsUserCountVO::getActivityId, v -> v)); + } + + @Override + public List getAwardsUserListByActivityId(Long activityId) { + + LocalDateTime date = LocalDateTime.now(); + + LocalDateTime startOfDay = date.with(LocalTime.MIN); + + LocalDateTime endOfDay = date.with(LocalTime.MAX); + + return activityAwardsUserMapper.selectList(Wrappers.lambdaQuery() + .eq(ActivityAwardsUserDO::getActivityId, activityId) + .between(ActivityAwardsUserDO::getCreateTime, startOfDay, endOfDay)); + } + + @Override + public void insertBatch(List list) { + activityAwardsUserMapper.insertBatch(list); + } + + @Override + public List getListByActivityIdAndUserId(Long activityId, Long userId) { + return activityAwardsUserMapper + .selectJoinList(AppUserAwardsVO.class, + new MPJLambdaWrapper() + .select(ActivityAwardsDO::getPrize, ActivityAwardsDO::getAwardsName) + .select(ActivityAwardsUserDO::getAwardsStatus, ActivityAwardsUserDO::getCreateTime, ActivityAwardsUserDO::getId) + .leftJoin(ActivityAwardsDO.class, ActivityAwardsDO::getId, ActivityAwardsUserDO::getAwardsId) + .eq(ActivityAwardsUserDO::getActivityId, activityId) + .eq(ActivityAwardsUserDO::getUserId, userId) + .orderByAsc(ActivityAwardsUserDO::getCreateTime)); + + } + + + @Override + public Boolean cancel(AppCancelVO vo) { + ActivityAwardsUserDO activityAwardsUserDO = activityAwardsUserMapper.selectById(vo.getActivityAwardsUserId()); + if(!"0".equals(activityAwardsUserDO.getAwardsStatus())){ + throw exception(ACTIVITY_AWARDS_USER_NOT_EFFECTIVE); + } + activityAwardsUserDO.setAwardsStatus("1"); + int i = activityAwardsUserMapper.updateById(activityAwardsUserDO); + return i>0; + } + + @Override + public List getListByTime() { + LocalDateTime date = LocalDateTime.now().minusDays(1); + + LocalDateTime endOfDay = date.with(LocalTime.MAX); + + return activityAwardsUserMapper.selectList(Wrappers.lambdaQuery() + .le(ActivityAwardsUserDO::getCreateTime, endOfDay) + .eq(ActivityAwardsUserDO::getAwardsStatus, "0") + ); + } + + @Override + public void updateBatch(List list) { + activityAwardsUserMapper.updateBatch(list); + } +} \ 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/ActivityPayService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayService.java new file mode 100644 index 00000000..147a5769 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayService.java @@ -0,0 +1,71 @@ +package cn.iocoder.yudao.module.member.service.activitypay; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPaySaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPayRespVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCancelVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO; + +import javax.validation.Valid; +import java.util.List; +import java.util.Map; + +/** + * 活动付款 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityPayService { + + /** + * 创建活动付款 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityPay(@Valid ActivityPaySaveReqVO createReqVO); + + /** + * 更新活动付款 + * + * @param updateReqVO 更新信息 + */ + void updateActivityPay(@Valid ActivityPaySaveReqVO updateReqVO); + + /** + * 删除活动付款 + * + * @param id 编号 + */ + void deleteActivityPay(Long id); + + /** + * 获得活动付款 + * + * @param id 编号 + * @return 活动付款 + */ + ActivityPayDO getActivityPay(Long id); + + /** + * 获得活动付款分页 + * + * @param pageReqVO 分页查询 + * @return 活动付款分页 + */ + PageResult getActivityPayPage(ActivityPayPageReqVO pageReqVO); + + Map countByActivityIds(List activityIds); + + void addActivityPay(ActivityPaySaveReqVO createReqVO); + + PageResult getUserActivityPayPage(ActivityPayPageReqVO pageReqVO); + + Boolean reserveCancel(AppCancelVO vo); + + List getListByTime(); + + void updateBatch(List list); +} \ 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 new file mode 100644 index 00000000..64419f30 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypay/ActivityPayServiceImpl.java @@ -0,0 +1,201 @@ +package cn.iocoder.yudao.module.member.service.activitypay; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +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.activitypay.vo.ActivityPayCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPayPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypay.vo.ActivityPaySaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityPayRespVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCancelVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityawardsuser.ActivityAwardsUserDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitypay.ActivityPayDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable.ActivityPayTableDO; +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.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.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +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 ActivityPayServiceImpl implements ActivityPayService { + + @Resource + private ActivityPayMapper activityPayMapper; + + @Resource + private ActivityPayTableService activityPayTableService; + + @Resource + @Lazy + private MemberUserService memberUserService; + @Override + public Long createActivityPay(ActivityPaySaveReqVO createReqVO) { + // 插入 + ActivityPayDO activityPay = BeanUtils.toBean(createReqVO, ActivityPayDO.class); + activityPayMapper.insert(activityPay); + // 返回 + return activityPay.getId(); + } + + @Override + public void updateActivityPay(ActivityPaySaveReqVO updateReqVO) { + // 校验存在 + validateActivityPayExists(updateReqVO.getId()); + // 更新 + ActivityPayDO updateObj = BeanUtils.toBean(updateReqVO, ActivityPayDO.class); + activityPayMapper.updateById(updateObj); + } + + @Override + public void deleteActivityPay(Long id) { + // 校验存在 + validateActivityPayExists(id); + // 删除 + activityPayMapper.deleteById(id); + } + + private void validateActivityPayExists(Long id) { + if (activityPayMapper.selectById(id) == null) { + throw exception(ACTIVITY_PAY_NOT_EXISTS); + } + } + + @Override + public ActivityPayDO getActivityPay(Long id) { + return activityPayMapper.selectById(id); + } + + @Override + public PageResult getActivityPayPage(ActivityPayPageReqVO pageReqVO) { + return activityPayMapper.selectPage(pageReqVO); + } + + @Override + public Map countByActivityIds(List activityIds) { + List activityPayCountVOS = activityPayMapper.countByActivityIds(activityIds); + if (activityPayCountVOS.isEmpty()) { + return Collections.emptyMap(); + } + return activityPayCountVOS.stream().collect(Collectors.toMap(ActivityPayCountVO::getActivityId, v -> v)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void addActivityPay(ActivityPaySaveReqVO createReqVO) { + + ActivityPayDO activityPayDO = new ActivityPayDO(); + BeanUtil.copyProperties(createReqVO, activityPayDO,"reserveTime"); + MemberUserDO user = memberUserService.getUser(createReqVO.getUserId()); + activityPayDO.setMobile(user.getMobile()); + activityPayDO.setNickName(user.getNickname()); + + String reserveTime = createReqVO.getReserveTime(); + LocalDate localDate = null; + if(StrUtil.isNotBlank(reserveTime)){ + //转化成date + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + localDate = LocalDate.parse(reserveTime, formatter); + } + activityPayDO.setReserveTime(localDate); + + activityPayMapper.insert(activityPayDO); + + String serialNumbers = createReqVO.getSerialNumbers(); + String[] split = serialNumbers.split(","); + BigDecimal divide = createReqVO.getPrice().divide(BigDecimal.valueOf(split.length),2, RoundingMode.HALF_UP); + List activityPayTableDOS = new ArrayList<>(); + for (String serialNumber : split) { + ActivityPayTableDO activityPayTableDO = new ActivityPayTableDO(); + activityPayTableDO.setActivityId(activityPayDO.getActivityId()); + activityPayTableDO.setSerialNumbers(serialNumber); + activityPayTableDO.setPrice(divide); + activityPayTableDO.setUserId(activityPayDO.getUserId()); + activityPayTableDO.setReserveTime(activityPayDO.getReserveTime()); + activityPayTableDO.setNickName(activityPayDO.getNickName()); + activityPayTableDO.setMobile(activityPayDO.getMobile()); + activityPayTableDOS.add(activityPayTableDO); + } + + if(!activityPayTableDOS.isEmpty()){ + activityPayTableService.insertBatch(activityPayTableDOS); + } + + + } + + @Override + public PageResult getUserActivityPayPage(ActivityPayPageReqVO pageReqVO) { + + Page activityAwardsUserRespVOPage = activityPayMapper.selectJoinPage(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), AppActivityPayRespVO.class, + new MPJLambdaWrapper() + .selectAll(ActivityPayDO.class) + .select(ActivityDO::getActivityName) + .leftJoin(ActivityDO.class, ActivityDO::getId, ActivityAwardsUserDO::getActivityId) + .eq(pageReqVO.getActivityId() != null, ActivityAwardsUserDO::getActivityId, pageReqVO.getActivityId()) + .eq( ActivityPayDO::getUserId, pageReqVO.getUserId()) + .orderByDesc(ActivityPayDO::getCreateTime) + ); + return new PageResult<>(activityAwardsUserRespVOPage.getRecords(), activityAwardsUserRespVOPage.getTotal()); + } + + @Override + public Boolean reserveCancel(AppCancelVO vo) { + ActivityPayDO activityPayDO = activityPayMapper.selectById(vo.getActivityPayId()); + if(!"0".equals(activityPayDO.getStatus())){ + throw exception(ACTIVITY_PAY_USE); + } + //获取当天日期 + LocalDate now = LocalDate.now(); + //比较日期是否相等 + if(! now.isEqual(activityPayDO.getReserveTime())){ + throw exception(ACTIVITY_PAY_EXPIRE); + } + activityPayDO.setStatus("1"); + int i = activityPayMapper.updateById(activityPayDO); + return i>0; + } + + @Override + public List getListByTime() { + LocalDate localDate = LocalDate.now().minusDays(1); + + return activityPayMapper.selectList(Wrappers.lambdaQuery() + .le(ActivityPayDO::getReserveTime, localDate) + .eq(ActivityPayDO::getStatus, "0") + ); + } + + @Override + public void updateBatch(List list) { + activityPayMapper.updateBatch(list); + } +} \ 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/activitypaytable/ActivityPayTableService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypaytable/ActivityPayTableService.java new file mode 100644 index 00000000..512fba74 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypaytable/ActivityPayTableService.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.module.member.service.activitypaytable; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.ActivityPayTablePageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.ActivityPayTableSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable.ActivityPayTableDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 活动付款 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityPayTableService { + + /** + * 创建活动付款 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityPayTable(@Valid ActivityPayTableSaveReqVO createReqVO); + + /** + * 更新活动付款 + * + * @param updateReqVO 更新信息 + */ + void updateActivityPayTable(@Valid ActivityPayTableSaveReqVO updateReqVO); + + /** + * 删除活动付款 + * + * @param id 编号 + */ + void deleteActivityPayTable(Long id); + + /** + * 获得活动付款 + * + * @param id 编号 + * @return 活动付款 + */ + ActivityPayTableDO getActivityPayTable(Long id); + + /** + * 获得活动付款分页 + * + * @param pageReqVO 分页查询 + * @return 活动付款分页 + */ + PageResult getActivityPayTablePage(ActivityPayTablePageReqVO pageReqVO); + + void insertBatch(List list); + + PageResult getActivityPayTableGroupPage(ActivityPayTablePageReqVO 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/activitypaytable/ActivityPayTableServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypaytable/ActivityPayTableServiceImpl.java new file mode 100644 index 00000000..cbc65a97 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitypaytable/ActivityPayTableServiceImpl.java @@ -0,0 +1,88 @@ +package cn.iocoder.yudao.module.member.service.activitypaytable; + +import cn.hutool.core.util.StrUtil; +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.activitypaytable.vo.ActivityPayTablePageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitypaytable.vo.ActivityPayTableSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitypaytable.ActivityPayTableDO; +import cn.iocoder.yudao.module.member.dal.mysql.activitypaytable.ActivityPayTableMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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_PAY_TABLE_NOT_EXISTS; + +/** + * 活动付款 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class ActivityPayTableServiceImpl implements ActivityPayTableService { + + @Resource + private ActivityPayTableMapper activityPayTableMapper; + + @Override + public Long createActivityPayTable(ActivityPayTableSaveReqVO createReqVO) { + // 插入 + ActivityPayTableDO activityPayTable = BeanUtils.toBean(createReqVO, ActivityPayTableDO.class); + activityPayTableMapper.insert(activityPayTable); + // 返回 + return activityPayTable.getId(); + } + + @Override + public void updateActivityPayTable(ActivityPayTableSaveReqVO updateReqVO) { + // 校验存在 + validateActivityPayTableExists(updateReqVO.getId()); + // 更新 + ActivityPayTableDO updateObj = BeanUtils.toBean(updateReqVO, ActivityPayTableDO.class); + activityPayTableMapper.updateById(updateObj); + } + + @Override + public void deleteActivityPayTable(Long id) { + // 校验存在 + validateActivityPayTableExists(id); + // 删除 + activityPayTableMapper.deleteById(id); + } + + private void validateActivityPayTableExists(Long id) { + if (activityPayTableMapper.selectById(id) == null) { + throw exception(ACTIVITY_PAY_TABLE_NOT_EXISTS); + } + } + + @Override + public ActivityPayTableDO getActivityPayTable(Long id) { + return activityPayTableMapper.selectById(id); + } + + @Override + public PageResult getActivityPayTablePage(ActivityPayTablePageReqVO pageReqVO) { + return activityPayTableMapper.selectPage(pageReqVO); + } + + @Override + public PageResult getActivityPayTableGroupPage(ActivityPayTablePageReqVO pageReqVO) { + return activityPayTableMapper.selectPage(pageReqVO,new LambdaQueryWrapper() + .select(ActivityPayTableDO::getSerialNumbers,ActivityPayTableDO::getAllPrice) + .eq(StrUtil.isNotBlank(pageReqVO.getSerialNumbers()),ActivityPayTableDO::getSerialNumbers,pageReqVO.getSerialNumbers()) + .eq(ActivityPayTableDO::getActivityId,pageReqVO.getActivityId()) + .groupBy(ActivityPayTableDO::getSerialNumbers) + ); + } + + @Override + public void insertBatch(List list) { + activityPayTableMapper.insertBatch(list); + } +} \ 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/activityrestaurant/ActivityRestaurantService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityrestaurant/ActivityRestaurantService.java new file mode 100644 index 00000000..870fcfe9 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityrestaurant/ActivityRestaurantService.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.member.service.activityrestaurant; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant.ActivityRestaurantDO; + +import javax.validation.Valid; + +/** + * 活动用餐 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityRestaurantService { + + /** + * 创建活动用餐 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityRestaurant(@Valid ActivityRestaurantSaveReqVO createReqVO); + + /** + * 更新活动用餐 + * + * @param updateReqVO 更新信息 + */ + void updateActivityRestaurant(@Valid ActivityRestaurantSaveReqVO updateReqVO); + + /** + * 删除活动用餐 + * + * @param id 编号 + */ + void deleteActivityRestaurant(Long id); + + /** + * 获得活动用餐 + * + * @param id 编号 + * @return 活动用餐 + */ + ActivityRestaurantDO getActivityRestaurant(Long id); + + /** + * 获得活动用餐分页 + * + * @param pageReqVO 分页查询 + * @return 活动用餐分页 + */ + PageResult getActivityRestaurantPage(ActivityRestaurantPageReqVO pageReqVO); + + void deleteByActivityId(Long activityId); + + ActivityRestaurantDO getByActivityId(Long 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/activityrestaurant/ActivityRestaurantServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityrestaurant/ActivityRestaurantServiceImpl.java new file mode 100644 index 00000000..65f4adf8 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityrestaurant/ActivityRestaurantServiceImpl.java @@ -0,0 +1,81 @@ +package cn.iocoder.yudao.module.member.service.activityrestaurant; + +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.activityrestaurant.vo.ActivityRestaurantPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveReqVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityrestaurant.ActivityRestaurantDO; +import cn.iocoder.yudao.module.member.dal.mysql.activityrestaurant.ActivityRestaurantMapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_RESTAURANT_NOT_EXISTS; + +/** + * 活动用餐 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class ActivityRestaurantServiceImpl implements ActivityRestaurantService { + + @Resource + private ActivityRestaurantMapper activityRestaurantMapper; + + @Override + public Long createActivityRestaurant(ActivityRestaurantSaveReqVO createReqVO) { + // 插入 + ActivityRestaurantDO activityRestaurant = BeanUtils.toBean(createReqVO, ActivityRestaurantDO.class); + activityRestaurantMapper.insert(activityRestaurant); + // 返回 + return activityRestaurant.getId(); + } + + @Override + public void updateActivityRestaurant(ActivityRestaurantSaveReqVO updateReqVO) { + // 校验存在 + validateActivityRestaurantExists(updateReqVO.getId()); + // 更新 + ActivityRestaurantDO updateObj = BeanUtils.toBean(updateReqVO, ActivityRestaurantDO.class); + activityRestaurantMapper.updateById(updateObj); + } + + @Override + public void deleteActivityRestaurant(Long id) { + // 校验存在 + validateActivityRestaurantExists(id); + // 删除 + activityRestaurantMapper.deleteById(id); + } + + private void validateActivityRestaurantExists(Long id) { + if (activityRestaurantMapper.selectById(id) == null) { + throw exception(ACTIVITY_RESTAURANT_NOT_EXISTS); + } + } + + @Override + public ActivityRestaurantDO getActivityRestaurant(Long id) { + return activityRestaurantMapper.selectById(id); + } + + @Override + public PageResult getActivityRestaurantPage(ActivityRestaurantPageReqVO pageReqVO) { + return activityRestaurantMapper.selectPage(pageReqVO); + } + + @Override + public void deleteByActivityId(Long activityId) { + activityRestaurantMapper.delete(Wrappers.lambdaQuery(ActivityRestaurantDO.class).eq(ActivityRestaurantDO::getActivityId,activityId)); + } + + @Override + public ActivityRestaurantDO getByActivityId(Long activityId) { + return activityRestaurantMapper.selectOne(Wrappers.lambdaQuery(ActivityRestaurantDO.class).eq(ActivityRestaurantDO::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/activitytable/ActivityTableService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableService.java new file mode 100644 index 00000000..438576e9 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableService.java @@ -0,0 +1,74 @@ +package cn.iocoder.yudao.module.member.service.activitytable; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTablePageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableSaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCheckVO; +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.util.List; +import java.util.Map; + +/** + * 活动用餐桌子 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityTableService { + + /** + * 创建活动用餐桌子 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityTable(@Valid ActivityTableSaveReqVO createReqVO); + + /** + * 更新活动用餐桌子 + * + * @param updateReqVO 更新信息 + */ + void updateActivityTable(@Valid ActivityTableSaveReqVO updateReqVO); + + /** + * 删除活动用餐桌子 + * + * @param id 编号 + */ + void deleteActivityTable(Long id); + + /** + * 获得活动用餐桌子 + * + * @param id 编号 + * @return 活动用餐桌子 + */ + ActivityTableDO getActivityTable(Long id); + + /** + * 获得活动用餐桌子分页 + * + * @param pageReqVO 分页查询 + * @return 活动用餐桌子分页 + */ + PageResult getActivityTablePage(ActivityTablePageReqVO pageReqVO); + + Map countByActivityIds(List activityIds); + + void createByRestaurant(ActivityRestaurantSaveReqVO activityRestaurantSaveReqVO); + + void deleteByActivityId(Long activityId); + + List getListByActivityIdAndTime(Long activityId,String time); + + Boolean userTableCheck(AppCheckVO vo); + + Boolean userTableUnbind(AppUnbindVO vo); + + List getListByActivityId(Long 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/activitytable/ActivityTableServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableServiceImpl.java new file mode 100644 index 00000000..03c0e34e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytable/ActivityTableServiceImpl.java @@ -0,0 +1,188 @@ +package cn.iocoder.yudao.module.member.service.activitytable; + +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.security.core.util.SecurityFrameworkUtils; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTablePageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytable.vo.ActivityTableSaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppCheckVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppUnbindVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitytable.ActivityTableDO; +import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import cn.iocoder.yudao.module.member.dal.mysql.activitytable.ActivityTableMapper; +import cn.iocoder.yudao.module.member.service.user.MemberUserService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.ACTIVITY_TABLE_NOT_EXISTS; + +/** + * 活动用餐桌子 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class ActivityTableServiceImpl implements ActivityTableService { + + @Resource + private ActivityTableMapper activityTableMapper; + @Resource + private MemberUserService memberUserService; + + @Override + public Long createActivityTable(ActivityTableSaveReqVO createReqVO) { + // 插入 + ActivityTableDO activityTable = BeanUtils.toBean(createReqVO, ActivityTableDO.class); + activityTableMapper.insert(activityTable); + // 返回 + return activityTable.getId(); + } + + @Override + public void updateActivityTable(ActivityTableSaveReqVO updateReqVO) { + // 校验存在 + validateActivityTableExists(updateReqVO.getId()); + // 更新 + ActivityTableDO updateObj = BeanUtils.toBean(updateReqVO, ActivityTableDO.class); + activityTableMapper.updateById(updateObj); + } + + @Override + public void deleteActivityTable(Long id) { + // 校验存在 + validateActivityTableExists(id); + // 删除 + activityTableMapper.deleteById(id); + } + + private void validateActivityTableExists(Long id) { + if (activityTableMapper.selectById(id) == null) { + throw exception(ACTIVITY_TABLE_NOT_EXISTS); + } + } + + @Override + public ActivityTableDO getActivityTable(Long id) { + return activityTableMapper.selectById(id); + } + + @Override + public PageResult getActivityTablePage(ActivityTablePageReqVO pageReqVO) { + return activityTableMapper.selectPage(pageReqVO); + } + + @Override + public Map countByActivityIds(List activityIds) { + List activityTableCountVOS = activityTableMapper.countByActivityIds(activityIds); + if (activityTableCountVOS.isEmpty()) { + return Collections.emptyMap(); + } + return activityTableCountVOS.stream().collect(Collectors.toMap(ActivityTableCountVO::getActivityId, v -> v)); + } + + @Override + public void createByRestaurant(ActivityRestaurantSaveReqVO activityRestaurantSaveReqVO) { + Integer totalTable = activityRestaurantSaveReqVO.getTotalTable(); + ArrayList activityTableDOS = new ArrayList<>(); + for (int i = 1; i <= totalTable; i++) { + ActivityTableDO activityTableDO = new ActivityTableDO(); + activityTableDO.setActivityId(activityRestaurantSaveReqVO.getActivityId()); + activityTableDO.setSerialNumber(i); + activityTableDO.setPrice(activityRestaurantSaveReqVO.getPrice()); + activityTableDOS.add(activityTableDO); + } + activityTableMapper.insertBatch(activityTableDOS); + } + + @Override + public void deleteByActivityId(Long activityId) { + activityTableMapper.deleteByActivityId(activityId); + } + + @Override + public List getListByActivityIdAndTime(Long activityId, String time) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate localDate = LocalDate.parse(time, formatter); + return activityTableMapper.selectList(Wrappers.lambdaQuery(ActivityTableDO.class) + .eq(ActivityTableDO::getReserveTime, localDate) + .eq(ActivityTableDO::getActivityId, activityId)); + } + + @Override + public synchronized Boolean userTableCheck(AppCheckVO vo) { + + if(CollectionUtil.isEmpty(vo.getSerialNumbers())){ + throw exception(new ErrorCode(1_005_000_01, "请选择桌号")); + } + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate localDate = LocalDate.parse(vo.getTime(), formatter); + List activityTableDOS = activityTableMapper.selectList(Wrappers.lambdaQuery(ActivityTableDO.class) + .eq(ActivityTableDO::getReserveTime, localDate) + .eq(ActivityTableDO::getActivityId, vo.getActivityId()) + .in(ActivityTableDO::getSerialNumber, vo.getSerialNumbers())); + + if (!activityTableDOS.isEmpty()) { + String result = activityTableDOS.stream() + .map(ActivityTableDO::getSerialNumber) // 将Integer转为String + .map(String::valueOf) + .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); + BigDecimal divide = vo.getPrice().divide(new BigDecimal(vo.getSerialNumbers().size()), 2, RoundingMode.HALF_UP); + for (Integer serialNumber : vo.getSerialNumbers()) { + ActivityTableDO activityTableDO = new ActivityTableDO(); + activityTableDO.setUserId(loginUserId); + activityTableDO.setMobile(user.getMobile()); + activityTableDO.setNickName(user.getNickname()); + activityTableDO.setAvatar(user.getAvatar()); + activityTableDO.setActivityId(vo.getActivityId()); + activityTableDO.setSerialNumber(serialNumber); + activityTableDO.setPrice(divide); + activityTableDO.setReserveTime(localDate); + addList.add(activityTableDO); + } + activityTableMapper.insertBatch(addList); + return true; + } + + @Override + public Boolean userTableUnbind(AppUnbindVO vo) { + if(vo.getSerialNumbers().isEmpty()){ + return true; + } + int update = activityTableMapper.delete(Wrappers.lambdaUpdate() + .in(ActivityTableDO::getSerialNumber, vo.getSerialNumbers()) + .eq(ActivityTableDO::getActivityId, vo.getActivityId()) + ); + return update > 0; + } + + @Override + public List getListByActivityId(Long activityId) { + return activityTableMapper.selectList(Wrappers.lambdaQuery(ActivityTableDO.class) + .eq(ActivityTableDO::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/activitytabledish/ActivityTableDishService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishService.java new file mode 100644 index 00000000..c9525da4 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishService.java @@ -0,0 +1,63 @@ +package cn.iocoder.yudao.module.member.service.activitytabledish; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishSaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityUpdateDishVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activitytabledish.ActivityTableDishDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 活动用餐桌子配置 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityTableDishService { + + /** + * 创建活动用餐桌子配置 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityTableDish(@Valid ActivityTableDishSaveReqVO createReqVO); + + /** + * 更新活动用餐桌子配置 + * + * @param updateReqVO 更新信息 + */ + void updateActivityTableDish(@Valid ActivityTableDishSaveReqVO updateReqVO); + + /** + * 删除活动用餐桌子配置 + * + * @param id 编号 + */ + void deleteActivityTableDish(Long id); + + /** + * 获得活动用餐桌子配置 + * + * @param id 编号 + * @return 活动用餐桌子配置 + */ + ActivityTableDishDO getActivityTableDish(Long id); + + /** + * 获得活动用餐桌子配置分页 + * + * @param pageReqVO 分页查询 + * @return 活动用餐桌子配置分页 + */ + PageResult getActivityTableDishPage(ActivityTableDishPageReqVO pageReqVO); + + void createByRestaurant(ActivityRestaurantSaveReqVO activityRestaurantSaveReqVO); + + Boolean updateDish( ActivityUpdateDishVO updateReqVO); + + List getListByIds(List ids); +} \ 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 new file mode 100644 index 00000000..cf0a6b27 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activitytabledish/ActivityTableDishServiceImpl.java @@ -0,0 +1,124 @@ +package cn.iocoder.yudao.module.member.service.activitytabledish; + +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.module.member.controller.admin.activityrestaurant.vo.ActivityRestaurantSaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityTableDishSaveReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activitytabledish.vo.ActivityUpdateDishVO; +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.dal.mysql.activitytabledish.ActivityTableDishMapper; +import cn.iocoder.yudao.module.member.service.activitytable.ActivityTableService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.ArrayList; +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_TABLE_DISH_NOT_EXISTS; + +/** + * 活动用餐桌子配置 Service 实现类 + * + * @author 我是秦俊旗 + */ +@Service +@Validated +public class ActivityTableDishServiceImpl implements ActivityTableDishService { + + @Resource + private ActivityTableDishMapper activityTableDishMapper; + @Resource + private ActivityTableService activityTableService; + + @Override + public Long createActivityTableDish(ActivityTableDishSaveReqVO createReqVO) { + // 插入 + ActivityTableDishDO activityTableDish = BeanUtils.toBean(createReqVO, ActivityTableDishDO.class); + + List activityTableDishDOS = activityTableDishMapper.selectList(Wrappers.lambdaQuery() + .eq(ActivityTableDishDO::getActivityId, activityTableDish.getActivityId()) + .eq(ActivityTableDishDO::getSerialNumber, activityTableDish.getSerialNumber())); + if (!activityTableDishDOS.isEmpty()) { + throw exception(new ErrorCode(1_005_000_02, createReqVO.getSerialNumber() + "桌号已存在")); + } + + activityTableDishMapper.insert(activityTableDish); + // 返回 + return activityTableDish.getId(); + } + + @Override + public void updateActivityTableDish(ActivityTableDishSaveReqVO updateReqVO) { + // 校验存在 + validateActivityTableDishExists(updateReqVO.getId()); + // 更新 + ActivityTableDishDO updateObj = BeanUtils.toBean(updateReqVO, ActivityTableDishDO.class); + activityTableDishMapper.updateById(updateObj); + } + + @Override + public void deleteActivityTableDish(Long id) { + // 校验存在 + ActivityTableDishDO activityTableDishDO = activityTableDishMapper.selectById(id); + if (activityTableDishDO == null) { + throw exception(ACTIVITY_TABLE_DISH_NOT_EXISTS); + } + Long activityId = activityTableDishDO.getActivityId(); + List listByActivityId = activityTableService.getListByActivityId(activityId); + if (!listByActivityId.isEmpty()) { + throw exception(new ErrorCode(1_005_000_03, "该桌位已被预定,无法删除")); + } + // 删除 + activityTableDishMapper.deleteById(id); + } + + private void validateActivityTableDishExists(Long id) { + if (activityTableDishMapper.selectById(id) == null) { + throw exception(ACTIVITY_TABLE_DISH_NOT_EXISTS); + } + } + + @Override + public ActivityTableDishDO getActivityTableDish(Long id) { + return activityTableDishMapper.selectById(id); + } + + @Override + public PageResult getActivityTableDishPage(ActivityTableDishPageReqVO pageReqVO) { + return activityTableDishMapper.selectPage(pageReqVO); + } + + @Override + public void createByRestaurant(ActivityRestaurantSaveReqVO activityRestaurantSaveReqVO) { + Integer totalTable = activityRestaurantSaveReqVO.getTotalTable(); + ArrayList activityTableDOS = new ArrayList<>(); + for (int i = 1; i <= totalTable; i++) { + ActivityTableDishDO activityTableDO = new ActivityTableDishDO(); + activityTableDO.setActivityId(activityRestaurantSaveReqVO.getActivityId()); + activityTableDO.setSerialNumber(i); + activityTableDO.setPrice(activityRestaurantSaveReqVO.getPrice()); + activityTableDOS.add(activityTableDO); + } + activityTableDishMapper.insertBatch(activityTableDOS); + } + + @Override + public Boolean updateDish(ActivityUpdateDishVO updateReqVO) { + int update = activityTableDishMapper.update(Wrappers.lambdaUpdate() + .set(ActivityTableDishDO::getDish, updateReqVO.getDish()) + .in(ActivityTableDishDO::getId, updateReqVO.getIds())); + return update>0; + } + + @Override + public List getListByIds(List ids) { + return activityTableDishMapper.selectList(Wrappers.lambdaQuery() + .in(ActivityTableDishDO::getId, ids)); + } +} \ 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/activityuser/ActivityUserService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityuser/ActivityUserService.java new file mode 100644 index 00000000..181869ac --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityuser/ActivityUserService.java @@ -0,0 +1,77 @@ +package cn.iocoder.yudao.module.member.service.activityuser; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserSaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityRespVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityUserRespVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppUserApplyVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityuser.ActivityUserDO; + +import javax.validation.Valid; +import java.util.List; +import java.util.Map; + +/** + * 活动参加人员 Service 接口 + * + * @author 我是秦俊旗 + */ +public interface ActivityUserService { + + /** + * 创建活动参加人员 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createActivityUser(@Valid ActivityUserSaveReqVO createReqVO); + + /** + * 更新活动参加人员 + * + * @param updateReqVO 更新信息 + */ + void updateActivityUser(@Valid ActivityUserSaveReqVO updateReqVO); + + /** + * 删除活动参加人员 + * + * @param id 编号 + */ + void deleteActivityUser(Long id); + + /** + * 获得活动参加人员 + * + * @param id 编号 + * @return 活动参加人员 + */ + ActivityUserDO getActivityUser(Long id); + + /** + * 获得活动参加人员分页 + * + * @param pageReqVO 分页查询 + * @return 活动参加人员分页 + */ + PageResult getActivityUserPage(ActivityUserPageReqVO pageReqVO); + + + Map countByActivityIds(List activityIds); + + + List getUserListByActivityId(Long activityId); + + + Boolean userApply(AppUserApplyVO appUserApplyVO); + + List isApplyByActivityIds(List activityIds,Long userId); + + PageResult getUserRecordPage(ActivityUserPageReqVO pageReqVO); + + List applyUserList(Long activityId); + + Boolean selectIsApply(Long activityId,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/activityuser/ActivityUserServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityuser/ActivityUserServiceImpl.java new file mode 100644 index 00000000..52db2561 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/activityuser/ActivityUserServiceImpl.java @@ -0,0 +1,193 @@ +package cn.iocoder.yudao.module.member.service.activityuser; + +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.module.member.controller.admin.activityawardsuser.vo.ActivityAwardsUserCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserCountVO; +import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserPageReqVO; +import cn.iocoder.yudao.module.member.controller.admin.activityuser.vo.ActivityUserSaveReqVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityRespVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppActivityUserRespVO; +import cn.iocoder.yudao.module.member.controller.app.activity.vo.AppUserApplyVO; +import cn.iocoder.yudao.module.member.dal.dataobject.activity.ActivityDO; +import cn.iocoder.yudao.module.member.dal.dataobject.activityuser.ActivityUserDO; +import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import cn.iocoder.yudao.module.member.dal.mysql.activityuser.ActivityUserMapper; +import cn.iocoder.yudao.module.member.service.activity.ActivityService; +import cn.iocoder.yudao.module.member.service.activityawardsuser.ActivityAwardsUserService; +import cn.iocoder.yudao.module.member.service.user.MemberUserService; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +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 ActivityUserServiceImpl implements ActivityUserService { + + @Resource + private ActivityUserMapper activityUserMapper; + + @Resource + private ActivityService activityService; + @Resource + private ActivityAwardsUserService activityAwardsUserService; + + @Resource + private MemberUserService memberService; + + @Override + public Long createActivityUser(ActivityUserSaveReqVO createReqVO) { + // 插入 + ActivityUserDO activityUser = BeanUtils.toBean(createReqVO, ActivityUserDO.class); + activityUserMapper.insert(activityUser); + // 返回 + return activityUser.getId(); + } + + @Override + public void updateActivityUser(ActivityUserSaveReqVO updateReqVO) { + // 校验存在 + validateActivityUserExists(updateReqVO.getId()); + // 更新 + ActivityUserDO updateObj = BeanUtils.toBean(updateReqVO, ActivityUserDO.class); + activityUserMapper.updateById(updateObj); + } + + @Override + public void deleteActivityUser(Long id) { + // 校验存在 + validateActivityUserExists(id); + // 删除 + activityUserMapper.deleteById(id); + } + + private void validateActivityUserExists(Long id) { + if (activityUserMapper.selectById(id) == null) { + throw exception(ACTIVITY_USER_NOT_EXISTS); + } + } + + @Override + public ActivityUserDO getActivityUser(Long id) { + return activityUserMapper.selectById(id); + } + + @Override + public PageResult getActivityUserPage(ActivityUserPageReqVO pageReqVO) { + return activityUserMapper.selectPage(pageReqVO); + } + + @Override + public Map countByActivityIds(List activityIds) { + List activityUserCountVOS = activityUserMapper.countByActivityIds(activityIds); + if (activityUserCountVOS.isEmpty()) { + return Collections.emptyMap(); + } + return activityUserCountVOS.stream().collect(Collectors.toMap(ActivityUserCountVO::getActivityId, v -> v)); + } + + @Override + public List isApplyByActivityIds(List activityIds, Long userId) { + + List activityUserDOS = activityUserMapper.selectList(Wrappers.lambdaQuery() + .in(ActivityUserDO::getActivityId, activityIds) + .eq(ActivityUserDO::getUserId, userId)); + if (activityUserDOS.isEmpty()) { + return Collections.emptyList(); + } + + return activityUserDOS.stream().map(ActivityUserDO::getActivityId).collect(Collectors.toList()); + } + + @Override + public PageResult getUserRecordPage(ActivityUserPageReqVO pageReqVO) { + PageResult appActivityRespVOPageResult = activityUserMapper.selectUserRecordPage(pageReqVO); + if (CollectionUtil.isEmpty(appActivityRespVOPageResult.getList())) { + return appActivityRespVOPageResult; + } + List list = appActivityRespVOPageResult.getList(); + List activityIds = list.stream().map(AppActivityRespVO::getId).collect(Collectors.toList()); + Map userCountVOMap = countByActivityIds(activityIds); + Map awardsUserCountVOMap = activityAwardsUserService.countByActivityIds(activityIds); + + for (AppActivityRespVO activity : list) { + activity.setApplyNum(userCountVOMap.getOrDefault(activity.getId(), new ActivityUserCountVO()).getApplyNum()); + activity.setAwards(activityAwardsUserService.getListByActivityIdAndUserId(activity.getId(), pageReqVO.getUserId())); + activity.setAwardsNum(awardsUserCountVOMap.getOrDefault(activity.getId(), new ActivityAwardsUserCountVO()).getAwardsNum()); + } + return appActivityRespVOPageResult; + } + + @Override + public List getUserListByActivityId(Long activityId) { + return activityUserMapper.selectList(Wrappers.lambdaQuery().eq(ActivityUserDO::getActivityId, activityId)); + } + + @Override + public Boolean userApply(AppUserApplyVO appUserApplyVO) { + ActivityDO activity = activityService.getActivity(appUserApplyVO.getActivityId()); + if(activity == null){ + throw exception(ACTIVITY_NOT_EXISTS); + } + LocalDateTime now = LocalDateTime.now(); + //activity.getStartTime().isAfter(now) || + if( activity.getEndTime().isBefore(now)){ + throw exception(new ErrorCode(1_005_000_10, "活动未开始")); + } + List activityUserDOS = activityUserMapper.selectList(Wrappers.lambdaQuery() + .eq(ActivityUserDO::getActivityId, appUserApplyVO.getActivityId()) + .eq(ActivityUserDO::getUserId, appUserApplyVO.getUserId())); + if(CollectionUtil.isNotEmpty(activityUserDOS)){ + throw exception(ACTIVITY_USER_JOIN); + } + MemberUserDO user = memberService.getUser(appUserApplyVO.getUserId()); + if(user == null){ + throw exception(USER_NOT_EXISTS); + } + ActivityUserDO activityUserDO = new ActivityUserDO(); + activityUserDO.setActivityId(appUserApplyVO.getActivityId()); + activityUserDO.setUserId(appUserApplyVO.getUserId()); + activityUserDO.setMobile(appUserApplyVO.getMobile()); + activityUserDO.setNickName(user.getNickname()); + activityUserDO.setAvatar(user.getAvatar()); + int insert = activityUserMapper.insert(activityUserDO); + return insert>0; + } + + @Override + public List applyUserList(Long activityId) { + List activityUserDOS = activityUserMapper.selectList(Wrappers.lambdaQuery() + .eq(ActivityUserDO::getActivityId, activityId) + .last("limit 20") + ); + return BeanUtil.copyToList(activityUserDOS, AppActivityUserRespVO.class); + } + + @Override + public Boolean selectIsApply(Long activityId, Long userId) { + List activityUserDOS = activityUserMapper.selectList(Wrappers.lambdaQuery() + .eq(ActivityUserDO::getActivityId, activityId) + .eq(ActivityUserDO::getUserId, userId) + ); + return CollectionUtil.isNotEmpty(activityUserDOS); + + } +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activity/ActivityMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activity/ActivityMapper.xml new file mode 100644 index 00000000..8db46b7b --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activity/ActivityMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityawards/ActivityAwardsMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityawards/ActivityAwardsMapper.xml new file mode 100644 index 00000000..a91ddde6 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityawards/ActivityAwardsMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityawardsuser/ActivityAwardsUserMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityawardsuser/ActivityAwardsUserMapper.xml new file mode 100644 index 00000000..ce442808 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityawardsuser/ActivityAwardsUserMapper.xml @@ -0,0 +1,23 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitypay/ActivityPayMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitypay/ActivityPayMapper.xml new file mode 100644 index 00000000..3c76f6f0 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitypay/ActivityPayMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityrestaurant/ActivityRestaurantMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityrestaurant/ActivityRestaurantMapper.xml new file mode 100644 index 00000000..78ec1462 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityrestaurant/ActivityRestaurantMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitytable/ActivityTableMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitytable/ActivityTableMapper.xml new file mode 100644 index 00000000..ff5a9173 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activitytable/ActivityTableMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + delete from member_activity_table where activity_id = #{activityId} + + + \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityuser/ActivityUserMapper.xml b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityuser/ActivityUserMapper.xml new file mode 100644 index 00000000..64306f21 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/resources/mapper/activityuser/ActivityUserMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + \ 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 e0ef546c..3817b708 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 @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.pay.controller.admin.notify; import cn.hutool.core.collection.CollUtil; +import cn.hutool.json.JSONUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.json.JsonUtils; @@ -10,6 +11,8 @@ import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderRespDTO; import cn.iocoder.yudao.framework.pay.core.client.dto.refund.PayRefundRespDTO; import cn.iocoder.yudao.framework.pay.core.enums.divide.PayDivideRefundStatusRespEnum; import cn.iocoder.yudao.framework.pay.core.enums.refund.PayRefundStatusRespEnum; +import cn.iocoder.yudao.module.member.api.activitypay.ActivityApi; +import cn.iocoder.yudao.module.member.api.activitypay.dto.ActivityPayDTO; import cn.iocoder.yudao.module.member.api.card.CardApi; import cn.iocoder.yudao.module.pay.controller.admin.notify.vo.PayNotifyTaskDetailRespVO; import cn.iocoder.yudao.module.pay.controller.admin.notify.vo.PayNotifyTaskPageReqVO; @@ -38,18 +41,14 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.annotation.security.PermitAll; import javax.validation.Valid; import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -87,6 +86,8 @@ public class PayNotifyController { private StringRedisTemplate notifyRedisTemplate; @Resource private CardApi cardApi; + @Resource + private ActivityApi activityApi; @PostMapping(value = "/order/{channelId}") @Operation(summary = "支付渠道的统一【支付】回调") @@ -117,6 +118,45 @@ public class PayNotifyController { return "success"; } + @PostMapping(value = "/reserved/{channelId}") + @Operation(summary = "支付渠道的统一【支付】回调") + @PermitAll + @OperateLog(enable = false) // 回调地址,无需记录操作日志 + public String reservedNotifyOrder(@PathVariable("channelId") Long channelId, + @RequestParam(required = false) Map params, + @RequestBody(required = false) String body) { + log.info("[notifyOrder][channelId({}) 回调数据({}/{})]", channelId, params, body); + // 1. 校验支付渠道是否存在 + PayClient payClient = channelService.getPayClient(channelId); + if (payClient == null) { + log.error("[notifyCallback][渠道编号({}) 找不到对应的支付客户端]", channelId); + throw exception(CHANNEL_NOT_FOUND); + } + + // 2. 解析通知数据 + PayOrderRespDTO notify = payClient.parseOrderNotify(params, body); + orderService.notifyOrder(channelId, notify); + String re = notifyRedisTemplate.opsForValue().get("RESERVED" + notify.getOutTradeNo()); + if(StringUtils.isNotBlank(re) ){ + log.info("开始进行订单记录增加,获取的数据:{}", re); + HashMap deserializedMap = JSONUtil.toBean(re, HashMap.class); + + ActivityPayDTO activityPayDTO = new ActivityPayDTO(); + activityPayDTO.setActivityId(Long.valueOf(deserializedMap.get("activityId"))); + activityPayDTO.setSerialNumbers(deserializedMap.get("serialNumbers")); + activityPayDTO.setPrice(new BigDecimal(deserializedMap.get("price")).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP)); + activityPayDTO.setUserId(Long.valueOf(deserializedMap.get("userId"))); + activityPayDTO.setStatus(deserializedMap.get("status")); + activityPayDTO.setReserveTime(deserializedMap.get("reserveTime")); + activityPayDTO.setDish( deserializedMap.get("dish")); + activityPayDTO.setDiningPeriod( deserializedMap.get("diningPeriod")); + + activityApi.createActivityPay(activityPayDTO); + notifyRedisTemplate.delete("RESERVED" + notify.getOutTradeNo()); + } + return "success"; + } + @PostMapping(value = "/refund/{channelId}") @Operation(summary = "支付渠道的统一【退款】回调") @PermitAll 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 ffda105b..9315438b 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 @@ -30,4 +30,17 @@ public class PayOrderSubmitReqVO { @URL(message = "回跳地址的格式必须是 URL") private String returnUrl; + private String serialNumbers; + + private Long activityId; + + private Long userId; + + private String status; + + private String reserveTime; + + private String dish; + + private String diningPeriod; } diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/app/wallet/vo/recharge/AppPayWalletRechargeCreateReqVO.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/app/wallet/vo/recharge/AppPayWalletRechargeCreateReqVO.java index 1049e4e2..5620e355 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/app/wallet/vo/recharge/AppPayWalletRechargeCreateReqVO.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/app/wallet/vo/recharge/AppPayWalletRechargeCreateReqVO.java @@ -18,6 +18,9 @@ public class AppPayWalletRechargeCreateReqVO { @Schema(description = "充值套餐编号", example = "1024") private Long packageId; + @Schema(description = "充值类型,1-充值 2-活动订餐", example = "1024") + private String type; + @AssertTrue(message = "充值金额和充钱套餐不能同时为空") public boolean isValidPayPriceAndPackageId() { return Objects.nonNull(payPrice) || Objects.nonNull(packageId); diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/config/PayProperties.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/config/PayProperties.java index 617cd5a4..14cc6921 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/config/PayProperties.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/framework/pay/config/PayProperties.java @@ -28,6 +28,11 @@ public class PayProperties { @URL(message = "支付回调地址的格式必须是 URL") private String orderNotifyUrl; + + @NotEmpty(message = "预定支付回调地址不能为空") + @URL(message = "预定支付回调地址的格式必须是 URL") + private String reservedNotifyUrl; + /** * 退款回调地址 * 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 8f00b145..ba4fdd5d 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 @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; +import cn.hutool.json.JSONUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils; import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; @@ -43,10 +44,7 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.time.LocalDateTime; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Objects; +import java.util.*; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; @@ -174,10 +172,28 @@ public class PayOrderServiceImpl implements PayOrderService { .setReturnUrl(reqVO.getReturnUrl()) // 订单相关字段 .setPrice(order.getPrice()).setExpireTime(order.getExpireTime()); + if (reqVO.getActivityId()!=null){ + unifiedOrderReqDTO.setNotifyUrl(genChannelReservedNotifyUrl(channel)); + + HashMap stringStringHashMap = new HashMap<>(); + stringStringHashMap.put("activityId",reqVO.getActivityId().toString()); + stringStringHashMap.put("userId",getLoginUserId().toString()); + stringStringHashMap.put("serialNumbers",reqVO.getSerialNumbers()); + stringStringHashMap.put("price",unifiedOrderReqDTO.getPrice().toString()); + stringStringHashMap.put("status",reqVO.getStatus()); + stringStringHashMap.put("reserveTime",reqVO.getReserveTime()); + stringStringHashMap.put("dish",reqVO.getDish()); + stringStringHashMap.put("diningPeriod",reqVO.getDiningPeriod()); + + payRedis.opsForValue().set("RESERVED"+unifiedOrderReqDTO.getOutTradeNo() + , JSONUtil.toJsonStr(stringStringHashMap)); + log.info("REDIS_ID:RESERVED{} 总金额:{}", unifiedOrderReqDTO.getOutTradeNo(), unifiedOrderReqDTO.getPrice().toString()); + }else{ + payRedis.opsForValue().set("ADD"+unifiedOrderReqDTO.getOutTradeNo() + ,unifiedOrderReqDTO.getPrice().toString()+"-"+getLoginUserId()); + log.info("REDIS_ID:ADD{} 总金额:{}", unifiedOrderReqDTO.getOutTradeNo(), unifiedOrderReqDTO.getPrice().toString()); + } PayOrderRespDTO unifiedOrderResp = client.unifiedOrder(unifiedOrderReqDTO); - payRedis.opsForValue().set("ADD"+unifiedOrderReqDTO.getOutTradeNo() - ,unifiedOrderReqDTO.getPrice().toString()+"-"+getLoginUserId()); - log.info("REDISID:"+"ADD"+unifiedOrderReqDTO.getOutTradeNo()+" 总金额:"+unifiedOrderReqDTO.getPrice().toString()); // 4. 如果调用直接支付成功,则直接更新支付单状态为成功。例如说:付款码支付,免密支付时,就直接验证支付成功 if (unifiedOrderResp != null) { getSelf().notifyOrder(channel, unifiedOrderResp); @@ -265,6 +281,10 @@ public class PayOrderServiceImpl implements PayOrderService { return payProperties.getOrderNotifyUrl() + "/" + channel.getId(); } + private String genChannelReservedNotifyUrl(PayChannelDO channel) { + return payProperties.getReservedNotifyUrl() + "/" + channel.getId(); + } + @Override public void notifyOrder(Long channelId, PayOrderRespDTO notify) { // 校验支付渠道是否有效 diff --git a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java index 2de531c8..7c559fe9 100644 --- a/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java +++ b/yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java @@ -82,10 +82,15 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService { walletRechargeMapper.insert(recharge); // 2.1 创建支付单 + String subject = WALLET_RECHARGE_ORDER_SUBJECT; + if("2".equals(reqVO.getType())){ + subject = "活动订餐"; + } Long payOrderId = payOrderService.createOrder(new PayOrderCreateReqDTO() .setAppId(WALLET_PAY_APP_ID).setUserIp(userIp) .setMerchantOrderId(recharge.getId().toString()) // 业务的订单编号 - .setSubject(WALLET_RECHARGE_ORDER_SUBJECT).setBody("") + .setSubject(subject) + .setBody("") .setPrice(recharge.getPayPrice()) .setExpireTime(addTime(Duration.ofHours(2L)))); // TODO @芋艿:支付超时时间 // 2.2 更新钱包充值记录中支付订单 diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index e46dddcb..c282ff06 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -214,10 +214,12 @@ yudao: - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求 - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求 pay: - order-notify-url: https://yclhit.com:8896/admin-api/pay/notify/order # 支付渠道的【支付】回调地址 - refund-notify-url: https://yclhit.com:8896/admin-api/pay/notify/refund # 支付渠道的【退款】回调地址 -# order-notify-url: http://124.221.179.32:8895/admin-api/pay/notify/order # 支付渠道的【支付】回调地址 -# refund-notify-url: http://124.221.179.32:8895/admin-api/pay/notify/refund # 支付渠道的【退款】回调地址 +# order-notify-url: https://yclhit.com:8896/admin-api/pay/notify/order # 支付渠道的【支付】回调地址 +# refund-notify-url: https://yclhit.com:8896/admin-api/pay/notify/refund # 支付渠道的【退款】回调地址 +# reserved-notify-url: http://yclhit.com:8896/admin-api/pay/notify/reserved + order-notify-url: http://113.45.166.158:8895/admin-api/pay/notify/order # 支付渠道的【支付】回调地址 + refund-notify-url: http://113.45.166.158:8895/admin-api/pay/notify/refund # 支付渠道的【退款】回调地址 + reserved-notify-url: http://113.45.166.158:8895/admin-api/pay/notify/reserved # 支付渠道的【退款】回调地址 access-log: # 访问日志的配置项 enable: false error-code: # 错误码相关配置项