WeappTemplateService.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Niucloud-admin 企业快速开发的saas管理平台
  4. // +----------------------------------------------------------------------
  5. // | 官方网址:https://www.niucloud.com
  6. // +----------------------------------------------------------------------
  7. // | niucloud团队 版权所有 开源版本可自由商用
  8. // +----------------------------------------------------------------------
  9. // | Author: Niucloud Team
  10. // +----------------------------------------------------------------------
  11. namespace app\service\admin\weapp;
  12. use app\dict\notice\NoticeTypeDict;
  13. use app\service\admin\notice\NoticeService;
  14. use app\service\core\notice\CoreNoticeService;
  15. use core\base\BaseAdminService;
  16. use core\exception\NoticeException;
  17. use core\template\TemplateLoader;
  18. use think\db\exception\DataNotFoundException;
  19. use think\db\exception\DbException;
  20. use think\db\exception\ModelNotFoundException;
  21. /**
  22. * easywechat主体提供
  23. * Class WeappTemplateService
  24. * @package app\service\core\weapp
  25. */
  26. class WeappTemplateService extends BaseAdminService
  27. {
  28. /**
  29. * 获取订阅消息
  30. * @return array
  31. */
  32. public function getList()
  33. {
  34. $core_notice_service = new CoreNoticeService();
  35. $list = $core_notice_service->getList();
  36. $template = [];
  37. foreach ($list as $k => $v){
  38. if(in_array(NoticeTypeDict::WEAPP, $v['support_type'])) $template[] = $v;
  39. }
  40. return $template;
  41. }
  42. /**
  43. * 同步微信公众号消息模板
  44. * @param array $keys
  45. * @return true
  46. * @throws DataNotFoundException
  47. * @throws DbException
  48. * @throws ModelNotFoundException
  49. */
  50. public function syncAll(array $keys = []){
  51. $core_notice_service = new CoreNoticeService();
  52. $list = $core_notice_service->getList($keys);
  53. if(empty($list)) throw new NoticeException('NOTICE_TEMPLATE_NOT_EXIST');
  54. foreach($list as $v){
  55. $this->syncItem($v);
  56. }
  57. return true;
  58. }
  59. /**
  60. * @param $item
  61. * @return true
  62. */
  63. public function syncItem($item){
  64. $key = $item['key'] ?? '';
  65. $weapp = $item['weapp'] ?? [];
  66. $tid = $weapp['tid'] ?? '';
  67. if(empty($tid)) $error = 'WECHAT_TEMPLATE_NEED_NO';
  68. $weapp_template_id = $item['weapp_template_id'];
  69. //删除原来的消息模板
  70. $template_loader = (new TemplateLoader(NoticeTypeDict::WEAPP, ['site_id' => $this->site_id]));
  71. $template_loader->delete(['template_id' => $weapp_template_id ]);
  72. // (new CoreWeappTemplateService())->deleteTemplate($this->site_id, $weapp_template_id);
  73. //新的消息模板
  74. $kid_list = $weapp['kid_list'] ?? [];
  75. $scene_desc = $weapp['scene_desc'] ?? '';
  76. // $res = (new CoreWeappTemplateService())->addTemplate($this->site_id, $tid, $kid_list, $scene_desc);
  77. $res = $template_loader->addTemplate(['tid' => $tid, 'kid_list' => $kid_list, 'scene_desc' => $scene_desc ]);
  78. $notice_service = new NoticeService();
  79. if (isset($res[ 'errcode' ]) && in_array($res[ 'errcode' ], [0, 200022])) {
  80. //修改
  81. $notice_service->modify($key, 'weapp_template_id', $res[ 'priTmplId' ]);
  82. } else {
  83. throw new NoticeException($res[ 'errmsg' ]);
  84. }
  85. return true;
  86. }
  87. }