站内信模板化

This commit is contained in:
15090180611 2025-01-02 18:07:25 +08:00
parent f9222e1b7f
commit 66cf670643
26 changed files with 815 additions and 59 deletions

View File

@ -5,6 +5,7 @@ namespace app\admin\controller\auth;
use app\admin\model\AuthGroup; use app\admin\model\AuthGroup;
use app\admin\model\AuthGroupAccess; use app\admin\model\AuthGroupAccess;
use app\common\controller\Backend; use app\common\controller\Backend;
use app\common\model\dyqc\ManystoreShop;
use fast\Random; use fast\Random;
use fast\Tree; use fast\Tree;
use think\Db; use think\Db;
@ -298,4 +299,34 @@ class Admin extends Backend
$this->dataLimitField = 'id'; $this->dataLimitField = 'id';
return parent::selectpage(); return parent::selectpage();
} }
/**
* 后台生成默认机构
* @return string
* @throws \think\Exception
* @throws \think\db\exception\BindParamException
* @throws \think\exception\DbException
* @throws \think\exception\PDOException
*/
public function createshop($ids = ''){
$param = $this->request->param();
if($this->request->isPost()){
try{
if(isset($param['ids']))$ids = $param['ids'];
//设置模拟资格
$model = new ManystoreShop;
$model->adminshopadd($ids,true);
}catch (\Exception $e){
$this->error($e->getMessage());
}
$this->success('生成机构成功!');
}
$row = $this->model->get($ids);
$this->view->assign('vo', $row);
return $this->view->fetch();
}
} }

View File

@ -226,4 +226,32 @@ class ManystoreShop extends Backend
return json(['list' => $list, 'total' => $total]); return json(['list' => $list, 'total' => $total]);
} }
/**
* 跳转链接
* @return string
* @throws \think\Exception
* @throws \think\db\exception\BindParamException
* @throws \think\exception\DbException
* @throws \think\exception\PDOException
*/
public function url($ids = ''){
$param = $this->request->param();
if($this->request->isPost()){
try{
if(isset($param['ids']))$ids = $param['ids'];
//设置模拟资格
$url = \app\common\model\dyqc\ManystoreShop::getPath($ids);
}catch (\Exception $e){
$this->error($e->getMessage());
}
$this->success($url);
}
$row = $this->model->get($ids);
$this->view->assign('vo', $row);
return $this->view->fetch();
}
} }

View File

@ -8,6 +8,7 @@ use app\admin\model\school\classes\Teacher;
use app\admin\model\school\classes\Verification; use app\admin\model\school\classes\Verification;
use app\admin\model\User; use app\admin\model\User;
use app\common\model\manystore\Shop; use app\common\model\manystore\Shop;
use app\common\model\school\classes\activity\Activity;
use app\common\model\school\classes\Evaluate; use app\common\model\school\classes\Evaluate;
use app\common\model\school\classes\Order; use app\common\model\school\classes\Order;
@ -308,6 +309,15 @@ class Index extends Backend
//有课程不允许删 //有课程不允许删
$classesLib = ClassesLib::where("manystore_id",$id)->find(); $classesLib = ClassesLib::where("manystore_id",$id)->find();
if($classesLib)throw new \Exception("请先删除课程后再删除机构!"); if($classesLib)throw new \Exception("请先删除课程后再删除机构!");
// 课程存在售后订单则不允许操作
$order = \app\common\model\school\classes\activity\order\Order::where("manystore_id",$id)->where("status","not in","-3,6,9")->find();
if($order)throw new \Exception("存在正在使用中的活动订单报名学员,无法继续操作!");
$activity = Activity::where("manystore_id",$id)->find();
if($activity)throw new \Exception("请先删除活动后再删除机构!");
// //有老师不允许删 // //有老师不允许删
// $teacher = Teacher::where("manystore_id",$id)->find(); // $teacher = Teacher::where("manystore_id",$id)->find();
// if($teacher)throw new \Exception("请先删除老师后再删除机构!"); // if($teacher)throw new \Exception("请先删除老师后再删除机构!");
@ -640,6 +650,26 @@ class Index extends Backend
} }
$lib->delete(); $lib->delete();
} }
//删除活动及其规格
$activitys = \app\common\model\school\classes\activity\Activity::where(array('shop_id'=>$row['shop_id']))->select();
foreach ($activitys as $activity){
$specs = $activity->items;
foreach ($specs as $spec){
$spec->delete();
}
$activity->delete();
}
$activityauths = \app\common\model\school\classes\activity\ActivityAuth::where(array('shop_id'=>$row['shop_id']))->select();
foreach ($activityauths as $activity){
$specs = $activity->itemauths;
foreach ($specs as $spec){
$spec->delete();
}
$activity->delete();
}
Admin::where(array('admin_shop_id'=>$row['shop_id']))->update(['admin_shop_id'=>0]);
Evaluate::where(array('shop_id'=>$row['shop_id']))->delete(); Evaluate::where(array('shop_id'=>$row['shop_id']))->delete();
if(!$result){ if(!$result){
exception('商家信息删除失败'); exception('商家信息删除失败');
@ -674,4 +704,31 @@ class Index extends Backend
$this->dataLimitField = 'id'; $this->dataLimitField = 'id';
return parent::selectpage(); return parent::selectpage();
} }
/**
* 跳转链接
* @return string
* @throws \think\Exception
* @throws \think\db\exception\BindParamException
* @throws \think\exception\DbException
* @throws \think\exception\PDOException
*/
public function url($ids = ''){
$param = $this->request->param();
if($this->request->isPost()){
try{
if(isset($param['ids']))$ids = $param['ids'];
//设置模拟资格
$url = \app\common\model\dyqc\ManystoreShop::getPath($ids);
}catch (\Exception $e){
$this->error($e->getMessage());
}
$this->success($url);
}
$row = $this->model->get($ids);
$this->view->assign('vo', $row);
return $this->view->fetch();
}
} }

View File

@ -1053,4 +1053,31 @@ class ClassesLib extends Backend
/**
* 跳转链接
* @return string
* @throws \think\Exception
* @throws \think\db\exception\BindParamException
* @throws \think\exception\DbException
* @throws \think\exception\PDOException
*/
public function url($ids = ''){
$param = $this->request->param();
if($this->request->isPost()){
try{
if(isset($param['ids']))$ids = $param['ids'];
//设置模拟资格
$url = \app\common\model\school\classes\ClassesLib::getPath($ids);
}catch (\Exception $e){
$this->error($e->getMessage());
}
$this->success($url);
}
$row = $this->model->get($ids);
$this->view->assign('vo', $row);
return $this->view->fetch();
}
} }

View File

@ -314,4 +314,32 @@ class Teacher extends Backend
} }
/**
* 跳转链接
* @return string
* @throws \think\Exception
* @throws \think\db\exception\BindParamException
* @throws \think\exception\DbException
* @throws \think\exception\PDOException
*/
public function url($ids = ''){
$param = $this->request->param();
if($this->request->isPost()){
try{
if(isset($param['ids']))$ids = $param['ids'];
//设置模拟资格
$url = \app\common\model\school\classes\Teacher::getPath($ids);
}catch (\Exception $e){
$this->error($e->getMessage());
}
$this->success($url);
}
$row = $this->model->get($ids);
$this->view->assign('vo', $row);
return $this->view->fetch();
}
} }

