支付逻辑
- 获取token (pay/token)
A. 加入付费星球
第一步:请求pay/groups/" + groupId + "/join
第二步:调微信支付
第三步:支付成功后,判断是否需要审核
Y:跳第四步
N:跳第五步
第四步:设置当前exmine_status=3(等待状态),改变页面最下面的支付状态,显示点击提交加入申请,然后执行第五步
第四步的作用是针对APP在跳转到审核后,未做任何操作,返回到当前界面
第五步:显示加载条(正在查询支付结果...),每隔一秒循环请求pay/result接口;直到返回status=5或查询次数超过13次;如果失败,关闭加载条,弹出提示框:查询支付失败,请关注[粉丝星球App]公众号,联系客服;按钮知道了
为什么是13次?后台在失败后6秒会再重新查询一次;所以设置最大重试次数为2
第六步:当status=5时,判断是否需要审核
Y:关闭加载条,跳转填写审核界面,填写成功后,返回落地页,下方显示申请已提交,等待星主审核
N:直接跳转到对应星球
B. 付费提问
请求pay/topics/" + topicId + "/question"接口,支付成功后关闭页面
C. 主题打赏
请求"pay/topics/" + topicID + "/reward -> 显示正在查询支付结果...加载条 -> 请求支付结果 -> 刷新主题详情 或 主动修改打赏列表数据
D. 星球续费
请求"pay/groups/" + groupID + "/renew -> 显示正在查询支付结果...加载条 -> 请求支付结果 -> 改变相应UI显示
2. 发布多媒体
第一步:开启Service,把数据交给Serivce处理;通知同时,在主题列表创建预览主题
A:纯文本
第二步:直接发布成功,删除对应预览主题,刷新主题列表
B: 有图片
第二步:取第一张图片,先压缩,再根据条件添加水印(压缩与加水印排除gif类型)
第三步: 获取七牛云TOKEN(接口ugc/key),返回token和url
参数type的值为image
第四步: 上传文件,文件目录待统一;key即为相对路径,拼接规则:fileDirectory + "/" + fileName + fileType; token 即为第三步得到的token
第五步: 获取文件ID,接口名整个为第三步的url,另外一个参数url传的是https://file.fensixingqiu.com/ + 第四步拼的key,这个key也可以取上传七牛云回调的key,一样的
第六步: 循环到第二步,直到把1-9张上传完毕,其中拼接文件ID
第七步:上传整个话题;发布成功,删除对应预览主题,刷新主题列表
第八步: 上传失败,更新预览主题状态为发布失败,可重试,可删除
C: 音频
第二步: 获取七牛云TOKEN(接口ugc/key),返回token和url
参数type的值为voice
第三步: 同B的第四步
第四步: 同B的第五步
第五步 第六步: 同B的第七步,第八步
D: 视频
第二步:压缩视频
压缩规则: 视频宽高有一方大于1000,则除2,如果大小超过100M,再除2,如果视频有旋转,要旋转,防止压缩后变形
第三步: 获取七牛云TOKEN(接口ugc/key),返回token和url
参数type的值为video
第四,五步:同B第四,五步
第六步:上传整个话题;发布成功,删除压缩文件,删除对应预览主题,刷新主题列表
第七步: 同B第八步
3.图片视频显示规则
-
视频显示
A. 在主题列表:高度196,宽度适应,最低宽度不小于100;同时截取中间(考虑到后台返回宽高出错,或宽度超过屏幕的情况)
B. 在主题详情: 如果宽大于或等于高,则宽度满屏,高度适应;否则高度固定196,宽度适应;
出于考虑到视频一定要点开才能看,我觉得高度占得太多没意义
C. 其它页面都是100 * 100 -
图片显示,主要讨论单图
在主题列表与详情,多图展示,宽高相等;宽高 = (屏幕宽度-相关间距)/3
A. 在主题列表:高度196,宽度适应,最低宽度不小于100;同时截取中间(考虑到后台返回宽高出错,或宽度超过屏幕的情况)
B. 在主题详情:宽度满屏,高度自适应
C. 未回答的提问,图片显示同A,B,主题详情一样
D. 有回答的提问,提问照片100*100固定,回答图片同A,B,主题详情一样
E. 评论里的照片统一100*100