|
@@ -72,6 +72,10 @@ public class WxUserOpenService {
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
|
|
|
public Long createFamily(Long userId, Long unitId, String doorPlate, String linkMan, Integer helpNum, String phone) throws Exception {
|
|
|
+ /** 创建家庭用户
|
|
|
+ * 1.家庭用户填写电话号码后和ownerlinkman中该小区的电话做比对,如有则自动添加业委会成员角色
|
|
|
+ * 2.
|
|
|
+ * */
|
|
|
Long sysUserId = queryUser(userId);
|
|
|
|
|
|
//判断该用户是否已经创建了家庭用户角色
|
|
@@ -82,7 +86,7 @@ public class WxUserOpenService {
|
|
|
if (lstUserRole.size() > 0) {
|
|
|
for (UserRole item : lstUserRole) {
|
|
|
if (item.getRoleId() == 1L) {
|
|
|
- throw new Exception("家庭用户角色已存在"); //todo 暂时只允许一个用户角色绑定一个家庭门牌号
|
|
|
+ throw new Exception("家庭用户角色已存在,请使用编辑功能"); //todo 暂时只允许一个用户角色绑定一个家庭门牌号
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -108,6 +112,10 @@ public class WxUserOpenService {
|
|
|
throw new Exception("创建门牌失败!");
|
|
|
}
|
|
|
userRole.setPropertyId(uptownHouse.getHouseId()); //绑定家庭用户角色的门牌id
|
|
|
+ List<UptownHome> list = uptownHomeMapper.getUptownHomeByPhone(phone);
|
|
|
+ if (list.size() > 0) {
|
|
|
+ throw new Exception("该电话号码已被其他家庭用户注册使用!");
|
|
|
+ }
|
|
|
//判断该门牌是否存在家庭信息
|
|
|
List<UptownHome> lstUptownHome = uptownHomeMapper.getUptownHomeBy(uptownHouse.getHouseId());
|
|
|
if (lstUptownHome.size() > 0) {
|
|
@@ -126,13 +134,135 @@ public class WxUserOpenService {
|
|
|
throw new Exception("创建家庭信息失败!");
|
|
|
}
|
|
|
userRoleMapper.insert(userRole);
|
|
|
+ /** 判断是否增加业委会角色
|
|
|
+ * 新增时根据所填家庭电话号码,去linkman表去找,如果存在且业委会小区和当前小区一致,则添加业委会角色
|
|
|
+ * 找linkman的phone
|
|
|
+ * */
|
|
|
+ //查询小区id
|
|
|
+ List<UptownUnit> lstUnit = sysUptownUnitMapper.selectByUnitId(unitId);
|
|
|
+ if (lstUnit == null) {
|
|
|
+ throw new Exception("小区不存在!");
|
|
|
+ }
|
|
|
+ if (lstUnit.size() != 1) {
|
|
|
+ throw new Exception("小区数据异常!");
|
|
|
+ }
|
|
|
+ int phoneCount = 0;
|
|
|
+ List<Owner> lstOwner = ownerMapper.getOwnerByUptownId(lstUnit.get(0).getUptownId());
|
|
|
+ for (Owner item : lstOwner) {
|
|
|
+ if (item.getPhone().equals(phone)) {
|
|
|
+ phoneCount++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (phoneCount > 1) {
|
|
|
+ throw new Exception("电话号码在该小区业委会中存在多条记录,请联系客服!");
|
|
|
+ }
|
|
|
+ if (phoneCount == 1) {
|
|
|
+ //如果是小区业委会成员,绑定业委会成员和用户id,新增业委会角色
|
|
|
+ List<Owner> lst = ownerMapper.getOwnerByPhone(phone);
|
|
|
+ if (lst == null) {
|
|
|
+ throw new Exception("业委会联系电话数据异常");
|
|
|
+ }
|
|
|
+ if (lst.size() != 1) {
|
|
|
+ throw new Exception("业委会联系电话数据重复");
|
|
|
+ }
|
|
|
+ if (lst.get(0).getUptownId() != lstUnit.get(0).getUptownId()) {
|
|
|
+ throw new Exception("联系电话和所在小区不匹配");
|
|
|
+ }
|
|
|
+ lst.get(0).setUserId(sysUserId);
|
|
|
+ lst.get(0).setUserUpdate(sysUserId);
|
|
|
+ ownerMapper.updateById(lst.get(0));
|
|
|
+
|
|
|
+ //增加业委会成员角色
|
|
|
+ UserRole userRoleYWH = new UserRole();
|
|
|
+ userRoleYWH.setUrId(IdWorker.getId());
|
|
|
+ userRoleYWH.setUserId(sysUserId);
|
|
|
+ userRoleYWH.setUserUpdate(sysUserId);
|
|
|
+ userRoleYWH.setRoleId(2); //业委会成员
|
|
|
+ userRoleYWH.setPropertyId(lst.get(0).getOwnerId());
|
|
|
+ userRoleMapper.insert(userRoleYWH);
|
|
|
+ }
|
|
|
|
|
|
return userRole.getUrId();
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
|
|
|
- public Long createYWH(Long userId, Long uptownId, List<OwnerLinkman> lstOwnerMan) throws Exception {
|
|
|
+ public Long createYWHRule(Long userId) throws Exception {
|
|
|
+ /** 创建业委会资格
|
|
|
+ * 1.当前用户有无家庭角色,无则退出
|
|
|
+ * 2.小区已有业委会,退出
|
|
|
+ * */
|
|
|
Long sysUserId = queryUser(userId);
|
|
|
+ List<UserRole> lstUserRole = new ArrayList<>();
|
|
|
+ if (sysUserId > 0L) {
|
|
|
+ lstUserRole = userRoleMapper.getUserRoleByUserId(sysUserId);
|
|
|
+ }
|
|
|
+ boolean hasFamily = false;
|
|
|
+ Long myUptownId = 0L;
|
|
|
+ Long myOwnerId = 0L;
|
|
|
+ if (lstUserRole.size() > 0) {
|
|
|
+ //判断该用户是否创建了业委会的角色
|
|
|
+ for (UserRole item : lstUserRole) {
|
|
|
+ if (item.getRoleId() == 1L) {
|
|
|
+ hasFamily = true;
|
|
|
+ myUptownId = item.getPropertyId();
|
|
|
+ }
|
|
|
+ if (item.getRoleId() == 2L) {
|
|
|
+ myOwnerId = item.getPropertyId();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!hasFamily) {
|
|
|
+ throw new Exception("请先完善家庭地址!");
|
|
|
+ }
|
|
|
+ if (myUptownId == 0L) {
|
|
|
+ throw new Exception("家庭地址中尚未选择小区!");
|
|
|
+ }
|
|
|
+ //判断业委会是否已经建立
|
|
|
+ List<Owner> lstSysOwner = ownerMapper.getOwnerByUptownId(myUptownId);
|
|
|
+ boolean hasOwner = false;
|
|
|
+ if (lstSysOwner != null && lstSysOwner.size() > 0) {
|
|
|
+ for (Owner item : lstSysOwner) {
|
|
|
+ if (item.getUserId() == sysUserId && item.getType() == 1) {
|
|
|
+ //业委会负责人的绑定用户是自己
|
|
|
+ hasOwner = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!hasOwner) {
|
|
|
+ throw new Exception("该小区已建立业委会");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<OwnerLinkman> lstOwnerLinkman = ownerLinkmanMapper.getOwnerLinkmanByOwnerId(sysUserId);
|
|
|
+ if (lstOwnerLinkman == null) {
|
|
|
+ return 1L;
|
|
|
+ //throw new Exception("不是业委会成员!");
|
|
|
+ }
|
|
|
+ for (OwnerLinkman item : lstOwnerLinkman) {
|
|
|
+ if (item.getType() == 1) {
|
|
|
+ return 1L; //业委会负责人可以编辑完善业委会信息
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0L;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
|
|
|
+ public Long createYWH(Long userId, Long uptownId, List<Owner> lstOwner) throws Exception {
|
|
|
+ /** 创建业委会
|
|
|
+ * 0.流程上业委会负责人是第一个创建业委会的人
|
|
|
+ * 1.在创建业委会之前,必须有家庭用户角色?
|
|
|
+ * 2.小区已有业委会,不允许再创建业委会
|
|
|
+ * 3.小区已有业委会,其他人不允许再进此页面
|
|
|
+ * 4.业委会所在小区必须和当前用户的家庭用户所在小区一致
|
|
|
+ * */
|
|
|
+ Long sysUserId = queryUser(userId);
|
|
|
+ Long myUptownId = 0L;
|
|
|
+ if (uptownId <= 0L) {
|
|
|
+ throw new Exception("小区id为空!");
|
|
|
+ }
|
|
|
+ Uptown uptown = uptownMapper.selectById(uptownId);
|
|
|
+ if (uptown == null) {
|
|
|
+ throw new Exception("小区不存在!");
|
|
|
+ }
|
|
|
//判断该用户是否已经创建了业委会角色
|
|
|
List<UserRole> lstUserRole = new ArrayList<>();
|
|
|
if (sysUserId > 0L) {
|
|
@@ -142,63 +272,80 @@ public class WxUserOpenService {
|
|
|
//判断该用户是否创建了业委会的角色
|
|
|
for (UserRole item : lstUserRole) {
|
|
|
if (item.getRoleId() == 2L) {
|
|
|
- throw new Exception("业委会用户角色已存在"); //todo 暂时只允许一个用户角色绑定一个业委会
|
|
|
+ throw new Exception("业委会用户角色已存在!"); //todo 暂时只允许一个用户角色绑定一个业委会
|
|
|
+ }
|
|
|
+ if (item.getRoleId() == 1L) {
|
|
|
+ myUptownId = item.getPropertyId();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if (myUptownId == 0L) {
|
|
|
+ throw new Exception("请先创建家庭用户!");
|
|
|
+ }
|
|
|
+ if (myUptownId != uptownId) {
|
|
|
+ throw new Exception("家庭所在小区和业委会所在小区不一致!");
|
|
|
+ }
|
|
|
//创建业委会用户角色
|
|
|
UserRole userRole = new UserRole();
|
|
|
userRole.setUrId(IdWorker.getId());
|
|
|
userRole.setUserId(sysUserId);
|
|
|
userRole.setUserCreate(sysUserId);
|
|
|
userRole.setUserUpdate(sysUserId);
|
|
|
- userRole.setRoleId(2); //业委会
|
|
|
+ userRole.setRoleId(2); //业委会角色
|
|
|
+ userRole.setStatus(0); //需后台审核后变更为1
|
|
|
|
|
|
//判断业委会是否已经建立
|
|
|
- List<Owner> lstOwner = new ArrayList<>();
|
|
|
- Owner owner;
|
|
|
+ List<Owner> lstSysOwner;
|
|
|
if (uptownId > 0L) {
|
|
|
- lstOwner = ownerMapper.getOwnerByUptownId(uptownId);
|
|
|
- }
|
|
|
- if (lstOwner.size() > 0) {
|
|
|
- //判断该用户是否创建了业委会
|
|
|
- for (Owner item : lstOwner) {
|
|
|
- if (item.getUptownId() == uptownId) {
|
|
|
- throw new Exception("该小区已建立业委会");
|
|
|
- }
|
|
|
+ lstSysOwner = ownerMapper.getOwnerByUptownId(uptownId);
|
|
|
+ if (lstSysOwner != null && lstSysOwner.size() > 0) {
|
|
|
+ throw new Exception("该小区已建立业委会");
|
|
|
}
|
|
|
}
|
|
|
- owner = new Owner();
|
|
|
- owner.setOwnerId(IdWorker.getId());
|
|
|
- owner.setUptownId(uptownId);
|
|
|
- owner.setUserCreate(sysUserId);
|
|
|
- owner.setUserUpdate(sysUserId);
|
|
|
-
|
|
|
- userRole.setPropertyId(owner.getOwnerId()); //设置业委会id给角色
|
|
|
- userRoleMapper.insert(userRole);
|
|
|
-
|
|
|
- //建立业委会成员
|
|
|
- if (lstOwnerMan == null) {
|
|
|
+ //建立业委会负责人和成员
|
|
|
+ if (lstOwner == null) {
|
|
|
throw new Exception("请新增业委会成员");
|
|
|
}
|
|
|
int masterNum = 0;
|
|
|
- for (OwnerLinkman item : lstOwnerMan) {
|
|
|
+ for (Owner item : lstOwner) {
|
|
|
if (item.getType() == 1L) {
|
|
|
masterNum++;
|
|
|
}
|
|
|
}
|
|
|
+ if (masterNum == 0) {
|
|
|
+ throw new Exception("必须指定一个业委会负责人!");
|
|
|
+ }
|
|
|
if (masterNum != 1) {
|
|
|
- throw new Exception("业委会负责人只允许有一个");
|
|
|
+ throw new Exception("业委会负责人只允许有一个!");
|
|
|
}
|
|
|
- for (OwnerLinkman item : lstOwnerMan) {
|
|
|
+ //判断业委会中的联系电话是否重复
|
|
|
+ List<String> lstPhone = new ArrayList<>();
|
|
|
+ for (Owner item : lstOwner) {
|
|
|
+ if (!lstPhone.contains(item.getPhone())) {
|
|
|
+ lstPhone.add(item.getPhone());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (lstPhone.size() != lstOwner.size()) {
|
|
|
+ throw new Exception("联系电话有重复!");
|
|
|
+ }
|
|
|
+ for (Owner item : lstOwner) {
|
|
|
+ item.setOwnerId(IdWorker.getId());
|
|
|
+ item.setUptownId(uptownId);
|
|
|
+ item.setUserCreate(sysUserId);
|
|
|
+ item.setUserUpdate(sysUserId);
|
|
|
if (item.getType() == 1L) {
|
|
|
- owner.setLinkman(item.getLinkman());
|
|
|
- owner.setPhone(item.getPhone());
|
|
|
+ item.setUserId(sysUserId); //业委会负责人绑定用户
|
|
|
+ userRole.setPropertyId(item.getOwnerId()); //设置业委会id给角色的PropertyId
|
|
|
}
|
|
|
- item.setOwnerId(owner.getOwnerId());
|
|
|
- ownerLinkmanMapper.insert(item);
|
|
|
+ //新增时还需判断业委会中是否已存在该电话号码
|
|
|
+ List<Owner> lst = ownerMapper.getOwnerByPhone(item.getPhone());
|
|
|
+ if (lst != null && lst.size() > 1) {
|
|
|
+ throw new Exception(item.getPhone() + "电话已被其他业委会使用!");
|
|
|
+ }
|
|
|
+ ownerMapper.insert(item);
|
|
|
}
|
|
|
- ownerMapper.insert(owner);
|
|
|
+ userRoleMapper.insert(userRole);
|
|
|
+ //业委会其他成员不创建userRole
|
|
|
|
|
|
return userRole.getUrId();
|
|
|
}
|
|
@@ -321,7 +468,8 @@ public class WxUserOpenService {
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
|
|
|
- public Long editFamily(Long userId, Long unitId, String doorPlate, String linkMan, Integer helpNum, String phone, Long urId) throws Exception {
|
|
|
+ public Long editFamily(Long userId, Long unitId, String doorPlate, String linkMan, Integer helpNum, String
|
|
|
+ phone, Long urId) throws Exception {
|
|
|
Long sysUserId = queryUser(userId);
|
|
|
if (urId == 0L) {
|
|
|
throw new Exception("尚未建立家庭用户角色,无法编辑");
|