2019-02-28 19:48:21 +08:00
< ? php
/**
* tpshop
* ============================================================================
* * 版权所有 2015 - 2027 深圳搜豹网络科技有限公司,并保留所有权利。
* 网站地址 : http :// www . tpshop . cn
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
* 不允许对程序代码以任何形式任何目的的再发布。
* 个人学习免费 , 如果商业用途务必到TPshop官网购买授权 .
* 采用最新Thinkphp5助手函数特性实现单字母函数M D U等简写方式
* ============================================================================
* $Author : IT宇宙人 2015 - 08 - 10 $
*
*/
namespace app\home\controller ;
use think\Page ;
use think\Verify ;
use think\Image ;
use think\Db ;
class Index extends Base {
public function index (){
// 如果是手机跳转到 手机模块
if ( isMobile ()){
header ( " Location: " . U ( 'Mobile/Index/index' ));
}
$hot_goods = $hot_cate = $cateList = $recommend_goods = array ();
$sql = " select a.goods_name,a.goods_id,a.shop_price,a.market_price,a.cat_id,b.parent_id_path,b.name from " . C ( 'database.prefix' ) . " goods as a left join " ;
$sql .= C ( 'database.prefix' ) . " goods_category as b on a.cat_id=b.id where a.is_hot=1 and a.is_on_sale=1 order by a.sort " ; //二级分类下热卖商品
$index_hot_goods = S ( 'index_hot_goods' );
2019-03-01 17:32:10 +08:00
//如果缓存没有index_hot_goods那么用$sql数据库查询首页也买商品
2019-02-28 19:48:21 +08:00
if ( empty ( $index_hot_goods ))
{
$index_hot_goods = Db :: query ( $sql ); //首页热卖商品
S ( 'index_hot_goods' , $index_hot_goods , TPSHOP_CACHE_TIME );
}
if ( $index_hot_goods ){
foreach ( $index_hot_goods as $val ){
$cat_path = explode ( '_' , $val [ 'parent_id_path' ]);
$hot_goods [ $cat_path [ 1 ]][] = $val ;
}
}
$sql2 = " select a.goods_name,a.goods_id,a.shop_price,a.market_price,a.cat_id,b.parent_id_path,b.name from " . C ( 'database.prefix' ) . " goods as a left join " ;
$sql2 .= C ( 'database.prefix' ) . " goods_category as b on a.cat_id=b.id where a.is_recommend=1 and a.is_on_sale=1 order by a.sort " ; //二级分类下热卖商品
$index_recommend_goods = S ( 'index_recommend_goods' );
if ( $index_recommend_goods ){
foreach ( $index_recommend_goods as $va ){
$cat_path2 = explode ( '_' , $va [ 'parent_id_path' ]);
$recommend_goods [ $cat_path2 [ 1 ]][] = $va ;
}
}
$hot_category = M ( 'goods_category' ) -> where ( " is_hot=1 and level=3 and is_show=1 " ) -> cache ( true , TPSHOP_CACHE_TIME ) -> select (); //热门三级分类
foreach ( $hot_category as $v ){
$cat_path = explode ( '_' , $v [ 'parent_id_path' ]);
$hot_cate [ $cat_path [ 1 ]][] = $v ;
}
foreach ( $this -> cateTrre as $k => $v ){
if ( $v [ 'is_hot' ] == 1 ){
$v [ 'hot_goods' ] = empty ( $hot_goods [ $k ]) ? '' : $hot_goods [ $k ];
$v [ 'recommend_goods' ] = empty ( $recommend_goods [ $k ]) ? '' : $recommend_goods [ $k ];
$v [ 'hot_cate' ] = empty ( $hot_cate [ $k ]) ? array () : $hot_cate [ $k ];
$cateList [] = $goods_category_tree [] = $v ;
} else {
$goods_category_tree [] = $v ;
}
}
// print_r($cateList);
$this -> assign ( 'cateList' , $cateList );
//$this->assign('goods_category_tree',$goods_category_tree);
return $this -> fetch ();
}
/**
* 公告详情页
*/
public function notice (){
return $this -> fetch ();
}
// 二维码
public function qr_code_raw (){
ob_end_clean ();
// 导入Vendor类库包 Library/Vendor/Zend/Server.class.php
//http://www.tp-shop.cn/Home/Index/erweima/data/www.99soubao.com
//require_once 'vendor/phpqrcode/phpqrcode.php';
vendor ( 'phpqrcode.phpqrcode' );
//import('Vendor.phpqrcode.phpqrcode');
error_reporting ( E_ERROR );
$url = urldecode ( $_GET [ " data " ]);
\QRcode :: png ( $url );
exit ;
}
// 二维码
public function qr_code ()
{
ob_end_clean ();
vendor ( 'topthink.think-image.src.Image' );
vendor ( 'phpqrcode.phpqrcode' );
error_reporting ( E_ERROR );
$url = isset ( $_GET [ 'data' ]) ? $_GET [ 'data' ] : '' ;
$url = urldecode ( $url );
$head_pic = input ( 'get.head_pic' , '' );
$back_img = input ( 'get.back_img' , '' );
$valid_date = input ( 'get.valid_date' , 0 );
$qr_code_path = UPLOAD_PATH . 'qr_code/' ;
if ( ! file_exists ( $qr_code_path )) {
mkdir ( $qr_code_path );
}
/* 生成二维码 */
$qr_code_file = $qr_code_path . time () . rand ( 1 , 10000 ) . '.png' ;
\QRcode :: png ( $url , $qr_code_file , QR_ECLEVEL_M );
/* 二维码叠加水印 */
$QR = Image :: open ( $qr_code_file );
$QR_width = $QR -> width ();
$QR_height = $QR -> height ();
/* 添加背景图 */
if ( $back_img && file_exists ( $back_img )) {
$back = Image :: open ( $back_img );
$back -> thumb ( $QR_width , $QR_height , \think\Image :: THUMB_CENTER )
-> water ( $qr_code_file , \think\Image :: WATER_NORTHWEST , 60 ); //->save($qr_code_file);
$QR = $back ;
}
/* 添加头像 */
if ( $head_pic ) {
//如果是网络头像
if ( strpos ( $head_pic , 'http' ) === 0 ) {
//下载头像
$ch = curl_init ();
curl_setopt ( $ch , CURLOPT_URL , $head_pic );
curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 );
$file_content = curl_exec ( $ch );
curl_close ( $ch );
//保存头像
if ( $file_content ) {
$head_pic_path = $qr_code_path . time () . rand ( 1 , 10000 ) . '.png' ;
file_put_contents ( $head_pic_path , $file_content );
$head_pic = $head_pic_path ;
}
}
//如果是本地头像
if ( file_exists ( $head_pic )) {
$logo = Image :: open ( $head_pic );
$logo_width = $logo -> height ();
$logo_height = $logo -> width ();
$logo_qr_width = $QR_width / 5 ;
$scale = $logo_width / $logo_qr_width ;
$logo_qr_height = $logo_height / $scale ;
$logo_file = $qr_code_path . time () . rand ( 1 , 10000 );
$logo -> thumb ( $logo_qr_width , $logo_qr_height ) -> save ( $logo_file , null , 100 );
$QR = $QR -> thumb ( $QR_width , $QR_height ) -> water ( $logo_file , \think\Image :: WATER_CENTER );
unlink ( $logo_file );
}
if ( $head_pic_path ) {
unlink ( $head_pic_path );
}
}
if ( $valid_date && strpos ( $url , 'weixin.qq.com' ) !== false ) {
$QR = $QR -> text ( '有效时间 ' . $valid_date , " ./vendor/topthink/think-captcha/assets/zhttfs/1.ttf " , 7 , '#00000000' , Image :: WATER_SOUTH );
}
$QR -> save ( $qr_code_file , null , 100 );
$qrHandle = imagecreatefromstring ( file_get_contents ( $qr_code_file ));
unlink ( $qr_code_file ); //删除二维码文件
header ( " Content-type: image/png " );
imagepng ( $qrHandle );
imagedestroy ( $qrHandle );
exit ;
}
// 验证码
public function verify ()
{
//验证码类型
$type = I ( 'get.type' ) ? I ( 'get.type' ) : '' ;
$fontSize = I ( 'get.fontSize' ) ? I ( 'get.fontSize' ) : '40' ;
$length = I ( 'get.length' ) ? I ( 'get.length' ) : '4' ;
$config = array (
'fontSize' => $fontSize ,
'length' => $length ,
'useCurve' => true ,
'useNoise' => false ,
);
$Verify = new Verify ( $config );
$Verify -> entry ( $type );
exit ();
}
function truncate_tables (){
$tables = DB :: query ( " show tables " );
$table = array ( 'tp_admin' , 'tp_config' , 'tp_region' , 'tp_admin_role' , 'tp_system_menu' , 'tp_article_cat' , 'tp_wx_user' );
foreach ( $tables as $key => $val )
{
if ( ! in_array ( $val [ 'Tables_in_tpshop2.0' ], $table ))
echo " truncate table " . $val [ 'Tables_in_tpshop2.0' ] . ' ; ' ;
echo " <br/> " ;
}
}
/**
* 猜你喜欢
* @ author lxl
* @ time 17 - 2 - 15
*/
public function ajax_favorite (){
$p = I ( 'p/d' , 1 );
$i = I ( 'i' , 5 ); //显示条数
$time = time ();
$where = [ 'is_on_sale' => 1 , 'is_virtual' => [ 'exp' , " =0 or virtual_indate > $time " ]];
$favourite_goods = Db :: name ( 'goods' ) -> where ( $where ) -> order ( 'goods_id DESC' ) -> page ( $p , $i ) -> cache ( true , TPSHOP_CACHE_TIME ) -> select (); //首页推荐商品
$this -> assign ( 'favourite_goods' , $favourite_goods );
return $this -> fetch ();
}
}