作者 xwp
1 个管道 的构建 通过 耗费 10 秒

评价逻辑

  1 +<?php
  2 +
  3 +namespace app\admin\controller;
  4 +
  5 +use app\common\controller\Backend;
  6 +
  7 +/**
  8 + *
  9 + *
  10 + * @icon fa fa-circle-o
  11 + */
  12 +class CourseSignStartSet extends Backend
  13 +{
  14 +
  15 + /**
  16 + * CourseSignStartSet模型对象
  17 + * @var \app\admin\model\CourseSignStartSet
  18 + */
  19 + protected $model = null;
  20 +
  21 + public function _initialize()
  22 + {
  23 + parent::_initialize();
  24 + $this->model = new \app\admin\model\CourseSignStartSet;
  25 +
  26 + }
  27 +
  28 + /**
  29 + * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
  30 + * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
  31 + * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
  32 + */
  33 +
  34 +
  35 + /**
  36 + * 查看
  37 + */
  38 + public function index()
  39 + {
  40 + //设置过滤方法
  41 + $this->request->filter(['strip_tags']);
  42 + if ($this->request->isAjax()) {
  43 + //如果发送的来源是Selectpage,则转发到Selectpage
  44 + if ($this->request->request('keyField')) {
  45 + return $this->selectpage();
  46 + }
  47 + list($where, $sort, $order, $offset, $limit) = $this->buildparams();
  48 + $total = $this->model
  49 + ->with(['store','course'])
  50 + ->where($where)
  51 + ->order($sort, $order)
  52 + ->count();
  53 +
  54 + $list = $this->model
  55 + ->with(['store','course'])
  56 + ->where($where)
  57 + ->order($sort, $order)
  58 + ->limit($offset, $limit)
  59 + ->select();
  60 +
  61 + $list = collection($list)->toArray();
  62 + $result = array("total" => $total, "rows" => $list);
  63 +
  64 + return json($result);
  65 + }
  66 + return $this->view->fetch();
  67 + }
  68 +
  69 +}
  1 +<?php
  2 +
  3 +return [
  4 + 'Id' => 'id',
  5 + 'Course_sign_id' => '报名',
  6 + 'Course_star' => '课程评价',
  7 + 'Teacher_star' => '教师评价',
  8 + 'Service_star' => '服务评价',
  9 + 'Content' => '内容',
  10 + 'Pic' => '图片',
  11 + 'User_id' => '用户',
  12 + 'Course_id' => '课程',
  13 + 'Store_id' => '门店',
  14 + 'Create_time' => '评价时间'
  15 +];
  1 +<?php
  2 +
  3 +namespace app\admin\model;
  4 +
  5 +use think\Model;
  6 +
  7 +
  8 +class CourseSignStartSet extends Model
  9 +{
  10 +
  11 +
  12 +
  13 +
  14 +
  15 + // 表名
  16 + protected $name = 'course_sign_start_set';
  17 +
  18 + // 自动写入时间戳字段
  19 + protected $autoWriteTimestamp = false;
  20 +
  21 + // 定义时间戳字段名
  22 + protected $createTime = false;
  23 + protected $updateTime = false;
  24 + protected $deleteTime = false;
  25 +
  26 + // 追加属性
  27 + protected $append = [
  28 +
  29 + ];
  30 +
  31 +
  32 + public function course()
  33 + {
  34 + return $this->belongsTo('Course', 'course_id','id',[],'left')->setEagerlyType(1);
  35 + }
  36 +
  37 + public function store()
  38 + {
  39 + return $this->belongsTo('Store', 'store_id','id',[],'left')->setEagerlyType(1);
  40 + }
  41 +
  42 +
  43 +
  44 +
  45 +
  46 +
  47 +
  48 +
  49 +
  50 +
  51 +}
  1 +<?php
  2 +
  3 +namespace app\admin\validate;
  4 +
  5 +use think\Validate;
  6 +
  7 +class CourseSignStartSet extends Validate
  8 +{
  9 + /**
  10 + * 验证规则
  11 + */
  12 + protected $rule = [
  13 + ];
  14 + /**
  15 + * 提示消息
  16 + */
  17 + protected $message = [
  18 + ];
  19 + /**
  20 + * 验证场景
  21 + */
  22 + protected $scene = [
  23 + 'add' => [],
  24 + 'edit' => [],
  25 + ];
  26 +
  27 +}
  1 +<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  2 +
  3 + <!--<div class="form-group">
  4 + <label class="control-label col-xs-12 col-sm-2">{:__('Course_sign_id')}:</label>
  5 + <div class="col-xs-12 col-sm-8">
  6 + <input id="c-course_sign_id" data-rule="required" data-source="course/sign/index" class="form-control selectpage" name="row[course_sign_id]" type="text" value="">
  7 + </div>
  8 + </div>-->
  9 + <div class="form-group">
  10 + <label class="control-label col-xs-12 col-sm-2">{:__('Course_star')}:</label>
  11 + <div class="col-xs-12 col-sm-8">
  12 + <input id="c-course_star" class="form-control" step="0.1" name="row[course_star]" type="number">
  13 + </div>
  14 + </div>
  15 + <div class="form-group">
  16 + <label class="control-label col-xs-12 col-sm-2">{:__('Teacher_star')}:</label>
  17 + <div class="col-xs-12 col-sm-8">
  18 + <input id="c-teacher_star" class="form-control" step="0.1" name="row[teacher_star]" type="number">
  19 + </div>
  20 + </div>
  21 + <div class="form-group">
  22 + <label class="control-label col-xs-12 col-sm-2">{:__('Service_star')}:</label>
  23 + <div class="col-xs-12 col-sm-8">
  24 + <input id="c-service_star" class="form-control" step="0.1" name="row[service_star]" type="number">
  25 + </div>
  26 + </div>
  27 + <div class="form-group">
  28 + <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
  29 + <div class="col-xs-12 col-sm-8">
  30 + <input id="c-content" class="form-control" name="row[content]" type="number">
  31 + </div>
  32 + </div>
  33 + <div class="form-group">
  34 + <label class="control-label col-xs-12 col-sm-2">{:__('Pic')}:</label>
  35 + <div class="col-xs-12 col-sm-8">
  36 + <div class="input-group">
  37 + <input id="c-pic" class="form-control" size="50" name="row[pic]" type="text">
  38 + <div class="input-group-addon no-border no-padding">
  39 + <span><button type="button" id="plupload-files" class="btn btn-danger plupload" data-input-id="c-pic" data-mimetype="*" data-multiple="true" data-preview-id="p-files"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  40 + <span><button type="button" id="fachoose-files" class="btn btn-primary fachoose" data-input-id="c-pic" data-mimetype="*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
  41 + </div>
  42 + <span class="msg-box n-right" for="c-pic"></span>
  43 + </div>
  44 +
  45 + <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 -->
  46 + <ul class="row list-inline plupload-preview" id="p-files" data-template="introtpl" data-name="row[intro]"></ul>
  47 +
  48 + <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏-->
  49 +
  50 + <!--这里自定义图片预览的模板 开始-->
  51 + <script type="text/html" id="introtpl">
  52 + <li class="col-xs-3">
  53 + <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
  54 + <img src="<%=fullurl%>" class="img-responsive">
  55 + </a>
  56 + <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
  57 + </li>
  58 + </script>
  59 + <!--这里自定义图片预览的模板 结束-->
  60 + </div>
  61 + </div>
  62 + <div class="form-group">
  63 + <label class="control-label col-xs-12 col-sm-2">{:__('Course_id')}:</label>
  64 + <div class="col-xs-12 col-sm-8">
  65 + <input id="c-course_id" data-source="course/index" class="form-control selectpage" name="row[course_id]" type="text" value="">
  66 + </div>
  67 + </div>
  68 + <div class="form-group">
  69 + <label class="control-label col-xs-12 col-sm-2">{:__('Store_id')}:</label>
  70 + <div class="col-xs-12 col-sm-8">
  71 + <input id="c-store_id" data-source="store/index" class="form-control selectpage" name="row[store_id]" type="text" value="">
  72 + </div>
  73 + </div>
  74 + <div class="form-group">
  75 + <label class="control-label col-xs-12 col-sm-2">{:__('名字')}:</label>
  76 + <div class="col-xs-12 col-sm-8">
  77 + <input id="c-username" class="form-control" name="row[username]" type="text" value="">
  78 + </div>
  79 + </div>
  80 + <div class="form-group">
  81 + <label class="control-label col-xs-12 col-sm-2">{:__('头像')}:</label>
  82 + <div class="col-xs-12 col-sm-8">
  83 + <div class="input-group">
  84 + <input id="c-cover" data-rule="required" class="form-control" size="1" name="row[weChat_pic]"
  85 + type="text" value="">
  86 + <div class="input-group-addon no-border no-padding">
  87 + <span><button type="button" id="plupload-files-cover" class="btn btn-danger plupload"
  88 + data-input-id="c-cover" data-mimetype="*" data-multiple="false"
  89 + data-preview-id="p-files-cover"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  90 + <span><button type="button" id="fachoose-files-cover" class="btn btn-primary fachoose"
  91 + data-input-id="c-cover" data-mimetype="*" data-multiple="false"><i
  92 + class="fa fa-list"></i> {:__('Choose')}</button></span>
  93 + </div>
  94 + <span class="msg-box n-right" for="c-cover"></span>
  95 + </div>
  96 +
  97 + <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 -->
  98 + <ul class="row list-inline plupload-preview" id="p-files-cover" data-template="introtpl-cover"
  99 + data-name="row[intro]"></ul>
  100 +
  101 + <!--这里自定义图片预览的模板 开始-->
  102 + <script type="text/html" id="introtpl-cover">
  103 + <li class="col-xs-3">
  104 + <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
  105 + <img src="<%=fullurl%>" class="img-responsive">
  106 + </a>
  107 + <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
  108 + </li>
  109 + </script>
  110 + <!--这里自定义图片预览的模板 结束-->
  111 + </div>
  112 + </div>
  113 +
  114 + <div class="form-group">
  115 + <label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label>
  116 + <div class="col-xs-12 col-sm-8">
  117 + <input id="c-create_time" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{:date('Y-m-d H:i:s')}">
  118 + </div>
  119 + </div>
  120 + <div class="form-group layer-footer">
  121 + <label class="control-label col-xs-12 col-sm-2"></label>
  122 + <div class="col-xs-12 col-sm-8">
  123 + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
  124 + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
  125 + </div>
  126 + </div>
  127 +</form>
  1 +<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  2 +
  3 + <div class="form-group">
  4 + <label class="control-label col-xs-12 col-sm-2">{:__('Course_star')}:</label>
  5 + <div class="col-xs-12 col-sm-8">
  6 + <input id="c-course_star" data-rule="required" class="form-control" step="0.1" name="row[course_star]" type="number" value="{$row.course_star|htmlentities}">
  7 + </div>
  8 + </div>
  9 + <div class="form-group">
  10 + <label class="control-label col-xs-12 col-sm-2">{:__('Teacher_star')}:</label>
  11 + <div class="col-xs-12 col-sm-8">
  12 + <input id="c-teacher_star" data-rule="required" class="form-control" step="0.1" name="row[teacher_star]" type="number" value="{$row.teacher_star|htmlentities}">
  13 + </div>
  14 + </div>
  15 + <div class="form-group">
  16 + <label class="control-label col-xs-12 col-sm-2">{:__('Service_star')}:</label>
  17 + <div class="col-xs-12 col-sm-8">
  18 + <input id="c-service_star" data-rule="required" class="form-control" step="0.1" name="row[service_star]" type="number" value="{$row.service_star|htmlentities}">
  19 + </div>
  20 + </div>
  21 + <div class="form-group">
  22 + <label class="control-label col-xs-12 col-sm-2">{:__('Content')}:</label>
  23 + <div class="col-xs-12 col-sm-8">
  24 + <input id="c-content" data-rule="required" class="form-control" name="row[content]" type="number" value="{$row.content|htmlentities}">
  25 + </div>
  26 + </div>
  27 +
  28 + <div class="form-group">
  29 + <label class="control-label col-xs-12 col-sm-2">{:__('Pic')}:</label>
  30 + <div class="col-xs-12 col-sm-8">
  31 + <div class="input-group">
  32 + <input id="c-pic" class="form-control" size="50" name="row[pic]" type="text" value="{$row.pic|htmlentities}">
  33 + <div class="input-group-addon no-border no-padding">
  34 + <span><button type="button" id="plupload-files" class="btn btn-danger plupload" data-input-id="c-pic" data-mimetype="*" data-multiple="true" data-preview-id="p-files"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  35 + <span><button type="button" id="fachoose-files" class="btn btn-primary fachoose" data-input-id="c-pic" data-mimetype="*" data-multiple="true"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
  36 + </div>
  37 + <span class="msg-box n-right" for="c-pic"></span>
  38 + </div>
  39 +
  40 + <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 -->
  41 + <ul class="row list-inline plupload-preview" id="p-files" data-template="introtpl" data-name="row[intro]"></ul>
  42 +
  43 + <!--请注意 ul和textarea间不能存在其它任何元素,实际开发中textarea应该添加个hidden进行隐藏-->
  44 +
  45 + <!--这里自定义图片预览的模板 开始-->
  46 + <script type="text/html" id="introtpl">
  47 + <li class="col-xs-3">
  48 + <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
  49 + <img src="<%=fullurl%>" class="img-responsive">
  50 + </a>
  51 + <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
  52 + </li>
  53 + </script>
  54 + <!--这里自定义图片预览的模板 结束-->
  55 + </div>
  56 + </div>
  57 + <div class="form-group">
  58 + <label class="control-label col-xs-12 col-sm-2">{:__('Course_id')}:</label>
  59 + <div class="col-xs-12 col-sm-8">
  60 + <input id="c-course_id" data-rule="required" data-source="course/index" class="form-control selectpage" name="row[course_id]" type="text" value="{$row.course_id|htmlentities}">
  61 + </div>
  62 + </div>
  63 + <div class="form-group">
  64 + <label class="control-label col-xs-12 col-sm-2">{:__('Store_id')}:</label>
  65 + <div class="col-xs-12 col-sm-8">
  66 + <input id="c-store_id" data-rule="required" data-source="store/index" class="form-control selectpage" name="row[store_id]" type="text" value="{$row.store_id|htmlentities}">
  67 + </div>
  68 + </div>
  69 + <div class="form-group">
  70 + <label class="control-label col-xs-12 col-sm-2">{:__('名字')}:</label>
  71 + <div class="col-xs-12 col-sm-8">
  72 + <input id="c-username" class="form-control" name="row[username]" type="text" value="{$row.username|htmlentities}">
  73 + </div>
  74 + </div>
  75 + <div class="form-group">
  76 + <label class="control-label col-xs-12 col-sm-2">{:__('头像')}:</label>
  77 + <div class="col-xs-12 col-sm-8">
  78 + <div class="input-group">
  79 + <input id="c-cover" data-rule="required" class="form-control" size="1" name="row[weChat_pic]" type="text" value="{$row.weChat_pic|htmlentities}">
  80 + <div class="input-group-addon no-border no-padding">
  81 + <span><button type="button" id="plupload-files-cover" class="btn btn-danger plupload"
  82 + data-input-id="c-cover" data-mimetype="*" data-multiple="false"
  83 + data-preview-id="p-files-cover"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  84 + <span><button type="button" id="fachoose-files-cover" class="btn btn-primary fachoose"
  85 + data-input-id="c-cover" data-mimetype="*" data-multiple="false"><i
  86 + class="fa fa-list"></i> {:__('Choose')}</button></span>
  87 + </div>
  88 + <span class="msg-box n-right" for="c-cover"></span>
  89 + </div>
  90 +
  91 + <!--ul需要添加 data-template和data-name属性,并一一对应且唯一 -->
  92 + <ul class="row list-inline plupload-preview" id="p-files-cover" data-template="introtpl-cover"
  93 + data-name="row[intro]"></ul>
  94 +
  95 + <!--这里自定义图片预览的模板 开始-->
  96 + <script type="text/html" id="introtpl-cover">
  97 + <li class="col-xs-3">
  98 + <a href="<%=fullurl%>" data-url="<%=url%>" target="_blank" class="thumbnail">
  99 + <img src="<%=fullurl%>" class="img-responsive">
  100 + </a>
  101 + <a href="javascript:;" class="btn btn-danger btn-xs btn-trash"><i class="fa fa-trash"></i></a>
  102 + </li>
  103 + </script>
  104 + <!--这里自定义图片预览的模板 结束-->
  105 + </div>
  106 + </div>
  107 + <div class="form-group">
  108 + <label class="control-label col-xs-12 col-sm-2">{:__('Create_time')}:</label>
  109 + <div class="col-xs-12 col-sm-8">
  110 + <input id="c-create_time" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[create_time]" type="text" value="{$row.create_time}">
  111 + </div>
  112 + </div>
  113 + <div class="form-group layer-footer">
  114 + <label class="control-label col-xs-12 col-sm-2"></label>
  115 + <div class="col-xs-12 col-sm-8">
  116 + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
  117 + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
  118 + </div>
  119 + </div>
  120 +</form>
  1 +<div class="panel panel-default panel-intro">
  2 + {:build_heading()}
  3 +
  4 + <div class="panel-body">
  5 + <div id="myTabContent" class="tab-content">
  6 + <div class="tab-pane fade active in" id="one">
  7 + <div class="widget-body no-padding">
  8 + <div id="toolbar" class="toolbar">
  9 + <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
  10 + <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('course_sign_start_set/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
  11 + <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('course_sign_start_set/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
  12 + <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('course_sign_start_set/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
  13 + <!-- <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('course_sign_start_set/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a>
  14 +
  15 + <div class="dropdown btn-group {:$auth->check('course_sign_start_set/multi')?'':'hide'}">
  16 + <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>
  17 + <ul class="dropdown-menu text-left" role="menu">
  18 + <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>
  19 + <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>
  20 + </ul>
  21 + </div>-->
  22 +
  23 +
  24 + </div>
  25 + <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
  26 + data-operate-edit="{:$auth->check('course_sign_start_set/edit')}"
  27 + data-operate-del="{:$auth->check('course_sign_start_set/del')}"
  28 + width="100%">
  29 + </table>
  30 + </div>
  31 + </div>
  32 +
  33 + </div>
  34 + </div>
  35 +</div>
@@ -305,14 +305,36 @@ class Course extends Api @@ -305,14 +305,36 @@ class Course extends Api
305 305
306 //查询评价 306 //查询评价
307 $star = new \app\admin\model\CourseSignStart(); 307 $star = new \app\admin\model\CourseSignStart();
308 - $star = $star->where(['course_id'=>$id])->order('create_time','desc')->select();  
309 - foreach ($star as &$k){ 308 + $star1 = $star->with('user')->where(['course_id'=>$id])->order('create_time','desc')->select();
  309 + foreach ($star1 as &$k){
310 $banner = explode(",", $k['pic']); 310 $banner = explode(",", $k['pic']);
311 foreach ($banner as &$v){ 311 foreach ($banner as &$v){
312 $v = cdnurl($v,true); 312 $v = cdnurl($v,true);
313 } 313 }
314 $k['pic'] = $banner; 314 $k['pic'] = $banner;
  315 + $k['username'] = $k['user']['username'];
  316 + $k['weChat_pic'] = isset($k['user']['weChat_pic'])?cdnurl($k['user']['weChat_pic'],true):'';
315 } 317 }
  318 + unset($k);
  319 + //查询评价
  320 + $star = new \app\admin\model\CourseSignStartSet();
  321 + $star2 = $star->where(['course_id'=>$id])->order('create_time','desc')->select();
  322 + foreach ($star2 as &$kk){
  323 + $banner = explode(",", $kk['pic']);
  324 + foreach ($banner as &$vv){
  325 + $vv = cdnurl($vv,true);
  326 + }
  327 + $kk['pic'] = $banner;
  328 + $kk['weChat_pic'] = cdnurl($kk['weChat_pic'],true);
  329 + }
  330 + unset($kk);
  331 +
  332 + $star = $star1+$star2;
  333 +
  334 + foreach ($star as $key => $row) {
  335 + $create_time[$key] = $row['create_time'];
  336 + }
  337 + array_multisort($create_time, SORT_DESC, $star);
316 338
317 $course['star'] = $star; 339 $course['star'] = $star;
318 340
@@ -581,7 +603,7 @@ class Course extends Api @@ -581,7 +603,7 @@ class Course extends Api
581 } 603 }
582 604
583 $course = new \app\admin\model\CourseSignStart(); 605 $course = new \app\admin\model\CourseSignStart();
584 - $course = $course->where(['course_sign_id'=>$id])->select(); 606 + $course = $course->with('user')->where(['course_sign_id'=>$id])->select();
585 607
586 foreach ($course as &$k){ 608 foreach ($course as &$k){
587 $banner = explode(",", $k['pic']); 609 $banner = explode(",", $k['pic']);
@@ -589,7 +611,10 @@ class Course extends Api @@ -589,7 +611,10 @@ class Course extends Api
589 $v = cdnurl($v,true); 611 $v = cdnurl($v,true);
590 } 612 }
591 $k['pic'] = $banner; 613 $k['pic'] = $banner;
  614 + $k['username'] = $k['user']['username'];
  615 + $k['weChat_pic'] = isset($k['user']['weChat_pic'])?cdnurl($k['user']['weChat_pic'],true):'';
592 } 616 }
  617 + unset($k);
