| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423 |
- <?php
- namespace addons\WechatVideoShop\console\controllers;
- use addons\WechatVideoShop\common\enums\WechatVideoShopEnums;
- use addons\WechatVideoShop\common\expand\sdk\weixin\src\crypto\Crypto;
- use addons\WechatVideoShop\common\expand\sdk\weixin\src\model\basic\AddressCodeModel;
- use addons\WechatVideoShop\common\expand\sdk\weixin\src\model\cate\CategoryAllModel;
- use addons\WechatVideoShop\common\expand\sdk\weixin\src\model\EmptyModel;
- use addons\WechatVideoShop\common\expand\sdk\weixin\src\request\basic\AddressCodeRequest;
- use addons\WechatVideoShop\common\expand\sdk\weixin\src\request\cate\CategoryAllRequest;
- use addons\WechatVideoShop\common\expand\sdk\weixin\src\request\logstistics\DeliveryCompanyListRequest;
- use addons\WechatVideoShop\common\helper\WechatAccessTokenHelper;
- use addons\WechatVideoShop\common\helper\WechatRequestHelper;
- use addons\WechatVideoShop\common\listeners\GoodsUpdateListener;
- use addons\WechatVideoShop\common\listeners\OrderDeliveryListener;
- use addons\WechatVideoShop\common\listeners\OrderFinishListener;
- use addons\WechatVideoShop\common\listeners\OrderPaidListener;
- use addons\WechatVideoShop\common\logic\SyncSharerLogic;
- use addons\WechatVideoShop\common\models\WechatVideoShop;
- use addons\WechatVideoShop\common\models\WechatVideoShopCate;
- use addons\WechatVideoShop\common\models\WechatVideoShopExpressCompany;
- use addons\WechatVideoShop\common\models\WechatVideoShopRegion;
- use addons\WechatVideoShop\common\service\CateService;
- use addons\WechatVideoShop\common\service\GoodsService;
- use addons\WechatVideoShop\common\service\RegionService;
- use addons\WechatVideoShop\common\service\ShopInfoService;
- use addons\WechatVideoShop\common\service\ShopService;
- use common\enums\StatusEnum;
- use common\models\common\Express;
- use common\models\common\Region;
- use yii\console\Controller;
- use yii\db\Exception;
- use yii\helpers\Json;
- class TestController extends Controller
- {
- /**
- * @throws Exception
- * @throws \Exception
- */
- public function actionTest()
- {
- $r = file_get_contents("./wx-region.json");
- $r = Json::decode($r);
- $rs = [];
- foreach ($r as $item) {
- if (count($item) > 2) {
- $rs[] = "{$item['province_name']}{$item['city_name']}{$item['county_name']}";
- } else {
- $rs[] = "{$item['province_name']}{$item['city_name']}";
- }
- }
- $body = file_get_contents('./req.json');
- $body = Json::decode($body);
- $freight_template = $body['freight_template'];
- $all_freight_calc_method = $freight_template['all_freight_calc_method'];
- $freight_calc_method_list = $all_freight_calc_method['freight_calc_method_list'];
- foreach ($freight_calc_method_list as $item) {
- if (!empty($item['address_infos'])) {
- foreach ($item['address_infos'] as $address_info) {
- // var_dump($address_info);
- $addr = "{$address_info['province_name']}{$address_info['city_name']}";
- if (count($address_info) > 2) {
- $addr .= $address_info['county_name'];
- }
- // if (!in_array($addr, $rs)) var_dump($address_info);
- }
- } else {
- var_dump($item);
- }
- }
- return;
- $config = \Yii::$app->services->setting->addons->get(162, WechatVideoShopEnums::ADDONS_NAME, 'basic');
- $config = WechatVideoShop::findOne(['id' => $config['sharer_default_apply_shop_id']]);
- try {
- $req = new AddressCodeRequest($config->toArray());
- $model = new AddressCodeModel();
- $model->addr_code = 0;
- $country = WechatRequestHelper::accessTokenAndToArray($req, $model);
- $lists = [];
- foreach ($country['next_level_addrs'] as $next_level_addr) {
- $req = new AddressCodeRequest($config->toArray());
- $model = new AddressCodeModel();
- $model->addr_code = $next_level_addr['code'];
- $province_list = WechatRequestHelper::accessTokenAndToArray($req, $model);
- foreach ($province_list['next_level_addrs'] as $p_next_level_addr) {
- $req = new AddressCodeRequest($config->toArray());
- $model = new AddressCodeModel();
- $model->addr_code = $p_next_level_addr['code'];
- $city_list = WechatRequestHelper::accessTokenAndToArray($req, $model);
- foreach ($city_list['next_level_addrs'] as $c_next_level_addr) {
- // $req = new AddressCodeRequest($config->toArray());
- // $model = new AddressCodeModel();
- // $model->addr_code = $c_next_level_addr['code'];
- // $district_list = WechatRequestHelper::accessTokenAndToArray($req, $model);
- // foreach ($district_list['next_level_addrs'] as $d_next_level_addr) {
- if ($next_level_addr['name'] == $p_next_level_addr['name']) {
- $lists[] = [
- 'province_name' => $next_level_addr['name'],
- 'city_name' => $c_next_level_addr['name'],
- ];
- } else {
- $lists[] = [
- 'province_name' => $next_level_addr['name'],
- 'city_name' => $p_next_level_addr['name'],
- 'county_name' => $c_next_level_addr['name'],
- ];
- }
- // }
- }
- }
- }
- file_put_contents("./wx-region.json", Json::encode($lists));
- } catch (\Exception $e) {
- var_dump($e->getMessage());
- }
- return;
- // $crypto = new Crypto("xxxxx", base64_encode('xxxxxxxxxxxxxxxx'));
- // $ret = $crypto->en([1,2,3,4]);
- // var_dump($ret);
- // var_dump($crypto->de($ret['encrypt'], $ret['msg_signature'], $ret['nonce'], $ret['timestamp']));
- // file_put_contents(\Yii::$app->basePath . "/cat.json", Json::encode($resp));
- // var_dump($resp);
- // $resp = WechatRequestHelper::accessTokenAndToArray(new DeliveryCompanyListRequest($config), new EmptyModel());
- // foreach ($resp['company_list'] as &$item) {
- // $item['created_at'] = time();
- // $item['updated_at'] = time();
- // }
- // WechatVideoShopExpressCompany::find()->createCommand()->batchInsert(
- // WechatVideoShopExpressCompany::tableName(),
- // array_keys($resp['company_list'][0]), $resp['company_list'])->execute();
- // foreach (WechatVideoShopExpressCompany::find()->each() as $row) {
- // $row->company_id = Express::find()->where(['code' => $row->delivery_id])->select('id')->scalar();
- // if (empty($row->company_id)) {
- // $row->company_id = 10000;
- // $row->save();
- // }
- // }
- try {
- // (new GoodsService())->push(1, [
- // 'goods_id' => 24,
- // 'attrs' => [
- // '品牌' => '七件事',
- // '是否属于医疗器械' => '否',
- // '净含量' => '其他',
- // '功效' => '其他',
- // '保质期' => '1年',
- // '产地' => '中国大陆',
- // ],
- // 'cat_id' => 1003,
- // 'seven_day_return' => StatusEnum::ENABLED,
- // 'qualifications' => [],
- // 'brand_id' => ''
- // ]);
- // (new CateService())->create(1, ['level1' => 1001, 'level2' => 1002, 'level3' => 1005]);
- // (new ShopInfoService(1))->info();
- // (new CateService())->detail(6091);
- // $this->mpRegion();
- $this->noMpRegion();
- // var_dump(\Yii::$app->services->setting->mall->get(1, "return_address"));
- // (new ShopService())->auth(['mall_id' => 1]);
- // (new OrderPaidListener())->async_handle(['id' => 50237]);
- // (new OrderDeliveryListener())->async_handle(['id' => 6073]);
- // SyncSharerLogic::sharer();
- // (new GoodsUpdateListener())->async_handle(['mall_id' => 162, 'goods_id' => 1165]);
- // (new GoodsUpdateListener())->async_handle(['mall_id' => 162, 'goods_id' => 1133]);
- // (new OrderFinishListener())->async_handle(['id' => 8812]);
- // $cond_upgrade = new \addons\WechatVideoShop\common\logic\ConditionUpgradeLogic();
- // $cond_upgrade->execute(\addons\WechatVideoShop\common\enums\WechatVideoShopEnums::ADDONS_NAME,
- // (new \addons\WechatVideoShop\common\models\WechatVideoShopSharer()), (new \addons\WechatVideoShop\common\models\WechatVideoShopLevel()), [
- // 'id' => 0,
- // 'user_id' => 15022,
- // 'mall_id' => 1
- // ]);
- } catch (\Exception $e) {
- var_dump($e->getFile(), $e->getLine(), $e->getMessage());
- }
- }
- protected function noMpRegion()
- {
- $data = file_get_contents(\Yii::$app->basePath . "/no_city.json");
- $data = Json::decode($data);
- $data = array_filter($data, function ($val) {
- return $val['p_id'] != 3272;
- });
- // var_dump(count($data));
- foreach ($data as $datum) {
- var_dump($datum);
- }
- }
- protected function mpRegion()
- {
- $provinces = Region::lists([
- 'where' => [
- ['level' => 1]
- ]
- ]);
- $not_mp = [];
- foreach ($provinces as $province) {
- $item = WechatVideoShopRegion::find()->where(['level' => 1])
- ->andWhere(['name' => $province['name']])
- ->one();
- if (!empty($item)) {
- // 二级
- $citys = Region::lists([
- 'where' => [
- ['level' => 2],
- ['parent_id' => $province['id']],
- ]
- ]);
- foreach ($citys as $city) {
- // var_dump("city: {$city['id']}");
- $iCity = WechatVideoShopRegion::find()
- ->where(['level' => 2])
- ->andWhere(['level_one_code' => $item->id])
- ->andWhere(['name' => $city['name']])
- ->one();
- // 三级
- if (!empty($iCity)) {
- $districts = Region::lists([
- 'where' => [
- ['level' => 3],
- ['parent_id' => $city['id']],
- ]
- ]);
- foreach ($districts as $district) {
- // var_dump("district: {$district['id']}");
- $iDistrict = WechatVideoShopRegion::find()
- ->where(['level' => 3])
- ->andWhere(['level_one_code' => $item->id])
- ->andWhere(['level_two_code' => $iCity->id])
- ->andWhere(['name' => $district['name']])
- ->one();
- if (!empty($iDistrict)) {
- $iDistrict->local_id = $district['id'];
- $iDistrict->local_name = $district['name'];
- $iDistrict->local_one_id = $province['id'];
- $iDistrict->local_one_name = $province['name'];
- $iDistrict->local_two_id = $city['id'];
- $iDistrict->local_two_name = $city['name'];
- $iDistrict->save();
- } else {
- var_dump("地区: {$district['id']} -> {$district['name']}");
- $not_mp[] = [
- 'level' => 3,
- 'id' => $district['id'],
- 'name' => $district['name'],
- 'p_id' => $province['id'],
- 'p_name' => $province['name'],
- 'c_id' => $city['id'],
- 'c_name' => $city['name'],
- ];
- }
- }
- $iCity->local_id = $city['id'];
- $iCity->local_name = $city['name'];
- $iCity->local_one_id = $province['id'];
- $iCity->local_one_name = $province['name'];
- $iCity->save();
- } else {
- var_dump("城市: {$city['id']} -> {$city['name']}");
- $not_mp[] = [
- 'level' => 2,
- 'id' => $city['id'],
- 'name' => $city['name'],
- 'p_id' => $province['id'],
- 'p_name' => $province['name'],
- ];
- }
- }
- // $item->local_id = $province['id'];
- // $item->local_name = $province['name'];
- // $item->save();
- }
- // var_dump(!empty($item) ? $item->id : $province['name']);
- file_put_contents(\Yii::$app->basePath . "/no_city.json", Json::encode($not_mp));
- }
- }
-
- protected function region(array $config)
- {
- $addressCodeModel = new AddressCodeModel();
- $resp = WechatRequestHelper::accessTokenAndToArray(new AddressCodeRequest($config), $addressCodeModel);
- $next_key = 'next_level_addrs';
- $inserts = [];
- if (!empty($resp)) {
- foreach ($resp[$next_key] as $item) {
- $addressCodeModel = new AddressCodeModel();
- $addressCodeModel->addr_code = $item['code'];
- $resp1 = WechatRequestHelper::accessTokenAndToArray(new AddressCodeRequest($config), $addressCodeModel);
- if (!empty($resp1)) {
- foreach ($resp1[$next_key] as $item1) {
- // $model = new WechatVideoShopRegion();
- // $model->id = $item1['code'];
- // $model->name = $item1['name'];
- // $model->level = $item1['level'];
- // $model->level_one_code = $item['code'];
- // $model->level_one_name = $item['name'];
- // $model->save();
- $inserts[] = [
- 'id' => $item1['code'],
- 'name' => $item1['name'],
- 'level' => $item1['level'],
- 'level_one_code' => $item['code'],
- 'level_one_name' => $item['name'],
- 'level_two_code' => 0,
- 'level_two_name' => '',
- 'level_three_code' => 0,
- 'level_three_name' => '',
- ];
- var_dump("{$item1['name']} -> {$item1['code']} -> {$item1['level']}");
- $addressCodeModel = new AddressCodeModel();
- $addressCodeModel->addr_code = $item1['code'];
- $resp2 = WechatRequestHelper::accessTokenAndToArray(new AddressCodeRequest($config), $addressCodeModel);
- if (!empty($resp2)) {
- foreach ($resp2[$next_key] as $item2) {
- // $model = new WechatVideoShopRegion();
- // $model->id = $item2['code'];
- // $model->name = $item2['name'];
- // $model->level = $item2['level'];
- // $model->level_one_code = $item['code'];
- // $model->level_one_name = $item['name'];
- // $model->level_two_code = $item1['code'];
- // $model->level_two_name = $item1['name'];
- // $model->save();
- $inserts[] = [
- 'id' => $item2['code'],
- 'name' => $item2['name'],
- 'level' => $item2['level'],
- 'level_one_code' => $item['code'],
- 'level_one_name' => $item['name'],
- 'level_two_code' => $item1['code'],
- 'level_two_name' => $item1['name'],
- 'level_three_code' => 0,
- 'level_three_name' => '',
- ];
- var_dump("{$item2['name']} -> {$item2['code']} -> {$item2['level']}");
- $addressCodeModel = new AddressCodeModel();
- $addressCodeModel->addr_code = $item2['code'];
- $resp3 = WechatRequestHelper::accessTokenAndToArray(new AddressCodeRequest($config), $addressCodeModel);
- if (!empty($resp3)) {
- foreach ($resp3[$next_key] as $item3) {
- // $model = new WechatVideoShopRegion();
- // $model->id = $item3['code'];
- // $model->name = $item3['name'];
- // $model->level = $item3['level'];
- // $model->level_one_code = $item['code'];
- // $model->level_one_name = $item['name'];
- // $model->level_two_code = $item1['code'];
- // $model->level_two_name = $item1['name'];
- // $model->level_three_code = $item2['code'];
- // $model->level_three_name = $item2['name'];
- // $model->save();
- $inserts[] = [
- 'id' => $item3['code'],
- 'name' => $item3['name'],
- 'level' => $item3['level'],
- 'level_one_code' => $item['code'],
- 'level_one_name' => $item['name'],
- 'level_two_code' => $item1['code'],
- 'level_two_name' => $item1['name'],
- 'level_three_code' => $item2['code'],
- 'level_three_name' => $item2['name'],
- ];
- var_dump("{$item3['name']} -> {$item3['code']} -> {$item3['level']}");
- }
- }
- // usleep(mt_rand(100000, 300000));
- }
- }
- // usleep(mt_rand(100000, 300000));
- }
- }
- // usleep(mt_rand(100000, 300000));
- }
- }
- if (!empty($inserts)) {
- $inserts1 = array_chunk($inserts, 5000);
- foreach ($inserts1 as $item) {
- WechatVideoShopRegion::find()->createCommand()
- ->batchInsert(WechatVideoShopRegion::tableName(), array_keys($item[0]), $item)->execute();
- }
- }
- }
- }
|