添加: 交易市场用户管理功能

This commit is contained in:
wuhui_zzw 2023-02-23 10:14:37 +08:00
parent e678129e6d
commit fca99fa2f7
4 changed files with 328 additions and 5 deletions

View File

@ -0,0 +1,107 @@
<?php
namespace addon\futures\model;
use app\model\BaseModel;
use think\Exception;
use think\facade\Db;
class User extends BaseModel{
protected int $site_id;
public function __construct($site_id){
$this->site_id = (int)$site_id;
}
/**
* Common: 获取用户列表
* Author: wu-hui
* Time: 2023/02/23 9:33
* @return array
* @throws \think\db\exception\DbException
*/
public function getList(){
// 参数获取
$page = input('page',1);
$pageSize = input('page_size',PAGE_LIST_ROWS);
$nickname = (string)input('nickname','');
$status = (int)input('status',0);// 是否为特殊身份2=不是1=是
// 条件生成
$where = [
['m.site_id','=',$this->site_id],
['m.is_delete','=',0]
];
if($nickname) $where[] = ['m.username|m.nickname',"like","%{$nickname}%"];
if($status > 0) $where[] = ['fu.is_special',"=",($status == 2 ? 0 : 1 )];//是否为特殊身份0=不是1=是
// 列表获取
$field = [
'fu.id',
'm.member_id',
'IFNULL(fu.is_special,0) as is_special',
'IFNULL(fu.violation_num,0) as violation_num',
'IFNULL(fu.total_violation_num,0) as total_violation_num',
'IFNULL(fu.punish_time,0) as punish_time',
'IFNULL(fu.business_num,0) as business_num',
'IFNULL(fu.total_business_num,0) as total_business_num',
'm.username',
'm.nickname',
'm.headimg',
];
$result = Db::name('member')
->alias('m')
->join('futures_user fu','fu.member_id = m.member_id','left')
->field($field)
->where($where)
->order(['m.member_id'=>'DESC'])
->paginate(['list_rows' => $pageSize,'page' => $page]);
if($result) {
$result = $result->toArray();
$list = [
'count' => $result['total'],
'list' => $result['data'],
'page_count' => $result['last_page'],
];
return $this->success($list);
}
return $this->success();
}
/**
* Common: 特殊身份变更
* Author: wu-hui
* Time: 2023/02/23 9:24
* @return array
*/
public function changeSpecial(){
// 参数获取
$memberId = (int)input('member_id',0);
$isSpecial = (int)input('is_special',0);
// 修改信息
try{
$data['is_special'] = $isSpecial == 1 ? 0 : 1;
$isHas = (int)Db::name('futures_user')
->where('member_id',$memberId)
->value('id');
if($isHas > 0) Db::name('futures_user')->where('member_id',$memberId)->update($data);
else{
$data['member_id'] = $memberId;
$data['site_id'] = $this->site_id;
$data['created_time'] = time();
Db::name('futures_user')->insert($data);
}
return $this->success();
}catch(Exception $e){
return $this->error('',$e->getMessage());
}
}
}

View File

@ -0,0 +1,46 @@
<?php
/**
* SAAS应用系统 --- 十年开发经验汇集巨献!
* ==========================================================
* Copy right 2020-2050 成都众联思索科技有限公司,保留所有权利。
* ----------------------------------------------------------
* 官方网址: https://www.zoomtk.com
* 这不是自由软件!未经允许不得用于商业目或程序代码摘取及修改。
* 任何企业和个人未经允许对程序代码以任何形式任何目的再发布传播。
* 唯一发布渠道www.zoomtk.com;非官方渠道统一视为侵权行为。
* ==========================================================
*/
namespace addon\futures\shop\controller;
use app\shop\controller\BaseShop;
use addon\futures\model\User as userModel;
class User extends BaseShop{
/**
* Common: 进入首页
* Author: wu-hui
* Time: 2023/02/23 9:33
* @return array|mixed
* @throws \think\db\exception\DbException
*/
public function index(){
if(request()->isAjax()) return (new userModel($this->site_id))->getList();
$this->forthMenu();
return $this->fetch('user/index');
}
/**
* Common: 特殊身份变更
* Author: wu-hui
* Time: 2023/02/23 9:33
* @return array
*/
public function changeSpecial(){
return (new userModel($this->site_id))->changeSpecial();
}
}

View File

