初始版本

This commit is contained in:
贾祥聪
2025-08-19 14:16:51 +08:00
commit f937a1f9b9
4373 changed files with 359728 additions and 0 deletions

View File

@@ -0,0 +1,214 @@
<?php
// +----------------------------------------------------------------------
// | likeshop开源商城系统
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | gitee下载https://gitee.com/likeshop_gitee
// | github下载https://github.com/likeshop-github
// | 访问官网https://www.likeshop.cn
// | 访问社区https://home.likeshop.cn
// | 访问手册http://doc.likeshop.cn
// | 微信公众号likeshop技术社区
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用未经许可不能去除前后端官方版权标识
// | likeshop系列产品收费版本务必购买商业授权购买去版权授权后方可去除前后端官方版权标识
// | 禁止对系统程序代码以任何目的,任何形式的再发布
// | likeshop团队版权所有并拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeshop.cn.team
// +----------------------------------------------------------------------
namespace app\common\model\goods;
use app\common\enum\GoodsEnum;
use app\common\model\BaseModel;
use app\common\model\skill\Skill;
use think\model\concern\SoftDelete;
class Goods extends BaseModel
{
use SoftDelete;
protected $deleteTime = 'delete_time';
/**
* @notes 关联服务轮播图
* @return \think\model\relation\HasMany
* @author ljj
* @date 2022/2/9 3:37 下午
*/
public function goodsImage()
{
return $this->hasMany(GoodsImage::class, 'goods_id', 'id');
}
/**
* @notes 关联服务评价模型
* @return \think\model\relation\HasMany
* @author ljj
* @date 2022/2/17 6:15 下午
*/
public function goodsComment()
{
return $this->hasMany(GoodsComment::class, 'goods_id', 'id')->append(['goods_comment_image', 'user']);
}
public function goodsCity()
{
return $this->hasMany(GoodsCityIndex::class,'goods_id','id');
}
/**
* @notes 获取分类名称
* @param $value
* @param $data
* @return mixed|string
* @author ljj
* @date 2022/2/9 11:15 上午
*/
public function getCategoryDescAttr($value, $data)
{
$category_arr = (new GoodsCategory())->column('name,pid', 'id');
$category_name = '未知';
$category_first = $category_arr[$data['category_id']] ?? [];
if ($category_first) {
$category_name = $category_first['name'];
$category_second = $category_arr[$category_first['pid']] ?? [];
if ($category_second) {
$category_name = $category_second['name'] . '/' . $category_name;
$category_third = $category_arr[$category_second['pid']] ?? [];
if ($category_third) {
$category_name = $category_third['name'] . '/' . $category_name;
}
}
}
return $category_name;
}
/**
* @notes 获取状态
* @param $value
* @param $data
* @return string|string[]
* @author ljj
* @date 2022/2/9 11:22 上午
*/
public function getStatusDescAttr($value, $data)
{
return GoodsEnum::getShowDesc($data['status']);
}
/**
* @notes 分类搜索器
* @param $query
* @param $value
* @param $data
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @author ljj
* @date 2022/2/17 5:11 下午
*/
public function searchCategoryIdAttr($query, $value, $data)
{
if ($value) {
$goodsCategory = GoodsCategory::find($value);
$level = $goodsCategory['level'] ?? '';
$categoryIds = [];
switch ($level) {
case 1:
$categoryIds = GoodsCategory::where(['pid' => $value])
->column('id');
Array_push($categoryIds, $value);
break;
case 2:
$categoryIds = [$value];
break;
}
$goodsIds = Goods::where(['category_id' => $categoryIds])->column('id');
$query->where('id', 'in', $goodsIds);
}
}
public function getSkillDescAttr($value,$data){
$skillLists = Skill::alias('S')
->join('goods_skill_index GSI','S.id = GSI.skill_id')
->where(['GSI.goods_id'=>$data['id']])
->column('name');
if($skillLists){
return implode('、',$skillLists);
}
return '';
}
/**
* @notes 关键词搜索器
* @param $query
* @param $value
* @param $data
* @author ljj
* @date 2022/2/17 5:16 下午
*/
public function searchKeywordAttr($query, $value, $data)
{
if ($value) {
$query->where('name', 'like', '%' . $value . '%');
}
}
/**
* @notes 城市搜索
* @param $query
* @param $value
* @param $data
* @author ljj
* @date 2022/2/17 5:16 下午
*/
public function searchCityIdAttr($query, $value, $data)
{
$allCityGoodsIds = Goods::alias('G')
->leftjoin('goods_city_index GCI','G.id = GCI.goods_id')
->where(['GCI.id '=>null,'status'=>1])
->column('G.id');
$cityGoodsIds = Goods::alias('G')
->leftjoin('goods_city_index GCI','G.id = GCI.goods_id')
->where(['status'=>1,'city_id'=>$value])
->column('G.id');
$goodsIds = array_merge($allCityGoodsIds,$cityGoodsIds);
empty($goodsIds) && $goodsIds = [];
$query->where('id', 'in',implode(',',$goodsIds));
}
/**
* @notes 技能搜索
* @param $query
* @param $value
* @param $data
* @return void
* @author cjhao
* @date 2024/8/19 16:52
*/
public function searchSkillIdAttr($query, $value, $data)
{
if ($value) {
$goodsId = GoodsSkillIndex::where(['skill_id'=>$value])->column('goods_id');
$query->where('id','in',$goodsId);
}
}
/**
* @notes 获取审核状态
* @param $value
* @param $data
* @return string|string[]
* @author cjhao
* @date 2024/8/21 17:48
*/
public function getAuditStatusDescAttr($value,$data){
return GoodsEnum::getAuditStatusDesc($data['audit_status']);
}
}

