TemplateController.php 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. <?php
  2. namespace backend\modules\admin\controllers;
  3. use backend\modules\common\logic\DiyTemplateLogic;
  4. use backend\controllers\AdminController;
  5. use common\enums\DiyEnum;
  6. use common\enums\StatusEnum;
  7. use common\models\diy\DiyComponents;
  8. use common\models\diy\DiyMallTemplate;
  9. use common\models\diy\DiyTemplate;
  10. use yii\db\Exception;
  11. use yii\helpers\Json;
  12. use Yii;
  13. class TemplateController extends AdminController
  14. {
  15. /**
  16. *
  17. * 商城模板列表
  18. * @Author: lun
  19. * @DateTime: 2021/12/14 0014 17:38
  20. * @Copyright: copyright (c) 2021 广东七件事集团
  21. * @return mixed|string|void
  22. */
  23. public function actionMall()
  24. {
  25. if (Yii::$app->request->isAjax && Yii::$app->request->isGet) {
  26. $params = Yii::$app->request->get();
  27. // 检查提交的参数
  28. $res = Yii::$app->services->validate->validate($params,[
  29. [['route_type'], 'required'],
  30. [['title','template','route_type'], 'string'],
  31. [['title', 'page', 'limit'], 'safe'],
  32. [['cate_id','mid'], 'integer'],
  33. ]);
  34. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  35. $data = DiyTemplateLogic::TemplateMarket($params);
  36. return $this->success('获取成功', $data);
  37. } else {
  38. return $this->render($this->action->id);
  39. }
  40. }
  41. /**
  42. * 新增或编辑
  43. * @Author: lun
  44. * @DateTime: 2021/12/14 0014 10:30
  45. * @Copyright: copyright (c) 2021 广东七件事集团
  46. * @return mixed|string|void
  47. */
  48. public function actionEdit()
  49. {
  50. $request = Yii::$app->request;
  51. if ($request->isAjax) {
  52. if ($request->isPost) {
  53. $params = $request->post();
  54. $res = Yii::$app->services->validate->validate($params,[
  55. [['id','cate_id'], 'integer'],
  56. [['content'], 'string'],
  57. [['content', 'title'], 'required'],
  58. [['id', 'cover'], 'safe'],
  59. ]);
  60. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  61. $trans = Yii::$app->db->beginTransaction();
  62. try {
  63. if (empty($params['cate_id'])) return $this->error('请选择所属分类');
  64. // 将数组转为json字符串
  65. if (is_array($params['content'])) $params['content'] = Json::encode($params['content'],JSON_UNESCAPED_SLASHES);
  66. // 保存数据
  67. $params['setting'] = '[{"unit":"永久","money":"0","duration":"-1"}]';// 默认价格设置
  68. $params['is_on_sale'] = StatusEnum::DISABLED;
  69. $res = DiyTemplate::setData($params);
  70. if ($res == false) throw new Exception(DiyTemplate::getStaticError());
  71. $trans->commit();
  72. $this->success('保存成功');
  73. } catch (\Exception $e) {
  74. $trans->rollBack();
  75. \Yii::error('edit DiyController error:' . $e->getMessage());
  76. $this->error('编辑失败,msg:' . $e->getMessage());
  77. }
  78. } else {
  79. $params = $request->get();
  80. $res = Yii::$app->services->validate->validate($params,[
  81. [['id'], 'integer'],
  82. [['id'], 'safe']
  83. ]);
  84. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  85. try{
  86. if (isset($params['id'])) {
  87. // 查询页面
  88. $diypage = DiyTemplate::find()->where(['id' => $params['id']])->select(['id','cate_id', 'title', 'template','content','created_at'])->asArray()->one();
  89. if (empty($diypage))throw new \Exception("页面不存在");
  90. $template = $diypage['template'];// 获取该页面模板
  91. }
  92. // 根据分组获取组件
  93. $components = DiyComponents::getComponent(DiyEnum::getGroup($template ?: DiyEnum::CUSTOM_PAGE));
  94. $auth = $capital = [];
  95. // 获取分类
  96. $cate_arr = DiyEnum::getTemplateCate();
  97. $this->success('获取成功', compact('diypage', 'components', 'auth', 'capital', 'cate_arr'));
  98. } catch (\Exception $e) {
  99. $this->error('获取失败,msg:' . $e->getMessage());
  100. }
  101. }
  102. } else {
  103. return $this->render("@backend/modules/mall/views/diy/edit.php");
  104. }
  105. }
  106. /**
  107. * 设置
  108. * @Author: lun
  109. * @DateTime: 2021/12/14 0014 16:57
  110. * @Copyright: copyright (c) 2021 广东七件事集团
  111. * @return mixed|string|void
  112. */
  113. public function actionSetting()
  114. {
  115. $request = Yii::$app->request;
  116. if ($request->isAjax) {
  117. if ($request->isPost) {
  118. $params = $request->post('detail');
  119. $res = Yii::$app->services->validate->validate($params,[
  120. [['id','status'], 'integer'],
  121. [['title'], 'string'],
  122. [['id', 'title','setting'], 'required'],
  123. ]);
  124. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  125. $trans = Yii::$app->db->beginTransaction();
  126. try {
  127. $params['setting'] = Json::encode($params['setting']);
  128. // 保存数据
  129. $res = DiyTemplate::setData($params);
  130. if ($res == false) throw new Exception(DiyTemplate::getStaticError());
  131. $trans->commit();
  132. $this->success('保存成功');
  133. } catch (\Exception $e) {
  134. $trans->rollBack();
  135. $this->error('编辑失败,msg:' . $e->getMessage());
  136. }
  137. } else {
  138. $params = $request->get();
  139. $res = Yii::$app->services->validate->validate($params,[
  140. [['id'], 'integer'],
  141. [['id'], 'required']
  142. ]);
  143. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  144. try{
  145. $template = DiyTemplate::find()->where(['id' => $params['id']])->select(['id','title', 'setting','status'])->asArray()->one();
  146. if (empty($template))throw new \Exception("页面不存在");
  147. $this->success('获取成功', $template);
  148. } catch (\Exception $e) {
  149. $this->error('获取失败,msg:' . $e->getMessage());
  150. }
  151. }
  152. } else {
  153. return $this->render($this->action->id);
  154. }
  155. }
  156. /**
  157. * 操作
  158. * @Author: lun
  159. * @DateTime: 2021/12/14 0014 18:37
  160. * @Copyright: copyright (c) 2021 广东七件事集团
  161. * @return mixed|void
  162. */
  163. public function actionHandle()
  164. {
  165. $request = Yii::$app->request;
  166. if ($request->isAjax && $request->isPost) {
  167. $params = $request->post();
  168. $res = Yii::$app->services->validate->validate($params,[
  169. [['id','is_on_sale'], 'integer'],
  170. [['id', 'is_on_sale'], 'required'],
  171. ]);
  172. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  173. $trans = Yii::$app->db->beginTransaction();
  174. try {
  175. // 保存数据
  176. $res = DiyTemplate::setData($params);
  177. if ($res == false) throw new Exception(DiyTemplate::getStaticError());
  178. $trans->commit();
  179. $this->success('编辑成功');
  180. } catch (\Exception $e) {
  181. $trans->rollBack();
  182. $this->error('编辑失败,msg:' . $e->getMessage());
  183. }
  184. }
  185. }
  186. /**
  187. * 删除模板
  188. * @Author: pan
  189. * @DateTime: 2024/4/1 0014 18:37
  190. * @Copyright: copyright (c) 2021 广东七件事集团
  191. * @return mixed|void
  192. */
  193. public function actionDelete()
  194. {
  195. $request = Yii::$app->request;
  196. if ($request->isAjax && $request->isPost) {
  197. $params = $request->post();
  198. $params['status'] = -1;
  199. $res = Yii::$app->services->validate->validate($params,[
  200. [['id', 'status'], 'integer'],
  201. [['id', 'status'], 'required'],
  202. ]);
  203. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  204. $trans = Yii::$app->db->beginTransaction();
  205. try {
  206. // 保存数据
  207. $res = DiyTemplate::setData($params);
  208. if ($res == false) throw new Exception(DiyTemplate::getStaticError());
  209. $trans->commit();
  210. $this->success('删除成功');
  211. } catch (\Exception $e) {
  212. $trans->rollBack();
  213. $this->error('删除失败,msg:' . $e->getMessage());
  214. }
  215. }
  216. }
  217. }