View File

@ -429,4 +429,31 @@ class Activity extends Backend
} }
/**
* 跳转链接
* @return string
* @throws \think\Exception
* @throws \think\db\exception\BindParamException
* @throws \think\exception\DbException
* @throws \think\exception\PDOException
*/
public function url($ids = ''){
$param = $this->request->param();
if($this->request->isPost()){
try{
if(isset($param['ids']))$ids = $param['ids'];
//设置模拟资格
$url = \app\common\model\school\classes\activity\Activity::getPath($ids);
}catch (\Exception $e){
$this->error($e->getMessage());
}
$this->success($url);
}
$row = $this->model->get($ids);
$this->view->assign('vo', $row);
return $this->view->fetch();
}
} }

View File

@ -134,7 +134,7 @@ class Order extends Backend
$model = (new \app\common\model\school\classes\activity\order\Order); $model = (new \app\common\model\school\classes\activity\order\Order);
$model->examine($params["id"],$auth_status,$reason,0,true,'admin',$this->auth->id,true); $model->examine($params["id"],$auth_status,$reason,0,true,'admin',$this->auth->id,true);
}catch (\Exception $e){ }catch (\Throwable $e){
$this->error($e->getMessage()); $this->error($e->getMessage());
} }

View File

@ -13,6 +13,12 @@
a { a {
color: #444; color: #444;
} }
.container{
margin-right: inherit;
margin-left: auto;
padding-left: 15px;
padding-right: 15px;
}
.login-screen { .login-screen {
@ -59,6 +65,7 @@
} }
.login-form { .login-form {
margin: 250px 30px;
padding: 40px 30px; padding: 40px 30px;
position: relative; position: relative;
z-index: 99; z-index: 99;
@ -81,7 +88,9 @@
{if $background} {if $background}
<style type="text/css"> <style type="text/css">
body{ body{
background-image: url('{$background}'); /*background-image: url('{$background}');*/
/*background-image: url('__CDN__/uniapp_image/putLogin.png');*/
background: url('__CDN__/uniapp_image/login.png') no-repeat left center fixed;
} }
</style> </style>
{/if} {/if}
@ -93,10 +102,10 @@
<div class="login-screen"> <div class="login-screen">
<div class="well"> <div class="well">
<div class="login-head"> <div class="login-head">
<img src="__CDN__/assets/img/login-head.png" style="width:100%;"/> <!-- <img src="__CDN__/assets/img/login-head.png" style="width:100%;"/>-->
</div> </div>
<div class="login-form"> <div class="login-form">
<img id="profile-img" class="profile-img-card" src="__CDN__/assets/img/avatar.png"/> <!-- <img id="profile-img" class="profile-img-card" src="__CDN__/assets/img/avatar.png"/>-->
<p id="profile-name" class="profile-name-card"></p> <p id="profile-name" class="profile-name-card"></p>
<form action="" method="post" id="login-form"> <form action="" method="post" id="login-form">

View File

@ -96,6 +96,7 @@ class Index extends Api
"site_version"=>''.config('site.version'), "site_version"=>''.config('site.version'),
"site_city"=> Virtual::getNowCity(), "site_city"=> Virtual::getNowCity(),
"site_timezone"=>config('site.timezone'), "site_timezone"=>config('site.timezone'),
"wx_miniapp_version"=>config("site.wx_miniapp_version"),
]; ];
$customer_service = [ $customer_service = [
"image"=>cdnurl(config('site.customer_service_image'),true), "image"=>cdnurl(config('site.customer_service_image'),true),

View File

@ -5,6 +5,7 @@ namespace app\common\library;
use app\common\model\school\Area; use app\common\model\school\Area;
use app\common\model\school\classes\VirtualHead; use app\common\model\school\classes\VirtualHead;
use app\common\model\school\classes\VirtualUser; use app\common\model\school\classes\VirtualUser;
use bw\Common;
/** /**
* 虚拟数据工具类 * 虚拟数据工具类
@ -40,7 +41,8 @@ class Virtual
"head_image"=>$head, "head_image"=>$head,
"time"=>$r, "time"=>$r,
"jointype" => "1", "jointype" => "1",
"havetype" => "".($k % 2) // "havetype" => "".($k % 2)
"havetype" => "0" //只要非已报名数据
]; ];
} }
@ -159,5 +161,15 @@ class Virtual
} }
public static function getPath($key,$params=[],$expression = '{{KEYWORD}}'){
$wx_miniapp_path = config("site.wx_miniapp_path");
if(!$wx_miniapp_path) throw new \Exception("请先配置小程序路径");
if(!isset($wx_miniapp_path[$key])) throw new \Exception("请先配置小程序路径");
$path = $wx_miniapp_path[$key];
// 参数替换
$template = Common::parsePrintTemplateString($path,$params,$expression);
return $template;
}
} }

View File

@ -1,7 +1,9 @@
<?php <?php
namespace app\common\listener\classeshourorder; namespace app\common\listener\classeshourorder;
use app\common\model\school\classes\hourorder\OrderLog; use app\common\model\school\classes\hourorder\OrderLog;
use app\common\model\school\classes\Teacher;
use app\common\model\school\Message; use app\common\model\school\Message;
use app\common\model\school\MessageConfig;
class OrderHook class OrderHook
{ {
@ -21,11 +23,20 @@ class OrderHook
{ {
["order"=>$order] = $params; ["order"=>$order] = $params;
$detail = $order->detail; $detail = $order->detail;
$user = $order->user;
//查询老师信息和老师用户信息
$teacher = Teacher::where("id", $detail["teacher_id"])->find();
$teacher_user = null;
if($teacher){
$teacher_user = $teacher->user;
}
//记录订单日志 //记录订单日志
if($order["type"] == "1"){ if($order["type"] == "1"){
$desc = "{$detail["title"]}课程课时{$order["name"]}课程预约下单成功,等待机构老师审核"; $desc = "";
}else{ }else{
$desc = "{$detail["title"]}课程课时{$order["name"]}预约机构老师代下单成功"; $desc = "[机构老师代操作]";
} }
$title = "创建课时预约成功"; $title = "创建课时预约成功";
$mini_type = "classes_auth"; $mini_type = "classes_auth";
@ -40,8 +51,45 @@ class OrderHook
"order_id"=>$order["id"], "order_id"=>$order["id"],
"order_no"=>$order["order_no"], "order_no"=>$order["order_no"],
]; ];
Message::$event_name = $params["event"];
Message::send($title,$desc,$mini_type,$to_id,$to_type,$status,$platform,$params,$oper_id,$oper_type);
$param = [
"title"=>$detail["title"],
"name" => $order["name"],
"order_no" => $order["order_no"],
"nickname" => $user["nickname"],
"realname" => $user["realname"],
"mobile" => $user["mobile"],
// "price" => $order["totalprice"],
"system"=>$desc,
"teacher_name"=> $teacher["name"] ?? "课程负责人",
"teacher_realname"=> $teacher_user["realname"] ?? "课程负责人真实姓名",
"teacher_nickname"=> $teacher_user["nickname"] ?? "课程负责人昵称",
"teacher_mobile"=> $teacher_user["mobile"] ?? "课程负责人电话",
"start_time" => date("Y-m-d H:i",$order["start_time"]), //格式化日期格式 $order["start_time"], //格式化日期格式
"end_time" => date("Y-m-d H:i",$order["end_time"]),
"address"=>$detail["address"]."(".$detail["address_detail"].")",
];
//发给用户
(new MessageConfig)
->setTemplate($params["event"]."_user")
->setTemplateData($param)
->setToUid($to_id)
->setMessageStatus($status)
->setMessageMiniType($mini_type)
->setMessageParams($params)
->sendMessage();
//发给老师
(new MessageConfig)
->setTemplate($params["event"]."_teacher")
->setTemplateData($param)
->setToUid($detail["user_id"])
->setMessageStatus($status)
->setMessageMiniType($mini_type)
->setMessageParams($params)
->sendMessage();
} }
@ -51,11 +99,18 @@ class OrderHook
{ {
['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id] = $params; ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id] = $params;
$detail = $order->detail; $detail = $order->detail;
$user = $order->user;
//查询老师信息和老师用户信息
$teacher = Teacher::where("id", $detail["teacher_id"])->find();
$teacher_user = null;
if($teacher){
$teacher_user = $teacher->user;
}
//插入订单取消日志 //插入订单取消日志
if(!$user_id ||$order["user_id"] !=$user_id ){ if(!$user_id ||$order["user_id"] !=$user_id ){
$desc = "[员工操作]预约{$detail["title"]}课程订单规格已变更课时为{$order["name"]}"; $desc = "[机构老师代操作]";
}else{ }else{
$desc = "预约{$detail["title"]}课程订单规格已变更课时为{$order["name"]}"; $desc = "";
} }
$title = "课时预约单更换课时"; $title = "课时预约单更换课时";
@ -71,8 +126,35 @@ class OrderHook
"order_id"=>$order["id"], "order_id"=>$order["id"],
"order_no"=>$order["order_no"], "order_no"=>$order["order_no"],
]; ];
Message::$event_name = $params["event"];
Message::send($title,$desc,$mini_type,$to_id,$to_type,$status,$platform,$params,$oper_id,$oper_type);
$param = [
"title"=>$detail["title"],
"name" => $order["name"],
"order_no" => $order["order_no"],
"nickname" => $user["nickname"],
"realname" => $user["realname"],
"mobile" => $user["mobile"],
// "price" => $order["totalprice"],
"system"=>$desc,
"teacher_name"=> $teacher["name"] ?? "课程负责人",
"teacher_realname"=> $teacher_user["realname"] ?? "课程负责人真实姓名",
"teacher_nickname"=> $teacher_user["nickname"] ?? "课程负责人昵称",
"teacher_mobile"=> $teacher_user["mobile"] ?? "课程负责人电话",
"start_time" => date("Y-m-d H:i",$order["start_time"]), //格式化日期格式 $order["start_time"], //格式化日期格式
"end_time" => date("Y-m-d H:i",$order["end_time"]),
"address"=>$detail["address"]."(".$detail["address_detail"].")",
];
//发给用户
(new MessageConfig)
->setTemplate($params["event"])
->setTemplateData($param)
->setToUid($to_id)
->setMessageStatus($status)
->setMessageMiniType($mini_type)
->setMessageParams($params)
->sendMessage();
} }
@ -85,6 +167,13 @@ class OrderHook
{ {
['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id] = $params; ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id] = $params;
$detail = $order->detail; $detail = $order->detail;
$user = $order->user;
//查询老师信息和老师用户信息
$teacher = Teacher::where("id", $detail["teacher_id"])->find();
$teacher_user = null;
if($teacher){
$teacher_user = $teacher->user;
}
//插入订单取消日志 //插入订单取消日志
if(!$user_id ||$order["user_id"] !=$user_id ){ if(!$user_id ||$order["user_id"] !=$user_id ){
$pron = "[员工操作]"; $pron = "[员工操作]";
@ -106,8 +195,37 @@ class OrderHook
"order_id"=>$order["id"], "order_id"=>$order["id"],
"order_no"=>$order["order_no"], "order_no"=>$order["order_no"],
]; ];
Message::$event_name = $params["event"];
Message::send($title,$desc,$mini_type,$to_id,$to_type,$status,$platform,$params,$oper_id,$oper_type);
$param = [
"title"=>$detail["title"],
"name" => $order["name"],
"order_no" => $order["order_no"],
"nickname" => $user["nickname"],
"realname" => $user["realname"],
"mobile" => $user["mobile"],
// "price" => $order["totalprice"],
"system"=>$desc,
"teacher_name"=> $teacher["name"] ?? "课程负责人",
"teacher_realname"=> $teacher_user["realname"] ?? "课程负责人真实姓名",
"teacher_nickname"=> $teacher_user["nickname"] ?? "课程负责人昵称",
"teacher_mobile"=> $teacher_user["mobile"] ?? "课程负责人电话",
"start_time" => date("Y-m-d H:i",$order["start_time"]), //格式化日期格式 $order["start_time"], //格式化日期格式
"end_time" => date("Y-m-d H:i",$order["end_time"]),
"address"=>$detail["address"]."(".$detail["address_detail"].")",
];
//发给用户
(new MessageConfig)
->setTemplate($params["event"])
->setTemplateData($param)
->setToUid($to_id)
->setMessageStatus($status)
->setMessageMiniType($mini_type)
->setMessageParams($params)
->sendMessage();
} }
// 订单审核失败后 // 订单审核失败后

View File

@ -142,10 +142,11 @@ class OrderHook
{ {
["order"=>$order] = $params; ["order"=>$order] = $params;
$detail = $order->detail; $detail = $order->detail;
$user = $order->user;
//记录订单日志 //记录订单日志
$desc = "恭喜您!您的{$detail["title"]}课程完结啦"; $desc = "";
$title = "课程完结撒花!"; $title = "课程完结撒花!";
$mini_type = "order_notice"; $mini_type = "order_notice";
@ -161,8 +162,26 @@ class OrderHook
"order_no"=>$order["order_no"], "order_no"=>$order["order_no"],
"classes_lib_id"=>$order["classes_lib_id"], "classes_lib_id"=>$order["classes_lib_id"],
]; ];
Message::$event_name = $params["event"];
Message::send($title,$desc,$mini_type,$to_id,$to_type,$status,$platform,$params,$oper_id,$oper_type);
$param = [
"system"=> $desc,
"title"=> $detail["title"],
"order_no" => $order["order_no"],
"nickname" => $user["nickname"],
"realname" => $user["realname"],
"mobile" => $user["mobile"],
"price" => $order["payprice"],
];
(new MessageConfig)
->setTemplate($params["event"])
->setTemplateData($param)
->setToUid($to_id)
->setMessageStatus($status)
->setMessageMiniType($mini_type)
->setMessageParams($params)
->sendMessage();
} }
@ -172,12 +191,12 @@ class OrderHook
public function classesOrderEvaluateAfter(&$params) public function classesOrderEvaluateAfter(&$params)
{ {
['order' => $order,"classes_evaluate"=>$classes_evaluate,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id] = $params; ['order' => $order,"classes_evaluate"=>$classes_evaluate,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id] = $params;
$user = $order->user;
$detail = $order->detail; $detail = $order->detail;
if(!$user_id ||$order["user_id"] !=$user_id ){ if(!$user_id ||$order["user_id"] !=$user_id ){
$desc = "[系统操作]课程{$detail["title"]}订单反馈成功"; $desc = "[系统操作]";
}else{ }else{
$desc = "课程{$detail["title"]}订单反馈成功"; $desc = "";
} }
$title = "课程订单已反馈"; $title = "课程订单已反馈";
@ -193,10 +212,37 @@ class OrderHook
"order_id"=>$order["id"], "order_id"=>$order["id"],
"order_no"=>$order["order_no"], "order_no"=>$order["order_no"],
]; ];
Message::$event_name = $params["event"];
Message::send($title,$desc,$mini_type,$to_id,$to_type,$status,$platform,$params,$oper_id,$oper_type);
Evaluate::evaluateStatistics($classes_evaluate->id);
$param = [
"system"=> $desc,
"title"=> $detail["title"],
"order_no" => $order["order_no"],
"nickname" => $user["nickname"],
"realname" => $user["realname"],
"mobile" => $user["mobile"],
"price" => $order["payprice"],
];
//发给用户
(new MessageConfig)
->setTemplate($params["event"]."_user")
->setTemplateData($param)
->setToUid($to_id)
->setMessageStatus($status)
->setMessageMiniType($mini_type)
->setMessageParams($params)
->sendMessage();
//发给老师
(new MessageConfig)
->setTemplate($params["event"]."_teacher")
->setTemplateData($param)
->setToUid($detail["user_id"])
->setMessageStatus($status)
->setMessageMiniType($mini_type)
->setMessageParams($params)
->sendMessage();
} }
@ -206,12 +252,12 @@ class OrderHook
public function classesOrderEvaluateUpdateAfter(&$params) public function classesOrderEvaluateUpdateAfter(&$params)
{ {
['order' => $order,"classes_evaluate"=>$classes_evaluate,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id] = $params; ['order' => $order,"classes_evaluate"=>$classes_evaluate,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id] = $params;
$user = $order->user;
$detail = $order->detail; $detail = $order->detail;
if(!$user_id ||$order["user_id"] !=$user_id ){ if(!$user_id ||$order["user_id"] !=$user_id ){
$desc = "[系统操作]课程{$detail["title"]}订单反馈更新成功"; $desc = "[系统操作]";
}else{ }else{
$desc = "课程{$detail["title"]}订单反馈更新成功"; $desc = "";
} }
$title = "课程订单已修改反馈"; $title = "课程订单已修改反馈";
@ -227,9 +273,39 @@ class OrderHook
"order_id"=>$order["id"], "order_id"=>$order["id"],
"order_no"=>$order["order_no"], "order_no"=>$order["order_no"],
]; ];
Message::$event_name = $params["event"];
Message::send($title,$desc,$mini_type,$to_id,$to_type,$status,$platform,$params,$oper_id,$oper_type);
Evaluate::evaluateStatistics($classes_evaluate->id);
$param = [
"system"=> $desc,
"title"=> $detail["title"],
"order_no" => $order["order_no"],
"nickname" => $user["nickname"],
"realname" => $user["realname"],
"mobile" => $user["mobile"],
"price" => $order["payprice"],
];
//发给用户
(new MessageConfig)
->setTemplate($params["event"]."_user")
->setTemplateData($param)
->setToUid($to_id)
->setMessageStatus($status)
->setMessageMiniType($mini_type)
->setMessageParams($params)
->sendMessage();
//发给老师
(new MessageConfig)
->setTemplate($params["event"]."_teacher")
->setTemplateData($param)
->setToUid($detail["user_id"])
->setMessageStatus($status)
->setMessageMiniType($mini_type)
->setMessageParams($params)
->sendMessage();
} }

View File

@ -42,6 +42,21 @@ class ShopHook
\app\common\model\school\classes\ClassesLib::update_classes($classesLib["id"]); \app\common\model\school\classes\ClassesLib::update_classes($classesLib["id"]);
} }
$activitys = \app\common\model\school\classes\activity\Activity::where("shop_id",$shop["id"])->where("address_type","1")->select();
foreach ($activitys as $activity){
$activity["address_city"] = $shop["address_city"];
$activity["province"] = $shop["province"];
$activity["city"] = $shop["city"];
$activity["district"] = $shop["district"];
$activity["longitude"] = $shop["longitude"];
$activity["latitude"] = $shop["latitude"];
$activity["address"] = $shop["address"];
$activity["address_detail"] = $shop["address_detail"];
$activity->save();
\app\common\model\school\classes\activity\Activity::update_classes($activity["id"]);
}
} }

View File

@ -2,11 +2,14 @@
namespace app\common\model\dyqc; namespace app\common\model\dyqc;
use app\admin\model\Admin;
use app\common\library\Virtual;
use app\common\model\BaseModel; use app\common\model\BaseModel;
use app\common\model\school\Area; use app\common\model\school\Area;
use app\common\model\school\classes\ClassesLib; use app\common\model\school\classes\ClassesLib;
use app\common\model\school\classes\Teacher; use app\common\model\school\classes\Teacher;
use app\common\model\school\classes\Verification; use app\common\model\school\classes\Verification;
use app\common\model\school\SearchCity;
use app\common\model\User; use app\common\model\User;
use app\manystore\model\Manystore; use app\manystore\model\Manystore;
use app\manystore\model\ManystoreAuthGroup; use app\manystore\model\ManystoreAuthGroup;
@ -801,7 +804,7 @@ public function creatShop($type,$user_id,$params){
$manystore_params["username"] = $params["tel"] ?: self::$pinyin->permalink($manystore_params["nickname"]); $manystore_params["username"] = $params["tel"] ?: self::$pinyin->permalink($manystore_params["nickname"]);
$manystore_params["email"] = $manystore_params["username"] . "@xx.com"; $manystore_params["email"] = $manystore_params["username"] . "@xx.com";
$manystore_params['password'] = self::getDefaultPassword($type,$user_id,$params); $manystore_params['password'] = $params['password'] ?? self::getDefaultPassword($type,$user_id,$params);
$manystore_params['shop_id'] = $shop->id; $manystore_params['shop_id'] = $shop->id;
$manystore_params['salt'] = Random::alnum(); $manystore_params['salt'] = Random::alnum();
@ -810,9 +813,11 @@ public function creatShop($type,$user_id,$params){
//如果用户存在头像取用户头像 //如果用户存在头像取用户头像
if($user["avatar"]) $manystore_params['avatar'] = $user["avatar"]; if($user["avatar"]) $manystore_params['avatar'] = $user["avatar"];
$manystore_params['is_main'] = 1; $manystore_params['is_main'] = 1;
$manystore_params['status'] = "hidden"; if(!isset($params['password'])){
$manystore_params['status'] = "hidden";
}
$model = new Manystore(); $model = new Manystore();
$result = $model->allowField(true)->save($manystore_params); $result = $model->allowField(true)->save($manystore_params);
@ -1080,5 +1085,82 @@ public static function getAuthInfo($user_id){
// //
// } // }
public function adminshopadd($admin_id,$trans=false){
$admin = Admin::where("id",$admin_id)->find();
if(!$admin){
throw new \Exception("管理员不存在");
}
//判断逻辑
if($trans){
self::beginTrans();
}
$res = true;
try{
$shop = $this->adminCreateShop($admin_id);
$admin["admin_shop_id"] = $shop["id"];
$admin->save();
if($trans){
self::commitTrans();
}
}catch (\Exception $e){
if($trans){
self::rollbackTrans();
}
throw new \Exception($e->getMessage().$e->getFile().$e->getLine());
}
return $res;
}
//根据总管理员创建机构
public function adminCreateShop($admin_id){
$admin = Admin::where("id",$admin_id)->find();
if(!$admin){
throw new \Exception("管理员不存在");
}
if(!$admin["mobile"]) throw new \Exception("管理员手机号不存在");
if(!$admin["nickname"]) throw new \Exception("管理员昵称不存在");
if(!$admin['area_json']) throw new \Exception("管理员限定区域不存在");
$admin['area_json'] = explode(",",$admin['area_json']);
$searchCity = SearchCity::where( "id",$admin['area_json'][0] ?? 0)->find();
if(!$searchCity) throw new \Exception("管理员限定区域不存在");
//根据手机号生成机构用户
$user = \app\common\model\User::where("mobile",$admin["mobile"])->find();
$people_name = $admin["nickname"] ."专属机构";
$people_mobile = $admin["mobile"];
//检测更新教练下单学员账号创建状态 2022/8/27 new
if(!$user)$user = (new \app\common\model\User)->addUserByMobile($people_mobile,$people_name);
$type = '2';
$shop = self::where( "user_id",$user["id"])->find();
$params = [];
$params["user_id"] = $user["id"];
$params["name"] = $people_name;
$params["logo"] = config("site.shop_default_image");
$params["image"] = $admin["avatar"] ?: config("site.shop_default_timage");
$params["images"] = $admin["avatar"] ?: config("site.shop_default_images");
$params["address_city"] = $searchCity["address_city"];
$params["province"] = $searchCity["province"];
$params["city"] = $searchCity["city"];
$params["district"] = $searchCity["district"];
$params["address"] = "";
$params["address_detail"] = "";
$params["tel"] = $people_mobile;
$params["content"] = "";
$params["desc"] = "总后台创建账号时自动生成";
$params["status"]= 1;
$params["auth_time"] = time();
$params["admin_id"] = $admin_id;
$params["password"] = "a123456";
if( !$shop) $shop = $this->creatShop($type,$user["id"],$params);
return $shop;
}
public static function getPath($id){
return Virtual::getPath("shop",["shop_id"=>$id]);
}
} }

View File

@ -38,6 +38,8 @@ class MessageConfig extends Model
protected $messageStatus = "system"; protected $messageStatus = "system";
protected $messageParams = []; protected $messageParams = [];
protected $message_title = "";
//创建上面变量的get和set方法 //创建上面变量的get和set方法
public function setMessageMiniType($value){ public function setMessageMiniType($value){
$this->messageMiniType = $value; $this->messageMiniType = $value;
@ -190,6 +192,9 @@ class MessageConfig extends Model
public function getMessageContent(){ public function getMessageContent(){
return $this->templateString; return $this->templateString;
} }
public function getTemplate(){ public function getTemplate(){
return $this->messageTemplate; return $this->messageTemplate;
} }
@ -201,6 +206,13 @@ class MessageConfig extends Model
$this->toUid = $uid; $this->toUid = $uid;
return $this; return $this;
} }
public function getMessageTitle(){
return $this->message_title;
}
public function setMessageTitle($title){
$this->message_title = $title;
return $this;
}
@ -212,6 +224,13 @@ class MessageConfig extends Model
$template_content = $template['selfmail_template_text']; $template_content = $template['selfmail_template_text'];
//解析获取文本内容 //解析获取文本内容
$this->templateString = Common::parsePrintTemplateString($template_content,$this->templateData,$expression); $this->templateString = Common::parsePrintTemplateString($template_content,$this->templateData,$expression);
$message_title = $template['selfmail_title'];
//解析获取文本内容
$this->message_title = Common::parsePrintTemplateString($message_title,$this->templateData,$expression);
return $this; return $this;
} }
@ -223,7 +242,7 @@ class MessageConfig extends Model
if($template['selfmail'] == '1'){ if($template['selfmail'] == '1'){
if(!$this->toUid) throw new \Exception("发送对象不能为空"); if(!$this->toUid) throw new \Exception("发送对象不能为空");
$message_content = $this->getMessageContent(); $message_content = $this->getMessageContent();
$message_title = $template['selfmail_title']; $message_title = $this->getMessageTitle();
if(!$message_content || !$message_title)return false; if(!$message_content || !$message_title)return false;
Message::$event_name = $template["event"]; Message::$event_name = $template["event"];
Message::send($message_title,$message_content,$this->getMessageMiniType(),$this->toUid,$this->messageToType,$this->messageStatus,$this->messagePlatform,$this->messageParams,$this->messageOperId, $this->messageOperType); Message::send($message_title,$message_content,$this->getMessageMiniType(),$this->toUid,$this->messageToType,$this->messageStatus,$this->messagePlatform,$this->messageParams,$this->messageOperId, $this->messageOperType);

View File

@ -1399,13 +1399,18 @@ $user_unpaid_order = $user_paid_order =null;
//数组倒过来 //数组倒过来
$params["spec"] = array_reverse($params["spec"]); $params["spec"] = array_reverse($params["spec"]);
$insert_spec = []; $insert_spec = [];
$need_up = false;
foreach ($params["spec"] as $k=>&$v){ foreach ($params["spec"] as $k=>&$v){
$v["weigh"] = $k + 1; $v["weigh"] = $k + 1;
if(!empty($v["id"]))$insert_spec[] = $v["id"]; if(!empty($v["id"]))$insert_spec[] = $v["id"];
if($v["status"] == '1'){
$need_up = true;
}
} }
if($insert_spec && $row){ if($insert_spec && $row){
$params["delete_spec_ids"] = ClassesSpec::where("classes_lib_id",$row->id)->where("id","not in",$insert_spec)->column("id"); $params["delete_spec_ids"] = ClassesSpec::where("classes_lib_id",$row->id)->where("id","not in",$insert_spec)->column("id");
} }
if(!$need_up)throw new \Exception("新添加的课程请先至少添加一个上架的课时规格后再上架!");
} }
//存在需要删除的规格则判断规格是否能删除 //存在需要删除的规格则判断规格是否能删除
@ -1422,8 +1427,8 @@ $user_unpaid_order = $user_paid_order =null;
if(empty($params["spec"])){ if(empty($params["spec"])){
if(!$row)throw new \Exception("新添加的课程请先至少添加一个课时规格后再上架!"); if(!$row)throw new \Exception("新添加的课程请先至少添加一个课时规格后再上架!");
//判断是否拥有课时规格,没有则无法上架 //判断是否拥有课时规格,没有则无法上架
$check_spec = \app\common\model\school\classes\ClassesSpec::where("classes_lib_id",$row->id)->count(); $check_spec = \app\common\model\school\classes\ClassesSpec::where("classes_lib_id",$row->id)->where("status",'1')->count();
if(!$check_spec)throw new \Exception("新添加的课程请先至少添加一个课时规格后再上架!"); if(!$check_spec)throw new \Exception("新添加的课程请先至少添加一个上架的课时规格后再上架!");
} }
} }
@ -1877,4 +1882,10 @@ $user_unpaid_order = $user_paid_order =null;
public static function getPath($id){
return Virtual::getPath("classes",["classes_id"=>$id]);
}
} }

View File

@ -2,6 +2,7 @@
namespace app\common\model\school\classes; namespace app\common\model\school\classes;
use app\common\library\Virtual;
use app\common\model\BaseModel; use app\common\model\BaseModel;
use think\Model; use think\Model;
use traits\model\SoftDelete; use traits\model\SoftDelete;
@ -162,5 +163,8 @@ class Teacher extends BaseModel
public static function getPath($id){
return Virtual::getPath("teacher",["teacher_id"=>$id]);
}
} }

View File

@ -3,6 +3,7 @@
namespace app\common\model\school\classes\activity; namespace app\common\model\school\classes\activity;
use app\admin\model\manystore\Shop; use app\admin\model\manystore\Shop;
use app\common\library\Virtual;
use app\common\model\manystore\UserAuth; use app\common\model\manystore\UserAuth;
use app\common\model\school\classes\activity\order\Order; use app\common\model\school\classes\activity\order\Order;
use app\common\model\BaseModel; use app\common\model\BaseModel;
@ -647,13 +648,19 @@ class Activity extends BaseModel
//数组倒过来 //数组倒过来
$params["item_json"] = array_reverse($params["item_json"]); $params["item_json"] = array_reverse($params["item_json"]);
$insert_spec = []; $insert_spec = [];
$need_up = false;
foreach ($params["item_json"] as $k=>&$v){ foreach ($params["item_json"] as $k=>&$v){
$v["weigh"] = $k + 1; $v["weigh"] = $k + 1;
if(!empty($v["id"]))$insert_spec[] = $v["id"]; if(!empty($v["id"]))$insert_spec[] = $v["id"];
if($v["status"] == '1'){
$need_up = true;
}
} }
if($insert_spec && $row){ if($insert_spec && $row){
$params["delete_spec_ids"] = ActivityItem::where("classes_activity_id",$row->id)->where("id","not in",$insert_spec)->column("id"); $params["delete_spec_ids"] = ActivityItem::where("classes_activity_id",$row->id)->where("id","not in",$insert_spec)->column("id");
} }
if(!$need_up)throw new \Exception("新添加的活动请先至少添加一个活动规格后再上架!");
} }
//存在需要删除的规格则判断规格是否能删除 //存在需要删除的规格则判断规格是否能删除
@ -670,8 +677,8 @@ class Activity extends BaseModel
if(empty($params["item_json"])){ if(empty($params["item_json"])){
if(!$row)throw new \Exception("新添加的活动请先至少添加一个活动规格后再上架!"); if(!$row)throw new \Exception("新添加的活动请先至少添加一个活动规格后再上架!");
//判断是否拥有课时规格,没有则无法上架 //判断是否拥有课时规格,没有则无法上架
$check_spec = ActivityItem::where("classes_activity_id",$row->id)->count(); $check_spec = ActivityItem::where("classes_activity_id",$row->id)->where("status",'1')->count();
if(!$check_spec)throw new \Exception("新添加的活动请先至少添加一个活动规格后再上架!"); if(!$check_spec)throw new \Exception("新添加的活动请先至少添加一个上架的活动规格后再上架!");
} }
} }
@ -1588,5 +1595,8 @@ class Activity extends BaseModel
} }
public static function getPath($id){
return Virtual::getPath("activity",["activity_id"=>$id]);
}
} }

View File

@ -773,7 +773,7 @@ class Order extends BaseModel
->where('status',"not in",["-3","6"]) ->where('status',"not in",["-3","6"])
->where('user_id',$user_id) ->where('user_id',$user_id)
->find(); ->find();
if($order_info) throw new \Exception("该活动规格已预约或已上过,请勿重复预约!"); if($order_info && $check) throw new \Exception("该活动规格已预约或已上过,请勿重复预约!");
//新增或更换课时时判断 //新增或更换课时时判断
//是否达成限制人数 //是否达成限制人数
@ -802,7 +802,7 @@ class Order extends BaseModel
throw new \Exception("该课程活动信息缺失!"); throw new \Exception("该课程活动信息缺失!");
} }
if($classes_lib_spec_info["feel"] == '1'){ if($classes_lib_spec_info["feel"] == '1' && $check){
//免费课开始和结束时间有交叠无法下预约 //免费课开始和结束时间有交叠无法下预约
if(!config("site.free_time_activity_check")){ if(!config("site.free_time_activity_check")){
//如果是免费课 //如果是免费课
@ -829,7 +829,7 @@ class Order extends BaseModel
} }
if(!config("site.all_time_activity_check")){ if(!config("site.all_time_activity_check") && $check){
//判断时间是否有交叠 //判断时间是否有交叠
$start_time = $lib['start_time']; $start_time = $lib['start_time'];
$end_time = $lib['end_time']; $end_time = $lib['end_time'];
@ -1520,6 +1520,7 @@ class Order extends BaseModel
if($trans){ if($trans){
self::beginTrans(); self::beginTrans();
} }
$return = false;
$res = true; $res = true;
try{ try{
//事务逻辑 //事务逻辑
@ -1559,16 +1560,16 @@ class Order extends BaseModel
}else{ }else{
//调用退款发起 //调用退款发起
//更新订单状态 //更新订单状态
$order = self::updateExamineFailSettlement($order,$reason,$user_id ?: $oper_id,$oper_type); $order = self::updateExamineFailSettlement($order['order_no'],$reason,$user_id ?: $oper_id,$oper_type);
//审核失败逻辑 //审核失败逻辑
OrderLog::log($order['id'],$pron."课程活动单审核不通过,原因;{$reason},该活动单将自动退款以便重新下单",$oper_type ?: 'user', $oper_id ?: $order['user_id']); OrderLog::log($order['id'],$pron."课程活动单审核不通过,原因;{$reason},该活动单将自动退款以便重新下单",$oper_type ?: 'user', $oper_id ?: $order['user_id']);
//调用订单事件 //调用订单事件
$data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id]; $data = ['order' => $order,"user_id"=>$user_id,"oper_type"=>$oper_type,"oper_id"=>$oper_id];
\think\Hook::listen('classes_activity_order_auth_fail_after', $data); \think\Hook::listen('classes_activity_order_auth_fail_after', $data);
$return = true;
// throw new \Exception("测试错误!".$order["status"]);
self::orderRefund($order,$order['sub_refundprice'],$oper_type,$oper_id,$trans=false,$admin=false); // self::orderRefund($order['order_no'],$order['sub_refundprice'],$oper_type,$oper_id,$trans=false,$admin=false);
} }
} }
@ -1579,12 +1580,15 @@ class Order extends BaseModel
if($trans){ if($trans){
self::commitTrans(); self::commitTrans();
} }
}catch (\Exception $e){ }catch (\Throwable $e){
if($trans){ if($trans){
self::rollbackTrans(); self::rollbackTrans();
} }
throw new \Exception($e->getMessage()); throw new \Exception($e->getMessage().$e->getFile().$e->getLine());
} }
if($return)self::orderRefund($order['order_no'],$order['sub_refundprice'],$oper_type,$oper_id,$trans=false,$admin=false);
return $order; return $order;
} }
@ -1615,6 +1619,9 @@ class Order extends BaseModel
//事务逻辑 //事务逻辑
switch ($order['pay_type']) { switch ($order['pay_type']) {
case "wechat": //微信退款 case "wechat": //微信退款
self::wechatRefund($order,$refund_money,$oper_type,$oper_id); self::wechatRefund($order,$refund_money,$oper_type,$oper_id);
break; break;
// case "alipay": //支付宝退款 // case "alipay": //支付宝退款
@ -1692,7 +1699,7 @@ class Order extends BaseModel
$config['notify_url'] = $notify_url; $config['notify_url'] = $notify_url;
$pay = Pay::wechat($config); $pay = Pay::wechat($config);
// throw new \Exception($trans."111测试错误".$order["status"]);
$result = $pay->refund($order_data); $result = $pay->refund($order_data);
\think\Log::write('refund-result' . json_encode($result)); \think\Log::write('refund-result' . json_encode($result));
@ -1747,7 +1754,7 @@ class Order extends BaseModel
if(is_string($order))$order = self::getHaveRefundOrder($order); if(is_string($order))$order = self::getHaveRefundOrder($order);
$order->before_status = $order->status;//refund_status $order->before_status = $order->status;//refund_status
$order->status = "6"; $order->status = "6";
$order->service_stauts = "6"; $order->server_status = "6";
$order->real_refundprice = bcadd($order->real_refundprice ?:'0',$order->sub_refundprice ,2); $order->real_refundprice = bcadd($order->real_refundprice ?:'0',$order->sub_refundprice ,2);
$order->sub_refundprice = 0; $order->sub_refundprice = 0;
$order->refundtime = time(); $order->refundtime = time();
@ -1837,7 +1844,7 @@ class Order extends BaseModel
if($trans){ if($trans){
self::commitTrans(); self::commitTrans();
} }
}catch (\Exception $e){ }catch (\Throwable $e){
if($trans){ if($trans){
self::rollbackTrans(); self::rollbackTrans();
} }

View File

@ -31,7 +31,7 @@
box-shadow: 0 0 30px rgba(0, 0, 0, 0.1); box-shadow: 0 0 30px rgba(0, 0, 0, 0.1);
background: rgba(255, 255, 255, 1); background: rgba(255, 255, 255, 1);
border: none; border: none;
overflow: hidden; /*overflow: hidden;*/
padding: 0; padding: 0;
} }
@ -61,6 +61,7 @@
} }
.login-form { .login-form {
margin: 250px 30px;
padding: 40px 30px; padding: 40px 30px;
position: relative; position: relative;
z-index: 99; z-index: 99;
@ -84,7 +85,8 @@
<style type="text/css"> <style type="text/css">
body{ body{
/*background-image: url('{$background}');*/ /*background-image: url('{$background}');*/
background: url('__CDN__/uniapp_image/login.png') no-repeat left center fixed; background-image: url('__CDN__/uniapp_image/putLogin.png');
/*background: url('__CDN__/uniapp_image/login.png') no-repeat left center fixed;*/
} }
</style> </style>
{/if} {/if}
@ -96,10 +98,10 @@
<div class="login-screen"> <div class="login-screen">
<div class="well"> <div class="well">
<div class="login-head"> <div class="login-head">
<img src="__CDN__/assets/img/login-head.png" style="width:100%;"/> <!-- <img src="__CDN__/assets/img/login-head.png" style="width:100%;"/>-->
</div> </div>
<div class="login-form"> <div class="login-form">
<img id="profile-img" class="profile-img-card" src="__CDN__/assets/img/avatar.png"/> <!-- <img id="profile-img" class="profile-img-card" src="__CDN__/assets/img/avatar.png"/>-->
<p id="profile-name" class="profile-name-card"></p> <p id="profile-name" class="profile-name-card"></p>
<form action="" method="post" id="login-form"> <form action="" method="post" id="login-form">

View File

@ -10,6 +10,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
edit_url: 'auth/admin/edit', edit_url: 'auth/admin/edit',
del_url: 'auth/admin/del', del_url: 'auth/admin/del',
multi_url: 'auth/admin/multi', multi_url: 'auth/admin/multi',
createshop_url: 'auth/admin/createshop',
} }
}); });
@ -27,6 +28,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
// 初始化表格 // 初始化表格
table.bootstrapTable({ table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url, url: $.fn.bootstrapTable.defaults.extend.index_url,
fixedColumns: true,
fixedRightNumber: 1,
columns: [ columns: [
[ [
{field: 'state', checkbox: true, }, {field: 'state', checkbox: true, },
@ -42,12 +45,61 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
{field: 'status', title: __("Status"), searchList: {"normal":__('Normal'),"hidden":__('Hidden')}, formatter: Table.api.formatter.status}, {field: 'status', title: __("Status"), searchList: {"normal":__('Normal'),"hidden":__('Hidden')}, formatter: Table.api.formatter.status},
{field: 'logintime', title: __('Login time'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true}, {field: 'logintime', title: __('Login time'), formatter: Table.api.formatter.datetime, operate: 'RANGE', addclass: 'datetimerange', sortable: true},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: function (value, row, index) {
{field: 'oper', title: __('其他操作'), table: table , buttons: [
{name: 'createshop',
text: '生成默认机构',
icon: 'fa fa-sign-in',
classname: 'btn btn-xs btn-warning btn-magic btn-ajax',
url: $.fn.bootstrapTable.defaults.extend.createshop_url,
confirm: '确认生成默认机构么请确保账号有区域昵称和手机号生成后需自己去补全缺失的机构信息默认密码为a123456',
success: function (data, ret) {
Layer.alert(ret.msg );
$(".btn-refresh").trigger("click");
},
error: function (data, ret) {
Layer.alert(ret.msg);
return false;
},
visible: function (row) {
//显示条件 只能待入住订单
if(!row.admin_shop_id){
return true;
}
return false;
}},
{
name: 'manystore',
text: __('我的默认机构'),
title: __('我的默认机构'),
classname: 'btn btn-dialog',
icon: 'fa fa-home',
dropdown : '更多',
url: manystore_url,
callback: function (data) {
},
visible: function (row) {
return row.admin_shop_id;
}
},
], events: Table.api.events.operate, formatter: function (value, row, index) {
if(row.id == Config.admin.id){ if(row.id == Config.admin.id){
return ''; return '';
} }
return Table.api.formatter.operate.call(this, value, row, index); return Table.api.formatter.operate.call(this, value, row, index);
}} }},
// {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: function (value, row, index) {
// if(row.id == Config.admin.id){
// return '';
// }
// return Table.api.formatter.operate.call(this, value, row, index);
// }}
] ]
] ]
}); });
@ -89,5 +141,11 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
} }
} }
}; };
var manystore_url = function (row,dom) {
return 'manystore/index/index?shop_id='+row.admin_shop_id;
}
return Controller; return Controller;
}); });