View File

@@ -0,0 +1,70 @@
<?php
// +----------------------------------------------------------------------
// | likeshop开源商城系统
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | gitee下载https://gitee.com/likeshop_gitee
// | github下载https://github.com/likeshop-github
// | 访问官网https://www.likeshop.cn
// | 访问社区https://home.likeshop.cn
// | 访问手册http://doc.likeshop.cn
// | 微信公众号likeshop技术社区
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用未经许可不能去除前后端官方版权标识
// | likeshop系列产品收费版本务必购买商业授权购买去版权授权后方可去除前后端官方版权标识
// | 禁止对系统程序代码以任何目的,任何形式的再发布
// | likeshop团队版权所有并拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeshop.cn.team
// +----------------------------------------------------------------------
namespace app\common\model\goods;
use app\common\enum\DefaultEnum;
use app\common\model\BaseModel;
use think\model\concern\SoftDelete;
class GoodsCategory extends BaseModel
{
use SoftDelete;
protected $deleteTime = 'delete_time';
public function son()
{
return $this->hasMany(self::class,'pid','id')->field('id,name,pid');
}
public function goods()
{
return $this->hasMany(Goods::class,'category_id');
}
/**
* @notes 首页显示状态
* @param $value
* @param $data
* @return string|string[]
* @author ljj
* @date 2022/2/8 3:58 下午
*/
public function getRecommendDescAttr($value,$data)
{
return DefaultEnum::getRecommendDesc($data['is_recommend']);
}
/**
* @notes 关联项目数量
* @param $value
* @param $data
* @return int
* @author ljj
* @date 2023/4/12 10:18 上午
*/
public function getRelevanceNumAttr($value,$data)
{
$category_ids = GoodsCategory::where(['pid'=>$data['id']])->column('id');
$category_ids[] = $data['id'];
$num = Goods::where(['category_id'=>$category_ids])->count('id');
return $num;
}
}

View File

@@ -0,0 +1,13 @@
<?php
namespace app\common\model\goods;
use app\common\model\BaseModel;
/**
* 服务城市关联模型类
* Class GoodsCityIndex
* @package app\common\model\city
*/
class GoodsCityIndex extends BaseModel
{
}

View File

@@ -0,0 +1,28 @@
<?php
// +----------------------------------------------------------------------
// | likeshop开源商城系统
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | gitee下载https://gitee.com/likeshop_gitee
// | github下载https://github.com/likeshop-github
// | 访问官网https://www.likeshop.cn
// | 访问社区https://home.likeshop.cn
// | 访问手册http://doc.likeshop.cn
// | 微信公众号likeshop技术社区
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用未经许可不能去除前后端官方版权标识
// | likeshop系列产品收费版本务必购买商业授权购买去版权授权后方可去除前后端官方版权标识
// | 禁止对系统程序代码以任何目的,任何形式的再发布
// | likeshop团队版权所有并拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeshop.cn.team
// +----------------------------------------------------------------------
namespace app\common\model\goods;
use app\common\model\BaseModel;
class GoodsCollect extends BaseModel
{
}

View File

@@ -0,0 +1,90 @@
<?php
// +----------------------------------------------------------------------
// | likeshop开源商城系统
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | gitee下载https://gitee.com/likeshop_gitee
// | github下载https://github.com/likeshop-github
// | 访问官网https://www.likeshop.cn
// | 访问社区https://home.likeshop.cn
// | 访问手册http://doc.likeshop.cn
// | 微信公众号likeshop技术社区
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用未经许可不能去除前后端官方版权标识
// | likeshop系列产品收费版本务必购买商业授权购买去版权授权后方可去除前后端官方版权标识
// | 禁止对系统程序代码以任何目的,任何形式的再发布
// | likeshop团队版权所有并拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeshop.cn.team
// +----------------------------------------------------------------------
namespace app\common\model\goods;
use app\common\enum\GoodsCommentEnum;
use app\common\model\BaseModel;
use app\common\model\user\User;
use think\model\concern\SoftDelete;
class GoodsComment extends BaseModel
{
use SoftDelete;
protected $deleteTime = 'delete_time';
/**
* @notes 关联评论图片模型
* @return \think\model\relation\HasMany
* @author ljj
* @date 2022/2/9 5:51 下午
*/
public function goodsCommentImage()
{
return $this->hasMany(GoodsCommentImage::class,'comment_id','id');
}
/**
* @notes 关联用户模型
* @return \think\model\relation\HasOne
* @author ljj
* @date 2022/2/17 6:19 下午
*/
public function user()
{
return $this->hasOne(User::class,'id','user_id')->field('id,sn,nickname,avatar,mobile');
}
/**
* @notes 获取回复状态
* @param $value
* @param $data
* @return string|string[]
* @author ljj
* @date 2022/2/9 5:54 下午
*/
public function getStatusDescAttr($value,$data)
{
return GoodsCommentEnum::getStatusDesc($data['status']);
}
/**
* @notes 获取评价等级
* @param $value
* @param $data
* @return string
* @author ljj
* @date 2022/2/9 5:56 下午
*/
public function getCommentLevelAttr($value,$data)
{
if ($data['service_comment'] < 3) {
return '差评';
}
if ($data['service_comment'] == 3) {
return '中评';
}
if ($data['service_comment'] > 3) {
return '好评';
}
return '未知';
}
}

