# 技术分析

在2020/04/23 16:56上被shi chuck修改
导出
Office Formats
以PDF格式导出
Other Formats

Select the pages to export:

select all / none

以HTML格式导出

Summary

- 案例1：卡鉴权
- 案例2：心跳数据查询
- 案例3：关键字回覆
- 案例4：日志分析之查心跳
- 案例5：日志分析之查鉴权请求
- 案例6：日志分析之密码充电失败
- 案例7：测试环境 刷卡启动失败

分析主要分两类：数据库、应用日志。

# 案例1：卡鉴权

思路：

- 根据账单号、手机号等信息，检查 recharge_history 中状态。关键字段包含：
  - C_STATUS
  - C_PREV_CHG_STATUS
  - C_CHG_STATUS
- 根据账单号，检查recharge_history_status_report 对应账单充电事务跟踪信息。此表记录了从启动充电 至 充电结束中所有充电变化状态。关键字段包含：
  - C_STATUS
- 卡鉴权一般 recharge_history.C_STATUS=2，进一步 检查recharge_history_status_report.C_STATUS 整个充电过程。得出基本分析结论。
- 真正原因可能需要将基本结论转交研发进一步确认。
- 是否人工修正此状态，需综合评估后再处理。

# 案例2：心跳数据查询

sql 语句：
select rhsr.C_CREATE_DATE
#,C_SERVICESTART
,C_CHARGE_START 服务开始时间,C_CHARGE_END 充电结束时间,C_SERVICEEND 服务结束时间
#,rhsr.c_device_number
#,C_BILLING_ID,rhsr.C_USER_ID
,C_CHARGE_DURATION 充电时长（秒）,
rhsr.C_CHARGE_POWER 当前电量,rhsr.C_STATUS 充电状态
from recharge_history_status_report rhsr
#LEFT JOIN member m on m.c_user_id=rhsr.c_user_id
where
rhsr.C_BIllING_ID='20191024144331381526'
order by rhsr.C_create_DATE desc
#limit 25

# 案例3：关键字回覆

sql 语句：

INSERT INTO `wx_reply` VALUES (1, 'subscribe', ' 尊敬的用户，欢迎使用充电服务。想咨询有关充电信息，请回复以下对应数字：\n[1]如何充电\n[2]电桩故障情况\n[3]关于退款\n[4]如结束充电');
INSERT INTO `wx_reply` VALUES (2, '1', ' “扫码充电”步骤如下：选择电桩屏幕“扫码充电”会出现二维码，通过微信【扫一扫】扫描屏幕上二维码即可在手机端开始充电。密码充电用户选择电桩屏幕“密码充电”，进入公众号，点击中间“充电密码”，将密码输入电桩即可开始充电。');
INSERT INTO `wx_reply` VALUES (3, '2', ' 如遇扫码不能充电，您可以尝试使用密码充电、重新尝试插拔枪连接或者更换其他电桩进行充电；如电桩亮红灯，请将电桩上红色“急停按钮”顺时针转回，即可恢复正常');
INSERT INTO `wx_reply` VALUES (4, '3', '如需退款请依次进入“个人中心”-》点“个人账户”-》右上角点“我要退款”，审核通过后余额退还（微信充值退回微信，信用卡充值退回信用卡，储蓄卡充值退回储蓄卡；赠送电卡金额除外）。');
INSERT INTO `wx_reply` VALUES (5, '4', ' 如您使用扫码充电，可在手机端手动结束；如您使用密码充电，可在电桩屏幕上输入密码后，选择“结束充电”；如果遇到手机网络延迟或输入密码无法结束，您可以按下充电枪枪把处按钮，按下后电桩会自动结束充电，而后拔枪即可。');
INSERT INTO `wx_reply` VALUES (12, '帮助', ' 尊敬的用户，欢迎使用充电服务。想咨询有关充电信息，请回复以下对应数字：\n[1]如何充电\n[2]电桩故障情况\n[3]关于退款\n[4]如结束充电');

# 案例4：日志分析之查心跳

关于日志逻辑，主要看几个接口数据，比如电量、心跳。浏览器中ctrl+f查些关键字。

查看日志，还需要 学会数据格式json https://www.w3school.com.cn/json/index.asp

接口一：更新充电状态信息

接口描述:

DYNAMIC在状态发生变化或者经过一定时间间隔时上传充电服务状态信息。

接口地址:

http://IP:PORT/boss/charge/updateChargeInfo

接口二：提交充电记录

接口描述:

DYNAMIC在充电结束后提交本次充电服务的详细记录。

接口地址:

http://IP:PORT/boss/charge/addChargeRecord

# 案例5：日志分析之查鉴权请求

~密码充电，平台日志会收到鉴权请求，日志格式排查可 以关键字（其中桩id按实际替换）：“deviceNumber: 35010400080000200014 >”。

实例如下：（对应 案例 fzfs_case#4_20191121）

以方硕福州齐安充电站 桩id=35010400080000200014 ，如平台收到 密码充电 会有如下日志。2019-11-21 07:24:47,962 INFO [com.himorning.base.interceptors.BaseInterceptor] - <POST : subUnits: encryptionAlg: md5 authType: 0 chargeUnitLabel: 3 password: 573B8926F015AA477CB6604901B92AEA deviceNumber: 35010400080000200014 >

反之：紫阳站 桩id=35011100080000200001 ,在今日 未查到 类似日志。 说明平台未收到桩端请求上送。
~刷卡充电 日志示例
2019-11-26 10:40:50.368 | http-nio-8010-exec-1 | INFO | c.s.b.f.CustomAuthenticationFilter.doFilter(68) : POST : authType: 2 chargeUnitLabel: 2 deviceNumber: 44200000010000200002 subUnits: userCardNumber: 0001000000000013
2019-11-26 10:40:50.368 | http-nio-8010-exec-1 | INFO | c.s.boss.controller.ChargeController.auth(133) : =========receiveTspAction=====auth() password= null | deviceNumber=44200000010000200002

# 案例6：日志分析之密码充电失败

~密码充电（测试平台为例）

1、登录‘https://mc-uat.linghuchongtech.com/‘，依次进入“首页/系统管理/运维管理/日志查询”。
2、日志栏数据“/auth”，点查询，如涉及时间，选择正确时间区间。
3、按ctrl+f5, 右上角查询栏输入：authType，查询关键字，分析问题。本例示例为充电密码3分钟内未启动充电，见下图：

# 案例7：测试环境 刷卡启动失败

~

平台配合在线刷卡测试相关：
1、此项测试要解决什么问题（原因）：测试环境刷卡鉴权失败，之前一直正常。
2、在线刷卡场景
3、测试环境，用的卡：8647000000000005、 8647000000000006
4、桩号 44520200040002400051

【初步分析】：

sql语句：SELECT id, C_NICKNAME,C_MOBILE,C_CARDNUMBER,C_TYPE FROM member o WHERE o.C_CARDNUMBER like concat('%','8647000000000006','%') or o.C_CARDNUMBER like concat('%','8647000000000005','%');
1、8647000000000005卡号重复绑定
2、8647000000000006 卡号绑定正常，下图 是8647000000000006卡的鉴权失败。转研发

标签：
在2019/10/08 11:04上被shi chuck创建

- 评论 （0）
- 附件 （2）
- 记录
- 信息

# Applications

XWiki 10.11.9