@ -40,11 +40,7 @@
{block name="script"}
<script>
var table,
form,
editIframe,
repeat_flag = false;//防重复标识;
var table, form, editIframe, repeat_flag = false;//防重复标识;
layui.use(['form'], function() {
form = layui.form;
form.render();

View File

@ -0,0 +1,174 @@
{extend name="app/shop/view/base.html"/}
{block name="resources"}
<style>
.prompt-block .prompt {
display: inline-block;
}
.prompt-block .prompt {
width: 18px;
height: 18px;
line-height: 18px;
position: relative;
}
.user-head-img{
width:40px;
height:40px;
margin-right:20px;
}
</style>
{/block}
{block name="main"}
<!-- 筛选面板 -->
<div class="screen layui-collapse" lay-filter="selection_panel">
<div class="layui-colla-item">
<div class="layui-colla-content layui-form layui-show">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">用户昵称:</label>
<div class="layui-input-inline">
<input type="text" name="nickname" placeholder="用户昵称" autocomplete="off" class="layui-input"/>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">会员身份:</label>
<div class="layui-input-inline">
<select name="status" lay-filter="is_settlement">
<option value="">全部</option>
<option value="1">特殊身份</option>
<option value="2">非特殊身份</option>
</select>
</div>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="search">筛选</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</div>
</div>
<!-- 列表 -->
<table id="listContent" lay-filter="listContent"></table>
<!-- 操作 -->
<script type="text/html" id="operation">
<div class="table-btn">
{{# if(d.is_special == 1){ }}
<a class="layui-btn" lay-event="sendGoods">赠送商品</a>
{{# } }}
<a class="layui-btn" lay-event="delete">删除</a>
</div>
</script>
<!--会员信息-->
<script type="text/html" id="memberInfo">
<div class='table-title'>
<div class='title-pic'>
<img layer-src src="{{ns.img(d.headimg)}}" onerror="this.src = '{:img(\'public/static/img/default_img/head.png\')}' ">
</div>
<div class='title-content'>
{{# if(d.nickname){ }}
<p class="layui-elip">{{d.nickname}}</p>
{{# } else { }}
<p class="layui-elip">{{d.username}}</p>
{{# } }}
</div>
</div>
</script>
{/block}
{block name="script"}
<script>
var table, form, editIframe, repeat_flag = false;// 防重复标识;
layui.use(['form'], function () {
form = layui.form;
form.render();
// 内容获取
table = new Table({
elem: '#listContent',
url: ns.url("futures://shop/user/index"),
cols: [[
{align: 'center', field: 'member_id', title: '用户ID', width: '5%', unresize: 'false'},
{title: '会员信息', templet: '#memberInfo', unresize: 'false', align: 'left', width: '15%'},
{
title: '违规信息(总计/当前)', align: 'center', unresize: 'area', width: '10%', templet: function (d) {
return d.total_violation_num + ' / ' + d.violation_num;
}
},
{
title: '交易信息(总计/当前)', align: 'center', unresize: 'area', width: '10%', templet: function (d) {
return d.total_business_num + ' / ' + d.business_num;
}
},
{
title: '惩罚结束时间', align: 'center', unresize: 'area', width: '15%', templet: function (d) {
return d.punish_time > 0 ? ns.time_to_date(d.punish_time) : '---';
}
},
{
title: '是否为特殊身份', unresize: 'false', width: '10%', align: 'center', templet: function (d) {
if (parseInt(d.is_special) === 1) return '<input type="checkbox" name="is_special" data-member_id="' + d.member_id + '" value="1" lay-filter="is_special" lay-skin="switch" checked>';
else return '<input type="checkbox" name="is_special" data-member_id="' + d.member_id + '" value="0" lay-filter="is_special" lay-skin="switch">';
}
},
{title: '操作', toolbar: '#operation', unresize: 'false', width: '15%', align: 'right'}
]],
});
// 特殊身份信息改变
form.on('switch(is_special)', function(data){
// 获取用户id
var memberId = $(data.elem).attr('data-member_id');
// 请求改变信息
if (repeat_flag) return;
repeat_flag = true;
$.ajax({
url: ns.url("futures://shop/user/changeSpecial"),
data: {
member_id: memberId,
is_special: data.value,
},
dataType: 'JSON',
type: 'POST',
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) table.reload();
}
});
});
// 点击搜索
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
return false;
});
// 监听工具栏操作
table.tool(function(obj) {
var data = obj.data;
eval(obj.event)(data)
});
});
// 赠送商品
function sendGoods(data){
console.log(data);
}
</script>
{/block}