150 lines
4.7 KiB
PHP
150 lines
4.7 KiB
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
|
||
// +----------------------------------------------------------------------
|
||
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
|
||
// +----------------------------------------------------------------------
|
||
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
|
||
// +----------------------------------------------------------------------
|
||
// | Author: CRMEB Team <admin@crmeb.com>
|
||
// +----------------------------------------------------------------------
|
||
namespace crmeb\services;
|
||
|
||
use app\common\repositories\store\product\ProductAssistSetRepository;
|
||
use app\common\repositories\store\product\ProductGroupBuyingRepository;
|
||
use app\common\repositories\store\product\ProductGroupRepository;
|
||
use app\common\repositories\store\product\ProductPresellRepository;
|
||
use app\common\repositories\store\product\ProductRepository;
|
||
use app\common\repositories\store\product\SpuRepository;
|
||
use think\exception\ValidateException;
|
||
use think\helper\Str;
|
||
|
||
class CopyCommand
|
||
{
|
||
protected $type = [
|
||
'0' => 'p/:', //普通商品
|
||
'1' => 's/:', //秒杀商品
|
||
'2' => 'r/:', //预售商品
|
||
'4' => 'g/:', //拼团商品
|
||
'30' => 'sa/:', //助力活动
|
||
'40' => 'gb/:', //拼团活动
|
||
];
|
||
protected $productType = [
|
||
'p' => 0,
|
||
's' => 1,
|
||
'r' => 2,
|
||
'g' => 4,
|
||
'sa' => 30,
|
||
'gb' => 40,
|
||
];
|
||
|
||
/**
|
||
* TODO 创建口令
|
||
* @param int $id
|
||
* @param string $type
|
||
* @param $userInfo
|
||
* @return string
|
||
* @author Qinii
|
||
* @day 9/8/21
|
||
*/
|
||
public function create(int $id, string $type, $userInfo)
|
||
{
|
||
$data = $this->getTitle($id, $type);
|
||
$str = $this->setNumberToStr($data['id'], $type);
|
||
if ($userInfo->uid) $str .= '嗯'.dechex($userInfo->uid??0);
|
||
|
||
return $str. '*/ '.$data['title'];
|
||
}
|
||
|
||
/**
|
||
* TODO 创建口令ID
|
||
* @param $id
|
||
* @param $type
|
||
* @return string
|
||
* @author Qinii
|
||
* @day 9/8/21
|
||
*/
|
||
public function setNumberToStr($id, $type)
|
||
{
|
||
$count = 10;
|
||
$id = dechex($id);
|
||
$strlen = strlen($id);
|
||
$str = '/@'. $strlen.$this->type[$type];
|
||
$str .= Str::random(($count-$strlen),null);
|
||
$str .= $id;
|
||
return $str;
|
||
}
|
||
|
||
/**
|
||
* TODO 商品信息
|
||
* @param $id
|
||
* @param $type
|
||
* @return array
|
||
* @author Qinii
|
||
* @day 9/8/21
|
||
*/
|
||
public function getTitle($id, $type)
|
||
{
|
||
switch ($type){
|
||
case 0:
|
||
$ret = app()->make(ProductRepository::class)->get($id);
|
||
$title = $ret->store_name;
|
||
break;
|
||
case 1:
|
||
$ret = app()->make(ProductRepository::class)->get($id);
|
||
$title = $ret->store_name;
|
||
break;
|
||
case 2:
|
||
$ret = app()->make(ProductPresellRepository::class)->get($id);
|
||
$title = $ret->store_name;
|
||
break;
|
||
case 4:
|
||
$ret = app()->make(ProductGroupRepository::class)->get($id);
|
||
$title = $ret->product->store_name;
|
||
break;
|
||
case 30:
|
||
$ret = app()->make(ProductAssistSetRepository::class)->get($id);
|
||
if (!$ret) throw new ValidateException('数据不存在');
|
||
$title = $ret->assist->store_name;
|
||
break;
|
||
case 40:
|
||
$ret = app()->make(ProductGroupBuyingRepository::class)->get($id);
|
||
if (!$ret) throw new ValidateException('数据不存在');
|
||
$title = $ret->productGroup->product->store_name;
|
||
break;
|
||
default:
|
||
return ;
|
||
break;
|
||
}
|
||
return compact('title','id');
|
||
}
|
||
|
||
/**
|
||
* TODO 解析口令
|
||
* @param string $key
|
||
* @return array
|
||
* @author Qinii
|
||
* @day 9/8/21
|
||
*/
|
||
public function getMassage(string $key)
|
||
{
|
||
$key = rtrim(ltrim($key));
|
||
try{
|
||
$com = explode('*/',$key)[0].'*/';
|
||
$key = str_replace('/@','',$key);
|
||
$keyArray = explode('/:',$key);
|
||
$num = substr($keyArray[0],0,1);
|
||
$idArray = explode('嗯',$keyArray[1]);
|
||
$id = substr($idArray[0],-$num);
|
||
$id = hexdec($id);
|
||
$type_ = substr($keyArray[0],1);
|
||
$uidArray = explode('*/',$idArray[1]);
|
||
$uid = hexdec($uidArray[0]);
|
||
$type = $this->productType[$type_];
|
||
return compact('type','id','uid','com');
|
||
} catch (\Exception $exception){
|
||
return [];
|
||
}
|
||
}
|
||
}
|