16
This commit is contained in:
@@ -66,7 +66,6 @@ class FilesController extends Crud
|
||||
$data = $this->base($request, $savePath);
|
||||
}catch(\Exception $e){
|
||||
return $this->fail( $e->getMessage());
|
||||
log_alert($e->getMessage());
|
||||
}
|
||||
return $this->success( '上传成功', $data);
|
||||
}
|
||||
|
||||
@@ -12,27 +12,48 @@ use Throwable;
|
||||
/**
|
||||
* 用户宣传
|
||||
*/
|
||||
class FriendController extends Crud
|
||||
class FriendController extends OpenimBase
|
||||
{
|
||||
|
||||
/**
|
||||
* @var \app\model\UserXuanchuan
|
||||
*/
|
||||
protected $model = null;
|
||||
protected $relationSearch = ['user'];
|
||||
protected $relationSearch = [];
|
||||
/**
|
||||
* 构造函数
|
||||
* @return void
|
||||
*/
|
||||
function __construct()
|
||||
{
|
||||
$this->model = new \app\model\UserXuanchuan();
|
||||
$this->model = new User();
|
||||
$statusList = $this->model->getStatusList();
|
||||
$this->assign("statusList", $statusList);
|
||||
$this->assignconfig("statusList", $statusList);
|
||||
$typeList = $this->model->getTypeList();
|
||||
$this->assign("typeList", $typeList);
|
||||
$this->assignconfig("typeList", $typeList);
|
||||
}
|
||||
|
||||
function select(Request $request): Response
|
||||
{
|
||||
$res = $this->getSdk()->friend->getFriendList(Input('userID'), 1, 5000);
|
||||
|
||||
$userIDs = [];
|
||||
foreach ($res['friendsInfo'] as $key => $value) {
|
||||
$userIDs[] = $value['friendUser']['userID'];
|
||||
}
|
||||
//$_users = \app\model\User::whereIn('userID', $userIDs)->column('*','userID');
|
||||
|
||||
|
||||
[$where, $format, $limit, $field, $order] = $this->selectInput($request);
|
||||
$where['userId'] = ['symbol'=>'in', 'value1'=>$userIDs];
|
||||
$query = $this->doSelect($where, $field, $order);
|
||||
return $this->doFormat($query, $format, $limit);
|
||||
|
||||
$list = [];
|
||||
foreach ($res['friendsInfo'] as $key => $value) {
|
||||
$item = array_merge($value['friendUser'], $_users[$value['friendUser']['userID']] ?? [],$value['friendUser']);
|
||||
unset($item['friendUser']);
|
||||
$list[] =$item;
|
||||
}
|
||||
return json([
|
||||
"code" => 0,
|
||||
"count" => $res['total'],
|
||||
"data" => $list,
|
||||
"msg" => "ok"
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace plugin\admin\app\controller;
|
||||
|
||||
use app\model\User;
|
||||
use plugin\admin\app\controller\Crud;
|
||||
use support\exception\BusinessException;
|
||||
use support\Request;
|
||||
use support\Response;
|
||||
use Throwable;
|
||||
|
||||
/**
|
||||
* OpenimBase
|
||||
*/
|
||||
class OpenimBase extends Crud
|
||||
{
|
||||
|
||||
/**
|
||||
* @var \support\OpenImSdk\Client
|
||||
*/
|
||||
protected $sdk = null;
|
||||
protected function getSdk(){
|
||||
if($this->sdk){
|
||||
return $this->sdk;
|
||||
}
|
||||
$this->sdk = new \support\OpenImSdk\Client([
|
||||
'host' => 'http://127.0.0.1:10002', // OpenIM API地址
|
||||
'secret' => 'n1e5a6s6m7', // OpenIM密钥
|
||||
]);
|
||||
return $this->sdk;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -58,10 +58,8 @@ class QuestionnaireController extends Crud
|
||||
if($showField && input($showField)){
|
||||
$query = $query->whereLike($showField,'%'.input($showField).'%');
|
||||
}
|
||||
//log_alert($ids,'cansnow');
|
||||
$query = $query->whereNotIn('id',$ids);
|
||||
$list = $query->field([$showField,$keyField])->paginate($limit);
|
||||
//log_alert($query->getLastSql(),'cansnow');
|
||||
|
||||
return $this->success('ok',$list);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ class TeamController extends Crud
|
||||
public function select(Request $request): Response
|
||||
{
|
||||
[$where, $format, $limit, $field, $order] = $this->selectInput($request);
|
||||
//log_alert($where);
|
||||
$user_id = 0;
|
||||
if($where['user_id']['value1']){
|
||||
$user_id = $where['user_id']['value1'];
|
||||
|
||||
@@ -11,7 +11,6 @@ use app\model\Base;
|
||||
class Config extends Base
|
||||
{
|
||||
public function setValueAttr($v,$row){
|
||||
log_alert($row);
|
||||
if(is_array($v)){
|
||||
return json_encode($v,JSON_UNESCAPED_UNICODE);
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ class User extends \app\model\User
|
||||
if(isset($changeData[$currency])){
|
||||
$cha = $changeData[$currency] - $orgData[$currency];
|
||||
if($cha!=0){
|
||||
\support\Log::channel('cansnow')->alert('管理员手动修改用户余额:'.$row->id.',货币:'.$currency.',修改金额:'.$cha.',原始数据:'.$orgData[$currency].',修改后的数据:'.$changeData[$currency]);
|
||||
log_alert('管理员手动修改用户余额:'.$row->id.',货币:'.$currency.',修改金额:'.$cha.',原始数据:'.$orgData[$currency].',修改后的数据:'.$changeData[$currency],'cansnow');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
{layout name="layout"}
|
||||
<div class="toolbar" class="toolbar-btn-action">
|
||||
<a id="btn_add" class="btn btn-primary m-r-5 btn-add" data-url="{:url('insert')}" data-title="新增" data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false">
|
||||
<span class="mdi mdi-plus" aria-hidden="true"></span>新增
|
||||
</a>
|
||||
<a id="btn_edit" class="btn btn-success m-r-5 btn-disabled disabled btn-multi" data-params="status=1">
|
||||
<span class="mdi mdi-check" aria-hidden="true"></span>启用
|
||||
</a>
|
||||
<a id="btn_edit" class="btn btn-warning m-r-5 btn-disabled disabled btn-multi" data-params="status=0">
|
||||
<span class="mdi mdi-block-helper" aria-hidden="true"></span>禁用
|
||||
</a>
|
||||
<a id="btn_delete" class="btn btn-danger btn-del btn-disabled disabled">
|
||||
<span class="mdi mdi-window-close" aria-hidden="true"></span>删除
|
||||
</a>
|
||||
</div>
|
||||
<!-- 数据表格 -->
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<table id="table"></table>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,88 @@
|
||||
{layout name="layout"}
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" action="__SELF__" method="post">
|
||||
<input type="hidden" name="id" value="{$row.id|null}" />
|
||||
<div class="form-group">
|
||||
<label for="type" class="control-label col-xs-12 col-sm-3">名称</label>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
<input type="text" name="title" value="{$row.title|null}" class="form-control" data-rule="required;length(2~100)" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="type" class="control-label col-xs-12 col-sm-3">封面:</label>
|
||||
<div class="col-xs-12 col-sm-8 col-md-6">
|
||||
<input id="c-image" class="form-control" size="50" name="image" type="hidden" value="{$row.image|default=''}" data-tip="image">
|
||||
<ul class="list-inline clearfix lyear-uploads-pic" data-template="preview" id="p-image">
|
||||
<li nodelete class="col-xs-4 col-sm-3 col-md-2">
|
||||
<a class="pic-add faupload" style="height: auto;border: 0;" permission="app.admin.upload.image" id="add-pic-btn" href="javascript:;" title="点击上传" data-input-id="c-image" data-mimetype="image/*" data-multiple="false" data-preview-id="p-image"></a>
|
||||
<a class="pic-add fachoose" style="height: auto;border: 0;display: none;" permission="app.admin.files.list" id="choose-pic-btn" href="javascript:;" title="选择文件" data-input-id="c-image" data-mimetype="image/*" data-multiple="false" data-preview-id="p-image"></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="type" class="control-label col-xs-12 col-sm-3">单价</label>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
<div class="input-group">
|
||||
<input type="text" name="price" value="{$row.price|null=3.5}" class="form-control" data-rule="required;range(0.5~)" />
|
||||
<div class="input-group-addon">¥</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="type" class="control-label col-xs-12 col-sm-3">库存</label>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
<div class="input-group">
|
||||
<input type="number" name="stock" value="{$row.stock|default=0}" class="form-control" min="0" data-rule="required;range(0~99)" />
|
||||
<div class="input-group-addon">份</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="type" class="control-label col-xs-12 col-sm-3">用户累计限购</label>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
<div class="input-group">
|
||||
<input type="number" name="user_quantity" value="{$row.user_quantity|default=0}" class="form-control" min="0" data-rule="required;range(0~99)" />
|
||||
<div class="input-group-addon">份</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-3">备注</label>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
<textarea type="text" name="memo" class="form-control" >{$row.memo|null}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="type" class="control-label col-xs-12 col-sm-3">销量</label>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
<div class="input-group">
|
||||
<input type="number" name="sales" value="{$row.sales|default=0}" disabled class="form-control" min="0" data-rule="required;range(0~99)" />
|
||||
<div class="input-group-addon">份</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-3">状态</label>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6">
|
||||
{volist name="statusList" id="rvo"}
|
||||
<label class="lyear-radio radio-primary radio-inline">
|
||||
<input type="radio" name="status" {if $row.status == $key} checked{/if} value="{$key}">
|
||||
<span>{$rvo}</span>
|
||||
</label>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-3"></label>
|
||||
<div class="col-xs-12 col-sm-6 col-md-6 layer-footer">
|
||||
<button type="submit" class="btn btn-primary m-r-5">提交</button>
|
||||
<button type="reset" class="btn btn-warning m-r-5">重置</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{include file="common/file_preview" id="preview"/}
|
||||
@@ -0,0 +1,146 @@
|
||||
define(['table', 'upload','form'], function (Table,Upload,Form) {
|
||||
var friend = {
|
||||
//Do setup work hereAction
|
||||
index: function () {
|
||||
window.statuskOption= Config.statusList;
|
||||
window.filterData = {
|
||||
};
|
||||
|
||||
Table.api.init({
|
||||
extend: {
|
||||
index_url: 'friend/select?userID='+Fast.api.query('userID'),
|
||||
add_url: 'friend/insert',
|
||||
edit_url: 'friend/update',
|
||||
del_url: 'friend/delete',
|
||||
multi_url: 'friend/multi',
|
||||
dragsort_url: null,
|
||||
table: 'user',
|
||||
}
|
||||
});
|
||||
|
||||
var table = $("#table");
|
||||
var columns = [
|
||||
{checkbox: true},
|
||||
{
|
||||
field: 'id',
|
||||
title: 'ID',
|
||||
filter: "number",
|
||||
sortable: true,
|
||||
visible:false // 是否排序
|
||||
},
|
||||
{
|
||||
field: 'userID',
|
||||
title: 'userID',
|
||||
filter: "string"
|
||||
},
|
||||
// {
|
||||
// title: "上级",
|
||||
// field: "referrer.username"
|
||||
// },
|
||||
{
|
||||
title: "角色",
|
||||
field: "role_id",
|
||||
formatter:function(v,row){
|
||||
return row.role ? row.role.name : '用户';
|
||||
},
|
||||
filter: "select",
|
||||
filterOption:"roleOption"
|
||||
},
|
||||
{
|
||||
title: "用户名",
|
||||
field: "username"
|
||||
},
|
||||
{
|
||||
title: "昵称",
|
||||
field: "nickname"
|
||||
},
|
||||
{
|
||||
title: "头像",
|
||||
field: "avatar",
|
||||
formatter: function (v,d) {
|
||||
return '<img src="'+encodeURI(d['avatar'])+'" style="max-width:32px;max-height:32px;" alt="" />'
|
||||
},
|
||||
visible: false
|
||||
},
|
||||
// {
|
||||
// title: "等级",
|
||||
// field: "level",
|
||||
// visible: false,
|
||||
// },
|
||||
// {
|
||||
// title: "生日",
|
||||
// field: "birthday",
|
||||
// visible: false,
|
||||
// },
|
||||
// {
|
||||
// title: "后缀",
|
||||
// field: "decimal_part",
|
||||
// //visible: false,
|
||||
// },
|
||||
];
|
||||
var currencys = ['money','score','currency1','currency2','currency3','currency4','currency5','currency6','currency7','currency8','currency9'];
|
||||
for (let i = 0; i < currencys.length; i++) {
|
||||
if(Config.allow_currencys.indexOf(currencys[i])!==-1){
|
||||
columns.push({
|
||||
title: __(currencys[i]),
|
||||
field: currencys[i],
|
||||
formatter:Table.api.formatter.number,
|
||||
//sortable: true,
|
||||
//visible: false,
|
||||
});
|
||||
}
|
||||
};
|
||||
columns.push({
|
||||
title: "注册时间",
|
||||
field: "created_at",
|
||||
filter:'datetime'
|
||||
});
|
||||
columns.push({
|
||||
title: "状态",
|
||||
field: "status",
|
||||
formatter: Table.api.formatter.switch
|
||||
});
|
||||
columns.push({
|
||||
field: 'operate', title: '操作',
|
||||
table: table,
|
||||
events: Table.api.events.operate,
|
||||
formatter: Table.api.formatter.operate,
|
||||
buttons:[
|
||||
// {
|
||||
// text:"团队",
|
||||
// name:"team",
|
||||
// icon:"mdi mdi-account-group-outline",
|
||||
// classname:"btn btn-xs btn-info btn-dialog",
|
||||
// extend:' data-offset="r" data-area="80%,100%" data-anim="5" data-shade="0.3" data-move="false"',
|
||||
// url:'user/team'
|
||||
// }
|
||||
]
|
||||
});
|
||||
var tableOptions = {
|
||||
url: $.fn.bootstrapTable.defaults.extend.index_url,
|
||||
pk: 'id',
|
||||
sortName: 'id',
|
||||
commonSearch: false,
|
||||
search: false,
|
||||
columns: [columns]
|
||||
};
|
||||
// 初始化表格
|
||||
table.bootstrapTable(tableOptions);
|
||||
// 为表格绑定事件
|
||||
Table.api.bindevent(table);
|
||||
},
|
||||
update:function(){
|
||||
this.bindevent();
|
||||
},
|
||||
insert:function(){
|
||||
this.bindevent();
|
||||
},
|
||||
bindevent:function(){
|
||||
Config['upload_url'] = 'files/upload';
|
||||
var form = $('form');
|
||||
var that = this;
|
||||
Form.api.bindevent(form)
|
||||
}
|
||||
};
|
||||
return friend
|
||||
});
|
||||
Reference in New Issue
Block a user