View File

@ -9,6 +9,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
add_url: 'manystore/index/add' + location.search, add_url: 'manystore/index/add' + location.search,
edit_url: 'manystore/index/edit' + location.search, edit_url: 'manystore/index/edit' + location.search,
del_url: 'manystore/index/del', del_url: 'manystore/index/del',
url_url: 'manystore/index/url',
free_url: 'manystore/index/free', free_url: 'manystore/index/free',
multi_url: 'manystore/index/multi', multi_url: 'manystore/index/multi',
} }
@ -82,7 +83,40 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
{field: 'operate', title: __('Operate'),width:180, table: table , buttons: [ {field: 'operate', title: __('Operate'),width:180, table: table , buttons: [
{name: 'free', {name: 'url',
text: '查看小程序链接',
icon: 'fa fa-chain',
classname: 'btn btn-ajax',
url: $.fn.bootstrapTable.defaults.extend.url_url,
confirm: '查看小程序链接',
dropdown : '更多',
success: function (data, ret) {
//JS将内容放入复制板
try {
navigator.clipboard.writeText(ret.msg);
console.log('Text copied to clipboard');
Layer.alert("已自动复制内容 : " + ret.msg );
} catch (err) {
console.error('Failed to copy: ', err);
Layer.alert("浏览器不支持复制,请自行复制 : " + ret.msg );
}
$(".btn-refresh").trigger("click");
},
error: function (data, ret) {
Layer.alert(ret.msg);
return false;
},
// visible: function (row) {
// //显示条件 只能待入住订单
// if(row.status == '3'){
// return true;
// }
// return false;
// }
},
{name: 'free',
text: '免登录进入机构后台', text: '免登录进入机构后台',
icon: 'fa fa-sign-in', icon: 'fa fa-sign-in',
classname: 'btn btn-ajax', classname: 'btn btn-ajax',

View File

@ -9,6 +9,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
add_url: 'school/classes/activity/activity/add'+ location.search, add_url: 'school/classes/activity/activity/add'+ location.search,
edit_url: 'school/classes/activity/activity/edit'+ location.search, edit_url: 'school/classes/activity/activity/edit'+ location.search,
del_url: 'school/classes/activity/activity/del', del_url: 'school/classes/activity/activity/del',
url_url: 'school/classes/activity/activity/url',
multi_url: 'school/classes/activity/activity/multi', multi_url: 'school/classes/activity/activity/multi',
import_url: 'school/classes/activity/activity/import', import_url: 'school/classes/activity/activity/import',
table: 'school_classes_activity', table: 'school_classes_activity',
@ -79,6 +80,38 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
{field: 'operate', title: __('Operate'), table: table , buttons: [ {field: 'operate', title: __('Operate'), table: table , buttons: [
{name: 'url',
text: '查看小程序链接',
icon: 'fa fa-chain',
classname: 'btn btn-ajax',
url: $.fn.bootstrapTable.defaults.extend.url_url,
confirm: '查看小程序链接',
dropdown : '更多',
success: function (data, ret) {
//JS将内容放入复制板
try {
navigator.clipboard.writeText(ret.msg);
console.log('Text copied to clipboard');
Layer.alert("已自动复制内容 : " + ret.msg );
} catch (err) {
console.error('Failed to copy: ', err);
Layer.alert("浏览器不支持复制,请自行复制 : " + ret.msg );
}
$(".btn-refresh").trigger("click");
},
error: function (data, ret) {
Layer.alert(ret.msg);
return false;
},
// visible: function (row) {
// //显示条件 只能待入住订单
// if(row.status == '3'){
// return true;
// }
// return false;
// }
},
{ {
name: 'activity_auth', name: 'activity_auth',
text: __('审核记录'), text: __('审核记录'),

View File

@ -10,6 +10,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
addnew_url: 'school/classes/classes_lib/addnew'+ location.search, addnew_url: 'school/classes/classes_lib/addnew'+ location.search,
edit_url: 'school/classes/classes_lib/edit'+ location.search, edit_url: 'school/classes/classes_lib/edit'+ location.search,
copy_url: 'school/classes/classes_lib/copy'+ location.search, copy_url: 'school/classes/classes_lib/copy'+ location.search,
url_url: 'school/classes/classes_lib/url',
del_url: 'school/classes/classes_lib/del', del_url: 'school/classes/classes_lib/del',
multi_url: 'school/classes/classes_lib/multi', multi_url: 'school/classes/classes_lib/multi',
import_url: 'school/classes/classes_lib/import', import_url: 'school/classes/classes_lib/import',
@ -125,6 +126,38 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
{field: 'operate', title: __('Operate'), table: table , buttons: [ {field: 'operate', title: __('Operate'), table: table , buttons: [
{name: 'url',
text: '查看小程序链接',
icon: 'fa fa-chain',
classname: 'btn btn-ajax',
url: $.fn.bootstrapTable.defaults.extend.url_url,
confirm: '查看小程序链接',
dropdown : '更多',
success: function (data, ret) {
//JS将内容放入复制板
try {
navigator.clipboard.writeText(ret.msg);
console.log('Text copied to clipboard');
Layer.alert("已自动复制内容 : " + ret.msg );
} catch (err) {
console.error('Failed to copy: ', err);
Layer.alert("浏览器不支持复制,请自行复制 : " + ret.msg );
}
$(".btn-refresh").trigger("click");
},
error: function (data, ret) {
Layer.alert(ret.msg);
return false;
},
// visible: function (row) {
// //显示条件 只能待入住订单
// if(row.status == '3'){
// return true;
// }
// return false;
// }
},
{ {
name: 'classes_spec', name: 'classes_spec',
text: __('复制并创建课程'), text: __('复制并创建课程'),
@ -596,7 +629,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
} }
var manystore_url = function (row,dom) { var manystore_url = function (row,dom) {
return 'manystore/index/index?id='+row.classes_activity_auth_id; return 'manystore/index/index?shop_id='+row.shop_id;
} }

View File

@ -11,6 +11,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
del_url: 'school/classes/teacher/del', del_url: 'school/classes/teacher/del',
multi_url: 'school/classes/teacher/multi', multi_url: 'school/classes/teacher/multi',
import_url: 'school/classes/teacher/import', import_url: 'school/classes/teacher/import',
url_url: 'school/classes/teacher/url',
table: 'school_teacher', table: 'school_teacher',
} }
}); });
@ -64,6 +65,39 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
{field: 'shop.address_detail', title: __('Shop.address_detail'), operate: 'LIKE'}, {field: 'shop.address_detail', title: __('Shop.address_detail'), operate: 'LIKE'},
{field: 'operate', title: __('Operate'), table: table , buttons: [ {field: 'operate', title: __('Operate'), table: table , buttons: [
{name: 'url',
text: '查看小程序链接',
icon: 'fa fa-chain',
classname: 'btn btn-ajax',
url: $.fn.bootstrapTable.defaults.extend.url_url,
confirm: '查看小程序链接',
dropdown : '更多',
success: function (data, ret) {
//JS将内容放入复制板
try {
navigator.clipboard.writeText(ret.msg);
console.log('Text copied to clipboard');
Layer.alert("已自动复制内容 : " + ret.msg );
} catch (err) {
console.error('Failed to copy: ', err);
Layer.alert("浏览器不支持复制,请自行复制 : " + ret.msg );
}
$(".btn-refresh").trigger("click");
},
error: function (data, ret) {
Layer.alert(ret.msg);
return false;
},
// visible: function (row) {
// //显示条件 只能待入住订单
// if(row.status == '3'){
// return true;
// }
// return false;
// }
},
{ {
name: 'classes', name: 'classes',
text: __('讲师的课程'), text: __('讲师的课程'),

View File

@ -145,7 +145,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
}; };
var message_config_item_url = function (row,dom) { var message_config_item_url = function (row,dom) {
return 'school/message_config_item/index?event='+row.event + "&name=" + row.name; return 'school/message_config_item/index?event='+row.event;
} }
return Controller; return Controller;
}); });