DefaultNoticeController.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: yunzhong
  5. * Date: 2018/5/16
  6. * Time: 15:55
  7. */
  8. namespace app\backend\modules\setting\controllers;
  9. use app\common\components\BaseController;
  10. use app\common\modules\template\Template;
  11. use app\common\services\notice\WechatApi;
  12. use app\common\models\TemplateMessageDefault;
  13. use app\common\models\notice\MessageTemp;
  14. class DefaultNoticeController extends BaseController
  15. {
  16. private $WechatApiModel;
  17. private $TemplateDefaultModel;
  18. private $wechat_list;
  19. private $MessageTempModel;
  20. /**
  21. * DefaultNoticeController constructor.
  22. * @throws \app\common\exceptions\ShopException
  23. */
  24. public function preAction() {
  25. parent::preAction();
  26. $this->WechatApiModel = new WechatApi();
  27. $this->MessageTempModel = new MessageTemp();
  28. $this->TemplateDefaultModel = new TemplateMessageDefault();
  29. $this->wechat_list = collect($this->WechatApiModel->getTmpList()['template_list']);//获取微信模版列表并转化为集合
  30. }
  31. public function index() {
  32. $notice_name = request()->notice_name;
  33. $setting_name = request()->setting_name;
  34. $notice = \Setting::get($setting_name);//获取设置信息
  35. $message_template = $this->MessageTempModel->getTempIdByNoticeType($notice_name);//获取消息通知模版
  36. $has_template_id = $this->wechat_list->where('template_id',$message_template->template_id)->first();//查询是否存在template_id,不存在则新建
  37. if ($has_template_id) {
  38. $notice[$notice_name] = (string)$message_template->id;
  39. } else {
  40. $notice[$notice_name] = $this->createDefaultMessageTemp($notice_name);
  41. }
  42. \Setting::set($setting_name, $notice);
  43. echo json_encode([
  44. 'result' => '1',
  45. 'id' => $notice[$notice_name],
  46. ]);
  47. }
  48. public function cancel() {
  49. $notice_name = request()->notice_name;
  50. $setting_name = request()->setting_name;
  51. $notice = \Setting::get($setting_name);
  52. $notice[$notice_name] = "0";
  53. \Setting::set($setting_name, $notice);
  54. echo json_encode([
  55. 'result' => '1',
  56. ]);
  57. }
  58. public function store()
  59. {
  60. $notice_name = request()->notice_name;//\YunShop::request()->notice_name;
  61. $setting_name = request()->setting_name;//\YunShop::request()->setting_name;
  62. $message_template = $this->MessageTempModel->getTempIdByNoticeType($notice_name);//获取消息通知模版
  63. $has_template_id = $this->wechat_list->where('template_id',$message_template->template_id)->first();//查询是否存在template_id,不存在则新建
  64. if ($has_template_id){
  65. $item = (string)$message_template->id;
  66. } else {
  67. if ($message_template) {
  68. $message_template->delete();
  69. }
  70. $item = $this->createDefaultMessageTemp($notice_name);
  71. }
  72. \Setting::set($setting_name, $item);
  73. $setting = explode('.',$setting_name);
  74. if($setting[0] == 'love') {
  75. \Cache::forget('plugin.love.set_' . \YunShop::app()->uniacid);
  76. }
  77. echo json_encode([
  78. 'result' => '1',
  79. 'id' => (string)$item,
  80. ]);
  81. }
  82. public function storeCancel() {
  83. $setting_name = request()->setting_name;//\YunShop::request()->setting_name;
  84. $item = "0";
  85. \Setting::set($setting_name, $item);
  86. $setting = explode('.',$setting_name);
  87. if($setting[0] == 'love') {
  88. \Cache::forget('plugin.love.set_' . \YunShop::app()->uniacid);
  89. }
  90. echo json_encode([
  91. 'result' => '1',
  92. ]);
  93. }
  94. protected function createDefaultMessageTemp($notice_name)
  95. {
  96. $template_id_short = '';
  97. $template_default_data_1 = [];
  98. foreach(Template::current()->getNoticeItems() as $key => $item) {
  99. if ($key == $notice_name) {
  100. $template_id_short = $item['template_id_short'];
  101. unset($item['template_id_short']);
  102. $template_default_data_1 = $item;
  103. break;
  104. }
  105. }
  106. $template_data = $this->TemplateDefaultModel->getData($template_id_short);
  107. $has_template = $this->wechat_list->where('template_id',$template_data->template_id)->first();
  108. if (empty($has_template) || empty($template_data->template_id)) {
  109. if ($template_data) {
  110. $template_data->delete();
  111. }
  112. $template_id = $this->WechatApiModel->getTemplateIdByTemplateIdShort($template_id_short);
  113. if (empty($template_id)) {
  114. echo json_encode([
  115. 'result' => '0',
  116. 'msg' => '获取微信模版失败',
  117. ]);exit();
  118. }
  119. $this->TemplateDefaultModel->template_id_short = $template_id_short;
  120. $this->TemplateDefaultModel->template_id = $template_id;
  121. $this->TemplateDefaultModel->uniacid = \YunShop::app()->uniacid;
  122. $this->TemplateDefaultModel->save();
  123. $template_data['template_id'] = $template_id;
  124. }
  125. $template_default_data_2 = [
  126. 'uniacid' => \YunShop::app()->uniacid,
  127. 'template_id' => $template_data['template_id'],
  128. 'is_default' => 1,
  129. 'notice_type' => $notice_name,
  130. ];
  131. $template_default_data = array_merge($template_default_data_1, $template_default_data_2);
  132. $ret = $this->MessageTempModel->updateOrCreate(['notice_type' => $notice_name], $template_default_data);
  133. return (string)$ret->id;
  134. }
  135. }