package com.java110.user.cmd.owner; import com.alibaba.fastjson.JSONObject; import com.java110.core.annotation.Java110Cmd; import com.java110.core.annotation.Java110Transactional; import com.java110.core.context.CmdContextUtils; import com.java110.core.context.ICmdDataFlowContext; import com.java110.core.event.cmd.Cmd; import com.java110.core.event.cmd.CmdEvent; import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.account.AccountDto; import com.java110.dto.owner.OwnerAppUserDto; import com.java110.dto.owner.OwnerDto; import com.java110.dto.owner.OwnerRoomRelDto; import com.java110.dto.user.UserDto; import com.java110.intf.acct.IAccountInnerServiceSMO; import com.java110.intf.user.*; import com.java110.po.account.AccountPo; import com.java110.po.owner.OwnerAppUserPo; import com.java110.po.owner.OwnerPo; import com.java110.po.user.UserPo; import com.java110.utils.exception.CmdException; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.ListUtil; import org.springframework.beans.factory.annotation.Autowired; import java.util.List; /** * 业主房屋认证审核 */ @Java110Cmd(serviceCode = "owner.auditAuthOwner") public class AuditAuthOwnerCmd extends Cmd { @Autowired private IOwnerAppUserV1InnerServiceSMO ownerAppUserV1InnerServiceSMOImpl; @Autowired private IOwnerAppUserInnerServiceSMO ownerAppUserInnerServiceSMOImpl; @Autowired private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl; @Autowired private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl; @Autowired private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl; @Autowired private IAccountInnerServiceSMO accountInnerServiceSMOImpl; @Override public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException { Assert.hasKeyAndValue(reqJson, "appUserId", "绑定ID不能为空"); Assert.hasKeyAndValue(reqJson, "state", "必填,请填写状态"); Assert.hasKeyAndValue(reqJson, "remark", "必填,请填写审核说明"); Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区信息"); OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto(); ownerAppUserDto.setAppUserId(reqJson.getString("appUserId")); ownerAppUserDto.setState(OwnerAppUserDto.STATE_AUDITING); List ownerAppUserDtos = ownerAppUserInnerServiceSMOImpl.queryOwnerAppUsers(ownerAppUserDto); Assert.listOnlyOne(ownerAppUserDtos, "审核记录不存在"); } @Override @Java110Transactional public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException { String userId = CmdContextUtils.getUserId(context); String state = ""; // todo 审核拒绝 if ("1200".equals(reqJson.getString("state"))) { OwnerAppUserPo ownerAppUserPo = new OwnerAppUserPo(); ownerAppUserPo.setAppUserId(reqJson.getString("appUserId")); ownerAppUserPo.setState(OwnerAppUserDto.STATE_AUDIT_ERROR); ownerAppUserPo.setRemark(reqJson.getString("remark")); int flag = ownerAppUserV1InnerServiceSMOImpl.updateOwnerAppUser(ownerAppUserPo); if (flag < 1) { throw new CmdException("修改绑定失败"); } return; } OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto(); ownerAppUserDto.setAppUserId(reqJson.getString("appUserId")); ownerAppUserDto.setState(OwnerAppUserDto.STATE_AUDITING); List ownerAppUserDtos = ownerAppUserInnerServiceSMOImpl.queryOwnerAppUsers(ownerAppUserDto); String memberId = ""; // todo 如果是业主 if(OwnerDto.OWNER_TYPE_CD_OWNER.equals(ownerAppUserDtos.get(0).getOwnerTypeCd())){ memberId = bindOwner(ownerAppUserDtos.get(0)); }else { //todo 如果是成员 memberId = bindOwnerMember(ownerAppUserDtos.get(0),userId); } UserPo userPo = new UserPo(); userPo.setName(ownerAppUserDtos.get(0).getAppUserName()); userPo.setUserId(ownerAppUserDtos.get(0).getUserId()); userV1InnerServiceSMOImpl.updateUser(userPo); OwnerAppUserPo ownerAppUserPo = new OwnerAppUserPo(); ownerAppUserPo.setAppUserId(reqJson.getString("appUserId")); ownerAppUserPo.setState(OwnerAppUserDto.STATE_AUDIT_SUCCESS); ownerAppUserPo.setRemark(reqJson.getString("remark")); ownerAppUserPo.setMemberId(memberId); int flag = ownerAppUserV1InnerServiceSMOImpl.updateOwnerAppUser(ownerAppUserPo); if (flag < 1) { throw new CmdException("修改绑定失败"); } } /** * 绑定成员 * @param ownerAppUserDto * @return */ private String bindOwnerMember(OwnerAppUserDto ownerAppUserDto,String userId) { // todo 查看 房屋是否有业主,如果没有添加业主 OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto(); ownerRoomRelDto.setRoomId(ownerAppUserDto.getRoomId()); List ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto); if(ListUtil.isNull(ownerRoomRelDtos)){ throw new CmdException("房屋未绑定业主"); } //todo 根据手机号和小区查询 家庭成员是否存在 OwnerDto ownerDto = new OwnerDto(); ownerDto.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId()); ownerDto.setLink(ownerAppUserDto.getLink()); ownerDto.setCommunityId(ownerAppUserDto.getCommunityId()); ownerDto.setOwnerTypeCds(new String[]{ OwnerDto.OWNER_TYPE_CD_MEMBER // , // OwnerDto.OWNER_TYPE_CD_RENTING, // OwnerDto.OWNER_TYPE_CD_OTHER, // OwnerDto.OWNER_TYPE_CD_TEMP }); List ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto); if(!ListUtil.isNull(ownerDtos)){ return ownerDtos.get(0).getMemberId(); } OwnerPo ownerPo = new OwnerPo(); ownerPo.setMemberId(GenerateCodeFactory.getGeneratorId("11")); ownerPo.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId()); ownerPo.setName(ownerAppUserDto.getAppUserName()); ownerPo.setSex("0"); ownerPo.setLink(ownerAppUserDto.getLink()); ownerPo.setUserId(userId); ownerPo.setRemark("业主认证,审核添加"); ownerPo.setOwnerTypeCd(ownerAppUserDto.getOwnerTypeCd()); ownerPo.setCommunityId(ownerAppUserDto.getCommunityId()); ownerPo.setIdCard(ownerAppUserDto.getIdCard()); ownerPo.setState(OwnerDto.STATE_FINISH); ownerPo.setOwnerFlag(OwnerDto.OWNER_FLAG_TRUE); ownerPo.setAddress("无"); ownerV1InnerServiceSMOImpl.saveOwner(ownerPo); return ownerPo.getMemberId(); } /** * 绑定业主 * @param ownerAppUserDto * @return */ private String bindOwner(OwnerAppUserDto ownerAppUserDto) { // todo 查看 房屋是否有业主,如果没有添加业主 OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto(); ownerRoomRelDto.setRoomId(ownerAppUserDto.getRoomId()); List ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto); if(ListUtil.isNull(ownerRoomRelDtos)){ throw new CmdException("房屋未绑定业主"); } OwnerPo ownerPo = new OwnerPo(); ownerPo.setLink(ownerAppUserDto.getLink()); // ownerPo.setName(ownerAppUserDto.getAppUserName()); ownerPo.setMemberId(ownerRoomRelDtos.get(0).getOwnerId()); ownerPo.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId()); ownerV1InnerServiceSMOImpl.updateOwner(ownerPo); AccountDto accountDto = new AccountDto(); accountDto.setObjId(ownerRoomRelDtos.get(0).getOwnerId()); accountDto.setPartId(ownerRoomRelDtos.get(0).getCommunityId()); List accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto); if (ListUtil.isNull(accountDtos)) { return ownerRoomRelDtos.get(0).getOwnerId(); } AccountPo accountPo = new AccountPo(); accountPo.setoLink(ownerAppUserDto.getLink()); accountPo.setAcctId(accountDtos.get(0).getAcctId()); accountInnerServiceSMOImpl.updateAccount(accountPo); return ownerRoomRelDtos.get(0).getOwnerId(); } }