quanwei
2025-11-01 121b714d710cf3c865f4a1b5efe81abec11056d1
admin/app/shop/controller/plus/business/Business.php
@@ -3,6 +3,10 @@
namespace app\shop\controller\plus\business;
use app\shop\controller\Controller;
use app\shop\model\plus\business\Business as BusinessModel;
use app\common\service\business\Poster;
use app\shop\model\plus\business\Template as TemplateModel;
use app\common\model\settings\Region as RegionModel;
/**
 * 名片管理
 */
@@ -10,16 +14,143 @@
{
    public function  index(){
        $list=(new BusinessModel)->getList(request()->request());
        return  $this->renderSuccess('',compact('list'));
            // 获取所有地区
            $regionData = RegionModel::getCacheTree();
        $data = [
            'list' => $list,
            'regionData' => $regionData
        ];
        return  $this->renderSuccess('', $data);
    }
    /**
     * 添加名片
     */
    public function add(){
        $param = request()->param();
        $param = $param['business'];
        // 处理数组字段
        $this->processArrayFields($param);
        // 设置默认值
        $param['app_id'] = (new BusinessModel())::$app_id;
        // 如果该用户还没有默认名片,则设置为默认
        if (!empty($param['user_id']) && !(new BusinessModel())->where(['user_id' => $param['user_id'], 'is_default' => 1])->find()) {
            $param['is_default'] = 1;
        }
        $param['position']=$param['unit'];
        // 如果没有指定模板,则使用默认模板
        if (empty($param['template_id'])) {
            $defaultTemplate = (new TemplateModel())->where(['is_default' => 1])->find();
            $param['template_id'] = $defaultTemplate ? $defaultTemplate['template_id'] : 0;
        }
        $model = new BusinessModel();
        if ($model->save($param)) {
            return $this->renderSuccess('添加成功');
        }
        return $this->renderError('添加失败');
    }
    /**
     * 编辑名片
     */
    public function edit(){
        $param=request()->param();$param=$param['business'];
        $model=(new BusinessModel())->get($param['business_card_id']);
        if($model->add($param)){
        $param = request()->param();
        $param = $param['business'];
        // 处理数组字段
        $this->processArrayFields($param);
        // 查找要编辑的名片
        $model = (new BusinessModel())->where('business_card_id',$param['business_card_id'])->find();
        if (!$model) {
            return $this->renderError('名片不存在');
        }
        $param['position']=$param['unit'];
        // 删除旧的海报图片
        $Qrcode = new Poster($model->toArray());
        $image = $Qrcode->getPosterPath('business');
        if (file_exists($image)) {
            unlink($image);
        }
        $image = $Qrcode->getPosterPath('desensitization');
        if (file_exists($image)) {
            unlink($image);
        }
        unset($param['sex']);
        // 更新数据
        if ($model->save($param)) {
            return $this->renderSuccess('编辑成功');
        }
        return $this->renderError('编辑失败');
    }
    /**
     * 处理数组字段
     */
    private function processArrayFields(&$param) {
        // 处理单位字段
        if (isset($param['unit'])) {
            if (is_array($param['unit'])) {
                $param['unit'] = json_encode($param['unit'], JSON_UNESCAPED_UNICODE);
            } else if (is_string($param['unit']) && !empty($param['unit'])) {
                // 如果是字符串,按逗号分割成数组
                $units = explode(',', $param['unit']);
                $units = array_map('trim', $units);
                $param['unit'] = json_encode($units, JSON_UNESCAPED_UNICODE);
            } else {
                $param['unit'] = json_encode([], JSON_UNESCAPED_UNICODE);
            }
        }
        // 处理职务字段
        if (isset($param['duties'])) {
            if (is_array($param['duties'])) {
                $param['duties'] = json_encode($param['duties'], JSON_UNESCAPED_UNICODE);
            } else if (is_string($param['duties']) && !empty($param['duties'])) {
                // 如果是字符串,按逗号分割成数组
                $duties = explode(',', $param['duties']);
                $duties = array_map('trim', $duties);
                $param['duties'] = json_encode($duties, JSON_UNESCAPED_UNICODE);
            } else {
                $param['duties'] = json_encode([], JSON_UNESCAPED_UNICODE);
            }
        }
        // 处理地址字段
        if (isset($param['address'])) {
            if (is_array($param['address'])) {
                $param['address'] = json_encode($param['address'], JSON_UNESCAPED_UNICODE);
            } else if (is_string($param['address']) && !empty($param['address'])) {
                // 如果是字符串,按逗号分割成数组
                $addresses = explode(',', $param['address']);
                $addresses = array_map('trim', $addresses);
                $param['address'] = json_encode($addresses, JSON_UNESCAPED_UNICODE);
            } else {
                $param['address'] = json_encode([], JSON_UNESCAPED_UNICODE);
            }
        }
        // 处理职位字段
        if (isset($param['position'])) {
            if (is_array($param['position'])) {
                $param['position'] = json_encode($param['position'], JSON_UNESCAPED_UNICODE);
            } else if (is_string($param['position']) && !empty($param['position'])) {
                // 如果是字符串,按逗号分割成数组
                $positions = explode(',', $param['position']);
                $positions = array_map('trim', $positions);
                $param['position'] = json_encode($positions, JSON_UNESCAPED_UNICODE);
            } else {
                // 默认使用职务信息作为职位信息
                $param['position'] = $param['duties'] ?? json_encode([], JSON_UNESCAPED_UNICODE);
            }
        }
    }
    public function delete(){
        $param=request()->param();
        if((new BusinessModel())->where('business_card_id',$param['business_card_id'])->delete()){
@@ -27,4 +158,25 @@
        }
        return $this->renderError('删除失败');
    }
    /**
     * 获取名片详情
     */
    public function detail($business_card_id) {
        $data = BusinessModel::detail($business_card_id);
        if ($data) {
            $Qrcode = new Poster($data, 'business');
            $data['mp'] = $Qrcode->getImage();
            return $this->renderSuccess('', $data);
        }
        return $this->renderError('名片不存在');
    }
    /**
     * 获取模板列表
     */
    public function getTemplateList() {
        $list = (new TemplateModel())->getList();
        return $this->renderSuccess('', compact('list'));
    }
}