Browse Source

优化 直接验证码登录时 创建 业主资料

Your Name 3 years ago
parent
commit
eae32ec1ef

+ 1 - 1
java110-bean/src/main/java/com/java110/dto/app/AppDto.java

@@ -21,7 +21,7 @@ public class AppDto extends PageDto implements Serializable {
     public static final String WECHAT_MINA_OWNER_APP_ID = "992019111758490006";
     public static final String WECHAT_MALL_APP_ID = "992021030901240071";
     public static final String OWNER_WECHAT_PAY = "992020011134400001"; // 微信支付
-    public static final String OWNER_APP_PAY = "992020061440050003"; // app微信支付
+    public static final String OWNER_APP_APP_ID = "992020061440050003"; // app微信支付
     public static final String JOB_APP_ID = "992021061746360004"; // 定时任务应用
 
 

+ 12 - 1
service-acct/src/main/java/com/java110/acct/cmd/payment/QrCodePaymentCmd.java

@@ -75,7 +75,18 @@ public class QrCodePaymentCmd extends Cmd {
 
         Assert.listOnlyOne(communityDtos, "小区不存在");
 
-        String feeName = communityDtos.get(0).getName() + "-" + reqJson.getString("payerObjName") + "-" + reqJson.getString("feeName");
+        String feeName = communityDtos.get(0).getName();
+        if (!StringUtil.isEmpty(reqJson.getString("payerObjName"))) {
+            feeName += ("-" + reqJson.getString("payerObjName"));
+        }
+
+        if (!StringUtil.isEmpty(reqJson.getString("feeName"))) {
+            feeName += ("-" + reqJson.getString("feeName"));
+        }
+
+        if (feeName.length() > 120) {
+            feeName = feeName.substring(0, 120);
+        }
 
         ResultVo resultVo = null;
         try {

+ 6 - 7
service-fee/src/main/java/com/java110/fee/cmd/fee/PayBatchFeeCmd.java

@@ -166,8 +166,7 @@ public class PayBatchFeeCmd extends Cmd {
 
         JSONArray fees = reqJson.getJSONArray("fees");
         JSONObject paramInObj = null;
-        JSONArray datas = new JSONArray();
-        JSONObject outDetail = null;
+        JSONArray details = new JSONArray();
         for (int feeIndex = 0; feeIndex < fees.size(); feeIndex++) {
             try {
                 paramInObj = fees.getJSONObject(feeIndex);
@@ -176,13 +175,13 @@ public class PayBatchFeeCmd extends Cmd {
                 logger.error("处理异常", e);
                 throw new CmdException(e.getMessage());
             }
-            //扫码支付时 不支持 string 方式的JSONArray 只有 JSONObject 的JSONArray
-            outDetail = new JSONObject();
-            outDetail.put("detailId",paramInObj.getString("detailId"));
-            datas.add(outDetail);
+            details.add(paramInObj.getString("detailId"));
         }
 
-        cmdDataFlowContext.setResponseEntity(ResultVo.createResponseEntity(datas));
+        JSONObject data = new JSONObject();
+        data.put("details",details);
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.createResponseEntity(data));
     }
 
     private void doDeal(JSONObject paramObj, String communityId, ICmdDataFlowContext cmdDataFlowContext, UserDto userDto) throws Exception {

+ 113 - 3
service-user/src/main/java/com/java110/user/cmd/user/UserLoginCmd.java

@@ -6,20 +6,30 @@ import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.AuthenticationFactory;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.core.log.LoggerFactory;
+import com.java110.dto.app.AppDto;
+import com.java110.dto.community.CommunityDto;
 import com.java110.dto.msg.SmsDto;
+import com.java110.dto.owner.OwnerAppUserDto;
+import com.java110.dto.owner.OwnerDto;
 import com.java110.dto.user.UserAttrDto;
 import com.java110.dto.user.UserDto;
 import com.java110.intf.common.ISmsInnerServiceSMO;
-import com.java110.intf.user.IUserAttrV1InnerServiceSMO;
-import com.java110.intf.user.IUserInnerServiceSMO;
+import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.intf.community.ICommunityV1InnerServiceSMO;
+import com.java110.intf.user.*;
+import com.java110.po.owner.OwnerAppUserPo;
+import com.java110.po.user.UserPo;
 import com.java110.po.userAttr.UserAttrPo;
 import com.java110.utils.constant.CommonConstant;
 import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.constant.UserLevelConstant;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.exception.SMOException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
 import com.java110.utils.util.ValidatorUtil;
 import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
@@ -30,6 +40,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
+/**
+ * 用户登录
+ */
 @Java110Cmd(serviceCode = "user.userLogin")
 public class UserLoginCmd extends Cmd {
 
@@ -45,6 +58,18 @@ public class UserLoginCmd extends Cmd {
     @Autowired
     private ISmsInnerServiceSMO smsInnerServiceSMOImpl;
 
+    @Autowired
+    private IOwnerAppUserV1InnerServiceSMO ownerAppUserV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl;
+
+    @Autowired
+    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
+
+    @Autowired
+    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
         if (!reqJson.containsKey("userName")) {
@@ -90,13 +115,17 @@ public class UserLoginCmd extends Cmd {
             errorInfo = "临时票据错误";
         }
 
-
         List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
 
+        //todo 验证码登录,判断是否是否业主,并且是否绑定关系 如果没有 自动绑定关系
+        if (userDtos == null || userDtos.size() < 1) {
+            userDtos = ifOwnerLoginByPhone(reqJson, context);
+        }
         if (userDtos == null || userDtos.size() < 1) {
             throw new SMOException(errorInfo);
         }
 
+
         //表名登录成功
         UserDto tmpUserDto = userDtos.get(0);
 
@@ -137,6 +166,87 @@ public class UserLoginCmd extends Cmd {
         }
     }
 
+    /**
+     * 验证码登录,判断是否是否业主,并且是否绑定关系 如果没有 自动绑定关系
+     *
+     * @param reqJson
+     * @param context
+     */
+    private List<UserDto> ifOwnerLoginByPhone(JSONObject reqJson, ICmdDataFlowContext context) {
+        if (!reqJson.containsKey("loginByPhone") || !reqJson.getBoolean("loginByPhone")) {
+            return null;
+        }
+        String appId = context.getReqHeaders().get("app-id");
+
+        //todo 业主手机端
+        if (!AppDto.WECHAT_OWNER_APP_ID.equals(appId)
+                && !AppDto.WECHAT_MINA_OWNER_APP_ID.equals(appId)
+                && !AppDto.OWNER_APP_APP_ID.equals(appId)) {
+            return null;
+        }
+
+        if (StringUtil.isEmpty(reqJson.getString("userName"))) {
+            return null;
+        }
+
+        // todo 查询业主或成员
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setLink(reqJson.getString("userName"));
+        ownerDto.setPage(1);
+        ownerDto.setRow(1);
+        List<OwnerDto> ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto);
+
+        // 说明业主不存在 直接返回跑异常
+        if (ownerDtos == null || ownerDtos.size() < 1) {
+            return null;
+        }
+
+        CommunityDto communityDto = new CommunityDto();
+        communityDto.setCommunityId(ownerDtos.get(0).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(ownerDtos.get(0).getName());
+        userPo.setTel(ownerDtos.get(0).getLink());
+        userPo.setPassword(AuthenticationFactory.passwdMd5(reqJson.getString("password")));
+        userPo.setLevelCd(UserLevelConstant.USER_LEVEL_ORDINARY);
+        userPo.setAge(ownerDtos.get(0).getAge());
+        userPo.setAddress(ownerDtos.get(0).getAddress());
+        userPo.setSex(ownerDtos.get(0).getSex());
+        int 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(ownerDtos.get(0).getMemberId());
+        ownerAppUserPo.setCommunityName(tmpCommunityDto.getName());
+        ownerAppUserPo.setCommunityId(ownerDtos.get(0).getCommunityId());
+        ownerAppUserPo.setAppUserName(ownerDtos.get(0).getName());
+        ownerAppUserPo.setIdCard(ownerDtos.get(0).getIdCard());
+        ownerAppUserPo.setAppType("WECHAT");
+        ownerAppUserPo.setLink(ownerDtos.get(0).getLink());
+        ownerAppUserPo.setUserId(userPo.getUserId());
+        ownerAppUserPo.setOpenId("-1");
+
+        flag = ownerAppUserV1InnerServiceSMOImpl.saveOwnerAppUser(ownerAppUserPo);
+        if (flag < 1) {
+            throw new CmdException("添加用户业主关系失败");
+        }
+
+        UserDto userDto = new UserDto();
+        userDto.setUserId(userPo.getUserId());
+        List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
+        return userDtos;
+    }
+
     private UserAttrDto getCurrentUserAttrDto(List<UserAttrDto> userAttrDtos, String specCd) {
         if (userAttrDtos == null) {
             return null;