admin/app/branch/model/activity/Activity.php
@@ -3,6 +3,7 @@
namespace app\branch\model\activity;
use app\common\model\branch\Activity as ActivityModel;
use app\common\model\branch\ActivityProductPrice as ActivityProductPriceModel;
/**
 * 活动模型
@@ -23,12 +24,60 @@
    }
    /**
     * 获取审核列表(审核所有活动)
     */
    public function getAuditList($params)
    {
        $model = $this->with(['image', 'category', 'branch'])
            ->where('is_delete', '=', 0);
        // 按审核状态筛选
        if (isset($params['audit_status']) && $params['audit_status'] !== '') {
            $model = $model->where('audit_status', '=', $params['audit_status']);
        }
        return $model->order(['sort' => 'desc', 'create_time' => 'desc'])
            ->paginate($params);
    }
    /**
     * 审核活动
     */
    public function audit($activity_id, $data)
    {
        $model = ActivityModel::detail($activity_id);
        if (!$model) {
            $this->error = '活动不存在';
            return false;
        }
        $updateData = [
            'audit_status' => $data['audit_status'],
            'audit_time' => time(),
            'audit_remark' => $data['audit_remark'] ?? ''
        ];
        return $model->save($updateData);
    }
    /**
     * 新增记录
     */
    public function add($data, $branch_id)
    {
        $model = new ActivityModel();
        if ($data['is_visit'] == 1) {
            $visitCheck = $this->checkVisitLimit($data['visit_supplier_id'], $data['visit_supplier_name']);
            if ($visitCheck) {
                $this->error = '该企业30天内已被走访,还需等待' . $visitCheck['remaining_days'] . '天才可以重新走访';
                return false;
            }
        }
        $product = new ActivityProductPriceModel();
        $data['app_id'] = self::$app_id;
        $data['branch_id'] = $branch_id;
        // 默认审核状态为待审核
        $data['audit_status'] = 0;
        //报名时间
        $data['register_start_time'] = strtotime($data['reg_date'][0]);
        $data['register_end_time'] = strtotime($data['reg_date'][1]);
@@ -39,7 +88,39 @@
        $coordinate = explode(',', $data['coordinate']);
        $data['latitude'] = $coordinate[0];
        $data['longitude'] = $coordinate[1];
        return $this->save($data);
        $product_list = $data['product_list']; // 促销商品
        $model->startTrans();
        try {
            $res = $model->save($data);
            if(!$res){
                $this->rollback();
                $this->error = '活动数据保存出错';
                return false;
            }
            if ($product_list) {
                $activity_id = $model->activity_id;
                foreach ($product_list as &$item){
                    $item['app_id'] = $data['app_id'];
                    $item['shop_supplier_id'] = $data['visit_supplier_id'];
                    $item['activity_id'] = $activity_id;
                }
                unset($item);
                $res1 = $product->saveAll($product_list);
                if(!$res1){
                    $this->rollback();
                    $this->error = '促销商品保存出错';
                    return false;
                }
            }
            // 提交事务
            $this->commit();
           return true;
        } catch (\Exception $e) {
            // 回滚事务
            $this->rollback();
            $this->error = $e->getMessage();
           return false;
        }
    }
    /**
@@ -47,6 +128,17 @@
     */
    public function edit($data)
    {
        $model = new ActivityModel();
        $product = new ActivityProductPriceModel();
        // 检查走访企业30天限制(编辑时排除当前活动)
        if (!empty($data['visit_supplier_id']) && $data['is_visit'] == 1) {
            $visitCheck = $model->checkVisitLimit($data['visit_supplier_id'], $data['visit_supplier_name'], $data['activity_id']);
            if ($visitCheck) {
                $this->error = '该企业30天内已被走访,还需等待' . $visitCheck['remaining_days'] . '天才可以重新走访';
                return false;
            }
        }
        //报名时间
        $data['register_start_time'] = strtotime($data['reg_date'][0]);
        $data['register_end_time'] = strtotime($data['reg_date'][1]);
@@ -57,7 +149,42 @@
        $coordinate = explode(',', $data['coordinate']);
        $data['latitude'] = $coordinate[0];
        $data['longitude'] = $coordinate[1];
        return $this->save($data);
        $product_list = $data['product_list']; // 促销商品
        unset($data['create_time'], $data['update_time']);
        $model->startTrans();
        try {
            $res = $model->update($data, ['activity_id' => $data['activity_id']]);
            if(!$res){
                $this->rollback();
                $this->error = '活动数据保存出错';
                return false;
            }
            // 先软删除原有的促销商品
            $product->where('activity_id', '=', $data['activity_id'])->update(['is_delete' => 1]);
            if ($product_list) {
                foreach ($product_list as $key => &$item){
                    $item['app_id'] = $data['app_id'];
                    $item['shop_supplier_id'] = $data['visit_supplier_id'];
                    $item['activity_id'] = $data['activity_id'];
                    $item['is_delete'] = 0;
                }
                unset($item);
                $res1 = $product->saveAll($product_list);
                if(!$res1){
                    $this->rollback();
                    $this->error = '商品数据保存出错';
                    return false;
                }
            }
            // 提交事务
            $this->commit();
           return true;
        } catch (\Exception $e) {
            // 回滚事务
            $this->rollback();
            $this->error = $e->getMessage();
           return false;
        }
    }
    /**