微擎学习随记_常用功能实现

消息通知:

代码位置:

addons/项目名/core/model/notice.php(设置微信信息通知和微信模板消息通知)

需求:

店铺得到收益之后以消息的形式通知店铺

步骤:

1、在notice.php中,加入我们通知方法

2、在用户支付的时候调用该代码,通知商户

代码:

// notice 中
public function league_get_income($order){//查询门店信息$store = pdo_get('ccnb_shop_store',['id'=> $order['storeid']]);$sql =  "select SUM(price*(100-payrate)/100) from ".tablename('ccnb_shop_order')."  where uniacid = {$store['uniacid']} and is_league = 1 and storeid = {$store['id']} and status = 3";$sumMoney = pdo_fetchcolumn($sql);// 拼接消息信息$sumMoney = round($sumMoney,2); // 保留两位小数$getMoney = round($order['price'] *(100 - $order['payrate'])/100,2);$datas = [];$text = "【{$store['storename']}】 您有新的款项入账:成功支付{$order['price']}元,到账{$getMoney}元,累计收益{$sumMoney}元";$message = array('first'    => array('value' => '您的有新的款项入账' . "\n", 'color' => '#ff0000'));// 发送消息信息$this->sendNotice(array('openid' => $store['openid'], 'tag' => 'getIncom', 'default' => $message, 'cusdefault' => $text, 'url' => '', 'datas' => $datas, 'appurl' => ''));com_run('sms::callsms', array('tag' => 'enterExpire', 'datas' => $datas, 'openid' => $store['openid']));}

注意:

// 具体底层调用方式还不太清楚

通知是通过openid来进行对应用用户的通知,通知底层有两种方式:

1、模板消息 :模板消息需要的内容比较多

2、微信消息:微信消息只需要配置消息内容就好了。

底层首先调用微信消息,在微信消息调用不成功的情况下调用模板消息。(微信消息在用户登录48小时内,用户可以收到)

权限设置:

代码位置:

addons/ccnb_shopv3/core/com/perm.php

需求:

为后台商家管理/动态消息管理添加管理权限;

步骤:

1、找到权限的最外层模块(这个对路径要求很严格)

2、在模块内对应的位置添加管理字段

代码:

// .....(代码省略)
$perms = array(...'shop' => $this->perm_shop(), 'store' => $this->perm_store(), 'finance' => $this->perm_finance()...);
// .....(代码省略)
// 权限添加代码
$perm = array('text' => '门店管理','main' => '浏览列表','view' => '查看详情','add' => '添加-log','edit' => '修改-log','delete' => '删除-log',// 'set' => '关键词设置-log','set' => array(...'saler' => array('text' => '店员管理', 'main' => '查看列表', 'add' => '添加-log', 'edit' => '修改-log', 'view' => '查看', 'delete' => '删除-log'),'integral_role' => array('text' => '积分规则设置', 'main' => '查看列表', 'add' => '添加-log', 'edit' => '修改-log', 'view' => '查看', 'delete' => '删除-log'),'audit' => array('text' => '商家审核', 'main' => '查看列表', 'add' => '添加-log', 'edit' => '修改-log', 'view' => '查看', 'delete' => '删除-log'),'message' => array('text' => '消息', 'main' => '查看列表','delete' => '删除-log'),'trends' => array('text' => '动态消息管理', 'main' => '查看列表','delete' => '删除-log'...),);
// html 中根据删除权限显示删除按钮{ifp 'store.message.delete'}<a class='btn btn-default btn-sm btn-op btn-operation'  data-toggle='ajaxRemove' href="{php echo webUrl('store/message/delete', array('id' => $row['id']))}" data-confirm="确认删除此分类吗?"><span data-toggle="tooltip" data-placement="top" title="" data-original-title="删除"><i class='icow icow-shanchu1'></i></span></a>{/if}

注意:

{ifp 'store.message.delete'} 这里的路径很严格,要好好看路径

后台添加模块

代码位置

addons/项目名/core/model/system.php/initRightMenu

需求:

在后台添加动态消息管理模块

步骤:

1、在后台管理模块的配置代码里面添加对应模块(路径很严格)

2、根据路径在对应的文件夹下写php和html代码

代码

// ...代码省略
'store' => array('title' => '商家联盟', //cc_zhong'subtitle' => '新零售', //cc_zhong'icon' => 'store','pos'=>2,'class'=>"three",'items' => array(array('title' => '商家管理','items' => array(array('title' => '商家管理','route' => '','extends' => array('store.diypage.settings', 'store.diypage.page', 'store.goods', 'store.goods.goodsoption')),array('title' => '店员管理', 'route' => 'saler'),array('title' => '关键词设置', 'route' => 'set'),array('title' => '合作设置', 'route' => 'set.cooperation'),array('title' => '积分规则设置', 'route' => 'integral_role'),array('title' => '商家审核', 'route' => 'audit'),array('title' => '消息', 'route' => 'message'),array('title' => '动态消息管理', 'route' => 'trends'),))
// ...代码省略                    // 对应模块下添加对应的功能
....

图片上传和加载

代码位置:

html:addons/项目名/template/mobile/default/store_admin/trends/add_trends.html

js:addons/项目名/template/mobile/default/static/js/cjh/store_admin/trends.js

php:addons/ccnb_shopv3/core/mobile/store_admin/trends.php

需求:

上传图片到服务器,并将图片链接保存至数据库

步骤:

1、在html中加入图片上传的input控件,配置对应的属性和id

2、js中配置图片上传的方法,调用底层上传图片的基础方法

3、通过ajax将上传的图片通过后台保存至服务器

代码

// html中上传图片方法
<div class="shop_photos">
<input type="hidden" name="thumbs" value="" id="thumbs">
<div class="shop_photos_title">动态消息图片(1)</div>
<div class="img-box full z_photo"style="width: 100%;padding-bottom: 10%;overflow: hidden;"><section class=" img-section"style="float: left;margin-left: 2%;margin-top: 8px;"><div class=" upimg-div clear"><section class="z_file fl"><img src="{php echo IMG_PATH}icon_imgadd.png" class="add-img"><input type="file" name="thumbsimg" id="thumbs_img"class="file thumbs_img" accept="image/*" multiple></section></div>
</section>
</div>
<aside class="mask works-mask"><div class="mask-content"><p class="del-p">确定删除图片</p><p class="check-p"><span class="del-com wsdel-ok">确定</span><spanclass="wsdel-no">取消</span></p></div>
</aside>
</div>
//js中上传图片的方法
$(".thumbs_img").change(function(){     uploadimg($(this),".z_photo","thumbs_div",1,defaults,"thumbs","thumbsinput") });
​
// js中ajax提交数据至后台方法$("#submit").click(function () {var thumbs = $('#thumbs').val();var content = $('#content').val();var storeid = $('#sid').val();var data = {'thumbs':thumbs,'describe':content,'storeid':storeid,};
​//提交$.ajax({type: 'post',url: "./index.php?i=1&c=entry&m=ccnb_shopv3&do=mobile&r=store_admin.trends.add_trends",data: data,dataType:"json",success: function (result){if (result.status == 1){$.toast('提交成功');setTimeout(function () {history.back();},2000)}else {$.toast(result.result.message);}}})})
// 后台存储数据方法
public function add_trends(){global $_W;global $_GPC;$storeid = $_GPC['sid'];if($_W['ispost']){if(empty($_GPC['describe'])){show_json(0,'动态描述不能为空');}if(strlen($_GPC['describe']) > 60){show_json(0,'动态描述不能超过60个字');}if (empty($_GPC['thumbs'])){show_json(0,'列表图不能为空');}$data = ['thumb'=>$_GPC['thumbs'],'describe' =>$_GPC['describe'],'storeid' =>$_GPC['storeid'],'createtime' =>TIMESTAMP,];$up = $result = pdo_insert('ccnb_shop_store_trends', $data);
​if ($up){show_json(1);}else{show_json(0,'提交失败');}}
​include $this->template();
}

注意:

上传图片在底层代码通过ajax上传至服务器之后,自动填充了我们的图片标签

列表加载和分页

代码位置:

html:addons/项目名/template/mobile/default/store_admin/trends/index.html

js:addons/项目名/template/mobile/default/static/js/cjh/zpc.js

php:addons/项目名/core/mobile/store_admin/trends.php

需求:

请求动态消息列表并展示

步骤:

1、在html中加入列表展示标签

2、在html中加入要渲染的每条item样式

3、在js中通过ajax去拉取列表信息

4、后台提供拉取接口

代码:

// 列表
<div class="page" id="get_trend"><div class="content infinite-scroll" data-distance="100" ><input type="hidden" id="storeid" value="{$store['id']}"><div class="dynamics_top"><span class="dongtai">店铺动态</span><a href="{php echo mobileUrl('store_admin/trends/add_trends').'&sid='.$store['id']}"><span class="add">添加</span></a></div>
​<div class="list-block media-list" id="content"><ul v-for="li in list"><li class="dynamics_wp" ><div class="item-content"><div class="item-media"><img :src="li.thumb" style='width:7rem;'></div><div class="item-inner"><div class="item-title-row"><div class="dynamics_title">{{li.describe}}</div></div><div class="dynamics_time"> {{li.createtime}}</div></div></div></li></ul></div><div ></div></div>
</div>
​
// 店铺动态列表拉取
$(document).on("pageInit", "#get_trend", function(e,id,page){var pages = 1;var loading = false;var pagesize = 10;var tab = 1;//获取数据function list(page) {var storeid = $("#storeid").val();$.ajax({type:'post',url:'./index.php?i=1&c=entry&m=ccnb_shopv3&do=mobile&r=store_admin.trends.store_trend_list',data:{'storeid':storeid,'page':page,'pagesize':pagesize},dataType:'json',success:function (res) {console.log(res);if (res.status == 1){loading =false;
​var list = res.result.list;if (list.length > 0){for (var i = 0; i <list.length; i++){zpc.list.push(list[i]);}}
​if (list.length < pagesize){$(".infinite-scroll-preloader").remove();$(".line").remove();var tem = '<div class="line" style="margin: 0 auto;width: 150px;text-align: center;padding-top: 20px;"><span slot="no-more">我们是有底线的</span></div>';$('.busine_ul1').append(tem);}}else {loading = true;$(".infinite-scroll-preloader").remove();$(".line").remove();var tem = '<div class="line" style="margin: 0 auto;width: 150px;text-align: center;padding-top: 20px;"><span slot="no-more">我们是有底线的</span></div>';$('.busine_ul1').append(tem);}}})}var zpc = new Vue({el:'#content',data:{list:[]},created:function () {list(pages);},methods:{}})
​//上拉刷新$(document).on('infinite', '.infinite-scroll',function() {if (loading) return;loading = true;pages++;list(pages);});
})
​
/**
* 添加动态
*/
public function add_trends(){global $_W;global $_GPC;$storeid = $_GPC['sid'];if($_W['ispost']){if(empty($_GPC['describe'])){show_json(0,'动态描述不能为空');}if(strlen($_GPC['describe']) > 60){show_json(0,'动态描述不能超过60个字');}if (empty($_GPC['thumbs'])){show_json(0,'列表图不能为空');}$data = ['thumb'=>$_GPC['thumbs'],'describe' =>$_GPC['describe'],'storeid' =>$_GPC['storeid'],'createtime' =>TIMESTAMP,];$up = $result = pdo_insert('ccnb_shop_store_trends', $data);
​if ($up){show_json(1);}else{show_json(0,'提交失败');}}include $this->template();
}

