某小程序开发
文章目录
整体架构
小程序端
略
服务端
树
├─cacher
│ 加密替换Cache.java
│ 加密替换CacheFactory.java
│ 加密替换CacheManager.java
│ 加密替换CacheManagerImpl.java
│ 加密替换CacheToken.java
│ MessageSessionManager.java
│
├─config
│ kkkk加密kkkk加密替换Adapter.java
│ kkkk加密kkkk加密替换Configuration.java
│ kkkk加密kkkk加密替换Intercept.java
│ kkkk加密kkkk加密替换Properties.java
│
├─domain
│ ResultData.java
│ kkkk加密kkkk加密替换Configure.java
│
├─model
│ 加密替换AddressGroupModel.java
│ 加密替换AddressModel.java
│ 加密替换ChildGroupModel.java
│ 加密替换kkkk加密kkkkDetailModel.java
│ 加密替换ConfirmOrderModel.java
│ 加密替换EvaluationModel.java
│ 加密替换OrderDetailIncludeModel.java
│ 加密替换OrderDetailInfoModel.java
│ 加密替换OrderDetailModel.java
│ 加密替换OrderModel.java
│ 加密替换kkkk加密kkkkkkkk加密kkkkModel.java
│ 加密替换StandardModel.java
│
├─加密替换
│ 加密替换Address加密替换.java
│ 加密替换Affix加密替换.java
│ 加密替换CollectRecords加密替换.java
│ 加密替换kkkk加密kkkkDetail加密替换.java
│ 加密替换Config加密替换.java
│ 加密替换加密替换加密替换.java
│ 加密替换Dept加密替换.java
│ 加密替换Distribution加密替换.java
│ 加密替换DistributionScope加密替换.java
│ 加密替换Evaluation加密替换.java
│ 加密替换MerchantAccount加密替换.java
│ 加密替换MultiSubMng加密替换.java
│ 加密替换NumberRule加密替换.java
│ 加密替换OrderDetail加密替换.java
│ 加密替换Order加密替换.java
│ 加密替换ReceiveConfig加密替换.java
│ 加密替换ReceivePerson加密替换.java
│ 加密替换Record加密替换.java
│ 加密替换kkkk加密kkkkkkkk加密kkkkRecord加密替换.java
│ 加密替换kkkk加密kkkkkkkk加密kkkk加密替换.java
│ 加密替换kkkk加密kkkkInfo加密替换.java
│ 加密替换YaoJuLingQu加密替换.java
│ kkkk加密kkkk加密替换Configure加密替换.java
│
├─service
│ │ kkkk加密kkkk加密替换LoginService.java
│ │ kkkk加密kkkk加密替换OrderService.java
│ │ kkkk加密kkkk加密替换Service.java
│ │
│ └─impl
│ kkkk加密kkkk加密替换LoginServiceImpl.java
│ kkkk加密kkkk加密替换OrderServiceImpl.java
│ kkkk加密kkkk加密替换ServiceImpl.java
│
├─utils
│ 加密替换Const.java
│ 加密替换OrderCreateUtil.java
│ 加密替换OrderUtil.java
│ kkkk加密kkkkConst.java
│
└─web
加密替换ProcessController.java
kkkk加密kkkk加密替换Controller.java
小程序拦截器
目录:路径加密替换\config
相关配置文件 属性
拦截路径
mainInterceptor=/kkkk加密kkkk/加密替换/**
特殊处理不拦截接口
未登录接口 拦截器检测到未登录 重定向到这里
登录接口
微信支付成功回调接口
SpecialTreatment=/kkkk加密kkkk/加密替换/notLoginInIntercept,/kkkk加密kkkk/加密替换/加密替换字符加密替换Login,kkkk加密kkkk/加密替换/字符加密替换/notifykkkk加密kkkk加密替换
初始化接口 未登录跳转的接口 拦截器检测到未登录 重定向到这里
initializationUrl=/kkkk加密kkkk/加密替换/notLoginInIntercept
无实际意义
unboundPrompt=\u60a8\u597d\uff0c\u8bf7\u5148\u767b\u5f55
具体实现
kkkk加密kkkk加密替换Properties 此类为微信小程序配置读取类
kkkk加密kkkk加密替换Intercept 此类为微信小程序 拦截逻辑处理类
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
currentAddress = request.getRequestURI();
String header;
String requestURI = request.getRequestURI();
if (Objects.equals(加密替换Const.MESSAGE_URL, requestURI)) {
header = request.getHeader(加密替换Const.****TOKEN*****);
if (!Objects.equals(null, header) && Objects.equals(加密替换Const.****TOKEN*****_VALUE, header)) {
return true;
}
} else if (Objects.equals(加密替换Const.MESSAGE_BIND, requestURI)) {
header = request.getHeader(加密替换Const.****TOKEN*****);
if (!Objects.equals(null, header) && !Objects.equals(加密替换Const.kkkk加密kkkk_INIT, header)) {
String messageCode = 字符加密替换Cache.getMessageCode(header);
if (!Objects.equals(null, messageCode) && !Objects.equals(加密替换Const.kkkk加密kkkk_INIT, messageCode))
return true;
}
} else {
header = request.getHeader(加密替换Const.字符加密替换_TOKEN);
if (!Objects.equals(null, header) && !Objects.equals(加密替换Const.kkkk加密kkkk_INIT, header)) {
字符加密替换CacheFactory session = 字符加密替换Cache.getSession(header);
if (!Objects.equals(null, session) && !Objects.equals(null, session.get字符加密替换Id()))
return true;
}
}
response.sendRedirect(initializationUrl);
return false;
}
kkkk加密kkkk加密替换Configuration 拦截器中间类 初始化相关需要
kkkk加密kkkk加密替换Adapter 拦截器启动 生成对应拦截器bean类
@Override
public void addInterceptors(InterceptorRegistry registry) {
kkkk加密kkkk加密替换Intercept kkkk加密kkkk加密替换Intercept = new kkkk加密kkkk加密替换Intercept();
kkkk加密kkkk加密替换Intercept.setUnboundPrompt(unboundPrompt);
kkkk加密kkkk加密替换Intercept.setInitializationUrl(initializationUrl);
kkkk加密kkkk加密替换Intercept.set字符加密替换Cache(字符加密替换Cache);
registry.addInterceptor(kkkk加密kkkk加密替换Intercept)
.addPathPatterns(mainInterceptor)
.excludePathPatterns(specialTreatment);
super.addInterceptors(registry);
}
小程序用户缓存以及加密
路径 路径加密替换/cacher
小程序用户缓存相关
字符加密替换Cache 根据****TOKEN*****获取小程序用户等逻辑类
缓存相关 自己看代码去 有个注意的取用户的有一步骤给他setid是因为直接去出来的对象没有id
和底层有关做的时候没有细看了 这也是为什么要缓存用户对象与用户id的原因
字符加密替换CacheFactory
字符加密替换CacheManager
字符加密替换CacheManagerImpl
字符加密替换CacheToken
MessageSessionManager小程序短信session
小程序缓存xml文件 字符加密替换Cache.xml
<?xml version="1.0" encoding="gbk"?>
<ehcache name="max字符加密替换" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd">
<diskStore path="user.dir"/>
<defaultCache
maxElementsInMemory="100000"
eternal="false"
timeToIdleSeconds="1800"
timeToLiveSeconds="0"
overflowToDisk="true"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
<cache name="字符加密替换Session"
maxElementsInMemory="100000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="108000"
timeToLiveSeconds="0"
memoryStoreEvictionPolicy="LFU" >
</cache>
</ehcache>
默认过期时间 30分钟 最大用户量100000
缓存相关代码
字符加密替换CacheToken
private static final long serialVersionUID = 290664354657391381L;//必须要序列化
private String id;//缓存的键值
private String authenticationCache;//缓存的键值(验证码的时候用了一下)
private Jsw字符加密替换Reception 字符加密替换;//缓存实体类(没有id所以单独设置了一下字符加密替换Id)
private Long 字符加密替换Id;//缓存实体类id
private Date cacheCreatDate;//缓存时间
小程序配置相关信息
路径加密替换/domain/kkkk加密kkkk加密替换Configure.java
配置类
kkkk加密kkkk加密替换Configure
private Long kkkk加密kkkk加密替换kkkk加密kkkkGroupId; //当前小程序所负责的在线网点的dept 地区id
private String kkkk加密kkkk加密替换NotifyUrl;//支付成功回调地址
private String kkkk加密kkkk加密替换UnifiedOrderUrl;//微信支付地址
小程序登录 注册 绑定 验证码
http://*****************************/加密替换字符加密替换Login?code=234567890&******flag*****=^^^
异常
{
"status": false,
"msg": "LOGIN_INTERFACE",
"data": {
"hasBind": false,
"error_reason": "登录失败!"
}
}
{
"status": false,
"msg": "LOGIN_INTERFACE",
"data": {
"error_reason": "小程序服务区不存在!"
}
}
{
"status": false,
"msg": "LOGIN_INTERFACE",
"data": {
"error_reason": "微信用户信息获取失败!"
}
}
正常
{
"status": true,
"msg": "LOGIN_INTERFACE",
"data": {
"hasBind": true,
"字符加密替换Name": "13344556677",
"error_reason": "登录成功!",
"****TOKEN*****": ""
}
}
获取验证码接口 拦截器固定校验 ****TOKEN*****值固定
http://*****************************/getMsgCode?mobile=13344556677
****TOKEN*****
{
"status": true,
"msg": "GET_MESSAGE_CODE_INTERFACE",
"data": {
"****TOKEN*****": "4a741c64-a5ec-4b93-8fa8-c5479e12114f",
"error_reason": "短信发送成功"
}
}
绑定接口 新用户 注册 老用户绑定 ****TOKEN*****取获取验证码接口返回的值 header存放
http://*****************************/加密替换字符加密替换Bind?code=234567890&******flag*****=^^^&messageCode=6471&userName=13344556677
****TOKEN*****
异常
{
"status": false,
"msg": "字符加密替换_BIND_INTERFACE",
"data": {
"bindSuccess": false,
"error_reason": "验证码不正确!"
}
}
{
"status": false,
"msg": "字符加密替换_BIND_INTERFACE",
"data": {
"bindSuccess": false,
"error_reason": "您输入的手机号和接收验证码的手机号不一致!"
}
}
{
"status": false,
"msg": "字符加密替换_BIND_INTERFACE",
"data": {
"bindSuccess": false,
"error_reason": "微信用户信息获取失败!"
}
}
正常
{
"status": true,
"msg": "字符加密替换_BIND_INTERFACE",
"data": {
"bindSuccess": true,
"error_reason": "绑定成功!"
}
}
小程序业务接口
以下接口都需要****TOKEN***** header存放
个人中心
http://*****************************/get字符加密替换CenterInfo?******flag*****=^^^
{
"status": true,
"msg": "get字符加密替换CenterInfo",
"data": {
"phone": "13344556677",
"加密替换HeadPortrait": null,
"groupName": "*市**",
"加密替换NickName": null
}
}
同步头像 昵称
http://*****************************/synchronization字符加密替换Info?加密替换NickName=sdd&加密替换HeadPortrait=http://*****************************/get字符加密替换CenterInfo?加密替换NickName%26加密替换HeadPortrait
{
"status": true,
"msg": "synchronization字符加密替换Info",
"data": {
"errorMessage": "同步成功!"
}
}
解绑
http://*****************************/加密替换字符加密替换UnBind
药具列表
http://*****************************/get加密替换字符加密替换List?******flag*****=^^^
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"systemFlags": "hunan",
"kkkk加密kkkk字符加密替换List": [
{
"id": 75901,
"imgId": 503,
"packSpec": 10,
"provideNum": 525,
"kkkk加密kkkkId": 84222,
"title": ""
}
]
}
}
药具图片 取"imgId": 648,
http://*****************************/show加密替换字符加密替换Image?imgId=503
药具详情 id取 "id": 75934,
http://*****************************/get加密替换字符加密替换DetailInfo?id=75934
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"加密替换字符加密替换DetailModel": {
"id": 75934,
"imgId": 648,
"packSpec": 10,
"limitNum": 3,
"title": "",
"description": "",
"canChangeFlag": false,
"details": {
"detailId": 95229,
"inventory": 19050,
"detailIds": "95229",
"standardModel": ""
}
}
}
}
http://*****************************/check字符加密替换Receive?detailId=95229&numbers=3
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"isReceive": false,
"errorMsg": "",
"inventoryFlg": true,
"isPayment": true
}
}
"detailId": 95229, numbers 前端传
订单页
http://*****************************/check字符加密替换Receive?detailId=95229&numbers=3
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"addressId": 48438,
"phone": "15153850021",
"supportOnLine": 3,
"distributionId": 5,
"groupName字符加密替换": [
],
"systemFlags": "hunan",
"arriveTime": "",
"title": "",
"address": "9899898989898",
"groupName": "*市**",
"kkkk加密kkkkName": "*市**",
"id": 95229,
"groupId": 863615,
"name": "",
"distributionPrice": 6.5,
"areaName": "9898 *市** 0909",
"inventory": 19050,
"number": 3
}
}
地址列表页
http://*****************************/getReceiveAddressList字符加密替换?******flag*****=^^^
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"groupId": 863615,
"groupName字符加密替换": [
],
"systemFlags": "hunan",
"加密替换AddressList": [
{
"id": 48970,
"isDefault": 1,
"name": "dsdsdfs",
"address": "分工会尽快",
"phone": "16677889922",
"areaAddress": "0908 *市** 8787",
"province": "9898",
"city": "*市**",
"area": "8787"
},
],
"groupName": "*市**"
}
}
新增地址 下拉框 1,2
http://*****************************/receiveAddressInitInfo字符加密替换
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"加密替换AddressGroupInitInfo": {
"provinceId": 839753,
"provinceName": "uykukg",
"systemFlag": "yttyj",
"childGroupModel": [
]
}
}
}
http://*****************************/getGroupListAddress字符加密替换?parentGroupId=846049
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"childGroupList": [
]
}
}
http://*****************************/addNewAddress字符加密替换?groupId=846731&name=dsdsdfs&phone=16677889922&address=分工会尽快&areaAddress=提货费 *市** 还让他
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"errorMessage": "新增并设置默认收货地址成功!"
}
}
http://*****************************/updateAddress字符加密替换?******flag*****=^^^&groupId=846731&name=的非官方的&phone=16677889922&address=电饭锅电饭锅电饭锅&areaAddress=单张表&id=48970
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"errorMessage": "编辑并设置默认收货地址成功!"
}
}
http://*****************************/receiveAddressDefault字符加密替换?addressId=48438
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"errorMessage": "设置当前收货地址成功"
}
}
http://*****************************/receiveAddressDelete字符加密替换?addressId=48438
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"errorMessage": "地址删除成功"
}
}
http://*****************************/getProductEvaluateList字符加密替换?kkkk加密kkkk字符加密替换ID=75934
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"加密替换EvaluationList": [
]
}
}
http://*****************************/saveOrderEvaluation?score=5&content=大V发送的范德萨发生大&orderId=41123
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"errorMessage": "评价成功!"
}
}
http://*****************************/getDefaultAddress字符加密替换
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"checkAreaName": "市政府归国四子"
}
}
"kkkk加密kkkkName": "*市**", 有个接口有返回kkkk加密kkkkName
http://*****************************/getCheckFlagForOrder加密替换?addressId=48970&kkkk加密kkkkName=*市**
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"checkFlag": false
}
}
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"checkFlag": true
}
}
if(supportOnLine == 2){
support= 0;
}else{
support= 1;
}
http://*****************************/kkkk加密kkkk加密替换OrderNewAdd?detailId=95229&numbers=3&addressId=48970&******flag*****=^^^&distributionId=5&supportOnLine=3&remark=实打实大所大
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"price": 6.5,
"orderId": 41761,
"paymentId": "2",
"orderNumber": "DD2022042600004"
}
}
http://*****************************/kkkk加密kkkk加密替换PayOrderPrepare?orderId=41758&******flag*****=^^^
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"dept": "*市**",
"orderCode": "DD2022042600001",
"orderId": 41758,
"distributionPrice": 6.5
}
}
生成xml===
<xml>
<appid>广发斯蒂芬广东省</appid>
<body>杀伐果断</body>
<detail>市公司发鬼地方广东省(分公司第三方的根本+刚发)(东莞市地方)</detail>
<device_info>三个梵蒂冈发送到</device_info>
<fee_type>撒发到啥梵蒂冈</fee_type>
<mch_id>股份所得税法国的</mch_id>
<nonce_str>三个地方啥梵蒂冈</nonce_str>
<notify_url>东方故事水电费加密替换/字符加密替换/notifykkkk加密kkkk加密替换</notify_url>
<openid>该发生的广泛地</openid>
<out_trade_no>杀伐果断覆盖的</out_trade_no>
<sign>杀伐果断覆盖的</sign>
<spbill_create_ip>192.国风大赏杀伐果断.0.公司公司发的</spbill_create_ip>
<total_fee>刚发生多个发送到</total_fee>
<trade_type>三公分的双方各得</trade_type>
</xml>
name:==return_code==value==SUCCESS
name:==return_msg==value==OK
name:==result_code==value==FAIL
name:==err_code_des==value==无效的openid
name:==err_code==value==PARAM_ERROR
name:==mch_id==value==公费师范刚说的
name:==appid==value==公司发的三个地方
name:==device_info==value==公司发送
name:==nonce_str==value==施工方对公司发的
name:==sign==value==施工方第三个发的
http://*****************************/kkkk加密kkkk加密替换PayOrderPay?******flag*****=^^^&orderId=41761
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"code": "error",
"msg": "无效的openid"
}
}
{
"status": true,
"msg": "PROCESS_INTERFACE",
"data": {
"code": "ok",
"items": {
"appId": "*************",
"nonceStr": ""*************",",
"package": ""*************",",
"packages": ""*************",",
"paySign": ""*************",",
"signType": ""*************",",
"timeStamp": ""*************","
},
"msg": ""
}
}