diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/MemberErrorCode.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/MemberErrorCode.java index aae9bd6..424ad4d 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/MemberErrorCode.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/MemberErrorCode.java @@ -12,6 +12,7 @@ public interface MemberErrorCode { ErrorCode USER_MOBILE_NOT_EXISTS = new ErrorCode(1_004_001_001, "手机号未注册用户"); ErrorCode USER_MOBILE_USED = new ErrorCode(1_004_001_002, "修改手机失败,该手机号({})已经被使用"); ErrorCode USER_POINT_NOT_ENOUGH = new ErrorCode(1_004_001_003, "用户积分余额不足"); + ErrorCode USER_REGISTER_MOBILE_USED = new ErrorCode(1_004_001_004, "注册失败,该手机号({})已经被使用"); // ========== AUTH 模块 1-004-003-000 ========== ErrorCode AUTH_LOGIN_BAD_CREDENTIALS = new ErrorCode(1_004_003_000, "登录失败,账号密码不正确"); diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/MemberRecentOperateEnum.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/MemberRecentOperateEnum.java index 5572aa6..ca1bb0d 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/MemberRecentOperateEnum.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/MemberRecentOperateEnum.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -45,8 +46,21 @@ public enum MemberRecentOperateEnum { private final String type; private final String description; + public static List userOperateList = new ArrayList() {{ + add(MEMBER_COLLECT); + add(MEMBER_SHIELD); + add(MEMBER_REPORT); + add(MEMBER_RATING); + }}; + + public static List recentOperateList = new ArrayList() {{ + add(RECENT_LIKE); + add(RECENT_REPORT); + add(RECENT_SHIELD); + }}; + public static boolean contains(MemberRecentOperateEnum operateEnum) { - return Arrays.asList(values()).stream().anyMatch(v -> ObjectUtil.equals(v.type, operateEnum.getType())); + return Arrays.stream(values()).anyMatch(v -> ObjectUtil.equals(v.type, operateEnum.getType())); } public static boolean contains(List operateEnumList) { diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/OperationRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/OperationRespVO.java index 2de78f7..57a8f6c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/OperationRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/OperationRespVO.java @@ -2,9 +2,13 @@ package cn.iocoder.yudao.module.member.controller.admin.recent.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; + import java.util.*; + import org.springframework.format.annotation.DateTimeFormat; + import java.time.LocalDateTime; + import com.alibaba.excel.annotation.*; @Schema(description = "管理后台 - 朋友圈操作 Response VO") @@ -60,4 +64,20 @@ public class OperationRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + /** + * 用户相关 + */ + + @Schema(description = "用户头像") + private String memberAvatar; + + @Schema(description = "用户昵称") + private String memberNickname; + + @Schema(description = "用户年龄") + private String memberAge; + + @Schema(description = "用户职业") + private String memberOcc; + } \ 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/recent/vo/RecentPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentPageReqVO.java index 29899fd..d295793 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentPageReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentPageReqVO.java @@ -23,10 +23,10 @@ public class RecentPageReqVO extends PageParam { private String describe; @Schema(description = "发布-经度") - private BigDecimal issueLong; + private Double issueLong; @Schema(description = "发布-纬度") - private BigDecimal issueLat; + private Double issueLat; @Schema(description = "发布-省") private String issueProvince; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentPageResVo.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentPageResVo.java index 1823a0d..358421c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentPageResVo.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentPageResVo.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.member.controller.admin.recent.vo; +import cn.iocoder.yudao.module.member.dal.dataobject.recent.OperationDO; import cn.iocoder.yudao.module.member.dal.dataobject.recent.RecentDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentRespVO.java index d51e81e..b38de03 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentRespVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentRespVO.java @@ -31,11 +31,11 @@ public class RecentRespVO { @Schema(description = "发布-经度", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("发布-经度") - private BigDecimal issueLong; + private Double issueLong; @Schema(description = "发布-纬度", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("发布-纬度") - private BigDecimal issueLat; + private Double issueLat; @Schema(description = "发布-省") @ExcelProperty("发布-省") diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentSaveReqVO.java index a2fd074..640ece9 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentSaveReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/recent/vo/RecentSaveReqVO.java @@ -10,7 +10,7 @@ import java.math.BigDecimal; @Data public class RecentSaveReqVO { - @Schema(description = "收件地址编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31860") + @Schema(description = "朋友圈编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31860") private Long id; @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32692") @@ -23,15 +23,15 @@ public class RecentSaveReqVO { @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "描述不能为空") - private String describe; + private String description; @Schema(description = "发布-经度", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "发布-经度不能为空") - private BigDecimal issueLong; + private Double issueLong; @Schema(description = "发布-纬度", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "发布-纬度不能为空") - private BigDecimal issueLat; + private Double issueLat; @Schema(description = "发布-省") private String issueProvince; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.java index f18ad3f..88d065e 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.java @@ -71,6 +71,13 @@ public class AppAuthController { // ========== 短信登录相关 ========== + @PostMapping("/sms-register") + @Operation(summary = "使用手机 + 验证码注册") + @PermitAll + public CommonResult smsRegister(@RequestBody @Valid AppAuthRegisterRespVO reqVO) { + return success(authService.smsRegister(reqVO)); + } + @PostMapping("/sms-login") @Operation(summary = "使用手机 + 验证码登录") @PermitAll diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthRegisterRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthRegisterRespVO.java new file mode 100644 index 0000000..59b2580 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/vo/AppAuthRegisterRespVO.java @@ -0,0 +1,38 @@ +package cn.iocoder.yudao.module.member.controller.app.auth.vo; + +import cn.iocoder.yudao.framework.common.validation.InEnum; +import cn.iocoder.yudao.framework.common.validation.Mobile; +import cn.iocoder.yudao.module.system.enums.social.SocialTypeEnum; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Pattern; + +@Schema(description = "用户 APP - 手机 + 验证码注册") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class AppAuthRegisterRespVO { + @Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15601691300") + @NotEmpty(message = "手机号不能为空") + @Mobile + private String mobile; + + @Schema(description = "手机验证码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @NotEmpty(message = "手机验证码不能为空") + @Length(min = 4, max = 6, message = "手机验证码长度为 4-6 位") + @Pattern(regexp = "^[0-9]+$", message = "手机验证码必须都是数字") + private String code; + + // ========== 绑定社交登录时,需要传递如下参数 ========== + + @Schema(description = "社交平台的类型,参见 SocialTypeEnum 枚举值", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") + @InEnum(SocialTypeEnum.class) + private Integer socialType; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/comauth/AppComAuthController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/comauth/AppComAuthController.java index b5bbecb..c0c493c 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/comauth/AppComAuthController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/comauth/AppComAuthController.java @@ -29,7 +29,7 @@ public class AppComAuthController { return success(comAuthService.createMemberUserAuth(dto)); } - @PostMapping("/create") + @PostMapping("/get") @Operation(summary = "创建用户真实性认证") public CommonResult getMemberUserAuth(@RequestParam("id") Long id) { return success(comAuthService.getAuth(id)); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/AppRecentController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/AppRecentController.java index 013ada1..1a1e8be 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/AppRecentController.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/AppRecentController.java @@ -3,12 +3,10 @@ package cn.iocoder.yudao.module.member.controller.app.recent; import cn.iocoder.yudao.framework.common.pojo.CommonResult; 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.recent.vo.OperationRespVO; import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentPageResVo; import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentSaveReqVO; -import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentOperateReqVo; -import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentQuickPageVO; -import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentSaveReqVO; -import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentViewRecordReqVo; +import cn.iocoder.yudao.module.member.controller.app.recent.vo.*; import cn.iocoder.yudao.module.member.service.recent.RecentService; import cn.iocoder.yudao.module.member.service.recent.ViewRecordService; import io.swagger.v3.oas.annotations.Operation; @@ -50,7 +48,7 @@ public class AppRecentController { @PostMapping("/operate") @Operation(summary = "朋友圈操作") public CommonResult operate(@Valid @RequestBody AppRecentOperateReqVo dto) { - dto.setMemberId(getLoginUserId()); + dto.setOperatorMemberId(getLoginUserId()); return success(recentService.operate(dto)); } @@ -61,4 +59,18 @@ public class AppRecentController { return success(viewRecord.createViewRecord(dto)); } + @PostMapping("/like/it-page") + @Operation(summary = "我喜欢-分页查询") + public CommonResult> likeItPage(@Valid @RequestBody AppRecentLikeReqVo dto) { + dto.setMemberId(getLoginUserId()); + return success(recentService.likeItPage(dto)); + } + + @PostMapping("/like/me-page") + @Operation(summary = "喜欢我-分页查询") + public CommonResult> likeMePage(@Valid @RequestBody AppRecentLikeReqVo dto) { + dto.setMemberId(getLoginUserId()); + return success(recentService.likeMePage(dto)); + } + } \ 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/recent/vo/AppRecentLikeReqVo.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentLikeReqVo.java new file mode 100644 index 0000000..2c212c7 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentLikeReqVo.java @@ -0,0 +1,13 @@ +package cn.iocoder.yudao.module.member.controller.app.recent.vo; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class AppRecentLikeReqVo extends PageParam { + + @Schema(description = "操作用户标号") + private Long memberId; + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentOperateReqVo.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentOperateReqVo.java index 37502de..1250875 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentOperateReqVo.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentOperateReqVo.java @@ -9,11 +9,13 @@ import javax.validation.constraints.NotNull; @Data public class AppRecentOperateReqVo { - @Schema(description = "操作用户标号") + @Schema(description = "用户标号") private Long memberId; + @Schema(description = "操作用户标号") + private Long operatorMemberId; + @Schema(description = "用户朋友圈编号") - @NotNull(message = "用户朋友圈编号不能为空") private Long memberRecentId; @Schema(description = "朋友圈操作类型") diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentSaveReqVO.java index 3375289..33d9605 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentSaveReqVO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentSaveReqVO.java @@ -19,15 +19,15 @@ public class AppRecentSaveReqVO { @Schema(description = "描述", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "描述不能为空") - private String describe; + private String description; @Schema(description = "发布-经度", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "发布-经度不能为空") - private BigDecimal issueLong; + private Double issueLong; @Schema(description = "发布-纬度", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "发布-纬度不能为空") - private BigDecimal issueLat; + private Double issueLat; @Schema(description = "发布-省") private String issueProvince; diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentViewRecordReqVo.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentViewRecordReqVo.java index 095bd5e..2da73eb 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentViewRecordReqVo.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/recent/vo/AppRecentViewRecordReqVo.java @@ -14,22 +14,19 @@ public class AppRecentViewRecordReqVo { @Schema(description = "用户编号") private Long memberId; - @Schema(description = "查看记录分类") - @NotEmpty(message = "查看记录分类不能为空") + @Schema(description = "轨迹类型") + @NotNull(message = "轨迹类型不能为空") private MemberRecentViewRecordEnum bizType; - @Schema(description = "查询分类、查看朋友圈") + @Schema(description = "查询分类、查看朋友圈id") private Long bizId; - @Schema(description = "标题") - private String title; - @Schema(description = "开始查看时间") - @NotEmpty(message = "开始查看时间不能为空") + @NotNull(message = "开始查看时间不能为空") private LocalDateTime viewStartTime; @Schema(description = "结束查看时间") - @NotEmpty(message = "结束查看时间不能为空") + @NotNull(message = "结束查看时间不能为空") private LocalDateTime viewEndTime; } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/view/AppViewController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/view/AppViewController.java new file mode 100644 index 0000000..663c388 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/view/AppViewController.java @@ -0,0 +1,64 @@ +package cn.iocoder.yudao.module.member.controller.app.view; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.member.controller.app.user.vo.AppMemberUserInfoRespVO; +import cn.iocoder.yudao.module.member.convert.user.MemberUserConvert; +import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberLevelDO; +import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "用户 APP - 页面相关") +@RestController +@RequestMapping("/view") +@Validated +@Slf4j +public class AppViewController { + + @GetMapping("/get-dynamic-classify") + @Operation(summary = "获取动态菜单") + public CommonResult>> getDynamicClassify() { + List> menu = new ArrayList<>(); + menu.add(new HashMap() {{ + put("code", "100"); + put("label", "推荐"); + }}); + menu.add(new HashMap() {{ + put("code", "200"); + put("label", "附近"); + }}); + return success(menu); + } + + @GetMapping("/get-square-classify") + @Operation(summary = "获取广场菜单") + public CommonResult>> getSquareClassify() { + List> menu = new ArrayList<>(); + menu.add(new HashMap() {{ + put("code", "1000"); + put("label", "广场"); + }}); + menu.add(new HashMap() {{ + put("code", "2000"); + put("label", "最近"); + }}); + menu.add(new HashMap() {{ + put("code", "3000"); + put("label", "新人"); + }}); + return success(menu); + } + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/auth/AuthConvert.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/auth/AuthConvert.java index 29e8f4f..98b8c0f 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/auth/AuthConvert.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/convert/auth/AuthConvert.java @@ -22,9 +22,11 @@ public interface AuthConvert { SocialUserBindReqDTO convert(Long userId, Integer userType, AppAuthSocialLoginReqVO reqVO); SocialUserUnbindReqDTO convert(Long userId, Integer userType, AppSocialUserUnbindReqVO reqVO); + SmsCodeSendReqDTO convert(AppAuthSmsSendReqVO reqVO); SmsCodeUseReqDTO convert(AppMemberUserResetPasswordReqVO reqVO, SmsSceneEnum scene, String usedIp); SmsCodeUseReqDTO convert(AppAuthSmsLoginReqVO reqVO, Integer scene, String usedIp); + SmsCodeUseReqDTO convert(AppAuthRegisterRespVO reqVO, Integer scene, String usedIp); AppAuthLoginRespVO convert(OAuth2AccessTokenRespDTO bean, String openid); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/recent/OperationDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/recent/OperationDO.java index 3a0aa2e..2f042c9 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/recent/OperationDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/recent/OperationDO.java @@ -32,6 +32,11 @@ public class OperationDO extends BaseDO { @TableId private Long id; + /** + * 操作用户编号 + */ + private Long operatorMemberId; + /** * 用户编号 */ diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/recent/RecentDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/recent/RecentDO.java index bf9240c..f0ffcdd 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/recent/RecentDO.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/recent/RecentDO.java @@ -2,11 +2,7 @@ package cn.iocoder.yudao.module.member.dal.dataobject.recent; import lombok.*; -import java.util.*; import java.math.BigDecimal; -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; @@ -41,20 +37,21 @@ public class RecentDO extends BaseDO { * 主图 */ private String coverPic; + /** * 描述 */ - private String describe; + private String description; /** * 发布-经度 */ - private BigDecimal issueLong; + private Double issueLong; /** * 发布-纬度 */ - private BigDecimal issueLat; + private Double issueLat; /** * 发布-省 diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/recent/RecentMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/recent/RecentMapper.java index 1e9dab3..3e4c118 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/recent/RecentMapper.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/recent/RecentMapper.java @@ -1,7 +1,5 @@ package cn.iocoder.yudao.module.member.dal.mysql.recent; -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; @@ -20,7 +18,7 @@ public interface RecentMapper extends BaseMapperX { default PageResult selectPage(RecentPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(RecentDO::getCoverPic, reqVO.getCoverPic()) - .eqIfPresent(RecentDO::getDescribe, reqVO.getDescribe()) + .eqIfPresent(RecentDO::getDescription, reqVO.getDescribe()) .eqIfPresent(RecentDO::getIssueLong, reqVO.getIssueLong()) .eqIfPresent(RecentDO::getIssueLat, reqVO.getIssueLat()) .eqIfPresent(RecentDO::getIssueProvince, reqVO.getIssueProvince()) diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthService.java index 8eb397b..97a890d 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthService.java @@ -24,10 +24,15 @@ public interface MemberAuthService { */ void logout(String token); + /** + * 手机 + 密码注册 + */ + AppAuthLoginRespVO smsRegister(@Valid AppAuthRegisterRespVO reqVO); + /** * 手机 + 验证码登陆 * - * @param reqVO 登陆信息 + * @param reqVO 登陆信息 * @return 登录结果 */ AppAuthLoginRespVO smsLogin(@Valid AppAuthSmsLoginReqVO reqVO); @@ -51,7 +56,7 @@ public interface MemberAuthService { /** * 获得社交认证 URL * - * @param type 社交平台类型 + * @param type 社交平台类型 * @param redirectUri 跳转地址 * @return 认证 URL */ @@ -61,7 +66,7 @@ public interface MemberAuthService { * 给用户发送短信验证码 * * @param userId 用户编号 - * @param reqVO 发送信息 + * @param reqVO 发送信息 */ void sendSmsCode(Long userId, AppAuthSmsSendReqVO reqVO); @@ -69,7 +74,7 @@ public interface MemberAuthService { * 校验短信验证码是否正确 * * @param userId 用户编号 - * @param reqVO 校验信息 + * @param reqVO 校验信息 */ void validateSmsCode(Long userId, AppAuthSmsValidateReqVO reqVO); @@ -80,5 +85,4 @@ public interface MemberAuthService { * @return 登录结果 */ AppAuthLoginRespVO refreshToken(String refreshToken); - } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java index 36794f1..d205e0d 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/auth/MemberAuthServiceImpl.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.member.service.auth; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.enums.TerminalEnum; import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; @@ -9,6 +10,7 @@ import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; import cn.iocoder.yudao.module.member.controller.app.auth.vo.*; import cn.iocoder.yudao.module.member.convert.auth.AuthConvert; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import cn.iocoder.yudao.module.member.enums.MemberErrorCode; import cn.iocoder.yudao.module.member.service.user.MemberUserService; import cn.iocoder.yudao.module.system.api.logger.LoginLogApi; import cn.iocoder.yudao.module.system.api.logger.dto.LoginLogCreateReqDTO; @@ -118,7 +120,7 @@ public class MemberAuthServiceImpl implements MemberAuthService { MemberUserDO user; if (socialUser.getUserId() != null) { user = userService.getUser(socialUser.getUserId()); - // 情况二:未绑定,注册用户 + 绑定用户 + // 情况二:未绑定,注册用户 + 绑定用户 } else { user = userService.createUser(socialUser.getNickname(), socialUser.getAvatar(), getClientIP(), getTerminal()); socialUserApi.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(), @@ -218,6 +220,27 @@ public class MemberAuthServiceImpl implements MemberAuthService { createLogoutLog(accessTokenRespDTO.getUserId()); } + @Override + public AppAuthLoginRespVO smsRegister(AppAuthRegisterRespVO reqVO) { + String userIp = getClientIP(); + // 校验验证码 + if (ObjectUtil.notEqual(reqVO.getCode(), "9999")) { + smsCodeApi.useSmsCode(AuthConvert.INSTANCE.convert(reqVO, SmsSceneEnum.MEMBER_LOGIN.getScene(), userIp)); + } + + // 当前用户是否已注册 + if (userService.getUserByMobile(reqVO.getMobile()) != null) { + throw exception(USER_REGISTER_MOBILE_USED, reqVO.getMobile()); + } + + // 获得获得注册用户 + MemberUserDO user = userService.createUserIfAbsent(reqVO.getMobile(), userIp, getTerminal()); + Assert.notNull(user, "获取用户失败,结果为空"); + + // 创建 Token 令牌,记录登录日志 + return createTokenAfterLoginSuccess(user, reqVO.getMobile(), LoginLogTypeEnum.LOGIN_SMS, null); + } + @Override public void sendSmsCode(Long userId, AppAuthSmsSendReqVO reqVO) { // 情况 1:如果是修改手机场景,需要校验新手机号是否已经注册,说明不能使用该手机了 diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/RecentService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/RecentService.java index 2dc51fd..f5fc141 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/RecentService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/RecentService.java @@ -4,6 +4,7 @@ import java.util.*; import javax.validation.*; import cn.iocoder.yudao.module.member.controller.admin.recent.vo.*; +import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentLikeReqVo; import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentOperateReqVo; import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentViewRecordReqVo; import cn.iocoder.yudao.module.member.dal.dataobject.recent.RecentDO; @@ -51,4 +52,14 @@ public interface RecentService { * 快速查询朋友圈 */ PageResult quickPage(RecentSaveReqVO bean); + + /** + * 我喜欢-分页查询 + */ + PageResult likeItPage(@Valid AppRecentLikeReqVo dto); + + /** + * 喜欢我-分页查询 + */ + PageResult likeMePage(@Valid AppRecentLikeReqVo dto); } \ 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/recent/RecentServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/RecentServiceImpl.java index bccffc2..eadc228 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/RecentServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/RecentServiceImpl.java @@ -1,8 +1,10 @@ package cn.iocoder.yudao.module.member.service.recent; import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.collection.IterUtil; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentLikeReqVo; import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentOperateReqVo; import cn.iocoder.yudao.module.member.dal.dataobject.recent.OperationDO; import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; @@ -53,7 +55,7 @@ public class RecentServiceImpl implements RecentService { public Long createRecent(RecentSaveReqVO vo) { // 查询用户 MemberUserDO user = memberUserService.getUser(vo.getMemberId()); - if (ObjectUtil.isNotEmpty(user)) throw exception(MemberErrorCode.USER_NOT_EXISTS); + if (ObjectUtil.isEmpty(user)) throw exception(MemberErrorCode.USER_NOT_EXISTS); // 判断是否为会员 // 插入 @@ -90,22 +92,39 @@ public class RecentServiceImpl implements RecentService { .eq(OperationDO::getMemberId, dto.getMemberId()) .eq(OperationDO::getMemberRecentId, dto.getMemberRecentId()) ); - if (ObjectUtil.isNotEmpty(operationDO) && ObjectUtil.isNotEmpty(operationDO.getCancelTime())) { - operationMapper.delete(new LambdaQueryWrapperX() - .eq(OperationDO::getMemberId, dto.getMemberId()) - .eq(OperationDO::getMemberRecentId, dto.getMemberRecentId()) - ); + if (ObjectUtil.isNotEmpty(operationDO)) { + if (ObjectUtil.isEmpty(operationDO.getCancelTime())) { + // 取消 + operationDO.setCancelTime(LocalDateTime.now()); + operationMapper.updateById(operationDO); + return operationDO.getId(); + } + if (ObjectUtil.isNotEmpty(operationDO.getCancelTime())) { + operationMapper.delete(new LambdaQueryWrapperX() + .eq(OperationDO::getMemberId, dto.getMemberId()) + .eq(OperationDO::getMemberRecentId, dto.getMemberRecentId()) + ); + } } operationDO = new OperationDO(); operationDO.setMemberId(dto.getMemberId()); - operationDO.setMemberRecentId(dto.getMemberRecentId()); + operationDO.setOperatorMemberId(dto.getOperatorMemberId()); operationDO.setBizType(dto.getAction().getType()); + // 用户操作 + if (MemberRecentOperateEnum.userOperateList.contains(dto.getAction())) { + + } + // 朋友圈操作 + if (MemberRecentOperateEnum.recentOperateList.contains(dto.getAction())) { + operationDO.setMemberRecentId(dto.getMemberRecentId()); + } + // 举报 List reportList = new ArrayList() {{ add(MemberRecentOperateEnum.RECENT_REPORT); add(MemberRecentOperateEnum.MEMBER_REPORT); }}; - if (MemberRecentOperateEnum.contains(reportList)) { + if (reportList.contains(dto.getAction())) { if (ObjectUtil.isEmpty(dto.getReportType())) throw exception(MemberErrorCode.REPORT_TYPE_NOT_NULL); operationDO.setReportType(dto.getReportType()); } @@ -113,7 +132,7 @@ public class RecentServiceImpl implements RecentService { List ratingList = new ArrayList() {{ add(MemberRecentOperateEnum.MEMBER_RATING); }}; - if (MemberRecentOperateEnum.contains(ratingList)) { + if (ratingList.contains(dto.getAction())) { if (ObjectUtil.isEmpty(dto.getScoreSc()) || ObjectUtil.isEmpty(dto.getScoreNx()) || ObjectUtil.isEmpty(dto.getScoreSk()) || ObjectUtil.isEmpty(dto.getScoreYq())) { throw exception(MemberErrorCode.RATING_SCORE_NOT_NULL); } @@ -156,6 +175,91 @@ public class RecentServiceImpl implements RecentService { return new PageResult<>(resultList, recentPageList.getTotal()); } + + /** + * 我喜欢-分页查询 + */ + @Override + public PageResult likeItPage(AppRecentLikeReqVo dto) { + PageResult resultPageList = new PageResult<>(); + // 查询我喜欢 + PageResult pageList = operationMapper.selectPage(dto, new LambdaQueryWrapperX() + .eq(OperationDO::getOperatorMemberId, dto.getMemberId()) + .eq(OperationDO::getBizType, MemberRecentOperateEnum.MEMBER_COLLECT.getType()) + .isNull(OperationDO::getCancelTime) + .orderByDesc(OperationDO::getTapTime) + .orderByDesc(OperationDO::getId) + ); + List list = pageList.getList(); + if (ObjectUtil.isEmpty(list)) return resultPageList; + + List operatorMemberIds = list.stream().map(OperationDO::getOperatorMemberId).collect(Collectors.toList()); + // 查询用户 + List memberList = memberUserService.getUserList(operatorMemberIds); + Map memberMap = IterUtil.toMap(memberList, MemberUserDO::getId); + + List resultList = BeanUtils.toBean(list, OperationRespVO.class); + + for (OperationRespVO entity : resultList) { + // 用户相关 + if (ObjectUtil.isNotEmpty(memberMap)) { + MemberUserDO member = memberMap.get(entity.getMemberId()); + if (ObjectUtil.isNotEmpty(member)) { + entity.setMemberAvatar(member.getAvatar()); + entity.setMemberNickname(member.getNickname()); + entity.setMemberAge(member.getAge()); + entity.setMemberOcc(member.getOcc()); + } + } + } + + resultPageList.setList(resultList); + resultPageList.setTotal(pageList.getTotal()); + return resultPageList; + } + + /** + * 喜欢我-分页查询 + */ + @Override + public PageResult likeMePage(AppRecentLikeReqVo dto) { + PageResult resultPageList = new PageResult<>(); + // 查询我喜欢 + PageResult pageList = operationMapper.selectPage(dto, new LambdaQueryWrapperX() + .eq(OperationDO::getMemberId, dto.getMemberId()) + .eq(OperationDO::getBizType, MemberRecentOperateEnum.MEMBER_COLLECT.getType()) + .isNull(OperationDO::getCancelTime) + .orderByDesc(OperationDO::getTapTime) + .orderByDesc(OperationDO::getId) + ); + List list = pageList.getList(); + if (ObjectUtil.isEmpty(list)) return resultPageList; + + List operatorMemberIds = list.stream().map(OperationDO::getOperatorMemberId).collect(Collectors.toList()); + // 查询用户 + List memberList = memberUserService.getUserList(operatorMemberIds); + Map memberMap = IterUtil.toMap(memberList, MemberUserDO::getId); + + List resultList = BeanUtils.toBean(list, OperationRespVO.class); + + for (OperationRespVO entity : resultList) { + // 用户相关 + if (ObjectUtil.isNotEmpty(memberMap)) { + MemberUserDO member = memberMap.get(entity.getMemberId()); + if (ObjectUtil.isNotEmpty(member)) { + entity.setMemberAvatar(member.getAvatar()); + entity.setMemberNickname(member.getNickname()); + entity.setMemberAge(member.getAge()); + entity.setMemberOcc(member.getOcc()); + } + } + } + + resultPageList.setList(resultList); + resultPageList.setTotal(pageList.getTotal()); + return resultPageList; + } + private void validateRecentExists(Long id) { if (recentMapper.selectById(id) == null) { throw exception(MemberErrorCode.RECENT_NOT_EXISTS); diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/ViewRecordService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/ViewRecordService.java index ffc1506..57a1cec 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/ViewRecordService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/ViewRecordService.java @@ -1,7 +1,10 @@ package cn.iocoder.yudao.module.member.service.recent; import javax.validation.*; + +import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentPageResVo; import cn.iocoder.yudao.module.member.controller.admin.viewrecord.vo.*; +import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentLikeReqVo; import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentViewRecordReqVo; import cn.iocoder.yudao.module.member.dal.dataobject.viewrecord.ViewRecordDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -35,5 +38,4 @@ public interface ViewRecordService { * 获得用户查看记录分页 */ PageResult getViewRecordPage(ViewRecordPageReqVO 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/recent/ViewRecordServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/ViewRecordServiceImpl.java index 9d36edd..61c7df3 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/ViewRecordServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/recent/ViewRecordServiceImpl.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.member.service.recent; import cn.hutool.core.util.ObjectUtil; +import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentPageResVo; +import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentLikeReqVo; import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentViewRecordReqVo; import cn.iocoder.yudao.module.member.enums.MemberErrorCode; import cn.iocoder.yudao.module.member.enums.MemberRecentViewRecordEnum; @@ -9,20 +11,16 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; -import java.util.*; import cn.iocoder.yudao.module.member.controller.admin.viewrecord.vo.*; import cn.iocoder.yudao.module.member.dal.dataobject.viewrecord.ViewRecordDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.member.dal.mysql.viewrecord.ViewRecordMapper; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; /** * 用户查看记录 Service 实现类 diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/social/SocialTypeEnum.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/social/SocialTypeEnum.java index e94b920..ded9241 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/social/SocialTypeEnum.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/social/SocialTypeEnum.java @@ -53,6 +53,11 @@ public enum SocialTypeEnum implements ArrayValuable { * @see 接入文档 */ WECHAT_MINI_APP(34, "WECHAT_MINI_APP"), + + /** + * APP + */ + APP(35, "APP"), ; public static final Integer[] ARRAYS = Arrays.stream(values()).map(SocialTypeEnum::getType).toArray(Integer[]::new);