Browse Source

获取模板列表

master
weigang 5 years ago
parent
commit
49710a0dbb
  1. 26
      app/Controller/v3/MiniSubscribeMsgController.php
  2. 22
      app/Model/v3/SubscribeMessageTemplate.php
  3. 51
      app/Service/v3/Implementations/MiniprogramService.php
  4. 18
      app/Service/v3/Interfaces/MiniprogramServiceInterface.php
  5. 1
      config/routes.php

26
app/Controller/v3/MiniSubscribeMsgController.php

@ -0,0 +1,26 @@
<?php
namespace App\Controller\v3;
use App\Service\v3\Interfaces\MiniprogramServiceInterface;
use Hyperf\Di\Annotation\Inject;
use Hyperf\Validation\ValidationException;
class MiniSubscribeMsgController extends \App\Controller\BaseController
{
/**
* @Inject
* @var MiniprogramServiceInterface
*/
protected $miniprogramService;
public function getTemplates()
{
$forUserType = $this->request->input('for_user_type');
$templates = $this->miniprogramService->getSubscribeMessageTempList($forUserType);
return $this->success(['templates' => $templates]);
}
}

22
app/Model/v3/SubscribeMessageTemplate.php

@ -0,0 +1,22 @@
<?php
namespace App\Model\v3;
use App\Model\Model;
use Hyperf\Database\Model\Builder;
use Hyperf\Database\Model\SoftDeletes;
class SubscribeMessageTemplate extends Model
{
use SoftDeletes;
protected $table = 'lanzu_subscribe_message_template';
protected function boot(): void
{
parent::boot();
self::addGlobalScope('normal', function (Builder $builder) {
$builder->where([$this->getTable().'.is_active' => 1]);
});
}
}

51
app/Service/v3/Implementations/MiniprogramService.php

@ -6,6 +6,7 @@ use App\Model\v3\Order;
use App\Model\v3\OrderGoods;
use App\Model\v3\OrderMain;
use App\Model\v3\Store;
use App\Model\v3\SubscribeMessageTemplate;
use App\Model\v3\User;
use App\Service\v3\Interfaces\MiniprogramServiceInterface;
use EasyWeChat\Factory;
@ -209,4 +210,54 @@ class MiniprogramService implements MiniprogramServiceInterface
$app->uniform_message->send($template);
}
public function sendSubscribeMessage($openid, $template_id, $data, $page = '')
{
if (empty($openid) || empty($template_id) || empty($data)) {
return ;
}
$app = Factory::miniProgram(config('wechat.applet'));
$app['guzzle_handler'] = CoroutineHandler::class;
$msgData = [
'touser' => $openid,
'template_id' => $template_id,
'page' => $page,
'miniprogram_state' => env('APP_ENV')=='prod' ? 'formal' : 'developer',
'data' => $data
];
return $app->subscribe_message->send($msgData);
}
public function getSubscribeMessageTempList($forUserType)
{
if ($forUserType == '') {
$app = Factory::miniProgram(config('wechat.applet'));
$app['guzzle_handler'] = CoroutineHandler::class;
$result = $app->subscribe_message->getTemplates()['data'];
$res = [];
foreach ($result as $key => &$tmpl) {
$res[] = [
'template_id' => $tmpl['priTmplId'] ?? '',
'title' => $tmpl['title'] ?? '',
];
}
return $res;
} else {
$builder = SubscribeMessageTemplate::query()->select('pri_tmpl_id as template_id', 'title');
if ($forUserType != 'all') {
$builder = $builder->where(['for_user_type' => $forUserType]);
}
return $builder->get()->toArray();
}
}
}

18
app/Service/v3/Interfaces/MiniprogramServiceInterface.php

@ -38,4 +38,22 @@ interface MiniprogramServiceInterface
* @return mixed
*/
public function sendTempMsg($openid, $template_id, $data, $redirect_url = '', $applet_config = ['appid' => '', 'pagepath' => '']);
/**
* 发送小程序订阅消息
* @param $openid
* @param $template_id
* @param $data
* @param string $page
* @return mixed
*/
public function sendSubscribeMessage($openid, $template_id, $data, $page = '');
/**
* 获取订阅消息模板
* 为空时,从微信服务器获取全部,否则从本地服务器获取
* @param $forUserType
* @return mixed
*/
public function getSubscribeMessageTempList($forUserType);
}

1
config/routes.php

@ -100,6 +100,7 @@ Router::addGroup('/v3/', function () {
Router::post('home/market', 'App\Controller\v3\HomeController@marketInfo');
Router::post('location/addrSuggestion', 'App\Controller\v3\LocationController@addrSuggestion');
Router::post('userAddress/deliveryDistance', 'App\Controller\v3\UserAddressController@deliveryDistance');
Router::post('subscribeMsg/getTemplates', 'App\Controller\v3\MiniSubscribeMsgController@getTemplates');
},['middleware' => [\App\Middleware\Auth\ApiMiddleware::class]]);
// 需要登录的路由

Loading…
Cancel
Save