feat:微信认证
This commit is contained in:
1 parent
2b34989bfc
commit
75be4d0f73
21 files changed
+285
-38
No files matched your search
+1
@@ -15,6 +15,7 @@ public interface MemberErrorCode {
|
||||
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, "注册失败,该手机号({})已经被使用");
|
||||
ErrorCode USER_UPDATE_CONFIG_ERROR = new ErrorCode(1_004_001_005, "不能修改{}配置,您不是会员");
|
||||
|
||||
// ========== AUTH 模块 1-004-003-000 ==========
|
||||
ErrorCode AUTH_LOGIN_BAD_CREDENTIALS = new ErrorCode(1_004_003_000, "登录失败,账号密码不正确");
|
||||
|
||||
+1
@@ -16,6 +16,7 @@ import java.util.List;
|
||||
public enum MemberComAuthEnum {
|
||||
MAN_MEMBER_TRUE("1", "用户真实性认证(男性)"),
|
||||
WOMAN_MEMBER_TRUE("2", "用户真实性认证(女性)"),
|
||||
WECHAT_NUMBER("3", "微信号认证"),
|
||||
;
|
||||
private final String type;
|
||||
private final String description;
|
||||
|
||||
+9
-19
@@ -23,12 +23,6 @@ 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.apilog.core.annotation.ApiAccessLog;
|
||||
|
||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.comauth.vo.*;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.comauth.ComAuthDO;
|
||||
|
||||
@@ -56,6 +50,13 @@ public class ComAuthController {
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@PostMapping("/check")
|
||||
@Operation(summary = "审核")
|
||||
public CommonResult<Boolean> check(@Valid @RequestBody ComAuthSaveReqVO updateReqVO) {
|
||||
authService.check(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除用户认证")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@@ -78,19 +79,8 @@ public class ComAuthController {
|
||||
@Operation(summary = "获得用户认证分页")
|
||||
@PreAuthorize("@ss.hasPermission('member:auth:query')")
|
||||
public CommonResult<PageResult<ComAuthRespVO>> getAuthPage(@Valid ComAuthPageReqVO pageReqVO) {
|
||||
PageResult<ComAuthDO> pageResult = authService.getAuthPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, ComAuthRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出用户认证 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('member:auth:export')")
|
||||
@ApiAccessLog(operateType = EXPORT)
|
||||
public void exportAuthExcel(@Valid ComAuthPageReqVO pageReqVO, HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<ComAuthDO> list = authService.getAuthPage(pageReqVO).getList();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "用户认证.xls", "数据", ComAuthRespVO.class, BeanUtils.toBean(list, ComAuthRespVO.class));
|
||||
PageResult<ComAuthRespVO> pageResult = authService.getAuthPage(pageReqVO);
|
||||
return success(pageResult);
|
||||
}
|
||||
|
||||
}
|
||||
+14
-2
@@ -22,11 +22,11 @@ public class ComAuthRespVO {
|
||||
|
||||
@Schema(description = "认证类型编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31110")
|
||||
@ExcelProperty("认证类型编号")
|
||||
private Long bizId;
|
||||
private String bizId;
|
||||
|
||||
@Schema(description = "认证图片或视频", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("认证图片或视频")
|
||||
private Long authPic;
|
||||
private String authPic;
|
||||
|
||||
@Schema(description = "认证额外信息(json)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("认证额外信息(json)")
|
||||
@@ -51,4 +51,16 @@ public class ComAuthRespVO {
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 用户相关
|
||||
*/
|
||||
@Schema(description = "用户名")
|
||||
private String memberUserName;
|
||||
|
||||
@Schema(description = "用户手机号")
|
||||
private String memberUserPhone;
|
||||
|
||||
@Schema(description = "用户头像")
|
||||
private String memberUserAvatar;
|
||||
|
||||
}
|
||||
+5
-7
@@ -18,27 +18,25 @@ public class ComAuthSaveReqVO {
|
||||
private String bizType;
|
||||
|
||||
@Schema(description = "认证类型编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31110")
|
||||
@NotNull(message = "认证类型编号不能为空")
|
||||
private Long bizId;
|
||||
private String bizId;
|
||||
|
||||
@Schema(description = "认证图片或视频", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "认证图片或视频不能为空")
|
||||
private Long authPic;
|
||||
private String authPic;
|
||||
|
||||
@Schema(description = "认证额外信息(json)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "认证额外信息(json)不能为空")
|
||||
private String authExtraJson;
|
||||
|
||||
@Schema(description = "认证时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "认证时间不能为空")
|
||||
private LocalDateTime authTime;
|
||||
|
||||
@Schema(description = "认证人编号(-1为系统认证)", requiredMode = Schema.RequiredMode.REQUIRED, example = "22515")
|
||||
@NotNull(message = "认证人编号(-1为系统认证)不能为空")
|
||||
private Long authMemberId;
|
||||
|
||||
@Schema(description = "认证状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||
@NotEmpty(message = "认证状态不能为空")
|
||||
private String authStatus;
|
||||
|
||||
@Schema(description = "认证失败原因", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||
private String failReason;
|
||||
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.opentype.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - 会员类型分页 Request VO")
|
||||
@Data
|
||||
@ToString(callSuper = true)
|
||||
public class OpenTypeExtReqVO {
|
||||
|
||||
@Schema(description = "是否是会员")
|
||||
private boolean isVip;
|
||||
|
||||
@Schema(description = "会员到期时间")
|
||||
private LocalDateTime expirationTime;
|
||||
|
||||
}
|
||||
+8
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.member.controller.app.comauth;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.comauth.vo.ComAuthSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.comauth.vo.CreateManAuthReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.comauth.vo.CreateWechatAuthReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.comauth.vo.CreateWomanAuthReqVo;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.comauth.ComAuthDO;
|
||||
import cn.iocoder.yudao.module.member.service.comauth.ComAuthService;
|
||||
@@ -26,6 +27,13 @@ public class AppComAuthController {
|
||||
@Resource
|
||||
private ComAuthService comAuthService;
|
||||
|
||||
@PostMapping("/create-wecaht-auth")
|
||||
@Operation(summary = "创建微信认证")
|
||||
public CommonResult<ComAuthDO> createWechatAuth(@Valid @RequestBody CreateWechatAuthReqVo dto) {
|
||||
dto.setMemberId(getLoginUserId());
|
||||
return success(comAuthService.createWechatAuth(dto));
|
||||
}
|
||||
|
||||
@PostMapping("/create-man-auth")
|
||||
@Operation(summary = "创建男性认证")
|
||||
public CommonResult<ComAuthDO> createManAuth(@Valid @RequestBody CreateManAuthReqVo dto) {
|
||||
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package cn.iocoder.yudao.module.member.controller.app.comauth.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 创建微信认证 Request VO
|
||||
*/
|
||||
@Data
|
||||
public class CreateWechatAuthReqVo {
|
||||
|
||||
@Schema(description = "会员编号")
|
||||
private Long memberId;
|
||||
|
||||
@Schema(description = "认证图片")
|
||||
@NotEmpty(message = "认证图片不能为空")
|
||||
private String wechatNumber;
|
||||
|
||||
@Schema(description = "微信二维码")
|
||||
@NotEmpty(message = "微信二维码不能为空")
|
||||
private String wechatQrcode;
|
||||
|
||||
}
|
||||
+18
-1
@@ -2,12 +2,16 @@ package cn.iocoder.yudao.module.member.controller.app.user;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.module.member.client.service.ChatApi;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.OpenTypeExtReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.user.vo.*;
|
||||
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.MemberRecentTagDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||
import cn.iocoder.yudao.module.member.service.level.MemberLevelService;
|
||||
import cn.iocoder.yudao.module.member.service.opentype.OpenTypeService;
|
||||
import cn.iocoder.yudao.module.member.service.recent.RecentService;
|
||||
import cn.iocoder.yudao.module.member.service.user.MemberRecentTagService;
|
||||
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@@ -19,6 +23,8 @@ import javax.annotation.Resource;
|
||||
import javax.annotation.security.PermitAll;
|
||||
import javax.validation.Valid;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||
|
||||
@@ -33,13 +39,24 @@ public class AppMemberUserController {
|
||||
private MemberUserService userService;
|
||||
@Resource
|
||||
private MemberLevelService levelService;
|
||||
@Resource
|
||||
private MemberRecentTagService memberRecentTagService;
|
||||
@Resource
|
||||
private OpenTypeService openTypeService;
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得基本信息")
|
||||
public CommonResult<AppMemberUserInfoRespVO> getUserInfo() {
|
||||
MemberUserDO user = userService.getUser(getLoginUserId());
|
||||
MemberLevelDO level = levelService.getLevel(user.getLevelId());
|
||||
return success(MemberUserConvert.INSTANCE.convert(user, level));
|
||||
AppMemberUserInfoRespVO result = MemberUserConvert.INSTANCE.convert(user, level);
|
||||
// 获取用户tag
|
||||
List<MemberRecentTagDO> memberRecentTagList = memberRecentTagService.getByMemberId(user.getId());
|
||||
result.setMemberTagList(memberRecentTagList);
|
||||
// 获取用户会员信息
|
||||
OpenTypeExtReqVO vipExt = openTypeService.getExtByMemeberId(user.getId());
|
||||
result.setMemberVip(vipExt);
|
||||
return success(result);
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
|
||||
+9
@@ -1,11 +1,14 @@
|
||||
package cn.iocoder.yudao.module.member.controller.app.user.vo;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.OpenTypeExtReqVO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentTagDO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Schema(description = "用户 APP - 用户个人信息 Response VO")
|
||||
@Data
|
||||
@@ -55,6 +58,12 @@ public class AppMemberUserInfoRespVO {
|
||||
@Schema(description = "是否成为推广员", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
|
||||
private Boolean brokerageEnabled;
|
||||
|
||||
@Schema(description = "用户tag")
|
||||
private List<MemberRecentTagDO> memberTagList;
|
||||
|
||||
@Schema(description = "用户会员信息")
|
||||
private OpenTypeExtReqVO memberVip;
|
||||
|
||||
@Schema(description = "用户 App - 会员等级")
|
||||
@Data
|
||||
public static class Level {
|
||||
|
||||
+4
@@ -24,6 +24,10 @@ public class MemberRecentCfgReqVo {
|
||||
@Schema(description = "首页隐身")
|
||||
private Boolean homeHide;
|
||||
|
||||
@NotNull(message = "全局隐身不能为空")
|
||||
@Schema(description = "全局隐身")
|
||||
private Boolean globalHide;
|
||||
|
||||
@NotNull(message = "短信通知不能为空")
|
||||
@Schema(description = "隐私保护")
|
||||
private Boolean privacySecure;
|
||||
|
||||
+18
@@ -68,6 +68,24 @@ public class ComAuthDO extends BaseDO {
|
||||
*/
|
||||
private String failReason;
|
||||
|
||||
/**
|
||||
* 微信认证额外信息(json)
|
||||
*/
|
||||
@Data
|
||||
public static class WechatAuthExtra {
|
||||
|
||||
/**
|
||||
* 微信号
|
||||
*/
|
||||
private String wechatNumber;
|
||||
|
||||
/**
|
||||
* 微信二维码
|
||||
*/
|
||||
private String wechatQrcode;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 男性用户真实性认证额外信息(json)
|
||||
*/
|
||||
|
||||
+5
@@ -40,6 +40,11 @@ public class MemberRecentCfgDO extends BaseDO {
|
||||
*/
|
||||
private Boolean homeHide;
|
||||
|
||||
/**
|
||||
* 全局隐身
|
||||
*/
|
||||
private Boolean globalHide;
|
||||
|
||||
/**
|
||||
* 隐私保护
|
||||
*/
|
||||
|
||||
+13
-1
@@ -4,8 +4,10 @@ import javax.validation.*;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.comauth.vo.ComAuthPageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.comauth.vo.ComAuthRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.comauth.vo.ComAuthSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.comauth.vo.CreateManAuthReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.comauth.vo.CreateWechatAuthReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.comauth.vo.CreateWomanAuthReqVo;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.comauth.ComAuthDO;
|
||||
|
||||
@@ -19,6 +21,11 @@ public interface ComAuthService {
|
||||
*/
|
||||
Long createAuth(@Valid ComAuthSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 创建微信认证
|
||||
*/
|
||||
ComAuthDO createWechatAuth(@Valid CreateWechatAuthReqVo dto);
|
||||
|
||||
/**
|
||||
* 创建男性认证
|
||||
*/
|
||||
@@ -34,6 +41,11 @@ public interface ComAuthService {
|
||||
*/
|
||||
void updateAuth(@Valid ComAuthSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 审核
|
||||
*/
|
||||
void check(@Valid ComAuthSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除用户认证
|
||||
*/
|
||||
@@ -57,7 +69,7 @@ public interface ComAuthService {
|
||||
/**
|
||||
* 获得用户认证分页
|
||||
*/
|
||||
PageResult<ComAuthDO> getAuthPage(ComAuthPageReqVO pageReqVO);
|
||||
PageResult<ComAuthRespVO> getAuthPage(ComAuthPageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 轮训人脸认证
|
||||
|
||||
+81
-6
@@ -1,5 +1,7 @@
|
||||
package cn.iocoder.yudao.module.member.service.comauth;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.IterUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
@@ -10,21 +12,20 @@ import cn.iocoder.yudao.module.member.client.vo.thirdfaceverify.ThirdFaceVerifyR
|
||||
import cn.iocoder.yudao.module.member.client.vo.thirdfaceverify.ThirdFindFaceVerifyReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.thirdfaceverify.ThirdFindFaceVerifyResVo;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.comauth.vo.ComAuthPageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.comauth.vo.ComAuthRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.comauth.vo.ComAuthSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.comauth.vo.CreateManAuthReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.comauth.vo.CreateWechatAuthReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.comauth.vo.CreateWomanAuthReqVo;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.comauth.ComAuthDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.comauth.ComAuthMapper;
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberRecentTagMapper;
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
|
||||
import cn.iocoder.yudao.module.member.enums.auth.MemberComAuthEnum;
|
||||
import cn.iocoder.yudao.module.member.enums.MemberErrorCode;
|
||||
import cn.iocoder.yudao.module.member.enums.auth.MemberComAuthStatusEnum;
|
||||
import cn.iocoder.yudao.module.member.service.user.MemberRecentTagService;
|
||||
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import kotlin.jvm.internal.Lambda;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -41,6 +42,8 @@ import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
|
||||
@@ -75,6 +78,27 @@ public class ComAuthServiceImpl implements ComAuthService {
|
||||
return auth.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建微信认证
|
||||
*/
|
||||
@Override
|
||||
public ComAuthDO createWechatAuth(CreateWechatAuthReqVo dto) {
|
||||
|
||||
ComAuthDO.WechatAuthExtra extraObj = new ComAuthDO.WechatAuthExtra();
|
||||
extraObj.setWechatNumber(dto.getWechatNumber());
|
||||
extraObj.setWechatQrcode(dto.getWechatQrcode());
|
||||
|
||||
ComAuthDO saveObj = new ComAuthDO();
|
||||
saveObj.setAuthMemberId(dto.getMemberId());
|
||||
saveObj.setBizType(MemberComAuthEnum.WECHAT_NUMBER.getType());
|
||||
saveObj.setAuthStatus(MemberComAuthStatusEnum.WAIT_AUTH.getType());
|
||||
saveObj.setAuthPic(dto.getWechatQrcode());
|
||||
saveObj.setAuthExtraJson(JSONUtil.toJsonStr(extraObj));
|
||||
authMapper.insert(saveObj);
|
||||
|
||||
return authMapper.selectById(saveObj.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建男性认证
|
||||
*/
|
||||
@@ -87,7 +111,6 @@ public class ComAuthServiceImpl implements ComAuthService {
|
||||
ComAuthDO saveObj = new ComAuthDO();
|
||||
saveObj.setAuthMemberId(dto.getMemberId());
|
||||
saveObj.setBizType(MemberComAuthEnum.MAN_MEMBER_TRUE.getType());
|
||||
saveObj.setAuthStatus("WAITING");
|
||||
saveObj.setAuthStatus(MemberComAuthStatusEnum.WAIT_AUTH.getType());
|
||||
saveObj.setAuthPic(dto.getAuthPic());
|
||||
authMapper.insert(saveObj);
|
||||
@@ -191,6 +214,35 @@ public class ComAuthServiceImpl implements ComAuthService {
|
||||
authMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
/**
|
||||
* 审核
|
||||
*/
|
||||
@Override
|
||||
public void check(ComAuthSaveReqVO updateReqVO) {
|
||||
ComAuthDO detail = authMapper.selectById(updateReqVO.getId());
|
||||
if (ObjectUtil.isEmpty(detail)) {
|
||||
throw exception(MemberErrorCode.COM_AUTH_NOT_EXISTS);
|
||||
}
|
||||
if (ObjectUtil.notEqual(updateReqVO.getBizType(), MemberComAuthEnum.WECHAT_NUMBER.getType())) {
|
||||
throw exception(MemberErrorCode.EMPTY, "审核类型错误");
|
||||
}
|
||||
ComAuthDO updateObj = new ComAuthDO();
|
||||
updateObj.setId(updateReqVO.getId());
|
||||
updateObj.setAuthStatus(updateReqVO.getAuthStatus());
|
||||
updateObj.setAuthTime(LocalDateTime.now());
|
||||
updateObj.setFailReason(updateReqVO.getFailReason());
|
||||
authMapper.updateById(updateObj);
|
||||
if (ObjectUtil.equals(updateReqVO.getAuthStatus(), MemberComAuthStatusEnum.CHECK_PASS.getType())) {
|
||||
ComAuthDO.WechatAuthExtra json = JSONUtil.toBean(updateReqVO.getAuthExtraJson(), ComAuthDO.WechatAuthExtra.class);
|
||||
// 修改用户微信号信息
|
||||
MemberUserDO updateUserObj = new MemberUserDO();
|
||||
updateUserObj.setId(detail.getAuthMemberId());
|
||||
updateUserObj.setWechatNum(json.getWechatNumber());
|
||||
updateUserObj.setWechatQrCode(json.getWechatQrcode());
|
||||
memberUserMapper.updateById(updateUserObj);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除用户认证
|
||||
*/
|
||||
@@ -244,10 +296,16 @@ public class ComAuthServiceImpl implements ComAuthService {
|
||||
* 获得用户认证分页
|
||||
*/
|
||||
@Override
|
||||
public PageResult<ComAuthDO> getAuthPage(ComAuthPageReqVO pageReqVO) {
|
||||
return authMapper.selectPage(pageReqVO);
|
||||
public PageResult<ComAuthRespVO> getAuthPage(ComAuthPageReqVO pageReqVO) {
|
||||
List<ComAuthRespVO> resultList = new ArrayList<>();
|
||||
PageResult<ComAuthDO> pageList = authMapper.selectPage(pageReqVO);
|
||||
resultList = BeanUtil.copyToList(pageList.getList(), ComAuthRespVO.class);
|
||||
// 设置用户信息
|
||||
disposeGetAuthPage(resultList, pageReqVO);
|
||||
return new PageResult<ComAuthRespVO>(resultList, pageList.getTotal());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 轮训人脸认证
|
||||
*/
|
||||
@@ -296,6 +354,23 @@ public class ComAuthServiceImpl implements ComAuthService {
|
||||
return totalSync;
|
||||
}
|
||||
|
||||
private void disposeGetAuthPage(List<ComAuthRespVO> list, ComAuthPageReqVO dto) {
|
||||
if (ObjectUtil.isEmpty(list)) return;
|
||||
List<Long> userIds = list.stream().map(ComAuthRespVO::getAuthMemberId).distinct().filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
|
||||
List<MemberUserDO> userList = memberUserService.getUserList(userIds);
|
||||
if (ObjectUtil.isNotEmpty(userList)) {
|
||||
Map<Long, MemberUserDO> userMap = IterUtil.toMap(userList, MemberUserDO::getId);
|
||||
list.forEach(v -> {
|
||||
MemberUserDO user = userMap.get(v.getAuthMemberId());
|
||||
if (ObjectUtil.isNotEmpty(user)) {
|
||||
v.setMemberUserName(user.getNickname());
|
||||
v.setMemberUserPhone(user.getMobile());
|
||||
v.setMemberUserAvatar(user.getAvatar());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void validateAuthExists(Long id) {
|
||||
if (authMapper.selectById(id) == null) {
|
||||
throw exception(MemberErrorCode.COM_AUTH_NOT_EXISTS);
|
||||
|
||||
+5
@@ -63,4 +63,9 @@ public interface OpenTypeService {
|
||||
* 判断用户是否还可以发送消息
|
||||
*/
|
||||
boolean isUserCanSendMessage(Long sendId, Long receiveId);
|
||||
|
||||
/**
|
||||
* 查询会员信息
|
||||
*/
|
||||
OpenTypeExtReqVO getExtByMemeberId(Long memberId);
|
||||
}
|
||||
+12
-1
@@ -213,10 +213,21 @@ public class OpenTypeServiceImpl implements OpenTypeService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询会员信息
|
||||
*/
|
||||
@Override
|
||||
public OpenTypeExtReqVO getExtByMemeberId(Long memberId) {
|
||||
OpenTypeExtReqVO result = new OpenTypeExtReqVO();
|
||||
OpenTypeUserDO openTypeUserDO = openTypeUserMapper.selectEnableByUserId(memberId);
|
||||
result.setVip(ObjectUtil.isNotEmpty(openTypeUserDO));
|
||||
result.setExpirationTime(ObjectUtil.isNotEmpty(openTypeUserDO) ? openTypeUserDO.getEndTime() : null);
|
||||
return result;
|
||||
}
|
||||
|
||||
private void validateOpenTypeExists(Long id) {
|
||||
if (openTypeMapper.selectById(id) == null) {
|
||||
throw exception(MemberErrorCode.OPEN_TYPE_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+15
@@ -6,6 +6,8 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.member.controller.app.user.vo.recentcfg.MemberRecentCfgReqVo;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentCfgDO;
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.user.RecentCfgMapper;
|
||||
import cn.iocoder.yudao.module.member.enums.MemberErrorCode;
|
||||
import cn.iocoder.yudao.module.member.service.opentype.OpenTypeService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -17,6 +19,8 @@ import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
|
||||
|
||||
/**
|
||||
* 用户朋友圈相关配置 Service 实现类
|
||||
@@ -29,6 +33,8 @@ public class MemberRecentCfgServiceImpl implements MemberRecentCfgService {
|
||||
|
||||
@Resource
|
||||
private RecentCfgMapper recentCfgMapper;
|
||||
@Resource
|
||||
private OpenTypeService openTypeService;
|
||||
|
||||
@Override
|
||||
public List<MemberRecentCfgDO> getByMemberIds(Collection<Long> memberIds) {
|
||||
@@ -53,6 +59,15 @@ public class MemberRecentCfgServiceImpl implements MemberRecentCfgService {
|
||||
if (ObjectUtil.isEmpty(detail)) {
|
||||
recentCfgMapper.insert(entity);
|
||||
} else {
|
||||
// 判断是否修改了`全局隐身`和`首页隐身`
|
||||
if (ObjectUtil.isNotEmpty(dto.getGlobalHide()) && ObjectUtil.isNotEmpty(dto.getHomeHide())) {
|
||||
if (dto.getGlobalHide() || dto.getHomeHide()) {
|
||||
// 判断是否为会员
|
||||
if (!openTypeService.isUserOpenType()) {
|
||||
throw exception(MemberErrorCode.USER_UPDATE_CONFIG_ERROR, "全局隐身或首页隐身");
|
||||
}
|
||||
}
|
||||
}
|
||||
entity.setId(detail.getId());
|
||||
recentCfgMapper.updateById(entity);
|
||||
}
|
||||
|
||||
+9
@@ -1,5 +1,9 @@
|
||||
package cn.iocoder.yudao.module.member.service.user;
|
||||
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentTagDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户tag
|
||||
*/
|
||||
@@ -9,4 +13,9 @@ public interface MemberRecentTagService {
|
||||
* 设置用户真人认证tag
|
||||
*/
|
||||
void setPersonTag(Long authMemberId, boolean isAddTag);
|
||||
|
||||
/**
|
||||
* 获取用户tag
|
||||
*/
|
||||
List<MemberRecentTagDO> getByMemberId(Long memberId);
|
||||
}
|
||||
+10
@@ -11,6 +11,8 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Valid
|
||||
@@ -44,4 +46,12 @@ public class MemberRecentTagServiceImp implements MemberRecentTagService {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户tag
|
||||
*/
|
||||
@Override
|
||||
public List<MemberRecentTagDO> getByMemberId(Long memberId) {
|
||||
return memberRecentTagMapper.getByMemberId(memberId);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -148,7 +148,7 @@ public class PayWalletRechargeServiceImpl implements PayWalletRechargeService {
|
||||
if (currentWallet.getBalance() < gift.getPrice()) throw exception(WALLET_RECHARGE_GIFT_BALANCE_NOT_ENOUGH);
|
||||
|
||||
String title = String.format("用户[%s]赠送给用户[%s]价值[%s]元的礼物", currentUser.getNickname(), targetUser.getNickname(), fenToYuanStr(gift.getPrice()));
|
||||
// 添加转账记录
|
||||
// 添加送出礼物记录
|
||||
WalletUserTransitionDO userTransitionObj = new WalletUserTransitionDO();
|
||||
userTransitionObj.setBizType(PayUserTransferTypeEnum.GIFT_TRANSFER.getType());
|
||||
userTransitionObj.setBizId(gift.getId());
|
||||
|
||||
Reference in new issue
Block a user