基于微服务的司机注册与实名认证(活体检测)
3.2 项目技术栈分析
使用了哪些云服务:
对象存储服务 COS —— 存储司机实名认证的身份证和驾驶证照片
人脸识别 AiFace —— 每天司机接单前的身份核实,并且具备静态活体检测功能
人员库管理 face-lib —— 云端存储司机注册时候的人脸模型,用于身份比对使用
数据万象 CI —— 用于监控大家录音文本内容,判断是否包含暴力和色情
OCR 证件识别插件 —— 用于 OCR,识别和扫描身份证、驾驶证的信息
微信同声传译插件 —— 把文字合成语音,播报订单。把录音转换成文本,用于安全监控
路线规划插件 —— 用于规划司机下班回家的线路,或小程序订单显示的路线
地图选点插件 —— 用于小程序上面地图选点操作
腾讯位置服务 —— 路线规划,定位导航,里程和时间预估
技术栈分析:
QLExpress 规则引擎,计算预估费用,取消费用等
Quartz 定时器,销毁过期未接单订单,定时自动分账等等
Phoenix HBase数据存储
GEO GPS分区定位计算
SaToken 认证与授权框架
3.3 运行华夏代驾初始化项目
1. 修改common 项目中的 application-common.yml 文件中,小程序id secret 等。
2. 启动 TM 节点。
3. 启动其他子程序。
4. 子系统运行不起来,检查 端口号冲突、配置信息错误、Java环境错误。
3.4 例子代码
SELECT CAST( id AS CHAR ) AS id FROM tb_driver
@Slf4j //日志注解
HashMap tempParam = new HashMap(){{ put("openId", openId) }}
//司机需提交的注册信息,建一个 Form 类 作为类型,对请求参数进行校验和判断//xxServiceImpl 层加事务
//在 SaToken 上面执行登录,实际上就是缓存 userId,然后才有资格拿到令牌
StpUtil.login( driverId )//生成 Token 令牌字符串(已加密)
String token = StpUtil.getTokenInfo().getTokenValue()
return R.ok().put("token", token)//验证登录注解
@SaCheckLogin
long userId = Convert.toLong(r.get("userId"))
int xx = Convert.toInt()
3.9 例子代码
//swagger代码:
@Tag(name="CosController", description="对象存储web接口")
@Operation(summary="上传文件")
@Schema(description="xxx")
//Controller注解:
@Valid
@RequestBody
@Params("xx")
//微信公众平台内添加 OCR插件:设置 -> 第三方设置 -> 插件管理
//微信同声传译、腾讯位置服务 城市选择器、地图选点、路线规划//manifest.json文件:
"plugins": {"ocr-plugin": {"version": "3.0.6","provider": "wx4418e3e031e551be"}"其他插件也如此"
}
//有Form类的概念,封装网络请求参数,注解如下:
@Data
@NotNull(message="xxx")
@Min(value=1, message="xxx")
@Pattern(regexp="xxx", message="xxx")
@NotBlank(message="xxx")
@Range(min=1, max=12, message="xxx")
@NotEmpty(message="xxx")
3.15 开通活体检测,甄别真实注册司机 (一)
1. 开通人脸识别:https://cloud.tencent.com/product/facerecognition
2. 新建人员库
3. 向人员库上传司机面部照片:https://cloud.tencent.com/document/api/867/45014
4. 在 common 子系统中 application-common.yml 文件中,添加信息
tencent:cloud:......face:groupName: hxdsregion: ap-beijing//使用时
@Value("${tencent.cloud.face.region}")
5. 编码
3.17 例子代码
//SQL语句中:MySQL数字类型查询速度比字符串类型速度快
//返回前端不能是 bigint 类型,要是 char 类型
CAST( id AS CHAR ) AS id//SQL语句
CAST( w.balance AS CHAR ) AS balance//汇总函数
COUNT(id) AS orders//不能返回空
IFNULL( SUM(real_fee), 0) AS income//浮点类型数据库数据 返回给前端会丢失精度,转成字符类型好点
IFNULL( SUM(TIMESTAMPDIFF( HOUR, end_time, start_time)), 0) AS xxxtimestampdiff(YEAR, drcard_issue_date, NOW()) AS `year`DATE_FORMAT( create_time, '%Y-%m-%d') AS createTime
<if test="status != null">AND `status` = #{status}
</if>
LIMIT #{start}, #{length}
HashMap result = driverDao.login(openId)
... ...
result.replace("archive", archive)
long driverId = MapUtil.getLong(map, "id");
StpUtil.login(driverId);
String token = StpUtil.getTokenInfo().getTokenValue();
byte realAuth = Byte.parseByte(MapUtil.getStr(map, "realAuth"));
JSONObject summary = JSONUtil.parseObj(MapUtil.getStr(result, "xx"));
HashMap map = (HashMap) r.get("result");
HashMap map = JSONUtil.parseObj(settings).toBean(HashMap.class)
ArrayList<HashMap> list = null
list = new ArrayList<>()
//把前端传来的Form转成Map,Map传给Dao层
Map param = BeanUtil.beanToMap(form);//讲师自己封装了一个PageUtils
//经过Http后,要这样
HashMap map = (HashMap) r.get("result");
PageUtils pageUtils = BeanUtil.toBean(map, PageUtils.class)
@SaCheckPermission( value={"ROOT", "DRIVER:SELECT"}, mode=SaMode.OR)
//gateway子服务application.yml文件中
routes:-id: bff-driveruri: lb://bff-driverpredicates:-Path=/hxds-driver/**filters:-StripPrefix=1-id: hxds-mis-apiuri: lb://hxds-mis-apipredicates:-Path=/hxds-mis-api/**filters:-StripPrefix=1
腾讯云对象存储服务有一个“生成预签名URL”功能,可以对云端文件生成临时外网URL地址,并且含有签名字符串,预签名URL的文档:https://cloud.tencent.com/document/product/436/35217。签名有过期时间。
//时间定为 5分钟后
Date expiration = DateUtil.offsetMinute( new Date(), 5)
基于微服务的司机注册与实名认证(活体检测)相关推荐
- re.containerbase.startinternal 子容器启动失败_微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)...
走过路过不要错过 点击蓝字关注我们 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件 ...
- 基于微服务和Docker的PaaS云平台架构设计
基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件.数据服务.云服务器等资源,开发人员 ...
- 基于微服务和Docker容器技术的PaaS云平台架构设计
本文讲的是基于微服务和Docker容器技术的PaaS云平台架构设计[编者的话]在系统架构上,PaaS云平台主要分为微服务架构.Docker容器技术.DveOps三部分,这篇文章重点介绍微服务架构的实施 ...
- 基于微服务架构的云平台总体设计
正好这段时间我们在封闭研发我们的新一代数字化云平台(theplatform),借此机会和大家分享一下我们的总体设计及思路: theplatform是一款基于微服务架构的DevOps容器云平台,设计主体 ...
- 公有云上基于微服务架构SAAS产品研发实践「活动通知」
公有云SAAS产品不同于传统的软件包产品,我们不仅需要负责软件的研发,同时需要负责产品的运维,面对众多用户,需要保障产品7X24不间断运行:客户业务是不断变化的,产品需要在持续运行过程中进行持续升级, ...
- 【2017年第3期】交通大数据:一种基于微服务的敏捷处理架构设计
杜圣东, 杨燕, 滕飞 西南交通大学信息科学与技术学院,四川 成都 610031 摘要:面对智慧交通广泛的大数据应用场景和技术需求,一般大数据系统难以适应多种处理情况并做出快速响应.针对这一问题,首次 ...
- 基于微服务下的持续交付环境
背景 随着互联网行业的兴起,敏捷开发.Devops被越来越多的公司提及或实施,力求有效地降低交付过程所耗费的成本并提高交付的效率. 持续交付通过建立自动化的构建.测试.部署机制,实现业务快速上线的过程 ...
- 基于微服务spring cloud+vue+spring boot在线聊天交友软件的设计与实现
针对企业和机构在聊天通讯软件中的的信息管理监控困难.系统稳定性不足.二次开发困难.部署运维困难问题,对一个自主可控,安全稳定的通讯系统进行分析设计. 采用前后端分离的开发模式,前端基于WEB端,采用基 ...
- 基于微服务和mini2440的WebSocket B/S视频监控及MQTT物联网应用系统
文章目录 一.系统基本组成架构 二.Spring Cloud微服务 微服务简介 系统的微服务组成框架 Spring Cloud集成WebSocket Spring Cloud集成MQTT 三.嵌入式L ...
最新文章
- python基础===Number
- 初学多线程使用中踩过的坑
- [Alpha]Scrum Meeting#5
- 机器学习算法中的F值(F-Measure)、准确率(Precision)、召回率(Recall)
- WordPress 实用SEO插件总结
- 【jhipster】springboot时区的设置-将UTC时区设置成中国时区
- urlpatterns的写法和patterns函数
- 关于淘宝商品信息的爬虫
- vue html parser,vue-eslint-parser
- 使用科大讯飞SDK实现语音功能
- 产品经理|需求分析(附《需求池表格》下载)
- axis调用java实现webservice实例
- 2014522420145238《信息安全系统设计基础》实验四
- js时间分割——主要用途——租赁合同时间计算(两种时间分割方式,可以按月,季,年分割)
- 华为开发者联盟上架应用 完结
- 用python设置windows系统桌面背景(壁纸)的代码
- OpenCV每日函数 图像过滤模块 (8) GaussianBlur高斯模糊函数
- (172)SystemVerilog[打两拍]
- matlab中som结果,matlab神经网络工具箱中的som怎么使用
- UE4学习笔记:GamePlay框架与蓝图功能实现,开关门互动、鼠标、按键开门、按键升降电梯