WxUserOpenService.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578
  1. package com.bofeng.service;
  2. import com.baomidou.mybatisplus.toolkit.IdWorker;
  3. import com.bofeng.dao.*;
  4. import com.bofeng.entity.*;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import org.springframework.transaction.annotation.Propagation;
  8. import org.springframework.transaction.annotation.Transactional;
  9. import java.util.ArrayList;
  10. import java.util.HashMap;
  11. import java.util.List;
  12. import java.util.Map;
  13. @Service
  14. @Transactional(readOnly = true)
  15. public class WxUserOpenService {
  16. @Autowired
  17. private HomeService homeService;
  18. @Autowired
  19. private UserRoleMapper userRoleMapper;
  20. @Autowired
  21. private UptownHouseMapper uptownHouseMapper;
  22. @Autowired
  23. private UptownHomeMapper uptownHomeMapper;
  24. @Autowired
  25. private OwnerMapper ownerMapper;
  26. @Autowired
  27. private OwnerLinkmanMapper ownerLinkmanMapper;
  28. @Autowired
  29. private SysUptownUnitMapper sysUptownUnitMapper;
  30. @Autowired
  31. private SysAreaMapper sysAreaMapper;
  32. @Autowired
  33. private UptownMapper uptownMapper;
  34. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  35. public Long createRole(Long isFamily, Long isYWH) throws Exception {
  36. if (isFamily == 0L && isYWH == 0L) {
  37. throw new Exception("请至少选择一个角色");
  38. }
  39. UserOpen userOpen = homeService.getUserOpen();
  40. if (userOpen == null) {
  41. throw new Exception("微信登录失败");
  42. }
  43. //判断该用户是否已经创建了角色
  44. List<UserRole> list = new ArrayList<>();
  45. if (userOpen.getUserId() > 0L) {
  46. list = userRoleMapper.getUserRoleByUserId(userOpen.getUserId());
  47. }
  48. if (list.size() > 0) {
  49. throw new Exception("角色已存在");
  50. }
  51. UserRole userRole = new UserRole();
  52. userRole.setUrId(IdWorker.getId());
  53. userRole.setUserId(userOpen.getUserId());
  54. userRole.setUserCreate(userOpen.getUserId());
  55. userRole.setUserUpdate(userOpen.getUserId());
  56. //根据页面勾选情况创建角色
  57. if (isFamily > 0L) {
  58. userRole.setRoleId(1); //家庭用户
  59. userRoleMapper.insert(userRole);
  60. }
  61. if (isYWH > 0L) {
  62. userRole.setRoleId(2); //业委会成员
  63. userRoleMapper.insert(userRole);
  64. }
  65. return userRole.getUserId();
  66. }
  67. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  68. public Long createFamily(Long userId, Long unitId, String doorPlate, String linkMan, Integer helpNum, String phone) throws Exception {
  69. /** 创建家庭用户
  70. * 1.家庭用户填写电话号码后和ownerlinkman中该小区的电话做比对,如有则自动添加业委会成员角色
  71. * 2.
  72. * */
  73. Long sysUserId = queryUser(userId);
  74. //判断该用户是否已经创建了家庭用户角色
  75. List<UserRole> lstUserRole = new ArrayList<>();
  76. if (sysUserId > 0L) {
  77. lstUserRole = userRoleMapper.getUserRoleByUserId(sysUserId);
  78. }
  79. if (lstUserRole.size() > 0) {
  80. for (UserRole item : lstUserRole) {
  81. if (item.getRoleId() == 1L) {
  82. throw new Exception("家庭用户角色已存在,请使用编辑功能"); //todo 暂时只允许一个用户角色绑定一个家庭门牌号
  83. }
  84. }
  85. }
  86. //创建家庭用户角色
  87. UserRole userRole = new UserRole();
  88. userRole.setUrId(IdWorker.getId());
  89. userRole.setUserId(sysUserId);
  90. userRole.setUserCreate(sysUserId);
  91. userRole.setUserUpdate(sysUserId);
  92. userRole.setRoleId(1); //家庭用户
  93. //判断该门牌号是否被创建(该楼栋单元下)
  94. List<UptownHouse> lstUptownHouse = uptownHouseMapper.getUptownHouseBy(unitId, doorPlate);
  95. if (lstUptownHouse.size() > 0) {
  96. throw new Exception("当前单元下已有该门牌信息!");
  97. }
  98. UptownHouse uptownHouse = new UptownHouse();
  99. uptownHouse.setHouseId(IdWorker.getId());
  100. uptownHouse.setUnitId(unitId);
  101. uptownHouse.setDoorplate(doorPlate);
  102. uptownHouse.setStatus(1);
  103. if (uptownHouseMapper.insert(uptownHouse) != 1) {
  104. throw new Exception("创建门牌失败!");
  105. }
  106. userRole.setPropertyId(uptownHouse.getHouseId()); //绑定家庭用户角色的门牌id
  107. List<UptownHome> list = uptownHomeMapper.getUptownHomeByPhone(phone);
  108. if (list.size() > 0) {
  109. throw new Exception("该电话号码已被其他家庭用户注册使用!");
  110. }
  111. //判断该门牌是否存在家庭信息
  112. List<UptownHome> lstUptownHome = uptownHomeMapper.getUptownHomeBy(uptownHouse.getHouseId());
  113. if (lstUptownHome.size() > 0) {
  114. throw new Exception("该门牌已有人入住!");
  115. }
  116. UptownHome uptownHome = new UptownHome();
  117. uptownHome.setHouseId(uptownHouse.getHouseId());
  118. uptownHome.setLinkman(linkMan);
  119. uptownHome.setPhone(phone);
  120. uptownHome.setYoung(0);
  121. uptownHome.setMiddle(0);
  122. uptownHome.setOld(helpNum);
  123. uptownHome.setRemark("");
  124. uptownHome.setStatus(1);
  125. if (uptownHomeMapper.insert(uptownHome) != 1) {
  126. throw new Exception("创建家庭信息失败!");
  127. }
  128. userRoleMapper.insert(userRole);
  129. /** 判断是否增加业委会角色
  130. * 新增时根据所填家庭电话号码,去linkman表去找,如果存在且业委会小区和当前小区一致,则添加业委会角色
  131. * 找linkman的phone
  132. * */
  133. //查询小区id
  134. List<UptownUnit> lstUnit = sysUptownUnitMapper.selectByUnitId(unitId);
  135. if (lstUnit == null) {
  136. throw new Exception("小区不存在!");
  137. }
  138. if (lstUnit.size() != 1) {
  139. throw new Exception("小区数据异常!");
  140. }
  141. int phoneCount = 0;
  142. List<Owner> lstOwner = ownerMapper.getOwnerByUptownId(lstUnit.get(0).getUptownId());
  143. for (Owner item : lstOwner) {
  144. if (item.getPhone().equals(phone)) {
  145. phoneCount++;
  146. }
  147. }
  148. if (phoneCount > 1) {
  149. throw new Exception("电话号码在该小区业委会中存在多条记录,请联系客服!");
  150. }
  151. if (phoneCount == 1) {
  152. //如果是小区业委会成员,绑定业委会成员和用户id,新增业委会角色
  153. List<Owner> lst = ownerMapper.getOwnerByPhone(phone);
  154. if (lst == null) {
  155. throw new Exception("业委会联系电话数据异常");
  156. }
  157. if (lst.size() != 1) {
  158. throw new Exception("业委会联系电话数据重复");
  159. }
  160. if (lst.get(0).getUptownId() != lstUnit.get(0).getUptownId()) {
  161. throw new Exception("联系电话和所在小区不匹配");
  162. }
  163. lst.get(0).setUserId(sysUserId);
  164. lst.get(0).setUserUpdate(sysUserId);
  165. ownerMapper.updateById(lst.get(0));
  166. //增加业委会成员角色
  167. UserRole userRoleYWH = new UserRole();
  168. userRoleYWH.setUrId(IdWorker.getId());
  169. userRoleYWH.setUserId(sysUserId);
  170. userRoleYWH.setUserUpdate(sysUserId);
  171. userRoleYWH.setRoleId(2); //业委会成员
  172. userRoleYWH.setPropertyId(lst.get(0).getOwnerId());
  173. userRoleMapper.insert(userRoleYWH);
  174. }
  175. return userRole.getUrId();
  176. }
  177. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  178. public int createYWHRule(Long userId) throws Exception {
  179. /** 创建业委会资格
  180. * 1.当前用户有无家庭角色,无则退出
  181. * 2.小区已有业委会,退出
  182. * */
  183. Long sysUserId = queryUser(userId);
  184. List<UserRole> lstUserRole = new ArrayList<>();
  185. if (sysUserId > 0L) {
  186. lstUserRole = userRoleMapper.getUserRoleByUserId(sysUserId);
  187. }
  188. boolean hasFamily = false;
  189. Long myUptownId = 0L;
  190. Long myOwnerId = 0L;
  191. Long myHouseId = 0L;
  192. if (lstUserRole.size() > 0) {
  193. //判断该用户是否创建了业委会的角色
  194. for (UserRole item : lstUserRole) {
  195. if (item.getRoleId() == 1L) {
  196. hasFamily = true;
  197. myHouseId = item.getPropertyId();
  198. }
  199. if (item.getRoleId() == 2L) {
  200. myOwnerId = item.getPropertyId();
  201. }
  202. }
  203. }
  204. if (!hasFamily) {
  205. throw new Exception("请先完善家庭地址!");
  206. }
  207. if (myHouseId == 0L) {
  208. throw new Exception("家庭地址中尚未生成门牌号!");
  209. }
  210. //根据门牌找小区id
  211. myUptownId = sysUptownUnitMapper.getUptownIdByHouseId(myHouseId);
  212. if (myUptownId == 0L) {
  213. throw new Exception("家庭所在小区未找到!");
  214. }
  215. //判断业委会是否已经建立
  216. List<Owner> lstSysOwner = ownerMapper.getOwnerByUptownId(myUptownId);
  217. if (lstSysOwner != null && lstSysOwner.size() > 0) {
  218. for (Owner item : lstSysOwner) {
  219. if (item.getUserId() == sysUserId && item.getType() == 1) {
  220. //业委会负责人的绑定用户是自己
  221. return 1; //该小区已成立业委会,且业委会负责人的绑定用户是自己,可以进入编辑
  222. // break;
  223. }
  224. }
  225. throw new Exception("小区业委会已建立,非业委会负责人不能编辑!");
  226. } else {
  227. return 1; //该小区没有成立业委会,可以进入新增
  228. }
  229. }
  230. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  231. public Long createYWH(Long userId, Long uptownId, List<Owner> lstOwner) throws Exception {
  232. /** 创建业委会
  233. * 0.流程上业委会负责人是第一个创建业委会的人
  234. * 1.在创建业委会之前,必须有家庭用户角色?
  235. * 2.小区已有业委会,不允许再创建业委会
  236. * 3.小区已有业委会,其他人不允许再进此页面
  237. * 4.业委会所在小区必须和当前用户的家庭用户所在小区一致
  238. * */
  239. Long sysUserId = queryUser(userId);
  240. Long myUptownId = 0L;
  241. Long myHouseId = 0L;
  242. if (uptownId <= 0L) {
  243. throw new Exception("小区id为空!");
  244. }
  245. Uptown uptown = uptownMapper.selectById(uptownId);
  246. if (uptown == null) {
  247. throw new Exception("小区不存在!");
  248. }
  249. //判断该用户是否已经创建了业委会角色
  250. List<UserRole> lstUserRole = new ArrayList<>();
  251. if (sysUserId > 0L) {
  252. lstUserRole = userRoleMapper.getUserRoleByUserId(sysUserId);
  253. }
  254. if (lstUserRole.size() > 0) {
  255. //判断该用户是否创建了业委会的角色
  256. for (UserRole item : lstUserRole) {
  257. if (item.getRoleId() == 2L) {
  258. throw new Exception("业委会用户角色已存在!"); //todo 暂时只允许一个用户角色绑定一个业委会
  259. }
  260. if (item.getRoleId() == 1L) {
  261. myHouseId = item.getPropertyId();
  262. }
  263. }
  264. }
  265. if (myHouseId == 0L) {
  266. throw new Exception("请先创建家庭用户!");
  267. }
  268. //根据门牌找小区id
  269. myUptownId = sysUptownUnitMapper.getUptownIdByHouseId(myHouseId);
  270. if (myUptownId == 0L) {
  271. throw new Exception("家庭所在小区未找到!");
  272. }
  273. if (myUptownId != uptownId) {
  274. throw new Exception("家庭所在小区和业委会所在小区不一致!");
  275. }
  276. //创建业委会用户角色
  277. UserRole userRole = new UserRole();
  278. userRole.setUrId(IdWorker.getId());
  279. userRole.setUserId(sysUserId);
  280. userRole.setUserCreate(sysUserId);
  281. userRole.setUserUpdate(sysUserId);
  282. userRole.setRoleId(2); //业委会角色
  283. userRole.setStatus(0); //需后台审核后变更为1
  284. //判断业委会是否已经建立
  285. List<Owner> lstSysOwner;
  286. if (uptownId > 0L) {
  287. lstSysOwner = ownerMapper.getOwnerByUptownId(uptownId);
  288. if (lstSysOwner != null && lstSysOwner.size() > 0) {
  289. throw new Exception("该小区已建立业委会");
  290. }
  291. }
  292. //建立业委会负责人和成员
  293. if (lstOwner == null) {
  294. throw new Exception("请新增业委会成员");
  295. }
  296. int masterNum = 0;
  297. for (Owner item : lstOwner) {
  298. if (item.getType() == 1L) {
  299. masterNum++;
  300. }
  301. }
  302. if (masterNum == 0) {
  303. throw new Exception("必须指定一个业委会负责人!");
  304. }
  305. if (masterNum != 1) {
  306. throw new Exception("业委会负责人只允许有一个!");
  307. }
  308. //判断业委会中的联系电话是否重复
  309. List<String> lstPhone = new ArrayList<>();
  310. for (Owner item : lstOwner) {
  311. if (!lstPhone.contains(item.getPhone())) {
  312. lstPhone.add(item.getPhone());
  313. }
  314. }
  315. if (lstPhone.size() != lstOwner.size()) {
  316. throw new Exception("联系电话有重复!");
  317. }
  318. for (Owner item : lstOwner) {
  319. item.setOwnerId(IdWorker.getId());
  320. item.setUptownId(uptownId);
  321. item.setUserCreate(sysUserId);
  322. item.setUserUpdate(sysUserId);
  323. if (item.getType() == 1L) {
  324. item.setUserId(sysUserId); //业委会负责人绑定用户
  325. userRole.setPropertyId(item.getOwnerId()); //设置业委会id给角色的PropertyId
  326. }
  327. //新增时还需判断业委会中是否已存在该电话号码
  328. List<Owner> lst = ownerMapper.getOwnerByPhone(item.getPhone());
  329. if (lst != null && lst.size() > 1) {
  330. throw new Exception(item.getPhone() + "电话已被其他业委会使用!");
  331. }
  332. ownerMapper.insert(item);
  333. }
  334. userRoleMapper.insert(userRole);
  335. //业委会其他成员不创建userRole
  336. return userRole.getUrId();
  337. }
  338. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  339. public List<UserRole> queryUserRoles(Long userId) throws Exception {
  340. //获取角色信息
  341. Long sysUserId = queryUser(userId);
  342. List<UserRole> lstUserRole = new ArrayList<>();
  343. if (sysUserId > 0L) {
  344. lstUserRole = userRoleMapper.getUserRoleByUserId(sysUserId);
  345. }
  346. if (lstUserRole.size() > 2) {
  347. throw new Exception("每个用户最多只能有两个角色");
  348. }
  349. for (int i = 0; i < lstUserRole.size(); i++) {
  350. //获取家庭角色的家庭信息
  351. if (lstUserRole.get(i).getRoleId() == 1L) {
  352. if (lstUserRole.get(i).getPropertyId() > 0L) {
  353. UptownHome uptownHome = uptownHomeMapper.selectById(lstUserRole.get(i).getPropertyId());
  354. if (uptownHome != null) {
  355. UptownHouse uptownHouse = uptownHouseMapper.selectById(lstUserRole.get(i).getPropertyId());
  356. if (uptownHouse == null) {
  357. throw new Exception("门牌信息丢失");
  358. }
  359. uptownHome.setDoorplate(uptownHouse.getDoorplate());
  360. Map<String, Long> map = new HashMap<>();
  361. map.put("unitId", uptownHouse.getUnitId()); //栋单元
  362. sysUptownUnit uptownUnit = sysUptownUnitMapper.selectById(uptownHouse.getUnitId());
  363. if (uptownUnit == null || uptownUnit.getUptownId() == 0L) {
  364. throw new Exception("单元中小区信息丢失");
  365. }
  366. map.put("uptownId", uptownUnit.getUptownId()); //小区
  367. Uptown uptown = uptownMapper.selectById(uptownUnit.getUptownId());
  368. if (uptown == null || uptown.getUptownId() == 0L) {
  369. throw new Exception("小区信息丢失");
  370. }
  371. SysArea sysArea = sysAreaMapper.selectById(uptown.getArea());
  372. map.put("areaId", sysArea.getAreaId()); //县区
  373. SysArea sysCity = sysAreaMapper.selectById(sysArea.getAreaUp());
  374. map.put("cityId", sysCity.getAreaId()); //城市
  375. SysArea sysProvince = sysAreaMapper.selectById(sysCity.getAreaUp());
  376. map.put("provinceId", sysProvince.getAreaId()); //省份
  377. uptownHome.setLocation(map);
  378. lstUserRole.get(i).setUptownHome(uptownHome);
  379. }
  380. }
  381. }
  382. //获取业委会角色的业委会及其成员信息
  383. if (lstUserRole.get(i).getRoleId() == 2L) {
  384. if (lstUserRole.get(i).getPropertyId() > 0L) {
  385. Owner owner = ownerMapper.selectById(lstUserRole.get(i).getPropertyId());
  386. if (owner != null && owner.getOwnerId() > 0L) {
  387. List<OwnerLinkman> lstOwnerLinkman = ownerLinkmanMapper.getOwnerLinkmanByOwnerId(owner.getOwnerId());
  388. if (lstOwnerLinkman != null && lstOwnerLinkman.size() > 0) {
  389. owner.setLstOwnerLinkman(lstOwnerLinkman);
  390. }
  391. lstUserRole.get(i).setOwner(owner);
  392. Map<String, Long> map = new HashMap<>();
  393. map.put("uptownId", owner.getUptownId()); //小区
  394. Uptown uptown = uptownMapper.selectById(owner.getUptownId());
  395. SysArea sysArea = sysAreaMapper.selectById(uptown.getArea());
  396. map.put("areaId", sysArea.getAreaId()); //县区
  397. SysArea sysCity = sysAreaMapper.selectById(sysArea.getAreaUp());
  398. map.put("cityId", sysCity.getAreaId()); //城市
  399. SysArea sysProvince = sysAreaMapper.selectById(sysCity.getAreaUp());
  400. map.put("provinceId", sysProvince.getAreaId()); //省份
  401. owner.setLocation(map);
  402. }
  403. }
  404. }
  405. }
  406. return lstUserRole;
  407. }
  408. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  409. public List<UptownHome> queryFamily(Long userId) throws Exception {
  410. Long sysUserId = queryUser(userId);
  411. Long userHouseId = 0L;
  412. int roleFamilyNum = 0;
  413. List<UserRole> lstUserRole = new ArrayList<>();
  414. if (sysUserId > 0L) {
  415. lstUserRole = userRoleMapper.getUserRoleByUserId(sysUserId);
  416. }
  417. if (lstUserRole.size() > 0) {
  418. for (UserRole item : lstUserRole) {
  419. if (item.getRoleId() == 1L) {
  420. roleFamilyNum++;
  421. userHouseId = item.getPropertyId();
  422. }
  423. }
  424. }
  425. if (roleFamilyNum == 0) {
  426. throw new Exception("尚未创建家庭角色");
  427. }
  428. if (roleFamilyNum > 1) {
  429. throw new Exception("该用户创建的家庭角色大于1个");
  430. }
  431. List<UptownHome> lstUptownHome = new ArrayList<>();
  432. if (userHouseId > 0L) {
  433. lstUptownHome = uptownHomeMapper.getUptownHomeBy(userHouseId);
  434. }
  435. return lstUptownHome;
  436. }
  437. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  438. public Long queryUser(Long userId) throws Exception {
  439. //这里是为了调试方便,userId由前端传过来
  440. Long sysUserId = 0L;
  441. if (userId == null || userId == 0L) {
  442. UserOpen userOpen = homeService.getUserOpen();
  443. if (userOpen == null) {
  444. throw new Exception("微信登录失败");
  445. }
  446. sysUserId = userOpen.getUserId();
  447. } else {
  448. sysUserId = userId;
  449. }
  450. return sysUserId;
  451. }
  452. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  453. public Long editFamily(Long userId, Long unitId, String doorPlate, String linkMan, Integer helpNum, String phone, Long urId) throws Exception {
  454. Long sysUserId = queryUser(userId);
  455. if (urId == 0L) {
  456. throw new Exception("尚未建立家庭用户角色,无法编辑");
  457. }
  458. UserRole userRole = userRoleMapper.selectById(urId);
  459. if (userRole == null) {
  460. throw new Exception("尚未建立家庭用户角色,无法编辑");
  461. }
  462. if (userRole.getRoleId() != 1L) {
  463. throw new Exception("当前角色不是家庭用户角色");
  464. }
  465. if (userRole.getUserId() != sysUserId) {
  466. throw new Exception("角色与当前用户不匹配");
  467. }
  468. if (userRole.getPropertyId() == 0L) {
  469. throw new Exception("【数据异常】角色尚未创建家庭"); //有家庭角色但没有家里家庭属于不正常的情况(在createFamily中应该一并创建)
  470. }
  471. //原小区、栋、单元、门牌
  472. UptownHouse uptownHouse = uptownHouseMapper.selectById(userRole.getPropertyId());
  473. if (uptownHouse == null) {
  474. throw new Exception("尚未创建门牌号");
  475. }
  476. if (uptownHouse.getUnitId() != unitId) {
  477. throw new Exception("小区选择后不允许修改");
  478. }
  479. if (uptownHouse.getDoorplate() != doorPlate) {
  480. //查找更换之后的单元、门牌是否被占用
  481. List<UptownHouse> lstUptownHouse = uptownHouseMapper.getUptownHouseBy(unitId, doorPlate);
  482. if (lstUptownHouse != null && lstUptownHouse.size() > 0) {
  483. throw new Exception("该小区单元下的门牌已被人注册!");
  484. }
  485. uptownHouse.setUnitId(unitId);
  486. uptownHouse.setDoorplate(doorPlate);
  487. uptownHouseMapper.updateById(uptownHouse);
  488. }
  489. UptownHome uptownHome = uptownHomeMapper.selectById(uptownHouse.getHouseId());
  490. if (uptownHome == null || uptownHome.getHouseId() == 0L) {
  491. throw new Exception("该门牌尚未填写家庭信息!");
  492. }
  493. uptownHome.setLinkman(linkMan);
  494. uptownHome.setPhone(phone);
  495. uptownHome.setOld(helpNum);
  496. uptownHomeMapper.updateById(uptownHome);
  497. return 1L;
  498. }
  499. @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
  500. public Long editYWH(Long urId, Long userId, Long uptownId, List<OwnerLinkman> lstOwnerMan) throws Exception {
  501. Long sysUserId = queryUser(userId);
  502. if (urId == 0L) {
  503. throw new Exception("尚未建立家庭用户角色,无法编辑");
  504. }
  505. UserRole userRole = userRoleMapper.selectById(urId);
  506. if (userRole == null) {
  507. throw new Exception("尚未建立家庭用户角色,无法编辑");
  508. }
  509. if (userRole.getRoleId() != 2L) {
  510. throw new Exception("当前角色不是业委会角色");
  511. }
  512. if (userRole.getUserId() != sysUserId) {
  513. throw new Exception("角色与当前用户不匹配");
  514. }
  515. if (userRole.getPropertyId() == 0L) {
  516. throw new Exception("【数据异常】角色尚未创建家庭"); //有家庭角色但没有家里家庭属于不正常的情况(在createFamily中应该一并创建)
  517. }
  518. Owner owner = ownerMapper.selectById(userRole.getPropertyId());
  519. if (owner == null) {
  520. throw new Exception("尚未创建业委会");
  521. }
  522. if (owner.getUptownId() != uptownId) {
  523. //查找更换小区之后业委会是否被占用
  524. List<Owner> lstOwner = ownerMapper.getOwnerByUptownId(uptownId);
  525. if (lstOwner != null && lstOwner.size() > 0) {
  526. throw new Exception("该小区业委会已被人注册!");
  527. }
  528. owner.setUptownId(uptownId);
  529. ownerMapper.updateById(owner);
  530. }
  531. //修改业委会成员
  532. if (lstOwnerMan == null) {
  533. throw new Exception("请新增业委会成员");
  534. }
  535. int masterNum = 0;
  536. for (OwnerLinkman item : lstOwnerMan) {
  537. if (item.getType() == 1L) {
  538. masterNum++;
  539. }
  540. }
  541. if (masterNum != 1) {
  542. throw new Exception("业委会负责人只允许有一个");
  543. }
  544. for (OwnerLinkman item : lstOwnerMan) {
  545. if (item.getType() == 1L) {
  546. owner.setLinkman(item.getLinkman());
  547. owner.setPhone(item.getPhone());
  548. }
  549. item.setOwnerId(owner.getOwnerId());
  550. ownerLinkmanMapper.insert(item);
  551. }
  552. ownerMapper.insert(owner);
  553. return userRole.getUrId();
  554. }
  555. }