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/user/User.php | 142 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 141 insertions(+), 1 deletions(-)
diff --git a/admin/app/common/model/user/User.php b/admin/app/common/model/user/User.php
index e83649d..9d1b860 100644
--- a/admin/app/common/model/user/User.php
+++ b/admin/app/common/model/user/User.php
@@ -3,12 +3,18 @@
namespace app\common\model\user;
+use app\common\library\helper;
use app\common\model\BaseModel;
+use app\common\model\plus\bonus\Setting as bonusSettingModel;
+use app\common\model\user\Grade as GradeModel;
use app\common\model\user\PointsLog as PointsLogModel;
use app\common\model\supplier\User as SupplierUserModel;
use app\common\model\store\Clerk as StoreClerkModel;
+use app\common\model\user\User as UserModel;
+use app\common\model\settings\Setting as SettingModel;
use think\facade\Db; // by lyzflash
-
+use app\common\model\plus\bonus\User as BonusUserModel;
+use app\common\model\user\ConsumptionLog as ConsumptionLogModel;
/**
* 用户模型
*/
@@ -16,6 +22,15 @@
{
protected $pk = 'user_id';
protected $name = 'user';
+
+ public static function getOperatingSubsidy($referee_id, $setting)
+ {
+ $count=self::where('referee_id',$referee_id)->where('grade_id','in',$setting['referee_grade_ids'])->count();
+ if ($count>=$setting['referee_grade_count']){
+ return true;
+ }
+ return false;
+ }
/**
* 修改器
@@ -151,6 +166,20 @@
}
return true;
}
+ /**
+ * 累积用户的可用消费券数量 (批量)
+ */
+ public function onBatchIncConsumption($data)
+ {
+ foreach ($data as $userId => $expendPoints) {
+ $this->where(['user_id' => $userId])
+ ->inc('consumer_coupon', $expendPoints)
+ ->inc('total_expend_money', $expendPoints)
+ ->update();
+ event('UserGrade', $this['user_id']);
+ }
+ return true;
+ }
/**
* 累积用户的可用积分
@@ -170,6 +199,31 @@
// 用户总积分
if ($points > 0) {
$data['total_points'] = $this['total_points'] + $points;
+ }
+ $this->where('user_id', '=', $this['user_id'])->update($data);
+ if($upgrade) {
+ event('UserGrade', $this['user_id']);
+ }
+ return true;
+ }
+ /**
+ * 累积用户的可用消费券
+ */
+ public function setIncConsumption($consumption, $describe, $decConsumption = 0, $upgrade = true)
+ {
+ // 新增消费券变动明细
+ ConsumptionLogModel::add([
+ 'user_id' => $this['user_id'],
+ 'value' => $consumption,
+ 'describe' => $describe,
+ 'app_id' => $this['app_id'],
+ ]);
+
+ // 更新用户可用消费券
+ $data['consumer_coupon'] = ($this['consumer_coupon'] + $consumption + $decConsumption <= 0) ? 0 : $this['consumer_coupon'] + $consumption + $decConsumption;
+ // 用户总消费券
+ if ($consumption > 0) {
+ $data['total_expend_money'] = $this['total_expend_money'] + $consumption;
}
$this->where('user_id', '=', $this['user_id'])->update($data);
if($upgrade) {
@@ -259,4 +313,90 @@
}
return $model->where('user_id', 'in', $ids)->select();
}
+
+ /**
+ * 购买商品成功:累积购买商品次数
+ */
+ public static function setRepurchaseFrequency($user_id)
+ {
+ $user= self::detail($user_id);
+ $purchase_count=$user['purchase_count']+1;
+ if ($purchase_count==1&&$user['referee_id']){
+ $referee= self::detail($user['referee_id']);
+ if ($referee){
+ $settingConsumption=SettingModel::getItem('consumption');
+ if ($settingConsumption['give_away']){
+ $referee->setIncConsumption($settingConsumption['give_away'], '直推首单礼包');
+ }
+ }
+ }
+ /*if ($purchase_count>11){
+ return false;
+ }*/
+ self::where('user_id',$user_id)->update([
+ 'purchase_count'=>$purchase_count
+ ]);
+ // 用户等级
+ event('UserGrade', $user_id);
+ $bonusUser=BonusUserModel::detail($user_id);
+ if ($bonusUser){
+ return BonusUserModel::detail($user_id)->save([
+ 'purchase_count'=>$purchase_count
+ ]);
+ }
+ return true;
+ }
+ /**
+ * 取消订单:减少累积购买商品次数
+ */
+ public static function decreasePurchaseCount($user_id,$product,$app_id)
+ {
+ // 验证是否设置
+ $config = bonusSettingModel::getItem('basic', $app_id);
+ if (empty($config['become__buy_product_ids'])) {
+ return false;
+ }
+ // 整理商品id集
+ $productIds = helper::getArrayColumn($product, 'product_id');
+ // 判断商品是否在设置范围内
+ $intersect = array_intersect($productIds, $config['become__buy_product_ids']);
+ if (empty($intersect)) {
+ return false;
+ }
+ $quantity=0;
+ foreach ($product as $item){
+ // 检查商品是否是指定的分红商品
+ if (in_array($item['product_id'], $config['become__buy_product_ids'])||$item['is_vip']==1) {
+ // 获取商品数量
+ $quantity+= $item['total_num'];
+ }
+ }
+ $user= self::detail($user_id);
+ $purchase_count=$user['purchase_count']-$quantity;
+ if ($purchase_count<0){
+ $purchase_count=0;
+ }
+ $grade=(new GradeModel())->where('purchase_count','<=',$purchase_count)->order('purchase_count','desc')->find();
+ self::where('user_id',$user_id)->update([
+ 'purchase_count'=>$purchase_count,
+ 'grade_id'=>$grade['grade_id']
+ ]);
+ // 用户等级
+ event('UserGrade', $user_id);
+ $bonusUser=BonusUserModel::detail($user_id);
+ if ($bonusUser){
+ return BonusUserModel::detail($user_id)->save([
+ 'purchase_count'=>$purchase_count
+ ]);
+ }
+ return true;
+ }
+ /**
+ * 获取指定等级推荐人数量
+ */
+ public function getRefereeGradeCount($user_id,$referee_grade_ids)
+ {
+ return $this->where('referee_id', 'in', $user_id)->where('grade_id', 'in', $referee_grade_ids)->count();
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.2