View File

@@ -0,0 +1,53 @@
<?php
// +----------------------------------------------------------------------
// | likeshop开源商城系统
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | gitee下载https://gitee.com/likeshop_gitee
// | github下载https://github.com/likeshop-github
// | 访问官网https://www.likeshop.cn
// | 访问社区https://home.likeshop.cn
// | 访问手册http://doc.likeshop.cn
// | 微信公众号likeshop技术社区
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用未经许可不能去除前后端官方版权标识
// | likeshop系列产品收费版本务必购买商业授权购买去版权授权后方可去除前后端官方版权标识
// | 禁止对系统程序代码以任何目的,任何形式的再发布
// | likeshop团队版权所有并拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeshop.cn.team
// +----------------------------------------------------------------------
namespace app\common\model\goods;
use app\common\model\BaseModel;
use app\common\service\FileService;
class GoodsCommentImage extends BaseModel
{
/**
* @notes 补全图片路径
* @param $value
* @param $data
* @return string
* @author ljj
* @date 2022/2/18 2:47 下午
*/
public function getUriAttr($value,$data)
{
return FileService::getFileUrl($value);
}
/**
* @notes 补全图片路径
* @param $value
* @param $data
* @return string
* @author ljj
* @date 2022/2/18 2:47 下午
*/
public function setUriAttr($value,$data)
{
return FileService::setFileUrl($value);
}
}

View File

@@ -0,0 +1,40 @@
<?php
// +----------------------------------------------------------------------
// | likeshop开源商城系统
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | gitee下载https://gitee.com/likeshop_gitee
// | github下载https://github.com/likeshop-github
// | 访问官网https://www.likeshop.cn
// | 访问社区https://home.likeshop.cn
// | 访问手册http://doc.likeshop.cn
// | 微信公众号likeshop技术社区
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用未经许可不能去除前后端官方版权标识
// | likeshop系列产品收费版本务必购买商业授权购买去版权授权后方可去除前后端官方版权标识
// | 禁止对系统程序代码以任何目的,任何形式的再发布
// | likeshop团队版权所有并拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeshop.cn.team
// +----------------------------------------------------------------------
namespace app\common\model\goods;
use app\common\model\BaseModel;
use app\common\service\FileService;
class GoodsImage extends BaseModel
{
/**
* @notes 补全图片路径
* @param $value
* @param $data
* @return string
* @author ljj
* @date 2022/2/17 6:11 下午
*/
public function getUriAttr($value,$data)
{
return FileService::getFileUrl($value);
}
}

View File

@@ -0,0 +1,27 @@
<?php
// +----------------------------------------------------------------------
// | likeadmin快速开发前后端分离管理后台PHP版
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | 开源版本可自由商用可去除界面版权logo
// | gitee下载https://gitee.com/likeshop_gitee/likeadmin
// | github下载https://github.com/likeshop-github/likeadmin
// | 访问官网https://www.likeadmin.cn
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeadminTeam
// +----------------------------------------------------------------------
namespace app\common\model\goods;
use app\common\model\BaseModel;
/**
* 搜索记录模型类
* Class GoodsSearchLog
* @package app\common\model\goods
*/
class GoodsSearchLog extends BaseModel
{
}

View File

@@ -0,0 +1,28 @@
<?php
// +----------------------------------------------------------------------
// | likeshop开源商城系统
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | gitee下载https://gitee.com/likeshop_gitee
// | github下载https://github.com/likeshop-github
// | 访问官网https://www.likeshop.cn
// | 访问社区https://home.likeshop.cn
// | 访问手册http://doc.likeshop.cn
// | 微信公众号likeshop技术社区
// | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用未经许可不能去除前后端官方版权标识
// | likeshop系列产品收费版本务必购买商业授权购买去版权授权后方可去除前后端官方版权标识
// | 禁止对系统程序代码以任何目的,任何形式的再发布
// | likeshop团队版权所有并拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeshop.cn.team
// +----------------------------------------------------------------------
namespace app\common\model\goods;
use app\common\model\BaseModel;
class GoodsSkillIndex extends BaseModel
{
}