diff --git a/src/main/java/com/sczx/user/constant/SystemConstants.java b/src/main/java/com/sczx/user/constant/SystemConstants.java index 52f3ead..a798a25 100644 --- a/src/main/java/com/sczx/user/constant/SystemConstants.java +++ b/src/main/java/com/sczx/user/constant/SystemConstants.java @@ -18,6 +18,6 @@ public interface SystemConstants { /*** * feign客户端所在包路径 */ - String FEIGN_CLIENT_BASE_PACKAGE = "com.sczx.app.thirdpart.facade"; + String FEIGN_CLIENT_BASE_PACKAGE = "com.sczx.user.thirdpart.facade"; } diff --git a/src/main/java/com/sczx/user/controller/AuthController.java b/src/main/java/com/sczx/user/controller/AuthController.java index 566ef6c..954d68f 100644 --- a/src/main/java/com/sczx/user/controller/AuthController.java +++ b/src/main/java/com/sczx/user/controller/AuthController.java @@ -76,4 +76,10 @@ public class AuthController { userService.authUser(authRequest); return Result.ok(true); } + + @ApiOperation(value = "根据手机号获取token", notes = "根据手机号获取token") + @GetMapping("/getLoginTokenByMobile") + public Result getLoginTokenByMobile(@RequestParam("mobile") String mobile) {; + return Result.ok(userService.getLoginTokenByMobile(mobile)); + } } diff --git a/src/main/java/com/sczx/user/service/IUserService.java b/src/main/java/com/sczx/user/service/IUserService.java index c8d08d6..68015fe 100644 --- a/src/main/java/com/sczx/user/service/IUserService.java +++ b/src/main/java/com/sczx/user/service/IUserService.java @@ -69,4 +69,11 @@ public interface IUserService { * @param authRequest 认证请求 */ void authUser(AuthRequest authRequest); + + /** + * 根据手机号获取登录token + * @param mobile 手机号 + * @return 登录token + */ + LoginResponse getLoginTokenByMobile(String mobile); } diff --git a/src/main/java/com/sczx/user/service/impl/UserServiceImpl.java b/src/main/java/com/sczx/user/service/impl/UserServiceImpl.java index 6afee9f..9283c95 100644 --- a/src/main/java/com/sczx/user/service/impl/UserServiceImpl.java +++ b/src/main/java/com/sczx/user/service/impl/UserServiceImpl.java @@ -16,10 +16,11 @@ import com.sczx.user.service.IUserService; import com.sczx.user.thirdpart.dto.WechatDecryptedPhoneInfo; import com.sczx.user.thirdpart.dto.WechatMiniProgramResponse; import com.sczx.user.thirdpart.integration.AlipayInteg; +import com.sczx.user.thirdpart.integration.SyncInteg; import com.sczx.user.thirdpart.integration.WeichatInteg; -import com.sczx.user.util.DataPushApi; import com.sczx.user.util.JwtUtil; import com.sczx.user.util.RedisUtil; +import com.sczx.user.util.ThreadPoolUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -57,8 +58,11 @@ public class UserServiceImpl implements IUserService { @Autowired private BaseUserReferralRepo baseUserReferralRepo; +// @Autowired +// private DataPushApi dataPushApi; + @Autowired - private DataPushApi dataPushApi; + private SyncInteg syncInteg; @Override public String getWxOpenId(String code) { @@ -227,7 +231,10 @@ public class UserServiceImpl implements IUserService { } // 推送用户ID if (isNewUser) { - dataPushApi.sendAddUser(baseUserPO.getId()); + BaseUserPO finalBaseUserPO = baseUserPO; + ThreadPoolUtils.getThreadPool().execute(() -> { + syncInteg.sendUserInfoToBattery(finalBaseUserPO.getId().toString()); + }); } return getLoginResponse(baseUserPO,MiniProgramTypeEnum.WECHAT); }catch (Exception e){ @@ -293,7 +300,10 @@ public class UserServiceImpl implements IUserService { } // 推送用户ID if (isNewUser) { - dataPushApi.sendAddUser(baseUserPO.getId()); + BaseUserPO finalBaseUserPO = baseUserPO; + ThreadPoolUtils.getThreadPool().execute(() -> { + syncInteg.sendUserInfoToBattery(finalBaseUserPO.getId().toString()); + }); } // 5. 返回登录信息 return getLoginResponse(baseUserPO,MiniProgramTypeEnum.ALIPAY); @@ -335,6 +345,14 @@ public class UserServiceImpl implements IUserService { baseUserRepo.update(updateWrapper); } + @Override + public LoginResponse getLoginTokenByMobile(String mobile) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BaseUserPO::getPhoneNumber, mobile).last( " limit 1"); + BaseUserPO baseUserPO = baseUserRepo.getOne(queryWrapper); + return getLoginResponse(baseUserPO,MiniProgramTypeEnum.WECHAT); + } + /** * 获取登录信息 * @param programId diff --git a/src/main/java/com/sczx/user/thirdpart/facade/SyncFacade.java b/src/main/java/com/sczx/user/thirdpart/facade/SyncFacade.java new file mode 100644 index 0000000..65ecd7c --- /dev/null +++ b/src/main/java/com/sczx/user/thirdpart/facade/SyncFacade.java @@ -0,0 +1,15 @@ +package com.sczx.user.thirdpart.facade; + + +import com.sczx.user.common.Result; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +@FeignClient(name = "sczx-sync", url = "${sczx-sync.ribbon.listOfServers:}") +public interface SyncFacade { + + @GetMapping("/userinfo/{id}") + Result sendUserInfoToBattery(@PathVariable String id); + +} \ No newline at end of file diff --git a/src/main/java/com/sczx/user/thirdpart/integration/SyncInteg.java b/src/main/java/com/sczx/user/thirdpart/integration/SyncInteg.java new file mode 100644 index 0000000..a92929b --- /dev/null +++ b/src/main/java/com/sczx/user/thirdpart/integration/SyncInteg.java @@ -0,0 +1,26 @@ +package com.sczx.user.thirdpart.integration; + +import com.sczx.user.common.Result; +import com.sczx.user.exception.InnerException; +import com.sczx.user.thirdpart.facade.SyncFacade; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; + +@Slf4j +public class SyncInteg { + + @Autowired + private SyncFacade syncFacade; + public Boolean sendUserInfoToBattery(String userId) { + try{ + Result result = syncFacade.sendUserInfoToBattery(userId); + if(result.isSuccess()){ + return result.getData(); + } + } catch (Exception e){ + log.error("同步用户到租电平台失败",e); + throw new InnerException("同步用户到租电平台失败"); + } + return null; + } +} diff --git a/src/main/java/com/sczx/user/util/ThreadPoolUtils.java b/src/main/java/com/sczx/user/util/ThreadPoolUtils.java new file mode 100644 index 0000000..221b40b --- /dev/null +++ b/src/main/java/com/sczx/user/util/ThreadPoolUtils.java @@ -0,0 +1,57 @@ +package com.sczx.user.util; + +import org.springframework.stereotype.Service; + +import java.util.concurrent.*; + +/** + * 线程池工具类,用于执行异步任务 + * Created by zengji on 2019/5/13. + * + */ +@Service +public class ThreadPoolUtils { + + public static ThreadPoolExecutor threadPool; + //核心线程大小 + private static int corePoolSize=120; + //最大线程个数 + private static int maximumPoolSize=180; + //空闲线程存活时间 + private static long keepAliveTime=300; + //队列容量 + private static int capacity=200; + + /** + * 无返回值 + */ + public static void execute(Runnable runnable){ + getThreadPool().execute(runnable); + } + + /** + * 有返回值 + */ + public static Future submit(Callable callable){ + return getThreadPool().submit(callable); + } + + + /** + * dcs获取线程池 + * @return 线程池对象 + */ + public static ThreadPoolExecutor getThreadPool() { + if (threadPool != null) { + return threadPool; + } else { + synchronized (ThreadPoolUtils.class) { + if (threadPool == null) { + threadPool = new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, TimeUnit.SECONDS, + new LinkedBlockingQueue<>(capacity), new ThreadPoolExecutor.CallerRunsPolicy()); + } + return threadPool; + } + } + } +} diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index ee418b6..bf7ec1c 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -26,4 +26,8 @@ spring: max-wait: 2000ms max-idle: 4 min-idle: 1 - max-life-time: 300000ms \ No newline at end of file + max-life-time: 300000ms + +sczx-user: + ribbon: + listOfServers: http://115.190.8.52:8016 \ No newline at end of file