From d27746789e121e5f67e15d105f28541269a15adc Mon Sep 17 00:00:00 2001 From: Bunny <1319900154@qq.com> Date: Thu, 5 Dec 2024 15:51:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=B8=E6=9C=BA=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../daijia/common/login/GuiguLoginAspect.java | 41 +++++----- .../driver/client/DriverInfoFeignClient.java | 12 +-- .../customer/config/WxConfigOperator.java | 3 +- .../service/impl/CustomerInfoServiceImpl.java | 1 + service/service-driver/pom.xml | 11 ++- .../driver/config/WxConfigOperator.java | 27 +++++++ .../driver/config/WxConfigProperties.java | 13 ++++ .../driver/controller/CiController.java | 12 +-- .../driver/controller/CosController.java | 13 +--- .../controller/DriverAccountController.java | 6 +- .../controller/DriverInfoController.java | 16 +++- .../driver/controller/OcrController.java | 14 +--- .../driver/service/DriverInfoService.java | 7 ++ .../service/impl/DriverInfoServiceImpl.java | 75 ++++++++++++++++++- .../src/main/resources/bootstrap.properties | 8 -- .../src/main/resources/bootstrap.yml | 18 +++++ .../driver/controller/DriverController.java | 17 ++++- .../daijia/driver/service/DriverService.java | 8 +- .../service/impl/DriverServiceImpl.java | 31 +++++++- .../src/main/resources/bootstrap.properties | 8 -- .../src/main/resources/bootstrap.yml | 18 +++++ 21 files changed, 266 insertions(+), 93 deletions(-) create mode 100644 service/service-driver/src/main/java/com/atguigu/daijia/driver/config/WxConfigOperator.java create mode 100644 service/service-driver/src/main/java/com/atguigu/daijia/driver/config/WxConfigProperties.java delete mode 100644 service/service-driver/src/main/resources/bootstrap.properties create mode 100644 service/service-driver/src/main/resources/bootstrap.yml delete mode 100644 web/web-driver/src/main/resources/bootstrap.properties create mode 100644 web/web-driver/src/main/resources/bootstrap.yml diff --git a/common/service-util/src/main/java/com/atguigu/daijia/common/login/GuiguLoginAspect.java b/common/service-util/src/main/java/com/atguigu/daijia/common/login/GuiguLoginAspect.java index 5e8bbc5..7a6767c 100644 --- a/common/service-util/src/main/java/com/atguigu/daijia/common/login/GuiguLoginAspect.java +++ b/common/service-util/src/main/java/com/atguigu/daijia/common/login/GuiguLoginAspect.java @@ -17,41 +17,48 @@ import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @Component -@Aspect //切面类 +@Aspect // 切面类 public class GuiguLoginAspect { @Autowired - private RedisTemplate redisTemplate; + private RedisTemplate redisTemplate; - //环绕通知,登录判断 - //切入点表达式:指定对哪些规则的方法进行增强 + /** + * 环绕通知,登录判断 + * 切入点表达式:指定对哪些规则的方法进行增强 + * + * @param proceedingJoinPoint proceedingJoinPoint + * @param guiguLogin guiguLogin + * @return Object + * @throws Throwable Throwable + */ @Around("execution(* com.atguigu.daijia.*.controller.*.*(..)) && @annotation(guiguLogin)") - public Object login(ProceedingJoinPoint proceedingJoinPoint,GuiguLogin guiguLogin) throws Throwable { + public Object login(ProceedingJoinPoint proceedingJoinPoint, GuiguLogin guiguLogin) throws Throwable { - //1 获取request对象 + // 1 获取request对象 RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); - ServletRequestAttributes sra = (ServletRequestAttributes)attributes; + ServletRequestAttributes sra = (ServletRequestAttributes) attributes; + assert sra != null; HttpServletRequest request = sra.getRequest(); - //2 从请求头获取token + // 2 从请求头获取token String token = request.getHeader("token"); - //3 判断token是否为空,如果为空,返回登录提示 - if(!StringUtils.hasText(token)) { + // 3 判断token是否为空,如果为空,返回登录提示 + if (!StringUtils.hasText(token)) { throw new GuiguException(ResultCodeEnum.LOGIN_AUTH); } - //4 token不为空,查询redis - String customerId = (String)redisTemplate.opsForValue() - .get(RedisConstant.USER_LOGIN_KEY_PREFIX+token); + // 4 token不为空,查询redis + String customerId = (String) redisTemplate.opsForValue() + .get(RedisConstant.USER_LOGIN_KEY_PREFIX + token); - //5 查询redis对应用户id,把用户id放到ThreadLocal里面 - if(StringUtils.hasText(customerId)) { + // 5 查询redis对应用户id,把用户id放到ThreadLocal里面 + if (StringUtils.hasText(customerId)) { AuthContextHolder.setUserId(Long.parseLong(customerId)); } - //6 执行业务方法 + // 6 执行业务方法 return proceedingJoinPoint.proceed(); } - } diff --git a/service-client/service-driver-client/src/main/java/com/atguigu/daijia/driver/client/DriverInfoFeignClient.java b/service-client/service-driver-client/src/main/java/com/atguigu/daijia/driver/client/DriverInfoFeignClient.java index 9816950..ad5b288 100644 --- a/service-client/service-driver-client/src/main/java/com/atguigu/daijia/driver/client/DriverInfoFeignClient.java +++ b/service-client/service-driver-client/src/main/java/com/atguigu/daijia/driver/client/DriverInfoFeignClient.java @@ -1,20 +1,14 @@ package com.atguigu.daijia.driver.client; import com.atguigu.daijia.common.result.Result; -import com.atguigu.daijia.model.entity.driver.DriverSet; -import com.atguigu.daijia.model.form.driver.DriverFaceModelForm; -import com.atguigu.daijia.model.form.driver.UpdateDriverAuthInfoForm; -import com.atguigu.daijia.model.vo.driver.DriverAuthInfoVo; -import com.atguigu.daijia.model.vo.driver.DriverInfoVo; -import com.atguigu.daijia.model.vo.driver.DriverLoginVo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; @FeignClient(value = "service-driver") public interface DriverInfoFeignClient { - + // 小程序司机登录 + @GetMapping("/driver/info/login/{code}") + Result login(@PathVariable("code") String code); } \ No newline at end of file diff --git a/service/service-customer/src/main/java/com/atguigu/daijia/customer/config/WxConfigOperator.java b/service/service-customer/src/main/java/com/atguigu/daijia/customer/config/WxConfigOperator.java index c2a722d..1a0d7be 100644 --- a/service/service-customer/src/main/java/com/atguigu/daijia/customer/config/WxConfigOperator.java +++ b/service/service-customer/src/main/java/com/atguigu/daijia/customer/config/WxConfigOperator.java @@ -15,8 +15,7 @@ public class WxConfigOperator { @Bean public WxMaService wxMaService() { - - //微信小程序id和秘钥 + // 微信小程序id和秘钥 WxMaDefaultConfigImpl wxMaConfig = new WxMaDefaultConfigImpl(); wxMaConfig.setAppid(wxConfigProperties.getAppId()); wxMaConfig.setSecret(wxConfigProperties.getSecret()); diff --git a/service/service-customer/src/main/java/com/atguigu/daijia/customer/service/impl/CustomerInfoServiceImpl.java b/service/service-customer/src/main/java/com/atguigu/daijia/customer/service/impl/CustomerInfoServiceImpl.java index b35d076..3ca5da2 100644 --- a/service/service-customer/src/main/java/com/atguigu/daijia/customer/service/impl/CustomerInfoServiceImpl.java +++ b/service/service-customer/src/main/java/com/atguigu/daijia/customer/service/impl/CustomerInfoServiceImpl.java @@ -100,6 +100,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl - com.atguigu.daijia - service1.0 + service + 1.0 4.0.0 @@ -13,6 +14,10 @@ 1.0 + + com.github.binarywang + weixin-java-miniapp + diff --git a/service/service-driver/src/main/java/com/atguigu/daijia/driver/config/WxConfigOperator.java b/service/service-driver/src/main/java/com/atguigu/daijia/driver/config/WxConfigOperator.java new file mode 100644 index 0000000..9afcc1a --- /dev/null +++ b/service/service-driver/src/main/java/com/atguigu/daijia/driver/config/WxConfigOperator.java @@ -0,0 +1,27 @@ +package com.atguigu.daijia.driver.config; + +import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; +import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +@Component +public class WxConfigOperator { + + @Autowired + private WxConfigProperties wxConfigProperties; + + @Bean + public WxMaService wxMaService() { + // 微信小程序id和秘钥 + WxMaDefaultConfigImpl wxMaConfig = new WxMaDefaultConfigImpl(); + wxMaConfig.setAppid(wxConfigProperties.getAppId()); + wxMaConfig.setSecret(wxConfigProperties.getSecret()); + + WxMaService service = new WxMaServiceImpl(); + service.setWxMaConfig(wxMaConfig); + return service; + } +} diff --git a/service/service-driver/src/main/java/com/atguigu/daijia/driver/config/WxConfigProperties.java b/service/service-driver/src/main/java/com/atguigu/daijia/driver/config/WxConfigProperties.java new file mode 100644 index 0000000..32e7e29 --- /dev/null +++ b/service/service-driver/src/main/java/com/atguigu/daijia/driver/config/WxConfigProperties.java @@ -0,0 +1,13 @@ +package com.atguigu.daijia.driver.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Component +@Data +@ConfigurationProperties(prefix = "wx.miniapp") +public class WxConfigProperties { + private String appId; + private String secret; +} diff --git a/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/CiController.java b/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/CiController.java index 22bb802..2c282c6 100644 --- a/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/CiController.java +++ b/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/CiController.java @@ -1,24 +1,16 @@ package com.atguigu.daijia.driver.controller; -import com.atguigu.daijia.common.result.Result; -import com.atguigu.daijia.driver.service.CiService; -import com.atguigu.daijia.model.vo.order.TextAuditingVo; -import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Slf4j @Tag(name = "腾讯云CI审核接口管理") @RestController -@RequestMapping(value="/cos") -@SuppressWarnings({"unchecked", "rawtypes"}) +@RequestMapping(value = "/cos") public class CiController { - + } diff --git a/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/CosController.java b/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/CosController.java index c81dce3..6e709a6 100644 --- a/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/CosController.java +++ b/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/CosController.java @@ -1,22 +1,15 @@ package com.atguigu.daijia.driver.controller; -import com.atguigu.daijia.common.result.Result; -import com.atguigu.daijia.driver.service.CosService; -import com.atguigu.daijia.model.vo.driver.CosUploadVo; -import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; @Slf4j @Tag(name = "腾讯云cos上传接口管理") @RestController -@RequestMapping(value="/cos") -@SuppressWarnings({"unchecked", "rawtypes"}) +@RequestMapping(value = "/cos") public class CosController { - } diff --git a/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverAccountController.java b/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverAccountController.java index c3a104e..1fd52e1 100644 --- a/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverAccountController.java +++ b/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverAccountController.java @@ -1,19 +1,15 @@ package com.atguigu.daijia.driver.controller; -import com.atguigu.daijia.driver.service.DriverAccountService; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Slf4j @Tag(name = "司机账户API接口管理") @RestController -@RequestMapping(value="/driver/account") -@SuppressWarnings({"unchecked", "rawtypes"}) +@RequestMapping(value = "/driver/account") public class DriverAccountController { - } diff --git a/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverInfoController.java b/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverInfoController.java index 7eac3f2..fd20050 100644 --- a/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverInfoController.java +++ b/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverInfoController.java @@ -1,20 +1,30 @@ package com.atguigu.daijia.driver.controller; +import com.atguigu.daijia.common.result.Result; import com.atguigu.daijia.driver.service.DriverInfoService; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Slf4j @Tag(name = "司机API接口管理") @RestController -@RequestMapping(value="/driver/info") -@SuppressWarnings({"unchecked", "rawtypes"}) +@RequestMapping(value = "/driver/info") public class DriverInfoController { - + @Autowired + private DriverInfoService driverInfoService; + @Operation(summary = "小程序司机登录") + @GetMapping("/login/{code}") + public Result login(@PathVariable("code") String code) { + Long vo = driverInfoService.login(code); + return Result.ok(vo); + } } diff --git a/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/OcrController.java b/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/OcrController.java index 4fcfe5b..95a4afa 100644 --- a/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/OcrController.java +++ b/service/service-driver/src/main/java/com/atguigu/daijia/driver/controller/OcrController.java @@ -1,26 +1,16 @@ package com.atguigu.daijia.driver.controller; -import com.atguigu.daijia.common.result.Result; -import com.atguigu.daijia.driver.service.OcrService; -import com.atguigu.daijia.model.vo.driver.DriverLicenseOcrVo; -import com.atguigu.daijia.model.vo.driver.IdCardOcrVo; -import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; @Slf4j @Tag(name = "腾讯云识别接口管理") @RestController -@RequestMapping(value="/ocr") -@SuppressWarnings({"unchecked", "rawtypes"}) +@RequestMapping(value = "/ocr") public class OcrController { - + } diff --git a/service/service-driver/src/main/java/com/atguigu/daijia/driver/service/DriverInfoService.java b/service/service-driver/src/main/java/com/atguigu/daijia/driver/service/DriverInfoService.java index ecf63a6..f1dc30b 100644 --- a/service/service-driver/src/main/java/com/atguigu/daijia/driver/service/DriverInfoService.java +++ b/service/service-driver/src/main/java/com/atguigu/daijia/driver/service/DriverInfoService.java @@ -5,4 +5,11 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface DriverInfoService extends IService { + /** + * 小程序司机登录 + * + * @param code 唯一票据 + * @return openid + */ + Long login(String code); } diff --git a/service/service-driver/src/main/java/com/atguigu/daijia/driver/service/impl/DriverInfoServiceImpl.java b/service/service-driver/src/main/java/com/atguigu/daijia/driver/service/impl/DriverInfoServiceImpl.java index 9e891b6..9e27ae9 100644 --- a/service/service-driver/src/main/java/com/atguigu/daijia/driver/service/impl/DriverInfoServiceImpl.java +++ b/service/service-driver/src/main/java/com/atguigu/daijia/driver/service/impl/DriverInfoServiceImpl.java @@ -1,17 +1,90 @@ package com.atguigu.daijia.driver.service.impl; +import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; +import com.atguigu.daijia.common.constant.SystemConstant; +import com.atguigu.daijia.driver.mapper.DriverAccountMapper; import com.atguigu.daijia.driver.mapper.DriverInfoMapper; +import com.atguigu.daijia.driver.mapper.DriverLoginLogMapper; +import com.atguigu.daijia.driver.mapper.DriverSetMapper; import com.atguigu.daijia.driver.service.DriverInfoService; +import com.atguigu.daijia.model.entity.driver.DriverAccount; import com.atguigu.daijia.model.entity.driver.DriverInfo; +import com.atguigu.daijia.model.entity.driver.DriverLoginLog; +import com.atguigu.daijia.model.entity.driver.DriverSet; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxErrorException; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; @Slf4j @Service -@SuppressWarnings({"unchecked", "rawtypes"}) +@Transactional public class DriverInfoServiceImpl extends ServiceImpl implements DriverInfoService { + @Autowired + private WxMaService wxMaService; + @Autowired + private DriverSetMapper driverSetMapper; + @Autowired + private DriverAccountMapper driverAccountMapper; + + @Autowired + private DriverLoginLogMapper driverLoginLogMapper; + + /** + * 小程序司机登录 + * + * @param code 唯一票据 + * @return openid + */ + @Override + public Long login(String code) { + try { + // 根据code查询用户登录信息 + WxMaJscode2SessionResult sessionInfo = wxMaService.getUserService().getSessionInfo(code); + String openid = sessionInfo.getOpenid(); + + // 查询数据库,如果没有数据自动添加 + DriverInfo driverInfo = getOne(Wrappers.lambdaQuery().eq(DriverInfo::getWxOpenId, openid)); + if (driverInfo == null) { + // 添加司机基本信息 + driverInfo = new DriverInfo(); + driverInfo.setNickname(String.valueOf(System.currentTimeMillis())); + driverInfo.setAvatarUrl("https://oss.aliyuncs.com/aliyun_id_photo_bucket/default_handsome.jpg"); + driverInfo.setWxOpenId(openid); + save(driverInfo); + + // 初始化司机设置 + DriverSet driverSet = new DriverSet(); + driverSet.setDriverId(driverInfo.getId()); + driverSet.setOrderDistance(new BigDecimal(0));// 0:无限制 + driverSet.setAcceptDistance(new BigDecimal(SystemConstant.ACCEPT_DISTANCE));// 默认接单范围:5公里 + driverSet.setIsAutoAccept(0);// 0:否 1:是 + driverSetMapper.insert(driverSet); + + // 初始化司机账户信息 + DriverAccount driverAccount = new DriverAccount(); + driverAccount.setDriverId(driverInfo.getId()); + driverAccountMapper.insert(driverAccount); + } + + DriverLoginLog driverLoginLog = new DriverLoginLog(); + driverLoginLog.setDriverId(driverInfo.getId()); + driverLoginLog.setMsg("小程序登录"); + driverLoginLogMapper.insert(driverLoginLog); + + // 返回司机id + return driverInfo.getId(); + } catch (WxErrorException e) { + throw new RuntimeException(e); + } + } } \ No newline at end of file diff --git a/service/service-driver/src/main/resources/bootstrap.properties b/service/service-driver/src/main/resources/bootstrap.properties deleted file mode 100644 index 3759742..0000000 --- a/service/service-driver/src/main/resources/bootstrap.properties +++ /dev/null @@ -1,8 +0,0 @@ -spring.application.name=service-driver -spring.profiles.active=dev -spring.main.allow-bean-definition-overriding=true -spring.cloud.nacos.discovery.server-addr=localhost:8848 -spring.cloud.nacos.config.server-addr=localhost:8848 -spring.cloud.nacos.config.prefix=${spring.application.name} -spring.cloud.nacos.config.file-extension=yaml -spring.cloud.nacos.config.shared-configs[0].data-id=common-account.yaml \ No newline at end of file diff --git a/service/service-driver/src/main/resources/bootstrap.yml b/service/service-driver/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..3e52e66 --- /dev/null +++ b/service/service-driver/src/main/resources/bootstrap.yml @@ -0,0 +1,18 @@ +spring: + application: + name: service-driver + profiles: + active: dev + main: + allow-bean-definition-overriding: true + + cloud: + nacos: + discovery: + server-addr: 192.168.3.129:8848 + config: + server-addr: 192.168.3.129:8848 + prefix: ${spring.application.name} + file-extension: yaml + shared-configs: + - data-id: common-account.yaml \ No newline at end of file diff --git a/web/web-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverController.java b/web/web-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverController.java index 2274f6d..c562216 100644 --- a/web/web-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverController.java +++ b/web/web-driver/src/main/java/com/atguigu/daijia/driver/controller/DriverController.java @@ -1,19 +1,30 @@ package com.atguigu.daijia.driver.controller; +import com.atguigu.daijia.common.result.Result; import com.atguigu.daijia.driver.service.DriverService; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @Slf4j @Tag(name = "司机API接口管理") @RestController -@RequestMapping(value="/driver") -@SuppressWarnings({"unchecked", "rawtypes"}) +@RequestMapping(value = "/driver") public class DriverController { - + @Autowired + private DriverService driverService; + + @Operation(summary = "小程序授权登录") + @GetMapping("/login/{code}") + public Result login(@PathVariable String code) { + String vo = driverService.login(code); + return Result.ok(vo); + } } diff --git a/web/web-driver/src/main/java/com/atguigu/daijia/driver/service/DriverService.java b/web/web-driver/src/main/java/com/atguigu/daijia/driver/service/DriverService.java index 85b5db9..33a0708 100644 --- a/web/web-driver/src/main/java/com/atguigu/daijia/driver/service/DriverService.java +++ b/web/web-driver/src/main/java/com/atguigu/daijia/driver/service/DriverService.java @@ -2,5 +2,11 @@ package com.atguigu.daijia.driver.service; public interface DriverService { - + /** + * 小程序司机登录 + * + * @param code 唯一票据 + * @return openid + */ + String login(String code); } diff --git a/web/web-driver/src/main/java/com/atguigu/daijia/driver/service/impl/DriverServiceImpl.java b/web/web-driver/src/main/java/com/atguigu/daijia/driver/service/impl/DriverServiceImpl.java index 2bc64f4..7ca55df 100644 --- a/web/web-driver/src/main/java/com/atguigu/daijia/driver/service/impl/DriverServiceImpl.java +++ b/web/web-driver/src/main/java/com/atguigu/daijia/driver/service/impl/DriverServiceImpl.java @@ -1,15 +1,44 @@ package com.atguigu.daijia.driver.service.impl; +import com.atguigu.daijia.common.constant.RedisConstant; +import com.atguigu.daijia.common.result.Result; import com.atguigu.daijia.driver.client.DriverInfoFeignClient; import com.atguigu.daijia.driver.service.DriverService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import java.util.concurrent.TimeUnit; + @Slf4j @Service -@SuppressWarnings({"unchecked", "rawtypes"}) public class DriverServiceImpl implements DriverService { + @Autowired + private DriverInfoFeignClient driverInfoFeignClient; + @Autowired + private RedisTemplate redisTemplate; + + /** + * 小程序司机登录 + * + * @param code 唯一票据 + * @return openid + */ + @Override + public String login(String code) { + Result longResult = driverInfoFeignClient.login(code); + Long driverId = longResult.getData(); + String token = driverId.toString().replaceAll("-", ""); + + // 放入Redis + redisTemplate.opsForValue().set(RedisConstant.USER_LOGIN_KEY_PREFIX + token, + driverId.toString(), + RedisConstant.USER_LOGIN_KEY_TIMEOUT, + TimeUnit.SECONDS); + + return token; + } } diff --git a/web/web-driver/src/main/resources/bootstrap.properties b/web/web-driver/src/main/resources/bootstrap.properties deleted file mode 100644 index 3a2ee84..0000000 --- a/web/web-driver/src/main/resources/bootstrap.properties +++ /dev/null @@ -1,8 +0,0 @@ -spring.application.name=web-driver -spring.profiles.active=dev -spring.main.allow-bean-definition-overriding=true -spring.cloud.nacos.discovery.server-addr=localhost:8848 -spring.cloud.nacos.config.server-addr=localhost:8848 -spring.cloud.nacos.config.prefix=${spring.application.name} -spring.cloud.nacos.config.file-extension=yaml -spring.cloud.nacos.config.shared-configs[0].data-id=common-account.yaml \ No newline at end of file diff --git a/web/web-driver/src/main/resources/bootstrap.yml b/web/web-driver/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..a385804 --- /dev/null +++ b/web/web-driver/src/main/resources/bootstrap.yml @@ -0,0 +1,18 @@ +spring: + application: + name: web-driver + profiles: + active: dev + main: + allow-bean-definition-overriding: true + + cloud: + nacos: + discovery: + server-addr: 192.168.3.129:8848 + config: + server-addr: 192.168.3.129:8848 + prefix: ${spring.application.name} + file-extension: yaml + shared-configs: + - data-id: common-account.yaml \ No newline at end of file