lion 19 hours ago
parent bb0c19bf1c
commit 77b27a0650

@ -1,19 +1,22 @@
APP_NAME=Laravel
APP_ENV=local
APP_NAME=赛思访客
APP_ENV=production
APP_KEY=
APP_DEBUG=true
APP_DEBUG=false
APP_URL=https://ss-visitor.ali251.langye.net
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
LOG_LEVEL=error
WECHAT_APPID=wx2129de75c4937c40
WECHAT_SECRET=cb6c464d2233b90d882c31bbd4cf1949
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
DB_DATABASE=ss_visitor_ali25
DB_USERNAME=ss_visitor_ali25
DB_PASSWORD=cpxzRaT3kY6Ps3Ta
BROADCAST_DRIVER=log
CACHE_DRIVER=file
@ -29,13 +32,13 @@ REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
MAIL_HOST=smtp.exmail.qq.com
MAIL_PORT=465
MAIL_USERNAME=no-reply@langye.net
MAIL_PASSWORD=Noreply@2016
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS="no-reply@langye.net"
MAIL_FROM_NAME="赛思访客"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
@ -50,3 +53,6 @@ PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
SMS_APPID=76126
SMS_APPKEY=80c98d741e80afc9abde49f27ad90796

@ -177,25 +177,25 @@ class VisitAuditController extends CommonController
// }
}
if ($auditResult) {
// 发通知订阅消息
// 发通知订阅消息(访客审核通知)
$templateData = [
'date1' => [
'value' => $visit->date
'time1' => [
'value' => Visit::formatSubTime($visit->date)
],
'name3' => [
'value' => $acceptAdmin->name,
'thing8' => [
'value' => Visit::formatSubThing($acceptAdmin->name),
],
'thing4' => [
'value' => $visit->name
'name3' => [
'value' => Visit::formatSubThing($visit->name, 10)
],
'thing13' => [
'value' => $auditResult,
'thing5' => [
'value' => Visit::formatSubThing($auditResult),
],
'thing9' => [
'value' => $visit->company_name
'thing7' => [
'value' => Visit::formatSubThing($visit->company_name)
],
];
Visit::subMsg('r8n41lmkGeob15YBuuxhG7MbpgVSsUxKnK9ORPtr5VY', $user->openid, $templateData, $all['visit_id']);
Visit::subMsg('4vYNadlcilS5OGbeJkvLdzVd61oQKGl9Q2yMqgvx0fI', $user->openid, $templateData, $all['visit_id']);
}
}
// 审核记录

@ -114,7 +114,7 @@ class UserController extends CommonController
$config = [
'app_id' => \config('app.wechat_appid'),
'secret' => \config('app.wechat_appsecret')
'secret' => \config('app.wechat_secret')
];
$app = Factory::miniProgram($config);
$result = $app->phone_number->getUserPhoneNumber($all['code']);

@ -143,12 +143,31 @@ class VisitController extends CommonController
DB::commit();
// 短信通知被访人
$vars = ['date' => $all['date'], 'name' => $all['name']];
$template_id = 'Sjwgv1';
$template_id = '3gogQ4';
// 被访人信息
$acceptAdmin = Admin::find($all['accept_admin_id']);
sms($acceptAdmin->mobile, $vars, $template_id);
// 邮件通知第一个审核人
VisitAudit::emailNextAudit($model, -1);
// 新增拜访订阅消息(访客需先授权订阅,首次可能发不出去)
try {
$user = $this->getUser();
if (!empty($user->openid)) {
Visit::subMsg(
'h0cd0zQG0F0dAEO7D1PVoZtoTa5Uo1JBnawij7pRfBQ',
$user->openid,
[
'time5' => ['value' => Visit::formatSubTime($all['date'])],
'thing3' => ['value' => Visit::formatSubThing($all['name'])],
'thing4' => ['value' => Visit::formatSubThing($acceptAdmin->name ?? '')],
'thing1' => ['value' => Visit::formatSubThing($all['company_name'] ?? '')],
],
$model->id
);
}
} catch (\Throwable $e) {
Log::warning('新增拜访订阅消息发送失败:' . $e->getMessage());
}
}
return $this->success('更新成功');
} catch (\Exception $exception) {

@ -129,6 +129,18 @@ class Visit extends SoftDeletesModel
return $this->hasMany(GateLog::class, 'code', 'code');
}
public static function formatSubTime($date)
{
$ts = strtotime((string)$date);
return $ts ? date('Y年n月j日', $ts) : (string)$date;
}
public static function formatSubThing($value, $max = 20)
{
$value = (string)($value ?? '');
return mb_strlen($value) > $max ? mb_substr($value, 0, $max) : $value;
}
// 小程序订阅消息
public static function subMsg($template_id, $openid, $data, $id)
{

@ -1,3 +1,3 @@
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=/admin/favicon.ico><title>赛思访客管理系统</title><script>window._AMapSecurityConfig = {
securityJsCode: '68787c7a64e7240670e6a538b326d64b',
}</script><script src="https://webapi.amap.com/maps?v=1.4.11&key=1a9ee0079fcb3c6c64c96dc903989994&plugin=AMap.PlaceSearch"></script><script src="https://webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script><link href=/admin/static/css/app.27f910e8.css rel=preload as=style><link href=/admin/static/css/chunk-libs.cb37023e.css rel=preload as=style><link href=/admin/static/js/app.7bbff0b1.js rel=preload as=script><link href=/admin/static/js/chunk-elementUI.3ab53a91.js rel=preload as=script><link href=/admin/static/js/chunk-libs.a3235d53.js rel=preload as=script><link href=/admin/static/css/chunk-libs.cb37023e.css rel=stylesheet><link href=/admin/static/css/app.27f910e8.css rel=stylesheet></head><body><noscript><strong>We're sorry but 赛思访客管理系统 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script>(function(e){function t(t){for(var r,c,o=t[0],i=t[1],f=t[2],d=0,l=[];d<o.length;d++)c=o[d],Object.prototype.hasOwnProperty.call(a,c)&&a[c]&&l.push(a[c][0]),a[c]=0;for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r]);h&&h(t);while(l.length)l.shift()();return u.push.apply(u,f||[]),n()}function n(){for(var e,t=0;t<u.length;t++){for(var n=u[t],r=!0,c=1;c<n.length;c++){var o=n[c];0!==a[o]&&(r=!1)}r&&(u.splice(t--,1),e=i(i.s=n[0]))}return e}var r={},c={runtime:0},a={runtime:0},u=[];function o(e){return i.p+"static/js/"+({}[e]||e)+"."+{"chunk-16b9b6dc":"52c2d615","chunk-11c68ae5":"c49be909","chunk-b7ab62b8":"ec493ad0","chunk-2b0109ce":"b3cf71ec","chunk-0bd599c3":"13e3557a","chunk-187b2ae4":"13acf0b3","chunk-22cea610":"ea1d353a","chunk-2d21065a":"62cc4063","chunk-2d0ac22e":"4ff09374","chunk-6bd5056c":"7535afba"}[e]+".js"}function i(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,i),n.l=!0,n.exports}i.e=function(e){var t=[],n={"chunk-11c68ae5":1,"chunk-b7ab62b8":1,"chunk-2b0109ce":1,"chunk-0bd599c3":1,"chunk-187b2ae4":1,"chunk-22cea610":1,"chunk-6bd5056c":1};c[e]?t.push(c[e]):0!==c[e]&&n[e]&&t.push(c[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{"chunk-16b9b6dc":"31d6cfe0","chunk-11c68ae5":"69da8374","chunk-b7ab62b8":"ae241f74","chunk-2b0109ce":"58c5a6f1","chunk-0bd599c3":"a3c8f34f","chunk-187b2ae4":"4849ae05","chunk-22cea610":"3c7f5ad9","chunk-2d21065a":"31d6cfe0","chunk-2d0ac22e":"31d6cfe0","chunk-6bd5056c":"f03cc9f5"}[e]+".css",a=i.p+r,u=document.getElementsByTagName("link"),o=0;o<u.length;o++){var f=u[o],d=f.getAttribute("data-href")||f.getAttribute("href");if("stylesheet"===f.rel&&(d===r||d===a))return t()}var l=document.getElementsByTagName("style");for(o=0;o<l.length;o++){f=l[o],d=f.getAttribute("data-href");if(d===r||d===a)return t()}var h=document.createElement("link");h.rel="stylesheet",h.type="text/css",h.onload=t,h.onerror=function(t){var r=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");u.code="CSS_CHUNK_LOAD_FAILED",u.request=r,delete c[e],h.parentNode.removeChild(h),n(u)},h.href=a;var s=document.getElementsByTagName("head")[0];s.appendChild(h)})).then((function(){c[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var u=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=u);var f,d=document.createElement("script");d.charset="utf-8",d.timeout=120,i.nc&&d.setAttribute("nonce",i.nc),d.src=o(e);var l=new Error;f=function(t){d.onerror=d.onload=null,clearTimeout(h);var n=a[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+r+": "+c+")",l.name="ChunkLoadError",l.type=r,l.request=c,n[1](l)}a[e]=void 0}};var h=setTimeout((function(){f({type:"timeout",target:d})}),12e4);d.onerror=d.onload=f,document.head.appendChild(d)}return Promise.all(t)},i.m=e,i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/admin/",i.oe=function(e){throw console.error(e),e};var f=window["webpackJsonp"]=window["webpackJsonp"]||[],d=f.push.bind(f);f.push=t,f=f.slice();for(var l=0;l<f.length;l++)t(f[l]);var h=d;n()})([]);</script><script src=/admin/static/js/chunk-elementUI.3ab53a91.js></script><script src=/admin/static/js/chunk-libs.a3235d53.js></script><script src=/admin/static/js/app.7bbff0b1.js></script></body></html>
}</script><script src="https://webapi.amap.com/maps?v=1.4.11&key=1a9ee0079fcb3c6c64c96dc903989994&plugin=AMap.PlaceSearch"></script><script src="https://webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script><link href=/admin/static/css/app.27f910e8.css rel=preload as=style><link href=/admin/static/css/chunk-libs.cb37023e.css rel=preload as=style><link href=/admin/static/js/app.9f3f1ec9.js rel=preload as=script><link href=/admin/static/js/chunk-elementUI.3ab53a91.js rel=preload as=script><link href=/admin/static/js/chunk-libs.49937be8.js rel=preload as=script><link href=/admin/static/css/chunk-libs.cb37023e.css rel=stylesheet><link href=/admin/static/css/app.27f910e8.css rel=stylesheet></head><body><noscript><strong>We're sorry but 赛思访客管理系统 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script>(function(e){function t(t){for(var r,c,o=t[0],i=t[1],f=t[2],d=0,l=[];d<o.length;d++)c=o[d],Object.prototype.hasOwnProperty.call(a,c)&&a[c]&&l.push(a[c][0]),a[c]=0;for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r]);h&&h(t);while(l.length)l.shift()();return u.push.apply(u,f||[]),n()}function n(){for(var e,t=0;t<u.length;t++){for(var n=u[t],r=!0,c=1;c<n.length;c++){var o=n[c];0!==a[o]&&(r=!1)}r&&(u.splice(t--,1),e=i(i.s=n[0]))}return e}var r={},c={runtime:0},a={runtime:0},u=[];function o(e){return i.p+"static/js/"+({}[e]||e)+"."+{"chunk-16b9b6dc":"52c2d615","chunk-11c68ae5":"b149158f","chunk-b7ab62b8":"ec493ad0","chunk-2b0109ce":"5fb2800e","chunk-0bd599c3":"e638aee1","chunk-187b2ae4":"5a5c2400","chunk-22cea610":"42416ad9","chunk-2d21065a":"62cc4063","chunk-2d0ac22e":"6531e3e8","chunk-6bd5056c":"7a7eb42b"}[e]+".js"}function i(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,i),n.l=!0,n.exports}i.e=function(e){var t=[],n={"chunk-11c68ae5":1,"chunk-b7ab62b8":1,"chunk-2b0109ce":1,"chunk-0bd599c3":1,"chunk-187b2ae4":1,"chunk-22cea610":1,"chunk-6bd5056c":1};c[e]?t.push(c[e]):0!==c[e]&&n[e]&&t.push(c[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{"chunk-16b9b6dc":"31d6cfe0","chunk-11c68ae5":"69da8374","chunk-b7ab62b8":"ae241f74","chunk-2b0109ce":"58c5a6f1","chunk-0bd599c3":"a3c8f34f","chunk-187b2ae4":"4849ae05","chunk-22cea610":"3c7f5ad9","chunk-2d21065a":"31d6cfe0","chunk-2d0ac22e":"31d6cfe0","chunk-6bd5056c":"f03cc9f5"}[e]+".css",a=i.p+r,u=document.getElementsByTagName("link"),o=0;o<u.length;o++){var f=u[o],d=f.getAttribute("data-href")||f.getAttribute("href");if("stylesheet"===f.rel&&(d===r||d===a))return t()}var l=document.getElementsByTagName("style");for(o=0;o<l.length;o++){f=l[o],d=f.getAttribute("data-href");if(d===r||d===a)return t()}var h=document.createElement("link");h.rel="stylesheet",h.type="text/css",h.onload=t,h.onerror=function(t){var r=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");u.code="CSS_CHUNK_LOAD_FAILED",u.request=r,delete c[e],h.parentNode.removeChild(h),n(u)},h.href=a;var s=document.getElementsByTagName("head")[0];s.appendChild(h)})).then((function(){c[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var u=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=u);var f,d=document.createElement("script");d.charset="utf-8",d.timeout=120,i.nc&&d.setAttribute("nonce",i.nc),d.src=o(e);var l=new Error;f=function(t){d.onerror=d.onload=null,clearTimeout(h);var n=a[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+r+": "+c+")",l.name="ChunkLoadError",l.type=r,l.request=c,n[1](l)}a[e]=void 0}};var h=setTimeout((function(){f({type:"timeout",target:d})}),12e4);d.onerror=d.onload=f,document.head.appendChild(d)}return Promise.all(t)},i.m=e,i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/admin/",i.oe=function(e){throw console.error(e),e};var f=window["webpackJsonp"]=window["webpackJsonp"]||[],d=f.push.bind(f);f.push=t,f=f.slice();for(var l=0;l<f.length;l++)t(f[l]);var h=d;n()})([]);</script><script src=/admin/static/js/chunk-elementUI.3ab53a91.js></script><script src=/admin/static/js/chunk-libs.49937be8.js></script><script src=/admin/static/js/app.9f3f1ec9.js></script></body></html>

File diff suppressed because one or more lines are too long

@ -1,2 +1,2 @@
<!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>赛思访客在线核销</title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/cancel/static/index.ed4a2d2b.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/cancel/static/js/chunk-vendors.4b5abbbf.js></script><script src=/cancel/static/js/index.61aece7b.js></script></body></html>
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/cancel/static/index.cc298949.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/cancel/static/js/chunk-vendors.0d24b337.js></script><script src=/cancel/static/js/index.fa152b05.js></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save