|
- <?php
- /**
- *
- * ============================================================================
- * * 版权所有 蜘蛛出行 * *
- * 网站地址: http://www.zhizhuchuxing.com
- * ----------------------------------------------------------------------------
- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
- * 使用;不允许对程序代码以任何形式任何目的的再发布。
- * ============================================================================
- * Author By: 倪宗锋
- * PhpStorm Synchro.php
- * Create By 2017/7/10 10:13 $
- */
-
- namespace console\models;
-
- use common\models\ProdImg;
- use common\models\ProdMain;
- use Yii;
- use common\models\ProdCategory;
- use common\util\CurlInterface;
- use common\util\Util;
- use yii\db\Exception;
-
- class Synchro
- {
-
- /**
- * Des:获取巴士自由行产品的数组
- * Name: getCsFreeWalk
- * @return array
- * @author 倪宗锋
- */
- public function getCsFreeWalk()
- {
- $siteConfig = Util::getSiteConfig();
- $time = time();
- $send_data = [
- 'auth_code' => Util::authCodeForCs($time),
- 'user_key' => $siteConfig['adm_user_key'],
- 'user' => $siteConfig['adm_user'],
- 'user_id' => $siteConfig['adm_user_id'],
- 'request_time' => $time,
- 'action' => 'get_all_tourist_info',
- 'org_id' => $siteConfig['adm_source_id']
- ];
- $curlInterface = new CurlInterface($send_data, 4);
- $curlInterface->setBaseUrl('');
- $csProdArr = $curlInterface->execute($siteConfig['adm_host1'] . '/api/wx/', 'POST');
- if (!isset($csProdArr['code']) || $csProdArr['code'] != 0) {
- return Util::returnArrEr('接口错误!');
- } else {
- return Util::returnArrSu('', $csProdArr['list']);
- }
- }
-
- /**
- * Des:添加巴士自由行产品数据
- * Name: addFreeWalk
- * @param $csProdArr
- * @param $localProdSign
- * @return array
- * @author 倪宗锋
- */
- public function addFreeWalk($csProdArr, $localProdSign)
- {
- $errorIds = [];
- $success = [];
- $prodCategory = new ProdCategory();
- foreach ($csProdArr as $key => $val) {
- if (in_array($key, $localProdSign)) {//已经存在不做处理
- continue;
- }
- $transaction = Yii::$app->db->beginTransaction();
- try {
- $list_img_url = empty($val['list_img_url']) ? [] : $val['list_img_url'];//产品图片列表
- //添加产品品类数据
- $prod_category = clone $prodCategory;
- $value = [
- 'category_id' => '4',
- 'sign' => $key,
- 'pro_cate_name' => $val['name'],
- 'prod_des' => $val['prod_des'],
- 'feature' => $val['feature'],
- 'trip_desc' => $val['trip_desc'],
- 'memo' => $val['price_explain'] . '<br/><br/>' . $val['memo'],
- 'start_area' => $val['start_area'],
- 'address' => $val['end_area'],
- 'create_time' => date('Y-m-d H:i:s'),
- 'show_img' => $val['top_image_url'],
- 'commission' => 5,
- 'show_price' => ceil($val['mini_price']),
- 'original_price' => ceil($val['mini_price'])
- ];
- $prod_category->isNewRecord = true;
- $prod_category->setAttributes($value);
- $prod_res = $prod_category->save(false);
- if ($prod_res === false) {
- $errorIds[] = $key . '[1]';//错误ID数组
- $transaction->rollBack();
- continue;
- }
- $pro_cate_id = $prod_category->pro_cate_id;
- //添加产品图片 插入失败不终止产品的同步
- if (count($list_img_url) > 0) {
- $prodImgValues = [];
- $prodImgKeys = ['pro_cate_id', 'img_url', 'redirect_url', 'memo', 'img_type', 'create_time'];
- foreach ($list_img_url as $subVal) {
- $prodImgVal = [];
- $prodImgVal[] = $pro_cate_id;//pro_cate_id
- $prodImgVal[] = $subVal;//img_url
- $prodImgVal[] = '';//redirect_url
- $prodImgVal[] = '';//memo
- $prodImgVal[] = 1;//产品轮播图 img_type
- $prodImgVal[] = date('Y-m-d H:i:s');//create_time
- $prodImgValues[] = $prodImgVal;
- }
- Yii::$app->db->createCommand()->batchInsert('prod_img', $prodImgKeys, $prodImgValues)->execute();
- }
- //添加产品表数据
- $subTicket = $val['sub_ticket'];
- $prodMainValues = [];
- $prodMainKeys = ['prod_cate_id', 'prod_name', 'create_time', 'bus_id'];
- foreach ($subTicket as $subVal) {
- $prodMainVal = [];
- $prodMainVal[] = $pro_cate_id;
- $prodMainVal[] = $subVal['prod_name'];
- $prodMainVal[] = date('Y-m-d H:i:s');
- $prodMainVal[] = $subVal['prod_id'];
- $prodMainValues[] = $prodMainVal;
- }
- $count = Yii::$app->db->createCommand()->batchInsert(ProdMain::tableName(), $prodMainKeys, $prodMainValues)->execute();
- if ($count == 0) {
- $errorIds[] = $key . '[2]';//错误ID数组
- $transaction->rollBack();
- continue;
- }
- $success[] = $key;//添加成功记录
- $transaction->commit();
- } catch (Exception $e) {
- print_r($e);
- $errorIds[] = $key . '[3]';//错误ID数组
- $transaction->rollBack();
- continue;
- }
- }
- return Util::returnArrSu('', ['success' => implode(',', $success), 'fail' => implode(',', $errorIds)]);
- }
-
- /**
- * Des:更新巴士自由行产品
- * Name: updateFreeWalk
- * @param $csProdArr
- * @param $localProdSign
- * @author 倪宗锋
- */
- public function updateFreeWalk($csProdArr, $localProdSign)
- {
- $errorIds = [];
- $success = [];
- $prodCategory = new ProdCategory();
- $proImg = new ProdImg();
- foreach ($csProdArr as $key => $val) {
- if (empty($localProdSign[$key])) {//更新时,新数据不做处理故不存在不处理
- continue;
- }
- $transaction = Yii::$app->db->beginTransaction();
- try {
- //更新产品品类数据
- $prod_category = clone $prodCategory;
- $value = [
- 'category_id' => '4',
- 'sign' => $key,
- 'pro_cate_name' => $val['name'],
- 'prod_des' => $val['prod_des'],
- 'feature' => $val['feature'],
- 'trip_desc' => $val['trip_desc'],
- 'memo' => $val['price_explain'] . '<br/><br/>' . $val['memo'],
- 'start_area' => $val['start_area'],
- 'address' => $val['end_area'],
- 'create_time' => date('Y-m-d H:i:s'),
- 'show_img' => $val['top_image_url'],
- 'commission' => 5,
- ];
- $count = $prod_category::updateAll($value, ['and', ['=', 'pro_cate_id', $localProdSign[$key]['pro_cate_id']]]);
-
- if ($count === false) {
- $errorIds[] = $key . '[1]';//错误ID数组
- $transaction->rollBack();
- continue;
- }
- $list_img_url = empty($val['list_img_url']) ? [] : $val['list_img_url'];//产品图片列表
- //删除图片
- $proImg::deleteAll(['=', 'pro_cate_id', $localProdSign[$key]['pro_cate_id']]);
- //添加产品图片 插入失败不终止产品的同步
- if (count($list_img_url) > 0) {
- $prodImgValues = [];
- $prodImgKeys = ['pro_cate_id', 'img_url', 'redirect_url', 'memo', 'img_type', 'create_time'];
- foreach ($list_img_url as $subVal) {
- $prodImgVal = [];
- $prodImgVal[] = $localProdSign[$key]['pro_cate_id'];//pro_cate_id
- $prodImgVal[] = $subVal;//img_url
- $prodImgVal[] = '';//redirect_url
- $prodImgVal[] = '';//memo
- $prodImgVal[] = 1;//产品轮播图 img_type
- $prodImgVal[] = date('Y-m-d H:i:s');//create_time
- $prodImgValues[] = $prodImgVal;
- }
- Yii::$app->db->createCommand()->batchInsert('prod_img', $prodImgKeys, $prodImgValues)->execute();
- }
- $success[] = $key;//添加成功记录
- $transaction->commit();
- } catch (Exception $e) {
- print_r($e);
- $errorIds[] = $key . '[3]';//错误ID数组
- $transaction->rollBack();
- continue;
- }
- }
- }
-
- /**
- * Des:删除巴士自由行产品数据
- * Name: deleteFreeWalk
- * @param $csProdArr
- * @param $localProdSign
- * @return array
- * @author 倪宗锋
- */
- public
- function deleteFreeWalk($csProdArr, $localProdSign)
- {
- $return = [
- 'success' => '',
- 'fail' => ''
- ];
- if (count($localProdSign) == 0) {
- return Util::returnArrSu('', $return);
- }
- $delKey = [];
- foreach ($localProdSign as $val) {
- if (empty($csProdArr[$val]) == false) {//本地有的数据而cs也有 则不做处理
- continue;
- }
- /**删除本地上架而cs已下架的产品*/
- $delKey[] = $val;
- }
- if (count($delKey) == 0) {
- return Util::returnArrSu('', $return);
- }
- $ProdCategory = new ProdCategory();
- $value = ['delete_flag' => 1];
- $where = [
- 'and',
- ['in', 'sign', $delKey],
- ['=', 'delete_flag', 0]
- ];
- $count = $ProdCategory::updateAll($value, $where);
- if ($count == 0) {
- return Util::returnArrEr('删除数据失败!');
- }
- $return['success'] = implode(',', $delKey);
- return Util::returnArrSu('', $return);
- }
- }
|