作者 xwp

最新逻辑

@@ -77,14 +77,15 @@ class CourseStore extends Backend @@ -77,14 +77,15 @@ class CourseStore extends Backend
77 $array['end'] = $k['date'].' '.$v['time_end']; 77 $array['end'] = $k['date'].' '.$v['time_end'];
78 $array['count'] = $params['count']; 78 $array['count'] = $params['count'];
79 $array['notify_count'] = $params['notify_count']; 79 $array['notify_count'] = $params['notify_count'];
  80 + $array['status'] = 'new';
  81 + $array['is_end'] = false;
80 $data[] = $array; 82 $data[] = $array;
81 } 83 }
82 } 84 }
83 -  
84 - $result = false;  
85 - Db::startTrans();  
86 - foreach ($data as $k){  
87 - $this->model->insert($k); 85 + if(!empty($data)){
  86 + foreach ($data as $k){
  87 + $this->model->insertGetId($k);
  88 + }
88 } 89 }
89 $this->success(); 90 $this->success();
90 }else{ 91 }else{
@@ -66,7 +66,7 @@ @@ -66,7 +66,7 @@
66 <script id="eventtpl_1" type="text/html"> 66 <script id="eventtpl_1" type="text/html">
67 <dd class="form-inline"> 67 <dd class="form-inline">
68 <ins><input type="text" name="<%=name%>[<%=index%>][time_start]" data-rule="required" class="form-control datetimepicker" data-date-format="HH:mm:ss" value="<%=row.time_start%>" placeholder="{:__('Time_start')}" size="10"/></ins> 68 <ins><input type="text" name="<%=name%>[<%=index%>][time_start]" data-rule="required" class="form-control datetimepicker" data-date-format="HH:mm:ss" value="<%=row.time_start%>" placeholder="{:__('Time_start')}" size="10"/></ins>
69 - <ins><input type="text" name="<%=name%>[<%=index%>][time_end]" data-rule="required" class="form-control datetimepicker" data-date-format="HH:mm:ss" value="<%=row.time_end%>" placeholder="{:__('Time_end')}" size="10"/></ins> 69 + <ins><input type="text" name="<%=name%>[<%=index%>][time_end]" data-rule="required match(gte, row[time][<%=index%>][time_start], time)" class="form-control datetimepicker" data-date-format="HH:mm:ss" value="<%=row.time_end%>" placeholder="{:__('Time_end')}" size="10"/></ins>
70 <!--下面的两个按钮务必保留--> 70 <!--下面的两个按钮务必保留-->
71 <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span> 71 <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span>
72 <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span> 72 <span class="btn btn-sm btn-primary btn-dragsort"><i class="fa fa-arrows"></i></span>
@@ -41,7 +41,7 @@ @@ -41,7 +41,7 @@
41 <div class="form-group"> 41 <div class="form-group">
42 <label class="control-label col-xs-12 col-sm-2">{:__('Time_end')}:</label> 42 <label class="control-label col-xs-12 col-sm-2">{:__('Time_end')}:</label>
43 <div class="col-xs-12 col-sm-8"> 43 <div class="col-xs-12 col-sm-8">
44 - <input id="c-time_end" data-rule="required match(gte, row[time_start], date)" class="form-control datetimepicker" data-date-format="HH:mm:ss" data-use-current="true" name="row[time_end]" type="text" value="{$row.time_end}"> 44 + <input id="c-time_end" data-rule="required match(gte, row[time_start], time)" class="form-control datetimepicker" data-date-format="HH:mm:ss" data-use-current="true" name="row[time_end]" type="text" value="{$row.time_end}">
45 </div> 45 </div>
46 </div> 46 </div>
47 <div class="form-group layer-footer"> 47 <div class="form-group layer-footer">
@@ -6,11 +6,13 @@ use app\common\controller\Api; @@ -6,11 +6,13 @@ use app\common\controller\Api;
6 use fast\Tree; 6 use fast\Tree;
7 use think\Config; 7 use think\Config;
8 use think\Db; 8 use think\Db;
9 -use WeMini\Template; 9 +use WeChat\Exceptions\InvalidResponseException;
  10 +use WeChat\Exceptions\LocalCacheException;
  11 +use WeMini\Newtmpl;
10 12
11 /** 13 /**
12 - * 课程接口  
13 - */ 14 +* 课程接口
  15 +*/
14 class Course extends Api 16 class Course extends Api
15 { 17 {
16 protected $noNeedLogin = ['*']; 18 protected $noNeedLogin = ['*'];
@@ -114,7 +116,11 @@ class Course extends Api @@ -114,7 +116,11 @@ class Course extends Api
114 116
115 if(!empty($date)){ 117 if(!empty($date)){
116 $courseStore = new \app\admin\model\CourseStore(); 118 $courseStore = new \app\admin\model\CourseStore();
117 - $courseStore = $courseStore->where(['date'=>$date])->select(); 119 + $where1['status'] = 'confirmed';
  120 + $where1['is_end'] = false;
  121 + $where1['end'] = ['>',date('Y-m-d H:i:s')];
  122 + $where1['date'] = $date;
  123 + $courseStore = $courseStore->where($where1)->select();
118 if(empty($courseStore)){ 124 if(empty($courseStore)){
119 $this->success('请求成功',[]); 125 $this->success('请求成功',[]);
120 } 126 }
@@ -132,6 +138,53 @@ class Course extends Api @@ -132,6 +138,53 @@ class Course extends Api
132 } 138 }
133 139
134 /** 140 /**
  141 + * 获得课程列表(日历)
  142 + *
  143 + * @ApiTitle (获得课程列表(日历))
  144 + * @ApiSummary (获得课程列表(日历))
  145 + * @ApiMethod (POST)
  146 + * @ApiParams (name="start", type="string", required=false, description="开始时间")
  147 + * @ApiParams (name="end", type="string", required=false, description="结束时间")
  148 + * @ApiReturnParams (name="code", type="integer", required=true, sample="0")
  149 + * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功")
  150 + * @ApiReturnParams (name="data", type="object", sample="{'prepay_id':'123','options':{},'order':{}}", description="扩展数据返回")
  151 + * @ApiReturn ({'code':'1','msg':'返回成功'})
  152 + */
  153 + public function get_date_list()
  154 + {
  155 + $start= $this->request->request('start');
  156 + $end = $this->request->request('end');
  157 +
  158 + if(empty($start)){
  159 + $start = date('Y-m-1',time());
  160 + }
  161 + if(empty($end)){
  162 + $end = date('Y-m-d',mktime(23,59,59,date('m'),date('t'),date('Y')));
  163 + }
  164 +
  165 + for($i = strtotime($start); $i <= strtotime($end); $i += 86400)
  166 + {
  167 + $return[date("Y-m-d",$i)] = [];
  168 + }
  169 +
  170 +
  171 + $where['status'] = 'confirmed';
  172 + $where['is_end'] = false;
  173 + $where['end'] = ['>',date('Y-m-d H:i:s')];
  174 + $where['date'] = ['between',[$start,$end]];
  175 +
  176 + $courseStore = new \app\admin\model\CourseStore();
  177 + $courseStore = $courseStore->with('course')->where($where)->select();
  178 + if(!empty($courseStore)){
  179 + foreach ($courseStore as $k){
  180 + $return[$k['date']][$k['course_id']] = $k['course'];
  181 + }
  182 + }
  183 +
  184 + $this->success('请求成功',$return);
  185 + }
  186 +
  187 + /**
135 * 获得课程 188 * 获得课程
136 * 189 *
137 * @ApiTitle (获得课程) 190 * @ApiTitle (获得课程)
@@ -139,15 +192,17 @@ class Course extends Api @@ -139,15 +192,17 @@ class Course extends Api
139 * @ApiMethod (POST) 192 * @ApiMethod (POST)
140 * @ApiParams (name="id", type="string", required=true, description="ID") 193 * @ApiParams (name="id", type="string", required=true, description="ID")
141 * @ApiParams (name="store_id", type="string", required=false, description="门店id") 194 * @ApiParams (name="store_id", type="string", required=false, description="门店id")
  195 + * @ApiParams (name="user_id", type="string", required=false, description="用户id")
142 * @ApiReturnParams (name="code", type="integer", required=true, sample="0") 196 * @ApiReturnParams (name="code", type="integer", required=true, sample="0")
143 * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") 197 * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功")
144 * @ApiReturnParams (name="data", type="object", sample="{'prepay_id':'123','options':{},'order':{}}", description="扩展数据返回") 198 * @ApiReturnParams (name="data", type="object", sample="{'prepay_id':'123','options':{},'order':{}}", description="扩展数据返回")
145 * @ApiReturn ({'code':'1','msg':'返回成功'}) 199 * @ApiReturn ({'code':'1','msg':'返回成功'})
146 */ 200 */
147 - public function ge_id() 201 + public function get_id()
148 { 202 {
149 $id = $this->request->request('id'); 203 $id = $this->request->request('id');
150 $store_id = $this->request->request('store_id'); 204 $store_id = $this->request->request('store_id');
  205 + $user_id = $this->request->request('user_id');
151 if(!$id){ 206 if(!$id){
152 $this->error(__('Invalid parameters')); 207 $this->error(__('Invalid parameters'));
153 } 208 }
@@ -160,44 +215,66 @@ class Course extends Api @@ -160,44 +215,66 @@ class Course extends Api
160 $course = $course->toArray(); 215 $course = $course->toArray();
161 $course['cover'] = cdnurl($course['cover'],true); 216 $course['cover'] = cdnurl($course['cover'],true);
162 $banner = explode(",", $course['banner']); 217 $banner = explode(",", $course['banner']);
163 - foreach ($banner as &$k){  
164 - $k = cdnurl($k,true); 218 + foreach ($banner as &$m){
  219 + $m = cdnurl($m,true);
165 } 220 }
166 $course['banner'] = $banner; 221 $course['banner'] = $banner;
167 //查询门店课程 222 //查询门店课程
168 $courseStore = new \app\admin\model\CourseStore(); 223 $courseStore = new \app\admin\model\CourseStore();
169 $where['course_id'] = $id; 224 $where['course_id'] = $id;
170 $where['status'] = 'confirmed'; 225 $where['status'] = 'confirmed';
  226 + $where['is_end'] = false;
  227 + $where['end'] = ['>',date('Y-m-d H:i:s')];
171 if(!empty($store_id)){ 228 if(!empty($store_id)){
172 $where['store_id'] = $store_id; 229 $where['store_id'] = $store_id;
173 } 230 }
174 - $courseStore = $courseStore->with('store')->where($where)->order('date','desc')->select(); 231 + $courseStore = $courseStore->where($where)->order('date','asc')->select();
175 $store = []; 232 $store = [];
176 foreach ($courseStore as $k){ 233 foreach ($courseStore as $k){
  234 + $k['enable'] = true;
  235 + if(!empty($user_id)){
  236 + $sign = new \app\admin\model\CourseSign();
  237 + $sign = $sign->where(['course_store_id'=>$k['id'],'user_id'=>$user_id])->find();
  238 + if(!empty($sign)){
  239 + $k['enable'] = false;
  240 + }
  241 + }
  242 +
177 if(!isset($store[$k['store_id']])){ 243 if(!isset($store[$k['store_id']])){
178 - $k['store']['start'] = $k['date'];  
179 - $k['store']['end'] = $k['date']; 244 + $store1 = new \app\admin\model\Store();
  245 + $store1 = $store1->where(['id'=>$k['store_id']])->find();
  246 + if(empty($store1)){
  247 + continue;
  248 + }
  249 + $store1 = $store1->toArray();
  250 + $store1['start'] = $k['start'];
  251 + $store1['end'] = $k['end'];
  252 + $store1['course'] = [];
180 $sign = new \app\admin\model\CourseSign(); 253 $sign = new \app\admin\model\CourseSign();
181 - $k['store']['sign_count'] = $sign->where(['course_id'=>$id,'store_id'=>$k['store_id'],'publish_time'=>['>',date('Y-m-d H:i:s')]])->count();  
182 - $store[$k['store_id']] = $k['store']; 254 + $k['sign_count'] = $sign->where(['course_store_id'=>$k['id']])->count();
  255 + $store[$k['store_id']] = $store1;
183 } 256 }
184 - if( $k['date'] < $store[$k['store_id']]['start']){  
185 - $store[$k['store_id']]['start'] = $k['date']; 257 + if( $k['start'] < $store[$k['store_id']]['start']){
  258 + $store[$k['store_id']]['start'] = $k['start'];
186 } 259 }
187 - if( $k['date'] > $store[$k['store_id']]['end']){  
188 - $store[$k['store_id']]['end'] = $k['date']; 260 + if( $k['end'] > $store[$k['store_id']]['end']){
  261 + $store[$k['store_id']]['end'] = $k['end'];
189 } 262 }
  263 +
  264 + $store[$k['store_id']]['course'][] = $k;
190 } 265 }
191 266
192 $course['store'] = array_values($store); 267 $course['store'] = array_values($store);
193 268
194 - foreach ($course['store'] as &$k){ 269 + /* foreach ($course['store'] as &$k){
195 $courseStore = new \app\admin\model\CourseStore(); 270 $courseStore = new \app\admin\model\CourseStore();
196 $where['course_id'] = $id; 271 $where['course_id'] = $id;
197 $where['store_id'] = $k['id']; 272 $where['store_id'] = $k['id'];
198 $where['status'] = 'confirmed'; 273 $where['status'] = 'confirmed';
  274 + $where['is_end'] = false;
  275 + $where['end'] = ['>',date('Y-m-d H:i:s')];
199 $k['course'] = $courseStore->with('store')->where($where)->order('date','desc')->select(); 276 $k['course'] = $courseStore->with('store')->where($where)->order('date','desc')->select();
200 - } 277 + }*/
201 278
202 //查询评价 279 //查询评价
203 $star = new \app\admin\model\CourseSignStart(); 280 $star = new \app\admin\model\CourseSignStart();
@@ -346,7 +423,7 @@ class Course extends Api @@ -346,7 +423,7 @@ class Course extends Api
346 } 423 }
347 424
348 $courseStore = new \app\admin\model\CourseStore(); 425 $courseStore = new \app\admin\model\CourseStore();
349 - $courseStore = $courseStore->with(['course','store'])->where(['id'=>$course_store_id,'status'=>'confirmed'])->find(); 426 + $courseStore = $courseStore->with(['course','store'])->where(['id'=>$course_store_id,'status'=>'confirmed','is_end'=>false,'end'=>['>',date('Y-m-d H:i:s')]])->find();
350 if(empty($courseStore)){ 427 if(empty($courseStore)){
351 $this->error(__('Invalid parameters')); 428 $this->error(__('Invalid parameters'));
352 } 429 }
@@ -358,7 +435,12 @@ class Course extends Api @@ -358,7 +435,12 @@ class Course extends Api
358 $this->error('已经报名了'); 435 $this->error('已经报名了');
359 } 436 }
360 437
  438 + $user = new \app\admin\model\User;
  439 + $user = $user->where(['id'=>$user_id])->field('password,salt',true)->find();
  440 + if(empty($user)){
361 441
  442 + }
  443 + $user = $user->toArray();
362 444
363 //查看支付情况 445 //查看支付情况
364 /*$order = new \app\admin\model\Order(); 446 /*$order = new \app\admin\model\Order();
@@ -406,11 +488,12 @@ class Course extends Api @@ -406,11 +488,12 @@ class Course extends Api
406 $order->save(['remain'=>$remain-1],['id'=>$order_id]); 488 $order->save(['remain'=>$remain-1],['id'=>$order_id]);
407 489
408 //开课人数够了 490 //开课人数够了
409 - $sign_count = $sign->where(['course_store_id'=>$course_store_id])->count();  
410 - if($sign_count >= $courseStore['notify_count']){  
411 - $template = new Template(Config::get('weChat')); 491 + $sign = new \app\admin\model\CourseSign();
  492 + $signCount = $sign->where(['course_store_id'=>$course_store_id])->count();
  493 + if($signCount >= $courseStore['notify_count']){
  494 + $template = new Newtmpl(Config::get('weChat'));
412 $sign = new \app\admin\model\CourseSign(); 495 $sign = new \app\admin\model\CourseSign();
413 - $sign_data = $sign->with('user')->where(['course_store_id'=>$course_store_id,'notify'=>false])->select(); 496 + $sign_data = $sign->with(['user','CourseStore'])->where(['course_store_id'=>$course_store_id,'notify'=>false])->select();
414 $notice = new \app\admin\model\UserNotice(); 497 $notice = new \app\admin\model\UserNotice();
415 foreach ($sign_data as $k){ 498 foreach ($sign_data as $k){
416 499
@@ -426,19 +509,24 @@ class Course extends Api @@ -426,19 +509,24 @@ class Course extends Api
426 509
427 510
428 //小程序通知 511 //小程序通知
429 - /* $data = [  
430 - 'touser' => $k['user']['openid'],  
431 - 'template_id' => '',  
432 - 'form_id'=>'',  
433 - 'page'=>'pages/index/index',  
434 - 'data'=>[  
435 - "keyword1"=>["value"=> "1", "color"=> "#173177"],  
436 - "keyword2"=>["value"=> "2", "color"=> "#173177"],  
437 - "keyword3"=>["value"=> "3", "color"=> "#173177"]  
438 - ],  
439 - ];  
440 -  
441 - $template->send($data);*/ 512 + $data = [
  513 + 'touser' => $k['user']['openid'],
  514 + 'template_id' => Config::get('course_sign_tmp'),
  515 + 'form_id'=>$k['id'],
  516 + 'page'=>'pages/classReserve/classReserve',
  517 + 'data'=>[
  518 + "thing1" => ["value" => $courseStore['course']['name']],
  519 + "date2" => ["value" => $k['CourseStore']['start']],
  520 + "name3" => ["value" => $k['user']['nickname']],
  521 + "thing4" => ["value" => "课程预约成功"],
  522 + ],
  523 + ];
  524 +
  525 + try {
  526 + $template->send($data);
  527 + } catch (InvalidResponseException $e) {
  528 + } catch (LocalCacheException $e) {
  529 + }
442 530
443 } 531 }
444 } 532 }
@@ -146,7 +146,7 @@ class Order extends Api @@ -146,7 +146,7 @@ class Order extends Api
146 $data['success_time'] = ''; 146 $data['success_time'] = '';
147 147
148 $order = new \app\admin\model\Order(); 148 $order = new \app\admin\model\Order();
149 - $order = $order->save($data); 149 + $order = $order->insertGetId($data);
150 150
151 $return['order'] = $order; 151 $return['order'] = $order;
152 $return['options'] = $options; 152 $return['options'] = $options;
@@ -163,24 +163,26 @@ class Order extends Api @@ -163,24 +163,26 @@ class Order extends Api
163 $wechat = \WeChat\Pay::instance($this->config); 163 $wechat = \WeChat\Pay::instance($this->config);
164 164
165 $data = $wechat->getNotify(); 165 $data = $wechat->getNotify();
  166 +
