From abc7edc3c8ad59ff213c85413d0d6a10d7a0b6f7 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Wed, 17 Dec 2025 18:03:09 +0800
Subject: [PATCH] 1. 发布供需消耗连盟币,连盟币数量在后台独立设置 2. 小程序供需个人中心可自由切换身份 3. 增加私信系统 4. 增加评论系统,用户可在发布者详情页进行评论操作,评论获得的连盟币可在后台设置 5. 增加发布者的等级,以好评个数为条件进行升级,小程序端会显示该等级的图标,如没有等级则不会显示图标 6. 增加设置消耗连盟币可以解锁、查看发布的信息,费用可在后台设置 7. 小程序供需大厅界面优化,以及增加了推荐栏目,该栏目按发布的分类相似进行匹配,比如A用户发布了 互联网 分类的需求,则会优先推荐匹配互联网分类的供应需求给他。
---
admin/app/common/model/plus/business/Business.php | 118 ++++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 84 insertions(+), 34 deletions(-)
diff --git a/admin/app/common/model/plus/business/Business.php b/admin/app/common/model/plus/business/Business.php
index 943052b..67c2145 100644
--- a/admin/app/common/model/plus/business/Business.php
+++ b/admin/app/common/model/plus/business/Business.php
@@ -1,6 +1,7 @@
<?php
namespace app\common\model\plus\business;
+
use app\common\model\BaseModel;
use app\common\model\settings\Region;
@@ -9,7 +10,7 @@
*/
class Business extends BaseModel
{
- protected $name='business_card';
+ protected $name = 'business_card';
/**
* 追加字段
* @var string[]
@@ -30,60 +31,88 @@
'region' => $data['region_id'] == 0 ? '' : Region::getNameById($data['region_id']),
];
}
- public function getSexAttr($value){
- $data=[10=>'未知',20=>'男',30=>'女'];
+
+ public function getSexAttr($value)
+ {
+ $data = [10 => '未知', 20 => '男', 30 => '女'];
return $data[$value];
}
+
/**
* 关联用户
* @return \think\model\relation\HasOne
*/
- public function user(){
- $model=self::getCalledModule()?:'common';
- return $this->hasOne("app\\$model\\model\\user\\User",'user_id','user_id');
+ public function user()
+ {
+ $model = self::getCalledModule() ?: 'common';
+ return $this->hasOne("app\\$model\\model\\user\\User", 'user_id', 'user_id');
}
/**
* 头像
* @return \think\model\relation\HasOne
*/
- public function image(){
- $model=self::getCalledModule()?:'common';
- return $this->hasOne("app\\$model\\model\\file\\UploadFile",'file_id','file_id')->bind(['file_path']);
+ public function image()
+ {
+ $model = self::getCalledModule() ?: 'common';
+ return $this->hasOne("app\\$model\\model\\file\\UploadFile", 'file_id', 'file_id')->bind(['file_path']);
}
+
/**
* logo
* @return \think\model\relation\HasOne
*/
- public function logoImage(){
- $model=self::getCalledModule()?:'common';
- return $this->hasOne("app\\$model\\model\\file\\UploadFile",'file_id','logo')->bind(['file_path']);
+ public function logoImage()
+ {
+ $model = self::getCalledModule() ?: 'common';
+ return $this->hasOne("app\\$model\\model\\file\\UploadFile", 'file_id', 'logo');
}
+
+ /**
+ * 等级
+ * @return \think\model\relation\HasOne
+ */
+ public function grade()
+ {
+ $model = self::getCalledModule() ?: 'common';
+ return $this->hasOne("app\\$model\\model\\plus\\business\\Grade", 'grade_id', 'grade_id');
+ }
+ public function industry()
+ {
+ $model = self::getCalledModule() ?: 'common';
+ return $this->hasOne("app\\$model\\model\\plus\\business\\Industry", 'industry_id', 'industry_id');
+ }
+
/**
* 添加
* @param $data
* @return false|int
*/
- public function add($data){
- $data['app_id']=self::$app_id;
- $data['grade_id']=(new Grade())->getDefaultGradeId();
+ public function add($data)
+ {
+ $data['app_id'] = self::$app_id;
+ $data['grade_id'] = (new Grade())->getDefaultGradeId();
return $this->save($data);
}
+
public function getUnitAttr($name)
{
return json_decode($name);
}
+
public function getDutiesAttr($name)
{
return json_decode($name);
}
+
public function getAddressAttr($name)
{
return json_decode($name);
}
+
public function getPositionAttr($name)
{
- return $name?json_decode($name):[];
+ return $name ? json_decode($name) : [];
}
/**
@@ -92,32 +121,53 @@
* @return \think\Paginator
* @throws \think\db\exception\DbException
*/
- public function getList($param=[]){
- $paramr=array_merge(['listRow'=>15],$param);
- $where=[];
- !empty($paramr['name'])&&$where['name']=['like','%'.$paramr['name'].'%'];
- !empty($paramr['search'])&&$where['name|duties|unit']=['like','%'.$paramr['search'].'%'];
- !empty($paramr['user_id'])&&$where['user_id']=$paramr['user_id'];
- if(!empty($paramr['sort'])){
- if($paramr['sort']=='name'){
- $order=['name'=>"asc"];
- }else if($paramr['sort']=='time'){
- $order=['create_time'=>"asc"];
- }else{
- $order=['unit'=>"asc"];
+ public function getList($param = [])
+ {
+ $paramr = array_merge(['listRow' => 15], $param);
+ $where = [];
+ !empty($paramr['name']) && $where['name'] = ['like', '%' . $paramr['name'] . '%'];
+ !empty($paramr['search']) && $where['name|duties|unit'] = ['like', '%' . $paramr['search'] . '%'];
+ !empty($paramr['user_id']) && $where['user_id'] = $paramr['user_id'];
+ !empty($paramr['industry_id']) && $where['industry_id'] = $paramr['industry_id'];
+ !empty($paramr['province_id']) && $where['province_id'] = $paramr['province_id'];
+ !empty($paramr['city_id']) && $where['city_id'] = $paramr['city_id'];
+ !empty($paramr['region_id']) && $where['region_id'] = $paramr['region_id'];
+ // 检查置顶时间是否过期,如果过期则设置为非置顶
+ $this->checkTopExpire();
+ if (!empty($paramr['sort'])) {
+ $order = ['is_top' => 'desc', 'top_time' => 'desc'];
+ if ($paramr['sort'] == 'name') {
+ $order['name'] = "asc";
+ } else if ($paramr['sort'] == 'time') {
+ $order['create_time'] = "asc";
+ } else {
+ $order['unit'] = "asc";
}
- }else{
- $order=['is_default'=>'desc','create_time'=>'desc'];
+ } else {
+ // 按置顶状态和创建时间排序
+ $order = ['is_top' => 'desc', 'top_time' => 'desc', 'create_time' => 'desc'];
}
- return $this->with(['user','image','logoImage'])->order($order)->where($where)->paginate($paramr);
+ return $this->with(['user', 'image', 'logoImage', 'grade'])->order($order)->where($where)->paginate($paramr);
}
+
+ /**
+ * 检查并更新过期的置顶名片
+ */
+ private function checkTopExpire()
+ {
+ $this->where('is_top', 1)
+ ->where('top_time', '<', time())
+ ->update(['is_top' => 0]);
+ }
+
/**
* 获取名片详情
* @param $business_card_id
* @return array|false|\think\Model|null
* @throws \think\db\exception\DbException
*/
- public function detail($business_card_id){
- return $this->with(['user','image','logoImage'])->where(['business_card_id'=>$business_card_id])->find();
+ public static function detail($business_card_id)
+ {
+ return (new self())->with(['user', 'image', 'logoImage', 'grade', 'industry'])->where(['business_card_id' => $business_card_id])->find();
}
}
\ No newline at end of file
--
Gitblit v1.9.2