quanwei
2025-12-05 feda780069d64479c0c20493603717e100655da9
admin/app/common/model/user/User.php
@@ -3,12 +3,16 @@
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 think\facade\Db; // by lyzflash
use app\common\model\plus\bonus\User as BonusUserModel;
/**
 * 用户模型
 */
@@ -249,4 +253,91 @@
        }
        return true;
    }
    public static function getUserByIds($ids, $field = '')
    {
        $ids = is_array($ids) ?: explode(',', $ids);
        $model = new static;
        if ($field) {
            $model = $model->field($field);
        }
        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>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'])) {
                // 获取商品数量
                $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();
    }
}