From c03678bd93cc2817e715fe3b1e75ca46c9a08ee3 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 28 Aug 2025 15:07:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(mobile):=20=E6=B7=BB=E5=8A=A0=E6=99=AF?= =?UTF-8?q?=E5=8C=BA=E8=B4=A6=E5=8F=B7=E6=B3=A8=E5=86=8C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增注册接口和相关请求/响应对象 - 实现手机号格式验证、密码非空验证 - 检查手机号是否已注册 - 创建新账号并设置初始状态 - 返回注册结果及提示信息 --- .../manage/AppScenicAccountController.java | 9 ++++ .../scenic/account/ScenicRegisterReq.java | 14 +++++ .../scenic/account/ScenicRegisterRespVO.java | 17 ++++++ .../service/mobile/AppScenicService.java | 4 ++ .../mobile/impl/AppScenicServiceImpl.java | 53 +++++++++++++++++++ 5 files changed, 97 insertions(+) create mode 100644 src/main/java/com/ycwl/basic/model/mobile/scenic/account/ScenicRegisterReq.java create mode 100644 src/main/java/com/ycwl/basic/model/mobile/scenic/account/ScenicRegisterRespVO.java diff --git a/src/main/java/com/ycwl/basic/controller/mobile/manage/AppScenicAccountController.java b/src/main/java/com/ycwl/basic/controller/mobile/manage/AppScenicAccountController.java index 8e292ea..a032e62 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/manage/AppScenicAccountController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/manage/AppScenicAccountController.java @@ -5,6 +5,8 @@ import com.ycwl.basic.constant.BaseContextHandler; import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginOldRespVO; import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginReq; import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginRespVO; +import com.ycwl.basic.model.mobile.scenic.account.ScenicRegisterReq; +import com.ycwl.basic.model.mobile.scenic.account.ScenicRegisterRespVO; import com.ycwl.basic.model.mobile.weChat.DTO.WeChatUserInfoDTO; import com.ycwl.basic.model.pc.device.resp.DeviceRespVO; import com.ycwl.basic.model.pc.scenic.entity.ScenicAccountEntity; @@ -63,6 +65,13 @@ public class AppScenicAccountController { return ApiResponse.success(vo); } + // 注册 + @PostMapping("/register") + @IgnoreToken + public ApiResponse register(@RequestBody ScenicRegisterReq scenicRegisterReq) { + return scenicService.register(scenicRegisterReq); + } + @GetMapping("/myScenicList") public ApiResponse> myScenicList() { List list; diff --git a/src/main/java/com/ycwl/basic/model/mobile/scenic/account/ScenicRegisterReq.java b/src/main/java/com/ycwl/basic/model/mobile/scenic/account/ScenicRegisterReq.java new file mode 100644 index 0000000..653b4ae --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/mobile/scenic/account/ScenicRegisterReq.java @@ -0,0 +1,14 @@ +package com.ycwl.basic.model.mobile.scenic.account; + +import lombok.Data; + +/** + * 景区账号注册请求 + * @Author:longbinbin + * @Date:2024/12/28 10:00 + */ +@Data +public class ScenicRegisterReq { + private String phone; + private String password; +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/model/mobile/scenic/account/ScenicRegisterRespVO.java b/src/main/java/com/ycwl/basic/model/mobile/scenic/account/ScenicRegisterRespVO.java new file mode 100644 index 0000000..b2cadba --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/mobile/scenic/account/ScenicRegisterRespVO.java @@ -0,0 +1,17 @@ +package com.ycwl.basic.model.mobile.scenic.account; + +import lombok.Data; + +/** + * 景区账号注册响应 + * @Author:longbinbin + * @Date:2024/12/28 10:00 + */ +@Data +public class ScenicRegisterRespVO { + private Long id; + private String account; + private String phone; + private Integer isActive; + private String message; +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/service/mobile/AppScenicService.java b/src/main/java/com/ycwl/basic/service/mobile/AppScenicService.java index 6f8a78f..b2168f1 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/AppScenicService.java +++ b/src/main/java/com/ycwl/basic/service/mobile/AppScenicService.java @@ -6,6 +6,8 @@ import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO; import com.ycwl.basic.model.mobile.scenic.ScenicIndexVO; import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginReq; import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginRespVO; +import com.ycwl.basic.model.mobile.scenic.account.ScenicRegisterReq; +import com.ycwl.basic.model.mobile.scenic.account.ScenicRegisterRespVO; import com.ycwl.basic.model.pc.device.resp.DeviceRespVO; import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery; import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO; @@ -26,6 +28,8 @@ public interface AppScenicService { ApiResponse login(ScenicLoginReq scenicLoginReq) throws Exception; + ApiResponse register(ScenicRegisterReq scenicRegisterReq); + List scenicListByLnLa(ScenicIndexVO scenicIndexVO); ApiResponse> getDevices(Long scenicId); diff --git a/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java b/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java index b3ab480..3a7825b 100644 --- a/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/mobile/impl/AppScenicServiceImpl.java @@ -11,6 +11,8 @@ import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO; import com.ycwl.basic.model.mobile.scenic.ScenicIndexVO; import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginReq; import com.ycwl.basic.model.mobile.scenic.account.ScenicLoginRespVO; +import com.ycwl.basic.model.mobile.scenic.account.ScenicRegisterReq; +import com.ycwl.basic.model.mobile.scenic.account.ScenicRegisterRespVO; import com.ycwl.basic.model.pc.device.entity.DeviceEntity; import com.ycwl.basic.model.pc.device.resp.DeviceRespVO; import com.ycwl.basic.model.pc.scenic.entity.ScenicAccountEntity; @@ -116,6 +118,57 @@ public class AppScenicServiceImpl implements AppScenicService { return ApiResponse.success(scenicLoginRespVO); } + @Override + public ApiResponse register(ScenicRegisterReq scenicRegisterReq) { + // 验证手机号格式 + if (scenicRegisterReq.getPhone() == null || !scenicRegisterReq.getPhone().matches("^1[3-9]\\d{9}$")) { + return ApiResponse.fail("手机号格式不正确"); + } + + // 验证密码不能为空 + if (scenicRegisterReq.getPassword() == null || scenicRegisterReq.getPassword().trim().isEmpty()) { + return ApiResponse.fail("密码不能为空"); + } + + // 检查手机号是否已存在 + try { + ScenicAccountEntity existingAccount = scenicAccountService.getScenicAccountByAccount(scenicRegisterReq.getPhone()); + if (existingAccount != null) { + return ApiResponse.fail("该手机号已注册"); + } + } catch (Exception e) { + // 如果抛出异常说明账号不存在,可以继续注册 + } + + // 创建新账号 + ScenicAccountEntity newAccount = new ScenicAccountEntity(); + newAccount.setAccount(scenicRegisterReq.getPhone()); + newAccount.setPhone(scenicRegisterReq.getPhone()); + newAccount.setPassword(scenicRegisterReq.getPassword()); + newAccount.setIsActive(0); // 未激活状态 + newAccount.setStatus(1); // 正常状态 + newAccount.setCreateTime(new Date()); + newAccount.setUpdateTime(new Date()); + + try { + int result = scenicAccountService.addScenicAccount(newAccount); + if (result > 0) { + ScenicRegisterRespVO response = new ScenicRegisterRespVO(); + response.setId(newAccount.getId()); + response.setAccount(newAccount.getAccount()); + response.setPhone(newAccount.getPhone()); + response.setIsActive(newAccount.getIsActive()); + response.setMessage("注册成功,请等待后台激活"); + return ApiResponse.success(response); + } else { + return ApiResponse.fail("注册失败"); + } + } catch (Exception e) { + log.error("注册失败", e); + return ApiResponse.fail("注册失败:" + e.getMessage()); + } + } + @Override public List scenicListByLnLa(ScenicIndexVO scenicIndexVO) { List scenicAppVOS = scenicMapper.scenicListByLnLa(scenicIndexVO);