小程序可以根据管理后台配置动态更新显示内容,如实现以下新栏目图片的可配置来源,点击可配置跳转url。
实施方案
1后端创建一个具有map结构的数据表,表结构如下:
2管理后台根据不同的业务设置不同的键和值,并更新数据库
例如密钥:ad1网址值:a.png
如果需要更新页面图片,只需更新ad1url对应的值即可
3.小程序根据相应的业务密钥获取相应的配置项,并更新页面显示
技术栈
后端接口服务:SpringBoot Mybatis MySql
管理背景:vue
前端:小程序
代码实现
后端接口
为了保证密钥的唯一性,在数据库中将密钥设置为唯一属性,并通过以下sql语句实现添加和更新功能,配置项的唯一性主要通过替换为实现
@ Insert(' script ' ' REPLACE INTO ' learning ` .` t _ config `(` key `,` value `)VALUES ' ' foreach ' ' collection= ' list ' item= ' item 1 ' index= ' index 的API设计' separator= ', '(# { item 1 . key },# { item 1 . value })' '/foreach ' '/script ')@ options(usegenerated keys=true,keyproperty=' config id ',keycolumn=' config id ')
刚开始想通过向后端传输列表数据来实现配置项的批量插入功能,发现后端数据一直无法接受,于是退而求其次,实现了vue(网络库中使用axios)通过json字符串调用后端接口
@ApiOperation(值='添加或更新配置列表')@ requestmapping(值='/add _ or _ update _ config _ list ',method=requestmethod.post,produces=MediaType。APPLICATION_JSON_UTF8_VALUE)公共响应字符串addOrUpdateConfigList(字符串列表){ long result=configservice . batchinsertorupdate(jsonobject . parserarray(list,config . class));}管理平台
管理平台采用vue开发,网络架构采用axios,列表数据通过json字符串传输到后端
let config1={key: 'ad1Url ',value : this . form data . AD1 URl };let config2={key: 'ad2Url ',value : this . form data . AD2 URl };让config3={key: 'adClick1 ',value : this . formdata . adclick 1 };让config4={key: 'adClick2 ',value : this . form data . adclick 2 };让configList=[config1,config2,config3,config 4];let result=wait addConfigList({ list : JSON . stringify(config list)});小应用程序
小程序调用后端接口返回所有配置项,具体业务根据具体业务密钥获取配置项
getConfigList:函数(){ var=this;wx.request({ url:常量。HOST '/config/get_config_list ',method: 'GET ',header : { ' content-type ' : ' application/JSON ' },complete: function (res) { },success : function(RES){ console . log(' config list response : ' JSON . stringify(RES));that . setdata({ configlist : RES . data . data });} });},GoD 1: function(){ wx . navigateto({ URL : '/pages/web view/web view?URL=' this . data . config list . ad click 1 })},摘要
这个功能,是我在自己开发小程序的过程中设计的,主要遇到了两个小问题:1。如果保证密钥的唯一性,则为2。前端和后端批量数据的传输;希望能给遇到过同样问题的小伙伴一些启示。如果有更好的方案,欢迎大家一起讨论
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。