实名认证

This commit is contained in:
2025-02-17 15:45:55 +08:00
parent 8baee4b858
commit 7af47e35b8
18 changed files with 351 additions and 51 deletions

View File

@ -42,6 +42,9 @@ public class AnnexQueryBo extends BaseEntity {
/** 唯一标识 */
@ApiModelProperty("唯一标识")
private Long userId;
/** 用户类型 */
@ApiModelProperty("用户类型")
private String userType;
/** 附件类型 */
@ApiModelProperty("附件类型")
private String annexType;

View File

@ -21,6 +21,9 @@ public class AnnexDTO {
/** 唯一标识 */
@ApiModelProperty("唯一标识")
private Long userId;
/** 用户类型 */
@ApiModelProperty("用户类型")
private String userType;
/** 附件类型 */
@ApiModelProperty("附件类型")
private String annexType;

View File

@ -69,4 +69,9 @@ public interface IAnnexService extends IServicePlus<Annex> {
*/
void insertBatch(List<AnnexDTO> annexList);
/**
* 根据表自增ID来删除指定附件数据并删除对应的资源
*/
Boolean deleteByIds(Long id);
}

View File

@ -4,9 +4,11 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.domain.dto.AnnexDTO;
import com.ruoyi.common.tool.FileDeletionService;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.core.page.PagePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -15,7 +17,9 @@ import com.ruoyi.common.bo.AnnexQueryBo;
import com.ruoyi.common.domain.Annex;
import com.ruoyi.common.mapper.AnnexMapper;
import com.ruoyi.common.service.IAnnexService;
import org.springframework.transaction.annotation.Transactional;
import javax.tools.Tool;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@ -30,6 +34,9 @@ import java.util.stream.Collectors;
@Service
public class AnnexServiceImpl extends ServicePlusImpl<AnnexMapper, Annex> implements IAnnexService {
@Autowired
private FileDeletionService fileDeletionService;
@Override
public Annex queryById(String id){
return getById(id);
@ -103,4 +110,21 @@ public class AnnexServiceImpl extends ServicePlusImpl<AnnexMapper, Annex> implem
.collect(Collectors.toList());
baseMapper.insertAll(annexes);
}
@Override
@Transactional
public Boolean deleteByIds(Long id) {
//1、查询数据
Annex annex = baseMapper.selectById(id);
//2、删除对应的数据并删除相对应的资源
if (baseMapper.deleteById(id)>0){
boolean b = fileDeletionService.deleteFileByPath(annex.getAnnexUrl());
if(!b){
throw new RuntimeException("附件删除失败!");
}
}else{
throw new RuntimeException("数据删除失败!");
}
return true;
}
}

View File

@ -0,0 +1,32 @@
package com.ruoyi.common.tool;
import org.springframework.stereotype.Service;
import java.io.File;
@Service
public class FileDeletionService {
/**
* 根据文件路径删除文件
* @param filePath 文件的完整路径
* @return 如果文件删除成功返回 true否则返回 false
*/
public boolean deleteFileByPath(String filePath) {
if (filePath == null || filePath.isEmpty()) {
return false;
}
File file = new File(filePath);
// 检查文件是否存在并且是一个普通文件
if (file.exists() && file.isFile()) {
try {
// 执行删除操作
return file.delete();
} catch (SecurityException e) {
// 处理没有权限删除文件的异常
System.err.println("没有权限删除文件: " + filePath);
return false;
}
}
return false;
}
}

View File

@ -0,0 +1,34 @@
package com.ruoyi.wgz.bo;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.domain.Annex;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class WgzAutonymAnnex extends BaseEntity {
@ApiModelProperty("用户类型")
@NotBlank(message = "字典标签不能为空")
private String userType;
@ApiModelProperty("字典标签")
@NotBlank(message = "字典标签不能为空")
private String dictLabel;
@ApiModelProperty("字典键值")
@NotBlank(message = "字典标签不能为空")
private String dictValue;
@ApiModelProperty("附件实体数据")
private List<Annex> annex;
}

View File

@ -0,0 +1,22 @@
package com.ruoyi.wgz.bo.req;
import com.ruoyi.wgz.bo.WgzAutonymAnnex;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("务工者APP-实名认证·附件结构请求对象")
public class WgzAppAttachmentAcquisitionReq implements Serializable {
@ApiModelProperty("唯一标识")
@NotNull(message = "唯一标识不能为空")
private Long userId;
}

View File

@ -0,0 +1,26 @@
package com.ruoyi.wgz.bo.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("务工者APP-修改头像请求对象")
public class WgzAppModifyingUserProfilePictureReq implements Serializable {
@ApiModelProperty("唯一标识")
@NotNull(message = "唯一标识不能为空")
private Long userId;
@ApiModelProperty("头像地址")
@NotBlank(message = "头像地址不能为空")
private String avatarName;
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.wgz.bo.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -11,6 +12,7 @@ import java.io.Serializable;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("务工者APP-查询个人基本信息对象")
public class WgzAppPersonalBasicInformationReq implements Serializable {
@ApiModelProperty("唯一标识")
@NotBlank(message = "唯一标识不能为空")

View File

@ -1,24 +1,28 @@
package com.ruoyi.wgz.bo.req;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.Pattern;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("务工者APP注册账号对象")
public class WgzAppUserLongInReq extends BaseEntity {
@ApiModelProperty("联系电话")
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码格式不正确")
private String phone;
@ApiModelProperty("密码")
private String password;
@ApiModelProperty("验证码")
private String verificationCode;
}
//package com.ruoyi.wgz.bo.req;
//
//import com.ruoyi.common.core.domain.BaseEntity;
//import io.swagger.annotations.ApiModel;
//import io.swagger.annotations.ApiModelProperty;
//import lombok.Data;
//import lombok.EqualsAndHashCode;
//import lombok.NoArgsConstructor;
//import lombok.experimental.Accessors;
//
//import javax.validation.constraints.Pattern;
//import java.io.Serializable;
//
//@Data
//@NoArgsConstructor
//@Accessors(chain = true)
//@ApiModel("务工者APP登录账号对象")
//public class WgzAppUserLongInReq implements Serializable {
// @ApiModelProperty("联系电话")
// @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码格式不正确")
// private String phone;
//
// @ApiModelProperty("密码")
// private String password;
//
// @ApiModelProperty("验证码")
// private String verificationCode;
//}

View File

@ -5,18 +5,24 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("务工者APP注册账号对象")
public class WgzAppUserRegisterReq extends BaseEntity {
public class WgzAppUserRegisterReq implements Serializable {
@ApiModelProperty("联系电话")
@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码格式不正确")
private String phone;
/** 密码 */
@ApiModelProperty("密码")
@NotBlank(message = "密码不能为空")
private String password;
}

View File

@ -1,19 +1,26 @@
package com.ruoyi.wgz.bo.req;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.domain.Annex;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class WgzRealNameAuthenticationReq {
@ApiModel("务工者APP-实名认证对象")
public class WgzRealNameAuthenticationReq implements Serializable {
@ApiModelProperty("唯一标识")
@NotBlank(message = "唯一标识不能为空")
@NotNull(message = "唯一标识不能为空")
private Long userId;
@ApiModelProperty("身份证正面图路径")
@ -64,6 +71,9 @@ public class WgzRealNameAuthenticationReq {
@NotBlank(message = "银行卡号不能为空")
private String cardNo;
@ApiModelProperty("附件实体数据")
private List<Annex> annex;
// @ApiModelProperty("银行卡图路径")
// private String bankCardPath;

View File

@ -0,0 +1,20 @@
package com.ruoyi.wgz.bo.res;
import com.ruoyi.wgz.bo.WgzAutonymAnnex;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("务工者APP-实名认证·附件结构返回对象")
public class WgzAppAttachmentAcquisitionRes implements Serializable {
@ApiModelProperty("附件结构")
private List<WgzAutonymAnnex> wgzAutonymAnnex;
}

View File

@ -1,9 +1,20 @@
package com.ruoyi.wgz.bo.res;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
public class WgzAppPersonalBasicInformationRes {
import java.io.Serializable;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("务工者APP-个人基本信息返回对象")
public class WgzAppPersonalBasicInformationRes implements Serializable {
@ApiModelProperty("主键ID")
@TableId(value = "id")
private String id;

View File

@ -1,4 +0,0 @@
package com.ruoyi.wgz.bo.res;
public class WgzAppUserLongInRes {
}

View File

@ -3,6 +3,7 @@ package com.ruoyi.wgz.service;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.wgz.bo.WgzUserQueryBo;
import com.ruoyi.wgz.bo.req.WgzAppModifyingUserProfilePictureReq;
import com.ruoyi.wgz.bo.req.WgzAppPersonalBasicInformationReq;
import com.ruoyi.wgz.bo.req.WgzAppUserRegisterReq;
import com.ruoyi.wgz.bo.req.WgzRealNameAuthenticationReq;
@ -69,29 +70,26 @@ public interface IWgzUserService extends IServicePlus<WgzUser> {
/**
* 务工者APP注册账号
* @param bo APP务工者注册业务对象
* @return bool
*/
Boolean userRegister(WgzAppUserRegisterReq bo);
/**
* 修改用户头像修改用户头像
*/
Boolean userModifyingUserProfilePicture(@Validated @RequestBody WgzAppModifyingUserProfilePictureReq req);
/**
* 务工者APP登录账号
* @param phone APP务工者登录业务对象
* @return bool
*/
WgzUser userLongIn(String phone);
/**
* 务工者APP登录账号
* @param req APP务工者登录业务对象
* @return bool
* 务工者APP个人基本信息
*/
WgzAppPersonalBasicInformationRes userPersonalBasicInformation(WgzAppPersonalBasicInformationReq req);
/**
* 务工者APP实名认证
* @param req APP务工者实名认证业务对象
* @return bool
*/
Boolean userRealNameAuthentication(@Validated @RequestBody WgzRealNameAuthenticationReq req);
}

View File

@ -7,9 +7,13 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.domain.Annex;
import com.ruoyi.common.domain.dto.AnnexDTO;
import com.ruoyi.common.service.IAnnexService;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.wgz.bo.WgzUserQueryBo;
import com.ruoyi.wgz.bo.req.WgzAppModifyingUserProfilePictureReq;
import com.ruoyi.wgz.bo.req.WgzAppPersonalBasicInformationReq;
import com.ruoyi.wgz.bo.req.WgzAppUserRegisterReq;
import com.ruoyi.wgz.bo.req.WgzRealNameAuthenticationReq;
@ -19,8 +23,11 @@ import com.ruoyi.wgz.domain.WgzUser;
import com.ruoyi.wgz.mapper.WgzUserMapper;
import com.ruoyi.wgz.service.IWgzUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@ -36,6 +43,9 @@ import java.util.Map;
@Service
public class WgzUserServiceImpl extends ServicePlusImpl<WgzUserMapper, WgzUser> implements IWgzUserService {
@Autowired
private IAnnexService iAnnexService;
@Override
public WgzUser queryById(String id){
return getById(id);
@ -124,6 +134,17 @@ public class WgzUserServiceImpl extends ServicePlusImpl<WgzUserMapper, WgzUser>
return baseMapper.insert(wgzUser) > 0;
}
@Override
public Boolean userModifyingUserProfilePicture(WgzAppModifyingUserProfilePictureReq req) {
WgzUser user = new WgzUser();
BeanUtils.copyProperties(req, user);
int update = baseMapper.update(user, new LambdaQueryWrapper<WgzUser>().eq(WgzUser::getUserId, req.getUserId()));
if (update == 0){
throw new RuntimeException("当前用户不存在!");
}
return true;
}
//登录-获取用户
@Override
public WgzUser userLongIn(String phone) {
@ -146,12 +167,21 @@ public class WgzUserServiceImpl extends ServicePlusImpl<WgzUserMapper, WgzUser>
//实名认证
@Override
@Transactional()
public Boolean userRealNameAuthentication(WgzRealNameAuthenticationReq req) {
//1、对指定用户进行实名认证
WgzUser user = new WgzUser();
BeanUtils.copyProperties(req,user);
BeanUtils.copyProperties(req, user);
int update = baseMapper.update(user, new LambdaQueryWrapper<WgzUser>().eq(WgzUser::getUserId, req.getUserId()));
return update>0;
if (update == 0){
throw new RuntimeException("当前用户不存在!");
}
//2、新增附件
List<Annex> annex = req.getAnnex();
List<AnnexDTO> annexDTOS = new ArrayList<>();
BeanUtils.copyProperties(annex, annexDTOS);
iAnnexService.insertBatch(annexDTOS);
return true;
}
}