moonsflyer 8 mēneši atpakaļ
vecāks
revīzija
217e55e2ee

+ 1 - 1
app/api/controller/ServiceController.php

@@ -29,7 +29,7 @@ use app\api\lists\service\ServiceLists;
 class ServiceController extends BaseApiController
 {
 
-    public array $notNeedLogin = ['getServiceList','getAreaList','getCateList'];
+    public array $notNeedLogin = ['getServiceList','getAreaList','getCateList','getServiceInfo'];
 
 
     /**

+ 97 - 0
app/api/controller/SupplyDemandInfoController.php

@@ -0,0 +1,97 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\api\controller;
+
+use app\api\validate\{ ServiceValidate, SupplyDemandValidate};
+use app\api\logic\ServiceLogic;
+use app\api\logic\SupplyDemandLogic;
+use app\api\lists\supply_demand\SupplyDemandLists;
+
+
+/**
+ *  供需发布管理
+ * Class LoginController
+ * @package app\api\controller
+ */
+class SupplyDemandInfoController extends BaseApiController
+{
+
+    public array $notNeedLogin = ['getSupplyDemandList','getSupplyDemandInfo'];
+
+
+    /**
+     * @notes 我的供需发布
+     * @return \think\response\Json
+     * @author 段誉
+     * @date 2022/9/7 15:38
+     */
+    public function supplyDemandRelease()
+    {
+        if($this->request->isPost()) {
+
+            $params = (new SupplyDemandValidate())->post()->goCheck('supplyDemandRelease');
+            $userId = $this->userId;
+            $params['user_id'] = $userId;
+            $result = SupplyDemandLogic::addSupplyDemand($params);
+            if (true === $result) {
+                switch ($params['type']){
+                    case 1 :
+                        $type_name = '供应';
+                        break;
+                    case 2 :
+                        $type_name = '需求';
+                        break ;
+                    default :
+                        $type_name = '';
+                        break;
+                }
+                return $this->success($type_name.'信息添加成功', [], 1, 1);
+            }
+
+
+        }else{
+            return $this->fail('请求方式错误');
+        }
+
+    }
+
+    /**
+     * @notes 供需列表
+     * @return \think\response\Json
+     * @author 段誉
+     * @date 2022/9/7 15:38
+     */
+    public function getSupplyDemandList()
+    {
+        return $this->dataLists(new SupplyDemandLists());
+    }
+
+    /**
+     * @notes 查询供需信息
+     * @return \think\response\Json
+     * @author 段誉
+     * @date 2022/9/7 15:38
+     */
+    public function getSupplyDemandInfo()
+    {
+
+        $params = (new SupplyDemandValidate())->get()->goCheck('info');
+        $result = SupplyDemandLogic::getInfo($params,$this->userId);
+        if ($result['code'] === false) {
+            return $this->fail(SupplyDemandLogic::getError());
+        }
+        return $this->data($result['data']);
+    }
+}

+ 109 - 0
app/api/lists/supply_demand/SupplyDemandLists.php

@@ -0,0 +1,109 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\api\lists\supply_demand;
+
+use app\api\lists\BaseApiDataLists;
+use app\common\enum\YesNoEnum;
+use app\common\lists\ListsSearchInterface;
+use app\common\model\agricultural_machinery\UserService;
+use app\common\model\supply_demand\SupplyDemandInfo;
+
+
+/**
+ * 供应列表
+ * Class ArticleLists
+ * @package app\api\lists\article
+ */
+class SupplyDemandLists extends BaseApiDataLists implements ListsSearchInterface
+{
+
+    /**
+     * @notes 搜索条件
+     * @return \string[][]
+     * @author 段誉
+     * @date 2022/9/16 18:54
+     */
+    public function setSearch(): array
+    {
+        return [
+            '%like%' => ['title','mobile','address'],
+            '=' => ['type']
+        ];
+    }
+
+
+    /**
+     * @notes 自定查询条件
+     * @return array
+     * @author 段誉
+     * @date 2022/10/25 16:53
+     */
+    public function queryWhere()
+    {
+        $where[] = ['status', '=', 2];
+//        $where[] = ['expiration_time', '>=', time()];
+//        if (!empty($this->params['cate_id'])) {
+//
+//            $where[] = ['cate_id', 'like', '%' . ',' .$this->params['cate_id'].',' . '%'];
+//        }
+//
+//        if (!empty($this->params['area_id'])) {
+//
+//            $where[] = ['area_id', 'like', '%' . ',' .$this->params['area_id'].',' . '%'];
+//        }
+
+        return $where;
+    }
+
+
+    /**
+     * @notes 获取供需列表
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @author 段誉
+     * @date 2022/9/16 18:55
+     */
+    public function lists(): array
+    {
+        $orderRaw = 'id desc';
+
+        $field = 'id,user_id,title,type,mobile,images,address,number,content,status,remark,create_time';
+        $result = SupplyDemandInfo::field($field)
+            ->where($this->queryWhere())
+            ->where($this->searchWhere)
+            ->orderRaw($orderRaw)
+            ->append(['type_desc','status_desc','images','user'])
+            ->limit($this->limitOffset, $this->limitLength)
+            ->select()->toArray();
+
+        return $result;
+    }
+
+
+    /**
+     * @notes 获取服务商数量
+     * @return int
+     * @author 段誉
+     * @date 2022/9/16 18:55
+     */
+    public function count(): int
+    {
+        return SupplyDemandInfo::where($this->searchWhere)
+            ->where($this->queryWhere())
+            ->count();
+    }
+}

+ 423 - 0
app/api/logic/SupplyDemandLogic.php

@@ -0,0 +1,423 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\api\logic;
+
+use app\common\cache\WebScanLoginCache;
+use app\common\logic\BaseLogic;
+use app\api\service\{ WechatUserService};
+use app\common\enum\{ PayEnum, user\UserTerminalEnum, YesNoEnum};
+use app\common\service\{
+    ConfigService,
+    FileService,
+    wechat\WeChatConfigService,
+    wechat\WeChatMnpService,
+    wechat\WeChatOaService,
+    wechat\WeChatRequestService
+};
+use app\common\model\agricultural_machinery\UserService;
+use app\common\model\agricultural_machinery\ServiceCategory;
+use app\common\model\ServiceCharge;
+use app\common\model\asset\AssetArea;
+use app\common\model\recharge\RechargeOrder;
+use app\common\model\supply_demand\SupplyDemandInfo;
+use app\common\model\user\{User, UserAuth};
+use think\facade\{Db};
+
+/**
+ * 供应逻辑
+ * Class LoginLogic
+ * @package app\api\logic
+ */
+class SupplyDemandLogic extends BaseLogic
+{
+
+    /**
+     * @notes 入驻
+     * @param array $params
+     * @return bool
+     * @author 段誉
+     * @date 2022/9/7 15:37
+     */
+    public static function addSupplyDemand(array $params)
+    {
+        try {
+            SupplyDemandInfo::create([
+                'user_id' => $params['user_id'],
+                'type' => $params['type'] ?? 1,
+                'title' => $params['title'],
+                'mobile' => $params['mobile'],
+                'content' =>$params['content'],
+                'images' => $params['images'],
+                'address' => $params['address'],
+                'number' => $params['number'],
+            ]);
+            return true;
+        } catch (\Exception $e) {
+            self::setError($e->getMessage());
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes
+     * @param $params
+     * @return array|false
+     * @author 段誉
+     * @date 2022/9/6 19:26
+     */
+    public static function getInfo($params,$user_id)
+    {
+        try {
+
+            $where = [];
+            $where[]=['id','=',$params['id']];
+
+            $supplyDemandInfo = SupplyDemandInfo::where($where) ->append(['type_desc','images','user'])->findOrEmpty()->toArray();
+
+            return ['code'=>true,'data'=>$supplyDemandInfo];
+        } catch (\Exception $e) {
+            self::setError($e->getMessage());
+            return ['code'=>false,'data'=>[]];
+        }
+    }
+
+
+    /**
+     * @notes 地址列表
+     * @author 段誉
+     * @date 2022/9/16 17:56
+     */
+    public static function getsAreaLists($get)
+    {
+         $where=[];
+         $where[]=['status','=',1];
+         if(isset($get['title'])){
+             $where[]=['title','like','%'.$get['title'].'%'];
+         }
+         $area_list = AssetArea::where($where)->field('id,title')->order('sort desc,id asc')->select()->toArray();
+
+        return $area_list;
+    }
+    /**
+     * @notes 地址列表
+     * @author 段誉
+     * @date 2022/9/16 17:56
+     */
+    public static function getsCateLists($get)
+    {
+        $where=[];
+        $where[]=['type','=',$get['type']];
+        $where[]=['status','=',1];
+        if(isset($get['name'])){
+            $where[]=['name','like','%'.$get['name'].'%'];
+        }
+        $cate_list = ServiceCategory::where($where)->field('id,name')->order('sort desc,id asc')->select()->toArray();
+
+        return $cate_list;
+    }
+
+    /**
+     * @notes 获取微信请求code的链接
+     * @param string $url
+     * @return string
+     * @author 段誉
+     * @date 2022/9/20 19:47
+     */
+    public static function codeUrl(string $url)
+    {
+        return (new WeChatOaService())->getCodeUrl($url);
+    }
+
+
+    /**
+     * @notes 公众号登录
+     * @param array $params
+     * @return array|false
+     * @throws \GuzzleHttp\Exception\GuzzleException
+     * @author 段誉
+     * @date 2022/9/20 19:47
+     */
+    public static function oaLogin(array $params)
+    {
+        Db::startTrans();
+        try {
+            //通过code获取微信 openid
+            $response = (new WeChatOaService())->getOaResByCode($params['code']);
+            $userServer = new WechatUserService($response, UserTerminalEnum::WECHAT_OA);
+            $userInfo = $userServer->getResopnseByUserInfo()->authUserLogin()->getUserInfo();
+
+            // 更新登录信息
+            self::updateLoginInfo($userInfo['id']);
+
+            Db::commit();
+            return $userInfo;
+
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::$error = $e->getMessage();
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 小程序-静默登录
+     * @param array $params
+     * @return array|false
+     * @author 段誉
+     * @date 2022/9/20 19:47
+     */
+    public static function silentLogin(array $params)
+    {
+        try {
+            //通过code获取微信 openid
+            $response = (new WeChatMnpService())->getMnpResByCode($params['code']);
+            $userServer = new WechatUserService($response, UserTerminalEnum::WECHAT_MMP);
+            $userInfo = $userServer->getResopnseByUserInfo('silent')->getUserInfo();
+
+            if (!empty($userInfo)) {
+                // 更新登录信息
+                self::updateLoginInfo($userInfo['id']);
+            }
+
+            return $userInfo;
+        } catch (\Exception  $e) {
+            self::$error = $e->getMessage();
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 小程序-授权登录
+     * @param array $params
+     * @return array|false
+     * @author 段誉
+     * @date 2022/9/20 19:47
+     */
+    public static function mnpLogin(array $params)
+    {
+        Db::startTrans();
+        try {
+            //通过code获取微信 openid
+            $response = (new WeChatMnpService())->getMnpResByCode($params['code']);
+            $userServer = new WechatUserService($response, UserTerminalEnum::WECHAT_MMP);
+            $userInfo = $userServer->getResopnseByUserInfo()->authUserLogin()->getUserInfo();
+
+            // 更新登录信息
+            self::updateLoginInfo($userInfo['id']);
+
+            Db::commit();
+            return $userInfo;
+        } catch (\Exception  $e) {
+            Db::rollback();
+            self::$error = $e->getMessage();
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 更新登录信息
+     * @param $userId
+     * @throws \Exception
+     * @author 段誉
+     * @date 2022/9/20 19:46
+     */
+    public static function updateLoginInfo($userId)
+    {
+        $user = User::findOrEmpty($userId);
+        if ($user->isEmpty()) {
+            throw new \Exception('用户不存在');
+        }
+
+        $time = time();
+        $user->login_time = $time;
+        $user->login_ip = request()->ip();
+        $user->update_time = $time;
+        $user->save();
+    }
+
+
+    /**
+     * @notes 小程序端绑定微信
+     * @param array $params
+     * @return bool
+     * @author 段誉
+     * @date 2022/9/20 19:46
+     */
+    public static function mnpAuthLogin(array $params)
+    {
+        try {
+            //通过code获取微信openid
+            $response = (new WeChatMnpService())->getMnpResByCode($params['code']);
+            $response['user_id'] = $params['user_id'];
+            $response['terminal'] = UserTerminalEnum::WECHAT_MMP;
+
+            return self::createAuth($response);
+
+        } catch (\Exception  $e) {
+            self::$error = $e->getMessage();
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 公众号端绑定微信
+     * @param array $params
+     * @return bool
+     * @throws \GuzzleHttp\Exception\GuzzleException
+     * @author 段誉
+     * @date 2022/9/16 10:43
+     */
+    public static function oaAuthLogin(array $params)
+    {
+        try {
+            //通过code获取微信openid
+            $response = (new WeChatOaService())->getOaResByCode($params['code']);
+            $response['user_id'] = $params['user_id'];
+            $response['terminal'] = UserTerminalEnum::WECHAT_OA;
+
+            return self::createAuth($response);
+
+        } catch (\Exception  $e) {
+            self::$error = $e->getMessage();
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 生成授权记录
+     * @param $response
+     * @return bool
+     * @throws \Exception
+     * @author 段誉
+     * @date 2022/9/16 10:43
+     */
+    public static function createAuth($response)
+    {
+        //先检查openid是否有记录
+        $isAuth = UserAuth::where('openid', '=', $response['openid'])->findOrEmpty();
+        if (!$isAuth->isEmpty()) {
+            throw new \Exception('该微信已被绑定');
+        }
+
+        if (isset($response['unionid']) && !empty($response['unionid'])) {
+            //在用unionid找记录,防止生成两个账号,同个unionid的问题
+            $userAuth = UserAuth::where(['unionid' => $response['unionid']])
+                ->findOrEmpty();
+            if (!$userAuth->isEmpty() && $userAuth->user_id != $response['user_id']) {
+                throw new \Exception('该微信已被绑定');
+            }
+        }
+
+        //如果没有授权,直接生成一条微信授权记录
+        UserAuth::create([
+            'user_id' => $response['user_id'],
+            'openid' => $response['openid'],
+            'unionid' => $response['unionid'] ?? '',
+            'terminal' => $response['terminal'],
+        ]);
+        return true;
+    }
+
+
+    /**
+     * @notes 获取扫码登录地址
+     * @return array|false
+     * @author 段誉
+     * @date 2022/10/20 18:23
+     */
+    public static function getScanCode($redirectUri)
+    {
+        try {
+            $config = WeChatConfigService::getOpConfig();
+            $appId = $config['app_id'];
+            $redirectUri = UrlEncode($redirectUri);
+
+            // 设置有效时间标记状态, 超时扫码不可登录
+            $state = MD5(time().rand(10000, 99999));
+            (new WebScanLoginCache())->setScanLoginState($state);
+
+            // 扫码地址
+            $url = WeChatRequestService::getScanCodeUrl($appId, $redirectUri, $state);
+            return ['url' => $url];
+
+        } catch (\Exception $e) {
+            self::$error = $e->getMessage();
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 网站扫码登录
+     * @param $params
+     * @return array|false
+     * @author 段誉
+     * @date 2022/10/21 10:28
+     */
+    public static function scanLogin($params)
+    {
+        Db::startTrans();
+        try {
+            // 通过code 获取 access_token,openid,unionid等信息
+            $userAuth = WeChatRequestService::getUserAuthByCode($params['code']);
+
+            if (empty($userAuth['openid']) || empty($userAuth['access_token'])) {
+                throw new \Exception('获取用户授权信息失败');
+            }
+
+            // 获取微信用户信息
+            $response = WeChatRequestService::getUserInfoByAuth($userAuth['access_token'], $userAuth['openid']);
+
+            // 生成用户或更新用户信息
+            $userServer = new WechatUserService($response, UserTerminalEnum::PC);
+            $userInfo = $userServer->getResopnseByUserInfo()->authUserLogin()->getUserInfo();
+
+            // 更新登录信息
+            self::updateLoginInfo($userInfo['id']);
+
+            Db::commit();
+            return $userInfo;
+
+        } catch (\Exception $e) {
+            Db::rollback();
+            self::$error = $e->getMessage();
+            return false;
+        }
+    }
+
+
+    /**
+     * @notes 更新用户信息
+     * @param $params
+     * @param $userId
+     * @return User
+     * @author 段誉
+     * @date 2023/2/22 11:19
+     */
+    public static function updateUser($params, $userId)
+    {
+        return User::where(['id' => $userId])->update([
+            'nickname' => $params['nickname'],
+            'avatar' => FileService::setFileUrl($params['avatar']),
+            'is_new_user' => YesNoEnum::NO
+        ]);
+    }
+}

+ 90 - 0
app/api/validate/SupplyDemandValidate.php

@@ -0,0 +1,90 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\api\validate;
+
+use app\common\cache\UserAccountSafeCache;
+use app\common\enum\LoginEnum;
+use app\common\enum\notice\NoticeEnum;
+use app\common\enum\user\UserTerminalEnum;
+use app\common\enum\YesNoEnum;
+use app\common\service\ConfigService;
+use app\common\service\sms\SmsDriver;
+use app\common\validate\BaseValidate;
+use app\common\model\user\User;
+use app\common\model\agricultural_machinery\ServiceCategory;
+use app\common\model\asset\AssetArea;
+use think\facade\Config;
+
+/**
+ * 供需校验
+ * Class LoginValidate
+ * @package app\api\validate
+ */
+class SupplyDemandValidate extends BaseValidate
+{
+
+    protected $rule = [
+        'id'=>'require',
+        'title'=>'require|min:1|max:100',
+        'mobile' => 'require|mobile',
+        'type'  => 'require|in:1,2',
+        'address'=>'require',
+        'images'=>'require',
+        'content'=>'require',
+        'number' => 'require',
+    ];
+
+
+    protected $message = [
+        'id.require'                          => '供需信息id必传',
+        'title.require'                          => '请输入名称',
+        'title.min'                              => '名称长度至少1个字符',
+        'title.max'                              => '名称长度最多100个字符',
+        'mobile.require' => '联系方式参数缺失',
+        'mobile.mobile' => '请填写正确的手机号',
+        'type.require'  => '类型type参数必传',
+        'address.require'  => '地址信息必传',
+        'type.in'    =>'类型type参数规则错误',
+        'images.require'                          => '请输入上传图片',
+        'number.require'  => '地区信息必传',
+    ];
+    protected $scene = [
+        'supplyDemandRelease' => ['title','type','images','address','mobile','number'], //
+        'info' => ['id'], //
+    ];
+
+    /**
+     * @notes 场景相关校验
+     * @param $scene
+     * @param $rule
+     * @param $data
+     * @return bool|string
+     * @author 段誉
+     * @date 2022/9/15 14:37
+     */
+    public function checkCateCode($scene, $rule, $data)
+    {
+        $cate_id_arr = explode(',',$data['cate_id']);
+        foreach($cate_id_arr as $v){
+            $info = ServiceCategory::where(['id'=>$v,'type'=>$data['type']])->findOrEmpty();
+            if($info->isEmpty()){
+                return '传入的分类id:'.$v.'不存在!';
+            }
+        }
+
+        return true;
+    }
+
+}

+ 153 - 0
app/common/model/supply_demand/SupplyDemandInfo.php

@@ -0,0 +1,153 @@
+<?php
+// +----------------------------------------------------------------------
+// | likeadmin快速开发前后端分离管理后台(PHP版)
+// +----------------------------------------------------------------------
+// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
+// | 开源版本可自由商用,可去除界面版权logo
+// | gitee下载:https://gitee.com/likeshop_gitee/likeadmin
+// | github下载:https://github.com/likeshop-github/likeadmin
+// | 访问官网:https://www.likeadmin.cn
+// | likeadmin团队 版权所有 拥有最终解释权
+// +----------------------------------------------------------------------
+// | author: likeadminTeam
+// +----------------------------------------------------------------------
+
+namespace app\common\model\supply_demand;
+
+use app\common\model\agricultural_machinery\ServiceCategory;
+use app\common\model\BaseModel;
+use app\common\model\asset\AssetArea;
+use app\common\model\recharge\RechargeOrder;
+use app\common\service\FileService;
+use app\common\model\User\User;
+use think\model\concern\SoftDelete;
+
+/**
+ * 服务管理模型
+ * Class ArticleCate
+ * @package app\common\model\article;
+ */
+class SupplyDemandInfo extends BaseModel
+{
+    use SoftDelete;
+
+    protected $deleteTime = 'delete_time';
+
+
+    /**
+     * @notes 关联用户
+     * @return \think\model\relation\HasMany
+     * @author 段誉
+     * @date 2022/10/19 16:59
+     */
+    public function user()
+    {
+        return $this->hasOne(User::class, 'id', 'user_id')->field('id,nickname,avatar');
+    }
+
+    /**
+     * @notes 状态描述
+     * @param $value
+     * @param $data  状态 0 新增待发布 1审核中 2 审核成功 3审核失败
+     * @return string
+     * @author 段誉
+     * @date 2022/9/15 11:25
+     */
+
+    public function getStatusDescAttr($value,$data){
+        $type = $data['type'];
+        $desc = [
+            0 => '新增待审核',
+            1 => '审核中',
+            2 => '审核成功',
+            3 => '审核失败',
+        ];
+
+        return $desc[$type] ?? '';
+    }
+    public function getTypeDescAttr($value,$data){
+        $type = $data['type'];
+        $desc = [
+            1 => '供应',
+            2 => '需求',
+        ];
+
+        return $desc[$type] ?? '';
+    }
+
+    /**
+     * @notes 设置图片域名
+     * @param $value
+     * @param $data
+     * @return array|string|string[]|null
+     * @author 段誉
+     * @date 2022/9/28 10:17
+     */
+    public function getContentAttr($value, $data)
+    {
+        return get_file_domain($value);
+    }
+
+
+    /**
+     * @notes 清除图片域名
+     * @param $value
+     * @param $data
+     * @return array|string|string[]
+     * @author 段誉
+     * @date 2022/9/28 10:17
+     */
+    public function setContentAttr($value, $data)
+    {
+        return clear_file_domain($value);
+    }
+
+    /**
+     * @notes 清除图片域名
+     * @param $value
+     * @param $data
+     * @return array|string|string[]
+     * @author 段誉
+     * @date 2022/9/28 10:17
+     */
+    public function setImagesAttr($value)
+    {
+        $imagesArr = explode(',',$value);
+        $imagesStr = '';
+        foreach($imagesArr as $k=>$v){
+            if($k==0){
+                $imagesStr = clear_file_domain($v);
+            }else{
+                $imagesStr .=','. clear_file_domain($v);
+            }
+
+        }
+        return $imagesStr;
+    }
+    /**
+     * @notes 加图片域名
+     * @param $value
+     * @param $data
+     * @return array|string|string[]
+     * @author 段誉
+     * @date 2022/9/28 10:17
+     */
+    public function getImagesAttr($value,$data)
+    {
+
+        $imagesArr = explode(',',$data['images']);
+
+        $imagesStr = '';
+
+        foreach($imagesArr as $k=>$v){
+
+            if($k==0){
+                $imagesStr =  FileService::getFileUrl(trim($v, '/')); //get_file_domain($v);
+            }else{
+                $imagesStr .=','. FileService::getFileUrl(trim($v, '/')); //get_file_domain($v);
+            }
+
+        }
+        return $imagesStr;
+    }
+}