微擎学习随记_常用功能实现相关推荐

  1. 从零开始学习jQuery (十) jQueryUI常用功能实战

    本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery ( ...

  2. 微擎url模式解读_微擎常用开发文档

    1.tpl_form_field_daterange() - 范围日期选择器 tpl_form_field_daterange($name, $value = array(), $time = fal ...

  3. 微擎url模式解读_微擎开发文档之微擎执行主流程介绍

    首先对微擎的工作原理做简单描述, 微擎使用规则和模块的机制来处理公众平台的请求数据并返回响应的结果. 执行流程描述为: 粉丝用户与公众号码进行对话或交互, 而后公众平台将粉丝用户的请求消息(当前包括: ...

  4. 微擎pc 导入前缀_段覆盖前缀| 8086微处理器

    微擎pc 导入前缀 As we already know that the effective address is calculated by appending the segment regis ...

  5. 微擎url模式解读_微擎系统全局变量说明 - 微擎(WEIQING) – 黑锐源码社区 – bbs.heirui.cn...

    $_GPC - 全局请求变量类型: array 说明: 合并请求参数, 包括 $_GET, $_POST, $_COOKIE的内容. 相同键名覆盖规则为 $_COOKIE 覆盖 $_POST, $_P ...

  6. 微擎系统操作记实--公众号管理员权限设置

    记录背景: 是这样的,上级说要弄个账号给另外一个人去打理自家公众号的人人商城. 经历: 首先我发现了微擎公众号设置里里的->使用者管理->里面有三种用户,1管理员,2使用者,3副创世人. ...

  7. GoldenGate学习笔记(11)_常用参数

    常用的参数 1 SOURCE端 2 Pump端(data pump)   2.1PASSTHRU Use the PASSTHRU and NOPASSTHRU parameters to contr ...

  8. 微擎学习笔记二--模板视图中标签的if和ifp

    ifp 当前用户是否有 控制器--方法 的权限 包括add edit del send view等 方法必带 ifpp 当前用户是否有 插件 的权限 ife 当前用户是否有 控制器--方法 的权限 编 ...

  9. 微擎学习--路由解析

    1. http://weiqin.com/web/index.php?c=site&a=entry&m=ewei_shopv2&do=web&r=shop.adv 当传 ...

最新文章

  1. zabbix-2.4.8使用yum一键部署zabbix
  2. 大话Web-Audio-Api
  3. linux实现命令解释器_想在Win10上安装Linux,只需一个命令即可实现
  4. java: cannot execute binary file错误
  5. 计算机函数公式中怎么合并合并,Excel用函数和公式瞬间实现把表格全部合并到一个表中去...
  6. 数据结构实验之栈二:一般算术表达式转换成后缀式
  7. Project Chameleon Work In Progress 12
  8. 第89天:HTML5中 访问历史、全屏和网页存储API
  9. C++ 判断字符串是否全是数字
  10. Lucene中的一些基本概念
  11. golang mysql scan_在Golang中对MySQL进行操作
  12. django 分页(2) 使用类 页码显示
  13. java 拦截所有路径_SpringMVC 拦截器路径怎么写
  14. Redis环境配置和命令语句
  15. css vue 内联_Vue绑定内联样式问题
  16. 概率论 方差公式_概率论复习:重要概念和公式
  17. 阿里巴巴设计大会PPT,出彩的设计让人惊叹
  18. Twaver-HTML5基础学习(8)拓扑元素(Element)_网元(Element)、节点(Node)
  19. 学习java第6天 模仿XP画板(10%)
  20. JS基础 Set 用于存储任何类型的唯一值

热门文章

  1. Word2003Xml格式摸索 1
  2. Android界面全屏适配7.0、动态修改状态栏颜色、浅色状态栏深色字体
  3. 基于云计算技术的B/S架构云HIS 云HIS 云HIS系统
  4. 2022-2028年中国高导磁纳米晶铁芯行业市场发展前景及投资风险评估报告
  5. 大数据早报:MongoDB 3.6 默认对数据库勒索软件开启防御 谷歌发布TensorFlow 1.4版本(11.10)
  6. echarts基本使用参考pink老师笔记
  7. 【每日早报】2019/11/28
  8. String.split()方法
  9. 2023西南民族大学计算机考研信息汇总
  10. Wine配合dxvk运行windows游戏