Browse Source

Merge branch 'develop'

master
shuixiang 4 years ago
parent
commit
5d92f38699
  1. 3
      app/Admin/Extensions/Grid/MiniProgramUpload.php
  2. 20
      app/Http/Controllers/Api/AgentProductController.php
  3. 8
      app/Http/Controllers/Api/ArticleController.php
  4. 28
      app/Http/Controllers/Api/MiniProgramController.php
  5. 10
      app/Http/Controllers/Api/OrderController.php
  6. 46
      app/Http/Controllers/Api/TestController.php
  7. 2
      app/Models/AgentProduct.php

3
app/Admin/Extensions/Grid/MiniProgramUpload.php

@ -85,7 +85,7 @@ class MiniProgramUpload extends RowAction
$domain->modify($param); //服务器域名,服务器域名多次设置仅第一次成功,这里不校验返回结果正确性 $domain->modify($param); //服务器域名,服务器域名多次设置仅第一次成功,这里不校验返回结果正确性
$res = $domain->setWebviewDomain([$host]); //业务域名 $res = $domain->setWebviewDomain([$host]); //业务域名
if (!isset($res['errcode'], $res['errmsg']) || $res['errcode'] != 0 || $res['errmsg'] != 'ok') { if (!isset($res['errcode'], $res['errmsg']) || $res['errcode'] != 0 || $res['errmsg'] != 'ok') {
throw new \Exception('设置业务域名失败!');
throw new \Exception("设置业务域名{$host}失败,原因:" . $res['errmsg'] ?? (is_array($res) ? join(',', $res) : '未知'));
} }
/** @var Client $code */ /** @var Client $code */
@ -119,6 +119,7 @@ class MiniProgramUpload extends RowAction
MiniProgramUploadLog::insert([ MiniProgramUploadLog::insert([
'agent_id' => $agent->id, 'agent_id' => $agent->id,
'appid' => $agent->appid, 'appid' => $agent->appid,
'user_version' => $template->user_version,
'template_id' => $templateId, 'template_id' => $templateId,
'qrcode' => "mini_program_qrcode/{$agent->id}-{$agent->appid}.jpg", 'qrcode' => "mini_program_qrcode/{$agent->id}-{$agent->appid}.jpg",
'audit_id' => $res['auditid'], 'audit_id' => $res['auditid'],

20
app/Http/Controllers/Api/AgentProductController.php

@ -135,14 +135,22 @@ class AgentProductController extends Controller
//分页列表产品图片加域名 //分页列表产品图片加域名
private function paginatePicAddHost($list) private function paginatePicAddHost($list)
{ {
if (!$list->isEmpty()) {
$prefix = Storage::disk('public')->url('');
foreach ($list->items() as $k=>&$v) {
$v->pictures = array_map(function($item) use ($prefix) {
return strpos($item, $prefix) === false ? $prefix . $item : $item;
}, $v->pictures);
//如果是新入驻代理商没有数据,且没有删除过的数据,则显示最早的几条
if ($list->isEmpty()) {
if (AgentProduct::list($this->agent_id)->withTrashed()->count() === 0 && request('page', 1) <= 2) { //只获取2页数据
$list = AgentProduct::list($this->agent_id)->orWhereRaw(1)->orderBy('id')->simplePaginate();
} else {
return $list; //因为只获取2页数据,不return可能会导入下面的代码出错
} }
} }
$prefix = Storage::disk('public')->url('');
foreach ($list->items() as $k=>&$v) {
$v->pictures = array_map(function($item) use ($prefix) {
return strpos($item, $prefix) === false ? $prefix . $item : $item;
}, $v->pictures);
}
return $list; return $list;
} }

8
app/Http/Controllers/Api/ArticleController.php

@ -22,6 +22,14 @@ class ArticleController extends Controller
->orderBy('sort')->orderBy('id', 'DESC') ->orderBy('sort')->orderBy('id', 'DESC')
->simplePaginate()->toArray(); ->simplePaginate()->toArray();
//如果没有数据,且没有软删除的数据,显示默认的几条数据,主要用于新代理商入驻时显示默认文章
if (empty($list['data'])) {
if (Article::withTrashed()->where('agent_id', $this->agent_id)->count() === 0 && request('page', 1) < 2) {
$list = Article::select('id', 'image', 'title', 'type', 'updated_at')
->orderBy('id')->simplePaginate()->toArray();
}
}
$new_data = []; $new_data = [];
$prefix = Storage::disk('public')->url(''); $prefix = Storage::disk('public')->url('');
foreach ($list['data'] as $k => &$item) { foreach ($list['data'] as $k => &$item) {

28
app/Http/Controllers/Api/MiniProgramController.php

@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\AdminSetting; use App\Models\AdminSetting;
use App\Models\Agent; use App\Models\Agent;
use App\Models\MiniProgramUploadLog;
use EasyWeChat\Factory; use EasyWeChat\Factory;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -90,7 +91,7 @@ class MiniProgramController extends Controller
$server = $openPlatform->miniProgram($appid, $refreshToken)->server; $server = $openPlatform->miniProgram($appid, $refreshToken)->server;
//接收事件 https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/code/audit_event.html //接收事件 https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/code/audit_event.html
$server->push(function ($message) {
$server->push(function ($message) use ($appid) {
DB::table('mini_program_events') DB::table('mini_program_events')
->insert([ ->insert([
'type' => 1, 'type' => 1,
@ -98,22 +99,23 @@ class MiniProgramController extends Controller
'event' => $message['MsgType'] ?? '', 'event' => $message['MsgType'] ?? '',
'created_at' => now() 'created_at' => now()
]); ]);
if (isset($message['MsgType'], $message['Event']) && $message['MsgType'] == 'event') {
//审核结果通知
if (isset($message['MsgType'], $message['Event']) && $message['MsgType'] == 'event') {
$auditArr = [
'weapp_audit_success' => 0, //成功
'weapp_audit_fail' => 1, //拒绝
'weapp_audit_delay' => 4, //审核延后
];
$log = MiniProgramUploadLog::query()
->where('appid', $appid)
->orderBy('id', 'desc')
->first();
$log->is_success = $auditArr[$message['Event']] ?? -1;
$log->save();
} }
}); });
//试试还是这个?
$openPlatform->server->push(function ($message) {
DB::table('mini_program_events')
->insert([
'type' => 3,
'response' => json_encode($message),
'event' => $message['MsgType'] ?? '',
'created_at' => now()
]);
});
return $server->serve(); return $server->serve();
} }
} }

10
app/Http/Controllers/Api/OrderController.php

@ -132,10 +132,14 @@ class OrderController extends Controller
]); ]);
$ap = AgentProduct::query() $ap = AgentProduct::query()
->where(['id' => $formData['id'], 'status' => ProductStatus::ON_SALE])
->where('stock', '>=', $formData['num'])
->with(['coupon', 'product', 'agentCloudProduct:id,price']) ->with(['coupon', 'product', 'agentCloudProduct:id,price'])
->has('product')
->where('stock', '>=', $formData['num'])
->where(['id' => $formData['id'], 'status' => ProductStatus::ON_SALE, 'agent_id' => $this->agent_id]) //判断agent_id,防止新入驻小程序的演示产品被下单
->whereDoesntHave('agentProductItem', function ($query) {
return $query->whereHas('product', function ($query) {
return $query->where('stock', '<=', 0)->orWhere('status', '<>', ProductStatus::ON_SALE);
});
})
->first(); ->first();
if (!$ap || !$ap->product) { if (!$ap || !$ap->product) {
return $this->error('产品已下架或库存不足'); return $this->error('产品已下架或库存不足');

46
app/Http/Controllers/Api/TestController.php

@ -3,6 +3,8 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Models\AdminSetting; use App\Models\AdminSetting;
use App\Models\AgentProduct;
use App\Models\MiniProgramUploadLog;
use EasyWeChat\Factory; use EasyWeChat\Factory;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -17,31 +19,29 @@ class TestController
public function index() public function index()
{ {
$appid = 'wx5bd5789ad8f89524'; $appid = 'wx5bd5789ad8f89524';
$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']);
$config = [
'app_id' => $setting['service_appid'],
'secret' => $setting['service_appsecret'],
'token' => $setting['service_token'],
'aes_key' => $setting['service_aeskey'],
];
$message = json_decode('{"ToUserName":"gh_f4ab40774bed","FromUserName":"o4seR5d-TVCImgh2aE6UtrQn6LIM","CreateTime":"1631670431","MsgType":"event","Event":"weapp_audit_success","SuccTime":"1631670431"}', true);
DB::table('mini_program_events')
->insert([
'type' => 1,
'response' => json_encode($message),
'event' => $message['MsgType'] ?? '',
'created_at' => now()
]);
$app = Factory::openPlatform($config);
$refreshToken = $app->getAuthorizer($appid)['authorization_info']['authorizer_refresh_token'] ?? null;
if (!$refreshToken) {
return $this->error('获取refresh_token失败');
//审核结果通知
if (isset($message['MsgType'], $message['Event']) && $message['MsgType'] == 'event') {
$auditArr = [
'weapp_audit_success' => 0, //成功
'weapp_audit_fail' => 1, //拒绝
'weapp_audit_delay' => 4, //审核延后
];
$log = MiniProgramUploadLog::query()
->where('appid', $appid)
->orderBy('id', 'desc')
->first();
$log->is_success = $auditArr[$message['Event']] ?? -1;
$log->save();
} }
$miniProgram = $app->miniProgram($appid, $refreshToken);
$domain = $miniProgram['domain'];
$host = env('APP_URL');
$param = [
"action" => "add",
"requestdomain" => [$host],
"wsrequestdomain" => [str_replace('http', 'ws', $host)],
"uploaddomain" => [$host],
"downloaddomain" => [$host],
];
return [$domain->modify($param), $domain->setWebviewDomain([env('APP_URL')])];
} }
/** /**

2
app/Models/AgentProduct.php

@ -97,7 +97,7 @@ class AgentProduct extends BaseModel
return $query->where('stock', '<=', 0)->orWhere('status', '<>', ProductStatus::ON_SALE); return $query->where('stock', '<=', 0)->orWhere('status', '<>', ProductStatus::ON_SALE);
}); });
}) })
->where(['agent_id' => $agent_id, 'status' => ProductStatus::ON_SALE])->where('stock', '>', 0)
->where('stock', '>', 0)->where(['agent_id' => $agent_id, 'status' => ProductStatus::ON_SALE])
->select('id', 'sale', 'product_id', 'price', 'original_price', 'title', 'pictures'); ->select('id', 'sale', 'product_id', 'price', 'original_price', 'title', 'pictures');
} }

Loading…
Cancel
Save