Addon.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <?php
  2. namespace addon\mall;
  3. use addon\mall\app\dict\init\InitDataDict;
  4. use addon\mall\app\model\goods\Label;
  5. use addon\mall\app\model\goods\Service;
  6. use addon\mall\app\model\web\Floor;
  7. use addon\mall\app\service\core\delivery\CoreCompanyService;
  8. use app\dict\init\WebInitDataDict;
  9. use app\model\shop\ShopSiteGroup;
  10. use app\model\site\Site;
  11. use app\service\admin\diy\AdvService;
  12. use app\service\admin\diy\DiyService;
  13. use app\service\admin\web\NavService;
  14. use app\service\core\diy\CoreDiyService;
  15. use app\service\core\poster\CorePosterService;
  16. use app\service\core\site\CoreSiteService;
  17. use app\service\core\web\CoreWebConfigService;
  18. /**
  19. * 插件安装之后单独的插件方法
  20. */
  21. class Addon
  22. {
  23. /**
  24. * 插件安装执行
  25. */
  26. public function install()
  27. {
  28. $site_id = request()->defaultSiteId();
  29. // 更新站点和套餐内包含的应用
  30. $site_model = new Site();
  31. $site_list = $site_model->where([['site_id', '>', 0]])->select()->toArray();
  32. if (!empty($site_list)) {
  33. foreach ($site_list as $k => $v) {
  34. $site_app = $v[ 'app' ] ?? [];
  35. if (!in_array('mall', $site_app)) {
  36. $site_app[] = 'mall';
  37. $site_model->where([['site_id', '=', $v[ 'site_id' ]]])->update(['app' => $site_app]);
  38. }
  39. }
  40. }
  41. $site_group_model = new ShopSiteGroup();
  42. $site_group_list = $site_group_model->where([['group_id', '>', 0]])->select()->toArray();
  43. if (!empty($site_group_list)) {
  44. foreach ($site_group_list as $k => $v) {
  45. $site_group_app = $v[ 'app' ] ?? [];
  46. if (!in_array('mall', $site_group_app)) {
  47. $site_group_app[] = 'mall';
  48. $site_group_model->where([['group_id', '=', $v['group_id' ]]])->update(['app' => $site_group_app]);
  49. }
  50. }
  51. }
  52. // 创建默认商品海报
  53. $poster = new CorePosterService();
  54. $template = $poster->getTemplateList('mall', 'shop_goods')[ 0 ];
  55. $poster->add($site_id, 'mall', [
  56. 'name' => $template[ 'name' ],
  57. 'type' => $template[ 'type' ],
  58. 'value' => $template[ 'data' ],
  59. 'status' => 1,
  60. 'is_default' => 1
  61. ]);
  62. // 创建 商城首页 微页面
  63. $index_flag = 'DIY_INDEX';
  64. $diy_service = new DiyService();
  65. $index_template = $diy_service->getFirstPageData($index_flag, 'mall');
  66. $index_page_id = $diy_service->add([
  67. 'page_title' => $index_template[ 'title' ],
  68. "title" => $index_template[ 'title' ],
  69. "name" => $index_flag,
  70. "type" => $index_flag,
  71. "template" => $index_template[ 'template' ],
  72. "mode" => $index_template[ 'mode' ],
  73. "value" => json_encode($index_template[ 'data' ]),
  74. "is_default" => 1,
  75. "is_change" => 0
  76. ]);
  77. $diy_service->setUse($index_page_id);
  78. // 创建 个人中心 微页面
  79. $member_flag = 'DIY_MEMBER_INDEX';
  80. $member_template = $diy_service->getFirstPageData($member_flag,'mall');
  81. $member_page_id = $diy_service->add([
  82. 'page_title' => $member_template[ 'title' ],
  83. "title" => $member_template[ 'title' ],
  84. "name" => $member_flag,
  85. "type" => $member_flag,
  86. "template" => $member_template[ 'template' ],
  87. "mode" => $member_template[ 'mode' ],
  88. "value" => json_encode($member_template[ 'data' ]),
  89. "is_default" => 1,
  90. "is_change" => 0
  91. ]);
  92. $diy_service->setUse($member_page_id);
  93. $init_data = WebInitDataDict::getInitData();
  94. $mall_data = InitDataDict::getInitData(['site_id' => $site_id]);
  95. //初始化首页导航
  96. $navService = new NavService();
  97. foreach ($init_data['nav'] as $v) {
  98. $navService->add($v);
  99. }
  100. //初始化首页轮播
  101. $advService = new AdvService();
  102. foreach ($init_data['adv'] as $v) {
  103. $advService->add($v);
  104. }
  105. //初始化站点配置
  106. (new CoreSiteService())->editBasicInfo($site_id, $init_data['site']);
  107. // 创建物流公司
  108. $company_service = new CoreCompanyService();
  109. foreach ($mall_data['company_list'] as $k => $v) {
  110. $company_info = $company_service->getInfo([['company_name', '=', $v['company_name']]], 'company_id');
  111. if (!empty($company_info)) unset($mall_data['company_list'][$k]);
  112. }
  113. $mall_data['company_list'] = array_values($mall_data['company_list']);
  114. $company_service->addAll($mall_data['company_list']);
  115. // 添加商品标签
  116. $label_model = new Label();
  117. $label_model->insertAll($mall_data['label_list']);
  118. // 添加商品服务
  119. $service_model = new Service();
  120. $service_model->insertAll($mall_data['service_list']);
  121. //初始化首页楼层
  122. $floor_model = new Floor();
  123. $floor_model->insertAll($mall_data['floor_list']);
  124. // 创建默认主题风格颜色
  125. ( new CoreDiyService() )->initDefaultDiyTheme();
  126. return true;
  127. }
  128. /**
  129. * 插件卸载执行
  130. */
  131. public function uninstall()
  132. {
  133. return true;
  134. }
  135. /**
  136. * 插件升级执行
  137. */
  138. public function upgrade()
  139. {
  140. return true;
  141. }
  142. }