OwnerRegisterCmd.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. package com.java110.user.cmd.owner;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.java110.core.annotation.Java110Cmd;
  4. import com.java110.core.annotation.Java110Transactional;
  5. import com.java110.core.context.ICmdDataFlowContext;
  6. import com.java110.core.event.cmd.AbstractServiceCmdListener;
  7. import com.java110.core.event.cmd.CmdEvent;
  8. import com.java110.core.factory.AuthenticationFactory;
  9. import com.java110.core.factory.GenerateCodeFactory;
  10. import com.java110.core.factory.SendSmsFactory;
  11. import com.java110.dto.app.AppDto;
  12. import com.java110.dto.community.CommunityDto;
  13. import com.java110.dto.msg.SmsDto;
  14. import com.java110.dto.owner.OwnerAppUserDto;
  15. import com.java110.dto.owner.OwnerDto;
  16. import com.java110.intf.common.ISmsInnerServiceSMO;
  17. import com.java110.intf.community.ICommunityInnerServiceSMO;
  18. import com.java110.intf.store.IStoreInnerServiceSMO;
  19. import com.java110.intf.user.*;
  20. import com.java110.po.owner.OwnerAppUserPo;
  21. import com.java110.po.user.UserPo;
  22. import com.java110.po.userAttr.UserAttrPo;
  23. import com.java110.utils.cache.MappingCache;
  24. import com.java110.utils.constant.UserLevelConstant;
  25. import com.java110.utils.exception.CmdException;
  26. import com.java110.utils.util.Assert;
  27. import com.java110.utils.util.BeanConvertUtil;
  28. import com.java110.utils.util.StringUtil;
  29. import com.java110.vo.ResultVo;
  30. import org.slf4j.Logger;
  31. import org.slf4j.LoggerFactory;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import java.util.List;
  34. /**
  35. * 服务注册功能迁移
  36. */
  37. @Java110Cmd(serviceCode = "owner.ownerRegister")
  38. public class OwnerRegisterCmd extends AbstractServiceCmdListener {
  39. private final static Logger logger = LoggerFactory.getLogger(OwnerRegisterCmd.class);
  40. @Autowired
  41. private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
  42. @Autowired
  43. private IUserAttrV1InnerServiceSMO userAttrV1InnerServiceSMOImpl;
  44. @Autowired
  45. private IStoreInnerServiceSMO storeInnerServiceSMOImpl;
  46. @Autowired
  47. private IUserInnerServiceSMO userInnerServiceSMOImpl;
  48. @Autowired
  49. private ISmsInnerServiceSMO smsInnerServiceSMOImpl;
  50. @Autowired
  51. private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
  52. @Autowired
  53. private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
  54. @Autowired
  55. private IOwnerAppUserV1InnerServiceSMO ownerAppUserV1InnerServiceSMOImpl;
  56. @Override
  57. public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
  58. Assert.hasKeyAndValue(reqJson, "link", "未包含联系电话");
  59. Assert.hasKeyAndValue(reqJson, "msgCode", "未包含联系电话验证码");
  60. Assert.hasKeyAndValue(reqJson, "password", "未包含密码");
  61. SmsDto smsDto = new SmsDto();
  62. smsDto.setTel(reqJson.getString("link"));
  63. smsDto.setCode(reqJson.getString("msgCode"));
  64. smsDto = smsInnerServiceSMOImpl.validateCode(smsDto);
  65. if (!smsDto.isSuccess() && "ON".equals(MappingCache.getValue(SendSmsFactory.SMS_SEND_SWITCH))) {
  66. throw new IllegalArgumentException(smsDto.getMsg());
  67. }
  68. }
  69. @Override
  70. @Java110Transactional
  71. public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
  72. OwnerAppUserDto ownerAppUserDto = BeanConvertUtil.covertBean(reqJson, OwnerAppUserDto.class);
  73. ownerAppUserDto.setStates(new String[]{"10000", "12000"});
  74. //是否已经注册过
  75. List<OwnerAppUserDto> ownerAppUserDtos = ownerAppUserV1InnerServiceSMOImpl.queryOwnerAppUsers(ownerAppUserDto);
  76. if (ownerAppUserDtos != null && ownerAppUserDtos.size() > 0) {
  77. throw new IllegalArgumentException("已经注册过用户");
  78. }
  79. OwnerDto ownerDto = new OwnerDto();
  80. ownerDto.setLink(reqJson.getString("link"));
  81. List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
  82. String appId = cmdDataFlowContext.getReqHeaders().get("app-id");
  83. if (AppDto.WECHAT_OWNER_APP_ID.equals(appId)) { //公众号
  84. reqJson.put("appType", OwnerAppUserDto.APP_TYPE_WECHAT);
  85. } else if (AppDto.WECHAT_MINA_OWNER_APP_ID.equals(appId)) { //小程序
  86. reqJson.put("appType", OwnerAppUserDto.APP_TYPE_WECHAT_MINA);
  87. } else {//app
  88. reqJson.put("appType", OwnerAppUserDto.APP_TYPE_APP);
  89. }
  90. reqJson.put("userId", GenerateCodeFactory.getUserId());
  91. if (reqJson.containsKey("openId")) {
  92. reqJson.put("openId", reqJson.getString("openId"));
  93. } else {
  94. reqJson.put("openId", "-1");
  95. }
  96. //添加小区楼
  97. addOwnerAppUser(reqJson, ownerDtos);
  98. registerUser(reqJson, ownerDtos);
  99. cmdDataFlowContext.setResponseEntity(ResultVo.success());
  100. }
  101. private void addOwnerAppUser(JSONObject paramInJson, List<OwnerDto> ownerDtos) {
  102. List<CommunityDto> communityDtos = null;
  103. CommunityDto tmpCommunityDto = null;
  104. String communityName = "无";
  105. if (ownerDtos == null || ownerDtos.size() < 1) {
  106. CommunityDto communityDto = new CommunityDto();
  107. communityDto.setState("1100");
  108. communityDto.setCommunityId(paramInJson.getString("defaultCommunityId"));
  109. communityDto.setPage(1);
  110. communityDto.setRow(1);
  111. communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto);
  112. if (communityDtos != null && communityDtos.size() > 0) {
  113. communityName = communityDtos.get(0).getName();
  114. }
  115. OwnerAppUserPo ownerAppUserPo = BeanConvertUtil.covertBean(paramInJson, OwnerAppUserPo.class);
  116. //状态类型,10000 审核中,12000 审核成功,13000 审核失败
  117. ownerAppUserPo.setState("12000");
  118. ownerAppUserPo.setAppTypeCd("10010");
  119. ownerAppUserPo.setAppUserId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_appUserId));
  120. ownerAppUserPo.setMemberId("-1");
  121. ownerAppUserPo.setCommunityName(communityName);
  122. ownerAppUserPo.setCommunityId(paramInJson.getString("defaultCommunityId"));
  123. ownerAppUserPo.setAppUserName("游客");
  124. ownerAppUserPo.setIdCard("无");
  125. int flag = ownerAppUserV1InnerServiceSMOImpl.saveOwnerAppUser(ownerAppUserPo);
  126. if (flag < 1) {
  127. throw new CmdException("添加用户业主关系失败");
  128. }
  129. return;
  130. }
  131. OwnerAppUserPo ownerAppUserPo = null;
  132. for (OwnerDto ownerDto : ownerDtos) {
  133. CommunityDto communityDto = new CommunityDto();
  134. communityDto.setState("1100");
  135. communityDto.setCommunityId(ownerDto.getCommunityId());
  136. communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto);
  137. if (communityDtos == null || communityDtos.size() < 1) {
  138. continue;
  139. }
  140. tmpCommunityDto = communityDtos.get(0);
  141. ownerAppUserPo = BeanConvertUtil.covertBean(paramInJson, OwnerAppUserPo.class);
  142. //状态类型,10000 审核中,12000 审核成功,13000 审核失败
  143. ownerAppUserPo.setState("12000");
  144. ownerAppUserPo.setAppTypeCd("10010");
  145. ownerAppUserPo.setAppUserId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_appUserId));
  146. ownerAppUserPo.setMemberId(ownerDto.getMemberId());
  147. ownerAppUserPo.setCommunityName(tmpCommunityDto.getName());
  148. ownerAppUserPo.setCommunityId(tmpCommunityDto.getCommunityId());
  149. ownerAppUserPo.setAppUserName(ownerDto.getName());
  150. ownerAppUserPo.setIdCard(ownerDto.getIdCard());
  151. int flag = ownerAppUserV1InnerServiceSMOImpl.saveOwnerAppUser(ownerAppUserPo);
  152. if (flag < 1) {
  153. throw new CmdException("添加用户业主关系失败");
  154. }
  155. }
  156. }
  157. /**
  158. * 注册用户
  159. *
  160. * @param paramObj
  161. */
  162. public void registerUser(JSONObject paramObj, List<OwnerDto> ownerDtos) {
  163. if (paramObj.containsKey("email") && !StringUtil.isEmpty(paramObj.getString("email"))) {
  164. Assert.isEmail(paramObj, "email", "不是有效的邮箱格式");
  165. }
  166. paramObj.put("levelCd", UserLevelConstant.USER_LEVEL_ORDINARY);
  167. //设置默认密码
  168. String userPassword = paramObj.getString("password");
  169. userPassword = AuthenticationFactory.passwdMd5(userPassword);
  170. paramObj.put("password", userPassword);
  171. String tel = paramObj.getString("link");
  172. String name = tel;
  173. if (ownerDtos != null && ownerDtos.size() > 0) {
  174. name = ownerDtos.get(0).getName();
  175. }
  176. UserPo userPo = BeanConvertUtil.covertBean(paramObj, UserPo.class);
  177. userPo.setName(name);
  178. userPo.setTel(tel);
  179. int flag = userV1InnerServiceSMOImpl.saveUser(userPo);
  180. if (flag < 1) {
  181. throw new CmdException("注册失败");
  182. }
  183. if (!paramObj.containsKey("openId") || "-1".equals(paramObj.getString("openId"))) {
  184. return;
  185. }
  186. JSONObject userAttrObj = new JSONObject();
  187. userAttrObj.put("attrId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
  188. userAttrObj.put("specCd", "100201911001");
  189. userAttrObj.put("value", paramObj.getString("openId"));
  190. UserAttrPo userAttrPo = BeanConvertUtil.covertBean(userAttrObj, UserAttrPo.class);
  191. userAttrPo.setUserId(userPo.getUserId());
  192. flag = userAttrV1InnerServiceSMOImpl.saveUserAttr(userAttrPo);
  193. if (flag < 1) {
  194. throw new CmdException("注册失败");
  195. }
  196. }
  197. }