166 if ($data['return_code'] === 'SUCCESS' && $data['result_code'] === 'SUCCESS') { 167 if ($data['return_code'] === 'SUCCESS' && $data['result_code'] === 'SUCCESS') {
167 168
168 $order_no = $data['out_trade_no']; 169 $order_no = $data['out_trade_no'];
169 $order = new \app\admin\model\Order(); 170 $order = new \app\admin\model\Order();
170 $order = $order->where(['order_id'=>$order_no])->find(); 171 $order = $order->where(['order_id'=>$order_no])->find();
171 - if(empty($product)){  
172 - exit; 172 + if(empty($order)){
  173 + exit;
173 } 174 }
174 - if($order['total']*100 != $data['total_fee']){ 175 + $order = $order->toArray();
  176 + if((int)($order['total']*100) != $data['total_fee']){
175 exit; 177 exit;
176 } 178 }
177 - $order = $order->toArray(); 179 +
178 180
179 $user = new \app\admin\model\User(); 181 $user = new \app\admin\model\User();
180 $user->save(['status' => 'normal'], ['id' => $order['user_id']]); 182 $user->save(['status' => 'normal'], ['id' => $order['user_id']]);
181 183
182 - $order = new \app\admin\model\Order();  
183 - $user->save([ 184 + $order1 = new \app\admin\model\Order();
  185 + $order1->save([
184 'status' => 'success', 186 'status' => 'success',
185 'success_time' => date('Y-m-d H:i:s'), 187 'success_time' => date('Y-m-d H:i:s'),
186 'third_order_id' => $data['transaction_id'] 188 'third_order_id' => $data['transaction_id']
@@ -132,6 +132,8 @@ class Store extends Api @@ -132,6 +132,8 @@ class Store extends Api
132 $courseStore = new \app\admin\model\CourseStore(); 132 $courseStore = new \app\admin\model\CourseStore();
133 $where['store_id'] = $id; 133 $where['store_id'] = $id;
134 $where['status'] = 'confirmed'; 134 $where['status'] = 'confirmed';
  135 + $where['is_end'] = false;
  136 + $where['end'] = ['>',date('Y-m-d H:i:s')];
135 $courseStore = $courseStore->with('course')->where($where)->order('date','desc')->select(); 137 $courseStore = $courseStore->with('course')->where($where)->order('date','desc')->select();
136 $course = []; 138 $course = [];
137 foreach ($courseStore as $k){ 139 foreach ($courseStore as $k){
@@ -730,7 +730,7 @@ class User extends Api @@ -730,7 +730,7 @@ class User extends Api
730 foreach ($notice as &$k){ 730 foreach ($notice as &$k){
731 if($k['type'] == 'course_sign' || $k['type'] == 'course_start'){ 731 if($k['type'] == 'course_sign' || $k['type'] == 'course_start'){
732 $course = new \app\admin\model\Course(); 732 $course = new \app\admin\model\Course();
733 - $course= $course->where(['id'=>$k['content_id']])->find(); 733 + $course= $course->where(['id'=>$k['course_sign']['course_id']])->find();
734 if(empty($course)){ 734 if(empty($course)){
735 $course = []; 735 $course = [];
736 }else{ 736 }else{
@@ -738,6 +738,16 @@ class User extends Api @@ -738,6 +738,16 @@ class User extends Api
738 } 738 }
739 739
740 $k['course'] = $course; 740 $k['course'] = $course;
  741 +
  742 + $store = new \app\admin\model\Store();
  743 + $store= $store->where(['id'=>$k['course_sign']['store_id']])->find();
  744 + if(empty($store)){
  745 + $store = [];
  746 + }else{
  747 + $store = $store->toArray();
  748 + }
  749 +
  750 + $k['store'] = $store;
741 } 751 }
742 } 752 }
743 $this->success('ok',$notice); 753 $this->success('ok',$notice);
@@ -20,6 +20,9 @@ return [ @@ -20,6 +20,9 @@ return [
20 'mch_key' => 'MmXiXHO16b89tNx75t3T8rHTYMQBbn19', 20 'mch_key' => 'MmXiXHO16b89tNx75t3T8rHTYMQBbn19',
21 //'notify_url' => '127.0.0.1/wake/public/api/order/notify', 21 //'notify_url' => '127.0.0.1/wake/public/api/order/notify',
22 'notify_url' => 'http://wake.w.brotop.cn/api/order/notify', 22 'notify_url' => 'http://wake.w.brotop.cn/api/order/notify',
  23 + 'course_sign_tmp' => '0A7sPV2VrDo7_3Fo5q9z-Ddh-m85_GvF15ANspbo70Ey',
  24 + 'course_start_tmp' => '0A7sPV2VrDo7_3Fo5q9z-Ddh-m85_GvF15ANspbo70Ey',
  25 + 'order_over_tmp' => '586FN0OLJ1DPZgwPwh7Ke2P4wewhm7l67awB77qrOi8',
23 ], 26 ],
24 27
25 28
@@ -25,7 +25,7 @@ @@ -25,7 +25,7 @@
25 */ 25 */
26 26
27 use think\Config; 27 use think\Config;
28 -use WeMini\Template; 28 +use WeMini\Newtmpl;
29 use Workerman\Lib\Timer; 29 use Workerman\Lib\Timer;
30 30
31 31
@@ -51,13 +51,16 @@ class Events @@ -51,13 +51,16 @@ class Events
51 'mch_key' => 'MmXiXHO16b89tNx75t3T8rHTYMQBbn19', 51 'mch_key' => 'MmXiXHO16b89tNx75t3T8rHTYMQBbn19',
52 //'notify_url' => '127.0.0.1/wake/public/api/order/notify', 52 //'notify_url' => '127.0.0.1/wake/public/api/order/notify',
53 'notify_url' => 'http://wake.w.brotop.cn/api/order/notify', 53 'notify_url' => 'http://wake.w.brotop.cn/api/order/notify',
  54 + 'course_sign_tmp' => '0A7sPV2VrDo7_3Fo5q9z-Ddh-m85_GvF15ANspbo70Ey',
  55 + 'course_start_tmp' => '0A7sPV2VrDo7_3Fo5q9z-Ddh-m85_GvF15ANspbo70Ey',
  56 + 'order_over_tmp' => '586FN0OLJ1DPZgwPwh7Ke2P4wewhm7l67awB77qrOi8',
54 ]; 57 ];
55 58
56 //订单到期 59 //订单到期
57 $timer = 60*1; 60 $timer = 60*1;
58 Timer::add($timer, function ($config){ 61 Timer::add($timer, function ($config){
59 error_log('order_over'); 62 error_log('order_over');
60 - $template = new Template($config); 63 + $template = new Newtmpl($config);
61 $order = new \app\admin\model\Order(); 64 $order = new \app\admin\model\Order();
62 $order = $order->where(['status'=>'success','end'=>['<',date('Y-m-d H:i:s')]])->with('user')->select(); 65 $order = $order->where(['status'=>'success','end'=>['<',date('Y-m-d H:i:s')]])->with('user')->select();
63 $notice = new \app\admin\model\UserNotice(); 66 $notice = new \app\admin\model\UserNotice();
@@ -76,13 +79,13 @@ class Events @@ -76,13 +79,13 @@ class Events
76 //小程序通知 79 //小程序通知
77 $data = [ 80 $data = [
78 'touser' => $k['user']['openid'], 81 'touser' => $k['user']['openid'],
79 - 'template_id' => '',  
80 - 'form_id'=>'',  
81 - 'page'=>'pages/index/index', 82 + 'template_id' => $config['order_over_tmp'],
  83 + 'form_id'=> $k['id'],
  84 + 'page'=>'pages/classReserve/classReserve',
82 'data'=>[ 85 'data'=>[
83 - "keyword1"=>["value"=> "1", "color"=> "#173177"],  
84 - "keyword2"=>["value"=> "2", "color"=> "#173177"],  
85 - "keyword3"=>["value"=> "3", "color"=> "#173177"] 86 + "thing1" => ["value" => "维克猩球"],
  87 + "number2" => ["value" => "0"],
  88 + "name3" => ["value" => $k['user']['nickname']],
86 ], 89 ],
87 ]; 90 ];
88 $template->send($data); 91 $template->send($data);
@@ -97,7 +100,7 @@ class Events @@ -97,7 +100,7 @@ class Events
97 100
98 error_log('course_start'); 101 error_log('course_start');
99 102
100 - $template = new Template($config); 103 + $template = new Newtmpl($config);
101 104
102 $setting = new \app\admin\model\CourseSetting(); 105 $setting = new \app\admin\model\CourseSetting();
103 $setting = $setting->where(['setting_key'=>'course_start'])->find(); 106 $setting = $setting->where(['setting_key'=>'course_start'])->find();
@@ -108,13 +111,13 @@ class Events @@ -108,13 +111,13 @@ class Events
108 } 111 }
109 112
110 $courseStore = new \app\admin\model\CourseStore(); 113 $courseStore = new \app\admin\model\CourseStore();
111 - $courseStore = $courseStore->where(['notify'=>false,'status'=>'confirmed','date'=>date('Y-m-d'),'time_start' => ['<',date('H:i:s',time()-$time)] ])->select(); 114 + $courseStore = $courseStore->where(['notify'=>false,'status'=>'confirmed','start' => ['<',date('Y-m-d H:i:s',time()+$time)] ])->select();
112 $notice = new \app\admin\model\UserNotice(); 115 $notice = new \app\admin\model\UserNotice();
113 foreach ($courseStore as $k){ 116 foreach ($courseStore as $k){
114 $courseStore = new \app\admin\model\CourseStore(); 117 $courseStore = new \app\admin\model\CourseStore();
115 $courseStore->save(['notify'=>true],['id'=>$k['id']]); 118 $courseStore->save(['notify'=>true],['id'=>$k['id']]);
116 $sign = new \app\admin\model\CourseSign(); 119 $sign = new \app\admin\model\CourseSign();
117 - $sign = $sign->with('user')->where(['course_store_id'=>$k['id']])->select(); 120 + $sign = $sign->with(['user','CourseStore'])->where(['course_store_id'=>$k['id']])->select();
118 foreach ($sign as $v){ 121 foreach ($sign as $v){
119 122
120 $insert = [ 123 $insert = [
@@ -128,13 +131,14 @@ class Events @@ -128,13 +131,14 @@ class Events
128 //小程序通知 131 //小程序通知
129 $data = [ 132 $data = [
130 'touser' => $v['user']['openid'], 133 'touser' => $v['user']['openid'],
131 - 'template_id' => '',  
132 - 'form_id'=>'',  
133 - 'page'=>'pages/index/index', 134 + 'template_id' => $config['course_start_tmp'],
  135 + 'form_id'=> $v['id'],
  136 + 'page'=>'pages/classReserve/classReserve',
134 'data'=>[ 137 'data'=>[
135 - "keyword1"=>["value"=> "1", "color"=> "#173177"],  
136 - "keyword2"=>["value"=> "2", "color"=> "#173177"],  
137 - "keyword3"=>["value"=> "3", "color"=> "#173177"] 138 + "thing1" => ["value" => $courseStore['course']['name']],
  139 + "date2" => ["value" => $v['CourseStore']['start']],
  140 + "name3" => ["value" => $v['user']['nickname']],
  141 + "thing4" => ["value" => "课程即将开始"],
138 ], 142 ],
139 ]; 143 ];
140 144
@@ -31,7 +31,7 @@ $worker->name = 'wake'; @@ -31,7 +31,7 @@ $worker->name = 'wake';
31 // bussinessWorker进程数量 31 // bussinessWorker进程数量
32 $worker->count = 1; 32 $worker->count = 1;
33 // 服务注册地址 33 // 服务注册地址
34 -$worker->registerAddress = '127.0.0.1:6978'; 34 +$worker->registerAddress = '127.0.0.1:16978';
35 35
36 // 如果不是在根目录启动,则运行runAll方法 36 // 如果不是在根目录启动,则运行runAll方法
37 if(!defined('GLOBAL_START')) 37 if(!defined('GLOBAL_START'))
@@ -23,7 +23,7 @@ require_once __DIR__ . '/../../vendor/workerman/workerman/Autoloader.php'; @@ -23,7 +23,7 @@ require_once __DIR__ . '/../../vendor/workerman/workerman/Autoloader.php';
23 Autoloader::setRootPath(__DIR__); 23 Autoloader::setRootPath(__DIR__);
24 24
25 // gateway 进程 25 // gateway 进程
26 -$gateway = new Gateway("Websocket://0.0.0.0:6868"); 26 +$gateway = new Gateway("Websocket://0.0.0.0:16868");
27 // 设置名称,方便status时查看 27 // 设置名称,方便status时查看
28 $gateway->name = 'ChatGateway'; 28 $gateway->name = 'ChatGateway';
29 // 设置进程数,gateway进程数建议与cpu核数相同 29 // 设置进程数,gateway进程数建议与cpu核数相同
@@ -32,13 +32,13 @@ $gateway->count = 1; @@ -32,13 +32,13 @@ $gateway->count = 1;
32 $gateway->lanIp = '127.0.0.1'; 32 $gateway->lanIp = '127.0.0.1';
33 // 内部通讯起始端口,假如$gateway->count=4,起始端口为4000 33 // 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
34 // 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口 34 // 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口
35 -$gateway->startPort = 4000; 35 +$gateway->startPort = 14000;
36 // 心跳间隔 36 // 心跳间隔
37 $gateway->pingInterval = 10; 37 $gateway->pingInterval = 10;
38 // 心跳数据 38 // 心跳数据
39 $gateway->pingData = '{"type":"ping"}'; 39 $gateway->pingData = '{"type":"ping"}';
40 // 服务注册地址 40 // 服务注册地址
41 -$gateway->registerAddress = '127.0.0.1:6978'; 41 +$gateway->registerAddress = '127.0.0.1:16978';
42 42
43 /* 43 /*
44 // 当客户端连接上来时,设置连接的onWebSocketConnect,即在websocket握手时的回调 44 // 当客户端连接上来时,设置连接的onWebSocketConnect,即在websocket握手时的回调
@@ -20,7 +20,7 @@ require_once __DIR__ . '/../../vendor/workerman/workerman/Autoloader.php'; @@ -20,7 +20,7 @@ require_once __DIR__ . '/../../vendor/workerman/workerman/Autoloader.php';
20 //require_once __DIR__ . '/../../vendor/workerman/gateway-worker-for-win/src/Register.php'; 20 //require_once __DIR__ . '/../../vendor/workerman/gateway-worker-for-win/src/Register.php';
21 21
22 // register 服务必须是text协议 22 // register 服务必须是text协议
23 -$register = new Register('text://0.0.0.0:6978'); 23 +$register = new Register('text://0.0.0.0:16978');
24 24
25 // 如果不是在根目录启动,则运行runAll方法 25 // 如果不是在根目录启动,则运行runAll方法
26 if(!defined('GLOBAL_START')) 26 if(!defined('GLOBAL_START'))
@@ -15,11 +15,11 @@ require_once __DIR__ . '/../../vendor/workerman/workerman/Autoloader.php'; @@ -15,11 +15,11 @@ require_once __DIR__ . '/../../vendor/workerman/workerman/Autoloader.php';
15 Autoloader::setRootPath(__DIR__); 15 Autoloader::setRootPath(__DIR__);
16 16
17 // #### 内部推送端口(假设当前服务器内网ip为192.168.100.100) #### 17 // #### 内部推送端口(假设当前服务器内网ip为192.168.100.100) ####
18 -$internal_gateway = new Gateway("Text://0.0.0.0:6878"); 18 +$internal_gateway = new Gateway("Text://0.0.0.0:16878");
19 $internal_gateway->name='internalGateway'; 19 $internal_gateway->name='internalGateway';
20 $internal_gateway->startPort = 6800; 20 $internal_gateway->startPort = 6800;
21 // 服务注册地址 21 // 服务注册地址
22 -$internal_gateway->registerAddress = '127.0.0.1:6978'; 22 +$internal_gateway->registerAddress = '127.0.0.1:16978';
23 // #### 内部推送端口设置完毕 #### 23 // #### 内部推送端口设置完毕 ####
24 24
25 if(!defined('GLOBAL_START')) 25 if(!defined('GLOBAL_START'))
此 diff 太大无法显示。
@@ -136,42 +136,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin @@ -136,42 +136,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
136 bindevent: function () { 136 bindevent: function () {
137 Form.api.bindevent($("form[role=form]")); 137 Form.api.bindevent($("form[role=form]"));
138 }, 138 },
139 - events : {  
140 - operate: {  
141 - 'click .btn-publish': function (e, value, row, index) {  
142 - e.stopPropagation();  
143 - e.preventDefault(); //事件冒泡阻止  
144 - var that = this;  
145 - var table = $(that).closest('table');  
146 - var options = table.bootstrapTable('getOptions');  
147 - var load = Layer.prompt({title: '修改密码', shadeClose: true}, function (text, index) {  
148 - var id = row[options.pk];  
149 - $.ajax({  
150 - type : "POST",  
151 - url : "users/users/upPassword",  
152 - data : {  
153 - uid : id,  
154 - newPwd: newPwd  
155 - },  
156 - dataType: "json",  
157 - success : function (data) {  
158 - // console.log(data);  
159 - if (data.code == 1) {  
160 - Layer.msg('修改密码成功')  
161 - Layer.closeAll()  
162 - $('.btn-refresh').trigger('click')  
163 - } else {  
164 - Layer.msg('修改密码失败')  
165 - Layer.closeAll()  
166 - }  
167 -  
168 - }  
169 - })  
170 - }  
171 - )  
172 - }  
173 - }  
174 - },  
175 139
176 }, 140 },
177 }; 141 };