WeMall微信商城源码插件大转盘代码详情

WeMall微信商城源码插件大转盘代码是用于商业推广的比较有效的方式,分享了部分比较重要的代码,供技术员学习参考

代码详情地址:http://addon.wemallshop.com/Product/addonList/menu_id/1 或 www.wemallshop.com

AdminController.class

Php代码  

  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | OneThink [ WE CAN DO IT JUST THINK IT ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: 麦当苗儿 <[email protected]> <http://www.zjzit.cn>
  8. // +----------------------------------------------------------------------
  9. namespace Addons\Wheel\Controller;
  10. class AdminController extends InitController
  11. {
  12. // public function __construct()
  13. // {
  14. //     parent::__construct();
  15. // }
  16. public function index()
  17. {
  18. $config = M("AddonWheelConfig")->find();
  19. $this->assign("config", $config);
  20. $record = D(‘Addons://Wheel/AddonWheelRecord‘); // 实例化User对象
  21. $count = $record->count();// 查询满足要求的总记录数
  22. $Page = new \Think\Page($count, 12);// 实例化分页类 传入总记录数和每页显示的记录数(25)
  23. $Page->setConfig(‘theme‘, "<div class=‘widget-content padded text-center‘><ul class=‘pagination‘></li><li>%FIRST%</li><li>%UP_PAGE%</li><li>%LINK_PAGE%</li><li>%DOWN_PAGE%</li><li>%END%</li><li><a> %HEADER%  %NOW_PAGE%/%TOTAL_PAGE% 页</a></ul></div>");
  24. $show = $Page->show();// 分页显示输出
  25. // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
  26. $record = $record->limit($Page->firstRow . ‘,‘ . $Page->listRows)->order("id desc")->relation(true)->select();
  27. $this->assign("record", $record);// 赋值数据集
  28. $this->assign(‘page‘, $show);// 赋值分页输出
  29. $this->display();
  30. }
  31. public function addConfig()
  32. {
  33. M("AddonWheelConfig")->where(array("id" => "1"))->save($_POST);
  34. $this->success(‘设置成功‘, ‘Admin/Admin/index/addon/Wheel‘);
  35. }
  36. }

IndexController.class

Php代码  

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: heqing
  5. * Date: 15/7/30
  6. * Time: 09:40
  7. */
  8. namespace Addons\Wheel\Controller;
  9. // class IndexController extends InitController
  10. // {
  11. //     public function index()
  12. //     {
  13. //         $this->show(‘SystemInfo Index index‘);
  14. //     }
  15. // }
  16. class IndexController extends InitController
  17. {
  18. public $appUrl = "";
  19. public function __construct()
  20. {
  21. parent::__construct();
  22. $this->appUrl = "http://" . I("server.HTTP_HOST");
  23. }
  24. public function init()
  25. {
  26. return R("App/Common/init");
  27. }
  28. public function oauthRegister($wxuser)
  29. {
  30. return R("App/Common/oauthRegister", array($wxuser));
  31. }
  32. public function index()
  33. {
  34. $user=R("App/Public/oauthLogin");
  35. // if (!session("userUid")) {
  36. //     $weObj = $this->init();
  37. //     $token = $weObj->getOauthAccessToken();
  38. //     if (!$token) {
  39. //         $weObj = $this->init();
  40. //         $url = $weObj->getOauthRedirect($this->appUrl . u_addons(‘Wheel://App/Index/index‘));
  41. //         header("location: $url");
  42. //         return;
  43. //     } else {
  44. //         $wxuser = $weObj->getOauthUserinfo($token["access_token"], $token["openid"]);
  45. //         session("userUid", $wxuser["openid"]);
  46. //         $this->oauthRegister($wxuser);
  47. //     }
  48. // }
  49. $user = M("User")->where(array("uid" => session("userUid")))->find();
  50. $config = M("AddonWheelConfig")->find();
  51. $this->assign("config", $config);
  52. $this->assign("user", $user);
  53. $record = M("AddonWheelRecord")->where(array("user_id" => session("userId")))->order("id desc")->find();
  54. $this->assign("record", $record);
  55. $this->display();
  56. }
  57. /**
  58. * 中奖机率计算
  59. */
  60. function lotteryJson()
  61. {
  62. $today = date("Y-m-d");
  63. $where["time"] = array("like", $today . "%");
  64. $where["user_id"] = session("userId");
  65. $record = D("Addons://Wheel/AddonWheelRecord")->where($where)->find();
  66. if ($record) {
  67. $this->ajaxReturn("-1");
  68. return;
  69. }
  70. $config = M("AddonWheelConfig")->find();
  71. //奖品概率
  72. $proArr = array(
  73. ‘1‘ => $config["level1_prob"],
  74. ‘2‘ => $config["level2_prob"],
  75. ‘3‘ => $config["level3_prob"],
  76. ‘4‘ => $config["level4_prob"],
  77. ‘5‘ => $config["level5_prob"],
  78. ‘6‘ => $config["level6_prob"],
  79. ‘7‘ => $config["level7_prob"]
  80. );
  81. //奖品库存
  82. $proCount = array(
  83. ‘1‘ => $config["level1_store"],
  84. ‘2‘ => $config["level2_store"],
  85. ‘3‘ => $config["level3_store"],
  86. ‘4‘ => $config["level4_store"],
  87. ‘5‘ => $config["level5_store"],
  88. ‘6‘ => $config["level6_store"],
  89. ‘7‘ => $config["level7_store"]
  90. );
  91. $file = ‘./Data/wheel.txt‘;
  92. $data = array(
  93. ‘1‘ => 0, ‘2‘ => 0, ‘3‘ => 0, ‘4‘ => 0, ‘5‘ => 0, ‘6‘ => 0
  94. );
  95. if (!file_exists($file)) {
  96. file_put_contents($file, serialize($data));
  97. } else {
  98. $str = file_get_contents($file);
  99. $data = unserialize($str);
  100. }
  101. $rid = $this->getRand($proArr, $proCount);
  102. if ($rid > 6) {
  103. $rid = 0;
  104. } else {
  105. $rid = $this->returnRid($rid, $file, $data, $proCount, $proArr);
  106. }
  107. M("AddonWheelRecord")->add(array("user_id" => session("userId"), "level" => $rid));
  108. echo $rid;
  109. }
  110. function returnRid($rid, $file, $data, $proCount, $proArr)
  111. {
  112. $data[$rid] = $data[$rid] + 1;
  113. $count = $proCount[$rid]; // 总库存
  114. if ($count < $data[$rid]) {
  115. // 如果抽取的数据大于总库存时库存清0
  116. $proCount[$rid] = 0;
  117. // 然后继续计算一直计算出某个值的库存不为0
  118. $rid = returnRid($rid, $file, $data, $proCount, $proArr);
  119. } else {
  120. // 写入缓存
  121. file_put_contents($file, serialize($data));
  122. }
  123. return $rid;
  124. }
  125. /**
  126. * 中奖概率计算, 能用
  127. * $proArr = array(‘1‘=>‘概率‘, ‘2‘=>‘概率‘);
  128. * $proCount = array(‘1‘=>‘库存‘, ‘2‘=>‘库存‘);
  129. */
  130. function getRand($proArr, $proCount)
  131. {
  132. $result = ‘‘;
  133. $proSum = 0;
  134. foreach ($proCount as $key => $val) {
  135. if ($val <= 0) {
  136. continue;
  137. } else {
  138. $proSum = $proSum + $proArr[$key];
  139. }
  140. }
  141. foreach ($proArr as $key => $proCur) {
  142. if ($proCount[$key] <= 0) {
  143. continue;
  144. } else {
  145. $randNum = mt_rand(1, $proSum);
  146. if ($randNum <= $proCur) {
  147. $result = $key;
  148. break;
  149. } else {
  150. $proSum -= $proCur;
  151. }
  152. }
  153. }
  154. unset($proArr);
  155. return $result;
  156. }
  157. }

InitController.class

Php代码  

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: heqing
  5. * Date: 15/7/30
  6. * Time: 12:11
  7. */
  8. namespace Addons\Wheel\Controller;
  9. use Common\Controller\Addon;
  10. class InitController extends Addon
  11. {
  12. public function install()
  13. {
  14. $install_sql = ‘./Addons/Wheel/Data/install.sql‘;
  15. if (file_exists($install_sql)) {
  16. execute_sql_file($install_sql);
  17. }
  18. $this->success("安装成功", "Admin/Addon/addon");
  19. }
  20. public function uninstall()
  21. {
  22. $uninstall_sql = ‘./Addons/Wheel/Data/uninstall.sql‘;
  23. if (file_exists($uninstall_sql)) {
  24. execute_sql_file($uninstall_sql);
  25. }
  26. $this->success("卸载成功", "Admin/Addon/addon");
  27. }
  28. }

前台

Admin_index

Html代码  

  1. <section class="content-header">
  2. <h1>
  3. 大转盘管理
  4. <small></small>
  5. </h1>
  6. </section>
  7. <section class="content">
  8. <div class="row">
  9. <div class="col-md-12">
  10. <div class="box box-danger">
  11. <div class="box-header with-border">
  12. <h3 class="box-title">大转盘设置</h3>
  13. <!-- /.box-tools -->
  14. </div>
  15. <div class="box-body no-padding">
  16. <div class="mailbox-controls">
  17. <div class="btn-group">
  18. <a data-toggle="tab" href="#tab1" class="btn btn-danger "><i class="icon-comments"></i>大转盘设置</a>
  19. </div>
  20. <div class="btn-group">
  21. <a data-toggle="tab" href="#tab2" class="btn btn-danger "><i class="icon-user"></i>大转盘记录</a>
  22. </div>
  23. <div class="tab-content padded" id="my-tab-content">
  24. <div class="tab-pane active" id="tab1">
  25. <p>
  26. <form action="{:u_addons(‘Wheel://Admin/Admin/addConfig‘)}" id="myForm" method="post" onsubmit="return false;" class="form-horizontal">
  27. <div class="form-group">
  28. <label class="control-label col-md-2">大转盘名称</label>
  29. <div class="col-md-7">
  30. <input class="form-control" placeholder="" value="{$config.name}" name="name" type="text">
  31. </div>
  32. </div>
  33. <div class="form-group">
  34. <label class="control-label col-md-2">活动时间</label>
  35. <div class="col-md-7">
  36. <input class="form-control" placeholder="" value="{$config.activity_time}" name="activity_time" type="text">
  37. </div>
  38. </div>
  39. <div class="form-group">
  40. <label class="control-label col-md-2">活动说明</label>
  41. <div class="col-md-7">
  42. <!--style给定宽度可以影响编辑器的最终宽度-->
  43. <script id="UEditor" name="activity_explain" type="text/plain" style="height:500px;">
  44. {$config.activity_explain}
  45. </script>
  46. </div>
  47. </div>
  48. <div class="form-group">
  49. <label class="control-label col-md-2">状态</label>
  50. <div class="col-md-7">
  51. <select class="form-control" name="status">
  52. <option value="1">是</option>
  53. <option value="0">否</option>
  54. </select>
  55. </div>
  56. </div>
  57. <div class="form-group">
  58. <label class="control-label col-md-2">一天参与一次</label>
  59. <div class="col-md-7">
  60. <select class="form-control" name="everyday">
  61. <option value="1">是</option>
  62. <option value="0">否</option>
  63. </select>
  64. </div>
  65. </div>
  66. <div class="form-group">
  67. <label class="control-label col-md-2">一等奖中奖概率</label>
  68. <div class="col-md-2">
  69. <input class="form-control" placeholder="" value="{$config.level1_prob}" name="level1_prob" type="text">
  70. </div>
  71. <label class="control-label col-md-2">一等奖库存</label>
  72. <div class="col-md-2">
  73. <input class="form-control" placeholder="" value="{$config.level1_store}" name="level1_store" type="text">
  74. </div>
  75. </div>
  76. <div class="form-group">
  77. <label class="control-label col-md-2">二等奖中奖概率</label>
  78. <div class="col-md-2">
  79. <input class="form-control" placeholder="" value="{$config.level2_prob}" name="level2_prob" type="text">
  80. </div>
  81. <label class="control-label col-md-2">二等奖库存</label>
  82. <div class="col-md-2">
  83. <input class="form-control" placeholder="" value="{$config.level2_store}" name="level2_store" type="text">
  84. </div>
  85. </div>
  86. <div class="form-group">
  87. <label class="control-label col-md-2">三等奖中奖概率</label>
  88. <div class="col-md-2">
  89. <input class="form-control" placeholder="" value="{$config.level3_prob}" name="level3_prob" type="text">
  90. </div>
  91. <label class="control-label col-md-2">三等奖库存</label>
  92. <div class="col-md-2">
  93. <input class="form-control" placeholder="" value="{$config.level3_store}" name="level3_store" type="text">
  94. </div>
  95. </div>
  96. <div class="form-group">
  97. <label class="control-label col-md-2">四等奖中奖概率</label>
  98. <div class="col-md-2">
  99. <input class="form-control" placeholder="" value="{$config.level4_prob}" name="level4_prob" type="text">
  100. </div>
  101. <label class="control-label col-md-2">四等奖库存</label>
  102. <div class="col-md-2">
  103. <input class="form-control" placeholder="" value="{$config.level4_store}" name="level4_store" type="text">
  104. </div>
  105. </div>
  106. <div class="form-group">
  107. <label class="control-label col-md-2">五等奖中奖概率</label>
  108. <div class="col-md-2">
  109. <input class="form-control" placeholder="" value="{$config.level5_prob}" name="level5_prob" type="text">
  110. </div>
  111. <label class="control-label col-md-2">五等奖库存</label>
  112. <div class="col-md-2">
  113. <input class="form-control" placeholder="" value="{$config.level5_store}" name="level5_store" type="text">
  114. </div>
  115. </div>
  116. <div class="form-group">
  117. <label class="control-label col-md-2">六等奖中奖概率</label>
  118. <div class="col-md-2">
  119. <input class="form-control" placeholder="" value="{$config.level6_prob}" name="level6_prob" type="text">
  120. </div>
  121. <label class="control-label col-md-2">六等奖库存</label>
  122. <div class="col-md-2">
  123. <input class="form-control" placeholder="" value="{$config.level6_store}" name="level6_store" type="text">
  124. </div>
  125. </div>
  126. <div class="form-group">
  127. <label class="control-label col-md-2">未中奖概率</label>
  128. <div class="col-md-2">
  129. <input class="form-control" placeholder="" value="{$config.level7_prob}" name="level7_prob" type="text">
  130. </div>
  131. <label class="control-label col-md-2">未中奖概率</label>
  132. <div class="col-md-2">
  133. <input class="form-control" placeholder="" value="{$config.level7_store}" name="level7_store" type="text">
  134. </div>
  135. </div>
  136. <div class="form-group">
  137. <label class="control-label col-md-2"></label>
  138. <div class="col-md-7">
  139. <button class="btn btn-danger" onclick="myFormSubmit(‘{:u_addons(\‘Wheel://Admin/Admin/index\‘)}‘)" type="submit">提交
  140. </button>
  141. <button class="btn btn-default-outline">取消</button>
  142. </div>
  143. </div>
  144. </form>
  145. </p>
  146. </div>
  147. <div class="tab-pane" id="tab2">
  148. <p>
  149. <div class="widget-content padded clearfix">
  150. <table class="table table-hover">
  151. <thead>
  152. <th class="check-header hidden-xs">
  153. <label>
  154. <input id="checkAll" name="checkAll" type="checkbox"><span></span></label>
  155. </th>
  156. <th>
  157. ID
  158. </th>
  159. <th>
  160. 用户名
  161. </th>
  162. <th class="hidden-xs">
  163. 奖项
  164. </th>
  165. <th class="hidden-xs">
  166. 时间
  167. </th>
  168. </thead>
  169. <tbody>
  170. <volist name="record" id="record">
  171. <tr>
  172. <td class="check hidden-xs">
  173. <label>
  174. <input name="optionsRadios1" type="checkbox" value="option1"><span></span></label>
  175. </td>
  176. <td>
  177. {$record.id}
  178. </td>
  179. <td>
  180. {$record.username}
  181. </td>
  182. <td class="hidden-xs">
  183. {$record.level}
  184. </td>
  185. <td class="hidden-xs">
  186. {$record.time}
  187. </td>
  188. </tr>
  189. </volist>
  190. </tbody>
  191. </table>
  192. <div class="box-footer no-padding">
  193. <div class="pull-right" style="margin-bottom: 6px">
  194. {$page}
  195. <!-- /.btn-group -->
  196. </div>
  197. </div>
  198. </div>
  199. </div>
  200. </p>
  201. </div>
  202. </div>
  203. </div>
  204. </div>
  205. </div>
  206. </div>
  207. </section>
  208. <!-- <script type="text/javascript">
  209. //实例化编辑器
  210. var um = UM.getEditor(‘myEditor‘, {
  211. textarea: ‘activity_explain‘
  212. });
  213. function setFocus() {
  214. UM.getEditor(‘myEditor‘).focus();
  215. }
  216. </script>
  217. <script>
  218. if (‘{$config}‘) {
  219. $(‘select[name="status"]‘).val(‘{$config.status}‘);
  220. $(‘select[name="everyday"]‘).val(‘{$config.everyday}‘);
  221. UM.getEditor(‘myEditor‘).setContent(‘{$config.activity_explain}‘);
  222. }
  223. </script>
  224. -->
  225. <script type="text/javascript">
  226. $(function() {
  227. //实例化编辑器异步载入
  228. var editor = new UE.ui.Editor();
  229. editor.render("UEditor");
  230. });
  231. if (‘{$config}‘) {
  232. $(‘select[name="status"]‘).val(‘{$config.status}‘);
  233. $(‘select[name="everyday"]‘).val(‘{$config.everyday}‘);
  234. // UE.getEditor(‘myEditor‘).setContent(‘{$config.activity_explain}‘);
  235. }
  236. </script>

Index_index

Html代码  

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <meta name="viewport"
  6. content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;">
  7. <meta name="apple-mobile-web-app-capable" content="yes">
  8. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  9. <meta name="format-detection" content="telephone=no">
  10. <meta name="description" content="微信">
  11. <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
  12. <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
  13. <META HTTP-EQUIV="Expires" CONTENT="0">
  14. <title>{$config.name}</title>
  15. <link href="__CSS__/activity-style2.css" rel="stylesheet" type="text/css">
  16. <link href="__CSS__/pan.css" rel="stylesheet" type="text/css">
  17. </head>
  18. <body class="activity-lottery-winning">
  19. <div id="loader" style="text-align: center;height:30px;line-height: 30px;background: white;display: none;"><img
  20. src="__IMG__/load.gif" align="absmiddle"/> 请稍后,数据传输中 ...
  21. </div>
  22. <div class="main">
  23. <script src="__JS__/jquery.min.js" type="text/javascript"></script>
  24. <div class="panBg">
  25. <img src="__IMG__/header.png" class="headerImg">
  26. <div class="wenZi">
  27. <img src="__IMG__/dazhuanpan.png" class="zhuanPan">
  28. </div>
  29. <div id="outercont">
  30. <div id="outer-cont">
  31. <div id="outer"><img src="__IMG__/zp8-.png"></div>
  32. </div>
  33. <div id="inner-cont">
  34. <div id="inner"><img src="__IMG__/activity-lottery-2.png"></div>
  35. </div>
  36. </div>
  37. <div class="btnBox">
  38. <button class="left" id="myPrizes">我的奖品</button>
  39. <button class="right" id="goToMall" onclick="location.href = ‘{:U(\‘App/Index/index\‘)}‘">进店逛逛</button>
  40. </div>
  41. </div>
  42. <div class="footer">
  43. <div class="explain"><span id="explain">活动说明&gt;&gt;</span></div>
  44. <div class="copyright">由 inuoer 技术支持</div>
  45. </div>
  46. <div class="ruleBox" id="rule" style="display: none;">
  47. <span class="close"></span>
  48. <div class="content">
  49. <h4>活动时间</h4>
  50. <p id="activityTime">{$config.activity_time}</p>
  51. <!--<h4>奖项设置</h4>
  52. <p  id="activityPrize"></p>-->
  53. <h4>活动说明</h4>
  54. <pre id="descriptor">{$config.activity_explain}</pre>
  55. </div>
  56. </div>
  57. <div class="ruleBox" id="winPrize" style="display: none;">
  58. <span class="close"></span>
  59. <div class="content">
  60. <div class="null"><empty name="record[‘level‘]">暂无奖品,继续加油哦~<else/>恭喜您获得
  61. {$record.level}等奖<br/>时间:{$record.time}</empty></div>
  62. </div>
  63. </div>
  64. <div class="shareTip" id="shareTip"></div>
  65. <div class="popup not" id="not" style="display: none;">
  66. <div class="content">
  67. <em></em>
  68. <div class="text">很遗憾,您未中奖!</div>
  69. <div class="buttonBox">
  70. <button class="ok">知道了</button>
  71. </div>
  72. </div>
  73. <!--end content-->
  74. </div>
  75. <div class="popup lost" id="lost" style="display: none;">
  76. <div class="content">
  77. <em></em>
  78. <div class="text">点击右上角按钮,分享到朋友圈</div>
  79. <div class="buttonBox">
  80. <button class="ok">知道了</button>
  81. </div>
  82. </div>
  83. <!--end content-->
  84. </div>
  85. <div class="popup win" id="win" style="display: none;">
  86. <div class="content">
  87. <em></em>
  88. <div class="text">恭喜您得到<span id="winlevel"></span>等奖</div>
  89. <div class="buttonBox">
  90. <button class="cancel" onclick="leave();">低调离开</button>
  91. <button class="ok mr_left10" onclick="flaunt();">立即炫耀</button>
  92. </div>
  93. </div>
  94. <!--end content-->
  95. </div>
  96. </div>
  97. <script type="text/javascript">
  98. $(function () {
  99. window.requestAnimFrame = (function () {
  100. return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame ||
  101. function (callback) {
  102. window.setTimeout(callback, 1000 / 60);
  103. }
  104. })();
  105. var totalDeg = 360 * 3 + 0;
  106. var steps = [];
  107. var lostDeg = [72, 128, 180 , 230 , 285 , 360];
  108. //        var prizeDeg = [36, 102, 158, 202, 259, 314];
  109. var prizeDeg = [314, 259, 202, 158, 102, 36];
  110. var prize, sncode;
  111. var count = 0;
  112. var now = 0;
  113. var a = 0.01;
  114. var outter, inner, timer, running = false;
  115. var level = 0;
  116. function countSteps() {
  117. var t = Math.sqrt(2 * totalDeg / a);
  118. var v = a * t;
  119. for (var i = 0; i < t; i++) {
  120. steps.push((2 * v * i - a * i * i) / 2)
  121. }
  122. steps.push(totalDeg)
  123. }
  124. function step() {
  125. outter.style.webkitTransform = ‘rotate(‘ + steps[now++] + ‘deg)‘;
  126. outter.style.MozTransform = ‘rotate(‘ + steps[now++] + ‘deg)‘;
  127. if (now < steps.length) {
  128. running = true;
  129. requestAnimFrame(step)
  130. } else {
  131. //                running = false;
  132. if (level == 0) {
  133. $(‘#not‘).show();
  134. } else {
  135. $(‘#win‘).show();
  136. $(‘#winlevel‘).html(level);
  137. }
  138. }
  139. }
  140. function start(deg) {
  141. degdeg = deg || lostDeg[parseInt(lostDeg.length * Math.random())];
  142. running = true;
  143. clearInterval(timer);
  144. totalDeg = 360 * 5 + deg;
  145. steps = [];
  146. now = 0;
  147. countSteps();
  148. requestAnimFrame(step);
  149. }
  150. window.start = start;
  151. outter = document.getElementById(‘outer‘);
  152. inner = document.getElementById(‘inner‘);
  153. i = 10;
  154. $("#inner").click(function () {
  155. //            if (running) {
  156. //                alert("今日已用完,请明天再来!");
  157. //                return;
  158. //            }
  159. $(‘#loader‘).show();
  160. $(‘#inner-cont‘).css(‘top‘, ‘-210px‘);
  161. $.get("{:u_addons(‘Wheel://App/Index/lotteryJson‘)}", function (rid) {
  162. level = rid;
  163. $(‘#loader‘).hide();
  164. $(‘#inner-cont‘).css(‘top‘, ‘-210px‘);
  165. if(rid == "-1"){
  166. alert("今日已用完,请明天再来!");
  167. return;
  168. }
  169. if (rid == 0) {
  170. start();
  171. } else {
  172. start(prizeDeg[rid - 1]);
  173. }
  174. });
  175. });
  176. $(".close").click(function () {
  177. $(this).parent().hide();
  178. });
  179. $(‘#explain‘).click(function(){
  180. $(‘#rule‘).show();
  181. });
  182. $(‘#myPrizes‘).click(function () {
  183. $(‘#winPrize‘).show();
  184. });
  185. $(‘.ok‘).click(function () {
  186. $(‘.popup‘).hide();
  187. });
  188. $(‘#shareTip‘).click(function () {
  189. $(this).hide();
  190. location.reload();
  191. });
  192. });
  193. function leave(){
  194. $(‘#win‘).hide();
  195. location.reload();
  196. }
  197. function flaunt(){
  198. $(‘#win‘).hide();
  199. $(‘#shareTip‘).show();
  200. }
  201. </script>
  202. </body>
  203. </html>

KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架

官网:http://js.koahub.com

时间: 2024-09-29 18:16:34

WeMall微信商城源码插件大转盘代码详情的相关文章

WeMall微信商城源码活动报名插件代码详情

WeMall微信商城源码插件活动报名代码是用于商业推广的比较有效的方式,分享了部分比较重要的代码,供技术员学习参考,商家可自由设置报名项目,活动时间,报名内容 代码详情地址:http://addon.wemallshop.com/Product/addonList/menu_id/1 或 www.wemallshop.com AdminController.class <?php namespace Addons\Apply\Controller; class AdminController e

Koahub软件市场免费版微信商城源码 wemall doraemon

Koahub软件市场免费版微信商城源码 wemall doraemon wemall doraemon是基于WeMall的Android app商城,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改,不做任何限制: [适合研究学习,支持wemall3.x版本] wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端

wemall app商城源码Android数据的SharedPreferences储存方式

wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android数据的SharedPreferences储存方式,供技术员参考学习.        SharedPreferences:除了SQLite数据库外,SharedPreferences也是一种轻型的数据储存方式,它的本质是基于XML文件存储key-value键值对数据,通常用来储存一些简单的配置信息.Sha

wemall app商城源码Android之支付宝通知处理类

wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之处理支付宝各接口通知返回,供技术员参考学习. 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码,该代码仅供学习和研究支付宝接口使用,只是提供一个参考,调试通知返回时,可查看或改写log日志的写入TXT里的数据,来检查通知返回是否正常. w

wemall app商城源码机器人检测

wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之 wemall app商城源码机器人检测,供技术员参考学习. <?php defined('THINK_PATH') or exit(); /** * 机器人检测 * @category Extend * @package Extend * @subpackage Behavior * @author

wemall app商城源码Android之通用通知接口demo

wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享Native(原生)支付模式一demo,供技术员参考学习. wemall官网地址:http://www.wemallshop.com 支付完成后,微信会把相关支付和用户信息发送到商户设定的通知URL,商户接收回调信息后,根据需要设定相应的处理流程. 这里举例使用log文件形式记录回调信息. notify_url.php <?php includ

wemall app商城源码Android中ViewHolder详细解释

1.ViewHolder的解释: (1).只是一个静态类,不是Android的API方法. (2).它的作用就在于减少不必要的调用findViewById,然后把对底下的控件引用存在ViewHolder里面,再在View.setTag(holder)把它放在view里,下次就可以直接取了. 2.convertView中的TAG: (1).Tag不像ID是用标示view的.Tag从本质上来讲是就是相关联的view的额外的信息.它们经常用来存储一些view的数据,这样做非常方便而不用存入另外的单独结

wemall app商城源码Android短信监听接收器

wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中短信监听接收器,用于自动获取短信验证码,然后自动填写到验证码区域代码,供技术员参考学习. package cn.smssdk.gui; import android.content.BroadcastReceiver; import android.content.Context; import a

wemall app商城源码中基于PHP的ThinkPHP惯例配置文件代码

wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中关于ThinkPHP惯例配置文件代码,供技术员参考学习. <?php /** * ThinkPHP惯例配置文件 * 该文件请不要修改,如果要覆盖惯例配置的值,可在项目配置文件中设定和惯例不符的配置项 * 配置名称大小写任意,系统会统一转换成小写 * 所有配置参数都可以在生效前动态改变 * @cate