GetQrcodeOwnerCmd.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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.context.ICmdDataFlowContext;
  5. import com.java110.core.event.cmd.Cmd;
  6. import com.java110.core.event.cmd.CmdEvent;
  7. import com.java110.core.factory.SendSmsFactory;
  8. import com.java110.dto.owner.OwnerDto;
  9. import com.java110.dto.payFeeQrcode.PayFeeQrcodeDto;
  10. import com.java110.dto.room.RoomDto;
  11. import com.java110.intf.community.IRoomV1InnerServiceSMO;
  12. import com.java110.intf.fee.IPayFeeQrcodeV1InnerServiceSMO;
  13. import com.java110.intf.user.IOwnerInnerServiceSMO;
  14. import com.java110.intf.user.IOwnerV1InnerServiceSMO;
  15. import com.java110.utils.cache.CommonCache;
  16. import com.java110.utils.exception.CmdException;
  17. import com.java110.utils.util.Assert;
  18. import com.java110.utils.util.StringUtil;
  19. import com.java110.utils.util.ValidatorUtil;
  20. import com.java110.vo.ResultVo;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import java.text.ParseException;
  23. import java.util.List;
  24. /**
  25. * 二维码 查询业主
  26. */
  27. @Java110Cmd(serviceCode = "owner.getQrcodeOwner")
  28. public class GetQrcodeOwnerCmd extends Cmd {
  29. @Autowired
  30. private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl;
  31. @Autowired
  32. private IRoomV1InnerServiceSMO roomV1InnerServiceSMOImpl;
  33. @Autowired
  34. private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
  35. @Autowired
  36. private IPayFeeQrcodeV1InnerServiceSMO payFeeQrcodeV1InnerServiceSMOImpl;
  37. @Override
  38. public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
  39. Assert.hasKeyAndValue(reqJson, "queryWay", "未包含查询方式");
  40. Assert.hasKeyAndValue(reqJson, "communityId", "未包含小区");
  41. Assert.hasKeyAndValue(reqJson, "pfqId", "未包含二维码信息");
  42. if ("room".equals(reqJson.getString("queryWay"))) {
  43. Assert.hasKeyAndValue(reqJson, "roomNum", "未包含房屋信息");
  44. } else {
  45. Assert.hasKeyAndValue(reqJson, "link", "未包含手机号");
  46. if (!ValidatorUtil.isMobile(reqJson.getString("link"))) {
  47. throw new IllegalArgumentException("手机号格式错误");
  48. }
  49. }
  50. PayFeeQrcodeDto payFeeQrcodeDto = new PayFeeQrcodeDto();
  51. payFeeQrcodeDto.setPfqId(reqJson.getString("pfqId"));
  52. payFeeQrcodeDto.setCommunityId(reqJson.getString("communityId"));
  53. List<PayFeeQrcodeDto> payFeeQrcodeDtos = payFeeQrcodeV1InnerServiceSMOImpl.queryPayFeeQrcodes(payFeeQrcodeDto);
  54. Assert.listOnlyOne(payFeeQrcodeDtos, "二维码不存在");
  55. //todo 不校验验证码
  56. if (!"ON".equals(payFeeQrcodeDtos.get(0).getSmsValidate())) {
  57. return;
  58. }
  59. Assert.hasKeyAndValue(reqJson, "msgCode", "未包含验证码信息");
  60. OwnerDto ownerDto = computeOwner(reqJson);
  61. String smsCode = CommonCache.getValue(ownerDto.getLink() + SendSmsFactory.VALIDATE_CODE);
  62. if (!StringUtil.isEmpty(smsCode) && smsCode.contains("-")) {
  63. smsCode = smsCode.substring(0, smsCode.indexOf("-"));
  64. }
  65. if (!reqJson.getString("msgCode").equals(smsCode)) {
  66. throw new CmdException("验证码错误");
  67. }
  68. }
  69. @Override
  70. public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
  71. OwnerDto ownerDto = computeOwner(reqJson);
  72. JSONObject data = new JSONObject();
  73. data.put("ownerId",ownerDto.getOwnerId());
  74. data.put("roomId",ownerDto.getRoomId());
  75. context.setResponseEntity(ResultVo.createResponseEntity(data));
  76. }
  77. /**
  78. * 计算业主手机号
  79. *
  80. * @param reqJson
  81. * @return
  82. */
  83. private OwnerDto computeOwner(JSONObject reqJson) {
  84. if ("phone".equals(reqJson.getString("queryWay"))) {
  85. OwnerDto ownerDto = new OwnerDto();
  86. ownerDto.setLink(reqJson.getString("link"));
  87. ownerDto.setCommunityId(reqJson.getString("communityId"));
  88. ownerDto.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER);
  89. List<OwnerDto> ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto);
  90. if (ownerDtos == null || ownerDtos.size() < 1) {
  91. throw new CmdException("业主不存在");
  92. }
  93. return ownerDtos.get(0);
  94. }
  95. String roomNumStr = reqJson.getString("roomNum");
  96. String[] roomNums = roomNumStr.split("-", 3);
  97. if (roomNums == null || roomNums.length != 3) {
  98. throw new CmdException("业主不存在");
  99. }
  100. RoomDto roomDto = new RoomDto();
  101. roomDto.setFloorNum(roomNums[0]);
  102. roomDto.setUnitNum(roomNums[1]);
  103. roomDto.setRoomNum(roomNums[2]);
  104. roomDto.setCommunityId(reqJson.getString("communityId"));
  105. List<RoomDto> roomDtos = roomV1InnerServiceSMOImpl.queryRooms(roomDto);
  106. Assert.listOnlyOne(roomDtos, "房屋不存在");
  107. OwnerDto ownerDto = new OwnerDto();
  108. ownerDto.setRoomId(roomDtos.get(0).getRoomId());
  109. ownerDto.setCommunityId(reqJson.getString("communityId"));
  110. ownerDto.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER);
  111. List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
  112. if (ownerDtos == null || ownerDtos.size() < 1) {
  113. throw new CmdException("业主不存在");
  114. }
  115. ownerDtos.get(0).setRoomId(roomDtos.get(0).getRoomId());
  116. return ownerDtos.get(0);
  117. }
  118. }