593 618
594 $this->success('请求成功',$course); 619 $this->success('请求成功',$course);
595 } 620 }
@@ -427,6 +427,7 @@ class User extends Api @@ -427,6 +427,7 @@ class User extends Api
427 $address = $this->request->request('address'); 427 $address = $this->request->request('address');
428 $is_default = $this->request->request('is_default'); 428 $is_default = $this->request->request('is_default');
429 $code = $this->request->request('code'); 429 $code = $this->request->request('code');
  430 + $weChat_pic = $this->request->request('weChat_pic');
430 431
431 if (!$user_id) { 432 if (!$user_id) {
432 $this->error(__('Invalid parameters')); 433 $this->error(__('Invalid parameters'));
@@ -467,6 +468,7 @@ class User extends Api @@ -467,6 +468,7 @@ class User extends Api
467 $data['birthday'] = $birthday; 468 $data['birthday'] = $birthday;
468 $data['area'] = $area; 469 $data['area'] = $area;
469 $data['address'] = $address; 470 $data['address'] = $address;
  471 + $data['weChat_pic'] = $weChat_pic;
470 $data['is_default'] = $is_default; 472 $data['is_default'] = $is_default;
471 $user->save($data,['id'=>$user_id]); 473 $user->save($data,['id'=>$user_id]);
472 474
  1 +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
  2 +
  3 + var Controller = {
  4 + index: function () {
  5 + // 初始化表格参数配置
  6 + Table.api.init({
  7 + extend: {
  8 + index_url: 'course_sign_start_set/index' + location.search,
  9 + add_url: 'course_sign_start_set/add',
  10 + edit_url: 'course_sign_start_set/edit',
  11 + del_url: 'course_sign_start_set/del',
  12 + multi_url: 'course_sign_start_set/multi',
  13 + table: 'course_sign_start_set',
  14 + }
  15 + });
  16 +
  17 + var table = $("#table");
  18 +
  19 + // 初始化表格
  20 + table.bootstrapTable({
  21 + url: $.fn.bootstrapTable.defaults.extend.index_url,
  22 + pk: 'id',
  23 + sortName: 'id',
  24 + columns: [
  25 + [
  26 + {checkbox: true},
  27 + {field: 'id', title: __('Id')},
  28 + /* {field: 'course_sign_id', title: __('Course_sign_id')},*/
  29 + {field: 'course_star', title: __('Course_star'), operate:'BETWEEN'},
  30 + {field: 'teacher_star', title: __('Teacher_star'), operate:'BETWEEN'},
  31 + {field: 'service_star', title: __('Service_star'), operate:'BETWEEN'},
  32 + {field: 'content', title: __('Content')},
  33 + {field: 'pic', title: __('Pic'), formatter: function (value) {
  34 + var arr = value.split(',');
  35 + var html = '';
  36 + for(var i = 0; i < arr.length; i++) {
  37 + html += '<a href="javascript:"><img class="img-sm img-center" src="'+Fast.api.cdnurl(arr[i])+'"></a>'
  38 + }
  39 + return html;
  40 + },events: Table.api.events.image},
  41 + {field: 'username', title: __('名字')},
  42 + {field: 'weChat_pic', title: __('头像'), formatter: function (value) {
  43 + var arr = value.split(',');
  44 + var html = '';
  45 + for(var i = 0; i < arr.length; i++) {
  46 + html += '<a href="javascript:"><img class="img-sm img-center" src="'+Fast.api.cdnurl(arr[i])+'"></a>'
  47 + }
  48 + return html;
  49 + },events: Table.api.events.image},
  50 + {field: 'course.name', title: __('Course_id')},
  51 + {field: 'store.name', title: __('Store_id')},
  52 + {field: 'create_time', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange'},
  53 + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
  54 + ]
  55 + ]
  56 + });
  57 +
  58 + // 为表格绑定事件
  59 + Table.api.bindevent(table);
  60 + },
  61 + add: function () {
  62 + Controller.api.bindevent();
  63 + },
  64 + edit: function () {
  65 + Controller.api.bindevent();
  66 + },
  67 + api: {
  68 + bindevent: function () {
  69 + Form.api.bindevent($("form[role=form]"));
  70 + }
  71 + }
  72 + };
  73 + return Controller;
  74 +});