|
@@ -0,0 +1,248 @@
|
|
|
|
|
+package com.java110.core.smo.impl;
|
|
|
|
|
+
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
+import com.java110.core.smo.IOwnerGetDataCheck;
|
|
|
|
|
+import com.java110.dto.account.AccountDetailDto;
|
|
|
|
|
+import com.java110.dto.account.AccountDto;
|
|
|
|
|
+import com.java110.dto.app.AppDto;
|
|
|
|
|
+import com.java110.dto.fee.FeeAttrDto;
|
|
|
|
|
+import com.java110.dto.fee.FeeDto;
|
|
|
|
|
+import com.java110.dto.owner.OwnerDto;
|
|
|
|
|
+import com.java110.dto.user.UserDto;
|
|
|
|
|
+import com.java110.intf.acct.IAccountInnerServiceSMO;
|
|
|
|
|
+import com.java110.intf.fee.IFeeInnerServiceSMO;
|
|
|
|
|
+import com.java110.intf.fee.IPayFeeV1InnerServiceSMO;
|
|
|
|
|
+import com.java110.intf.user.IOwnerV1InnerServiceSMO;
|
|
|
|
|
+import com.java110.intf.user.IUserV1InnerServiceSMO;
|
|
|
|
|
+import com.java110.utils.util.StringUtil;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * 业主 查询安全性校验
|
|
|
|
|
+ */
|
|
|
|
|
+@Service
|
|
|
|
|
+public class OwnerGetDataCheckImpl implements IOwnerGetDataCheck {
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired(required = false)
|
|
|
|
|
+ private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired(required = false)
|
|
|
|
|
+ private IAccountInnerServiceSMO accountInnerServiceSMOImpl;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired(required = false)
|
|
|
|
|
+ private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired(required = false)
|
|
|
|
|
+ private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ private boolean isOwner(String appId) {
|
|
|
|
|
+ if (!AppDto.WECHAT_OWNER_APP_ID.equals(appId) && !AppDto.WECHAT_MINA_OWNER_APP_ID.equals(appId)) {
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void checkOwnerAccount(String appId, String loginUserId, JSONObject reqJson) {
|
|
|
|
|
+
|
|
|
|
|
+ if (!isOwner(appId)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ UserDto userDto = new UserDto();
|
|
|
|
|
+ userDto.setUserId(loginUserId);
|
|
|
|
|
+
|
|
|
|
|
+ List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
|
|
|
|
|
+
|
|
|
|
|
+ //todo 没有登录,说明不需要校验
|
|
|
|
|
+ if (userDtos == null || userDtos.isEmpty()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //todo 如果 包含acctId 校验
|
|
|
|
|
+ ifAcctIdCheck(reqJson, userDtos.get(0));
|
|
|
|
|
+
|
|
|
|
|
+ // todo 如果包含link 校验
|
|
|
|
|
+ ifAccountLinkCheck(reqJson, userDtos.get(0));
|
|
|
|
|
+
|
|
|
|
|
+ String acctId = reqJson.getString("acctId");
|
|
|
|
|
+ String link = reqJson.getString("link");
|
|
|
|
|
+ if (StringUtil.isEmpty(acctId) && StringUtil.isEmpty(link)) {
|
|
|
|
|
+ throw new IllegalArgumentException("业主查询条件错误");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void checkOwnerFee(String appId, String loginUserId, JSONObject reqJson) {
|
|
|
|
|
+ if (!isOwner(appId)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ UserDto userDto = new UserDto();
|
|
|
|
|
+ userDto.setUserId(loginUserId);
|
|
|
|
|
+
|
|
|
|
|
+ List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
|
|
|
|
|
+
|
|
|
|
|
+ //todo 没有登录,说明不需要校验
|
|
|
|
|
+ if (userDtos == null || userDtos.isEmpty()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //todo 查询业主信息
|
|
|
|
|
+ OwnerDto ownerDto = new OwnerDto();
|
|
|
|
|
+ ownerDto.setLink(userDtos.get(0).getTel());
|
|
|
|
|
+ ownerDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
|
|
+ ownerDto.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_OWNER);
|
|
|
|
|
+ List<OwnerDto> ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto);
|
|
|
|
|
+ //todo 游客不校验
|
|
|
|
|
+ if (ownerDtos == null || ownerDtos.isEmpty()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //todo 根据ownerId 查询
|
|
|
|
|
+ ifFeeOwnerId(reqJson, ownerDtos.get(0));
|
|
|
|
|
+
|
|
|
|
|
+ //todo 根据payerObjId 查询
|
|
|
|
|
+ ifFeePayerObjId(reqJson, ownerDtos.get(0));
|
|
|
|
|
+
|
|
|
|
|
+ //todo 根据feeId 查询
|
|
|
|
|
+ ifFeeFeeId(reqJson, ownerDtos.get(0));
|
|
|
|
|
+
|
|
|
|
|
+ String ownerId = reqJson.getString("ownerId");
|
|
|
|
|
+ String payerObjId = reqJson.getString("payerObjId");
|
|
|
|
|
+ String feeId = reqJson.getString("feeId");
|
|
|
|
|
+
|
|
|
|
|
+ if (StringUtil.isEmpty(ownerId) && StringUtil.isEmpty(payerObjId) && StringUtil.isEmpty(feeId)) {
|
|
|
|
|
+ throw new IllegalArgumentException("业主查询费用条件错误");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void ifFeeFeeId(JSONObject reqJson, OwnerDto ownerDto) {
|
|
|
|
|
+ if (!reqJson.containsKey("feeId")) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String feeId = reqJson.getString("feeId");
|
|
|
|
|
+ if (StringUtil.isEmpty(feeId)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ FeeDto feeDto = new FeeDto();
|
|
|
|
|
+ feeDto.setFeeId(reqJson.getString("feeId"));
|
|
|
|
|
+ feeDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
|
|
+ List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
|
|
|
|
|
+
|
|
|
|
|
+ if (feeDtos == null || feeDtos.isEmpty()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String ownerId = FeeAttrDto.getFeeAttrValue(feeDtos.get(0), FeeAttrDto.SPEC_CD_OWNER_ID);
|
|
|
|
|
+
|
|
|
|
|
+ if (StringUtil.isEmpty(ownerId)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!ownerDto.getOwnerId().equals(ownerId)) {
|
|
|
|
|
+ throw new IllegalArgumentException("业主查询不属于自己的数据");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void ifFeePayerObjId(JSONObject reqJson, OwnerDto ownerDto) {
|
|
|
|
|
+
|
|
|
|
|
+ if (!reqJson.containsKey("payerObjId")) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String payerObjId = reqJson.getString("payerObjId");
|
|
|
|
|
+ if (StringUtil.isEmpty(payerObjId)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ FeeDto feeDto = new FeeDto();
|
|
|
|
|
+ feeDto.setPayerObjId(reqJson.getString("payerObjId"));
|
|
|
|
|
+ feeDto.setCommunityId(reqJson.getString("communityId"));
|
|
|
|
|
+ List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
|
|
|
|
|
+
|
|
|
|
|
+ if (feeDtos == null || feeDtos.isEmpty()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String ownerId = FeeAttrDto.getFeeAttrValue(feeDtos.get(0), FeeAttrDto.SPEC_CD_OWNER_ID);
|
|
|
|
|
+
|
|
|
|
|
+ if (StringUtil.isEmpty(ownerId)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!ownerDto.getOwnerId().equals(ownerId)) {
|
|
|
|
|
+ throw new IllegalArgumentException("业主查询不属于自己的数据");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void ifFeeOwnerId(JSONObject reqJson, OwnerDto ownerDto) {
|
|
|
|
|
+
|
|
|
|
|
+ if (!reqJson.containsKey("ownerId")) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String ownerId = reqJson.getString("ownerId");
|
|
|
|
|
+ if (StringUtil.isEmpty(ownerId)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!ownerId.equals(ownerDto.getOwnerId())) {
|
|
|
|
|
+ throw new IllegalArgumentException("业主查询不属于自己的数据");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void ifAccountLinkCheck(JSONObject reqJson, UserDto userDto) {
|
|
|
|
|
+
|
|
|
|
|
+ if (!reqJson.containsKey("link")) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String link = reqJson.getString("link");
|
|
|
|
|
+ if (StringUtil.isEmpty(link)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!userDto.getTel().equals(link)) {
|
|
|
|
|
+ throw new IllegalArgumentException("业主查询不属于自己的数据");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void ifAcctIdCheck(JSONObject reqJson, UserDto userDto) {
|
|
|
|
|
+
|
|
|
|
|
+ if (!reqJson.containsKey("accId")) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String acctId = reqJson.getString("acctId");
|
|
|
|
|
+ if (StringUtil.isEmpty(acctId)) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ AccountDto accountDto = new AccountDto();
|
|
|
|
|
+ accountDto.setAcctId(acctId);
|
|
|
|
|
+ List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto);
|
|
|
|
|
+
|
|
|
|
|
+ if (accountDtos == null || accountDtos.isEmpty()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!userDto.getTel().equals(accountDtos.get(0).getLink())) {
|
|
|
|
|
+ throw new IllegalArgumentException("业主查询不属于自己的数据");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|