| | |
| | | package com.java110.acct.bmo.account.impl; |
| | | |
| | | import com.java110.acct.bmo.account.IGetAccountBMO; |
| | | import com.java110.core.factory.CommunitySettingFactory; |
| | | import com.java110.core.factory.GenerateCodeFactory; |
| | | import com.java110.dto.account.AccountDto; |
| | | import com.java110.dto.accountDetail.AccountDetailDto; |
| | | import com.java110.dto.account.AccountDetailDto; |
| | | import com.java110.dto.owner.OwnerDto; |
| | | import com.java110.dto.user.UserDto; |
| | | import com.java110.intf.acct.IAccountDetailInnerServiceSMO; |
| | | import com.java110.intf.acct.IAccountInnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerInnerServiceSMO; |
| | | import com.java110.intf.user.IUserInnerServiceSMO; |
| | | import com.java110.po.account.AccountPo; |
| | | import com.java110.utils.lock.DistributedLock; |
| | | import com.java110.utils.util.StringUtil; |
| | | import com.java110.vo.ResultVo; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | |
| | | @Autowired |
| | | private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl; |
| | | |
| | | //键(积分账户最大使用积分) |
| | | public static final String MAXIMUM_NUMBER = "MAXIMUM_NUMBER"; |
| | | |
| | | //键(积分账户抵扣比例) |
| | | public static final String DEDUCTION_PROPORTION = "DEDUCTION_PROPORTION"; |
| | | |
| | | @Autowired |
| | | private IUserInnerServiceSMO userInnerServiceSMOImpl; |
| | | |
| | | /** |
| | | * @param accountDto |
| | |
| | | |
| | | /** |
| | | * 查询业主账号 |
| | | * |
| | | * @param accountDto |
| | | * @param ownerDto |
| | | * @return |
| | |
| | | public ResponseEntity<String> queryOwnerAccount(AccountDto accountDto, OwnerDto ownerDto) { |
| | | |
| | | List<OwnerDto> ownerDtos = null; |
| | | if(!StringUtil.isEmpty(ownerDto.getLink()) || !StringUtil.isEmpty(ownerDto.getIdCard())) { |
| | | List<AccountDto> accountDtos = null; |
| | | int count = 0; |
| | | if (!StringUtil.isEmpty(ownerDto.getIdCard())) { |
| | | //先查询业主 |
| | | ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto); |
| | | if (ownerDtos != null && ownerDtos.size() > 0) { |
| | | accountDto.setAcctName(""); |
| | | accountDto.setObjId(ownerDtos.get(0).getMemberId()); |
| | | } |
| | | } |
| | | |
| | | if(ownerDtos != null && ownerDtos.size()> 0){ |
| | | accountDto.setAcctName(""); |
| | | accountDto.setObjId(ownerDtos.get(0).getMemberId()); |
| | | } |
| | | |
| | | int count = accountInnerServiceSMOImpl.queryAccountsCount(accountDto); |
| | | |
| | | List<AccountDto> accountDtos = null; |
| | | count = accountInnerServiceSMOImpl.queryAccountsCount(accountDto); |
| | | if (count > 0) { |
| | | accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto); |
| | | } else { |
| | | accountDtos = new ArrayList<>(); |
| | | } |
| | | |
| | | ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) accountDto.getRow()), count, accountDtos); |
| | | |
| | | if (accountDtos == null || accountDtos.size() < 1) { |
| | | //添加 账户 |
| | | accountDtos = addAccountDto(accountDto, ownerDto); |
| | | |
| | | } |
| | | //积分账户最大使用积分 |
| | | String maximumNumber = CommunitySettingFactory.getValue(ownerDto.getCommunityId(), MAXIMUM_NUMBER); |
| | | //积分账户抵扣比例 |
| | | String deductionProportion = CommunitySettingFactory.getValue(ownerDto.getCommunityId(), DEDUCTION_PROPORTION); |
| | | List<AccountDto> accountList = new ArrayList<>(); |
| | | for (AccountDto account : accountDtos) { |
| | | if (!StringUtil.isEmpty(maximumNumber)) { |
| | | account.setMaximumNumber(maximumNumber); |
| | | } |
| | | if (!StringUtil.isEmpty(deductionProportion)) { |
| | | account.setDeductionProportion(deductionProportion); |
| | | } |
| | | accountList.add(account); |
| | | } |
| | | |
| | | ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) accountDto.getRow()), count, accountList); |
| | | |
| | | ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK); |
| | | |
| | | return responseEntity; |
| | | } |
| | | |
| | | |
| | | private List<AccountDto> addAccountDto(AccountDto accountDto, OwnerDto ownerDto) { |
| | | // todo 查询账户名称 这里如果存在业主则业主名称 不是业主 则 填写用户名称,如果用户都没有 则返回空 |
| | | String acctName = getAccountName(ownerDto); |
| | | |
| | | if (StringUtil.isEmpty(acctName)) { |
| | | return new ArrayList<>(); |
| | | } |
| | | //开始锁代码 |
| | | String requestId = DistributedLock.getLockUUID(); |
| | | String key = this.getClass().getSimpleName() + "AddCountDto" + ownerDto.getOwnerId(); |
| | | try { |
| | | DistributedLock.waitGetDistributedLock(key, requestId); |
| | | |
| | | AccountPo accountPo = new AccountPo(); |
| | | accountPo.setAmount("0"); |
| | | accountPo.setAcctId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_acctId)); |
| | | accountPo.setObjId(ownerDto.getOwnerId()); |
| | | accountPo.setObjType(AccountDto.OBJ_TYPE_PERSON); |
| | | accountPo.setAcctType(AccountDto.ACCT_TYPE_CASH); |
| | | accountPo.setAcctName(acctName); |
| | | accountPo.setPartId(ownerDto.getCommunityId()); |
| | | accountPo.setLink(ownerDto.getLink()); |
| | | accountInnerServiceSMOImpl.saveAccount(accountPo); |
| | | List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto); |
| | | return accountDtos; |
| | | } finally { |
| | | DistributedLock.releaseDistributedLock(requestId, key); |
| | | } |
| | | } |
| | | |
| | | private String getAccountName(OwnerDto ownerDto) { |
| | | |
| | | // todo owner |
| | | if (!StringUtil.isEmpty(ownerDto.getOwnerId())) { |
| | | OwnerDto tmpOwnerDto = new OwnerDto(); |
| | | tmpOwnerDto.setMemberId(ownerDto.getOwnerId()); |
| | | tmpOwnerDto.setCommunityId(ownerDto.getCommunityId()); |
| | | List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(tmpOwnerDto); |
| | | if (ownerDtos == null || ownerDtos.size() < 1) { |
| | | return ""; |
| | | } |
| | | ownerDto.setCommunityId(ownerDtos.get(0).getCommunityId()); |
| | | ownerDto.setLink(ownerDtos.get(0).getLink()); |
| | | return ownerDtos.get(0).getName(); |
| | | } |
| | | |
| | | // todo 必须包含 手机号和小区 |
| | | if (StringUtil.isEmpty(ownerDto.getLink()) || StringUtil.isEmpty(ownerDto.getCommunityId())) { |
| | | return ""; |
| | | } |
| | | |
| | | // todo 业主用 手机号查询 |
| | | OwnerDto tmpOwnerDto = new OwnerDto(); |
| | | tmpOwnerDto.setLink(ownerDto.getLink()); |
| | | tmpOwnerDto.setCommunityId(ownerDto.getCommunityId()); |
| | | List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(tmpOwnerDto); |
| | | if (ownerDtos != null && ownerDtos.size() > 0) { |
| | | ownerDto.setOwnerId(ownerDtos.get(0).getMemberId()); |
| | | return ownerDtos.get(0).getName(); |
| | | } |
| | | |
| | | //todo 非业主是游客 |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setTel(ownerDto.getLink()); |
| | | List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto); |
| | | if (userDtos != null && userDtos.size() > 0) { |
| | | ownerDto.setOwnerId("-1"); |
| | | return userDtos.get(0).getName(); |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | } |