SiteRegisterController.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2019/5/9
  6. * Time: 14:57
  7. */
  8. namespace app\platform\modules\system\controllers;
  9. use app\platform\controllers\BaseController;
  10. use app\common\facades\Setting;
  11. use app\common\models\Address;
  12. use app\common\services\AutoUpdate;
  13. use Ixudra\Curl\Facades\Curl;
  14. use app\common\models\Setting as SettingModel;
  15. class SiteRegisterController extends BaseController
  16. {
  17. public function __construct()
  18. {
  19. $this->_log = app('log');
  20. }
  21. /**
  22. * 密钥填写
  23. *
  24. * @return \Illuminate\Http\JsonResponse|string
  25. * @throws \Throwable
  26. * @return mixed
  27. */
  28. public function index()
  29. {
  30. $upgrade = Setting::getNotUniacid('platform_shop.key');
  31. $page = 'auth';
  32. if (empty($upgrade['key']) && empty($upgrade['secret'])) {
  33. $domain = request()->getHttpHost();
  34. $url = config('auto-update.registerUrl') . '/check_domain.json';
  35. $auth_str = Curl::to($url)
  36. ->withData(['domain' => $domain])
  37. ->asJsonResponse(true)
  38. ->get();
  39. if (empty($auth_str['data']['key']) && empty($auth_str['data']['secret'])) {
  40. $page = 'free';
  41. } else {
  42. $upgrade = $auth_str['data'];
  43. $this->processingKey($upgrade, 'create');
  44. $free_plugins = SettingModel::where('group', 'free')->where('key', 'plugin')->first();
  45. if (!is_null($free_plugins)) {
  46. Setting::set('free.plugin', unserialize($free_plugins->value));
  47. }
  48. }
  49. }
  50. $auth_url = ''; //yzWebFullUrl('setting.key.index', ['page' => 'auth']);
  51. $free_url = ''; //yzWebFullUrl('setting.key.index', ['page' => 'free']);
  52. $btn = empty($upgrade['key']) || empty($upgrade['secret']) ? 1 : 0;
  53. // 获取省级列表
  54. $province = Address::getProvince();
  55. return $this->successJson('成功', [
  56. 'province' => ['data' => $province->toArray()],
  57. 'page' => ['type' => $page],
  58. 'url' => ['free' => $free_url, 'auth' =>$auth_url],
  59. 'set' => ['key' => $upgrade['key'], 'secret' => $upgrade['secret'], 'btn' => $btn]
  60. ]);
  61. }
  62. /**
  63. * 处理信息
  64. *
  65. * @param $requestModel
  66. * @param $type
  67. * @return bool
  68. */
  69. private function processingKey($requestModel, $type)
  70. {
  71. $domain = request()->getHttpHost();
  72. $data = [
  73. 'key' => $requestModel['key'],
  74. 'secret' => $requestModel['secret'],
  75. 'domain' => $domain
  76. ];
  77. if($type == 'create') {
  78. $content = Curl::to(config('auto-update.checkUrl').'/app-account/create')
  79. ->withData($data)
  80. ->get();
  81. $writeRes = Setting::set('platform_shop.key', $requestModel);
  82. \Cache::forget('app_auth');
  83. return $writeRes && $content;
  84. } else if($type == 'cancel') {
  85. $content = Curl::to(config('auto-update.checkUrl').'/app-account/cancel')
  86. ->withData($data)
  87. ->get();
  88. $writeRes = Setting::set('platform_shop.key', '');
  89. \Cache::forget('app_auth');
  90. return $writeRes && $content ;
  91. }
  92. }
  93. /*
  94. * 检测是否有数据存在
  95. */
  96. public function isExist($data)
  97. {
  98. $type = request()->type;
  99. $domain = request()->getHttpHost();
  100. $filename = config('auto-update.checkUrl').'/check_isKey.json';
  101. $postData = [
  102. 'type' => $type,
  103. 'domain' => $domain
  104. ];
  105. $update = new AutoUpdate();
  106. $res = $update->isKeySecretExists($filename, $data, $postData, 'auto_update');
  107. return $res;
  108. }
  109. /**
  110. * 获取城市
  111. * @return \Illuminate\Http\JsonResponse
  112. */
  113. public function getCity()
  114. {
  115. $data = request()->data;
  116. $addressData = Address::getCityByParentId($data['id']);
  117. return $this->successJson('ok', $addressData);
  118. }
  119. /**
  120. * 获取地区
  121. * @return \Illuminate\Http\JsonResponse
  122. */
  123. public function getArea()
  124. {
  125. $data = request()->data;
  126. $addressData = Address::getAreaByParentId($data['id']);
  127. return $this->successJson('ok', $addressData);
  128. }
  129. public function register()
  130. {
  131. $data = request()->setdata;
  132. $auth_url = '/admin/system/siteRegister/index';
  133. $key = 'free';
  134. $secret = request()->getSchemeAndHttpHost();
  135. $url = config('auto-update.registerUrl') . "/free/{$data['name']}/{$data['trades']}/{$data['province']['areaname']}/{$data['city']['areaname']}/{$data['area']['areaname']}/{$data['address']}/{$data['mobile']}/{$data['captcha']}";
  136. $register = Curl::to($url)
  137. ->withHeader(
  138. "Authorization: Basic " . base64_encode("{$key}:{$secret}")
  139. )
  140. ->asJsonResponse(true)
  141. ->get();
  142. if (!is_null($register)) {
  143. if (1 == $register['result']) {
  144. //检测数据是否存在
  145. $res = $this ->isExist($register['data']['shop']);
  146. //var_dump($res);exit();
  147. if(!$res['isExists']) {
  148. if($res['message'] == 'amount exceeded')
  149. $this->errorJson('您已经没有剩余站点数量了,如添加新站点,请取消之前的站点或者联系我们的客服人员!');
  150. else
  151. $this->errorJson('Key或者密钥出错了!');
  152. } else {
  153. if ($this->processingKey($register['data']['shop'], 'create')) {
  154. if ($register['data']['plugins']) {
  155. Setting::set('free.plugin', $register['data']['plugins']);
  156. }
  157. return $this->successJson("商城注册成功", ['url' => $auth_url]);
  158. }
  159. }
  160. } else {
  161. return $this->errorJson($register['msg']);
  162. }
  163. }
  164. return $this->errorJson("商城注册失败");
  165. }
  166. /**
  167. * 获取手机验证码
  168. * @return \Illuminate\Http\JsonResponse
  169. */
  170. public function sendSms()
  171. {
  172. $key = 'free';
  173. $secret = request()->getHttpHost();
  174. $mobile = request()->mobile;
  175. $url = config('auto-update.registerUrl') . "/sendsms/{$mobile}";
  176. $res = Curl::to($url)
  177. ->withHeader(
  178. "Authorization: Basic " . base64_encode("{$key}:{$secret}")
  179. )
  180. ->asJsonResponse(true)
  181. ->get();
  182. if ($res['result'] == 1) {
  183. return $this->successJson('验证码已发送');
  184. } else {
  185. return $this->errorJson($res['msg']);
  186. }
  187. }
  188. public function resetSecretKey()
  189. {
  190. $data = request()->data;
  191. $setting = Setting::getNotUniacid('shop.key');
  192. if ($data['key'] && $data['secret']) {
  193. try {
  194. Setting::setNotUniacid('platform_shop.key', $data);
  195. } catch (\Exception $e) {
  196. return $this->errorJson($e->getMessage());
  197. }
  198. }
  199. return $this->successJson('成功', $setting);
  200. }
  201. }