润生商团出行打车模块(环境安装)2

<insert id="insert" parameterType="com.example.hxds.dr.db.pojo.WalletEntity">
    INSERT INTO tb_wallet
    SET driver_id = #{driverId},    <!-- 设置 driver_id 字段的值为传入的 driverId 参数 -->
    balance = #{balance},         <!-- 设置 balance 字段的值为传入的 balance 参数 -->
    password = #{password}        <!-- 设置 password 字段的值为传入的 password 参数 -->
</insert>

  


  • 微服务认证最佳方案

    BFF(Backends For Frontends)是“服务于前端的后端”的简称。它的核心思想是在设计后端微服务API接口时,考虑到不同设备的需求,为不同的设备提供不同的API接口。

    在没有BFF层的情况下,客户端需要直接访问服务器的公共接口。而在引入BFF层后,客户端不再直接访问服务器,而是调用BFF层提供的接口。BFF层再调用基础的服务,为不同的客户端提供定制化的API接口。这样,不同的客户端拥有不同的BFF层,它们分别定制客户端需要的API接口。

    有了BFF层之后,客户端只需要发起一次HTTP请求,BFF层就能调用不同的服务,然后把汇总后的数据返回给客户端。这样就减少了外网的HTTP请求,提高了响应速度。

    在BFF项目中设置了鉴权模块后,我们只需要在BFF项目的Web方法上面设置权限验证的注解即可。由于一种BFF项目只服务于一种客户端,因此我们不需要考虑不同客户端的权限叠加问题。例如,在司机BFF项目的代码上,我们只需要考虑司机端小程序的权限验证,代驾客户根本不可能访问到司机BFF层。


    其实就是一个项目

  • SaToken是一个国产开源权限验证框架,相较于Shiro和Spring Security,它更加简单易用,适合新手快速上手。SaToken在Gitee上获得了6.2K的star,文档齐全,功能丰富,包括登录认证、权限认证、Session会话、踢人下线、账号封禁、持久层扩展、分布式会话、微服务网关鉴权和单点登录等功能。

    SaToken的特点如下:

  • 功能介绍
    Sa-Token 是一个功能丰富的权限验证框架,涵盖了从前端到后端的多种认证与授权场景。以下是对您列出的 Sa-Token 功能一览的简要解释:
    
    登录认证:
    单端登录:用户在单一设备上登录。
    多端登录:用户可以在多个设备上同时登录。
    同端互斥登录:同一设备上不允许两个账号同时登录。
    七天内免登录:用户在七天内无需再次登录。
    权限认证:
    权限认证:根据用户的权限进行访问控制。
    角色认证:根据用户的角色进行访问控制。
    会话二级认证:对会话进行二次认证以提高安全性。
    Session 会话:
    全端共享 Session:所有设备共享同一个 Session。
    单端独享 Session:每个设备拥有独立的 Session。
    自定义 Session:用户可以自定义 Session 的行为。
    踢人下线:
    根据账号 ID 踢人下线:通过账号 ID 将用户踢出登录状态。
    根据 Token 值踢人下线:通过 Token 值将用户踢出登录状态。
    账号封禁:
    指定天数封禁:将账号封禁指定的天数。
    永久封禁:永久禁止账号登录。
    设定解封时间:设定账号解封的时间。
    持久层扩展:
    可集成 Redis、Memcached 等专业缓存中间件。
    重启数据不丢失:确保缓存数据在重启后仍然可用。
    分布式会话:
    JWT 集成:提供 JWT 集成方案。
    共享数据中心:提供共享数据中心方案。
    微服务网关鉴权:
    适配 Gateway、ShenYu、Zuul 等常见网关的路由拦截认证。
    单点登录:
    内置三种单点登录模式,适应不同的场景。
    OAuth2.0 认证:
    基于 RFC-6749 标准编写。
    支持 OpenID 模式。
    二级认证:
    在已登录的基础上再次认证,增强安全性。
    Basic 认证:
    简化代码接入 HTTP Basic 认证。
    独立 Redis:
    将权限缓存与业务缓存分离。
    临时 Token 验证:
    解决短时间的 Token 授权问题。
    模拟他人账号:
    实时操作任意用户状态数据。
    临时身份切换:
    将会话身份临时切换为其他账号。
    前后台分离:
    支持 APP、小程序等不支持 Cookie 的终端。
    同端互斥登录:
    类似于 QQ,手机和电脑可以同时在线,但两个手机之间互斥登录。
    多账号认证体系:
    例如,一个商城项目的 user 表和 admin 表分开鉴权。
    功能介绍

     

     

     

     

    查找用户表用户是不是存在。根椐主健值和id 来查找。

    这里说明一下为什么传入给SQL的参数是Map,而不是HashMap?
    Hutoo|库里面有个函数可以将Java对象转换成Map对象,而不是HashMap。在Web方法中用 beanToMap()函数
    把表单Form对象转直接换成Map对象很简单,正好我可以把Map对象直接传给SQL语句

  • Map param = BeanUtil.beanToMap(form)   
  • 以下sql 说明一下,返回结果永远不会null ,所以类型为long  如果是其它地方可能会返回空的情况类型要写成
    resultType="java.lang.Long
  • <select id="hasDriver" parameterType="Map" resultType="long">
        SELECT COUNT(id) AS ct
        FROM tb_driver
        WHERE 1=1
        <if test="openId != null">
            AND open_id = #{openId}
        </if>
        <if test="driverId != null">
            AND id = #{driverId}
        </if>
    </select>
    

      以上根据openid   或  字段id   二种条件都可以查,对应的dao 层代码如下:、

  • public interface DriverDao {
      public long hasDriver(Mapg param);
    } 
  • 师机表设计
    CREATE TABLE DriverInfo (
        open_id NVARCHAR(255) NOT NULL COMMENT '小程序的OpenID,唯一标识',
        nickname NVARCHAR(255) NOT NULL COMMENT '昵称,来自微信',
        name NVARCHAR(255) COMMENT '真实姓名',
        sex CHAR(1) NOT NULL COMMENT '性别,M表示男性,F表示女性',
        photo NVARCHAR(255) COMMENT '头像,来自微信',
        pid NVARCHAR(255) COMMENT '身份证号码',
        birthday DATE COMMENT '生日',
        tel CHAR(11) COMMENT '电话号码',
        email NVARCHAR(255) COMMENT '邮箱地址',
        mail_address NVARCHAR(255) COMMENT '收信地址',
        contact_name NVARCHAR(255) COMMENT '应急联系人姓名',
        contact_tel CHAR(11) COMMENT '应急联系人电话',
        real_auth TINYINT NOT NULL CHECK (real_auth IN (1, 2, 3)) COMMENT '实名认证状态,1未认证,2已认证,3审核中',
        idcard_address NVARCHAR(255) COMMENT '身份证上的地址',
        idcard_expiration DATE COMMENT '身份证有效期',
        idcard_front NVARCHAR(255) COMMENT '身份证正面照片',
        idcard_back NVARCHAR(255) COMMENT '身份证背面照片',
        drcard_expiration DATE COMMENT '驾驶证有效期',
        drcard_issue_date DATE COMMENT '驾驶证初次领证日期',
        drcard_front NVARCHAR(255) COMMENT '驾驶证正面照片',
        drcard_back NVARCHAR(255) COMMENT '驾驶证背面照片',
        drcard_holding NVARCHAR(255) COMMENT '手持驾驶证照片',
        home JSON COMMENT '家庭地址,包含地址和定位,用于回家导航',
        summary JSON COMMENT '摘变信息,level等级,totalOrder接单数,weekOrder周接单,weekcamment周好评,appea正在申诉量',
        archive TINYINT NOT NULL CHECK (archive IN (0, 1)) COMMENT '是否在腾讯云归档存放司机面部信息,0为否,1为是',
        status TINYINT NOT NULL CHECK (status IN (1, 2, 3)) COMMENT '司机状态,1正常,2禁用,3降低接单量',
        create_time DATETIME NOT NULL COMMENT '注册时间'
    );
    

      新增一条记录

  • 有的同学可能注意到了上面SQL语句中 status 字段为什么写成了 `status` 形式?这是因为 status 是SQL关键字,作为字段名或者表名的时候必须转义才能使用。

    <insert id="registerNewDriver" parameterType="Map">
        INSERT INTO tb_driver
        SET open_id = #{openId},
        nickname = #{nickname},
        photo = #{photo},
        real_auth = 1,
        summary = '{"level" : 0, "totalOrder" : 0, "weekOrder" : 0, "weekComment" : 0, "appeal": 0}',
        archive = false,
        `status` = 1
    </insert>
    

     dao 层代码 

     

    将结果转字符串:

  • <select id."searchDriverId" parameterType "string" resultType."string">SELECT CAST(id AS CHAR)AS id
    FROM tb driver
    WHERE open id= #{openId}
    </select>
    将结果id 转成字符串id

     

  •  

  •  司机设置记录表返回格式 settings 字段的格式

    {
      "autoAccept": 1, // 自动抢单
      "orientation": "", // 定向接单
      "listenService": true, // 自动听单
      "orderDistance": 0, // 代驾订单预估里程不限,司机不挑订单
      "rangeDistance": 5 // 接收距离司机5公里以内的代驾单
    }
    

      

     

     司机钱包表:tb_wa1let 表是司机钱包表,司机缴纳罚款或者获得系统奖励的时候,都会跟这张表有关系

  •  

     

    <insert id="insert" parameterType="com.example.hxds.dr.db.pojo.WalletEntity">
        INSERT INTO tb_wallet
        SET driver_id = #{driverId},    <!-- 设置 driver_id 字段的值为传入的 driverId 参数 -->
        balance = #{balance},         <!-- 设置 balance 字段的值为传入的 balance 参数 -->
        password = #{password}        <!-- 设置 password 字段的值为传入的 password 参数 -->
    </insert>
    

      

posted @ 2024-06-26 19:46  谢双元小号  阅读(25)  评论(0)    收藏  举报