Commit 37fb1f8d authored by wangzhengwen's avatar wangzhengwen

6.17

parents a9e10285 5efd862b
......@@ -11,6 +11,7 @@ declare (strict_types=1);
namespace app;
use app\event\PhpOffice;
use think\App;
use think\facade\Cache;
use think\facade\Db;
......@@ -400,4 +401,35 @@ abstract class BaseController
return $bin ? $item : $item + $data;
}
public function downloadfile($fileid, $excel = 0)
{
if ($excel == 1) {
//导出下载
$fileinfo = Db::name('excel_down')->where(['id' => $fileid])->find();
$fileurl = strstr($fileinfo['fileurl'], '/static');
return download('.' . $fileurl, $fileinfo['filename'])->force(true);
} else {
$fileinfo = get_upload_file($fileid, 'info');
if ($fileinfo['storage'] == 'local') {
//本地文件下载
$fileurl = strstr($fileinfo['fileurl'], '/static');
return download('.' . $fileurl, $fileinfo['filename'])->force(true);
} else {
try {
//oss文件下载 先保存到服务器 然后再下载到本地电脑
$path = 'static/tempdown/' . $fileinfo['filename'];
PhpOffice::ossdownfile($fileinfo['fileurl'], $path);
register_shutdown_function(function () use ($path) {
// 处理完成后删除临时文件
unlink(VT_PUBLIC.'/'.$path);
});
return download('./' . $path, $fileinfo['filename'])->force(true);
}catch (\Exception $e) {
return $this->exitMsg($e->getMessage());
}
}
}
}
}
\ No newline at end of file
......@@ -166,16 +166,6 @@ abstract class AdminBase extends BaseController
}
}
public function downloadfile($fileid, $excel = 0)
{
if ($excel == 1) {
$fileinfo = Db::name('excel_down')->where(['id' => $fileid])->find();
} else {
$fileinfo = get_upload_file($fileid, 'info');
}
$fileurl = strstr($fileinfo['fileurl'],'/static');
return download('.' . $fileurl, $fileinfo['filename'])->force(true);
}
}
\ No newline at end of file
......@@ -144,6 +144,19 @@ class Index extends AdminBase
return $this->fetch();
}
//待审核数据 提示
public function dshtishi()
{
$business_dsh_count = Db::name('business')->where(['is_del' => '0', 'status' => 0])->count(); //企业资料待审核
$school_dsh_count = Db::name('school')->where(['is_del' => '0', 'status' => 0])->count(); //学校资料待审核
$course_dsh_count = Db::name('sh_course')->where(['is_del' => '0', 'status' => 1])->count(); //课程待审核
$project_dsh_count = Db::name('project')->where(['sh_status' => 0])->where('deletetime', 'NUll')->count(); //项目待审核
$tixian_dsh_count = Db::name('user_withdrawal')->where(['sh_status' => 0])->where('deletetime', 'NUll')->count(); //提现待审核
$tixian_dk_dsh_count = Db::name('user_withdrawal')->where(['sh_status' => 2, 'dk_status' => 0])->where('deletetime', 'NUll')->count(); //打款待审核
$dsh_sum_count = $business_dsh_count + $school_dsh_count + $course_dsh_count + $tixian_dsh_count + $tixian_dk_dsh_count + $project_dsh_count;
return $this->returnMsg('success', 1, ['dsh_sum_count' => $dsh_sum_count]);
}
public function main11111111111()
{
......
......@@ -99,6 +99,7 @@ class Project extends AdminBase
{
$post = input();
$info = $this->project->where('id', $post['id'])->with(['projectcatedata', 'getuserdata'])->find()->append(['sh_status_text', 'status_text', 'tag_title', 'file_list']);
$this->assign('info', $info);
return $this->fetch('', '', false);
}
......
......@@ -61,7 +61,7 @@
elem: '#advert',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
where:{kc:kc},
cols: [[
......
......@@ -52,7 +52,7 @@
elem: '#advertcate',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
where:{kc:kc},
cols: [[
......
......@@ -3,7 +3,7 @@
<style>
#articlecategoryTreeBar{padding:10px 15px;border:1px solid #e6e6e6;background-color:#f2f2f2}
#articlecategoryTree{border:1px solid #e6e6e6;border-top:none;padding:10px 5px;overflow:auto;height:-webkit-calc(100vh - 260px);height:-moz-calc(100vh - 260px);height:calc(100vh - 260px)}
#articlecategoryTree{border:1px solid #e6e6e6;border-top:none;padding:10px 5px;overflow:auto;height:-webkit-calc(100vh - 205px);height:-moz-calc(100vh - 205px);height:calc(100vh - 205px)}
.layui-tree-entry .layui-tree-txt{padding:0 5px;border:1px transparent solid;text-decoration:none!important}
.layui-tree-entry.organ-tree-click .layui-tree-txt{background-color:#fff3e0;border:1px #ffe6b0 solid}
.files_itemw{width:30px;height:30px;line-height:30px;cursor:pointer;padding:1px;background:#fff;display:-webkit-box;-moz-box-align:center;-webkit-box-align:center;-moz-box-pack:center;-webkit-box-pack:center;}
......@@ -26,11 +26,8 @@
<form class="layui-form render">
<input type="hidden" name="groupid" id="article-groupid" value=""/>
<div class="layui-form-item">
<div class="layui-inline" style="width:250px;"><input type="text" name="kw" placeholder="文章标题关键词" autocomplete="off" class="layui-input" lay-affix="clear"/></div>
<div class="layui-inline">
<div class="layui-btn-group">
<button class="layui-btn" lay-submit lay-filter="search-article"><i class="layui-icon layui-icon-search"></i> 搜索</button>
......@@ -44,20 +41,11 @@
</form>
</div>
<div class="layui-card-body">
<!-- <div class="layui-card-box">-->
<!-- <div class="layui-btn-group">-->
<!-- <a class="layui-btn" id="article-add" ><i class="layui-icon layui-icon-add-circle"></i> 添加</a>-->
<!-- <a class="layui-btn" id="article-del"><i class="layui-icon layui-icon-delete"></i> 删除</a>-->
<!-- </div>-->
<!-- </div>-->
<div class="layui-card-body">
<table lay-filter="article" id="article"></table>
</div>
</div>
</div>
</div>
</div>
</div>
<!--JS部分-->
......@@ -99,7 +87,7 @@
elem: '#article',
page: true,
limit:{$limit},
height: 'full-341',
height: 'full-258',
url: app_root+"index?&do=json",
cols: [[
{type:'checkbox',fixed:'left'},
......
......@@ -63,7 +63,7 @@
elem: '#usermoneylog',
page: true,
limit:{$limit},
height: 'full-341',
// height: 'full-341',
url: app_root+"index?&do=json",
// css: 'td .layui-table-cell{height:80px;line-height:80px;padding:0 5px;}',
cols: [[
......@@ -74,6 +74,7 @@
{field:'front_money',align:'center',width:100,title:'更改前金额'},
{field:'money',align:'center',width:100,title:'金额'},
{field:'after_money',align:'center',width:100,title:'更改后金额'},
{field:'money_type',align:'center',width:100,title:'金额类型'},
{field:'type_text',align:'center',width:100,title:'类型'},
{field:'content',align:'center',title:'内容'},
{field:'createtime',width:150,align:'center',title:'时间'},
......
......@@ -108,7 +108,7 @@
elem: '#withdrawal',
page: true,
limit:{$limit},
height: 'full-341',
// height: 'full-341',
// toolbar: 'default', //开启工具栏,此处显示默认图标,可以自定义模板,详见文档
url: app_root+"index?&do=json",
where:{sh_status:sh_status,dk_status:dk_status},
......
......@@ -3,7 +3,7 @@
<style>
#certcategoryTreeBar{padding:10px 15px;border:1px solid #e6e6e6;background-color:#f2f2f2}
#certcategoryTree{border:1px solid #e6e6e6;border-top:none;padding:10px 5px;overflow:auto;height:-webkit-calc(100vh - 290px);height:-moz-calc(100vh - 290px);height:calc(100vh - 290px)}
#certcategoryTree{border:1px solid #e6e6e6;border-top:none;padding:10px 5px;overflow:auto;height:-webkit-calc(100vh - 205px);height:-moz-calc(100vh - 205px);height:calc(100vh - 205px)}
.layui-tree-entry .layui-tree-txt{padding:0 5px;border:1px transparent solid;text-decoration:none!important}
.layui-tree-entry.organ-tree-click .layui-tree-txt{background-color:#fff3e0;border:1px #ffe6b0 solid}
.files_itemwcert{width:30px;height:30px;line-height:30px;cursor:pointer;padding:1px;background:#fff;display:-webkit-box;-moz-box-align:center;-webkit-box-align:center;-moz-box-pack:center;-webkit-box-pack:center;}
......@@ -108,7 +108,7 @@
elem: '#cert',
page: true,
limit:{$limit},
// height: 'full-341',
height: 'full-258',
url: app_root+"index?&do=json",
// css: 'td .layui-table-cell{height:80px;line-height:80px;padding:0 5px;}',
cols: [[
......
......@@ -78,7 +78,7 @@
elem: '#certorder',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
cols: [[
{type:'checkbox',fixed:'left'},
......
......@@ -123,7 +123,7 @@
elem: '#courseclasscategory',
page: true,
limit:20,
height: 'full-341',
url: map_root+"/course.course_class_category/index?&do=json",
where:{course_id:course_id},
cols: [[
......@@ -140,7 +140,7 @@
elem: '#courseclasstwo',
page: true,
limit:20,
height: 'full-341',
url: map_root+"course.course_class/index?&do=json",
where:{course_id:course_id},
cols: [[
......@@ -164,7 +164,7 @@
elem: '#coursework',
page: true,
limit:20,
height: 'full-341',
url: map_root+"course.course_work/index?&do=json",
where:{course_id:course_id},
cols: [[
......
......@@ -3,7 +3,7 @@
<style>
#coursecategoryTreeBar{padding:10px 15px;border:1px solid #e6e6e6;background-color:#f2f2f2}
#coursecategoryTree{border:1px solid #e6e6e6;border-top:none;padding:10px 5px;overflow:auto;height:-webkit-calc(100vh - 290px);height:-moz-calc(100vh - 290px);height:calc(100vh - 290px)}
#coursecategoryTree{border:1px solid #e6e6e6;border-top:none;padding:10px 5px;overflow:auto;height:-webkit-calc(100vh - 205px);height:-moz-calc(100vh - 205px);height:calc(100vh - 205px)}
.layui-tree-entry .layui-tree-txt{padding:0 5px;border:1px transparent solid;text-decoration:none!important}
.layui-tree-entry.organ-tree-click .layui-tree-txt{background-color:#fff3e0;border:1px #ffe6b0 solid}
.files_itemw{width:30px;height:30px;line-height:30px;cursor:pointer;padding:1px;background:#fff;display:-webkit-box;-moz-box-align:center;-webkit-box-align:center;-moz-box-pack:center;-webkit-box-pack:center;}
......@@ -134,7 +134,7 @@
elem: '#course',
page: true,
limit:{$limit},
height: 'full-341',
height: 'full-258',
url: app_root+"index?&do=json",
// css: 'td .layui-table-cell{height:80px;line-height:80px;padding:0 5px;}',
where:{status:status},
......
......@@ -54,7 +54,7 @@
elem: '#courseclass',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
where:{kw:kw,kc:kc,zj:zj},
cols: [[
......
......@@ -54,7 +54,7 @@
elem: '#courseclasscategory',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
where:{kc:kc},
cols: [[
......
......@@ -52,7 +52,7 @@
elem: '#coursework',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
where:{kc:kc},
cols: [[
......
......@@ -14,6 +14,20 @@
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<style>
@keyframes dshbounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-10px); }
}
.dshbounce {
animation: dshbounce 1s infinite;
display: inline-block;
font-weight: bold;
color: #ff6b6b;
}
</style>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
......@@ -24,6 +38,7 @@
<li class="layui-nav-item" lay-unselect><a v-event="refresh" title="刷新"><i class="layui-icon layui-icon-refresh-3"></i></a></li>
</ul>
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item" id="new_dsh" style="display: none;"><a title="有新的待审核" href="#/index/main" style="color: #ff2638;" class="dshbounce">有新的待审核(10)</a></li>
<li class="layui-nav-item" lay-unselect><a v-event="clearCache" title="缓存" data-url="{$appMap}/index/clear"><i class="layui-icon layui-icon-clear"></i></a></li>
<li class="layui-nav-item" lay-unselect><a href="{PUBLIC__PATH}/" target="_blank" title="前台"><i class="layui-icon layui-icon-website"></i></a></li>
<li class="layui-nav-item" lay-unselect><a v-event="lockScreen" data-url="{PUBLIC__PATH}/static/admin/page/tpl/lock.html" title="锁屏"><i class="layui-icon layui-icon-password"></i></a></li>
......@@ -69,7 +84,7 @@ layui.config({
viewSuffix: '', // 视图后缀
reqPutToPost: true, // req请求put方法变成post
apiNoCache: true, // ajax请求json数据不带版本号
tabAutoRefresh: false, // 是否每点击菜单都刷新
tabAutoRefresh: true, // 是否每点击菜单都刷新
tableName: 'vadmin', // 存储表名
token: '{:token($tokenName)}', // CSRF-TOKEN
}
......@@ -96,6 +111,35 @@ layui.config({
$('#vRole').html(r_str + '<hr>');
});
});
//待审核消息提示
function dshtishi(){
$.ajax({
method: "post",
url: '/admin/Index/dshtishi',
dataType: "json",
success: function (res){
if(res.code===1) {
// new_dsh
if(res.data.dsh_sum_count > 0){
$("#new_dsh").show();
$("#new_dsh").find("a").html("有新的待审核("+res.data.dsh_sum_count+")");
}else{
$("#new_dsh").hide();
}
}
}
});
}
// 每隔6秒执行一次
setInterval(() => {
dshtishi();
}, 6000);
</script>
<script src="{STATIC__PATH}/admin/echarts.min.js"></script>
</body>
......
......@@ -73,7 +73,7 @@
elem: '#payment',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
// css: 'td .layui-table-cell{height:80px;line-height:80px;padding:0 5px;}',
cols: [[
......
......@@ -3,7 +3,7 @@
<style>
#projectcategoryTreeBar{padding:10px 15px;border:1px solid #e6e6e6;background-color:#f2f2f2}
#projectcategoryTree{border:1px solid #e6e6e6;border-top:none;padding:10px 5px;overflow:auto;height:-webkit-calc(100vh - 290px);height:-moz-calc(100vh - 290px);height:calc(100vh - 290px)}
#projectcategoryTree{border:1px solid #e6e6e6;border-top:none;padding:10px 5px;overflow:auto;height:-webkit-calc(100vh - 205px);height:-moz-calc(100vh - 205px);height:calc(100vh - 205px)}
.layui-tree-entry .layui-tree-txt{padding:0 5px;border:1px transparent solid;text-decoration:none!important}
.layui-tree-entry.organ-tree-click .layui-tree-txt{background-color:#fff3e0;border:1px #ffe6b0 solid}
.files_itemwproject{width:30px;height:30px;line-height:30px;cursor:pointer;padding:1px;background:#fff;display:-webkit-box;-moz-box-align:center;-webkit-box-align:center;-moz-box-pack:center;-webkit-box-pack:center;}
......@@ -158,7 +158,7 @@
elem: '#project',
page: true,
limit:{$limit},
height: 'full-341',
height: 'full-258',
url: app_root+"index?&do=json",
// css: 'td .layui-table-cell{height:80px;line-height:80px;padding:0 5px;}',
where:{sh_status:sh_status},
......@@ -217,7 +217,7 @@
layer.open({
type: 2, // page 层类型
area: ['500px', '300px'],
title: "课程推荐",
title: "项目推荐",
shade: 0.6, // 遮罩透明度
shadeClose: true, // 点击遮罩区域,关闭弹层
btn: ['确定', '关闭'],
......
......@@ -46,8 +46,11 @@
<script type="text/html" id="businessdemo">
<div class="layui-clear-space">
<a class="layui-btn layui-btn-xs" lay-event="detail">详情</a>
{{# if (d.status === 0) { }}
<a class="layui-btn layui-btn-xs" lay-event="shenhei">审核</a>
{{# } }}
<!-- <a class="layui-btn layui-btn-xs" lay-event="more">-->
<!-- 更多-->
<!-- <i class="layui-icon layui-icon-down"></i>-->
......@@ -81,7 +84,7 @@
elem: '#business',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
where:{status:status},
cols: [[
......
......@@ -67,7 +67,7 @@
elem: '#mail',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
// css: 'td .layui-table-cell{height:80px;line-height:80px;padding:0 5px;}',
cols: [[
......
......@@ -47,7 +47,9 @@
<div class="layui-clear-space">
<a class="layui-btn layui-btn-xs" lay-event="detail">详情</a>
{{# if (d.status === 0) { }}
<a class="layui-btn layui-btn-xs" lay-event="shenhei">审核</a>
{{# } }}
<!-- <a class="layui-btn layui-btn-xs" lay-event="more">-->
<!-- 更多-->
<!-- <i class="layui-icon layui-icon-down"></i>-->
......@@ -86,7 +88,7 @@
elem: '#school',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
where:{status:status},
cols: [[
......
......@@ -73,7 +73,7 @@
elem: '#user',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
where:{kc:kc},
cols: [[
......
......@@ -25,7 +25,7 @@
elem: '#usermoneylog',
page: true,
limit:{$limit},
height: '450',
url: app_root+"index?&do=json",
where:{user_id:user_id},
// css: 'td .layui-table-cell{height:80px;line-height:80px;padding:0 5px;}',
......
......@@ -47,7 +47,6 @@ class Cert extends BaseController
$page = $request->param('page/d', 1);
$pageSize = $request->param('pageSize/d', 10);
$data['category_id'] = $data['category_id'] == 16 ? 0 : $data['category_id'];
$list = (new CertModel())->getCertList($data['category_id'],$page,$pageSize,$data['type'],$data['searchKeyWords'] ?? null);
return $this->returnMsg('success',1,$list);
......@@ -73,6 +72,9 @@ class Cert extends BaseController
$list['data'][] = $dd;
$list['data'][] = $dd;
$list['data'][] = $dd;
$list['data'][] = $dd;
$list['data'][] = $dd;
$list['data'][] = $dd;
return $this->returnMsg('success',1,$list);
}
......
......@@ -285,7 +285,7 @@ class Project extends BaseController
throw new \Exception('企业信用金额更新失败');
}
//增加信用金额记录
UserMoneyLog::addUserMoneyLog($request->userId, '-' . $data['yusuan'], $user['credit_money'], 3, '发布项目:【' . $data['title'] . '】', $project_id, 2);
UserMoneyLog::addUserMoneyLog($request->userId, '-' . $data['yusuan'], $user['credit_money'], 3, '发布项目:【' . $data['title'] . '】', $project_id, 1);
// 提交事务
Db::commit();
......
......@@ -77,6 +77,12 @@ class ShCourse extends BaseController
}
$parm = $request->param();
$where = ['id' => $parm['course_id'], 'user_id' => $request->userId];
if($parm['updateField'] == 'is_sell'){
$status = ShCourseModel::where($where)->value('status');
if($status != 3){
return $this->returnMsg('审核未通过不能上下架');
}
}
$result = ShCourseModel::where($where)->update([$parm['updateField'] => $parm['updateValue']]);
event('Course', ['course_id' => $parm['course_id'], 'tasktype' => 'course', 'action' => 'shcourseupdate']); //同步数据
return $this->returnMsg('操作成功', 1, $result);
......
......@@ -6,6 +6,7 @@ use app\api\middleware\Auth;
use app\api\service\UtilService;
use app\api\validate\BusinessValidate;
use app\BaseController;
use app\model\Payment;
use app\model\project\School;
use app\Request;
use think\facade\Db;
......@@ -70,4 +71,66 @@ class User extends BaseController
}
//用户订单
public function getOrderList(Request $request)
{
$page = $request->param('page/d', 1);
$pageSize = $request->param('pageSize/d', 10);
$where = ['store_user_id' => $request->userId];
// 搜索条件
$order_no = $request->param('order_no', '');
if ($order_no) {
$where['order_no'] = ['like', "%{$order_no}%"];
}
$pay_no = $request->param('pay_no', '');
if ($pay_no) {
$where['pay_no'] = ['like', "%{$pay_no}%"];
}
$keyword = $request->param('keyword', '');
$query = Payment::where($where)
// ->leftJoin('course c', "p.order_id = c.id AND p.order_type = 1")
// ->leftJoin('cert ce', "p.order_id = ce.id AND p.order_type = 2")
->field([
'order_no',
'pay_no',
'user_id',
'store_user_id',
'createtime',
'pay_channel',
'pay_method',
'order_price',
'pay_amount',
'pay_status',
'order_type',
'pay_time',
'subject'
])
->with(['getuserdata'])
->append(['pay_method_text','pay_status_text','pay_time_text']);
if ($keyword) {
$query = $query->where('p.subject', 'like', "%{$keyword}%");
}
$list = $query->order('createtime', 'desc')
->paginate([
'page' => $page,
'list_rows' => $pageSize
]);
// foreach ($list as &$item) {
// $item['order_type_text'] = $item['order_type'] == 1 ? '课程' : '证书';
// $item['pay_method_text'] = $item['pay_method'] == 1 ? '支付宝' : '微信';
// }
// unset($item);
return $this->returnMsg('success', 1, $list);
}
}
\ No newline at end of file
......@@ -76,7 +76,7 @@ class ProjectService
$user['id'],
$projectData['yusuan'],
$user['money'],
1,
0,
'项目完成奖励',
$projectData['id']
);
......
......@@ -194,6 +194,30 @@ class PhpOffice
return $tempFile;
}
/*
* 从阿里云oss文件保存到本地
*/
public static function ossdownfile($filePath,$downpath='')
{
//保存阿里云上面的地址
$filePath = str_replace(vconfig('aliyun_domain').'/', "", $filePath);
$domain = str_replace('https://' . vconfig('aliyun_bucket') . '.', "", vconfig('aliyun_domain'));
// $filePath = strstr($filePath, 'public/');
// 1. 初始化OSS客户端
$ossClient = new OssClient(vconfig('access_key_id'), vconfig('access_key_secret'), $domain);
// 2. 创建临时文件
// 或者指定临时目录:
// $tempFile = '/tmp/oss_temp_' . uniqid() . '.xlsx';
// 3. 从OSS下载文件到临时文件
$options = array(
OssClient::OSS_FILE_DOWNLOAD => $downpath
);
$ossClient->getObject(vconfig('aliyun_bucket'), $filePath, $options);
}
}
class ChunkReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter
......
......@@ -184,6 +184,11 @@ class Project extends Model
public function getFileListAttr($value, $data)
{
return get_upload_file($data['file_id_str'], 'list');
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment