From 45102fc13900aad6d117b00a4feeeafe9c3f5fee Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期二, 27 五月 2025 21:04:09 +0800
Subject: [PATCH] 优化查询业主成员

---
 service-user/src/main/java/com/java110/user/cmd/owner/SaveRoomOwnerCmd.java |  178 ++++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 102 insertions(+), 76 deletions(-)

diff --git a/service-user/src/main/java/com/java110/user/cmd/owner/SaveRoomOwnerCmd.java b/service-user/src/main/java/com/java110/user/cmd/owner/SaveRoomOwnerCmd.java
index 86358c9..ae75177 100644
--- a/service-user/src/main/java/com/java110/user/cmd/owner/SaveRoomOwnerCmd.java
+++ b/service-user/src/main/java/com/java110/user/cmd/owner/SaveRoomOwnerCmd.java
@@ -4,6 +4,7 @@
 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;
@@ -14,22 +15,28 @@
 import com.java110.dto.community.CommunityDto;
 import com.java110.dto.msg.SmsDto;
 import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.owner.OwnerRoomRelDto;
+import com.java110.dto.room.RoomDto;
 import com.java110.intf.common.IFileInnerServiceSMO;
 import com.java110.intf.common.IFileRelInnerServiceSMO;
 import com.java110.intf.common.ISmsInnerServiceSMO;
 import com.java110.intf.community.ICommunityInnerServiceSMO;
 import com.java110.intf.community.ICommunityV1InnerServiceSMO;
+import com.java110.intf.community.IRoomV1InnerServiceSMO;
 import com.java110.intf.user.*;
 import com.java110.po.owner.OwnerAppUserPo;
 import com.java110.po.owner.OwnerAttrPo;
 import com.java110.po.owner.OwnerPo;
+import com.java110.po.owner.OwnerRoomRelPo;
 import com.java110.po.user.UserPo;
+import com.java110.user.bmo.owner.IGeneratorOwnerUserBMO;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.MappingConstant;
 import com.java110.utils.constant.UserLevelConstant;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -65,21 +72,23 @@
     @Autowired
     private IPhotoSMO photoSMOImpl;
 
-    @Autowired
-    private IOwnerAppUserV1InnerServiceSMO ownerAppUserV1InnerServiceSMOImpl;
 
     @Autowired
-    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
+    private IRoomV1InnerServiceSMO roomV1InnerServiceSMOImpl;
+
     @Autowired
-    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+    private IOwnerRoomRelV1InnerServiceSMO ownerRoomRelV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IGeneratorOwnerUserBMO generatorOwnerUserBMOImpl;
 
 
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
         Assert.jsonObjectHaveKey(reqJson, "name", "璇锋眰鎶ユ枃涓湭鍖呭惈name");
-        Assert.jsonObjectHaveKey(reqJson, "userId", "璇锋眰鎶ユ枃涓湭鍖呭惈userId");
         Assert.jsonObjectHaveKey(reqJson, "link", "璇锋眰鎶ユ枃涓湭鍖呭惈link");
         Assert.jsonObjectHaveKey(reqJson, "roomName", "璇锋眰鎶ユ枃涓湭鍖呭惈鎴垮眿");
