Ver código fonte

add create account function

java110 3 anos atrás
pai
commit
01477c83d6

+ 40 - 0
service-user/src/main/java/com/java110/user/cmd/owner/SaveOwnerCmd.java

@@ -12,16 +12,19 @@ import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.factory.SendSmsFactory;
 import com.java110.core.factory.SendSmsFactory;
 import com.java110.core.smo.IPhotoSMO;
 import com.java110.core.smo.IPhotoSMO;
 import com.java110.doc.annotation.*;
 import com.java110.doc.annotation.*;
+import com.java110.dto.account.AccountDto;
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.file.FileDto;
 import com.java110.dto.file.FileDto;
 import com.java110.dto.msg.SmsDto;
 import com.java110.dto.msg.SmsDto;
 import com.java110.dto.owner.OwnerDto;
 import com.java110.dto.owner.OwnerDto;
+import com.java110.intf.acct.IAccountInnerServiceSMO;
 import com.java110.intf.common.IFileInnerServiceSMO;
 import com.java110.intf.common.IFileInnerServiceSMO;
 import com.java110.intf.common.IFileRelInnerServiceSMO;
 import com.java110.intf.common.IFileRelInnerServiceSMO;
 import com.java110.intf.common.ISmsInnerServiceSMO;
 import com.java110.intf.common.ISmsInnerServiceSMO;
 import com.java110.intf.community.ICommunityInnerServiceSMO;
 import com.java110.intf.community.ICommunityInnerServiceSMO;
 import com.java110.intf.community.ICommunityV1InnerServiceSMO;
 import com.java110.intf.community.ICommunityV1InnerServiceSMO;
 import com.java110.intf.user.*;
 import com.java110.intf.user.*;
+import com.java110.po.account.AccountPo;
 import com.java110.po.file.FileRelPo;
 import com.java110.po.file.FileRelPo;
 import com.java110.po.owner.OwnerAppUserPo;
 import com.java110.po.owner.OwnerAppUserPo;
 import com.java110.po.owner.OwnerAttrPo;
 import com.java110.po.owner.OwnerAttrPo;
@@ -31,12 +34,14 @@ import com.java110.po.user.UserPo;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.UserLevelConstant;
 import com.java110.utils.constant.UserLevelConstant;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.exception.CmdException;
+import com.java110.utils.lock.DistributedLock;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.StringUtil;
 import com.java110.utils.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -125,6 +130,9 @@ public class SaveOwnerCmd extends Cmd {
     @Autowired
     @Autowired
     private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
     private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
 
 
+    @Autowired
+    private IAccountInnerServiceSMO accountInnerServiceSMOImpl;
+
     @Override
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
         Assert.jsonObjectHaveKey(reqJson, "name", "请求报文中未包含name");
         Assert.jsonObjectHaveKey(reqJson, "name", "请求报文中未包含name");
@@ -209,6 +217,10 @@ public class SaveOwnerCmd extends Cmd {
                 "10000");
                 "10000");
         dealOwnerAttr(reqJson, cmdDataFlowContext);
         dealOwnerAttr(reqJson, cmdDataFlowContext);
 
 
+        //业主 开通 现金账户,不然配合商城 会存在bug
+        addAccountDto(ownerPo.getMemberId(),ownerPo.getCommunityId());
+
+
         String autoUser = MappingCache.getValue("OWNER", "AUTO_GENERATOR_OWNER_USER");
         String autoUser = MappingCache.getValue("OWNER", "AUTO_GENERATOR_OWNER_USER");
 
 
         if (!"ON".equals(autoUser)) {
         if (!"ON".equals(autoUser)) {
@@ -256,6 +268,34 @@ public class SaveOwnerCmd extends Cmd {
         }
         }
     }
     }
 
 
+    private void addAccountDto(String ownerId,String communityId) {
+        if (StringUtil.isEmpty(ownerId)) {
+            return ;
+        }
+        //开始锁代码
+        String requestId = DistributedLock.getLockUUID();
+        String key = this.getClass().getSimpleName() + "AddCountDto" +ownerId;
+        try {
+            DistributedLock.waitGetDistributedLock(key, requestId);
+            AccountPo accountPo = new AccountPo();
+            accountPo.setAmount("0");
+            accountPo.setAcctId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_acctId));
+            accountPo.setObjId(ownerId);
+            accountPo.setObjType(AccountDto.OBJ_TYPE_PERSON);
+            accountPo.setAcctType(AccountDto.ACCT_TYPE_CASH);
+            OwnerDto tmpOwnerDto = new OwnerDto();
+            tmpOwnerDto.setMemberId(ownerId);
+            tmpOwnerDto.setCommunityId(communityId);
+            List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(tmpOwnerDto);
+            Assert.listOnlyOne(ownerDtos, "业主不存在");
+            accountPo.setAcctName(ownerDtos.get(0).getName());
+            accountPo.setPartId(communityId);
+            accountInnerServiceSMOImpl.saveAccount(accountPo);
+        } finally {
+            DistributedLock.releaseDistributedLock(requestId, key);
+        }
+    }
+
     /**
     /**
      * 生成小区楼ID
      * 生成小区楼ID
      *
      *