|
|
@@ -1,20 +1,31 @@
|
|
|
package me.zhengjie.application.bank.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.corundumstudio.socketio.SocketIOClient;
|
|
|
+
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
-import lombok.extern.slf4j.Slf4j;
|
|
|
import me.zhengjie.application.bank.controller.vo.BankLoginVO;
|
|
|
import me.zhengjie.application.bank.service.BankLoginService;
|
|
|
import me.zhengjie.application.bank.service.SysUserService;
|
|
|
import me.zhengjie.base.ResponseDTO;
|
|
|
import me.zhengjie.base.ResultCode;
|
|
|
+import me.zhengjie.base.websocket.AppPcBindSocketIo;
|
|
|
+import me.zhengjie.base.websocket.AppSocketClientCache;
|
|
|
+import me.zhengjie.dao.mybatis.entity.ContractOrderEntity;
|
|
|
import me.zhengjie.dao.mybatis.entity.SysUserEntity;
|
|
|
+import me.zhengjie.dao.mybatis.mapper.ContractOrderMapper;
|
|
|
import me.zhengjie.exception.AccountNoActivationException;
|
|
|
import me.zhengjie.security.security.TokenProvider;
|
|
|
import me.zhengjie.security.service.OnlineUserService;
|
|
|
-
|
|
|
-import java.util.Map;
|
|
|
-
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Collection;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.UUID;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import org.apache.commons.collections4.CollectionUtils;
|
|
|
+import org.apache.commons.collections4.MapUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
/**
|
|
|
@@ -24,12 +35,15 @@ import org.springframework.stereotype.Service;
|
|
|
*
|
|
|
*/
|
|
|
@Service
|
|
|
-@Slf4j
|
|
|
+
|
|
|
@RequiredArgsConstructor
|
|
|
public class BankLoginServiceImpl implements BankLoginService {
|
|
|
private final SysUserService userService;
|
|
|
private final TokenProvider tokenProvider;
|
|
|
private final OnlineUserService onlineUserService;
|
|
|
+ private final ContractOrderMapper order;
|
|
|
+
|
|
|
+ private final AppPcBindSocketIo appPcBindSocketIo;
|
|
|
|
|
|
@Override
|
|
|
public ResponseDTO<BankLoginVO> login(BankLoginVO loginVo) {
|
|
|
@@ -43,6 +57,25 @@ public class BankLoginServiceImpl implements BankLoginService {
|
|
|
}
|
|
|
// 先移除已经登录的账号
|
|
|
onlineUserService.kickOutForPhoneUsername(loginVo.getPhone());
|
|
|
+ // 查询这个人的订单
|
|
|
+ QueryWrapper<ContractOrderEntity> qw = new QueryWrapper<>();
|
|
|
+ qw.select("business_no").eq("customer_id", sysUser.getUserId());
|
|
|
+ List<String> orderlist = order.selectList(qw).stream().map(ContractOrderEntity::getBusinessNo)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<String> keys = appPcBindSocketIo.getAllBindBusinessNo();
|
|
|
+ if (CollectionUtils.isNotEmpty(orderlist) && CollectionUtils.isNotEmpty(keys)) {
|
|
|
+ Collection<String> intersection = CollectionUtils.intersection(orderlist, keys);
|
|
|
+ if (CollectionUtils.isNotEmpty(keys)) {
|
|
|
+ intersection.forEach(key -> {
|
|
|
+ HashMap<UUID, SocketIOClient> userClient = AppSocketClientCache.getAppUserClient(key);
|
|
|
+ if (MapUtils.isNotEmpty(userClient)) {
|
|
|
+ userClient.forEach((uuid, socketIOClient) -> {
|
|
|
+ socketIOClient.sendEvent("logoutEvent", "logout");
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
String token = tokenProvider.appToken(loginVo.getPhone());
|
|
|
tokenProvider.setTokenTime(token, JSONObject.toJSONString(sysUser));
|
|
|
BankLoginVO bankLoginVO = new BankLoginVO();
|
|
|
@@ -56,4 +89,5 @@ public class BankLoginServiceImpl implements BankLoginService {
|
|
|
public void logout(String authToken) {
|
|
|
tokenProvider.delToken(authToken);
|
|
|
}
|
|
|
+
|
|
|
}
|