From e111aa3053654f12fc81ac178dabbb71574a54ce Mon Sep 17 00:00:00 2001 From: 15090180611 <215509543@qq.com> Date: Thu, 27 Feb 2025 10:47:31 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/school/classes/teacher/add.html | 21 + .../view/school/classes/teacher/edit.html | 21 + .../model/school/classes/ClassesLib.php | 2 + .../common/model/school/classes/Teacher.php | 1 + .../school/classes/activity/Activity.php | 239 ++++++ .../school/classes/activity/ActivityAuth.php | 683 +++++++++++++++++- .../model/school/classes/hourorder/Order.php | 3 +- application/config.php | 4 +- application/extra/upload.php | 2 +- .../view/school/classes/teacher/add.html | 21 + .../view/school/classes/teacher/edit.html | 19 + .../manystoreapi/controller/Attachment.php | 1 + .../js/backend/school/classes/classes_spec.js | 3 +- 13 files changed, 1014 insertions(+), 6 deletions(-) diff --git a/application/admin/view/school/classes/teacher/add.html b/application/admin/view/school/classes/teacher/add.html index 1e272e0..5bfd1c6 100644 --- a/application/admin/view/school/classes/teacher/add.html +++ b/application/admin/view/school/classes/teacher/add.html @@ -52,6 +52,27 @@ + + + +
+ +
+ +
+
+ {:__('Key')} + {:__('Value')} +
+
{:__('Append')}
+ +
+ + +
+
+ +
diff --git a/application/admin/view/school/classes/teacher/edit.html b/application/admin/view/school/classes/teacher/edit.html index 17925f9..8026278 100644 --- a/application/admin/view/school/classes/teacher/edit.html +++ b/application/admin/view/school/classes/teacher/edit.html @@ -52,6 +52,27 @@
+ + + + +
+ +
+ +
+
+ {:__('Key')} + {:__('Value')} +
+
{:__('Append')}
+ +
+ + +
+
+
diff --git a/application/common/model/school/classes/ClassesLib.php b/application/common/model/school/classes/ClassesLib.php index e2df2f8..b8ea257 100644 --- a/application/common/model/school/classes/ClassesLib.php +++ b/application/common/model/school/classes/ClassesLib.php @@ -926,6 +926,8 @@ $user_unpaid_order = $user_paid_order =null; $row['classes_cate'] = $classes_cate; $row['classes_type_name'] = $classes_type; + + $row["spec_number"] = ClassesSpec::where("classes_lib_id",$row->id)->count(); } // var_dump(self::getLastSql());die; diff --git a/application/common/model/school/classes/Teacher.php b/application/common/model/school/classes/Teacher.php index 4d18779..6b963e6 100644 --- a/application/common/model/school/classes/Teacher.php +++ b/application/common/model/school/classes/Teacher.php @@ -153,6 +153,7 @@ class Teacher extends BaseModel public static function allList($page, $limit,$params=[]){ $with_field = [ 'user'=>['nickname','mobile','avatar','realname'], + "shop"=>["name","logo","image","images","address_city","province","city","district","address","address_detail","longitude","latitude","tel"], 'base'=>['*'], ]; $alisa = (new self)->getWithAlisaName(); diff --git a/application/common/model/school/classes/activity/Activity.php b/application/common/model/school/classes/activity/Activity.php index a47b03e..1685fe1 100644 --- a/application/common/model/school/classes/activity/Activity.php +++ b/application/common/model/school/classes/activity/Activity.php @@ -1687,6 +1687,245 @@ class Activity extends BaseModel } + protected function update_check(&$params,$row=null) + { + + +// try { + if($row){ + if(empty($params["shop_id"]))$params["shop_id"] = $row["shop_id"]; + if($params["status"] != '3' && $row["status"] == '3'){ + throw new \Exception("已被平台下架!无法操作上架状态!"); + } + } + + + + $classesLib = new \app\common\model\school\classes\activity\Activity(); + $classesLib->no_auth_fields = $this->no_auth_fields; + $classesLib->need_auth = $this->need_auth; + $classesLib->have_auth = $this->have_auth; + + $classesLib->activityCheck($params,null,$row); + + $this->need_auth = $classesLib->need_auth; + $this->have_auth = $classesLib->have_auth; + + +// }catch (\Exception $e){ +// $this->error($e->getMessage()); +// } + + + + + + //修改 + if($row){ + + }else{ + //新增 + //新增 + $params["add_type"] = '1'; + $params["add_id"] = $this->auth->id; + } + + } + + + /** 小程序端操作课程修改 + * @param bool $check + * @param bool $trans + * @return bool + * @throws \Exception + */ + public function updateActivityByOper($params,$ids,$check=false,$oper_type='user',$oper_id=0,$trans=false){ + + //用户操作权限检测 + $shop_id = Activity::checkOptionAuth($ids, $oper_id,$oper_type); + $params["shop_id"] = $shop_id; + + $row = self::where('id',$ids)->where("shop_id",$shop_id)->find(); + if(!$row) throw new \Exception("活动不存在!"); + + + + //判断逻辑 + if($trans){ + self::beginTrans(); + } + $res = true; + try{ + //事务逻辑 + + + $this->update_check($params,$row); + + if($this->have_auth){ + (new \app\common\model\school\classes\activity\Activity)->applyAuth($row["id"],$params); + $result = true; + }else{ +// var_dump($this->have_auth); + + $spec = $params["item_json"] ?? []; + +// var_dump($spec); + + $delete_spec_ids = $params["delete_spec_ids"] ?? []; + unset($params["item_json"]); + unset($params["delete_spec_ids"]); + + $result = $row->allowField(true)->save($params); + + //添加课程规格 + foreach ($spec as $k=>$v){ + $v["classes_activity_id"] = $row["id"]; + $v["manystore_id"] = $row["manystore_id"]; + $v["shop_id"] = $row["shop_id"]; + //有id更新,否则新增 + if(isset($v["id"]) && $v["id"]){ + \app\common\model\school\classes\activity\ActivityItem::update((new \app\common\model\school\classes\activity\ActivityItem)->checkAssemblyParameters($v)); + }else{ + + \app\common\model\school\classes\activity\ActivityItem::create((new \app\common\model\school\classes\activity\ActivityItem)->checkAssemblyParameters($v)); + } + + } + //删除规格 + foreach ($delete_spec_ids as $k=>$delete_spec){ + + + (new \app\common\model\school\classes\activity\ActivityItem)->updateCheck($delete_spec["id"]); + + $delete_spec->delete(); + } + + //因为是批量添加,所有规格重新进行检测,防止出现时间重叠 + $specss = \app\common\model\school\classes\activity\ActivityItem::where("classes_activity_id",$row["id"])->select(); + foreach ($specss as $k=>$specs){ + + $params =$specs->toArray(); + (new \app\common\model\school\classes\activity\ActivityItem)->specCheck($params,null,$specs); + } + + } + $this->update_classes($row["id"]); + + + + if($trans){ + self::commitTrans(); + } + }catch (\Exception $e){ + if($trans){ + self::rollbackTrans(); + } + throw new \Exception($e->getMessage().$e->getFile().$e->getLine()); + } + return $row; + } + + + + + /** 小程序端操作课程修改 + * @param bool $check + * @param bool $trans + * @return bool + * @throws \Exception + */ + public function deleteActivityByOper($ids,$check=false,$oper_type='user',$oper_id=0,$trans=false){ + + //用户操作权限检测 + $shop_id = Activity::checkOptionAuth($ids, $oper_id,$oper_type); + + $row = self::where('id',$ids)->where("shop_id",$shop_id)->find(); + if(!$row) throw new \Exception("活动不存在!"); + + + $list = self::where("id", 'in', $ids)->select(); + foreach ($list as $item) { + $this->updateCheck($item->id); + } + //判断逻辑 + if($trans){ + self::beginTrans(); + } + $res = true; + try{ + $count = 0; + //事务逻辑 + //删除前检测 + foreach ($list as $k => $v) { + //删除课程规格 + \app\common\model\school\classes\activity\ActivityItem::where("classes_activity_id",$item->id)->delete(); + //删除课程规格 + \app\common\model\school\classes\activity\ActivityItemAuth::where("classes_activity_id",$item->id)->delete(); + \app\common\model\school\classes\activity\ActivityAuth::where("classes_activity_id",$item->id)->delete(); + + $count += $v->delete(); + } + if($trans){ + self::commitTrans(); + } + }catch (\Exception $e){ + if($trans){ + self::rollbackTrans(); + } + throw new \Exception($e->getMessage().$e->getFile().$e->getLine()); + } + return $count; + } + + + + + /** 小程序端操作课程上下架 + * @param bool $check + * @param bool $trans + * @return bool + * @throws \Exception + */ + public function updateStatusByOper($status,$ids,$check=false,$oper_type='user',$oper_id=0,$trans=false){ + + //用户操作权限检测 + if($check){ + $shop_id = self::checkOptionAuth($ids, $oper_id,$oper_type); + if(!in_array($status,['1','2'] ))throw new \Exception("状态参数错误!"); + //审核中无法操作上下架 + $row = self::where('id',$ids)->where("shop_id",$shop_id)->find(); + if(!$row) throw new \Exception("活动不存在或无权限!"); + if($row["status"] == '3') throw new \Exception("已平台下架无法操作!"); + if($row["auth_status"] != '1' && $status =="1")throw new \Exception("审核通过才能上架!"); + }else{ + $row = self::where('id',$ids)->find(); + if(!$row) throw new \Exception("课程不存在或无权限!"); + } + + //判断逻辑 + if($trans){ + self::beginTrans(); + } + $res = true; + try{ + //事务逻辑 + $params = [ + "status"=>$status, + ]; + $result = $row->allowField(true)->save($params); + + if($trans){ + self::commitTrans(); + } + }catch (\Exception $e){ + if($trans){ + self::rollbackTrans(); + } + throw new \Exception($e->getMessage().$e->getFile().$e->getLine()); + } + return $row; + } + } diff --git a/application/common/model/school/classes/activity/ActivityAuth.php b/application/common/model/school/classes/activity/ActivityAuth.php index 5013300..0a0445e 100644 --- a/application/common/model/school/classes/activity/ActivityAuth.php +++ b/application/common/model/school/classes/activity/ActivityAuth.php @@ -8,6 +8,7 @@ use app\common\model\BaseModel; use app\common\model\dyqc\ManystoreShop; use app\common\model\school\Area; use app\common\model\school\classes\ClassesSpec; +use app\common\model\school\classes\Collect; use app\manystore\model\Manystore; use think\Model; use traits\model\SoftDelete; @@ -644,6 +645,56 @@ class ActivityAuth extends BaseModel + protected function update_check(&$params,$row=null) + { + + //只要提交,就审核 + $params["auth_status"] = 0; + $params["classes_activity_id"] = $params["classes_activity_id"] ?? 0; + + if($row){ + if(empty($params["shop_id"]))$params["shop_id"] = $row["shop_id"]; + //查询是否存在活动,如果存在,附上活动id + $activity = \app\common\model\school\classes\activity\Activity::where("id",$row["classes_activity_id"])->find(); + if($activity && empty($params["classes_activity_id"])){ + $params["classes_activity_id"] = $activity["id"]; + } + + } + +// try { + $classesLib = new \app\common\model\school\classes\activity\ActivityAuth(); + $classesLib->no_auth_fields = $this->no_auth_fields; + $classesLib->need_auth = $this->need_auth; + $classesLib->have_auth = $this->have_auth; + + $classesLib->activityCheck($params,null,$row); + + $this->need_auth = $classesLib->need_auth; + $this->have_auth = $classesLib->have_auth; + +// }catch (\Exception $e){ +// $this->error($e->getMessage()); +// } + + + + + + + //修改 + if($row){ + + }else{ + //新增 + //新增 + $params["add_type"] = '1'; + $params["add_id"] = $this->auth->id; + } + + } + + /** 小程序端操作活动审核添加 * @param bool $check @@ -651,7 +702,7 @@ class ActivityAuth extends BaseModel * @return bool * @throws \Exception */ - public function createActivityByOper(&$params,$check=false,$oper_type='user',$oper_id=0,$trans=false){ + public function createActivityAuthByOper(&$params,$check=false,$oper_type='user',$oper_id=0,$trans=false){ $model = new self; @@ -668,7 +719,52 @@ class ActivityAuth extends BaseModel } $res = true; try{ + $this->update_check($params,$row=null); + $spec = $params["item_json"]; + unset($params["item_json"]); +// $params["status"] = "2"; + $result = $model->allowField(true)->save($params); +// $this->model = new \app\manystore\model\school\classes\activity\Activity; +// $this->itemmodel = new \app\manystore\model\school\classes\activity\ActivityItem(); + $activity = \app\manystore\model\school\classes\activity\Activity::where("title",$params["title"])->find(); + if(!$activity){ + $params["status"] = "3"; + $params["classes_activity_auth_id"] = $model["id"]; + $activity = new \app\manystore\model\school\classes\activity\Activity; + $result2 = $activity->allowField(true)->save($params); + } + + //添加课程规格 + foreach ($spec as $k=>$v){ + $v["classes_activity_auth_id"] = $model["id"]; + + $v["classes_activity_id"] = $v["classes_activity_id"] ?? ($model->classes_activity_id ?? 0); + + $v["manystore_id"] = $model["manystore_id"]; + $v["shop_id"] = $model["shop_id"]; + + unset($v["id"]); + (new \app\common\model\school\classes\activity\ActivityItemAuth())->allowField(true)->save($v); + if(isset($result2)){ + (new \app\common\model\school\classes\activity\ActivityItem())->allowField(true)->save($v); + } + } + + //因为是批量添加,所有规格重新进行检测,防止出现时间重叠 + $specss = \app\common\model\school\classes\activity\ActivityItemAuth::where("classes_activity_auth_id",$model["id"])->select(); + foreach ($specss as $k=>$specs){ + $params =$specs->toArray(); + (new \app\common\model\school\classes\activity\ActivityItemAuth)->specCheck($params,null,$specs); + } + + + $this->update_classes($model["classes_activity_id"] ?? 0,$model); + + + //调用事件 + $data = ['activity' => $model]; + \think\Hook::listen('activity_auth_need_after', $data); @@ -687,4 +783,589 @@ class ActivityAuth extends BaseModel } + + protected function update_classes($classes_activity_id,$row=null){ + if($classes_activity_id && $row){ + $activity = \app\common\model\school\classes\activity\Activity::where("id",$classes_activity_id)->find(); + if($activity && in_array($row["auth_status"],[0,2])){ + $activity["classes_activity_auth_id"] = $row["id"]; + $activity->save(); + } + } + } + + + + + + /** 小程序端操作课程修改 + * @param bool $check + * @param bool $trans + * @return bool + * @throws \Exception + */ + public function updateActivityAuthByOper($params,$ids,$check=false,$oper_type='user',$oper_id=0,$trans=false){ + + $activityAuth = self::get($ids); + if(!$activityAuth) throw new \Exception("活动不存在或已下架!"); +// $ids = $activityAuth["classes_activity_id"]; + //用户操作权限检测 + $shop_id = Activity::checkOptionAuth($activityAuth["classes_activity_id"], $oper_id,$oper_type); + $params["shop_id"] = $shop_id; + + $row = self::where('id',$ids)->where("shop_id",$shop_id)->find(); + if(!$row) throw new \Exception("活动不存在!"); + + + + + + //判断逻辑 + if($trans){ + self::beginTrans(); + } + $res = true; + try{ + //事务逻辑 + $this->update_check($params,$row); + $spec = $params["item_json"] ?? []; + +// var_dump($spec); + + $delete_spec_ids = $params["delete_spec_ids"] ?? []; + unset($params["item_json"]); + unset($params["delete_spec_ids"]); + + $result = $row->allowField(true)->save($params); + + //添加课程规格 + foreach ($spec as $k=>$v){ + $v["classes_activity_auth_id"] = $row["id"]; + $v["classes_activity_id"] = $v["classes_activity_id"] ?? ($row->classes_activity_id ?? 0); + + + $v["manystore_id"] = $row["manystore_id"]; + $v["shop_id"] = $row["shop_id"]; + //有id更新,否则新增 + if(isset($v["id"]) && $v["id"]){ + \app\common\model\school\classes\activity\ActivityItemAuth::update((new \app\common\model\school\classes\activity\ActivityItemAuth)->checkAssemblyParameters($v)); + }else{ + + \app\common\model\school\classes\activity\ActivityItemAuth::create((new \app\common\model\school\classes\activity\ActivityItemAuth)->checkAssemblyParameters($v)); + } + + } + //删除规格 + foreach ($delete_spec_ids as $k=>$delete_spec){ + + + (new \app\common\model\school\classes\activity\ActivityItemAuth)->updateCheck($delete_spec["id"]); + + $delete_spec->delete(); + } + + //因为是批量添加,所有规格重新进行检测,防止出现时间重叠 + $specss = \app\common\model\school\classes\activity\ActivityItemAuth::where("classes_activity_auth_id",$row["id"])->select(); + foreach ($specss as $k=>$specs){ + + $params =$specs->toArray(); + (new \app\common\model\school\classes\activity\ActivityItemAuth)->specCheck($params,null,$specs); + } + + + $this->update_classes($row["classes_activity_id"],$row); + + //调用事件 + $data = ['activity' => $row]; + \think\Hook::listen('activity_auth_need_after', $data); + + + if($trans){ + self::commitTrans(); + } + }catch (\Exception $e){ + if($trans){ + self::rollbackTrans(); + } + throw new \Exception($e->getMessage().$e->getFile().$e->getLine()); + } + return $row; + } + + + + + /** 小程序端操作课程修改 + * @param bool $check + * @param bool $trans + * @return bool + * @throws \Exception + */ + public function deleteActivityAuthByOper($ids,$check=false,$oper_type='user',$oper_id=0,$trans=false){ + + $activityAuth = self::get($ids); + if(!$activityAuth) throw new \Exception("活动不存在或已下架!"); + //用户操作权限检测 + $shop_id = Activity::checkOptionAuth($activityAuth["classes_activity_id"], $oper_id,$oper_type); + + $row = self::where('id',$ids)->where("shop_id",$shop_id)->find(); + if(!$row) throw new \Exception("活动不存在!"); + + + $list = self::where("id", 'in', $ids)->select(); + foreach ($list as $item) { + $this->updateCheck($item->id); + } + //判断逻辑 + if($trans){ + self::beginTrans(); + } + $res = true; + try{ + $count = 0; + //事务逻辑 + //删除前检测 + foreach ($list as $k => $v) { + \app\common\model\school\classes\activity\ActivityItemAuth::where("classes_activity_auth_id",$item->id)->delete(); + $count += $v->delete(); + } + if($trans){ + self::commitTrans(); + } + }catch (\Exception $e){ + if($trans){ + self::rollbackTrans(); + } + throw new \Exception($e->getMessage().$e->getFile().$e->getLine()); + } + return $count; + } + + + + + + + + + /**得到基础条件 + * @param $status + * @param null $model + * @param string $alisa + */ + public static function getBaseWhere($whereData = [], $model = null, $alisa = '',$with = false) + { + + if (!$model) { + $model = new static; + if ($alisa&&!$with) $model = $model->alias($alisa); + } + if ($alisa) $alisa = $alisa . '.'; + $tableFields = (new static)->getTableFields(); + foreach ($tableFields as $fields) + { + if(in_array($fields, ['status','title','address_city','address','address_detail','start_time','end_time','sign_start_time','sign_end_time']))continue; +// if (isset($whereData[$fields]) && $whereData[$fields]) $model = $model->where("{$alisa}{$fields}", '=', $whereData[$fields]); + + if (isset($whereData[$fields]) && $whereData[$fields]){ + if(is_array($whereData[$fields])){ + $model = $model->where("{$alisa}{$fields}", $whereData[$fields][0], $whereData[$fields][1]); + }else{ + $model = $model->where("{$alisa}{$fields}", '=', $whereData[$fields]); + } + + } + + + } + if (isset($whereData['status']) && $whereData['status']) $model = $model->where("{$alisa}status", 'in', $whereData['status']); + if (isset($whereData['not_status']) && $whereData['not_status']) $model = $model->where("{$alisa}status", 'not in', $whereData['not_status']); + + + if (isset($whereData['keywords'])&&$whereData['keywords']) $model = $model->where("{$alisa}title|{$alisa}id|{$alisa}address|{$alisa}address_detail", '=', $whereData['keywords']); + if (isset($whereData['time'])&&$whereData['time']){ + $model = $model->time(["{$alisa}createtime",$whereData['time']]); + } + + return $model; + } + + + + + + /** 活动详情 + * @param $id + * @throws \think\exception\DbException + */ + public function detail($id,$user_id=0,$oper_type='user',$trans=false){ + $self = $this->get($id,['shop','itemauths']); + + //是否收藏 + $self['is_collect'] = 0; + //是否购买 + $self['have_buy'] = 0; + if($user_id){ + //判断是否收藏 + $self['is_collect'] = Collect::where("user_id",$user_id)->where("classes_activity_id",$self["classes_activity_id"])->count() ? 1:0 ; + + //判断用户是否已报名 + $self['have_buy'] = Order::where("classes_activity_id",$self["classes_activity_id"]) + ->where("user_id",$user_id) + ->where("status","not in",["-3","6","9"]) + ->count() ? 1 : 0 ; + } + + // +// $this->setViews($id,$user_id,$oper_type,$user_id,$trans); +// $self->getRelation('user')->visible(['nickname','realname','mobile','avatar']); + //参与人数 = 虚拟人数 + 平台人数 + return $self; + } + + + + + /**活动规格 + * @param $id + * + */ + public function spec($id,$user_id=0){ + //课程规格 + $spec_data = ActivityItemAuth::where("classes_activity_auth_id",$id)->where("status",'1')->order("weigh desc,id desc")->select(); + foreach ($spec_data as &$spec){ + //默认未下单预约 + $spec["user_reservation"] = null; + if($user_id){ + $spec["user_reservation"] = Order::where("classes_activity_item_id",$spec['classes_activity_item_id'])->where("user_id",$user_id)->where("status","not in",["-3","6","9"])->find(); + } + + } + return $spec_data; + } + + + + + /** + * 获取所有活动列表 + */ + public static function getVaildList($params) { + extract($params); + $a = (new self)->getWithAlisaName().'.'; + $with = ['items',"itemauths"]; +// if (isset($has_shop) && $has_shop) { + $with[] = 'shop'; +// } + + + +// $cate_list = Cate::where("status",'1')->column("name","id"); +// $label_list = Label::where("status",'1')->column("name","id"); +// $type_list = Type::where("status",'1')->column("name","id"); + $selfetch = self::with($with); + // 查询自提点 + if($status == "-2"){ + $selfetch = $selfetch->where($a.'status', '1'); + } + +// if($auth_status == "-2"){ +// $selfetch = $selfetch->where("{$a}auth_status",1); +// } + + + + $order = $order?? 'normal'; + $per_page = $limit ?? 10; + + + $field = "{$a}start_time,{$a}end_time,{$a}sign_start_time,{$a}sign_end_time,{$a}id,{$a}shop_id,{$a}title,{$a}headimage,{$a}images,{$a}address_type,{$a}province,{$a}city,{$a}district,{$a}address,{$a}address_detail,{$a}longitude,{$a}latitude,{$a}sale,{$a}price,{$a}status,{$a}weigh,{$a}recommend,{$a}hot,{$a}new,{$a}selfhot,{$a}createtime,{$a}feel,{$a}sign_num,{$a}verification_num"; + + //得到距离 + if (isset($latitude) && isset($longitude) && $latitude && $longitude) { + $field .= ', '.getDistanceBuilder($latitude, $longitude,$a); + }else{ + $field .= ', 0 as distance'; + } + + //得到每个 + + + $selfetch = $selfetch->field($field); + if (isset($keywords) && $keywords) { + $selfetch = $selfetch->where("{$a}title|{$a}address|{$a}address_detail|{$a}address_city", 'like', '%' . $keywords . '%'); + } + + + if(isset($start_time) && isset($end_time) && ($end_time || $start_time)) { + if($start_time){ + $selfetch = $selfetch->where("{$a}start_time", '>=', $start_time); + } + if($end_time){ + $selfetch = $selfetch->where("{$a}end_time", '<=', $end_time); + } + } + + + if(isset($sign_start_time) && isset($sign_end_time) && ($sign_end_time || $sign_start_time)) { + if($sign_start_time){ + $selfetch = $selfetch->where("{$a}sign_start_time", '>=', $sign_start_time); + } + if($sign_end_time){ + $selfetch = $selfetch->where("{$a}sign_end_time", '<=', $sign_end_time); + } + } + + + + // is_expire 是否查过期:1只查过期,2只查不过期,0全查 + if(isset($is_expire) && $is_expire) { + if($is_expire == 1){ + $selfetch = $selfetch->where("{$a}end_time", '<', time()); + }else{ + $selfetch = $selfetch->where("{$a}end_time", '>=', time()); + } + + } + + // is_expire 是否查过期:1只查过期,2只查不过期,0全查 + if(isset($is_sign_expire) && $is_sign_expire) { + if($is_sign_expire == 1){ + $selfetch = $selfetch->where("{$a}sign_end_time", '<', time()); + }else{ + $selfetch = $selfetch->where("{$a}sign_end_time", '>=', time()); + } + + } + + + + + if (isset($manystore_id) && $manystore_id) { + $selfetch = $selfetch->where("{$a}manystore_id", 'in', ''.$manystore_id); + } + + if (isset($shop_id) && $shop_id) { + $selfetch = $selfetch->where("{$a}shop_id", 'in', ''.$shop_id); + } + + if (isset($user_id) && $user_id) { + $selfetch = $selfetch->where("{$a}user_id", 'in', ''.$user_id); + } + + if (isset($my) && $my && isset($my_user_id) && $my_user_id) { + $selfetch = $selfetch->where("{$a}user_id", 'in', ''.$my_user_id); + } + + + +// if (isset($teacher_id) && $teacher_id) { +// $selfetch = $selfetch->where("{$a}teacher_id", 'in', ''.$teacher_id); +// } + +// if (isset($type) && $type) { +// $selfetch = $selfetch->where("{$a}type", 'in', ''.$type); +// } + + if (isset($address_type) && $address_type) { + $selfetch = $selfetch->where("{$a}address_type", 'in', ''.$address_type); + } + + + if (isset($recommend) && $recommend) { + $selfetch = $selfetch->where("{$a}recommend", 'in', ''.$recommend); + } + + + if (isset($hot) && $hot) { + $selfetch = $selfetch->where("{$a}hot", 'in', ''.$hot); + } + + + if (isset($new) && $new) { + $selfetch = $selfetch->where("{$a}new", 'in', ''.$new); + } + + if (isset($feel) && $feel) { + $selfetch = $selfetch->where("{$a}feel", 'in', ''.$feel); + } + +// //设置订单信息 +// if(isset($auth_status) && $auth_status != -1 && $auth_status != -2){ +// $selfetch = $selfetch->where("{$a}auth_status", 'in', ''.$auth_status); +// } + + //设置订单信息 + if(isset($status) && $status != -1 && $status != -2){ + $selfetch = $selfetch->where("{$a}status", 'in', ''.$status); + } + + + + //区域搜索 + if (isset($province) && $province) { + $selfetch = $selfetch->where("{$a}province", 'in', ''.$province); + } + + + if (isset($city) && $city) { + $selfetch = $selfetch->where("{$a}city", 'in', ''.$city); + } + + if (isset($district) && $district) { + $selfetch = $selfetch->where("{$a}district", 'in', ''.$district); + } + + + + + + + + + + +// if (isset($self_label_tag) && $self_label_tag) { +// $self_label_tag = implode("|",explode(',',$self_label_tag)); +// $selfetch = $selfetch->whereRaw(" {$a}self_label_tag REGEXP '({$self_label_tag})'"); +// } +// +// if (isset($classes_type) && $classes_type) { +// $classes_type = implode("|",explode(',',$classes_type)); +// $selfetch = $selfetch->whereRaw(" {$a}classes_type REGEXP '({$classes_type})'"); +// } + + + + +// if (isset($classes_cate_ids) && $classes_cate_ids) { +// $classes_cate_ids = implode("|",explode(',',$classes_cate_ids)); +// $selfetch = $selfetch->whereRaw(" {$a}classes_cate_ids REGEXP '({$classes_cate_ids})'"); +// } +// +// if (isset($classes_label_ids) && $classes_label_ids) { +// $classes_label_ids = implode("|",explode(',',$classes_label_ids)); +// $selfetch = $selfetch->whereRaw(" {$a}classes_label_ids REGEXP '({$classes_label_ids})'"); +// } +// $collect_classes_lib_ids = [-1]; +// //需登录查询条件: +// if(isset($my_user_id) && $my_user_id){ +// //得到我收藏的课程ids +// $collect_classes_lib_ids = Collect::where("user_id",$my_user_id)->column("classes_activity_id"); +// //专查我的收藏 +// if(isset($collect) && $collect){ +// $selfetch = $selfetch->where("{$a}id","in",$collect_classes_lib_ids); +// } +// +// } + + if(isset($order) && $order == "distance"){ + $selfetch = $selfetch->where("{$a}longitude","not null") + ->where("{$a}latitude","not null") + ->where("{$a}longitude","<>","") + ->where("{$a}latitude","<>","") + ->where("{$a}longitude","<>","null") + ->where("{$a}latitude","<>","null"); + } + + + + + + //排序 + switch ($order) { + case "normal": //综合排序(推薦優先) + $selfetch = $selfetch->order("{$a}recommend desc,{$a}hot desc,{$a}new desc,{$a}weigh desc,{$a}start_time desc,{$a}id desc"); + break; + case "distance": //距离优先 权重 + $selfetch = $selfetch->order("distance asc,{$a}recommend desc,{$a}weigh desc,{$a}verification_num desc,{$a}sale desc,{$a}sign_num desc"); + break; + case "hot": //熱門优先 + $selfetch = $selfetch->order("{$a}hot desc,{$a}recommend desc,{$a}weigh desc,{$a}verification_num desc,{$a}sale desc,{$a}sign_num desc"); + break; + + case "new": //平台最新优先 + $selfetch = $selfetch->order("{$a}new desc,{$a}recommend desc,{$a}weigh desc,{$a}verification_num desc,{$a}sale desc,{$a}sign_num desc"); + break; + case "selfhot": //机构热门优先 + $selfetch = $selfetch->order("{$a}selfhot desc,{$a}recommend desc,{$a}weigh desc,{$a}verification_num desc,{$a}sale desc,{$a}sign_num desc"); + break; + + case "recommend": //推薦优先 + $selfetch = $selfetch->order("{$a}recommend desc,{$a}weigh desc,{$a}verification_num desc,{$a}sale desc,{$a}sign_num desc"); + break; + + case "sale": //銷量优先 + $selfetch = $selfetch->order("{$a}sale desc,{$a}verification_num desc,{$a}sign_num desc,{$a}recommend desc,{$a}weigh desc"); + break; + + case "views": //浏览量优先 + $selfetch = $selfetch->order("{$a}views desc,{$a}recommend desc,{$a}weigh desc,{$a}verification_num desc,{$a}sale desc"); + break; + case "collect": //收藏量优先 + $selfetch = $selfetch->order("{$a}collect desc,{$a}recommend desc,{$a}weigh desc,{$a}verification_num desc,{$a}sale desc"); + break; + default: + throw new \Exception("不支持的排序类型"); + } + + if(isset($nearby) && $nearby) { +// throw new \Exception("现版本不支持"); + $selfetch = $selfetch->having("distance <= {$nearby}"); + } + + + + + $selfetch = $selfetch->page($page,$limit)->select(); + + + foreach ($selfetch as $row) { + +// $row->getRelation('manystore')->visible(['nickname']); + $row->getRelation('shop')->visible(['name','logo']); + } + $rows = $selfetch; +// $total = $selfetch->total(); + + + + //额外附加数据 + foreach ($rows as &$row) { //迭代器魔术方法遍历,填值自动引用传值 + //设置是否已收藏 + $row->is_collect = in_array($row->id,$collect_classes_lib_ids) ? 1 : 0; + + if($row->is_collect){ + $row["collect"] = Collect::where("user_id",$my_user_id)->where("classes_activity_id",$row->classes_activity_id)->find(); + } +// $classes_label_ids = $row['classes_label_ids']; +// $classes_cate_ids = $row['classes_cate_ids']; +// $classes_type_ids = $row['classes_type']; +// $classes_label = $classes_cate = $classes_type = []; +// foreach (explode(",", $classes_label_ids) as $classes_label_id){ +// if(isset($label_list[$classes_label_id]))$classes_label[] = $label_list[$classes_label_id]; +// } +// foreach (explode(",", $classes_cate_ids) as $classes_cate_id){ +// if(isset($cate_list[$classes_cate_id]))$classes_cate[] = $cate_list[$classes_cate_id]; +// } +// +// foreach (explode(",", $classes_type_ids) as $classes_type_id){ +// if(isset($type_list[$classes_type_id]))$classes_type[] = $type_list[$classes_type_id]; +// } +// +// +// $row['classes_label'] = $classes_label; +// $row['classes_cate'] = $classes_cate; +// $row['classes_type_name'] = $classes_type; + + } + $result = array("data" => $rows); + return $result; + } + + + + + + } diff --git a/application/common/model/school/classes/hourorder/Order.php b/application/common/model/school/classes/hourorder/Order.php index e5bd763..12b1a50 100644 --- a/application/common/model/school/classes/hourorder/Order.php +++ b/application/common/model/school/classes/hourorder/Order.php @@ -937,7 +937,8 @@ class Order extends BaseModel } } - + //将空格转义去掉(要考虑unicode解码) + //判断是否是免费课 diff --git a/application/config.php b/application/config.php index bd71b61..b27f86a 100644 --- a/application/config.php +++ b/application/config.php @@ -18,7 +18,7 @@ return [ // 应用命名空间 'app_namespace' => 'app', // 应用调试模式 - 'app_debug' => Env::get('app.debug', true), + 'app_debug' => Env::get('app.debug', false), // 应用Trace 'app_trace' => Env::get('app.trace', false), // 应用模式状态 @@ -159,7 +159,7 @@ return [ // 错误显示信息,非调试模式有效 'error_message' => '你所浏览的页面暂时无法访问', // 显示错误信息 - 'show_error_msg' => true, + 'show_error_msg' => false, // 异常处理handle类 留空使用 \think\exception\Handle 'exception_handle' => '', // +---------------------------------------------------------------------- diff --git a/application/extra/upload.php b/application/extra/upload.php index ad8d6df..a17ac47 100644 --- a/application/extra/upload.php +++ b/application/extra/upload.php @@ -22,7 +22,7 @@ return [ /** * 可上传的文件类型 */ - 'mimetype' => 'jpg,png,bmp,jpeg,gif,webp,zip,rar,wav,mp4,mp3,webm,p12,pem,doc,docx,xls,xlsx,pdf,txt,md,xml', + 'mimetype' => 'jpg,svg,png,bmp,jpeg,gif,webp,zip,rar,wav,mp4,mp3,webm,p12,pem,doc,docx,xls,xlsx,pdf,txt,md,xml', /** * 是否支持批量上传 */ diff --git a/application/manystore/view/school/classes/teacher/add.html b/application/manystore/view/school/classes/teacher/add.html index 197cf55..64f484d 100644 --- a/application/manystore/view/school/classes/teacher/add.html +++ b/application/manystore/view/school/classes/teacher/add.html @@ -50,6 +50,27 @@
+ +
+ +
+ +
+
+ {:__('Key')} + {:__('Value')} +
+
{:__('Append')}
+ +
+ + + + +
+
+ +
diff --git a/application/manystore/view/school/classes/teacher/edit.html b/application/manystore/view/school/classes/teacher/edit.html index ea1aa6d..1a11111 100644 --- a/application/manystore/view/school/classes/teacher/edit.html +++ b/application/manystore/view/school/classes/teacher/edit.html @@ -47,6 +47,25 @@
+ +
+ +
+ +
+
+ {:__('Key')} + {:__('Value')} +
+
{:__('Append')}
+ +
+ + +
+
+ +
diff --git a/application/manystoreapi/controller/Attachment.php b/application/manystoreapi/controller/Attachment.php index 1414759..73de73f 100644 --- a/application/manystoreapi/controller/Attachment.php +++ b/application/manystoreapi/controller/Attachment.php @@ -85,6 +85,7 @@ class Attachment extends ManystoreApiBase ->where($mimetypeQuery) ->whereRaw("`filename` NOT REGEXP '^[0-9A-Fa-f]{32}'") ->where($where) +// ->where("{$as}.shop_id", $this->auth->shop_id) ->where(...$wherekeyword) ->order("{$as}.id desc") ->paginate($limit); diff --git a/public/assets/js/backend/school/classes/classes_spec.js b/public/assets/js/backend/school/classes/classes_spec.js index 8dfd38c..8748843 100644 --- a/public/assets/js/backend/school/classes/classes_spec.js +++ b/public/assets/js/backend/school/classes/classes_spec.js @@ -1,4 +1,4 @@ -define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { +define(['jquery', 'bootstrap', 'backend', 'csmtable', 'form'], function ($, undefined, Backend, Table, Form) { var Controller = { index: function () { @@ -24,6 +24,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin sortName: 'weigh', fixedColumns: true, fixedRightNumber: 1, + asyndownload: true, columns: [ [ {checkbox: true},