From 978df0ea9505c0fc4db2db4dece1e95bb2b2614b Mon Sep 17 00:00:00 2001 From: 77 <77@77.com> Date: Sat, 11 May 2024 01:48:06 +0800 Subject: [PATCH] init --- .../ruoyi/xq/constant/RedisHttpConstant.java | 2 + .../xq/controller/ActivityShopController.java | 16 +++- .../app/ActivityMatchmakingController.java | 27 ++++--- .../com/ruoyi/xq/domain/ActivityOrder.java | 1 + .../activity/ActivityShopAdminUpdateReq.java | 73 +++++++++++++++++++ .../admin/activity/ActivityShopAdminVo.java | 11 +++ .../xq/dto/app/activity/FreeJoinReq.java | 18 +++++ .../ruoyi/xq/dto/app/activity/JoinResp.java | 2 +- .../main/java/com/ruoyi/xq/kit/CodeKit.java | 33 +++++++++ .../ruoyi/xq/service/ActivityShopService.java | 10 ++- .../ruoyi/xq/service/ActivityUserService.java | 5 ++ .../impl/ActivityOrderServiceImpl.java | 1 + .../service/impl/ActivityShopServiceImpl.java | 61 ++++++++++++---- .../service/impl/ActivityUserServiceImpl.java | 22 ++++++ 14 files changed, 252 insertions(+), 30 deletions(-) create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/activity/ActivityShopAdminUpdateReq.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/activity/ActivityShopAdminVo.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/activity/FreeJoinReq.java create mode 100644 ruoyi-xq/src/main/java/com/ruoyi/xq/kit/CodeKit.java diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/constant/RedisHttpConstant.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/constant/RedisHttpConstant.java index b560623..9aafc4b 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/constant/RedisHttpConstant.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/constant/RedisHttpConstant.java @@ -5,6 +5,8 @@ public class RedisHttpConstant { public static final String SYSTEM_CONFIG = REDIS_P + "system-config"; public static final String RESET_PASSWORD_CHECK_REDIS = REDIS_P + "resetPasswordCheck:%s"; + + public static final String CODE_REDIS = REDIS_P + "codeIncs:%s:%s"; } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/ActivityShopController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/ActivityShopController.java index c7cbdaf..6a40cbc 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/ActivityShopController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/ActivityShopController.java @@ -13,6 +13,9 @@ import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.xq.domain.ActivityShop; +import com.ruoyi.xq.dto.admin.activity.ActivityShopAdminUpdateReq; +import com.ruoyi.xq.dto.admin.activity.ActivityShopAdminVo; +import com.ruoyi.xq.enums.activity.ActivityShopStatusEnum; import com.ruoyi.xq.service.ActivityShopService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; @@ -20,7 +23,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; -import java.util.Arrays; +import java.util.List; /** * 相亲会 @@ -41,9 +44,14 @@ public class ActivityShopController extends BaseController { */ @SaCheckPermission("xq:activityShop:list") @GetMapping("/list") - public TableDataInfo list(ActivityShop bo, PageQuery pageQuery) { + public TableDataInfo list(ActivityShop bo, PageQuery pageQuery) { Page page = activityShopService.page(pageQuery.build(), Wrappers.lambdaQuery(bo)); - return TableDataInfo.build(page); + TableDataInfo build = TableDataInfo.build(page, ActivityShopAdminVo::new); + List rows = build.getRows(); + for (ActivityShopAdminVo row : rows) { + row.setOpenStatus(ActivityShopStatusEnum.getEnumByTime(row.getStartTime(), row.getEndTime()).getCode()); + } + return build; } @@ -67,7 +75,7 @@ public class ActivityShopController extends BaseController { @Log(title = "相亲会", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping() - public R edit(@Validated(EditGroup.class) @RequestBody ActivityShop bo) { + public R edit(@Validated(EditGroup.class) @RequestBody ActivityShopAdminUpdateReq bo) { activityShopService.updateData(bo); return R.ok(); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/ActivityMatchmakingController.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/ActivityMatchmakingController.java index 1aa48df..07d6960 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/ActivityMatchmakingController.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/controller/app/ActivityMatchmakingController.java @@ -10,9 +10,7 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.helper.LoginHelper; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.xq.domain.ActivityOrder; -import com.ruoyi.xq.dto.app.activity.ActivityShopAppInfo; -import com.ruoyi.xq.dto.app.activity.ActivityShopAppList; -import com.ruoyi.xq.dto.app.activity.CreateOrderReq; +import com.ruoyi.xq.dto.app.activity.*; import com.ruoyi.xq.dto.app.common.IdReq; import com.ruoyi.xq.dto.app.pay.OrderCreateVo; import com.ruoyi.xq.service.ActivityOrderService; @@ -26,7 +24,7 @@ import org.springframework.web.bind.annotation.*; @Validated @RestController @Tag(name = "相亲会相关接口") -@RequestMapping("/xq/activity/matchmaking") +@RequestMapping("/api/activity/matchmaking") public class ActivityMatchmakingController { @Autowired @@ -54,13 +52,22 @@ public class ActivityMatchmakingController { return R.ok(info); } - @PostMapping("/join") - @Operation(summary = "参加相亲会") - @Log(title = "参加相亲会", businessType = BusinessType.OTHER) - public R join(@RequestBody IdReq idReq){ + @PostMapping("/checkJoin") + @Operation(summary = "参加相亲会-检测") + @Log(title = "参加相亲会-检测", businessType = BusinessType.OTHER) + public R join(@RequestBody IdReq idReq){ Long userId = LoginHelper.getUserId(); - activityShopService.join(userId,idReq.getId()); - return R.ok(); + JoinResp join = activityShopService.checkJoin(userId, idReq.getId()); + return R.ok(join); + } + + @PostMapping("/freeJoin") + @Operation(summary = "参加相亲会(免费)") + @Log(title = "参加相亲会(免费)", businessType = BusinessType.OTHER) + public R freeJoin(@RequestBody FreeJoinReq req){ + req.setUserId(LoginHelper.getUserId()); + JoinResp join = activityShopService.join(req); + return R.ok(join); } @PostMapping("/create/order") diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/ActivityOrder.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/ActivityOrder.java index d22f565..5aac750 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/ActivityOrder.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/domain/ActivityOrder.java @@ -54,6 +54,7 @@ public class ActivityOrder implements Serializable { * 活动标题 */ private String activityTitle; + private String activityCode; private String activityMobile; /** * 订单说明 diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/activity/ActivityShopAdminUpdateReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/activity/ActivityShopAdminUpdateReq.java new file mode 100644 index 0000000..0f96e97 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/activity/ActivityShopAdminUpdateReq.java @@ -0,0 +1,73 @@ +package com.ruoyi.xq.dto.admin.activity; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class ActivityShopAdminUpdateReq { + private Long id; + + /** + * 活动标题 + */ + private String activityTitle; + /** + * 活动展示图片 + */ + private String activityBanner; + /** + * 开始时间 + */ + private LocalDateTime startTime; + /** + * 结束时间 + */ + private LocalDateTime endTime; + /** + * 城市名称 + */ + private String cityName; + /** + * 城市编码 + */ + private Integer cityCode; + /** + * 详细地址 + */ + private String address; + /** + * 活动详细说明 + */ + private String activityText; + /** + * 女生人数上限 + */ + private Integer womenMaxNum; + /** + * 男生人数上限 + */ + private Integer manMaxNum; + /** + * 女生参与价格 + */ + private BigDecimal joinWomenPrice; + /** + * 男生参与价格 + */ + private BigDecimal joinManPrice; + /** + * 必须强制会员参与 + */ + private Integer mustVip; + /** + * 必须强制实名用户参与 + */ + private Integer mustAuth; + /** + * 费用说明 + */ + private String priceText; + +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/activity/ActivityShopAdminVo.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/activity/ActivityShopAdminVo.java new file mode 100644 index 0000000..2c513e2 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/admin/activity/ActivityShopAdminVo.java @@ -0,0 +1,11 @@ +package com.ruoyi.xq.dto.admin.activity; + +import com.ruoyi.xq.domain.ActivityShop; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class ActivityShopAdminVo extends ActivityShop { + @Schema(description = "状态 0-未开始 1-已开始 2-已结束") + private Integer openStatus; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/activity/FreeJoinReq.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/activity/FreeJoinReq.java new file mode 100644 index 0000000..fd8f488 --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/activity/FreeJoinReq.java @@ -0,0 +1,18 @@ +package com.ruoyi.xq.dto.app.activity; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class FreeJoinReq { + @Schema(description = "相亲会ID") + private Long activityId; + + @Schema(description = "手机号") + private String mobile; + + @Schema(hidden = true) + private Long userId; +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/activity/JoinResp.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/activity/JoinResp.java index 66bc861..8d72776 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/activity/JoinResp.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/dto/app/activity/JoinResp.java @@ -8,7 +8,7 @@ import java.math.BigDecimal; @Data public class JoinResp { - @Schema(description = "是否成功加入") + @Schema(description = "是否允许加入") private boolean joinSuccess; @Schema(description = "失败原因 1-未实名认证 2-未开启VIP 3-需要支付 99-其他") private Integer failCode; diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/kit/CodeKit.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/kit/CodeKit.java new file mode 100644 index 0000000..2b27bff --- /dev/null +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/kit/CodeKit.java @@ -0,0 +1,33 @@ +package com.ruoyi.xq.kit; + +import com.ruoyi.xq.constant.RedisHttpConstant; +import org.redisson.api.RAtomicLong; +import org.redisson.api.RedissonClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.time.Duration; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.concurrent.TimeUnit; + +@Component +public class CodeKit { + @Autowired + private RedissonClient redissonClient; + + + public String nextCode(String prefix){ + String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")); + String key = String.format(RedisHttpConstant.CODE_REDIS, prefix, date); + RAtomicLong atomicLong = redissonClient.getAtomicLong(key); + long num = atomicLong.incrementAndGet(); + atomicLong.expire(Duration.ofDays(2)); + String code = String.format("%s%s%04d", prefix, date, num); + return code; + } + public String nextCodeActivity(){ + return nextCode("AC"); + } +} diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/ActivityShopService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/ActivityShopService.java index b136c36..1ce007a 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/ActivityShopService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/ActivityShopService.java @@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.xq.domain.ActivityShop; +import com.ruoyi.xq.dto.admin.activity.ActivityShopAdminUpdateReq; import com.ruoyi.xq.dto.app.activity.ActivityShopAppInfo; import com.ruoyi.xq.dto.app.activity.ActivityShopAppList; +import com.ruoyi.xq.dto.app.activity.FreeJoinReq; import com.ruoyi.xq.dto.app.activity.JoinResp; /** @@ -24,13 +26,17 @@ public interface ActivityShopService extends IService { ActivityShopAppInfo info(Long activityId, String activityCode); - JoinResp join(Long userId, Long activityId); + JoinResp join(FreeJoinReq req); + + JoinResp checkJoin(Long userId, Long id); void saveData(ActivityShop bo); - void updateData(ActivityShop bo); + void updateData(ActivityShopAdminUpdateReq bo); void updateDataUser(ActivityShop bo); void removeDataByIds(Long[] ids); + + } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/ActivityUserService.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/ActivityUserService.java index 1c7fae3..862acc7 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/ActivityUserService.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/ActivityUserService.java @@ -1,6 +1,7 @@ package com.ruoyi.xq.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.xq.domain.ActivityShop; import com.ruoyi.xq.domain.ActivityUser; /** @@ -13,5 +14,9 @@ public interface ActivityUserService extends IService { void joinActivity(String orderNo); + void joinActivity(Long activityId,String mobile,Long userId); + Long countByActivityIdAndGender(Long id, Integer gender); + + boolean checkJoin(Long userId, Long activityId); } diff --git a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/ActivityOrderServiceImpl.java b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/ActivityOrderServiceImpl.java index 540e724..5888842 100644 --- a/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/ActivityOrderServiceImpl.java +++ b/ruoyi-xq/src/main/java/com/ruoyi/xq/service/impl/ActivityOrderServiceImpl.java @@ -78,6 +78,7 @@ public class ActivityOrderServiceImpl extends ServiceImpl