+        Assert.jsonObjectHaveKey(reqJson, "ownerTypeCd", "璇锋眰鎶ユ枃涓湭鍖呭惈绫诲瀷");
 
         Assert.jsonObjectHaveKey(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈communityId");
 
@@ -97,96 +106,113 @@
         //todo 灞炴�ф牎楠�
         Assert.judgeAttrValue(reqJson);
 
+        //todo 鏍¢獙鎴垮眿
+        String roomName = reqJson.getString("roomName");
+        String[] roomNames = roomName.split("-", 3);
+
+        if (roomNames == null || roomNames.length != 3) {
+            throw new CmdException("鎴垮眿鏍煎紡閿欒锛屾ゼ鏍�-鍗曞厓-鎴垮眿");
+        }
+
+        RoomDto roomDto = new RoomDto();
+        roomDto.setFloorNum(roomNames[0]);
+        roomDto.setUnitNum(roomNames[1]);
+        roomDto.setRoomNum(roomNames[2]);
+        roomDto.setCommunityId(reqJson.getString("communityId"));
+        List<RoomDto> roomDtos = roomV1InnerServiceSMOImpl.queryRooms(roomDto);
+
+        if (roomDtos == null || roomDtos.size() < 1) {
+            throw new CmdException("鎴垮眿涓嶅瓨鍦�");
+        }
+
+        reqJson.put("roomId", roomDtos.get(0).getRoomId());
+
+        OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
+        ownerRoomRelDto.setRoomId(roomDtos.get(0).getRoomId());
+
+        List<OwnerRoomRelDto> roomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
+
+
+        String ownerTypeCd = reqJson.getString("ownerTypeCd");
+        //todo 涓氫富 濡傛灉瀛樺湪 鍒欏け璐�
+        if (OwnerDto.OWNER_TYPE_CD_OWNER.equals(ownerTypeCd) && roomRelDtos != null && roomRelDtos.size() > 0) {
+            throw new CmdException("宸茬粡瀛樺湪涓氫富");
+        }
+
+        //todo  涓氫富鐩存帴杩斿洖
+        if (OwnerDto.OWNER_TYPE_CD_OWNER.equals(ownerTypeCd)) {
+            return;
+        }
+
+        //todo 涓嶆槸涓氫富锛屼笟涓� 涓嶅瓨鍦� 鍒欏け璐�
+        if (!OwnerDto.OWNER_TYPE_CD_OWNER.equals(ownerTypeCd) && (roomRelDtos == null || roomRelDtos.size() < 1)) {
+            throw new CmdException("涓氫富涓嶅瓨鍦� 鍏堟坊鍔犱笟涓�");
+        }
+
+        reqJson.put("ownerId",roomRelDtos.get(0).getOwnerId());
+
     }
 
     @Override
     @Java110Transactional
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
 
-        //todo 鐢熸垚memberId
-        generateMemberId(reqJson);
-
-        JSONObject businessOwner = new JSONObject();
-        businessOwner.putAll(reqJson);
-        businessOwner.put("state", "2000");
-        OwnerPo ownerPo = BeanConvertUtil.covertBean(businessOwner, OwnerPo.class);
-        if (reqJson.containsKey("age") && StringUtil.isEmpty(reqJson.getString("age"))) {
-            ownerPo.setAge(null);
+        String memberId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId);
+        String ownerId = memberId;
+        String ownerTypeCd = reqJson.getString("ownerTypeCd");
+        if (!OwnerDto.OWNER_TYPE_CD_OWNER.equals(ownerTypeCd)) {
+            ownerId = reqJson.getString("ownerId");
         }
+        // todo 淇濆瓨涓氫富
+        OwnerPo ownerPo = BeanConvertUtil.covertBean(reqJson,OwnerPo.class);
+        ownerPo.setMemberId(memberId);
+        ownerPo.setOwnerId(ownerId);
+        ownerPo.setState(OwnerDto.STATE_FINISH);
+        ownerPo.setUserId(CmdContextUtils.getUserId(context));
+        ownerPo.setAge(null);
+        ownerPo.setOwnerFlag(OwnerDto.OWNER_FLAG_TRUE);
+
+        ownerPo.setFaceUrl(reqJson.getString("ownerPhotoUrl"));
+
         int flag = ownerV1InnerServiceSMOImpl.saveOwner(ownerPo);
         if (flag < 1) {
             throw new CmdException("淇濆瓨涓氫富澶辫触");
         }
 
-        //淇濆瓨鐓х墖
-        photoSMOImpl.savePhoto(reqJson.getString("ownerPhoto"),
-                reqJson.getString("memberId"),
-                reqJson.getString("communityId"),
-                "10000");
+        //todo 淇濆瓨灞炴��
+        dealOwnerAttr(reqJson, memberId);
 
-        dealOwnerAttr(reqJson, context);
+        //todo 淇濆瓨鍜屾埧灞嬪叧绯�
+        saveOwnerRoomRel(ownerPo,reqJson.getString("roomId"));
 
-        String autoUser = MappingCache.getValue(MappingConstant.DOMAIN_SYSTEM_SWITCH, "AUTO_GENERATOR_OWNER_USER");
+        //todo 鐢熸垚鐧诲綍璐﹀彿
+        generatorOwnerUserBMOImpl.generator(ownerPo);
 
