Commit bb0dd94a authored by wangtao's avatar wangtao

业务板块api接口

parent beae8456
......@@ -110,7 +110,7 @@ class Course extends AdminBase
$result = $this->course->where('id', $post['id'])->update($updatedata);
if ($result) {
if ($post['shstatus'] == 1) {
event('Course', ['id' => $post['id'], 'tasktype' => 'course', 'action' => 'shstatus']);
event('Course', ['course_id' => $post['id'], 'tasktype' => 'course', 'action' => 'shstatus']);
}
return $this->returnMsg("操作成功", 1);
} else {
......
......@@ -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 - 260px);height:-moz-calc(100vh - 260px);height:calc(100vh - 260px)}
#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)}
.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;}
......@@ -40,7 +40,6 @@
</form>
</div>
<div class="layui-card-body">
<table lay-filter="cert" id="cert"></table>
</div>
......
......@@ -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 - 260px);height:-moz-calc(100vh - 260px);height:calc(100vh - 260px)}
#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)}
.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;}
......@@ -39,20 +39,11 @@
</form>
</div>
<div class="layui-card-body">
<!-- <div class="layui-card-box">-->
<!-- <div class="layui-btn-group">-->
<!-- <a class="layui-btn" id="course-add" ><i class="layui-icon layui-icon-add-circle"></i> 添加</a>-->
<!-- <a class="layui-btn" id="course-del"><i class="layui-icon layui-icon-delete"></i> 删除</a>-->
<!-- </div>-->
<!-- </div>-->
<div class="layui-card-body">
<table lay-filter="course" id="course"></table>
</div>
</div>
</div>
</div>
</div>
</div>
<script type="text/html" id="toolDemo">
......
......@@ -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 - 260px);height:-moz-calc(100vh - 260px);height:calc(100vh - 260px)}
#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)}
.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;}
......
<?php
namespace app\api\controller\manage;
use app\api\middleware\Auth;
use app\api\validate\CourseTagValidate;
use app\BaseController;
use app\Request;
use app\model\CourseTag as CourseTagModel;
class CourseTag extends BaseController
{
protected $middleware = [
Auth::class,
];
//添加标签
public function createCourseTag(Request $request)
{
$vo = (new CourseTagValidate())->goCheck();
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$parm['createtime'] = time();
$parm['user_id'] = $request->userId;
$result = CourseTagModel::create($parm);
return $this->returnMsg('操作成功', 1, $result);
}
//标签列表
public function CourseTagList(Request $request)
{
$where = ['is_del' => 0, 'user_id' => $request->userId];
$list = CourseTagModel::where($where)
->order('createtime desc')
->select()->toArray();
return $this->returnMsg('success', 1, $list);
}
}
\ No newline at end of file
<?php
namespace app\api\controller\manage;
use app\api\middleware\Auth;
use app\api\validate\CourseTeacherValidate;
use app\BaseController;
use app\Request;
use app\model\CourseTeacher as CourseTeacherModel;
class CourseTeacher extends BaseController
{
protected $middleware = [
Auth::class,
];
//添加讲师
public function createCourseTeacher(Request $request)
{
$vo = (new CourseTeacherValidate())->goCheck(['nickname', 'mobile', 'idcard']);
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$parm['createtime'] = time();
$parm['user_id'] = $request->userId;
$result = CourseTeacherModel::create($parm);
return $this->returnMsg('操作成功', 1, $result);
}
//编辑讲师
public function editCourseTeacher(Request $request)
{
$vo = (new CourseTeacherValidate())->goCheck(['teacher_id']);
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$updatedata = $parm;
unset($updatedata['teacher_id']);
$result = CourseTeacherModel::where(['user_id' => $request->userId, 'id' => $parm['teacher_id']])->update($updatedata);
return $this->returnMsg('操作成功', 1, $result);
}
//删除讲师
public function deleteCourseTeacher(Request $request)
{
$vo = (new CourseTeacherValidate())->goCheck(['teacher_id']);
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$where = ['id' => $parm['teacher_id'], 'user_id' => $request->userId];
$result = CourseTeacherModel::where($where)->update(['is_del' => 1]);
return $this->returnMsg('操作成功', 1, $result);
}
//讲师列表
public function CourseTeacherList(Request $request)
{
$parm = $request->param();
$map = [];
if(isset($parm['searchnickname']) && $parm['searchnickname']){
$map[] = ['nickname', 'like', '%' . $parm['searchnickname'] . '%'];
}
$page = $request->param('page', 1);
$pageSize = $request->param('pageSize', 10);
$where = ['is_del' => 0, 'user_id' => $request->userId];
$list = CourseTeacherModel::where($where)->where($map)
->order('createtime desc')
->append(['thumbpath'])
->paginate([
'page' => $page,
'list_rows' => $pageSize
]);
return $this->returnMsg('success', 1, $list);
}
}
\ No newline at end of file
......@@ -3,6 +3,8 @@
namespace app\api\controller\manage;
use app\api\middleware\Auth;
use app\api\service\UtilService;
use app\api\validate\ShCourseValidate;
use app\BaseController;
use app\model\ShCourse as ShCourseModel;
use app\Request;
......@@ -29,12 +31,20 @@ class ShCourse extends BaseController
if (isset($parm['cate_id']) && $parm['cate_id']) {
$map[] = ['cate_id', '=', $parm['cate_id']];
}
if (isset($parm['start_time']) && $parm['start_time'] && isset($parm['end_time']) && $parm['end_time']) {
$start_time = strtotime($parm['start_time']);
$end_time = strtotime($parm['end_time']);
$map[] = ['createtime', '>=', $start_time];
$map[] = ['createtime', '<=', $end_time];
}
$page = $request->param('page', 1);
$pageSize = $request->param('pageSize', 10);
$list = ShCourseModel::where($where)->where($map)
->field('id,title,createtime,thumb,tag_ids,price,status,is_sell,is_del,tvclick,click,cate_id,teacher_id')
->order('createtime desc')
->append(['thumbpath','cate_name','tag_title','teacher_name','status_text'])
->append(['thumbpath', 'cate_name', 'tag_title', 'teacher_name', 'status_text'])
->paginate([
'page' => $page,
'list_rows' => $pageSize
......@@ -42,6 +52,68 @@ class ShCourse extends BaseController
return $this->returnMsg('success', 1, $list);
}
//修改课程属性
public function updatecourseinfo(Request $request)
{
$vo = (new ShCourseValidate())->goCheck(['course_id', 'updateField', 'updateValue']);
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$where = ['id' => $parm['course_id'], 'user_id' => $request->userId];
$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);
}
//删除课程
public function coursedelete(Request $request)
{
$vo = (new ShCourseValidate())->goCheck(['course_id']);
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$where = ['id' => $parm['course_id'], 'user_id' => $request->userId];
$result = ShCourseModel::where($where)->update(['is_del' => 1]);
event('Course', ['course_id' => $parm['course_id'], 'tasktype' => 'course', 'action' => 'shcourseupdate']); //同步数据
return $this->returnMsg('操作成功', 1, $result);
}
//添加课程
public function createShCourse(Request $request)
{
$vo = (new ShCourseValidate())->goCheck(['title', 'cate_id', 'thumb', 'teacher_id', 'thumb', 'detailthumb', 'content']);
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$parm['sn'] = UtilService::generateOrderNo($request->userId, 'K');
$parm['createtime'] = time();
$parm['user_id'] = $request->userId;
$result = ShCourseModel::create($parm);
return $this->returnMsg('操作成功', 1, $result);
}
//修改课程
public function editShCourse(Request $request)
{
$vo = (new ShCourseValidate())->goCheck(['course_id', 'title', 'cate_id', 'thumb', 'teacher_id', 'thumb', 'detailthumb', 'content']);
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$udpatedata = $parm;
unset($udpatedata['course_id']);
$udpatedata['updatetime'] = time();
$udpatedata['status'] = 0; //修改为待提交
$result = ShCourseModel::where(['user_id' => $request->userId, 'id' => $parm['course_id']])->update($udpatedata);
return $this->returnMsg('操作成功', 1, $result);
}
}
\ No newline at end of file
<?php
namespace app\api\controller\manage;
use app\api\middleware\Auth;
use app\api\validate\ShCourseClassValidate;
use app\BaseController;
use app\Request;
use app\model\ShCourseClass as ShCourseClassModel;
class ShCourseClass extends BaseController
{
protected $middleware = [
Auth::class,
];
//添加课时
public function createCourseClass(Request $request)
{
$vo = (new ShCourseClassValidate())->goCheck(['cate_id', 'course_id', 'title', 'tv_file', 'tvtime']);
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$parm['createtime'] = time();
$parm['user_id'] = $request->userId;
$result = ShCourseClassModel::create($parm);
return $this->returnMsg('操作成功', 1, $result);
}
//编辑课时
public function editCourseClass(Request $request)
{
$vo = (new ShCourseClassValidate())->goCheck(['cate_id', 'course_id', 'title', 'tv_file', 'tvtime', 'course_class_id']);
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$updatedata = $parm;
unset($updatedata['course_class_id']);
$result = ShCourseClassModel::where(['user_id' => $request->userId, 'id' => $parm['course_class_id']])->update($updatedata);
return $this->returnMsg('操作成功', 1, $result);
}
//删除课时
public function deleteCourseClass(Request $request)
{
$vo = (new ShCourseClassValidate())->goCheck(['course_class_id']);
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$where = ['id' => $parm['course_class_id'], 'user_id' => $request->userId];
$result = ShCourseClassModel::where($where)->update(['is_del' => 1]);
$course_id = ShCourseClassModel::where(['id' => $parm['course_class_id']])->value('course_id');
event('Course', ['course_id' => $course_id, 'tasktype' => 'course', 'action' => 'shcourseupdate']); //同步数据
return $this->returnMsg('操作成功', 1, $result);
}
//课时列表
public function CourseClassList(Request $request)
{
$parm = $request->param();
$map = [];
if (isset($parm['searchkey']) && $parm['searchkey']) {
$map[] = ['title', 'like', '%' . $parm['searchkey'] . '%'];
}
if (isset($parm['is_sell']) && $parm['is_sell']) {
$map[] = ['is_sell', '=', $parm['is_sell']];
}
$page = $request->param('page', 1);
$pageSize = $request->param('pageSize', 10);
$where = ['is_del' => 0, 'user_id' => $request->userId];
$list = ShCourseClassModel::where($where)->where($map)
->order('createtime desc')
->append(['thumbpath'])
->paginate([
'page' => $page,
'list_rows' => $pageSize
]);
return $this->returnMsg('success', 1, $list);
}
//修改课程属性
public function updatecourseclassinfo(Request $request)
{
$vo = (new ShCourseClassValidate())->goCheck(['course_class_id', 'updateField', 'updateValue']);
if ($vo !== true) {
return $vo;
}
$parm = $request->param();
$where = ['id' => $parm['course_class_id'], 'user_id' => $request->userId];
$result = ShCourseClassModel::where($where)->update([$parm['updateField'] => $parm['updateValue']]);
$course_id = ShCourseClassModel::where(['id' => $parm['course_class_id']])->value('course_id');
event('Course', ['course_id' => $course_id, 'tasktype' => 'course', 'action' => 'shcourseupdate']); //同步数据
return $this->returnMsg('操作成功', 1, $result);
}
}
\ No newline at end of file
<?php
namespace app\api\validate;
use app\model\CourseTag;
use app\Request;
use think\Validate;
class CourseTagValidate extends BaseValidate
{
protected $rule = [
'title' => 'require|checktitle'
];
protected $message = [
'title.require' => '标签名不能为空',
'title.checktitle' => '标签名重复',
];
protected function checktitle($value, $rule, $data=[])
{
$uesrid = request()->userId;
$result = CourseTag::where(['title' => $value, 'user_id' => $uesrid,'is_del'=>0])->count();
if ($result) return false;
return true;
}
}
\ No newline at end of file
<?php
namespace app\api\validate;
use think\Validate;
class CourseTeacherValidate extends BaseValidate
{
protected $rule = [
'nickname' => 'require',
'mobile' => 'mobile',
'idcard' => 'idCard',
'teacher_id' => 'require',
];
protected $message = [
'nickname.require' => '讲师姓名不能为空',
'teacher_id.require' => 'id不能为空',
'mobile.mobile' => '手机号格式错误',
'idcard.idCard' => '身份证格式错误',
];
}
\ No newline at end of file
<?php
namespace app\api\validate;
use think\Validate;
class ShCourseClassValidate extends BaseValidate
{
protected $rule = [
'cate_id' => 'require',
'course_id' => 'require',
'title' => 'require',
'tv_file' => 'require',
'tvtime' => 'require',
'course_class_id' => 'require',
'updateField' => 'require|in:sort,is_sell',
'updateValue' => 'require',
];
protected $message = [
'cate_id.require' => '请选择章节',
'course_id.require' => '请选择课程',
'title.require' => '课时名称不能为空',
'tv_file.require' => '请上传视频',
'tvtime.require' => '视频长度不能为空',
'course_class_id.require' => '课时ID不能为空',
'updateField.require' => '必填项不能为空',
'updateValue.require' => '必填项不能为空',
'updateField.in' => '范围不合法',
];
}
\ No newline at end of file
<?php
namespace app\api\validate;
use think\Validate;
class ShCourseValidate extends BaseValidate
{
protected $rule = [
'course_id' => 'require',
'updateField' => 'require|in:status,is_sell',
'updateValue' => 'require',
'title' => 'require',
'cate_id' => 'require',
'teacher_id' => 'require',
'thumb' => 'require',
'detailthumb' => 'require',
'content' => 'require',
];
protected $message = [
'course_id.require' => '课程id不能为空',
'updateField.require' => '必填项不能为空',
'updateValue.require' => '必填项不能为空',
'updateField.in' => '范围不合法',
'title.require' => '课程名称不能为空',
'cate_id.require' => '课程分类不能为空',
'teacher_id.require' => '讲师不能为空',
'thumb.require' => '封面图不能为空',
'detailthumb.require' => '课程详情图不能为空',
'content.require' => '课程内容不能为空',
];
}
\ No newline at end of file
......@@ -2,6 +2,14 @@
namespace app\job;
use app\model\Course as CourseModel;
use app\model\CourseClass;
use app\model\CourseClassCategory;
use app\model\CourseWork;
use app\model\ShCourse;
use app\model\ShCourseClass;
use app\model\ShCourseClassCategory;
use app\model\ShCourseWork;
use think\facade\Log;
use think\queue\Job;
use think\facade\Db;
......@@ -50,8 +58,73 @@ class Jobtask
}
//同步课程
public function synccourse($data)
{
if ($data['action'] == 'shstatus') {
//更新课程
$courseinfo = ShCourse::where('id', $data['course_id'])->find();
$is_cz = CourseModel::where('id', $data['course_id'])->count();
if ($is_cz > 0) {
unset($courseinfo['click']);
unset($courseinfo['tvclick']);
CourseModel::update($courseinfo);
} else {
CourseModel::create($courseinfo); //添加课程
}
//处理课时
$course_class_list = ShCourseClass::where('course_id', $data['course_id'])->select()->toArray();
if ($course_class_list) {
// CourseClass::where('course_id', $data['course_id'])->delete(); //删除课时
CourseClass::saveAll($course_class_list); //添加课时
}
//处理章节
$course_class_category = ShCourseClassCategory::where('course_id', $data['course_id'])->select()->toArray();
if ($course_class_category) {
// CourseClassCategory::where('course_id', $data['course_id'])->delete(); //删除章节
CourseClassCategory::saveAll($course_class_category); //添加章节
}
//处理作业
$course_work = ShCourseWork::where('course_id', $data['course_id'])->select()->toArray();
if ($course_work) {
// CourseWork::where('course_id', $data['course_id'])->delete(); //删除作业
CourseWork::saveAll($course_work); //添加作业
}
} elseif ($data['action'] == 'shcourseupdate') {
//更新状态数据 删除,上下架
$courseinfo = ShCourse::field('id,is_sell,is_del')->where('id', $data['course_id'])->find();
CourseModel::update($courseinfo);
//处理课时
$course_class_list = ShCourseClass::field('id,is_del,is_sell')->where('course_id', $data['course_id'])->select()->toArray();
CourseClass::saveAll($course_class_list);
//处理章节
$course_class_category = ShCourseClassCategory::field('id,is_del')->where('course_id', $data['course_id'])->select()->toArray();
CourseClassCategory::saveAll($course_class_category);
//处理作业
$course_work = ShCourseWork::field('id,is_del')->where('course_id', $data['course_id'])->select()->toArray();
CourseWork::saveAll($course_work);
} elseif ($data['action'] == 'courseupdateclick') {
//更新销量阅读量
$courseinfo = CourseModel::field('id,click,tvclick')->where('id', $data['course_id'])->find();
ShCourse::update($courseinfo);
}
}
//同步课程
public function synccourse11111111111111($data)
{
if ($data['action'] == 'shstatus') {
......
......@@ -14,10 +14,18 @@ use think\facade\Db;
use think\Model;
/**
* 模型公用类
* 讲师模型
*/
class CourseTeacher extends Model
{
public function getThumbpathAttr($value, $data)
{
return get_upload_file($data['thumb_id']);
}
public function getCreatetimeAttr($value, $data)
{
return date('Y-m-d H:i:s', $data['createtime']);
}
}
\ No newline at end of file
......@@ -50,7 +50,7 @@ class ShCourse extends Model
public function getTagTitleAttr($value, $data)
{
return implode(',', CourseTag::where('id', $data['tag_ids'])->column('title'));
return implode(',', CourseTag::where('id', 'in', $data['tag_ids'])->column('title'));
}
public function getStatusTextAttr($value, $data)
......
<?php
namespace app\subscribe;
use app\job\Jobtask;
use think\Event;
use think\facade\Db;
use think\facade\Log;
use think\facade\Queue;
use app\model\ShCourse;
use app\model\ShCourseClass;
use app\model\ShCourseClassCategory;
use app\model\Course as CourseModel;
use app\model\CourseClassCategory;
use app\model\CourseClass;
use app\model\ShCourseWork;
use app\model\CourseWork;
class course
{
public function onCourse($event)
{
Queue::push(Jobtask::class, $event); // 推送到队列的任务类及其数据参数
// $this->synccourse($event);
}
public function subscribe(Event $event)
......@@ -20,4 +33,5 @@ class course
$event->listen('Course', [__CLASS__, 'onCourse']);
}
}
\ No newline at end of file
......@@ -32,5 +32,5 @@ return [
'error_message' => '页面错误!请稍后再试~',
// 显示错误信息
'show_error_msg' => false,
'file_http_url' => 'http://192.168.4.26:8082',
'file_http_url' => 'http://192.168.4.35:8082',
];
\ 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