admin/app/common/model/branch/Activity.php
@@ -20,6 +20,7 @@
        'register_time_text',
        'activity_time_text',
        'status_text',
        'audit_status_text',
    ];
    /**
@@ -146,6 +147,22 @@
    }
    /**
     * 审核状态文本
     * @param $value
     * @param $data
     * @return string
     */
    public function getAuditStatusTextAttr($value, $data)
    {
        $status = isset($data['audit_status']) ? $data['audit_status'] : 0;
        $text = [0=>'待审核',10=> '已通过', 20=> '已驳回'];
        return [
            'status' => $status,
            'text' => $text[$status] ?? '待审核'
        ];
    }
    /**
     * 活动详情
     */
    public static function detail($activity_id)
@@ -174,9 +191,10 @@
     * @param $data
     * @return bool
     */
    public function onBatchUpdate($activityIds, $data)
    public static function onBatchUpdate($activityIds, $data)
    {
        return $this->where('activity_id', 'in', $activityIds)->save($data);
        $model = new static();
        return $model->where('activity_id', 'in', $activityIds)->save($data);
    }
    /**
@@ -219,4 +237,46 @@
            ->limit($limit)
            ->select();
    }
    /**
     * 检查走访企业30天内是否已被走访
     * @param int $visit_supplier_id 被走访企业ID
     * @param int $visit_supplier_name 被走访企业名称
     * @param int $exclude_activity_id 排除的活动ID(编辑时使用)
     * @return array|bool 返回剩余天数或false
     */
    public function checkVisitLimit($visit_supplier_id, $visit_supplier_name, $exclude_activity_id = 0)
    {
        // 查询30天内该分会是否走访过该企业
        $thirtyDaysAgo = time() - (30 * 24 * 3600);
        $query = $this
            ->where('is_delete', '=', 0)
            ->where('create_time', '>', $thirtyDaysAgo);
        if ($visit_supplier_id!=0){
            $query = $query->where('visit_supplier_id', '=', $visit_supplier_id);
        }elseif ($visit_supplier_name!=''){
            $query = $query->where('visit_supplier_name', '=', $visit_supplier_name);
        }
        // 如果是编辑操作,排除当前活动
        if ($exclude_activity_id > 0) {
            $query =  $query->where('activity_id', '<>', $exclude_activity_id);
        }
        $recentVisit = $query->order('create_time', 'desc')->find();
        if ($recentVisit) {
            // 计算剩余天数
            $daysSinceVisit = floor((time() - strtotime($recentVisit['create_time'])) / (24 * 3600));
            $remainingDays = 30 - $daysSinceVisit;
            return [
                'visited' => true,
                'remaining_days' => max(0, $remainingDays),
                'last_visit_time' => $recentVisit['create_time'],
                'activity_id' => $recentVisit['activity_id']
            ];
        }
        return false;
    }
}