TRX hace 1 año
padre
commit
8868efa2e6

+ 43 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/login/LoginBusModel.java

@@ -0,0 +1,43 @@
+package com.zhongshu.card.client.model.login;
+
+import com.zhongshu.card.client.model.org.OrganizationSimpleModel;
+import com.zhongshu.card.client.model.org.UserCountModel;
+import com.zhongshu.card.client.model.org.UserJoinBusOrgModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 通用登录返回的数据模型
+ *
+ * @author TRX
+ * @date 2024/9/24
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class LoginBusModel {
+
+    @Schema(description = "token")
+    private String access_token;
+
+    private String token_type;
+
+    @Schema(description = "刷新token的token")
+    private String refresh_token;
+
+    private Integer expires_in;
+
+    private String scope;
+
+    @Schema(description = "用户基本信息")
+    private UserCountModel userInfo;
+
+    @Schema(description = "加入的商户列表")
+    private List<UserJoinBusOrgModel> busList = new ArrayList<>();
+}

+ 37 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/UserJoinBusOrgModel.java

@@ -0,0 +1,37 @@
+package com.zhongshu.card.client.model.org;
+
+import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.type.OrganizationState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 用户加入的商户列表
+ *
+ * @author TRX
+ * @date 2024/5/31
+ */
+@Data
+public class UserJoinBusOrgModel {
+
+    @Schema(description = "商户oid")
+    private String busOid;
+
+    @Schema(description = "商户名称")
+    private String busName;
+
+    @Schema(description = "商户编码")
+    private String busCode;
+
+    @Schema(description = "商户logo")
+    private String busLogo;
+
+    @Schema(description = "项目Oid")
+    private String projectOid;
+
+    @Schema(description = "项目名称")
+    private String projectName;
+}

+ 10 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/user/IndexController.java

@@ -60,6 +60,16 @@ public class IndexController {
         return result;
     }
 
+    @Operation(summary = "商户小程序登录", description = "商户小程序登录")
+    @RequestMapping(value = "busLogin", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
+    public ResultContent busLogin(@RequestBody LoginParam param, HttpServletRequest request, HttpServletResponse response) {
+        param.setLoginFromType(LoginFromType.Shop);
+        ResultContent result = indexService.busLogin(param);
+        if (result.isSuccess()) {
+        }
+        return result;
+    }
+
     @Operation(summary = "web通用登录", description = "web通用登录")
     @RequestMapping(value = "commonLogin", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
     public ResultContent commonLogin(@RequestBody LoginParam param, HttpServletRequest request, HttpServletResponse response) {

+ 0 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/devices/DeviceSyncFromIotService.java

@@ -90,7 +90,6 @@ public class DeviceSyncFromIotService {
         HashMap<String, Object> map = new HashMap<>();
         map.put("lastOnlineTime", param.getLastOnlineTime());
         map.put("onLineState", CommonUtil.getEnumByName(OnLineState.class, param.getOnLineState()));
-        log.info("-------------------------== {}", param.getState());
         DataState state = CommonUtil.getEnumByName(DataState.class, param.getState());
         if (state == null) {
             DeviceInfo deviceInfo = deviceInfoDao.findTopByDeviceId(param.getDeviceId());

+ 48 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/IndexService.java

@@ -10,6 +10,7 @@ import com.github.microservice.auth.security.model.AuthDetails;
 import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
 import com.github.microservice.core.util.net.IPUtil;
+import com.zhongshu.card.client.model.login.LoginBusModel;
 import com.zhongshu.card.client.model.login.LoginCommonModel;
 import com.zhongshu.card.client.model.org.*;
 import com.zhongshu.card.client.model.setting.PlatFormLoginConfig;
@@ -153,6 +154,53 @@ public class IndexService {
         return ResultContent.buildSuccess(commonModel);
     }
 
+    /**
+     * 商户小程序登录
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent<LoginBusModel> busLogin(LoginParam param) {
+        StopWatch stopWatch = new StopWatch();
+        stopWatch.start("1");
+
+        UserAuthLoginModel userAuthLoginModel = new UserAuthLoginModel();
+        BeanUtils.copyProperties(param, userAuthLoginModel);
+        // 登录
+        ResultContent<LoginTokenModel> resultContent = commonLogin(userAuthLoginModel);
+        if (resultContent.isFailed()) {
+            return ResultContent.buildFail(resultContent.getMsg());
+        }
+
+        String phone = param.getLoginValue();
+        UserAccount userAccount = userCountDao.findTopByLoginName(phone);
+        UserCountModel userCountModel = userAccountService.toModel(userAccount);
+
+        // 用户加入的商户列表
+        List<UserJoinBusOrgModel> busModels = organizationService.getUserAboutShopList(userAccount.getUserId());
+        if (ObjectUtils.isEmpty(busModels)) {
+            return ResultContent.buildFail("用户未关联商户,登录失败");
+        }
+
+        LoginBusModel commonModel = new LoginBusModel();
+        LoginTokenModel loginTokenModel = resultContent.getContent();
+        com.zhongshu.card.server.core.util.BeanUtils.copyProperties(loginTokenModel, commonModel);
+        stopWatch.stop();
+        commonModel.setBusList(busModels);
+
+        stopWatch.start("2");
+        commonModel.setUserInfo(userCountModel);
+        stopWatch.stop();
+
+        stopWatch.start("3");
+        // 用户所有的权限
+//        Set<String> auth = roleServiceImpl.getUserAllAuths(userAccount.getUserId());
+//        commonModel.setAuths(auth);
+        stopWatch.stop();
+        log.info(stopWatch.prettyPrint());
+        return ResultContent.buildSuccess(commonModel);
+    }
+
     /**
      * 通用用户登录(返回所有权限数据)
      *

+ 30 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationServiceImpl.java

@@ -1166,6 +1166,36 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
         return organizationDao.findTopByAuthType(AuthType.Platform);
     }
 
+    /**
+     * 得到用户加入的商户列表信息
+     *
+     * @param userId
+     */
+    public List<UserJoinBusOrgModel> getUserAboutShopList(String userId) {
+        UserAccount userAccount = userCountDao.findTopByUserId(userId);
+        List<OrganizationUser> list = organizationUserDao.findByUserAndAuthType(userAccount, AuthType.BusinessMain);
+        List<UserJoinBusOrgModel> busOrgModels = new ArrayList<>();
+        if (ObjectUtils.isNotEmpty(list)) {
+            busOrgModels = list.stream().map(it -> {
+                UserJoinBusOrgModel model = new UserJoinBusOrgModel();
+                Organization organization = it.getOrganization();
+                model.setBusOid(organization.getOid());
+                model.setBusName(organization.getName());
+                model.setBusCode(organization.getCode());
+                model.setBusLogo(organization.getLogo());
+
+                String projectOid = it.getProjectOid();
+                model.setProjectOid(projectOid);
+                Organization projectInfo = organizationDao.findTopByOid(projectOid);
+                if (ObjectUtils.isNotEmpty(projectInfo)) {
+                    model.setProjectName(projectInfo.getName());
+                }
+                return model;
+            }).collect(Collectors.toUnmodifiableList());
+        }
+        return busOrgModels;
+    }
+
     public OrganizationModel toModel(Organization entity) {
         OrganizationModel model = new OrganizationModel();
         if (ObjectUtils.isNotEmpty(entity)) {