DecorateController.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. <?php
  2. namespace backend\modules\mall\controllers;
  3. use backend\controllers\MallController;
  4. use common\enums\DiyEnum;
  5. use common\helpers\StringHelper;
  6. use common\models\diy\DiyPage;
  7. use common\models\mall\Poster;
  8. use Yii;
  9. use yii\helpers\Json;
  10. /**
  11. * 装修
  12. *
  13. * Class DecorateController
  14. * @package backend\modules\mall\DecorateController
  15. */
  16. class DecorateController extends MallController
  17. {
  18. /**
  19. * 底部导航
  20. * @return mixed|string|void
  21. */
  22. public function actionBottomNav()
  23. {
  24. if (Yii::$app->request->isAjax) {
  25. if (Yii::$app->request->isGet) {
  26. $detail = Yii::$app->services->setting->mall->get($this->mall_id, 'bottom_nav');
  27. $detail['navs'] = is_array($detail['navs']) ? $detail['navs'] : Json::decode($detail['navs']);
  28. // 获取装修首页内容,并强制初始化首页装修地址
  29. DiyPage::getHomePage($this->mall_id, $detail['navs'][0]);
  30. foreach ($detail['navs'] as $key => &$item) {
  31. if(!isset($item['is_show'])){
  32. $item['is_show'] = 1;
  33. }
  34. }
  35. $this->success('获取成功', compact('detail'));
  36. } else {
  37. $params = Yii::$app->request->post('form');
  38. $res = Yii::$app->services->validate->validate($params, [
  39. [['bottom_background_color', 'inactive_color', 'active_color'], 'required'],
  40. [['bottom_background_color'], 'string'],
  41. [['navs','recover_default'], 'safe']
  42. ]);
  43. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  44. if (empty($params['navs'])) $params['navs'] = [];
  45. if (!empty($params['recover_default'])) {// 恢复默认
  46. $params['navs'] = DiyEnum::DEFULT_BUTTOM_NAV;
  47. }
  48. unset($params['recover_default']);
  49. Yii::$app->services->setting->mall->set($this->mall_id, ['bottom_nav' => $params]);
  50. $this->success('保存成功');
  51. }
  52. }
  53. return $this->render($this->action->id);
  54. }
  55. /**
  56. * 悬浮按钮
  57. * @return string
  58. */
  59. public function actionFloatButton()
  60. {
  61. if (Yii::$app->request->isAjax) {
  62. if (Yii::$app->request->isGet) {
  63. $detail = Yii::$app->services->setting->mall->get($this->mall_id, 'float_button');
  64. if (empty($detail)) $this->success('暂未配置', []);
  65. $this->success('获取成功', $detail);
  66. } else {
  67. $params = Yii::$app->request->post('ruleForm');
  68. $res = Yii::$app->services->validate->validate($params, [
  69. [['is_quick_navigation', 'quick_navigation_style', 'is_customer_services', 'is_show_scroll_top',
  70. 'quick_navigation_opened_pic', 'quick_navigation_closed_pic', 'customer_services_pic'], 'required'],
  71. [['is_quick_navigation', 'quick_navigation_style', 'is_customer_services', 'is_show_scroll_top'], 'integer'],
  72. [['quick_navigation_opened_pic', 'quick_navigation_closed_pic', 'customer_services_pic'], 'string'],
  73. ]);
  74. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  75. Yii::$app->services->setting->mall->set($this->mall_id, ['float_button' => $params]);
  76. $this->success('保存成功');
  77. }
  78. }
  79. return $this->render($this->action->id);
  80. }
  81. /**
  82. * 商品海报
  83. * @return string
  84. */
  85. public function actionPoster()
  86. {
  87. if (Yii::$app->request->isAjax) {
  88. if (Yii::$app->request->isGet) {
  89. $poster = Yii::$app->services->setting->mall->get($this->mall_id, 'poster');
  90. // 无海报数据则获取默认参数
  91. if (empty($poster)) {
  92. $poster = Poster::getDefaultPoster();
  93. } else {
  94. foreach ($poster as &$item) {
  95. if (!is_array($item)) $item = Json::decode($item, true);
  96. }
  97. }
  98. $this->success('获取成功', $poster);
  99. } else {
  100. $params = Yii::$app->request->post('form');
  101. $res = Yii::$app->services->validate->validate($params, [
  102. [['share', 'goods', 'topic', 'footprint'], 'required'],
  103. ]);
  104. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  105. Yii::$app->services->setting->mall->set($this->mall_id, ['poster' => $params]);
  106. $this->success('保存成功');
  107. }
  108. }
  109. return $this->render($this->action->id);
  110. }
  111. /**
  112. * 全局设置
  113. * @return mixed|string|void
  114. */
  115. public function actionSetting()
  116. {
  117. $request = Yii::$app->request;
  118. if ($request->isAjax) {
  119. if ($request->isGet) {
  120. $detail = Yii::$app->services->setting->mall->get($this->mall_id, 'decorate_setting');
  121. if (empty($detail)) $this->success('暂未配置', []);
  122. $this->success('获取成功', $detail);
  123. } else {
  124. $params = Yii::$app->request->post('form');
  125. $res = Yii::$app->services->validate->validate($params, [
  126. [['global_text_color'], 'required'],
  127. [['global_text_color'], 'string'],
  128. [['global_goods_need'], 'required'],
  129. [['global_goods_need'], 'number'],
  130. ]);
  131. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  132. Yii::$app->services->setting->mall->set($this->mall_id, ['decorate_setting' => $params]);
  133. $this->success('保存成功');
  134. }
  135. }
  136. return $this->render($this->action->id);
  137. }
  138. /**
  139. * 全局设置
  140. * @return mixed|string|void
  141. */
  142. public function actionUserCenter()
  143. {
  144. $request = Yii::$app->request;
  145. if ($request->isAjax) {
  146. if ($request->isGet) {
  147. $detail = Yii::$app->services->setting->mall->get($this->mall_id, 'decorate_user_center', true);
  148. if (empty($detail)) {
  149. $detail = self::getUserCenterDefault();
  150. } else {
  151. foreach ($detail as &$item) {
  152. if (StringHelper::isJson($item)) $item = Json::decode($item);
  153. }
  154. }
  155. // 我的资产-自定义货币获取(货币模块功能需要优化所以此代码暂时未写)
  156. $this->success('获取成功', $detail);
  157. } else {
  158. $params = Yii::$app->request->post('form');
  159. $res = Yii::$app->services->validate->validate($params, [
  160. [['is_account_status', 'is_show_user_tool', 'user_tool_menu_title', 'user_tool_menu_style', 'is_menu_status',
  161. 'menu_title', 'is_order_bar_status', 'is_foot_bar_status', 'menu_style', 'top_style', 'account_show_type',
  162. 'top_pic_url', 'member_pic_url', 'member_bg_pic_url', 'style_bg_pic_url', 'is_assets_bar_status', 'account',
  163. 'order_bar', 'foot_bar', 'account_bar', 'assets_bar'], 'required'],
  164. [['is_account_status', 'is_show_user_tool', 'user_tool_menu_style', 'is_menu_status', 'is_order_bar_status',
  165. 'is_foot_bar_status', 'menu_style', 'top_style', 'account_show_type', 'is_assets_bar_status'], 'integer'],
  166. [['user_tool_menu_title', 'menu_title', 'top_pic_url', 'member_pic_url', 'member_bg_pic_url', 'style_bg_pic_url',
  167. 'account', 'order_bar', 'foot_bar', 'account_bar', 'assets_bar'], 'string'],
  168. [['menus','user_tool_menus'], 'safe'],
  169. ]);
  170. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  171. Yii::$app->services->setting->mall->set($this->mall_id, ['decorate_user_center' => $params]);
  172. $this->success('保存成功');
  173. }
  174. }
  175. return $this->render($this->action->id);
  176. }
  177. /**
  178. * 用户中心恢复默认
  179. */
  180. public function actionUserCenterRestore()
  181. {
  182. $request = Yii::$app->request;
  183. if ($request->isAjax) {
  184. if ($request->isPost) {
  185. Yii::$app->services->setting->mall->set($this->mall_id, ['decorate_user_center' => self::getUserCenterDefault()]);
  186. $this->success('保存成功');
  187. }
  188. }
  189. }
  190. /**
  191. * 用户中心默认值
  192. * @return array
  193. */
  194. public static function getUserCenterDefault()
  195. {
  196. $base_url = \Yii::$app->request->hostInfo . \Yii::$app->request->baseUrl;
  197. $iconUrlPrefix = $base_url . '/resources/img/mall/user-center/';
  198. return [
  199. 'is_account_status' => '1',
  200. 'is_show_user_tool' => '1',
  201. 'user_tool_menu_title' => '我的功能',
  202. 'user_tool_menu_style' => '1',
  203. 'is_menu_status' => '1',
  204. 'menu_title' => '营销功能',
  205. 'is_order_bar_status' => '1',
  206. 'is_foot_bar_status' => '1',
  207. 'menu_style' => '1',
  208. 'top_style' => '1',
  209. 'account_show_type' => '1',
  210. 'top_pic_url' => $iconUrlPrefix . 'img-user-bg.png',
  211. 'member_pic_url' => $base_url . '/resources/img/common/default_avatar_url.png',
  212. 'member_bg_pic_url' => $iconUrlPrefix . 'card-member-0.png',
  213. 'style_bg_pic_url' => $iconUrlPrefix . 'img-user-bg.png',
  214. 'is_assets_bar_status' => '1',
  215. 'account' => [ // TODO 好像是废弃不用了
  216. [
  217. 'icon_url' => $iconUrlPrefix . 'icon-wallet.png',
  218. 'name' => '我的钱包',
  219. ],
  220. [
  221. 'icon_url' => $iconUrlPrefix . 'icon-integral.png',
  222. 'name' => '积分',
  223. ],
  224. [
  225. 'icon_url' => $iconUrlPrefix . 'icon-balance.png',
  226. 'name' => '余额',
  227. ],
  228. ],
  229. 'menus' => [],
  230. 'user_tool_menus' => [],
  231. 'order_bar' => [
  232. [
  233. 'icon_url' => $iconUrlPrefix . 'icon-order-0.png',
  234. 'name' => '待付款',
  235. ],
  236. [
  237. 'icon_url' => $iconUrlPrefix . 'icon-order-1.png',
  238. 'name' => '待发货',
  239. ],
  240. [
  241. 'icon_url' => $iconUrlPrefix . 'icon-order-2.png',
  242. 'name' => '待收货',
  243. ],
  244. [
  245. 'icon_url' => $iconUrlPrefix . 'icon-order-3.png',
  246. 'name' => '待评价',
  247. ],
  248. [
  249. 'icon_url' => $iconUrlPrefix . 'icon-order-4.png',
  250. 'name' => '售后',
  251. ],
  252. ],
  253. 'foot_bar' => [
  254. [
  255. 'icon_url' => $iconUrlPrefix . 'favorite.png',
  256. 'name' => '我的收藏',
  257. ],
  258. [
  259. 'icon_url' => $iconUrlPrefix . 'foot.png',
  260. 'name' => '我的足迹',
  261. ],
  262. ],
  263. 'account_bar' => [
  264. 'status' => '1',
  265. 'integral' => [
  266. 'status' => '1',
  267. 'text' => '积分',
  268. 'icon' => $iconUrlPrefix . 'icon-integral.png',
  269. ],
  270. 'balance' => [
  271. 'status' => '1',
  272. 'text' => '余额',
  273. 'icon' => $iconUrlPrefix . 'icon-balance.png',
  274. ],
  275. 'coupon' => [
  276. 'status' => '1',
  277. 'text' => '优惠券',
  278. 'icon' => $iconUrlPrefix . 'icon-coupon.png',
  279. ],
  280. 'card' => [
  281. 'status' => '1',
  282. 'text' => '卡券',
  283. 'icon' => $iconUrlPrefix . 'icon-card.png',
  284. ],
  285. ],
  286. 'assets_bar' => [
  287. [
  288. 'icon_url' => $iconUrlPrefix . 'icon-balance.png',
  289. 'link_url' => '/pages/user/balance/details',
  290. 'name' => '余额',
  291. 'open_type' => 'navigate',
  292. 'status' => '1',
  293. 'sort' => '1',
  294. 'code' => 'balance'
  295. ],
  296. [
  297. 'icon_url' => $iconUrlPrefix . 'icon-integral.png',
  298. 'link_url' => '/pages/user/score/details',
  299. 'name' => '积分',
  300. 'open_type' => 'navigate',
  301. 'status' => '1',
  302. 'sort' => '2',
  303. 'code' => 'score'
  304. ],
  305. [
  306. 'icon_url' => $iconUrlPrefix . 'icon-card.png',
  307. 'link_url' => '/mch/e_coupon/list',
  308. 'name' => '电子券',
  309. 'open_type' => 'navigate',
  310. 'status' => '1',
  311. 'sort' => '3',
  312. 'code' => 'e_coupon'
  313. ],
  314. [
  315. 'icon_url' => $iconUrlPrefix . 'icon-coupon.png',
  316. 'link_url' => '/pages/user/coupon/coupon',
  317. 'name' => '优惠券',
  318. 'open_type' => 'navigate',
  319. 'status' => '1',
  320. 'sort' => '4',
  321. 'code' => 'coupon'
  322. ],
  323. ],
  324. ];
  325. }
  326. }