EditOwnerCmd.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. package com.java110.user.cmd.owner;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.java110.core.annotation.Java110Cmd;
  5. import com.java110.core.annotation.Java110Transactional;
  6. import com.java110.core.context.ICmdDataFlowContext;
  7. import com.java110.core.event.cmd.AbstractServiceCmdListener;
  8. import com.java110.core.event.cmd.CmdEvent;
  9. import com.java110.core.factory.GenerateCodeFactory;
  10. import com.java110.dto.file.FileDto;
  11. import com.java110.dto.file.FileRelDto;
  12. import com.java110.dto.owner.OwnerAppUserDto;
  13. import com.java110.dto.owner.OwnerDto;
  14. import com.java110.intf.common.IFileInnerServiceSMO;
  15. import com.java110.intf.common.IFileRelInnerServiceSMO;
  16. import com.java110.intf.user.IOwnerV1InnerServiceSMO;
  17. import com.java110.intf.user.IOwnerAppUserInnerServiceSMO;
  18. import com.java110.intf.user.IOwnerAppUserV1InnerServiceSMO;
  19. import com.java110.intf.user.IOwnerAttrInnerServiceSMO;
  20. import com.java110.intf.user.IOwnerInnerServiceSMO;
  21. import com.java110.po.file.FileRelPo;
  22. import com.java110.po.owner.OwnerAppUserPo;
  23. import com.java110.po.owner.OwnerAttrPo;
  24. import com.java110.po.owner.OwnerPo;
  25. import com.java110.utils.cache.MappingCache;
  26. import com.java110.utils.exception.CmdException;
  27. import com.java110.utils.util.Assert;
  28. import com.java110.utils.util.BeanConvertUtil;
  29. import com.java110.utils.util.StringUtil;
  30. import org.apache.commons.lang3.StringUtils;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import java.util.List;
  33. @Java110Cmd(serviceCode = "owner.editOwner")
  34. public class EditOwnerCmd extends AbstractServiceCmdListener {
  35. @Autowired
  36. private IFileInnerServiceSMO fileInnerServiceSMOImpl;
  37. @Autowired
  38. private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
  39. @Autowired
  40. private IOwnerAttrInnerServiceSMO ownerAttrInnerServiceSMOImpl;
  41. @Autowired
  42. private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl;
  43. @Autowired
  44. private IOwnerAppUserInnerServiceSMO ownerAppUserInnerServiceSMOImpl;
  45. @Autowired
  46. private IOwnerAppUserV1InnerServiceSMO ownerAppUserV1InnerServiceSMOImpl;
  47. @Autowired
  48. private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
  49. @Override
  50. public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
  51. Assert.jsonObjectHaveKey(reqJson, "memberId", "请求报文中未包含ownerId");
  52. Assert.jsonObjectHaveKey(reqJson, "name", "请求报文中未包含name");
  53. Assert.jsonObjectHaveKey(reqJson, "age", "请求报文中未包含age");
  54. Assert.jsonObjectHaveKey(reqJson, "link", "请求报文中未包含link");
  55. Assert.jsonObjectHaveKey(reqJson, "sex", "请求报文中未包含sex");
  56. Assert.jsonObjectHaveKey(reqJson, "ownerTypeCd", "请求报文中未包含ownerTypeCd");
  57. Assert.jsonObjectHaveKey(reqJson, "communityId", "请求报文中未包含communityId");
  58. // Assert.jsonObjectHaveKey(paramIn, "idCard", "请求报文中未包含身份证号");
  59. Assert.judgeAttrValue(reqJson);
  60. //获取手机号(判断手机号是否重复)
  61. String link = reqJson.getString("link");
  62. if (!StringUtil.isEmpty(link) && link.contains("*")) {
  63. OwnerDto ownerDto = new OwnerDto();
  64. ownerDto.setOwnerId(reqJson.getString("ownerId"));
  65. //业主
  66. ownerDto.setOwnerTypeCd("1001");
  67. List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
  68. Assert.listOnlyOne(ownerDtos, "查询业主信息错误!");
  69. link = ownerDtos.get(0).getLink();
  70. reqJson.put("link", link);
  71. }
  72. //获取身份证号(判断身份证号是否重复)
  73. String idCard = reqJson.getString("idCard");
  74. if (!StringUtil.isEmpty(idCard) && idCard.contains("*")) {
  75. OwnerDto owner = new OwnerDto();
  76. owner.setOwnerId(reqJson.getString("ownerId"));
  77. //业主
  78. owner.setOwnerTypeCd("1001");
  79. List<OwnerDto> owners = ownerInnerServiceSMOImpl.queryOwners(owner);
  80. Assert.listOnlyOne(owners, "查询业主信息错误!");
  81. idCard = owners.get(0).getIdCard();
  82. reqJson.put("idCard", idCard);
  83. }
  84. String userValidate = MappingCache.getValue("USER_VALIDATE");
  85. if(!"ON".equals(userValidate)){
  86. return ;
  87. }
  88. OwnerDto ownerDto = new OwnerDto();
  89. ownerDto.setLink(link);
  90. ownerDto.setCommunityId(reqJson.getString("communityId"));
  91. List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryAllOwners(ownerDto);
  92. if (ownerDtos != null && ownerDtos.size() > 1) {
  93. throw new IllegalArgumentException("手机号重复,请重新输入");
  94. } else if (ownerDtos != null && ownerDtos.size() == 1) {
  95. for (OwnerDto owner : ownerDtos) {
  96. if ((!StringUtil.isEmpty(reqJson.getString("ownerId")) && !owner.getOwnerId().equals(reqJson.getString("ownerId"))) || (!StringUtil.isEmpty(reqJson.getString("memberId")) && !owner.getMemberId().equals(reqJson.getString("memberId")))) {
  97. throw new IllegalArgumentException("手机号重复,请重新输入");
  98. }
  99. }
  100. }
  101. if (!StringUtil.isEmpty(idCard)) {
  102. OwnerDto owner = new OwnerDto();
  103. owner.setIdCard(idCard);
  104. owner.setCommunityId(reqJson.getString("communityId"));
  105. List<OwnerDto> owners = ownerInnerServiceSMOImpl.queryAllOwners(owner);
  106. if (owners != null && owners.size() > 1) {
  107. throw new IllegalArgumentException("身份证号重复,请重新输入");
  108. } else if (owners != null && owners.size() == 1) {
  109. for (OwnerDto ownerDto1 : owners) {
  110. if ((!StringUtil.isEmpty(reqJson.getString("ownerId")) && !ownerDto1.getOwnerId().equals(reqJson.getString("ownerId"))) || (!StringUtil.isEmpty(reqJson.getString("memberId")) && !ownerDto1.getMemberId().equals(reqJson.getString("memberId")))) {
  111. throw new IllegalArgumentException("身份证号重复,请重新输入");
  112. }
  113. }
  114. }
  115. }
  116. }
  117. @Override
  118. @Java110Transactional
  119. public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
  120. if (!reqJson.containsKey("ownerId") || OwnerDto.OWNER_TYPE_CD_OWNER.equals(reqJson.getString("ownerTypeCd"))) {
  121. reqJson.put("ownerId", reqJson.getString("memberId"));
  122. }
  123. //这里注释 因为 有国外的手机号 不是11位
  124. // if (link.length() != 11) {
  125. // throw new IllegalArgumentException("手机号输入不正确!");
  126. // }
  127. if (reqJson.containsKey("ownerPhoto") && !StringUtils.isEmpty(reqJson.getString("ownerPhoto"))) {
  128. FileDto fileDto = new FileDto();
  129. fileDto.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
  130. fileDto.setFileName(fileDto.getFileId());
  131. fileDto.setContext(reqJson.getString("ownerPhoto"));
  132. fileDto.setSuffix("jpeg");
  133. fileDto.setCommunityId(reqJson.getString("communityId"));
  134. String fileName = fileInnerServiceSMOImpl.saveFile(fileDto);
  135. reqJson.put("ownerPhotoId", fileDto.getFileId());
  136. reqJson.put("fileSaveName", fileName);
  137. editOwnerPhoto(reqJson);
  138. }
  139. editOwner(reqJson);
  140. JSONArray attrs = reqJson.getJSONArray("attrs");
  141. if (attrs.size() < 1) {
  142. return;
  143. }
  144. JSONObject attr = null;
  145. int flag = 0;
  146. for (int attrIndex = 0; attrIndex < attrs.size(); attrIndex++) {
  147. attr = attrs.getJSONObject(attrIndex);
  148. attr.put("memberId", reqJson.getString("memberId"));
  149. attr.put("communityId", reqJson.getString("communityId"));
  150. if (!attr.containsKey("attrId") || attr.getString("attrId").startsWith("-") || StringUtil.isEmpty(attr.getString("attrId"))) {
  151. attr.put("attrId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
  152. OwnerAttrPo ownerAttrPo = BeanConvertUtil.covertBean(attr, OwnerAttrPo.class);
  153. flag = ownerAttrInnerServiceSMOImpl.saveOwnerAttr(ownerAttrPo);
  154. if (flag < 1) {
  155. throw new CmdException("添加业主属性失败");
  156. }
  157. continue;
  158. }
  159. OwnerAttrPo ownerAttrPo = BeanConvertUtil.covertBean(attr, OwnerAttrPo.class);
  160. flag = ownerAttrInnerServiceSMOImpl.updateOwnerAttrInfoInstance(ownerAttrPo);
  161. if (flag < 1) {
  162. throw new CmdException("修改业主属性失败");
  163. }
  164. }
  165. }
  166. public void editOwner(JSONObject paramInJson) {
  167. OwnerDto ownerDto = new OwnerDto();
  168. ownerDto.setMemberId(paramInJson.getString("memberId"));
  169. List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
  170. Assert.listOnlyOne(ownerDtos, "未查询到业主信息或查询到多条");
  171. JSONObject businessOwner = new JSONObject();
  172. businessOwner.putAll(BeanConvertUtil.beanCovertMap(ownerDtos.get(0)));
  173. businessOwner.putAll(paramInJson);
  174. if (paramInJson.containsKey("wxPhoto")) {
  175. businessOwner.put("link", paramInJson.getString("wxPhoto"));
  176. }
  177. businessOwner.put("state", ownerDtos.get(0).getState());
  178. OwnerPo ownerPo = BeanConvertUtil.covertBean(businessOwner, OwnerPo.class);
  179. int flag = ownerV1InnerServiceSMOImpl.updateOwner(ownerPo);
  180. if (flag < 1) {
  181. throw new CmdException("修改业主失败");
  182. }
  183. OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto();
  184. ownerAppUserDto.setMemberId(paramInJson.getString("ownerId"));
  185. //查询app用户表
  186. List<OwnerAppUserDto> ownerAppUserDtos = ownerAppUserInnerServiceSMOImpl.queryOwnerAppUsers(ownerAppUserDto);
  187. if (ownerAppUserDtos != null && ownerAppUserDtos.size() > 0) {
  188. for (OwnerAppUserDto ownerAppUser : ownerAppUserDtos) {
  189. OwnerAppUserPo ownerAppUserPo = BeanConvertUtil.covertBean(ownerAppUser, OwnerAppUserPo.class);
  190. ownerAppUserPo.setLink(paramInJson.getString("link"));
  191. ownerAppUserPo.setIdCard(paramInJson.getString("idCard"));
  192. flag = ownerAppUserV1InnerServiceSMOImpl.updateOwnerAppUser(ownerAppUserPo);
  193. if (flag < 1) {
  194. throw new CmdException("修改业主失败");
  195. }
  196. }
  197. }
  198. }
  199. public void editOwnerPhoto(JSONObject paramInJson) {
  200. FileRelDto fileRelDto = new FileRelDto();
  201. fileRelDto.setRelTypeCd("10000");
  202. fileRelDto.setObjId(paramInJson.getString("memberId"));
  203. int flag = 0;
  204. List<FileRelDto> fileRelDtos = fileRelInnerServiceSMOImpl.queryFileRels(fileRelDto);
  205. if (fileRelDtos == null || fileRelDtos.size() == 0) {
  206. JSONObject businessUnit = new JSONObject();
  207. businessUnit.put("fileRelId", "-1");
  208. businessUnit.put("relTypeCd", "10000");
  209. businessUnit.put("saveWay", "table");
  210. businessUnit.put("objId", paramInJson.getString("memberId"));
  211. businessUnit.put("fileRealName", paramInJson.getString("ownerPhotoId"));
  212. businessUnit.put("fileSaveName", paramInJson.getString("ownerPhotoId"));
  213. FileRelPo fileRelPo = BeanConvertUtil.covertBean(businessUnit, FileRelPo.class);
  214. flag = fileRelInnerServiceSMOImpl.saveFileRel(fileRelPo);
  215. if (flag < 1) {
  216. throw new CmdException("保存文件失败");
  217. }
  218. return;
  219. }
  220. JSONObject businessUnit = new JSONObject();
  221. businessUnit.putAll(BeanConvertUtil.beanCovertMap(fileRelDtos.get(0)));
  222. businessUnit.put("fileRealName", paramInJson.getString("ownerPhotoId"));
  223. businessUnit.put("fileSaveName", paramInJson.getString("fileSaveName"));
  224. FileRelPo fileRelPo = BeanConvertUtil.covertBean(businessUnit, FileRelPo.class);
  225. flag = fileRelInnerServiceSMOImpl.updateFileRel(fileRelPo);
  226. if (flag < 1) {
  227. throw new CmdException("保存文件失败");
  228. }
  229. }
  230. }