尚硅谷项目----智尚代驾Day1晚+(Day2早)---乘客端开发啊宝子们ovo

Topppppp1啊啊啊,好的兄弟们ovo,感谢观看我的Day1内容

话不多说~

乘客端登录:需求说明~


乘客端登录:微信小程序登录流程~(这个是官方图,下面有简化版)

在此:(大家要清楚啊,我们的代码就是根据这个写的)

这个是我们的小程序id和密钥,在微信开发者工具网页里找~

乘客端登录:微信小程序登录接口

1.准备工作

项目工程结构

宝子们,你们觉得看到这个我们应该做什么呢?

答案:

首先service-customer创建接口,在service-client里面定义接口,在web乘客端远程调用接口,然后完成微信小程序的登录接口~宝子们跟你们想的一样吧?

2.引入微信工具包相关依赖

在service-customer里面引入依赖

3.修改Nacos配置中心配置文件

在项目配置文件中进行修改bootstrap.properties

这里面那个192.168.6.129啊,因为装到了虚拟机里面,所以要改成自己的ip地址啊!!!

这个文件在Nacos配置中心中:(要打开这个网站进行修改呀,比较复杂,在b站视频里的P26详细交大家修改)

4.创建配置类,读取配置文件信息

在service-customer创建包config,创建类,读取配置文件内容

这个wx.miniapp和appId和secret是在配置文件中规定的,不能乱写哦~

5.创建微信包对象

给我看好啊,很简单的~

乘客端登录:获取登录用户信息接口

在service-controller里面写代码 获取信息

这个是这样的,在controller里面得到我们的code值,拿code调方法最终返回用户ID

@Slf4j
@RestController
@RequestMapping("/customer/info")
@SuppressWarnings({"unchecked", "rawtypes"})
public class CustomerInfoController {

	@Autowired
	private CustomerInfoService customerInfoService;


	//微信小程序登录接口
	@Operation(summary = "小程序授权登录")
	@GetMapping("/login/{code}")
	public Result<Long> login(@PathVariable String code) {
		return Result.ok(customerInfoService.login(code));
	}

service-impl-CustomerInfoServiceImpl里

这个是这样的,根据code得到我在微信小程序中的唯一标识openid,拿着openid查数据库,如果不存在---表示第一次----加到表里,记录登录日志,返回登录id~

@Slf4j
@Service
@SuppressWarnings({"unchecked", "rawtypes"})
public class CustomerInfoServiceImpl extends ServiceImpl<CustomerInfoMapper, CustomerInfo> implements CustomerInfoService {

    @Autowired
    private WxMaService wxMaService;
    
    @Autowired
    private CustomerInfoMapper customerInfoMapper;

    @Autowired
    private CustomerLoginLogMapper customerLoginLogMapper;

    //微信小程序登录接口
    @Override
    public Long login(String code) {
        //1 获取code值,使用微信工具包对象,获取微信唯一标识openid
        String openid = null;
        try {
            WxMaJscode2SessionResult sessionInfo =
                    wxMaService.getUserService().getSessionInfo(code);
            openid = sessionInfo.getOpenid();
        } catch (WxErrorException e) {
            throw new RuntimeException(e);
        }

        //2 根据openid查询数据库表,判断是否第一次登录
        //如果openid不存在返回null,如果存在返回一条记录
        //select * from customer_info ci where ci.wx_open_id = ''
        LambdaQueryWrapper<CustomerInfo> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(CustomerInfo::getWxOpenId,openid);
        CustomerInfo customerInfo = customerInfoMapper.selectOne(wrapper);

        //3 如果第一次登录,添加信息到用户表
        if(customerInfo == null) {
            customerInfo = new CustomerInfo();
            customerInfo.setNickname(String.valueOf(System.currentTimeMillis()));
            customerInfo.setAvatarUrl("https://oss.aliyuncs.com/aliyun_id_photo_bucket/default_handsome.jpg");
            customerInfo.setWxOpenId(openid);
            customerInfoMapper.insert(customerInfo);
        }

        //4 记录登录日志信息
        CustomerLoginLog customerLoginLog = new CustomerLoginLog();
        customerLoginLog.setCustomerId(customerInfo.getId());
        customerLoginLog.setMsg("小程序登录");
        customerLoginLogMapper.insert(customerLoginLog);

        //5 返回用户id
        return customerInfo.getId();
    }

-------------------------------------告一段落---------------------------------------------

乘客端登录:登录校验

aop + 自定义注解

乘客端登录:获取微信手机号

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值