-        if (!"ON".equals(autoUser)) {
+    }
+
+    /**
+     * 淇濆瓨 涓氫富鎴垮眿鍏崇郴
+     * @param ownerPo
+     * @param roomId
+     */
+    private void saveOwnerRoomRel(OwnerPo ownerPo, String roomId) {
+        //todo 涓嶆槸涓氫富灏辫烦杩�
+        if(!OwnerDto.OWNER_TYPE_CD_OWNER.equals(ownerPo.getOwnerTypeCd())){
             return;
         }
 
-        CommunityDto communityDto = new CommunityDto();
-        communityDto.setCommunityId(ownerPo.getCommunityId());
-        List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto);
-        Assert.listNotNull(communityDtos, "鏈寘鍚皬鍖轰俊鎭�");
-        CommunityDto tmpCommunityDto = communityDtos.get(0);
-
-        UserPo userPo = new UserPo();
-        userPo.setUserId(GenerateCodeFactory.getUserId());
-        userPo.setName(ownerPo.getName());
-        userPo.setTel(ownerPo.getLink());
-        userPo.setPassword(AuthenticationFactory.passwdMd5(ownerPo.getLink()));
-        userPo.setLevelCd(UserLevelConstant.USER_LEVEL_ORDINARY);
-        userPo.setAge(ownerPo.getAge());
-        userPo.setAddress(ownerPo.getAddress());
-        userPo.setSex(ownerPo.getSex());
-        flag = userV1InnerServiceSMOImpl.saveUser(userPo);
-        if (flag < 1) {
-            throw new CmdException("娉ㄥ唽澶辫触");
-        }
-
-        OwnerAppUserPo ownerAppUserPo = new OwnerAppUserPo();
-        //鐘舵�佺被鍨嬶紝10000 瀹℃牳涓紝12000 瀹℃牳鎴愬姛锛�13000 瀹℃牳澶辫触
-        ownerAppUserPo.setState("12000");
-        ownerAppUserPo.setAppTypeCd("10010");
-        ownerAppUserPo.setAppUserId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_appUserId));
-        ownerAppUserPo.setMemberId(ownerPo.getMemberId());
-        ownerAppUserPo.setCommunityName(tmpCommunityDto.getName());
-        ownerAppUserPo.setCommunityId(ownerPo.getCommunityId());
-        ownerAppUserPo.setAppUserName(ownerPo.getName());
-        ownerAppUserPo.setIdCard(ownerPo.getIdCard());
-        ownerAppUserPo.setAppType("WECHAT");
-        ownerAppUserPo.setLink(ownerPo.getLink());
-        ownerAppUserPo.setUserId(userPo.getUserId());
-        ownerAppUserPo.setOpenId("-1");
-
-        flag = ownerAppUserV1InnerServiceSMOImpl.saveOwnerAppUser(ownerAppUserPo);
-        if (flag < 1) {
-            throw new CmdException("娣诲姞鐢ㄦ埛涓氫富鍏崇郴澶辫触");
-        }
-
+        OwnerRoomRelPo ownerRoomRelPo = new OwnerRoomRelPo();
+        ownerRoomRelPo.setRelId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_relId));
+        ownerRoomRelPo.setUserId("-1");
+        ownerRoomRelPo.setOwnerId(ownerPo.getOwnerId());
+        ownerRoomRelPo.setRoomId(roomId);
+        ownerRoomRelPo.setState("2001");
+        ownerRoomRelPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        ownerRoomRelPo.setEndTime(DateUtil.getLastTime());
+        ownerRoomRelV1InnerServiceSMOImpl.saveOwnerRoomRel(ownerRoomRelPo);
     }
 
-
-    /**
-     * 鐢熸垚灏忓尯妤糏D
-     *
-     * @param paramObj 璇锋眰鍏ュ弬鏁版嵁
-     */
-    private void generateMemberId(JSONObject paramObj) {
-        String memberId = GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId);
-        paramObj.put("memberId", memberId);
-
-    }
-
-    private void dealOwnerAttr(JSONObject paramObj, ICmdDataFlowContext cmdDataFlowContext) {
+    private void dealOwnerAttr(JSONObject paramObj, String memberId) {
 
         if (!paramObj.containsKey("attrs")) {
             return;
@@ -202,7 +228,7 @@
         for (int attrIndex = 0; attrIndex < attrs.size(); attrIndex++) {
             attr = attrs.getJSONObject(attrIndex);
             attr.put("communityId", paramObj.getString("communityId"));
-            attr.put("memberId", paramObj.getString("memberId"));
+            attr.put("memberId", memberId);
             attr.put("attrId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
             OwnerAttrPo ownerAttrPo = BeanConvertUtil.covertBean(attr, OwnerAttrPo.class);
             flag = ownerAttrInnerServiceSMOImpl.saveOwnerAttr(ownerAttrPo);

--
Gitblit v1.8.0