Bootstrap

某小程序开发

某小程序开发

整体架构

小程序端

服务端

├─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": ""
    }
}

注意事项

本地测试时记得商户号的订单号填过去时间的格式 别用以后的
;