diff --git a/app/admin/controller/Wxwholesaler.php b/app/admin/controller/Wxwholesaler.php index ef2fa6d4..6c85fed2 100644 --- a/app/admin/controller/Wxwholesaler.php +++ b/app/admin/controller/Wxwholesaler.php @@ -6,6 +6,7 @@ namespace app\admin\controller; use app\common\library\wxserver\Wholesaler; use app\common\library\wxserver\Server; use app\job\controller\Wxholesaler as WxserverJob; +use cores\exception\BaseException; use PHPQRCode\QRcode; use think\db\exception\DbException; use think\facade\Db; @@ -189,13 +190,17 @@ class Wxwholesaler extends Controller return $this->renderError('操作失败'); } + /** 单个操作发布体验版 + * @throws BaseException + */ public function commitOne(): Json { $appid = $this->request->get('appid'); + $template_id = $this->request->get('template_id'); $obj = new Wholesaler(); $msg = $obj->privacyInfo($appid); if ($msg == 'ok') { - $msg = $obj->submitAudit($appid); + $msg = $obj->commit($appid, $template_id); if ($msg == 'ok') { return $this->renderSuccess('success'); } @@ -213,9 +218,11 @@ class Wxwholesaler extends Controller $appid = $this->request->get('appid'); if ($appid) { $obj = new Wholesaler(); - if ($obj->getVersioninfo($appid)) { + $res = $obj->getVersioninfo($appid); + if ($res['code']) { return $this->renderSuccess('success'); } + return $this->renderError($res['msg']); } return $this->renderError('操作失败'); } @@ -238,6 +245,22 @@ class Wxwholesaler extends Controller return $this->renderError('操作失败'); } + /** + * @notes:单个提交正式版审核 + * @return Json + * @author: wanghousheng + */ + public function auditOne(): Json + { + $appid = $this->request->get('appid'); + $obj = new Wholesaler(); + $msg = $obj->submitAudit($appid); + if ($msg == 'ok') { + return $this->renderSuccess('success'); + } + return $this->renderError($msg); + } + /** * @notes:发布正式版前检查 * @return Json @@ -256,4 +279,82 @@ class Wxwholesaler extends Controller } return $this->renderError($msg); } + + /** + * @notes:设置域名 + * @return Json + * @author: wanghousheng + */ + public function setDomain(): Json + { + $msg = 'appid不能为空'; + $domain = $this->request->domain(true); + $appid = $this->request->get('appid', $domain); + if ($appid) { + $obj = new Wholesaler(); + $msg = $obj->setDomain($appid, $domain); + if ($msg == 'ok') { + return $this->renderSuccess('success'); + } + } + return $this->renderError($msg); + } + + /** + * @notes:设置隐私 + * @return Json + * @author: wanghousheng + */ + public function privacySetting(): Json + { + $msg = 'appid不能为空'; + $appid = $this->request->get('appid'); + if ($appid) { + $obj = new Wholesaler(); + $msg = $obj->getPrivacySetting($appid); + if ($msg == 'ok') { + return $this->renderSuccess('success'); + } + } + return $this->renderError($msg); + } + + /** + * @notes:设置业务域名 + * @return Json + * @author: wanghousheng + */ + public function modifyJumpDomain(): Json + { + $msg = 'appid不能为空'; + $domain = $this->request->domain(true); + $appid = $this->request->get('appid'); + if ($appid) { + $obj = new Wholesaler(); + $msg = $obj->modifyJumpDomain($appid, $domain); + if ($msg == 'ok') { + return $this->renderSuccess('success'); + } + } + return $this->renderError($msg); + } + + /** + * @notes:设置订单页 + * @return Json + * @author: wanghousheng + */ + public function setOrderPath(): Json + { + $msg = 'appid不能为空'; + $appid = $this->request->get('appid'); + if ($appid) { + $obj = new Wholesaler(); + $msg = $obj->applySetOrderPathInfo([$appid]); + if ($msg == 'ok') { + return $this->renderSuccess('success'); + } + } + return $this->renderError($msg); + } } \ No newline at end of file diff --git a/app/api/controller/Invite.php b/app/api/controller/Invite.php index 3559fac2..e39bbecb 100644 --- a/app/api/controller/Invite.php +++ b/app/api/controller/Invite.php @@ -103,7 +103,9 @@ class Invite extends Controller $data['adoption_num'] = $adoption_num."/".$invite_num; $data['invite_num'] = 0; $data['refuse_num'] = 0; + $data['invite_num'] = 0; $model = new InviteLog(); + $storeId = $this->storeId; $user_ids = $model->inviteeUserIds(); $status = intval($this->request->post('status')); if (!$status) { @@ -124,6 +126,10 @@ class Invite extends Controller } $data['list'] = $list->items(); $data['total'] = $list->total(); + //1.查询需要的邀请人数是多少 + $setting = Setting::where(['key'=>'condition'])->field('values')->find(); + $setting = json_decode($setting,true); + $invite_num = $setting['values']['invite_num'] ?? 10; //审核通过 $adoption_num = $applyModel->whereIn('user_id', $user_ids)->where(['status' => WholesalerEnum::ADOPT])->count(); $data['invite_num'] = $adoption_num; diff --git a/app/api/controller/Notify.php b/app/api/controller/Notify.php index 5ff1b4aa..2b96c89b 100644 --- a/app/api/controller/Notify.php +++ b/app/api/controller/Notify.php @@ -12,8 +12,8 @@ declare (strict_types=1); namespace app\api\controller; -use cores\BaseController; use app\api\service\Notify as NotifyService; +use cores\BaseController; /** * 支付成功异步通知接口 @@ -45,6 +45,7 @@ class Notify extends BaseController try { $NotifyService = new NotifyService; return $NotifyService->wechatV3(); + } catch (\Throwable $e) { return '{"code": "FAIL","message": "失败"}'; } diff --git a/app/api/controller/Region copy.php b/app/api/controller/Region copy.php new file mode 100644 index 00000000..2ea0c90a --- /dev/null +++ b/app/api/controller/Region copy.php @@ -0,0 +1,52 @@ + +// +---------------------------------------------------------------------- +declare (strict_types=1); + +namespace app\api\controller; + +use app\api\model\Region as RegionModel; +use think\response\Json; + +/** + * 地区管理 + * Class Region + * @package app\api\controller + */ +class Region extends Controller +{ + /** + * 获取所有地区 + * @return Json + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public function all(): Json + { + $list = RegionModel::getCacheAll(); + return $this->renderSuccess(compact('list')); + } + + /** + * 获取所有地区(树状) + * @return Json + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public function tree(): Json + { + $model = new RegionModel(); + $list = $model->getNewTreeList(); + //$list = array_values($list); + return $this->renderSuccess(compact('list')); + } +} diff --git a/app/api/controller/Store.php b/app/api/controller/Store.php index f493bb0f..eb8920ec 100644 --- a/app/api/controller/Store.php +++ b/app/api/controller/Store.php @@ -222,7 +222,7 @@ class Store extends Controller $page = $this->request->param('page') ?? 1; $servers = new successful(); //$list = $servers->list($page); - $list = successful:: withoutGlobalScope()->where('status',10)->order('sort','asc')->paginate(10, false, $page); + $list = successful::where('status',10)->order('sort','asc')->paginate(10, false, $page); $list->each(function ($item, $key) { $imageUrl = UploadFile::withoutGlobalScope()->where('file_id', $item['image_id'])->find(); if ($imageUrl) { diff --git a/app/api/controller/Wholesaler.php b/app/api/controller/Wholesaler.php index 36683776..c0513fd1 100644 --- a/app/api/controller/Wholesaler.php +++ b/app/api/controller/Wholesaler.php @@ -4,6 +4,7 @@ namespace app\api\controller; use app\api\model\wholesaler\Apply; use app\api\model\wholesaler\Set; +use app\common\enum\WholesalerEnum; use cores\exception\BaseException; use Exception; use think\db\exception\DataNotFoundException; @@ -119,6 +120,13 @@ class Wholesaler extends Controller } catch (Exception $e) { return $this->renderError($e->getMessage() ?: '短信验证码不正确'); } + $model = new Apply(); + if ($model->where(['card_no' => $card_no])->value('id')) { + return $this->renderError('该身份证号已存在'); + } + if ($model->where(['credit_code' => $credit_code])->value('id')) { + return $this->renderError('营业执照已存在'); + } $data = compact('company_name', 'credit_code', 'city_id', 'province_id', 'door_img_id', 'business', 'card_no', 'avatar_id'); $data = array_merge($data, compact('username', 'mobile', 'card_back_img_id', 'card_front_img_id', 'license_img_id')); $data['total_price'] = $priceInfo['price']; @@ -222,6 +230,22 @@ class Wholesaler extends Controller if (!$avatar_id) { return $this->renderError('头像不能为空'); } + $info = Apply::info(); + if (empty($info->id) || empty($info->status)) { + return $this->renderError('信息不存在'); + } + if ($info->status == WholesalerEnum::ADOPT) { + return $this->renderError('申请已通过'); + } + $model = new Apply(); + $exists_id = $model->where(['card_no' => $card_no])->value('id'); + if ($exists_id && $info->id != $exists_id) { + return $this->renderError('该身份证号已存在'); + } + $exists_id = $model->where(['credit_code' => $credit_code])->value('id'); + if ($exists_id && $info->id != $exists_id) { + return $this->renderError('营业执照已存在'); + } try { CaptchaApi::checkSms($mobile_code, $mobile); } catch (Exception $e) { @@ -229,6 +253,8 @@ class Wholesaler extends Controller } $data = compact('company_name', 'credit_code', 'city_id', 'province_id', 'door_img_id', 'business', 'card_no', 'avatar_id'); $data = array_merge($data, compact('username', 'mobile', 'card_back_img_id', 'card_front_img_id', 'license_img_id')); + $data['status'] = WholesalerEnum::AUDITING; + $data['remake'] = null; if ((new Apply())->edit($data)) { return $this->renderSuccess('操作成功'); } diff --git a/app/api/controller/dealer/Apply.php b/app/api/controller/dealer/Apply.php index 251d6e91..d71614db 100644 --- a/app/api/controller/dealer/Apply.php +++ b/app/api/controller/dealer/Apply.php @@ -16,6 +16,7 @@ use app\api\controller\Controller; use app\api\model\dealer\Apply as DealerApplyModel; use app\api\model\dealer\User as DealerUserModel; use app\api\service\User as UserService; +use app\common\enum\dealer\apply\ApplyStatus as ApplyStatusEnum; use cores\exception\BaseException; use think\db\exception\DataNotFoundException; use think\db\exception\DbException; @@ -134,6 +135,8 @@ class Apply extends Controller return $this->renderError('所在城市不能为空'); } $data = compact('business', 'city', 'real_name', 'mobile', 'shop_type', 'shop_name', 'business', 'city'); + $data['apply_status'] = ApplyStatusEnum::WAIT; + $data['reject_reason'] = null; $model = new DealerApplyModel; if ($model->editApplyServiceProviders($data)) { return $this->renderSuccess('更新成功'); diff --git a/app/api/model/dealer/Apply.php b/app/api/model/dealer/Apply.php index 231a49ff..36262fcf 100644 --- a/app/api/model/dealer/Apply.php +++ b/app/api/model/dealer/Apply.php @@ -151,6 +151,7 @@ class Apply extends ApplyModel 'shop_name' => $data['shop_name'], 'business' => $data['business'], 'city' => $data['city'], + 'apply_status' => !empty($data['apply_status']) ? $data['apply_status'] : ApplyStatusEnum::WAIT, ]; if ($this->update($data, ['user_id' => $userId])) { return true; diff --git a/app/api/model/dealer/Order.php b/app/api/model/dealer/Order.php index 2f0d1a92..b8d538ed 100644 --- a/app/api/model/dealer/Order.php +++ b/app/api/model/dealer/Order.php @@ -153,6 +153,32 @@ class Order extends DealerOrderModel ]); } + /** + * 获取当前买家的所有上级分销商用户ID + * @param int $userId 用户ID + * @param int $level 推荐等级 + * @param bool $selfBuy 分销商自购 + * @return array + */ +// private function getDealerUserId(int $userId, int $level, bool $selfBuy): array +// { +// $dealerUser = [ +// 'first_user_id' => $level >= 1 ? Referee::getRefereeUserId($userId, 1, true) : 0, +// 'second_user_id' => $level >= 2 ? Referee::getRefereeUserId($userId, 2, true) : 0, +// 'third_user_id' => $level == 3 ? Referee::getRefereeUserId($userId, 3, true) : 0 +// ]; +// // 分销商自购 +// if ($selfBuy && User::isDealerUser($userId)) { +// return [ +// 'first_user_id' => $userId, +// 'second_user_id' => $dealerUser['first_user_id'], +// 'third_user_id' => $dealerUser['second_user_id'], +// ]; +// } +// return $dealerUser; +// } +// + /** * 获取当前买家的所有上级分销商用户ID * @param int $userId 用户ID @@ -163,9 +189,9 @@ class Order extends DealerOrderModel private function getDealerUserId(int $userId, int $level, bool $selfBuy): array { $dealerUser = [ - 'first_user_id' => $level >= 1 ? Referee::getRefereeUserId($userId, 1, true) : 0, - 'second_user_id' => $level >= 2 ? Referee::getRefereeUserId($userId, 2, true) : 0, - 'third_user_id' => $level == 3 ? Referee::getRefereeUserId($userId, 3, true) : 0 + 'first_user_id' => $level >= 1 ? Referee::getRefereeBuyUser($userId, 1, true) : 0, + 'second_user_id' => $level >= 2 ? Referee::getRefereeBuyUser($userId, 2, true) : 0, + 'third_user_id' => $level == 3 ? Referee::getRefereeBuyUser($userId, 3, true) : 0 ]; // 分销商自购 if ($selfBuy && User::isDealerUser($userId)) { diff --git a/app/api/model/wholesaler/Apply.php b/app/api/model/wholesaler/Apply.php index 0ad2dc8a..a70da891 100644 --- a/app/api/model/wholesaler/Apply.php +++ b/app/api/model/wholesaler/Apply.php @@ -13,7 +13,6 @@ class Apply extends \app\common\model\wholesaler\Apply * @var array */ protected $hidden = [ - 'create_time', 'update_time', 'store_id', 'id', diff --git a/app/api/service/identity/Payment.php b/app/api/service/identity/Payment.php index bdb0849c..dfb8b7dc 100644 --- a/app/api/service/identity/Payment.php +++ b/app/api/service/identity/Payment.php @@ -286,7 +286,7 @@ class Payment extends BaseService private function extraAsUnify(array $extra = []): array { // 微信支付时需要的附加数据 - if ($this->method === PaymentMethodEnum::WECHAT || $this->method === PaymentMethodEnum::HUIFU) { + if ($this->method === PaymentMethodEnum::WECHAT || $this->method == PaymentMethodEnum::HUIFU) { // 微信小程序端和微信公众号端需要openid if (in_array($this->client, [ClientEnum::WXOFFICIAL, ClientEnum::MP_WEIXIN])) { $extra['openid'] = $this->getWechatOpenid(); diff --git a/app/command/SyncCategoryAdmin.php b/app/command/SyncCategoryAdmin.php new file mode 100644 index 00000000..f963579c --- /dev/null +++ b/app/command/SyncCategoryAdmin.php @@ -0,0 +1,329 @@ +setName('SyncCategory')->setDescription('同步商品数据到ES'); + $this->addArgument("store_id"); + $this->addArgument("is_update_image"); + } + + + protected function execute(Input $input, Output $output) + { + // $store_id = $input->getArgument("store_id"); + $is_update_image = $input->getArgument("is_update_image"); + // $where[] = ['is_sync_cate','=', 1]; + // $where[] = ['is_delete','=', 0]; + // $where[] = ['is_recycle','=', 0]; + // $where[] = ['status','=', 1]; + + // if ($store_id) { + // $where[] = ['store_id','=', $store_id]; + // } else { + // $where[] = ['store_id', '<>', self::DEFAULT_STORE_ID]; + // } + // $stores = Store::where($where)->field('store_id,is_sync,is_recycle,status,is_delete')->select()->toArray(); + // if (!$stores) { + // echo "没有要同步的商城了"; + // return; + // } + // foreach ($stores as $store) { + $this->copyCategory(0, $is_update_image); + //} + } + + public function copyCategory(int $new_store_id, $is_update_image = 0){ + $store_id = 0; + $model = new CategoryModel; + $list = Db::connect("shopMysql")->name('yoshop_category')->where('store_id', 0)->order(['sort', 'create_time'])->select(); + $list = $this->getTreeData($list); + //$list = $model->getList(['store_id' => self::DEFAULT_STORE_ID]); + // var_dump($list); + // exit(); + if (!$list) { + return; + } + foreach ($list as $value) { + //$value = $value->toArray(); + if ($value['status'] != 1) { + continue; + } + $category = CategoryModel::where('original_category_id', $value['category_id'])->where('store_id', $new_store_id)->find(); + if ($category) { + //更新分类 + //父类id + if ($value['parent_id']) { + $p_category = CategoryModel::where('original_category_id', $value['parent_id'])->where('store_id', $new_store_id)->find(); + } + $upData = [ + 'name' => $value['name'], + 'level' => $value['level'], + 'sort' => $value['sort'], + 'parent_id' => $p_category['category_id'] ?? 0, + ]; + if ($is_update_image) { + $upData['image_id'] = $value['image_id'] ? $this->copyImage($value['image_id'], $new_store_id) : 0; + $upData['rank_image_id'] = $value['rank_image_id'] ? $this->copyImage($value['rank_image_id'], $new_store_id) : 0; + } + // var_dump($upData); + // exit(); + $ret = CategoryModel::where('category_id', $category->category_id)->update($upData); + echo "更新成功".PHP_EOL; + var_dump($ret); + $firstid = $category->category_id; + } else { + //新增一个分类 + $value['store_id'] = $new_store_id; + $value['create_time'] = time(); + $value['update_time'] = time(); + $value['image_id'] = $value['image_id'] ? $this->copyImage($value['image_id'], $new_store_id) : 0; + $value['rank_image_id'] = $value['rank_image_id'] ? $this->copyImage($value['rank_image_id'], $new_store_id) : 0; + $value['original_category_id'] = $value['category_id']; + $temp = $value; + unset($temp['children']); + unset($temp['rankimage']); + unset($temp['image']); + unset($temp['category_id']); + $firstid = Db::table('yoshop_category')->insertGetId($temp); + } + + if (!isset($value['children']) || !$value['children']) { + continue; + } + foreach ($value['children'] as $value1) { + //$value1 = $value1->toArray(); + if ($value1['status'] != 1) { + continue; + } + $category1 = CategoryModel::where('original_category_id', $value1['category_id'])->where('store_id', $new_store_id)->find(); + //var_dump($category1->toArray()); + if ($category1) { + //更新分类 + //父类id + $p_category1 = CategoryModel::where('original_category_id', $value1['parent_id'])->where('store_id', $new_store_id)->find(); + // var_dump($p_category1); + // exit(); + $upData1 = [ + 'name' => $value1['name'], + 'level' => $value1['level'], + 'sort' => $value1['sort'], + 'parent_id' => $p_category1['category_id'] ?? 0, + ]; + if ($is_update_image) { + $upData1['image_id'] = $value1['image_id'] ? $this->copyImage($value1['image_id'], $new_store_id) : 0; + $upData1['rank_image_id'] = $value1['rank_image_id'] ? $this->copyImage($value1['rank_image_id'], $new_store_id) : 0; + } + $ret = CategoryModel::where('category_id', $category1->category_id)->update($upData1); + echo "更新成功".PHP_EOL; + var_dump($ret); + $secondid = $category1->category_id; + } else { + //新增一个分类 + $value1['parent_id'] = $firstid; + $value1['store_id'] = $new_store_id; + $value1['create_time'] = time(); + $value1['update_time'] = time(); + $value1['image_id'] = $value1['image_id'] ? $this->copyImage($value1['image_id'], $new_store_id) : 0; + $value1['rank_image_id'] = $value1['rank_image_id'] ? $this->copyImage($value1['rank_image_id'], $new_store_id) : 0; + $value1['original_category_id'] = $value1['category_id']; + $temp1 = $value1; + unset($temp1['children']); + unset($temp1['image']); + unset($temp1['rankimage']); + unset($temp1['category_id']); + + $secondid = Db::table('yoshop_category')->insertGetId($temp1); + } + + if (!isset($value1['children']) || !$value1['children']) { + continue; + } + foreach ($value1['children'] as $value2) { + //$value2 = $value2->toArray(); + if ($value2['status'] != 1) { + continue; + } + $category2 = CategoryModel::where('original_category_id', $value2['category_id'])->where('store_id', $new_store_id)->find(); + if ($category2) { + //更新分类 + //父类id + $p_category2 = CategoryModel::where('original_category_id', $value2['parent_id'])->where('store_id', $new_store_id)->find(); + $upData2 = [ + 'name' => $value2['name'], + 'level' => $value2['level'], + 'sort' => $value2['sort'], + 'parent_id' => $p_category2['category_id'] ?? 0, + ]; + if ($is_update_image) { + $upData2['image_id'] = $value2['image_id'] ? $this->copyImage($value2['image_id'], $new_store_id) : 0; + $upData2['rank_image_id'] = $value2['rank_image_id'] ? $this->copyImage($value2['rank_image_id'], $new_store_id) : 0; + } + $ret = CategoryModel::where('category_id', $category2->category_id)->update($upData2); + echo "更新成功".PHP_EOL; + var_dump($ret); + $thirdid = $category2->category_id; + } else { + //新增一个分类 + $value2['parent_id'] = $secondid; + $value2['store_id'] = $new_store_id; + $value2['create_time'] = time(); + $value2['update_time'] = time(); + $value2['image_id'] = $value2['image_id'] ? $this->copyImage($value2['image_id'], $new_store_id) : 0; + $value2['rank_image_id'] = $value2['rank_image_id'] ? $this->copyImage($value2['rank_image_id'], $new_store_id) : 0; + $value2['original_category_id'] = $value2['category_id']; + $temp2 = $value2; + unset($temp2['children']); + unset($temp2['image']); + unset($temp2['rankimage']); + unset($temp2['category_id']); + + $thirdid = Db::table('yoshop_category')->insertGetId($temp2); + } + + if (!isset($value2['children']) || !$value2['children']) { + continue; + } + foreach ($value2['children'] as $value3) { + //$value3 = $value3->toArray(); + if ($value3['status'] != 1) { + continue; + } + + $category3 = CategoryModel::where('original_category_id', $value3['category_id'])->where('store_id', $new_store_id)->find(); + if ($category3) { + //更新分类 + //父类id + $p_category3 = CategoryModel::where('original_category_id', $value3['parent_id'])->where('store_id', $new_store_id)->find(); + $upData3 = [ + 'name' => $value3['name'], + 'level' => $value3['level'], + 'sort' => $value3['sort'], + 'parent_id' => $p_category3['category_id'] ?? 0, + ]; + if ($is_update_image) { + $upData3['image_id'] = $value3['image_id'] ? $this->copyImage($value3['image_id'], $new_store_id) : 0; + $upData3['rank_image_id'] = $value3['rank_image_id'] ? $this->copyImage($value3['rank_image_id'], $new_store_id) : 0; + } + $ret = CategoryModel::where('category_id', $category3->category_id)->update($upData3); + echo "更新成功".PHP_EOL; + var_dump($ret); + $fourthid = $category3->category_id; + } else { + $value3['parent_id'] = $thirdid; + $value3['store_id'] = $new_store_id; + $value3['create_time'] = time(); + $value3['update_time'] = time(); + $value3['image_id'] = $value3['image_id'] ? $this->copyImage($value3['image_id'], $new_store_id) : 0; + $value3['rank_image_id'] = $value3['rank_image_id'] ? $this->copyImage($value3['rank_image_id'], $new_store_id) : 0; + $value3['original_category_id'] = $value3['category_id']; + $temp3 = $value3; + unset($temp3['children']); + unset($temp3['image']); + unset($temp3['rankimage']); + unset($temp3['category_id']); + + $fourthid = Db::table('yoshop_category')->insertGetId($temp3); + } + + + if (!isset($value3['children']) || !$value3['children']) { + continue; + } + foreach ($value3['children'] as $value4) { + //$value4 = $value4->toArray(); + if ($value4['status'] != 1) { + continue; + } + + $category4 = CategoryModel::where('original_category_id', $value4['category_id'])->where('store_id', $new_store_id)->find(); + if ($category4) { + //更新分类 + //父类id + $p_category4 = CategoryModel::where('original_category_id', $value4['parent_id'])->where('store_id', $new_store_id)->find(); + $upData4 = [ + 'name' => $value4['name'], + 'level' => $value4['level'], + 'sort' => $value4['sort'], + 'parent_id' => $p_category4['category_id'] ?? 0, + ]; + if ($is_update_image) { + $upData4['image_id'] = $value4['image_id'] ? $this->copyImage($value4['image_id'], $new_store_id) : 0; + $upData4['rank_image_id'] = $value4['rank_image_id'] ? $this->copyImage($value4['rank_image_id'], $new_store_id) : 0; + } + $ret = CategoryModel::where('category_id', $category4->category_id)->update($upData4); + echo "更新成功".PHP_EOL; + var_dump($ret); + } else { + $value4['parent_id'] = $fourthid; + $value4['store_id'] = $new_store_id; + $value4['create_time'] = time(); + $value4['update_time'] = time(); + $value4['image_id'] = $value4['image_id'] ? $this->copyImage($value4['image_id'], $new_store_id) : 0; + $value4['rank_image_id'] = $value4['rank_image_id'] ? $this->copyImage($value4['rank_image_id'], $new_store_id) : 0; + $value4['original_category_id'] = $value4['category_id']; + $temp4 = $value4; + unset($temp4['children']); + unset($temp4['image']); + unset($temp4['rankimage']); + unset($temp4['category_id']); + + Db::table('yoshop_category')->insertGetId($temp4); + } + + + } + } + } + } + } + } + + public function copyImage($image_id, $store_id){ + $upload_file = Db::connect("shopMysql")->name('yoshop_upload_file')->where('file_id', $image_id)->find(); + if (!$upload_file) { + return 0; + } + $upload_file['store_id'] = $store_id; + $upload_file['create_time'] = time(); + unset($upload_file['file_id']); + $new_image_id = DB::table("yoshop_upload_file")->insertGetId($upload_file); + return $new_image_id; + } + + /** + * 获取树状列表 + * @param $list + * @param int $parentId + * @return array + */ + private function getTreeData($list, int $parentId = 0): array + { + $data = []; + foreach ($list as $key => $item) { + if ($item['parent_id'] == $parentId) { + $children = $this->getTreeData($list, $item['category_id']); + !empty($children) && $item['children'] = $children; + $data[] = $item; + unset($list[$key]); + } + } + return $data; + } + +} \ No newline at end of file diff --git a/app/command/SyncStoreBasicData.php b/app/command/SyncStoreBasicData.php index 3d2df4bb..7b3f83f8 100644 --- a/app/command/SyncStoreBasicData.php +++ b/app/command/SyncStoreBasicData.php @@ -26,7 +26,7 @@ use app\store\model\Setting; // /www/server/php/74/bin/php /server/wwwroot/yanzong/think test class SyncStoreBasicData extends Command { - const DEFAULT_STORE_ID = 10048; + const DEFAULT_STORE_ID = 10063; protected function configure() { @@ -86,9 +86,9 @@ class SyncStoreBasicData extends Command if ($isSyncRecoveryData) { $this->syncRecoveryData($store); } - if ($isSyncServerData) { - $this->syncServerData($store); - } + // if ($isSyncServerData) { + // $this->syncServerData($store); + // } if ($isSyncBannerData) { $this->syncBannerData($store); } diff --git a/app/command/SyncStoreBasicDataAdmin.php b/app/command/SyncStoreBasicDataAdmin.php new file mode 100644 index 00000000..d77ddc86 --- /dev/null +++ b/app/command/SyncStoreBasicDataAdmin.php @@ -0,0 +1,565 @@ +setName('SyncStoreBasicData')->setDescription('同步商城基础数据'); + $this->addArgument("store_id"); + $this->addArgument("isSyncMaintenanceData"); + $this->addArgument("isSyncHelpData"); + $this->addArgument("isSyncRichTextData"); + $this->addArgument("isSyncRecoveryData"); + $this->addArgument("isSyncServerData"); + $this->addArgument("isSyncBannerData"); + $this->addArgument("isSyncStoreSettingData"); + $this->addArgument("isSyncStoreExpressData"); + } + + protected function execute(Input $input, Output $output) + { + $store_id = $input->getArgument("store_id"); + $isSyncMaintenanceData = $input->getArgument("isSyncMaintenanceData"); + $isSyncHelpData = $input->getArgument("isSyncHelpData"); + $isSyncRichTextData = $input->getArgument("isSyncRichTextData"); + $isSyncRecoveryData = $input->getArgument("isSyncRecoveryData"); + $isSyncServerData = $input->getArgument("isSyncServerData"); + $isSyncBannerData = $input->getArgument("isSyncBannerData"); + $isSyncStoreSettingData = $input->getArgument("isSyncStoreSettingData"); + $isSyncStoreExpressData = $input->getArgument("isSyncStoreExpressData"); + + $where[] = ['is_sync','=', 0]; + $where[] = ['is_delete','=', 0]; + $where[] = ['is_recycle','=', 0]; + $where[] = ['status','=', 1]; + + if ($store_id) { + $where[] = ['store_id','=', $store_id]; + } else { + $where[] = ['store_id', '<>', self::DEFAULT_STORE_ID]; + } + $stores = Store::where($where)->field('store_id,is_sync,is_recycle,status,is_delete')->select()->toArray(); + // echo "
"; + // print_r($stores); + // exit(); + if (!$stores) { + echo "没有要同步的商城了"; + return; + } + foreach ($stores as $store) { + if ($isSyncMaintenanceData) { + $this->syncMaintenanceData($store); + } + if ($isSyncHelpData) { + $this->syncHelpData($store); + } + if ($isSyncRichTextData) { + $this->syncRichTextData($store); + } + if ($isSyncRecoveryData) { + $this->syncRecoveryData($store); + } + if ($isSyncServerData) { + $this->syncServerData($store); + } + if ($isSyncBannerData) { + $this->syncBannerData($store); + } + if ($isSyncStoreSettingData) { + $this->syncStoreSettingData($store); + } + if ($isSyncStoreExpressData) { + $this->syncStoreExpressData($store); + } + Store::where('store_id', $store['store_id'])->update(['is_sync' => 1]); + } + + + } + /** + * 同步物流公司 + * [syncStoreExpressData description] + * @param [type] $store [description] + * @return [type] [description] + */ + private function syncStoreExpressData($store){ + //维修分类数据同步 + $expressList = Db::connect("shopMysql")->name('yoshop_express')->where('store_id',self::DEFAULT_STORE_ID)->select()->toArray(); + if ($expressList) { + foreach ($expressList as &$express) { + $info = Express::where('store_id', $store['store_id'])->where('kuaidi100_code', $express['kuaidi100_code'])->where('kdniao_code', $express['kdniao_code'])->find(); + if ($info) { + echo $express['express_id']."物流公司已存在".PHP_EOL; + $ret = Express::where('store_id', $store['store_id'])->where('express_id', $info['express_id'])->update([ + 'express_name' => $express['express_name'], + 'kuaidi100_code' => $express['kuaidi100_code'], + 'kdniao_code' => $express['kdniao_code'], + 'original_id' => $express['express_id'], + ]); + var_dump($ret); + continue; + } + $express['create_time'] = time(); + $express['update_time'] = time(); + $express['original_id'] = $express['express_id']; + $express['store_id'] = $store['store_id']; + unset($express['express_id']); + $ret = Express::create($express); + var_dump($ret->express_id); + } + unset($express); + } + } + /** + * 同步基本信息,七牛云、快递100、99api的配置 + * [syncSettingData description] + * @param [type] $store [description] + * @return [type] [description] + */ + private function syncStoreSettingData($store){ + //99api配置 + // $collector = Setting::where('key','collector')->where('store_id', $store['store_id'])->find(); + + // if (!$collector) { + // $collectorData = [ + // "key" => "collector", + // "describe" => "商品采集设置", + // "values" => json_decode('{"config":{"99api":{"apiKey":"9271DA7BF37C6F50BED49B7F0ADD49A2"}}}', true), + // "store_id" => $store['store_id'], + // "create_time" => time(), + // "update_time" => time(), + // ]; + // $ret = Setting::create($collectorData); + // echo "99api配置新增成功"; + // var_dump($ret->key); + // } + //配送设置 + $delivery = Setting::where('key','delivery')->where('store_id', $store['store_id'])->find(); + + if (!$delivery) { + $deliveryData = [ + "key" => "delivery", + "describe" => "配送设置", + "values" => json_decode('{"traces":{"enable":1,"default":"kd100","providerConfig":{"kd100":{"customer":"F6CAEF5CEA6B5BF219149B9B42BECAA1","key":"pjVBLUai1633"},"aliyun":{"appCode":""}}},"delivery_type":[10,20,30]}', true), + "store_id" => $store['store_id'], + "create_time" => time(), + "update_time" => time(), + ]; + $ret = Setting::create($deliveryData); + echo "配送设置新增成功"; + var_dump($ret->key); + } + //上传设置 + $storage = Setting::where('key','storage')->where('store_id', $store['store_id'])->find(); + if (!$storage) { + $storageData = [ + "key" => "storage", + "describe" => "上传设置", + "values" => json_decode('{"default":"qiniu","engine":{"qiniu":{"bucket":"saasyovo","access_key":"ehSHgkSkS9lGex8n0-vMf1-wkbgi56yv6fhEwsYS","secret_key":"jNXsuPmTnmfiRlNs-JoAmT833o0qusgXrXqeR3VK","domain":"https:\/\/qiniu.shop.royaum.com.cn"},"aliyun":{"bucket":"","access_key_id":"","access_key_secret":"","domain":"http:\/\/"},"qcloud":{"bucket":"","region":"","secret_id":"","secret_key":"","domain":"http:\/\/"}}}', true), + "store_id" => $store['store_id'], + "create_time" => time(), + "update_time" => time(), + ]; + $ret = Setting::create($storageData); + echo "上传设置新增成功"; + var_dump($ret->key); + } + } + /** + * 同步富文本数据 + * [syncHelpData description] + * @param [type] $store [description] + * @return [type] [description] + */ + private function syncRichTextData($store){ + //维修分类数据同步 + $agreementList = Db::connect("shopMysql")->name('yoshop_agreement')->where('store_id',self::DEFAULT_STORE_ID)->select()->toArray(); + if ($agreementList) { + foreach ($agreementList as &$agreement) { + $info = Agreement::where('store_id', $store['store_id'])->where('original_id', $agreement['id'])->find(); + if ($info) { + echo $agreement['id']."富文本已存在".PHP_EOL; + continue; + } + $agreement['create_time'] = time(); + $agreement['update_time'] = time(); + $agreement['original_id'] = $agreement['id']; + $agreement['store_id'] = $store['store_id']; + unset($agreement['id']); + $ret = Agreement::create($agreement); + var_dump($ret->id); + } + unset($agreement); + } + } + /** + * 同步帮助中心数据 + * [syncHelpData description] + * @param [type] $store [description] + * @return [type] [description] + */ + private function syncHelpData($store){ + //维修分类数据同步 + $articleCategoryList = Db::connect("shopMysql")->name('yoshop_article_category')->where('store_id',self::DEFAULT_STORE_ID)->where('status', 1)->select()->toArray(); + if ($articleCategoryList) { + foreach ($articleCategoryList as &$articleCategory) { + $info = Category::where('store_id', $store['store_id'])->where('original_id', $articleCategory['category_id'])->find(); + if ($info) { + echo $articleCategory['category_id']."帮助分类已存在".PHP_EOL; + continue; + } + $articleCategory['create_time'] = time(); + $articleCategory['update_time'] = time(); + $articleCategory['original_id'] = $articleCategory['category_id']; + $articleCategory['store_id'] = $store['store_id']; + unset($articleCategory['category_id']); + + //复制图片 + $upload_file = Db::connect("shopMysql")->name('yoshop_upload_file')->where('file_id', $articleCategory['img_id'])->find(); + if ($upload_file) { + $upload_file['store_id'] = $store['store_id']; + $upload_file['create_time'] = time(); + unset($upload_file['file_id']); + $image_id = Db::name('upload_file')->insertGetId($upload_file); + } + //写入维修数据 + $articleCategory['img_id'] = $image_id ?? 0; + $ret = Category::create($articleCategory); + var_dump($ret->id); + } + unset($articleCategory); + } + + //维修数据同步 + $articleList = Db::connect("shopMysql")->name('yoshop_article')->where('store_id',self::DEFAULT_STORE_ID)->where('is_delete', 0)->where('status', 1)->select()->toArray(); + if ($articleList) { + foreach ($articleList as &$article) { + $info = Article::where('store_id', $store['store_id'])->where('original_id', $article['article_id'])->find(); + if ($info) { + echo $article['article_id']."帮助已存在".PHP_EOL; + continue; + } + //查询分类id + $articleCategory = Category::where('original_id', $article['category_id'])->where('store_id', $store['store_id'])->find(); + if (!$articleCategory) { + continue; + } + $article['create_time'] = time(); + $article['update_time'] = time(); + $article['original_id'] = $article['article_id']; + $article['category_id'] = $articleCategory['category_id']; + $article['store_id'] = $store['store_id']; + unset($article['article_id']); + //复制图片 + $upload_file = Db::connect("shopMysql")->name('yoshop_upload_file')->where('file_id', $article['image_id'])->find(); + if ($upload_file) { + $upload_file['store_id'] = $store['store_id']; + $upload_file['create_time'] = time(); + unset($upload_file['file_id']); + $image_id = Db::name('upload_file')->insertGetId($upload_file); + } + //写入维修数据 + $article['image_id'] = $image_id; + $ret = Article::create($article); + //写入图片id + var_dump($ret->id); + } + unset($article); + } + } + /** + * 同步维修数据 + * [syncMaintenanceData description] + * @param [type] $store [description] + * @return [type] [description] + */ + private function syncMaintenanceData($store){ + //维修分类数据同步 + $maintenanceCategoryList = Db::connect("shopMysql")->name('yoshop_maintenance_category')->where('store_id',self::DEFAULT_STORE_ID)->where('status', 1)->select()->toArray(); + + if ($maintenanceCategoryList) { + foreach ($maintenanceCategoryList as &$maintenanceCategory) { + $info = MaintenanceCategory::where('store_id', $store['store_id'])->where('original_id', $maintenanceCategory['id'])->find(); + if ($info) { + echo $maintenanceCategory['id']."维修分类已存在".PHP_EOL; + continue; + } + $maintenanceCategory['create_time'] = time(); + $maintenanceCategory['update_time'] = time(); + $maintenanceCategory['original_id'] = $maintenanceCategory['id']; + $maintenanceCategory['store_id'] = $store['store_id']; + unset($maintenanceCategory['id']); + // echo ""; + // print_r($maintenanceCategory); + // exit(); + $ret = MaintenanceCategory::create($maintenanceCategory); + var_dump($ret->id); + } + unset($maintenanceCategory); + } + + //维修数据同步 + $maintenanceList = Db::connect("shopMysql")->name('yoshop_maintenance')->where('store_id',self::DEFAULT_STORE_ID)->where('is_delete', 0)->select()->toArray(); + + if ($maintenanceList) { + foreach ($maintenanceList as &$maintenance) { + $info = Maintenance::where('store_id', $store['store_id'])->where('original_id', $maintenance['id'])->find(); + if ($info) { + echo $maintenance['id']."维修已存在".PHP_EOL; + continue; + } + // echo ""; + // print_r($info); + // exit(); + //查询分类id + $maintenanceCategory = MaintenanceCategory::where('original_id', $maintenance['category_id'])->where('store_id', $store['store_id'])->find(); + if (!$maintenanceCategory) { + continue; + } + $maintenance['create_time'] = time(); + $maintenance['update_time'] = time(); + $maintenance['original_id'] = $maintenance['id']; + $maintenance['category_id'] = $maintenanceCategory['id']; + $maintenance['store_id'] = $store['store_id']; + unset($maintenance['id']); + //复制图片 + $upload_file = Db::connect("shopMysql")->name('yoshop_upload_file')->where('file_id', $maintenance['img_id'])->find(); + if ($upload_file) { + $upload_file['store_id'] = $store['store_id']; + $upload_file['create_time'] = time(); + unset($upload_file['file_id']); + // echo ""; + // print_r($upload_file); + // exit(); + $image_id = Db::name('upload_file')->insertGetId($upload_file); + } + + //写入维修数据 + $maintenance['img_id'] = $image_id ?? 0; + $ret = Maintenance::create($maintenance); + //写入图片id + var_dump($ret->id); + } + unset($maintenance); + } + } + + /** + * 同步回收数据 + * [syncHelpData description] + * @param [type] $store [description] + * @return [type] [description] + */ + private function syncRecoveryData($store){ + //维修分类数据同步 + $articleCategoryList = Db::connect("shopMysql")->name('yoshop_server_recovery_category')->where('store_id',self::DEFAULT_STORE_ID)->where('status', 1)->select()->toArray(); + if ($articleCategoryList) { + foreach ($articleCategoryList as &$articleCategory) { + $info = RecoveryCategory::where('store_id', $store['store_id'])->where('original_id', $articleCategory['category_id'])->find(); + if ($info) { + echo $articleCategory['category_id']."回收已存在".PHP_EOL; + continue; + } + $articleCategory['create_time'] = time(); + $articleCategory['update_time'] = time(); + $articleCategory['original_id'] = $articleCategory['category_id']; + $articleCategory['store_id'] = $store['store_id']; + unset($articleCategory['category_id']); + + //复制图片 + $upload_file = Db::connect("shopMysql")->name('yoshop_upload_file')->where('file_id', $articleCategory['image_id'])->find(); + if ($upload_file) { + $upload_file['store_id'] = $store['store_id']; + $upload_file['create_time'] = time(); + unset($upload_file['file_id']); + $image_id = Db::name('upload_file')->insertGetId($upload_file); + } + //写入维修数据 + $articleCategory['image_id'] = $image_id ?? 0; + $ret = RecoveryCategory::create($articleCategory); + var_dump($ret->category_id); + } + unset($articleCategory); + } + + //维修数据同步 + $articleList = Db::connect("shopMysql")->name('yoshop_server_recovery')->where('store_id',self::DEFAULT_STORE_ID)->where('status', 1)->select()->toArray(); + if ($articleList) { + foreach ($articleList as &$article) { + $info = ServerRecovery::where('store_id', $store['store_id'])->where('original_id', $article['recovery_id'])->find(); + if ($info) { + echo $article['recovery_id']."回收已存在".PHP_EOL; + continue; + } + //查询分类id + $articleCategory = RecoveryCategory::where('original_id', $article['category_id'])->where('store_id', $store['store_id'])->find(); + if (!$articleCategory) { + continue; + } + $article['create_time'] = time(); + $article['update_time'] = time(); + $article['original_id'] = $article['recovery_id']; + $article['category_id'] = $articleCategory['category_id']; + $article['store_id'] = $store['store_id']; + unset($article['recovery_id']); + //复制图片 + $upload_file = Db::connect("shopMysql")->name('yoshop_upload_file')->where('file_id', $article['image_id'])->find(); + if ($upload_file) { + $upload_file['store_id'] = $store['store_id']; + $upload_file['create_time'] = time(); + unset($upload_file['file_id']); + $image_id = Db::name('upload_file')->insertGetId($upload_file); + } + //写入维修数据 + $article['image_id'] = $image_id; + $ret = ServerRecovery::create($article); + //写入图片id + var_dump($ret->recovery_id); + } + unset($article); + } + } + + /** + * 同步服务数据 + * [syncHelpData description] + * @param [type] $store [description] + * @return [type] [description] + */ + private function syncServerData($store){ + //服务分类数据同步 + $articleCategoryList = Db::connect("shopMysql")->name('yoshop_server_category')->where('store_id',self::DEFAULT_STORE_ID)->where('status', 1)->select()->toArray(); + if ($articleCategoryList) { + foreach ($articleCategoryList as &$articleCategory) { + $info = ServerCategory::where('store_id', $store['store_id'])->where('original_id', $articleCategory['category_id'])->find(); + if ($info) { + echo $articleCategory['category_id']."服务分类已存在".PHP_EOL; + continue; + } + $articleCategory['create_time'] = time(); + $articleCategory['update_time'] = time(); + $articleCategory['original_id'] = $articleCategory['category_id']; + $articleCategory['store_id'] = $store['store_id']; + unset($articleCategory['category_id']); + + //复制图片 + $upload_file = Db::connect("shopMysql")->name('yoshop_upload_file')->where('file_id', $articleCategory['image_id'])->find(); + if ($upload_file) { + $upload_file['store_id'] = $store['store_id']; + $upload_file['create_time'] = time(); + unset($upload_file['file_id']); + $image_id = Db::name('upload_file')->insertGetId($upload_file); + } + //写入维修数据 + $articleCategory['image_id'] = $image_id ?? 0; + $ret = ServerCategory::create($articleCategory); + var_dump($ret->category_id); + } + unset($articleCategory); + } + + //服务数据同步 + $articleList = Db::connect("shopMysql")->name('yoshop_server')->where('store_id',self::DEFAULT_STORE_ID)->where('status', 1)->select()->toArray(); + if ($articleList) { + foreach ($articleList as &$article) { + $info = Server::where('store_id', $store['store_id'])->where('original_id', $article['server_id'])->find(); + if ($info) { + echo $article['server_id']."服务已存在".PHP_EOL; + continue; + } + //查询分类id + $articleCategory = ServerCategory::where('original_id', $article['category_id'])->where('store_id', $store['store_id'])->find(); + if (!$articleCategory) { + continue; + } + $article['create_time'] = time(); + $article['update_time'] = time(); + $article['original_id'] = $article['server_id']; + $article['category_id'] = $articleCategory['category_id']; + $article['store_id'] = $store['store_id']; + unset($article['server_id']); + //复制图片 + $upload_file = Db::connect("shopMysql")->name('yoshop_upload_file')->where('file_id', $article['image_id'])->find(); + if ($upload_file) { + $upload_file['store_id'] = $store['store_id']; + $upload_file['create_time'] = time(); + unset($upload_file['file_id']); + $image_id = Db::name('upload_file')->insertGetId($upload_file); + } + //写入维修数据 + $article['image_id'] = $image_id; + $ret = Server::create($article); + //写入图片id + var_dump($ret->server_id); + } + unset($article); + } + } + /** + * 同步轮播图数据 + * [syncHelpData description] + * @param [type] $store [description] + * @return [type] [description] + */ + private function syncBannerData($store){ + //服务分类数据同步 + $articleCategoryList = Db::connect("shopMysql")->name('yoshop_banner')->where('store_id',self::DEFAULT_STORE_ID)->where('status', 10)->select()->toArray(); + if ($articleCategoryList) { + foreach ($articleCategoryList as &$articleCategory) { + $info = Banner::where('store_id', $store['store_id'])->where('original_id', $articleCategory['id'])->find(); + if ($info) { + echo $articleCategory['id']."轮播图已存在".PHP_EOL; + continue; + } + $articleCategory['create_time'] = time(); + $articleCategory['update_time'] = time(); + $articleCategory['original_id'] = $articleCategory['id']; + $articleCategory['store_id'] = $store['store_id']; + unset($articleCategory['id']); + unset($articleCategory['redirect_url']); + + //复制图片 + $upload_file = Db::connect("shopMysql")->name('yoshop_upload_file')->where('file_id', $articleCategory['image_id'])->find(); + if ($upload_file) { + $upload_file['store_id'] = $store['store_id']; + $upload_file['create_time'] = time(); + unset($upload_file['file_id']); + $image_id = Db::name('upload_file')->insertGetId($upload_file); + } + //写入维修数据 + $articleCategory['image_id'] = $image_id ?? 0; + $ret = Banner::create($articleCategory); + var_dump($ret->id); + } + unset($articleCategory); + } + + } +} diff --git a/app/common/enum/user/UserTypeEnum.php b/app/common/enum/user/UserTypeEnum.php index 116fe575..0443cb5b 100644 --- a/app/common/enum/user/UserTypeEnum.php +++ b/app/common/enum/user/UserTypeEnum.php @@ -30,17 +30,17 @@ class UserTypeEnum extends EnumBasics 'value' => self::NORMAL, ], self::MEMBER => [ - 'name' => '会员', + 'name' => '采购商', 'value' => self::MEMBER, ], self::DEALER => [ - 'name' => '分销商', + 'name' => '服务商', 'value' => self::DEALER, ], - self::STORE => [ - 'name' => '店长', - 'value' => self::STORE, - ] +// self::STORE => [ +// 'name' => '店长', +// 'value' => self::STORE, +// ] ]; } @@ -55,32 +55,33 @@ class UserTypeEnum extends EnumBasics } - - public static function homeLocation(string $mobile){ + public static function homeLocation(string $mobile): string + { $datatype = 'txt'; - $url = 'https://api.ip138.com/mobile/?mobile='.$mobile.'&datatype='.$datatype; + $url = 'https://api.ip138.com/mobile/?mobile=' . $mobile . '&datatype=' . $datatype; $header = array('token:00d5cb1fac5dc5cbfe2ff218292a2dfd33'); - return self::getName($url,$header ); + return self::getName($url, $header); } - public function getData($url,$header){ - - $curl = curl_init(); - - curl_setopt($curl,CURLOPT_URL,$url); - - curl_setopt($curl,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1); - - curl_setopt($curl,CURLOPT_HTTPHEADER,$header); - - curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); - - curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,3); - - $handles = curl_exec($curl); - - curl_close($curl); - - return $handles; - } + public function getData($url, $header) + { + + $curl = curl_init(); + + curl_setopt($curl, CURLOPT_URL, $url); + + curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); + + curl_setopt($curl, CURLOPT_HTTPHEADER, $header); + + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 3); + + $handles = curl_exec($curl); + + curl_close($curl); + + return $handles; + } } \ No newline at end of file diff --git a/app/common/library/wxserver/Wholesaler.php b/app/common/library/wxserver/Wholesaler.php index 3a4136b1..0d8096a0 100644 --- a/app/common/library/wxserver/Wholesaler.php +++ b/app/common/library/wxserver/Wholesaler.php @@ -76,6 +76,7 @@ class Wholesaler public function applySetOrderPathInfo(array $appid, string $path = 'pages/order/index') { + $msg = '操作失败(未知错误)'; $token = $this->getComponentAccessToken(); $data['batch_req'] = [ 'path' => $path, @@ -83,7 +84,8 @@ class Wholesaler ]; $url = "https://api.weixin.qq.com/wxa/security/applysetorderpathinfo?component_access_token=$token"; $result = $this->curlPost($url, json_encode($data)); - return json_decode($result, true); + $result = json_decode($result, true); + return !empty($result['errmsg']) ? $result['errmsg'] : $msg; } public function getStableAccessToken() @@ -211,12 +213,13 @@ class Wholesaler * @notes:发布体验版 * @param $appid * @param $template_id - * @return bool + * @return mixed|string * @throws BaseException * @author: wanghousheng */ - public function commit($appid, $template_id): bool + public function commit($appid, $template_id): string { + $msg = '提交体验版失败'; $version = ''; $access_token = $this->authorizerAccessToken($appid); //获取模板 @@ -244,14 +247,14 @@ class Wholesaler $result = json_decode($result, true); if ($result && !empty($result['errmsg']) && $result['errmsg'] == 'ok') { //体验码 + $msg = $result['errmsg']; $qr_code = $this->getQrcode($appid); if ($qr_code) { $model = new WxwholesalerAccount(); $model->update(['experience_code' => $qr_code], ['appid' => $appid]); } - return true; } - return false; + return !empty($result['errmsg']) ? $result['errmsg'] : $msg; } /** @@ -277,17 +280,20 @@ class Wholesaler /** * @notes:获取版本信息 * @param $appid - * @return bool + * @return array * @author: wanghousheng */ - public function getVersioninfo($appid): bool + public function getVersioninfo($appid): array { + $msg = '操作失败'; + $code = 0; $access_token = $this->authorizerAccessToken($appid); $url = 'https://api.weixin.qq.com/wxa/getversioninfo?access_token=' . $access_token; $result = $this->curlPost($url, '{}'); $result = json_decode($result, true); if ($result && !empty($result['errmsg']) && $result['errmsg'] == 'ok') { $up = []; + $code = 1; if (!empty($result['exp_info'])) { $up['exp_info'] = json_encode($result['exp_info']); } @@ -298,9 +304,8 @@ class Wholesaler $model = new WxwholesalerAccount(); $model->update($up, ['appid' => $appid]); } - return true; } - return false; + return ['code' => $code, 'msg' => !empty($result['errmsg']) ? $result['errmsg'] : $msg]; } /** @@ -499,11 +504,12 @@ class Wholesaler * @notes:设置域名 * @param $appid * @param $domain - * @return bool + * @return mixed|string * @author: wanghousheng */ - public function setDomain($appid, $domain): bool + public function setDomain($appid, $domain) { + $msg = '操作失败(未知错误)'; $token = $this->authorizerAccessToken($appid); if ($token) { $url = "https://api.weixin.qq.com/wxa/modify_domain_directly?access_token=$token"; @@ -512,24 +518,21 @@ class Wholesaler $data['uploaddomain'] = [$domain, 'https://qiniu.shop.royaum.com.cn']; $data['downloaddomain'] = [$domain, 'https://qiniu.shop.royaum.com.cn']; $result = $this->curlPost($url, json_encode($data)); - Db::table('yoshop_wx_server')->insertGetId(['content' => "设置域名信息", 'created_at' => date('Y-m-d H:i:s')]); - Db::table('yoshop_wx_server')->insertGetId(['content' => $result, 'created_at' => date('Y-m-d H:i:s')]); $result = json_decode($result, true); - if ($result && !empty($result['errmsg']) && $result['errmsg'] == 'ok') { - return true; - } + $msg = !empty($result['errmsg']) ? $result['errmsg'] : $msg; } - return false; + return $msg; } /** * @notes:设置隐私 * @param $appid - * @return bool + * @return mixed|string * @author: wanghousheng */ - public function getPrivacySetting($appid): bool + public function getPrivacySetting($appid) { + $msg = '操作失败(未知错误)'; $token = $this->authorizerAccessToken($appid); if ($token) { $url = "https://api.weixin.qq.com/cgi-bin/component/setprivacysetting?access_token=$token"; @@ -547,11 +550,9 @@ class Wholesaler $data['owner_setting']['notice_method'] = '公告'; $result = $this->curlPost($url, json_encode($data)); $result = json_decode($result, true); - if ($result && !empty($result['errmsg']) && $result['errmsg'] == 'ok') { - return true; - } + $msg = !empty($result['errmsg']) ? $result['errmsg'] : $msg; } - return false; + return $msg; } public function apiText($authorization_code, $touser) @@ -621,7 +622,7 @@ class Wholesaler $insert_data['create_time'] = time(); $model->insertGetId($insert_data); } - $this->setOther($appid, $domain); +// $this->setOther($appid, $domain); } } } @@ -638,7 +639,7 @@ class Wholesaler $up['privacy_status'] = 1; } //设置业务域名 - if ($this->modifyJumpDomain($appid)) { + if ($this->modifyJumpDomain($appid, $domain)) { $up['jump_domain_status'] = 1; } //设置订单页path信息 @@ -649,20 +650,19 @@ class Wholesaler } } - private function modifyJumpDomain($appid, $domain): bool + public function modifyJumpDomain($appid, $domain) { + $msg = '操作失败(未知错误)'; $token = $this->authorizerAccessToken($appid); if ($token) { $url = "https://api.weixin.qq.com/wxa/setwebviewdomain?access_token=$token"; - $data['action'] = 'set'; + $data['action'] = 'add'; $data['webviewdomain'] = $domain; $result = $this->curlPost($url, json_encode($data)); $result = json_decode($result, true); - if ($result && !empty($result['errmsg']) && $result['errmsg'] == 'ok') { - return true; - } + $msg = !empty($result['errmsg']) ? $result['errmsg'] : $msg; } - return false; + return $msg; } /** diff --git a/app/common/model/dealer/Order.php b/app/common/model/dealer/Order.php index fd2dc0e3..61c7a8dc 100644 --- a/app/common/model/dealer/Order.php +++ b/app/common/model/dealer/Order.php @@ -12,12 +12,12 @@ declare (strict_types=1); namespace app\common\model\dealer; -use cores\BaseModel; +use app\common\enum\order\refund\AuditStatus as AuditStatusEnum; +use app\common\enum\order\refund\RefundType as RefundTypeEnum; use app\common\library\helper; use app\common\model\Order as OrderModel; use app\common\model\OrderGoods as OrderGoodsModel; -use app\common\enum\order\refund\RefundType as RefundTypeEnum; -use app\common\enum\order\refund\AuditStatus as AuditStatusEnum; +use cores\BaseModel; use think\model\relation\BelongsTo; /** @@ -156,18 +156,18 @@ class Order extends BaseModel if (!$goods['is_ind_dealer']) { // 全局分销比例 return [ - 'first_money' => helper::bcmul($goodsPrice, helper::bcdiv($setting['first_money'], 100)), - 'second_money' => helper::bcmul($goodsPrice, helper::bcdiv($setting['second_money'], 100)), - 'third_money' => helper::bcmul($goodsPrice, helper::bcdiv($setting['third_money'], 100)) + 'first_money' => helper::bcmul($goodsPrice, helper::bcdiv($setting['first_money'], 1000, 3)), + 'second_money' => helper::bcmul($goodsPrice, helper::bcdiv($setting['second_money'], 1000, 3)), + 'third_money' => helper::bcmul($goodsPrice, helper::bcdiv($setting['third_money'], 1000, 3)) ]; } // 商品单独分销 if ($goods['dealer_money_type'] == 10) { // 分销佣金类型:百分比 return [ - 'first_money' => $goodsPrice * helper::bcdiv($goods['first_money'], 100), - 'second_money' => $goodsPrice * helper::bcdiv($goods['second_money'], 100), - 'third_money' => $goodsPrice * helper::bcdiv($goods['third_money'], 100) + 'first_money' => $goodsPrice * helper::bcdiv($goods['first_money'], 1000, 3), + 'second_money' => $goodsPrice * helper::bcdiv($goods['second_money'], 1000, 3), + 'third_money' => $goodsPrice * helper::bcdiv($goods['third_money'], 1000, 3) ]; } else { // 分销佣金类型:固定金额 diff --git a/app/common/model/dealer/Referee.php b/app/common/model/dealer/Referee.php index 476d71e1..4bf6ca7a 100644 --- a/app/common/model/dealer/Referee.php +++ b/app/common/model/dealer/Referee.php @@ -63,6 +63,20 @@ class Referee extends BaseModel return $isDealer ? (User::isDealerUser($dealerId) ? $dealerId : 0) : $dealerId; } + /** + * 获取上级用户id + * @param int $userId + * @param int $level + * @param bool $isBuyer 必须是采购商 + * @return bool|mixed + */ + public static function getRefereeBuyUser(int $userId, int $level, bool $isBuyer = false) + { + $dealerId = (new self)->where(['user_id' => $userId, 'level' => $level])->value('dealer_id'); + if (!$dealerId) return 0; + return $isBuyer ? (User::isBuyer($userId) ? $dealerId : 0) : $dealerId; + } + /** * 获取我的团队列表 * @param int $dealerId 分销商ID diff --git a/app/common/model/dealer/User.php b/app/common/model/dealer/User.php index 250f065c..ff047fb1 100644 --- a/app/common/model/dealer/User.php +++ b/app/common/model/dealer/User.php @@ -13,6 +13,7 @@ declare (strict_types=1); namespace app\common\model\dealer; use app\common\enum\dealer\DealerUserEnum; +use app\common\enum\user\UserTypeEnum; use app\common\library\helper; use cores\BaseModel; use think\Collection; @@ -106,6 +107,19 @@ class User extends BaseModel return self::get($userId, $with); } + /** + * @notes:是否为采购商 + * @param int $userId + * @return mixed + * @author: wanghousheng + */ + public static function isBuyer(int $userId) + { + return (new \app\common\model\User())->where('user_id', '=', $userId) + ->where('user_type', '=', UserTypeEnum::MEMBER) + ->value('user_id'); + } + /** * 是否为分销商 * @param int $userId diff --git a/app/store/model/RetailDescribe.php b/app/store/model/RetailDescribe.php index 954bfc46..284ddf00 100644 --- a/app/store/model/RetailDescribe.php +++ b/app/store/model/RetailDescribe.php @@ -23,7 +23,7 @@ class RetailDescribe extends RetDescribeModel $filter = $this->getFilter($param); $list = $this->field('*') ->where($filter) - ->order(['create_time' => 'asc','sort' => 'asc']) + ->order(['sort' => 'asc','create_time' => 'asc']) ->paginate($param['pageSize'] ?? 15); return $list; } diff --git a/app/store/model/dealer/Apply.php b/app/store/model/dealer/Apply.php index 159c934a..0d7950f0 100644 --- a/app/store/model/dealer/Apply.php +++ b/app/store/model/dealer/Apply.php @@ -97,9 +97,13 @@ class Apply extends ApplyModel $info = UserModel::detail(['user_id' => $this['user_id']]); if (!empty($info)) { $info = $info->toArray(); - if ($info['effective_time'] && strtotime($info['effective_time']) > time() && $info['user_type'] == UserTypeEnum::MEMBER) { + if ($info['user_type'] == UserTypeEnum::NORMAL) { $up['user_type'] = UserTypeEnum::DEALER; - $up['fx_effective_time'] = $info['effective_time']; + if ($info['effective_time']) { + $up['effective_time'] = null; + } + $current_date = date('Y-m-d'); // 获取当前日期 + $up['fx_effective_time'] = date('Y-m-d', strtotime('+1 year', strtotime($current_date))); $userModel->where(['user_id' => $info['user_id']])->save($up); } } diff --git a/app/store/model/dealer/User.php b/app/store/model/dealer/User.php index 510ff310..308d65f2 100644 --- a/app/store/model/dealer/User.php +++ b/app/store/model/dealer/User.php @@ -12,8 +12,10 @@ declare (strict_types=1); namespace app\store\model\dealer; -use app\store\model\dealer\Referee as RefereeModel; +use app\common\enum\user\UserTypeEnum; use app\common\model\dealer\User as UserModel; +use app\store\model\dealer\Apply as ApplyModel; +use app\store\model\dealer\Referee as RefereeModel; /** * 分销商用户模型 @@ -85,6 +87,13 @@ class User extends UserModel } // 清空下级推荐记录 $RefereeModel->onClearTeam($this['user_id']); + // 删除申请记录 + $applyModel = new ApplyModel(); + $applyModel->where(['user_id' => $this['user_id']])->delete(); + //修改会员身份 + $userModel = new \app\common\model\User(); + $userModel->where(['user_id' => $this['user_id']])->save(['user_type' => UserTypeEnum::NORMAL, 'fx_effective_time' => null]); + $this->onDeleteReferee($this['user_id']); // 标记当前分销商记录为已删除 return $this->delete(); }); diff --git a/app/timer/model/dealer/Order.php b/app/timer/model/dealer/Order.php index c4e02b0e..07c3346f 100644 --- a/app/timer/model/dealer/Order.php +++ b/app/timer/model/dealer/Order.php @@ -12,9 +12,9 @@ declare (strict_types=1); namespace app\timer\model\dealer; +use app\common\enum\order\OrderStatus as OrderStatusEnum; use app\common\model\dealer\Order as OrderModel; use app\timer\model\dealer\Setting as DealerSettingModel; -use app\common\enum\order\OrderStatus as OrderStatusEnum; /** * 分销商订单模型 diff --git a/app/timer/service/dealer/Order.php b/app/timer/service/dealer/Order.php index b5247f5c..68e67bc2 100644 --- a/app/timer/service/dealer/Order.php +++ b/app/timer/service/dealer/Order.php @@ -13,10 +13,10 @@ declare (strict_types=1); namespace app\timer\service\dealer; use app\common\library\helper; +use app\common\service\BaseService; use app\timer\library\Tools; -use app\timer\model\dealer\User as DealerUserModel; use app\timer\model\dealer\Order as DealerOrderModel; -use app\common\service\BaseService; +use app\timer\model\dealer\User as DealerUserModel; use think\model\Collection; /** diff --git a/config/database.php b/config/database.php index cf68d182..bab4bb65 100644 --- a/config/database.php +++ b/config/database.php @@ -111,7 +111,45 @@ return [ // 字段缓存路径 'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR, ], + 'shopMysql' => [ + // 数据库类型 + 'type' => env('sdatabase.type', 'mysql'), + // 服务器地址 + 'hostname' => env('sdatabase.hostname', $config['host']), + // 数据库名 + 'database' => env('sdatabase.database', $config['database']), + // 用户名 + 'username' => env('sdatabase.username', $config['username']), + // 密码 + 'password' => env('sdatabase.password', $config['password']), + // 端口 + 'hostport' => env('sdatabase.hostport', $config['hostport']), + // 数据库连接参数 + 'params' => [], + // 数据库编码默认采用utf8 + 'charset' => env('sdatabase.charset', 'utf8'), + // 数据库表前缀 + 'prefix' => "", + // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) + 'deploy' => 0, + // 数据库读写是否分离 主从式有效 + 'rw_separate' => false, + // 读写分离后 主服务器数量 + 'master_num' => 1, + // 指定从服务器序号 + 'slave_no' => '', + // 是否严格检查字段是否存在 + 'fields_strict' => true, + // 是否需要断线重连 + 'break_reconnect' => false, + // 监听SQL + 'trigger_sql' => true, + // 开启字段缓存 + 'fields_cache' => false, + // 字段缓存路径 + 'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR, + ], // 更多的数据库配置信息 ], diff --git a/config/queue.php b/config/queue.php index 52900d43..e505184c 100644 --- a/config/queue.php +++ b/config/queue.php @@ -27,7 +27,7 @@ return [ 'host' => env('redis.hostname', '127.0.0.1'), 'port' => env('redis.hostport', '6379'), 'password' => env('redis.password', ''), - 'select' => 1,//env('redis.select', '0'), + 'select' => 3,//env('redis.select', '0'), 'timeout' => 0, 'persistent' => false, 'retry_after' => 60, // 队列任务无响应时(例如die exit)重试的间隔时间, 默认60秒