package com.bofeng.service; import com.baomidou.mybatisplus.toolkit.IdWorker; import com.bofeng.dao.*; import com.bofeng.entity.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @Service @Transactional(readOnly = true) public class WxUserOpenService { @Autowired private HomeService homeService; @Autowired private UserRoleMapper userRoleMapper; @Autowired private UptownHouseMapper uptownHouseMapper; @Autowired private UptownHomeMapper uptownHomeMapper; @Autowired private OwnerMapper ownerMapper; @Autowired private OwnerLinkmanMapper ownerLinkmanMapper; @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public Long createRole(Long isFamily, Long isYWH) throws Exception { if (isFamily == 0L && isYWH == 0L) { throw new Exception("请至少选择一个角色"); } UserOpen userOpen = homeService.getUserOpen(); if (userOpen == null) { throw new Exception("微信登录失败"); } //判断该用户是否已经创建了角色 List list = new ArrayList<>(); if (userOpen.getUserId() > 0L) { list = userRoleMapper.getUserRoleByUserId(userOpen.getUserId()); } if (list.size() > 0) { throw new Exception("角色已存在"); } UserRole userRole = new UserRole(); userRole.setUrId(IdWorker.getId()); userRole.setUserId(userOpen.getUserId()); userRole.setUserCreate(userOpen.getUserId()); userRole.setUserUpdate(userOpen.getUserId()); //根据页面勾选情况创建角色 if (isFamily > 0L) { userRole.setRoleId(1); //家庭用户 userRoleMapper.insert(userRole); } if (isYWH > 0L) { userRole.setRoleId(2); //业委会成员 userRoleMapper.insert(userRole); } return userRole.getUserId(); } @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) public Long createFamily(Long userId, Long unitId, String doorPlate, String linkMan, Integer helpNum, String phone) throws Exception { Long sysUserId = 0L; if (userId == null || userId == 0L) { UserOpen userOpen = homeService.getUserOpen(); if (userOpen == null) { throw new Exception("微信登录失败"); } sysUserId = userOpen.getUserId(); } else { sysUserId = userId; } //判断该用户是否已经创建了家庭用户角色 List lstUserRole = new ArrayList<>(); if (sysUserId > 0L) { lstUserRole = userRoleMapper.getUserRoleByUserId(sysUserId); } if (lstUserRole.size() > 0) { for (UserRole item : lstUserRole) { if (item.getRoleId() == 1L) { throw new Exception("家庭用户角色已存在"); //todo 暂时只允许一个用户角色绑定一个家庭门牌号 } } } //创建家庭用户角色 UserRole userRole = new UserRole(); userRole.setUrId(IdWorker.getId()); userRole.setUserId(sysUserId); userRole.setUserCreate(sysUserId); userRole.setUserUpdate(sysUserId); userRole.setRoleId(1); //家庭用户 //判断该门牌号是否被创建(该楼栋单元下) List lstUptownHouse = uptownHouseMapper.getUptownHouseBy(unitId, doorPlate); if (lstUptownHouse.size() > 0) { throw new Exception("当前单元下已有该门牌信息!"); } UptownHouse uptownHouse = new UptownHouse(); uptownHouse.setHouseId(IdWorker.getId()); uptownHouse.setUnitId(unitId); uptownHouse.setDoorplate(doorPlate); uptownHouse.setStatus(1); if (uptownHouseMapper.insert(uptownHouse) != 1) { throw new Exception("创建门牌失败!"); } userRole.setPropertyId(uptownHouse.getHouseId()); //绑定家庭用户角色的门牌id //判断该门牌是否存在家庭信息 List lstUptownHome = uptownHomeMapper.getUptownHomeBy(uptownHouse.getHouseId()); if (lstUptownHome.size() > 0) { throw new Exception("该门牌已有人入住!"); } UptownHome uptownHome = new UptownHome(); uptownHome.setHouseId(uptownHouse.getHouseId()); uptownHome.setLinkman(linkMan); uptownHome.setPhone(phone); uptownHome.setYoung(0); uptownHome.setMiddle(0); uptownHome.setOld(helpNum); uptownHome.setRemark(""); uptownHome.setStatus(1); if (uptownHomeMapper.insert(uptownHome) != 1) { throw new Exception("创建家庭信息失败!"); } userRoleMapper.insert(userRole); return 1L; } public Long createYWH(List lstOwnerMan, Long uptownId) throws Exception { UserOpen userOpen = homeService.getUserOpen(); if (userOpen == null) { throw new Exception("微信登录失败"); } //判断该用户是否已经创建了业委会角色 List lstUserRole = new ArrayList<>(); if (userOpen.getUserId() > 0L) { lstUserRole = userRoleMapper.getUserRoleByUserId(userOpen.getUserId()); } if (lstUserRole.size() > 0) { //判断该用户是否创建了业委会的角色 for (UserRole item : lstUserRole) { if (item.getRoleId() == 2L) { throw new Exception("业委会用户角色已存在"); //todo 暂时只允许一个用户角色绑定一个业委会 } } } //创建业委会用户角色 UserRole userRole = new UserRole(); userRole.setUrId(IdWorker.getId()); userRole.setUserId(userOpen.getUserId()); userRole.setUserCreate(userOpen.getUserId()); userRole.setUserUpdate(userOpen.getUserId()); userRole.setRoleId(2); //业委会 //判断业委会是否已经建立 List lstOwner = new ArrayList<>(); Owner owner; if (uptownId > 0L) { lstOwner = ownerMapper.getOwnerByUptownId(uptownId); } if (lstOwner.size() > 0) { //判断该用户是否创建了业委会 for (Owner item : lstOwner) { if (item.getUptownId() == uptownId) { throw new Exception("该小区已建立业委会"); } } } owner = new Owner(); owner.setOwnerId(IdWorker.getId()); owner.setUptownId(uptownId); owner.setUserCreate(userOpen.getUserId()); owner.setUserUpdate(userOpen.getUserId()); userRole.setPropertyId(owner.getOwnerId()); userRoleMapper.insert(userRole); //建立业委会成员 if (lstOwnerMan == null) { throw new Exception("请新增业委会成员"); } int masterNum = 0; for (OwnerLinkman item : lstOwnerMan) { if (item.getType() == 1L) { masterNum++; } } if (masterNum != 1L) { throw new Exception("业委会负责人只允许有一个"); } for (OwnerLinkman item : lstOwnerMan) { if (item.getType() == 1L) { owner.setLinkman(item.getLinkman()); owner.setPhone(item.getPhone()); } item.setOwnerId(owner.getOwnerId()); ownerLinkmanMapper.insert(item); } ownerMapper.insert(owner); return 1L; } }