ä¸ï¼ä»å½ä»¤è¡å建ç¨å°çç±»ï¼
liuhongdi@lhdpc:/data/php/admapi$ php think make:controller Goods
Controller:app\controller\Goods created successfully.
liuhongdi@lhdpc:/data/php/admapi$ php think make:validate Goods/Detail
Validate:app\validate\Goods\Detail created successfully.
liuhongdi@lhdpc:/data/php/admapi$ php think make:model Goods
Model:app\model\Goods created successfully.
说æï¼åå®ç¼çæ¶ææ£®ææ¯ä¸ä¸ªä¸æ³¨æ¶æçå客ï¼å°åï¼https://www.cnblogs.com/architectforest
     对åºçæºç å¯ä»¥è®¿é®è¿éè·åï¼Â https://github.com/liuhongdi/
     æ: https://gitee.com/liuhongdi
说æï¼ä½è :åå®ç¼ é®ç®±: [email protected]
äºï¼é ç½®:
1ï¼æ°æ®åº:
CREATE TABLE `goods` (
`goodsId` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
`goodsName` varchar(300) NOT NULL DEFAULT '' COMMENT 'ååå',
`price` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT 'ä»·æ ¼',
`stock` int NOT NULL DEFAULT '0' COMMENT 'åºå',
PRIMARY KEY (`goodsId`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='åå表'
INSERT INTO `goods` (`goodsId`, `goodsName`, `price`, `stock`) VALUES
(12323, 'æ¡çº¹äº®é¢è¡æç®± | 德彿å°PCæè´¨ éé³è½®', '1098.00', 6);
2, .env
[GOODSIMAGE]
GOODS_IMAGE_DIR=/var/www/html/goodsimage
GOODS_IMAGE_HOST=http://192.168.219.6/goodsimage
3,config/images.php
<?php
return [
"goodsImageDir"=>env('goodsimage.goods_image_dir' ),
"goodsImageHost"=>env('goodsimage.goods_image_host'),
];
ä¸ï¼ç¼åphp代ç :
1,controller/Goods.php
<?php
declare (strict_types = 1);
namespace app\controller;
use app\BaseController;
use app\result\Result;
use app\validate\Goods\Detail as GoodsDetailValidate;
use app\business\Goods as goodsBusiness;
use think\exception\ValidateException;
use think\Request;
class Goods extends BaseController
{
/**
* åå详æ
*
* @return \think\Response
*/
public function Detail(){
try {
//echo "begin check:<br/>";
validate(GoodsDetailValidate::class)
//->scene('edit')
->check($_GET);
} catch (ValidateException $e) {
// éªè¯å¤±è´¥ è¾åºé误信æ¯
//echo "get error:<br/>";
//var_dump($e->getError());
return Result::Error(422,$e->getError());
}
$goodsId = $this->request->param('goodsid');
$goods = new goodsBusiness();
$res = $goods->getOneGoods($goodsId);
if ($res['code'] == 0){
return Result::Success($res['data']);
} else {
return Result::Error(1,$res['msg']);
}
}
}
2,business/Goods.php
<?php
namespace app\business;
use app\model\Goods as GoodsModel;
use app\file\Goods as GoodsFile;
class Goods {
public function getOneGoods($goodId) {
$goodsModel = new GoodsModel();
$goods = $goodsModel->getOneGoodsById($goodId);
if (is_null($goods)) {
return ['code'=>1,'msg'=>"æ°æ®é误"];
} else {
$goodsFile = new GoodsFile();
$goodsUrl = $goodsFile->getImgUrl($goodId);
$goods['goodsUrl'] = $goodsUrl;
return ['code'=>0,'data'=>$goods];
}
}
}
3ï¼model/Goods.php
<?php
declare (strict_types = 1);
namespace app\model;
use think\facade\Db;
use think\Model;
/**
* @mixin \think\Model
*/
class Goods extends Model
{
//ç±»åä¸è¡¨åä¸ä¸è´æ¶å¨è¿éæå®æ°æ®è¡¨å
protected $table = "goods";
public function getOneGoodsById($goodsId){
//æ¥è¯¢ä¸æ¡è®°å½æ¶ç¨findæ¹æ³
$result = Db::table("goods")->where("goodsId",$goodsId)->find();
return $result;
}
}
4,validate/Goods/Detail.php
<?php
declare (strict_types = 1);
namespace app\validate\Goods;
use think\Validate;
class Detail extends Validate
{
/**
* å®ä¹éªè¯è§å
* æ ¼å¼ï¼'åæ®µå' => ['è§å1','è§å2'...]
*
* @var array
*/
protected $rule = [
'goodsid' => 'require|integer|gt:0',
];
/**
* å®ä¹é误信æ¯
* æ ¼å¼ï¼'åæ®µå.è§åå' => 'é误信æ¯'
*
* @var array
*/
protected $message = [
'goodsid.require' => 'ååidå¿
é¡»',
'goodsid.integer' => 'ååidéè¦æ¯æ´æ°',
'goodsid.gt' => 'ååidé大äº0',
];
}
5,file/Goods.php
<?php
namespace app\file;
use \think\facade\Config as GConfig;
class Goods {
public function getImgUrl($goodsId) {
//$images = GConfig::get('images');
$host = GConfig::get('images.goodsImageHost');
$subDir = $goodsId - ($goodsId % 1000);
$imgUrl = $host."/".$subDir."/".$goodsId.".jpg";
return $imgUrl;
}
}
6,result/Result.php
<?php
namespace app\result;
use think\response\Json;
class Result {
//success
static public function Success($data):Json {
$rs = [
'code'=>0,
'msg'=>"success",
'data'=>$data,
];
return json($rs);
}
//error
static public function Error($code,$msg):Json {
$rs = [
'code'=>$code,
'msg'=>$msg,
'data'=>"",
];
return json($rs);
}
}
7,config/images.php
<?php
return [
"goodsImageDir"=>env('goodsimage.goods_image_dir' ),
"goodsImageHost"=>env('goodsimage.goods_image_host'),
];
åï¼æµè¯ææ
1,访é®åå¨çæ°æ®:
http://192.168.219.6:8000/goods/detail?goodsid=12323
è¿å:

2,访é®ä¸åå¨çæ°æ®:
http://192.168.219.6:8000/goods/detail?goodsid=12324
3,åæ°ä¸è§è:
http://192.168.219.6:8000/goods/detail
äºï¼åçphpåthinkphpççæ¬:
php:
liuhongdi@lhdpc:/data/php/admapi$ php --version
PHP 8.1.1 (cli) (built: Dec 20 2021 16:12:16) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.1, Copyright (c) Zend Technologies
with Zend OPcache v8.1.1, Copyright (c), by Zend TechnologiesÂ
thinkphp:
liuhongdi@lhdpc:/var/www/html$ cd /data/php/admapi/
liuhongdi@lhdpc:/data/php/admapi$ php think version
v6.0.10LTS
Â