合并冲突

This commit is contained in:
liuxiaoquan 2023-03-16 11:40:39 +08:00
commit be7bcf1689
43 changed files with 5281 additions and 4789 deletions

View File

@ -0,0 +1,149 @@
<?php
/**
* @copyright Copyright (c) 2021 勾股工作室
* @license https://opensource.org/licenses/Apache-2.0
* @link https://www.gougucms.com
*/
declare (strict_types = 1);
namespace app\admin\controller;
use app\admin\BaseController;
use app\admin\model\UserExtract as UserExtractModel;
use app\admin\validate\UserExtractValidate;
use think\exception\ValidateException;
use think\facade\Db;
use think\facade\View;
class UserExtract extends BaseController
{
/**
* 构造函数
*/
public function __construct()
{
$this->model = new UserExtractModel();
$this->uid = get_login_admin('id');
}
/**
* 数据列表
*/
public function datalist()
{
if (request()->isAjax()) {
$param = get_params();
$where = [];
$list = $this->model->getUserExtractList($where,$param);
foreach ($list as $k =>$v){
$list[$k]['uid'] = Db::connect('shop')->table('eb_user')->where('uid',$v['uid'])->value('nickname');
if($v['extract_type'] == 0){
$list[$k]['extract_type'] = '银行卡';
}
if($v['extract_type'] == 1){
$list[$k]['extract_type'] = '支付宝';
}
if($v['extract_type'] == 2){
$list[$k]['extract_type'] = '微信';
}
if($v['extract_type'] == 3){
$list[$k]['extract_type'] = '零钱';
}
$list[$k]['admin_id'] = Db::connect('shop')->table('eb_system_admin')->where('admin_id',$v['admin_id'])->value('real_name');
}
return table_assign(0, '', $list);
}
else{
return view();
}
}
/**
* 添加
*/
public function add()
{
if (request()->isAjax()) {
$param = get_params();
// 检验完整性
try {
validate(UserExtractValidate::class)->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$this->model->addUserExtract($param);
}else{
return view();
}
}
/**
* 编辑
*/
public function edit()
{
$param = get_params();
if (request()->isAjax()) {
// 检验完整性
try {
validate(UserExtractValidate::class)->check($param);
} catch (ValidateException $e) {
// 验证失败 输出错误信息
return to_assign(1, $e->getError());
}
$this->model->editUserExtract($param);
}else{
$extract_id = isset($param['extract_id']) ? $param['extract_id'] : 0;
$detail = $this->model->getUserExtractById($extract_id);
if (!empty($detail)) {
View::assign('detail', $detail);
return view();
}
else{
throw new \think\exception\HttpException(404, '找不到页面');
}
}
}
/**
* 查看信息
*/
public function read()
{
$param = get_params();
$extract_id = isset($param['extract_id']) ? $param['extract_id'] : 0;
$detail = $this->model->getUserExtractById($extract_id);
if (!empty($detail)) {
View::assign('detail', $detail);
return view();
}
else{
throw new \think\exception\HttpException(404, '找不到页面');
}
}
/**
* 删除
* type=0,逻辑删除,默认
* type=1,物理删除
*/
public function del()
{
$param = get_params();
$extract_id = isset($param['extract_id']) ? $param['extract_id'] : 0;
$type = 1;
$this->model->delUserExtractById($extract_id,$type);
}
}

View File

@ -129,8 +129,10 @@ class Merchant extends BaseController
$total = StoreOrderModel::where($where)->count();
$list = StoreOrderModel::with(['merchant'])->order('order_id desc')->select();
$list = StoreOrderModel::with(['merchant'])->order('order_id desc')->page($params['page'])->limit($params['limit'])->select();
foreach ($list as $k =>$v){
$list[$k]['uid'] = Db::connect('shop')->table('eb_user')->where('uid',$v['uid'])->value('nickname');
}
View::assign('url', $this->url);
View::assign('list', $list);

View File

@ -0,0 +1,102 @@
<?php
/**
* @copyright Copyright (c) 2021 勾股工作室
* @license https://opensource.org/licenses/Apache-2.0
* @link https://www.gougucms.com
*/
namespace app\admin\model;
use think\facade\Db;
use think\model;
class UserExtract extends Model
{
protected $connection = 'shop';
// 设置当前模型对应的完整数据表名称
protected $table = 'eb_user_extract';
/**
* 获取分页列表
* @param $where
* @param $param
*/
public function getUserExtractList($where, $param)
{
$rows = empty($param['limit']) ? get_config('app . page_size') : $param['limit'];
$order = empty($param['order']) ? 'extract_id desc' : $param['order'];
$list = self::where($where)->field('extract_id,extract_id,uid,extract_sn,real_name,extract_type,bank_code,bank_address,alipay_code,wechat,extract_pic,extract_price,balance,mark,admin_id,fail_msg,status_time,create_time,status,bank_name')->order($order)->paginate($rows, false, ['query' => $param]);
return $list;
}
/**
* 添加数据
* @param $param
*/
public function addUserExtract($param)
{
$insertId = 0;
try {
$param['create_time'] = time();
$insertId = self::strict(false)->field(true)->insertGetId($param);
add_log('add', $insertId, $param);
} catch(\Exception $e) {
return to_assign(1, '操作失败,原因:'.$e->getMessage());
}
return to_assign(0,'操作成功',['aid'=>$insertId]);
}
/**
* 编辑信息
* @param $param
*/
public function editUserExtract($param)
{
try {
$param['update_time'] = time();
self::where('extract_id', $param['extract_id'])->strict(false)->field(true)->update($param);
add_log('edit', $param['id'], $param);
} catch(\Exception $e) {
return to_assign(1, '操作失败,原因:'.$e->getMessage());
}
return to_assign();
}
/**
* 根据id获取信息
* @param $id
*/
public function getUserExtractById($id)
{
$info = self::where('extract_id', $id)->find();
return $info;
}
/**
* 删除信息
* @param $id
* @return array
*/
public function delUserExtractById($id,$type=0)
{
if($type==0){
//逻辑删除
try {
$param['delete_time'] = time();
self::where('extract_id', $id)->update(['delete_time'=>time()]);
add_log('delete', $id);
} catch(\Exception $e) {
return to_assign(1, '操作失败,原因:'.$e->getMessage());
}
}
else{
//物理删除
try {
self::where('extract_id', $id)->delete();
add_log('delete', $id);
} catch(\Exception $e) {
return to_assign(1, '操作失败,原因:'.$e->getMessage());
}
}
return to_assign();
}
}

View File

@ -0,0 +1,20 @@
<?php
/**
* @copyright Copyright (c) 2021 勾股工作室
* @license https://opensource.org/licenses/Apache-2.0
* @link https://www.gougucms.com
*/
namespace app\admin\validate;
use think\Validate;
class UserExtractValidate extends Validate
{
protected $rule = [
'extract_id' => 'require',
];
protected $message = [
'extract_id.require' => 'ID不能为空',
];
}

View File

@ -280,7 +280,6 @@
// 日期范围
layui.use(['laydate','table','element', 'jquery'], function () {
var laydate = layui.laydate;
//日期范围
laydate.render({
elem: '#range_date'

View File

@ -35,6 +35,7 @@
//监听提交
form.on('submit(webform)', function (data) {
console.log(data);
if (data.field == '') {
layer.msg('请先完善商品详情');
return false;

View File

@ -15,29 +15,29 @@
<div class="layui-inline">
<label class="layui-form-label">选择时间</label>
<div class="layui-input-block">
<div class="layui-btn-group">
<input id="chonse_start_date" type="hidden" name="start_date" value="" readonly placeholder="选择时间">
<input id="chonse_end_date" type="hidden" name="end_date" value="" readonly placeholder="选择时间">
<button id="both" name="both" lay-submit="" lay-filter="chonse_date" type="button" class="layui-btn layui-btn-normal">全部</button>
<button name="today" lay-submit="" lay-filter="chonse_date" type="button" class="layui-btn layui-btn-normal layui-btn-primary">今天</button>
<button name="yeserday" lay-submit="" lay-filter="chonse_date" type="button" class="layui-btn layui-btn-normal layui-btn-primary">昨天</button>
<button name="week" lay-submit="" lay-filter="chonse_date" type="button" class="layui-btn layui-btn-normal layui-btn-primary">最近7天</button>
<button name="30day" lay-submit="" lay-filter="chonse_date" type="button" class="layui-btn layui-btn-normal layui-btn-primary">最近30天</button>
<button name="month" lay-submit="" lay-filter="chonse_date" type="button" class="layui-btn layui-btn-normal layui-btn-primary">本月</button>
<button name="year" lay-submit="" lay-filter="chonse_date" type="button" class="layui-btn layui-btn-normal layui-btn-primary">本年</button>
<div class="layui-btn-group" id="witch_date">
<button name="both" lay-submit="" lay-filter="searchform" type="button" class="layui-btn layui-btn-normal">全部</button>
<button name="today" lay-submit="" lay-filter="searchform" type="button" class="layui-btn layui-btn-normal layui-btn-primary">今天</button>
<button name="yeserday" lay-submit="" lay-filter="searchform" type="button" class="layui-btn layui-btn-normal layui-btn-primary">昨天</button>
<button lay-submit="" lay-filter="searchform" type="button" class="layui-btn layui-btn-normal layui-btn-primary">最近7天</button>
<button lay-submit="" lay-filter="searchform" type="button" class="layui-btn layui-btn-normal layui-btn-primary">最近30天</button>
<button lay-submit="" lay-filter="searchform" type="button" class="layui-btn layui-btn-normal layui-btn-primary">本月</button>
<button lay-submit="" lay-filter="searchform" type="button" class="layui-btn layui-btn-normal layui-btn-primary">本年</button>
</div>
</div>
</div>
<div class="layui-inline">
<!-- <label class="layui-form-label">日期范围</label> -->
<div class="layui-inline" id="range_date">
<div class="layui-inline" id="test6">
<div class="layui-input-inline">
<input type="text" autocomplete="off" name="start_date" id="start-date" class="layui-input" placeholder="开始日期">
<input type="text" autocomplete="off" name="start_date" id="test-startDate-1" class="layui-input"
placeholder="开始日期">
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input type="text" autocomplete="off" name="end_date" id="end-date" class="layui-input" placeholder="结束日期">
<input type="text" autocomplete="off" name="end_date" id="test-endDate-1" class="layui-input"
placeholder="结束日期">
</div>
</div>
</div>
@ -46,14 +46,14 @@
<div class="layui-form-item">
<div class="layui-input-inline" style="width:45%;">
<div class="layui-inline" style="width:46%">
<div class="layui-form-item">
<label class="layui-form-label">关键字</label>
<div class="layui-input-block" style="display:flex">
<input style="width:70%;float:left" type="text" name="keyword" placeholder="请输入关键字"
<div class="layui-input-block">
<input style="width:80%;float:left" type="text" name="keywords" placeholder="请输入关键字"
class="layui-input" autocomplete="off" />
<button class="layui-btn layui-btn-normal" lay-submit=""
lay-filter="searchform">提交搜索</button>
<button class="layui-btn layui-btn-normal" style="width:20%" lay-submit=""
lay-filter="searchform" type="button">提交搜索</button>
</div>
</div>
</div>
@ -62,10 +62,10 @@
<div class="layui-form-item">
<label class="layui-form-label">商户类别</label>
<div class="layui-input-block">
<select name="is_trader" lay-filter="searchform">
<select name="dddd" lay-filter="searchform">
<option value=""></option>
<option value="1">自营</option>
<option value="0">非自营</option>
<option value="10">自营</option>
<option value="11">非自营</option>
</select>
</div>
</div>
@ -75,29 +75,33 @@
<div class="layui-form-item">
<div class="layui-input-inline" style="width:45%;float:none;">
<div class="layui-input-inline" style="width:46%;">
<div class="layui-form-item">
<label class="layui-form-label">商户分类</label>
<div class="layui-input-block">
<select name="category_id" lay-filter="seleform">
<select name="category" lay-filter="searchform">
<option value=""></option>
{volist name="category" key="k" id="vo"}
<option value="{$vo.merchant_category_id}">{$vo.category_name}</option>
{/volist}
<option value="0">写作</option>
<option value="1">阅读</option>
<option value="2">游戏</option>
<option value="3">音乐</option>
<option value="4">旅行</option>
</select>
</div>
</div>
</div>
<div class="layui-input-inline" style="width:45%;">
<div class="layui-input-inline" style="width:35%;">
<div class="layui-form-item">
<label class="layui-form-label">店铺类型</label>
<div class="layui-input-block">
<select name="type_id" lay-filter="seleform">
<select name="type" lay-filter="type">
<option value=""></option>
{volist name="type" key="k" id="vo"}
<option value="{$vo.mer_type_id}">{$vo.type_name}</option>
{/volist}
<option value="0">写作</option>
<option value="1">阅读</option>
<option value="2">游戏</option>
<option value="3">音乐</option>
<option value="4">旅行</option>
</select>
</div>
</div>
@ -112,10 +116,13 @@
<label class="layui-form-label">保证金状态</label>
<div class="layui-input-block">
<select class="is_margin" name="is_margin" lay-filter="seleform">
<select class="test_state" name="status" lay-filter="status">
<option value=""></option>
<option value="10">已付</option>
<option value="0">未付</option>
<option value="0">写作</option>
<option value="1">阅读</option>
<option value="2">游戏</option>
<option value="3">音乐</option>
<option value="4">旅行</option>
</select>
</div>
@ -127,18 +134,19 @@
<!-- change tab -->
<div class="layui-form-item" id="refund_margin" style="display:none;">
<div class="layui-input-inline" style="width:45%;">
<div class="layui-input-inline" style="width:46%;">
<div class="layui-form-item">
<label class="layui-form-label">审核</label>
<div class="layui-input-block">
<div class="layui-btn-group">
<input type="hidden" id="status" name="status" value="" readonly placeholder="核审状态值">
<button name="both" lay-submit="" lay-filter="statusform" type="button" class="layui-btn layui-btn-normal">全部</button>
<button name="wait" lay-submit="" lay-filter="statusform" type="button" class="layui-btn layui-btn-normal layui-btn-primary">待审核</button>
<button name="success" lay-submit="" lay-filter="statusform" type="button" class="layui-btn layui-btn-normal layui-btn-primary">审核通过</button>
<button name="failed" lay-submit="" lay-filter="statusform" type="button" class="layui-btn layui-btn-normal layui-btn-primary">审核未通过</button>
<button type="button" class="layui-btn layui-btn-normal">全部</button>
<button type="button" class="layui-btn layui-btn-normal layui-btn-primary">待审核</button>
<button type="button" class="layui-btn layui-btn-normal layui-btn-primary">已审核</button>
<button type="button" class="layui-btn layui-btn-normal layui-btn-primary">审核失败</button>
</div>
</div>
</div>
</div>
@ -147,10 +155,13 @@
<label class="layui-form-label">退回状态</label>
<div class="layui-input-block">
<select name="refund" lay-filter="seleform">
<select name="refund" lay-filter="refund">
<option value=""></option>
<option value="0">未退回</option>
<option value="1">已退回</option>
<option value="0">写作</option>
<option value="1">阅读</option>
<option value="2">游戏</option>
<option value="3">音乐</option>
<option value="4">旅行</option>
</select>
</div>
@ -167,14 +178,14 @@
<div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
<ul class="layui-tab-title">
<li lay-id="11" class="layui-this tag-switch" data-type="tabChange">缴存保证金</li>
<li lay-id="22" class="tag-switch" data-type="tabChange">退回保证金</li>
<li lay-id="11" class="layui-this site-demo-active" data-type="tabChange">缴存保证金</li>
<li lay-id="22" class="site-demo-active" data-type="tabChange">退回保证金</li>
</ul>
<div class="layui-tab-content" style="height: 100px;">
<!-- 缴存列表 -->
<div class="layui-tab-item layui-show">
<table class="layui-hide" id="pay_list" lay-filter="pay_list">
<table class="layui-hide" id="reduct_list" lay-filter="reduct_list">
</table>
</div>
@ -221,8 +232,8 @@
function gouguInit() {
var table = layui.table, tool = layui.tool, form = layui.form;
layui.payTable = table.render({
elem: '#pay_list',
layui.pageTable = table.render({
elem: '#reduct_list',
title: '保证金列表',
toolbar: '#toolbarDemo',
url: '/admin/margin/lst',
@ -249,7 +260,7 @@
title: '店铺类型',
align: 'center',
width: 220,
templet: '<div>{{d.merchant.merchantType.type_name}}</div>'
templet: '<div>{{d.merchant.type_id}}</div>'
}, {
field: 'real_name',
title: '商户姓名',
@ -266,22 +277,7 @@
field: 'status',
title: '状态',
align: 'center',
width: 150,
templet: function(d){
switch (d.merchant.is_margin) {
case 0:
return '<div></div>'
case 1:
return '<div>有未支付</div>'
case 10:
return '<div>已支付</div>'
case -1:
return '<div>申请退款</div>'
case -10:
return '<div>拒绝退款</div>'
}
}
width: 150
}, {
field: 'pay_time',
title: '支付时间',
@ -302,7 +298,7 @@
});
layui.refundTable = table.render({
layui.pageTable = table.render({
elem: '#refund_list',
title: '退回保证金列表',
toolbar: '#refundToolbar',
@ -378,10 +374,32 @@
return data;
}
var $ = layui.$, active = {
reload: function(){
let dataRload = getformdata();;
//执行重载
table.reload('testReload', {
page: {
curr: 1 //重新从第 1 页开始
}
,where: {
...dataRload
}
});
}
};
//监听表头工具栏事件
// table.on('toolbar(store_product)', function (obj) {
// if (obj.event === 'add') {
// tool.side("/admin/merchant/type/form");
// return false;
// }
// });
//监听表格行工具事件
table.on('tool(pay_list)', function (obj) {
table.on('tool(reduct_list)', function (obj) {
var data = obj.data;
// console.log(data);
if (obj.event === 'reduct') {
@ -407,101 +425,26 @@
return false;
});
//触发事件
var $ = layui.$, active = {
tabChange: function(){
//切换到指定Tab项
// element.tabChange('demo', this.getAttribute('lay-id')); //切换tab
var marign = document.getElementById('set_margin');
var refund = document.getElementById('refund_margin');
if ('11'==this.getAttribute('lay-id')) {
marign.style.display = "block";
refund.style.display = "none";
}else{
refund.style.display = "block";
marign.style.display = "none";
}
},
reload: function(){
let dataRload = getformdata();
//执行重载
table.reload('pay_list', {
page: {
curr: 1 //重新从第 1 页开始
}
,where: {
...dataRload
}
});
},
refund_reload: ()=>{
let dataRload = getformdata();
//执行重载
table.reload('refund_list', {
page: {
curr: 1 //重新从第 1 页开始
}
,where: {
...dataRload
}
});
}
};
layui.use(['laydate','element','table', 'jquery'],
function () {
var laydate = layui.laydate;
var $ = layui.jquery,element = layui.element;
//日期范围
laydate.render({
elem: '#range_date'
//设置开始日期、日期日期的 input 选择器
//数组格式为 2.6.6 开始新增,之前版本直接配置 true 或任意分割字符即可
, range: ['#start-date', '#end-date']
,done: function(value, date, endDate){
switchDateForm(true);
$('#both').removeClass('layui-btn-primary')
$('#both').siblings().addClass('layui-btn-primary')
active['reload'] ? active['reload'].call(this) : '';
}
});
// 列表切换
$('.tag-switch').on('click', function(){
var othis = $(this), type = othis.data('type');
active[type] ? active[type].call(this, othis) : '';
if ('11'==this.getAttribute('lay-id')) {
active['reload'] ? active['reload'].call(this, othis) : '';
}else{
active['refund_reload'] ? active['refund_reload'].call(this, othis) : '';
}
});
//监听button提交
//监听搜索提交
form.on('submit(searchform)', function(data) {
layui.payTable.reload({
console.log(data.elem.name, data.field)
layui.pageTable.reload({
where: {
date:data.elem.name,
...data.field
},
page: {
curr: 1
}
});
// layui.form.render();
return false;
});
form.on('select(searchform)', function(e) {
let data = getformdata();
layui.payTable.reload({
layui.pageTable.reload({
where: {
...data
},
@ -512,128 +455,67 @@
return false;
});
//选择时间
form.on('submit(chonse_date)', function(data){
let start_date = '';
let end_date = getDaysAgo();
let name = data.elem.name;
if (name =='today') {
start_date=end_date;
end_date = getDaysAgo(-1);
}else if(name == 'yeserday'){
start_date = getDaysAgo(1);
}else if(name == 'week'){
start_date = getDaysAgo(7);
}else if(name == '30day'){
start_date = getDaysAgo(30);
}else if(name == 'month'){
let days = (new Date).getDate()-1
start_date = getDaysAgo(days);
}else if(name == 'year'){
var year = (new Date()).getFullYear();//获取当前年份
start_date = year+'-01-01'
}else{
end_date = '';
}
switchClass(this)
switchDateForm(false);
$('#chonse_start_date').val(start_date);
$('#chonse_end_date').val(end_date);
active['reload'] ? active['reload'].call(this) : '';
return false;
})
// 商户审核
form.on('submit(statusform)', function(data) {
let name = data.elem.name
let status = 0;
if (name=='wait') {
status = 0;
}else if(name=='success'){
status = 1;
}else if(name=='failed'){
status = 2;
}
if (name=='both'){
$('#status').attr('disabled', true);
}else{
$('#status').attr('disabled', false);
}
switchClass(this)
$('#status').val(status);
active['reload'] ? active['reload'].call(this) : '';
return false;
//监听
$('.test_state .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
//监听select提交
form.on('select(seleform)', function(data) {
active['reload'] ? active['reload'].call(this) : '';
return false;
// 日期范围
layui.use(['laydate','element', 'jquery'],
function () {
var laydate = layui.laydate;
var $ = layui.jquery,element = layui.element;
//日期范围
laydate.render({
elem: '#test6'
//设置开始日期、日期日期的 input 选择器
//数组格式为 2.6.6 开始新增,之前版本直接配置 true 或任意分割字符即可
, range: ['#test-startDate-1', '#test-endDate-1']
,done: function(value, date, endDate){
let data = getformdata()
data.date = ''
layui.pageTable.reload({
where: {
...data
},
page: {
curr: 1
}
});
}
});
//触发事件
var active = {
tabChange: function(){
//切换到指定Tab项
// element.tabChange('demo', this.getAttribute('lay-id')); //切换tab
var marign = document.getElementById('set_margin');
var refund = document.getElementById('refund_margin');
if ('11'==this.getAttribute('lay-id')) {
marign.style.display = "block";
refund.style.display = "none";
// refund.childNodes().value='';
}else{
refund.style.display = "block";
marign.style.display = "none";
}
}
};
$('.site-demo-active').on('click', function(){
var othis = $(this), type = othis.data('type');
active[type] ? active[type].call(this, othis) : '';
});
//Hash地址的定位
// var layid = location.hash.replace(/^#test=/, '');
// element.tabChange('test', layid);
}
);
// 切换button选中样式
function switchClass(e)
{
$(e).removeClass('layui-btn-primary')
$(e).siblings().addClass('layui-btn-primary')
}
// 两个时间表单是互斥的,只能提交一个
function switchDateForm(chonse=false)
{
let range = chonse?false:true;
$('#start-date').attr("disabled",range);
$('#end-date').attr("disabled",range);
$('#chonse_start_date').attr("disabled",chonse);
$('#chonse_end_date').attr("disabled",chonse);
if (chonse) {
$('#chonse_start_date').val("");
$('#chonse_end_date').val("");
}else{
$('#start-date').val("");
$('#end-date').val("");
}
}
//获取n天以前日期
function getDaysAgo(n=0) {
let myDate = new Date();
let lw = new Date(myDate - 1000 * 60 * 60 * 24 * n); //最后一个数字30可改n天前的意思
let lastY = lw.getFullYear();
let lastM = lw.getMonth() + 1;
let lastD = lw.getDate();
lastM = lastM < 10 ? "0" + lastM : lastM;
lastD = lastD < 10 ? "0" + lastD : lastD;
let startData = lastY+"-"+lastM+"-" +lastD; //n天之前日期
return startData;
}
// 获取表单所有参数
function getformdata() {
var form = $('#filterform').serializeArray();
var data = new Array();
for(let i=0;i<form.length; i++){
data[form[i].name] = form[i].value;
}
return data;
}
}
</script>

View File

@ -37,15 +37,15 @@
<tr>
<td colspan="2">
<div class="layui-input-block">
<input lay-filter="is_margin"type="radio" name="is_margin" value="1" title="有" {if $detail.is_margin == 1}checked{/if}>
<input lay-filter="is_margin" type="radio" name="is_margin" value="0" title="无" {if $detail.is_margin == 0}checked{/if}>
<input type="radio" name="is_margin" value="1" title="有" checked="{$detail.is_margin}">
<input type="radio" name="is_margin" value="0" title="无" checked="{$detail.is_margin}">
</div>
</td>
<td colspan="5"></td>
</tr>
<tr>
<td colspan="2">
<input id="margin" type="text" name="margin" lay-verify="required" lay-reqText="0" autocomplete="off" placeholder="0" class="layui-input" value="{$detail.margin}">
<input type="text" name="margin" lay-verify="required" lay-reqText="0" autocomplete="off" placeholder="0" class="layui-input" value="{$detail.margin}">
</td>
<td colspan="5">单位:元</td>
</tr>
@ -116,34 +116,14 @@
// }
});
let tval = '';
form.on('radio(is_margin)', (data)=>{
if (data.value>0) {
$('#margin').val(tval);
$('#margin').attr({'disabled':false});
}else{
tval = $('#margin').val();
$('#margin').val('');
$('#margin').attr('disabled',true);
}
});
//监听提交
form.on('submit(webform)', function (data) {
// data.field.content = tinyMCE.editors['container_content'].getContent();
if (data.field == '') {
layer.msg('请先完善店铺类型');
return false;
}
if (data.field.is_margin) {
if (data.field.margin <1) {
layer.msg('请输入店铺压金');
return false;
}
}else{
data.field.margin = ''
}
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {

View File

@ -132,7 +132,6 @@
height: 500
});
if (area_id != 0) {
street(area_id)
}

View File

@ -19,7 +19,7 @@
<!--</script>-->
<script type="text/html" id="barDemo">
<div class="layui-btn-group"><a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="read">查看</a><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></div>
<div class="layui-btn-group"><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></div>
</script>
{/block}

View File

@ -21,13 +21,13 @@
<script type="text/html" id="thumb">
</script>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
{if {:auth_cache(session('gougu_admin')['id'],$url[1])}==true}
<span class="layui-btn layui-btn-sm" lay-event="add" data-title="添加">+ 添加</span>
{/if}
</div>
</script>
<!--<script type="text/html" id="toolbarDemo">-->
<!-- <div class="layui-btn-container">-->
<!-- {if {:auth_cache(session('gougu_admin')['id'],$url[1])}==true}-->
<!-- <span class="layui-btn layui-btn-sm" lay-event="add" data-title="添加">+ 添加</span>-->
<!-- {/if}-->
<!-- </div>-->
<!--</script>-->
<script type="text/html" id="barDemo">
<div class="layui-btn-group">

View File

@ -21,13 +21,13 @@
<script type="text/html" id="thumb">
</script>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
{if {:auth_cache(session('gougu_admin')['id'],$url[1])}==true}
<span class="layui-btn layui-btn-sm" lay-event="add" data-title="添加">+ 添加</span>
{/if}
</div>
</script>
<!--<script type="text/html" id="toolbarDemo">-->
<!-- <div class="layui-btn-container">-->
<!-- {if {:auth_cache(session('gougu_admin')['id'],$url[1])}==true}-->
<!-- <span class="layui-btn layui-btn-sm" lay-event="add" data-title="添加">+ 添加</span>-->
<!-- {/if}-->
<!-- </div>-->
<!--</script>-->
<script type="text/html" id="barDemo">
<div class="layui-btn-group">

View File

@ -0,0 +1,45 @@
{extend name="common/base"/}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-4">
<h3 class="pb-3">新建用户提现表</h3>
<table class="layui-table layui-table-form">
<tr><td class="layui-td-gray-2">ID<font>*</font></td>
<td><input type="text" name="extract_id" lay-verify="required" lay-reqText="请完善ID" value="" autocomplete="off" placeholder="请输入ID" class="layui-input"></td><td colspan='4'></td>
</tr>
</table>
<div class="pt-3">
<input type="hidden" name="extract_id" value="0"/>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
var moduleInit = ['tool'];
function gouguInit() {
var form = layui.form, tool = layui.tool;
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
tool.post("/admin/user_extract/add", data.field, callback);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->

View File

@ -0,0 +1,218 @@
{extend name="common/base"/}
<!-- 主体 -->
{block name="body"}
<div class="p-3">
<form class="layui-form gg-form-bar border-t border-x">
<div class="layui-input-inline" style="width:300px;">
<input type="text" name="keywords" placeholder="请输入关键字" class="layui-input" autocomplete="off" />
</div>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="searchform">提交搜索</button>
</form>
<table class="layui-hide" id="user_extract" lay-filter="user_extract"></table>
</div>
<!--<script type="text/html" id="toolbarDemo">-->
<!-- <div class="layui-btn-container">-->
<!-- <span class="layui-btn layui-btn-sm" lay-event="add" data-title="添加用户提现表">+ 添加用户提现表</span>-->
<!-- </div>-->
<!--</script>-->
<script type="text/html" id="barDemo">
<div class="layui-btn-group"><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool'];
function gouguInit() {
var table = layui.table,tool = layui.tool, form = layui.form;
layui.pageTable = table.render({
elem: '#user_extract',
title: '用户提现表列表',
toolbar: '#toolbarDemo',
url: '/admin/user_extract/datalist',
page: true,
limit: 20,
cellMinWidth: 300,
cols: [
[
{
fixed: 'left',
field: 'extract_id',
title: '编号',
align: 'center',
width: 80
},{
field: 'uid',
title: '用户 id',
align: 'center',
width: 100
},{
field: 'extract_sn',
title: '单号',
align: 'center',
width: 100
},{
field: 'real_name',
title: '姓名',
align: 'center',
width: 100
},{
field: 'extract_type',
title: '提现方式',
align: 'center',
width: 100
},{
field: 'bank_code',
title: '银行卡',
align: 'center',
width: 100
},{
field: 'bank_address',
title: '开户地址',
align: 'center',
width: 100
},
// {
// field: 'alipay_code',
// title: '支付宝账号',
// align: 'center',
// width: 100
// },{
// field: 'wechat',
// title: '微信号',
// align: 'center',
// width: 100
// },{
// field: 'extract_pic',
// title: '收款码',
// align: 'center',
// width: 100
// },
{
field: 'extract_price',
title: '提现金额',
align: 'center',
width: 100
},{
field: 'balance',
title: '余额',
align: 'center',
width: 100
},{
field: 'mark',
title: '管理员备注',
align: 'center',
width: 100
},{
field: 'admin_id',
title: '审核管理员',
align: 'center',
width: 100
},{
field: 'fail_msg',
title: '无效原因',
align: 'center',
width: 100
},{
field: 'status_time',
title: '无效时间',
align: 'center',
width: 100
},{
field: 'create_time',
title: '添加时间',
align: 'center',
width: 100
},{
field: 'status',
title: '状态',
align: 'center',
width: 100,
templet: function (d)
{
if (d.status == '-1') {
html = '<span style="color:#FB3205">未通过</span>';
}
if (d.status =='0') {
html = '<span style="color:#12bb37">审核中</span>';
}
if (d.status == '1') {
html = '<span style="color:#1159F3">已提现</span>';
}
return html;
},
},{
field: 'bank_name',
title: '银行名称',
align: 'center',
width: 100
},
{
fixed: 'right',
field: 'right',
title: '操作',
toolbar: '#barDemo',
width: 136,
align: 'center'
}
]
]
});
//监听表头工具栏事件
table.on('toolbar(user_extract)', function(obj){
if (obj.event === 'add') {
tool.side("/admin/user_extract/add");
return false;
}
});
//监听表格行工具事件
table.on('tool(user_extract)', function(obj) {
var data = obj.data;
if (obj.event === 'read') {
tool.side('/admin/user_extract/read?extract_id='+obj.data.extract_id);
}
else if (obj.event === 'edit') {
tool.side('/admin/user_extract/edit?extract_id='+obj.data.extract_id);
}
else if (obj.event === 'del') {
layer.confirm('确定要删除该记录吗?', {
icon: 3,
title: '提示'
}, function(index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete("/admin/user_extract/del", { extract_id: data.extract_id }, callback);
layer.close(index);
});
}
return false;
});
//监听搜索提交
form.on('submit(searchform)', function(data) {
layui.pageTable.reload({
where: {
keywords: data.field.keywords
},
page: {
curr: 1
}
});
return false;
});
}
</script>
{/block}
<!-- /脚本 -->

View File

@ -0,0 +1,45 @@
{extend name="common/base"/}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-4">
<h3 class="pb-3">编辑用户提现表</h3>
<table class="layui-table layui-table-form">
<tr><td class="layui-td-gray-2">ID<font>*</font></td>
<td><input type="text" name="extract_id" lay-verify="required" lay-reqText="请完善ID" value="{$detail.extract_id}" autocomplete="off" placeholder="请输入ID" class="layui-input"></td><td colspan='4'></td>
</tr>
</table>
<div class="py-3">
<input type="hidden" name="extract_id" value="{$detail.extract_id}"/>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
var moduleInit = ['tool'];
function gouguInit() {
var form = layui.form, tool = layui.tool;
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
tool.post("/admin/user_extract/edit", data.field, callback);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->

View File

@ -0,0 +1,13 @@
{extend name="common/base"/}
<!-- 主体 -->
{block name="body"}
<div class="layui-form p-4">
<h3 class="pb-3">用户提现表详情</h3>
<table class="layui-table layui-table-form">
<tr><td class="layui-td-gray-2">ID</td>
<td>{$detail.extract_id}</td><td colspan='4'></td>
</tr>
</table>
</div>
{/block}
<!-- /主体 -->

View File

@ -80,24 +80,58 @@ abstract class BaseController
protected function initialize()
{
//每页显示数据量
$this->pageSize = Request::param('page_size', \think\facade\Config::get('app.page_size'));
// 暂时去除 -----------------------------------------------------
// $token = Request::header('x-Token');
// if ($token) {
// if (strpos($token, 'Bearer') === 0){
// $token = trim(substr($token, 6));
// }
// if (count(explode('.', $token)) != 3) {
// return json(['code'=>404,'msg'=>'非法请求']);
// }
// $config = get_system_config('token');
$token = Request::header('x-Token');
if ($token) {
if (strpos($token, 'Bearer') === 0){
$token = trim(substr($token, 6));
}
if (count(explode('.', $token)) != 3) {
return json(['code'=>404,'msg'=>'非法请求']);
}
$config = get_system_config('token');
try {
JWT::$leeway = 60;//当前时间减去60把时间留点余地
$decoded = JWT::decode($token, new Key('ae47e94a7dcd1fdfacb499b60e361a8d', 'HS256')); //HS256方式这里要和签发的时候对应
$user=Db::connect('shop')->name('nk_user')->where('user_id',$decoded->jti[0])->find();
if ($user && $user['n_user_id']!=0){
$this->request->uid=$user['n_user_id'];
}else{
$this->request->uid=$this->addUser($decoded->jti[0],$user);
}
//return (array)$decoded;
// $decoded_array = json_decode(json_encode($decoded),TRUE);
// $jwt_data = $decoded_array['data'];
// return json($token);
// JWT::$leeway = 60;//当前时间减去60把时间留点余地
// $decoded = JWT::decode($token, new Key('ae47e94a7dcd1fdfacb499b60e361a8d', 'HS256')); //HS256方式这里要和签发的时候对应
if (!$user){
return json(['code'=>403,'msg'=>'签名错误']);
return false;
}
$user = Db::table('fa_user')->where('id',$user['n_user_id'])->find();
//$request->uid = $jwt_data['userid'];
// define('JWT_UID', $user['id']);
// $response = $next($request);
// return $response;
//return $next($request);
} catch(\Firebase\JWT\SignatureInvalidException $e) { //签名不正确
return json(['code'=>403,'msg'=>'签名错误']);
}catch(\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用
return json(['code'=>401,'msg'=>'token失效']);
}catch(\Firebase\JWT\ExpiredException $e) { // token过期
return json(['code'=>401,'msg'=>'token已过期']);
}catch(Exception $e) { //其他错误
return json(['code'=>404,'msg'=>'非法请求']);
}catch(\UnexpectedValueException $e) { //其他错误
return json(['code'=>404,'msg'=>'非法请求']);
} catch(\DomainException $e) { //其他错误
return json(['code'=>404,'msg'=>'非法请求']);
}
}else{
// define('JWT_UID', '');
return json(['code'=>404,'msg'=>'token不能为空']);
}
// return $decoded->jti[0];
// exit;

View File

@ -6,5 +6,4 @@ return [
//验证勾股cms是否完成安装
\app\home\middleware\Install::class,
\app\api\middleware\AllowOriginMiddleware::class,
];

View File

@ -2,6 +2,7 @@
use think\facade\Route;
Route::group('/',function () {
Route::get('ArticleComment/isread', 'ArticleComment/isread');
Route::get('ArticleComment/one list', 'ArticleComment/OneList');
Route::get('Village/get_my_village', 'Village/get_my_village');
Route::get('Village/get_my_town', 'Village/get_my_town');
Route::get('Userinfo/get_ranking', 'Userinfo/get_ranking');
@ -114,6 +115,7 @@ Route::group('/',function () {
//红白喜事轮播图
Route::get('Slide/get_slide_two', 'Slide/get_slide_two');
Route::get('User/index', 'User/index');
Route::get('Village/thumbs_up', 'Village/thumbs_up');
})->middleware(\app\api\middleware\Auth::class);
Route::group('/',function () {
@ -156,7 +158,7 @@ Route::group('/',function () {
Route::get('Village/get_ranking_list', 'Village/get_ranking_list');
Route::get('Census/get_list', 'Census/get_list');
Route::get('Village/get_village', 'Village/get_village');
Route::get('Village/thumbs_up', 'Village/thumbs_up');
Route::get('Village/get_detail', 'Village/get_detail');
Route::get('Village/get_list', 'Village/get_list');
Route::get('Village/get_json', 'Village/get_json');

View File

@ -0,0 +1,7 @@
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>

View File

@ -1,5 +0,0 @@
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}