新增会员房屋管理
parent
ed76761769
commit
325d782450
|
|
@ -6,6 +6,7 @@ import com.fjrcloud.community.framework.common.pojo.PageParam;
|
||||||
import com.fjrcloud.community.framework.common.pojo.PageResult;
|
import com.fjrcloud.community.framework.common.pojo.PageResult;
|
||||||
import com.fjrcloud.community.framework.common.util.object.BeanUtils;
|
import com.fjrcloud.community.framework.common.util.object.BeanUtils;
|
||||||
import com.fjrcloud.community.framework.excel.core.util.ExcelUtils;
|
import com.fjrcloud.community.framework.excel.core.util.ExcelUtils;
|
||||||
|
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHouseAuditReqVO;
|
||||||
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHousePageReqVO;
|
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHousePageReqVO;
|
||||||
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHouseRespVO;
|
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHouseRespVO;
|
||||||
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHouseSaveReqVO;
|
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHouseSaveReqVO;
|
||||||
|
|
@ -99,4 +100,12 @@ public class MemberHouseController {
|
||||||
BeanUtils.toBean(list, MemberHouseRespVO.class));
|
BeanUtils.toBean(list, MemberHouseRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PutMapping("/audit")
|
||||||
|
@Operation(summary = "审核业主认证")
|
||||||
|
@PreAuthorize("@ss.hasPermission('community:member-house:audit')")
|
||||||
|
public CommonResult<Boolean> auditMemberHouse(@Valid @RequestBody MemberHouseAuditReqVO auditReqVO) {
|
||||||
|
memberHouseService.auditMemberHouse(auditReqVO.getId(), auditReqVO.getStatus(), auditReqVO.getRejectReason());
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.fjrcloud.community.module.community.controller.admin.memberhouse.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 业主认证审核 Request VO")
|
||||||
|
@Data
|
||||||
|
public class MemberHouseAuditReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20067")
|
||||||
|
@NotNull(message = "主键ID不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "审核状态(1-通过,2-驳回)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
@NotNull(message = "审核状态不能为空")
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
@Schema(description = "驳回原因", example = "证件信息不清晰")
|
||||||
|
private String rejectReason;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -81,6 +81,10 @@ public class MemberHouseRespVO {
|
||||||
@ExcelProperty("附件URL")
|
@ExcelProperty("附件URL")
|
||||||
private String attachmentUrl;
|
private String attachmentUrl;
|
||||||
|
|
||||||
|
@Schema(description = "人脸照片URL", example = "https://www.fjrcloud.cn/face.jpg")
|
||||||
|
@ExcelProperty("人脸照片URL")
|
||||||
|
private String facePhotoUrl;
|
||||||
|
|
||||||
@Schema(description = "认证状态(0-待审核,1-已认证,2-驳回)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
@Schema(description = "认证状态(0-待审核,1-已认证,2-驳回)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
@ExcelProperty("认证状态(0-待审核,1-已认证,2-驳回)")
|
@ExcelProperty("认证状态(0-待审核,1-已认证,2-驳回)")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,7 @@ public class MemberHouseSaveReqVO {
|
||||||
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20067")
|
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20067")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
@Schema(description = "会员ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24858")
|
@Schema(description = "会员ID", example = "24858")
|
||||||
@NotNull(message = "会员ID不能为空")
|
|
||||||
private Long memberId;
|
private Long memberId;
|
||||||
|
|
||||||
@Schema(description = "小区ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15661")
|
@Schema(description = "小区ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15661")
|
||||||
|
|
@ -65,6 +64,9 @@ public class MemberHouseSaveReqVO {
|
||||||
@Schema(description = "附件URL", example = "https://www.fjrcloud.cn")
|
@Schema(description = "附件URL", example = "https://www.fjrcloud.cn")
|
||||||
private String attachmentUrl;
|
private String attachmentUrl;
|
||||||
|
|
||||||
|
@Schema(description = "人脸照片URL", example = "https://www.fjrcloud.cn/face.jpg")
|
||||||
|
private String facePhotoUrl;
|
||||||
|
|
||||||
@Schema(description = "认证状态(0-待审核,1-已认证,2-驳回)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
@Schema(description = "认证状态(0-待审核,1-已认证,2-驳回)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
@NotNull(message = "认证状态(0-待审核,1-已认证,2-驳回)不能为空")
|
@NotNull(message = "认证状态(0-待审核,1-已认证,2-驳回)不能为空")
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package com.fjrcloud.community.module.community.dal.dataobject.memberhouse;
|
||||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.fjrcloud.community.framework.mybatis.core.dataobject.BaseDO;
|
import com.fjrcloud.community.framework.tenant.core.db.TenantBaseDO;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
@ -22,7 +22,7 @@ import java.time.LocalDateTime;
|
||||||
@Builder
|
@Builder
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class MemberHouseDO extends BaseDO {
|
public class MemberHouseDO extends TenantBaseDO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主键ID
|
* 主键ID
|
||||||
|
|
@ -93,6 +93,10 @@ public class MemberHouseDO extends BaseDO {
|
||||||
* 附件URL
|
* 附件URL
|
||||||
*/
|
*/
|
||||||
private String attachmentUrl;
|
private String attachmentUrl;
|
||||||
|
/**
|
||||||
|
* 人脸照片URL
|
||||||
|
*/
|
||||||
|
private String facePhotoUrl;
|
||||||
/**
|
/**
|
||||||
* 认证状态(0-待审核,1-已认证,2-驳回)
|
* 认证状态(0-待审核,1-已认证,2-驳回)
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ public interface ErrorCodeConstants {
|
||||||
ErrorCode COMMUNITY_IMPORT_LIST_IS_EMPTY = new ErrorCode(2_001_000_002, "导入小区数据不能为空!");
|
ErrorCode COMMUNITY_IMPORT_LIST_IS_EMPTY = new ErrorCode(2_001_000_002, "导入小区数据不能为空!");
|
||||||
|
|
||||||
ErrorCode COMMUNITY_NAME_DUPLICATE = new ErrorCode(2_001_000_003, "小区名称【{}】已存在");
|
ErrorCode COMMUNITY_NAME_DUPLICATE = new ErrorCode(2_001_000_003, "小区名称【{}】已存在");
|
||||||
|
|
||||||
ErrorCode HOUSE_NOT_EXISTS = new ErrorCode(2_001_001_001, "房屋信息主不存在");
|
ErrorCode HOUSE_NOT_EXISTS = new ErrorCode(2_001_001_001, "房屋信息主不存在");
|
||||||
|
|
||||||
ErrorCode HOUSE_IMPORT_LIST_IS_EMPTY = new ErrorCode(2_001_001_002, "导入房屋数据不能为空!");
|
ErrorCode HOUSE_IMPORT_LIST_IS_EMPTY = new ErrorCode(2_001_001_002, "导入房屋数据不能为空!");
|
||||||
|
|
@ -28,4 +28,7 @@ public interface ErrorCodeConstants {
|
||||||
ErrorCode MEMBER_HOUSE_AUDIT_STATUS_ERROR = new ErrorCode(2_002_001_005, "该记录状态不允许进行审核操作");
|
ErrorCode MEMBER_HOUSE_AUDIT_STATUS_ERROR = new ErrorCode(2_002_001_005, "该记录状态不允许进行审核操作");
|
||||||
|
|
||||||
ErrorCode MEMBER_HOUSE_REJECT_REASON_REQUIRED = new ErrorCode(2_002_001_006, "驳回时必须填写驳回原因");
|
ErrorCode MEMBER_HOUSE_REJECT_REASON_REQUIRED = new ErrorCode(2_002_001_006, "驳回时必须填写驳回原因");
|
||||||
|
|
||||||
|
ErrorCode MEMBER_HOUSE_MOBILE_REQUIRED = new ErrorCode(2_002_001_007,"手机号不能为空");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,8 @@ import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.M
|
||||||
import com.fjrcloud.community.module.community.dal.dataobject.memberhouse.MemberHouseDO;
|
import com.fjrcloud.community.module.community.dal.dataobject.memberhouse.MemberHouseDO;
|
||||||
import com.fjrcloud.community.module.community.dal.mysql.memberhouse.MemberHouseMapper;
|
import com.fjrcloud.community.module.community.dal.mysql.memberhouse.MemberHouseMapper;
|
||||||
import com.fjrcloud.community.module.community.service.community.CommunityService;
|
import com.fjrcloud.community.module.community.service.community.CommunityService;
|
||||||
|
import com.fjrcloud.community.module.member.dal.dataobject.user.MemberUserDO;
|
||||||
|
import com.fjrcloud.community.module.member.service.user.MemberUserService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
@ -21,6 +23,7 @@ import java.util.List;
|
||||||
|
|
||||||
import static com.fjrcloud.community.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.fjrcloud.community.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static com.fjrcloud.community.module.community.enums.ErrorCodeConstants.*;
|
import static com.fjrcloud.community.module.community.enums.ErrorCodeConstants.*;
|
||||||
|
import static com.fjrcloud.community.module.member.enums.ErrorCodeConstants.USER_MOBILE_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 业主认证信息 Service 实现类
|
* 业主认证信息 Service 实现类
|
||||||
|
|
@ -38,6 +41,9 @@ public class MemberHouseServiceImpl implements MemberHouseService {
|
||||||
@Resource
|
@Resource
|
||||||
private CommunityService communityService;
|
private CommunityService communityService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MemberUserService memberUserService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Long createMemberHouse(MemberHouseSaveReqVO createReqVO) {
|
public Long createMemberHouse(MemberHouseSaveReqVO createReqVO) {
|
||||||
|
|
@ -46,7 +52,19 @@ public class MemberHouseServiceImpl implements MemberHouseService {
|
||||||
throw exception(COMMUNITY_NOT_EXISTS);
|
throw exception(COMMUNITY_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 校验重复认证:同一小区、同一房屋、同一手机号不能重复认证
|
// 2. 如果 memberId 为空,通过手机号检索会员
|
||||||
|
if (createReqVO.getMemberId() == null) {
|
||||||
|
if (StrUtil.isBlank(createReqVO.getMobile())) {
|
||||||
|
throw exception(MEMBER_HOUSE_MOBILE_REQUIRED);
|
||||||
|
}
|
||||||
|
MemberUserDO user = memberUserService.getUserByMobile(createReqVO.getMobile());
|
||||||
|
if (user == null) {
|
||||||
|
throw exception(USER_MOBILE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
createReqVO.setMemberId(user.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 校验重复认证:同一小区、同一房屋、同一手机号不能重复认证
|
||||||
List<MemberHouseDO> existList = memberHouseMapper.selectListByCommunityAndRoom(
|
List<MemberHouseDO> existList = memberHouseMapper.selectListByCommunityAndRoom(
|
||||||
createReqVO.getCommunityId(),
|
createReqVO.getCommunityId(),
|
||||||
createReqVO.getBuildingNo(),
|
createReqVO.getBuildingNo(),
|
||||||
|
|
@ -57,9 +75,9 @@ public class MemberHouseServiceImpl implements MemberHouseService {
|
||||||
throw exception(MEMBER_HOUSE_EXISTS);
|
throw exception(MEMBER_HOUSE_EXISTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. 插入数据,默认状态为待审核 (0)
|
// 4. 插入数据
|
||||||
MemberHouseDO memberHouse = BeanUtils.toBean(createReqVO, MemberHouseDO.class);
|
MemberHouseDO memberHouse = BeanUtils.toBean(createReqVO, MemberHouseDO.class);
|
||||||
memberHouse.setStatus(0);
|
memberHouse.setTenantId(createReqVO.getCommunityId());
|
||||||
memberHouseMapper.insert(memberHouse);
|
memberHouseMapper.insert(memberHouse);
|
||||||
|
|
||||||
return memberHouse.getId();
|
return memberHouse.getId();
|
||||||
|
|
@ -71,11 +89,23 @@ public class MemberHouseServiceImpl implements MemberHouseService {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
MemberHouseDO existHouse = validateMemberHouseExists(updateReqVO.getId());
|
MemberHouseDO existHouse = validateMemberHouseExists(updateReqVO.getId());
|
||||||
|
|
||||||
// 如果状态不是待审核或驳回,不允许修改基础信息(视业务规则而定)
|
// 如果状态不是待审核或驳回,不允许修改基础信息
|
||||||
if (existHouse.getStatus().equals(1)) {
|
if (existHouse.getStatus().equals(1)) {
|
||||||
throw exception(MEMBER_HOUSE_AUDITED_NOT_UPDATE);
|
throw exception(MEMBER_HOUSE_AUDITED_NOT_UPDATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 如果 memberId 为空,通过手机号检索会员
|
||||||
|
if (updateReqVO.getMemberId() == null) {
|
||||||
|
if (StrUtil.isBlank(updateReqVO.getMobile())) {
|
||||||
|
throw exception(MEMBER_HOUSE_MOBILE_REQUIRED);
|
||||||
|
}
|
||||||
|
MemberUserDO user = memberUserService.getUserByMobile(updateReqVO.getMobile());
|
||||||
|
if (user == null) {
|
||||||
|
throw exception(USER_MOBILE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
updateReqVO.setMemberId(user.getId());
|
||||||
|
}
|
||||||
|
|
||||||
// 更新
|
// 更新
|
||||||
MemberHouseDO updateObj = BeanUtils.toBean(updateReqVO, MemberHouseDO.class);
|
MemberHouseDO updateObj = BeanUtils.toBean(updateReqVO, MemberHouseDO.class);
|
||||||
memberHouseMapper.updateById(updateObj);
|
memberHouseMapper.updateById(updateObj);
|
||||||
|
|
@ -102,21 +132,16 @@ public class MemberHouseServiceImpl implements MemberHouseService {
|
||||||
// 1. 校验记录存在
|
// 1. 校验记录存在
|
||||||
MemberHouseDO house = validateMemberHouseExists(id);
|
MemberHouseDO house = validateMemberHouseExists(id);
|
||||||
|
|
||||||
// 2. 校验状态:只有待审核 (0) 才能进行审核
|
// 2. 如果是驳回,必须填写驳回原因
|
||||||
if (house.getStatus() != 0) {
|
|
||||||
throw exception(MEMBER_HOUSE_AUDIT_STATUS_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. 如果是驳回,必须填写驳回原因
|
|
||||||
if (status == 2 && StrUtil.isBlank(rejectReason)) {
|
if (status == 2 && StrUtil.isBlank(rejectReason)) {
|
||||||
throw exception(MEMBER_HOUSE_REJECT_REASON_REQUIRED);
|
throw exception(MEMBER_HOUSE_REJECT_REASON_REQUIRED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. 获取当前登录的管理员信息
|
// 3. 获取当前登录的管理员信息
|
||||||
Long currentUserId = SecurityFrameworkUtils.getLoginUserId();
|
Long currentUserId = SecurityFrameworkUtils.getLoginUserId();
|
||||||
String currentUserName = SecurityFrameworkUtils.getLoginUserNickname();
|
String currentUserName = SecurityFrameworkUtils.getLoginUserNickname();
|
||||||
|
|
||||||
// 5. 更新审核状态、审核人、审核时间及驳回原因
|
// 4. 更新审核状态、审核人、审核时间及驳回原因
|
||||||
MemberHouseDO updateObj = new MemberHouseDO();
|
MemberHouseDO updateObj = new MemberHouseDO();
|
||||||
updateObj.setId(id);
|
updateObj.setId(id);
|
||||||
updateObj.setStatus(status);
|
updateObj.setStatus(status);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue