diff --git a/application/admin/controller/setting/SystemConfig.php b/application/admin/controller/setting/SystemConfig.php index 1cd15aff..363a54cb 100644 --- a/application/admin/controller/setting/SystemConfig.php +++ b/application/admin/controller/setting/SystemConfig.php @@ -1 +1 @@ -assign('tab_id',$tab_id); $list = ConfigModel::getAll($tab_id); if($type==3){//其它分类 $config_tab = null; }else{ $config_tab = ConfigModel::getConfigTabAll($type); foreach ($config_tab as $kk=>$vv){ $arr = ConfigModel::getAll($vv['value'])->toArray(); if(empty($arr)){ unset($config_tab[$kk]); } } } $this->assign('config_tab',$config_tab); $this->assign('list',$list); return $this->fetch(); } /** * 添加字段 * */ public function create(Request $request){ $data = Util::getMore(['type',],$request);//接收参数 $tab_id = !empty($request->param('tab_id'))?$request->param('tab_id'):1; $formbuider = array(); switch ($data['type']){ case 0://文本框 $formbuider = ConfigModel::createInputRule($tab_id); break; case 1://多行文本框 $formbuider = ConfigModel::createTextAreaRule($tab_id); break; case 2://单选框 $formbuider = ConfigModel::createRadioRule($tab_id); break; case 3://文件上传 $formbuider = ConfigModel::createUploadRule($tab_id); break; case 4://多选框 $formbuider = ConfigModel::createCheckboxRule($tab_id); break; } $form = Form::make_post_form('添加字段',$formbuider,Url::build('save')); $this->assign(compact('form')); return $this->fetch('public/form-builder'); } /** * 保存字段 * */ public function save(Request $request){ $data = Util::postMore([ 'menu_name', 'type', 'config_tab_id', 'parameter', 'upload_type', 'required', 'width', 'high', 'value', 'info', 'desc', 'sort', 'status',],$request); if(!$data['info']) return Json::fail('请输入配置名称'); if(!$data['menu_name']) return Json::fail('请输入字段名称'); if($data['menu_name']){ $oneConfig = ConfigModel::getOneConfig('menu_name',$data['menu_name']); if(!empty($oneConfig)) return Json::fail('请重新输入字段名称,之前的已经使用过了'); } if(!$data['desc']) return Json::fail('请输入配置简介'); if($data['sort'] < 0){ $data['sort'] = 0; } if($data['type'] == 'text'){ if(!ConfigModel::valiDateTextRole($data)) return Json::fail(ConfigModel::getErrorInfo()); } if($data['type'] == 'textarea'){ if(!ConfigModel::valiDateTextareaRole($data)) return Json::fail(ConfigModel::getErrorInfo()); } if($data['type'] == 'radio' || $data['type'] == 'checkbox'){ if(!$data['parameter']) return Json::fail('请输入配置参数'); if(!ConfigModel::valiDateRadioAndCheckbox($data)) return Json::fail(ConfigModel::getErrorInfo()); $data['value'] = json_encode($data['value']); } ConfigModel::set($data); return Json::successful('添加菜单成功!'); } /** * @param Request $request * @param $id * @return \think\response\Json */ public function update_config(Request $request, $id) { $data = Util::postMore(['status','info','desc','sort','config_tab_id','required','parameter','value','upload_type'],$request); if(!ConfigModel::get($id)) return Json::fail('编辑的记录不存在!'); ConfigModel::edit($data,$id); return Json::successful('修改成功!'); } /** * 修改是否显示子子段 * @param $id * @return mixed */ public function edit_cinfig($id){ $menu = ConfigModel::get($id)->getData(); if(!$menu) return Json::fail('数据不存在!'); $formbuider = array(); $formbuider[] = Form::input('menu_name','字段变量',$menu['menu_name'])->disabled(1); $formbuider[] = Form::select('config_tab_id','分类',(string)$menu['config_tab_id'])->setOptions(ConfigModel::getConfigTabAll(-1)); $formbuider[] = Form::input('info','配置名称',$menu['info'])->autofocus(1); $formbuider[] = Form::input('desc','配置简介',$menu['desc']); //输入框验证规则 if(!empty($menu['required'])){ $formbuider[] = Form::input('value','默认值',$menu['value']); $formbuider[] = Form::number('width','文本框宽(%)',$menu['width']); $formbuider[] = Form::input('required','验证规则',$menu['required'])->placeholder('多个请用,隔开例如:required:true,url:true'); } //多行文本 if(!empty($menu['high'])){ $formbuider[] = Form::textarea('value','默认值',$menu['value'])->rows(5); $formbuider[] = Form::number('width','文本框宽(%)',$menu['width']); $formbuider[] = Form::number('high','多行文本框高(%)',$menu['high']); }else{ $formbuider[] = Form::input('value','默认值',$menu['value']); } //单选和多选参数配置 if(!empty($menu['parameter'])){ $formbuider[] = Form::textarea('parameter','配置参数',$menu['parameter'])->placeholder("参数方式例如:\n1=白色\n2=红色\n3=黑色"); } //上传类型选择 if(!empty($menu['upload_type'])){ $formbuider[] = Form::radio('upload_type','上传类型',$menu['upload_type'])->options([['value'=>1,'label'=>'单图'],['value'=>2,'label'=>'多图'],['value'=>3,'label'=>'文件']]); } $formbuider[] = Form::number('sort','排序',$menu['sort']); $formbuider[] = Form::radio('status','状态',$menu['status'])->options([['value'=>1,'label'=>'显示'],['value'=>2,'label'=>'隐藏']]); $form = Form::make_post_form('编辑字段',$formbuider,Url::build('update_config',array('id'=>$id))); $this->assign(compact('form')); return $this->fetch('public/form-builder'); // $this->assign(['title'=>'编辑菜单','read'=>Url::build('read_config',array('id'=>$id)),'update'=>Url::build('update_config',array('id'=>$id))]); // return $this->fetch(); } /** * 删除子字段 * @return \think\response\Json */ public function delete_cinfig(){ $id = input('id'); if(!ConfigModel::del($id)) return Json::fail(ConfigModel::getErrorInfo('删除失败,请稍候再试!')); else return Json::successful('删除成功!'); } /** * 保存数据 true * */ public function save_basics(){ $request = Request::instance(); if($request->isPost()){ $post = $request->post(); $tab_id = $post['tab_id']; unset($post['tab_id']); foreach ($post as $k=>$v){ if(is_array($v)){ $res = ConfigModel::where('menu_name',$k)->column('type,upload_type'); foreach ($res as $kk=>$vv){ if($kk == 'upload'){ if($vv == 1 || $vv == 3){ $post[$k] = $v[0]; } } } } } foreach ($post as $k=>$v){ ConfigModel::edit(['value' => json_encode($v)],$k,'menu_name'); } return $this->successfulNotice('修改成功'); } } /** * 模板表单提交 * */ public function view_upload(){ if($_POST['type'] == 3){ $res = Upload::file($_POST['file'],'config/file'); }else{ $res = Upload::Image($_POST['file'],'config/image'); } if(!$res->status) return Json::fail($res->error); if(strpos(PUBILC_PATH,'public') == false){ $res->dir = str_replace('public/','',$res->dir); } return Json::successful('上传成功!',['url'=>$res->dir]); } /** * 基础配置 单个 * @return mixed|void */ public function index_alone(){ $tab_id = input('tab_id'); if(!$tab_id) return $this->failed('参数错误,请重新打开'); $this->assign('tab_id',$tab_id); $list = ConfigModel::getAll($tab_id); $config_tab = ConfigModel::getConfigTabAll(); foreach ($config_tab as $kk=>$vv){ $arr = ConfigModel::getAll($vv['value'])->toArray(); if(empty($arr)){ unset($config_tab[$kk]); } } $this->assign('config_tab',$config_tab); $this->assign('list',$list); return $this->fetch(); } /** * 保存数据 单个 * @return mixed */ public function save_basics_alone(){ $request = Request::instance(); if($request->isPost()){ $post = $request->post(); $tab_id = $post['tab_id']; unset($post['tab_id']); foreach ($post as $k=>$v){ ConfigModel::edit(['value' => json_encode($v)],$k,'menu_name'); } return $this->successfulNotice('修改成功'); } } /** * 获取文件名 * */ public function getImageName(){ $request = Request::instance(); $post = $request->post(); $src = $post['src']; $data['name'] = basename($src); exit(json_encode($data)); } } \ No newline at end of file +assign('tab_id',$tab_id); $list = ConfigModel::getAll($tab_id); if($type==3){//其它分类 $config_tab = null; }else{ $config_tab = ConfigModel::getConfigTabAll($type); foreach ($config_tab as $kk=>$vv){ $arr = ConfigModel::getAll($vv['value'])->toArray(); if(empty($arr)){ unset($config_tab[$kk]); } } } $this->assign('config_tab',$config_tab); $this->assign('list',$list); return $this->fetch(); } /** * 添加字段 * */ public function create(Request $request){ $data = Util::getMore(['type',],$request);//接收参数 $tab_id = !empty($request->param('tab_id'))?$request->param('tab_id'):1; $formbuider = array(); switch ($data['type']){ case 0://文本框 $formbuider = ConfigModel::createInputRule($tab_id); break; case 1://多行文本框 $formbuider = ConfigModel::createTextAreaRule($tab_id); break; case 2://单选框 $formbuider = ConfigModel::createRadioRule($tab_id); break; case 3://文件上传 $formbuider = ConfigModel::createUploadRule($tab_id); break; case 4://多选框 $formbuider = ConfigModel::createCheckboxRule($tab_id); break; } $form = Form::make_post_form('添加字段',$formbuider,Url::build('save')); $this->assign(compact('form')); return $this->fetch('public/form-builder'); } /** * 保存字段 * */ public function save(Request $request){ $data = Util::postMore([ 'menu_name', 'type', 'config_tab_id', 'parameter', 'upload_type', 'required', 'width', 'high', 'value', 'info', 'desc', 'sort', 'status',],$request); if(!$data['info']) return Json::fail('请输入配置名称'); if(!$data['menu_name']) return Json::fail('请输入字段名称'); if($data['menu_name']){ $oneConfig = ConfigModel::getOneConfig('menu_name',$data['menu_name']); if(!empty($oneConfig)) return Json::fail('请重新输入字段名称,之前的已经使用过了'); } if(!$data['desc']) return Json::fail('请输入配置简介'); if($data['sort'] < 0){ $data['sort'] = 0; } if($data['type'] == 'text'){ if(!ConfigModel::valiDateTextRole($data)) return Json::fail(ConfigModel::getErrorInfo()); } if($data['type'] == 'textarea'){ if(!ConfigModel::valiDateTextareaRole($data)) return Json::fail(ConfigModel::getErrorInfo()); } if($data['type'] == 'radio' || $data['type'] == 'checkbox'){ if(!$data['parameter']) return Json::fail('请输入配置参数'); if(!ConfigModel::valiDateRadioAndCheckbox($data)) return Json::fail(ConfigModel::getErrorInfo()); $data['value'] = json_encode($data['value']); } ConfigModel::set($data); return Json::successful('添加菜单成功!'); } /** * @param Request $request * @param $id * @return \think\response\Json */ public function update_config(Request $request, $id) { $data = Util::postMore(['status','info','desc','sort','config_tab_id','required','parameter','value','upload_type'],$request); if(!ConfigModel::get($id)) return Json::fail('编辑的记录不存在!'); $data['value'] = rtrim($data['value'],'"'); $data['value'] = ltrim($data['value'],'"'); ConfigModel::edit($data,$id); return Json::successful('修改成功!'); } /** * 修改是否显示子子段 * @param $id * @return mixed */ public function edit_cinfig($id){ $menu = ConfigModel::get($id)->getData(); //修复value json方式保存 $menu['value'] = json_decode($menu['value'],true); if(!$menu) return Json::fail('数据不存在!'); $formbuider = array(); $formbuider[] = Form::input('menu_name','字段变量',$menu['menu_name'])->disabled(1); $formbuider[] = Form::select('config_tab_id','分类',(string)$menu['config_tab_id'])->setOptions(ConfigModel::getConfigTabAll(-1)); $formbuider[] = Form::input('info','配置名称',$menu['info'])->autofocus(1); $formbuider[] = Form::input('desc','配置简介',$menu['desc']); //输入框验证规则 if(!empty($menu['required'])){ $formbuider[] = Form::input('value','默认值',$menu['value']); $formbuider[] = Form::number('width','文本框宽(%)',$menu['width']); $formbuider[] = Form::input('required','验证规则',$menu['required'])->placeholder('多个请用,隔开例如:required:true,url:true'); } //多行文本 if(!empty($menu['high'])){ $formbuider[] = Form::textarea('value','默认值',$menu['value'])->rows(5); $formbuider[] = Form::number('width','文本框宽(%)',$menu['width']); $formbuider[] = Form::number('high','多行文本框高(%)',$menu['high']); }else{ $formbuider[] = Form::input('value','默认值',$menu['value']); } //单选和多选参数配置 if(!empty($menu['parameter'])){ $formbuider[] = Form::textarea('parameter','配置参数',$menu['parameter'])->placeholder("参数方式例如:\n1=白色\n2=红色\n3=黑色"); } //上传类型选择 if(!empty($menu['upload_type'])){ $formbuider[] = Form::radio('upload_type','上传类型',$menu['upload_type'])->options([['value'=>1,'label'=>'单图'],['value'=>2,'label'=>'多图'],['value'=>3,'label'=>'文件']]); } $formbuider[] = Form::number('sort','排序',$menu['sort']); $formbuider[] = Form::radio('status','状态',$menu['status'])->options([['value'=>1,'label'=>'显示'],['value'=>2,'label'=>'隐藏']]); $form = Form::make_post_form('编辑字段',$formbuider,Url::build('update_config',array('id'=>$id))); $this->assign(compact('form')); return $this->fetch('public/form-builder'); // $this->assign(['title'=>'编辑菜单','read'=>Url::build('read_config',array('id'=>$id)),'update'=>Url::build('update_config',array('id'=>$id))]); // return $this->fetch(); } /** * 删除子字段 * @return \think\response\Json */ public function delete_cinfig(){ $id = input('id'); if(!ConfigModel::del($id)) return Json::fail(ConfigModel::getErrorInfo('删除失败,请稍候再试!')); else return Json::successful('删除成功!'); } /** * 保存数据 true * */ public function save_basics(){ $request = Request::instance(); if($request->isPost()){ $post = $request->post(); $tab_id = $post['tab_id']; unset($post['tab_id']); foreach ($post as $k=>$v){ if(is_array($v)){ $res = ConfigModel::where('menu_name',$k)->column('type,upload_type'); foreach ($res as $kk=>$vv){ if($kk == 'upload'){ if($vv == 1 || $vv == 3){ $post[$k] = $v[0]; } } } } } foreach ($post as $k=>$v){ ConfigModel::edit(['value' => json_encode($v)],$k,'menu_name'); } return $this->successfulNotice('修改成功'); } } /** * 模板表单提交 * */ public function view_upload(){ if($_POST['type'] == 3){ $res = Upload::file($_POST['file'],'config/file'); }else{ $res = Upload::Image($_POST['file'],'config/image'); } if(!$res->status) return Json::fail($res->error); return Json::successful('上传成功!',['url'=>$res->filePath]); } /** * 基础配置 单个 * @return mixed|void */ public function index_alone(){ $tab_id = input('tab_id'); if(!$tab_id) return $this->failed('参数错误,请重新打开'); $this->assign('tab_id',$tab_id); $list = ConfigModel::getAll($tab_id); $config_tab = ConfigModel::getConfigTabAll(); foreach ($config_tab as $kk=>$vv){ $arr = ConfigModel::getAll($vv['value'])->toArray(); if(empty($arr)){ unset($config_tab[$kk]); } } $this->assign('config_tab',$config_tab); $this->assign('list',$list); return $this->fetch(); } /** * 保存数据 单个 * @return mixed */ public function save_basics_alone(){ $request = Request::instance(); if($request->isPost()){ $post = $request->post(); $tab_id = $post['tab_id']; unset($post['tab_id']); foreach ($post as $k=>$v){ ConfigModel::edit(['value' => json_encode($v)],$k,'menu_name'); } return $this->successfulNotice('修改成功'); } } /** * 获取文件名 * */ public function getImageName(){ $request = Request::instance(); $post = $request->post(); $src = $post['src']; $data['name'] = basename($src); exit(json_encode($data)); } } \ No newline at end of file diff --git a/application/routine/controller/AuthApi.php b/application/routine/controller/AuthApi.php index 06dbb3e5..da3e1e49 100644 --- a/application/routine/controller/AuthApi.php +++ b/application/routine/controller/AuthApi.php @@ -77,8 +77,9 @@ class AuthApi extends AuthController{ * 获取退款理由 */ public function get_refund_reason(){ - $reason = SystemConfig::getValue('refund_reason')?:[];//退款理由 - $reason = explode('=',$reason); + $reason = SystemConfig::getValue('stor_reason')?:[];//退款理由 + $reason = str_replace("\r\n","\n",$reason);//防止不兼容 + $reason = explode("\n",$reason); return JsonService::successful($reason); } @@ -861,6 +862,7 @@ class AuthApi extends AuthController{ } } + /** * 申请退款 * @param string $uni diff --git a/application/routine/controller/Routine.php b/application/routine/controller/Routine.php index 9f6f2bbe..c0c360b8 100644 --- a/application/routine/controller/Routine.php +++ b/application/routine/controller/Routine.php @@ -4,6 +4,7 @@ use behavior\wechat\PaymentBehavior; use service\HookService; use service\RoutineNotify; + /** * 小程序支付回调 * Class Routine diff --git a/extend/behavior/wechat/PaymentBehavior.php b/extend/behavior/wechat/PaymentBehavior.php index a4c9c724..127d89ef 100644 --- a/extend/behavior/wechat/PaymentBehavior.php +++ b/extend/behavior/wechat/PaymentBehavior.php @@ -113,6 +113,11 @@ class PaymentBehavior WechatService::payOrderRefund($orderNo,$opt); } + /** + * 小程序支付订单退款 + * @param $orderNo + * @param array $opt + */ public static function routinePayOrderRefund($orderNo, array $opt) { $refundDesc = isset($opt['desc']) ? $opt['desc'] : ''; diff --git a/extend/service/RoutineRefund.php b/extend/service/RoutineRefund.php index 79c24c85..94e70d53 100644 --- a/extend/service/RoutineRefund.php +++ b/extend/service/RoutineRefund.php @@ -22,6 +22,7 @@ class RoutineRefund * @param string $refundDesc 退款原因 * @return string */ + public static function doRefund($totalFee, $refundFee, $refundNo, $wxOrderNo='',$orderNo='',$refundDesc = '') { $config = array( @@ -94,11 +95,11 @@ class RoutineRefund //默认格式为PEM,可以注释 curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM'); // curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/cert/apiclient_cert.pem'); - curl_setopt($ch,CURLOPT_SSLCERT,realpath('.'.self::options()['pay_routine_client_cert'][0])); + curl_setopt($ch,CURLOPT_SSLCERT,realpath('.'.self::options()['pay_routine_client_cert'])); //默认格式为PEM,可以注释 curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM'); // curl_setopt($ch,CURLOPT_SSLKEY,getcwd().'/cert/apiclient_key.pem'); - curl_setopt($ch,CURLOPT_SSLKEY,realpath('.'.self::options()['pay_routine_client_key'][0])); + curl_setopt($ch,CURLOPT_SSLKEY,realpath('.'.self::options()['pay_routine_client_key'])); //第二种方式,两个文件合成一个.pem文件 // curl_setopt($ch,CURLOPT_SSLCERT,getcwd().'/all.pem'); $data = curl_exec($ch); diff --git a/extend/service/RoutineService.php b/extend/service/RoutineService.php index 6fccfa3c..0896c231 100644 --- a/extend/service/RoutineService.php +++ b/extend/service/RoutineService.php @@ -2,6 +2,7 @@ namespace service; use think\Url; + /** * 小程序支付 * Created by PhpStorm.