新增会员房屋管理
parent
7e06b0f6fd
commit
27ee416c67
|
|
@ -0,0 +1,102 @@
|
||||||
|
package com.fjrcloud.community.module.community.controller.admin.memberhouse;
|
||||||
|
|
||||||
|
import com.fjrcloud.community.framework.apilog.core.annotation.ApiAccessLog;
|
||||||
|
import com.fjrcloud.community.framework.common.pojo.CommonResult;
|
||||||
|
import com.fjrcloud.community.framework.common.pojo.PageParam;
|
||||||
|
import com.fjrcloud.community.framework.common.pojo.PageResult;
|
||||||
|
import com.fjrcloud.community.framework.common.util.object.BeanUtils;
|
||||||
|
import com.fjrcloud.community.framework.excel.core.util.ExcelUtils;
|
||||||
|
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.MemberHouseSaveReqVO;
|
||||||
|
import com.fjrcloud.community.module.community.dal.dataobject.memberhouse.MemberHouseDO;
|
||||||
|
import com.fjrcloud.community.module.community.service.memberhouse.MemberHouseService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.fjrcloud.community.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
|
||||||
|
import static com.fjrcloud.community.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 业主认证信息")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/community/member-house")
|
||||||
|
@Validated
|
||||||
|
public class MemberHouseController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MemberHouseService memberHouseService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建业主认证信息")
|
||||||
|
@PreAuthorize("@ss.hasPermission('community:member-house:create')")
|
||||||
|
public CommonResult<Long> createMemberHouse(@Valid @RequestBody MemberHouseSaveReqVO createReqVO) {
|
||||||
|
return success(memberHouseService.createMemberHouse(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新业主认证信息")
|
||||||
|
@PreAuthorize("@ss.hasPermission('community:member-house:update')")
|
||||||
|
public CommonResult<Boolean> updateMemberHouse(@Valid @RequestBody MemberHouseSaveReqVO updateReqVO) {
|
||||||
|
memberHouseService.updateMemberHouse(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除业主认证信息")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
@PreAuthorize("@ss.hasPermission('community:member-house:delete')")
|
||||||
|
public CommonResult<Boolean> deleteMemberHouse(@RequestParam("id") Long id) {
|
||||||
|
memberHouseService.deleteMemberHouse(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete-list")
|
||||||
|
@Parameter(name = "ids", description = "编号", required = true)
|
||||||
|
@Operation(summary = "批量删除业主认证信息")
|
||||||
|
@PreAuthorize("@ss.hasPermission('community:member-house:delete')")
|
||||||
|
public CommonResult<Boolean> deleteMemberHouseList(@RequestParam("ids") List<Long> ids) {
|
||||||
|
memberHouseService.deleteMemberHouseListByIds(ids);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得业主认证信息")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('community:member-house:query')")
|
||||||
|
public CommonResult<MemberHouseRespVO> getMemberHouse(@RequestParam("id") Long id) {
|
||||||
|
MemberHouseDO memberHouse = memberHouseService.getMemberHouse(id);
|
||||||
|
return success(BeanUtils.toBean(memberHouse, MemberHouseRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得业主认证信息分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('community:member-house:query')")
|
||||||
|
public CommonResult<PageResult<MemberHouseRespVO>> getMemberHousePage(@Valid MemberHousePageReqVO pageReqVO) {
|
||||||
|
PageResult<MemberHouseDO> pageResult = memberHouseService.getMemberHousePage(pageReqVO);
|
||||||
|
return success(BeanUtils.toBean(pageResult, MemberHouseRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/export-excel")
|
||||||
|
@Operation(summary = "导出业主认证信息 Excel")
|
||||||
|
@PreAuthorize("@ss.hasPermission('community:member-house:export')")
|
||||||
|
@ApiAccessLog(operateType = EXPORT)
|
||||||
|
public void exportMemberHouseExcel(@Valid MemberHousePageReqVO pageReqVO,
|
||||||
|
HttpServletResponse response) throws IOException {
|
||||||
|
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||||
|
List<MemberHouseDO> list = memberHouseService.getMemberHousePage(pageReqVO).getList();
|
||||||
|
// 导出 Excel
|
||||||
|
ExcelUtils.write(response, "业主认证信息.xls", "数据", MemberHouseRespVO.class,
|
||||||
|
BeanUtils.toBean(list, MemberHouseRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.fjrcloud.community.module.community.controller.admin.memberhouse.vo;
|
||||||
|
|
||||||
|
import com.fjrcloud.community.framework.common.pojo.PageParam;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 管理后台 - 业主认证信息分页查询请求 VO
|
||||||
|
* 用于接收前端传入的分页参数及多维度过滤条件
|
||||||
|
*/
|
||||||
|
@Schema(description = "管理后台 - 业主认证信息分页 Request VO")
|
||||||
|
@Data
|
||||||
|
public class MemberHousePageReqVO extends PageParam {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 小区ID(对应下拉框)
|
||||||
|
*/
|
||||||
|
private Long communityId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 人员信息(姓名或手机号模糊搜索)
|
||||||
|
*/
|
||||||
|
private String keyword;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否产权人
|
||||||
|
*/
|
||||||
|
private Boolean isOwner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 与业主关系
|
||||||
|
*/
|
||||||
|
private String relationType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审核状态
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,96 @@
|
||||||
|
package com.fjrcloud.community.module.community.controller.admin.memberhouse.vo;
|
||||||
|
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 业主认证信息 Response VO")
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
public class MemberHouseRespVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20067")
|
||||||
|
@ExcelProperty("主键ID")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "会员ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24858")
|
||||||
|
@ExcelProperty("会员ID")
|
||||||
|
private Long memberId;
|
||||||
|
|
||||||
|
@Schema(description = "小区ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15661")
|
||||||
|
@ExcelProperty("小区ID")
|
||||||
|
private Long communityId;
|
||||||
|
|
||||||
|
@Schema(description = "小区名称", example = "张三")
|
||||||
|
@ExcelProperty("小区名称")
|
||||||
|
private String communityName;
|
||||||
|
|
||||||
|
@Schema(description = "房屋id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15336")
|
||||||
|
@ExcelProperty("房屋id")
|
||||||
|
private Long houseId;
|
||||||
|
|
||||||
|
@Schema(description = "楼号")
|
||||||
|
@ExcelProperty("楼号")
|
||||||
|
private String buildingNo;
|
||||||
|
|
||||||
|
@Schema(description = "单元号")
|
||||||
|
@ExcelProperty("单元号")
|
||||||
|
private String unitNo;
|
||||||
|
|
||||||
|
@Schema(description = "门牌号")
|
||||||
|
@ExcelProperty("门牌号")
|
||||||
|
private String roomNo;
|
||||||
|
|
||||||
|
@Schema(description = "是否产权人(0-否,1-是)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@ExcelProperty("是否产权人(0-否,1-是)")
|
||||||
|
private Boolean isOwner;
|
||||||
|
|
||||||
|
@Schema(description = "与产权人关系", example = "2")
|
||||||
|
@ExcelProperty("与产权人关系")
|
||||||
|
private String relationType;
|
||||||
|
|
||||||
|
@Schema(description = "姓名", example = "张三")
|
||||||
|
@ExcelProperty("姓名")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Schema(description = "手机号")
|
||||||
|
@ExcelProperty("手机号")
|
||||||
|
private String mobile;
|
||||||
|
|
||||||
|
@Schema(description = "证件类型", example = "2")
|
||||||
|
@ExcelProperty("证件类型")
|
||||||
|
private String idType;
|
||||||
|
|
||||||
|
@Schema(description = "证件号")
|
||||||
|
@ExcelProperty("证件号")
|
||||||
|
private String idNumber;
|
||||||
|
|
||||||
|
@Schema(description = "性别(0-未知,1-男,2-女)")
|
||||||
|
@ExcelProperty("性别(0-未知,1-男,2-女)")
|
||||||
|
private Integer sex;
|
||||||
|
|
||||||
|
@Schema(description = "出生日期")
|
||||||
|
@ExcelProperty("出生日期")
|
||||||
|
private LocalDate birthday;
|
||||||
|
|
||||||
|
@Schema(description = "附件URL", example = "https://www.fjrcloud.cn")
|
||||||
|
@ExcelProperty("附件URL")
|
||||||
|
private String attachmentUrl;
|
||||||
|
|
||||||
|
@Schema(description = "认证状态(0-待审核,1-已认证,2-驳回)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
@ExcelProperty("认证状态(0-待审核,1-已认证,2-驳回)")
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
@Schema(description = "驳回原因", example = "不好")
|
||||||
|
@ExcelProperty("驳回原因")
|
||||||
|
private String rejectReason;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@ExcelProperty("创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,75 @@
|
||||||
|
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;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 业主认证信息新增/修改 Request VO")
|
||||||
|
@Data
|
||||||
|
public class MemberHouseSaveReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20067")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "会员ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24858")
|
||||||
|
@NotNull(message = "会员ID不能为空")
|
||||||
|
private Long memberId;
|
||||||
|
|
||||||
|
@Schema(description = "小区ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15661")
|
||||||
|
@NotNull(message = "小区ID不能为空")
|
||||||
|
private Long communityId;
|
||||||
|
|
||||||
|
@Schema(description = "小区名称", example = "张三")
|
||||||
|
private String communityName;
|
||||||
|
|
||||||
|
@Schema(description = "房屋id", requiredMode = Schema.RequiredMode.REQUIRED, example = "15336")
|
||||||
|
@NotNull(message = "房屋id不能为空")
|
||||||
|
private Long houseId;
|
||||||
|
|
||||||
|
@Schema(description = "楼号")
|
||||||
|
private String buildingNo;
|
||||||
|
|
||||||
|
@Schema(description = "单元号")
|
||||||
|
private String unitNo;
|
||||||
|
|
||||||
|
@Schema(description = "门牌号")
|
||||||
|
private String roomNo;
|
||||||
|
|
||||||
|
@Schema(description = "是否产权人(0-否,1-是)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@NotNull(message = "是否产权人(0-否,1-是)不能为空")
|
||||||
|
private Boolean isOwner;
|
||||||
|
|
||||||
|
@Schema(description = "与产权人关系", example = "2")
|
||||||
|
private String relationType;
|
||||||
|
|
||||||
|
@Schema(description = "姓名", example = "张三")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Schema(description = "手机号")
|
||||||
|
private String mobile;
|
||||||
|
|
||||||
|
@Schema(description = "证件类型", example = "2")
|
||||||
|
private String idType;
|
||||||
|
|
||||||
|
@Schema(description = "证件号")
|
||||||
|
private String idNumber;
|
||||||
|
|
||||||
|
@Schema(description = "性别(0-未知,1-男,2-女)")
|
||||||
|
private Integer sex;
|
||||||
|
|
||||||
|
@Schema(description = "出生日期")
|
||||||
|
private LocalDate birthday;
|
||||||
|
|
||||||
|
@Schema(description = "附件URL", example = "https://www.fjrcloud.cn")
|
||||||
|
private String attachmentUrl;
|
||||||
|
|
||||||
|
@Schema(description = "认证状态(0-待审核,1-已认证,2-驳回)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
@NotNull(message = "认证状态(0-待审核,1-已认证,2-驳回)不能为空")
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
@Schema(description = "驳回原因", example = "不好")
|
||||||
|
private String rejectReason;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,37 @@
|
||||||
|
package com.fjrcloud.community.module.community.controller.app.house;
|
||||||
|
|
||||||
|
import com.fjrcloud.community.framework.common.pojo.CommonResult;
|
||||||
|
import com.fjrcloud.community.module.community.controller.app.house.vo.HouseTreeNodeVO;
|
||||||
|
import com.fjrcloud.community.module.community.service.house.HouseService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
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.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.fjrcloud.community.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
@Tag(name = "用户 APP - 房屋信息")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/community/house")
|
||||||
|
@Validated
|
||||||
|
@Slf4j
|
||||||
|
public class AppHouseController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private HouseService houseService;
|
||||||
|
|
||||||
|
@GetMapping("/tree")
|
||||||
|
@Operation(summary = "获取小区房屋级联树(楼号-单元-房号)")
|
||||||
|
@Parameter(name = "communityId", description = "小区ID", required = true, example = "1")
|
||||||
|
public CommonResult<List<HouseTreeNodeVO>> getHouseTree(@RequestParam("communityId") Long communityId) {
|
||||||
|
return success(houseService.getHouseTreeByCommunityId(communityId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.fjrcloud.community.module.community.controller.app.house.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Schema(description = "APP - 房屋层级树节点 VO")
|
||||||
|
@Data
|
||||||
|
public class HouseTreeNodeVO {
|
||||||
|
|
||||||
|
@Schema(description = "节点值(用于提交表单)", example = "1")
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
@Schema(description = "节点显示名称(用于下拉展示)", example = "1号楼")
|
||||||
|
private String label;
|
||||||
|
|
||||||
|
@Schema(description = "子节点列表(楼号下是单元,单元下是房号)")
|
||||||
|
private List<HouseTreeNodeVO> children;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,105 @@
|
||||||
|
package com.fjrcloud.community.module.community.dal.dataobject.memberhouse;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.fjrcloud.community.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业主认证信息 DO
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@TableName("comm_member_house")
|
||||||
|
@KeySequence("comm_member_house_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class MemberHouseDO extends BaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键ID
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 会员ID
|
||||||
|
*/
|
||||||
|
private Long memberId;
|
||||||
|
/**
|
||||||
|
* 小区ID
|
||||||
|
*/
|
||||||
|
private Long communityId;
|
||||||
|
/**
|
||||||
|
* 小区名称
|
||||||
|
*/
|
||||||
|
private String communityName;
|
||||||
|
/**
|
||||||
|
* 房屋id
|
||||||
|
*/
|
||||||
|
private Long houseId;
|
||||||
|
/**
|
||||||
|
* 楼号
|
||||||
|
*/
|
||||||
|
private String buildingNo;
|
||||||
|
/**
|
||||||
|
* 单元号
|
||||||
|
*/
|
||||||
|
private String unitNo;
|
||||||
|
/**
|
||||||
|
* 门牌号
|
||||||
|
*/
|
||||||
|
private String roomNo;
|
||||||
|
/**
|
||||||
|
* 是否产权人(0-否,1-是)
|
||||||
|
*/
|
||||||
|
private Boolean isOwner;
|
||||||
|
/**
|
||||||
|
* 与产权人关系
|
||||||
|
*/
|
||||||
|
private String relationType;
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
private String mobile;
|
||||||
|
/**
|
||||||
|
* 证件类型
|
||||||
|
*/
|
||||||
|
private String idType;
|
||||||
|
/**
|
||||||
|
* 证件号
|
||||||
|
*/
|
||||||
|
private String idNumber;
|
||||||
|
/**
|
||||||
|
* 性别(0-未知,1-男,2-女)
|
||||||
|
*/
|
||||||
|
private Integer sex;
|
||||||
|
/**
|
||||||
|
* 出生日期
|
||||||
|
*/
|
||||||
|
private LocalDate birthday;
|
||||||
|
/**
|
||||||
|
* 附件URL
|
||||||
|
*/
|
||||||
|
private String attachmentUrl;
|
||||||
|
/**
|
||||||
|
* 认证状态(0-待审核,1-已认证,2-驳回)
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
/**
|
||||||
|
* 驳回原因
|
||||||
|
*/
|
||||||
|
private String rejectReason;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.fjrcloud.community.module.community.dal.mysql.memberhouse;
|
||||||
|
|
||||||
|
import com.fjrcloud.community.framework.common.pojo.PageResult;
|
||||||
|
import com.fjrcloud.community.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import com.fjrcloud.community.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHousePageReqVO;
|
||||||
|
import com.fjrcloud.community.module.community.dal.dataobject.memberhouse.MemberHouseDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业主认证信息 Mapper
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface MemberHouseMapper extends BaseMapperX<MemberHouseDO> {
|
||||||
|
|
||||||
|
default PageResult<MemberHouseDO> selectPage(MemberHousePageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<MemberHouseDO>()
|
||||||
|
.eqIfPresent(MemberHouseDO::getCommunityId, reqVO.getCommunityId())
|
||||||
|
.eqIfPresent(MemberHouseDO::getIsOwner, reqVO.getIsOwner())
|
||||||
|
.eqIfPresent(MemberHouseDO::getRelationType, reqVO.getRelationType())
|
||||||
|
.eqIfPresent(MemberHouseDO::getStatus, reqVO.getStatus())
|
||||||
|
.orderByDesc(MemberHouseDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<MemberHouseDO> selectListByCommunityAndRoom(Long communityId, String buildingNo, String unitNo, String roomNo, String mobile) {
|
||||||
|
return selectList(new LambdaQueryWrapperX<MemberHouseDO>()
|
||||||
|
.eq(MemberHouseDO::getCommunityId, communityId)
|
||||||
|
.eq(MemberHouseDO::getBuildingNo, buildingNo)
|
||||||
|
.eq(MemberHouseDO::getUnitNo, unitNo)
|
||||||
|
.eq(MemberHouseDO::getRoomNo, roomNo)
|
||||||
|
.eq(MemberHouseDO::getMobile, mobile));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -18,4 +18,14 @@ public interface ErrorCodeConstants {
|
||||||
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, "导入房屋数据不能为空!");
|
||||||
|
|
||||||
|
ErrorCode MEMBER_HOUSE_NOT_EXISTS = new ErrorCode(2_002_001_002, "业主认证信息不存在");
|
||||||
|
|
||||||
|
ErrorCode MEMBER_HOUSE_EXISTS = new ErrorCode(2_002_001_003, "该房屋已存在认证记录,请勿重复提交");
|
||||||
|
|
||||||
|
ErrorCode MEMBER_HOUSE_AUDITED_NOT_UPDATE = new ErrorCode(2_002_001_004, "已审核通过的认证记录不允许修改");
|
||||||
|
|
||||||
|
ErrorCode MEMBER_HOUSE_AUDIT_STATUS_ERROR = new ErrorCode(2_002_001_005, "该记录状态不允许进行审核操作");
|
||||||
|
|
||||||
|
ErrorCode MEMBER_HOUSE_REJECT_REASON_REQUIRED = new ErrorCode(2_002_001_006, "驳回时必须填写驳回原因");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import com.fjrcloud.community.framework.common.pojo.PageResult;
|
||||||
import com.fjrcloud.community.module.community.controller.admin.house.vo.HouseImportExcelVO;
|
import com.fjrcloud.community.module.community.controller.admin.house.vo.HouseImportExcelVO;
|
||||||
import com.fjrcloud.community.module.community.controller.admin.house.vo.HousePageReqVO;
|
import com.fjrcloud.community.module.community.controller.admin.house.vo.HousePageReqVO;
|
||||||
import com.fjrcloud.community.module.community.controller.admin.house.vo.HouseSaveReqVO;
|
import com.fjrcloud.community.module.community.controller.admin.house.vo.HouseSaveReqVO;
|
||||||
|
import com.fjrcloud.community.module.community.controller.app.house.vo.HouseTreeNodeVO;
|
||||||
import com.fjrcloud.community.module.community.dal.dataobject.house.HouseDO;
|
import com.fjrcloud.community.module.community.dal.dataobject.house.HouseDO;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
|
@ -71,4 +72,12 @@ public interface HouseService {
|
||||||
*/
|
*/
|
||||||
ImportResultRespVO importHouseList(List<HouseImportExcelVO> importHouses, boolean isUpdateSupport);
|
ImportResultRespVO importHouseList(List<HouseImportExcelVO> importHouses, boolean isUpdateSupport);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取小区房屋级联树(楼号 - 单元 - 房号)
|
||||||
|
*
|
||||||
|
* @param communityId 小区 ID
|
||||||
|
* @return 房屋树形列表
|
||||||
|
*/
|
||||||
|
List<HouseTreeNodeVO> getHouseTreeByCommunityId(Long communityId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -5,11 +5,13 @@ import cn.hutool.core.util.StrUtil;
|
||||||
import com.fjrcloud.community.framework.common.pojo.ImportResultRespVO;
|
import com.fjrcloud.community.framework.common.pojo.ImportResultRespVO;
|
||||||
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.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import com.fjrcloud.community.framework.tenant.core.context.TenantContextHolder;
|
import com.fjrcloud.community.framework.tenant.core.context.TenantContextHolder;
|
||||||
import com.fjrcloud.community.framework.tenant.core.util.TenantUtils;
|
import com.fjrcloud.community.framework.tenant.core.util.TenantUtils;
|
||||||
import com.fjrcloud.community.module.community.controller.admin.house.vo.HouseImportExcelVO;
|
import com.fjrcloud.community.module.community.controller.admin.house.vo.HouseImportExcelVO;
|
||||||
import com.fjrcloud.community.module.community.controller.admin.house.vo.HousePageReqVO;
|
import com.fjrcloud.community.module.community.controller.admin.house.vo.HousePageReqVO;
|
||||||
import com.fjrcloud.community.module.community.controller.admin.house.vo.HouseSaveReqVO;
|
import com.fjrcloud.community.module.community.controller.admin.house.vo.HouseSaveReqVO;
|
||||||
|
import com.fjrcloud.community.module.community.controller.app.house.vo.HouseTreeNodeVO;
|
||||||
import com.fjrcloud.community.module.community.dal.dataobject.community.CommunityDO;
|
import com.fjrcloud.community.module.community.dal.dataobject.community.CommunityDO;
|
||||||
import com.fjrcloud.community.module.community.dal.dataobject.house.HouseDO;
|
import com.fjrcloud.community.module.community.dal.dataobject.house.HouseDO;
|
||||||
import com.fjrcloud.community.module.community.dal.mysql.community.CommunityMapper;
|
import com.fjrcloud.community.module.community.dal.mysql.community.CommunityMapper;
|
||||||
|
|
@ -273,4 +275,60 @@ public class HouseServiceImpl implements HouseService {
|
||||||
return CollUtil.isNotEmpty(houses) ? houses.get(0) : null;
|
return CollUtil.isNotEmpty(houses) ? houses.get(0) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<HouseTreeNodeVO> getHouseTreeByCommunityId(Long communityId) {
|
||||||
|
// 1. 仅查询必要的三个层级字段,提升查询效率
|
||||||
|
List<HouseDO> houses = houseMapper.selectList(new LambdaQueryWrapperX<HouseDO>()
|
||||||
|
.eq(HouseDO::getCommunityId, communityId)
|
||||||
|
.select(HouseDO::getBuildingNo, HouseDO::getUnitNo, HouseDO::getRoomNo)
|
||||||
|
.isNotNull(HouseDO::getBuildingNo)
|
||||||
|
.isNotNull(HouseDO::getRoomNo));
|
||||||
|
|
||||||
|
if (CollUtil.isEmpty(houses)) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 内存聚合:构建 楼号 -> 单元号 -> 房号 的嵌套 Map
|
||||||
|
Map<String, Map<String, List<String>>> buildingUnitMap = new HashMap<>();
|
||||||
|
for (HouseDO house : houses) {
|
||||||
|
String buildingNo = StrUtil.blankToDefault(house.getBuildingNo(), "其他");
|
||||||
|
String unitNo = StrUtil.blankToDefault(house.getUnitNo(), "默认单元");
|
||||||
|
String roomNo = house.getRoomNo();
|
||||||
|
|
||||||
|
buildingUnitMap.computeIfAbsent(buildingNo, k -> new HashMap<>())
|
||||||
|
.computeIfAbsent(unitNo, k -> new ArrayList<>())
|
||||||
|
.add(roomNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 转换为树形 VO 结构
|
||||||
|
List<HouseTreeNodeVO> tree = new ArrayList<>();
|
||||||
|
buildingUnitMap.keySet().stream().sorted().forEach(buildingNo -> {
|
||||||
|
HouseTreeNodeVO buildingNode = new HouseTreeNodeVO();
|
||||||
|
buildingNode.setValue(buildingNo);
|
||||||
|
buildingNode.setLabel(buildingNo + "号楼");
|
||||||
|
buildingNode.setChildren(new ArrayList<>());
|
||||||
|
|
||||||
|
Map<String, List<String>> unitMap = buildingUnitMap.get(buildingNo);
|
||||||
|
unitMap.keySet().stream().sorted().forEach(unitNo -> {
|
||||||
|
HouseTreeNodeVO unitNode = new HouseTreeNodeVO();
|
||||||
|
unitNode.setValue(unitNo);
|
||||||
|
unitNode.setLabel(unitNo + "单元");
|
||||||
|
unitNode.setChildren(new ArrayList<>());
|
||||||
|
|
||||||
|
// 房号去重并排序
|
||||||
|
unitMap.get(unitNo).stream().distinct().sorted().forEach(roomNo -> {
|
||||||
|
HouseTreeNodeVO roomNode = new HouseTreeNodeVO();
|
||||||
|
roomNode.setValue(roomNo);
|
||||||
|
roomNode.setLabel(roomNo);
|
||||||
|
unitNode.getChildren().add(roomNode);
|
||||||
|
});
|
||||||
|
|
||||||
|
buildingNode.getChildren().add(unitNode);
|
||||||
|
});
|
||||||
|
tree.add(buildingNode);
|
||||||
|
});
|
||||||
|
|
||||||
|
return tree;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
package com.fjrcloud.community.module.community.service.memberhouse;
|
||||||
|
|
||||||
|
import com.fjrcloud.community.framework.common.pojo.PageResult;
|
||||||
|
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHousePageReqVO;
|
||||||
|
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHouseSaveReqVO;
|
||||||
|
import com.fjrcloud.community.module.community.dal.dataobject.memberhouse.MemberHouseDO;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业主认证信息 Service 接口
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
public interface MemberHouseService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建业主认证信息
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createMemberHouse(@Valid MemberHouseSaveReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新业主认证信息
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updateMemberHouse(@Valid MemberHouseSaveReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除业主认证信息
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deleteMemberHouse(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除业主认证信息
|
||||||
|
*
|
||||||
|
* @param ids 编号
|
||||||
|
*/
|
||||||
|
void deleteMemberHouseListByIds(List<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得业主认证信息
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return 业主认证信息
|
||||||
|
*/
|
||||||
|
MemberHouseDO getMemberHouse(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得业主认证信息分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 业主认证信息分页
|
||||||
|
*/
|
||||||
|
PageResult<MemberHouseDO> getMemberHousePage(MemberHousePageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审核业主认证
|
||||||
|
*
|
||||||
|
* @param id 认证 ID
|
||||||
|
* @param status 审核状态(1-通过,2-驳回)
|
||||||
|
* @param rejectReason 驳回原因(仅驳回时必填)
|
||||||
|
*/
|
||||||
|
void auditMemberHouse(Long id, Integer status, String rejectReason);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解除绑定(删除认证记录)
|
||||||
|
*
|
||||||
|
* @param id 认证 ID
|
||||||
|
*/
|
||||||
|
void unbindMemberHouse(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验认证是否存在
|
||||||
|
*/
|
||||||
|
MemberHouseDO validateMemberHouseExists(Long id);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,149 @@
|
||||||
|
package com.fjrcloud.community.module.community.service.memberhouse;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.fjrcloud.community.framework.common.pojo.PageResult;
|
||||||
|
import com.fjrcloud.community.framework.common.util.object.BeanUtils;
|
||||||
|
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHousePageReqVO;
|
||||||
|
import com.fjrcloud.community.module.community.controller.admin.memberhouse.vo.MemberHouseSaveReqVO;
|
||||||
|
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.service.community.CommunityService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.fjrcloud.community.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static com.fjrcloud.community.module.community.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 业主认证信息 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
@Slf4j
|
||||||
|
public class MemberHouseServiceImpl implements MemberHouseService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private MemberHouseMapper memberHouseMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private CommunityService communityService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public Long createMemberHouse(MemberHouseSaveReqVO createReqVO) {
|
||||||
|
// 1. 校验小区是否存在
|
||||||
|
if (communityService.getCommunity(createReqVO.getCommunityId()) == null) {
|
||||||
|
throw exception(COMMUNITY_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 校验重复认证:同一小区、同一房屋、同一手机号不能重复认证
|
||||||
|
List<MemberHouseDO> existList = memberHouseMapper.selectListByCommunityAndRoom(
|
||||||
|
createReqVO.getCommunityId(),
|
||||||
|
createReqVO.getBuildingNo(),
|
||||||
|
createReqVO.getUnitNo(),
|
||||||
|
createReqVO.getRoomNo(),
|
||||||
|
createReqVO.getMobile());
|
||||||
|
if (CollUtil.isNotEmpty(existList)) {
|
||||||
|
throw exception(MEMBER_HOUSE_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 插入数据,默认状态为待审核 (0)
|
||||||
|
MemberHouseDO memberHouse = BeanUtils.toBean(createReqVO, MemberHouseDO.class);
|
||||||
|
memberHouse.setStatus(0);
|
||||||
|
memberHouseMapper.insert(memberHouse);
|
||||||
|
|
||||||
|
return memberHouse.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void updateMemberHouse(MemberHouseSaveReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
MemberHouseDO existHouse = validateMemberHouseExists(updateReqVO.getId());
|
||||||
|
|
||||||
|
// 如果状态不是待审核或驳回,不允许修改基础信息(视业务规则而定)
|
||||||
|
if (existHouse.getStatus().equals(1)) {
|
||||||
|
throw exception(MEMBER_HOUSE_AUDITED_NOT_UPDATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新
|
||||||
|
MemberHouseDO updateObj = BeanUtils.toBean(updateReqVO, MemberHouseDO.class);
|
||||||
|
memberHouseMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void deleteMemberHouse(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
validateMemberHouseExists(id);
|
||||||
|
// 删除
|
||||||
|
memberHouseMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void deleteMemberHouseListByIds(List<Long> ids) {
|
||||||
|
memberHouseMapper.deleteByIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void auditMemberHouse(Long id, Integer status, String rejectReason) {
|
||||||
|
// 1. 校验记录存在
|
||||||
|
MemberHouseDO house = validateMemberHouseExists(id);
|
||||||
|
|
||||||
|
// 2. 校验状态:只有待审核 (0) 才能进行审核
|
||||||
|
if (house.getStatus() != 0) {
|
||||||
|
throw exception(MEMBER_HOUSE_AUDIT_STATUS_ERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 如果是驳回,必须填写驳回原因
|
||||||
|
if (status == 2 && StrUtil.isBlank(rejectReason)) {
|
||||||
|
throw exception(MEMBER_HOUSE_REJECT_REASON_REQUIRED);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 更新审核状态、审核人、审核时间
|
||||||
|
MemberHouseDO updateObj = new MemberHouseDO();
|
||||||
|
updateObj.setId(id);
|
||||||
|
updateObj.setStatus(status);
|
||||||
|
updateObj.setRejectReason(rejectReason);
|
||||||
|
|
||||||
|
memberHouseMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void unbindMemberHouse(Long id) {
|
||||||
|
// 解除绑定即删除该认证记录
|
||||||
|
validateMemberHouseExists(id);
|
||||||
|
memberHouseMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MemberHouseDO validateMemberHouseExists(Long id) {
|
||||||
|
MemberHouseDO memberHouse = memberHouseMapper.selectById(id);
|
||||||
|
if (memberHouse == null) {
|
||||||
|
throw exception(MEMBER_HOUSE_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
return memberHouse;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MemberHouseDO getMemberHouse(Long id) {
|
||||||
|
return memberHouseMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<MemberHouseDO> getMemberHousePage(MemberHousePageReqVO pageReqVO) {
|
||||||
|
return memberHouseMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.fjrcloud.community.module.community.dal.mysql.memberhouse.MemberHouseMapper">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||||
|
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||||
|
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||||
|
文档可见:https://www.fjrcloud.cn/MyBatis/x-plugins/
|
||||||
|
-->
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Loading…
Reference in New Issue