241 lines
9.1 KiB
PHP
241 lines
9.1 KiB
PHP
<?php
|
|
/**
|
|
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 成都云之牛科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.cdcloudshop.com
|
|
|
|
* =========================================================
|
|
*/
|
|
|
|
namespace app\model\system;
|
|
|
|
use app\model\BaseModel;
|
|
use app\model\upload\Upload;
|
|
use extend\Time;
|
|
use think\facade\Cache;
|
|
use think\facade\Db;
|
|
|
|
/**
|
|
* 站点管理
|
|
* @author Administrator
|
|
*
|
|
*/
|
|
class Site extends BaseModel
|
|
{
|
|
|
|
/***
|
|
* 添加站点
|
|
* @param $site_data
|
|
* @param $user_info
|
|
* @param bool $is_number 是否验证代理数量
|
|
* @return array
|
|
*/
|
|
public function addSite($site_data,$user_info,$is_agentnum=true)
|
|
{
|
|
//用户检测
|
|
if (empty($user_info['username'])) {
|
|
model("shop")->rollback();
|
|
return $this->error('', 'USER_NOT_EXIST');
|
|
}else if($user_info['username'] && model("user")->getInfo(['username'=>$user_info['username']],'uid')>0){
|
|
model("shop")->rollback();
|
|
return $this->error('', $user_info['username'].'USER_EXIST账户已存在');
|
|
}
|
|
$site_data[ 'site_type' ] = 'shop';
|
|
$site_data[ 'username' ] = $user_info[ 'username' ];
|
|
$site_data[ 'create_time' ] = time();
|
|
$is_agent=false;
|
|
$is_try=false;
|
|
if (isset($site_data['is_admin']) && $site_data[ 'is_admin' ] == 1) {
|
|
$addon = new Addon();
|
|
$install = $addon->getAddonList([[ "type", "<>", "system" ]]);
|
|
$addon_array = array_column($install[ "data" ], 'name');
|
|
$site_data[ 'site_addon' ] = implode(',', $addon_array);
|
|
$site_data[ 'group_id' ] = 0;
|
|
$site_data[ 'group_name' ] = '自营店铺套餐';
|
|
$site_data[ 'sms_num' ] = 0;
|
|
} else { //套餐信息
|
|
$site_group_model = new SiteGroup();
|
|
$site_group_info = $site_group_model->getSiteGroupInfo(
|
|
[['group_id', '=', $site_data[ 'group_id' ]]],
|
|
'group_id,group_name,addon_array,sms_num,unit'
|
|
);
|
|
$unit=$site_group_info[ 'data' ][ 'unit' ]??7;
|
|
$site_data[ 'group_id' ] = $site_group_info[ 'data' ][ 'group_id' ]??0;
|
|
$site_data[ 'group_name' ] = $site_group_info[ 'data' ][ 'group_name' ]??'基础版';
|
|
$site_data[ 'site_addon' ] = $site_group_info[ 'data' ][ 'addon_array' ]??'';
|
|
if (empty($site_data[ 'is_try' ]) ||$site_data[ 'is_try' ]==1 ) {//试用
|
|
//查询是否开启体验
|
|
$site_config = new SiteConfig();
|
|
$is_try=true;
|
|
$config_info = $site_config->getOpenSiteConfig();
|
|
$site_data[ 'sms_num' ] = $config_info[ 'data' ][ 'value' ][ 'sms_num' ];
|
|
$site_data['expire_time' ] = Time::daysAfter($site_data['expire_time']??7);
|
|
} else if(isset($site_data['agent_id'])) {
|
|
$where = [
|
|
['site_id', '=', $site_data['agent_id']],
|
|
['is_agent', '=', 1],
|
|
];
|
|
$is_agent=true;
|
|
if($is_agentnum){
|
|
$agentNumber = model('website')->getValue($where,'agent_number');
|
|
if ($agentNumber < 1) {
|
|
return $this->error(-1, "当前系统授权最大店铺数量请联系管理员购买");
|
|
}
|
|
}
|
|
$site_data['sms_num'] = $site_group_info['data']['sms_num'];
|
|
if(!isset($site_data['expire_time'])){
|
|
$site_data['expire_time'] = strtotime("+1 ".$unit);
|
|
}
|
|
}
|
|
}
|
|
model('site')->startTrans();
|
|
try {
|
|
//添加系统站
|
|
if($is_agent && !$is_try){
|
|
$count_time=intval(($site_data['expire_time']-time())/86400);
|
|
model('website')->setDec(['site_id'=>$site_data['agent_id']],'agent_number',$count_time);
|
|
Cache::tag("website")->clear();
|
|
}
|
|
$site_id = model("site")->add($site_data);
|
|
$shop_data[ 'site_id' ] = $site_id;
|
|
$shop_data[ 'create_time' ] = time();
|
|
model("shop")->add($shop_data);
|
|
// 添加店铺相册默认分组
|
|
model("album")->add(
|
|
[
|
|
'site_id' => $site_id,
|
|
'album_name' => "默认分组",
|
|
'update_time' => time(),
|
|
'is_default' => 1,
|
|
'level'=>1
|
|
]
|
|
);
|
|
//添加系统用户组
|
|
$group = new Group();
|
|
$group_data = [
|
|
'site_id' => $site_id,
|
|
'app_module' => 'shop',
|
|
'group_name' => '管理员组',
|
|
'is_system' => 1,
|
|
'menu_array' => '',
|
|
'create_time' => time()
|
|
];
|
|
$group_id = $group->addGroup($group_data)[ 'data' ];
|
|
//添加用户
|
|
$data_user = [
|
|
'app_module' => 'shop',
|
|
'is_admin' => 1,
|
|
'site_id' => $site_id,
|
|
'username' => $user_info['username'],
|
|
'password' => $user_info['password'],
|
|
'group_id' => $group_id,
|
|
'group_name' => '管理员组',
|
|
];
|
|
//添加user表
|
|
model('user')->add($data_user);
|
|
//执行事件
|
|
event("AddSite", [ 'site_id' => $site_id ]);
|
|
model("site")->commit();
|
|
return $this->success($site_id);
|
|
} catch (\Exception $e) {
|
|
model("site")->rollback();
|
|
return $this->error("", $e->getMessage());
|
|
}
|
|
}
|
|
|
|
/**
|
|
* getSiteInfo 获取站点详情
|
|
* @param $condtion
|
|
* @param string $fields
|
|
*/
|
|
public function getSiteInfo($condition, $fields = '*')
|
|
{
|
|
$res = model('site')->getInfo($condition, $fields);
|
|
return $this->success($res);
|
|
}
|
|
|
|
/**
|
|
* 修改商城站点信息
|
|
* @param $site_data
|
|
* @param $condition
|
|
* @return int
|
|
*/
|
|
public function editSite($site_data, $condition)
|
|
{
|
|
$site_info = $this->getSiteInfo($condition);
|
|
if($site_info['data'] && $site_data['logo'] && $site_info['data']['logo'] != $site_data['logo']){
|
|
$upload_model = new Upload();
|
|
$upload_model->deletePic($site_info['data']['logo'], $site_info['data']['site_id']);
|
|
}
|
|
if($site_info['data'] && $site_data['logo_square'] && $site_info['data']['logo_square'] != $site_data['logo_square']){
|
|
$upload_model = new Upload();
|
|
$upload_model->deletePic($site_info['data']['logo_square'], $site_info['data']['site_id']);
|
|
}
|
|
$res = model('site')->update($site_data, $condition);
|
|
if($res && $site_data['logo']){
|
|
copy($site_data['logo'],"public/static/img/default_img/login.png");
|
|
}
|
|
return $this->success($res);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* 获取站点插件
|
|
* @param int $site_id
|
|
*/
|
|
public function getSiteAddon($site_id)
|
|
{
|
|
$site_info = model('site')->getInfo([ [ 'site_id', '=', $site_id ] ], 'site_addon');
|
|
$site_addon = $site_info[ 'site_addon' ] ?? '';
|
|
$addon_condition_str = "= 'system' ";
|
|
$addon_condition = array ();
|
|
if (!empty($site_addon)) {
|
|
$temp_addon_array = explode(',', $site_addon);
|
|
foreach ($temp_addon_array as $k => $v) {
|
|
$temp_addon_array[ $k ] = "'" . $v . "'";
|
|
}
|
|
$temp_str = implode(',', $temp_addon_array);
|
|
$addon_condition_str .= " OR name in ($temp_str)";
|
|
}
|
|
|
|
$addon_condition[] = [ "type", "exp", Db::raw($addon_condition_str) ];
|
|
$addon_model = new Addon();
|
|
$result = $addon_model->getAddonList($addon_condition);
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* getSiteShopPageList 获取站点列表
|
|
* @param array $condition
|
|
* @param bool $fields
|
|
* @param $order
|
|
* @param string $limit
|
|
* @return array
|
|
*/
|
|
public function getSitePageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'create_time desc', $fields = '*')
|
|
{
|
|
$res = model('site')->pageList($condition, $fields, $order, $page, $page_size, 'a');
|
|
if ($res[ 'count' ] > 0) {
|
|
$time = time();
|
|
foreach ($res[ 'list' ] as $k => $v) {
|
|
if ($v[ 'expire_time' ] == 0) {
|
|
$res[ 'list' ][ $k ][ 'status' ] = '正常';
|
|
} elseif ($v[ 'expire_time' ] > $time) {
|
|
$cha = $v[ 'expire_time' ] - $time;
|
|
$date = ceil(( $cha / 86400 ));
|
|
if ($date < 30) {
|
|
$res[ 'list' ][ $k ][ 'status' ] = '即将到期';
|
|
} else {
|
|
$res[ 'list' ][ $k ][ 'status' ] = '正常';
|
|
}
|
|
} else {
|
|
$res[ 'list' ][ $k ][ 'status' ] = '关闭';
|
|
}
|
|
}
|
|
}
|
|
return $this->success($res);
|
|
}
|
|
} |