From 0fc483c7acf5bf30c92b921e8002774d0e97b61f Mon Sep 17 00:00:00 2001
From: zxf <1532322479@qq.com>
Date: Mon, 5 Jan 2026 21:53:42 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E7=A7=9F=E6=88=B7?=
=?UTF-8?q?=E7=AE=A1=E7=90=86=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../pm/pmowner/pmowner-add-and-update.vue | 77 ++++-
.../pm/pmowner/rent-record-add-and-update.vue | 6 +-
.../pm/pmowner/tenant-add-and-update.vue | 54 ++-
.../controller/EbUserController.java | 309 ++++++++++++++++++
.../controller/PmOwnerController.java | 121 ++++++-
.../modules/autogencode/entity/PmOwner.java | 9 +
.../modules/autogencode/entity/PmTenant.java | 10 +
.../autogencode/entity/PmTenantHouse.java | 173 +++++-----
.../java/com/zbkj/common/model/user/User.java | 10 +-
.../com/zbkj/service/service/UserService.java | 8 +
.../service/service/impl/UserServiceImpl.java | 12 +
11 files changed, 652 insertions(+), 137 deletions(-)
create mode 100644 crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/EbUserController.java
diff --git a/admin/src/views/pm/pmowner/pmowner-add-and-update.vue b/admin/src/views/pm/pmowner/pmowner-add-and-update.vue
index 436fc44..bdcb120 100644
--- a/admin/src/views/pm/pmowner/pmowner-add-and-update.vue
+++ b/admin/src/views/pm/pmowner/pmowner-add-and-update.vue
@@ -81,7 +81,7 @@
-
+
@@ -90,6 +90,7 @@
import * as deptApi from '@/api/sysdept.js'
import * as tenantApi from '@/api/pmtenant.js'
import * as houseApi from '@/api/pmhouse.js'
+ import * as rentRecordApi from '@/api/pmtenanthouse.js'
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import TenantAddAndUpdate from './tenant-add-and-update.vue'
@@ -120,6 +121,9 @@
ownerName: [
{ required: true, message: '业主姓名 为必填项', trigger: 'blur' }
],
+ deptId: [
+ { required: true, message: '部门 为必填项', trigger: 'blur' }
+ ],
ownerType: [
{ required: true, message: '业主类型 为必填项', trigger: 'blur' }
],
@@ -150,6 +154,7 @@
tenantApi.pmtenantListByOwnerIdApi(this.dataForm.id, { page: 1, limit: 9999 }).then(res => {
try {
this.tenantList = Array.isArray(res) ? res : (res.list || [])
+ this.loadRentRecordsForTenants()
} catch (error) {
this.tenantList = []
}
@@ -157,6 +162,36 @@
this.tenantList = []
})
},
+ // 加载租户的租赁记录
+ loadRentRecordsForTenants() {
+ this.tenantList.forEach(tenant => {
+ if (tenant.id) {
+ rentRecordApi.pmtenanthouseListApi({ rentId: tenant.id, page: 1, limit: 9999 }).then(res => {
+ try {
+ tenant.pmTenantHouses = Array.isArray(res) ? res : (res.list || [])
+ } catch (error) {
+ tenant.pmTenantHouses = []
+ }
+ }).catch(err => {
+ tenant.pmTenantHouses = []
+ })
+ } else {
+ tenant.pmTenantHouses = []
+ }
+ })
+ },
+ // 保存租户(从租户弹窗接收)
+ saveTenant(tenantData) {
+ if (!tenantData) return
+
+ const existingIndex = this.tenantList.findIndex(tenant => tenant.id === tenantData.id)
+
+ if (existingIndex !== -1) {
+ this.tenantList.splice(existingIndex, 1, tenantData)
+ } else {
+ this.tenantList.push(tenantData)
+ }
+ },
// 添加租户
addTenant() {
if (this.$refs.tenantAddOrUpdate) {
@@ -212,8 +247,13 @@
if (this.dataForm.id) {
api.pmownerDetailApi(id).then(function(res) {
this.dataForm = res;
- // 获取该业主的租户列表
- this.getTenantList()
+ // 如果后端返回了租户列表,直接使用
+ if (res.pmTenants && res.pmTenants.length > 0) {
+ this.tenantList = res.pmTenants
+ } else {
+ // 否则通过API获取租户列表
+ this.getTenantList()
+ }
}.bind(this))
} else {
// 新增时清空租户列表
@@ -225,14 +265,41 @@
dataSubmit () {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
+ const submitData = {
+ id: this.dataForm.id,
+ ownerName: this.dataForm.ownerName,
+ ownerType: this.dataForm.ownerType,
+ ownerIdcard: this.dataForm.ownerIdcard,
+ phone: this.dataForm.phone,
+ email: this.dataForm.email,
+ emergencyContact: this.dataForm.emergencyContact,
+ emergencyPhone: this.dataForm.emergencyPhone,
+ status: this.dataForm.status,
+ deptId: this.dataForm.deptId,
+ houseId: this.dataForm.houseId,
+ remark: this.dataForm.remark,
+ pmTenants: this.tenantList.map(tenant => ({
+ id: tenant.id,
+ tenantName: tenant.tenantName,
+ tenantType: tenant.tenantType,
+ idCard: tenant.idCard,
+ phome: tenant.phome,
+ company: tenant.company,
+ status: tenant.status,
+ remark: tenant.remark,
+ tenantId: tenant.tenantId,
+ pmTenantHouses: tenant.pmTenantHouses || []
+ }))
+ }
+
if (this.dataForm.id) {
- api.pmownerUpdateApi(this.dataForm).then(function(res) {
+ api.pmownerUpdateApi(submitData).then(function(res) {
this.$message.success('保存成功')
this.visible = false
this.$emit('refreshDataList')
}.bind(this));
} else {
- api.pmownerCreateApi(this.dataForm).then(function(res) {
+ api.pmownerCreateApi(submitData).then(function(res) {
this.$message.success('新增成功')
this.visible = false
this.$emit('refreshDataList')
diff --git a/admin/src/views/pm/pmowner/rent-record-add-and-update.vue b/admin/src/views/pm/pmowner/rent-record-add-and-update.vue
index 7b3a8ff..1323d74 100644
--- a/admin/src/views/pm/pmowner/rent-record-add-and-update.vue
+++ b/admin/src/views/pm/pmowner/rent-record-add-and-update.vue
@@ -4,14 +4,14 @@
:title="!dataForm.id ? '添加' : '修改'"
:close-on-click-modal="false"
:visible.sync="visible"
- :z-index="3000">
+ :z-index="2000">
-
+
-
+
diff --git a/admin/src/views/pm/pmowner/tenant-add-and-update.vue b/admin/src/views/pm/pmowner/tenant-add-and-update.vue
index e4e2790..480c91b 100644
--- a/admin/src/views/pm/pmowner/tenant-add-and-update.vue
+++ b/admin/src/views/pm/pmowner/tenant-add-and-update.vue
@@ -28,14 +28,13 @@
-
-
- 添加租赁记录
-
+
+
+ 添加租赁记录
+
-
@@ -195,36 +194,23 @@
dataSubmit () {
this.$refs['dataForm'].validate((valid) => {
if (valid) {
- if (this.dataForm.id) {
- api.pmtenantUpdateApi(this.dataForm).then(() => {
- this.$message.success('保存成功')
- this.visible = false
- this.$emit('refreshDataList')
- })
- } else {
- api.pmtenantCreateApi(this.dataForm).then(res => {
- const tenantId = res.id
- if (tenantId && this.ownerId) {
- const relData = {
- tenantHouseId: tenantId,
- ownerId: this.ownerId,
- tenantId: this.dataForm.tenantId,
- delFlag: '0'
- }
- relApi.pmtentanthouserelCreateApi(relData).then(() => {
- this.$message.success('新增成功')
- this.visible = false
- this.$emit('refreshDataList')
- }).catch(() => {
- this.$message.error('关联关系创建失败')
- })
- } else {
- this.$message.success('新增成功')
- this.visible = false
- this.$emit('refreshDataList')
- }
- })
+ const tenantData = {
+ id: this.dataForm.id,
+ tenantName: this.dataForm.tenantName,
+ tenantType: this.dataForm.tenantType,
+ idCard: this.dataForm.idCard,
+ phome: this.dataForm.phome,
+ company: this.dataForm.company,
+ status: this.dataForm.status,
+ remark: this.dataForm.remark,
+ tenantId: this.dataForm.tenantId,
+ pmTenantHouses: this.rentRecords
}
+
+ this.$emit('saveTenant', tenantData)
+ this.$message.success('保存成功')
+ this.visible = false
+ this.$emit('refreshDataList')
}
})
}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/EbUserController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/EbUserController.java
new file mode 100644
index 0000000..7e0bb7d
--- /dev/null
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/EbUserController.java
@@ -0,0 +1,309 @@
+package com.zbkj.modules.autogencode.controller;
+
+import java.util.Arrays;
+import java.util.Map;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zbkj.common.model.user.User;
+import com.zbkj.common.request.PageParamRequest;
+import com.zbkj.common.response.CommonResult;
+import com.zbkj.common.page.CommonPage;
+import com.zbkj.service.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
+
+
+
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
+
+
+
+/**
+ * 用户表 控制器
+ */
+@RestController
+@RequestMapping("api/autogencode/ebuser")
+public class EbUserController {
+ @Autowired
+ private UserService ebUserService;
+
+
+
+ /**
+ * 条件设置
+ * 根据实体类字段自动生成查询条件
+ */
+ private void condition(LambdaQueryWrapper queryWrapper, User request) {
+ if (request == null) {
+ return;
+ }
+
+ // 根据实体类字段自动生成查询条件
+
+ // 用户id
+ if (request.getUid() != null) {
+ queryWrapper.eq(User::getUid, request.getUid());
+ }
+
+ // 用户账号
+ if (StrUtil.isNotBlank(request.getAccount())) {
+ queryWrapper.eq(User::getAccount, request.getAccount());
+ }
+
+ // 用户密码
+ if (StrUtil.isNotBlank(request.getPwd())) {
+ queryWrapper.eq(User::getPwd, request.getPwd());
+ }
+
+ // 真实姓名
+ if (StrUtil.isNotBlank(request.getRealName())) {
+ queryWrapper.eq(User::getRealName, request.getRealName());
+ }
+
+ // 生日
+ if (StrUtil.isNotBlank(request.getBirthday())) {
+ queryWrapper.eq(User::getBirthday, request.getBirthday());
+ }
+
+ // 身份证号码
+ if (StrUtil.isNotBlank(request.getCardId())) {
+ queryWrapper.eq(User::getCardId, request.getCardId());
+ }
+
+ // 用户备注
+ if (StrUtil.isNotBlank(request.getMark())) {
+ queryWrapper.eq(User::getMark, request.getMark());
+ }
+
+ // 合伙人id
+ if (request.getPartnerId() != null) {
+ queryWrapper.eq(User::getPartnerId, request.getPartnerId());
+ }
+
+ // 用户分组id
+ if (StrUtil.isNotBlank(request.getGroupId())) {
+ queryWrapper.eq(User::getGroupId, request.getGroupId());
+ }
+
+ // 标签id
+ if (StrUtil.isNotBlank(request.getTagId())) {
+ queryWrapper.eq(User::getTagId, request.getTagId());
+ }
+
+ // 用户昵称
+ if (StrUtil.isNotBlank(request.getNickname())) {
+ queryWrapper.eq(User::getNickname, request.getNickname());
+ }
+
+ // 用户头像
+ if (StrUtil.isNotBlank(request.getAvatar())) {
+ queryWrapper.eq(User::getAvatar, request.getAvatar());
+ }
+
+ // 手机号码
+ if (StrUtil.isNotBlank(request.getPhone())) {
+ queryWrapper.eq(User::getPhone, request.getPhone());
+ }
+
+ // 添加ip
+ if (StrUtil.isNotBlank(request.getAddIp())) {
+ queryWrapper.eq(User::getAddIp, request.getAddIp());
+ }
+
+ // 最后一次登录ip
+ if (StrUtil.isNotBlank(request.getLastIp())) {
+ queryWrapper.eq(User::getLastIp, request.getLastIp());
+ }
+
+ // 用户余额
+ if (request.getNowMoney() != null) {
+ queryWrapper.eq(User::getNowMoney, request.getNowMoney());
+ }
+
+ // 佣金金额
+ if (request.getBrokeragePrice() != null) {
+ queryWrapper.eq(User::getBrokeragePrice, request.getBrokeragePrice());
+ }
+
+ // 用户剩余积分
+ if (request.getIntegral() != null) {
+ queryWrapper.eq(User::getIntegral, request.getIntegral());
+ }
+
+ // 用户剩余经验
+ if (request.getExperience() != null) {
+ queryWrapper.eq(User::getExperience, request.getExperience());
+ }
+
+ // 连续签到天数
+ if (request.getSignNum() != null) {
+ queryWrapper.eq(User::getSignNum, request.getSignNum());
+ }
+
+ // 1为正常,0为禁止
+ if (request.getStatus() != null) {
+ queryWrapper.eq(User::getStatus, request.getStatus());
+ }
+
+ // 等级
+ if (request.getLevel() != null) {
+ queryWrapper.eq(User::getLevel, request.getLevel());
+ }
+
+ // 推广员id
+ if (request.getSpreadUid() != null) {
+ queryWrapper.eq(User::getSpreadUid, request.getSpreadUid());
+ }
+
+ // 推广员关联时间
+ if (request.getSpreadTime() != null) {
+ queryWrapper.eq(User::getSpreadTime, request.getSpreadTime());
+ }
+
+ // 用户类型
+ if (StrUtil.isNotBlank(request.getUserType())) {
+ queryWrapper.eq(User::getUserType, request.getUserType());
+ }
+
+ // 是否为推广员
+ if (request.getIsPromoter() != null) {
+ queryWrapper.eq(User::getIsPromoter, request.getIsPromoter());
+ }
+
+ // 用户购买次数
+ if (request.getPayCount() != null) {
+ queryWrapper.eq(User::getPayCount, request.getPayCount());
+ }
+
+ // 下级人数
+ if (request.getSpreadCount() != null) {
+ queryWrapper.eq(User::getSpreadCount, request.getSpreadCount());
+ }
+
+ // 详细地址
+ if (StrUtil.isNotBlank(request.getAddres())) {
+ queryWrapper.eq(User::getAddres, request.getAddres());
+ }
+
+ // 管理员编号
+ if (request.getAdminid() != null) {
+ queryWrapper.eq(User::getAdminid, request.getAdminid());
+ }
+
+ // 用户登陆类型,h5,wechat,routine
+ if (StrUtil.isNotBlank(request.getLoginType())) {
+ queryWrapper.eq(User::getLoginType, request.getLoginType());
+ }
+
+ // 创建时间
+ if (request.getCreateTime() != null) {
+ queryWrapper.eq(User::getCreateTime, request.getCreateTime());
+ }
+
+ // 更新时间
+ if (request.getUpdateTime() != null) {
+ queryWrapper.eq(User::getUpdateTime, request.getUpdateTime());
+ }
+
+ // 最后一次登录时间
+ if (request.getLastLoginTime() != null) {
+ queryWrapper.eq(User::getLastLoginTime, request.getLastLoginTime());
+ }
+
+ // 清除时间
+ if (request.getCleanTime() != null) {
+ queryWrapper.eq(User::getCleanTime, request.getCleanTime());
+ }
+
+ // 推广等级记录
+ if (StrUtil.isNotBlank(request.getPath())) {
+ queryWrapper.eq(User::getPath, request.getPath());
+ }
+
+ // 是否关注公众号
+ if (request.getSubscribe() != null) {
+ queryWrapper.eq(User::getSubscribe, request.getSubscribe());
+ }
+
+
+ // 国家,中国CN,其他OTHER
+ if (StrUtil.isNotBlank(request.getCountry())) {
+ queryWrapper.eq(User::getCountry, request.getCountry());
+ }
+
+ // 成为分销员时间
+ if (request.getPromoterTime() != null) {
+ queryWrapper.eq(User::getPromoterTime, request.getPromoterTime());
+ }
+
+ }
+
+
+ /**
+ * 分页显示用户表
+ * @param request 搜索条件
+ * @param pageParamRequest 分页参数
+ */
+ @ApiOperation(value = "分页列表")
+ @RequestMapping(value = "/list", method = RequestMethod.GET)
+ public CommonResult> getList(@Validated User request, @Validated PageParamRequest pageParamRequest) {
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper();
+
+ // 应用搜索条件
+ condition(queryWrapper, request);
+
+ CommonPage page = CommonPage.restPage(ebUserService.pageList(queryWrapper, pageParamRequest));
+ return CommonResult.success(page);
+ }
+
+
+ /**
+ * 详情数据
+ */
+ @RequestMapping(value = "/info/{uid}", method = RequestMethod.GET)
+ public CommonResult info(@PathVariable("uid") Integer uid){
+ User ebUser = ebUserService.getById(uid);
+
+ return CommonResult.success(ebUser);
+ }
+
+ /**
+ * 新增数据
+ */
+ @RequestMapping(value = "/save", method = RequestMethod.POST)
+ public CommonResult save(@RequestBody User ebUser){
+ if (ebUserService.save(ebUser)) {
+ return CommonResult.success();
+ }
+ return CommonResult.failed();
+ }
+
+ /**
+ * 修改数据
+ */
+ @RequestMapping(value = "/update", method = RequestMethod.POST)
+ public CommonResult update(@RequestBody User ebUser){
+ if (ebUserService.updateById(ebUser)) {
+ return CommonResult.success();
+ }
+ return CommonResult.failed();
+ }
+
+ /**
+ * 删除:根据id集合
+ */
+ @RequestMapping(value = "/delete", method = RequestMethod.POST)
+ public CommonResult delete(@RequestBody Integer[] uids){
+ if (ebUserService.removeByIds(Arrays.asList(uids))) {
+ return CommonResult.success();
+ }
+ return CommonResult.failed();
+ }
+
+}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmOwnerController.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmOwnerController.java
index 1db9c2a..c88b24e 100644
--- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmOwnerController.java
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/controller/PmOwnerController.java
@@ -26,6 +26,12 @@ import com.zbkj.common.model.system.SysDept;
import com.zbkj.service.service.SysDeptService;
import com.zbkj.modules.autogencode.entity.PmOwnerHouseRel;
import com.zbkj.modules.autogencode.service.PmOwnerHouseRelService;
+import com.zbkj.modules.autogencode.entity.PmTenant;
+import com.zbkj.modules.autogencode.service.PmTenantService;
+import com.zbkj.modules.autogencode.entity.PmTenantHouse;
+import com.zbkj.modules.autogencode.service.PmTenantHouseService;
+import com.zbkj.modules.autogencode.entity.PmTenantHouseRel;
+import com.zbkj.modules.autogencode.service.PmTenantHouseRelService;
@@ -45,6 +51,15 @@ public class PmOwnerController {
@Autowired
private PmOwnerHouseRelService pmOwnerHouseRelService;
+ @Autowired
+ private PmTenantService pmTenantService;
+
+ @Autowired
+ private PmTenantHouseService pmTenantHouseService;
+
+ @Autowired
+ private PmTenantHouseRelService pmTenantHouseRelService;
+
/**
@@ -228,7 +243,6 @@ public class PmOwnerController {
public CommonResult info(@PathVariable("id") Long id){
PmOwner pmOwner = pmOwnerService.getById(id);
- // 查询业主房屋关联关系
if (pmOwner != null) {
LambdaQueryWrapper relQueryWrapper = new LambdaQueryWrapper<>();
relQueryWrapper.eq(PmOwnerHouseRel::getOwnerId, id);
@@ -237,6 +251,25 @@ public class PmOwnerController {
if (rels != null && !rels.isEmpty()) {
pmOwner.setHouseId(rels.get(0).getHouseId());
}
+
+ LambdaQueryWrapper tenantRelQueryWrapper = new LambdaQueryWrapper<>();
+ tenantRelQueryWrapper.eq(PmTenantHouseRel::getOwnerId, id);
+ List tenantRels = pmTenantHouseRelService.list(tenantRelQueryWrapper);
+
+ if (tenantRels != null && !tenantRels.isEmpty()) {
+ List tenantList = new ArrayList<>();
+ for (PmTenantHouseRel tenantRel : tenantRels) {
+ PmTenant tenant = pmTenantService.getById(tenantRel.getTenantHouseId());
+ if (tenant != null) {
+ LambdaQueryWrapper houseQueryWrapper = new LambdaQueryWrapper<>();
+ houseQueryWrapper.eq(PmTenantHouse::getRentId, tenant.getId());
+ List tenantHouses = pmTenantHouseService.list(houseQueryWrapper);
+ tenant.setPmTenantHouses(tenantHouses);
+ tenantList.add(tenant);
+ }
+ }
+ pmOwner.setPmTenants(tenantList);
+ }
}
return CommonResult.success(pmOwner);
@@ -248,15 +281,38 @@ public class PmOwnerController {
@RequestMapping(value = "/save", method = RequestMethod.POST)
public CommonResult save(@RequestBody PmOwner pmOwner){
if (pmOwnerService.save(pmOwner)) {
- // 如果选择了房屋,创建业主房屋关联关系
+ Long ownerId = pmOwner.getId();
+
if (pmOwner.getHouseId() != null) {
PmOwnerHouseRel rel = new PmOwnerHouseRel();
- rel.setOwnerId(pmOwner.getId());
+ rel.setOwnerId(ownerId);
rel.setHouseId(pmOwner.getHouseId());
rel.setRelType("1");
rel.setBindTime(new java.util.Date());
pmOwnerHouseRelService.save(rel);
}
+
+ if (pmOwner.getPmTenants() != null && !pmOwner.getPmTenants().isEmpty()) {
+ for (PmTenant tenant : pmOwner.getPmTenants()) {
+ if (pmTenantService.save(tenant)) {
+ Long tenantId = tenant.getId();
+
+ PmTenantHouseRel tenantHouseRel = new PmTenantHouseRel();
+ tenantHouseRel.setTenantHouseId(tenantId);
+ tenantHouseRel.setOwnerId(ownerId);
+ tenantHouseRel.setTenantId(tenant.getTenantId());
+ tenantHouseRel.setDelFlag("0");
+ pmTenantHouseRelService.save(tenantHouseRel);
+
+ if (tenant.getPmTenantHouses() != null && !tenant.getPmTenantHouses().isEmpty()) {
+ for (PmTenantHouse tenantHouse : tenant.getPmTenantHouses()) {
+ tenantHouse.setRentId(tenantId);
+ pmTenantHouseService.save(tenantHouse);
+ }
+ }
+ }
+ }
+ }
return CommonResult.success();
}
return CommonResult.failed();
@@ -268,35 +324,80 @@ public class PmOwnerController {
@RequestMapping(value = "/update", method = RequestMethod.POST)
public CommonResult update(@RequestBody PmOwner pmOwner){
if (pmOwnerService.updateById(pmOwner)) {
- // 处理业主房屋关联关系
+ Long ownerId = pmOwner.getId();
+
LambdaQueryWrapper relQueryWrapper = new LambdaQueryWrapper<>();
- relQueryWrapper.eq(PmOwnerHouseRel::getOwnerId, pmOwner.getId());
+ relQueryWrapper.eq(PmOwnerHouseRel::getOwnerId, ownerId);
List existingRels = pmOwnerHouseRelService.list(relQueryWrapper);
if (pmOwner.getHouseId() != null) {
- // 如果选择了房屋
if (existingRels != null && !existingRels.isEmpty()) {
- // 更新现有的关联关系
PmOwnerHouseRel existingRel = existingRels.get(0);
existingRel.setHouseId(pmOwner.getHouseId());
existingRel.setRelType("1");
existingRel.setBindTime(new java.util.Date());
pmOwnerHouseRelService.updateById(existingRel);
} else {
- // 创建新的关联关系
PmOwnerHouseRel rel = new PmOwnerHouseRel();
- rel.setOwnerId(pmOwner.getId());
+ rel.setOwnerId(ownerId);
rel.setHouseId(pmOwner.getHouseId());
rel.setRelType("1");
rel.setBindTime(new java.util.Date());
pmOwnerHouseRelService.save(rel);
}
} else {
- // 如果没有选择房屋,删除现有的关联关系
if (existingRels != null && !existingRels.isEmpty()) {
pmOwnerHouseRelService.removeByIds(existingRels.stream().map(PmOwnerHouseRel::getId).collect(java.util.stream.Collectors.toList()));
}
}
+
+ if (pmOwner.getPmTenants() != null && !pmOwner.getPmTenants().isEmpty()) {
+ for (PmTenant tenant : pmOwner.getPmTenants()) {
+ if (tenant.getId() != null) {
+ pmTenantService.updateById(tenant);
+ } else {
+ pmTenantService.save(tenant);
+ }
+
+ Long tenantId = tenant.getId();
+
+ LambdaQueryWrapper tenantRelQueryWrapper = new LambdaQueryWrapper<>();
+ tenantRelQueryWrapper.eq(PmTenantHouseRel::getTenantHouseId, tenantId);
+ tenantRelQueryWrapper.eq(PmTenantHouseRel::getOwnerId, ownerId);
+ List existingTenantRels = pmTenantHouseRelService.list(tenantRelQueryWrapper);
+
+ if (existingTenantRels == null || existingTenantRels.isEmpty()) {
+ PmTenantHouseRel tenantHouseRel = new PmTenantHouseRel();
+ tenantHouseRel.setTenantHouseId(tenantId);
+ tenantHouseRel.setOwnerId(ownerId);
+ tenantHouseRel.setTenantId(tenant.getTenantId());
+ tenantHouseRel.setDelFlag("0");
+ pmTenantHouseRelService.save(tenantHouseRel);
+ }
+
+ if (tenant.getPmTenantHouses() != null && !tenant.getPmTenantHouses().isEmpty()) {
+ for (PmTenantHouse tenantHouse : tenant.getPmTenantHouses()) {
+ if (tenantHouse.getId() != null) {
+ PmTenantHouse existingHouse = pmTenantHouseService.getById(tenantHouse.getId());
+ if (existingHouse != null) {
+ existingHouse.setRentId(tenantId);
+ existingHouse.setRentBeginTime(tenantHouse.getRentBeginTime());
+ existingHouse.setRentEndTime(tenantHouse.getRentEndTime());
+ existingHouse.setDepositAmount(tenantHouse.getDepositAmount());
+ existingHouse.setRentAmount(tenantHouse.getRentAmount());
+ existingHouse.setAuthScope(tenantHouse.getAuthScope());
+ existingHouse.setStatus(tenantHouse.getStatus());
+ existingHouse.setRemark(tenantHouse.getRemark());
+ pmTenantHouseService.updateById(existingHouse);
+ }
+ } else {
+ tenantHouse.setRentId(tenantId);
+ pmTenantHouseService.save(tenantHouse);
+ }
+ }
+ }
+ }
+ }
return CommonResult.success();
}
return CommonResult.failed();
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmOwner.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmOwner.java
index bc466a1..4cd6ff6 100644
--- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmOwner.java
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmOwner.java
@@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.zbkj.modules.autogencode.entity.PmTenant;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
+import java.util.List;
import lombok.Data;
@@ -116,4 +118,11 @@ public class PmOwner implements Serializable {
@ApiModelProperty(value = "租户ID")
private String tenantId;
+ /**
+ * 租户列表(不映射到数据库)
+ */
+ @TableField(exist = false)
+ @ApiModelProperty(value = "租户列表")
+ private List pmTenants;
+
}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmTenant.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmTenant.java
index 906a0d3..ff4dd87 100644
--- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmTenant.java
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmTenant.java
@@ -1,12 +1,15 @@
package com.zbkj.modules.autogencode.entity;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.zbkj.modules.autogencode.entity.PmTenantHouse;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Date;
+import java.util.List;
import lombok.Data;
@@ -92,4 +95,11 @@ public class PmTenant implements Serializable {
@ApiModelProperty(value = "租户ID")
private String tenantId;
+ /**
+ * 租赁记录列表(不映射到数据库)
+ */
+ @TableField(exist = false)
+ @ApiModelProperty(value = "租赁记录列表")
+ private List pmTenantHouses;
+
}
diff --git a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmTenantHouse.java b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmTenantHouse.java
index 42aa5d4..030719a 100644
--- a/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmTenantHouse.java
+++ b/crmeb/crmeb-admin/src/main/java/com/zbkj/modules/autogencode/entity/PmTenantHouse.java
@@ -3,99 +3,104 @@ package com.zbkj.modules.autogencode.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
- import java.math.BigDecimal;
- import java.io.Serializable;
+import java.math.BigDecimal;
+import java.io.Serializable;
import java.util.Date;
+
import lombok.Data;
@Data
@TableName("pm_tenant_house")
public class PmTenantHouse implements Serializable {
- private static final long serialVersionUID = 1L;
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * id
+ */
+ @ApiModelProperty(value = "id")
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ /**
+ * 租户信息id
+ */
+ @ApiModelProperty(value = "租户信息id")
+ private Long rentId;
+ /**
+ * 绑定时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
+ @ApiModelProperty(value = "绑定时间")
+ private Date rentBeginTime;
+ /**
+ * 解绑时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
+ @ApiModelProperty(value = "解绑时间")
+ private Date rentEndTime;
+ /**
+ * 押金金额
+ */
+ @ApiModelProperty(value = "押金金额")
+ private BigDecimal depositAmount;
+ /**
+ * 月租金
+ */
+ @ApiModelProperty(value = "月租金")
+ private BigDecimal rentAmount;
+ /**
+ * 授权范围
+ */
+ @ApiModelProperty(value = "授权范围")
+ private String authScope;
+ /**
+ * 状态
+ */
+ @ApiModelProperty(value = "状态")
+ private String status;
+ /**
+ * 备注
+ */
+ @ApiModelProperty(value = "备注")
+ private String remark;
+ /**
+ * 删除标志(0代表存在 2代表删除)
+ */
+ @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
+ private String delFlag;
+ /**
+ * 创建部门
+ */
+ @ApiModelProperty(value = "创建部门")
+ private Long createDept;
+ /**
+ * 创建人
+ */
+ @ApiModelProperty(value = "创建人")
+ private Long createBy;
+ /**
+ * 创建时间
+ */
+ @ApiModelProperty(value = "创建时间")
+ private Date createTime;
+ /**
+ * 修改人
+ */
+ @ApiModelProperty(value = "修改人")
+ private Long updateBy;
+ /**
+ * 修改时间
+ */
+ @ApiModelProperty(value = "修改时间")
+ private Date updateTime;
+ /**
+ * 租户ID
+ */
+ @ApiModelProperty(value = "租户ID")
+ private String tenantId;
- /**
- * id
- */
- @ApiModelProperty(value = "id")
- @TableId(type = IdType.AUTO)
- private Long id;
- /**
- * 租户信息id
- */
- @ApiModelProperty(value = "租户信息id")
- private Long rentId;
- /**
- * 绑定时间
- */
- @ApiModelProperty(value = "绑定时间")
- private Date rentBeginTime;
- /**
- * 解绑时间
- */
- @ApiModelProperty(value = "解绑时间")
- private Date rentEndTime;
- /**
- * 押金金额
- */
- @ApiModelProperty(value = "押金金额")
- private BigDecimal depositAmount;
- /**
- * 月租金
- */
- @ApiModelProperty(value = "月租金")
- private BigDecimal rentAmount;
- /**
- * 授权范围
- */
- @ApiModelProperty(value = "授权范围")
- private String authScope;
- /**
- * 状态
- */
- @ApiModelProperty(value = "状态")
- private String status;
- /**
- * 备注
- */
- @ApiModelProperty(value = "备注")
- private String remark;
- /**
- * 删除标志(0代表存在 2代表删除)
- */
- @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
- private String delFlag;
- /**
- * 创建部门
- */
- @ApiModelProperty(value = "创建部门")
- private Long createDept;
- /**
- * 创建人
- */
- @ApiModelProperty(value = "创建人")
- private Long createBy;
- /**
- * 创建时间
- */
- @ApiModelProperty(value = "创建时间")
- private Date createTime;
- /**
- * 修改人
- */
- @ApiModelProperty(value = "修改人")
- private Long updateBy;
- /**
- * 修改时间
- */
- @ApiModelProperty(value = "修改时间")
- private Date updateTime;
- /**
- * 租户ID
- */
- @ApiModelProperty(value = "租户ID")
- private String tenantId;
}
diff --git a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/User.java b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/User.java
index b2e651b..d6345ca 100644
--- a/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/User.java
+++ b/crmeb/crmeb-common/src/main/java/com/zbkj/common/model/user/User.java
@@ -156,4 +156,12 @@ public class User implements Serializable {
@ApiModelProperty(value = "成为分销员时间")
private Date promoterTime;
-}
+
+ @ApiModelProperty(value = "员工类型")
+ private String staffType;
+
+ @ApiModelProperty(value = "业主/租户Id")
+ private Long ownerTenantId;
+
+
+}
\ No newline at end of file
diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java
index b3b5143..64934ca 100644
--- a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java
+++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/UserService.java
@@ -1,5 +1,6 @@
package com.zbkj.service.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.zbkj.common.model.user.User;
@@ -25,6 +26,13 @@ import java.util.Map;
*/
public interface UserService extends IService {
+ /**
+ * EbUser 列表查询
+ * @param pageParamRequest 分页参数对象
+ * @return
+ */
+ List pageList(LambdaQueryWrapper queryWrapper, PageParamRequest pageParamRequest);
+
/**
* 用户分页列表
* @param request 查询参数
diff --git a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java
index 8685414..441993c 100644
--- a/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java
+++ b/crmeb/crmeb-service/src/main/java/com/zbkj/service/service/impl/UserServiceImpl.java
@@ -123,6 +123,18 @@ public class UserServiceImpl extends ServiceImpl implements UserS
@Autowired
private SystemAttachmentService systemAttachmentService;
+ /**
+ * 带分页参数的列表查询实现
+ */
+ @Override
+ public List pageList(LambdaQueryWrapper queryWrapper, PageParamRequest pageParamRequest) {
+
+ PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
+
+ return userDao.selectList(queryWrapper);
+ }
+
+
/**
* 分页显示用户表
*