admin/app/model/system/Site.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);
}
}