Browse Source

部署到git

master
wanghongjun 2 years ago
parent
commit
9c36884586
  1. BIN
      addons/weliam_smartcity/h5/static/icon_position.png
  2. 1
      addons/weliam_smartcity/h5/static/index.css
  3. 1
      addons/weliam_smartcity/h5/static/js/pages-subPages-shareMaterials-index.5b058737.js
  4. 1
      addons/weliam_smartcity/h5/static/js/pages-subPages-signdesk-index-index.ef35ae70.js
  5. 1
      addons/weliam_smartcity/h5/static/js/pages-subPages-signdesk-rank-rank.fca2d1a2.js
  6. 1
      addons/weliam_smartcity/h5/static/js/pages-subPages-signdesk-record-record.a1e82855.js
  7. 1
      addons/weliam_smartcity/h5/static/js/pages-subPages-special-rushspeci-rushspeci.9ab8ce38.js
  8. 1
      addons/weliam_smartcity/h5/static/js/pages-subPages-submitOrder-submitOrder.e0b8a746.js
  9. 1
      addons/weliam_smartcity/h5/static/js/pages-subPages-submitOrder-submitOrder~pages-subPages2-businessCenter-foodOrder-foodOrder~pages-subP~aba2fe69.fba81879.js
  10. 1
      addons/weliam_smartcity/h5/static/js/pages-subPages-webview-webview.235fc294.js
  11. 1
      addons/weliam_smartcity/h5/static/js/pages-subPages-writeRecord-index.638d2a9c.js
  12. 1
      addons/weliam_smartcity/h5/static/js/pagesA-instantMessenger-instantMessenger.a4c4cfa5.js
  13. BIN
      addons/weliam_smartcity/h5/static/logo.png
  14. 26
      addons/weliam_smartcity/payment/AlipayCallback.php
  15. 26
      addons/weliam_smartcity/payment/WeChatCallback.php
  16. 157
      addons/weliam_smartcity/payment/wechat/notify.php
  17. 30
      addons/weliam_smartcity/payment/wechat/return.php
  18. 340
      addons/weliam_smartcity/plugin/activity/Activity.mod.php
  19. 47
      addons/weliam_smartcity/plugin/activity/config.xml
  20. BIN
      addons/weliam_smartcity/plugin/activity/icon.png
  21. 439
      addons/weliam_smartcity/plugin/activity/uniapp.php
  22. 723
      addons/weliam_smartcity/plugin/activity/web/controller/activity_web.ctrl.php
  23. 200
      addons/weliam_smartcity/plugin/activity/web/view/default/activity/activitylist.html
  24. 71
      addons/weliam_smartcity/plugin/activity/web/view/default/activity/baseset.html
  25. 68
      addons/weliam_smartcity/plugin/activity/web/view/default/activity/categoryedit.html
  26. 87
      addons/weliam_smartcity/plugin/activity/web/view/default/activity/categorylist.html
  27. 623
      addons/weliam_smartcity/plugin/activity/web/view/default/activity/createactivity.html
  28. 31
      addons/weliam_smartcity/plugin/activity/web/view/default/activity/entry.html
  29. 401
      addons/weliam_smartcity/plugin/activity/web/view/default/activity/orderlist.html
  30. 18
      addons/weliam_smartcity/plugin/activity/web/view/default/activity/specpage.html
  31. 489
      addons/weliam_smartcity/plugin/area/Area.mod.php
  32. 34
      addons/weliam_smartcity/plugin/area/config.xml
  33. BIN
      addons/weliam_smartcity/plugin/area/icon.png
  34. 314
      addons/weliam_smartcity/plugin/area/sys/controller/areaagent.ctrl.php
  35. 375
      addons/weliam_smartcity/plugin/area/sys/controller/areadb.ctrl.php
  36. 24
      addons/weliam_smartcity/plugin/area/sys/controller/areaset.ctrl.php
  37. 73
      addons/weliam_smartcity/plugin/area/sys/controller/custom.ctrl.php
  38. 190
      addons/weliam_smartcity/plugin/area/sys/controller/hotarea.ctrl.php
  39. 235
      addons/weliam_smartcity/plugin/area/sys/view/default/area/agentEdit.html
  40. 49
      addons/weliam_smartcity/plugin/area/sys/view/default/area/agentImport.html
  41. 109
      addons/weliam_smartcity/plugin/area/sys/view/default/area/agentIndex.html
  42. 53
      addons/weliam_smartcity/plugin/area/sys/view/default/area/areagroup.html
  43. 36
      addons/weliam_smartcity/plugin/area/sys/view/default/area/areagroupedit.html
  44. 96
      addons/weliam_smartcity/plugin/area/sys/view/default/area/areasetting.html
  45. 130
      addons/weliam_smartcity/plugin/area/sys/view/default/area/copydata.html
  46. 57
      addons/weliam_smartcity/plugin/area/sys/view/default/area/customedit.html
  47. 356
      addons/weliam_smartcity/plugin/area/sys/view/default/area/diyArea.html
  48. 70
      addons/weliam_smartcity/plugin/area/sys/view/default/area/groupEdit.html
  49. 63
      addons/weliam_smartcity/plugin/area/sys/view/default/area/groupIndex.html
  50. 51
      addons/weliam_smartcity/plugin/area/sys/view/default/area/movedata.html
  51. 84
      addons/weliam_smartcity/plugin/area/sys/view/default/area/opareaedit.html
  52. 118
      addons/weliam_smartcity/plugin/area/sys/view/default/area/oparealist.html
  53. 69
      addons/weliam_smartcity/plugin/attestation/Attestation.mod.php
  54. 29
      addons/weliam_smartcity/plugin/attestation/config.xml
  55. BIN
      addons/weliam_smartcity/plugin/attestation/icon.png
  56. 469
      addons/weliam_smartcity/plugin/attestation/sys/controller/attestation.ctrl.php
  57. 309
      addons/weliam_smartcity/plugin/attestation/sys/view/default/attestation/attestationList.html
  58. 348
      addons/weliam_smartcity/plugin/attestation/sys/view/default/attestation/attestationSet.html
  59. 147
      addons/weliam_smartcity/plugin/attestation/sys/view/default/attestation/bondList.html
  60. 145
      addons/weliam_smartcity/plugin/attestation/sys/view/default/attestation/moInfoEdit.html
  61. 49
      addons/weliam_smartcity/plugin/attestation/sys/view/default/attestation/moreinfo.html
  62. 331
      addons/weliam_smartcity/plugin/attestation/uniapp.php
  63. 468
      addons/weliam_smartcity/plugin/bargain/Bargain.mod.php
  64. 53
      addons/weliam_smartcity/plugin/bargain/config.xml
  65. BIN
      addons/weliam_smartcity/plugin/bargain/icon.png
  66. 408
      addons/weliam_smartcity/plugin/bargain/uniapp.php
  67. 658
      addons/weliam_smartcity/plugin/bargain/web/controller/bargain_web.ctrl.php
  68. 261
      addons/weliam_smartcity/plugin/bargain/web/view/default/bargain/activitylist.html
  69. 154
      addons/weliam_smartcity/plugin/bargain/web/view/default/bargain/bargainrecord.html
  70. 124
      addons/weliam_smartcity/plugin/bargain/web/view/default/bargain/set.html
  71. 151
      addons/weliam_smartcity/plugin/bargain/web/view/default/bargain/userlist.html
  72. 6
      addons/weliam_smartcity/plugin/call/Call.php
  73. 32
      addons/weliam_smartcity/plugin/call/config.xml
  74. BIN
      addons/weliam_smartcity/plugin/call/icon.png
  75. 161
      addons/weliam_smartcity/plugin/call/web/controller/call.ctrl.php
  76. 70
      addons/weliam_smartcity/plugin/call/web/view/default/call/callList.html
  77. 124
      addons/weliam_smartcity/plugin/call/web/view/default/call/editCall.html
  78. 64
      addons/weliam_smartcity/plugin/call/web/view/default/call/launchList.html
  79. 94
      addons/weliam_smartcity/plugin/cashback/Cashback.mod.php
  80. 27
      addons/weliam_smartcity/plugin/cashback/config.xml
  81. BIN
      addons/weliam_smartcity/plugin/cashback/icon.png
  82. 7
      addons/weliam_smartcity/plugin/cashback/uniapp.php
  83. 140
      addons/weliam_smartcity/plugin/cashback/web/controller/cashback.ctrl.php
  84. 147
      addons/weliam_smartcity/plugin/cashback/web/view/default/cashback/cashBackRecord.html
  85. 35
      addons/weliam_smartcity/plugin/cashback/web/view/default/cashback/setting.html
  86. 152
      addons/weliam_smartcity/plugin/citycard/Citycard.mod.php
  87. 45
      addons/weliam_smartcity/plugin/citycard/config.xml
  88. BIN
      addons/weliam_smartcity/plugin/citycard/icon.png
  89. 704
      addons/weliam_smartcity/plugin/citycard/uniapp.php
  90. 372
      addons/weliam_smartcity/plugin/citycard/web/controller/citycard.ctrl.php
  91. 175
      addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/card_edit.html
  92. 133
      addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/card_lists.html
  93. 53
      addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/cate_edit.html
  94. 112
      addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/cate_lists.html
  95. 152
      addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/meal_edit.html
  96. 77
      addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/meal_lists.html
  97. 109
      addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/order_lists.html
  98. 116
      addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/setting.html
  99. 123
      addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/top_edit.html
  100. 72
      addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/top_lists.html

BIN
addons/weliam_smartcity/h5/static/icon_position.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

1
addons/weliam_smartcity/h5/static/index.css

File diff suppressed because one or more lines are too long

1
addons/weliam_smartcity/h5/static/js/pages-subPages-shareMaterials-index.5b058737.js

File diff suppressed because one or more lines are too long

1
addons/weliam_smartcity/h5/static/js/pages-subPages-signdesk-index-index.ef35ae70.js

File diff suppressed because one or more lines are too long

1
addons/weliam_smartcity/h5/static/js/pages-subPages-signdesk-rank-rank.fca2d1a2.js

File diff suppressed because one or more lines are too long

1
addons/weliam_smartcity/h5/static/js/pages-subPages-signdesk-record-record.a1e82855.js

File diff suppressed because one or more lines are too long

1
addons/weliam_smartcity/h5/static/js/pages-subPages-special-rushspeci-rushspeci.9ab8ce38.js

File diff suppressed because one or more lines are too long

1
addons/weliam_smartcity/h5/static/js/pages-subPages-submitOrder-submitOrder.e0b8a746.js

File diff suppressed because one or more lines are too long

1
addons/weliam_smartcity/h5/static/js/pages-subPages-submitOrder-submitOrder~pages-subPages2-businessCenter-foodOrder-foodOrder~pages-subP~aba2fe69.fba81879.js

File diff suppressed because one or more lines are too long

1
addons/weliam_smartcity/h5/static/js/pages-subPages-webview-webview.235fc294.js

@ -0,0 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["pages-subPages-webview-webview"],{1466:function(e,n,t){"use strict";var r;t.d(n,"b",(function(){return u})),t.d(n,"c",(function(){return i})),t.d(n,"a",(function(){return r}));var u=function(){var e=this,n=e.$createElement,t=e._self._c||n;return e.urlsrc?t("v-uni-view",[t("v-uni-web-view",{staticStyle:{height:"75vh",position:"fixed"},attrs:{src:e.urlsrc}})],1):e._e()},i=[]},"4a95":function(e,n,t){"use strict";t.r(n);var r=t("96ea"),u=t.n(r);for(var i in r)"default"!==i&&function(e){t.d(n,e,(function(){return r[e]}))}(i);n["default"]=u.a},"5b19":function(e,n,t){"use strict";t.r(n);var r=t("1466"),u=t("4a95");for(var i in u)"default"!==i&&function(e){t.d(n,e,(function(){return u[e]}))}(i);var a,c=t("f0c5"),o=Object(c["a"])(u["default"],r["b"],r["c"],!1,null,"62263eac",null,!1,r["a"],a);n["default"]=o.exports},"96ea":function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var r={data:function(){return{urlsrc:null}},onLoad:function(e){this.urlsrc=decodeURIComponent(e.urlsrc)}};n.default=r}}]);

1
addons/weliam_smartcity/h5/static/js/pages-subPages-writeRecord-index.638d2a9c.js

File diff suppressed because one or more lines are too long

1
addons/weliam_smartcity/h5/static/js/pagesA-instantMessenger-instantMessenger.a4c4cfa5.js

File diff suppressed because one or more lines are too long

BIN
addons/weliam_smartcity/h5/static/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

26
addons/weliam_smartcity/payment/AlipayCallback.php

@ -0,0 +1,26 @@
<?php
/**
* Comment: 支付宝支付异步通知地址
* Author: zzw
*/
//前置操作
define('IN_UNIAPP', true);
header('Access-Control-Allow-Origin:*');
if(is_file('../../../wlversion.txt')){
$version = file_get_contents('../../../wlversion.txt');
define("MODULE_NAME",$version);
}else{
define("MODULE_NAME",'weliam_smartcity');
}
require '../../../framework/bootstrap.inc.php';
require '../../../addons/'.MODULE_NAME.'/core/common/defines.php';
require PATH_MODULE . "/vendor/autoload.php";
require PATH_MODULE . "core/common/autoload.php";
Func_loader::core('global');
global $_W, $_GPC;
load()->model('attachment');
$_W['siteroot'] = str_replace(array('/addons/'.MODULE_NAME.'/payment','/addons/weliam_smartcity/payment'), '', $_W['siteroot']);
//调用处理方法
Payment::AliPay_notify();

26
addons/weliam_smartcity/payment/WeChatCallback.php

@ -0,0 +1,26 @@
<?php
/**
* Comment: 支付宝支付异步通知地址
* Author: zzw
*/
//前置操作
define('IN_UNIAPP', true);
header('Access-Control-Allow-Origin:*');
if(is_file('../../../wlversion.txt')){
$version = file_get_contents('../../../wlversion.txt');
define("MODULE_NAME",$version);
}else{
define("MODULE_NAME",'weliam_smartcity');
}
require '../../../framework/bootstrap.inc.php';
require '../../../addons/'.MODULE_NAME.'/core/common/defines.php';
require PATH_MODULE . "/vendor/autoload.php";
require PATH_MODULE . "core/common/autoload.php";
Func_loader::core('global');
global $_W, $_GPC;
load()->model('attachment');
$_W['siteroot'] = str_replace(array('/addons/'.MODULE_NAME.'/payment','/payment','/addons/weliam_smartcity/payment'), '', $_W['siteroot']);
//调用处理方法
Payment::WeChat_notify();

157
addons/weliam_smartcity/payment/wechat/notify.php

@ -0,0 +1,157 @@
<?php
/**
* [WeEngine System] Copyright (c) 2014 WE7.CC
* WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
*/
define('IN_MOBILE', true);
require '../../../../framework/bootstrap.inc.php';
$input = file_get_contents('php://input');
$isxml = true;
if (!empty($input) && empty($_GET['out_trade_no'])) {
$obj = isimplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA);
$data = json_decode(json_encode($obj), true);
if (empty($data)) {
$result = array(
'return_code' => 'FAIL',
'return_msg' => ''
);
echo array2xml($result);
exit;
}
if ($data['result_code'] != 'SUCCESS' || $data['return_code'] != 'SUCCESS') {
$result = array(
'return_code' => 'FAIL',
'return_msg' => empty($data['return_msg']) ? $data['err_code_des'] : $data['return_msg']
);
echo array2xml($result);
exit;
}
$get = $data;
} else {
$isxml = false;
$get = $_GET;
}
load()->web('common');
load()->classs('coupon');
$_W['uniacid'] = $_W['weid'] = intval($get['attach']);
$_W['uniaccount'] = $_W['account'] = uni_fetch($_W['uniacid']);
$_W['acid'] = $_W['uniaccount']['acid'];
$_W['siteroot'] = str_replace(array('/addons/'.MODULE_NAME.'/payment/wechat','/addons/'.MODULE_NAME,'/addons/weliam_smartcity','/addons/weliam_smartcity/payment/wechat'), '', $_W['siteroot']);
$setting = uni_setting($_W['uniacid'], array('payment'));
if ($get['trade_type'] == 'NATIVE') {
$setting = setting_load('store_pay');
$setting['payment']['wechat'] = $setting['store_pay']['wechat'];
}
if(is_array($setting['payment'])) {
$wechat = $setting['payment']['wechat'];
WeUtility::logging('pay', var_export($get, true));
if(!empty($wechat)) {
ksort($get);
$string1 = '';
foreach($get as $k => $v) {
if($v != '' && $k != 'sign') {
$string1 .= "{$k}={$v}&";
}
}
if (intval($wechat['switch']) == 3) {
$facilitator_setting = uni_setting($wechat['service'], array('payment'));
$wechat['signkey'] = $facilitator_setting['payment']['wechat_facilitator']['signkey'];
} else {
$wechat['signkey'] = ($wechat['version'] == 1) ? $wechat['key'] : (!empty($wechat['apikey']) ? $wechat['apikey'] : $wechat['signkey']);
}
$sign = strtoupper(md5($string1 . "key={$wechat['signkey']}"));
//由于签名一直对应不上 所以暂时注释签名验证
//if ($sign == $get['sign']) {
$sql = 'SELECT * FROM ' . tablename('core_paylog') . ' WHERE `uniontid`=:uniontid';
$params = array();
$params[':uniontid'] = $get['out_trade_no'];
$log = pdo_fetch($sql, $params);
if (intval($wechat['switch']) == PAYMENT_WECHAT_TYPE_SERVICE) {
$get['openid'] = $log['openid'];
}
if (!empty($log) && $log['status'] == '0' && (($get['total_fee'] / 100) == $log['card_fee'])) {
$log['tag'] = iunserializer($log['tag']);
$log['tag']['transaction_id'] = $get['transaction_id'];
$log['uid'] = $log['tag']['uid'];
$record = array();
$record['status'] = '1';
$record['tag'] = iserializer($log['tag']);
pdo_update('core_paylog', $record, array('plid' => $log['plid']));
$mix_pay_credit_log = pdo_get('core_paylog', array('module' => $log['module'], 'tid' => $log['tid'], 'uniacid' => $log['uniacid'], 'type' => 'credit'));
if (!empty($mix_pay_credit_log)) {
pdo_update('core_paylog', array('status' => 1), array('plid' => $mix_pay_credit_log['plid']));
$log['fee'] = $mix_pay_credit_log['fee'] + $log['fee'];
$log['card_fee'] = $mix_pay_credit_log['fee'] + $log['card_fee'];
$setting = uni_setting($_W['uniacid'], array('creditbehaviors'));
$credtis = mc_credit_fetch($log['uid']);
mc_credit_update($log['uid'], $setting['creditbehaviors']['currency'], -$mix_pay_credit_log['fee'], array($log['uid'], '消费' . $setting['creditbehaviors']['currency'] . ':' . $fee));
}
if ($log['is_usecard'] == 1 && !empty($log['encrypt_code'])) {
$coupon_info = pdo_get('coupon', array('id' => $log['card_id']), array('id'));
$coupon_record = pdo_get('coupon_record', array('code' => $log['encrypt_code'], 'status' => '1'));
load()->model('activity');
$status = activity_coupon_use($coupon_info['id'], $coupon_record['id'], $log['module']);
}
if ($log['type'] == 'wxapp') {
$site = WeUtility::createModuleWxapp($log['module']);
} else {
$site = WeUtility::createModuleSite($log['module']);
}
if (!is_error($site)) {
$method = 'payResult';
if (method_exists($site, $method)) {
$ret = array();
$ret['weid'] = $log['weid'];
$ret['uniacid'] = $log['uniacid'];
$ret['acid'] = $log['acid'];
$ret['result'] = 'success';
$ret['type'] = $log['type'];
$ret['from'] = 'notify';
$ret['tid'] = $log['tid'];
$ret['uniontid'] = $log['uniontid'];
$ret['transaction_id'] = $log['transaction_id'];
$ret['trade_type'] = $get['trade_type'];
$ret['follow'] = $get['is_subscribe'] == 'Y' ? 1 : 0;
$ret['user'] = empty($get['openid']) ? $log['openid'] : $get['openid'];
$ret['fee'] = $log['fee'];
$ret['tag'] = $log['tag'];
$ret['is_usecard'] = $log['is_usecard'];
$ret['card_type'] = $log['card_type'];
$ret['card_fee'] = $log['card_fee'];
$ret['card_id'] = $log['card_id'];
if (!empty($get['time_end'])) {
$ret['paytime'] = strtotime($get['time_end']);
}
$site->$method($ret);
if ($isxml) {
$result = array(
'return_code' => 'SUCCESS',
'return_msg' => 'OK'
);
echo array2xml($result);
exit;
} else {
exit('success');
}
}
}
}
//}
}
}
if($isxml) {
$result = array(
'return_code' => 'FAIL',
'return_msg' => ''
);
$res = array2xml($result);
echo array2xml($result);
exit;
} else {
exit('fail');
}

30
addons/weliam_smartcity/payment/wechat/return.php

@ -0,0 +1,30 @@
<?php
error_reporting(0);
define('IN_MOBILE', true);
if (empty($_GET['outtradeno'])){
exit('订单不存在');
}
require '../../../../framework/bootstrap.inc.php';
global $_W,$_GPC;
$pdoname = 'wlmerchant_';
$orderon = $_GPC['outtradeno'];
$_W['uniacid'] = $_W['weid'] = intval($_GPC['attach']);
$_W['uniaccount'] = $_W['account'] = uni_fetch($_W['uniacid']);
$_W['acid'] = $_W['uniaccount']['acid'];
$_W['siteroot'] = str_replace(array('/addons/'.MODULE_NAME.'/payment/wechat','/addons/'.MODULE_NAME,'/addons/weliam_smartcity','/addons/weliam_smartcity/payment/wechat'), '', $_W['siteroot']);
$log = pdo_get("core_paylog",array('uniontid'=>$orderon));
if (!(empty($log))) {
$site = WeUtility::createModuleSite($log['module']);
$method = 'payResult';
if (!(is_error($site))) {
$ret['uniacid'] = $log['uniacid'];
$ret['tid'] = $log['tid'];
$ret['result'] = 'success';
$ret['from'] = 'return';
$ret['type'] = $log['type'];
$site->$method($ret);
exit();
}
}

340
addons/weliam_smartcity/plugin/activity/Activity.mod.php

@ -0,0 +1,340 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Activity{
static function createrecord($orderid){
global $_W;
$order = pdo_get('wlmerchant_order',array('id' => $orderid));
$random = Util::createConcode(1);
$data = array(
'uniacid' => $_W['uniacid'],
'aid' => $_W['aid'],
'status' => 1,
'sid' => $order['sid'],
'mid' => $order['mid'],
'activityid'=> $order['fkid'],
'checkcode' => $random,
'usetimes' => $order['num'],
'orderid' => $orderid,
'createtime'=> time()
);
$res = pdo_insert(PDO_NAME.'activity_record',$data);
$recordid = pdo_insertid();
return $recordid;
}
/**
* 修改活动浏览量
* @param number $id 黄页id
* @return bool
*/
static function changepv($id,$minup,$maxup) {
global $_W;
if($minup > 0 && $maxup > 0){
$up = rand($minup,$maxup);
}else{
$up = 1;
}
pdo_query('UPDATE ' . tablename(PDO_NAME . 'activitylist') . " SET `pv` = `pv` + {$up} WHERE id = {$id}");
}
//报名成功模板消息
static function SuccessNotice($orderid){
global $_W;
$order = pdo_get('wlmerchant_order',array('id' => $orderid));
$activity = pdo_get('wlmerchant_activitylist',array('id' => $order['fkid']),array('title'));
$merchantName = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$order['sid']),'storename');
$buyer = pdo_get(PDO_NAME.'member',array('id'=>$order['mid']),array('nickname','openid'));
$nickname = $buyer['nickname'];
$buyopenid = $buyer['openid'];
//发送给商家
$storeadmin = pdo_getcolumn(PDO_NAME.'merchantuser',array('storeid'=>$order['sid'],'ismain'=> 1),'mid');
$storeadminopenid = pdo_getcolumn(PDO_NAME.'member',array('id'=>$storeadmin),'openid');
$first = '您好,用户['.$nickname.']报名的活动['.$activity['title'].']已支付';
$keyword1 = '商户活动';
$keyword2 = '已报名成功';
$remark = '订单金额:'.$order['price'].'元,报名人数:'.$order['num'].',请商家注意准备';
$url = app_url('store/supervise/switchstore', array('storeid' => $order['sid'],'url' => urlencode(app_url('store/supervise/order',array('status'=> 1)))));
Message::jobNotice($storeadminopenid,$first,$keyword1,$keyword2,$remark,$url);
//发送给管理员
$openids = pdo_getall('wlmerchant_agentadmin',array('aid' => $order['aid'],'notice'=> 1),array('openid'));
$url = app_url('activity/activity_app/activitydetail',array('id'=>$order['fkid']));
$remark = '所属商家:'.$merchantName;
if($openids){
foreach ($openids as $key => $member){
Message::jobNotice($member['openid'],$first,$keyword1,$keyword2,$remark,$url);
}
}
//发送给买家
$first = '亲爱的用户['.$nickname.']您好,您报名['.$activity['title'].']活动已成功';
$remark = '请在规定时间前往['.$merchantName.']参加活动';
$url = h5_url('pages/subPages/orderList/orderList');
Message::jobNotice($buyopenid,$first,$keyword1,$keyword2,$remark,$url);
}
static function payActivityshargeNotify($params){
global $_W;
Util::wl_log('payResult_notify',PATH_PLUGIN."activity/data/",$params); //写入异步日志记录
$order_out = pdo_get('wlmerchant_order',array('orderno' => $params['tid']));
$activity = pdo_get('wlmerchant_activitylist',array('id' => $order_out['fkid']));
$_W['uniacid'] = $order_out['uniacid'];
$_W['wlsetting']['creditset'] = Setting::wlsetting_read('creditset');
$data = self::getOrderPayData($params, $order_out); //得到支付参数,处理代付
if($order_out['status'] == 0 || $order_out['status'] == 5){
//生成核销码
Order::createSmallorder($order_out['id'] , 6);
//计算过期时间
$data['estimatetime'] = $activity['activeendtime'];
$data['remindtime'] = Order::remindTime($activity['activestarttime']);
//处理分销
if($order_out['cerditmoney'] > 0 && $_W['wlsetting']['creditset']['nodistribution'] > 0){
$nodis = 1;
}else{
$nodis = 0;
}
if (p('distribution') && empty($activity['isdistri']) && empty($order_out['drawid']) && empty($nodis)) {
if ($order_out['specid']) {
$option = pdo_get('wlmerchant_activity_spec', array('id' => $order_out['specid']), array('disarray'));
$activity['disarray'] = WeliamWeChat::mergeDisArray($option['disarray'],$activity['disarray']);
}
$disarray = unserialize($activity['disarray']);
$dismoney = sprintf("%.2f",$order_out['goodsprice'] - $order_out['vipdiscount']);
$disorderid = Distribution::disCore($order_out['mid'], $dismoney, $disarray, $order_out['num'], 0, $order_out['id'], 'activity', $activity['dissettime'],$activity['isdistristatus']);
$data['disorderid'] = $disorderid;
}
pdo_update(PDO_NAME.'order',$data, array('orderno' => $params['tid'])); //更新订单状态
Store::addFans($activity['sid'] , $_W['mid']);
News::addSysNotice($order_out['uniacid'],2,$order_out['sid'],0,$order_out['id']);
News::paySuccess($order_out['id'], 'activity');
}
}
static function payActivityshargeReturn($params){
wl_message('报名成功',h5_url('pages/subPages/orderList/orderList'),'success');
}
static function getOrderPayData($params, $order_out) {
$data = array('status' => $params['result'] == 'success' ? 1 : 0);
if ($params['is_usecard'] == 1) {
$fee = $params['card_fee'];
$data['is_usecard'] = 1;
} else {
$fee = $params['fee'];
}
//$paytype = array('credit' => 1, 'wechat' => 2, 'alipay' => 3, 'delivery' => 4, 'wxapp' => 5);
$data['paytype'] = $params['type'];
if ($params['tag']['transaction_id']) $data['transid'] = $params['tag']['transaction_id'];
$data['paytime'] = TIMESTAMP;
$data['price'] = $fee;
$data['createtime'] = TIMESTAMP;
$data['blendcredit'] = $params['blendcredit'];
return $data;
}
static function hexiaoorder($id,$mid,$num=1,$type=1,$checkcode=''){ //1输码 2扫码 3后台 4密码
global $_W;
$order = pdo_get('wlmerchant_order', array('id' => $id));
$cutofftime = $order['estimatetime'];
if ($cutofftime < time() && $type != 3) {
if (is_mobile()) {
die(json_encode(array("errno" => 1, 'message' => '已超过截止日期,无法核销','data'=>'')));
} else {
show_json(0, '已超过截止日期,无法核销');
}
}
if ($order['status'] != 1 && $type != 3) {
if (is_mobile()) {
die(json_encode(array('errno' => 1, 'message' => '订单已核销','data'=>'')));
} else {
show_json(0, '订单已核销');
}
}
if($checkcode){
$smallorders = pdo_fetchall("SELECT * FROM ".tablename('wlmerchant_smallorder')."WHERE plugin = 'activity' AND orderid = {$id} AND status = 1 AND checkcode = '{$checkcode}'");
}else{
$smallorders = pdo_fetchall("SELECT * FROM ".tablename('wlmerchant_smallorder')."WHERE plugin = 'activity' AND orderid = {$id} AND status = 1 ORDER BY id ASC LIMIT {$num}");
}
if($smallorders){
if($mid){
$uid = pdo_getcolumn(PDO_NAME.'merchantuser',array('storeid'=>$order['sid'],'mid'=>$mid),'id');
}else{
$uid = 0;
}
foreach ($smallorders as $k => $small){
$res = Order::finishSmallorder($small['id'],$uid,$type);
}
}else{
if (is_mobile()) {
die(json_encode(array('errno' => 1, 'message' => '无可用核销码')));
} else {
show_json(0, '无可用核销码');
}
}
if ($res) {
$active = pdo_get('wlmerchant_activitylist', array('id' => $order['fkid']), array('title'));
//发送核销成功通知
$info = array(
'first' => '您好,您的商品已经成功核销' ,
'goods_name' => $active['title'],//商品名称
'goods_num' => $num,//商品数量
'time' => date('Y-m-d H:i:s',time()),//核销时间
'order_no' => $order['orderno'],//订单编号
'remark' => '如有疑问请联系客服'
);
TempModel::sendInit('write_off',$order['mid'],$info,$_W['source']);
if ($type == 2) {
$info2 = array(
'first' => '核销操作成功' ,
'goods_name' => $active['title'],//商品名称
'goods_num' => $num,//商品数量
'time' => date('Y-m-d H:i:s',time()),//核销时间
'order_no' => $order['orderno'],//订单编号
'remark' => '订单编号:['.$order['orderno'].']',
);
TempModel::sendInit('write_off',$_W['mid'],$info2,$_W['source']);
}
SingleMerchant::verifRecordAdd($order['aid'], $order['sid'], $order['mid'], 'activity', $order['id'], $order['checkcode'], $active['title'], $type, $num);
return 1;
} else {
return 0;
}
}
static function refundorder($id, $money = 0, $unline = '',$checkcode = '',$afterid = 0){
global $_W,$_GPC;
$order = pdo_get('wlmerchant_order',array('id' => $id));
if($order['status'] == 7){
$res['status'] = 0;
$res['message'] = '订单已退款';
return $res;
}
if($checkcode){
if($money<0.01){
$smallorder = pdo_fetch("SELECT orderprice,blendcredit FROM ".tablename(PDO_NAME . "smallorder")." WHERE plugin = 'activity' AND orderid = {$id} AND status IN (1,4) AND checkcode = '{$checkcode}'");
$money = sprintf("%.2f",$smallorder['orderprice'] - $smallorder['blendcredit']);
$blendcredit = $smallorder['blendcredit'];
}
$refundnum = 1;
}else if(empty($money)){
$money = pdo_fetchcolumn('SELECT SUM(orderprice) FROM ' . tablename(PDO_NAME . "smallorder") . " WHERE plugin = 'activity' AND orderid = {$id} AND status IN (1,4)");
$blendcredit = pdo_fetchcolumn('SELECT SUM(blendcredit) FROM ' . tablename(PDO_NAME . "smallorder") . " WHERE plugin = 'activity' AND orderid = {$id} AND status IN (1,4)");
$money = sprintf("%.2f",$money - $blendcredit);
$refundnum = pdo_fetchcolumn('SELECT count(id) FROM '.tablename(PDO_NAME . "smallorder")." WHERE plugin = 'activity' AND orderid = {$id} AND status IN (1,4)");
}else{
if($money < $order['blendcredit']){
$blendcredit = $money;
$money = 0;
}else if($order['blendcredit'] > 0){
$blendcredit = $order['blendcredit'];
$money = sprintf("%.2f",$money - $blendcredit);
}
$refundnum = pdo_fetchcolumn('SELECT count(id) FROM '.tablename(PDO_NAME . "smallorder")." WHERE plugin = 'activity' AND orderid = {$id} AND status IN (1,4)");
}
if ($unline) {
$res['status'] = 1;
} else {
$res = wlPay::refundMoney($id, $money, '活动报名订单退款', 'activity', 2,$blendcredit);
}
if ($res['status']) {
if($checkcode){
pdo_update('wlmerchant_smallorder', array('status' => 3, 'refundtime' => time()),array('plugin' => 'activity','orderid'=>$id,'status'=> array(1,4),'checkcode'=>$checkcode));
}else if(empty($afterid)){
pdo_update('wlmerchant_smallorder', array('status' => 3, 'refundtime' => time()),array('plugin' => 'activity','orderid'=>$id,'status'=> array(1,4)));
}else if($afterid > 0){
$afterCheckcode = pdo_getcolumn(PDO_NAME.'aftersale',array('id'=>$afterid),'checkcodes');
$afterCheckcode = unserialize($afterCheckcode);
pdo_update('wlmerchant_smallorder', array('status' => 3, 'refundtime' => time()),array('plugin' => 'activity','orderid'=>$id,'checkcode' => $afterCheckcode));
}
if ($order['applyrefund']) {
$reason = '买家申请退款。';
$orderdata['applyrefund'] = 2;
} else {
$reason = '抢购系统退款。';
}
$overflag = pdo_get('wlmerchant_smallorder',array('orderid' => $id,'plugin'=>'activity','status'=>1),array('id'));
if(empty($overflag)){
$hexiao = pdo_get('wlmerchant_smallorder',array('orderid' => $id,'plugin'=>'activity','status'=>2),array('id'));
if($hexiao){
$orderdata['status'] = 2;
$orderdata['issettlement'] = 1;
$orderdata['settletime'] = time();
}else{
$orderdata['status'] = 7;
$orderdata['refundtime'] = time();
}
pdo_update('wlmerchant_order',$orderdata, array('id' => $order['id']));
}
$url = h5_url('pages/subPages/orderList/orderDetails/orderDetails',['orderid'=>$id,'plugin'=>'activity']);
if ($order['disorderid']) {
Distribution::refunddis($order['disorderid'],$checkcode);
}
News::refundNotice($id,'activity',$money,$reason);
//退回适用积分
if ($order['dkcredit']) {
$refundcredit = sprintf("%.2f",$order['dkcredit']/$order['num']*$refundnum);
$goodname = pdo_getcolumn(PDO_NAME . 'activitylist', array('id' => $order['activityid']), 'title');
Member::credit_update_credit1($order['mid'], $refundcredit, '退款活动报名:[' . $goodname . ']订单返还积分');
}
if($order['redpackid'] && $orderdata['status'] == 7){
pdo_update('wlmerchant_redpack_records',array('status' => 0,'usetime' =>0,'orderid' => 0,'plugin' =>''),array('id' => $order['redpackid']));
}
}else{
pdo_fetch("update" . tablename('wlmerchant_order') . "SET failtimes = failtimes+1 WHERE id = {$id}");
}
return $res;
}
static function doTask(){
global $_W,$_GPC;
$now = time();
//修改未开始到报名中
pdo_update('wlmerchant_activitylist',array('status' => 2),array('status' => 1,'enrollstarttime <'=>$now));
//修改已截止报名的活动状态
$activity2 = pdo_fetchall("SELECT id,enrollnum,minpeoplenum FROM ".tablename('wlmerchant_activitylist')."WHERE status = 2 AND enrollendtime < {$now}");
if($activity2){
foreach ($activity2 as $key => $ac) {
pdo_update('wlmerchant_activitylist',array('status' => 3),array('id' => $ac['id']));
$ac['enrollnum'] = WeliamWeChat::getSalesNum(6,$ac['id'],0,2);
if($ac['minpeoplenum'] > 0 && $ac['enrollnum'] < $ac['minpeoplenum']){
//退款所有报名订单
$refundorders = pdo_getall('wlmerchant_order',array('fkid' => $ac['id'],'plugin' => 'activity','status' => 1),array('price','id'));
if($refundorders){
foreach ($refundorders as $key => &$re) {
if($re['price'] > 0){
pdo_update('wlmerchant_order',array('status' => 6),array('id' => $re['id']));
}else {
pdo_update('wlmerchant_order',array('status' => 5),array('id' => $re['id']));
}
}
}
}
}
}
//过期流程
$where = Queue::getTaskWhere(0);
$actorder3 = pdo_fetchall("SELECT id,fkid,uniacid,aid FROM " . tablename('wlmerchant_order') . "WHERE plugin = 'activity' {$where} AND status = 1 AND estimatetime < {$nowtime} AND estimatetime > 0 ORDER BY id DESC LIMIT 10");
if (!empty($actorder3)) {
foreach ($actorder3 as $key => $actor3) {
pdo_update('wlmerchant_order', array('status' => 9, 'overtime' => time()), array('id' => $actor3['id']));
//自动退款
$_W['uniacid'] = $actor3['uniacid'];
$_W['aid'] = $actor3['aid'];
$orderset = Setting::wlsetting_read('orderset');
if ($orderset['reovertime']){
pdo_update('wlmerchant_order', array('status' => 6), array('id' => $actor3['id']));
self::refundorder($actor3['id']);
}
}
}
}
}
?>

47
addons/weliam_smartcity/plugin/activity/config.xml

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<name><![CDATA[同城活动]]></name>
<identifie><![CDATA[activity]]></identifie>
<version><![CDATA[1.0.0]]></version>
<type><![CDATA[market]]></type>
<description><![CDATA[同城活动助力本地公益活动,商家活动,优惠促销,团购活动,户外运动]]></description>
<author><![CDATA[微连科技]]></author>
<url><![CDATA[http://www.weliam.cn/]]></url>
</application>
<setting>
<agent embed="true" />
<store embed="true" />
<system embed="true" />
<task embed="true" />
</setting>
<agentmenu>
<menu title="活动管理" font="fa-inbox">
<entry title="活动列表" ac="activity_web" do="activitylist" iscover="true" />
<entry title="添加活动" ac="activity_web" do="createactivity" actions='["ac","activity_web","do","createactivity"]' />
</menu>
<menu title="分类管理" font="fa-inbox">
<entry title="分类列表" ac="activity_web" do="categorylist"/>
</menu>
<menu title="设置" font="fa-inbox">
<entry title="基础设置" ac="activity_web" do="baseset"/>
</menu>
</agentmenu>
<storemenu>
<menu title="活动管理" font="fa-inbox">
<entry title="活动列表" ac="activity_web" do="activitylist" actions='["do",["activity_web","activitylist"]]' iscover="true" />
</menu>
</storemenu>
<systemmenu>
<menu title="活动管理" font="fa-inbox">
<entry title="活动列表" ac="activity_web" do="activitylist" iscover="true" />
<entry title="添加活动" ac="activity_web" do="createactivity" actions='["ac","activity_web","do","createactivity"]' />
</menu>
<menu title="分类管理" font="fa-inbox">
<entry title="分类列表" ac="activity_web" do="categorylist"/>
</menu>
<menu title="设置" font="fa-inbox">
<entry title="基础设置" ac="activity_web" do="baseset"/>
</menu>
</systemmenu>
</manifest>

BIN
addons/weliam_smartcity/plugin/activity/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

439
addons/weliam_smartcity/plugin/activity/uniapp.php

@ -0,0 +1,439 @@
<?php
defined('IN_IA') or exit('Access Denied');
class ActivityModuleUniapp extends Uniapp {
/**
* Comment: 获取活动首页初始化数据
* Author: wlf
* Date: 2020/10/21 09:19
*/
public function homeInfo(){
global $_W,$_GPC;
//获取设置
$settings = Setting::agentsetting_read('activity');
$data = [];
//幻灯片
$advs = pdo_getall('wlmerchant_adv',array('aid' => $_W['aid'],'uniacid' => $_W['uniacid'],'type' => 14,'enabled' => 1),array('link','thumb'),'','displayorder DESC,id DESC');
if(!empty($advs)){
foreach($advs as &$adv){
$adv['thumb'] = tomedia($adv['thumb']);
}
}
$data['adv'] = $advs;
//分类
$cates = pdo_getall('wlmerchant_activity_category',array('uniacid' => $_W['uniacid'],'aid' => $_W['aid'],'status'=>1),array('name','id'));
$data['cates'] = $cates;
//社群
if($settings['communityid'] > 0){
$community = pdo_get('wlmerchant_community',array('id' => $settings['communityid']),array('communname','commundesc','communimg','communqrcode','systel'));
if(!empty($community['communimg'])){
$community['communimg'] = tomedia($community['communimg']);
}
if(!empty($community['communqrcode'])){
$community['communqrcode'] = tomedia($community['communqrcode']);
}
$data['community'] = $community;
}else{
$data['community'] = [];
}
$this->renderSuccess('首页初始化信息',$data);
}
/**
* Comment: 获取活动首页列表数据
* Author: wlf
* Date: 2020/10/21 10:08
*/
public function homeList(){
global $_W, $_GPC;
#1、参数获取
$page = $_GPC['page'] ? $_GPC['page'] : 1;
$page_index = $_GPC['page_index'] ? $_GPC['page_index'] : 10;
$page_start = $page * $page_index - $page_index;
$lng = $_GPC['lng'] ? $_GPC['lng'] : 0;//用户当前所在经度
$lat = $_GPC['lat'] ? $_GPC['lat'] : 0;//用户当前所在纬度
$status = !empty($_GPC['status']) ? $_GPC['status'] : '';
$is_total = $_GPC['is_total'] ? : 0;//0=不获取总页数;1=获取总页数
$cate_id = $_GPC['cate_id'] ? : 0;//商品分类id
$is_vip = $_GPC['is_vip'] ? : 0;//是否获取专属商品
$set = Setting::agentsetting_read("pluginlist");
$sort = $_GPC['sort'] ? : $set['hdsort'];
#2、生成基本查询条件
$where = " a.aid = {$_W['aid']} AND a.uniacid = {$_W['uniacid']} ";
if (!empty($status)) {
$ids = explode(',', $status);
if (count($ids) > 1) {
$where .= " AND a.status IN ({$status}) ";
} else {
$where .= " AND a.status = {$status} ";
}
} else {
$where .= " AND a.status = 2";
}
if($cate_id > 0) $where .= " AND a.cateid = {$cate_id} ";
if ($is_vip == 1) $where .= " AND a.vipstatus IN (1,2) ";
#4、生成排序条件 1=创建时间 2=店铺距离 3=推荐设置 4=浏览人气 5=商品销量
switch ($sort) {
case 1:
$order = " ORDER BY a.createtime,a.id DESC ";
break;//创建时间
case 2:
break;//店铺距离
case 3:
$order = " ORDER BY a.sort DESC,a.id DESC ";
break;//默认排序
case 4:
$order = " ORDER BY a.pv DESC,a.id DESC ";
break;//浏览人气
case 5:
$order = " ORDER BY buy_num DESC,a.id DESC ";
break;//商品销量
}
#5、按照排序方式获取商品列表
if ($sort != 2) {
$sql = "SELECT a.id,a.id as goods_id,IFNULL(sum(b.num),0) as buy_num FROM "
. tablename(PDO_NAME . "activitylist")
. " as a LEFT JOIN " . tablename(PDO_NAME . "order")
. " as b ON a.id = b.fkid AND b.plugin = 'activity' AND b.uniacid = {$_W['uniacid']} AND b.status IN (0,1,2,3,6,9,4,8) AND b.aid = {$_W['aid']} "
. " WHERE {$where} GROUP BY a.id {$order}" . " LIMIT {$page_start},{$page_index} ";
$info = pdo_fetchall($sql);
} else if ($sort == 2) {
//店铺距离排序
$info = pdo_fetchall("SELECT a.id as goods_id,b.id,b.location FROM "
. tablename(PDO_NAME . "activitylist")
. " as a RIGHT JOIN "
. tablename(PDO_NAME . "merchantdata")
. " as b ON a.sid = b.id WHERE {$where} ");
$info = Store::getstores($info, $lng, $lat, 2);
$info = array_slice($info, $page_start, $page_index);
}
#6、循环处理信息
foreach ($info as $key => &$val) {
//获取最新的商品信息
$val = WeliamWeChat::getHomeGoods(9, $val['goods_id']);
$val['url'] = h5_url('pages/subPages2/coursegoods/coursegoods', ['id' => $val['id']]);
$val['status'] = strval($val['status']);
//当商品信息中带有sid时添加店铺链接
if ($val['sid']) {
$val['shop_url'] = h5_url('pages/mainPages/store/index', ['sid' => $val['sid']]);
$val['distance'] = Store::shopLocation($val['sid'], $lng, $lat);
}
if($is_vip > 0){
$val['price'] = sprintf("%.2f",$val['price'] - $val['discount_price']);
}
//删除多余的信息
unset($val['user_list']);
unset($val['user_num']);
unset($val['totalnum']);
}
#7、获取总页数
if ($is_total == 1) {
$total = pdo_fetchcolumn("SELECT count(*) FROM " . tablename(PDO_NAME . "activitylist") . " as a WHERE {$where}");
$data['total'] = ceil($total / $page_index);
$data['list'] = $info;
$this->renderSuccess('同城活动信息列表', $data);
}
$data['list'] = $info;
$this->renderSuccess('同城活动信息列表', $data);
}
/**
* Comment: 获取活动详情页面数据
* Author: wlf
* Date: 2020/10/21 13:58
*/
public function activityDetail(){
global $_W,$_GPC;
$id = $_GPC['id'];
if(empty($id)){
$this->renderError('缺少关键参数id');
}
$settings = Setting::agentsetting_read('activity');
$activity = pdo_get('wlmerchant_activitylist',array('id' => $id),array('onelimit','status','maxpeoplenum','sid','title','cateid','thumb','activestarttime','activeendtime','enrollstarttime','enrollendtime','price','vipstatus','viparray','address','addresstype','threeurl','bgmusic','pv','enrolldetail','detail','thumbs','advs','optionstatus','lng','lat'));
if(!empty($activity['threeurl'])){
$data['url'] = $activity['threeurl'];
$this->renderSuccess('页面跳转',$data);
}else{
unset($activity['threeurl']);
}
if($activity['status'] != 1 && $activity['status'] != 2 && $activity['status'] != 3){
$this->renderError('活动不存在或已关闭');
}
$data = $activity;
//修改浏览量
Activity::changepv($id,$settings['minup'],$settings['maxup']);
//时间
$data['activestarttime'] = date('y-m-d H:i',$data['activestarttime']);
$data['activeendtime'] = date('y-m-d H:i',$data['activeendtime']);
$data['enrollstarttime'] = date('y-m-d H:i',$data['enrollstarttime']);
$data['enrollendtime'] = date('y-m-d H:i',$data['enrollendtime']);
//详情
if(!empty($data['detail'])){$data['detail'] = htmlspecialchars_decode($data['detail']);}
if(!empty($data['enrolldetail'])){$data['enrolldetail'] = htmlspecialchars_decode($data['enrolldetail']);}
//图集,背景音乐与幻灯片
$data['bgmusic'] = tomedia($data['bgmusic']);
$data['thumb'] = tomedia($data['thumb']);
$data['advs'] = unserialize($data['advs']);
if(!empty($data['advs'])){
foreach($data['advs'] as &$adv){
$adv = tomedia($adv);
}
}
$data['thumbs'] = unserialize($data['thumbs']);
if(!empty($data['thumbs'])){
foreach($data['thumbs'] as &$thumb){
$thumb = tomedia($thumb);
}
}
//商家信息
$merchant = pdo_get('wlmerchant_merchantdata',array('id' => $data['sid']),array('id','storename','mobile','address','lng','lat','storehours'));
$storehours = unserialize($merchant['storehours']);
if(!empty($storehours['startTime'])){
$merchant['storehours'] = $storehours['startTime'] . ' - ' . $storehours['endTime'];
}else{
$merchant['storehours'] = '';
foreach($storehours as $hk => $hour){
if($hk > 0){
$merchant['storehours'] .= ','.$hour['startTime'] . ' - ' . $hour['endTime'];
}else{
$merchant['storehours'] .= $hour['startTime'] . ' - ' . $hour['endTime'];
}
}
}
$data['storeinfo'] = $merchant;
//最近参与与报名人数统计
$data['salenum'] = WeliamWeChat::getSalesNum(6,$id,0,1);
$list = pdo_fetchall("SELECT distinct mid FROM ".tablename('wlmerchant_order')."WHERE uniacid = {$_W['uniacid']} AND fkid = {$id} AND plugin = 'activity' AND status IN (1,2,3) ORDER BY createtime DESC LIMIT 5");
if(!empty($list)){
foreach($list as &$li){
$li['avatar'] = pdo_getcolumn(PDO_NAME.'member',array('id'=>$li['mid']),'avatar');
$li['avatar'] = tomedia($li['avatar']);
}
$data['memberlist'] = array_column($list,'avatar');
}
if($activity['onelimit']){
$salesVolume = WeliamWeChat::getSalesNum(6,$id,0,1,$_W['mid']);
$surplus = $activity['onelimit'] - $salesVolume;
}else{
$surplus = 9999;
}
//会员优惠
if($activity['vipstatus'] == 1){
$usercard = WeliamWeChat::VipVerification($_W['mid']);
if($usercard['id'] > 0){
$usercardlevel = $usercard['levelid'];
if($usercardlevel > 0){
$data['levelname'] = pdo_getcolumn(PDO_NAME.'halflevel',array('id'=>$usercardlevel),'name');
}else{
$data['levelname'] = $_W['wlsetting']['halflevel']['name'];
}
}else{
$usercardlevel = -1;
$data['levelname'] = '会员最多';
}
$data['discount_price'] = WeliamWeChat::getVipDiscount($activity['viparray'],$usercardlevel);
}
//多规格 与 限量购买
if($data['optionstatus'] > 0){
$specs = pdo_getall('wlmerchant_activity_spec',array('activityid' => $id),array('name','id','price','maxnum','viparray'));
foreach($specs as &$sp){
if($sp['maxnum'] > 0){
$sp['salenum'] = WeliamWeChat::getSalesNum(6,$id,$sp['id'],1);
$sp['surplus'] = $sp['maxnum'] - $sp['salenum'];
}else{
$sp['surplus'] = 9999;
}
//会员减免
$viparray = WeliamWeChat::mergeVipArray($sp['viparray'],$activity['viparray']);
$sp['discount_price'] = WeliamWeChat::getVipDiscount($viparray,$usercardlevel);
}
$sp['surplus'] = min([$sp['surplus'],$surplus]);
$data['specarray'] = $specs;
$prices = array_column($specs,'price');
$data['price'] = min($prices);
}else{
if($data['maxpeoplenum'] > 0){
$data['surplus'] = $data['maxpeoplenum'] - $data['salenum'];
}else{
$data['surplus'] = 9999;
}
$data['surplus'] = min([$data['surplus'],$surplus]);
}
$this->renderSuccess('活动详情信息',$data);
}
/**
* Comment: 手机端创建活动页面初始化
* Author: wlf
* Date: 2020/10/22 09:42
*/
public function createActivityPage(){
global $_W,$_GPC;
$sid = $_GPC['sid'];
$id = $_GPC['id'];
if(empty($sid)){
$this->renderError('缺少关键参数:商户id');
}
$data = [];
//分类
$data['catelist'] = pdo_getall('wlmerchant_activity_category',array('status' => 1,'uniacid'=>$_W['uniacid'],'aid'=>$_W['aid']),array('name','id'),'','sort DESC');
//自定义表单
$data['diyform'] = pdo_getall('wlmerchant_diyform',array('uniacid'=>$_W['uniacid'],'aid'=>$_W['aid']),array('title','id'),'','sort DESC,id DESC');
if(!empty($id)){
$activity = pdo_get('wlmerchant_activitylist',array('id' => $id),array('status','addresstype','maxpeoplenum','minpeoplenum','title','cateid','thumb','activestarttime','activeendtime','enrollstarttime','enrollendtime','price','address','enrolldetail','detail','thumbs','advs','optionstatus','lng','lat','addresstype'));
//状态
if($activity['status'] == 1 || $activity['status'] == 2 || $activity['status'] == 3){
$activity['status'] = 1;
}else{
$activity['status'] = 0;
}
//详情
// if(!empty($activity['detail'])){$activity['detail'] = htmlspecialchars_decode($activity['detail']);}
// if(!empty($activity['enrolldetail'])){$activity['enrolldetail'] = htmlspecialchars_decode($activity['enrolldetail']);}
//图集与幻灯片
$activity['thumb'] = tomedia($activity['thumb']);
$activity['advs'] = unserialize($activity['advs']);
if(!empty($activity['advs'])){
foreach($activity['advs'] as &$adv){
$adv = tomedia($adv);
}
}else{
$activity['advs'] = [];
}
$activity['thumbs'] = unserialize($activity['thumbs']);
if(!empty($activity['thumbs'])){
foreach($activity['thumbs'] as &$thumb){
$thumb = tomedia($thumb);
}
}else{
$activity['thumbs'] = [];
}
//多规格
if($activity['optionstatus'] > 0){
$specs = pdo_getall('wlmerchant_activity_spec',array('activityid' => $id),array('name','id','price','minnum','maxnum'));
$activity['specarray'] = $specs;
}
$data['activity'] = $activity;
}
$this->renderSuccess('创建页面初始化',$data);
}
/**
* Comment: 手机端创建/编辑活动接口
* Author: wlf
* Date: 2020/10/22 10:46
*/
public function createActivityApi(){
global $_W,$_GPC;
$sid = $_GPC['sid'];
$id = $_GPC['id'];
if(empty($sid)){
$this->renderError('缺少关键参数:商户id');
}
$optionArray = json_decode(base64_decode($_GPC['optionArray']),true);
$data = [];
//商户信息
$store = pdo_get('wlmerchant_merchantdata',array('id' => $sid),array('aid','audits','address','lng','lat','enabled'));
if($store['enabled'] != 1){
$this->renderError('商户未在营业中,无法进行此操作');
}
//图集与幻灯片
$thumbs = trim($_GPC['thumbs']);
if(!empty($thumbs)){
$thumbs = explode(',' , $thumbs);
$thumbs = serialize($thumbs);
}else{
$thumbs = '';
}
$advs = trim($_GPC['advs']);
if(!empty($advs)){
$advs = explode(',',$advs);
$advs = serialize($advs);
}else{
$advs = '';
}
//储存
$gooddata = [
'title' => $_GPC['title'],
'thumb' => $_GPC['thumb'],
'cateid' => trim($_GPC['cateid']),
'thumbs' => $thumbs,
'advs' => $advs,
'activestarttime' => strtotime(trim($_GPC['activestarttime'])),
'activeendtime' => strtotime(trim($_GPC['activeendtime'])),
'enrollstarttime' => strtotime(trim($_GPC['enrollstarttime'])),
'enrollendtime' => strtotime(trim($_GPC['enrollendtime'])),
'maxpeoplenum' => trim($_GPC['maxpeoplenum']),
'minpeoplenum' => trim($_GPC['minpeoplenum']),
'price' => trim($_GPC['price']),
'enrolldetail' => htmlspecialchars_decode($_GPC['enrolldetail']),
'detail' => htmlspecialchars_decode($_GPC['detail']),
'addresstype' => trim($_GPC['addresstype']),
'diyformid' => $_GPC['diyformid'],
];
if($gooddata['addresstype'] > 0){
$gooddata['address'] = trim($_GPC['address']);
$gooddata['lng'] = trim($_GPC['lng']);
$gooddata['lat'] = trim($_GPC['lat']);
}else{
$gooddata['address'] = trim($store['address']);
$gooddata['lng'] = trim($store['lng']);
$gooddata['lat'] = trim($store['lat']);
}
if(count($optionArray)>0){
$gooddata['optionstatus'] = 1;
}
$gooddata['status'] = $_GPC['status'];
if($gooddata['status'] == 1 && empty($store['audits'])){
$gooddata['status'] == 5;
}
//保存
if(empty($id)){
$gooddata['createtime'] = time();
$gooddata['uniacid'] = $_W['uniacid'];
$gooddata['aid'] = $store['aid'];
$gooddata['sid'] = $sid;
$gooddata['independent'] = 1;
$gooddata['isdistri'] = 1;
$res = pdo_insert(PDO_NAME.'activitylist',$gooddata);
if($res){
$id = pdo_insertid();
}
}else{
$res = pdo_update(PDO_NAME.'activitylist',$gooddata,array('id' => $id));
}
if(empty($id)){
$this->renderError('保存失败,请重试');
}
//多规格
if(count($optionArray)>0){
$specids = [];
foreach ($optionArray as $option){
if($option['id']>0){
$specids[] = $specid = $option['id'];
unset($option['id']);
pdo_update('wlmerchant_activity_spec',$option,array('id' => $specid));
}else{
unset($option['id']);
$option['uniacid'] = $_W['uniacid'];
$option['activityid'] = $id;
pdo_insert(PDO_NAME . 'activity_spec',$option);
$specid[] = pdo_insertid();
}
}
pdo_query('delete from ' . tablename('wlmerchant_activity_spec') . ' where activityid = '.$id.' AND id not in ('.implode(',' , $specid).')');
$res = 1;
}
if($res){
$this->renderSuccess('保存成功');
}else{
$this->renderError('保存商品失败,请重试');
}
}
}

723
addons/weliam_smartcity/plugin/activity/web/controller/activity_web.ctrl.php

@ -0,0 +1,723 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Activity_web_WeliamController {
function activitylist(){
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$where = array('uniacid'=>$_W['uniacid'],'aid'=>$_W['aid']);
if (is_store()) {
$where['sid'] = $_W['storeid'];
}
$status = $_GPC['status'];
if(empty($status) || $status == 'all'){
$_GPC['status'] = 'all';
}else if($status == 9){
$where['status'] = 0;
}else {
$where['status'] = $status;
}
if (!empty($_GPC['keyword'])){
if(!empty($_GPC['keywordtype'])){
switch($_GPC['keywordtype']){
case 1: $where['@title@'] = $_GPC['keyword'];break;
case 2: $where['id'] = $_GPC['keyword'];break;
default:break;
}
if($_GPC['keywordtype'] == 3){
$keyword = $_GPC['keyword'];
$params[':storename'] = "%{$keyword}%";
$merchants = pdo_fetchall("SELECT * FROM ".tablename('wlmerchant_merchantdata')."WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND storename LIKE :storename",$params);
if($merchants){
$sids = "(";
foreach ($merchants as $key => $v) {
if($key == 0){
$sids.= $v['id'];
}else{
$sids.= ",".$v['id'];
}
}
$sids.= ")";
$where['sid#'] = $sids;
}else {
$where['sid#'] = "(0)";
}
}
}
}
$lists = Util::getNumData('*','wlmerchant_activitylist',$where,'sort DESC',$pindex,$psize,1);
$pager = $lists[1];
$lists = $lists[0];
foreach ($lists as $key => &$list) {
$list['storename'] = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$list['sid']),'storename');
$list['alreadypay'] = WeliamWeChat::getSalesNum(6,$list['id'],0,2); //已报名
if(empty($list['alreadypay'])){$list['alreadypay'] = 0;}
$list['alreadyuse'] = WeliamWeChat::getSalesNum(6,$list['id'],0,3); //已完成
if(empty($list['alreadyuse'])){$list['alreadyuse'] = 0;}
if($list['optionstatus'] > 0){
$options = pdo_getall('wlmerchant_activity_spec',array('activityid' => $list['id']),array('price'));
$prices = array_column($options,'price');
$list['minprice'] = min($prices);
$list['maxprice'] = max($prices);
}
}
if (is_store()) {
$statusall = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} and sid = {$_W['storeid']}");
$status9 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} and sid = {$_W['storeid']} AND status = 0");
$status5 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} and sid = {$_W['storeid']} AND status = 5");
$status1 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} and sid = {$_W['storeid']} AND status = 1");
$status2 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} and sid = {$_W['storeid']} AND status = 2");
$status3 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} and sid = {$_W['storeid']} AND status = 3");
$status4 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} and sid = {$_W['storeid']} AND status = 4");
}else{
$statusall = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']}");
$status9 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} AND status = 0");
$status5 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} AND status = 5");
$status1 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} AND status = 1");
$status2 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} AND status = 2");
$status3 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} AND status = 3");
$status4 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME.'activitylist') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} AND status = 4");
}
include wl_template('activity/activitylist');
}
function createactivity(){
global $_W, $_GPC;
$id = $_GPC['id'];
if(p('distribution')){
$distriset = Setting::wlsetting_read('distribution');
}else{
$distriset = 0;
}
if($distriset['switch'] > 0){
$dislevel = pdo_getall('wlmerchant_dislevel', array('uniacid' => $_W['uniacid']),['id','name']);
}
//分类
$cate = pdo_getall('wlmerchant_activity_category',array('status' => 1,'uniacid'=>$_W['uniacid'],'aid'=>$_W['aid']),array('name','id'),'','sort DESC');
//自定义表单
$formWhere = ['uniacid'=>$_W['uniacid'],'aid'=>$_W['aid']];
if(is_store()) $formWhere['sid'] = $_W['storeid'];
$diyform = pdo_getall(PDO_NAME."diyform",$formWhere,['id','title'],'','create_time DESC,id DESC');
//自定义海报
if(p('diyposter')){
$posterlist = pdo_getall(PDO_NAME . 'poster' , ['uniacid' => $_W['uniacid'] , 'type' => 14] , ['id' , 'title']);
}
//锦鲤抽奖
if(agent_p('luckydraw')){
$drawlist = pdo_getall('wlmerchant_luckydraw',array('uniacid' => $_W['uniacid'],'aid' => $_W['aid'],'status' => 1),array('id','title'));
}
//会员等级
$levels = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_halflevel') . "WHERE uniacid = {$_W['uniacid']} AND status = 1 ORDER BY sort DESC");
if($id){
$active = pdo_get('wlmerchant_activitylist',array('id' => $id));
$merchant = Rush::getSingleMerchant($active['sid'],'id,storename,logo');
$active['thumbs'] = unserialize($active['thumbs']);
$active['advs'] = unserialize($active['advs']);
if($active['optionstatus']>0){
$specs = pdo_getall('wlmerchant_activity_spec',array('uniacid' => $_W['uniacid'],'activityid' =>$id));
foreach($specs as &$spsp){
$spsp['viparray'] = unserialize($spsp['viparray']);
$spsp['disarray'] = unserialize($spsp['disarray']);
}
}
//会员减免
if($active['vipstatus'] == 1){
$viparray = unserialize($active['viparray']);
}
//分销数组
if(empty($active['isdistri'])){
$disarray = unserialize($active['disarray']);
}
}else{
$active['lat'] = '39.90960456049752';
$active['lng'] = '116.3972282409668';
$active['independent'] = 1;
$active['isdistri'] = 1;
}
if (empty($active['activestarttime']) || empty($active['activeendtime'])) {//初始化时间
$active['activestarttime'] = time();
$active['activeendtime'] = strtotime('+1 month');
}
if (empty($active['enrollstarttime']) || empty($active['enrollendtime'])) {//初始化时间
$active['enrollstarttime'] = time();
$active['enrollendtime'] = strtotime('+1 month');
}
if ($_W['ispost']){
$active = $_GPC['active'];
if(is_store()){
$active['sid'] = $_W['storeid'];
}
if(empty($active['sid'])){
wl_message('请选择活动所属商户!');
}
if(empty($active['title'])){
wl_message('请输出活动标题');
}
if(empty($active['cateid'])){
wl_message('请选择活动分类');
}
if($active['minpeoplenum'] - $active['maxpeoplenum'] > 0){
wl_message('报名最大人数不能小于最小人数!');
}
//开关
$active['status'] = $_GPC['status'];
$active['vipstatus'] = $_GPC['vipstatus'];
$active['isdistri'] = $_GPC['isdistri'];
$active['isdistristatus'] = $_GPC['isdistristatus'];
if(empty($active['addresstype'])){
$merchantdata = pdo_get('wlmerchant_merchantdata',array('id' => $active['sid']),array('address','lng','lat'));
$active['address'] = $merchantdata['address'];
$active['lng'] = $merchantdata['lng'];
$active['lat'] = $merchantdata['lat'];
}
//详情
$active['detail'] = htmlspecialchars_decode($active['detail']);
$active['enrolldetail'] = htmlspecialchars_decode($active['enrolldetail']);
$active['thumbs'] = serialize($active['thumbs']);
$active['advs'] = serialize($active['advs']);
//会员减免
if($active['vipstatus'] == 1){
$vipleid = $_GPC['vipleid'];
$vipprice = $_GPC['vipprice'];
$storeset = $_GPC['storeset'];
foreach($vipleid as $key => $vle){
$vipa['vipprice'] = sprintf("%.2f",$vipprice[$key]);
$vipa['storeset'] = sprintf("%.2f",$storeset[$key]);
$viparray[$vle] = $vipa;
}
$active['viparray'] = serialize($viparray);
}
//分销商分佣数组
if(empty($active['isdistri'])){
$disleid = $_GPC['disleid'];
$onedismoney = $_GPC['onedismoney'];
$twodismoney = $_GPC['twodismoney'];
foreach($disleid as $dkey => $dle){
$dlea['onedismoney'] = sprintf("%.2f",$onedismoney[$dkey]);
$dlea['twodismoney'] = sprintf("%.2f",$twodismoney[$dkey]);
$disarray[$dle] = $dlea;
}
$active['disarray'] = serialize($disarray);
}
//时间
$activetime = $_GPC['activetime'];
$active['activestarttime'] = strtotime($activetime['start']);
$active['activeendtime'] = strtotime($activetime['end']);
$time = $_GPC['time'];
$active['enrollstarttime'] = strtotime($time['start']);
$active['enrollendtime'] = strtotime($time['end']);
if($active['status'] == 1){
if(is_store()){
$examine = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$active['sid']),'audits');
if(empty($examine)){
$active['status'] = 5;
}else{
if($active['enrollstarttime'] < time() && $active['enrollendtime'] > time()){
$active['status'] = 2;
}else if($active['enrollendtime'] < time()){
$active['status'] = 3;
}
}
}else{
if($active['enrollstarttime'] < time() && $active['enrollendtime'] > time()){
$active['status'] = 2;
}else if($active['enrollendtime'] < time()){
$active['status'] = 3;
}
}
}
if($id){
$res = pdo_update('wlmerchant_activitylist',$active,array('id' => $id));
}else {
$active['uniacid'] = $_W['uniacid'];
$active['aid'] = $_W['aid'];
$active['createtime'] = time();
$res = pdo_insert(PDO_NAME.'activitylist',$active);
$id = pdo_insertid();
}
//获取规格
if(!empty($active['optionstatus'])){
$specname = $_GPC['specname'];
$specprice = $_GPC['specprice'];
$specmax = $_GPC['specmax'];
$specmin = $_GPC['specmin'];
$onedismoney = $_GPC['onedismoney'];
$twodismoney = $_GPC['twodismoney'];
$settlementmoney = $_GPC['settlementmoney'];
$specids = $_GPC['specids'];
if(empty($specname)){
wl_message('请添加规格项或关闭多规格设置');
}
foreach ($specname as $key => $name){
$spec = array(
'name' => $specname[$key],
'price' => $specprice[$key],
'minnum' => $specmin[$key],
'maxnum' => $specmax[$key],
'onedismoney'=> $onedismoney[$key],
'twodismoney'=> $twodismoney[$key],
'settlementmoney' => $settlementmoney[$key]
);
//会员减免
$viparray = [];
$vipleidkword = 'vipleid'.$specids[$key];
$vippricekword = 'vipprice'.$specids[$key];
$storesetkword = 'storeset'.$specids[$key];
$vipleid = $_GPC[$vipleidkword];
$vipprice = $_GPC[$vippricekword];
$storeset = $_GPC[$storesetkword];
foreach($vipleid as $vkey => $vle){
$vipa['vipprice'] = sprintf("%.2f",$vipprice[$vkey]);
$vipa['storeset'] = sprintf("%.2f",$storeset[$vkey]);
$viparray[$vle] = $vipa;
}
$spec['viparray'] = serialize($viparray);
//分销佣金
$disarray = [];
$disleidkword = 'disleid'.$specids[$key];
$onedismoneykword = 'onedismoney'.$specids[$key];
$twodismoneykword = 'twodismoney'.$specids[$key];
$disleid = $_GPC[$disleidkword];
$onedismoney = $_GPC[$onedismoneykword];
$twodismoney = $_GPC[$twodismoneykword];
foreach($disleid as $keyy => $dddle){
$dddleaa['onedismoney'] = sprintf("%.2f",$onedismoney[$keyy]);
$dddleaa['twodismoney'] = sprintf("%.2f",$twodismoney[$keyy]);
$disarray[$dddle] = $dddleaa;
}
$spec['disarray'] = serialize($disarray);
if(empty($specids[$key])){
$spec['uniacid'] = $_W['uniacid'];
$spec['activityid'] = $id;
$res3 = pdo_insert(PDO_NAME . 'activity_spec',$spec);
$specid[] = pdo_insertid();
}else{
$specid[] = $specids[$key];
$res3 = pdo_update('wlmerchant_activity_spec',$spec,array('id' => $specids[$key]));
}
$res2 = $res3 ? : $res2;
}
$res4 = pdo_query('delete from ' . tablename('wlmerchant_activity_spec') . ' where activityid = '.$id.' AND id not in ('.implode(',' , $specid).')');
}
if($res || $res2 || $res4){
wl_message('保存成功!',web_url('activity/activity_web/activitylist'),'success');
}else {
wl_message('保存失败或无内容修改',referer(),'error');
}
}
include wl_template('activity/createactivity');
}
function delateactivity() {
global $_W,$_GPC;
$id = $_GPC['id'];
$res = pdo_delete('wlmerchant_activitylist',array('id'=>$id));
if($res){
show_json(1,'活动删除成功');
}else {
show_json(0,'活动删除成功,请重试');
}
}
function pass(){
global $_W,$_GPC;
$id = $_GPC['id'];
$flag = $_GPC['flag'];
if($flag){
$active = pdo_get('wlmerchant_activitylist',array('id' => $id),array('sid','enrollstarttime','enrollendtime'));
if($active['enrollstarttime'] < time() && $active['enrollendtime'] > time()){
$status = 2;
}else if($active['enrollendtime'] < time()){
$status = 3;
}else {
$status = 1;
}
}else{
$status = 4;
}
$res = pdo_update('wlmerchant_activitylist',array('status' => $status),array('id' => $id));
if($res){
die(json_encode(array('errno'=>0)));
}else {
die(json_encode(array('errno'=>1)));
}
}
function changeacstatus(){
global $_W,$_GPC;
$id = $_GPC['id'];
$status = $_GPC['status'];
if($status == 0 || $status == 4){
$active = pdo_get('wlmerchant_activitylist',array('id' => $id),array('sid','enrollstarttime','enrollendtime'));
if(is_store()){
$examine = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$active['sid']),'audits');
if(empty($examine)){
$status = 5;
}else{
if($active['enrollstarttime'] < time() && $active['enrollendtime'] > time()){
$status = 2;
}else if($active['enrollendtime'] < time()){
$status = 3;
}else {
$status = 1;
}
}
}else{
if($active['enrollstarttime'] < time() && $active['enrollendtime'] > time()){
$status = 2;
}else if($active['enrollendtime'] < time()){
$status = 3;
}else {
$status = 1;
}
}
$res = pdo_update('wlmerchant_activitylist',array('status' => $status),array('id' => $id));
}else{
$res = pdo_update('wlmerchant_activitylist',array('status' => 0),array('id' => $id));
}
if($res){
die(json_encode(array('errno'=>0)));
}else {
die(json_encode(array('errno'=>1)));
}
}
function export($where){
global $_W,$_GPC;
$orders = Util::getNumData("*",'wlmerchant_order',$where,'ID DESC',0,0,1);
$orders = $orders[0];
foreach ($orders as $key => &$order){
$active = pdo_get('wlmerchant_activitylist',array('id' => $order['fkid']),array('title'));
$member = pdo_get('wlmerchant_member',array('id' => $order['mid']),array('nickname','mobile'));
$merchant = pdo_get('wlmerchant_merchantdata',array('id' => $order['sid']),array('storename'));
$order['gname'] = $active['title'];
$order['merchantName'] = $merchant['storename'];
$order['nickname'] = $member['nickname'];
$order['mobile'] = $member['mobile'];
}
$filter = array(
'orderno' => '订单号',
'gname' => '活动名称',
'merchantName' => '所属商家',
'num' => '报名数量',
'nickname' => '买家昵称',
'mobile' => '买家电话',
'status' => '订单状态',
'paytype' => '支付方式',
'createtime' => '下单时间',
'paytime' => '支付时间',
'price' => '实付金额',
'remark' => '备注'
);
$data = array();
foreach ($orders as $k => $v) {
foreach ($filter as $key => $title) {
if($key == 'createtime' || $key == 'paytime'){
$data[$k][$key] = date('Y-m-d H:i:s',$v[$key]);
}else if($key == 'status') {
switch ($v[$key]) {
case '1':
$data[$k][$key] = '已支付';
break;
case '2':
$data[$k][$key] = '已核销';
break;
case '3':
$data[$k][$key] = '已完成';
break;
case '5':
$data[$k][$key] = '已取消';
break;
case '6':
$data[$k][$key] = '待退款';
break;
case '7':
$data[$k][$key] = '已退款';
break;
case '9':
$data[$k][$key] = '已过期';
break;
default:
$data[$k][$key] = '未支付';
break;
}
}else if($key == 'paytype') {
switch ($v[$key]) {
case '1':
$data[$k][$key] = '余额支付';
break;
case '2':
$data[$k][$key] = '微信支付';
break;
case '3':
$data[$k][$key] = '支付宝';
break;
case '4':
$data[$k][$key] = '货到付款';
break;
default:
$data[$k][$key] = '未知方式';
break;
}
}else {
$data[$k][$key] = $v[$key];
}
}
}
util_csv::export_csv_2($data,$filter,'商户活动报名记录.csv');
exit;
}
function hexiaotime(){
global $_W,$_GPC;
$id = $_GPC['id'];
$record = pdo_get('wlmerchant_activity_record',array('orderid' => $id),array('usetimes','usedtime'));
$record['usedtime'] = unserialize($record['usedtime']);
foreach ($record['usedtime'] as $key => &$v) {
$v['time'] = date('Y-m-d H:i:s',$v['time']);
switch ($v['type']){
case '1':
$v['typename'] = '输码核销';
break;
case '2':
$v['typename'] = '扫码核销';
break;
case '3':
$v['typename'] = '后台核销';
break;
case '4':
$v['typename'] = '密码核销';
break;
default:
$v['typename'] = '未知方式';
break;
}
if($v['type'] == 1 || $v['type'] == 2){
$v['vername'] = pdo_getcolumn(PDO_NAME.'member',array('id'=>$v['ver']),'nickname');
}else {
$v['vername'] = '无';
}
}
die(json_encode(array('errno'=>0,'times'=>$record['usetimes'],'data'=>$record['usedtime'])));
}
function cancleHexiao(){
global $_W,$_GPC;
$id = $_GPC['id'];
$num = pdo_getcolumn(PDO_NAME.'order',array('id'=>$id),'num');
$res1 = pdo_update('wlmerchant_order',array('status' => 1),array('id' => $id));
$res2 = pdo_update('wlmerchant_activity_record',array('status' => 1,'usetimes'=>$num),array('orderid' => $id));
if($res1 && $res2){
die(json_encode(array('errno'=>0,'message'=>'取消成功','id'=>$id)));
}else {
die(json_encode(array('errno'=>2,'message'=>'error','id'=>$id)));
}
}
function confirmHexiao(){
global $_W,$_GPC;
$id = $_GPC['id'];
$num = pdo_getcolumn(PDO_NAME.'activity_record',array('orderid'=>$id),'usetimes');
$res = Activity::hexiaoorder($id,0,$num,3);
if($res){
die(json_encode(array('errno'=>0,'message'=>'核销成功','id'=>$id)));
}else {
die(json_encode(array('errno'=>2,'message'=>'error','id'=>$id)));
}
}
function refundOrder(){
global $_W,$_GPC;
$id = $_GPC['id'];
$res = Activity::refundorder($id,2);
if($res['status']){
die(json_encode(array('errno'=>0,'message'=>$res['message'],'id'=>$id)));
}else {
die(json_encode(array('errno'=>2,'message'=>$res['message'],'id'=>$id)));
}
}
function remark(){
global $_W,$_GPC;
$id = $_GPC['id'];
$remark = $_GPC['remark'];
$res = pdo_update('wlmerchant_order',array('remark' => $remark),array('id' => $id));
if($res){
die(json_encode(array('errno'=>0,'message'=>$res,'id'=>$id)));
}else {
die(json_encode(array('errno'=>2,'message'=>$res,'id'=>$id)));
}
}
function changeinfo(){
global $_W,$_GPC;
$id = $_GPC['id'];
$type = $_GPC['type'];
$newvalue = trim($_GPC['value']);
if($type == 1){
$res = pdo_update('wlmerchant_activitylist',array('pv'=>$newvalue),array('id' => $id));
}elseif ($type == 2) {
$res = pdo_update('wlmerchant_activitylist',array('sort'=>$newvalue),array('id' => $id));
}elseif ($type == 3) {
$res = pdo_update('wlmerchant_activitylist',array('maxpeoplenum'=>$newvalue),array('id' => $id));
}elseif ($type == 4) {
$res = pdo_update('wlmerchant_activitylist',array('minpeoplenum'=>$newvalue),array('id' => $id));
}
if($res){
show_json(1,'修改成功');
}else {
show_json(0,'修改失败,请重试');
}
}
function categorylist(){
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 20;
$condition = ' and aid=:aid and uniacid=:uniacid ';
$keyword = trim($_GPC['keyword']);
if (!empty($keyword)) {
$condition .= ' and name like \'%' . $keyword . '%\' ';
}
$list = pdo_fetchall('select id,logo,status,sort,`name` from ' . tablename('wlmerchant_activity_category') . ' where 1 ' . $condition . ' order by sort desc limit ' . (($pindex - 1) * $psize) . ',' . $psize, array(':aid' => intval($_W['aid']),':uniacid' => $_W['uniacid']));
$total = pdo_fetchcolumn('SELECT COUNT(*) FROM ' . tablename('wlmerchant_activity_category') . ' where aid=:aid and uniacid=:uniacid ', array(':aid' => intval($_W['aid']), ':uniacid' => $_W['uniacid']));
$pager = wl_pagination($total, $pindex, $psize);
include wl_template('activity/categorylist');
}
public function editcategoryname(){
global $_W,$_GPC;
$id = intval($_GPC['id']);
$name = trim($_GPC['value']);
$res = pdo_update('wlmerchant_activity_category',array('name'=>$name),array('id' => $id));
if($res){
show_json(1, '修改成功');
}else {
show_json(0, '修改失败,请刷新页面重试!');
}
}
function categoryedit(){
global $_W, $_GPC;
$id = intval($_GPC['id']);
if($id){
$category = pdo_get('wlmerchant_activity_category',array('id' => $id));
}
if (checksubmit('submit')){
$category = $_GPC['category'];
if(empty($category['name'])) wl_message('请填写分类名称');
if(empty($category['logo'])) wl_message('请上传分类图标');
$category['status'] = $_GPC['status'];
if($id){
$res = pdo_update('wlmerchant_activity_category',$category,array('id' => $id));
}else{
$category['uniacid'] = $_W['uniacid'];
$category['aid'] = $_W['aid'];
$category['createtime'] = time();
$res = pdo_insert('wlmerchant_activity_category',$category);
}
if($res){
wl_message('保存成功!',web_url('activity/activity_web/categorylist'),'success');
}else{
wl_message('保存失败,请重试');
}
}
include wl_template('activity/categoryedit');
}
function categorydelete(){
global $_W,$_GPC;
if ($_W['ispost']) {
$id = intval($_GPC['id']);
if (empty($id)) {
show_json(0, '参数错误,请刷新重试!');
}else {
$res = pdo_delete('wlmerchant_activity_category', array('id' => $id,'aid' => intval($_W['aid'])));
}
if($res){
show_json(1);
}else {
show_json(0, '删除失败,请刷新页面重试!');
}
}
}
function changestatus(){
global $_W,$_GPC;
$id = $_GPC['id'];
$newvalue = trim($_GPC['value']);
$res = pdo_update('wlmerchant_activity_category',array('status'=>$newvalue),array('id' => $id));
if($res){
show_json(1,'修改成功');
}else {
show_json(0,'修改失败,请重试');
}
}
function qrcodeimg() {
global $_W, $_GPC;
$url = $_GPC['url'];
m('qrcode/QRcode') -> png($url, false, QR_ECLEVEL_H, 4);
}
function open() {
global $_W, $_GPC;
$url1 = h5_url('pages/mainPages/index/diypage',['type'=>3]);
include wl_template('activity/entry');
}
/**
* Comment: 活动规格页面
* Author: wlf
* Date: 2020/10/15 10:30
*/
public function specpage(){
global $_W;
include wl_template('activity/specpage');
}
/**
* Comment: 基础设置
* Author: wlf
* Date: 2020/10/21 09:31
*/
public function baseset(){
global $_W, $_GPC;
$settings = Setting::agentsetting_read('activity');
if (checksubmit('submit')) {
$data = $_GPC['settings'];
Setting::agentsetting_save($data, 'activity');
wl_message('更新设置成功!', web_url('activity/activity_web/baseset'));
}
$communitylist = pdo_getall('wlmerchant_community', array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid']), array('id', 'communname'));
include wl_template('activity/baseset');
}
}

200
addons/weliam_smartcity/plugin/activity/web/view/default/activity/activitylist.html

@ -0,0 +1,200 @@
{php include wl_template('common/header');}
<style type='text/css'>
.order-rank img{width:16px; height:16px;}
.js-remark,.js-admin-remark{word-break:break-all; overflow:hidden; background: #FDEEEE;color: #ED5050;padding: 5px 10px;}
td.goods-info{position:relative; padding-left:60px;}
.goods-info .img{position:absolute;top:50%; margin-top:-25px; background: url({IMAGE_LOADING}) center center no-repeat; width:50px;height:50px; }
.goods-info span {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;display: block;}
.status-text{cursor:pointer;}
</style>
<ul class="nav nav-tabs">
<li {if $_GPC['status']=='all'}class="active"{/if}><a href="{php echo web_url('activity/activity_web/activitylist',array('status'=>'all'));}">全部活动{if $statusall}<span class="label label-warning pull-right" style="margin-left: 10px;">{$statusall}</span>{/if}</a></li>
<li {if $_GPC['status']==1}class="active"{/if}><a href="{php echo web_url('activity/activity_web/activitylist',array('status'=>1));}">待开始{if $status1}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status1}</span>{/if}</a></li>
<li {if $_GPC['status']==2}class="active"{/if}><a href="{php echo web_url('activity/activity_web/activitylist',array('status'=>2));}">报名中{if $status2}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status2}</span>{/if}</a></li>
<li {if $_GPC['status']==3}class="active"{/if}><a href="{php echo web_url('activity/activity_web/activitylist',array('status'=>3));}">报名结束{if $status3}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status3}</span>{/if}</a></li>
<li {if $_GPC['status']==9}class="active"{/if}><a href="{php echo web_url('activity/activity_web/activitylist',array('status'=>9));}">下架中{if $status9}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status9}</span>{/if}</a></li>
<li {if $_GPC['status']==5}class="active"{/if}><a href="{php echo web_url('activity/activity_web/activitylist',array('status'=>5));}">待审核{if $status5}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status5}</span>{/if}</a></li>
<li {if $_GPC['status']==4}class="active"{/if}><a href="{php echo web_url('activity/activity_web/activitylist',array('status'=>4));}">被驳回{if $status4}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status4}</span>{/if}</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-action">
<a href="{php echo web_url('activity/activity_web/createactivity')}" class="btn btn-primary">添加活动</a>
</div>
<div class="filter-list">
<form action="" method="get" class="form-horizontal" role="form" id="form1">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="{MODULE_NAME}" />
<input type="hidden" name="p" value="activity" />
<input type="hidden" name="ac" value="activity_web" />
<input type="hidden" name="do" value="activitylist" />
<div class="form-group">
<label class="col-sm-2 control-label">关键字</label>
<div class="col-md-3">
<select name="keywordtype" class="form-control">
<option value="">关键字类型</option>
<option value="1" {if $_GPC['keywordtype']==1}selected="selected"{/if}>活动名称</option>
<option value="2" {if $_GPC['keywordtype']==2}selected="selected"{/if}>活动ID</option>
{if !is_store()}
<option value="3" {if $_GPC['keywordtype']==3}selected="selected"{/if}>商家名称</option>
{/if}
</select>
</div>
<div class="col-md-4">
<input type="text" name="keyword" class="form-control" value="{$_GPC['keyword']}" placeholder="请输入关键字"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<button class="btn btn-primary" id="search">筛选</button>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
<div class="order-list panel panel-default">
<div class="panel-body table-responsive collapse in" id="order-template-item-4" style="padding: 0;">
<table class="table table-hover table-bordered">
<thead style="background-color: #FFFFFF;">
<tr>
<th style="width:30px;text-align:center;">ID</th>
<th style="width:120px;">商品</th>
<th style="width:100px; text-align:center;">报名时间</th>
<th style="width:60px; text-align:center;">报名费/状态</th>
<th style="width:60px; text-align:center;">属性</th>
<th style="width:70px; text-align:center;">最多/最少人数</th>
<th style="width:70px; text-align:center;">数据统计</th>
<!--<th style="width:120px; text-align:center;">核销截止时间</th>-->
<th style="width:100px; text-align:center;">操作</th>
</tr>
</thead>
<tbody>
{loop $lists $item}
<tr>
<td class="text-center">
<span>{$item['id']}</span>
</td>
<td class="goods-info line-feed">
<div class="img"><img class="scrollLoading" src="{IMAGE_PIXEL}" data-url="{php echo tomedia($item['thumb'])}" height="50" width="50" onerror="this.src='{IMAGE_NOPIC_SMALL}'" ></div>
<div class="title" style="padding-left: 60px;">
<span>{$item['title']}</span>
<span>商家:{$item['storename']}</span>
</div>
</td>
<td class="line-feed" style="width:150px;padding-left: 5px;">
<div class="title" style="text-align: center;">
<span>从:{php echo date('m-d H:i',$item['enrollstarttime'])}</span><br />
<span>到:{php echo date('m-d H:i',$item['enrollendtime'])}</span>
</div>
</td>
<td class="text-center" style="width:60px;">
{if $item['optionstatus'] > 0}
<p style="color:orangered">¥{$item['minprice']} - ¥{$item['maxprice']}</p>
{else}
<p style="color:orangered">¥{$item['price']}</p>
{/if}
<p>{if $item['status'] == 0 }<span class="label label-warning">下架中</span>{/if}
{if $item['status'] == 1 }<span class="label label-warning">未开始</span>{/if}
{if $item['status'] == 2 }<span class="label label-success">报名中</span>{/if}
{if $item['status'] == 3 }<span class="label label-danger">报名结束</span>{/if}
{if $item['status'] == 4 }<span class="label label-danger">未通过</span>{/if}
{if $item['status'] == 5 }<span class="label label-danger">待审核</span>{/if}</p>
</td>
<td class="text-center" style="width:60px;">
<p>人气:<a style="color: #428bca;" data-href="{php echo web_url('activity/activity_web/changeinfo',array('id' => $item['id'],'type'=>1))}" href="javascript:;" title="修改人气" data-toggle="ajaxEdit" >{$item['pv']}</a></p>
<p>排序:<a style="color: #428bca;" data-href="{php echo web_url('activity/activity_web/changeinfo',array('id' => $item['id'],'type'=>2))}" href="javascript:;" title="修改排序" data-toggle="ajaxEdit" >{$item['sort']}</a></p>
</td>
<td class="text-center" style="width:70px;">
{if $item['optionstatus'] > 0}
<p>多规格活动</p>
{else}
<p>{if $item['maxpeoplenum']}最多:<a style="color: #428bca;" data-href="{php echo web_url('activity/activity_web/changeinfo',array('id' => $item['id'],'type'=>3))}" href="javascript:;" title="修改人数" data-toggle="ajaxEdit" >{$item['maxpeoplenum']}</a>人{else}无限制{/if}</p>
<p>{if $item['minpeoplenum']}最少:<a style="color: #428bca;" data-href="{php echo web_url('activity/activity_web/changeinfo',array('id' => $item['id'],'type'=>4))}" href="javascript:;" title="修改人数" data-toggle="ajaxEdit" >{$item['minpeoplenum']}</a>人{else}无限制{/if}</p>
{/if}
</td>
<td class="text-center" style="width:70px;">
<p style="color: #428bca;"><a href="{php echo web_url('order/wlOrder/checkcodeList',array('plugin'=>'activity','status'=>1,'id' => $item['id']))}">已报名:{$item['alreadypay']}</a></p>
<p style="color: #428bca;"><a href="{php echo web_url('order/wlOrder/checkcodeList',array('plugin'=>'activity','status'=>3,'id' => $item['id']))}">已完成:{$item['alreadyuse']}</a></p>
</td>
<td class="text-center">
{if p('wxplatform')}
<a href="javascript:;" data-url="{php echo h5_url('pages/subPages2/coursegoods/coursegoods',['id'=>$item['id']])}" class="js-clip">复制链接</a>
{/if}
{if p('wxapp')}
<a href="javascript:;" data-url="pages/subPages2/coursegoods/coursegoods?id={$item['id']}" class="js-clip">复制路径</a>
{/if}
<!--<p style="color: #428bca;display: inline-block;"><a href="javascript:;" class="js-copy" order-id="{$item['id']}">复制</a></p>-->
<p style="color: #428bca;display: inline-block;"><a href="{php echo web_url('activity/activity_web/createactivity',array('id' => $item['id']))}">编辑</a> </p>
<br />
{if ($item['status'] == 1 || $item['status'] == 2 || $item['status'] == 3)}
<p style="color: #428bca;display: inline-block;"><a href="javascript:;" class="js-remove" order-id="{$item['id']}" order-status="{$item['status']}">关闭</a></p>
{/if}
{if $item['status'] ==0 || $item['status'] ==4}
<p style="color: #428bca;display: inline-block;"><a href="javascript:;" class="js-remove" order-id="{$item['id']}" order-status="{$item['status']}">开启</a></p>
{/if}
{if $item['status']==5 && !is_store()}
<p style="color: #428bca;display: inline-block;"><a href="javascript:;" class="js-pass" order-id="{$item['id']}" flag="1">通过</a> </p>
<p style="color: #428bca;display: inline-block;"><a href="javascript:;" class="js-pass" order-id="{$item['id']}" flag="0">不通过</a></p>
{/if}
<p style="color: #428bca;display: inline-block;"><a href="{php echo web_url('activity/activity_web/delateactivity', array('id'=>$item['id']))}" data-toggle="ajaxRemove" data-confirm="此操作会删除商户活动,该活动对应订单可能会发生错误,确定要删除吗?">删除</a></p>
{if Customized::init('pft147') > 0}
<p style="color: #428bca;display: inline-block;"><a href="{php echo web_url('goodshouse/goodshouse/checklist', array('id' => $item['id'],'plugin'=>'activity'))}">核销码</a> </p>
{/if}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
{$pager}
</div>
</div>
<script type="text/javascript">
$("#search").click(function(){
$('#form1')[0].submit();
});
</script>
<script type="text/javascript">
$(function(){
$('.order-list').delegate('.js-remove', 'click', function(e){
e.stopPropagation();
var $this = $(this);
var id = $this.attr('order-id');
var status = $this.attr('order-status');
var statushtml = (status == 0 || status == 4) ? "开启" : "关闭";
util.nailConfirm(this, function(state) {
if(!state) return;
$.post("{php echo web_url('activity/activity_web/changeacstatus')}", {id:id,status:status}, function(data){
if(!data.errno){
util.tips(statushtml+"成功!");
location.reload();
};
}, 'json');
}, {html: "确认<span style='color:red;'>"+statushtml+"</span>?"});
});
$('.order-list').delegate('.js-pass', 'click', function(e){
e.stopPropagation();
var $this = $(this);
var id = $this.attr('order-id');
var flag = $this.attr('flag');
var statushtml = (flag == 1) ? "通过" : "不通过";
util.nailConfirm(this, function(state) {
if(!state) return;
$.post("{php echo web_url('activity/activity_web/pass')}", {id:id,flag:flag}, function(data){
if(!data.errno){
util.tips(statushtml+"成功!");
location.reload();
};
}, 'json');
}, {html: "确认<span style='color:red;'>"+statushtml+"</span>此活动审核?"});
});
});
</script>
{php include wl_template('common/footer');}

71
addons/weliam_smartcity/plugin/activity/web/view/default/activity/baseset.html

@ -0,0 +1,71 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a href="#tab_basic">基础设置</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<div class="tab-content">
<div class="tab-pane active" id="tab_basic">
<div class="form-group-title">基础设置</div>
<div class="form-group">
<label class="col-sm-2 control-label">首页社群</label>
<div class="col-sm-9">
<select name="settings[communityid]" class="form-control select2">
<option value="0">不显示社群</option>
{loop $communitylist $key $val}
<option value="{$val['id']}" {if $val['id'] == $settings['communityid']}selected{/if}>{$val['communname']}</option>
{/loop}
</select>
<span class="help-block">请选择首页是否显示社群</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">浏览增量</label>
<div class="col-sm-9">
<div class="input-group">
<span class="input-group-addon">每次增加</span>
<input type="text" name="settings[minup]" class="form-control" value="{$settings['minup']}" digits="true">
<span class="input-group-addon">~</span>
<input type="text" name="settings[maxup]" class="form-control" value="{$settings['maxup']}" digits="true">
<span class="input-group-addon"></span>
</div>
<div class="help-block">设置后,所有活动浏览1次将不再是计数1,而是取您设置的上限和下限之间的随机数</div>
</div>
</div>
<div class="form-group-title">首页分享</div>
<div class="alert alert-warning">
<p>适用模板变量:[昵称] [时间] [系统名称]</p>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享标题</label>
<div class="col-sm-9">
<input type="text" name="settings[share_title]" class="form-control" value="{$settings['share_title']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享图片</label>
<div class="col-sm-9">
{php echo attachment_select('settings[share_image]', $settings['share_image']);}
<span class="help-block">推荐图片尺寸500X500</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享描述</label>
<div class="col-sm-9">
<input type="text" name="settings[share_desc]" class="form-control" value="{$settings['share_desc']}" />
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

68
addons/weliam_smartcity/plugin/activity/web/view/default/activity/categoryedit.html

@ -0,0 +1,68 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li><a href="{php echo web_url('activity/activity_web/categorylist');}">分类列表</a></li>
<li class="active"><a href="javascript:;">{if $id}编辑{else}新建{/if}分类</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate" onsubmit="return formcheck(this);">
<div class="tab-content">
<div class="panel panel-default">
<div class="panel-heading">活动分类</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">分类名称<span style="color: orangered;">*</span></label>
<div class="col-xs-12 col-sm-8">
<input type="text" name="category[name]" class="form-control" value="{$category['name']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分类图标<span style="color: orangered;">*</span></label>
<div class="col-md-8">
{php echo attachment_select('category[logo]',$category['logo']);}
<span class="help-block">图片建议为80X80</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分类排序</label>
<div class="col-xs-4 col-sm-9">
<input type="number" min="0" name="category[sort]" placeholder="数字越大,排序越前" class="form-control" value="{$category['sort']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分类状态</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="status" value="1" title="启用" {if $category['status'] == 1}checked{/if}> 启用
</label>
<label class="radio-inline">
<input type="radio" name="status" value="0" title="禁用" {if $category['status'] == 0 || empty($category['status'])}checked{/if}> 禁用
</label>
</div>
</div>
</div>
</div>
<div class="form-group col-sm-12">
<label class="col-sm-1 control-label"></label>
<input type="hidden" name="id" value="{$id}" id="id"/>
<input type="submit" name="submit" value="提交" class="btn btn-primary col-lg-1" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
<script>
function formcheck(){
if($("input[name='category[name]']").val() == ''){
layer.alert('请填写分类名称');
return false;
}
if($("input[name='category[logo]']").val() == ''){
layer.alert('请上传分类图标');
return false;
}
return true;
}
</script>
{php include wl_template('common/footer');}

87
addons/weliam_smartcity/plugin/activity/web/view/default/activity/categorylist.html

@ -0,0 +1,87 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="javascript:;">分类列表</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-action">
<a href="{php echo web_url('activity/activity_web/categoryedit');}" class="btn btn-primary">新建分类</a>
<a href="{php echo web_url('goodshouse/category/cateImportShop',['plugin'=>'activity'])}" class="btn btn-default" data-toggle='ajaxPost' data-confirm="确定要导入商家一级分类吗?">一键导入商家分类</a>
</div>
<!--搜索栏-->
<div class="filter-list">
<form action="" method="get" class="form-horizontal" role="form" id="form1">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="{MODULE_NAME}" />
<input type="hidden" name="p" value="activity" />
<input type="hidden" name="ac" value="activity_web" />
<input type="hidden" name="do" value="categorylist" />
<div class="form-group">
<label class="col-sm-2 control-label">分类名</label>
<div class="col-md-4">
<input type="text" name="keyword" class="form-control" value="{$_GPC['keyword']}" placeholder="请输入关键字"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<button class="btn btn-primary" id="search">筛选</button>
</div>
</div>
</form>
</div>
</div>
<!--列表-->
<div class="app-table-list">
<div class="panel panel-default">
<table class="table table-hover table-responsive table-bordered">
<thead class="navbar-inner">
<tr>
<th style="width: 25px;text-align: center;">图标</th>
<th style="width: 120px;">分类名称(点击编辑)</th>
<th style="width: 30px;text-align: center;">状态</th>
<th style="width: 30px;text-align: center;">排序</th>
<th style="width: 80px">操作</th>
</tr>
</thead>
<tbody>
{loop $list $item}
<tr>
<td style="text-align: center;">
<img style="height: 50px;" src="{php echo tomedia($item['logo'])}" />
</td>
<td>
<a href='javascript:;' data-toggle='ajaxEdit' data-href="{php echo web_url('activity/activity_web/editcategoryname',array('id'=>$item['id']))}">
{$item['name']}
</a>
</td>
<th style="text-align: center;">
<span class="change">
<span class='label {if $item['status']==1}label label-primary {else}label-default{/if}'
data-toggle='ajaxSwitch'
data-switch-value='{$item['status']}'
data-switch-value0='0|禁用|label label-default|{php echo web_url('activity/activity_web/changestatus',array('value'=>1,'id'=>$item['id']))}'
data-switch-value1='1|启用|label label-primary|{php echo web_url('activity/activity_web/changestatus',array('value'=>0,'id'=>$item['id']))}'>
{if $item['status']==1}启用{else}禁用{/if}
</span>
</span>
</th>
<td style="text-align: center;">{$item['sort']}</td>
<td style="position: relative;">
<a class="btn btn-sm btn-info" href="{php echo web_url('activity/activity_web/categoryedit',array('id' => $item['id']))}">编辑</a>
<a class="btn btn-sm btn-primary js-clip" href='javascript:;' data-url="{php echo h5_url('pages/mainPages/index/diypage?type=3',['id'=>$item['id']])}">复制链接</a>
<a class="btn btn-sm btn-danger" data-toggle="ajaxRemove" href="{php echo web_url('activity/activity_web/categorydelete', array('id'=>$item['id']))}" data-confirm="确定要删除该分类吗?">删除</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
{$pager}
</div>
<style>
.change:hover{cursor:pointer;}
</style>
{php include wl_template('common/footer');}

623
addons/weliam_smartcity/plugin/activity/web/view/default/activity/createactivity.html

@ -0,0 +1,623 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs" id="myTab">
<li class="active" ><a href="#tab_rush">活动信息</a></li>
<li><a href="#tab_basic">相关信息</a></li>
{if !is_store()}
<li><a href="#tab_detail">营销设置</a></li>
<li><a href="#tab_settlement">结算设置</a></li>
{/if}
<li><a href="#tab_share">分享设置</a></li>
{if $active['optionstatus'] > 0 && ($active['vipstatus'] == 1 || empty($active['isdistri'])) && !is_store()}
<li><a href="#tab_opvip">多规格细表</a></li>
{/if}
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<div class="tab-content">
<div class="tab-pane active" id="tab_rush">
<div class="panel panel-default">
<div class="panel-heading">活动信息</div>
<div class="panel-body">
{if !is_store()}
<div class="form-group">
<label class="col-sm-2 control-label">选择商家<span style="color: orangered;">*</span></label>
<div class="col-sm-9">
<div class="input-group img-item">
<div class="input-group-addon" style="padding: 3px;">
<img {if $merchant['logo']} src="{php echo tomedia($merchant['logo'])}" {else} src="{URL_MODULE}web/resource/image/store.png" {/if} id="storelogo" style="height:25px;width:25px">
</div>
<input type="text" class="form-control" id="storename" value="{$merchant['storename']}">
<div class="input-group-btn">
<input type="hidden" id="merchantid" name="active[sid]" value="{$active['sid']}" >
<button type="button" onclick="popwin = $('#modal-module-merchant').modal();" class="btn btn-default btn-select-pic">选择商家</button>
</div>
</div>
</div>
</div>
{/if}
<div class="form-group">
<label class="col-sm-2 control-label">活动分类<span style="color: orangered;">*</span></label>
<div class="col-sm-6">
<select name="active[cateid]" class="form-control chosen-select" id="s">
<option value="" {if empty($active['cateid'])}selected="selected"{/if}>请选择活动分类</option>
{loop $cate $row}
<option value="{$row['id']}" {if $active['cateid'] == $row['id']}selected="selected"{/if}>{$row['name']}</option>
{/loop}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">活动标题<span style="color: orangered;">*</span></label>
<div class="col-sm-6 col-xs-6">
<input type="text" name="active[title]" id="name" class="form-control" value="{$active['title']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">活动地址</label>
<div class="col-sm-6">
<label class="radio-inline" onclick="$('.addressdiv').hide();">
<input type="radio" name="active[addresstype]" value="0" {if $active['addresstype'] == 0 || empty($active['addresstype'])}checked{/if}>商户地址
</label>
<label class="radio-inline" onclick="$('.addressdiv').show();">
<input type="radio" name="active[addresstype]" value="1" {if $active['addresstype'] == 1}checked{/if}>其他地址
</label>
</div>
</div>
<div class="form-group addressdiv" {if $active['addresstype'] == 0 || empty($active['addresstype'])} style="display:none;" {/if} >
<label class="col-sm-2 control-label">详细地址<span style="color: orangered;">*</span></label>
<div class="col-sm-6">
{php echo tpl_select_address('active[address]','active[lng]','active[lat]',$active['address'],$active['lng'],$active['lat'])}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">活动进行时间<span style="color: orangered;">*</span></label>
<div class="col-sm-9">
<div class="input-group">
{php echo tpl_select_time_info('activetime', array('starttime'=>date('Y-m-d H:i:s',$active['activestarttime']),'endtime'=>date('Y-m-d H:i:s',$active['activeendtime'])));}
</div>
</div>
</div>
<div class="form-group" style="display: block;">
<label class="col-sm-2 control-label">活动报名时间<span style="color: orangered;">*</span></label>
<div class="col-sm-9">
<div class="input-group">
{php echo tpl_select_time_info('time', array('starttime'=>date('Y-m-d H:i:s',$active['enrollstarttime']),'endtime'=>date('Y-m-d H:i:s',$active['enrollendtime'])));}
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">活动规格</label>
<div class="col-sm-9">
<label class="radio-inline optionstatusButton" onclick="$('#tboption').hide();$('#nooption').show();">
<input type="radio" value="0" name="active[optionstatus]" {if $active['optionstatus']==0 || empty($active['optionstatus'])} checked {/if}>单规格
</label>
<label class="radio-inline" onclick="$('#tboption').show();$('#nooption').hide();">
<input type="radio" value="1" name="active[optionstatus]" {if $active['optionstatus']==1} checked {/if}>多规格
</label>
<span class="help-block">开启规格后,活动价格,人数以规格项为准</span>
</div>
</div>
<div id="tboption" {if $active['optionstatus'] == 0 || empty($active['optionstatus'])} style="display:none;" {/if}>
<div class="form-group" style="padding-left:9rem;">
<div class="col-sm-15">
<div class="alert alert-info">
活动报名规格只支持单一规格项目,如有个别特殊活动需要组合规格可以将组合结果设置为某一规格。
</div>
<div id="redEnvelopes">
{if empty($specs)}
{php include wl_template('activity/specpage');}
{else}
{loop $specs $itmes}
{php include wl_template('activity/specpage');}
{/loop}
{/if}
</div>
<span class="help-block">价格最多保留两位小数,报名人数不填或填0则为不限制。</span>
</div>
</div>
<div class="form-group" style="padding-left:10px;">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9" style="padding: 0;">
<a class="btn btn-info btn-add-type" href="javascript:;" onclick="addSpecs();">
<i class="fa fa-plus" title=""></i>增加一种规格设置
</a>
</div>
</div>
</div>
<div id="nooption" {if $active['optionstatus'] > 0 } style="display:none;" {/if}>
<div class="form-group">
<label class="col-sm-2 control-label">报名费用</label>
<div class="col-sm-6 col-xs-6">
<div class="input-group">
<span class="input-group-addon"></span>
<input type="text" name="active[price]" id="activeprice" class="form-control" value="{$active['price']}" />
</div>
<span class="help-block">请保留两位小数,不填或填0即为免费活动</span>
</div>
</div>
<div class="form-group" >
<label class="col-sm-2 control-label">报名人数</label>
<div class="col-md-3">
<div class="input-group">
<span class="input-group-addon">最多</span>
<input type="number" min="0" name="active[maxpeoplenum]" class="form-control" value="{$active['maxpeoplenum']}" />
<span class="input-group-addon"></span>
</div>
<span class="help-block">不填或填0即无人数限制</span>
</div>
<div class="col-md-3">
<div class="input-group">
<span class="input-group-addon">最少</span>
<input type="number" min="0" name="active[minpeoplenum]" class="form-control" value="{$active['minpeoplenum']}" />
<span class="input-group-addon"></span>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">报名表单</label>
<div class="col-sm-6">
<select name="active[diyformid]" class="form-control chosen-select" id="s">
<option value="" >请选择报名表单</option>
{loop $diyform $form}
<option value="{$form['id']}" {if $active['diyformid'] == $form['id']}selected="selected"{/if}>{$form['title']}</option>
{/loop}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">每人报名次数</label>
<div class="col-sm-6 col-xs-6">
<input type="text" name="active[onelimit]" class="form-control" value="{$active['onelimit']}" />
<span class="help-block">默认为0,表示可以为他人报名。</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">活动状态</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="status" value="1" title="开启活动" {if $active['status'] == 1 || $active['status'] == 2 || $active['status'] == 3 }checked{/if}> 开启活动
</label>
<label class="radio-inline">
<input type="radio" name="status" value="0" title="下架活动" {if $active['status'] == 0}checked{/if}> 下架活动
</label>
<label class="radio-inline">
<input type="radio" name="status" value="5" title="审核中" {if $active['status'] == 5}checked{/if}> 审核中
</label>
{if !is_store()}
<label class="radio-inline">
<input type="radio" name="status" value="4" title="审核驳回" {if $active['status'] == 4}checked{/if}> 审核驳回
</label>
{/if}
</div>
</div>
</div>
</div>
<div id="modal-module-merchant" class="modal fade" tabindex="-1">
<div class="modal-dialog" style='width: 920px;'>
<div class="modal-content">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button">×</button>
<h3>选取</h3></div>
<div class="modal-body">
<div class="row">
<div class="input-group">
<input type="text" class="form-control" name="keyword" value="" id="search-kwd-merchant" placeholder="请输入商家名称,不输入任何内容搜索结果为所有商家。" />
<span class='input-group-btn'><button type="button" class="btn btn-default" onclick="search_merchant();">搜索</button></span>
</div>
</div>
<div id="module-merchant" style="padding-top:5px;"></div>
</div>
<div class="modal-footer"><a href="#" class="btn btn-default" data-dismiss="modal" aria-hidden="true">关闭</a></div>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="tab_basic">
<div class="panel panel-default">
<div class="panel-heading">相关信息</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">活动缩略图<span style="color: orangered;">*</span></label>
<div class="col-sm-6 col-xs-6">
{php echo attachment_select('active[thumb]',$active['thumb']);}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">活动轮播图<span style="color: orangered;">*</span></label>
<div class="col-sm-6 col-xs-6">
{php echo attachment_select_multi('active[advs]',$active['advs']);}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">活动图集</label>
<div class="col-sm-6 col-xs-6">
{php echo attachment_select_multi('active[thumbs]',$active['thumbs']);}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">背景音乐</label>
<div class="col-sm-6 col-xs-6">
{php echo attachment_select_audio('active[bgmusic]',$active['bgmusic']);}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">跳转链接</label>
<div class="col-sm-6 col-xs-6">
<div class="input-group" style="margin: 0;">
<input type="text" name="active[threeurl]" class="form-control" value="{$active['threeurl']}" readonly="readonly" id="advlink">
<span data-input="#advlink" data-toggle="selectUrl" class="input-group-addon btn btn-default">选择链接</span>
<span onclick="removesLink()" class="input-group-addon btn btn-default data-item-delete"><i class="fa fa-remove"></i></span>
</div>
<span class="help-block">如果此链接不为空,将跳转到此链接;</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">商品排序</label>
<div class="col-md-3">
<div class="input-group">
<input type="text" name="active[sort]" class="form-control" value="{$active['sort']}" />
</div>
<span class="help-block">数字越大,排序越靠前</span>
</div>
<label class="col-sm-2 control-label">商品人气</label>
<div class="col-md-3">
<div class="input-group">
<input type="text" name="active[pv]" class="form-control" value="{$active['pv']}" />
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">报名须知</label>
<div class="col-sm-9">
{php echo tpl_diy_editor_create('active[enrolldetail]',$active['enrolldetail']);}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">活动详情</label>
<div class="col-sm-9">
{php echo tpl_diy_editor_create('active[detail]',$active['detail']);}
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="tab_detail">
<div class="panel panel-default">
<div class="panel-heading">营销设置</div>
<div class="panel-body">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">会员优惠</label>
<div class="col-sm-9">
<label class="radio-inline" onclick="$('#vipprice').hide();">
<input type="radio" name="vipstatus" value="0" title="无" {if $active['vipstatus'] == 0 || empty($active['vipstatus'])}checked{/if}>
</label>
<label class="radio-inline" onclick="$('#vipprice').show();">
<input type="radio" name="vipstatus" value="1" title="会员减免" {if $active['vipstatus'] == 1}checked{/if}>会员减免
</label>
<label class="radio-inline" onclick="$('#vipprice').hide();">
<input type="radio" name="vipstatus" value="2" title="会员特供" {if $active['vipstatus'] == 2}checked{/if}>会员特供
</label>
<span class="help-block">会员特供即只有会员可以购买</span>
</div>
</div>
<div class="form-group" id="vipprice" {if $active['vipstatus'] != 1} style="display: none;" {/if}>
<label class="col-sm-2 control-label">减免金额</label>
<div class="col-sm-9">
<div class="bigdata" style="margin-top: 10px;">
<div class="input-group data-item">
<span class="input-group-addon">[{$_W['wlsetting']['halflevel']['name']}]减</span>
<input type="hidden" name="vipleid[]" class="form-control" value="0">
<input type="number" min="0" name="vipprice[]" class="form-control" value="{$viparray[0]['vipprice']}">
<span class="input-group-addon">元,商户减少结算价</span>
<input type="number" min="0" name="storeset[]" class="form-control" value="{$viparray[0]['storeset']}">
<span class="input-group-addon">元(最多保留两位小数)</span>
</div>
</div>
{loop $levels $lpr}
<div class="bigdata" style="margin-top: 10px;">
<div class="input-group data-item">
<span class="input-group-addon">[{$lpr['name']}]减</span>
<input type="hidden" name="vipleid[]" class="form-control" value="{$lpr['id']}">
<input type="number" min="0" name="vipprice[]" class="form-control" value="{$viparray[$lpr['id']]['vipprice']}">
<span class="input-group-addon">元,商户减少结算价</span>
<input type="number" min="0" name="storeset[]" class="form-control" value="{$viparray[$lpr['id']]['storeset']}">
<span class="input-group-addon">元(最多保留两位小数)</span>
</div>
</div>
{/loop}
</div>
</div>
{if !empty($drawlist)}
<div class="form-group">
<label class="col-sm-2 control-label">锦鲤抽奖</label>
<div class="col-sm-9">
<select name="active[drawid]" class="form-control chosen-select">
<option value="" {if empty($active['drawid'])}selected="selected"{/if}>请选择锦鲤抽奖活动</option>
{loop $drawlist $drid}
<option value="{$drid['id']}" {if $active['drawid'] == $drid['id']}selected="selected"{/if}>{$drid['title']}</option>
{/loop}
</select>
</div>
</div>
{/if}
</div>
</div>
</div>
</div>
<div class="tab-pane" id="tab_share">
<div class="panel panel-default">
<div class="panel-heading">分享设置</div>
<div class="panel-body">
<div class="panel-body">
<div class="alert alert-info">
<b>适用模板变量:[昵称] [时间] [活动名称] [商户名称] [报名价] [特权类型] [会员减免]</b>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享图片</label>
<div class="col-xs-12 col-sm-8">
{php echo attachment_select('active[share_image]', $active['share_image']);}
<span class="help-block">图片建议为正方形,如果不选择,默认为商品缩略图片</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享标题</label>
<div class="col-xs-12 col-sm-8">
<input type="text" name="active[share_title]" class="form-control" value="{$active['share_title']}" />
<span class="help-block">如果不填写,默认为商品名称</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享描述</label>
<div class="col-xs-12 col-sm-8">
<input type="text" name="active[share_desc]" class="form-control" value="{$active['share_desc']}" />
<span class="help-block">如果不填写,默认为分享描述</span>
</div>
</div>
{if !empty($posterlist)}
<div class="form-group">
<label class="col-sm-2 control-label">自定义海报</label>
<div class="col-sm-9">
<select name="active[posterid]" class="form-control">
<option value="">默认海报</option>
{loop $posterlist $row}
<option value="{$row['id']}" {if $active['posterid'] == $row['id']}selected="selected"{/if}>{$row['title']}</option>
{/loop}
</select>
</div>
</div>
{/if}
</div>
</div>
</div>
</div>
<div class="tab-pane" id="tab_settlement">
<div class="panel panel-default">
<div class="panel-heading">结算设置</div>
<div class="panel-body">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">独立结算金额</label>
<div class="col-sm-9">
<label class="radio-inline" onclick="$('#independentdiv').show();">
<input type="radio" name="active[independent]" value="0" title="开启" {if $active['independent'] != 1}checked{/if}>开启
</label>
<label class="radio-inline" onclick="$('#independentdiv').hide();">
<input type="radio" name="active[independent]" value="1" title="关闭" {if $active['independent'] == 1}checked{/if}>关闭
</label>
</div>
</div>
<div id="independentdiv" {if $active['independent']} style="display: none;" {/if} >
<div class="form-group">
<label class="col-sm-2 control-label">结算金额</label>
<div class="col-xs-12 col-sm-8">
<div class="input-group">
<span class="input-group-addon"></span>
<input type="text" name="active[settlementmoney]" class="form-control" value="{$active['settlementmoney']}" />
</div>
<span class="help-block">结算给商家的单价,最多保留两位小数</span>
</div>
</div>
</div>
{if $distriset['switch']}
<div class="form-group">
<label class="col-sm-2 control-label">是否参与分销</label>
<div class="col-sm-9">
<label class="radio-inline" onclick="distri(1)">
<input type="radio" name="isdistri" value="0" title="参与" {if $active['isdistri'] == 0 || empty($active['isdistri'])}checked{/if}>参与
</label>
<label class="radio-inline" onclick="distri(2)">
<input type="radio" name="isdistri" value="1" title="不参与" {if $active['isdistri'] == 1}checked{/if}>不参与
</label>
</div>
</div>
<div id="distridiv" {if $active['isdistri']} style="display: none;" {/if} >
<div class="form-group">
<label class="col-sm-2 control-label">佣金设置方式</label>
<div class="col-sm-9">
<label class="radio-inline" onclick="distritext(1)" >
<input type="radio" name="isdistristatus" value="0" title="百分比" {if $active['isdistristatus'] == 0 || empty($active['isdistristatus'])}checked{/if}>百分比
</label>
<label class="radio-inline" onclick="distritext(2)" >
<input type="radio" name="isdistristatus" value="1" title="固定金额" {if $active['isdistristatus'] == 1}checked{/if}>固定金额
</label>
<span class="help-block">按百分比计算时,基础价按照商品售价减去会员减免计算,不受积分抵扣,满减活动,在线红包影响。</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">佣金设置</label>
<div class="col-sm-9">
{loop $dislevel $dislpr}
<div class="bigdata" style="margin-top: 10px;">
<div class="input-group data-item">
<span class="input-group-addon">[{$dislpr['name']}]一级</span>
<input type="hidden" name="disleid[]" class="form-control" value="{$dislpr['id']}">
<input type="number" min="0" name="onedismoney[]" class="form-control" value="{$disarray[$dislpr['id']]['onedismoney']}">
<span class="input-group-addon"><span class="isdistritext">{if $active['isdistristatus'] == 1}元{else}%{/if}</span>,二级</span>
<input type="number" min="0" name="twodismoney[]" class="form-control" value="{$disarray[$dislpr['id']]['twodismoney']}">
<span class="input-group-addon"><span class="isdistritext">{if $active['isdistristatus'] == 1}元{else}%{/if}</span>(最多保留两位小数)</span>
</div>
</div>
{/loop}
<span class="help-block">一级填0或不填则按分销商等级默认比例计算,填写一级佣金后二级佣金填0或不填则此商品没有二级分佣,最多保留两位小数</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分销佣金结算时间</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" value="0" name="active[dissettime]" {if $active['dissettime']==0 || empty($active['dissettime'])} checked {/if}>订单完成时结算
</label>
<label class="radio-inline">
<input type="radio" value="1" name="active[dissettime]" {if $active['dissettime']==1 } checked {/if}>订单支付时结算
</label>
<span class="help-block">注:若订单支付时结算,在订单退款时会扣除分销商对应的佣金,如果分销商可提现佣金不足,会扣至负数</span>
</div>
</div>
</div>
{/if}
</div>
</div>
</div>
</div>
<div class="tab-pane" id="tab_opvip">
<div class="alert alert-info">
<b>说明:此页面可以设置多规格商品的每种规格组合的会员减免金额与分销佣金设置,如果需要更改基础多规格设置请先保存多规格内容再进入此页面修改细表内容,此页面设置项填0或者不填会自动调用商品设置相关项。 </b>
</div>
{loop $specs $opkey $opt}
<div class="region-goods-details row">
<div class="region-goods-left col-sm-2"><h4 style="text-align:center;">{$opt['name']}</h4></div>
<div class="region-goods-right col-sm-9">
<div class="form-group">
{if $active['vipstatus'] == 1}
<div class="col-sm-6">
<div class="bigdata" style="margin-top: 10px;">
<div class="input-group data-item">
<span class="input-group-addon">[{$_W['wlsetting']['halflevel']['name']}]减</span>
<input type="hidden" name="vipleid{$opt['id']}[]" class="form-control" value="0">
<input type="number" min="0" name="vipprice{$opt['id']}[]" class="form-control" value="{$opt['viparray'][0]['vipprice']}">
<span class="input-group-addon">元,结算价减少</span>
<input type="number" min="0" name="storeset{$opt['id']}[]" class="form-control" value="{$opt['viparray'][0]['storeset']}">
<span class="input-group-addon"></span>
</div>
</div>
{loop $levels $lpr}
<div class="bigdata" style="margin-top: 10px;">
<div class="input-group data-item">
<span class="input-group-addon">[{$lpr['name']}]减</span>
<input type="hidden" name="vipleid{$opt['id']}[]" class="form-control" value="{$lpr['id']}">
<input type="number" min="0" name="vipprice{$opt['id']}[]" class="form-control" value="{$opt['viparray'][$lpr['id']]['vipprice']}">
<span class="input-group-addon">元,结算价减少</span>
<input type="number" min="0" name="storeset{$opt['id']}[]" class="form-control" value="{$opt['viparray'][$lpr['id']]['storeset']}">
<span class="input-group-addon"></span>
</div>
</div>
{/loop}
</div>
{/if}
{if empty($active['isdistri'])}
<div class="col-sm-6">
{loop $dislevel $dislpr}
<div class="bigdata" style="margin-top: 10px;">
<div class="input-group data-item">
<span class="input-group-addon">[{$dislpr['name']}]一级</span>
<input type="hidden" name="disleid{$opt['id']}[]" class="form-control" value="{$dislpr['id']}">
<input type="number" min="0" name="onedismoney{$opt['id']}[]" class="form-control" value="{$opt['disarray'][$dislpr['id']]['onedismoney']}">
<span class="input-group-addon"><span class="isdistritext">{if $active['isdistristatus'] == 1}元{else}%{/if}</span>,二级</span>
<input type="number" min="0" name="twodismoney{$opt['id']}[]" class="form-control" value="{$opt['disarray'][$dislpr['id']]['twodismoney']}">
<span class="input-group-addon"><span class="isdistritext">{if $active['isdistristatus'] == 1}元{else}%{/if}</span></span>
</div>
</div>
{/loop}
</div>
{/if}
</div>
</div>
</div>
{/loop}
</div>
<div class="form-group col-sm-12">
<input type="hidden" name="id" value="{$id}" id="id"/>
<input type="submit" name="submit" value="提交" class="btn btn-primary col-lg-1" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
<script>
$(function () {
window.optionchanged = false;
$('#myTab a').click(function (e) {
e.preventDefault();//阻止a链接的跳转行为
$(this).tab('show');//显示当前选中的链接及关联的content
});
});
function search_merchant() {
$("#module-merchant").html("正在搜索....")
$.get("{php echo web_url('goodshouse/goodshouse/selectMerchant')}", {
keyword: $.trim($('#search-kwd-merchant').val()),
enabled:1
}, function(dat){
$('#module-merchant').html(dat);
});
}
function select_merchant(o) {
$('#merchantid').val(o.id);
$('#storename').val(o.storename);
$('#storelogo').attr("src",o.logo);
$('#modal-module-merchant').modal('hide');
util.tips("操作成功");
}
function distri(flag){
if (flag == 1) {
$('#distridiv').show();
} else{
$('#distridiv').hide();
}
}
function distritext(flag){
if (flag == 1) {
$('.isdistritext').html('%');
} else{
$('.isdistritext').html('元');
}
}
function removesLink(){
$('#advlink').val('');
}
//添加规格项
var nums = 1;
function addSpecs() {
$(".btn-add-type").html("loading.....");
$.ajax({
url: "{php echo web_url('activity/activity_web/specpage')}&kw="+nums,
cache: false
}).done(function (html) {
var rest = '<i class="fa fa-plus" title=""></i>增加一种规格设置';
$(".btn-add-type").html(rest);
$("#redEnvelopes").append(html);
});
nums++;
}
function removes(asd){
$(asd).closest('.bigdata').remove();
}
</script>
{php include wl_template('common/footer');}

31
addons/weliam_smartcity/plugin/activity/web/view/default/activity/entry.html

@ -0,0 +1,31 @@
{php include wl_template('common/header');}
<div class="app-content">
<ul class="nav nav-tabs" id="myTab">
<li class="active" ><a href="javascript:;">活动信息</a></li>
</ul>
<div class="bs-callout bs-callout-danger" id="callout-glyphicons-empty-only">
<h4>活动入口设置</h4>
<p>如果你有oAuth权限也可以直接设置自定义菜单到指定链接位置.</p>
</div>
<div class="panel panel-default">
<div class="panel-heading">活动首页</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">直接链接</label>
<div class="col-sm-9">
<p class='form-control-static'><a href='javascript:;' class="js-clip" title='点击复制链接' data-url="{$url1}" >{$url1}</a></p>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">二维码</label>
<div class="col-sm-9">
<div class="qrcode-block" style="margin-top:5px">
<img src="{php echo web_url('activity/activity_web/qrcodeimg',array('url' => $url1))}" width="150" height="150"></canvas>
</div>
</div>
</div>
</div>
</div>
</div>
{php include wl_template('common/footer');}

401
addons/weliam_smartcity/plugin/activity/web/view/default/activity/orderlist.html

@ -0,0 +1,401 @@
{php include wl_template('common/header');}
<style type='text/css'>
.trbody td {text-align: center; vertical-align:top;border-left:1px solid #ccc; border-bottom: 1px solid #ddd;}
.order-rank img{width:16px; height:16px;}
.js-remark,.js-admin-remark{word-break:break-all; overflow:hidden; background: #FDEEEE;color: #ED5050;padding: 5px 10px;}
td.goods-info{position:relative; padding-left:60px;}
.goods-info .img{position:absolute;top:50%; margin-top:-25px; background: url({IMAGE_LOADING}) center center no-repeat; width:50px;height:50px; }
.goods-info span {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;display: block;}
.status-text{cursor:pointer;}
.table>thead>tr>th, .table>tbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>td, .table>tbody>tr>td, .table>tfoot>tr>td {border-top: 1px solid rgba(221, 221, 221, 0);}
.col-md-1{padding-right: 0px;}
</style>
<div class="app-content">
<ul class="nav nav-tabs">
<li {if empty($_GPC['status'])}class="active"{/if}><a href="{php echo web_url('activity/activity_web/orderlist');}">全部{if $status0}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status0}</span>{/if}</a></li>
<li {if $_GPC['status']==1}class="active"{/if}><a href="{php echo web_url('activity/activity_web/orderlist',array('status'=>1));}">待核销{if $status1}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status1}</span>{/if}</a></li>
<li {if $_GPC['status']==2}class="active"{/if}><a href="{php echo web_url('activity/activity_web/orderlist',array('status'=>2));}">待评价{if $status2}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status2}</span>{/if}</a></li>
<li {if $_GPC['status']==3}class="active"{/if}><a href="{php echo web_url('activity/activity_web/orderlist',array('status'=>3));}">已完成{if $status3}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status3}</span>{/if}</a></li>
<li {if $_GPC['status']==9}class="active"{/if}><a href="{php echo web_url('activity/activity_web/orderlist',array('status'=>9));}">已过期{if $status9}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status9}</span>{/if}</a></li>
<li {if $_GPC['status']==5}class="active"{/if}><a href="{php echo web_url('activity/activity_web/orderlist',array('status'=>5));}">已取消{if $status5}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status5}</span>{/if}</a></li>
<li {if $_GPC['status']==6}class="active"{/if}><a href="{php echo web_url('activity/activity_web/orderlist',array('status'=>6));}">待退款{if $status6}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status6}</span>{/if}</a></li>
<li {if $_GPC['status']==7}class="active"{/if}><a href="{php echo web_url('activity/activity_web/orderlist',array('status'=>7));}">已退款{if $status7}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status7}</span>{/if}</a></li>
</ul>
<div class="app-form">
<div class="panel">
<div class="panel-body">
<form action="" method="get" class="form-horizontal" role="form" id="form1">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="{MODULE_NAME}" />
<input type="hidden" name="p" value="activity" />
<input type="hidden" name="ac" value="activity_web" />
<input type="hidden" name="do" value="orderlist" />
<input type="hidden" name="status" value="{$_GPC['status']}" />
<div class="form-group">
<div class="col-md-2">
<select name="keywordtype" class="form-control">
<option value="">关键字类型</option>
<option value="1" {if $_GPC['keywordtype']==1}selected="selected"{/if}>订单ID</option>
<option value="2" {if $_GPC['keywordtype']==2}selected="selected"{/if}>订单编号</option>
<option value="3" {if $_GPC['keywordtype']==3}selected="selected"{/if}>活动ID</option>
<option value="4" {if $_GPC['keywordtype']==4}selected="selected"{/if}>商家ID</option>
<option value="5" {if $_GPC['keywordtype']==5}selected="selected"{/if}>商家名称</option>
<option value="6" {if $_GPC['keywordtype']==6}selected="selected"{/if}>买家昵称</option>
<option value="7" {if $_GPC['keywordtype']==7}selected="selected"{/if}>买家手机</option>
<option value="8" {if $_GPC['keywordtype']==8}selected="selected"{/if}>核销码</option>
</select>
</div>
<button class="btn btn-default min-width" name="export" type="submit" value="export"><i class="fa fa-download"></i> 导出订单</button>
<div class="col-sm-9 pull-right">
<div class="input-group">
<input type="text" name="keyword" class="form-control" value="{$_GPC['keyword']}" placeholder="请输入关键字"/>
<input type="hidden" name="activeid" value="{$_GPC['activeid']}" />
<span class="input-group-addon" id="search">搜索</span>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="app-table-list">
<div class="order-list">
<div class="panel-body table-responsive collapse in" id="order-template-item-4" style="padding: 0;">
<table class="table table-bordered">
<thead style="background-color: #FFFFFF;">
<tr>
<th style="width:50px">序号</th>
<th style="width:220px;">商品</th>
<th style="width:80px; text-align:center;">单价/数量</th>
<th style="width:80px; text-align:center;">所属商家</th>
<th style="width:220px; text-align:center;">买家</th>
<th style="width:120px; text-align:center;">订单状态</th>
<th style="width:130px; text-align:center;">金额</th>
</tr>
</thead>
</table>
</div>
{loop $orders $y $item}
<div class="panel panel-default">
<div class="panel-heading clearfix" style="padding: 10px 15px;">
<div class="pull-left">
<span>订单号:{$item['orderno']}</span>
{if $item['paytime'] }
<span>||&nbsp;支付时间: {php echo date('Y-m-d', $item['paytime'])} {php echo date('H:i:s', $item['paytime'])} </span>
{/if}
{if $item['refundtime'] }
<span>||&nbsp;退款时间: {php echo date('Y-m-d', $item['refundtime'])} {php echo date('H:i:s', $item['refundtime'])} </span>
{/if}
</div>
<div class="pull-right">
<span class="text-muted"></span>&nbsp;&nbsp;
{if $item['usedtime']}
<a href="javascript:;" class="lookhexiao" order-id="{$item['id']}">查看核销详情</a> -
{/if}
{if $item['status'] == 1 || $item['status'] == 9}
<a href="javascript:;" class="js-refund" order-id="{$item['id']}">退款</a> -
{/if}
<a href="javascript:;" class="js-order-edit-remark" order-id="{$item['id']}">备注</a>
</div>
</div>
<div class="panel-body table-responsive" style="padding: 0px;">
<table class="table table-bordered">
<tbody >
<tr>
<td style="width: 50px;" ><center>{php echo $y+1}</center></td>
<td class="goods-info line-feed" style="width:220px;padding-left: 10px;">
<div class="img"><img class="scrollLoading" src="{IMAGE_PIXEL}" data-url="{php echo tomedia($item['gimg'])}" height="50" width="50" onerror="this.src='{IMAGE_NOPIC_SMALL}'" ></div>
<div class="title" style="padding-left: 60px;">
<span>{$item['gname']}</span>
{if $item['checkcode']}<span>核销码:{$item['checkcode']}</span>{/if}
</div>
</td>
<td class="text-center" style="width:80px;">
<p>¥{$item['price']}</p>
<p>({$item['num']}人)</p>
</td>
<td class="text-center" style="width:80px;">{$item['merchantName']}</td>
<td class="goods-info line-feed" style="width:220px;padding-left: 10px;">
<div style="position: relative;top: 30px;left: 5px;" class="img"><img style="height: 100%;width: 100%;" class="scrollLoading" src="{IMAGE_PIXEL}" data-url="{php echo tomedia($item['headimg'])}"></div>
<div class="title" style="padding-left: 60px;position: relative;top: -15px;">
<span>{$item['nickname']}</span>
<span>{$item['mobile']}</span>
</div>
</td>
<td class="text-center" style="width:120px;">
{if $item['status']==0}<span class="label label-danger">未支付</span>{/if}
{if $item['status']==1}<span class="label label-warning">待使用</span>{/if}
{if $item['status']==2}<span class="label label-success">待评价</span>{/if}
{if $item['status']==3}<span class="label label-success">已完成</span>{/if}
{if $item['status']==5}<span class="label label-success">已取消</span>{/if}
{if $item['status']==6}<span class="label label-success">待退款</span>{/if}
{if $item['status']==7}<span class="label label-success">已退款</span>{/if}
{if $item['status']==9}<span class="label label-danger">已过期</span>{/if}
{if $item['paytype']==1}<br><br><span class="label label-info">余额支付</span>{/if}
{if $item['paytype']==2}<br><br><span class="label label-success">微信支付</span>{/if}
{if $item['paytype']==3}<br><br><span class="label label-warning">支付宝</span>{/if}
{if $item['paytype']==4}<br><br><span class="label label-danger">货到付款</span>{/if}
</td>
<td class="text-center" style="width:130px;">
总额:{if empty($item['pay_price'])}{$item['price']}{else}{$item['pay_price']}{/if}<br>
实付:{if $item['status'] == 5}0.00{else}{$item['price']}{/if}<br>
{if $item['status']==1}
<span class="label label-success js-bdelete" order-id="{$item['id']}">确认核销</span>
{elseif $item['status']==2}<span class="label label-default js-cancleBdelete" order-id="{$item['id']}">取消核销</span>
{elseif $item['status']==6}<span class="label label-danger js-refund" order-id="{$item['id']}">确认退款</span>
{/if}
{if $item['applyrefund']==1}
<span class="label label-danger js-refund" order-id="{$item['id']}">确认退款</span>
{/if}
</td>
</tr>
</tbody>
</table>
</div>
<div class="panel-footer js-admin-remark{$item['id']} js-admin-remark" order-id="{$item['id']}" {if empty($item['remark'])}style="display: none;"{/if} style="background-color:lightgoldenrodyellow">
卖家备注:<span id="js-admin-remark{$item['id']}" style="">{$item['remark']}</span>
</div>
</div>
{/loop}
{$pager}
</div>
</div>
</div>
<div id="modal-module-gift" class="modal fade" tabindex="-1">
<div class="modal-dialog" style='width: 920px;'>
<div class="modal-content">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button">×</button>
<h3>我的备注</h3></div>
<div class="modal-body">
<div class="modal-body">
<textarea id="remark" name="admin_remark" class="form-control" rows="5"></textarea>
</div>
</div>
<div class="modal-footer" style="padding: 5px 15px;">
<a class="btn btn-default js-cancel" aria-hidden="true" data-dismiss="modal">取消</a>
<a class="btn btn-primary js-order-remark-post" order-id="" data-dismiss="modal" aria-hidden="true">确定</a>
</div>
</div>
</div>
</div>
<div id="modal-module-gift2" class="modal fade" tabindex="-1">
<div class="modal-dialog" style='width: 620px;'>
<div class="modal-content">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button">×</button>
<h3>核销详情</h3>
</div>
<div class="modal-body">
<div>剩余使用次数:<span id="lasttime">{{d.times}}</span></div>
<div id="xiangq"></div>
</div>
<div class="modal-footer" style="padding: 5px 15px;">
<a class="btn btn-primary js-order-remark-post" order-id="" data-dismiss="modal" aria-hidden="true">确定</a>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$("#search").click(function(){
$('#form1')[0].submit();
});
</script>
<script type="text/javascript">
require(['jquery', 'util'], function($, util){
$('.js-copy').each(function(){
var id=$(this).attr('data-id');
util.clip($("#js-copy"+id), $(this).attr('data-url'));
});
});
</script>
<script type="text/javascript">
$('#output').click(function(){
var orderType = '{$_GPC['orderType']}';
var status = '{$_GPC['status']}';
var paytype = '{$_GPC['pay_type']}';
var keywordtype = '{$_GPC['keywordtype']}';
var keyword = '{$_GPC['keyword']}';
var timetype = '{$_GPC['timetype']}';
var times = "{$_GPC['time']['start']}";
var timee = "{$_GPC['time']['end']}";
location.href = "{php echo web_url('order/order/output')}&orderType="+orderType+"&status="+status+"&paytype="+paytype+"&keywordtype="+keywordtype+"&keyword="+keyword+"&timetype="+timetype+"&times="+times+"&timee="+timee;
});
$(function(){
$('[name="rank_all"]').click(function() {
var checked = this.checked;
$('.js-rank').find('input:checkbox').each(function() {
this.checked = checked;
});
});
$('#export').click(function() {
if ($('[name="selecttime[start]"]').val() == '') {
alert('请选择下单时间');
$(this).focus();
return false;
};
$(this).attr('type', 'submit').submit();
});
$('.order-rank').each(function(){
o.rank(this);
});
$('.js-order-status').delegate('.status-text', 'mouseover mouseout', function(event){
var obj = this;
if (event.type == 'mouseover'){
var $pop = util.popover(obj, function($popover, obj) {obj.$popover = $popover;}, {html: '<span>'+$(obj).data('title')+'</span>', placement : 'top'});
} else {
this.$popover.remove();
}
});
$('.js-order-status').delegate('.express', 'mouseover mouseout', function(event){
var obj = this;
if (event.type == 'mouseover'){
var $pop = util.popover(obj, function($popover, obj) {obj.$popover = $popover;}, {html: '<p class="mb0">物流公司:'+$(obj).data('express')+'</p><p class="mb0">物流单号:'+$(obj).data('express-no')+'</p>', placement : 'top'});
} else {
this.$popover.remove();
}
});
//查看核销详情
$('.lookhexiao').click(function(){
popwin = $('#modal-module-gift2').modal();
var id = $(this).attr('order-id');
$.post("{php echo web_url('activity/activity_web/hexiaotime')}",{id:id},function(d){
if(!d.errno){
$('#xiangq').html('');
$('#lasttime').text(d.times);
var len = d.data.length;
if (len == 1) {
var html = "<div>核销时间:"+d.data[0].time+",核销方式:"+d.data[0].typename+",核销人:"+d.data[0].vername+"</div>";
$("#xiangq").append(html);
}else{
for(var i=0;i<len;i++){
var c = i+1;
var html = "<div>第"+c+"次核销时间:"+d.data[i].time+",核销方式:"+d.data[i].typename+",核销人:"+d.data[i].vername+"</div>";
$("#xiangq").append(html);
}
}
}
},"json");
$('#double').hide();
});
// 修改备注
$('.js-order-edit-remark').click(function(){
var order_id = $(this).attr('order-id');
var remarkvalue = $('#js-admin-remark'+order_id).text();
$('.js-order-remark-post').attr("order-id",order_id);
$('#remark').val(remarkvalue);
popwin = $('#modal-module-gift').modal();
});
$('.js-cancel,.close').click(function() {
$('#order-remark-container').hide();
$('.main').css("opacity","1");$('.nav').css("opacity","1");$('.big-menu').css("opacity","1");
});
$('.js-order-remark-post').click(function() {
var order_id = $(this).attr('order-id');
var remark = $('#remark').val();
$.post("{php echo web_url('activity/activity_web/remark')}",{id:order_id,remark:remark},function(d){
if(!d.errno){
$('#js-admin-remark'+order_id).html(remark);
$('.js-admin-remark'+order_id).show();
}
},"json");
$('#order-remark-container').hide();
$('.main').css("opacity","1");$('.nav').css("opacity","1");$('.big-menu').css("opacity","1");
});
$('.js-bdelete').click(function(e) {
e.stopPropagation();
var _this = $(this).parent().parent().parent().parent().parent().parent();
var order_id = $(this).attr('order-id');
util.nailConfirm(this, function(state) {
if(!state) return;
$.post("{php echo web_url('activity/activity_web/confirmHexiao')}",{id:order_id},function(d){
if(!d.errno){
util.tips(d.message);
location.reload();
}
},"json");
}, {html: '确认核销?'});
});
$('.js-cancleBdelete').click(function(e) {
e.stopPropagation();
var _this = $(this).parent().parent().parent().parent().parent().parent();
var order_id = $(this).attr('order-id');
util.nailConfirm(this, function(state) {
if(!state) return;
$.post("{php echo web_url('activity/activity_web/cancleHexiao')}",{id:order_id},function(d){
if(!d.errno){
util.tips(d.message);
location.reload();
}
},"json");
}, {html: '确认取消核销?'});
});
$('.js-refund').click(function(e) {
e.stopPropagation();
var _this = $(this).parent().parent().parent().parent().parent().parent();
var order_id = $(this).attr('order-id');
util.nailConfirm(this, function(state) {
if(!state) return;
$.post("{php echo web_url('activity/activity_web/refundOrder')}",{id:order_id},function(d){
if(!d.errno){
_this.remove();
util.tips('退款成功');
location.reload();
}else{
alert('退款失败,原因是:'+d.message);
}
},"json");
}, {html: '确认退款?'});
});
//删除
$('.order-list').delegate('.js-remove', 'click', function(e){
e.stopPropagation();
var $this = $(this);
var id = $this.attr('order-id');
util.nailConfirm(this, function(state) {
if(!state) return;
$.post("{php echo web_url('rush/order/deleteOrder')}", { id : id }, function(data){
if(!data.errno){
$this.parent().parent().parent().remove();
util.tips("删除成功!");
};
}, 'json');
}, {html: '确认删除?'});
});
$('#de1').delegate('.js-delete','click',function(e){
e.stopPropagation();
var order_ids = [];
var $checks=$('.checkbox:checkbox:checked');
$checks.each(function() {
if (this.checked) {
order_ids.push(this.value);
};
});
var $this = $(this);
var ids = order_ids;
util.nailConfirm(this, function(state) {
if(!state) return;
$.post("{php echo web_url('rush/order/deleteOrder')}", { ids : ids }, function(data){
if(!data.errno){
util.tips("删除成功!");
location.reload();
};
}, 'json');
}, {html: '确认删除?'});
});
});
</script>
{php include wl_template('common/footer');}

18
addons/weliam_smartcity/plugin/activity/web/view/default/activity/specpage.html

@ -0,0 +1,18 @@
<div class="bigdata" style="margin-top: 10px;">
<div class="input-group data-item">
<span class="input-group-addon">规格名</span>
<input type="text" name="specname[]" class="form-control" value="{$itmes['name']}">
<span class="input-group-addon">报名价¥</span>
<input type="number" name="specprice[]" class="form-control" value="{$itmes['price']}">
<span class="input-group-addon">最大人数</span>
<input type="number" digits="true" name="specmax[]" class="form-control" value="{$itmes['maxnum']}">
<span class="input-group-addon">最少人数</span>
<input type="number" digits="true" name="specmin[]" class="form-control" value="{$itmes['minnum']}">
<input type="hidden" name="specids[]" class="form-control" value="{$itmes['id']}">
{if !is_store()}
<span class="input-group-addon">结算金额¥</span>
<input type="number" name="settlementmoney[]" class="form-control" value="{$itmes['settlementmoney']}">
{/if}
<span onclick="removes(this)" class="input-group-addon btn btn-default data-item-delete"><i class="fa fa-remove"></i> 删除</span>
</div>
</div>

489
addons/weliam_smartcity/plugin/area/Area.mod.php

@ -0,0 +1,489 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Area{
/////////////////////////////////////////////////////代理///////////////////////////////////////////////////////////////
/**
* 获取所有代理(检索所有代理,根据 username、group、status、endtime检索)
*/
static function getAllAgent($page = 0,$pagenum = 10,$con = '')
{
global $_W;
$condition = '';
if (!empty($con) && is_array($con)) {
foreach ($con as $key => $val) {
if ($key == 'username') $condition .= " and ".$key." like '%".$val."%'";
if ($key == 'groupid') $condition .= " and ".$key."=".$val;
if ($key == 'status') $condition .= " and ".$key."=".$val;
if ($key == 'agentname') $condition .= " and (".$key." like '%".$val."%' or mobile like '%".$val."%' or realname like '%".$val."%')";
}
}
$re['data'] = pdo_fetchall("select * from".tablename(PDO_NAME.'agentusers')."where uniacid=:uniacid ".$condition." order by groupid desc, starttime desc limit ".$page * $pagenum.",".$pagenum,[':uniacid' => $_W['uniacid']]);
$re['count'] = pdo_fetchcolumn("select count(*) from".tablename(PDO_NAME.'agentusers')."where uniacid=:uniacid ".$condition,[':uniacid' => $_W['uniacid']]);
return $re;
}
/**
* 获取单条代理信息
*/
static function getSingleAgent($id)
{
global $_W;
if (empty($id)) return false;
$re = pdo_get(PDO_NAME.'agentusers',['id' => $id,'uniacid' => $_W['uniacid']]);
$re['percent'] = unserialize($re['percent']);
return $re;
}
/**
* 编辑代理
*/
static function editAgent($arr,$id = '')
{
global $_W;
if (empty($arr)) return false;
if (empty($id)) {
$arr['uniacid'] = $_W['uniacid'];
pdo_insert(PDO_NAME.'agentusers',$arr);
$id = pdo_insertid();
} else {
pdo_update(PDO_NAME.'agentusers',$arr,['id' => $id,'uniacid' => $_W['uniacid']]);
}
return $id;
}
/////////////////////////////////////////////////////代理分组/////////////////////////////////////////////////////////////
/**
* 获取所有分组
*/
static function getAllGroup($page = 0,$pagenum = 10,$enabled = '')
{
global $_W;
$condition = '';
if (!empty($enabled) && $enabled != '') $condition = " and enabled=".$enabled;
$re['data'] = pdo_fetchall("select * from".tablename(PDO_NAME.'agentusers_group')."where uniacid=:uniacid ".$condition." order by enabled desc, createtime desc limit ".$page * $pagenum.",".$pagenum,[':uniacid' => $_W['uniacid']]);
foreach ($re['data'] as $key => &$value) {
if (!empty($value['package'])) {
$value['package'] = iunserializer($value['package']);
}
}
$re['count'] = pdo_fetchcolumn("select count(*) from".tablename(PDO_NAME.'agentusers_group')."where uniacid=:uniacid ".$condition,[':uniacid' => $_W['uniacid']]);
return $re;
}
/**
* 获取单条分组
*/
static function getSingleGroup($id)
{
global $_W;
if (empty($id)) return false;
$group = pdo_get(PDO_NAME.'agentusers_group',['id' => $id,'uniacid' => $_W['uniacid']]);
if (!empty($group)) {
$group['package'] = iunserializer($group['package']);
}
return $group;
}
/**
* 编辑分组
*/
static function editGroup($arr,$id = '')
{
global $_W;
if (empty($arr)) return false;
if ($arr['isdefault'] == 1) pdo_update(PDO_NAME.'agentusers_group',['isdefault' => 0],[
'uniacid' => $_W['uniacid'],
'isdefault' => 1
]);
if (!empty($id) && $id != '') return pdo_update(PDO_NAME.'agentusers_group',$arr,[
'id' => $id,
'uniacid' => $_W['uniacid']
]);
$arr['uniacid'] = $_W['uniacid'];
return pdo_insert(PDO_NAME.'agentusers_group',$arr);
}
/////////////////////////////////////////////////////自营地区/////////////////////////////////////////////////////////////
/**
* 获取可用地区
*/
static function address_tree_in_use()
{
global $_W;
$provinces = pdo_getall(PDO_NAME.'area',[
'visible' => 2,
'level' => 1,
'displayorder' => ['0',$_W['uniacid']]
],['id','name'],'id');
$cities = pdo_getall(PDO_NAME.'area',[
'visible' => 2,
'level' => 2,
'displayorder' => ['0',$_W['uniacid']]
],['id','pid','name'],'id');
$districts = pdo_getall(PDO_NAME.'area',[
'visible' => 2,
'level' => 3,
'displayorder' => ['0',$_W['uniacid']]
],['id','pid','name'],'id');
$towns = pdo_getall(PDO_NAME.'area',[
'visible' => 2,
'level' => 4,
'displayorder' => ['0',$_W['uniacid']]
],['id','pid','name'],'id');
$address_tree = [];
foreach ($provinces as $province_id => $province) {
$address_tree[$province_id] = [
'title' => $province['name'],
'cities' => []
];
foreach ($cities as $city_id => $city) {
if ($city['pid'] == $province_id) {
$address_tree[$province_id]['cities'][$city_id] = [
'title' => $city['name'],
'districts' => [],
];
foreach ($districts as $district_id => $district) {
if ($district['pid'] == $city_id) {
$address_tree[$province_id]['cities'][$city_id]['districts'][$district_id] = [
'title' => $district['name'],
'towns' => [],
];
foreach ($towns as $town_id => $town) {
if ($town['pid'] == $district_id) {
$address_tree[$province_id]['cities'][$city_id]['districts'][$district_id]['towns'][$town_id] = $town['name'];
}
}
}
}
}
}
}
return $address_tree;
}
/**
* 获取可用地区
*/
static function get_all_in_use($type = 0)
{
global $_W;
$area = pdo_get(PDO_NAME.'oparea',['uniacid' => $_W['uniacid'],'aid' => $_W['aid']]);
if ($area['level'] == 1) {
$address_tree[$area['areaid']] = [
'title' => pdo_getcolumn(PDO_NAME.'area',['id' => $area['areaid']],'name'),
'cities' => []
];
$cities = pdo_getall(PDO_NAME.'area',['pid' => $area['areaid']],['id','name']);
foreach ($cities as $key => $value) {
$address_tree[$area['areaid']]['cities'][$value['id']] = [
'title' => $value['name'],
'districts' => [],
];
$districts = pdo_getall(PDO_NAME.'area',['pid' => $value['id']],[
'id',
'name'
]);
foreach ($districts as $district_id => $district) {
$address_tree[$area['areaid']]['cities'][$value['id']]['districts'][$district['id']] = $district['name'];
}
}
} else if ($area['level'] == 2) {
$provinceid = pdo_getcolumn(PDO_NAME.'area',['id' => $area['areaid']],'pid');
$address_tree[$provinceid] = [
'title' => pdo_getcolumn(PDO_NAME.'area',['id' => $provinceid],'name'),
'cities' => []
];
$address_tree[$provinceid]['cities'][$area['areaid']] = [
'title' => pdo_getcolumn(PDO_NAME.'area',['id' => $area['areaid']],'name'),
'districts' => [],
];
$districts = pdo_getall(PDO_NAME.'area',['pid' => $area['areaid']],[
'id',
'name'
]);
foreach ($districts as $district_id => $district) {
$address_tree[$provinceid]['cities'][$area['areaid']]['districts'][$district['id']] = $district['name'];
}
} else {
$cityid = pdo_getcolumn(PDO_NAME.'area',['id' => $area['areaid']],'pid');
$provinceid = pdo_getcolumn(PDO_NAME.'area',['id' => $cityid],'pid');
$address_tree[$provinceid] = [
'title' => pdo_getcolumn(PDO_NAME.'area',['id' => $provinceid],'name'),
'cities' => []
];
$address_tree[$provinceid]['cities'][$cityid] = [
'title' => pdo_getcolumn(PDO_NAME.'area',['id' => $cityid],'name'),
'districts' => [],
];
$address_tree[$provinceid]['cities'][$cityid]['districts'][$area['areaid']] = pdo_getcolumn(PDO_NAME.'area',['id' => $area['areaid']],'name');
}
if ($type == 1) {
$address_tree = array_values($address_tree);
foreach ($address_tree as $key => &$value) {
$value['name'] = $value['title'];
$value['sub'] = array_values($value['cities']);
unset($value['title'],$value['cities']);
foreach ($value['sub'] as $key1 => &$value1) {
$value1['name'] = $value1['title'];
$value1['sub'] = array_values($value1['districts']);
unset($value1['title'],$value1['districts']);
foreach ($value1['sub'] as $key2 => &$value2) {
$value2 = ['name' => $value2];
}
}
}
}
return $address_tree;
}
//商家入驻地区信息
static function get_all_wx_use()
{
global $_W;
$address_tree = self::address_tree_in_use();
$address_tree = array_values($address_tree);
foreach ($address_tree as $key => &$value) {
$value['name'] = $value['title'];
$value['sub'] = array_values($value['cities']);
unset($value['title'],$value['cities']);
foreach ($value['sub'] as $key1 => &$value1) {
$value1['name'] = $value1['title'];
$value1['sub'] = array_values($value1['districts']);
unset($value1['title'],$value1['districts']);
foreach ($value1['sub'] as $key2 => &$value2) {
$value2 = ['name' => $value2['title']];
unset($value2['title'],$value2['districts']);
}
}
}
return $address_tree;
}
/**
* 获取代理地区
*/
static function get_agent_area($aid = '')
{
global $_W;
$data = ['uniacid' => $_W['uniacid']];
if (!empty($aid)) $data['aid'] = $aid;
$terarea = pdo_getall(PDO_NAME.'oparea',$data,'areaid');
$terarea = Util::i_array_column($terarea,'areaid');
return $terarea;
}
/**
* 保存代理地区
*/
static function save_agent_area($districts,$level,$aid)
{
global $_W,$_GPC;
if (empty($districts) || ($level == 1 && empty($districts['province'])) || ($level == 2 && empty($districts['city'])) || ($level == 3 && empty($districts['district'])) || ($level == 4 && empty($districts['town']))) {
WeliamWeChat::rollback();//事务回滚
wl_message('请选择代理地区');
}
$data = ['uniacid' => $_W['uniacid'],'aid' => $aid,'level' => $level];
switch ($level) {
case '1':
$data['areaid'] = $districts['province'];
break;
case '2':
$data['areaid'] = $districts['city'];
break;
case '4':
$data['areaid'] = $districts['town'];
break;
default:
$data['areaid'] = $districts['district'];
break;
}
$hasarea = pdo_getcolumn(PDO_NAME.'oparea',[
'uniacid' => $_W['uniacid'],
'aid !=' => $aid,
'areaid' => $data['areaid']
],'id');
if ($hasarea) {
WeliamWeChat::rollback();//事务回滚
wl_message('当前地区已被代理,请重新选择地区');
}
$opareaid = pdo_getcolumn(PDO_NAME.'oparea',['uniacid' => $_W['uniacid'],'aid' => $aid],'id');
if ($opareaid) {
pdo_update(PDO_NAME.'oparea',$data,['id' => $opareaid]);
} else {
pdo_insert(PDO_NAME.'oparea',$data);
}
return true;
}
/**
* 获取所有运营地区
*/
static function get_all_area($type = '')
{
global $_W;
$address_tree = [];
$terarea = pdo_getall(PDO_NAME.'oparea',['uniacid' => $_W['uniacid'],'status' => 1],['areaid','aid']);
$terareas = Util::i_array_column($terarea,'areaid');
if ($type == 1) {
foreach ($terarea as $key => $val) {
$name = pdo_getcolumn(PDO_NAME.'area',['id' => $val['areaid']],'name');
$address_tree[$key] = ['id' => $val['areaid'],'name' => $name,'aid' => $val['aid']];
}
return $address_tree;
}
$provinces = pdo_getall(PDO_NAME.'area',[
'visible' => 2,
'level' => 1,
'displayorder' => ['0',$_W['uniacid']]
],['id','name']);
$cities = pdo_getall(PDO_NAME.'area',[
'visible' => 2,
'level' => 2,
'displayorder' => ['0',$_W['uniacid']]
],['id','pid','name']);
foreach ($provinces as $province_id => $province) {
$address_tree[$province_id] = [
'id' => $province['id'],
'name' => $province['name'],
'children' => []
];
foreach ($cities as $city_id => $city) {
if (@in_array($city['id'],$terareas)) {
if ($city['pid'] == $province['id']) {
$address_tree[$province_id]['children'][$city_id] = [
'id' => $city['id'],
'name' => $city['name']
];
}
}
}
if (empty($address_tree[$province_id]['children'])) {
unset($address_tree[$province_id]);
}
}
return $address_tree;
}
/**
* 通过IP返回地区
*/
static function get_area()
{
global $_W;
$maera = Util::httpPost("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=".$_W['clientip']);
$maera = Util::object_array(json_decode($maera));
$allarea = self::get_all_area(1);
if (count($allarea) == 1) {
$areaid = $allarea[0]['id'];
$name = $allarea[0]['name'];
} else {
if (!empty($maera['district'])) {
foreach ($allarea as $key => $val) {
if (mb_substr($maera['district'],0,2,'utf-8') == mb_substr($val['name'],0,2,'utf-8')) {
$areaid = $val['id'];
$name = $val['name'];
break;
}
}
}
if (empty($areaid)) {
foreach ($allarea as $key => $val) {
if (mb_substr($maera['city'],0,2,'utf-8') == mb_substr($val['name'],0,2,'utf-8')) {
$areaid = $val['id'];
$name = $val['name'];
break;
}
}
}
}
return [
'id' => $areaid,
'name' => $name,
'lc' => $maera['district'] ? $maera['city'].$maera['district'] : $maera['province'].$maera['city']
];
}
/**
* 根据名称返回地区id
*/
static function getIdByName($name)
{
global $_W;
if (empty($name)) return false;
$re = pdo_get(PDO_NAME.'area',['name' => $name],'id');
return $re['id'];
}
/**
* 根据id返回地区名称 type=0:省份-市区 ;type=1:市区
*/
static function getAreaNameById($id,$type = 0)
{
global $_W;
if (empty($id)) return false;
if ($type == 0) {
$city = pdo_getcolumn(PDO_NAME.'area',['id' => $id],'name');
$proId = intval($id / 10000) * 10000;
$pro = pdo_getcolumn(PDO_NAME.'area',['id' => $proId],'name');
return $pro.'-'.$city;
}
}
static function initAgent()
{
global $_W;
if (empty($_W['uniacid'])) {
return false;
}
$oparea = ['uniacid' => $_W['uniacid'],'areaid' => 110100,'aid' => 0,'ishot' => 1,'level' => 2,'status' => 1];
$default = pdo_getcolumn(PDO_NAME.'oparea',['uniacid' => $_W['uniacid'],'aid' => 0],'id');
if (empty($default)) {
$all = pdo_get(PDO_NAME.'oparea',['uniacid' => $_W['uniacid']],'id');
if (!empty($all)) {
$oparea['status'] = 0;
}
pdo_insert(PDO_NAME.'oparea',$oparea);
}
return true;
}
/**
* Comment: 根据条件获取区域列表
* Author: zzw
* Date: 2021/4/15 9:56
* @param array $where 条件
* @param string[] $field 查询字段
* @return array|false|mixed
*/
public static function getAreaList($where = [],$field = ['id','name']){
$list = pdo_getall(PDO_NAME."area",$where,$field);
return $list ? : [];
}
/**
* Comment: 根据经纬度获取省、市、区id
* Author: zzw
* Date: 2021/4/22 9:36
* @param $lat
* @param $lng
* @return array|string
*/
public static function getAreaId($lat,$lng){
//获取当前区域id
$info = MapService::guide_gcoder($lat . ',' . $lng , 0);
$id = $info['result']['ad_info']['adcode'] ? : '';
if(!$id) return '';
//根据当前区域id获取信息
$areaInfo = pdo_get(PDO_NAME."area",['id'=>$id],['id','pid','level']);
//根据等级获取内容
switch ($areaInfo['level']){
case 1:
//省 当前id为省id
$res = ['province_id'=>$areaInfo['id'],'city_id'=>'','area_id'=>''];
break;//当前区域为省
case 2:
//市 当前id为市id 上级id为省id
$res = ['province_id'=>$areaInfo['pid'],'city_id'=>$areaInfo['id'],'area_id'=>''];
break;//当前区域为市
case 3:
//区、县 当前id为区、县id 上级id为市id 获取上级id的上级id,为省级id
$provinceId = pdo_getcolumn(PDO_NAME."area",['id'=>$areaInfo['pid']],'pid');
$res = ['province_id'=>$provinceId,'city_id'=>$areaInfo['pid'],'area_id'=>$areaInfo['id']];
break;//当前区域为区、县
}
return $res;
}
}

34
addons/weliam_smartcity/plugin/area/config.xml

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<name><![CDATA[代理中心]]></name>
<identifie><![CDATA[area]]></identifie>
<version><![CDATA[1.0.0]]></version>
<type><![CDATA[expand]]></type>
<description><![CDATA[代理中心]]></description>
<author><![CDATA[微连科技]]></author>
<url><![CDATA[http://www.weliam.cn/]]></url>
</application>
<setting>
<agent embed="false" />
<system embed="true" />
<task embed="false" />
</setting>
<agentmenu>
</agentmenu>
<systemmenu>
<menu title="代理" font="fa-inbox">
<entry title="代理列表" ac="areaagent" do="agentIndex" actions='["do",["agentIndex","agentEdit"]]' iscover="true" />
<entry title="代理分组" ac="areaagent" do="groupIndex" actions='["do",["groupIndex","groupEdit"]]' />
</menu>
<menu title="地区" font="fa-inbox">
<entry title="地区列表" ac="hotarea" do="oparealist" actions='["ac","hotarea","do","oparealist"]' />
<entry title="地区分组" ac="hotarea" do="group" actions='["ac","hotarea","do",["group","groupedit"]]' />
<entry title="自定义地区" ac="custom" do="index" actions='["ac","custom"]' />
</menu>
<menu title="工具设置" font="fa-inbox">
<entry title="复制数据" ac="areadb" do="copydata" actions='["ac","areadb"]' />
<entry title="代理设置" ac="areaset" do="setting" actions='["ac","areaset"]' />
</menu>
</systemmenu>
</manifest>

BIN
addons/weliam_smartcity/plugin/area/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

314
addons/weliam_smartcity/plugin/area/sys/controller/areaagent.ctrl.php

@ -0,0 +1,314 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Areaagent_WeliamController {
/**
* 代理列表
*/
public function agentIndex() {
global $_W, $_GPC;
//校验代理入口文件
$cityagent = IA_ROOT . '/web/cityagent.php';
$mcityagent = PATH_MODULE . '/web/cityagent.php';
if (!file_exists($cityagent) || md5_file($cityagent) != md5_file($mcityagent)) {
copy($mcityagent, $cityagent);
}
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$where = array();
if (!empty($_GPC['agentname'])) {
$where['agentname'] = $_GPC['agentname'];
}
if (!empty($_GPC['status'])) {
if($_GPC['status'] == 1){
$where['status'] = 1;
}else{
$where['status'] = 0;
}
}
$agentes = Area::getAllAgent($pindex - 1, $psize, $where);
$agents = $agentes['data'];
if (!empty($agents)) {
foreach ($agents as $key => $value) {
$group = Area::getSingleGroup($value['groupid']);
$agents[$key]['groupname'] = $group['name'];
}
}
$pager = wl_pagination($agentes['count'], $pindex, $psize);
include wl_template('area/agentIndex');
}
public function agentImport() {
global $_W, $_GPC;
if ($_W['ispost']) {
$level = intval($_GPC['districtslevel']);
$groupid = intval($_GPC['groupid']);
$estimatetime = strtotime($_GPC['estimatetime']);
$allarea = pdo_getall(PDO_NAME . "area", array('displayorder' => 0, 'level' => $level), array('id', 'name'));
foreach ($allarea as $item) {
$hasarea = pdo_getcolumn(PDO_NAME . 'oparea', array('uniacid' => $_W['uniacid'], 'areaid' => $item['id']), 'id');
if ($hasarea) {
continue;
}
$agent = array(
'uniacid' => $_W['uniacid'],
'groupid' => $groupid,
'agentname' => $item['name'] . '代理',
'username' => Util::createSalt(12),
'password' => '12345678',
'salt' => Util::createSalt(8),
'status' => 1,
'joindate' => time(),
'joinip' => $_W['clientip'],
'starttime' => time(),
'endtime' => $estimatetime
);
$agent['password'] = Util::encryptedPassword($agent['password'], $agent['salt']);
pdo_insert(PDO_NAME . 'agentusers', $agent);
pdo_insert(PDO_NAME . 'oparea', array('uniacid' => $_W['uniacid'], 'aid' => pdo_insertid(), 'level' => $level, 'status' => 1, 'areaid' => $item['id']));
}
show_json(1, '代理一键导入成功。');
}
$allgroups = Area::getAllGroup(0, 100, 1);
$allgroup = $allgroups['data'];
include wl_template('area/agentImport');
}
/**
* 代理编辑
*/
public function agentEdit() {
global $_W, $_GPC;
WeliamWeChat::startTrans();//事务开启
$settings = Setting::wlsetting_read('base');
if (checksubmit('submit')) {
$agent = $_GPC['agent'];
if (empty($_GPC['districts'])) {
WeliamWeChat::rollback();//事务回滚
wl_message('您需要选择代理区域');
}
if (empty($_GPC['id'])) {
load()->model('user');
if (!preg_match(REGULAR_USERNAME, $agent['username'])) {
WeliamWeChat::rollback();//事务回滚
wl_message('必须输入用户名,格式为 3-15 位字符,可以包括汉字、字母(不区分大小写)、数字、下划线和句点。');
}
if (User::agentuser_single(array('username' => $agent['username']))) {
WeliamWeChat::rollback();//事务回滚
wl_message('非常抱歉,此用户名已经被注册,你需要更换注册名称!');
}
if (istrlen($agent['password']) < 8) {
WeliamWeChat::rollback();//事务回滚
wl_message('必须输入密码,且密码长度不得低于8位。');
}
$agent['joindate'] = time();
$agent['joinip'] = $_W['clientip'];
$agent['starttime'] = time();
$agent['salt'] = Util::createSalt(8);
$agent['password'] = Util::encryptedPassword($agent['password'], $agent['salt']);
$agent['username'] = trim($agent['username']);
} else {
load()->model('user');
if (!preg_match(REGULAR_USERNAME, $agent['username'])) {
WeliamWeChat::rollback();//事务回滚
wl_message('用户名格式为 3-15 位字符,可以包括汉字、字母(不区分大小写)、数字、下划线和句点。');
}
if (!empty($_GPC['password']) && istrlen($_GPC['password']) < 8) {
WeliamWeChat::rollback();//事务回滚
wl_message('必须输入密码,且密码长度不得低于8位。');
}
if (!empty($_GPC['password'])) {
$agent['salt'] = Util::createSalt(8);
$agent['password'] = Util::encryptedPassword($_GPC['password'], $agent['salt']);
}
}
$agent['agentname'] = trim($agent['agentname']);
$agent['realname'] = trim($agent['realname']);
$agent['mobile'] = trim($agent['mobile']);
$agent['status'] = $_GPC['status'];
$agent['endtime'] = strtotime($agent['endtime']);
$agent['percent'] = serialize($_GPC['percent']);
$agentid = Area::editAgent($agent, $_GPC['id']);
$result = Area::save_agent_area($_GPC['districts'], $_GPC['districtslevel'], $agentid);
if ($result) {
Cache::deleteCache('area', 'terarea' . $_W['uniacid']);
WeliamWeChat::commit();
wl_message('保存成功!', web_url('area/areaagent/agentIndex'), 'success');
} else {
WeliamWeChat::rollback();//事务回滚
wl_message('保存失败!', referer(), 'error');
}
}
$agent = Area::getSingleAgent(intval($_GPC['id']));
$allgroups = Area::getAllGroup(0, 100, 1);
$allgroup = $allgroups['data'];
$m['openid'] = $agent['cashopenid'];
if ($m['openid']) {
$member = Util::getSingelData('nickname', PDO_NAME . 'member', array('openid' => $m['openid']));
$m['nickname'] = $member['nickname'];
}
//区域操作
$AreaTab = tablename(PDO_NAME . "area");
$orderBy = " ORDER BY id ASC ";
//获取一级省/直辖市
$province = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 1 AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
if ($_GPC['id']) {
//id存在 修改操作
$area = pdo_get(PDO_NAME . 'oparea', array('uniacid' => $_W['uniacid'], 'aid' => intval($_GPC['id'])));
$province_id = $area['areaid'];//省/直辖市id
$city_id = $area['areaid'];//市id
$district_id = $area['areaid'];//区/县id
$town_id = $area['areaid'];//镇/乡id
//逆推 获取当前代理商的省/市/区/镇的信息
if ($area['level'] >= 4) {
$district_id = pdo_fetchcolumn("SELECT pid FROM " . $AreaTab . " WHERE level = 4 AND id = {$town_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) ");
$town = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 4 AND pid = {$district_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
}
if ($area['level'] >= 3) {
$city_id = pdo_fetchcolumn("SELECT pid FROM " . $AreaTab . " WHERE level = 3 AND id = {$district_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) ");
$district = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 3 AND pid = {$city_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
}
if ($area['level'] >= 2) {
$province_id = pdo_fetchcolumn("SELECT pid FROM " . $AreaTab . " WHERE level = 2 AND id = {$city_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) ");
$city = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 2 AND pid = {$province_id} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
}
} else {
//获取第一个省/直辖市 下所有的市
$city = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 2 AND pid = {$province[0]['id']} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
//获取第一个市 下所有的区/县
$district = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 3 AND pid = {$city[0]['id']} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
//获取第一个区/县 下所有的镇/乡
$town = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 4 AND pid = {$district[0]['id']} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) " . $orderBy);
}
include wl_template('area/agentEdit');
}
public function agentDel() {
global $_W, $_GPC;
$id = $_GPC['id'] ?: $_GPC['ids'];
$items = pdo_getall('wlmerchant_agentusers', array('id' => $id, 'uniacid' => $_W['uniacid']), array('id'));
foreach ($items as $item) {
pdo_delete('wlmerchant_agentusers', array('id' => $item['id']));
pdo_delete('wlmerchant_oparea', array('aid' => $item['id']));
}
show_json(1, array('url' => referer()));
}
public function agentManage() {
global $_W, $_GPC;
$agent = Area::getSingleAgent(intval($_GPC['id']));
if (empty($agent)) {
wl_message('未找到代理信息,请重试');
}
$cookie = array();
$cookie['id'] = $agent['id'];
$cookie['uniacid'] = $agent['uniacid'];
$cookie['hash'] = md5($agent['password'] . $agent['salt']);
$session = base64_encode(json_encode($cookie));
isetcookie('__wlagent_staff_session', '', -10000);//删除员工登录信息
$res = isetcookie('__wlagent_session', $session, 7 * 86400, true);
header('location: ' . $_W['siteroot'] . "web/cityagent.php?p=dashboard&ac=dashboard&do=index&");
}
public function getArea() {
global $_W, $_GPC;
$nodes = Area::address_tree_in_use();
die(json_encode($nodes));
}
/**
* Comment: 获取对应的地区信息
* Author: zzw
*/
public function getAreaInfo() {
global $_W, $_GPC;
$id = $_GPC['id'];
$lv = $_GPC['lv'];
$info = pdo_fetchall("SELECT id,name FROM " . tablename(PDO_NAME . "area") . " WHERE pid = {$id} AND `level` = {$lv} AND (displayorder = 0 OR displayorder = {$_W['uniacid']}) ");
wl_json(1, '下级区域信息', $info);
}
/**
* Comment: 批量启用,禁用代理商
* Author: zzw
* Date: 2021/1/20 10:54
*/
public function changeStatus(){
global $_W,$_GPC;
//参数信息获取
$ids = $_GPC['ids'];
$status = $_GPC['status'];
//修改状态
pdo_update(PDO_NAME."agentusers",['status'=>$status],['id IN'=>$ids]);
show_json(1,'修改成功');
}
//////////////////////////代理分组//////////////////////////////
/**
* 代理分组列表
*/
public function groupIndex() {
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$groupes = Area::getAllGroup($pindex - 1, $psize);
$groups = $groupes['data'];
$pager = wl_pagination($groupes['count'], $pindex, $psize);
$plugins = App::get_apps(0, 'agent');
include wl_template('area/groupIndex');
}
/**
* 代理分组编辑
*/
public function groupEdit() {
global $_W, $_GPC;
if (checksubmit('submit')) {
$arr['name'] = trim($_GPC['name']);
$arr['isdefault'] = $_GPC['isdefault'];
$arr['enabled'] = $_GPC['enabled'];
$arr['package'] = iserializer($_GPC["plugins"]);
if (empty($arr['name']))
wl_message('分组名称不能为空');
if (Area::editGroup($arr, intval($_GPC['id']))) {
wl_message('代理分组更新成功', web_url('area/areaagent/groupIndex'), 'success');
} else {
wl_message('代理分组更新失败', web_url('area/areaagent/groupIndex'), 'error');
}
}
$category = Area::getSingleGroup(intval($_GPC['id']));
$plugins = App::get_apps(0, 'agent');
include wl_template('area/groupEdit');
}
/**
* 删除代理分组
*/
public function groupDelete() {
global $_W, $_GPC;
$id = intval($_GPC['id']);
$isuse = pdo_getcolumn(PDO_NAME . 'agentusers', array('groupid' => $id, 'uniacid' => $_W['uniacid']), 'id');
if (!empty($isuse)) {
show_json(0, '当前分组使用中,无法删除');
}
pdo_delete(PDO_NAME . 'agentusers_group', array('id' => $id, 'uniacid' => $_W['uniacid']));
show_json(1, '分组删除成功');
}
}

375
addons/weliam_smartcity/plugin/area/sys/controller/areadb.ctrl.php

@ -0,0 +1,375 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Areadb_WeliamController {
//同步设置
public function copydata() {
global $_W, $_GPC;
$agents = pdo_fetchall("SELECT agentname,id FROM " . tablename('wlmerchant_agentusers') . "WHERE uniacid = {$_W['uniacid']} ORDER BY id ASC");
if (checksubmit('submit')) {
$expressid = $_GPC['expressid'];
$synchr = $_GPC['synchr'];
$passiveid = $_GPC['passiveid'];
$copystatus = $_GPC['copystatus'];
if (empty($synchr)) {
wl_message('请选择需要同步的内容', 'referer', 'error');
}
if (in_array($expressid, $passiveid)) {
wl_message('目标代理不能包含模板代理', 'referer', 'error');
}
//循环插入数据
if(empty($passiveid)){
$passiveid = pdo_fetchall("SELECT id FROM ".tablename('wlmerchant_agentusers')."WHERE uniacid = {$_W['uniacid']} AND id != {$expressid} ORDER BY id DESC");
foreach ($passiveid as $item) {
$this->insert_data($synchr, $item['id'], $expressid, $copystatus);
}
}else{
foreach ($passiveid as $item) {
$this->insert_data($synchr, $item, $expressid, $copystatus);
}
}
wl_message('同步完成,请检查各项是否同步正确', 'referer', 'success');
}
include wl_template('area/copydata');
}
public function movedata() {
global $_W, $_GPC;
ini_set('display_errors', '1');
error_reporting(E_ALL ^ E_NOTICE);
$tablenames = pdo_fetchall("SHOW TABLES LIKE :tablename", array(":tablename" => "%wlmerchant%"));
$hastable = array();
foreach ($tablenames as $tablename) {
$table = str_replace($_W['config']['db']['tablepre'], '', end($tablename));
//查询表所有字段,判断是否有aid
$result = pdo_fetchall("SHOW FULL COLUMNS FROM " . tablename($table));
foreach ($result as $key => $index) {
if ($index['Field'] == 'aid') {
$hastable[] = $table;
if ($table == 'wlmerchant_agentsetting') {
} else {
//pdo_update($table, array('aid' => $new), array('aid' => $old));
}
break;
}
}
}
if (checksubmit('submit')) {
}
$agents = pdo_fetchall("SELECT agentname,id FROM " . tablename('wlmerchant_agentusers') . "WHERE uniacid = {$_W['uniacid']} ORDER BY id ASC");
include wl_template('area/movedata');
}
private function my_db_table_schema($db, $tablename = '') {
$result = $db->fetch("SHOW TABLE STATUS LIKE '" . trim($db->tablename($tablename), "`") . "'");
if (empty($result) || empty($result['Create_time'])) {
return array();
}
$ret["tablename"] = $result["Name"];
$ret["charset"] = $result["Collation"];
$ret["engine"] = $result["Engine"];
$ret["increment"] = $result["Auto_increment"];
$result = $db->fetchall("SHOW FULL COLUMNS FROM " . $db->tablename($tablename));
foreach ($result as $value) {
$temp = array();
$type = explode(" ", $value["Type"], 2);
$temp["name"] = $value["Field"];
$pieces = explode("(", $type[0], 2);
$temp["type"] = $pieces[0];
$temp["length"] = rtrim($pieces[1], ")");
$temp["null"] = !($value["Null"] == "NO");
$temp["signed"] = empty($type[1]);
$temp["increment"] = $value["Extra"] == "auto_increment";
if (!empty($value['Comment'])) {
$temp["comment"] = $value["Comment"];
}
if ($value["Default"] != NULL) {
$temp["default"] = $value["Default"];
}
$ret["fields"][$value["Field"]] = $temp;
}
$result = $db->fetchall("SHOW INDEX FROM " . $db->tablename($tablename));
foreach ($result as $value) {
$ret["indexes"][$value["Key_name"]]["name"] = $value["Key_name"];
$ret["indexes"][$value["Key_name"]]["type"] = $value["Key_name"] == "PRIMARY" ? "primary" : ($value["Non_unique"] == 0 ? "unique" : "index");
$ret["indexes"][$value["Key_name"]]["fields"][] = $value["Column_name"];
}
return $ret;
}
private function insert_data($synchr, $passiveid, $expressid, $copystatus) {
global $_W;
if (in_array('base', $synchr)) {
$bases = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_agentsetting') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} ORDER BY id ASC");
foreach ($bases as $key => $base) {
//基本设置同步中不包括 底部菜单&选项卡内容
if ($base['key'] != 'pluginlist' && $base['key'] != 'foot') {
unset($base['id']);
$base['aid'] = $passiveid;
$flag = pdo_get('wlmerchant_agentsetting', array('aid' => $passiveid, 'key' => $base['key']), array('id'));
if ($flag) {
pdo_update('wlmerchant_agentsetting', $base, array('id' => $flag['id']));
} else {
pdo_insert('wlmerchant_agentsetting', $base);
}
}
}
}
if (in_array('merce', $synchr)) {
if ($copystatus) {
pdo_delete('wlmerchant_category_store', array('aid' => $passiveid, 'uniacid' => $_W['uniacid']));
}
$categorys = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_category_store') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} AND parentid = 0 ORDER BY id ASC");
foreach ($categorys as $key => $category) {
$childs = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_category_store') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} AND parentid = {$category['id']} ORDER BY id ASC");
unset($category['id']);
$category['aid'] = $passiveid;
pdo_insert('wlmerchant_category_store', $category);
if ($childs) {
$parentid = pdo_insertid();
foreach ($childs as $key => $child) {
unset($child['id']);
$child['aid'] = $passiveid;
$child['parentid'] = $parentid;
pdo_insert('wlmerchant_category_store', $child);
}
}
}
}
if(in_array('yellowpage', $synchr)){
if ($copystatus) {
pdo_delete('wlmerchant_yellowpage_cates', array('aid' => $passiveid, 'uniacid' => $_W['uniacid']));
}
$categorys = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_yellowpage_cates') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} AND parentid = 0 ORDER BY id ASC");
foreach ($categorys as $key => $category) {
$childs = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_yellowpage_cates') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} AND parentid = {$category['id']} ORDER BY id ASC");
unset($category['id']);
$category['aid'] = $passiveid;
pdo_insert('wlmerchant_yellowpage_cates', $category);
if ($childs) {
$parentid = pdo_insertid();
foreach ($childs as $key => $child) {
unset($child['id']);
$child['aid'] = $passiveid;
$child['parentid'] = $parentid;
pdo_insert('wlmerchant_yellowpage_cates', $child);
}
}
}
}
if (in_array('mergr', $synchr)) {
if ($copystatus) {
pdo_delete('wlmerchant_chargelist', array('aid' => $passiveid, 'uniacid' => $_W['uniacid']));
}
$mergrs = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_chargelist') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} ORDER BY id ASC");
if ($mergrs) {
foreach ($mergrs as $key => $mergr) {
unset($mergr['id']);
$mergr['aid'] = $passiveid;
pdo_insert('wlmerchant_chargelist', $mergr);
}
}
}
if (in_array('fight', $synchr)) {
if ($copystatus) {
pdo_delete('wlmerchant_fightgroup_category', array('aid' => $passiveid, 'uniacid' => $_W['uniacid']));
}
$fights = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_fightgroup_category') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} ORDER BY id ASC");
foreach ($fights as $key => $fight) {
unset($fight['id']);
$fight['aid'] = $passiveid;
pdo_insert('wlmerchant_fightgroup_category', $fight);
}
}
if (in_array('pocket', $synchr)) {
if ($copystatus) {
pdo_delete('wlmerchant_pocket_type', array('aid' => $passiveid, 'uniacid' => $_W['uniacid']));
}
$pockets = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_pocket_type') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} AND type = 0 ORDER BY id ASC");
foreach ($pockets as $key => $pocket) {
$childs = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_pocket_type') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} AND type = {$pocket['id']} ORDER BY id ASC");
unset($pocket['id']);
$pocket['aid'] = $passiveid;
pdo_insert('wlmerchant_pocket_type', $pocket);
if ($childs) {
$parentid = pdo_insertid();
foreach ($childs as $key => $child) {
unset($child['id']);
$child['aid'] = $passiveid;
$child['type'] = $parentid;
pdo_insert('wlmerchant_pocket_type', $child);
}
}
}
}
if (in_array('notice', $synchr)) {
if ($copystatus) {
pdo_delete('wlmerchant_notice', array('aid' => $passiveid, 'uniacid' => $_W['uniacid']));
}
$notices = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_notice') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} ORDER BY id ASC");
foreach ($notices as $key => $notice) {
unset($notice['id']);
$notice['aid'] = $passiveid;
pdo_insert('wlmerchant_notice', $notice);
}
}
if (in_array('adv', $synchr)) {
if ($copystatus) {
pdo_delete('wlmerchant_adv', array('aid' => $passiveid, 'uniacid' => $_W['uniacid']));
pdo_delete('wlmerchant_pocket_slide', array('aid' => $passiveid, 'uniacid' => $_W['uniacid']));
}
$advs = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_adv') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} ORDER BY id ASC");
foreach ($advs as $key => $adv) {
unset($adv['id']);
$adv['aid'] = $passiveid;
pdo_insert('wlmerchant_adv', $adv);
}
//掌上信息
$advs2 = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_pocket_slide') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} ORDER BY id ASC");
foreach ($advs2 as $key => $ad) {
unset($ad['id']);
$ad['aid'] = $passiveid;
pdo_insert('wlmerchant_pocket_slide', $ad);
}
}
if (in_array('nav', $synchr)) {
if ($copystatus) {
pdo_delete('wlmerchant_nav', array('aid' => $passiveid, 'uniacid' => $_W['uniacid']));
}
$navs = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_nav') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} ORDER BY id ASC");
foreach ($navs as $key => $nav) {
unset($nav['id']);
$nav['aid'] = $passiveid;
pdo_insert('wlmerchant_nav', $nav);
}
}
if (in_array('banner', $synchr)) {
if ($copystatus) {
pdo_delete('wlmerchant_banner', array('aid' => $passiveid, 'uniacid' => $_W['uniacid']));
}
$banners = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_banner') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} ORDER BY id ASC");
foreach ($banners as $key => $banner) {
unset($banner['id']);
$banner['aid'] = $passiveid;
pdo_insert('wlmerchant_banner', $banner);
}
}
if (in_array('cube', $synchr)) {
pdo_delete('wlmerchant_indexset', array('aid' => $passiveid, 'key' => 'cube', 'uniacid' => $_W['uniacid']));
$cube = pdo_fetch("SELECT * FROM " . tablename('wlmerchant_indexset') . "WHERE uniacid = {$_W['uniacid']} AND `key` = 'cube' AND aid = {$expressid} ORDER BY id ASC");
unset($cube['id']);
$cube['aid'] = $passiveid;
pdo_insert('wlmerchant_indexset', $cube);
}
//选项卡同步
if (in_array('selectCard', $synchr)) {
$base = pdo_fetch("SELECT * FROM " . tablename(PDO_NAME . 'agentsetting') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} AND `key` = 'pluginlist'");
unset($base['id']);
$base['aid'] = $passiveid;
$flag = pdo_get(PDO_NAME . 'agentsetting', array('aid' => $passiveid, 'key' => $base['key']), array('id'));
if ($flag) {
pdo_update(PDO_NAME . 'agentsetting', $base, array('id' => $flag['id']));
} else {
pdo_insert(PDO_NAME . 'agentsetting', $base);
}
}
//底部菜单同步
if (in_array('flootMenu', $synchr)) {
$base = pdo_fetch("SELECT * FROM " . tablename(PDO_NAME . 'agentsetting') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$expressid} AND `key` = 'foot'");
unset($base['id']);
$base['aid'] = $passiveid;
$flag = pdo_get(PDO_NAME . 'agentsetting', array('aid' => $passiveid, 'key' => $base['key']), array('id'));
if ($flag) {
pdo_update(PDO_NAME . 'agentsetting', $base, array('id' => $flag['id']));
} else {
pdo_insert(PDO_NAME . 'agentsetting', $base);
}
//清楚该代理商底部菜单的缓存信息
Cache::deleteCache('setting', 'allagentset' . $passiveid);
}
//抢购分类信息同步
if(in_array('rush_class', $synchr)){
if ($copystatus) pdo_delete(PDO_NAME . "rush_category" , ['aid' => $passiveid , 'uniacid' => $_W['uniacid']]);
$list = pdo_getall(PDO_NAME."rush_category",['aid'=>$expressid,'uniacid'=>$_W['uniacid']]
,['uniacid','name','sort','thumb','is_show'],'','id ASC');
foreach ($list as $key => $fight) {
$fight['aid'] = $passiveid;
pdo_insert(PDO_NAME."rush_category", $fight);
}
}
//团购分类信息同步
if(in_array('group_class', $synchr)){
if ($copystatus) pdo_delete(PDO_NAME . "groupon_category" , ['aid' => $passiveid , 'uniacid' => $_W['uniacid']]);
$list = pdo_getall(PDO_NAME."groupon_category",['aid'=>$expressid,'uniacid'=>$_W['uniacid']]
,['uniacid','name','sort','thumb','is_show'],'','id ASC');
foreach ($list as $key => $fight) {
$fight['aid'] = $passiveid;
pdo_insert(PDO_NAME."groupon_category", $fight);
}
}
//砍价分类信息同步
if(in_array('bargain_class', $synchr)){
if ($copystatus) pdo_delete(PDO_NAME . "bargain_category" , ['aid' => $passiveid , 'uniacid' => $_W['uniacid']]);
$list = pdo_getall(PDO_NAME."bargain_category",['aid'=>$expressid,'uniacid'=>$_W['uniacid']]
,['uniacid','name','sort','thumb','is_show'],'','id ASC');
foreach ($list as $key => $fight) {
$fight['aid'] = $passiveid;
pdo_insert(PDO_NAME."bargain_category", $fight);
}
}
//同城名片设置同步
if(in_array('citycard', $synchr)) {
if ($copystatus){
pdo_delete(PDO_NAME . "citycard_cates" , ['aid' => $passiveid , 'uniacid' => $_W['uniacid']]);
pdo_delete(PDO_NAME . "citycard_meals" , ['aid' => $passiveid , 'uniacid' => $_W['uniacid']]);
pdo_delete(PDO_NAME . "citycard_tops" , ['aid' => $passiveid , 'uniacid' => $_W['uniacid']]);
}
//分类
$parentCate = pdo_getall('wlmerchant_citycard_cates',array('aid' => $expressid,'uniacid'=>$_W['uniacid'],'parentid' =>0),[],'','id ASC');
if(!empty($parentCate)){
foreach ($parentCate as $par){
$childrenCate = pdo_getall('wlmerchant_citycard_cates',array('aid' => $expressid,'uniacid'=>$_W['uniacid'],'parentid' =>$par['id']),array('uniacid','name','sort','enabled'),'','id ASC');
unset($par['id']);
$par['aid'] = $passiveid;
pdo_insert(PDO_NAME."citycard_cates", $par);
$newparentid = pdo_insertid();
if(!empty($childrenCate)){
foreach ($childrenCate as $child){
$child['aid'] = $passiveid;
$child['parentid'] = $newparentid;
pdo_insert(PDO_NAME."citycard_cates", $child);
}
}
}
}
//套餐与置顶
$list = pdo_getall(PDO_NAME."citycard_meals",['aid'=>$expressid,'uniacid'=>$_W['uniacid']]
,['uniacid','name','sort','is_free','price','day','check','status','isdistri','onedismoney','twodismoney'],'','id ASC');
foreach ($list as $key => $meal) {
$meal['aid'] = $passiveid;
pdo_insert(PDO_NAME."citycard_meals", $meal);
}
$list = pdo_getall(PDO_NAME."citycard_tops",['aid'=>$expressid,'uniacid'=>$_W['uniacid']]
,['uniacid','name','sort','price','day','status','isdistri','onedismoney','twodismoney'],'','id ASC');
foreach ($list as $key => $top) {
$top['aid'] = $passiveid;
pdo_insert(PDO_NAME."citycard_tops", $top);
}
}
}
}

24
addons/weliam_smartcity/plugin/area/sys/controller/areaset.ctrl.php

@ -0,0 +1,24 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Areaset_WeliamController {
/**
* Comment: 代理商设置
* Author: zzw
* Date: 2021/3/1 10:22
*/
public function setting() {
global $_W, $_GPC;
$arealist = pdo_getall('wlmerchant_agentusers',array('uniacid' => $_W['uniacid'],'status' => 1),array('id','agentname'));
if (checksubmit('submit')) {
$data = $_GPC['data'];
Setting::wlsetting_save($data,'areaset');
wl_message('更新设置成功!',web_url('area/areaset/setting'));
}
//获取已经存在的设置信息
$settings = Setting::wlsetting_read('areaset');
include wl_template('area/areasetting');
}
}

73
addons/weliam_smartcity/plugin/area/sys/controller/custom.ctrl.php

@ -0,0 +1,73 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Custom_WeliamController{
/**
* Comment: 进入自定义地区列表编辑
* Author: zzw
*/
public function index(){
global $_W,$_GPC;
$categorys = pdo_fetchall("SELECT id,name,pid,displayorder,visible FROM ".tablename(PDO_NAME."area")." WHERE (displayorder = {$_W['uniacid']} OR displayorder = 0 ) AND level = 1 ");
include wl_template('area/diyArea');
}
/**
* Comment: 编辑自定义地区
*/
public function edit(){
global $_W,$_GPC;
if(checksubmit('submit')){
$id = intval($_GPC['id']);
if($_GPC['parentid'] > 0){
$category['pid'] = intval($_GPC['parentid']);
if($_GPC['level']){
$category['level'] = intval($_GPC['level']);
}
}else{
$category['pid'] = 0;
$category['level'] = 1;
}
$category['name'] = trim($_GPC['name']);
$category['displayorder'] = $_W['uniacid'];
$category['visible'] = intval($_GPC['visible']);
$category['initial'] = getFirstChar($category['name']);
if(!empty($id)){
if(pdo_update(PDO_NAME.'area',$category,array('id'=>$id))) wl_message('保存成功',web_url('area/custom/index'),'success');
}else{
if(pdo_insert(PDO_NAME.'area',$category)) wl_message('保存成功',web_url('area/custom/index'),'success');
}
wl_message('保存失败',referer(),'error');
}
if(!empty($_GPC['id'])) $category = pdo_get(PDO_NAME.'area',array('id'=>$_GPC['id']));
if(!empty($_GPC['parentid'])) $pidname = pdo_getcolumn(PDO_NAME.'area',array('id'=>$_GPC['parentid']),'name');
include wl_template('area/customedit');
}
/**
* Comment: 删除自定义地区
*/
public function delete(){
global $_W,$_GPC;
$pid = pdo_getcolumn(PDO_NAME.'area', array('id'=>$_GPC['id']),'pid');
if(empty($pid)){
pdo_delete(PDO_NAME.'area',array('pid'=>$_GPC['id']));
}
if(pdo_delete(PDO_NAME.'area',array('id'=>$_GPC['id']))){
show_json(1,'删除成功');
} else {
show_json(0,'删除失败,请重试');
}
}
/**
* Comment: 根据id与等级获取当前区域的所有下级区域信息
* Author: zzw
*/
public function getAreaInfo(){
global $_W,$_GPC;
$id = $_GPC['id'];
$lv = $_GPC['lv'];
$info = pdo_fetchall("SELECT id,name,pid,displayorder FROM ".tablename(PDO_NAME."area") ." WHERE (displayorder = {$_W['uniacid']} OR displayorder = 0 ) AND level = ".$lv." AND pid = ".$id);
wl_json(1,'获取下级区域信息',$info);
}
}

190
addons/weliam_smartcity/plugin/area/sys/controller/hotarea.ctrl.php

@ -0,0 +1,190 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Hotarea_WeliamController {
public function oparealist() {
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 20;
$where['uniacid'] = $_W['uniacid'];
//状态
if ($_GPC['statusflag']) {
if ($_GPC['statusflag'] == 2) {
$where['status'] = 0;
} else {
$where['status'] = 1;
}
}
//热门
if ($_GPC['ishotflag'] > 0) {
if ($_GPC['ishotflag'] == 2) {
$where['ishot'] = 0;
} else {
$where['ishot'] = 1;
}
}
//搜索名字
if ($_GPC['agentname']) {
$keyword = trim($_GPC['agentname']);
$keywordtype = $_GPC['keywordtype'];
if ($keywordtype == 1) {
$areas = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_area') . "WHERE name LIKE '%{$keyword}%' ORDER BY id DESC");
if ($areas) {
$areaids = "(";
foreach ($areas as $key => $v) {
if ($key == 0) {
$areaids .= $v['id'];
} else {
$areaids .= "," . $v['id'];
}
}
$areaids .= ")";
$where['areaid#'] .= $areaids;
} else {
$where['areaid#'] .= "(0)";
}
} else if ($keywordtype == 2) {
$areas = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_agentusers') . "WHERE agentname LIKE '%{$keyword}%' ORDER BY id DESC");
if ($areas) {
$areaids = "(";
foreach ($areas as $key => $v) {
if ($key == 0) {
$areaids .= $v['id'];
} else {
$areaids .= "," . $v['id'];
}
}
$areaids .= ")";
$where['aid#'] .= $areaids;
} else {
$where['aid#'] .= "(0)";
}
}
}
$addresses = Util::getNumData('*', PDO_NAME . 'oparea', $where, 'sort DESC,aid ASC', $pindex, $psize, 1);
$pager = $addresses[1];
$addresses = $addresses[0];
if (checksubmit()) {
$status = $_GPC['status'];
$ishot = $_GPC['ishot'];
$group = $_GPC['group'];
$sort = $_GPC['sort'];
foreach ($addresses as $key => $value) {
$onstatus = !empty($status[$value['id']]) ? 1 : 0;
$onhot = !empty($ishot[$value['id']]) ? 1 : 0;
$ongroup = intval($group[$value['id']]);
$addresssort = intval($sort[$value['id']]);
pdo_update(PDO_NAME . 'oparea', array('status' => $onstatus, 'ishot' => $onhot, 'gid' => $ongroup, 'sort' => $addresssort), array('id' => $value['id']));
}
Cache::deleteCache('area', 'terarea' . $_W['uniacid']);
wl_message('更新地区信息成功', 'referer', 'success');
}
foreach ($addresses as $key => $value) {
$addresses[$key]['addressname'] = pdo_getcolumn(PDO_NAME . 'area', array('id' => $value['areaid']), 'name');
$addresses[$key]['agentname'] = empty($value['aid']) ? '总后台' : pdo_getcolumn(PDO_NAME . 'agentusers', array('id' => $value['aid']), 'agentname');
//删除未删除的地区信息
if (empty($addresses[$key]['agentname'])) {
pdo_delete('wlmerchant_oparea', array('id' => $value['id']));
unset($addresses[$key]);
}
}
$remark_arr = pdo_getall(PDO_NAME . 'areagroup', array('uniacid' => $_W['uniacid']));
include wl_template('area/oparealist');
}
public function opareaedit() {
global $_W, $_GPC;
$id = intval($_GPC['id']);
//id存在 修改操作
$area = pdo_get(PDO_NAME . 'oparea', array('uniacid' => $_W['uniacid'], 'id' => intval($id)));
if ($_W['ispost']) {
Area::save_agent_area($_GPC['districts'], $_GPC['districtslevel'], $area['aid']);
wl_message('更新地区信息成功', web_url('area/hotarea/oparealist'), 'success');
}
//区域操作
$AreaTab = tablename(PDO_NAME . "area");
$orderBy = " ORDER BY id ASC ";
//获取一级省/直辖市
$province = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 1 " . $orderBy);
$province_id = $area['areaid'];//省/直辖市id
$city_id = $area['areaid'];//市id
$district_id = $area['areaid'];//区/县id
$town_id = $area['areaid'];//镇/乡id
//逆推 获取当前代理商的省/市/区/镇的信息
if ($area['level'] >= 4) {
$district_id = pdo_fetchcolumn("SELECT pid FROM " . $AreaTab . " WHERE level = 4 AND id = {$town_id}");
$town = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 4 AND pid = {$district_id}" . $orderBy);
}
if ($area['level'] >= 3) {
$city_id = pdo_fetchcolumn("SELECT pid FROM " . $AreaTab . " WHERE level = 3 AND id = {$district_id}");
$district = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 3 AND pid = {$city_id}" . $orderBy);
}
if ($area['level'] >= 2) {
$province_id = pdo_fetchcolumn("SELECT pid FROM " . $AreaTab . " WHERE level = 2 AND id = {$city_id}");
$city = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 2 AND pid = {$province_id}" . $orderBy);
}
/*$oparea = pdo_get(PDO_NAME . 'oparea', array('uniacid' => $_W['uniacid'], 'id' => $id));
if ($_W['ispost']) {
Area::save_agent_area($_GPC['districts'], $_GPC['districtslevel'], $oparea['aid']);
wl_message('更新地区信息成功', web_url('area/hotarea/oparealist'), 'success');
}
if ($oparea['level'] == 1) {
$districts['province'] = $oparea['areaid'];
} elseif ($oparea['level'] == 2) {
$districts['province'] = pdo_getcolumn(PDO_NAME . 'area', array('id' => $oparea['areaid']), 'pid');
$districts['city'] = $oparea['areaid'];
} else {
$districts['district'] = $oparea['areaid'];
$districts['city'] = pdo_getcolumn(PDO_NAME . 'area', array('id' => $oparea['areaid']), 'pid');
$districts['province'] = pdo_getcolumn(PDO_NAME . 'area', array('id' => $districts['city']), 'pid');
}*/
include wl_template('area/opareaedit');
}
public function group() {
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 15;
$lists = pdo_getslice(PDO_NAME . 'areagroup', array('uniacid' => $_W['uniacid']), array($pindex, $psize), $total, array(), '', "sort DESC");
$pager = wl_pagination($total, $pindex, $psize);
include wl_template('area/areagroup');
}
public function groupedit() {
global $_W, $_GPC;
if (checksubmit()) {
if (empty($_GPC['name'])) {
wl_message('请填写分组名称');
}
if (empty($_GPC['id'])) {
pdo_insert(PDO_NAME . 'areagroup', array('uniacid' => $_W['uniacid'], 'name' => $_GPC['name'], 'sort' => $_GPC['sort']));
} else {
pdo_update(PDO_NAME . 'areagroup', array('name' => $_GPC['name'], 'sort' => $_GPC['sort']), array('id' => $_GPC['id']));
}
wl_message('编辑分组成功', web_url('area/hotarea/group'), 'success');
}
$area = pdo_get(PDO_NAME . 'areagroup', array('id' => $_GPC['id']));
include wl_template('area/areagroupedit');
}
public function groupdel() {
global $_W, $_GPC;
if ($_GPC['id']) {
pdo_delete(PDO_NAME . 'areagroup', array('id' => $_GPC['id']));
show_json(1, '删除成功');
}
show_json(0, '删除失败');
}
}

235
addons/weliam_smartcity/plugin/area/sys/view/default/area/agentEdit.html

@ -0,0 +1,235 @@
{php include wl_template('common/header');}
<script type="text/javascript" src="{URL_WEB_JS}diyarea.js"></script>
<ul class="nav nav-tabs" id="myTab">
<li class="active" ><a href="#tab_1">基本信息</a></li>
<li><a href="#tab_2">区域设置</a></li>
<li><a href="#tab_3">结算提现</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<input type="hidden" name="id" value="{$agent['id']}" />
<div class="tab-content">
<!--代理商基本信息-->
<div class="tab-pane active" id="tab_1">
<div class="panel panel-default">
<div class="panel-heading">
代理信息
</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">代理名称<span class="must-fill">*</span></label>
<div class="col-sm-9">
<input type="text" name="agent[agentname]" required placeholder="请输入代理名称" class="form-control" value="{$agent['agentname']}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">真实姓名<span class="must-fill">*</span></label>
<div class="col-sm-9">
<input type="text" name="agent[realname]" required placeholder="请输入真实姓名" class="form-control" value="{$agent['realname']}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">联系电话</label>
<div class="col-sm-9">
<input type="text" name="agent[mobile]" placeholder="请输入联系电话" class="form-control" value="{$agent['mobile']}">
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
代理账号
</div>
<div class="panel-body">
{if !empty($agent['id'])}
<div class="form-group">
<label class="col-sm-2 control-label">代理账号<span class="must-fill">*</span></label>
<div class="col-sm-9">
<input type="text" name="agent[username]" required placeholder="请输入代理账号" class="form-control" value="{$agent['username']}">
<span class="help-block">当前编辑的用户名</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">新密码</label>
<div class="col-sm-9">
<input type="text" name="password" placeholder="请输入代理新密码" class="form-control" value="">
<span class="help-block">请填写密码,最小长度为 8 个字符。如果不更改密码此处请留空</span>
</div>
</div>
{else}
<div class="form-group">
<label class="col-sm-2 control-label">代理账号<span class="must-fill">*</span></label>
<div class="col-sm-9">
<input type="text" name="agent[username]" required placeholder="请输入代理账号" class="form-control" value="">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">代理密码<span class="must-fill">*</span></label>
<div class="col-sm-9">
<input type="text" name="agent[password]" required placeholder="请输入代理密码" class="form-control" value="">
</div>
</div>
{/if}
<div class="form-group">
<label class="col-sm-2 control-label">所属组别<span class="must-fill">*</span></label>
<div class="col-sm-9">
<select name="agent[groupid]" class="form-control">
{loop $allgroup $groups}
<option value="{$groups['id']}" {if $groups['id'] == $agent['groupid']}selected{/if}>{$groups['name']}</option>
{/loop}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">到期时间<span class="must-fill">*</span></label>
<div class="col-sm-9">
{php echo tpl_form_field_date('agent[endtime]',$agent['endtime'])}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否启用</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" value="1" name="status" {if $agent['status']==1}checked{/if}>
</label>
<label class="radio-inline">
<input type="radio" value="0" name="status" {if $agent['status']==0}checked{/if}>
</label>
</div>
</div>
</div>
</div>
</div>
<!--代理商代理区域设置-->
<div class="tab-pane" id="tab_2">
<div class="panel panel-default">
<div class="panel-heading">
代理区域
</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">地区等级</label>
<div class="col-sm-9">
<label class="radio-inline" onclick="$('#tpl-district').hide();$('#tpl-city').hide();$('#tpl-town').hide();">
<input type="radio" value="1" name="districtslevel" {if $area['level']==1}checked{/if}>一级
</label>
<label class="radio-inline" onclick="$('#tpl-district').hide();$('#tpl-city').show();$('#tpl-town').hide();">
<input type="radio" value="2" name="districtslevel" {if $area['level']==2 || empty($area['level'])}checked{/if}>二级
</label>
<label class="radio-inline" onclick="$('#tpl-district').show();$('#tpl-city').show();$('#tpl-town').hide();">
<input type="radio" value="3" name="districtslevel" {if $area['level']==3}checked{/if}>三级
</label>
<label class="radio-inline" onclick="$('#tpl-district').show();$('#tpl-city').show();$('#tpl-town').show();">
<input type="radio" value="4" name="districtslevel" {if $area['level']==4}checked{/if}>四级
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">运营地区</label>
<div class="col-sm-9">
<div class="row row-fix js-address-selector selectArea">
<div class="col-md-3" id="tpl-province">
<select name="districts[province]" data-value="{$districts['province']}" level="1" class="form-control tpl-province changeArea">
{loop $province $item}
<option value="{$item['id']}" {if $item['id'] == $province_id}selected="selected"{/if}>{$item['name']}</option>
{/loop}
</select>
</div>
<div class="col-md-3" {if $area['level'] == 1}style="display: none;"{/if} id="tpl-city">
<select name="districts[city]" data-value="{$districts['city']}" level="2" class="form-control tpl-city changeArea">
{loop $city $item}
<option value="{$item['id']}" {if $item['id'] == $city_id}selected="selected"{/if}>{$item['name']}</option>
{/loop}
</select>
</div>
<div class="col-md-3" {if $area['level'] <= 2}style="display: none;"{/if} id="tpl-district">
<select name="districts[district]" data-value="{$districts['district']}" level="3" class="form-control tpl-district changeArea">
{loop $district $item}
<option value="{$item['id']}" {if $item['id'] == $district_id}selected="selected"{/if}>{$item['name']}</option>
{/loop}
</select>
</div>
<div class="col-md-3" {if $area['level'] <= 3}style="display: none;"{/if} id="tpl-town">
<select name="districts[town]" data-value="{$districts['town']}" level="4" class="form-control tpl-town changeArea">
{loop $town $item}
<option value="{$item['id']}" {if $item['id'] == $town_id}selected="selected"{/if}>{$item['name']}</option>
{/loop}
</select>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--代理商结算提现设置-->
<div class="tab-pane" id="tab_3">
<div class="panel panel-default">
<div class="panel-heading">
代理提现到微信号
</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">代理微信</label>
<div class="col-sm-9">
{php echo tpl_select_user('agent[cashopenid]', $agent['cashopenid']);}
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
商家提现设置
</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label" >系统提成</label>
<div class="col-sm-9">
<div class="input-group">
<input type="text" name="percent[syssalepercent]" class="form-control" value="{$agent['percent']['syssalepercent']}" />
<span class="input-group-addon">%</span>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
代理提现设置
</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label" >系统提成</label>
<div class="col-sm-9">
<div class="input-group">
<input type="text" name="percent[agentpercent]" class="form-control" value="{$agent['percent']['agentpercent']}" />
<span class="input-group-addon">%</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
<script type="text/javascript">
$(function () {
window.optionchanged = false;
$('#myTab a').click(function (e) {
e.preventDefault();//阻止a链接的跳转行为
$(this).tab('show');//显示当前选中的链接及关联的content
})
});
</script>
{php include wl_template('common/footer');}

49
addons/weliam_smartcity/plugin/area/sys/view/default/area/agentImport.html

@ -0,0 +1,49 @@
<form class="form-horizontal form-validate" action="{php echo web_url('area/areaagent/agentImport')}" method="post" enctype="multipart/form-data">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button data-dismiss="modal" class="close" type="button">×</button>
<h4 class="modal-title">一键导入代理</h4>
</div>
<div class="modal-body">
<div class="alert alert-warning">
一键导入代理可以按全国省、市、区县地区,自动生成所有代理,默认按市级导入,已存在的地区将不会导入。导入的代理登陆密码为12345678,到期时间统一为当前时间加上一年。
</div>
<div class="form-group">
<label class="col-sm-2 control-label must">导入类型</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" value="1" name="districtslevel">按省级
</label>
<label class="radio-inline">
<input type="radio" value="2" name="districtslevel" checked>按市级
</label>
<label class="radio-inline">
<input type="radio" value="3" name="districtslevel">按区县
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">代理分组</label>
<div class="col-sm-9">
<select name="groupid" class="form-control">
{loop $allgroup $groups}
<option value="{$groups['id']}">{$groups['name']}</option>
{/loop}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">到期时间</label>
<div class="col-sm-9">
{php echo tpl_form_field_date('estimatetime',date('Y-m-d H:i:s',time()+365*86400),true);}
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="submit">提交</button>
<button data-dismiss="modal" class="btn btn-default" type="button">取消</button>
</div>
</div>
</div>
</form>

109
addons/weliam_smartcity/plugin/area/sys/view/default/area/agentIndex.html

@ -0,0 +1,109 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="#">代理列表</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="alert alert-warning">
代理登录地址:<a href="{$_W['siteroot']}web/cityagent.php?p=user&ac=login&do=agent_login&i={$_W['uniacid']}" target="_blank">{$_W['siteroot']}web/cityagent.php?p=user&ac=login&do=agent_login&i={$_W['uniacid']}</a>
</div>
<div class="filter-action">
<a href="{php echo web_url('area/areaagent/agentEdit')}" class="btn btn-primary">添加代理</a>
<!-- <div class="pull-right"><a href="{php echo web_url('area/areaagent/agentImport')}" data-toggle='ajaxModal' class="btn btn-success">一键导入代理</a></div>-->
</div>
<div class="filter-list">
<form action="" method="get" class="form-horizontal" role="form">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="{MODULE_NAME}" />
<input type="hidden" name="p" value="area" />
<input type="hidden" name="ac" value="areaagent" />
<input type="hidden" name="do" value="agentIndex" />
<input type="hidden" name="status" value="{$_GPC['status']}" />
<div class="form-group">
<label class="col-sm-2 control-label">代理状态</label>
<div class="col-sm-9">
<div class="btn-group">
<a href="{php echo wl_filter_url('status:0');}" class="btn {if intval($_GPC['status']) == 0}btn-primary{else}btn-default{/if}">不限</a>
<a href="{php echo wl_filter_url('status:1');}" class="btn {if $_GPC['status'] == 1}btn-primary{else}btn-default{/if}">启用中</a>
<a href="{php echo wl_filter_url('status:2');}" class="btn {if $_GPC['status'] == 2}btn-primary{else}btn-default{/if}">禁用中</a>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">代理筛选</label>
<div class="col-sm-9">
<input type="text" name="agentname" class="form-control" value="{$_GPC['agentname']}" placeholder="输入代理名称、联系人或者手机号" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<button class="btn btn-primary">筛选</button>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th style="width:10px;text-align:center;"><input type="checkbox" /></th>
<th style="width:100px;text-align:center;">代理名称</th>
<th style="width:100px;text-align:center;">联系人</th>
<th style="width:100px; text-align:center;">代理分组</th>
<th style="width:150px; text-align:center;">代理时间</th>
<th style="width:60px; text-align:center">是否到期</th>
<th style="width:60px; text-align:center">是否启用</th>
<th style="width:200px; text-align:center">操作</th>
</tr>
</thead>
<tbody>
{loop $agents $agent}
<tr>
<td class="text-center">
<input type="checkbox" value="{$agent['id']}" name="agentsid" />
</td>
<td class="text-center">
{$agent['agentname']}
</td>
<td class="text-center">
{$agent['realname']}<br />{$agent['mobile']}
</td>
<td class="text-center">
<label class='label'>{$agent['groupname']}</label>
</td>
<td class="text-center">
{php echo date('Y-m-d',$agent['starttime'])}至{php echo date('Y-m-d',$agent['endtime'])}
</td>
<td class="text-center">
{if $agent['endtime'] < time()}<label class='label label-danger'>到期</label>{else}<label class='label label-success'>未到期</label>{/if}
</td>
<td class="text-center">
{if $agent['status']==1}<label class='label label-success'>启用</label>{else}<label class='label label-default'>禁用</label>{/if}
</td>
<td class="text-center" style="text-align: center;">
<a class="btn btn-default btn-sm" href="{php echo web_url('area/areaagent/agentEdit', array('id' => $agent['id']));}" title="编辑">编辑</a>
<a class="btn btn-success btn-sm" href="{php echo web_url('area/areaagent/agentManage', array('id' => $agent['id']));}" target="_blank" title="管理">管理</a>
<!--<a class="btn btn-danger btn-sm" href="{php echo web_url('area/areaagent/deletearea', array('id' => $agent['id']));}" data-toggle="ajaxRemove" data-confirm="删除代理会导致代理下商户和商品活动无法使用,确定要删除吗?" title="删除">删除</a>-->
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
<button class="btn btn-default" type="button" data-toggle='batch-remove' data-confirm="删除代理会导致代理下商户和商品活动无法使用,确定要删除吗?" data-href="{php echo web_url('area/areaagent/agentDel')}">删除代理</button>
<button class="btn btn-default" type="button" data-toggle='batch' data-confirm="确定启用当前选中的所有代理商?" data-href="{php echo web_url('area/areaagent/changeStatus',['status'=>1])}">批量启用</button>
<button class="btn btn-default" type="button" data-toggle='batch' data-confirm="确定禁用当前选中的所有代理商?" data-href="{php echo web_url('area/areaagent/changeStatus',['status'=>0])}">批量禁用</button>
</div>
<div class="pull-right">
{$pager}
</div>
</div>
</div>
</div>
{php include wl_template('common/footer');}

53
addons/weliam_smartcity/plugin/area/sys/view/default/area/areagroup.html

@ -0,0 +1,53 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="#">分组列表</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-action">
<a href="{php echo web_url('area/hotarea/groupedit')}" class="btn btn-primary">添加分组</a>
</div>
</div>
<div class="app-table-list">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th style="width:100px;text-align:center;">ID</th>
<th style="width:100px;text-align:center;">名称</th>
<th style="width:100px; text-align:center;">排序</th>
<th style="width:200px; text-align:center">操作</th>
</tr>
</thead>
<tbody>
{loop $lists $list}
<tr>
<td class="text-center">
{$list['id']}
</td>
<td class="text-center">
{$list['name']}
</td>
<td class="text-center">
<label class='label'>{$list['sort']}</label>
</td>
<td class="text-center" style="text-align: center;">
<a class="btn btn-default sm" href="{php echo web_url('area/hotarea/groupedit', array('id' => $list['id']));}">编辑</a> -
<a class="btn btn-danger sm" href="{php echo web_url('area/hotarea/groupdel', array('id' => $list['id']));}" data-toggle="ajaxRemove" data-confirm="确定要删除地区分组吗?">删除</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
</div>
<div class="pull-right">
{$pager}
</div>
</div>
</div>
</div>
{php include wl_template('common/footer');}

36
addons/weliam_smartcity/plugin/area/sys/view/default/area/areagroupedit.html

@ -0,0 +1,36 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li><a href="{php echo web_url('area/hotarea/group');}">地区分组</a></li>
<li class="active"><a href="{php echo web_url('area/hotarea/groupedit');}">添加分组</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form class="form-horizontal form form-validate" action="" method="post" id="form1">
<div class="panel panel-default">
<div class="panel-heading">地区分组</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">名称</label>
<div class="col-sm-9">
<input type="text" class="form-control" placeholder="" name="name" value="{$area['name']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">排序</label>
<div class="col-sm-9">
<input type="text" class="form-control" placeholder="" name="sort" value="{$area['sort']}" />
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<button type="submit" class="btn btn-primary min-width" name="submit" value="提交">提交</button>
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

96
addons/weliam_smartcity/plugin/area/sys/view/default/area/areasetting.html

@ -0,0 +1,96 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a href="#tab_share">代理设置</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<div class="panel-heading">代理设置</div>
<div class="tab-content">
<div class="form-group">
<label class="col-sm-2 control-label">地区定位方式</label>
<div class="col-sm-9">
<label class="radio radio-success radio-inline" onclick="$('#noagentarea').hide();">
<input type="radio" name="data[location]" value="0" {if intval($settings['location']) == 0 || empty($settings['location'])}checked="checked"{/if}>城市定位
</label>
<label class="radio-inline" onclick="$('#noagentarea').show();">
<input type="radio" name="data[location]" value="1" {if intval($settings['location']) == 1}checked="checked"{/if}>精确定位
</label>
<span class="help-block">系统默认使用城市定位,精确定位会定位到用户当前位置,并根据用户所在位置加载代理数据</span>
</div>
</div>
<div id="noagentarea" {if intval($settings['location']) != 1}style="display: none"{/if}>
<div class="form-group">
<label class="col-sm-2 control-label">未开通地区</label>
<div class="col-sm-9">
<label class="radio radio-success radio-inline">
<input type="radio" name="data[datashow]" value="0" {if intval($settings['datashow']) == 0 || empty($settings['datashow'])}checked="checked"{/if}>加载总后台数据
</label>
<label class="radio-inline">
<input type="radio" name="data[datashow]" value="1" {if intval($settings['datashow']) == 1}checked="checked"{/if}>显示加盟申请
</label>
<label class="radio-inline">
<input type="radio" name="data[datashow]" value="2" {if intval($settings['datashow']) == 2}checked="checked"{/if}>显示暂未开通
</label>
<label class="radio-inline">
<input type="radio" name="data[datashow]" value="3" {if intval($settings['datashow']) == 3}checked="checked"{/if}>默认代理地区
</label>
</div>
</div>
<div class="form-group {if (($settings['datashow'] != 1 && $settings['datashow'] != 2) || $settings['location'] != 1)}hide{/if}" id="showImg">
<label class="col-sm-2 control-label">显示图片</label>
<div class="col-sm-9">
{php echo attachment_select('data[show_img]',$settings['show_img']);}
<div class="help-block">不上传图片则使用默认图片。推荐图片比例:500*500
</div>
</div>
</div>
</div>
<div class="form-group" >
<label class="col-sm-2 control-label">默认代理</label>
<div class="col-sm-9">
<select name="data[defaultAid]" style="width: 100%;">
<option value="0" {if $settings['defaultAid'] == 0} selected="selected" {/if} >总后台</option>
{loop $arealist $area}
<option value="{$area['id']}" {if $settings['defaultAid'] == $area['id']} selected="selected" {/if} >{$area['agentname']}</option>
{/loop}
</select>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
<script>
$(function () {
window.optionchanged = false;
$('#myTab a').click(function (e) {
e.preventDefault();//阻止a链接的跳转行为
$(this).tab('show');//显示当前选中的链接及关联的content
})
});
//改变地区定位方式
$(document).on('click',"[name='data[location]']",function () {
let status = $(this).val(),
datashow = $("[name='data[datashow]']:checked").val();
if(status == 1 && datashow != 0) $("#showImg").removeClass('hide');
else $("#showImg").addClass('hide');
})
//改变未开通地区显示类型
$(document).on('click',"[name='data[datashow]']",function () {
let status = $(this).val();
if(status == 1 || status == 2){
$("#showImg").removeClass('hide');
}else{
$("#showImg").addClass('hide');
}
})
</script>
{php include wl_template('common/footer');}

130
addons/weliam_smartcity/plugin/area/sys/view/default/area/copydata.html

@ -0,0 +1,130 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a href="#tab_basic">复制数据</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate" id="setting-form">
<div class="panel panel-default">
<div class="panel-heading">复制数据</div>
<div class="panel-body">
<div class="tab-content">
<div class="alert alert-info">
<b>注意:</b>
<p>1.基础设置项包括首页栏中的插件管理,脚部栏以及各个插件的基础设置。</p>
<p>2.该代理已有的基础设置项如果与模板代理设置项冲突,将会被<span style="color: red;">覆盖</span></p>
<p>3.商户分类,拼团商品分类和掌上信息分类,广告,幻灯片,公告等<span style="color: red;">请注意选择同步方式</span></p>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">模板代理</label>
<div class="col-sm-9">
<select name ='expressid' class="form-control select2">
<option value="0">总后台</option>
{loop $agents $ee}
<option value="{$ee['id']}">{$ee['agentname']}</option>
{/loop}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">目标代理</label>
<div class="col-sm-9">
<select name ='passiveid[]' class="form-control select2" multiple="multiple">
<option value="0">总后台</option>
{loop $agents $pp}
<option value="{$pp['id']}">{$pp['agentname']}</option>
{/loop}
</select>
<span class="help-block" style="color: red;">不选择目标代理将会同步到其他所有代理,代理过多时可能导致服务器超时,请谨慎使用。</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">同步方式</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" value="0" name="copystatus" checked="checked" > 添加
</label>
<label class="radio-inline">
<input type="radio" value="1" name="copystatus"> 覆盖
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">同步内容</label>
<div class="col-sm-9">
<label class="checkbox-inline">
<input type="checkbox" value="base" name="synchr[]" /> 基础设置
</label>
<label class="checkbox-inline">
<input type="checkbox" value="merce" name="synchr[]" /> 商户分类
</label>
<label class="checkbox-inline">
<input type="checkbox" value="fight" name="synchr[]" /> 拼团商品分类
</label>
{if p('rush')}
<label class="checkbox-inline">
<input type="checkbox" value="rush_class" name="synchr[]" /> 抢购商品分类
</label>
{/if}
{if p('groupon')}
<label class="checkbox-inline">
<input type="checkbox" value="group_class" name="synchr[]" /> 团购商品分类
</label>
{/if}
{if p('bargain')}
<label class="checkbox-inline">
<input type="checkbox" value="bargain_class" name="synchr[]" /> 砍价商品分类
</label>
{/if}
{if p('pocket')}
<label class="checkbox-inline">
<input type="checkbox" value="pocket" name="synchr[]" /> 同城帖子分类
</label>
{/if}
{if p('citycard')}
<label class="checkbox-inline">
<input type="checkbox" value="citycard" name="synchr[]" /> 同城名片数据
</label>
{/if}
{if uniacid_p('yellowpage')}
<label class="checkbox-inline">
<input type="checkbox" value="yellowpage" name="synchr[]" /> 黄页114分类
</label>
{/if}
<label class="checkbox-inline">
<input type="checkbox" value="notice" name="synchr[]" /> 公告
</label>
<label class="checkbox-inline">
<input type="checkbox" value="adv" name="synchr[]" /> 幻灯片
</label>
<label class="checkbox-inline">
<input type="checkbox" value="nav" name="synchr[]" /> 导航栏
</label>
<label class="checkbox-inline">
<input type="checkbox" value="banner" name="synchr[]" /> 广告栏
</label>
<label class="checkbox-inline">
<input type="checkbox" value="cube" name="synchr[]" /> 商品魔方
</label>
<label class="checkbox-inline">
<input type="checkbox" value="selectCard" name="synchr[]" /> 选项卡
</label>
<label class="checkbox-inline">
<input type="checkbox" value="flootMenu" name="synchr[]" /> 底部菜单
</label>
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

57
addons/weliam_smartcity/plugin/area/sys/view/default/area/customedit.html

@ -0,0 +1,57 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li><a href="{php echo web_url('area/custom/index')}">自定义地区</a></li>
{if !empty($_GPC['id'])}
<li class="active"><a href="#">编辑地区</a></li>
{else}
<li {if empty($_GPC['id'])}class="active"{/if}><a href="{php echo web_url('area/custom/edit')}">添加地区</a></li>
{/if}
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate" id="form1">
<div class="panel panel-default" id="step1">
<div class="panel-heading">
地区管理
</div>
<div class="panel-body">
{if !empty($_GPC[parentid])}
<div class="form-group">
<label class="col-sm-2 control-label">上级地区</label>
<div class="col-sm-9">
<input type="text" name="pidname" readonly="true" class="form-control" value="{$pidname}" autocomplete="off">
</div>
</div>
{/if}
<div class="form-group">
<label class="col-sm-2 control-label">地区名称<span class="must-fill">*</span></label>
<div class="col-sm-9">
<input type="text" name="name" required class="form-control" value="{$category['name']}" autocomplete="off">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否开启</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name='visible' value='2' {if $category['visible']==2 || empty($category['visible'])}checked{/if}>开启
</label>
<label class="radio-inline">
<input type="radio" name='visible' value='1' {if $category['visible']==1}checked{/if}>关闭
</label>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" lay-submit value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
<input type="hidden" name="parentid" value="{$_GPC[parentid]}" />
<input type="hidden" name="id" value="{$_GPC[id]}" />
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

356
addons/weliam_smartcity/plugin/area/sys/view/default/area/diyArea.html

@ -0,0 +1,356 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="{php echo web_url('area/custom/index')}">自定义地区</a></li>
</ul>
<style>
td>i{cursor:pointer; display:inline-block; width:100%; height:100%; color:#428bca;}
.category-caret{display:inline-block; width:20px; margin: 0 10px; text-align:center; cursor:pointer; color:#d9534f;}
.add.add_level0{cursor:pointer;}
.scrollLoading{border-radius: 50px;}
.areaNameStyle{display:block;text-align:left;float:left;}
.lineheight30{line-height:30px}
.provinceAreaName{height:30px;line-height:30px;width:180px;}
.provinceAreaState{display: block;width: 30px;float: left;text-align: center;cursor: pointer;}
.cityAreaName{padding-left:50px;height:30px;line-height:30px;background:url('./resource/images/bg_repno.gif') no-repeat -245px -545px;width:150px;position: relative;margin-left:70px;}
.cityAreaState{position: absolute;left: -30px;width: 30px;text-align: center;cursor: pointer;}
.districtAreaName{padding-left:50px;height:30px;line-height:30px;background:url('./resource/images/bg_repno.gif') no-repeat -245px -545px;width:150px;margin-left: 120px;position: relative;}
.districtAreaState{position: absolute;left: -30px;width: 30px;text-align: center;cursor: pointer;}
.townAreaName{padding-left:50px;height:30px;line-height:30px;background:url('./resource/images/bg_repno.gif') no-repeat -245px -545px;margin-left: 170px;}
.glyphicon.glyphicon-chevron-up {color:#CCC;}
.glyphicon.glyphicon-chevron-down {color:#ff0000;;}
</style>
<div class="app-content">
<div class="app-filter">
<div class="filter-action">
<a href="{php echo web_url('area/custom/edit',array('parentid'=>0,'level'=>1))}" class="btn btn-primary">添加地区</a>
</div>
</div>
<div class="app-table-list">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th class="text-center" width="50%">地区名称</th>
<th class="text-center" width="10%">地区ID</th>
<th class="text-center" width="10%">地区类型</th>
<th class="text-center" width="10%">开启状态</th>
<th class="text-center" width="15%">操作</th>
</tr>
</thead>
<tbody id="tableDody">
{loop $categorys $category}
<tr class="js-collpase js-child-category">
<td class="text-left" style="display: flex;">
<div class="provinceAreaName">
<span class="provinceAreaState" areaid="{$category['id']}" state="1" ><i class="glyphicon glyphicon-chevron-up"></i></span>
<span class="areaNameStyle">{$category['name']}</span>
</div>
<div>
<span class="areaNameStyle">
<a href="{php echo web_url('area/custom/edit',array('parentid'=>$category['id'],'level'=>2))}" class="add add_level1" title="添加子分类" >
<i class="fa fa-plus-circle"></i> 添加子地区
</a>
</span>
</div>
</td>
<td class="text-center">
<label class='label label-warning'>{$category['id']}</label>
</td>
<td class="text-center">
{if $category['displayorder'] == 0}
<label class='label label-success'>系统</label>
{else}
<label class="label label-warning">自定义</label>
{/if}
</td>
<td class="text-center">
{if $category['visible'] == 2}
<label class='label label-success'>开启</label>
{else}
<label class='label label-default'>关闭</label>
{/if}
</td>
<td class="text-center" style="position:relative;">
{if $_W['isfounder']}
<a href="{php echo web_url('area/custom/edit',array('id'=>$category['id'],'parentid'=>$category['pid']))}" class="btn btn-default btn-sm" data-toggle="tooltip" data-placement="top" title="修改">
编辑
</a>
-
<a href="{php echo web_url('area/custom/delete',array('id'=>$category['id']))}"class="btn btn-default btn-sm" data-toggle="ajaxRemove" data-confirm="确认删除当前地区吗?">
删除
</a>
{else}
<a href="javascript:;">无操作权限</a>
{/if}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
</div>
<script>
var showicon = "glyphicon glyphicon-chevron-up";
var hideicon = "glyphicon glyphicon-chevron-down";
$(function () {
$("#tableDody .provinceAreaState").click();
});
/**
* 点击隐藏/显示 当前省级下的所有区域
*/
$("#tableDody").on("click",".provinceAreaState",function () {
var id = $(this).attr("areaid");
var state = $(this).attr("state");
if(state == 1){
$("[provinceid='"+id+"']").hide();
//更换状态值
$(this).attr("state",0);
$("[provinceid='"+id+"']").contents("td").contents("div").contents(".cityAreaState").attr("state",0);
$("[provinceid='"+id+"']").contents("td").contents("div").contents(".districtAreaState").attr("state",0);
//更换图标
$("[provinceid='"+id+"']").contents("td").contents("div").contents(".cityAreaState").contents("i").attr('class',hideicon);
$("[provinceid='"+id+"']").contents("td").contents("div").contents(".districtAreaState").contents("i").attr('class',hideicon);
$(this).contents("i").attr('class',hideicon);
}else{
//判断是否存在内容 不存在获取内容 市区等级 2
var len = $("[provinceid='"+id+"'][level='2']").length;
if(len <= 0){
getAreaInfo(id,2);
}
//显示内容
$("[provinceid='"+id+"'][level='2']").show();
$(this).attr("state",1);
//更换图标
$(this).contents("i").attr('class',showicon);
}
});
/**
* 点击隐藏/显示 当前市级下的所有区域
*/
$("#tableDody").on("click",".cityAreaState",function () {
var id = $(this).attr("areaid");
var state = $(this).attr("state");
if(state == 1){
$("[cityid='"+id+"']").hide();
$(this).attr("state",0);
$("[provinceid='"+id+"']").contents("td").contents("div").contents(".districtAreaState").attr("state",0);
//更换图标
$("[provinceid='"+id+"']").contents("td").contents("div").contents(".districtAreaState").contents("i").attr('class',hideicon);
$(this).contents("i").attr('class',hideicon);
}else{
//判断是否存在内容 不存在获取内容 区/县等级 3
var len = $("[cityid='"+id+"'][level='3']").length;
if(len <= 0){
getAreaInfo(id,3);
}
//显示内容
$("[cityid='"+id+"'][level='3']").show();
$(this).attr("state",1);
//更换图标
$(this).contents("i").attr('class',showicon);
}
});
/**
* 点击隐藏/显示 当前区/县级下的所有区域
*/
$("#tableDody").on("click",".districtAreaState",function () {
var id = $(this).attr("areaid");
var state = $(this).attr("state");
if(state == 1){
$("[districtid='"+id+"']").hide();
$(this).attr("state",0);
//更换图标
$(this).contents("i").attr('class',hideicon);
}else{
//判断是否存在内容 不存在获取内容 镇/乡等级 4
var len = $("[districtid='"+id+"'][level='4']").length;
if(len <= 0){
getAreaInfo(id,4);
}
//显示内容
$("[districtid='"+id+"'][level='4']").show();
$(this).attr("state",1);
//更换图标
$(this).contents("i").attr('class',showicon);
}
});
var exitUrl = "{php echo web_url('area/custom/edit')}";//添加子地区 编辑
var delUrl = "{php echo web_url('area/custom/delete')}";//删除
/**
* 获取下级地址信息
* @param id
* @param lv
*/
function getAreaInfo(id,lv) {
var url = "{php echo web_url('area/custom/getAreaInfo')}";
var position = $("[areaid='"+id+"']").parents("tr");
$.ajax({
url:url,
data:{id:id,lv:lv},
dataType:"json",
ansyn:false,
success:function (res) {
var data = res.data;
if(lv == 2){
//建立市级区域
appendCity(data,position);
}else if(lv == 3){
//建立区/县级区域
appendDistrict(data,position);
}else if(lv == 4){
//建立镇/乡级区域
appendTown(data,position);
}
}
});
}
/**
* 建立市级区域
*/
function appendCity(data,position) {
var html = '';
$.each(data,function (k,v) {
html += ' <tr class="js-collpase js-child-category" level="2" provinceid="'+v['pid']+'" pid="'+v['pid']+'">\n' +
' <td class="text-left" style="display: flex;">\n' +
' <div class="cityAreaName">\n' +
' <span class="cityAreaState" areaid="'+v['id']+'" state="0"><i class="'+hideicon+'"></i></span>\n' +
' <span class="areaNameStyle">'+v['name']+'</span>\n' +
' </div>\n' +
' <div>\n' +
' <span class="lineheight30 areaNameStyle">\n' +
' <a href="'+exitUrl+'parentid='+v['id']+'&level=3" class="add add_level1" title="添加子分类" >\n' +
' <i class="fa fa-plus-circle"></i> 添加子地区\n' +
' </a>\n'+
' </span>\n' +
' </div>\n' +
' </td>\n' +
' <td class="text-center">\n' +
' <label class=\'label label-default\'>'+v['id']+'</label>\n' +
' </td>\n' +
' <td class="text-center">\n' +
getAreaType(v['displayorder'])+
' </td>\n' +
' <td class="text-center">\n' +
getAreaState(v['visible'])+
' </td>\n' +
' <td class="text-center"; style="position:relative;">\n' +
getOperationButton(v['id'],v['pid'],v['displayorder'])+
' </td>\n' +
'</tr>\n' +
'';
});
position.after(html);
}
/**
* 建立区/县级区域
*/
function appendDistrict(data,position) {
var provinceid = position.attr("provinceid");
var html = '';
$.each(data,function (k,v) {
html += '<tr class="js-collpase js-child-category" level="3" provinceid="'+provinceid+'" cityid="'+v['pid']+'" pid="'+v['pid']+'">\n' +
' <td class="text-left" style="display: flex;">\n' +
' <div class="districtAreaName">\n' +
' <span class="districtAreaState" areaid="'+v['id']+'" state="0"><i class="'+hideicon+'"></i></span>\n' +
' <span class="areaNameStyle">'+v['name']+'</span>\n' +
' </div>\n' +
' <div >\n' +
' <span class="areaNameStyle lineheight30">\n' +
' <a href="'+exitUrl+'parentid='+v['id']+'&level=4" class="add add_level1" title="添加子分类" >\n' +
' <i class="fa fa-plus-circle"></i> 添加子地区\n' +
' </a>\n' +
' </span>\n' +
' </div>\n' +
' </td>\n' +
' <td class="text-center">\n' +
' <label class=\'label label-default\'>'+v['id']+'</label>\n' +
' </td>\n' +
' <td class="text-center">\n' +
getAreaType(v['displayorder'])+
' </td>\n' +
' <td class="text-center">\n' +
getAreaState(v['visible'])+
' </td>\n' +
' <td class="text-center"; style="position:relative;">\n' +
getOperationButton(v['id'],v['pid'],v['displayorder'])+
' </td>\n' +
'</tr>\n' +
'';
});
position.after(html);
}
/**
* 建立镇/乡级区域
*/
function appendTown(data,position) {
var provinceid = position.attr("provinceid");
var cityid = position.attr("cityid");
var html = '';
$.each(data,function (k,v) {
html += '<tr class="js-collpase js-child-category" level="4" provinceid="'+provinceid+'" cityid="'+cityid+'" districtid="'+v['pid']+'" pid="'+v['pid']+'">\n' +
' <td class="text-left">\n' +
' <div class="townAreaName">'+v['name']+'</div>\n' +
' </td>\n' +
' <td class="text-center">\n' +
' <label class=\'label label-default\'>'+v['id']+'</label>\n' +
' </td>\n' +
' <td class="text-center">\n' +
getAreaType(v['displayorder'])+
' </td>\n' +
' <td class="text-center">\n' +
getAreaState(v['visible'])+
' </td>\n' +
' <td class="text-center"; style="position:relative;">\n' +
getOperationButton(v['id'],v['pid'],v['displayorder'])+
' </td>\n' +
'</tr>\n' +
'';
});
position.after(html);
}
/**
* 获取地区开启状态
* @param state
* @returns {string}
*/
function getAreaState(state) {
var html = "<label class='label label-success'>开启</label>";
if(state == 1){
html = "<label class='label label-default'>关闭</label>";
}
return html;
}
/**
* 获取地区类型
* @param state
* @returns {string}
*/
function getAreaType(state) {
var html = "<label class='label label-warning'>自定义</label>";
if(state == 0){
html = "<label class='label label-success'>系统</label>";
}
return html;
}
/**
* 获取操作按钮
* @param id 区域id
* @param pid 区域pid(上级区域的id)
* @param cid cid(公众号id 为0级系统/公共区域)
*/
function getOperationButton(id,pid,cid) {
html = ' <a href="'+exitUrl+'id='+id+'&parentid='+pid+'" class="btn btn-default btn-sm" data-toggle="tooltip" data-placement="top" title="修改">\n' +
'编辑\n' +
'</a>\n' +
'-\n' +
'<a href="'+delUrl+'id='+id+'" class="btn btn-default btn-sm" data-toggle="ajaxRemove" data-confirm="确认删除当前地区吗?">\n' +
' 删除\n' +
'</a>';
return html;
}
</script>
{php include wl_template('common/footer');}

70
addons/weliam_smartcity/plugin/area/sys/view/default/area/groupEdit.html

@ -0,0 +1,70 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li ><a href="{php echo web_url('area/areaagent/groupIndex')}">分组列表</a></li>
{if !empty($category['id'])}
<li class="active"><a href="#">编辑分组</a></li>
{else}
<li {if empty($category['id'])}class="active"{/if}><a href="{php echo web_url('area/areaagent/groupEdit')}">添加分组</a></li>
{/if}
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<input type="hidden" name="id" value="{$category['id']}" />
<div class="panel panel-default">
<div class="panel-heading">
分组设置
</div>
<div class="panel-body">
<div class="form-group">
<label class="col-sm-2 control-label">分组名称<span class="must-fill">*</span></label>
<div class="col-sm-9">
<input type="text" name="name" required placeholder="请输入分组名称" class="form-control" value="{$category['name']}">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">开放插件</label>
<div class="col-sm-9">
{loop $plugins $plugin}
<label class="checkbox checkbox-inline">
<input type="checkbox" name="plugins[]" value="{$plugin['ident']}" {if in_array($plugin['ident'], $category['package'])}checked{/if}/>{$plugin['name']}
</label>
{/loop}
<span class="help-block">不勾选则默认包含所有插件</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否默认</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="isdefault" value="1" {if $category['isdefault'] == 1}checked{/if}>
</label>
<label class="radio-inline">
<input type="radio" name="isdefault" value="0" {if $category['isdefault'] == 0 || empty($category['isdefault'])}checked{/if}>
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否开启</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="enabled" value="1" {if $category['enabled'] == 1}checked{/if}>
</label>
<label class="radio-inline">
<input type="radio" name="enabled" value="0" {if $category['enabled'] == 0 || empty($category['enabled'])}checked{/if}>
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" lay-submit value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

63
addons/weliam_smartcity/plugin/area/sys/view/default/area/groupIndex.html

@ -0,0 +1,63 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="#">分组列表</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-action">
<a href="{php echo web_url('area/areaagent/groupEdit')}" class="btn btn-primary">添加分组</a>
</div>
</div>
<div class="app-table-list">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>分组名称</th>
<th>应用权限</th>
<th>是否默认</th>
<th>是否开启</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{loop $groups $pcate}
<tr>
<td>
{$pcate['name']}
</td>
<td>
{if !empty($pcate['package'])}
{loop $pcate['package'] $plugin}
{if $plugins[$plugin]['name']}{$plugins[$plugin]['name']};{/if}
{/loop}
{else}
包含所有插件
{/if}
</td>
<td>
{if $pcate['isdefault'] == 1}<label class='label label-success'></label>{else}<label class='label label-default'></label>{/if}
</td>
<td>
{if $pcate['enabled'] == 1}<label class='label label-success'>开启</label>{else}<label class='label label-default'>关闭</label>{/if}
</td>
<td>
<a href="{php echo web_url('area/areaagent/groupEdit', array('id' => $pcate['id']));}">编辑</a> -
<a href="{php echo web_url('area/areaagent/groupDelete', array('id' => $pcate['id']));}" data-toggle="ajaxRemove" data-confirm="确定要删除当前分组吗?">删除</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
</div>
<div class="pull-right">
{$pager}
</div>
</div>
</div>
</div>
{php include wl_template('common/footer');}

51
addons/weliam_smartcity/plugin/area/sys/view/default/area/movedata.html

@ -0,0 +1,51 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a href="#tab_basic">迁移数据</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<div class="panel panel-default">
<div class="panel-heading">迁移数据</div>
<div class="panel-body">
<div class="alert alert-info">
<b>注意:</b>
<p>1.基础设置项包括首页栏中的插件管理,脚部栏以及各个插件的基础设置。</p>
<p>2.该代理已有的基础设置项如果与模板代理设置项冲突,将会被<span style="color: red;">覆盖</span></p>
<p>3.商户分类,拼团商品分类和掌上信息分类,广告,幻灯片,公告等<span style="color: red;">请注意选择同步方式</span></p>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">迁移代理</label>
<div class="col-sm-9">
<select name="expressid" class="form-control select2">
<option value="0">总后台</option>
{loop $agents $ee}
<option value="{$ee['id']}">{$ee['agentname']}</option>
{/loop}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">目标代理</label>
<div class="col-sm-9">
<select name="passiveid" class="form-control select2">
<option value="0">总后台</option>
{loop $agents $pp}
<option value="{$pp['id']}">{$pp['agentname']}</option>
{/loop}
</select>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

84
addons/weliam_smartcity/plugin/area/sys/view/default/area/opareaedit.html

@ -0,0 +1,84 @@
<script type="text/javascript" src="{URL_WEB_JS}diyarea.js"></script>
<style>
.modal-dialog{
width: 1120px;
}
</style>
<form action="" method="post" class="form-horizontal form form-validate">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="{MODULE_NAME}" />
<input type="hidden" name="p" value="area" />
<input type="hidden" name="ac" value="hotarea" />
<input type="hidden" name="do" value="opareaedit" />
<input type='hidden' name='id' value="{$id}" />
<input type="hidden" name="token" value="{$_W['token']}" />
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button data-dismiss="modal" class="close" type="button">×</button>
<h4 class="modal-title">修改地区</h4>
</div>
<div class="modal-body">
<!--级别选择-->
<div class="form-group">
<label class="col-sm-2 control-label">地区等级</label>
<div class="col-sm-9">
<label class="radio-inline" onclick="$('#tpl-district').hide();$('#tpl-city').hide();$('#tpl-town').hide();">
<input type="radio" value="1" name="districtslevel" {if $area['level']==1}checked{/if}>一级
</label>
<label class="radio-inline" onclick="$('#tpl-district').hide();$('#tpl-city').show();$('#tpl-town').hide();">
<input type="radio" value="2" name="districtslevel" {if $area['level']==2 || empty($area['level'])}checked{/if}>二级
</label>
<label class="radio-inline" onclick="$('#tpl-district').show();$('#tpl-city').show();$('#tpl-town').hide();">
<input type="radio" value="3" name="districtslevel" {if $area['level']==3}checked{/if}>三级
</label>
<label class="radio-inline" onclick="$('#tpl-district').show();$('#tpl-city').show();$('#tpl-town').show();">
<input type="radio" value="4" name="districtslevel" {if $area['level']==4}checked{/if}>四级
</label>
</div>
</div>
<!--区域选择-->
<div class="form-group">
<label class="col-sm-2 control-label">运营地区</label>
<div class="col-sm-9">
<div class="row row-fix js-address-selector selectArea">
<div class="col-md-3" id="tpl-province">
<select name="districts[province]" data-value="{$districts['province']}" level="1" class="form-control tpl-province changeArea">
{loop $province $item}
<option value="{$item['id']}" {if $item['id'] == $province_id}selected="selected"{/if}>{$item['name']}</option>
{/loop}
</select>
</div>
<div class="col-md-3" {if $area['level'] == 1}style="display: none;"{/if} id="tpl-city">
<select name="districts[city]" data-value="{$districts['city']}" level="2" class="form-control tpl-city changeArea">
{loop $city $item}
<option value="{$item['id']}" {if $item['id'] == $city_id}selected="selected"{/if}>{$item['name']}</option>
{/loop}
</select>
</div>
<div class="col-md-3" {if $area['level'] <= 2}style="display: none;"{/if} id="tpl-district">
<select name="districts[district]" data-value="{$districts['district']}" level="3" class="form-control tpl-district changeArea">
{loop $district $item}
<option value="{$item['id']}" {if $item['id'] == $district_id}selected="selected"{/if}>{$item['name']}</option>
{/loop}
</select>
</div>
<div class="col-md-3" {if $area['level'] <= 3}style="display: none;"{/if} id="tpl-town">
<select name="districts[town]" data-value="{$districts['town']}" level="4" class="form-control tpl-town changeArea">
{loop $town $item}
<option value="{$item['id']}" {if $item['id'] == $town_id}selected="selected"{/if}>{$item['name']}</option>
{/loop}
</select>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary btn-submit" type="submit">确认</button>
<button data-dismiss="modal" class="btn btn-default" type="button">取消</button>
</div>
</div>
</div>
</form>

118
addons/weliam_smartcity/plugin/area/sys/view/default/area/oparealist.html

@ -0,0 +1,118 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="#">运营地区列表</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-list">
<form action="./index.php" method="get" class="form-horizontal" role="form">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="{MODULE_NAME}" />
<input type="hidden" name="p" value="area" />
<input type="hidden" name="ac" value="hotarea" />
<input type="hidden" name="do" value="oparealist" />
<input type="hidden" name="statusflag" value="{$_GPC['statusflag']}" />
<input type="hidden" name="ishotflag" value="{$_GPC['ishotflag']}" />
<div class="form-group">
<label class="col-sm-2 control-label">是否开启</label>
<div class="col-sm-9">
<div class="btn-group">
<a href="{php echo filter_url('statusflag:0');}" class="btn {if intval($_GPC['statusflag']) == 0}btn-primary{else}btn-default{/if}">不限</a>
<a href="{php echo filter_url('statusflag:1');}" class="btn {if $_GPC['statusflag'] == 1}btn-primary{else}btn-default{/if}">开启</a>
<a href="{php echo filter_url('statusflag:2');}" class="btn {if $_GPC['statusflag'] == 2}btn-primary{else}btn-default{/if}">禁用</a>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否热门</label>
<div class="col-sm-9">
<div class="btn-group">
<a href="{php echo filter_url('ishotflag:0');}" class="btn {if intval($_GPC['ishotflag']) == 0}btn-primary{else}btn-default{/if}">不限</a>
<a href="{php echo filter_url('ishotflag:1');}" class="btn {if $_GPC['ishotflag'] == 1}btn-primary{else}btn-default{/if}">热门</a>
<a href="{php echo filter_url('ishotflag:2');}" class="btn {if $_GPC['ishotflag'] == 2}btn-primary{else}btn-default{/if}">普通</a>
</div>
</div>
</div>
<div class="form-group form-inline">
<label class="col-sm-2 control-label">地区搜索</label>
<div class="col-sm-9">
<select name="keywordtype" class="form-control">
<option value="0" {if $_GPC['keywordtype']==0}selected="selected"{/if}>请选择</option>
<option value="1" {if $_GPC['keywordtype']==1}selected="selected"{/if}>地区名称</option>
<option value="2" {if $_GPC['keywordtype']==2}selected="selected"{/if}>所属代理</option>
</select>
<input type="text" name="agentname" class="form-control" value="{$_GPC['agentname']}" placeholder="请输入关键字" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<button class="btn btn-primary">筛选</button>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
<form class="form form-horizontal form-validate" action="" method="post">
<input type="hidden" name="statusflag" value="{$_GPC['statusflag']}" />
<input type="hidden" name="ishotflag" value="{$_GPC['ishotflag']}" />
<input type="hidden" name="keywordtype" value="{$_GPC['keywordtype']}" />
<input type="hidden" name="agentname" value="{$_GPC['agentname']}" />
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th style="width:100px; text-align:center;">编码</th>
<th style="width:100px; text-align:center;">名称</th>
<th style="width:100px; text-align:center;">分组</th>
<th style="width:50px; text-align:center;">排序(数字越大越靠前)</th>
<th style="width:100px; text-align:center;">所属代理</th>
<th style="width:100px; text-align:center;">是否开启</th>
<th style="width:100px; text-align:center;">是否热门</th>
<th style="width:100px; text-align:center;">操作</th>
</tr>
</thead>
<tbody>
{loop $addresses $address}
<tr>
<td style="white-space: normal;" class="text-center">{if $address['areaid']}{$address['areaid']}{else}--{/if}</td>
<td class="text-center">{if $address['addressname']}{$address['addressname']}{else}请选择地区{/if}</td>
<td class="text-center">
<select name="group[{$address['id']}]" style="width: 100%;" class="select2">
<option value="0" {if empty($address['gid'])}selected="selected"{/if}>请选择地区分组</option>
{loop $remark_arr $row}
<option value="{$row['id']}" {if $address['gid'] == $row['id']}selected="selected"{/if}>{$row['name']}</option>
{/loop}
</select>
</td>
<td class="text-center">
<input type="number" min="0" class="form-control" value="{$address['sort']}" name="sort[{$address['id']}]" />
</td>
<td class="text-center">{$address['agentname']}</td>
<td class="text-center">
<input type="checkbox" class="js-switch" name="status[{$address['id']}]" {if $address['status'] == 1} checked="checked" {/if}>
</td>
<td class="text-center">
<input type="checkbox" class="js-switch" name="ishot[{$address['id']}]" {if $address['ishot'] == 1} checked="checked" {/if}>
</td>
<td class="text-center">
<a class="btn btn-success btn-sm" data-toggle="ajaxModal" href="{php echo web_url('area/hotarea/opareaedit', array('id'=>$address['id']))}">编辑地区</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
{$pager}
<div class="app-table-foot clearfix">
<div class="pull-left">
<input type="hidden" name="token" value="{$_W['token']}" />
<input name="submit" type="submit" class="btn btn-primary min-width" value="保存">
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

69
addons/weliam_smartcity/plugin/attestation/Attestation.mod.php

@ -0,0 +1,69 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Attestation {
/**
* Comment: 保证金缴纳回调
* Author: wlf
* Date: 2019/11/6 18:19
*/
static function payBondNotify($params){
global $_W;
Util::wl_log('notify', PATH_DATA . "attestation/data/", $params); //写入异步日志记录
$order_out = pdo_fetch("select * from" . tablename(PDO_NAME . 'attestation_money') . "where orderno='{$params['tid']}'");
$_W['uniacid'] = $order_out['uniacid'];
$data = array('status' => $params['result'] == 'success' ? 1 : 0);
$data['paytype'] = $params['type'];
if ($params['tag']['transaction_id']) $data['transid'] = $params['tag']['transaction_id'];
$data['paytime'] = TIMESTAMP;
pdo_update(PDO_NAME . 'attestation_money', $data, array('orderno' => $params['tid'])); //更新订单状态
//通知管理员
if($order_out['type'] == 1){
$type = '个人';
$member = pdo_getcolumn(PDO_NAME.'member',array('id'=>$order_out['mid']),'nickname');
$content = '认证人:['.$member.']';
}else{
$type = '商户';
$storename = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$order_out['storeid']),'storename');
$content = '商户:['.$storename.']';
}
$modelData = [
'first' => '您好,有一笔'.$type.'认证金已缴纳。',
'type' => '认证金缴纳' ,//业务类型
'content' => $content,//业务内容
'status' => '已缴纳' ,//处理结果
'time' => date("Y-m-d H:i:s",time()) ,//操作时间$store['createtime']
'remark' => '请尽快前往系统后台审核认证!'
];
TempModel::sendInit('service',-1,$modelData,$_W['source']);
}
/**
* Comment: 验证用户/商户认证情况
* Author: wlf
* Date: 2019/11/7 15:16
*/
static function checkAttestation($type,$id){
global $_W;
$set = Setting::wlsetting_read('attestation');
if($set['switch'] > 0){
if($type == 1){ //个人认证
$attestation = pdo_getall(PDO_NAME.'attestation_list',array('uniacid'=>$_W['uniacid'],'mid'=>$id,'status'=>1,'checkstatus'=>2,'type'=>1),array('id'),'','ID DESC');
$data['bondflag'] = pdo_getcolumn(PDO_NAME.'attestation_money',array('uniacid'=>$_W['uniacid'],'mid'=>$id,'status'=>1,'type'=>1),'id');
$data['attestation'] = $attestation[0]['id']?1:0;
}else{
$attestation = pdo_getall(PDO_NAME.'attestation_list',array('uniacid'=>$_W['uniacid'],'storeid'=>$id,'status'=>1,'type'=>2),array('checkstatus'),'','ID DESC');
$data['bondflag'] = pdo_getcolumn(PDO_NAME.'attestation_money',array('uniacid'=>$_W['uniacid'],'storeid'=>$id,'status'=>1,'type'=>2),'id');
$data['attestation'] = $attestation[0]['checkstatus']?$attestation[0]['checkstatus']:0;
}
$data['bondflag'] = $data['bondflag']?1:0;
}else{
$data = [];
}
return $data;
}
}

29
addons/weliam_smartcity/plugin/attestation/config.xml

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<name><![CDATA[认证中心]]></name>
<identifie><![CDATA[attestation]]></identifie>
<version><![CDATA[1.0.0]]></version>
<type><![CDATA[expand]]></type>
<description><![CDATA[认证中心]]></description>
<author><![CDATA[微连科技]]></author>
<url><![CDATA[http://www.weliam.cn/]]></url>
</application>
<setting>
<agent embed="true" />
<system embed="true" />
<task embed="false" />
</setting>
<agentmenu>
<menu title="认证中心" font="fa-inbox">
<entry title="认证管理" ac="attestation" do="attestationList" actions='["do",["attestation","attestationList"]]' iscover="true" />
</menu>
</agentmenu>
<systemmenu>
<menu title="认证中心" font="fa-inbox">
<entry title="认证管理" ac="attestation" do="attestationList" actions='["do",["attestation","attestationList"]]' iscover="true" />
<entry title="保证金管理" ac="attestation" do="bondList" actions='["do",["attestation","bondList"]]' />
<entry title="认证设置" ac="attestation" do="attestationSet" actions='["do",["attestation","attestationSet"]]' />
</menu>
</systemmenu>
</manifest>

BIN
addons/weliam_smartcity/plugin/attestation/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

469
addons/weliam_smartcity/plugin/attestation/sys/controller/attestation.ctrl.php

@ -0,0 +1,469 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Attestation_WeliamController {
public function attestationList() {
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$data = array();
$data['uniacid'] = $_W['uniacid'];
if($_W['aid'] > 0) {
$data['aid'] = $_W['aid'];
$data['type'] = 2;//代理商只能查看商户认证信息
}
//状态
if (!empty($_GPC['status'])) {
if ($_GPC['status'] == 1) {
$data['status'] = 1;
} else if ($_GPC['status'] == 2) {
$data['status'] = 0;
}
}
//审核状态
if (!empty($_GPC['checkstatus'])) {
$data['checkstatus'] = intval($_GPC['checkstatus']);
}
//搜索
if (!empty($_GPC['keyword'])) {
$keyword = $_GPC['keyword'];
if ($_GPC['keywordtype'] == 1) {
$params[':nickname'] = "%{$keyword}%";
$merchants = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_member') . "WHERE uniacid = {$_W['uniacid']} AND nickname LIKE :nickname", $params);
if ($merchants) {
$sids = "(";
foreach ($merchants as $key => $v) {
if ($key == 0) {
$sids .= $v['id'];
} else {
$sids .= "," . $v['id'];
}
}
$sids .= ")";
$data['mid#'] = $sids;
} else {
$data['mid#'] = "(0)";
}
} else if ($_GPC['keywordtype'] == 2) {
$data['mid@'] = intval($keyword);
}
}
//时间
if ($_GPC['time_limit'] && $_GPC['timetype']) {
$time_limit = $_GPC['time_limit'];
$starttime = strtotime($_GPC['time_limit']['start']);
$endtime = strtotime($_GPC['time_limit']['end']);
$data['createtime>'] = $starttime;
$data['createtime<'] = $endtime + 86399;
}
if (empty($starttime) || empty($endtime)) {
$starttime = strtotime('-1 month');
$endtime = time();
}
$list = Util::getNumData('*', PDO_NAME . 'attestation_list', $data, 'ID DESC', $pindex, $psize, 1);
$pager = $list[1];
$list = $list[0];
if (!empty($list)) {
foreach ($list as &$li) {
$li['pic'] = unserialize($li['pic']);
$member = pdo_get('wlmerchant_member', array('id' => $li['mid']), array('nickname', 'realname', 'mobile', 'avatar'));
$li['nickname'] = $member['nickname'];
$li['avatar'] = $member['avatar'];
$li['mobile'] = $member['mobile'];
if ($li['type'] == 1) {
$li['attestationname'] = $member['realname'];
} else {
$storeInfo = pdo_get(PDO_NAME . 'merchantdata' , ['id' => $li['storeid']] , ['storename','tel']);
$li['attestationname'] = $storeInfo['storename'];
$li['mobile'] = $storeInfo['tel'];
$li['moreinfo'] = unserialize($li['moreinfo']);
}
}
}
include wl_template('attestation/attestationList');
}
public function changeStatus() {
global $_W, $_GPC;
$id = $_GPC['id'] OR Commons::sRenderError('缺少参数,请刷新重试');
$status = $_GPC['status'] ?: 0;
$res = pdo_update(PDO_NAME . "attestation_list", ['status' => $status], ['id' => $id]);
if ($res) Commons::sRenderSuccess('修改成功');
else Commons::sRenderError('修改失败,请刷新重试!');
}
public function rejectreason(){
global $_W, $_GPC;
$id = $_GPC['id'] OR Commons::sRenderError('缺少id,请刷新重试');
$reason = $_GPC['reason'] OR Commons::sRenderError('请输入驳回原因');
$res = pdo_update(PDO_NAME . "attestation_list", ['checkstatus' => 3,'remake'=>$reason], ['id' => $id]);
$att = pdo_get(PDO_NAME . "attestation_list",array('id' => $id),array('type','subjectname','mid'));
if($att['type'] == 1){
$content = '用户['.$att['subjectname'].']认证';
$url = h5_url('pages/subPages/attestationCenter/index',array('rzType'=>1));
}else{
$content = '商户['.$att['subjectname'].']认证';
$url = h5_url('pages/subPages/attestationCenter/index',array('rzType'=>2));
}
if ($res){
//通知用户
$first = '您的认证审核已被驳回';
$type = '认证申请';
$status = '被驳回';
$remark = '驳回原因:'.$reason;
News::jobNotice($att['mid'],$first,$type,$content,$status,$remark,time(),$url);
Commons::sRenderSuccess('驳回成功');
} else{
Commons::sRenderError('驳回失败,请刷新重试!');
}
}
public function changeCheckStatus() {
global $_W, $_GPC;
$id = $_GPC['id'] OR Commons::sRenderError('缺少参数,请刷新重试');
$status = $_GPC['status'];
$res = pdo_update(PDO_NAME . "attestation_list", ['checkstatus' => $status], ['id' => $id]);
if ($res){
if($status == 2){ //通过审核
$att = pdo_get(PDO_NAME . "attestation_list",array('id' => $id),array('type','subjectname','mid'));
if($att['type'] == 1){
$content = '用户['.$att['subjectname'].']认证';
$url = h5_url('pages/subPages/attestationCenter/index',array('rzType'=>1));
}else{
$content = '商户['.$att['subjectname'].']认证';
$url = h5_url('pages/subPages/attestationCenter/index',array('rzType'=>2));
}
}
//通知用户
$first = '您的认证审核已通过';
$type = '认证申请';
$status = '已通过';
$remark = '点击查看认证信息';
News::jobNotice($att['mid'],$first,$type,$content,$status,$remark,time(),$url);
show_json(1, '修改成功');
}else{
show_json(0, '修改失败');
}
}
function allChange() {
global $_W, $_GPC;
$ids = $_GPC['ids'];
$status = $_GPC['status'];
foreach ($ids as $key => $id) {
if ($status != 4) {
pdo_update(PDO_NAME . "attestation_list", array('checkstatus' => $status), array('id' => $id));
} else {
pdo_delete(PDO_NAME . "attestation_list", array('id' => $id));
}
}
die(json_encode(array('errno' => 0, 'message' => '')));
}
function attestationSet() {
global $_W, $_GPC;
$base = Setting::wlsetting_read('attestation');
$base['type'] = unserialize($base['type']);
$diyform = pdo_getall('wlmerchant_diyform',array('uniacid' => $_W['uniacid'],'aid' => 0,'sid' => 0),array('id','title'));
if(Customized::init('distributionText') > 0){
$membermoney = unserialize($base['membermoneyarray']);
$storemoney = unserialize($base['storemoneyarray']);
}
if ($_W['ispost']) {
$base = $_GPC['base'];
$base['type'] = serialize($_GPC['type']);
$base['agreement'] = htmlspecialchars_decode($base['agreement']);
$base['bonddescription'] = htmlspecialchars_decode($base['bonddescription']);
$base['bondagreement'] = htmlspecialchars_decode($base['bondagreement']);
if(Customized::init('distributionText') > 0){
$membermoney = $_GPC['membermoney'];
if(empty($membermoney) && $base['memberstatus'] > 0){
show_json(0, '请设置个人保证金');
}
foreach ($membermoney as &$memm){
$memm = sprintf("%.2f",$memm);
$memm = $memm > 0 ? $memm : 1;
}
sort($membermoney);
$base['membermoneyarray'] = serialize($membermoney);
$storemoney = $_GPC['storemoney'];
if(empty($storemoney) && $base['storestatus'] > 0){
show_json(0, '请设置商家保证金');
}
foreach ($storemoney as &$semm){
$semm = sprintf("%.2f",$semm);
$semm = $semm > 0 ? $semm : 1;
}
sort($storemoney);
$base['storemoneyarray'] = serialize($storemoney);
}
$res = Setting::wlsetting_save($base, 'attestation');
if ($res) {
show_json(1);
} else {
show_json(0, '保存失败,请刷新重试');
}
}
include wl_template('attestation/attestationSet');
}
function bondList() {
global $_W, $_GPC;
$base = Setting::wlsetting_read('attestation');
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$data = array();
$data['uniacid'] = $_W['uniacid'];
//状态
if (!empty($_GPC['status'])) {
if ($_GPC['status'] == 1) {
$data['status'] = 1;
} else if ($_GPC['status'] == 2) {
$data['status'] = 0;
}
}
//搜索
if (!empty($_GPC['keyword'])) {
$keyword = $_GPC['keyword'];
if ($_GPC['keywordtype'] == 1) {
$params[':nickname'] = "%{$keyword}%";
$merchants = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_member') . "WHERE uniacid = {$_W['uniacid']} AND nickname LIKE :nickname", $params);
if ($merchants) {
$sids = "(";
foreach ($merchants as $key => $v) {
if ($key == 0) {
$sids .= $v['id'];
} else {
$sids .= "," . $v['id'];
}
}
$sids .= ")";
$data['mid#'] = $sids;
} else {
$data['mid#'] = "(0)";
}
} else if ($_GPC['keywordtype'] == 2) {
$data['mid@'] = intval($keyword);
}
}
//时间
if ($_GPC['time_limit'] && $_GPC['timetype']) {
$time_limit = $_GPC['time_limit'];
$starttime = strtotime($_GPC['time_limit']['start']);
$endtime = strtotime($_GPC['time_limit']['end']);
$data['createtime>'] = $starttime;
$data['createtime<'] = $endtime + 86399;
}
if (empty($starttime) || empty($endtime)) {
$starttime = strtotime('-1 month');
$endtime = time();
}
$list = Util::getNumData('*', PDO_NAME . 'attestation_money', $data, 'ID DESC', $pindex, $psize, 1);
$pager = $list[1];
$list = $list[0];
if (!empty($list)) {
foreach ($list as &$li) {
$li['pic'] = unserialize($li['pic']);
$member = pdo_get('wlmerchant_member', array('id' => $li['mid']), array('nickname', 'realname', 'mobile', 'avatar'));
$li['nickname'] = $member['nickname'];
$li['avatar'] = $member['avatar'];
$li['mobile'] = $member['mobile'];
if ($li['type'] == 1) {
$li['attestationname'] = $li['realname'];
} else {
$li['attestationname'] = pdo_getcolumn(PDO_NAME . 'merchantdata', array('id' => $li['storeid']), 'storename');
}
if ($base['refundstatus'] && $li['status'] == 1 && empty($li['refundflag'])) {
$day = intval($base['refundday']) ? intval($base['refundday']) : 0;
if ($li['paytime'] + $day * 86400 < time()) {
$li['refund'] = 1;
}
}
}
}
include wl_template('attestation/bondList');
}
function refundorder() {
global $_W, $_GPC;
$id = $_GPC['id'];
$order = pdo_get('wlmerchant_attestation_money', array('id' => $id));
$res = wlPay::refundMoney($id, 0, '认证保证金退款', 'attestation', 2);
if ($res['status']) {
$first = '您的保证金已经退还';
$type = '保证金退还';
$content = '认证保证金已退款:' . $order['money'] . '元';
$status = '已退还';
$remark = '有问题请联系管理员';
$time = time();
News::jobNotice($order['mid'], $first, $type, $content, $status, $remark, $time);
pdo_update('wlmerchant_attestation_money', array('refundflag' => 1), array('id' => $id));
show_json(1);
} else {
show_json(0, '退款失败:' . $res['message']);
}
}
function deleteorder(){
global $_W, $_GPC;
$id = $_GPC['id'];
$res = pdo_delete('wlmerchant_attestation_money',array('id'=>$id));
if($res){
show_json(1);
}else{
show_json(0, '操作失败,请刷新重试');
}
}
function moreinfo(){
global $_W, $_GPC;
$id = $_GPC['id'];
$attest = pdo_get(PDO_NAME.'attestation_list',array('id'=>$id),['type','moreinfo','pic']);
$cardpic = unserialize($attest['pic']);
if(!empty($cardpic)){
foreach($cardpic as &$cpi){
$cpi = tomedia($cpi);
}
}
$info = unserialize($attest['moreinfo']);
foreach ($info as &$ll) {
if(!empty($ll['type'])){
if($ll['type'] == 'pics'){
$ll['value'] = unserialize($ll['value']);
foreach($ll['value'] as &$pic){
$pic = tomedia($pic);
}
}else if($ll['type'] == 'pic'){
$ll['value'] = tomedia($ll['value']);
}
}
}
include wl_template('attestation/moreinfo');
}
function moInfoEdit(){
global $_W, $_GPC;
$id = $_GPC['id'];
//认证信息
$attest = pdo_get(PDO_NAME.'attestation_list',array('id'=>$id),['type','subjectname','atttel','cardnum','moreinfo','pic']);
$cardpic = unserialize($attest['pic']);
$moreinfo = unserialize($attest['moreinfo']);
//查询自定义表单
$set = Setting::wlsetting_read('attestation');
if($attest['type'] == 1){
$diyformid = $set['personmoreformid'];
}else{
$diyformid = $set['storemoreformid'];
}
$diyforminfo = pdo_get('wlmerchant_diyform',array('id' => $diyformid),array('info'));
$moinfo = json_decode(base64_decode($diyforminfo['info']) , true);
$list = $moinfo['list'];
$list = array_values($list);
$newinfo = [];
foreach ($moreinfo as $mminfo){
$newinfo[$mminfo['title']] = $mminfo;
}
foreach ($list as &$lis){
if(empty($newinfo[$lis['data']['title']]['key'])){
$moreinfo[] = [
'id' => $lis['id'],
'key' => $lis['key'],
'data' => '',
'title' => $lis['data']['title'],
'att_show' => $lis['data']['att_show']
];
if($lis['id'] == 'city'){
$cityflag = 1;
$city_name = $lis['val'][1];
$area_name = $lis['val'][2];
}
$lis['keyinfo'] = 'newmoreinfo['.$lis['key'].']';
}else{
$lis['val'] = $newinfo[$lis['data']['title']]['data'];
$lis['key'] = $newinfo[$lis['data']['title']]['key'];
if($lis['id'] == 'city'){
$cityflag = 1;
$city_name = $lis['val'][1];
$area_name = $lis['val'][2];
}
$lis['keyinfo'] = 'newmoreinfo['.$lis['key'].']';
}
}
//查询地区
if($cityflag > 0 ){
$AreaTab = tablename(PDO_NAME . "area");
$orderBy = " ORDER BY id ASC ";
$province = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 1 " . $orderBy);
$province_id = pdo_fetchcolumn("SELECT pid FROM " . $AreaTab . " WHERE level = 2 AND name = '{$city_name}'");
$city = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 2 AND pid = {$province_id}" . $orderBy);
$city_id = pdo_fetchcolumn("SELECT pid FROM " . $AreaTab . " WHERE level = 3 AND name = '{$area_name}'");
$district = pdo_fetchall("SELECT id,name FROM " . $AreaTab . " WHERE level = 3 AND pid = {$city_id}" . $orderBy);
}
//提交
if ($_W['ispost']) {
$data = $_GPC['data'];
$data['pic'] = serialize($data['pic']);
$newmoreinfo = $_GPC['newmoreinfo'];
$subnewinfo = [];
foreach ($moreinfo as $mminfo){
$subnewinfo[$mminfo['key']] = $mminfo;
}
foreach ($subnewinfo as $subkey => &$new){
if($new['id'] == 'datetime'){
$new['data'] = [];
$new['data'][0] = $newmoreinfo[$subkey]['start'];
$new['data'][1] = $newmoreinfo[$subkey]['end'];
}else if($new['id'] == 'city'){
$new['data'] = [];
$new['data'][0] = pdo_getcolumn(PDO_NAME.'area',array('id'=>$newmoreinfo[$subkey]['provinceid']),'name');
$new['data'][1] = pdo_getcolumn(PDO_NAME.'area',array('id'=>$newmoreinfo[$subkey]['areaid']),'name');
$new['data'][2] = pdo_getcolumn(PDO_NAME.'area',array('id'=>$newmoreinfo[$subkey]['distid']),'name');
}else{
$new['data'] = $newmoreinfo[$subkey];
}
if(empty($new['data'])){
unset($subnewinfo[$subkey]);
}
}
$subnewinfo = array_values($subnewinfo);
$subnewinfo = serialize($subnewinfo);
$data['moreinfo'] = $subnewinfo;
$res = pdo_update('wlmerchant_attestation_list',$data,array('id' => $id));
if($res){
wl_message('保存成功!',web_url('attestation/attestation/attestationList'),'success');
}else{
wl_message('保存失败,请刷新重试');
}
}
include wl_template('attestation/moInfoEdit');
}
}

309
addons/weliam_smartcity/plugin/attestation/sys/view/default/attestation/attestationList.html

@ -0,0 +1,309 @@
{php include wl_template('common/header');}
<style type='text/css'>
.goods-info{position:relative; padding-left:60px;}
.goods-info .img{position:absolute;top:50%; margin-top:-25px; background: url({IMAGE_LOADING}) center center no-repeat; width:50px;height:50px; }
.goods-info span {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;display: block;}
.certification-materials{cursor: pointer}
.todetail{text-align: center;display: inline-block;font-size: 14px;width: 100%;overflow: hidden;text-overflow: ellipsis;color: deepskyblue;}
.todetail:hover{cursor:pointer;}
.newmater:hover{cursor:pointer;}
</style>
<ul class="nav nav-tabs">
<li class="active"><a href="#">认证列表</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-list">
<form action="" method="get" class="form-horizontal" role="form" id="form1">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="{MODULE_NAME}" />
<input type="hidden" name="p" value="attestation" />
<input type="hidden" name="ac" value="attestation" />
<input type="hidden" name="do" value="attestationList" />
<input type="hidden" name="status" value="{$_GPC['status']}" />
<input type="hidden" name="checkstatus" value="{$_GPC['checkstatus']}" />
<div class="form-group">
<label class="col-sm-2 control-label">认证状态</label>
<div class="col-sm-9">
<div class="btn-group">
<a href="{php echo wl_filter_url('status:0');}" class="btn {if intval($_GPC['status']) == 0}btn-primary{else}btn-default{/if}">全部</a>
<a href="{php echo wl_filter_url('status:1');}" class="btn {if $_GPC['status'] == 1}btn-primary{else}btn-default{/if}">开启</a>
<a href="{php echo wl_filter_url('status:2');}" class="btn {if $_GPC['status'] == 2}btn-primary{else}btn-default{/if}">禁用</a>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">审核状态</label>
<div class="col-sm-9">
<div class="btn-group">
<a href="{php echo wl_filter_url('checkstatus:0');}" class="btn {if intval($_GPC['checkstatus']) == 0}btn-primary{else}btn-default{/if}">全部</a>
<a href="{php echo wl_filter_url('checkstatus:1');}" class="btn {if $_GPC['checkstatus'] == 1}btn-primary{else}btn-default{/if}">待审核</a>
<a href="{php echo wl_filter_url('checkstatus:2');}" class="btn {if $_GPC['checkstatus'] == 2}btn-primary{else}btn-default{/if}">已通过</a>
<a href="{php echo wl_filter_url('checkstatus:3');}" class="btn {if $_GPC['checkstatus'] == 3}btn-primary{else}btn-default{/if}">被驳回</a>
</div>
</div>
</div>
<div class="form-group form-inline">
<label class="col-sm-2 control-label">关键字搜索</label>
<div class="col-md-2">
<select name="keywordtype" class="form-control">
<option value="">关键字类型</option>
<option value="1" {if $_GPC['keywordtype']==1}selected="selected"{/if}>用户昵称</option>
<option value="2" {if $_GPC['keywordtype']==2}selected="selected"{/if}>用户id</option>
</select>
</div>
<div class="col-sm-3">
<input type="text" name="keyword" class="form-control" value="{$_GPC['keyword']}" placeholder="请输入关键字"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">认证时间筛选</label>
<div class="col-md-2">
<select name="timetype" class="form-control">
<option value="0" {if $_GPC['timetype']==0}selected="selected"{/if}>关闭</option>
<option value="1" {if $_GPC['timetype']==1}selected="selected"{/if}>开启</option>
</select>
</div>
<div class="col-md-3">
{php echo tpl_select_time_info('time_limit', array('starttime' => date('Y-m-d',$starttime), 'endtime' => date('Y-m-d', $endtime)));}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<button class="btn btn-primary" id="search">筛选</button>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
<div class="table-responsive" style="min-height: 200px;">
<table class="table table-hover table-bordered order-list">
<thead style="background-color: #FFFFFF;">
<tr>
<th class="text-center"><input type="checkbox" onclick="var ck = this.checked;$(':checkbox').each(function(){this.checked = ck});" /></th>
<th class="text-center">用户信息</th>
<th class="text-center">姓名/商家名称</th>
<th class="text-center">手机号</th>
<th class="text-center">认证类型</th>
<th class="text-center">身份证/营业执照号码</th>
<th class="text-center">认证材料</th>
<th class="text-center">认证时间</th>
<th class="text-center">最近编辑</th>
<th class="text-center">状态</th>
<th class="text-center">审核状态</th>
</tr>
</thead>
<tbody>
{loop $list $item}
<tr class="text-center">
<td>
<input type="checkbox" name="checkbox[]" class="checkbox" value="{$item['id']}" />
</td>
<td class="goods-info line-feed">
<div class="img"><img class="scrollLoading" src="{IMAGE_PIXEL}" data-url="{php echo tomedia($item['avatar'])}" height="50" width="50" onerror="this.src='{IMAGE_NOPIC_SMALL}'" ></div>
<div class="title" style="padding-left: 60px;">
<span>{$item['nickname']}</span>
<span>MID:{$item['mid']}</span>
</div>
</td>
<td class="line-feed">
<span>{$item['attestationname']}</span>
{if $item['type']==2}
<br/><span style="color: #19BDA0;">商家ID:{$item['storeid']}</span>
{/if}
</td>
<td>
{$item['mobile']}
</td>
<td>
{if $item['type']==1}
<span class="label label-success">个人认证</span>
{else if $item['type']==2}
<span class="label label-warning">商家认证</span>
{/if}
</td>
<td>
{$item['cardnum']}
</td>
<td>
{loop $item['pic'] $p}
<img src="{IMAGE_PIXEL}" class="scrollLoading certification-materials" data-url="{php echo tomedia($p)}" height="50" width="80" >
{/loop}
{if !empty($item['moreinfo'])}
<a class="todetail" href="{php echo web_url('attestation/attestation/moInfoEdit',array('id' => $item['id']))}" >查看编辑</a>
{/if}
</td>
<td>
{php echo date('Y-m-d H:i:s',$item['createtime'])}
</td>
<td>
{php echo date('Y-m-d H:i:s',$item['updatetime'])}
</td>
<td>
{php echo tpl_change_status('attestation/attestation/changeStatus&id='.$item['id'],$item['status'])}
</td>
<td>
<div class="btn-group" style="width: 68px;">
{if $item['checkstatus'] == 1}
<button type="button" class="btn btn-warning dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">待审核</button>
{else if $item['checkstatus'] == 2}
<button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">已通过</button>
{else if $item['checkstatus'] == 3}
<button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">被驳回</button>
{/if}
<ul class="dropdown-menu" style="width: 68px;min-width: 68px;">
{if $item['checkstatus'] != 1}
<li><a href="{php echo web_url('attestation/attestation/changeCheckStatus', array('id'=>$item['id'],'status'=>1))}" data-toggle="ajaxRemove" data-confirm="确认修改为待审核吗?" style="margin: 0;">待审核</a></li>
{/if}
{if $item['checkstatus'] != 2}
<li><a href="{php echo web_url('attestation/attestation/changeCheckStatus', array('id'=>$item['id'],'status'=>2))}" data-toggle="ajaxRemove" data-confirm="确认通过审核吗?" style="margin: 0;">通过</a></li>
{/if}
{if $item['checkstatus'] != 3}
<li><a href="javascritp:;" class="rejectdis" appid="{$item['id']}" style="margin: 0;">驳回</a></li>
{/if}
</ul>
</div>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
<div class="pull-left de1">
<a href="javascript:;" status="2" class="btn btn-default min-width js-batch js-delete pass">批量通过</a>
</div>
<div class="pull-left de1" style="margin-left: 5px;">
<a href="javascript:;" status="3" class="btn btn-default min-width js-batch js-delete pass">批量拒绝</a>
</div>
<div class="pull-left de1" style="margin-left: 5px;">
<a href="javascript:;" status="4" class="btn btn-default min-width js-batch js-delete pass">批量删除</a>
</div>
</div>
<div class="pull-right">
{$pager}
</div>
</div>
</div>
<div id="modal-module-gift" class="modal fade" tabindex="-1">
<div class="modal-dialog" style='width: 920px;'>
<div class="modal-content" style="overflow: auto;">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button">×</button>
<h2>更多素材</h2>
</div>
<div class="modal-body">
<div id="detail" class="modal-body" style="padding:0;"></div>
</div>
<div class="modal-footer" style="padding: 5px 15px;">
<a class="btn btn-primary js-order-remark-post" data-dismiss="modal" aria-hidden="true">确定</a>
</div>
</div>
</div>
</div>
<div id="modal-module-gift22" class="modal fade" tabindex="-1">
<div class="modal-dialog" style='width: 920px;'>
<div class="modal-content">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button">×</button>
<h3>驳回理由</h3></div>
<div class="modal-body" style="padding: 0;">
<div class="modal-body">
<textarea id="remark" name="admin_remark" class="form-control" rows="5"></textarea>
</div>
</div>
<div class="modal-footer" style="padding:15px;">
<a class="btn btn-default js-cancel" aria-hidden="true" data-dismiss="modal">取消</a>
<a class="btn btn-primary js-order-id-post" order-id="" data-dismiss="modal" aria-hidden="true">确定</a>
</div>
</div>
</div>
</div>
</div>
<script>
$('.de1').delegate('.pass','click',function(e){
e.stopPropagation();
var status = $(this).attr('status');
if(status == 2){
var text = '通过';
}else if(status == 3){
var text = '通过';
}else if(status == 4){
var text = '删除';
}
var order_ids = [];
var $checks=$('.checkbox:checkbox:checked');
$checks.each(function() {
if (this.checked) {
order_ids.push(this.value);
};
});
var $this = $(this);
var ids = order_ids;
util.nailConfirm(this, function(state) {
if(!state) return;
$.post("{php echo web_url('attestation/attestation/allChange')}", { ids : ids ,status:status}, function(data){
if(!data.errno){
util.tips("操作成功!");
location.reload();
}else{
util.tips(data.message);
};
}, 'json');
}, {html: '确认'+text+'所选商户?'});
});
/**
* 点击在新的页面打开图片
*/
$(".certification-materials").on('click',function () {
let _this = $(this),
link = _this.data("url");
window.open(link,"_blank");
});
// $('.todetail').click(function(){
// $("#detail").html('');
// popwin = $('#modal-module-gift').modal();
// var id = $(this).attr('attid');
// $.ajax({
// url: "{php echo web_url('attestation/attestation/moreinfo')}&id="+id,
// cache: false
// }).done(function (html) {
// $("#detail").html(html);
// });
// });
//驳回申请理由
$('.rejectdis').click(function(){
var appid = $(this).attr('appid');
$('.js-order-id-post').attr("order-id",appid);
popwin = $('#modal-module-gift22').modal();
});
$('.js-order-id-post').click(function() {
var order_id = $(this).attr('order-id');
var remark = $('#remark').val();
$.post("{php echo web_url('attestation/attestation/rejectreason')}",{id:order_id,reason:remark},function(d){
if(!d.errno){
util.tips('驳回成功!');
location.reload();
}
},"json");
//$('#order-remark-container').hide();
$('.main').css("opacity","1");$('.nav').css("opacity","1");$('.big-menu').css("opacity","1");
});
</script>
{php include wl_template('common/footer');}

348
addons/weliam_smartcity/plugin/attestation/sys/view/default/attestation/attestationSet.html

@ -0,0 +1,348 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a href="#tab_basic">认证设置</a></li>
<li><a href="#tab_share">保证金设置</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form-validate" id="setting-form">
<div class="panel panel-default">
<div class="panel-heading">认证设置</div>
<div class="panel-body">
<div class="tab-content">
<div class="tab-pane active" id="tab_basic">
<div class="form-group">
<label class="col-sm-2 control-label">认证功能</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" value="1" name="base[switch]" {if $base['switch'] == 1} checked {/if} /> 开启
</label>
<label class="radio-inline">
<input type="radio" value="0" name="base[switch]" {if $base['switch'] == 0 || empty($base['switch'])} checked {/if} /> 关闭
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">认证审核</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" value="1" name="base[audits]" {if $base['audits']==1} checked {/if}> 免审核
</label>
<label class="radio-inline">
<input type="radio" value="0" name="base[audits]" {if $base['audits']==0||!$base['audits']} checked {/if}> 需审核
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">认证类型</label>
<div class="col-sm-9">
<label class="checkbox-inline">
<input type="checkbox" {if in_array('member',$base['type'])} checked="checked" {/if} name="type[]" value="member">个人认证
</label>
<label class="checkbox-inline">
<input type="checkbox" onclick="makecheckstatus(this)" {if in_array('store',$base['type'])} checked="checked" {/if} name="type[]" value="store">商家认证
</label>
</div>
</div>
<div id="storemore" {if !in_array('store',$base['type'])} style="display: none" {/if} >
<div class="form-group">
<label class="col-sm-2 control-label">未认证商户管理店铺</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" value="1" name="base[attmanage]" {if $base['attmanage']==1} checked {/if}> 禁用
</label>
<label class="radio-inline">
<input type="radio" value="0" name="base[attmanage]" {if $base['attmanage']==0||!$base['attmanage']} checked {/if}> 开启
</label>
<span class="help-block">禁用后,未认证商户无法管理店铺。</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">个人认证表单</label>
<div class="col-sm-9">
<select name="base[personmoreformid]" class="form-control">
<option value="0"> - 无 - </option>
{loop $diyform $form}
<option value="{$form['id']}" {if $base['personmoreformid'] == $form['id']}selected="selected"{/if}>{$form['title']}</option>
{/loop}
</select>
<span class="help-block">提交个人认证时需要添加的额外内容</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">商家认证表单</label>
<div class="col-sm-9">
<select name="base[storemoreformid]" class="form-control">
<option value="0"> - 无 - </option>
{loop $diyform $form}
<option value="{$form['id']}" {if $base['storemoreformid'] == $form['id']}selected="selected"{/if}>{$form['title']}</option>
{/loop}
</select>
<span class="help-block">提交商户认证时需要添加的额外内容</span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">认证协议</label>
<div class="col-sm-9">
{php echo tpl_diy_editor_create('base[agreement]', $base['agreement']);}
</div>
</div>
</div>
<div class="tab-pane" id="tab_share">
<div class="form-group">
<label class="col-sm-2 control-label">保证金功能</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" value="1" name="base[moneyswitch]" {if $base['moneyswitch'] == 1} checked {/if} /> 开启
</label>
<label class="radio-inline">
<input type="radio" value="0" name="base[moneyswitch]" {if $base['moneyswitch'] == 0 || empty($base['switch'])} checked {/if} /> 关闭
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">个人保证金</label>
<div class="col-sm-9">
<label class="radio-inline" onclick="$('#membermoney').show();" >
<input type="radio" value="1" name="base[memberstatus]" {if $base['memberstatus'] == 1} checked {/if} /> 开启
</label>
<label class="radio-inline" onclick="$('#membermoney').hide();">
<input type="radio" value="0" name="base[memberstatus]" {if $base['memberstatus'] == 0 || empty($base['memberstatus'])} checked {/if} /> 关闭
</label>
</div>
</div>
<div id="membermoney" {if empty($base['memberstatus'])} style='display: none;' {/if}>
{if Customized::init('distributionText') > 0}
<div id="membermoneyarray">
{if is_array($membermoney)}
{loop $membermoney $key $money}
{if $key == 0}
<div class="form-group" style="margin-bottom: 10px;">
<label class="col-sm-2 control-label">个人保证金金额</label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="membermoney[]" min="0.01" class="form-control valid" value="{$money}" aria-invalid="false">
<span class="input-group-addon"></span>
<span onclick="addmemmoney()" class="input-group-addon btn btn-default data-item-delete"><i class="fa fa-plus"></i> 新增</span>
</div>
</div>
</div>
{else}
<div class="form-group data-item" style="margin-bottom: 10px;">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="membermoney[]" min="0.01" class="form-control valid" value="{$money}" aria-invalid="false">
<span class="input-group-addon"></span>
<span onclick="removes(this)" class="input-group-addon btn btn-default data-item-delete"><i class="fa fa-remove"></i> 删除</span>
</div>
</div>
</div>
{/if}
{/loop}
{else}
<div class="form-group" style="margin-bottom: 10px;">
<label class="col-sm-2 control-label">个人保证金金额</label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="membermoney[]" min="0.01" class="form-control valid" value="" aria-invalid="false">
<span class="input-group-addon"></span>
<span onclick="addmemmoney()" class="input-group-addon btn btn-default data-item-delete"><i class="fa fa-plus"></i> 新增</span>
</div>
</div>
</div>
{/if}
</div>
{else}
<div class="form-group">
<label class="col-sm-2 control-label">个人保证金金额</label>
<div class="col-sm-3">
<div class="input-group">
<input type="number" name="base[membermoney]" min="0.1" class="form-control valid" value="{$base['membermoney']}" aria-invalid="false">
<span class="input-group-addon"></span>
</div>
</div>
</div>
{/if}
</div>
<div class="form-group">
<label class="col-sm-2 control-label">商家保证金</label>
<div class="col-sm-9">
<label class="radio-inline" onclick="$('#storemoney').show();" >
<input type="radio" value="1" name="base[storestatus]" {if $base['storestatus'] == 1} checked {/if} /> 开启
</label>
<label class="radio-inline" onclick="$('#storemoney').hide();">
<input type="radio" value="0" name="base[storestatus]" {if $base['storestatus'] == 0 || empty($base['storestatus'])} checked {/if} /> 关闭
</label>
</div>
</div>
<div id="storemoney" {if empty($base['storestatus'])} style='display: none;' {/if}>
{if Customized::init('distributionText') > 0}
<div id="storemoneyarray">
{if is_array($storemoney)}
{loop $storemoney $key2 $smoney}
{if $key2 == 0}
<div class="form-group" style="margin-bottom: 10px;">
<label class="col-sm-2 control-label">商家保证金金额</label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="storemoney[]" min="0.01" class="form-control valid" value="{$smoney}" aria-invalid="false">
<span class="input-group-addon"></span>
<span onclick="addstomoney()" class="input-group-addon btn btn-default data-item-delete"><i class="fa fa-plus"></i> 新增</span>
</div>
</div>
</div>
{else}
<div class="form-group data-item" style="margin-bottom: 10px;">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="storemoney[]" min="0.01" class="form-control valid" value="{$smoney}" aria-invalid="false">
<span class="input-group-addon"></span>
<span onclick="removes(this)" class="input-group-addon btn btn-default data-item-delete"><i class="fa fa-remove"></i> 删除</span>
</div>
</div>
</div>
{/if}
{/loop}
{else}
<div class="form-group" style="margin-bottom: 10px;">
<label class="col-sm-2 control-label">商家保证金金额</label>
<div class="col-sm-6">
<div class="input-group">
<input type="number" name="storemoney[]" min="0.01" class="form-control valid" value="" aria-invalid="false">
<span class="input-group-addon"></span>
<span onclick="addstomoney()" class="input-group-addon btn btn-default data-item-delete"><i class="fa fa-plus"></i> 新增</span>
</div>
</div>
</div>
{/if}
</div>
{else}
<div class="form-group">
<label class="col-sm-2 control-label">商家保证金金额</label>
<div class="col-sm-3">
<div class="input-group">
<input type="number" name="base[storemoney]" min="0.01" class="form-control valid" value="{$base['storemoney']}" aria-invalid="false">
<span class="input-group-addon"></span>
</div>
</div>
</div>
{/if}
</div>
<div class="form-group">
<label class="col-sm-2 control-label">退还保证金</label>
<div class="col-sm-9">
<label class="radio-inline" onclick="$('#refundmoney').show();" >
<input type="radio" value="1" name="base[refundstatus]" {if $base['refundstatus'] == 1} checked {/if} /> 开启
</label>
<label class="radio-inline" onclick="$('#refundmoney').hide();">
<input type="radio" value="0" name="base[refundstatus]" {if $base['refundstatus'] == 0 || empty($base['refundstatus'])} checked {/if} /> 关闭
</label>
<span class="help-block">开启后,用户保证金可在后台退还。</span>
</div>
</div>
<div class="form-group" id="refundmoney" {if empty($base['refundstatus'])} style='display: none;' {/if}>
<label class="col-sm-2 control-label">最低间隔天数</label>
<div class="col-sm-3">
<div class="input-group">
<input type="number" name="base[refundday]" min="0" class="form-control valid" value="{$base['refundday']}" aria-invalid="false">
<span class="input-group-addon"></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">保证金说明</label>
<div class="col-sm-9">
{php echo tpl_diy_editor_create('base[bonddescription]', $base['bonddescription']);}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">保证金协议</label>
<div class="col-sm-9">
{php echo tpl_diy_editor_create('base[bondagreement]', $base['bondagreement']);}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
<script>
$(function() {
window.optionchanged = false;
$('#myTab a').click(function(e) {
e.preventDefault(); //阻止a链接的跳转行为
$(this).tab('show'); //显示当前选中的链接及关联的content
})
});
function makecheckstatus(asd){
if($(asd).is(":checked")){
$('#storemore').show();
}else{
$('#storemore').hide();
}
}
function addmemmoney(){
var html = "<div class='form-group data-item' style='margin-bottom: 10px;'>"+
"<label class='col-sm-2 control-label'></label>"+
"<div class='col-sm-6'>"+
"<div class='input-group'>" +
"<input type='number' name='membermoney[]' min='0.01' class='form-control valid' aria-invalid='false'>" +
"<span class='input-group-addon'></span>" +
"<span onclick='removes(this)' class='input-group-addon btn btn-default data-item-delete'><i class='fa fa-remove'></i> 删除</span>" +
"</div>" +
"</div>" +
"</div>";
$("#membermoneyarray").append(html);
}
function addstomoney(){
var html = "<div class='form-group data-item' style='margin-bottom: 10px;'>"+
"<label class='col-sm-2 control-label'></label>"+
"<div class='col-sm-6'>"+
"<div class='input-group'>" +
"<input type='number' name='storemoney[]' min='0.01' class='form-control valid' aria-invalid='false'>" +
"<span class='input-group-addon'></span>" +
"<span onclick='removes(this)' class='input-group-addon btn btn-default data-item-delete'><i class='fa fa-remove'></i> 删除</span>" +
"</div>" +
"</div>" +
"</div>";
$("#storemoneyarray").append(html);
}
function addType() {
$(".btn-add-type").button("loading");
var html = " <div class='input-group data-item' style='margin-top: 10px;'>"+
"<span class='input-group-addon'>填写内容</span>"+
"<input type='text' name='storecontent[]' class='form-control' value=''>"+
"<span class='input-group-addon'>内容类型</span>"+
"<select name='storetype[]' class='form-control'>"+
"<option value='text'>文本</option>"+
"<option value='number'>数字</option>"+
"<option value='pic'>图片</option>"+
"<option value='pics'>图集</option>"+
"</select>"+
"<span onclick='removes(this)' class='input-group-addon btn btn-default data-item-delete'><i class='fa fa-remove'></i> 删除</span>"+
"</div>";
$("#datas").append(html);
$(".btn-add-type").button("reset");
}
function removes(asd){
$(asd).closest('.data-item').remove();
}
</script>
{php include wl_template('common/footer');}

147
addons/weliam_smartcity/plugin/attestation/sys/view/default/attestation/bondList.html

@ -0,0 +1,147 @@
{php include wl_template('common/header');}
<style type='text/css'>
.goods-info{position:relative; padding-left:60px;}
.goods-info .img{position:absolute;top:50%; margin-top:-25px; background: url({IMAGE_LOADING}) center center no-repeat; width:50px;height:50px; }
.goods-info span {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;display: block;}
</style>
<ul class="nav nav-tabs">
<li class="active"><a href="#">认证列表</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-list">
<form action="" method="get" class="form-horizontal" role="form" id="form1">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="{MODULE_NAME}" />
<input type="hidden" name="p" value="attestation" />
<input type="hidden" name="ac" value="attestation" />
<input type="hidden" name="do" value="bondList" />
<input type="hidden" name="status" value="{$_GPC['status']}" />
<div class="form-group">
<label class="col-sm-2 control-label">缴纳状态</label>
<div class="col-sm-9">
<div class="btn-group">
<a href="{php echo wl_filter_url('status:0');}" class="btn {if intval($_GPC['status']) == 0}btn-primary{else}btn-default{/if}">全部</a>
<a href="{php echo wl_filter_url('status:1');}" class="btn {if $_GPC['status'] == 1}btn-primary{else}btn-default{/if}">已缴纳</a>
<a href="{php echo wl_filter_url('status:2');}" class="btn {if $_GPC['status'] == 2}btn-primary{else}btn-default{/if}">未缴纳</a>
</div>
</div>
</div>
<div class="form-group form-inline">
<label class="col-sm-2 control-label">关键字搜索</label>
<div class="col-md-2">
<select name="keywordtype" class="form-control">
<option value="">关键字类型</option>
<option value="1" {if $_GPC['keywordtype']==1}selected="selected"{/if}>用户昵称</option>
<option value="2" {if $_GPC['keywordtype']==2}selected="selected"{/if}>用户id</option>
</select>
</div>
<div class="col-sm-3">
<input type="text" name="keyword" class="form-control" value="{$_GPC['keyword']}" placeholder="请输入关键字"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">支付时间筛选</label>
<div class="col-md-2">
<select name="timetype" class="form-control">
<option value="0" {if $_GPC['timetype']==0}selected="selected"{/if}>关闭</option>
<option value="1" {if $_GPC['timetype']==1}selected="selected"{/if}>开启</option>
</select>
</div>
<div class="col-md-3">
{php echo tpl_select_time_info('time_limit', array('starttime' => date('Y-m-d',$starttime), 'endtime' => date('Y-m-d', $endtime)));}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<button class="btn btn-primary" id="search">筛选</button>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
<div class="table-responsive" style="min-height: 200px;">
<table class="table table-hover table-bordered order-list">
<thead style="background-color: #FFFFFF;">
<tr>
<th style="width:80px;">用户信息</th>
<th style="width:80px;text-align:center;">姓名/商家名称</th>
<th style="width:60px; text-align:center;">保证金类型</th>
<th style="width:60px; text-align:center;">保证金金额</th>
<th style="width:70px; text-align:center;">订单号/三方单号</th>
<th style="width:120px; text-align:center;">缴纳时间</th>
<th style="width:100px; text-align:center;">保证金状态</th>
</tr>
</thead>
<tbody>
{loop $list $item}
<tr>
<td class="goods-info line-feed">
<div class="img"><img class="scrollLoading" src="{IMAGE_PIXEL}" data-url="{php echo tomedia($item['avatar'])}" height="50" width="50" onerror="this.src='{IMAGE_NOPIC_SMALL}'" ></div>
<div class="title" style="padding-left: 60px;">
<span>{$item['nickname']}</span>
<span>MID:{$item['mid']}</span>
<span>{$item['mobile']}</span>
</div>
</td>
<td class="line-feed" style="width:150px;padding-left: 5px;">
<span>{$item['attestationname']}</span>
{if $item['type']==2}
<br/><span style="color: #19BDA0;">商家ID:{$item['storeid']}</span>
{/if}
</td>
<td class="text-center" style="width:60px;">
{if $item['type']==1}
<span class="label label-success">个人保证金</span>
{else if $item['type']==2}
<span class="label label-warning">商家保证金</span>
{/if}
</td>
<td class="text-center" style="width:60px;">
{$item['money']}
</td>
<td class="text-center" style="width:60px;">
{$item['orderno']}
{if $item['transid']}
<br/>({$item['transid']})
{/if}
</td>
<td class="text-center" style="width:70px;">
{if $item['paytime']>0}
{php echo date('Y-m-d H:i:s',$item['paytime'])}
{else}
<span class="label label-default">未缴纳</span>
{/if}
</td>
<td class="text-center" style="width:70px;">
{if $item['status']==1}
<span class="label label-success">已缴纳</span>
{else if $item['status']==0}
<span class="label label-default">未缴纳</span>
{/if}
{if $item['refund']}
<span class="label label-warning"><a href="{php echo web_url('attestation/attestation/refundorder',array('id'=>$item['id']))}" data-toggle="ajaxRemove" data-confirm="确定退还保证金?" style="color: white;">退还保证金</a></span>
{else if $item['refundflag']==1}
<span class="label label-default">已退保证金</span>
{/if}
<br/><br/><span class="label label-danger"><a href="{php echo web_url('attestation/attestation/deleteorder',array('id'=>$item['id']))}" data-toggle="ajaxRemove" data-confirm="确定删除此订单?" style="color: white;">删除</a></span>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
</div>
<div class="pull-right">
{$pager}
</div>
</div>
</div>
</div>
{php include wl_template('common/footer');}

145
addons/weliam_smartcity/plugin/attestation/sys/view/default/attestation/moInfoEdit.html

@ -0,0 +1,145 @@
{php include wl_template('common/header');}
<script type="text/javascript" src="{URL_WEB_JS}diyarea.js"></script>
<ul class="nav nav-tabs" id="myTab">
<li class="active" ><a href="javascript:;">认证信息</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<div class="tab-content">
<div class="tab-pane active" id="tab_rush">
{if $attest['type'] == 1}
<div class="form-group">
<label class="col-sm-2 control-label">姓名<span style="color: orangered;">*</span></label>
<div class="col-sm-6 col-xs-6">
<input type="text" name="data[subjectname]" class="form-control" value="{$attest['subjectname']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">手机号<span style="color: orangered;">*</span></label>
<div class="col-sm-6 col-xs-6">
<input type="text" name="data[cardnum]" class="form-control" value="{$attest['cardnum']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">身份证<span style="color: orangered;">*</span></label>
<div class="col-sm-6 col-xs-6">
{php echo attachment_select_multi('data[pic]',$cardpic);}
</div>
</div>
{else}
<div class="form-group">
<label class="col-sm-2 control-label">主体名称<span style="color: orangered;">*</span></label>
<div class="col-sm-6 col-xs-6">
<input type="text" name="data[subjectname]" class="form-control" value="{$attest['subjectname']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">执照注册号<span style="color: orangered;">*</span></label>
<div class="col-sm-6 col-xs-6">
<input type="text" name="data[cardnum]" class="form-control" value="{$attest['cardnum']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">营业执照<span style="color: orangered;">*</span></label>
<div class="col-sm-6 col-xs-6">
{php echo attachment_select_multi('data[pic]',$cardpic);}
</div>
</div>
{/if}
{if $diyformid > 0}
{loop $list $li}
<div class="form-group">
<label class="col-sm-2 control-label">{$li['data']['title']}</label>
{if $li['id'] == 'text'}
<div class="col-sm-6 col-xs-6">
<input type="text" name="newmoreinfo[{$li['key']}]" placeholder="{$li['data']['placeholder']}" class="form-control" value="{$li['val']}" />
</div>
{else if $li['id'] == 'select'}
<div class="col-sm-6">
<select name="newmoreinfo[{$li['key']}]" class="form-control chosen-select" >
{loop $li['data']['options'] $row}
<option value="{$row}" {if $li['val'] == $row}selected="selected"{/if}>{$row}</option>
{/loop}
</select>
</div>
{else if $li['id'] == 'checkbox'}
<div class="col-sm-9">
{loop $li['data']['options'] $row}
<label class="checkbox-inline">
<input type="checkbox" value="{$row}" {if in_array($row,$li['val'])} checked {/if} name="newmoreinfo[{$li['key']}][]" />{$row}
</label>
{/loop}
</div>
{else if $li['id'] == 'img'}
<div class="col-sm-6 col-xs-6">
{php echo attachment_select_multi($li['keyinfo'],$li['val']);}
</div>
{else if $li['id'] == 'time'}
<div class="col-sm-9">
<div class="input-group">
{php echo tpl_form_field_date($li['keyinfo'], date('Y-m-d H:i:s', strtotime($li['val'])),true);}
</div>
</div>
{else if $li['id'] == 'datetime'}
<div class="col-sm-9">
{php echo tpl_select_time_info($li['keyinfo'], array('starttime'=>date('Y-m-d H:i:s',strtotime($li['val'][0])),'endtime'=>date('Y-m-d H:i:s',strtotime($li['val'][1]))));}
</div>
{else if $li['id'] == 'city'}
<div class="col-sm-9">
<div class="row row-fix js-address-selector selectArea">
{if $li['data']['province']}
<div class="col-md-3" id="tpl-province">
<select name="newmoreinfo[{$li['key']}][provinceid]" data-value="{$districts['province']}" level="1" class="form-control tpl-province changeArea">
{loop $province $item}
<option value="{$item['id']}" {if $item['name'] == $li['val'][0]}selected="selected"{/if}>{$item['name']}</option>
{/loop}
</select>
</div>
{/if}
{if $li['data']['city']}
<div class="col-md-3" id="tpl-city">
<select name="newmoreinfo[{$li['key']}][areaid]" data-value="{$districts['city']}" level="2" class="form-control tpl-city changeArea">
{loop $city $item}
<option value="{$item['id']}" {if $item['name'] == $li['val'][1]}selected="selected"{/if}>{$item['name']}</option>
{/loop}
</select>
</div>
{/if}
{if $li['data']['area']}
<div class="col-md-3" id="tpl-district">
<select name="newmoreinfo[{$li['key']}][distid]" data-value="{$districts['district']}" level="3" class="form-control tpl-district changeArea">
{loop $district $item}
<option value="{$item['id']}" {if $item['name'] == $li['val'][2]}selected="selected"{/if}>{$item['name']}</option>
{/loop}
</select>
</div>
{/if}
</div>
</div>
{else if $li['id'] == 'textarea'}
<div class="col-sm-9">
<textarea name="newmoreinfo[{$li['key']}]" style="width: 500px;height: 200px;"> {$li['val']} </textarea>
</div>
{/if}
</div>
{/loop}
{/if}
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="hidden" name="id" value="{$id}" id="id"/>
<input type="submit" name="submit" value="提交" class="btn btn-primary col-lg-1" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

49
addons/weliam_smartcity/plugin/attestation/sys/view/default/attestation/moreinfo.html

@ -0,0 +1,49 @@
<div>
{if !empty($cardpic)}
<h4>{if $attest['type'] == 1}身份证{else}营业执照{/if}:</h4>
{loop $cardpic $cpi}
<img class="newmater" data-url="{$cpi}" style="width:150px;height:150px;" src="{$cpi}" />
{/loop}
{/if}
</div>
{loop $info $key $in}
<div>
{if $in['type'] == 'text' || $in['type'] == 'number'}
<h4>{$key}:{$in['value']}</h4>
{else if $in['type'] == 'pic'}
<h4>{$key}:</h4>
<img class="newmater" data-url="{$in['value']}" style="width:150px;height:150px;" src="{$in['value']}" />
{else if $in['type'] == 'pics'}
<h4>{$key}:</h4>
{loop $in['value'] $pi}
<img class="newmater" data-url="{$pi}" style="width:150px;height:150px;" src="{$pi}" />
{/loop}
{/if}
{if $in['id'] == 'img'}
<h4>{$in['title']}{if $in['att_show']>0}(隐藏){/if}:</h4>
{loop $in['data'] $pi}
<img class="newmater" data-url="{$pi}" style="width:150px;height:150px;" src="{$pi}" />
{/loop}
{else if $in['id'] == 'datetime'}
<h4>{$in['title']}{if $in['att_show']>0}(隐藏){/if}:{$in['data'][0]} - {$in['data'][1]}</h4>
{else if $in['id'] == 'city'}
<h4>{$in['title']}{if $in['att_show']>0}(隐藏){/if}:{$in['data'][0]} - {$in['data'][1]} - {$in['data'][2]}</h4>
{else if $in['id'] == 'checkbox'}
<h4>{$in['title']}{if $in['att_show']>0}(隐藏){/if}:</h4>
{loop $in['data'] $pi}
<span class="label label-danger">{$pi}</span>
{/loop}
{else}
<h4>{$in['title']}{if $in['att_show']>0}(隐藏){/if}:{$in['data']}</h4>
{/if}
</div>
{/loop}
<script>
$(".newmater").on('click',function () {
let _this = $(this),
link = _this.data("url");
window.open(link,"_blank");
});
</script>

331
addons/weliam_smartcity/plugin/attestation/uniapp.php

@ -0,0 +1,331 @@
<?php
defined('IN_IA') or exit('Access Denied');
class AttestationModuleUniapp extends Uniapp {
/**
* Comment: 获取个人 / 商户的认证信息
* Author: zzw
* Date: 2019/11/6 11:51
*/
public function getInfo(){
global $_W,$_GPC;
#1、参数获取
$type = $_GPC['type'] ? : 1;//1个人认证 2商户认证
$id = $_GPC['sid'] ? : $_W['mid'];//id(商户id|用户id)
#2、条件生成
$where['uniacid'] = $_W['uniacid'];
$where['status'] = 1;
if($type == 1){
$where['mid'] = $id;
$where['type'] = 1;
}else{
$where['storeid'] = $id;
}
#3、获取认证信息
$isAttestation = pdo_getall(PDO_NAME."attestation_list",$where,array('remake','checkstatus'),'','ID DESC');
$isMoney = pdo_getcolumn(PDO_NAME."attestation_money",$where,'money');
#4、认证状态判断
$data['is_attestation'] = intval($isAttestation[0]['checkstatus'] > 0 ? $isAttestation[0]['checkstatus'] : 0);
$data['is_money'] = $isMoney > 0 ? $isMoney : 0;
if($data['is_attestation'] == 3){
$data['reason'] = $isAttestation[0]['remake'];
}
#5、获取设置信息
$set = Setting::wlsetting_read('attestation');
$set['type'] = is_array(unserialize($set['type'])) ? unserialize($set['type']) : [];
//判断认证功能是否开启
$typeStr = $type == 1 ? 'member' : 'store';
//认证功能:1=开启;0=关闭
if($set['switch'] == 1 && in_array($typeStr,$set['type'])) $data['switch'] = 1;
else $data['switch'] = 0;
//保证金功能:1=开启;0=关闭
if($type == 1 && $set['moneyswitch'] == 1 && $set['memberstatus'] == 1){
$data['money_switch'] = 1;
if($data['is_money'] > 0){
$data['money'] = $data['is_money'];
}else{
if(Customized::init('distributionText') > 0){
$membermoney = unserialize($set['membermoneyarray']);
$data['money'] = min($membermoney).'-'.max($membermoney);
}else{
$data['money'] = $set['membermoney'];
}
}
}else if($type == 2 && $set['moneyswitch'] == 1 && $set['storestatus'] == 1){
$data['money_switch'] = 1;
if($data['is_money'] > 0){
$data['money'] = $data['is_money'];
}else{
if(Customized::init('distributionText') > 0){
$storemoney = unserialize($set['storemoneyarray']);
$data['money'] = min($storemoney).'-'.max($storemoney);
}else{
$data['money'] = $set['storemoney'];
}
}
}else{
$data['money_switch'] = 0;
}
#6、返回认证信息
$tips = $type == 1 ? '个人': '商户';
$this->renderSuccess($tips.'认证信息',$data);
}
/**
* Comment: 信息设置接口
* Author: zzw
* Date: 2019/11/6 12:00
*/
public function infoSet(){
global $_W,$_GPC;
#1、参数获取
$type = $_GPC['type'] ? : 1;//1个人认证 2商户认证
$id = $_GPC['sid'] ? : $_W['mid'];//id(商户id|用户id)
$operation = $_GPC['operation'] ? : 'get' ;//操作类型:get=获取信息;set=修改信息
$pic = $_GPC['pic'] ? serialize(explode(',',$_GPC['pic'])) : '' ;
$info = [
'name' => $_GPC['name'] ? : '' ,
'phone' => $_GPC['phone'] ? : '' ,
'pic' => $pic,
'cardnum' => $_GPC['cardnum'] ? : '' ,
];
$attId = $_GPC['att_id'] ? : -1;
#2、获取设置信息
if(is_array($_W['wlsetting']['attestation']) && count($_W['wlsetting']['attestation']) > 0) $set = $_W['wlsetting']['attestation'];
else $set = Setting::wlsetting_read('attestation');
#3、根据操作类型进行不同的操作
if($operation == 'set'){
WeliamWeChat::startTrans();
//信息拼装
$info['uniacid'] = $_W['uniacid'];
$info['aid'] = $_W['aid'];
if($type == 1) {
$info['mid'] = $id;
//修改用户信息
$memberData = [
'realname' => $info['name'],
'mobile' => $info['phone']
];
$moreformid = $set['personmoreformid'];
pdo_update(PDO_NAME."member",$memberData,['id'=>$info['mid']]);
} else{
$info['storeid'] = $id;
$info['mid'] = $_W['mid'];
//修改商户信息
$moreformid = $set['storemoreformid'];
pdo_update(PDO_NAME."merchantdata",[ 'tel' => $info['phone']],['id'=>$info['storeid']]);
}
//获取更多信息
if($moreformid > 0){
$diyFormInfo = array_values(json_decode(html_entity_decode($_GPC['datas']),true));
$diyFormSet = pdo_getcolumn(PDO_NAME."diyform",['id'=>$moreformid],'info');
$diyFormSet = array_values(json_decode(base64_decode($diyFormSet), true)['list']);//页面的配置信息
foreach($diyFormInfo as $formKey => &$formVal){
$formVal['att_show'] = $diyFormSet[$formKey]['data']['att_show'];
}
$info['moreinfo'] = serialize($diyFormInfo);
}
$info['type'] = $type;
$info['updatetime'] = time();
$info['status'] = 1;
$info['checkstatus'] = $set['audits'] == 1 ? 2 : 1;
$info['subjectname'] = $info['name'];
$info['atttel'] = $info['phone'];
unset($info['name']);
unset($info['phone']);
//修改 | 添加认证信息
if($attId > 0){
$res = pdo_update(PDO_NAME."attestation_list",$info,['id'=>$attId]);
}else{
//判断是否已经申请
$selectData = [
'mid' => $info['mid'] ,
'storeid' => intval($info['storeid']) ,
'type' => $info['type'] ,
];
$isHave = pdo_get(PDO_NAME."attestation_list",$selectData);
if($isHave) {
WeliamWeChat::rollback();
$this->renderError('请勿重复提交认证信息!');
}
//添加认证信息
$info['createtime'] = time();
$res = pdo_insert(PDO_NAME."attestation_list",$info);
}
//判断操作是否成功
if(!$res){
WeliamWeChat::rollback();
$this->renderError('申请失败,请刷新重试!');
} else {
WeliamWeChat::commit();
if(empty($set['audits'])){ //审核 发送模板消息
if($type == 1){
$first = "用户【{$info['subjectname']}】提交了一个认证申请";//消息头部
$type2 = "用户认证审核通知";//业务类型
}else{
$first = "商户【{$info['subjectname']}】提交了一个认证申请";//消息头部
$type2 = "商户认证审核通知";//业务类型
}
$content = '认证中心审核';//业务内容
$status = "待审核";//处理结果
$remark = "请尽快前往后台审核!";//备注信息
$time = time();//操作时间
News::noticeAgent('attestation' , -1 , $first , $type2 , $content , $status , $remark , $time);
}
$this->renderSuccess('申请成功,请等待审核结果!');
}
}else{
$getWhere = " WHERE uniacid = {$_W['uniacid']} ";
$sql = "SELECT id,cardnum,pic,moreinfo,subjectname,atttel FROM ".tablename(PDO_NAME."attestation_list");
if($attId > 0) $getWhere .= " AND id = {$attId} ";
if($type == 1){
//获取用户认证信息
$setInfo1 = pdo_fetch("SELECT realname as name,mobile as phone FROM ".tablename(PDO_NAME."member")." WHERE id = {$id} ");
$getWhere .= " AND mid = {$id} AND type = 1 ";
$setInfo2 = pdo_fetch($sql.$getWhere);
$moreformid = $set['personmoreformid'];
}else{
//获取商户认证信息
$setInfo1 = pdo_fetch("SELECT storename,tel FROM ".tablename(PDO_NAME."merchantdata")." WHERE id = {$id} ");
$getWhere .= " AND storeid = {$id} AND type = 2 ";
$setInfo2 = pdo_fetch($sql.$getWhere);
$moreformid = $set['storemoreformid'];
}
//处理基本信息
$setInfo2['pic'] = unserialize($setInfo2['pic']);
if(empty($setInfo2['pic'])){
$setInfo2['pic'] = [];
}
$setInfo2['cardnum'] = $setInfo2['cardnum'] ? : '';
$setInfo2['att_id'] = $setInfo2['id'] ? : -1;
$setInfo = array_merge($setInfo1,$setInfo2);
$setInfo['name'] = !empty($setInfo['subjectname'])? $setInfo['subjectname'] : $setInfo['storename'];
$setInfo['phone'] = !empty($setInfo['atttel'])? $setInfo['atttel'] : $setInfo['tel'];
unset($setInfo['subjectname']);
unset($setInfo['storename']);
unset($setInfo['tel']);
unset($setInfo['atttel']);
//处理图片信息
if(is_array($setInfo['pic'])){
foreach($setInfo['pic'] as &$val){
$val = tomedia($val);
}
}
//获取设置信息
$setInfo['agreement'] = htmlspecialchars_decode($set['agreement']);
//额外内容
if($moreformid > 0){
$diyFromInfo = pdo_getcolumn(PDO_NAME . 'diyform' , ['id' => $moreformid] , 'info');
$setInfo['diyform'] = json_decode(base64_decode($diyFromInfo) , true);//页面的配置信息
$setInfo['diyformid'] = $moreformid;
if(!empty($setInfo['moreinfo'])){
$moreinfo = unserialize($setInfo['moreinfo']);
foreach($setInfo['diyform']['list'] as $key => &$ccinfo){
foreach($moreinfo as $mminfo){
if($ccinfo['data']['title'] == $mminfo['title']){
$ccinfo['data']['value'] = $mminfo['data'];
}
}
}
}
}
$this->renderSuccess('获取认证信息',$setInfo);
}
}
/**
* Comment: 获取保证金设置信息
* Author: zzw
* Date: 2019/11/7 11:58
*/
public function attMoney(){
global $_W,$_GPC;
#1、参数获取
$type = $_GPC['type'] ? : 1;//1个人认证 2商户认证
$id = $_GPC['sid'] ? : $_W['mid'];//id(商户id|用户id)
#2、判断是否缴纳保证金
$where['uniacid'] = $_W['uniacid'];
if($type == 1){
$where['mid'] = $id;
$where['type'] = 1;
} else{
$where['storeid'] = $id;
}
$isMoney = pdo_getcolumn(PDO_NAME."attestation_money",$where,'status');
$data['is_money'] = intval($isMoney > 0 ? $isMoney : 0);
#3、获取设置信息
if(is_array($_W['wlsetting']['attestation']) && count($_W['wlsetting']['attestation']) > 0) $set = $_W['wlsetting']['attestation'];
else $set = Setting::wlsetting_read('attestation');
#2、获取保证金内容
if($type == 1){
if(Customized::init('distributionText') > 0){
$membermoney = unserialize($set['membermoneyarray']);
$data['money'] = min($membermoney).'-'.max($membermoney);
$data['moneyarray'] = $membermoney;
}else{
$data['money'] = $set['membermoney'] ? : 0;
}
}else{
if(Customized::init('distributionText') > 0){
$storemoney = unserialize($set['storemoneyarray']);
$data['money'] = min($storemoney).'-'.max($storemoney);
$data['moneyarray'] = $storemoney;
}else{
$data['money'] = $set['storemoney'] ? : 0;
}
}
#2、获取基本设置信息
$data['bonddescription'] = htmlspecialchars_decode($set['bonddescription']);
$data['bondagreement'] = htmlspecialchars_decode($set['bondagreement']);
$this->renderSuccess('保证金设置信息',$data);
}
/**
* Comment: 保证金缴纳订单接口
* Author: wlf
* Date: 2019/11/6 17:56
*/
public function bondOrder(){
global $_W,$_GPC;
$set = Setting::wlsetting_read('attestation');
$type = $_GPC['type'];
$storeid = $_GPC['storeid'];
$money = $_GPC['money'];
if($type == 1){
if(Customized::init('distributionText') > 0) {
$membermoney = unserialize($set['membermoneyarray']);
if(!in_array($money,$membermoney)){
$money = 0;
}
}else{
$money = $set['membermoney'];
}
}else if($type == 2){
if(Customized::init('distributionText') > 0) {
$storemoney = unserialize($set['storemoneyarray']);
if(!in_array($money,$storemoney)){
$money = 0;
}
}else{
$money = $set['storemoney'];
}
}
if($money < 0.01){
$this -> renderError('保证金金额错误,请联系管理员');
}
$orderinfo = array(
'uniacid' => $_W['uniacid'],
'mid' => $_W['mid'],
'storeid' => $storeid,
'type' => $type,
'money' => $money,
'orderno' => createUniontid(),
'createtime' => time()
);
pdo_insert(PDO_NAME .'attestation_money', $orderinfo);
$orderid = pdo_insertid();
$data['orderid'] = $orderid;
$this -> renderSuccess('订单id',$data);
}
}

468
addons/weliam_smartcity/plugin/bargain/Bargain.mod.php

@ -0,0 +1,468 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Bargain {
//保存商品活动
static function saveActive($active, $param = array()) {
global $_W;
if (!is_array($active)) return FALSE;
$active['uniacid'] = $_W['uniacid'];
$active['createtime'] = time();
if (empty($param)) {
pdo_insert(PDO_NAME . 'bargain_activity', $active);
return pdo_insertid();
}
return FALSE;
}
//更新商品活动
static function updateActive($params, $where) {
$res = pdo_update(PDO_NAME . 'bargain_activity', $params, $where);
if ($where['id']) Cache::deleteCache('active', $where['id']);
if ($res) {
return 1;
} else {
return 0;
}
}
//获取商品活动
static function getSingleActive($id, $select, $where = array()) {
$where['id'] = $id;
$goodsInfo = Util::getSingelData($select, PDO_NAME . 'bargain_activity', $where);
if (empty($goodsInfo)) {
return array();
} else {
return $goodsInfo;
}
}
//获取活动列表
static function getNumActive($select, $where, $order, $pindex, $psize, $ifpage) {
$activeInfo = Util::getNumData($select, PDO_NAME . 'bargain_activity', $where, $order, $pindex, $psize, $ifpage);
return $activeInfo;
}
//创建userlist记录
static function createuserlist($mid, $activityid) {
global $_W;
if (empty($mid) || empty($activityid)) {
return FALSE;
}
$goods = pdo_get(PDO_NAME . 'bargain_activity', array('id' => $activityid), array('oldprice', 'sid'));
$data = array(
'uniacid' => $_W['uniacid'],
'aid' => $_W['aid'],
'activityid' => $activityid,
'merchantid' => $goods['sid'],
'mid' => $mid,
'status' => 1,
'price' => $goods['oldprice'],
'createtime' => time(),
'updatetime' => time(),
);
pdo_insert(PDO_NAME . 'bargain_userlist', $data);
$res = pdo_insertid();
return $res;
}
//砍价
static function bargaining($mid, $activityid, $userid) {
global $_W;
$activity = self::getSingleActive($activityid, '*');
$userlist = pdo_get('wlmerchant_bargain_userlist', array('id' => $userid));
//判断资格 先略
$helpflag = pdo_getcolumn('wlmerchant_bargain_helprecord', array('uniacid' => $_W['uniacid'], 'userid' => $userid, 'mid' => $_W['mid']), 'id');
if ($helpflag) {
wl_json(1, '您已砍过价了');
}
//获取砍价金额
if ($activity['vipstatus'] == 1) { //判断vip
$now = time();
if ($_W['wlsetting']['halfcard']['halfcardtype'] == 2) {
$halfcardflag = pdo_fetch("SELECT id FROM " . tablename('wlmerchant_halfcardmember') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$userlist['mid']} AND aid = {$_W['aid']} AND expiretime > {$now} AND disable != 1");
} else {
$halfcardflag = pdo_fetch("SELECT id FROM " . tablename('wlmerchant_halfcardmember') . "WHERE uniacid = {$_W['uniacid']} AND mid = {$userlist['mid']} AND expiretime > {$now} AND disable != 1");
}
if ($halfcardflag) {
$lowprice = $activity['vipprice'];
}
}
$lowprice = $lowprice ? $lowprice : $activity['price'];
if ($userlist['price'] <= $lowprice) {
wl_json(1, '已砍至底价,无法继续砍价');
}
$price = self::getBargainPrice($activity, $userlist['price'], $lowprice);
if ($price) {
$afterprice = sprintf("%.2f", $userlist['price'] - $price);
$data = array(
'uniacid' => $_W['uniacid'],
'aid' => $_W['aid'],
'activityid' => $activityid,
'authorid' => $userlist['mid'],
'mid' => $mid,
'userid' => $userid,
'bargainprice' => $price,
'afterprice' => $afterprice,
'createtime' => time(),
);
$res = pdo_insert(PDO_NAME . 'bargain_helprecord', $data);
$barid = pdo_insertid();
if ($res) {
$res2 = pdo_update('wlmerchant_bargain_userlist', array('price' => $afterprice, 'updatetime' => time()), array('id' => $userid));
}
if ($res2) {
return $barid;
} else {
return false;
}
}
}
//获取砍价金额
public function getBargainPrice($activity, $userNowPrice, $lowprice) {
if ($userNowPrice <= $lowprice) {
return 0;
}
$rules = unserialize($activity['rules']);
$price = 0;
$inRule = false;
foreach ($rules as $rule) {
if ($userNowPrice >= $rule['rule_pice']) {
$price = rand($rule['rule_start'] * 100, $rule['rule_end'] * 100) / 100;
$inRule = true;
break;
}
}
if (!$inRule) {
$price = rand(0.5 * 100, 1 * 100) / 100;
}
if ($userNowPrice - $price < $lowprice) {
$price = $userNowPrice - $lowprice;
}
$price = sprintf("%.2f", $price);
return $price;
}
//核销订单流程
static function hexiaoorder($id, $mid, $num = 1, $type = 1,$checkcode='') { //1输码 2扫码 3后台 4密码
global $_W;
$order = pdo_get('wlmerchant_order', array('id' => $id));
if($order['neworderflag']){
if($checkcode){
$smallorders = pdo_fetchall("SELECT * FROM ".tablename('wlmerchant_smallorder')."WHERE plugin = 'bargain' AND orderid = {$id} AND status = 1 AND checkcode = '{$checkcode}'");
}else{
$smallorders = pdo_fetchall("SELECT * FROM ".tablename('wlmerchant_smallorder')."WHERE plugin = 'bargain' AND orderid = {$id} AND status = 1 ORDER BY id ASC LIMIT {$num}");
}
if($smallorders){
if($mid){
$uid = pdo_getcolumn(PDO_NAME.'merchantuser',array('storeid'=>$order['sid'],'mid'=>$mid),'id');
}else{
$uid = 0;
}
foreach ($smallorders as $k => $small){
$res = Order::finishSmallorder($small['id'],$uid,$type);
}
}else{
if (is_mobile()) {
die(json_encode(array('errno' => 1, 'message' => '无可用核销码','data'=>'')));
} else {
show_json(0, '无可用核销码');
}
}
}else {
$record = pdo_get('wlmerchant_bargain_userlist', array('id' => $order['specid']));
//添加更新
$arr = array();
if ($record['usedtime']) {
$a = unserialize($record['usedtime']);
for ($i = 0; $i < $num; $i++) {
$arr['time'] = time();
$arr['type'] = $type;
$arr['ver'] = $mid;
$a[] = $arr;
}
$record['usedtime'] = serialize($a);
} else {
$a = array();
for ($i = 0; $i < $num; $i++) {
$arr['time'] = time();
$arr['type'] = $type;
$arr['ver'] = $mid;
$a[] = $arr;
}
$record['usedtime'] = serialize($a);
}
$params['usetimes'] = $record['usetimes'] - $num;
$params['usedtime'] = $record['usedtime'];
if ($params['usetimes'] < 1) {
pdo_update('wlmerchant_order', array('status' => 2), array('id' => $order['id']));
//添加结算抢购订单到计划任务
$ordertask = array(
'type' => 'bargain',
'orderid' => $order['id']
);
$ordertask = serialize($ordertask);
Queue::addTask(2, $ordertask, time(), $order['id']);
if ($order['disorderid']) {
$res = pdo_update('wlmerchant_disorder', array('status' => 1), array('id' => $order['disorderid'], 'status' => 0));
if ($res) {
$distask = array(
'type' => 'bargain',
'orderid' => $order['disorderid']
);
$distask = serialize($distask);
Queue::addTask(3, $distask, time(), $order['disorderid']);
}
}
}
$res = pdo_update('wlmerchant_bargain_userlist', $params, array('id' => $record['id']));
}
if ($res) {
$active = pdo_get('wlmerchant_bargain_activity', array('id' => $order['fkid']), array('name'));
$order['checkcode'] = pdo_getcolumn(PDO_NAME . 'bargain_userlist', array('id' => $order['specid']), 'qrcode');
SingleMerchant::verifRecordAdd($order['aid'], $order['sid'], $order['mid'], 'bargain', $order['id'], $order['checkcode'], $active['name'], $type);
$member = pdo_get('wlmerchant_member', array('id' => $order['mid']), array('openid'));
//发送核销成功通知
$info = array(
'first' => '您好,您的商品已经成功核销' ,
'goods_name' => $active['name'],//商品名称
'goods_num' => $num,//商品数量
'time' => date('Y-m-d H:i:s',time()),//核销时间
'order_no' => $order['orderno'],//订单编号
'remark' => '如有疑问请联系客服'
);
TempModel::sendInit('write_off',$order['mid'],$info,$_W['source']);
if ($type == 2) {
$info2 = array(
'first' => '核销操作成功' ,
'goods_name' => $active['name'],//商品名称
'goods_num' => $num,//商品数量
'time' => date('Y-m-d H:i:s',time()),//核销时间
'order_no' => $order['orderno'],//订单编号
'remark' => '订单编号:['.$order['orderno'].']',
);
TempModel::sendInit('write_off',$_W['mid'],$info2,$_W['source']);
}
return 1;
} else {
return 0;
}
}
/**
* 异步支付结果回调 ,处理业务逻辑
*
* @access public
* @name
* @param mixed 参数一的说明
* @return array
*/
static function paybargainOrderNotify($params) {
global $_W;
Util::wl_log('payResult_notify', PATH_PLUGIN . "bargain/data/", $params); //写入异步日志记录
$order_out = pdo_fetch("select * from" . tablename(PDO_NAME . 'order') . "where orderno='{$params['tid']}'");
$_W['aid'] = $order_out['aid'];
$_W['uniacid'] = $order_out['uniacid'];
$_W['wlsetting']['creditset'] = Setting::wlsetting_read('creditset');
$activeInfo = self::getSingleActive($order_out['fkid'], '*');
$data = self::getbargainOrderPayData($params, $order_out); //得到支付参数,处理代付
pdo_update(PDO_NAME . 'order', $data, array('orderno' => $params['tid'])); //更新订单状态
if ($order_out) {
if ($order_out['expressid']) {
$data['status'] = 8;
}else{
//创建记录
Order::createSmallorder($order_out['id'],5);
//计算过期时间
if ($activeInfo['cutoffstatus']) {
$data['estimatetime'] = time() + $activeInfo['cutoffday'] * 86400;
} else {
$data['estimatetime'] = $activeInfo['cutofftime'];
}
//计算通知时间
$data['remindtime'] = Order::remindTime($data['estimatetime']);
}
$record = array(
'status' => 2,
'updatetime' => time(),
'expressid' => $order_out['expressid']
);
pdo_update(PDO_NAME . 'bargain_userlist', $record, array('id' => $order_out['specid']));
//抽奖领取
if($order_out['drawid'] > 0){
pdo_update('wlmerchant_draw_record',array('is_get' => 2),array('id' => $order_out['drawid']));
}
//处理分销
if($order_out['cerditmoney'] > 0 && $_W['wlsetting']['creditset']['nodistribution'] > 0){
$nodis = 1;
}else{
$nodis = 0;
}
if (p('distribution') && empty($activeInfo['isdistri']) && empty($order_out['drawid']) && empty($nodis) ) {
$disarray = unserialize($activeInfo['disarray']);
$disorderid = Distribution::disCore($order_out['mid'], $order_out['goodsprice'], $disarray, 1, 0, $order_out['id'], 'bargain', $activeInfo['dissettime'],$activeInfo['isdistristatus']);
$data['disorderid'] = $disorderid;
}
//支付有礼
if($activeInfo['paidid'] > 0){
$data['paidprid'] = Paidpromotion::getpaidpr(9,$activeInfo['paidid'],$order_out['mid'],$order_out['id'],$data['paytype'],$order_out['price'],$order_out['num']);
}
//处理业务员佣金
if(p('salesman')){
$data['salesarray'] = Salesman::saleCore($order_out['sid'],'bargain');
}
//添加标签
if (p('userlabel')) {
$_W['aid'] = $order_out['aid'];
Userlabel::addlabel($order_out['mid'], $order_out['fkid'], 'bargain');
}
pdo_update(PDO_NAME . 'order', $data, array('orderno' => $params['tid'])); //更新订单状态
//卡密商品
if($activeInfo['usestatus'] == 3){
$rushtask = array(
'plugin' => 'bargain',
'orderid' => $order_out['id']
);
$rushtask = serialize($rushtask);
Queue::addTask(10, $rushtask, time(), $order_out['id']);
}
//通知商户
News::addSysNotice($order_out['uniacid'],2,$order_out['sid'],0,$order_out['id']);
Store::addFans($order_out['sid'], $order_out['mid']);
News::paySuccess($order_out['id'],'bargain');
//小票打印
Order::sendPrinting($order_out['id'],'bargain');
}
}
static function getbargainOrderPayData($params, $order_out) {
$data = array('status' => $params['result'] == 'success' ? 1 : 0);
if ($params['is_usecard'] == 1) {
$fee = $params['card_fee'];
$data['is_usecard'] = 1;
} else {
$fee = $params['fee'];
}
//$paytype = array('credit' => 1, 'wechat' => 2, 'alipay' => 3, 'delivery' => 4, 'wxapp' => 5);
$data['paytype'] = $params['type'];
if ($params['tag']['transaction_id']) $data['transid'] = $params['tag']['transaction_id'];
$data['paytime'] = TIMESTAMP;
$data['price'] = $fee;
$data['blendcredit'] = $params['blendcredit'];
return $data;
}
static function paybargainOrderReturn($params, $backurl = false) {
Util::wl_log('payResult_return', PATH_PLUGIN . "bargain/data/", $params);//写入日志记录
$order_out = pdo_get(PDO_NAME . 'order', array('orderno' => $params['tid']), array('id'));
wl_message('购买成功',h5_url('pages/mainPages/paySuccess/paySuccess',['id'=>$order_out['id'],'type'=>8]), 'success');
}
static function refund($id, $money, $unline = '') {
$order = pdo_get(PDO_NAME . 'order', array('id' => $id));
if($money < $order['blendcredit']){
$blendcredit = $money;
$money = 0;
}else if($order['blendcredit'] > 0){
$blendcredit = $order['blendcredit'];
$money = sprintf("%.2f",$money - $blendcredit);
}
if ($unline) {
$res['status'] = 1;
} else {
$res = wlPay::refundMoney($id, $money, '砍价订单退款', 'bargain', 2,$blendcredit);
}
if ($res['status']) {
pdo_update('wlmerchant_smallorder', array('status' => 3, 'refundtime' => time()),array('plugin' => 'bargain','orderid'=>$id,'status'=> array(1,4)));
if ($order['applyrefund']) {
pdo_update('wlmerchant_order', array('status' => 7, 'refundtime' => time(), 'applyrefund' => 2), array('id' => $order['id']));
$reason = '买家申请退款。';
} else {
pdo_update('wlmerchant_order', array('status' => 7, 'refundtime' => time()), array('id' => $order['id']));
$reason = '砍价系统退款。';
}
if($order['redpackid']){
pdo_update('wlmerchant_redpack_records',array('status' => 0,'usetime' =>0,'orderid' => 0,'plugin' =>''),array('id' => $order['redpackid']));
}
//分销订单退款
if ($order['disorderid']) {
Distribution::refunddis($order['disorderid']);
}
News::refundNotice($id,'bargain',$money,$reason);
} else {
pdo_fetch("update" . tablename('wlmerchant_order') . "SET failtimes = failtimes+1 WHERE id = {$id}");
}
return $res;
}
//取消订单
static function cancelorder($id){
global $_W;
$order = pdo_get('wlmerchant_order',array('id' => $id),array('specid','mid','uniacid','usecredit','fkid','redpackid'));
$_W['uniacid'] = $order['uniacid'];
$res1 = pdo_update('wlmerchant_bargain_userlist',array('orderid' => 0),array('id' => $order['specid']));
if($res1){
$res = pdo_update('wlmerchant_order',array('status' => 5),array('id' => $id));
if($order['redpackid']){
pdo_update('wlmerchant_redpack_records',['status' => 0],['id' => $order['redpackid']]);
}
if ($order['usecredit'] > 0) {
$goodname = pdo_getcolumn(PDO_NAME . 'bargain_activity', array('id' => $order['fkid']), 'name');
Member::credit_update_credit1($order['mid'], $order['usecredit'], '取消砍价商品:[' . $goodname . ']订单返还积分');
}
}else{
$res = 0;
}
return $res;
}
static function doTask() {
global $_W;
//修改砍价活动状态
$activitys1 = pdo_getall(PDO_NAME . "bargain_activity", array('starttime <' => time(), 'status' => 1), array('id'));
if (!empty($activitys1)) {
foreach ($activitys1 as $k => $v) {
pdo_update(PDO_NAME . "bargain_activity", array('status' => 2), array('id' => $v['id']));
}
}
$activitys2 = pdo_getall(PDO_NAME . "bargain_activity", array('endtime <' => time(), 'status' => 2), array('id'));
if (!empty($activitys2)) {
foreach ($activitys2 as $k => $v2) {
pdo_update(PDO_NAME . "bargain_activity", array('status' => 4), array('id' => $v2['id']));
$bargainuser = pdo_getall('wlmerchant_bargain_userlist', array('activityid' => $v2['id'], 'status' => 1), array('id'));
if (!empty($bargainuser)) {
foreach ($bargainuser as $k => $user) {
pdo_update(PDO_NAME . "bargain_userlist", array('status' => 3), array('id' => $user['id']));
}
}
}
}
//自动过期订单
$nowtime = time();
$overorders = pdo_fetchall("SELECT id,fkid,uniacid,aid FROM " . tablename('wlmerchant_order') . "WHERE status = 1 AND estimatetime < {$nowtime} AND estimatetime > 0 AND plugin = 'bargain' ORDER BY id DESC LIMIT 10");
if ($overorders) {
foreach ($overorders as $key => $over) {
pdo_update('wlmerchant_order', array('status' => 9, 'overtime' => time()), array('id'=>$over['id']));
//自动退款
$_W['uniacid'] = $over['uniacid'];
$_W['aid'] = $over['aid'];
$orderset = Setting::wlsetting_read('orderset');
$goods = pdo_get('wlmerchant_bargain_activity', array('id' => $over['fkid']), array('overrefund'));
if ($orderset['reovertime'] && $goods['overrefund'] ) {
self::refund($over['id'],0,0);
}
}
}
}
}
?>

53
addons/weliam_smartcity/plugin/bargain/config.xml

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<name><![CDATA[砍价活动]]></name>
<identifie><![CDATA[bargain]]></identifie>
<version><![CDATA[1.0.0]]></version>
<type><![CDATA[market]]></type>
<description><![CDATA[砍价是一款邀请好友协助为商品砍价的营销活动]]></description>
<author><![CDATA[微连科技]]></author>
<url><![CDATA[http://www.weliam.cn/]]></url>
</application>
<setting>
<agent embed="true" />
<system embed="true" />
<store embed="true" />
<task embed="true" />
</setting>
<storemenu>
<menu title="商品" font="fa-inbox">
<entry title="商品列表" ac="bargain_web" do="activitylist" actions='["do",["activitylist","createactive"]]' iscover="true" />
</menu>
<menu title="记录" font="fa-inbox">
<entry title="砍价列表" ac="bargain_web" do="userlist"/>
<entry title="砍价记录" ac="bargain_web" do="bargainrecord"/>
</menu>
</storemenu>
<agentmenu>
<menu title="商品" font="fa-inbox">
<entry title="商品列表" ac="bargain_web" do="activitylist" actions='["do",["activitylist","createactive"]]' iscover="true" />
<entry title="分类列表" ac="bargain_web" do="categorylist"/>
</menu>
<menu title="记录" font="fa-inbox">
<entry title="砍价列表" ac="bargain_web" do="userlist"/>
<entry title="砍价记录" ac="bargain_web" do="bargainrecord"/>
</menu>
<menu title="设置" font="fa-inbox">
<entry title="砍价设置" ac="bargain_web" do="setting" />
</menu>
</agentmenu>
<systemmenu>
<menu title="商品" font="fa-inbox">
<entry title="商品列表" ac="bargain_web" do="activitylist" actions='["do",["activitylist","createactive"]]' iscover="true" />
<entry title="分类列表" ac="bargain_web" do="categorylist"/>
</menu>
<menu title="记录" font="fa-inbox">
<entry title="砍价列表" ac="bargain_web" do="userlist"/>
<entry title="砍价记录" ac="bargain_web" do="bargainrecord"/>
</menu>
<menu title="设置" font="fa-inbox">
<entry title="砍价设置" ac="bargain_web" do="setting" />
</menu>
</systemmenu>
</manifest>

BIN
addons/weliam_smartcity/plugin/bargain/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

408
addons/weliam_smartcity/plugin/bargain/uniapp.php

@ -0,0 +1,408 @@
<?php
defined('IN_IA') or exit('Access Denied');
class BargainModuleUniapp extends Uniapp {
/**
* Comment: 砍价商品信息列表
* Author: zzw
* Date: 2019/8/7 14:09
*/
public function homeList(){
global $_W,$_GPC;
#1、参数获取
$page = $_GPC['page'] ? $_GPC['page'] : 1;
$page_index = $_GPC['page_index'] ? $_GPC['page_index'] : 10;
$page_start = $page * $page_index - $page_index;
$lng = $_GPC['lng'] ? $_GPC['lng'] : 0;//用户当前所在经度
$lat = $_GPC['lat'] ? $_GPC['lat'] : 0;//用户当前所在纬度
$status = $_GPC['status'] ? $_GPC['status'] : 0;
$is_total = $_GPC['is_total'] ? : 0;//0=不获取总页数;1=获取总页数
$cate_id = $_GPC['cate_id'] ? : 0;//商品分类id
$is_vip = $_GPC['is_vip'] ? : 0;//是否获取会员专属商品
$time = $_GPC['time'] ?: time();//时间筛选
$week = date("w", $time);//当前时间的星期
if ($week == 0) $week = 7;//星期天时值的转换
$toDay = date("j", $time);//当前时间的日期
$set = Setting::agentsetting_read("pluginlist");
$sort = $_GPC['sort'] ? : $set['kjsort'];
#2、生成基本查询条件
$where = " a.aid = {$_W['aid']} AND a.uniacid = {$_W['uniacid']} ";
if($status > 0){
$ids = explode(',',$status);
if(count($ids) > 1){
$where .= " AND a.status IN ({$status}) ";
}else{
$where .= " AND a.status = {$status} ";
}
}else{
$where .= " AND a.status IN (1,2) ";
}
if($cate_id > 0){
$where .= " AND a.cateid = {$cate_id} ";
}
if ($is_vip > 0) $where .= " AND a.vipstatus IN (1,2) ";
$where .= " AND CASE a.usedatestatus
WHEN 1 THEN a.`week` LIKE '%\"{$week}\"%'
WHEN 2 THEN a.`day` LIKE '%\"{$toDay}\"%'
WHEN 0 THEN a.id > 0
END ";
#3、生成排序条件
switch ($sort) {
case 1:$order = " ORDER BY a.createtime DESC ";break;//创建时间
case 2:break;//店铺距离
case 3:$order = " ORDER BY sort DESC ";break;//默认排序
case 4:$order = " ORDER BY pv DESC ";break;//浏览人气
case 5:$order = " ORDER BY buy_num DESC ";break;//商品销量
case 6:$order = " ORDER BY a.sort DESC,buy_num DESC ";break;//精选 推荐、销量排序
case 7:$order = " ORDER BY a.pv DESC,buy_num DESC ";break;//最热 浏览量、销量排序
}
#4、获取商品列表
if($sort != 2){
//普通查询
$sql = "SELECT a.id,a.id as goods_id,IFNULL(sum(b.num),0) as buy_num FROM "
. tablename(PDO_NAME . "bargain_activity")
. " as a LEFT JOIN ".tablename(PDO_NAME."order")
. " as b ON a.id = b.fkid AND b.plugin = 'bargain' AND b.uniacid = {$_W['uniacid']} AND b.status IN (1,2,3,4,8,6,7,9) "
."WHERE {$where} GROUP BY a.id {$order} ";
if($is_total == 1) $total = count(pdo_fetchall($sql));
$info = pdo_fetchall($sql." LIMIT {$page_start},{$page_index} ");
}else{
//关联店铺查询
$info = pdo_fetchall("SELECT a.id as goods_id,b.id,b.location FROM "
. tablename(PDO_NAME."bargain_activity")
." as a RIGHT JOIN "
.tablename(PDO_NAME."merchantdata")
." as b ON a.sid = b.id WHERE {$where} ");
$info = Store::getstores($info, $lng, $lat, 2);
if($is_total == 1) $total = count($info);
$info = array_slice($info,$page_start,$page_index);
}
#5、循环处理信息
foreach ($info as $key => &$val) {
//获取最新的商品信息
$val = WeliamWeChat::getHomeGoods(7, $val['goods_id']);
$val['url'] = h5_url('pages/subPages/goods/index',['type'=>7,'id'=>$val['id']]);
//添加店铺链接
$val['shop_url'] = h5_url('pages/mainPages/store/index',['sid'=>$val['sid']]);
$val['distance'] = Store::shopLocation($val['sid'], $lng, $lat);
if($is_vip > 0){
$val['price'] = sprintf("%.2f",$val['price'] - $val['discount_price']);
}
//删除多余的信息
unset($val['user_list']);
unset($val['address']);
unset($val['user_num']);
unset($val['totalnum']);
unset($val['sid']);
}
#6、信息拼装
if($is_total == 1){
$data['total'] = ceil($total / $page_index);
$data['list'] = $info;
$this->renderSuccess('砍价商品信息列表', $data);
}
$this->renderSuccess('砍价商品信息列表',$info);
}
/**
* Comment: 参加砍价
* Author: zzw
* Date: 2019/8/23 14:57
*/
public function launchBargain(){
global $_W,$_GPC;
#1、参数获取
$_GPC['id'] ? $id = $_GPC['id'] : $this->renderError('缺少参数:id');//商品id
//判断绑定手机
$mastmobile = unserialize($_W['wlsetting']['userset']['plugin']);
if (empty($_W['wlmember']['mobile']) && in_array('bargain',$mastmobile)){
$this->renderError('未绑定手机号');
}
#2、判断是否已经参与当前砍价活动
$is_participate = pdo_get(PDO_NAME."bargain_userlist"
,['activityid'=>$id,'mid'=>$_W['mid']]);
if($is_participate) $this->renderError("每人只能参加一次哦!");
#3、获取商品信息
$goods = pdo_get(PDO_NAME."bargain_activity",['id'=>$id]
,['sid','oldprice','joinlimit','starttime','usedatestatus','week','day','status','endtime','vipstatus','level']);
if(!$goods) $this->renderError('商品不存在');
#4、判断是否开始/结束
if($goods['starttime'] > time()) $this->renderError('活动未开始');
if($goods['endtime'] < time()) $this->renderError('活动已结束');
if($goods['status'] != 2) $this->renderError('活动未在进行中!');
//判断时间
if($goods['usedatestatus'] > 0){
$check = WeliamWeChat::checkUseDateStatus($goods['usedatestatus'],$goods['week'],$goods['day']);
if(empty($check)){
$this->renderError('今日活动未在进行中');
}
}
#5、判断参与人数是否已满
if($goods['joinlimit'] > 0){
$total = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename(PDO_NAME."bargain_userlist") ." WHERE activityid = {$id} " );
if($total >= $goods['joinlimit']) $this->renderError("参加人数已到上限!");
}
//判断会员
if($goods['vipstatus'] == 2){
$level = unserialize($goods['level']);
$halfflag = WeliamWeChat::VipVerification($_W['mid']);
if(empty($halfflag)){
$this->renderError('请先开通会员才能参加此活动');
}else if(!empty($level)){
if(!in_array($halfflag['levelid'],$level)){
$this->renderError('您所在的会员等级无法参加此活动');
}
}
}
#6、生成参与砍价的信息
$data = [
'uniacid'=>$_W['uniacid'],//
'aid'=>$_W['aid'],//
'activityid'=>$id,//商品id
'merchantid'=>$goods['sid'],//商户id
'mid'=>$_W['mid'],//用户id
'status'=>1,//状态 1进行中 2支付 3已失败
'price'=>$goods['oldprice'],//当前价格
'createtime'=>time(),//创建时间
'updatetime'=>time(),//修改时间
];
#7、储存参与信息
$res = pdo_insert(PDO_NAME."bargain_userlist",$data);
if ($res) $this->renderSuccess('参与成功',['id'=>pdo_insertid()]);
else $this->renderError('参与失败');
}
/**
* Comment: 用户参加砍价具体信息
* Author: zzw
* Date: 2019/8/23 13:49
*/
public function detail(){
global $_W,$_GPC;
#1、 参数接收
$id = $_GPC['id'] ? : 0;
$order_id = $_GPC['order_id'] ? : 0;
if(!$id && !$order_id) $this->renderError("缺少参数:id");
#2、条件生成
if($id) $where = " WHERE a.id = {$id} ";
else $where = " WHERE a.orderid = {$order_id} ";
if(!empty($id)){
$usermid = pdo_getcolumn(PDO_NAME.'bargain_userlist',array('id'=>$id),'mid');
}else{
$usermid = pdo_getcolumn(PDO_NAME.'bargain_userlist',array('orderid'=>$order_id),'mid');
}
$vip = WeliamWeChat::VipVerification($usermid);
$vipid = $vip['id'];
$viplevelid = $vip['levelid'];
#3、获取信息
$field = "a.activityid as goods_id,b.stock,b.thumbs,b.name,u.nickname,u.avatar,b.endtime,a.price,b.price as goods_price,b.oldprice,b.viparray,b.vipstatus,b.bar_bgc,b.bar_image,
(b.stock - (SELECT count(id) FROM ".tablename('wlmerchant_order')
." WHERE fkid = a.activityid AND plugin = 'bargain' AND status IN (0,1,2,3,4,8,6,7,9))) as stk,
m.storename,m.address,m.location,m.mobile,a.id,a.mid,b.submitmoneylimit,a.status,a.orderid";
$sql = "SELECT {$field} FROM ".tablename(PDO_NAME."bargain_userlist")
." as a RIGHT JOIN ".tablename(PDO_NAME."bargain_activity")
." as b ON a.activityid = b.id RIGHT JOIN ".tablename(PDO_NAME."merchantdata")
." as m ON a.merchantid = m.id RIGHT JOIN ".tablename(PDO_NAME."member")
." as u ON a.mid = u.id ".$where;
$info = pdo_fetch($sql);
if(!$info) $this->renderError('砍价信息不存在!');
//砍价信息处理
if($info['vipstatus'] == 1 && $vipid > 0){
$vipdiscount = WeliamWeChat::getVipDiscount($info['viparray'],$viplevelid);
$info['goods_price'] = sprintf("%.2f",$info['goods_price'] - $vipdiscount);
}
//商品图片处理
$info['location'] = unserialize($info['location']);
$info['thumbs'] = unserialize($info['thumbs']);
if(is_array($info['thumbs']) && count($info['thumbs']) > 0){
foreach($info['thumbs'] as $thumbK => &$thumbV){
$thumbV = tomedia($thumbV);
}
}
if(!empty($info['bar_image'])){
$info['bar_image'] = tomedia($info['bar_image']);
}
if(empty($info['bar_bgc'])){
$info['bar_bgc'] = '#68d3ff';
}
#4、获取帮砍记录
$info['list'] = pdo_fetchall("SELECT a.mid,b.nickname,b.avatar,FROM_UNIXTIME(a.createtime,'%Y-%m-%d %H:%i:%S') as createtime,a.bargainprice as price FROM "
.tablename(PDO_NAME."bargain_helprecord")
." as a LEFT JOIN ".tablename(PDO_NAME."member")
." as b ON a.mid = b.id WHERE a.userid = {$info['id']} ORDER BY a.createtime DESC ");
#5、判断当前用户是否砍价
$info['is_bargain'] = 0;//0=未砍价 1=已砍价
if (is_array($info['list']) && count($info['list']) > 0){
$ids = array_column($info['list'],'mid');
if(in_array($_W['mid'],$ids)) $info['is_bargain'] = 1;
}
#6、获取已砍价的百分比
$total = sprintf( "%.2f",$info['oldprice'] - $info['goods_price']);//最多可以砍掉的价格
$price = sprintf( "%.2f",$info['oldprice'] - $info['price']);//已经砍掉的价格
$info['proportion'] = sprintf("%.2f",$price / $total);
$info['is_originator'] = $info['mid'] == $_W['mid'] ? 1 : 0;//0=不是发起者;1=是发起者
//判断是否可以出手购买
if($info['status'] == 1 && $info['price'] <= $info['submitmoneylimit'] && $info['is_originator'] == 1 && empty($info['orderid'])){
$info['buytip'] = 1;
}
$this->renderSuccess('用户参加砍价具体信息',$info);
}
/**
* Comment: 砍价操作
* Author: zzw
* Date: 2019/8/23 18:04
*/
public function cut(){
global $_W,$_GPC;
#1、参数获取
$_GPC['id'] ? $id = $_GPC['id'] : $this->renderError('缺少参数:id');//参与砍价的信息id
$tableHelp = PDO_NAME."bargain_helprecord";
$tableList = PDO_NAME."bargain_userlist";
//判断是否绑定手机
$mastmobile = unserialize($_W['wlsetting']['userset']['plugin']);
if (empty($_W['wlmember']['mobile']) && in_array('helpbargain',$mastmobile)){
$this->renderError('未绑定手机号');
}
#2、获取砍价参与信息
MysqlFunction::setTrans(4);
MysqlFunction::startTrans();
$info = pdo_get($tableList,['id'=>$id] ,['activityid','mid','status','price','orderid']);
if(!$info) $this->renderError('参加信息不存在');
if($info['status'] != 1) $this->renderError('当前已不可进行砍价!');
#3、判断当前用户是否已砍过
$is_cut = pdo_get($tableHelp,['userid'=>$id,'mid'=>$_W['mid']]);
if($is_cut) $this->renderError("请不要重复操作!");
#4、设置信息获取
$set = Setting::agentsetting_read("bargainset");
$day = date("Y-m-d",time());
$dayStart = strtotime($day." 00:00:00");
$dayEnd = strtotime($day." 23:59:59");
#5、判断当前用户今日砍价次数是否已到上限
if($set['syslimit'] > 0){
$is_max = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename($tableHelp)
." WHERE mid = {$_W['mid']} AND createtime > {$dayStart} AND createtime < {$dayEnd} ");
if($is_max >= $set['syslimit']) $this->renderError('今日砍价次数已到上限!');
}
#6、获取商品信息
$goods = pdo_get(PDO_NAME."bargain_activity",['id'=>$info['activityid']]
,['helplimit','dayhelpcount','onlytimes','viparray','usedatestatus','week','day','status','vipstatus','rules','price','endtime',]);
//判断时间
if($goods['usedatestatus'] > 0){
$check = WeliamWeChat::checkUseDateStatus($goods['usedatestatus'],$goods['week'],$goods['day']);
if(empty($check)){
$this->renderError('今日活动未在进行中');
}
}
#7、更具用户是否为会员获取低价信息
$vipInfo = WeliamWeChat::VipVerification($info['mid']);
$vipId = $vipInfo['id'];
$vipLevel = $vipInfo['levelid'];
if($goods['vipstatus'] ==1 && $vipId > 0){
$vipdiscount = WeliamWeChat::getVipDiscount($goods['viparray'],$vipLevel);
$floorPrice = sprintf("%.2f", $goods['price'] - $vipdiscount);
}else{
$floorPrice = $goods['price'];
}
#8、判断是否已经到达低价
if($info['price'] <= $floorPrice) $this->renderError("已被砍到底价!");
if($goods['endtime'] <= time()) $this->renderError('活动已结束!');
if($goods['status'] != 2) $this->renderError('活动未在进行中!');
#9、好友帮砍限制数量 限制当前活动商品,最多多少好友帮忙砍价.0或空则无限
if($goods['helplimit'] > 0){
$totalNum = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename($tableHelp) ." WHERE userid = {$id} ");
if($totalNum >= $goods['helplimit']) $this->renderError('帮砍好友已到上限!');
}
#10、每天帮砍好友人数限制 限制每天帮助的好友数量.0或空则无限
if($goods['dayhelpcount'] > 0){
$dayTotalNum = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename($tableHelp)
." WHERE userid = {$id} AND authorid != mid AND createtime > {$dayStart} AND createtime < {$dayEnd} ");
if($dayTotalNum >= $goods['dayhelpcount']) $this->renderError('今日帮砍好友已到上限!');
}
#11、判断该商品每人可砍价次数
if($goods['onlytimes'] > 0){
$dayTotalNum = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename($tableHelp)
." WHERE activityid = {$info['activityid']} AND mid = {$_W['mid']} AND authorid != {$_W['mid']} ");
if($dayTotalNum >= $goods['onlytimes']) $this->renderError('当前商品的帮砍次数已达上限!');
}
#12、生成应该砍掉的价格
$ruleList = unserialize($goods['rules']);
$startPrice = 0.5;
$endPrice = 1;
if(is_array($ruleList) && count($ruleList) > 0){
$orderWhere = array_column($ruleList,'rule_pice');
array_multisort($orderWhere, SORT_DESC, $ruleList);
foreach($ruleList as $priceK => $priceV){
if($info['price'] >= $priceV['rule_pice']){
$startPrice = $priceV['rule_start'];
$endPrice = $priceV['rule_end'];
break;
}
}
}
$price = sprintf("%.2f",$startPrice+mt_rand()/mt_getrandmax()*($endPrice-$startPrice));
if($price < 0.01){
$price = 1;
}
$newPayPrice = sprintf("%.2f",$info['price'] - $price);//新的支付价格
if($newPayPrice < $floorPrice){
$price = sprintf("%.2f",$info['price'] - $floorPrice);
$newPayPrice = sprintf("%.2f",$info['price'] - $price);//新的支付价格
}
#13、修改参与砍价信息中的价格信息
$save = pdo_update($tableList,['price'=>$newPayPrice],['id'=>$id]);
if(!$save){
MysqlFunction::rollback();
$this->renderError('砍价失败,请刷新重新!');
}
#14、储存砍价记录信息
$data = [
'uniacid' => $_W['uniacid'] ,
'aid' => $_W['aid'] ,
'activityid' => $info['activityid'] ,//商品id
'userid' => $id ,//参与信息的id
'authorid' => $info['mid'] ,//发起人id
'mid' => $_W['mid'] ,//当前用户id
'bargainprice' => $price ,//砍价价格
'afterprice' => $newPayPrice ,//砍后价格
'createtime' => time() ,//创建时间
];
$res = pdo_insert($tableHelp,$data);
if($res){
if($info['mid'] != $_W['mid']){
//帮砍操作 发送信息通知砍价发起人
$modelData = [
'first' => '' ,
'type' => '砍价提醒' ,//业务类型
'content' => '您的好友'.$_W['wlmember']['nickname'].'成功帮您砍下'.$price.'元' ,//业务内容
'status' => '当前价格'.$newPayPrice."元" ,//处理结果
'time' => date("Y-m-d H:i:s",$data['createtime']) ,//操作时间
'remark' => ''
];
$link = h5_url('pages/subPages/bargin/barginDetail/barginDetail',['bargin_id'=>$id]);
TempModel::sendInit('service',$info['mid'],$modelData,$_W['source'],$link);
}
MysqlFunction::commit();
$this->renderSuccess('砍价成功',['price'=>$price]);
}else{
MysqlFunction::rollback();
$this->renderError('砍价失败,请刷新重新!');
}
}
/**
* Comment: 获取砍价分类列表
* Author: wlf
* Date: 2020/09/24 14:06
*/
public function cateList(){
global $_W , $_GPC;
$list = pdo_getall('wlmerchant_bargain_category',array('uniacid' => $_W['uniacid'],'aid' => $_W['aid'],'is_show' => 0),array('id','name'), '' , 'sort DESC');
$this->renderSuccess('砍价分类',$list);
}
}

658
addons/weliam_smartcity/plugin/bargain/web/controller/bargain_web.ctrl.php

@ -0,0 +1,658 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Bargain_web_WeliamController {
function activitylist() {
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$data = array();
if (!empty($_GPC['status'])) {
if ($_GPC['status'] == 4) {
$data['#status'] = "(0,4)";
} else {
$data['status'] = intval($_GPC['status']);
}
}
$data['aid'] = $_W['aid'];
if (is_store()) {
$data['sid'] = $_W['storeid'];
}
if (!empty($_GPC['keyword'])) {
if (!empty($_GPC['keywordtype'])) {
switch ($_GPC['keywordtype']) {
case 1:
$data['@name@'] = $_GPC['keyword'];
break;
case 2:
$data['id'] = $_GPC['keyword'];
break;
default:
break;
}
if ($_GPC['keywordtype'] == 3) {
$keyword = $_GPC['keyword'];
$params[':storename'] = "%{$keyword}%";
$merchants = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_merchantdata') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND storename LIKE :storename", $params);
if ($merchants) {
$sids = "(";
foreach ($merchants as $key => $v) {
if ($key == 0) {
$sids .= $v['id'];
} else {
$sids .= "," . $v['id'];
}
}
$sids .= ")";
$data['sid#'] = $sids;
} else {
$data['sid#'] = "(0)";
}
}
}
}
$activity = Bargain::getNumActive('*', $data, 'sort DESC,ID DESC', $pindex, $psize, 1);
$pager = $activity[1];
$activity = $activity[0];
foreach ($activity as $key => &$act) {
$act['storename'] = pdo_getcolumn(PDO_NAME . 'merchantdata', array('id' => $act['sid']), 'storename');
$act['pv'] = $act['pv'] + $act['falselooknum'];
$act['alreadypay'] = WeliamWeChat::getSalesNum(5,$act['id'],0,2,0);
if (empty($act['alreadypay'])) {
$act['alreadypay'] = 0;
}
$act['alreadyuse'] = WeliamWeChat::getSalesNum(5,$act['id'],0,3,0);
if (empty($act['alreadyuse'])) {
$act['alreadyuse'] = 0;
}
$act['bargaining'] = pdo_fetchcolumn('SELECT count(id) FROM ' . tablename('wlmerchant_bargain_userlist') . " WHERE uniacid = {$_W['uniacid']} AND activityid = {$act['id']} AND status = 1 ");
if (empty($act['bargaining'])) {
$act['bargaining'] = 0;
}
}
//统计数量
if (is_store()) {
$status0 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']} and sid = {$_W['storeid']}");
$status1 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=1 and aid={$_W['aid']} and sid = {$_W['storeid']}");
$status2 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=2 and aid={$_W['aid']} and sid = {$_W['storeid']}");
$status3 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=3 and aid={$_W['aid']} and sid = {$_W['storeid']}");
$status4 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status IN (0,4) and aid={$_W['aid']} and sid = {$_W['storeid']}");
$status5 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=5 and aid={$_W['aid']} and sid = {$_W['storeid']}");
$status6 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=6 and aid={$_W['aid']} and sid = {$_W['storeid']}");
$status8 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=8 and aid={$_W['aid']} and sid = {$_W['storeid']}");
} else {
$status0 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and aid={$_W['aid']}");
$status1 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=1 and aid={$_W['aid']}");
$status2 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=2 and aid={$_W['aid']}");
$status3 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=3 and aid={$_W['aid']}");
$status4 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status IN (0,4) and aid={$_W['aid']}");
$status5 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=5 and aid={$_W['aid']}");
$status6 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=6 and aid={$_W['aid']}");
$status8 = pdo_fetchcolumn('SELECT COUNT(id) FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE uniacid={$_W['uniacid']} and status=8 and aid={$_W['aid']}");
}
include wl_template('bargain/activitylist');
}
function changepv() {
global $_W, $_GPC;
$id = $_GPC['id'];
$type = $_GPC['type'];
$newvalue = trim($_GPC['value']);
if ($type == 1) {
$pv = pdo_getcolumn('wlmerchant_bargain_activity', array('id' => $id), 'pv');
$newvalue = intval($newvalue - $pv);
$res = pdo_update('wlmerchant_bargain_activity', array('falselooknum' => $newvalue), array('id' => $id));
} elseif ($type == 2) {
$res = pdo_update('wlmerchant_bargain_activity', array('sort' => $newvalue), array('id' => $id));
}
if ($res) {
show_json(1, '修改成功');
} else {
show_json(0, '修改失败,请重试');
}
}
function changestatus() {
global $_W, $_GPC;
$id = $_GPC['id'];
$status = $_GPC['status'];
if ($status) {
$res = Bargain::updateActive(array('status' => 0), array('id' => $id));
} else {
$goods = pdo_get('wlmerchant_bargain_activity',array('id' => $id),array('starttime','endtime','sid'));
if(is_store()){
$examine = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$goods['sid']),'audits');
if(empty($examine)){
$changestatus = 5;
}
}
if(empty($changestatus)){
if ($goods['starttime'] > time()) {
$changestatus = 1;
}
else if ($goods['starttime'] < time() && time() < $goods['endtime']) {
$changestatus = 2;
}
else if ($goods['endtime'] < time()) {
$changestatus = 3;
}
}
$res = Bargain::updateActive(array('status' => $changestatus), array('id' => $id));
}
if ($res) {
die(json_encode(array('errno' => 0)));
} else {
die(json_encode(array('errno' => 1)));
}
}
function copygood() {
global $_W, $_GPC;
$id = $_GPC['id'];
$da = Bargain::getSingleActive($id, '*');
unset($da['id']);
$da['status'] = 0;
$da['pv'] = 0;
$da['sharenum'] = 0;
$res = pdo_insert('wlmerchant_bargain_activity', $da);
if ($res) {
die(json_encode(array('errno' => 0)));
} else {
die(json_encode(array('errno' => 1)));
}
}
function pass() {
global $_W, $_GPC;
$flag = $_GPC['flag'];
$id = intval($_GPC['id']);
if ($flag) {
$res = pdo_update('wlmerchant_bargain_activity', array('status' => 1), array('id' => $id));
News::goodsToExamine($id,'bargain');
} else {
$res = pdo_update('wlmerchant_bargain_activity', array('status' => 6), array('id' => $id));
News::goodsToExamine($id,'bargain','未通过');
}
if ($res) {
show_json(1, '活动审核成功');
} else {
show_json(0, '活动审核失败,请重试');
}
}
function delall() {
global $_W, $_GPC;
$res = pdo_delete('wlmerchant_bargain_activity', array('id' => intval($_GPC['id'])));
if ($res) {
show_json(1, '活动删除成功');
} else {
show_json(0, '活动删除失败,请重试');
}
}
function cutoff() {
global $_W, $_GPC;
$res = pdo_update('wlmerchant_bargain_activity', array('status' => 8), array('id' => intval($_GPC['id'])));
if ($res) {
show_json(1, '活动删除成功');
} else {
show_json(0, '活动删除失败,请重试');
}
}
/**
* Comment: 砍价分类列表
* Author: zzw
* Date: 2019/12/20 14:38
*/
function categorylist() {
global $_W, $_GPC;
#1、参数获取
$page = $_GPC['page'] ? : 1;
$pageIndex = 10;
$keyword = $_GPC['keyword'] ? : '';
#1、条件生成
$where = ['aid'=>$_W['aid'],'uniacid'=>$_W['uniacid']];
if(!empty($keyword)) $where['name LIKE'] = '%' . $keyword . '%';
#1、列表获取
$list = pdo_getslice(PDO_NAME . 'bargain_category',$where,[$page, $pageIndex],$total,['id','name','sort','thumb'],'','sort DESC');
$pager = wl_pagination($total, $page, $pageIndex);
include wl_template('goodshouse/cate_list');
}
public function bargainrecord() {
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$where = array('uniacid' => $_W['uniacid']);
if (is_store()) {
$members = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_bargain_activity') . "WHERE sid = {$_W['storeid']}");
if ($members) {
$mids = "(";
foreach ($members as $key => $v) {
if ($key == 0) {
$mids .= $v['id'];
} else {
$mids .= "," . $v['id'];
}
}
$mids .= ")";
$where['activityid#'] = $mids;
} else {
$where['activityid#'] = "(0)";
}
}
if (!empty($_GPC['keyword'])) {
if (!empty($_GPC['keywordtype'])) {
switch ($_GPC['keywordtype']) {
case 1:
$where['activityid'] = $_GPC['keyword'];
break;
case 2:
$where['userid'] = $_GPC['keyword'];
break;
case 3:
$where['authorid'] = $_GPC['keyword'];
break;
case 4:
$where['mid'] = $_GPC['keyword'];
break;
default:
break;
}
if ($_GPC['keywordtype'] == 5) {
$keyword = $_GPC['keyword'];
$params[':storename'] = "%{$keyword}%";
$members = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_bargain_activity') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND name LIKE :storename", $params);
if ($members) {
$mids = "(";
foreach ($members as $key => $v) {
if ($key == 0) {
$mids .= $v['id'];
} else {
$mids .= "," . $v['id'];
}
}
$mids .= ")";
$where['activityid#'] = $mids;
} else {
$where['activityid#'] = "(0)";
}
}
if ($_GPC['keywordtype'] == 6) {
$keyword = $_GPC['keyword'];
$params[':storename'] = "%{$keyword}%";
$members = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_member') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND nickname LIKE :storename", $params);
if ($members) {
$mids = "(";
foreach ($members as $key => $v) {
if ($key == 0) {
$mids .= $v['id'];
} else {
$mids .= "," . $v['id'];
}
}
$mids .= ")";
$where['authorid#'] = $mids;
} else {
$where['authorid#'] = "(0)";
}
}
if ($_GPC['keywordtype'] == 7) {
$keyword = $_GPC['keyword'];
$params[':storename'] = "%{$keyword}%";
$members = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_member') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND nickname LIKE :storename", $params);
if ($members) {
$mids = "(";
foreach ($members as $key => $v) {
if ($key == 0) {
$mids .= $v['id'];
} else {
$mids .= "," . $v['id'];
}
}
$mids .= ")";
$where['mid#'] = $mids;
} else {
$where['mid#'] = "(0)";
}
}
}
}
if (!empty($_GPC['time_limit'])) {
$starttime = strtotime($_GPC['time_limit']['start']);
$endtime = strtotime($_GPC['time_limit']['end']);
$where['createtime>'] = $starttime;
$where['createtime<'] = $endtime + 86400;
}
if (empty($starttime) || empty($endtime)) {
$starttime = strtotime('-1 month');
$endtime = time();
}
if ($_GPC['userlistid']) {
$where['userid'] = $_GPC['userlistid'];
}
$records = Util::getNumData('*', PDO_NAME . 'bargain_helprecord', $where, 'createtime DESC', $pindex, $psize, 1);
$pager = $records[1];
$records = $records[0];
if ($records) {
foreach ($records as $key => &$re) {
$goods = pdo_get('wlmerchant_bargain_activity', array('id' => $re['activityid']), array('name', 'thumb', 'sid'));
$re['logo'] = $goods['thumb'];
$re['gname'] = $goods['name'];
$re['sid'] = $goods['sid'];
$merchant = pdo_get('wlmerchant_merchantdata', array('id' => $goods['sid']), array('storename', 'logo'));
$re['storename'] = $merchant['storename'];
$re['merchantlogo'] = $merchant['logo'];
$author = pdo_get('wlmerchant_member', array('id' => $re['authorid']), array('nickname', 'avatar'));
$re['username'] = $author['nickname'];
$re['useravatar'] = $author['avatar'];
$member = pdo_get('wlmerchant_member', array('id' => $re['mid']), array('nickname', 'avatar'));
$re['nickname'] = $member['nickname'];
$re['avatar'] = $member['avatar'];
$re['createtime'] = date("Y-m-d H:i:s", $re['createtime']);
}
}
include wl_template('bargain/bargainrecord');
}
function hexiaotime() {
global $_W, $_GPC;
$id = $_GPC['id'];
$record = pdo_get('wlmerchant_bargain_userlist', array('orderid' => $id), array('usetimes', 'usedtime'));
$record['usedtime'] = unserialize($record['usedtime']);
foreach ($record['usedtime'] as $key => &$v) {
$v['time'] = date('Y-m-d H:i:s', $v['time']);
switch ($v['type']) {
case '1':
$v['typename'] = '输码核销';
break;
case '2':
$v['typename'] = '扫码核销';
break;
case '3':
$v['typename'] = '后台核销';
break;
case '4':
$v['typename'] = '密码核销';
break;
default:
$v['typename'] = '未知方式';
break;
}
if ($v['type'] == 1 || $v['type'] == 2) {
$v['vername'] = pdo_getcolumn(PDO_NAME . 'member', array('id' => $v['ver']), 'nickname');
} else {
$v['vername'] = '无';
}
}
die(json_encode(array('errno' => 0, 'times' => $record['usetimes'], 'data' => $record['usedtime'])));
}
public function userlist() {
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$where = array('uniacid' => $_W['uniacid']);
if (!empty($_GPC['status'])) {
$where['status'] = intval($_GPC['status']);
}
if (is_store()) {
$where['merchantid'] = $_W['storeid'];
}
if (!empty($_GPC['keyword'])) {
if (!empty($_GPC['keywordtype'])) {
switch ($_GPC['keywordtype']) {
case 1:
$where['activityid'] = $_GPC['keyword'];
break;
case 2:
$where['merchantid'] = $_GPC['keyword'];
break;
default:
break;
}
if ($_GPC['keywordtype'] == 3) {
$keyword = $_GPC['keyword'];
$params[':storename'] = "%{$keyword}%";
$merchants = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_bargain_activity') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND name LIKE :storename", $params);
if ($merchants) {
$sids = "(";
foreach ($merchants as $key => $v) {
if ($key == 0) {
$sids .= $v['id'];
} else {
$sids .= "," . $v['id'];
}
}
$sids .= ")";
$where['activityid#'] = $sids;
} else {
$where['activityid#'] = "(0)";
}
}
if ($_GPC['keywordtype'] == 4) {
$keyword = $_GPC['keyword'];
$params[':storename'] = "%{$keyword}%";
$merchants = pdo_fetchall("SELECT * FROM " . tablename('wlmerchant_merchantdata') . "WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND storename LIKE :storename", $params);
if ($merchants) {
$sids = "(";
foreach ($merchants as $key => $v) {
if ($key == 0) {
$sids .= $v['id'];
} else {
$sids .= "," . $v['id'];
}
}
$sids .= ")";
$where['merchantid#'] = $sids;
} else {
$where['merchantid#'] = "(0)";
}
}
}
}
if (!empty($_GPC['time_limit']) && $_GPC['timetype']) {
$starttime = strtotime($_GPC['time_limit']['start']);
$endtime = strtotime($_GPC['time_limit']['end']);
if ($_GPC['timetype'] == 1) {
$where['createtime>'] = $starttime;
$where['createtime<'] = $endtime + 86400;
} else {
$where['updatetime>'] = $starttime;
$where['updatetime<'] = $endtime;
}
}
if (empty($starttime) || empty($endtime)) {
$starttime = strtotime('-1 month');
$endtime = time();
}
$users = Util::getNumData('*', PDO_NAME . 'bargain_userlist', $where, 'ID DESC', $pindex, $psize, 1);
$pager = $users[1];
$users = $users[0];
foreach ($users as $key => &$user) {
$goods = pdo_get('wlmerchant_bargain_activity', array('id' => $user['activityid']), array('name', 'thumb', 'oldprice', 'sid'));
$user['logo'] = $goods['thumb'];
$user['name'] = $goods['name'];
$user['oldprice'] = $goods['oldprice'];
$user['storename'] = pdo_getcolumn(PDO_NAME . 'merchantdata', array('id' => $goods['sid']), 'storename');
$user['orderno'] = pdo_getcolumn(PDO_NAME . 'order', array('id' => $user['orderid']), 'orderno');
}
include wl_template('bargain/userlist');
}
/**
* Comment: 砍价基本设置
* Author: zzw
*/
public function setting() {
global $_W, $_GPC;
if (checksubmit('submit')) {
//处理数据值
$data = $_GPC['base'];
$data['playdetail'] = trim($data['playdetail']);
$res1 = Setting::agentsetting_save($data, 'bargainset');
wl_message('保存设置成功!', referer(), 'success');
}
$base = Setting::agentsetting_read('bargainset');
$communitylist = pdo_getall('wlmerchant_community', array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid']), array('id', 'communname'));
include wl_template('bargain/set');
}
/**
* Comment: 获取砍价商品信息列表
* Author: zzw
* Date: 2019/7/11 17:38
*/
public function bargainList() {
global $_W, $_GPC;
#1、条件生成
$where = " a.aid = {$_W['aid']} AND a.uniacid = {$_W['uniacid']}";//默认条件
!empty($_GPC['name']) && $where .= " AND a.name LIKE '%{$_GPC['name']}%' ";//商品名称
$_GPC['status'] > -1 && $where .= " AND a.status = {$_GPC['status']} ";//商品名称
!empty($_GPC['goods_id']) && $where .= " AND a.id = {$_GPC['goods_id']} ";//商品id
!empty($_GPC['shop_name']) && $where .= " AND m.storename LIKE '%{$_GPC['shop_name']}%' ";//商户名称
$_GPC['cate_id'] > -1 && $where .= " AND a.cateid = {$_GPC['cate_id']} ";//商户名称
!empty($_GPC['shop_id']) && $where .= " AND a.sid = {$_GPC['shop_id']} ";//商户id
#2、排序操作
$order = " a.sort DESC ,a.id DESC ";
#3、分页操作
$page = $_GPC['page'] ? $_GPC['page'] : 1;//当前页
$index = $_GPC['index'] ? $_GPC['index'] : 10;//每页的数量
$start = $page * $index - $index;//开始查询的点 = 当前页 * 每页的数量 - 每页的数量
$limit = " LIMIT {$start},{$index}";
#4、查询信息内容
$field = 'a.id,a.thumb,a.name,a.starttime,a.endtime,a.status,(a.pv + a.falselooknum) as pv,a.stock,a.sort,m.storename,b.name as cate_name';
$sql = "SELECT {$field} FROM " . tablename(PDO_NAME . 'bargain_activity')
. " a LEFT JOIN " . tablename(PDO_NAME . "bargain_category")
. " b ON a.cateid = b.id LEFT JOIN " . tablename(PDO_NAME . "merchantdata")
. " m ON a.sid = m.id";
!empty($where) && $sql .= " WHERE {$where} ";
$sql .= ' GROUP BY a.id ';
!empty($order) && $sql .= " ORDER BY {$order} ";
$total = count(pdo_fetchall(str_replace($field, "a.id", $sql)));//获取符合条件的总数量
$data['page_num'] = ceil($total / $index);//获取一共有多少页
!empty($limit) && $sql .= $limit;
$data['list'] = pdo_fetchall($sql);//获取要查询的列表数据
#5、处理相关信息
$orderModel = new Order();
foreach ($data['list'] as $k => &$v) {
//图片信息转换
$v['thumb'] = tomedia($v['thumb']);
//获取销量信息
$orderW = " uniacid = {$_W['uniacid']} AND fkid = {$v['id']} AND plugin = 'bargain' AND status IN ";
$v['bargaining'] = $orderModel->getPurchaseQuantity(" uniacid = {$_W['uniacid']} AND activityid = {$v['id']} AND status = 1 ") ?: 0;//砍价中
$v['order_payment'] = $orderModel->getPurchaseQuantity($orderW . " (1,2,3,4,8,6,7,9) ") ?: 0;//已支付
$v['order_used'] = $orderModel->getPurchaseQuantity($orderW . " (2,3) ") ?: 0;//已完成
//时间戳转时间
$v['starttime'] = date("Y-m-d H:i:s", $v['starttime']);
$v['endtime'] = date("Y-m-d H:i:s", $v['endtime']);
}
wl_json(1, '抢购商品列表', $data);
}
/**
* Comment: 获取砍价商品分类列表
* Author: zzw
* Date: 2019/7/11 17:53
*/
public function getClassList() {
global $_W, $_GPC;
$where = " uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} ";
$list = pdo_fetchall("SELECT id,name FROM " . tablename(PDO_NAME . 'bargain_category') . " WHERE {$where} ORDER BY sort DESC ");
wl_json(1, '砍价分类列表', $list);
}
/**
* Comment: 修改砍价商品的某个单项数据信息
* Author: zzw
* Date: 2019/7/15 11:15
*/
public function updateInfo() {
global $_W, $_GPC;
#1、参数接收
if (empty($_GPC['field'])) show_json(0, "缺少参数:修改的字段名称");
#2、偏移操作 如果是修改人气 则减去实际人气修改虚拟人气
if ($_GPC['field'] == 'pv') {
$pv = pdo_fetchcolumn('SELECT pv FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE id = {$_GPC['id']}") ?: 0;
$_GPC['value'] = $_GPC['value'] - $pv;
$_GPC['field'] = 'falselooknum';
if ($_GPC['value'] < 0) {
$total = pdo_fetchcolumn('SELECT (pv + falselooknum) as pv FROM ' . tablename(PDO_NAME . 'bargain_activity') . " WHERE id = {$_GPC['id']}") ?: 0;
show_json(0, ['message' => "浏览量设置不能小于真实浏览量", 'data' => $total]);
}
}
#3、修改内容
$data[$_GPC['field']] = $_GPC['value'];
$res = pdo_update(PDO_NAME . 'bargain_activity', $data, array('id' => $_GPC['id']));
if ($res) {
show_json(1, "修改成功");
} else {
show_json(0, "修改失败");
}
}
/**
* Comment: 批量修改商品信息
* Author: wlf
* Date: 2020/06/01 16:02
*/
public function checkchangestatus(){
global $_W, $_GPC;
$ids = $_GPC['ids'];
$type = $_GPC['type'];
foreach ($ids as$k=>$v){
$goods = pdo_get('wlmerchant_bargain_activity',array('id' => $v),array('starttime','endtime','status','sid'));
if($type == 1){
$status = 0;
if(is_store()){
$examine = pdo_getcolumn(PDO_NAME.'merchantdata',array('id'=>$goods['sid']),'audits');
if(empty($examine)){
$status = 5;
}
}
if(empty($status)){
if ($goods['starttime'] > time()) {
$status = 1;
}
else if ($goods['starttime'] < time() && time() < $goods['endtime']) {
$status = 2;
}
else if ($goods['endtime'] < time()) {
$status = 3;
}
}
pdo_update('wlmerchant_bargain_activity', array('status' => $status), array('id' => $v));
}else if($type == 8 && $goods['status'] == 8){
pdo_delete('wlmerchant_bargain_activity', array('id' => $v));
}else{
pdo_update('wlmerchant_bargain_activity', array('status' => $type), array('id' => $v));
}
}
show_json(1, '操作成功');
}
}

261
addons/weliam_smartcity/plugin/bargain/web/view/default/bargain/activitylist.html

@ -0,0 +1,261 @@
{php include wl_template('common/header');}
<style type='text/css'>
.order-rank img{width:16px; height:16px;}
.js-remark,.js-admin-remark{word-break:break-all; overflow:hidden; background: #FDEEEE;color: #ED5050;padding: 5px 10px;}
td.goods-info{position:relative; padding-left:60px;}
.goods-info .img{position:absolute;top:50%; margin-top:-25px; background: url({IMAGE_LOADING}) center center no-repeat; width:50px;height:50px; }
.goods-info span {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;display: block;}
.status-text{cursor:pointer;}
</style>
<ul class="nav nav-tabs">
<li {if empty($_GPC['status'])}class="active"{/if}><a href="{php echo wl_filter_url('status:0');}">全部砍价{if $status0}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status0}</span>{/if}</a></li>
<li {if $_GPC['status']==1}class="active"{/if}><a href="{php echo wl_filter_url('status:1');}">待开始{if $status1}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status1}</span>{/if}</a></li>
<li {if $_GPC['status']==2}class="active"{/if}><a href="{php echo wl_filter_url('status:2');}">进行中{if $status2}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status2}</span>{/if}</a></li>
<li {if $_GPC['status']==3}class="active"{/if}><a href="{php echo wl_filter_url('status:3');}">已结束{if $status3}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status3}</span>{/if}</a></li>
<li {if $_GPC['status']==4}class="active"{/if}><a href="{php echo wl_filter_url('status:4');}">下架中{if $status4}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status4}</span>{/if}</a></li>
<li {if $_GPC['status']==5}class="active"{/if}><a href="{php echo wl_filter_url('status:5');}">待审核{if $status5}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status5}</span>{/if}</a></li>
<li {if $_GPC['status']==6}class="active"{/if}><a href="{php echo wl_filter_url('status:6');}">被驳回{if $status6}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status6}</span>{/if}</a></li>
<li {if $_GPC['status']==8}class="active"{/if}><a href="{php echo wl_filter_url('status:8');}">回收站{if $status8}<span class="label label-warning pull-right" style="margin-left: 10px;">{$status8}</span>{/if}</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-action">
<a href="{php echo web_url('goodshouse/goodshouse/createactive',array('plugin'=>'bargain'))}" class="btn btn-primary">添加砍价</a>
</div>
<div class="filter-list">
<form action="" method="get" class="form-horizontal" role="form" id="form1">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="weliam_smartcity" />
<input type="hidden" name="p" value="bargain" />
<input type="hidden" name="ac" value="bargain_web" />
<input type="hidden" name="do" value="activitylist" />
<input type="hidden" name="status" value="{$_GPC['status']}" />
<div class="form-group">
<label class="col-sm-2 control-label">关键字</label>
<div class="col-md-3">
<select name="keywordtype" class="form-control">
<option value="">关键字类型</option>
<option value="1" {if $_GPC['keywordtype']==1}selected="selected"{/if}>活动商品名称</option>
<option value="2" {if $_GPC['keywordtype']==2}selected="selected"{/if}>活动商品ID</option>
{if !is_store()}
<option value="3" {if $_GPC['keywordtype']==3}selected="selected"{/if}>商家名称</option>
{/if}
</select>
</div>
<div class="col-md-4">
<input type="text" name="keyword" class="form-control" value="{$_GPC['keyword']}" placeholder="请输入关键字"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<button class="btn btn-primary" id="search">筛选</button>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
<div class="panel-body table-responsive collapse in order-list" id="order-template-item-4" style="padding: 0;">
<table class="table table-hover table-bordered">
<thead style="background-color: #FFFFFF;">
<tr>
<th class="text-center" width="30px"><input type="checkbox" name="checkall" value="" id="checkall" class="checkboxall" onclick="var ck = this.checked; $(':checkbox').each(function(){this.checked = ck});"/></th>
<th style="width:30px;text-align:center;">ID</th>
<th style="width:120px;">商品</th>
<th style="width:100px; text-align:center;">活动时间</th>
<th style="width:60px; text-align:center;">活动状态</th>
<th style="width:60px; text-align:center;">属性</th>
<th style="width:70px; text-align:center;">库存/下单</th>
<th style="width:70px; text-align:center;">数据统计</th>
<!--<th style="width:120px; text-align:center;">核销截止时间</th>-->
<th style="width:120px; text-align:center;">操作</th>
</tr>
</thead>
<tbody>
{loop $activity $item}
<tr>
<td><center><input type="checkbox" name="items[]" value="{$item['id']}" class="checkbox" /></center></td>
<td class="text-center">{$item['id']}</td>
<td class="goods-info line-feed">
<div class="img"><img class="scrollLoading" src="{IMAGE_PIXEL}" data-url="{php echo tomedia($item['thumb'])}" height="50" width="50" onerror="this.src='{IMAGE_NOPIC_SMALL}'" ></div>
<div class="title" style="padding-left: 60px;">
<span>{$item['name']}</span>
<span>商家:{$item['storename']}</span>
</div>
</td>
<td class="line-feed" style="width:150px;padding-left: 5px;">
<div class="title" style="text-align: center;">
<span>从:{php echo date('m-d H:i',$item['starttime'])}</span><br />
<span>到:{php echo date('m-d H:i',$item['endtime'])}</span>
</div>
</td>
<td class="text-center" style="width:60px;">
{if $item['status'] == 1 }<span class="label label-info">未开始</span>{/if}
{if $item['status'] == 2 }<span class="label label-success">进行中</span>{/if}
{if $item['status'] == 4 || $item['status'] == 0}<span class="label label-warning">下架中</span>{/if}
{if $item['status'] == 5 }<span class="label label-warning">审核中</span>{/if}
{if $item['status'] == 6 }<span class="label label-danger">被驳回</span>{/if}
{if $item['status'] == 3 }<span class="label label-danger">已结束</span>{/if}
{if $item['status'] == 8 }<span class="label label-default">回收站</span>{/if}
</td>
<td class="text-center" style="width:60px;">
{if is_store()}
<p>人气:{$item['pv']}</p>
<p>排序:{$item['sort']}</p>
{else}
<p>人气:<a style="color: #428bca;" data-href="{php echo web_url('bargain/bargain_web/changepv',array('id' => $item['id'],'type'=>1))}" href="javascript:;" title="修改人气" data-toggle="ajaxEdit" >{$item['pv']}</a></p>
<p>排序:<a style="color: #428bca;" data-href="{php echo web_url('bargain/bargain_web/changepv',array('id' => $item['id'],'type'=>2))}" href="javascript:;" title="修改排序" data-toggle="ajaxEdit" >{$item['sort']}</a></p>
{/if}
</td>
<td class="text-center" style="width:70px;">
<p>提供:{$item['stock']}</p>
<p style="color: #428bca;"><a href="{php echo web_url('bargain/bargain_web/userlist',array('keywordtype' => 1,'keyword'=> $item['id'],'status'=>1 ))}">砍价中:{$item['bargaining']}</a></p>
</td>
<td class="text-center" style="width:70px;">
<p style="color: #428bca;"><a href="{php echo web_url('order/wlOrder/checkcodeList',array('plugin' => 'bargain','status'=>2,'id'=>$item['id']))}">已支付:{$item['alreadypay']}</a></p>
<p style="color: #428bca;"><a href="{php echo web_url('order/wlOrder/checkcodeList',array('plugin' => 'bargain','status'=>3,'id'=>$item['id']))}">已完成:{$item['alreadyuse']}</a></p>
</td>
<td class="text-center" style="position: relative;">
{if p('wxplatform')}
<a href="javascript:;" data-url="{php echo h5_url('pages/subPages/goods/index',['type'=>7,'id'=>$item['id']])}" class="js-clip">复制链接</a>
{/if}
{if p('wxapp')}
<a href="javascript:;" data-url="pages/subPages/goods/index?type=7&goodsType=7&id={$item['id']}" class="js-clip">复制路径</a>
{/if}
<p style="color: #428bca;display: inline-block;"><a href="{php echo web_url('goodshouse/goodshouse/createactive',array('plugin' => 'bargain','id' => $item['id'],'page'=>$pindex))}">编辑</a> </p>
<br />
<p style="color: #428bca;display: inline-block;"><a href="javascript:;" class="js-copy" order-id="{$item['id']}">复制商品</a></p>
{if ($item['status'] == 1 || $item['status'] == 2 || $item['status'] == 3)}
<p style="color: #428bca;display: inline-block;"><a href="javascript:;" class="js-remove" order-id="{$item['id']}" order-status="{$item['status']}">下架</a></p>
{/if}
{if $item['status'] == 4 || $item['status'] == 8 || $item['status'] == 0}
<p style="color: #428bca;display: inline-block;"><a href="javascript:;" class="js-remove" order-id="{$item['id']}" order-status="{$item['status']}">上架</a></p>
{/if}
{if $item['status']==5 && !is_store()}
<p style="color: #428bca;display: inline-block;"><a href="{php echo web_url('bargain/bargain_web/pass', array('id'=>$item['id'],'flag'=>1))}" data-toggle="ajaxRemove" data-confirm="确定通过活动审核?">通过</a> </p>
<p style="color: #428bca;display: inline-block;"><a href="{php echo web_url('bargain/bargain_web/pass', array('id'=>$item['id'],'flag'=>0))}" data-toggle="ajaxRemove" data-confirm="确定驳回活动审核?">不通过</a></p>
{/if}
{if $item['status']==6 && !is_store()}
<p style="color: #428bca;display: inline-block;"><a href="{php echo web_url('bargain/bargain_web/pass', array('id'=>$item['id'],'flag'=>1))}" data-toggle="ajaxRemove" data-confirm="确定通过活动审核?">通过</a> </p>
{/if}
{if $item['status']==8}
<p style="color: #428bca;display: inline-block;"><a href="{php echo web_url('bargain/bargain_web/delall', array('id'=>$item['id']))}" data-toggle="ajaxRemove" data-confirm="此操作会删除团购及其对应的订单,确定要删除吗?">删除</a></p>
{else}
<p style="color: #428bca;display: inline-block;"><a href="{php echo web_url('bargain/bargain_web/cutoff', array('id'=>$item['id']))}" data-toggle="ajaxRemove" data-confirm="确定把商品放入回收站吗?">删除</a></p>
{/if}
{if Customized::init('pft147') > 0}
<p style="color: #428bca;display: inline-block;"><a href="{php echo web_url('goodshouse/goodshouse/checklist', array('id' => $item['id'],'plugin'=>'bargain'))}">核销码</a> </p>
{/if}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
<button class="btn btn-default btn-sm" type="button" onclick="location.reload();"><i class="fa fa-refresh"></i></button>
<div class="btn-group btn-group-sm">
<button class="btn btn-default" disabled="disabled" id="checkYse" onclick="checkOrDelete(1);">批量上架</button>
<button class="btn btn-default" disabled="disabled" id="checkNo" onclick="checkOrDelete(4);">批量下架</button>
</div>
<button class="btn btn-default btn-sm" type="button" disabled="disabled" id="delete" onclick="checkOrDelete(8);"><i class="fa fa-trash"></i> 回收站</button>
</div>
<div class="pull-right">
{$pager}
</div>
</div>
</div>
</div>
<script type="text/javascript">
$("#search").click(function(){
$('#form1')[0].submit();
});
</script>
<script>
function checkOrDelete(check){
var content = '';
if(check==1) content = '确认上架选中商品?';
if(check==4) content = '确认下架选中商品?';
if(check==8) content = '确认把选中商品放入回收站?如果商品已在回收站将会被彻底删除。';
layer.open({
title: [
'提示',
'background-color:#23c6c8; color:#fff;'
]
,anim: 'up'
,content: content
,btn: ['确认', '取消']
,yes:function(index){
$('.layer-anim').remove();
var ids = [];
var $checks=$('.checkbox:checkbox:checked');
$checks.each(function() {
if (this.checked) {
ids.push(this.value);
};
});
//处理
$.post("{php echo web_url('bargain/bargain_web/checkchangestatus')}", { ids : ids ,type:check}, function(data){
if(!data.errno){
util.tips("操作成功!");
location.reload();
}else{
util.tips(data.message);
};
}, 'json');
}
});
}
$('.order-list').delegate('.js-remove', 'click', function(e){
e.stopPropagation();
var $this = $(this);
var id = $this.attr('order-id');
var status = $this.attr('order-status');
var statushtml = (status == 4 || status == 0) ? "上架" : "下架";
util.nailConfirm(this, function(state) {
if(!state) return;
$.post("{php echo web_url('bargain/bargain_web/changestatus')}", {id:id,status:status}, function(data){
if(!data.errno){
util.tips(statushtml+"成功!");
location.reload();
};
}, 'json');
}, {html: '确认'+statushtml+"?"});
});
$('.order-list').delegate('.js-copy', 'click', function(e){
e.stopPropagation();
var $this = $(this);
var id = $this.attr('order-id');
util.nailConfirm(this, function(state) {
if(!state) return;
$.post("{php echo web_url('bargain/bargain_web/copygood')}", {id:id}, function(data){
if(!data.errno){
util.tips("复制成功!");
location.reload();
};
}, 'json');
}, {html: '确认复制该活动?被复制的活动会在已下架中显示'});
});
$('.checkbox,.checkboxall').click(function(){
var $checks=$('.checkbox:checkbox:checked');
$('#check').attr('disabled','');
if($checks.length>0) {
$('#checkYse').attr('disabled',false);
$('#checkNo').attr('disabled',false);
$('#delete').attr('disabled',false);
}else{
$('#checkYse').attr('disabled',true);
$('#checkNo').attr('disabled',true);
$('#delete').attr('disabled',true);
}
});
</script>
{php include wl_template('common/footer');}

154
addons/weliam_smartcity/plugin/bargain/web/view/default/bargain/bargainrecord.html

@ -0,0 +1,154 @@
{php include wl_template('common/header');}
<style>
.image-content{
width: 50px;
height: 50px;
display: inline-block;
float: left;
margin-right: 10px;
}
.image-content img{
width: 100%;
height: 100%;
}
.text-content{
float: left;
display: inline-block;
width: calc(100% - 60px);
}
.shop-name{
word-break:break-all;
display:-webkit-box;/**对象作为伸缩盒子模型展示**/
-webkit-box-orient:vertical;/**设置或检索伸缩盒子对象的子元素的排列方式**/
-webkit-line-clamp:3;/**显示的行数**/
overflow:hidden;/**隐藏超出的内容**/
}
</style>
<ul class="nav nav-tabs">
<li class="active"><a href="{php echo web_url('bargain/bargain_web/bargainrecord')}">砍价记录</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-list">
<form action="" method="get" class="form-horizontal" role="form" id="form1">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="{MODULE_NAME}" />
<input type="hidden" name="p" value="bargain" />
<input type="hidden" name="ac" value="bargain_web" />
<input type="hidden" name="do" value="bargainrecord" />
<div class="form-group form-inline">
<label class="col-sm-2 control-label">关键字</label>
<div class="col-sm-9">
<select name="keywordtype" class="form-control">
<option value="">关键字类型</option>
<option value="1" {if $_GPC['keywordtype']==1}selected="selected"{/if}>商品ID</option>
<option value="2" {if $_GPC['keywordtype']==2}selected="selected"{/if}>活动ID</option>
<option value="3" {if $_GPC['keywordtype']==3}selected="selected"{/if}>发起人ID</option>
<option value="4" {if $_GPC['keywordtype']==4}selected="selected"{/if}>帮砍者ID</option>
<option value="5" {if $_GPC['keywordtype']==5}selected="selected"{/if}>商品名称</option>
<option value="6" {if $_GPC['keywordtype']==6}selected="selected"{/if}>发起人昵称</option>
<option value="7" {if $_GPC['keywordtype']==7}selected="selected"{/if}>帮砍者昵称</option>
</select>
<input type="text" name="keyword" class="form-control" value="{$_GPC['keyword']}" placeholder="请输入关键字"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">砍价时间</label>
<div class="col-sm-9">
{php echo tpl_select_time_info('time_limit', array('starttime' => date('Y-m-d',$starttime), 'endtime' => date('Y-m-d', $endtime)));}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<button class="btn btn-primary" id="search">筛选</button>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
<div class="table-responsive">
<table id="de1" class="table table-hover table-bordered">
<thead>
<tr>
<th class="text-center" width="5%">活动ID</th>
<th class="text-center" width="25%">商品</th>
<th class="text-center" width="15%">所属商家</th>
<th class="text-center" width="15%">发起人</th>
<th class="text-center" width="15%">帮砍好友</th>
<th class="text-center" width="10%">砍价/现价</th>
<th class="text-center" width="15%">时间</th>
</tr>
</thead>
<tbody>
{loop $records $item}
<tr class="text-center">
<td>
<center>{php echo $item['userid']}</center>
</td>
<!--商品-->
<td>
<div class="image-content">
<img src="{php echo tomedia($item['logo'])}" >
</div>
<div class="text-content text-left">
<div class="shop-name">{$item['gname']}</div><br/>
商品ID:{$item['activityid']}
</div>
</td>
<!--所属商家-->
<td>
<div class="image-content">
<img src="{php echo tomedia($item['merchantlogo'])}" >
</div>
<div class="text-content text-left">
<div class="shop-name">{$item['storename']}</div><br/>
商户ID:{$item['sid']}
</div>
</td>
<!--发起人-->
<td>
<div class="image-content">
<img src="{php echo tomedia($item['useravatar'])}" >
</div>
<div class="text-content text-left">
<div class="shop-name">{$item['username']}</div><br/>
发起人ID:{$item['authorid']}
</div>
</td>
<!--帮砍好友-->
<td>
<div class="image-content">
<img src="{php echo tomedia($item['avatar'])}" >
</div>
<div class="text-content text-left">
<div class="shop-name">{$item['nickname']}</div><br/>
帮砍好友ID:{$item['mid']}
</div>
</td>
<!--金额-->
<td>
<span><span style="color: orangered;">¥{$item['bargainprice']}</span> / ¥{$item['afterprice']}</span>
</td>
<!--时间-->
<td>
{$item['createtime']}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
</div>
<div class="pull-right">
{$pager}
</div>
</div>
</div>
</div>
{php include wl_template('common/footer');}

124
addons/weliam_smartcity/plugin/bargain/web/view/default/bargain/set.html

@ -0,0 +1,124 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a href="#tab_basic">基本设置</a></li>
<li><a href="#tab_share">首页分享</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal" id="setting-form">
<div class="panel panel-default">
<div class="panel-heading">基本设置</div>
<div class="panel-body">
<div class="tab-content">
<div class="tab-pane active" id="tab_basic">
<div class="form-group">
<label class="col-sm-2 control-label">单人每日砍价次数</label>
<div class="col-sm-9">
<div class="input-group">
<input type="number" min="0" name="base[syslimit]" class="form-control" value="{$base['syslimit']}">
<span class="input-group-addon">次/天</span>
</div>
<span class="help-block">单人每日可砍价次数,包括帮砍和自己发起的初次砍价,不填或填0则不限制次数。</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">首页社群</label>
<div class="col-sm-9">
<select name="base[communityid]" class="form-control chosen-select">
<option value="0" >不显示社群</option>
{loop $communitylist $key $val}
<option value="{$val['id']}" {if $val['id'] == $base['communityid']}selected{/if}>{$val['communname']}</option>
{/loop}
</select>
<span class="help-block">请选择首页是否显示社群</span>
</div>
</div>
<div class="form-group hide">
<label class="col-sm-2 control-label">选项卡分类是否显示图片</label>
<div class="col-xs-12 col-sm-8">
<div class="radio radio-success radio-inline">
<input type="radio" id="img_switch1" name="base[img_switch]" value="0" {if $base['img_switch'] != 1}checked="checked"{/if}>
<label for="img_switch1">关闭 </label>
</div>
<div class="radio radio-success radio-inline">
<input type="radio" id="img_switch2" name="base[img_switch]" value="1" {if $base['img_switch'] == 1}checked="checked"{/if}>
<label for="img_switch2">开启 </label>
</div>
<span class="help-block">开启后,所有砍价选项卡下面的分类都会显示图片</span>
</div>
</div>
<div class="form-group" >
<label class="col-sm-2 control-label">砍价玩法标题</label>
<div class="col-sm-9">
<div class="input-group" style="width: 100%;">
<input type="text" name="base[playtitle]" placeholder="砍价购" class="form-control" value="{$base['playtitle']}">
</div>
</div>
</div>
<div class="form-group" >
<label class="col-sm-2 control-label">砍价玩法描述</label>
<div class="col-sm-9">
<div class="input-group" style="width: 100%;">
<input type="text" name="base[playdesc]" placeholder="邀请好友砍价,超低价购买心仪商品!" class="form-control" value="{$base['playdesc']}">
</div>
</div>
</div>
<div class="form-group" >
<label class="col-sm-2 control-label">砍价玩法详情</label>
<div class="col-sm-9">
<div class="input-group" style="width: 100%;" >
<textarea name="base[playdetail]" style="min-height: 300px;" class="form-control">{$base['playdetail']}</textarea>
<span class="help-block">未填入会显示系统默认解释详情</span>
</div>
</div>
</div>
</div>
<div class="tab-pane" id="tab_share">
<div class="alert alert-info">
<b>适用模板变量:[昵称] [时间] [系统名称]</b>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享标题</label>
<div class="col-sm-9">
<input type="text" name="base[share_title]" class="form-control" value="{$base['share_title']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享图片</label>
<div class="col-sm-9">
{php echo attachment_select('base[share_image]', $base['share_image']);}
<span class="help-block">推荐图片尺寸500X500</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享描述</label>
<div class="col-sm-9">
<input type="text" name="base[share_desc]" class="form-control" value="{$base['share_desc']}" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
<script>
$(function() {
window.optionchanged = false;
$('#myTab a').click(function(e) {
e.preventDefault(); //阻止a链接的跳转行为
$(this).tab('show'); //显示当前选中的链接及关联的content
})
});
</script>
{php include wl_template('common/footer');}

151
addons/weliam_smartcity/plugin/bargain/web/view/default/bargain/userlist.html

@ -0,0 +1,151 @@
{php include wl_template('common/header');}
<style>
.prstyle{color: orangered;}
.order-rank img{width:16px; height:16px;}
td.goods-info{position:relative; padding-left:60px;}
.goods-info .img{position:absolute;top:50%; margin-top:-25px; background: url({IMAGE_LOADING}) center center no-repeat; width:50px;height:50px; }
.goods-info span {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;display: block;}
</style>
<ul class="nav nav-tabs">
<li class="active"><a href="{php echo web_url('bargain/bargain_web/userlist')}">砍价列表</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-list">
<form action="" method="get" class="form-horizontal" role="form" id="form1">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="{MODULE_NAME}" />
<input type="hidden" name="p" value="bargain" />
<input type="hidden" name="ac" value="bargain_web" />
<input type="hidden" name="do" value="userlist" />
<div class="form-group">
<label class="col-sm-2 control-label">砍价状态</label>
<div class="col-sm-9">
<div class="btn-group">
<a href="{php echo wl_filter_url('status:0');}" class="btn {if intval($_GPC['status']) == 0}btn-primary{else}btn-default{/if}">全部</a>
<a href="{php echo wl_filter_url('status:1');}" class="btn {if $_GPC['status'] == 1}btn-primary{else}btn-default{/if}">砍价中</a>
<a href="{php echo wl_filter_url('status:2');}" class="btn {if $_GPC['status'] == 2}btn-primary{else}btn-default{/if}">已下单</a>
<a href="{php echo wl_filter_url('status:3');}" class="btn {if $_GPC['status'] == 3}btn-primary{else}btn-default{/if}">已失败</a>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">关键字</label>
<div class="col-md-3">
<select name="keywordtype" class="form-control">
<option value="">关键字类型</option>
<option value="1" {if $_GPC['keywordtype']==1}selected="selected"{/if}>商品ID</option>
<option value="2" {if $_GPC['keywordtype']==2}selected="selected"{/if}>商家ID</option>
{if !is_store()}
<option value="3" {if $_GPC['keywordtype']==3}selected="selected"{/if}>商品名称</option>
<option value="4" {if $_GPC['keywordtype']==4}selected="selected"{/if}>商家名称</option>
{/if}
</select>
</div>
<div class="col-md-4">
<input type="text" name="keyword" class="form-control" value="{$_GPC['keyword']}" placeholder="请输入关键字"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">时间</label>
<div class="col-md-3">
<select name="timetype" class="form-control">
<option value="">时间类型</option>
<option value="1" {if $_GPC['timetype']==1}selected="selected"{/if}>开始时间</option>
<option value="2" {if $_GPC['timetype']==2}selected="selected"{/if}>最近砍价时间</option>
</select>
</div>
<div class="col-md-2">
{php echo tpl_select_time_info('time_limit', array('starttime' => date('Y-m-d',$starttime), 'endtime' => date('Y-m-d', $endtime)));}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<button class="btn btn-primary" id="search">筛选</button>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
<div class="panel-body table-responsive collapse in order-list">
<table id="de1" class="table table-hover table-bordered">
<thead>
<tr>
<th class="text-center" style="width:30px;">序号</th>
<th class="text-center" style="width:150px;">商品</th>
<th class="text-center" style="width:120px;">所属商家</th>
<th class="text-center" style="width:90px;">开始时间</th>
<th class="text-center" style="width:90px;">最近砍价时间</th>
<th class="text-center" style="width:110px;">现价/起始价</th>
<th class="text-center" style="width:60px;">状态</th>
<th class="text-center" style="width:70px;">操作</th>
</tr>
</thead>
<tbody>
{loop $users $k $item}
<tr class="text-center" >
<td class="line-feed" style="width:30px;">
<center>{php echo $k+1}</center>
</td>
<!--商品-->
<td class="line-feed goods-info" style="width:150px;">
<div class="img">
<img style="height: 4.5rem;width: 4.5rem;" class="scrollLoading" src="{IMAGE_PIXEL}" data-url="{php echo tomedia($item['logo'])}">
</div>
<div class="title" style="padding-left: 60px;">
<span>{$item['name']}</span>
<span>商品ID:{$item['activityid']}</span>
</div>
</td>
<!--所属商家-->
<td style="width:120px;">
{$item['storename']}<br/>商家ID:{$item['merchantid']}
</td>
<!--开始时间-->
<td style="width:90px;">
{php echo date('Y-m-d',$item['createtime'])}<br />
{php echo date('H:i:s',$item['createtime'])}
</td>
<td style="width:90px;">
{php echo date('Y-m-d',$item['updatetime'])}<br />
{php echo date('H:i:s',$item['updatetime'])}
</td>
<!--人数-->
<td style="width:110px;">
<span><span class="prstyle">¥{$item['price']}</span> / ¥{$item['oldprice']}</span>
</td>
<!--状态-->
<td style="width:60px;">
{if $item['status'] == 1}<span class="label label-warning">砍价中</span>{/if}
{if $item['status'] == 2}<span class="label label-success">已下单</span>{/if}
{if $item['status'] == 3}<span class="label label-danger">已失败</span>{/if}
</td>
<!--操作-->
<td style="width:70px;">
{if $item['status'] == 2}<a href="{php echo web_url('order/wlOrder/orderlist',array('keywordtype'=>1,'keyword'=>$item['orderno']))}">查看订单</a><br/>{/if}
<a href="{php echo web_url('bargain/bargain_web/bargainrecord',array('userlistid'=>$item['id']))}">砍价记录</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
</div>
<div class="pull-right">
{$pager}
</div>
</div>
</div>
</div>
<script type="text/javascript">
$("#search").click(function(){
$('#form1')[0].submit();
});
</script>
{php include wl_template('common/footer');}

6
addons/weliam_smartcity/plugin/call/Call.php

@ -0,0 +1,6 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Call{
}

32
addons/weliam_smartcity/plugin/call/config.xml

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<name><![CDATA[集Call]]></name>
<identifie><![CDATA[call]]></identifie>
<version><![CDATA[1.0.0]]></version>
<type><![CDATA[interact]]></type>
<description><![CDATA[集Call活动,召集好友一起集call]]></description>
<author><![CDATA[微连科技]]></author>
<url><![CDATA[http://www.weliam.cn/]]></url>
</application>
<setting>
<agent embed="true" />
<system embed="true" />
<task embed="false" />
</setting>
<agentmenu>
<!--<menu title="基础设置" font="fa-inbox">-->
<!--<entry title="基础设置" ac="call" do="setting" />-->
<!--</menu>-->
<menu title="内容管理" font="fa-inbox">
<entry title="call活动列表" ac="call" do="callList" iscover="true"/>
<entry title="集call列表" ac="call" do="callLaunchList" />
</menu>
</agentmenu>
<systemmenu>
<menu title="内容管理" font="fa-inbox">
<entry title="call活动列表" ac="call" do="callList" iscover="true"/>
<entry title="集call列表" ac="call" do="callLaunchList" />
</menu>
</systemmenu>
</manifest>

BIN
addons/weliam_smartcity/plugin/call/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

161
addons/weliam_smartcity/plugin/call/web/controller/call.ctrl.php

@ -0,0 +1,161 @@
<?php
/**
* Comment: ...
* Author: ZZW
* Date: 2018/9/12
* Time: 18:02
*/
defined('IN_IA') or exit('Access Denied');
class Call_WeliamController {
/**
* Comment: 集call活动列表
* Author: zzw
*/
public function callList(){
global $_W,$_GPC;
$name = $_GPC['name'];
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$where = " a.uniacid = {$_W['uniacid']} AND a.aid = {$_W['aid']} ";
if($name){
$where .= " AND a.title LIKE '%{$name}%' ";
}
$sql = "SELECT
a.id,
a.title as name,
a.number,
a.state,
a.explain,
a.limit,
a.explain,
a.receive_time,
a.use_time,
b.title,
c.storename FROM ".tablename(PDO_NAME."call")
." a LEFT JOIN "
.tablename(PDO_NAME."couponlist")
." b ON a.prize_id = b.id "
." LEFT JOIN "
.tablename(PDO_NAME."merchantdata")
." `c` ON b.merchantid = c.id "
." WHERE {$where} ORDER BY id DESC ";
$sql .= " limit " . ($pindex - 1) * $psize . ',' . $psize;
$list = pdo_fetchall($sql);
$total = pdo_fetchcolumn('SELECT COUNT(1) FROM '.tablename(PDO_NAME.'call'));
$pager = wl_pagination($total, $pindex, $psize);
include wl_template("call/callList");
}
/**
* Comment: 进入编辑集call活动信息页面
* Author: zzw
*/
public function getEditCall(){
global $_W,$_GPC;
$prizeList = pdo_fetchall("SELECT a.id,a.title,b.storename FROM ".tablename(PDO_NAME."couponlist")
." a LEFT JOIN "
.tablename(PDO_NAME."merchantdata")
." b ON a.merchantid = b.id "
." WHERE a.uniacid = {$_W['uniacid']} AND a.aid = {$_W['aid']} AND a.status = 1 AND b.status = 2 AND b.enabled = 1");
if($_GPC['id']){
//修改信息
$info = pdo_get(PDO_NAME."call",array('id'=>$_GPC['id']));
}
include wl_template("call/editCall");
}
/**
* Comment: 对集call活动信息的编辑操作
* Author: zzw
*/
public function editCall(){
global $_W,$_GPC;
$data = $_GPC['data'];
$data['uniacid'] = $_W['uniacid'];
$data['aid'] = $_W['aid'];
$data['receive_time'] = strtotime($data['receive_time']);
$data['use_time'] = strtotime($data['use_time']);
$existence = pdo_get(PDO_NAME."call",$data);
if($_GPC['id']){
//修改活动信息
if($existence){
wl_message('修改失败,未做出如何修改',referer(),'error');
}
$result = pdo_update(PDO_NAME."call",$data,array('id'=>$_GPC['id']));
}else{
//添加活动内容
if($existence){
wl_message('添加失败,内容已存在',referer(),'error');
}
$result = pdo_insert(PDO_NAME."call",$data);
}
if($result){
wl_message('操作成功!',web_url('call/call/callList'),'success');
}else {
wl_message('操作失败,请重试',referer(),'error');
}
}
/**
* Comment: 删除一条集call活动信息
* Author: zzw
*/
public function delCall(){
global $_W,$_GPC;
$id = $_GPC['id'];
$result = pdo_delete(PDO_NAME."call",array('id'=>$id));
if($result){
show_json(1);
}else{
show_json(0,'删除失败');
}
}
/**
* Comment: 已发起集call活动的信息列表
* Author: zzw
*/
public function callLaunchList(){
global $_W,$_GPC;
$name = $_GPC['name'];
$pindex = max(1, intval($_GPC['page']));
$psize = 10;
$where = " a.uniacid = {$_W['uniacid']} AND a.aid = {$_W['aid']} ";
if($name){
$where .= " AND (c.title LIKE '%{$name}%' || b.nickname LIKE '%{$name}%')";
}
$sql = "SELECT
b.nickname,
c.title,
e.title as prize_name,
a.start_time,
c.number,
count(d.list_id) as collect_number,
(number - count(d.list_id)) as surplus_number,
c.receive_time FROM ".tablename(PDO_NAME."call_list")
." a LEFT JOIN "
.tablename(PDO_NAME."member")
." b ON a.mid = b.id LEFT JOIN "
.tablename(PDO_NAME."call")
." `c` ON a.call_id = c.id LEFT JOIN "
.tablename(PDO_NAME."call_hit")
." d ON a.id = d.list_id LEFT JOIN "
.tablename(PDO_NAME."couponlist")
." e ON c.prize_id = e.id "
." WHERE {$where} GROUP BY d.list_id ORDER BY a.start_time DESC ";
$sql .= " limit " . ($pindex - 1) * $psize . ',' . $psize;
$list = pdo_fetchall($sql);
$total = pdo_fetchcolumn('SELECT COUNT(1) FROM '.tablename(PDO_NAME.'call_list'));
$pager = wl_pagination($total, $pindex, $psize);
include wl_template("call/launchList");
}
}

70
addons/weliam_smartcity/plugin/call/web/view/default/call/callList.html

@ -0,0 +1,70 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="{php echo web_url('call/call/callList')}">call活动列表</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-action">
<a class="btn btn-primary" href="{php echo web_url('call/call/getEditCall')}">添加活动</a>
</div>
<div class="filter-list">
<form class="form-horizontal" action="{php echo web_url('call/call/callList')}" method="post">
<div class="form-group">
<div class="col-sm-2 control-label">活动名称</div>
<div class="col-sm-9">
<input type="text" class="form-control" name="name" value="{$name}" placeholder="请输入活动名称">
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label"></div>
<div class="col-sm-6">
<div class="input-group">
<button class="btn btn-primary" type="submit" >搜索</button>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
<div id="list" class="panel tab-pane panel-default">
<div class="table-responsive">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th class="text-center" width="10%">活动名称</th>
<th class="text-center" width="5%">集call数量</th>
<th class="text-center" width="5%">活动状态</th>
<th class="text-center" width="15%">活动奖品</th>
<th class="text-center" width="15%">活动说明</th>
<th class="text-center" width="15%">活动限制</th>
<th class="text-center" width="10%">领取时间</th>
<th class="text-center" width="10%">使用期限</th>
<th class="text-center" width="15%">操作</th>
</tr>
</thead>
<tbody>
{loop $list $k $v}
<tr class="text-center">
<td>{$v['name']}</td>
<td>{$v['number']}</td>
<td>{if $v['state'] == 1}开启{else}关闭{/if}</td>
<td>{$v['storename']}——{$v['title']}</td>
<td>{php echo strip_tags(htmlspecialchars_decode($v['explain']))}</td>
<td>{php echo strip_tags(htmlspecialchars_decode($v['limit']))}</td>
<td>{php echo date("Y-m-d H:i:s",$v['receive_time'])}</td>
<td>{php echo date("Y-m-d H:i:s",$v['use_time'])}</td>
<td>
<a class="btn btn-sm btn-warning" href="{php echo web_url('call/call/getEditCall',array('id'=>$v['id']))}">编辑</a>
<a class="btn btn-sm btn-danger" data-toggle="ajaxRemove" href="{php echo web_url('call/call/delCall',array('id'=>$v['id']))}" data-confirm="确定删除当前分类?">删除</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
{$pager}
</div>
</div>
{php include wl_template('common/footer');}

124
addons/weliam_smartcity/plugin/call/web/view/default/call/editCall.html

@ -0,0 +1,124 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li><a href="{php echo web_url('call/call/callList')}">call活动列表</a></li>
<li class="active"><a href="{php echo web_url('call/call/getEditCall')}">添加活动</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<div class="panel tab-pane panel-default">
<form action="{php echo web_url('call/call/editCall')}" class="form-horizontal form" method="post" onsubmit="return formcheck(this);">
<div class="panel-heading">
<h4 class="modal-title">编辑集call活动</h4>
</div>
<div class="panel-body" id="formList">
<div class="form-group">
<div class="col-sm-2 control-label must ">活动名称</div>
<div class="col-sm-9">
<input class="form-control" type="text" maxlength="25" name="data[title]" value="{$info['title']}" placeholder="请输入活动名称" />
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label must ">收集数量</div>
<div class="col-sm-9">
<input class="form-control" type="number" max="1000" name="data[number]" value="{$info['number']}" placeholder="请输入需要收集数量" />
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label must ">领取期限</div>
<div class="col-sm-9">
{php echo tpl_form_field_date('data[receive_time]',date('Y-m-d H:i',$info['receive_time']?$info['receive_time']:strtotime("+1 month")),true);}
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label must ">使用期限</div>
<div class="col-sm-9">
{php echo tpl_form_field_date('data[use_time]',date('Y-m-d H:i',$info['use_time']?$info['use_time']:strtotime("+1 month")),true);}
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label must">活动状态</div>
<div class="col-sm-9">
<div class="radio radio-success radio-inline">
<input type="radio" id="inlineRadio1" name="data[state]" value="1" {if $info['state'] == 1}checked{/if}>
<label for="inlineRadio1"> 开启 </label>
</div>
<div class="radio radio-success radio-inline">
<input type="radio" id="inlineRadio2" name="data[state]" value="2" {if $info['state'] <> 1}checked{/if}>
<label for="inlineRadio2"> 关闭 </label>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label must">活动奖品</label>
<div class="col-sm-9">
<select name="data[prize_id]" id="prize_id" class="form-control chosen-select">
<option value="">请选择活动奖品</option>
{loop $prizeList $k $v}
<option value="{$v['id']}" {if $info['prize_id'] == $v['id']}selected{/if}>{$v['storename']} —— {$v['title']}</option>
{/loop}
</select>
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label must ">活动说明</div>
<div class="col-sm-9">
{php echo tpl_diy_editor_create('data[explain]',$info['explain']);}
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label must ">活动限制</div>
<div class="col-sm-9">
{php echo tpl_diy_editor_create('data[limit]',$info['limit']);}
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label must "></div>
<div class="col-sm-9">
<input type="hidden" name="id" value="{$info['id']}" />
<input type="submit" name="submit" value="提交" class="btn btn-primary col-sm-1 min-width" />
</div>
</div>
</form>
</div>
</div>
</div>
<script>
//提交信息进行判断
function formcheck() {
var name = $("[name='data[title]']").val();
var number = $("[name='data[number]']").val();
var prize = $("[name='data[prize_id]']").val();
var explain = $("[name='data[explain]']").val();
var limit = $("[name='data[limit]']").val();
var state = true;
if(!name){
tips("请输入活动名称");
state = false;
}else if(!number){
tips("请输入收集数量");
state = false;
}else if(!prize){
tips("请选择活动奖品");
state = false;
}else if(!explain){
tips("请输入活动说明");
state = false;
}else if(!limit){
tips("请输入活动限制");
state = false;
}
return state;
}
//提示内容
function tips(info) {
layer.open({
type: 0,
title: '提示',
content:info
});
}
</script>
{php include wl_template('common/footer');}

64
addons/weliam_smartcity/plugin/call/web/view/default/call/launchList.html

@ -0,0 +1,64 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="javascript:;">已发起集call活动列表</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-list">
<form class="form-horizontal" action="{php echo web_url('call/call/callLaunchList')}" method="post">
<div class="form-group">
<div class="col-sm-2 control-label">活动名称</div>
<div class="col-sm-9">
<input type="text" class="form-control" name="name" value="{$name}" placeholder="活动名称/发起人">
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label"></div>
<div class="col-sm-6">
<div class="input-group">
<button class="btn btn-primary" type="submit" >搜索</button>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
<div id="list" class="panel tab-pane panel-default">
<div class="table-responsive">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th class="text-center">发起人</th>
<th class="text-center">奖品名称</th>
<th class="text-center">活动名称</th>
<th class="text-center">发起时间</th>
<th class="text-center">截止时间</th>
<th class="text-center">收集数量</th>
<th class="text-center">已收集数量</th>
<th class="text-center">剩余数量</th>
<th class="text-center">状态</th>
</tr>
</thead>
<tbody>
{loop $list $k $v}
<tr class="text-center">
<td>{$v['nickname']}</td>
<td>{$v['prize_name']}</td>
<td>{$v['title']}</td>
<td>{php echo date("Y-m-d H:i:s",$v['start_time'])}</td>
<td>{php echo date("Y-m-d H:i:s",$v['receive_time'])}</td>
<td>{$v['number']}</td>
<td>{$v['collect_number']}</td>
<td>{$v['surplus_number']}</td>
<td>{if $v['receive_time'] > time()}正常{else}已过期{/if}</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
{$pager}
</div>
</div>
{php include wl_template('common/footer');}

94
addons/weliam_smartcity/plugin/cashback/Cashback.mod.php

@ -0,0 +1,94 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Cashback {
/**
* Comment: 支付返现信息处理、记录
* Author: zzw
* Date: 2020/1/13 15:23
* @param string $id 订单id
* @param string $plugin 模块信息
* @return array
*/
public static function record($id,$plugin){
global $_W;
#1、获取订单信息/商品信息
switch ($plugin){
case 'rush':
$orderInfo = pdo_get(PDO_NAME."rush_order",['id'=>$id],['activityid','actualprice','mid','orderno']);
$goodsInfo = pdo_get(PDO_NAME."rush_activity",['id'=>$orderInfo['activityid']],['id','cash_back','return_proportion']);
//字段统一处理
$orderInfo['plugin'] = 'rush';
$orderInfo['price'] = $orderInfo['actualprice'];
unset($orderInfo['actualprice']);
break;//抢购
case 'groupon':
$orderInfo = pdo_get(PDO_NAME."order",['id'=>$id],['fkid','price','mid','plugin','orderno']);
$goodsInfo = pdo_get(PDO_NAME."groupon_activity",['id'=>$orderInfo['fkid']],['id','cash_back','return_proportion']);
break;//团购
default:
Util::wl_log('cashBackRecord' , PATH_MODULE . "log/" , ['order_id'=>$id,'plugin'=>$plugin,'error'=>'当前模块商品不支持返现'] , '订单返现信息' , false);
return error(0,'当前模块商品不支持返现');
break;//当前模块商品不允许返现
}
$money = sprintf("%.2f" , $orderInfo['price'] * ($goodsInfo['return_proportion'] / 100));
#2、信息判断 是否允许返现操作 是否开启支付返现(0=关闭,1=开启)
if(!$orderInfo) {
Util::wl_log('cashBackRecord' , PATH_MODULE . "log/" , ['order_id'=>$id,'plugin'=>$plugin,'error'=>'订单不存在'] , '订单返现信息' , false);
return error(0,'订单不存在');
}
if(!$goodsInfo) {
Util::wl_log('cashBackRecord' , PATH_MODULE . "log/" , ['order_id'=>$id,'plugin'=>$plugin,'error'=>'商品不存在'] , '订单返现信息' , false);
return error(0,'商品不存在');
}
if($goodsInfo['cash_back'] != 1){
Util::wl_log('cashBackRecord' , PATH_MODULE . "log/" , ['order_id'=>$id,'plugin'=>$plugin,'error'=>'当前商品未开启支付返现'] , '订单返现信息' , false);
return error(0,'当前商品未开启支付返现');
}
if($money <= 0){
Util::wl_log('cashBackRecord' , PATH_MODULE . "log/" , ['order_id'=>$id,'plugin'=>$plugin,'error'=>'返现金额为0'] , '订单返现信息' , false);
return error(0,'返现金额为0');
}
#3、支付返现操作
$set = Setting::wlsetting_read("cash_back");//to_examine:是否需要审核:0=开启,1=关闭
$data = [
'uniacid' => $_W['uniacid'] ,
'mid' => $orderInfo['mid'] ,
'goods_id' => $goodsInfo['id'] ,
'order_id' => $id ,
'plugin' => $orderInfo['plugin'] ,
'status' => $set['to_examine'] == 1 ? 1 : 0 ,//是否审核(0=审核中,1=已返现)
'money' => $money,
'create_time' => time()
];
$res = pdo_insert(PDO_NAME."cashback",$data);
if($res){
Util::wl_log('cashBackRecord' , PATH_MODULE . "log/" , ['order_id'=>$id,'plugin'=>$plugin,'cashback_id'=>pdo_insertid()] , '订单返现信息' , false);
if($set['to_examine'] == 1){
//未开启返现审核功能 自动返现
self::moneyBack($data['mid'],$data['money'],$orderInfo['orderno']);
}
return error(1,'返现成功');
}else{
Util::wl_log('cashBackRecord' , PATH_MODULE . "log/" , ['order_id'=>$id,'plugin'=>$plugin,'error'=>'返现记录储存失败','data'=>$data] , '订单返现信息' , false);
return error(0,'返现记录储存失败');
}
}
/**
* Comment: 支付返现余额处理
* Author: zzw
* Date: 2020/1/13 15:44
* @param int $mid 用户id
* @param float $money 返现金额
* @param int|string $orderno 订单号
* @return bool
*/
public static function moneyBack($mid,$money,$orderno){
//用户余额添加
Member::credit_update_credit2($mid,$money,"订单:{$orderno}支付返现");
//修改用户返现余额
$cashBakcMoney = pdo_getcolumn(PDO_NAME."member",['id'=>$mid],'cash_back_money');
return pdo_update(PDO_NAME."member",['cash_back_money'=>sprintf("%.2f",$cashBakcMoney + $money)],['id'=>$mid]);
}
}

27
addons/weliam_smartcity/plugin/cashback/config.xml

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<name><![CDATA[支付返现]]></name>
<identifie><![CDATA[cashback]]></identifie>
<version><![CDATA[1.0.0]]></version>
<type><![CDATA[market]]></type>
<description><![CDATA[用户购买指定商品来获取平台余额返现。]]></description>
<author><![CDATA[微连科技]]></author>
<url><![CDATA[http://www.weliam.cn/]]></url>
</application>
<setting>
<agent embed="false" />
<system embed="true" />
<task embed="false" />
</setting>
<agentmenu>
</agentmenu>
<systemmenu>
<menu title="返现" font="fa-inbox">
<entry title="返现记录" ac="cashback" do="cashBackRecord" iscover="true"/>
</menu>
<menu title="设置" font="fa-inbox">
<entry title="基本设置" ac="cashback" do="setting"/>
</menu>
</systemmenu>
</manifest>

BIN
addons/weliam_smartcity/plugin/cashback/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

7
addons/weliam_smartcity/plugin/cashback/uniapp.php

@ -0,0 +1,7 @@
<?php
defined('IN_IA') or exit('Access Denied');
class CitycardModuleUniapp extends Uniapp {
}

140
addons/weliam_smartcity/plugin/cashback/web/controller/cashback.ctrl.php

@ -0,0 +1,140 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Cashback_WeliamController {
protected static $setName = 'cash_back';
/**
* Comment: 返现记录列表
* Author: zzw
* Date: 2020/1/14 9:15
*/
public function cashBackRecord(){
global $_W,$_GPC;
#1、参数获取
$page = $_GPC['page'] ? : 1;
$pageIndex = $_GPC['page_index'] ? : 10;
$pageStart = $page * $pageIndex - $pageIndex;
$status = $_GPC['status'] ? : '';
$plugin = $_GPC['plugin'] ? : '';
$searchType = $_GPC['search_type'] ? : '';//0=全部;1=商品id;2=买家ID;3=买家昵称
$search = $_GPC['search'] ? : '';
#2、条件生成
$where = " WHERE a.uniacid = {$_W['uniacid']} ";
//状态判断
if($status) {
if($status == 'zero') $status = 0;
$where .= " AND a.status = {$status} ";
}
//模块判断
switch ($plugin){
case 'rush': $where .= " AND a.plugin = '{$plugin}' ";break;
case 'groupon': $where .= " AND a.plugin = '{$plugin}' ";break;
}
//搜索信息
switch ($searchType) {
case 1:
$where .= " AND a.goods_id = {$search} ";
break;//商品id
case 2:
$where .= " AND a.mid = {$search} ";
break;//买家ID
case 3:
$where .= " AND m.nickname LIKE '%{$search}%' ";
break;//买家昵称
}
$order = " ORDER BY a.create_time DESC ";
$limit = " LIMIT {$pageStart},{$pageIndex} ";
#3、信息获取
$field = "a.id,a.mid,a.goods_id,a.order_id,a.plugin,a.status,a.money,a.create_time,m.nickname,m.avatar";
$sql = "SELECT {$field} FROM ".tablename(PDO_NAME."cashback")
." as a LEFT JOIN ".tablename(PDO_NAME."member")
." as m ON a.mid = m.id ".$where;
//总数获取
$totalSql = str_replace($field,'count(*)',$sql);
$total = pdo_fetchcolumn($totalSql);
//列表获取
$list = pdo_fetchall($sql.$order.$limit);
foreach($list as $index => &$item){
//商品名称/订单号 信息获取
switch ($item['plugin']){
case 'rush':
$orderInfo = pdo_get(PDO_NAME."rush_order",['id'=>$item['order_id']],['orderno','actualprice']);
$item['order_no'] = $orderInfo['orderno'];
$item['price'] = $orderInfo['actualprice'];
$item['goods_name'] = pdo_getcolumn(PDO_NAME."rush_activity",['id'=>$item['goods_id']],'name');
break;//抢购
case 'groupon':
$orderInfo = pdo_get(PDO_NAME."order",['id'=>$item['order_id']],['orderno','price']);
$item['order_no'] = $orderInfo['orderno'];
$item['price'] = $orderInfo['price'];
$item['goods_name'] = pdo_getcolumn(PDO_NAME."groupon_activity",['id'=>$item['goods_id']],'name');
break;//团购
}
}
#4、分页操作
$pager = wl_pagination($total, $page, $pageIndex);
include wl_template("cashback/cashBackRecord");
}
/**
* Comment: 设置信息获取/编辑
* Author: zzw
* Date: 2020/1/13 14:15
*/
public function setting(){
global $_W,$_GPC;
#1、记录信息
if(checksubmit('submit')){
$set = $_GPC['set'];
Setting::wlsetting_save($set,self::$setName);
show_json(1);
}
#2、获取信息
$set = Setting::wlsetting_read(self::$setName);
include wl_template("cashback/setting");
}
/**
* Comment: 返现审核操作
* Author: zzw
* Date: 2020/1/14 10:40
*/
public function cashBackToExamine(){
global $_W,$_GPC;
#1、参数接收
$id = $_GPC['id'];
$ids = $_GPC['ids'];
$status = $_GPC['status'];//0=重新审核;1=通过;2=不通过
$table = PDO_NAME."cashback";
$data = ['status'=>$status];
if(is_array($ids) && count($ids) > 0){
$where = ['id'=>$ids];
}else{
$where = ['id'=>$id];
}
#3、根据状态值进行对应的操作
$res = pdo_update($table,$data,$where);
if($res){
//审核通过,直接返现给用户
if($status == 1) {
$info = pdo_getall($table , $where , ['order_id' , 'plugin' , 'money' , 'mid']);
foreach ($info as $index => $item){
switch ($item['plugin']) {
case 'rush':
$orderNo = pdo_getcolumn(PDO_NAME . "rush_order" , ['id' => $item['order_id']] , 'orderno');
break;//抢购
case 'groupon':
$orderNo = pdo_getcolumn(PDO_NAME . "order" , ['id' => $item['order_id']] , 'orderno');
break;//团购
}
if ($orderNo) Cashback::moneyBack($item['mid'] , $item['money'] , $orderNo);
}
}
show_json(1,'操作成功');
}else{
show_json(0,'操作失败,请重试');
}
}
}

147
addons/weliam_smartcity/plugin/cashback/web/view/default/cashback/cashBackRecord.html

@ -0,0 +1,147 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="javascript:;">名片管理</a></li>
</ul>
<div class="app-content">
<!-- 信息筛选 -->
<div class="app-filter">
<div class="filter-list">
<form class="form-horizontal" action="{php echo web_url('cashback/cashback/cashBackRecord',['status'=>$_GPC['status'],'plugin'=>$_GPC['plugin']])}" method="post">
<div class="form-group">
<label class="col-sm-2 control-label">状态</label>
<div class="col-sm-9">
<div class="btn-group">
<a href="{php echo web_url('cashback/cashback/cashBackRecord',['status'=>'','plugin'=>$_GPC['plugin']])}"
class="btn {if empty($_GPC['status'])}btn-primary{else}btn-default{/if}">全部</a>
<a href="{php echo web_url('cashback/cashback/cashBackRecord',['status'=>1,'plugin'=>$_GPC['plugin']])}"
class="btn {if $_GPC['status'] == 1}btn-primary{else}btn-default{/if}">已返现</a>
<a href="{php echo web_url('cashback/cashback/cashBackRecord',['status'=>'zero','plugin'=>$_GPC['plugin']])}"
class="btn {if $_GPC['status'] == 'zero'}btn-primary{else}btn-default{/if}">待审核</a>
<a href="{php echo web_url('cashback/cashback/cashBackRecord',['status'=>2,'plugin'=>$_GPC['plugin']])}"
class="btn {if $_GPC['status'] == 2}btn-primary{else}btn-default{/if}">未通过</a>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">订单类型</label>
<div class="col-sm-9">
<div class="btn-group">
<a href="{php echo web_url('cashback/cashback/cashBackRecord',['status'=>$_GPC['status'],'plugin'=>''])}"
class="btn {if empty($_GPC['plugin'])}btn-primary{else}btn-default{/if}">全部</a>
<a href="{php echo web_url('cashback/cashback/cashBackRecord',['status'=>$_GPC['status'],'plugin'=>'rush'])}"
class="btn {if $_GPC['plugin'] == 'rush'}btn-primary{else}btn-default{/if}">抢购</a>
<a href="{php echo web_url('cashback/cashback/cashBackRecord',['status'=>$_GPC['status'],'plugin'=>'groupon'])}"
class="btn {if $_GPC['plugin'] == 'groupon'}btn-primary{else}btn-default{/if}">团购</a>
</div>
</div>
</div>
<div class="form-group form-inline">
<label class="col-sm-2 control-label">记录搜索</label>
<div class="col-sm-9">
<select name="search_type" class="form-control">
<option value="0" {if $searchType == 0}selected{/if}>全部</option>
<option value="1" {if $searchType == 1}selected{/if}>商品id</option>
<option value="2" {if $searchType == 2}selected{/if}>买家ID</option>
<option value="3" {if $searchType == 3}selected{/if}>买家昵称</option>
</select>
<input type="text" name="search" class="form-control" value="{$search}" placeholder="请输入关键字">
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label"></div>
<div class="col-sm-9">
<button class="btn btn-primary" type="submit">搜索</button>
</div>
</div>
</form>
</div>
</div>
<!-- 信息列表 -->
<div class="app-table-list">
{if !empty($list)}
<!--列表信息-->
<div class="table-responsive">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th class="text-center" width="5%"><input type="checkbox" /></th>
<th class="text-center" width="10%">所属用户</th>
<th class="text-center" width="10%">商品类型</th>
<th class="text-center" width="15%">商品名称</th>
<th class="text-center" width="10%">支付金额</th>
<th class="text-center" width="10%">返现金额</th>
<th class="text-center" width="15%">订单号</th>
<th class="text-center" width="10%">状态</th>
<th class="text-center" width="15%">操作</th>
</tr>
</thead>
<tbody>
{loop $list $val}
<tr class="text-center">
<td>
{if $val['status'] != 1}
<input type="checkbox" value="{$val['id']}" />
{/if}
</td>
<td class="text-left">
<img src="{$val['avatar']}" style="width: 50px;height: 50px;">
<span style="margin-left: 5px;">{$val['nickname']}</span>
</td>
<td>
{if $val['plugin'] == 'rush'}
<label class="label label-primary">抢购</label>
{elseif $val['plugin'] == 'groupon'}
<label class="label label-info">团购</label>
{/if}
</td>
<td>{$val['goods_name']}</td>
<td>
<label class="label label-success">¥{$val['price']}</label>
</td>
<td>
<label class="label label-success">¥{$val['money']}</label>
</td>
<td>{$val['order_no']}</td>
<td>
{if $val['status'] == 0}
<label class="label label-warning">审核中</label>
{elseif $val['status'] == 1}
<label class="label label-success">已返现</label>
{elseif $val['status'] == 2}
<label class="label label-danger">未通过</label>
{/if}
</td>
<td>
{if $val['status'] == 0}
<a href="{php echo web_url('cashback/cashback/cashBackToExamine',['id'=>$val['id'],'status'=>1])}" data-toggle="ajaxPost" class="btn btn-info btn-sm">通过</a>
<a href="{php echo web_url('cashback/cashback/cashBackToExamine',['id'=>$val['id'],'status'=>2])}" data-toggle="ajaxPost" class="btn btn-sm btn-danger">不通过</a>
{elseif $val['status'] == 1}
{elseif $val['status'] == 2}
<a href="{php echo web_url('cashback/cashback/cashBackToExamine',['id'=>$val['id'],'status'=>0])}" data-toggle="ajaxPost" class="btn btn-warning btn-sm">重新审核</a>
{/if}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<!--批量操作-->
<div class="app-table-foot clearfix">
<div class="pull-left">
<button data-href="{php echo web_url('cashback/cashback/cashBackToExamine',['id'=>$val['id'],'status'=>1])}" data-confirm="确定通过当前选择的名片?" class="btn btn-default" type="button" data-toggle='batch'>通过</button>
<button data-href="{php echo web_url('cashback/cashback/cashBackToExamine',['id'=>$val['id'],'status'=>2])}" data-confirm="确定不通过当前选择的名片?" class="btn btn-default" type="button" data-toggle='batch'>不通过</button>
<button data-href="{php echo web_url('cashback/cashback/cashBackToExamine',['id'=>$val['id'],'status'=>0])}" data-confirm="确定重新审核当前选择的名片?" class="btn btn-default" type="button" data-toggle='batch'>重新审核</button>
</div>
<div class="pull-right">
{$pager}
</div>
</div>
{else}
<div class="no-result">
<p>还没有相关数据</p>
</div>
{/if}
</div>
</div>
{php include wl_template('common/footer');}

35
addons/weliam_smartcity/plugin/cashback/web/view/default/cashback/setting.html

@ -0,0 +1,35 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a href="#tab_basic">基本设置</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<div class="tab-content">
<div class="form-group-title">基本设置</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否需要审核</label>
<div class="col-xs-12 col-sm-8">
<div class="radio radio-success radio-inline">
<input type="radio" id="examine1" name="set[to_examine]" value="0" {if $set['to_examine'] != 1}checked="checked"{/if}>
<label for="examine1">开启</label>
</div>
<div class="radio radio-success radio-inline">
<input type="radio" id="examine2" name="set[to_examine]" value="1" {if $set['to_examine'] == 1}checked="checked"{/if}>
<label for="examine2">关闭</label>
</div>
<span class="help-block">关闭后,所有的返现会在支付后自动返现给用户</span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

152
addons/weliam_smartcity/plugin/citycard/Citycard.mod.php

@ -0,0 +1,152 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Citycard {
/**
* 经纬度转行政区划代码
* @param $location 经纬度
* @param bool $convert 是否需要百度转腾讯
* @return array
*/
static function lnglat_to_adinfo($location, $convert = false) {
global $_W;
if (empty($location['lat']) || empty($location['lng'])) {
return error(1, '经纬度不得为空');
}
$pro_code = $city_code = $area_code = 0;
//$location = $convert ? Util::Convert_BD09_To_GCJ02($location['lat'], $location['lng']) : $location;
$location_info = MapService::guide_gcoder($location['lat'] . ',' . $location['lng']);
if (is_error($location_info)) {
$agent_area = pdo_get('wlmerchant_oparea', array('aid' => $_W['aid']));
$pro_code = ($agent_area['level'] == 1) ? $agent_area['areaid'] : $pro_code;
$city_code = ($agent_area['level'] == 2) ? $agent_area['areaid'] : $city_code;
$area_code = ($agent_area['level'] == 3) ? $agent_area['areaid'] : $area_code;
} else {
$area_code = $location_info['result']['ad_info']['adcode'];
}
if (!empty($area_code)) {
$city_code = pdo_getcolumn('wlmerchant_area', ['id' => $area_code], 'pid');
}
if (!empty($city_code)) {
$pro_code = pdo_getcolumn('wlmerchant_area', ['id' => $city_code], 'pid');
}
return ['lat' => $location['lat'], 'lng' => $location['lng'], 'pro_code' => $pro_code, 'city_code' => $city_code, 'area_code' => $area_code];
}
/**
* 获取所有分类
* @param bool $all true全部分类 false启用的分类
* @return array
*/
static function get_cates($all = true) {
global $_W;
$where = $all ? [] : ['enabled' => 1];
$parents = $childrens = [];
$lists = pdo_getall('wlmerchant_citycard_cates', array_merge($where, array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid'])), [], '', "sort DESC");
foreach ($lists as $list) {
if (empty($list['parentid'])) {
$parents[$list['id']] = $list;
} else {
$childrens[$list['parentid']][] = $list;
}
}
return ['parents' => $parents, 'childrens' => $childrens];
}
/**
* 获取所有套餐
* @param bool $all true全部套餐 false启用的套餐
* @return array
*/
static function get_meals($all = true) {
global $_W;
$where = $all ? [] : ['status' => 1];
$meals = pdo_getall('wlmerchant_citycard_meals', array_merge($where, array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid'])), ['id','name','price','day','is_free','vipstatus','vipprice'], '', "sort DESC");
return $meals;
}
/**
* 名片的支付回调
* @param array $param
*/
static function payCitycardOrderNotify($params){
global $_W;
$order = pdo_get('wlmerchant_order', array('orderno' => $params['tid']));
if ($order['status'] == 0 || $order['status'] == 5) {
//更新订单
$data = array('status' => $params['result'] == 'success' ? 3 : 0);
$data['paytype'] = $params['type'];
if ($params['tag']['transaction_id']) $data['transid'] = $params['tag']['transaction_id'];
$data['paytime'] = TIMESTAMP;
pdo_update(PDO_NAME . 'order', $data, array('id' => $order['id']));
$task = array(
'type' => $order['plugin'],
'orderid' => $order['id']
);
$task = serialize($task);
Queue::addTask(2, $task, time(), $order['id']);
$carddata = pdo_get('wlmerchant_citycard_lists',array('id' => $order['specid']));
if($order['fightstatus'] == 1){ //创建或续费
$meal = pdo_get('wlmerchant_citycard_meals',array('id' => $order['fkid']));
$updata['paystatus'] = 1;
if(empty($meal['check'])){
$updata['checkstatus'] = 1;
$updata['status'] = 1;//默认启用
}//免审核
if($carddata['meal_endtime']>time()){
$updata['meal_endtime'] = $carddata['meal_endtime'] + $meal['day']*3600*24;
}else{
$updata['meal_endtime'] = time() + $meal['day']*3600*24;
}
if(p('distribution') && $meal['isdistri']){
$disorderid = Distribution::disCore($order['mid'], $order['price'], $meal['onedismoney'],$meal['twodismoney'],0,$order['id'],'citycard',1);
pdo_update(PDO_NAME.'order',array('disorderid' => $disorderid),array('id' => $order['id']));
}
pdo_update('wlmerchant_citycard_lists',$updata,array('id' => $order['specid']));
if(empty($updata['checkstatus'])){ //通知管理员
$nickname = pdo_getcolumn(PDO_NAME.'member',array('id'=>$order['mid']),'nickname');
$onecatename = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$carddata['one_class']),'name');
$twocatename = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$carddata['two_class']),'name');
$catename = !empty($twocatename)?$onecatename.'-'.$twocatename:$onecatename;
$first = '您好,用户['.$nickname. ']上传了新的城市名片信息';
$type = '新的城市名片信息认证';
$content = '名片分类:['.$catename.']';
$status = '待审核';
$remark = '请尽快前往系统后台审核名片资料';
News::noticeAgent('citycard',$carddata['aid'],$first,$type,$content,$status,$remark,time());
}
}else if($order['fightstatus'] == 2){ //置顶
$top = pdo_get('wlmerchant_citycard_tops',array('id' => $order['fkid']));
$updata['top_is'] = 1;
if($carddata['top_endtime']>time()){
$updata['top_endtime'] = $carddata['top_endtime'] + $top['day']*3600*24;
}else{
$updata['top_endtime'] = time() + $top['day']*3600*24;
}
pdo_update('wlmerchant_citycard_lists',$updata,array('id' => $order['specid']));
if(p('distribution') && $top['isdistri']){
$disorderid = Distribution::disCore($order['mid'], $order['price'], $top['onedismoney'],$top['twodismoney'],0,$order['id'],'citycard',1);
pdo_update(PDO_NAME.'order',array('disorderid' => $disorderid),array('id' => $order['id']));
}
}
}
}
/**
* 同城名片计划任务
*/
static function doTask() {
global $_W, $_GPC;
//取消过期置顶
pdo_update('wlmerchant_citycard_lists',array('top_is' => 0),array('top_is' => 1,'top_endtime <' => time()));
pdo_update('wlmerchant_citycard_lists',array('status' => 0),array('status' => 1,'meal_endtime <' => time()));
}
}

45
addons/weliam_smartcity/plugin/citycard/config.xml

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application>
<name><![CDATA[同城名片]]></name>
<identifie><![CDATA[citycard]]></identifie>
<version><![CDATA[1.0.0]]></version>
<type><![CDATA[interact]]></type>
<description><![CDATA[用户可以添加自己的名片,也可以收藏别人的名片。]]></description>
<author><![CDATA[微连科技]]></author>
<url><![CDATA[http://www.weliam.cn/]]></url>
</application>
<setting>
<agent embed="true" />
<system embed="true" />
<task embed="true" />
</setting>
<agentmenu>
<menu title="名片" font="fa-inbox">
<entry title="名片管理" ac="citycard" do="card_lists" actions='["do",["card_lists","card_edit"]]' iscover="true"/>
<entry title="名片分类" ac="citycard" do="cate_lists" actions='["do",["cate_lists","cate_edit"]]' />
</menu>
<menu title="付费" font="fa-inbox">
<entry title="套餐管理" ac="citycard" do="meal_lists" actions='["do",["meal_lists","meal_edit"]]' />
<entry title="置顶管理" ac="citycard" do="top_lists" actions='["do",["top_lists","top_edit"]]' />
<entry title="付费记录" ac="citycard" do="order_lists" actions='["do",["order_lists"]]' />
</menu>
<menu title="设置" font="fa-inbox">
<entry title="名片设置" ac="citycard" do="setting" />
</menu>
</agentmenu>
<systemmenu>
<menu title="名片" font="fa-inbox">
<entry title="名片管理" ac="citycard" do="card_lists" actions='["do",["card_lists","card_edit"]]' iscover="true"/>
<entry title="名片分类" ac="citycard" do="cate_lists" actions='["do",["cate_lists","cate_edit"]]' />
</menu>
<menu title="付费" font="fa-inbox">
<entry title="套餐管理" ac="citycard" do="meal_lists" actions='["do",["meal_lists","meal_edit"]]' />
<entry title="置顶管理" ac="citycard" do="top_lists" actions='["do",["top_lists","top_edit"]]' />
<entry title="付费记录" ac="citycard" do="order_lists" actions='["do",["order_lists"]]' />
</menu>
<menu title="设置" font="fa-inbox">
<entry title="名片设置" ac="citycard" do="setting" />
</menu>
</systemmenu>
</manifest>

BIN
addons/weliam_smartcity/plugin/citycard/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

704
addons/weliam_smartcity/plugin/citycard/uniapp.php

@ -0,0 +1,704 @@
<?php
defined('IN_IA') or exit('Access Denied');
class CitycardModuleUniapp extends Uniapp {
/**
* Comment: 名片列表信息
* Author: zzw
* Date: 2019/12/17 13:46
*/
public function homeList(){
global $_W,$_GPC;
#1、参数获取
$page = $_GPC['page'] ? : 1;
$pageIndex = $_GPC['page_index'] ? : 10;
$pageStart = $page * $pageIndex - $pageIndex;
$sort = $_GPC['sort'] ? : 1;
$cateOne = $_GPC['cate_one'] ? : 0;//一级分类
$cateTwo = $_GPC['cate_two'] ? : 0;//二级分类
$cityId = $_GPC['city_id'] ? : 0;//区域id
$lng = $_GPC['lng'] && $_GPC['lng'] != 'undefined' ? $_GPC['lng'] : 0;//用户当前所在经度 104.0091133118 经度
$lat = $_GPC['lat'] && $_GPC['lat'] != 'undefined' ? $_GPC['lat'] : 0;//用户当前所在纬度 30.5681964123 纬度
$isCollect = $_GPC['is_collect'] ? : 0;//是否获取收藏的名片 0=获取所有人,1=只获取当前用户收藏的名片
$search = $_GPC['search'] ? : '';
$time = time();
#2、查询条件生成 基本条件:启用,审核通过,已支付
$where = " WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND status = 1 AND checkstatus = 1 AND paystatus = 1 AND meal_endtime > {$time} ";
if($cateOne > 0) $where .= " AND one_class = {$cateOne} ";
if($cateTwo > 0) $where .= " AND two_class = {$cateTwo} ";
if($cityId > 0 && empty($isCollect)){
$displayorder = pdo_getcolumn(PDO_NAME.'area',array('id'=>$cityId),'displayorder');
if(empty($displayorder)){
$where .= " AND ( pro_code = {$cityId} OR city_code = {$cityId} OR area_code = {$cityId} ) ";
}
}
if($search) $where .= " AND ( name LIKE '%{$search}%' OR company LIKE '%{$search}%' OR `desc` LIKE '%{$search}%' )";
//判断是否获取当前用户收藏的名片
if($isCollect == 1){
//仅获取当前用户的名片列表 判断是否登录
if(intval($_W['mid']) <= 0){
$this->reLogin();
}else {
$collectList = pdo_getall(PDO_NAME."citycard_collect",['mid'=>$_W['mid']],['cardid']);
if(is_array($collectList) && count($collectList) > 1){
$collectIds = array_column($collectList,'cardid');
$idStr = trim(implode($collectIds,','),',');
$where .= " AND id IN ({$idStr}) ";
}else if(is_array($collectList) && count($collectList) == 1){
$where .= " AND id = {$collectList[0]['cardid']} ";
}else{
//没有内容 则代表当前用户没有收藏名片 不查询任何信息
$where .= " AND id = -1 ";
}
}
}
#3、排序条件生成
$order = " ORDER BY top_is DESC";
switch ($sort){
case 1:$order .= ",createtime DESC ";break;//最新
case 2:$order .= ",show_addr DESC,distance ASC ";break;//附近
case 3:$order .= ",laud DESC ";break;//点赞榜
case 4:$order .= ",pv DESC ";break;//人气榜
case 5:$order .= ",total_collect DESC ";break;//收存榜
}
#4、名片总数获取
$total = pdo_fetchcolumn("SELECT count(*) FROM " .tablename(PDO_NAME."citycard_lists") .$where);
$data['total'] = ceil($total / $pageIndex);
#5、名片列表信息获取
$field = "id,id as pid,mid,top_is,
(SELECT
CASE
WHEN {$lat} > 0 AND {$lng} > 0 THEN ROUND(6378.137 * 2 * ASIN(
SQRT(
POW(SIN(({$lat} * PI() / 180 - lat * PI() / 180) / 2),2) +
COS({$lat} * PI() / 180) * COS(lat * PI() / 180) *
POW(SIN(({$lng} * PI() / 180 - lng * PI() / 180) / 2),2)
)
) * 1000
)
ELSE 0
END FROM ".tablename(PDO_NAME.'citycard_lists')." as b WHERE b.id = pid) as distance,
(SELECT COUNT(*) FROM ".tablename(PDO_NAME.'citycard_collect')." WHERE cardid = pid) as total_collect,
name,logo,mobile,wechat,company,branch,position,`desc`,show_addr,show_mobile,show_wechat,laud,pv,share,lat,lng,one_class,two_class";
$data['list'] = pdo_fetchall("SELECT {$field} FROM ".tablename(PDO_NAME."citycard_lists") .$where.$order." LIMIT {$pageStart},{$pageIndex}");
#6、循环进行信息的处理
if(is_array($data['list']) && count($data['list']) > 0){
foreach($data['list'] as $key => &$val){
$member = pdo_get(PDO_NAME."member",['id'=>$val['mid']],['nickname','avatar']);
//基本信息处理
$val['distance'] = Commons::distanceConversion($val['distance']); //距离转换
$val['logo'] = !empty($val['logo']) ? tomedia($val['logo']) : tomedia($member['avatar']) ;
$val['name'] = !empty($val['name']) ? $val['name'] : $member['nickname'] ;
$val['one_class_title'] = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$val['one_class']),'name');
$val['two_class_title'] = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$val['two_class']),'name');
}
}
#6、判断当前用户是否存在有效的名片 0=不存在,1=存在
$myCard = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename(PDO_NAME."citycard_lists")
." WHERE uniacid = {$_W['uniacid']} AND mid = {$_W['mid']} AND meal_endtime > {$time} AND status = 1");
$data['is_have'] = intval($myCard) > 0 ? 1 : 0 ;
$this->renderSuccess('名片首页信息',$data);
}
/**
* Comment: 获取名片的详细信息
* Author: zzw
* Date: 2019/12/17 14:14
*/
public function cardInfo(){
global $_W,$_GPC;
#1、参数获取
$id = $_GPC['id'] OR $this->renderError('参数错误,id不存在');
#2、浏览量添加
$set = Setting::agentsetting_read('citycard');
if($set['minup'] > 0 || $set['maxup'] > 0){
$randNumber = [$set['minup'],$set['maxup']];
$min = min($randNumber);
$max = max($randNumber);
$addPv = rand($min,$max);
}else{
$addPv = 1;
}
pdo_fetch("UPDATE ".tablename(PDO_NAME.'citycard_lists')." SET `pv` = (`pv` + {$addPv}) WHERE `id` = {$id} ");
#3、获取当前名片想信息
$field = "id,id as pid,
(SELECT COUNT(*) FROM ".tablename(PDO_NAME.'citycard_collect')." WHERE cardid = pid) as total_collect,
mid,name,logo,mobile,wechat,company,branch,position,address,show_addr,show_mobile,pro_code,city_code,area_code,show_wechat,laud,pv,share,`desc`,laud_user,one_class,two_class";
$info = pdo_fetch("SELECT {$field} FROM ".tablename(PDO_NAME."citycard_lists") ." WHERE id = {$id} ");
$member = pdo_get(PDO_NAME."member",['id'=>$info['mid']],['nickname','avatar']);
#4、信息处理
if($info['show_mobile'] == 0 && strlen($info['mobile']) > 1){
//手机号隐藏处理
$replaceStr = substr($info['mobile'],3,(strlen($info['mobile']) - 7));
$info['mobile'] = str_replace($replaceStr,'***',$info['mobile']);
}
$info['logo'] = !empty($info['logo']) ? tomedia($info['logo']) : tomedia($member['avatar']) ;
$info['name'] = !empty($info['name']) ? $info['name'] : $member['nickname'] ;
$info['one_class_title'] = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$info['one_class']),'name');
$info['two_class_title'] = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$info['two_class']),'name');
#5、判断当前用户是否点赞
$info['is_laud'] = intval(0);
if($_W['mid'] && !empty($info['laud_user'])){
$laudUser = explode(',',$info['laud_user']);
if(in_array($_W['mid'],$laudUser)){
$info['is_laud'] = intval(1);
}
}
unset($info['laud_user']);
#6、判断当前用户是否已收存当前名片
$isCollect = pdo_getcolumn(PDO_NAME."citycard_collect",['cardid' => $id , 'mid' => $_W['mid']],'id');
$info['is_collect'] = intval($isCollect) > 0 ? 1 : 0 ;
//查询是否有动态和店铺
$pocketflag = pdo_getcolumn(PDO_NAME.'pocket_informations',array('uniacid'=>$_W['uniacid'],'mid'=>$info['mid'],'aid' => $_W['aid'],'status' =>0),'id');
$info['showpocket'] = $pocketflag > 0 ? 1 : 0;
$storelist = pdo_fetchall("SELECT b.id,b.storename,b.logo,b.address,b.location,b.storehours,b.pv,b.score,b.tag FROM " . tablename(PDO_NAME . "merchantuser") . " as a RIGHT JOIN " . tablename(PDO_NAME . "merchantdata") . " as b ON a.storeid = b.id WHERE a.mid = {$info['mid']} AND a.enabled = 1 AND b.enabled = 1 GROUP BY a.storeid ORDER BY a.createtime ASC ");
$info['showstore'] = !empty($storelist) ? 1 : 0;
if(!strstr($info['address'], '省') && !strstr($info['address'], '市') && !strstr($info['address'], '县') && !strstr($info['address'], '自治区')){
$proName = pdo_getcolumn(PDO_NAME.'area',array('id'=>$info['pro_code']),'name');
$cityName = pdo_getcolumn(PDO_NAME.'area',array('id'=>$info['city_code']),'name');
$areaName = pdo_getcolumn(PDO_NAME.'area',array('id'=>$info['area_code']),'name');
$info['address'] = $proName.$cityName.$areaName.$info['address'];
}
$this->renderSuccess("名片详细信息",$info);
}
/**
* Comment: 用户 点赞/取消点赞 操作
* Author: zzw
* Date: 2019/12/17 14:46
*/
public function cardFabulous(){
global $_W,$_GPC;
#1、参数接收
$id = $_GPC['id'] OR $this->renderError('缺少参数:id') ;//名片id
#2、获取名片的点赞信息
$ids = pdo_getcolumn(PDO_NAME."citycard_lists",['id'=>$id],'laud_user');
if($ids){
//判断是否已经点赞,做出对应的操作
$idArr = explode(',',$ids);
if(in_array($_W['mid'],$idArr)){
//已经点赞 取消点赞操作
$idArr = array_flip($idArr);
unset($idArr[$_W['mid']]);
$idArr = array_flip($idArr);
}else{
//未点赞 点赞操作
$idArr[] = $_W['mid'];
}
//生成新的信息
$data = [
'laud_user' => implode(',', $idArr) ,
'laud' => count($idArr)
];
}else{
$data = ['laud_user' => $_W['mid'] , 'laud' => 1];
}
#2、修改当前名片的点赞信息
$res = pdo_update(PDO_NAME."citycard_lists",$data,['id'=>$id]);
if($res) $this->renderSuccess('操作成功!');
else $this->renderError('操作失败,请刷新重试!');
}
/**
* Comment: 名片 收存/取消收存 操作
* Author: zzw
* Date: 2019/12/17 15:00
*/
public function cardCollect(){
global $_W,$_GPC;
#1、参数获取
$id = $_GPC['id'] OR $this->renderError('参数错误,id不存在!');
#2、判断用户是否已收存 做出对应的操作
$data = ['cardid' => $id , 'mid' => $_W['mid']];
$isCollect = pdo_getcolumn(PDO_NAME."citycard_collect",$data,'id');
if($isCollect){
//已收存 取消收存
$res = pdo_delete(PDO_NAME."citycard_collect",$data);
}else{
//未收存 进行收存操作
$res = pdo_insert(PDO_NAME."citycard_collect",$data);
}
#2、返回存在结果
if($res) $this->renderSuccess('操作成功!');
else $this->renderError('操作失败,请刷新重试!');
}
/**
* Comment: 名片分享数量增加操作
* Author: zzw
* Date: 2019/12/17 15:23
*/
public function cardShare(){
global $_W,$_GPC;
#1、参数获取
$id = $_GPC['id'] OR $this->renderError('参数错误,id不存在!');
#2、修改分享数量
pdo_fetch("UPDATE ".tablename(PDO_NAME.'citycard_lists')." SET `share` = (`share` + 1) WHERE `id` = {$id} ");
$this->renderSuccess('操作成功!');
}
/**
* Comment: 我的名片列表
* Author: zzw
* Date: 2019/12/18 15:58
*/
public function myCard(){
global $_W,$_GPC;
#1、参数获取
$page = $_GPC['page'] ? : 1;
$pageIndex = $_GPC['page_index'] ? : 10;
$pageStart = $page * $pageIndex - $pageIndex;
#2、查询条件生成
$where = " WHERE uniacid = {$_W['uniacid']} AND aid = {$_W['aid']} AND mid = {$_W['mid']} ";
#3、排序条件生成
$order = " ORDER BY top_is DESC,createtime DESC ";
#4、名片总数获取
$total = pdo_fetchcolumn("SELECT count(*) FROM " .tablename(PDO_NAME."citycard_lists") .$where);
$data['total'] = ceil($total / $pageIndex);
#5、获取用户还能创建的名片数量
$set = Setting::agentsetting_read('citycard');
$maxNumber = $set['maxcardnum'];
if($maxNumber > 0) $data['surplus'] = intval($maxNumber - $total);
else $data['surplus'] = intval(999);
#6、名片列表信息获取
$field = "id,id as pid,top_is,
(SELECT COUNT(*) FROM ".tablename(PDO_NAME.'citycard_collect')." WHERE cardid = pid) as total_collect,
name,logo,mobile,wechat,company,branch,position,address,pro_code,city_code,area_code
,checkstatus,`desc`,show_addr,show_mobile,show_wechat,laud,pv,share,meal_endtime,paystatus,one_class,two_class";
$data['list'] = pdo_fetchall("SELECT {$field} FROM ".tablename(PDO_NAME."citycard_lists") .$where.$order." LIMIT {$pageStart},{$pageIndex}");
#7、循环进行信息的处理
if(is_array($data['list']) && count($data['list']) > 0){
$member = pdo_get(PDO_NAME."member",['id'=>$_W['mid']],['nickname','avatar']);
foreach($data['list'] as $key => &$val){
//基本信息处理
$val['logo'] = !empty($val['logo']) ? tomedia($val['logo']) : tomedia($member['avatar']) ;
$val['name'] = !empty($val['name']) ? $val['name'] : $member['nickname'] ;
$val['one_class_title'] = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$val['one_class']),'name');
$val['two_class_title'] = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$val['two_class']),'name');
//判断是否过期 0=未过期,1=已过期
$val['is_endtime'] = intval(0);
if($val['meal_endtime'] < time()){
$val['is_endtime'] = intval(1);
}
$val['meal_endtime'] = date("Y-m-d",$val['meal_endtime']);
//手机号隐藏处理
if($val['show_mobile'] == 0 && strlen($val['mobile']) > 1){
$replaceStr = substr($val['mobile'],3,(strlen($val['mobile']) - 7));
$val['mobile'] = str_replace($replaceStr,'***',$val['mobile']);
}
//处理地址信息
if(!strstr($val['address'], '省') && !strstr($val['address'], '市') && !strstr($val['address'], '县') && !strstr($val['address'], '自治区')){
$proName = pdo_getcolumn(PDO_NAME.'area',array('id'=>$val['pro_code']),'name');
$cityName = pdo_getcolumn(PDO_NAME.'area',array('id'=>$val['city_code']),'name');
$areaName = pdo_getcolumn(PDO_NAME.'area',array('id'=>$val['area_code']),'name');
$val['address'] = $proName.$cityName.$areaName.$val['address'];
}
}
}
$this->renderSuccess('我的名片列表',$data);
}
/**
* Comment: 创建或编辑名片数据接口
* Author: wlf
* Date: 2019/12/16 17:50
*/
public function createCityCardApi(){
global $_W,$_GPC;
$id = $_GPC['id']; //名片id
$data = array('paystatus'=>0); //初始化返回参数
$carddata = array(
'name' => trim($_GPC['name']), //姓名
'mobile' => trim($_GPC['mobile']), //电话
'wechat' => trim($_GPC['wechat']), //微信
'company' => trim($_GPC['company']), //公司
'branch' => trim($_GPC['branch']), //部门
'position' => trim($_GPC['position']), //岗位
'desc' => trim($_GPC['desc']), //简介
'address' => trim($_GPC['address']), //地址
'lng' => trim($_GPC['lng']), //定位经度
'lat' => trim($_GPC['lat']), //定位纬度
'one_class' => trim($_GPC['one_class']), //一级分类
'two_class' => trim($_GPC['two_class']), //二级分类
'show_addr' => trim($_GPC['show_addr']), //是否显示地址 0隐藏 1显示
'show_mobile' => trim($_GPC['show_mobile']), //是否显示电话 0隐藏 1显示
'show_wechat' => trim($_GPC['show_wechat']), //是否显示微信 0隐藏 1显示
'logo' => trim($_GPC['logo']),
'pro_code' => trim($_GPC['provinceid']),
'city_code' => trim($_GPC['cityid']),
'area_code' => trim($_GPC['countyid'])
);
//校验文本
$textRes = Filter::init($carddata['name'],$_W['source'],1);
if($textRes['errno'] == 0){
$this->renderError('名片名字'.$textRes['message']);
}
$textRes = Filter::init($carddata['desc'],$_W['source'],1);
if($textRes['errno'] == 0){
$this->renderError('名片简介'.$textRes['message']);
}
if(empty($id)){
$carddata['createtime'] = time();
$carddata['uniacid'] = $_W['uniacid'];
$carddata['aid'] = $_W['aid'];
$carddata['mid'] = $_W['mid'];
$carddata['meal_id'] = trim($_GPC['meal_id']);
if(empty($carddata['logo'])){
$carddata['logo'] = $_W['wlmember']['avatar'];
}
$res = pdo_insert('wlmerchant_citycard_lists',$carddata);
if($res){
$cardid = pdo_insertid();
//获取套餐数据
$meal = pdo_get('wlmerchant_citycard_meals',array('id' => $carddata['meal_id']));
//会员判断
$vipflag = WeliamWeChat::VipVerification($_W['mid'],true);
if($meal['vipstatus'] == 1){
if($vipflag > 0){
if($meal['vipprice'] > 0){
$meal['price'] = $meal['vipprice'];
}else{
$meal['is_free'] = 1;
}
}
}else if($meal['vipstatus'] == 2){
if(empty($vipflag)){
$this->renderError('此套餐为会员特供,请先成为会员');
}
}
if($meal['is_free']){ //免费
$updata['paystatus'] = 1;
if(empty($meal['check'])){
$updata['checkstatus'] = 1;
$updata['status'] = 1;//默认启用
}//免审核
$updata['meal_endtime'] = time() + $meal['day']*3600*24;
pdo_update('wlmerchant_citycard_lists',$updata,array('id' => $cardid));
if(empty($updata['checkstatus'])){ //通知管理员
$nickname = pdo_getcolumn(PDO_NAME.'member',array('id'=>$carddata['mid']),'nickname');
$onecatename = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$carddata['one_class']),'name');
$twocatename = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$carddata['two_class']),'name');
$catename = !empty($twocatename)?$onecatename.'-'.$twocatename:$onecatename;
$first = '您好,用户['.$nickname. ']上传了新的城市名片信息';
$type = '新的城市名片信息认证';
$content = '名片分类:['.$catename.']';
$status = '待审核';
$remark = '请尽快前往系统后台审核名片资料';
News::noticeAgent('citycard',$carddata['aid'],$first,$type,$content,$status,$remark,time());
}
$data['cardid'] = $cardid;
$this->renderSuccess('创建成功',$data);
}else{ //收费创建订单
if($meal['price']<0.01){
$this->renderError('支付金额有误,请联系管理员');
}
$orderdata = array(
'uniacid' => $carddata['uniacid'],
'mid' => $carddata['mid'], //付款人id
'sid' => 0,
'aid' => $carddata['aid'],
'fkid' => $carddata['meal_id'], //套餐id
'plugin' => 'citycard',
'payfor' => 'citycardOrder',
'orderno' => createUniontid(),
'status' => 0,//订单状态:0未支付,1支付,2待发货,3已发货,4已签收,5已取消,6待退款,7已退款
'createtime' => TIMESTAMP,
'oprice' => $meal['price'],
'price' => $meal['price'],
'num' => 1,
'fightstatus' => 1, //付费激活或续费
'specid' => $cardid, //名片的id
'goodsprice' => $meal['price'],
'remark' => '',
'settlementmoney' => 0
);
pdo_insert(PDO_NAME . 'order', $orderdata);
$data['orderid'] = pdo_insertid();
$data['paystatus'] = 1;
$this->renderSuccess('请支付',$data);
}
}else{
$this->renderError('保存失败请刷新重试');
}
}else{
$card = pdo_get('wlmerchant_citycard_lists',array('id' => $id),array('meal_id'));
$meal = pdo_get('wlmerchant_citycard_meals',array('id' => $card['meal_id']));
if(empty($meal['check'])){
$carddata['checkstatus'] = 1;
}else{
$carddata['checkstatus'] = 0;
}
//if(!empty($meal['check'])){$carddata['checkstatus'] = 0;}//需要审核
$res = pdo_update('wlmerchant_citycard_lists',$carddata,array('id' => $id));
if(empty($carddata['checkstatus'])){ //通知管理员
$nickname = pdo_getcolumn(PDO_NAME.'member',array('id'=>$carddata['mid']),'nickname');
$onecatename = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$carddata['one_class']),'name');
$twocatename = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$carddata['two_class']),'name');
$catename = !empty($twocatename)?$onecatename.'-'.$twocatename:$onecatename;
$first = '您好,用户['.$nickname. ']修改了自己的城市名片信息';
$type = '修改城市名片信息认证';
$content = '名片分类:['.$catename.']';
$status = '待审核';
$remark = '请尽快前往系统后台审核名片资料';
News::noticeAgent('citycard',$carddata['aid'],$first,$type,$content,$status,$remark,time());
}
if($res){
$this->renderSuccess('修改成功',$data);
}else{
$this->renderError('修改失败或无数据修改');
}
}
}
/**
* Comment: 创建或编辑名片数据页面
* Author: wlf
* Date: 2019/12/17 18:20
*/
public function createCityCardPage(){
global $_W,$_GPC;
$id = $_GPC['id']; //名片id
$data = []; //初始化返回参数
if($id){ //用户数据
$data['cardinfo'] = pdo_get('wlmerchant_citycard_lists',array('id' => $id),array('name','pro_code','city_code','area_code','logo','mobile','wechat','company','branch','position','desc','address','lng','lat','one_class','two_class','show_addr','show_mobile','show_wechat'));
$data['cardinfo']['logo'] = tomedia($data['cardinfo']['logo']);
}
//获取分类名称
$data['cardinfo']['onecatename'] = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$data['cardinfo']['one_class']),'name');
$data['cardinfo']['twocatename'] = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$data['cardinfo']['two_class']),'name');
if(!$data['cardinfo']){$data['cardinfo'] = [];}
//获取行业信息
$cates = pdo_getall(PDO_NAME.'citycard_cates' , [
'parentid' => 0 ,
'enabled' => 1 ,
'uniacid' => $_W['uniacid'] ,
'aid' => $_W['aid']
] , [] , '' , "sort DESC");
foreach ($cates as &$cate){
$cate['childrens'] = pdo_getall('wlmerchant_citycard_cates',array('parentid'=>$cate['id'],'enabled'=>1,'uniacid' => $_W['uniacid'],'aid' => $_W['aid']), [], '', "sort DESC");
if(!empty($cate['childrens'])){
$data['cates'][] = $cate;
}
}
//获取套餐信息
$data['meals'] = Citycard::get_meals(false);
if(!empty($data['meals'])){
$vipflag = WeliamWeChat::VipVerification($_W['mid'],true);
foreach($data['meals'] as $key => &$meal){
if($meal['vipstatus'] == 1){
if($vipflag > 0){
if($meal['vipprice'] > 0){
$meal['price'] = $meal['vipprice'];
}else{
$meal['is_free'] = 1;
}
}
}else if($meal['vipstatus'] == 2){
if(empty($vipflag)){
unset($data['meals'][$key]);
}
}
if($_W['wlsetting']['base']['payclose'] > 0 && is_ios()){
if(empty($meal['is_free'])){
unset($data['meals'][$key]);
}
}
}
}
$new = [];
foreach($data['meals'] as $key=>$value) {
$new[] = $value;
}
$data['meals'] = $new;
//获取入驻协议
$set = Setting::agentsetting_read('citycard');
$data['agreement'] = $set['agreement'];
$data['cardinfo']['provinceid'] = $data['cardinfo']['pro_code'];unset($data['cardinfo']['pro_code']);
$data['cardinfo']['cityid'] = $data['cardinfo']['city_code'];unset($data['cardinfo']['city_code']);
$data['cardinfo']['countyid'] = $data['cardinfo']['area_code'];unset($data['cardinfo']['area_code']);
//定制替换文本
if(Customized::init('citycard1503') > 0){
$data['schoolText'] = 1;
}else{
$data['schoolText'] = 0;
}
$this->renderSuccess('创建页面初始化',$data);
}
/**
* Comment: 续费或置顶名片接口
* Author: wlf
* Date: 2019/12/18 09:55
*/
public function renewCityCard(){
global $_W,$_GPC;
$cardid = $_GPC['cardid'];
$objid = $_GPC['objid'];
$type = $_GPC['type']; //1续费 2置顶
$card = pdo_get('wlmerchant_citycard_lists',array('id' => $cardid));
$vipflag = WeliamWeChat::VipVerification($_W['mid'],true);
if(empty($card)){
$this->renderError('名片参数错误,请刷新重试');
}
if($type == 1){
$renew = pdo_get('wlmerchant_citycard_meals',array('id' => $objid));
if(empty($renew)){
$this->renderError('套餐参数无效,请刷新重试');
}
//会员判断
if($renew['vipstatus'] == 1){
if($vipflag > 0){
if($renew['vipprice'] > 0){
$renew['price'] = $renew['vipprice'];
}else{
$renew['is_free'] = 1;
}
}
}else if($renew['vipstatus'] == 2){
if(empty($vipflag)){
$this->renderError('此套餐为会员特供,请先成为会员');
}
}
}else if($type == 2){
$renew = pdo_get('wlmerchant_citycard_tops',array('id' => $objid));
if(empty($renew)){
$this->renderError('置顶餐参数无效,请刷新重试');
}
//判断会员
if($renew['vipstatus'] == 1 && $vipflag > 0){
$renew['price'] = $renew['vipprice'];
}else if($renew['vipstatus'] == 2 && empty($vipflag)){
$this->renderError('此套餐为会员特供,请先成为会员');
}
}else{
$this->renderError('类型参数错误,请刷新重试');
}
if($renew['is_free']){
if($card['meal_endtime']>time()){
$updata['meal_endtime'] = $card['meal_endtime'] + $renew['day']*3600*24;
}else{
$updata['meal_endtime'] = time() + $renew['day']*3600*24;
}
$updata['paystatus'] = 1;
if(empty($renew['check'])){$updata['checkstatus'] = 1;}//免审核
pdo_update('wlmerchant_citycard_lists',$updata,array('id' => $cardid));
if(empty($updata['checkstatus'])){ //通知管理员
$nickname = pdo_getcolumn(PDO_NAME.'member',array('id'=>$card['mid']),'nickname');
$onecatename = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$card['one_class']),'name');
$twocatename = pdo_getcolumn(PDO_NAME.'citycard_cates',array('id'=>$card['two_class']),'name');
$catename = !empty($twocatename)?$onecatename.'-'.$twocatename:$onecatename;
$first = '您好,用户['.$nickname. ']修改了自己的城市名片信息';
$type = '修改城市名片信息认证';
$content = '名片分类:['.$catename.']';
$status = '待审核';
$remark = '请尽快前往系统后台审核名片资料';
News::noticeAgent('citycard',$card['aid'],$first,$type,$content,$status,$remark,time());
}
$data['paystatus'] = 0;
$this->renderSuccess('续费成功',$data);
}else{
if($renew['price']<0.01){
$this->renderError('支付金额有误,请联系管理员');
}
$orderdata = array(
'uniacid' => $card['uniacid'],
'mid' => $card['mid'], //付款人id
'sid' => 0,
'aid' => $card['aid'],
'fkid' => $objid, //套餐或置顶id
'plugin' => 'citycard',
'payfor' => 'citycardOrder',
'orderno' => createUniontid(),
'status' => 0,//订单状态:0未支付,1支付,2待发货,3已发货,4已签收,5已取消,6待退款,7已退款
'createtime' => TIMESTAMP,
'oprice' => $renew['price'],
'price' => $renew['price'],
'num' => 1,
'fightstatus' => $type, //1付费激活或续费 2置顶
'specid' => $cardid, //名片的id
'goodsprice' => $renew['price'],
'remark' => '',
'settlementmoney' => 0
);
pdo_insert(PDO_NAME . 'order', $orderdata);
$data['orderid'] = pdo_insertid();
$data['paystatus'] = 1;
$this->renderSuccess('请支付',$data);
}
}
/**
* Comment: 名片(置顶|套餐)信息列表
* Author: zzw
* Date: 2019/12/23 14:34
*/
public function cardRelevantInfo(){
global $_W,$_GPC;
$vipflag = WeliamWeChat::VipVerification($_W['mid'],true);
#1、获取套餐列表
$data['meals'] = pdo_getall(PDO_NAME."citycard_meals"
, ['status'=>1,'aid'=>$_W['aid'],'uniacid'=>$_W['uniacid']]
, ['id','name','is_free','price','day','vipstatus','vipprice'],'','sort DESC');
if(!empty($data['meals'])){
foreach($data['meals'] as $key => &$meal){
if($meal['vipstatus'] == 1){
if($vipflag > 0){
if($meal['vipprice'] > 0){
$meal['price'] = $meal['vipprice'];
}else{
$meal['is_free'] = 1;
}
}
}else if($meal['vipstatus'] == 2){
if(empty($vipflag)){
unset($data['meals'][$key]);
}
}
if($_W['wlsetting']['base']['payclose'] > 0 && is_ios()){
if(empty($meal['is_free'])){
unset($data['meals'][$key]);
}
}
}
$new = [];
foreach($data['meals'] as $key=>$value) {
$new[] = $value;
}
$data['meals'] = $new;
}
#2、获取置顶列表
$data['tops'] = pdo_getall(PDO_NAME."citycard_tops"
, ['status'=>1,'aid'=>$_W['aid'],'uniacid'=>$_W['uniacid']]
, ['id','name','price','day','vipstatus','vipprice'],'','sort DESC');
if(!empty($data['tops'])){
foreach($data['tops'] as $key => &$top){
if($top['vipstatus'] == 1 && $vipflag > 0){
$top['price'] = $top['vipprice'];
if($top['price'] < 0.01){
$top['is_free'] = 1;
}
}else if($top['vipstatus'] == 2 && empty($vipflag)){
unset($data['tops'][$key]);
}
if($_W['wlsetting']['base']['payclose'] > 0 && is_ios()){
if(empty($top['is_free'])){
unset($data['tops'][$key]);
}
}
}
$new = [];
foreach($data['tops'] as $key=>$value) {
$new[] = $value;
}
$data['tops'] = $new;
}
$this->renderSuccess('名片相关信息',$data);
}
}

372
addons/weliam_smartcity/plugin/citycard/web/controller/citycard.ctrl.php

@ -0,0 +1,372 @@
<?php
defined('IN_IA') or exit('Access Denied');
class Citycard_WeliamController {
public function card_lists() {
global $_W, $_GPC;
$where = array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid']);
$pindex = max(1, intval($_GPC['page']));
$psize = 15;
if ($_GPC['name']) {
$where['name LIKE'] = '%' . $_GPC['name'] . '%';
}
$lists = pdo_getslice('wlmerchant_citycard_lists', $where, array($pindex, $psize), $total, array(), '', "id DESC");
foreach ($lists as $key => &$val) {
$val['member'] = $val['mid'] ? Member::wl_member_get($val['mid'], ['nickname', 'mobile','avatar','encodename']) : [];
$val['meal'] = pdo_get('wlmerchant_citycard_meals', array('id' => $val['meal_id']));
$val['collect'] = pdo_getcolumn('wlmerchant_citycard_collect', array('cardid' => $val['id']), 'COUNT(cardid)');
$val['one_class_name'] = pdo_getcolumn('wlmerchant_citycard_cates', array('id' => $val['one_class']), 'name');
$val['two_class_name'] = pdo_getcolumn('wlmerchant_citycard_cates', array('id' => $val['two_class']), 'name');
//如果名片没有logo 则使用 用户头条代替
$val['logo'] = !empty($val['logo']) ? $val['logo'] : $val['member']['avatar'];
}
$pager = wl_pagination($total, $pindex, $psize);
$checkstatus = array(['class' => 'btn-warning', 'text' => '待审核'], ['class' => 'btn-primary', 'text' => '已通过'], ['class' => 'btn-danger', 'text' => '已驳回']);
include wl_template('citycard/card_lists');
}
public function card_edit() {
global $_W, $_GPC;
$id = intval($_GPC['id']);
if (checksubmit('submit')) {
$location_info = Citycard::lnglat_to_adinfo($_GPC['location']);
$data = $_GPC['item'];
if(empty($data['mid'])){
wl_message('请选择关联用户','', 'error');
}
$data['lng'] = $location_info['lng'] OR wl_message('请选择坐标',referer(),'error');
$data['lat'] = $location_info['lat'] OR wl_message('请选择坐标',referer(),'error');
$data['pro_code'] = $location_info['pro_code'];
$data['city_code'] = $location_info['city_code'];
$data['area_code'] = $location_info['area_code'];
$data['one_class'] = intval($_GPC['category']['parentid']) OR wl_message('请选择一级分类',referer(),'error');;
$data['two_class'] = intval($_GPC['category']['childid']) OR wl_message('请选择二级分类',referer(),'error');;
$data['meal_endtime'] = strtotime($data['meal_endtime']);
$data['top_endtime'] = strtotime($data['top_endtime']);
if (!empty($id)) {
pdo_update('wlmerchant_citycard_lists', $data, array('id' => $id));
} else {
$data['uniacid'] = $_W['uniacid'];
$data['aid'] = $_W['aid'];
$data['paystatus'] = 1;
$data['checkstatus'] = 1;
$data['createtime'] = time();
pdo_insert('wlmerchant_citycard_lists', $data);
$id = pdo_insertid();
}
wl_message('编辑名片成功', web_url('citycard/citycard/card_edit', array('id' => $id)), 'success');
}
if (!empty($id)) {
$item = pdo_get('wlmerchant_citycard_lists', array('uniacid' => $_W['uniacid'], 'id' => $id));
} else {
$item = ['sort' => 100, 'show_addr' => 1, 'show_mobile' => 1, 'show_wechat' => 1, 'status' => 1, 'meal_endtime' => time() + 365 * 24 * 3600, 'top_endtime' => time() + 30 * 24 * 3600];
}
$meals = pdo_getall('wlmerchant_citycard_meals', array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid']));
$categorys = Citycard::get_cates();
//如果名片没有logo 则使用 用户头条代替
$avatar = pdo_getcolumn(PDO_NAME."member",['id'=>$item['mid']],'avatar');
$item['logo'] = !empty($item['logo']) ? $item['logo'] : $avatar;
include wl_template('citycard/card_edit');
}
public function card_del() {
global $_W, $_GPC;
$id = $_GPC['id'] ?: $_GPC['ids'];
$items = pdo_getall('wlmerchant_citycard_lists', array('id' => $id, 'uniacid' => $_W['uniacid']), array('id'));
foreach ($items as $item) {
pdo_delete('wlmerchant_citycard_lists', array('id' => $item['id']));
}
show_json(1, array('url' => referer()));
}
public function card_check_status() {
global $_W, $_GPC;
$id = $_GPC['id'] ?: $_GPC['ids'];
$checkstatus = intval($_GPC['status']);
$items = pdo_getall('wlmerchant_citycard_lists', array('id' => $id, 'uniacid' => $_W['uniacid']), array('id'));
$update = array('checkstatus' => $checkstatus);
if($checkstatus == 1){
$update['status'] = 1;
}
foreach ($items as $item) {
pdo_update('wlmerchant_citycard_lists',$update,array('id' => $item['id']));
}
show_json(1, array('url' => referer()));
}
public function cate_lists() {
global $_W, $_GPC;
$categorys = Citycard::get_cates();
include wl_template('citycard/cate_lists');
}
public function cate_edit() {
global $_W, $_GPC;
$id = intval($_GPC['id']);
if (checksubmit('submit')) {
$data = $_GPC['item'];
if (!empty($id)) {
pdo_update('wlmerchant_citycard_cates', $data, array('id' => $id));
} else {
$data['uniacid'] = $_W['uniacid'];
$data['aid'] = $_W['aid'];
pdo_insert('wlmerchant_citycard_cates', $data);
}
wl_message('编辑分类成功', web_url('citycard/citycard/cate_lists'), 'success');
}
$item = $id ? pdo_get('wlmerchant_citycard_cates', array('uniacid' => $_W['uniacid'], 'id' => $id)) : ['sort' => 100, 'enabled' => 1, 'parentid' => intval($_GPC['parentid'])];
if (!empty($item['parentid'])) {
$item['parentname'] = pdo_getcolumn('wlmerchant_citycard_cates', ['id' => $item['parentid']], 'name');
}
include wl_template('citycard/cate_edit');
}
public function cate_del() {
global $_W, $_GPC;
$id = $_GPC['id'] ?: $_GPC['ids'];
$items = pdo_getall('wlmerchant_citycard_cates', array('id' => $id, 'uniacid' => $_W['uniacid']), array('id'));
foreach ($items as $item) {
pdo_delete('wlmerchant_citycard_cates', array('id' => $item['id']));
if (empty($item['parentid'])) {
pdo_delete('wlmerchant_citycard_cates', array('parentid' => $item['id']));
}
}
show_json(1, array('url' => referer()));
}
public function cate_enabled() {
global $_W, $_GPC;
$id = $_GPC['id'];
$status = $_GPC['status'] ?: 0;
$res = pdo_update("wlmerchant_citycard_cates", ['enabled' => $status], ['id' => $id]);
if ($res) {
Commons::sRenderSuccess('修改成功');
} else {
Commons::sRenderError('修改失败,请刷新重试!');
}
}
public function meal_lists() {
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 15;
$lists = pdo_getslice('wlmerchant_citycard_meals', array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid']), array($pindex, $psize), $total, array(), '', "sort DESC");
foreach ($lists as $key => &$val) {
$val['usenum'] = intval(pdo_getcolumn('wlmerchant_citycard_lists', array('uniacid' => $_W['uniacid'], 'meal_id' => $val['id']), array('COUNT(id)')));
}
$pager = wl_pagination($total, $pindex, $psize);
include wl_template('citycard/meal_lists');
}
public function meal_edit() {
global $_W, $_GPC;
$id = intval($_GPC['id']);
if (checksubmit('submit')) {
$data = $_GPC['item'];
if($data['price'] < 0.01){
$data['is_free'] = 1;
}
if($data['is_free'] > 0 && $data['vipstatus'] == 1){
$data['vipstatus'] = 0;
}
if (!empty($id)) {
pdo_update('wlmerchant_citycard_meals', $data, array('id' => $id));
} else {
$data['uniacid'] = $_W['uniacid'];
$data['aid'] = $_W['aid'];
pdo_insert('wlmerchant_citycard_meals', $data);
}
wl_message('编辑套餐成功', web_url('citycard/citycard/meal_lists'), 'success');
}
if (!empty($id)) {
$item = pdo_get('wlmerchant_citycard_meals', array('uniacid' => $_W['uniacid'], 'id' => $id));
} else {
$item = ['sort' => 100, 'status' => 1];
}
include wl_template('citycard/meal_edit');
}
public function meal_del() {
global $_W, $_GPC;
$id = $_GPC['id'] ?: $_GPC['ids'];
$items = pdo_getall('wlmerchant_citycard_meals', array('id' => $id, 'uniacid' => $_W['uniacid']), array('id'));
foreach ($items as $item) {
pdo_delete('wlmerchant_citycard_meals', array('id' => $item['id']));
}
show_json(1, array('url' => referer()));
}
public function top_lists() {
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 15;
$lists = pdo_getslice('wlmerchant_citycard_tops', array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid']), array($pindex, $psize), $total, array(), '', "sort DESC");
$pager = wl_pagination($total, $pindex, $psize);
include wl_template('citycard/top_lists');
}
public function top_edit() {
global $_W, $_GPC;
$id = intval($_GPC['id']);
if (checksubmit('submit')) {
$data = $_GPC['item'];
if($data['price'] < 0.01){
wl_message('置顶金额不能为0','', 'error');
}
if($data['vipprice'] < 0.01 && $data['vipstatus'] == 1){
wl_message('会员优惠置顶金额不能为0','', 'error');
}
if (!empty($id)) {
pdo_update('wlmerchant_citycard_tops', $data, array('id' => $id));
} else {
$data['uniacid'] = $_W['uniacid'];
$data['aid'] = $_W['aid'];
pdo_insert('wlmerchant_citycard_tops', $data);
}
wl_message('编辑置顶套餐成功', web_url('citycard/citycard/top_lists'), 'success');
}
if (!empty($id)) {
$item = pdo_get('wlmerchant_citycard_tops', array('uniacid' => $_W['uniacid'], 'id' => $id));
} else {
$item = ['sort' => 100, 'status' => 1];
}
include wl_template('citycard/top_edit');
}
public function top_del() {
global $_W, $_GPC;
$id = $_GPC['id'] ?: $_GPC['ids'];
$items = pdo_getall('wlmerchant_citycard_tops', array('id' => $id, 'uniacid' => $_W['uniacid']), array('id'));
foreach ($items as $item) {
pdo_delete('wlmerchant_citycard_tops', array('id' => $item['id']));
}
show_json(1, array('url' => referer()));
}
public function setting() {
global $_W, $_GPC;
$settings = Setting::agentsetting_read('citycard');
if (checksubmit('submit')) {
$data = $_GPC['settings'];
$data['agreement'] = htmlspecialchars_decode($data['agreement']);
Setting::agentsetting_save($data, 'citycard');
wl_message('更新设置成功!', web_url('citycard/citycard/setting'));
}
$communitylist = pdo_getall('wlmerchant_community', array('uniacid' => $_W['uniacid'], 'aid' => $_W['aid']), array('id', 'communname'));
include wl_template('citycard/setting');
}
public function order_lists(){
global $_W, $_GPC;
$pindex = max(1, intval($_GPC['page']));
$psize = 20;
$where = array();
$where['uniacid'] = $_W['uniacid'];
$where['plugin'] = 'citycard';
$where['status>'] = 1;
$where['status!='] = 5;
if($_GPC['fightstatus']){
$where['fightstatus'] = $_GPC['fightstatus'];
}
if($_GPC['keyword']){
$keyword = $_GPC['keyword'];
if($_GPC['keywordtype'] == 1){
$params[':name'] = "%{$keyword}%";
$members = pdo_fetchall("SELECT * FROM ".tablename('wlmerchant_member')." WHERE uniacid = {$_W['uniacid']} AND nickname LIKE :name",$params);
if($members){
$mids = "(";
foreach ($members as $key => $v) {
if($key == 0){
$mids.= $v['id'];
}else{
$mids.= ",".$v['id'];
}
}
$mids.= ")";
$where['mid#'] = $mids;
}
}else if($_GPC['keywordtype'] == 2){
$params[':name'] = "%{$keyword}%";
$members = pdo_fetchall("SELECT * FROM ".tablename('wlmerchant_member')." WHERE uniacid = {$_W['uniacid']} AND mobile LIKE :name",$params);
if($members){
$mids = "(";
foreach ($members as $key => $v) {
if($key == 0){
$mids.= $v['id'];
}else{
$mids.= ",".$v['id'];
}
}
$mids.= ")";
$where['mid#'] = $mids;
}
}else if($_GPC['keywordtype'] == 3){
$where['orderno'] = $keyword;
}
}
if($_GPC['time_limit']){
$time_limit = $_GPC['time_limit'];
$starttime = strtotime($_GPC['time_limit']['start']);
$endtime = strtotime($_GPC['time_limit']['end']) ;
$where['paytime>'] = $starttime;
$where['paytime<'] = $endtime+86400;
}
if (empty($starttime) || empty($endtime)) {
$starttime = strtotime('-1 month');
$endtime = time();
}
$payonlinelist = Util::getNumData('*','wlmerchant_order',$where,'paytime DESC',$pindex,$psize,1);
$pager = $payonlinelist[1];
$list = $payonlinelist[0];
foreach ($list as $key => &$li) {
$member = pdo_get('wlmerchant_member',array('id' => $li['mid']),array('avatar','nickname'));
$li['avatar'] = tomedia($member['avatar']);
$li['nickname'] = $member['nickname'];
if($li['fightstatus'] == 1){
$li['goodsname'] = pdo_getcolumn(PDO_NAME.'citycard_meals',array('id'=>$li['fkid']),'name');
}else{
$li['goodsname'] = pdo_getcolumn(PDO_NAME.'citycard_tops',array('id'=>$li['fkid']),'name');
}
$li['paytime'] = date('Y-m-d H:i:s',$li['paytime']);
}
include wl_template('citycard/order_lists');
}
}

175
addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/card_edit.html

@ -0,0 +1,175 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="{php echo web_url('citycard/citycard/card_edit', array('id' => $item['id']))}">编辑名片</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<div class="form-group-title">名片信息</div>
<div class="form-group">
<label class="col-sm-2 control-label">排序</label>
<div class="col-sm-9">
<input type="text" name="item[sort]" class="form-control" value="{$item['sort']}" placeholder="排序">
<div class="help-block">排序由大到小,数值越大,顺序越靠前</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>名片姓名</label>
<div class="col-sm-9">
<input type="text" name="item[name]" maxlength="20" class="form-control" value="{$item['name']}" placeholder="请输入名片姓名" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>所属用户</label>
<div class="col-sm-9">
{php echo tpl_select_user('item[mid]', $item['mid'])}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">名片LOGO</label>
<div class="col-sm-9">
{php echo attachment_select('item[logo]', $item['logo'])}
<div class="help-block">推荐200X200,不上传则默认使用用户头像</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>联系电话</label>
<div class="col-sm-9">
<input type="text" name="item[mobile]" class="form-control" value="{$item['mobile']}" placeholder="请输入名片联系电话" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>微信</label>
<div class="col-sm-9">
<input type="text" name="item[wechat]" class="form-control" value="{$item['wechat']}" placeholder="请输入名片微信" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">公司名称</label>
<div class="col-sm-9">
<input type="text" name="item[company]" class="form-control" value="{$item['company']}" placeholder="请输入公司名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">部门</label>
<div class="col-sm-9">
<input type="text" name="item[branch]" class="form-control" value="{$item['branch']}" placeholder="请输入部门名称">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">职位</label>
<div class="col-sm-9">
<input type="text" name="item[position]" class="form-control" value="{$item['position']}" placeholder="请输入职位">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">介绍</label>
<div class="col-sm-9">
<input type="text" name="item[desc]" class="form-control" value="{$item['desc']}" placeholder="一句话介绍你的业务">
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>定位</label>
<div class="col-sm-9">
{php echo tpl_select_address('item[address]','location[lng]','location[lat]',$item['address'],$item['lng'],$item['lat'])}
</div>
</div>
<div class="form-group-title">其他信息</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>所属分类</label>
<div class="col-sm-9">
{php echo tpl_form_field_category_2level('category', $categorys['parents'], $categorys['childrens'], $item['one_class'], $item['two_class'])}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>套餐</label>
<div class="col-sm-9">
<select name="item[meal_id]" class="form-control">
{loop $meals $meal}
<option value="{$meal['id']}" {if $item['meal_id'] == $meal['id']}selected{/if}>{$meal['name']}</option>
{/loop}
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>套餐到期时间</label>
<div class="col-sm-9">
{php echo tpl_form_field_date('item[meal_endtime]',$item['meal_endtime']);}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">置顶</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[top_is]" value="0" onclick="$('.top_endtime').hide()" {if empty($item['top_is'])}checked{/if}>禁用
</label>
<label class="radio-inline">
<input type="radio" name="item[top_is]" value="1" onclick="$('.top_endtime').show()" {if !empty($item['top_is'])}checked{/if}>启用
</label>
</div>
</div>
<div class="form-group top_endtime" {if empty($item['top_is'])}style="display: none;"{/if}>
<label class="col-sm-2 control-label"><span class="form-must">*</span>置顶到期时间</label>
<div class="col-sm-9">
{php echo tpl_form_field_date('item[top_endtime]',$item['top_endtime']);}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">公开地址信息</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[show_addr]" value="0" {if empty($item['show_addr'])}checked{/if}>隐藏
</label>
<label class="radio-inline">
<input type="radio" name="item[show_addr]" value="1" {if !empty($item['show_addr'])}checked{/if}>显示
</label>
<div class="help-block">选择关闭后地址信息将隐藏</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">公开电话信息</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[show_mobile]" value="0" {if empty($item['show_mobile'])}checked{/if}>隐藏
</label>
<label class="radio-inline">
<input type="radio" name="item[show_mobile]" value="1" {if !empty($item['show_mobile'])}checked{/if}>显示
</label>
<div class="help-block">选择关闭后电话信息将隐藏</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">公开微信信息</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[show_wechat]" value="0" {if empty($item['show_wechat'])}checked{/if}>隐藏
</label>
<label class="radio-inline">
<input type="radio" name="item[show_wechat]" value="1" {if !empty($item['show_wechat'])}checked{/if}>显示
</label>
<div class="help-block">选择关闭后微信信息将隐藏</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">状态</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[status]" value="0" {if empty($item['status'])}checked{/if}>禁用
</label>
<label class="radio-inline">
<input type="radio" name="item[status]" value="1" {if !empty($item['status'])}checked{/if}>启用
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
<input type="hidden" name="id" value="{$item['id']}" />
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

133
addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/card_lists.html

@ -0,0 +1,133 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="javascript:;">名片管理</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-action">
<a href="{php echo web_url('citycard/citycard/card_edit')}" class="btn btn-primary">添加名片</a>
</div>
<div class="filter-list">
<form class="form-horizontal" action="{php echo web_url('citycard/citycard/card_lists')}" method="post">
<div class="form-group">
<div class="col-sm-2 control-label">名片信息</div>
<div class="col-sm-9">
<input type="text" class="form-control" name="name" value="{$_GPC['name']}" placeholder="请输入名片名称">
</div>
</div>
<div class="form-group">
<div class="col-sm-2 control-label"></div>
<div class="col-sm-9">
<button class="btn btn-primary" type="submit">搜索</button>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
{if !empty($lists) || $pindex != 1}
<div class="table-responsive">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th class="text-center"><input type="checkbox" /></th>
<th class="text-center">名片信息</th>
<th class="text-center">所属用户</th>
<th class="text-center">关联套餐</th>
<th class="text-center">统计</th>
<th class="text-center">审核</th>
<th class="text-center">状态</th>
<th class="text-center">操作</th>
</tr>
</thead>
<tbody>
{loop $lists $list}
<tr class="text-center">
<td>
<input type="checkbox" value="{$list['id']}" />
</td>
<td class="name text-left">
<div style="display: flex">
<img class="img-40" src="{php echo tomedia($list['logo'])}" style="border-radius:50%;border:1px solid #efefef;margin-top: 20px;" onerror="this.src='../addons/{MODULE_NAME}/web/resource/images/nopic-small.jpg'" height="40" width="40">
<span style="display: flex;flex-direction: column;justify-content: center;align-items: flex-start;padding-left: 5px">
<p><b>名片名称:</b>{$list['name']}</p>
<p><b>所属分类:</b>{$list['one_class_name']} - {$list['two_class_name']}</p>
<p><b>入驻时间:</b>{php echo date('Y-m-d H:i:s', $list['createtime'])}</p>
</span>
</div>
</td>
<td>
{if !empty($list['member'])}
{$list['member']['nickname']}<br>
{$list['member']['mobile']}
{else}
平台添加
{/if}
</td>
<td>
<p><b>套餐名称:</b>{$list['meal']['name']}</p>
<p><b>套餐明细:</b>¥{$list['meal']['price']}/入驻{$list['meal']['day']}天</p>
<p>
<b>到期时间:</b>
{if $list['meal_endtime']>0}
{php echo date('Y-m-d H:i:s', $list['meal_endtime'])}
{else}
<span class='label label-danger'>未支付</span>
{/if}
</p>
</td>
<td>
<p><b>浏览:</b>{$list['pv']}</p>
<p><b>收存:</b>{$list['collect']}</p>
</td>
<td style="position: relative;">
{if $list['paystatus']}
<div class="btn-group" style="width: 68px;">
<button class="btn btn-sm {$checkstatus[$list['checkstatus']]['class']} dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{$checkstatus[$list['checkstatus']]['text']}</button>
<ul class="dropdown-menu" style="width: 68px;min-width: 68px;">
{if $list['checkstatus'] != 0}
<li><a href="{php echo web_url('citycard/citycard/card_check_status', array('id'=>$list['id'],'status'=>0))}" data-toggle="ajaxRemove" data-confirm="确认修改为待审核吗?" style="margin: 0;">待审核</a></li>
{/if}
{if $list['checkstatus'] != 1}
<li><a href="{php echo web_url('citycard/citycard/card_check_status', array('id'=>$list['id'],'status'=>1))}" data-toggle="ajaxRemove" data-confirm="确认通过审核吗?" style="margin: 0;">通过</a></li>
{/if}
{if $list['checkstatus'] != 2}
<li><a href="{php echo web_url('citycard/citycard/card_check_status', array('id'=>$list['id'],'status'=>2))}" data-toggle="ajaxRemove" data-confirm="确认驳回审核吗?" style="margin: 0;">驳回</a></li>
{/if}
</ul>
</div>
{else}
<span class='label label-danger'>未支付</span>
{/if}
</td>
<td>
<span class='label {if $list['status']==1}label-primary{else}label-default{/if}'>
{if $list['status']==1}启用{else}禁用{/if}</span>
</td>
<td>
<a class="btn btn-sm btn-default" href="{php echo web_url('citycard/citycard/card_edit', array('id' => $list['id']))}">编辑</a>
<a class="btn btn-sm btn-default" data-toggle="ajaxRemove" href="{php echo web_url('citycard/citycard/card_del', array('id' => $list['id']))}" data-confirm="确定删除当前名片?">删除</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
<button class="btn btn-default" type="button" data-toggle='batch-remove' data-confirm="确定删除当前选择的名片?" data-href="{php echo web_url('citycard/citycard/card_del')}">批量删除</button>
<button class="btn btn-default" type="button" data-toggle='batch' data-href="{php echo web_url('citycard/citycard/card_check_status', array('status'=>1))}">批量通过</button>
<button class="btn btn-default" type="button" data-toggle='batch' data-href="{php echo web_url('citycard/citycard/card_check_status', array('status'=>2))}">批量驳回</button>
</div>
<div class="pull-right">
{$pager}
</div>
</div>
{else}
<div class="no-result">
<p>还没有相关数据</p>
</div>
{/if}
</div>
</div>
{php include wl_template('common/footer');}

53
addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/cate_edit.html

@ -0,0 +1,53 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="{php echo web_url('citycard/citycard/cate_edit', array('id' => $item['id']))}">编辑分类</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<div class="form-group-title">分类信息</div>
{if !empty($item[parentid])}
<div class="form-group">
<label class="col-sm-2 control-label">上级分类</label>
<div class="col-sm-9">
<input type="text" name="" readonly="true" class="form-control" value="{$item[parentname]}">
</div>
</div>
{/if}
<div class="form-group">
<label class="col-sm-2 control-label">排序</label>
<div class="col-sm-9">
<input type="text" name="item[sort]" class="form-control" value="{$item['sort']}" placeholder="排序">
<div class="help-block">排序由大到小,数值越大,顺序越靠前</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>分类名称</label>
<div class="col-sm-9">
<input type="text" name="item[name]" class="form-control" value="{$item['name']}" placeholder="请输入分类名称" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">状态</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[enabled]" value="0" {if empty($item['enabled'])}checked{/if}>禁用
</label>
<label class="radio-inline">
<input type="radio" name="item[enabled]" value="1" {if !empty($item['enabled'])}checked{/if}>启用
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
<input type="hidden" name="id" value="{$item['id']}" />
<input type="hidden" name="item[parentid]" value="{$item['parentid']}" />
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

112
addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/cate_lists.html

@ -0,0 +1,112 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="javascript:;">分类管理</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-action">
<a href="{php echo web_url('citycard/citycard/cate_edit')}" class="btn btn-primary">添加分类</a>
<a href="javascript:;" class="btn btn-success js-category-all js-collapse">全部折叠</a>
</div>
</div>
<div class="app-table-list">
{if !empty($categorys['parents'])}
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th class="text-center"><input type="checkbox" /></th>
<th class="text-center">顺序</th>
<th class="text-left">分类名称</th>
<th class="text-center">状态</th>
<th class="text-center">操作</th>
</tr>
</thead>
<tbody >
{loop $categorys['parents'] $category}
<tr class="text-center">
<td>
<input type="checkbox" value="{$category['id']}" />
</td>
<td>{$category['sort']}</td>
<td class="text-left">
<div>
<span>{$category['name']}</span>
<span class="category-caret">
<i class="fa fa-caret-down js-category-down" style="display:none;" pid="{$category['id']}"></i>
<i class="fa fa-caret-up js-category-up" pid="{$category['id']}"></i>
</span>
</div>
</td>
<td>{php echo tpl_change_status('citycard/citycard/cate_enabled&id='.$category['id'], $category['enabled'])}</td>
<td>
<a href="{php echo web_url('citycard/citycard/cate_edit',array('parentid' => $category['id']))}" class="btn btn-default btn-sm">添加子分类</a>
<a href="{php echo web_url('citycard/citycard/cate_edit',array('id'=>$category['id']))}" class="btn btn-default btn-sm">编辑</a>
<a href="{php echo web_url('citycard/citycard/cate_del',array('id'=>$category['id']))}"class="btn btn-default btn-sm" data-toggle="ajaxRemove" data-confirm="删除一级分类将删除此分类下所有子分类,确定删除当前分类?">删除</a>
</td>
</tr>
{loop $categorys['childrens'][$category['id']] $children}
<tr class="js-collpase js-child-category text-center" pid="{$category['id']}">
<td>
<input type="checkbox" value="{$children['id']}" />
</td>
<td>{$children['sort']}</td>
<td class="text-left">
<div style="padding-left:50px;height:30px;line-height:30px;background:url('./resource/images/bg_repno.gif') no-repeat -245px -545px;">
{$children['name']}
</div>
</td>
<td>{php echo tpl_change_status('citycard/citycard/cate_enabled&id='.$children['id'], $children['enabled'])}</td>
<td class="text-center">
<a href="{php echo web_url('citycard/citycard/cate_edit', array('id' => $children['id']))}" class="btn btn-default btn-sm">编辑</a>
<a href="{php echo web_url('citycard/citycard/cate_del', array('id' => $children['id']))}"class="btn btn-default btn-sm" data-toggle="ajaxRemove" data-confirm="确定删除当前分类?">删除</a>
</td>
</tr>
{/loop}
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
<button class="btn btn-default" type="button" data-toggle='batch-remove' data-confirm="删除一级分类将删除此分类下所有子分类,确定删除当前选择的分类?" data-href="{php echo web_url('citycard/citycard/cate_del')}">批量删除</button>
</div>
</div>
{else}
<div class="no-result">
<p>还没有相关数据</p>
</div>
{/if}
</div>
</div>
<script type="text/javascript">
//控制显示
$(function(){
$('.js-category-all').click(function() {
if($(this).hasClass('js-collapse')) {
$('.js-child-category').fadeOut("slow");
$('.fa-caret-up').hide();
$('.fa-caret-down').show();
$(this).text('全部展开').removeClass('js-collapse');
} else {
$('.js-child-category').fadeIn("slow");
$('.fa-caret-up').show();
$('.fa-caret-down').hide();
$(this).text('全部折叠').addClass('js-collapse');
}
});
$('.js-category-up').click(function() {
var parentId = $(this).attr('pid');
$('tr[pid="'+parentId+'"]').fadeOut("slow");
$(this).prev().show();
$(this).hide();
});
$('.js-category-down').click(function() {
var parentId = $(this).attr('pid');
$('tr[pid="'+parentId+'"]').fadeIn("slow");
$(this).next().show();
$(this).hide();
});
});
</script>
{php include wl_template('common/footer');}

152
addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/meal_edit.html

@ -0,0 +1,152 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="{php echo web_url('citycard/citycard/meal_edit', array('id' => $item['id']))}">编辑套餐</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<div class="form-group-title">套餐信息</div>
<div class="form-group">
<label class="col-sm-2 control-label">排序</label>
<div class="col-sm-9">
<input type="text" name="item[sort]" class="form-control" value="{$item['sort']}" placeholder="排序">
<div class="help-block">排序由大到小,数值越大,顺序越靠前</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>套餐名称</label>
<div class="col-sm-9">
<input type="text" name="item[name]" class="form-control" value="{$item['name']}" placeholder="请输入套餐名称" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">套餐资费</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[is_free]" value="0" onclick="$('.is_free').show()" {if empty($item['is_free'])}checked{/if}>付费
</label>
<label class="radio-inline">
<input type="radio" name="item[is_free]" value="1" onclick="$('.is_free').hide()" {if !empty($item['is_free'])}checked{/if}>免费
</label>
<div class="help-block">名片入驻是否需要付费</div>
</div>
</div>
<div class="is_free" {if !empty($item['is_free'])}style="display: none;"{/if}>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>套餐金额</label>
<div class="col-sm-9">
<div class="input-group">
<input type="number" class="form-control" name="item[price]" value="{$item['price']}" placeholder="请输入套餐金额" required>
<span class="input-group-addon"></span>
</div>
</div>
</div>
{if $_W['wlsetting']['distribution']['switch']}
<div class="form-group">
<label class="col-sm-2 control-label">是否参与分销</label>
<div class="col-sm-9">
<label class="radio-inline" onclick="distri(1)">
<input type="radio" value="1" name="item[isdistri]" {if $item['isdistri']==1} checked {/if}>参与
</label>
<label class="radio-inline" onclick="distri(2)">
<input type="radio" value="0" name="item[isdistri]" {if $item['isdistri']==0 || empty($item)} checked {/if}>不参与
</label>
</div>
</div>
<div class="form-group" id="distridiv" {if $item['isdistri'] == 0 || empty($item)} style="display: none;" {/if} >
<label class="col-sm-2 control-label">分销佣金</label>
<div class="col-sm-9">
<div class="input-group">
<span class="input-group-addon">一级</span>
<input type="number" min="0" name="item[onedismoney]" class="form-control " value="{$item['onedismoney']}" />
{if $_W['wlsetting']['distribution']['ranknum']>1}
<span class="input-group-addon">元,二级</span>
<input type="number" min="0" name="item[twodismoney]" class="form-control " value="{$item['twodismoney']}" />
<span class="input-group-addon"></span>
{/if}
</div>
<span class="help-block">不填或填0按分销等级比例结算,最多保留两位小数</span>
</div>
</div>
{/if}
</div>
<div class="form-group">
<label class="col-sm-2 control-label">会员特权</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[vipstatus]" value="0" onclick="$('.vipprice').hide()" {if empty($item['vipstatus'])}checked{/if}>
</label>
<label class="radio-inline is_free" {if !empty($item['is_free'])}style="display: none;"{/if} >
<input type="radio" name="item[vipstatus]" value="1" onclick="$('.vipprice').show()" {if $item['vipstatus'] == 1}checked{/if}>会员特价
</label>
<label class="radio-inline">
<input type="radio" name="item[vipstatus]" value="2" onclick="$('.vipprice').hide()" {if $item['vipstatus'] == 2}checked{/if}>会员特供
</label>
<div class="help-block">一卡通会员特权设置,会员特供即只有会员可以选择此套餐.</div>
</div>
</div>
<div class="form-group vipprice" {if $item['vipstatus'] != 1}style="display: none;"{/if} >
<label class="col-sm-2 control-label">会员特价</label>
<div class="col-sm-9">
<div class="input-group">
<input type="number" class="form-control" name="item[vipprice]" value="{$item['vipprice']}" placeholder="请输入会员优惠套餐金额">
<span class="input-group-addon"></span>
</div>
<div class="help-block">如果设置为0或不填,即会员免费入驻,最多保留两位小数.</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>套餐时间</label>
<div class="col-sm-9">
<div class="input-group">
<input type="text" class="form-control" name="item[day]" value="{$item['day']}" placeholder="请输入套餐时间" digits="true" required>
<span class="input-group-addon"></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">入驻审核</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[check]" value="0" {if empty($item['check'])}checked{/if}>无需审核
</label>
<label class="radio-inline">
<input type="radio" name="item[check]" value="1" {if !empty($item['check'])}checked{/if}>需要审核
</label>
<div class="help-block">名片入驻是否需要审核</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">状态</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[status]" value="0" {if empty($item['status'])}checked{/if}>禁用
</label>
<label class="radio-inline">
<input type="radio" name="item[status]" value="1" {if !empty($item['status'])}checked{/if}>启用
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
<input type="hidden" name="id" value="{$item['id']}" />
</div>
</div>
</form>
</div>
</div>
<script>
function distri(flag){
if (flag == 1) {
$('#distridiv').show();
} else{
$('#distridiv').hide();
}
}
</script>
{php include wl_template('common/footer');}

77
addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/meal_lists.html

@ -0,0 +1,77 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="javascript:;">套餐管理</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-action">
<a href="{php echo web_url('citycard/citycard/meal_edit')}" class="btn btn-primary">添加套餐</a>
</div>
</div>
<div class="app-table-list">
{if !empty($lists)}
<div class="table-responsive">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th class="text-center"><input type="checkbox" /></th>
<th class="text-center">排序</th>
<th class="text-center">套餐名称</th>
<th class="text-center">费用/时间</th>
<th class="text-center">审核</th>
<th class="text-center">使用中</th>
<th class="text-center">状态</th>
<th class="text-center">操作</th>
</tr>
</thead>
<tbody>
{loop $lists $list}
<tr class="text-center">
<td>
<input type="checkbox" value="{$list['id']}" />
</td>
<td>
{$list['sort']}
</td>
<td>
{$list['name']}
</td>
<td>
{if $list['is_free'] == 1}免费{else}¥{$list['price']}{/if}/入驻{$list['day']}天
</td>
<td>
<span class='label {if $list['check']!=1}label-primary{else}label-warning{/if}'>
{if $list['check']!=1}无需审核{else}需要审核{/if}</span>
</td>
<td>
{$list['usenum']}
</td>
<td>
<span class='label {if $list['status']==1}label-primary{else}label-default{/if}'>
{if $list['status']==1}启用{else}禁用{/if}</span>
</td>
<td>
<a class="btn btn-sm btn-primary" href="{php echo web_url('citycard/citycard/meal_edit', array('id' => $list['id']))}">编辑</a>
<a class="btn btn-sm btn-danger" data-toggle="ajaxRemove" href="{php echo web_url('citycard/citycard/meal_del', array('id' => $list['id']))}" data-confirm="确定删除当前套餐?">删除</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
<button class="btn btn-default" type="button" data-toggle='batch-remove' data-confirm="确定删除当前选择的套餐?" data-href="{php echo web_url('citycard/citycard/meal_del')}">批量删除</button>
</div>
<div class="pull-right">
{$pager}
</div>
</div>
{else}
<div class="no-result">
<p>还没有相关数据</p>
</div>
{/if}
</div>
</div>
{php include wl_template('common/footer');}

109
addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/order_lists.html

@ -0,0 +1,109 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs" id="myTab">
<li><a href="javascript:;">支付记录</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-list">
<form action="" method="get" class="form-horizontal" role="form" id="form1">
<input type="hidden" name="c" value="site" />
<input type="hidden" name="a" value="entry" />
<input type="hidden" name="m" value="{MODULE_NAME}" />
<input type="hidden" name="p" value="citycard" />
<input type="hidden" name="ac" value="citycard" />
<input type="hidden" name="do" value="order_lists" />
<input type="hidden" name="fightstatus" value="{$_GPC['fightstatus']}" />
<div class="form-group">
<label class="col-sm-2 control-label">付费类型</label>
<div class="col-sm-9">
<div class="btn-group">
<a href="{php echo wl_filter_url('fightstatus:0');}" class="btn {if intval($_GPC['fightstatus']) == 0}btn-primary{else}btn-default{/if}">全部</a>
<a href="{php echo wl_filter_url('fightstatus:1');}" class="btn {if $_GPC['fightstatus'] == 1}btn-primary{else}btn-default{/if}">套餐</a>
<a href="{php echo wl_filter_url('fightstatus:2');}" class="btn {if $_GPC['fightstatus'] == 2}btn-primary{else}btn-default{/if}">置顶</a>
</div>
</div>
</div>
<div class="form-group form-inline">
<label class="col-sm-2 control-label">用户</label>
<div class="col-sm-9">
<select name="keywordtype" class="form-control">
<option value="1" {if $_GPC['keywordtype']==1}selected="selected"{/if}>昵称</option>
<option value="2" {if $_GPC['keywordtype']==2}selected="selected"{/if}>手机号</option>
<option value="2" {if $_GPC['keywordtype']==3}selected="selected"{/if}>订单号</option>
</select>
<input type="text" name="keyword" class="form-control" value="{$_GPC['keyword']}" placeholder="请输入关键字"/>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">支付时间</label>
<div class="col-sm-9">
{php echo tpl_select_time_info('time_limit', array('starttime' => date('Y-m-d',$starttime), 'endtime' => date('Y-m-d', $endtime)));}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<button class="btn btn-primary" id="search">筛选</button>
</div>
</div>
</form>
</div>
</div>
<div class="app-table-list">
<div class="table-responsive">
<table class="table table-hover">
<thead class="navbar-inner">
<tr>
<th style="width:15%;">订单编号</th>
<th style="width:15%;">用户信息</th>
<th style="width:10%;">付费类型</th>
<th style="width:15%;">付费商品</th>
<th style="width:15%;">订单金额</th>
<th style="width:15%;">支付方式</th>
<th style="width:15%;">支付时间</th>
</tr>
</thead>
<tbody>
{loop $list $de}
<tr>
<td>{$de['orderno']}</td>
<td><img src="{$de['avatar']}" style="width: 30px;height: 30px;"> {$de['nickname']}</td>
<td>
{if $de['fightstatus'] == 1}
<span class="label label-success">套餐</span>
{else}
<span class="label label-info">置顶</span>
{/if}
</td>
<td >{$de['goodsname']}</td>
<td >¥{$de['price']}</td>
<td>
{if $de['paytype'] == 2}
<span class="label label-success">微信支付</span>
{else if $de['paytype'] == 3}
<span class="label label-info">支付宝</span>
{else if $de['paytype'] == 1}
<span class="label label-warning">余额支付</span>
{else if $de['paytype'] == 5}
<span class="label label-default">小程序</span>
{else}
<span class="label label-danger">其他方式</span>
{/if}
</td>
<td>{$de['paytime']}</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
</div>
<div class="pull-right">
{$pager}
</div>
</div>
</div>
</div>
{php include wl_template('common/footer');}

116
addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/setting.html

@ -0,0 +1,116 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs" id="myTab">
<li class="active"><a href="#tab_basic">名片设置</a></li>
<li><a href="#tab_share">首页分享</a></li>
<li><a href="#tab_detailshare">名片分享</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<div class="tab-content">
<div class="tab-pane active" id="tab_basic">
<div class="form-group-title">名片设置</div>
<div class="form-group">
<label class="col-sm-2 control-label">首页社群</label>
<div class="col-sm-9">
<select name="settings[communityid]" class="form-control select2">
<option value="0">不显示社群</option>
{loop $communitylist $key $val}
<option value="{$val['id']}" {if $val['id'] == $settings['communityid']}selected{/if}>{$val['communname']}</option>
{/loop}
</select>
<span class="help-block">请选择首页是否显示社群</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">浏览增量</label>
<div class="col-sm-9">
<div class="input-group">
<span class="input-group-addon">每次增加</span>
<input type="text" name="settings[minup]" class="form-control" value="{$settings['minup']}" digits="true">
<span class="input-group-addon">~</span>
<input type="text" name="settings[maxup]" class="form-control" value="{$settings['maxup']}" digits="true">
<span class="input-group-addon"></span>
</div>
<div class="help-block">设置后,所有的名片浏览1次将不再是计数1,而是取您设置的上限和下限之间的随机数</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">每个用户名片数量</label>
<div class="col-sm-9">
<div class="input-group">
<input type="text" name="settings[maxcardnum]" class="form-control" value="{$settings['maxcardnum']}" min="0" digits="true">
<span class="input-group-addon"></span>
</div>
<div class="help-block">设置后,将限制每个用户可以创建的名片数量,填0或不填则无限制。</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">发布协议</label>
<div class="col-sm-9">
{php echo tpl_diy_editor_create('settings[agreement]', $settings['agreement']);}
</div>
</div>
</div>
<div class="tab-pane" id="tab_share">
<div class="form-group-title">首页分享</div>
<div class="alert alert-warning">
<p>适用模板变量:[昵称] [时间] [系统名称]</p>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享标题</label>
<div class="col-sm-9">
<input type="text" name="settings[share_title]" class="form-control" value="{$settings['share_title']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享图片</label>
<div class="col-sm-9">
{php echo attachment_select('settings[share_image]', $settings['share_image']);}
<span class="help-block">推荐图片尺寸500X500</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享描述</label>
<div class="col-sm-9">
<input type="text" name="settings[share_desc]" class="form-control" value="{$settings['share_desc']}" />
</div>
</div>
</div>
<div class="tab-pane" id="tab_detailshare">
<div class="form-group-title">名片分享</div>
<div class="alert alert-warning">
<p>适用模板变量:[昵称] [时间] [系统名称] [名片名称] [公司] [部门] [职务] [介绍] [一级分类] [二级分类] </p>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享标题</label>
<div class="col-sm-9">
<input type="text" name="settings[share_detail_title]" class="form-control" value="{$settings['share_detail_title']}" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享图片</label>
<div class="col-sm-9">
{php echo attachment_select('settings[share_detail_image]', $settings['share_detail_image']);}
<span class="help-block">推荐图片尺寸500X500,不填会使用名片logo</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">分享描述</label>
<div class="col-sm-9">
<input type="text" name="settings[share_detail_desc]" class="form-control" value="{$settings['share_detail_desc']}" />
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
</div>
</div>
</form>
</div>
</div>
{php include wl_template('common/footer');}

123
addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/top_edit.html

@ -0,0 +1,123 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="{php echo web_url('citycard/citycard/top_edit', array('id' => $item['id']))}">编辑置顶</a></li>
</ul>
<div class="app-content">
<div class="app-form">
<form action="" method="post" class="form-horizontal form form-validate">
<div class="form-group-title">置顶信息</div>
<div class="form-group">
<label class="col-sm-2 control-label">排序</label>
<div class="col-sm-9">
<input type="text" name="item[sort]" class="form-control" value="{$item['sort']}" placeholder="排序">
<div class="help-block">排序由大到小,数值越大,顺序越靠前</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>置顶名称</label>
<div class="col-sm-9">
<input type="text" name="item[name]" class="form-control" value="{$item['name']}" placeholder="请输入置顶名称" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>置顶金额</label>
<div class="col-sm-9">
<div class="input-group">
<input type="text" class="form-control" name="item[price]" value="{$item['price']}" placeholder="请输入置顶金额" number="true" required>
<span class="input-group-addon"></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">是否参与分销</label>
<div class="col-sm-9">
<label class="radio-inline" onclick="distri(1)">
<input type="radio" value="1" name="item[isdistri]" {if $item['isdistri']==1} checked {/if}>参与
</label>
<label class="radio-inline" onclick="distri(2)">
<input type="radio" value="0" name="item[isdistri]" {if $item['isdistri']==0 || empty($item)} checked {/if}>不参与
</label>
</div>
</div>
<div class="form-group" id="distridiv" {if $item['isdistri'] == 0 || empty($item)} style="display: none;" {/if} >
<label class="col-sm-2 control-label">分销佣金</label>
<div class="col-sm-9">
<div class="input-group">
<span class="input-group-addon">一级</span>
<input type="number" min="0" name="item[onedismoney]" class="form-control " value="{$item['onedismoney']}" />
{if $_W['wlsetting']['distribution']['ranknum']>1}
<span class="input-group-addon">元,二级</span>
<input type="number" min="0" name="item[twodismoney]" class="form-control " value="{$item['twodismoney']}" />
<span class="input-group-addon"></span>
{/if}
</div>
<span class="help-block">不填或填0按分销等级比例结算,最多保留两位小数</span>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">会员特权</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[vipstatus]" value="0" onclick="$('.vipprice').hide()" {if empty($item['vipstatus'])}checked{/if}>
</label>
<label class="radio-inline" >
<input type="radio" name="item[vipstatus]" value="1" onclick="$('.vipprice').show()" {if $item['vipstatus'] == 1}checked{/if}>会员特价
</label>
<label class="radio-inline">
<input type="radio" name="item[vipstatus]" value="2" onclick="$('.vipprice').hide()" {if $item['vipstatus'] == 2}checked{/if}>会员特供
</label>
<div class="help-block">一卡通会员特权设置,会员特供即只有会员可以选择此套餐.</div>
</div>
</div>
<div class="form-group vipprice" {if $item['vipstatus'] != 1}style="display: none;"{/if} >
<label class="col-sm-2 control-label">会员特价</label>
<div class="col-sm-9">
<div class="input-group">
<input type="number" class="form-control" name="item[vipprice]" value="{$item['vipprice']}" placeholder="请输入会员优惠置顶金额">
<span class="input-group-addon"></span>
</div>
<div class="help-block">最多保留两位小数.</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"><span class="form-must">*</span>置顶时间</label>
<div class="col-sm-9">
<div class="input-group">
<input type="text" class="form-control" name="item[day]" value="{$item['day']}" placeholder="请输入置顶时间" digits="true" required>
<span class="input-group-addon"></span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">状态</label>
<div class="col-sm-9">
<label class="radio-inline">
<input type="radio" name="item[status]" value="0" {if empty($item['status'])}checked{/if}>禁用
</label>
<label class="radio-inline">
<input type="radio" name="item[status]" value="1" {if !empty($item['status'])}checked{/if}>启用
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label"></label>
<div class="col-sm-9">
<input type="submit" name="submit" value="提交" class="btn btn-primary min-width" />
<input type="hidden" name="token" value="{$_W['token']}" />
<input type="hidden" name="id" value="{$item['id']}" />
</div>
</div>
</form>
</div>
</div>
<script>
function distri(flag){
if (flag == 1) {
$('#distridiv').show();
} else{
$('#distridiv').hide();
}
}
</script>
{php include wl_template('common/footer');}

72
addons/weliam_smartcity/plugin/citycard/web/view/default/citycard/top_lists.html

@ -0,0 +1,72 @@
{php include wl_template('common/header');}
<ul class="nav nav-tabs">
<li class="active"><a href="javascript:;">置顶管理</a></li>
</ul>
<div class="app-content">
<div class="app-filter">
<div class="filter-action">
<a href="{php echo web_url('citycard/citycard/top_edit')}" class="btn btn-primary">添加置顶</a>
</div>
</div>
<div class="app-table-list">
{if !empty($lists)}
<div class="table-responsive">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th class="text-center"><input type="checkbox" /></th>
<th class="text-center">排序</th>
<th class="text-center">置顶名称</th>
<th class="text-center">置顶金额</th>
<th class="text-center">置顶时间</th>
<th class="text-center">状态</th>
<th class="text-center">操作</th>
</tr>
</thead>
<tbody>
{loop $lists $list}
<tr class="text-center">
<td>
<input type="checkbox" value="{$list['id']}" />
</td>
<td>
{$list['sort']}
</td>
<td>
{$list['name']}
</td>
<td>
¥{$list['price']}
</td>
<td>
{$list['day']}天
</td>
<td>
<span class='label {if $list['status']==1}label-primary{else}label-default{/if}'>
{if $list['status']==1}启用{else}禁用{/if}</span>
</td>
<td>
<a class="btn btn-sm btn-primary" href="{php echo web_url('citycard/citycard/top_edit', array('id' => $list['id']))}">编辑</a>
<a class="btn btn-sm btn-danger" data-toggle="ajaxRemove" href="{php echo web_url('citycard/citycard/top_del', array('id' => $list['id']))}" data-confirm="确定删除当前置顶套餐?">删除</a>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="app-table-foot clearfix">
<div class="pull-left">
<button class="btn btn-default" type="button" data-toggle='batch-remove' data-confirm="确定删除当前选择的置顶套餐?" data-href="{php echo web_url('citycard/citycard/top_del')}">批量删除</button>
</div>
<div class="pull-right">
{$pager}
</div>
</div>
{else}
<div class="no-result">
<p>还没有相关数据</p>
</div>
{/if}
</div>
</div>
{php include wl_template('common/footer');}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save