<?php

namespace app\api\controller;


use app\adminapi\validate\CompanyValidate;
use app\common\logic\contract\ContractLogic;
use app\common\logic\finance\ShareProfit;
use app\common\logic\RedisLogic;
use app\common\logic\ShopRequestLogic;
use app\common\logic\task\TaskLogic;
use app\common\model\Company;
use app\common\model\contract\Contract;
use app\common\model\task\Task;
use app\common\model\task_scheduling\TaskScheduling;
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
use app\common\model\task_template\TaskTemplate;
use app\job\TaskAdd;
use app\job\TaskInformationJob;
use app\job\VillageTaskAdd;
use app\job\VillageTaskSettlementJob;
use think\Exception;
use think\facade\Log;
use app\job\TaskTenZehn;
use think\facade\Db;
use app\common\model\ShopMerchant;
use app\common\model\contract\ShopContract;

class CeshiController extends BaseApiController
{
    public array $notNeedLogin = [  'index',
                                    'ceshi',
                                    'ceshi1',
                                    'ceshi2',
                                    'service_group_task_add_test', // 小组服务任务下发
                                    'service_group_task_settlement_test', // 小组服务任务结算
                                    'town_task_add_ceshi', // 镇农科任务下发
                                    'town_task_settlement_ceshi', // 镇农科任务结算
                                    'authentication', // 企业认证
                                    'initiate_contract', // 发起合同
                                    'Draftingcontracts', // 发送合同
                                    'postsms', // 发送短信
                                    'addSupplyMerchant', // 添加供应商
                                    'signSupplyMerchantContract', // 生成合同
                                    'countRate',
                                    'village_task_add_test',
                                    'village_task_settlement_test',
                                    'testShopApi'
                                 ];

    public function index()
    { //1201

        $id = 9;
        $shopMerchant = ShopMerchant::find(['id', $id]);
        // $data=json_decode($parmas['data'],true);
        // if($data['status']==1){
        //     if($data['organizationRegNo']!=$shopMerchant->organization_code){
        //         Log::error(['认证回调错误:',$parmas]);
        //         return json(['success' => false, 'msg' => '认证回调错误']);
        //     }

        $shopMerchant->save(['is_authentication' => 1]);
        // 生成合同
        $createContractData = [
            'id' => $id,
            'party_a' => 1,
            'party_a_name' => '泸州市海之农科技有限公司',
            'party_b' => $id,
            'party_b_name' => $shopMerchant->company_name,
            'contract_type' => 22,
        ];
        $model = new ShopContract();
        $model->contract_no = time();
        $model->create_time = time();
        $model->check_status = 1;
        $model->update_time = time();
        $model->setAttrs($createContractData);
        $res = $model->save($createContractData);
        // }
        halt($res);

        $select = Db::name('company_form')->where('type', 0)
            ->select();
        $id = 0;
        foreach ($select as $key => $value) {
            $id = $value['id'];
            if ($value['organization_code'] != '' || $value['organization_code'] != null) {
                // $pattern = "/\*/";
                $name = $value['master_name'];

                // if(preg_match($pattern, $name)){
                //     $name=$value['master_name'];
                // }
                // if ($value['master_email']) {
                    $email = $value['master_email'];
                // } else {
                //     $email = substr(md5(uniqid()), rand(0, 22), 10) . "@lihai.com";
                // }
                $shopMerchantCertificationData = [
                    'name' => $name,
                    'organization_code' => $value['organization_code'],
                    'business_license' => 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/561f8202305171526091317.png',
                    'master_name' => $value['master_name'],
                    'master_email' => $email,
                    'id' => $value['id'],
                ];
                // Db::name('company_form')->where('id', $value['id'])->update(['master_email' => $email]);
                queue(TaskTenZehn::class,$shopMerchantCertificationData);
            } else {
                Db::name('company_form')->where('id', $value['id'])->update(['type' => -1]);
                continue;
            }
            // $a=app(JunziqianController::class)->ShopMerchantCertification($shopMerchantCertificationData);
        }

        halt($id);
    }

    public function ceshi1()
    {
        //认证一条龙
        $shopMerchantCertificationData = [
            'name' => 1212,
            'organization_code' => 2323,
            'business_license' => 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/561f8202305171526091317.png',
            'master_name' => 3423,
            'master_email' => 343,
            'id' => 123,
        ];
        app(JunziqianController::class)->ShopMerchantCertification($shopMerchantCertificationData);
        halt(111);
    }
    public function ceshi2()
    {
        //重新认证
        $shopMerchantCertificationData = [
            'name' => 1212,
            'organization_code' => 2323,
            'business_license' => 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/561f8202305171526091317.png',
            'master_name' => 3423,
            'master_email' => 343,
            'id' => 123,
        ];
        app(JunziqianController::class)->organizationReapply($shopMerchantCertificationData);
        halt(111);
    }

    /**
     * 企业认证
     */
    public function authentication()
    {
        $params = (new CompanyValidate())->goCheck('detail');
        $company = Db::name('company')->where('id', $params['id'])->find();
        $qualification = json_decode($company['qualification'], true);
        if ($company && $qualification['business_license']) {
            $data = [
                'name' => $company['company_name'],
                'organization_code' => $company['organization_code'],
                'business_license' => 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/561f8202305171526091317.png', //$qualification['business_license'],
                'master_name' => $company['master_name'],
                'master_email' => $company['master_email'],
                'master_phone' => $company['master_phone'],
                'master_id_card' => $company['master_id_card'],
                'id' => $company['id'],
            ];
            $res = app(JunziqianController::class)->EnterpriseCertification($data);
            Log::info(['企业认证同步结果',$res]);
            if ($res->success == true) {
                // 企业人脸上传
//                $company['master_email'] = $email; // 法人邮箱
//                $faceCreateRe = CompanyLogic::originationFaceCreate($company);
//                if ($faceCreateRe !== true) {
//                    return $this->fail($faceCreateRe);
//                }
                //
                if ($company['company_type'] == 30) {
                    // 平台公司不用初始化生成合同 合同签约暂不用人脸识别,预留人脸采集状态为已采集
                    Db::name('company')->where('id', $params['id'])->update([ 'is_contract'=>1,'face_create_status'=>1]);
                } else {
                    Db::name('company')->where('id', $params['id'])->update([ 'face_create_status'=>1]);
                }

                // 加入缓存中,is_callback用于判断是否获取到异步通知
                RedisLogic::getInstance()->set('authentication_company_id_'.$company['id'], json_encode(['company_id'=>$company['id'],'is_callback'=>0, 'timing'=>time()]));
//                return $this->success('认证成功',[],1, 1);
                return $this->success('系统认证中,请稍后刷新页面查看', ['email' => $res->data], 1, 1);
            } else {
                return $this->fail($res->msg);
            }
        } else {
            return $this->fail("公司不存在");
        }
    }

    /**发起合同
     * 请求参数如下
     * id: 14
     * party_a: 13
     * party_a_name: 史丹利农业集团股份有限公司
     * party_b: 14
     * party_b_name: 中国乐凯集团有限公司
     * contract_type: 25
     * contract_no:
     */
    public function initiate_contract()
    {
        $params = $this->request->param();
        if (isset($params['party_a']) && $params['party_a'] > 0) {
            $params['party_a'] = $params['party_a'];
        } else {
            $params['party_a'] = $this->adminInfo['company_id'];
        }
        $area_manager = Company::where('id', $params['party_a'])->value('area_manager');
        $params['area_manager'] = $area_manager;
        $params['type'] = 1;
        $params['party_b'] = $params['id'];
        unset($params['id']);
        $result = ContractLogic::initiate_contract($params);
        if (!empty($result) && $result['code'] == 1) {
            return $this->success($result['msg'], $result['data'], 1, 1);
        }
        return $this->fail(ContractLogic::getError());
    }

    /** 发送合同   发送君子签签约请求,成功后会发送回短信
     * id: 14
     * contract_id: 14
     */
    public function Draftingcontracts()
    {
        $params = $this->request->param();
        $result = ContractLogic::Draftingcontracts($params);
        if ($result == true) {
            return $this->success('发送合同成功', [], 1, 1);
        }
        return $this->fail(ContractLogic::getError());
    }

    /**发送短信
     *
     */
    public function postsms()
    {
        $params = (new CompanyValidate())->goCheck('detail');
        $id = Contract::where('party_b', $params['id'])->value('id');
        $res = ContractLogic::postsms(['id' => $id]);
        if ($res == true) {
            return $this->success('发送成功', [], 1, 1);
        } else {
            return $this->fail(ContractLogic::getError());
        }
    }


    /**
     * 小组服务公司任务下发  线上事故调试和紧急修复预案接口
     */
    public function service_group_task_add_test()
    {
        //任务下发
        $companyId = $this->request->param('company_id');
        $time = strtotime(date('Y-m-d')); // 今天的00:00:00
        // 注意 cron_time
        $plan_all = TaskScheduling::where('cron_time', '<', time())
            ->where('status', 1)
            ->where('company_type', 18)
            ->where('company_id', $companyId)
            ->with('company_info')
            ->select()
            ->toArray();
        $plan_ids = [];
        dd($plan_all);
        foreach ($plan_all as $k => $v) {

            $all = TaskTemplate::where('status', 1)->where('task_scheduling', $v['id'])->limit(30)->select()->toArray();

            $plan_ids[] = $v['id'];
            if ($all) {
                $plan_all[$k]['template'] = $all;
            } else {
                unset($plan_all[$k]);
            }
        }
        $company_id = [];
        foreach ($plan_all as $k => $v) {
            foreach ($v['template'] as $kk => $vv) {
//                queue(TaskAdd::class,['data'=>$vv,'data_two'=>$v]);
                TaskLogic::CronAdd($vv, $v);
            }
            $company_id[] = $v['company_id'];
        }
        Company::where('id', 'in', $company_id)->inc('day_count')->update();
        TaskScheduling::where('id', 'in', $plan_ids)->update(['cron_time' => time()]);
        Log::info('小组服务公司定时任务下发执行成功' . date('Y-m-d H:i:s'));
        return $this->success('定时任务下发执行成功');
    }

    /**
     * 小组服务公司任务结算   线上事故调试和紧急修复预案接口
     */
    public function service_group_task_settlement_test()
    {
        //
        $all = TaskSchedulingPlan::whereDay('end_time','today')
            ->withJoin(['scheduling'], 'left')
            ->where('scheduling.company_type', 18)
            ->where('scheduling.company_id', 34)
//            ->where('is_pay',0)
            ->with(['template_info'])
            ->select()
            ->toArray();

        foreach($all as $k=>$data){
            try {
                TaskSchedulingPlan::where('id', $data['id'])->update(['is_pay' => 1]);
                $company = Company::where('id', $data['company_id'])->field('id,deposit,responsible_area,company_money,shareholder_money,user_id,day_count,company_type,province,city,area,street,village,brigade')->find(); // 可能要判断预存金是否满足
                $arr['status'] = 0;
                $arr['company_account_type'] = 1;
                //信息更新
                if ($data['template_info']['type'] == 31) {
                    if ($data['template_info']['information_count'] < $data['template_info']['information_day_count']) {
                        Log::info('信息更新任务,信息更新未达到要求:' . json_encode($data));
                        Task::where('id', $data['task_id'])->update(['status' => 5]);
                        TaskTemplate::where('id',$data['template_id'])->update(['information_count'=>$data['template_info']['information_day_count']]);
                        return false;
                    }
                    $name = '小组队长';
                    $arr['status'] = 1;
                    $task = Task::where('id', $data['task_id'])->field('director_uid,money')->where('status', 3)->find();
                    $arr['money'] = $task['money'];
                    Task::where('id', $data['task_id'])->update(['status' => 3]);
                } elseif
                    //交易金额
                ($data['template_info']['type'] == 33) {
                    $shang_date_total_price = App(RemoteController::class)->shang_date_total_price($company,[],$data['template_id']);
                    if ($shang_date_total_price == false) {
                        Log::info('交易金额任务,交易金额未达到要求:' . json_encode($data));
                        Task::where('id', $data['task_id'])->update(['status' => 5]);
                        return false;
                    }
                    $transaction_pool=$data['template_info']['transaction_pool'];//交易金额剩余池
                    $count_money=bcadd($shang_date_total_price['arr']['total_price'],$transaction_pool,2);//交易金额加资金池金额
                    if($count_money>$shang_date_total_price['arr']['day_money']){
                        $day_money=bcsub($count_money,$shang_date_total_price['arr']['day_money'],2);//当计算剩余池before_transaction_pool
                        $shang_date_total_price['arr']['before_transaction_pool']=$transaction_pool;//变化前
                        $shang_date_total_price['arr']['after_count_transaction_pool']=$count_money;//变化后
                        $shang_date_total_price['arr']['after_transaction_pool']=$day_money;//变化后
                        Task::where('id', $data['task_id'])->update(['status' => 3,'extend'=>json_encode(['transaction'=>$shang_date_total_price])]);
                        TaskTemplate::where('id',$data['template_info']['id'])->update(['transaction_pool'=>$day_money]);
                        $shang_date_total_price['arr']['status']=1;
                    }else{
                        Log::info('交易金额任务,交易金额小于今日金额:' . json_encode($data));
                        Task::where('id', $data['task_id'])->update(['status' => 5]);
                        return false;
                    }
                    $name = $shang_date_total_price['name'];
                    $arr['status'] = $shang_date_total_price['arr']['status'];
                    $task = Task::where('id', $data['task_id'])->field('money')->find();
                    $arr['money'] = $task['money'];
                } elseif
                    //三轮车
                ($data['template_info']['type'] == 32){
                    $task = Task::where('id', $data['task_id'])->field('director_uid,money')->where('status', 3)->with('director_info')->find();
                    if(empty($task)){
                        Log::info('三轮车任务 ' . $data['template_info']['title'] . '结算失败,任务为空:' . json_encode($data));
                        Task::where('id', $data['task_id'])->update(['status' => 5]);
                        return true;
                    }
                    $name=$task['director_info']['nickname'];
                    $arr['status'] = 1;
                    $arr['money'] = $task['money'];
                }elseif
                    //入股任务
                ($data['template_info']['type'] == 35){
                    $task_35 = Task::where('id', $data['task_id'])->field('director_uid,status,money,start_time,end_time')->with('director_info')->find();
                    if($task_35){
                        $day= $data['template_info']['stage_day_one'] + $data['template_info']['stage_day_two'];
//                    if($task_35['status']==3 && $data['template_info']['day_count']<=$day){
//                        $name = $task_35['director_info']['nickname'];
//                        $arr['status'] = 1;
//                        $arr['money'] = $task_35['money'];
//                        $arr['company_account_type'] = 2;
//                    }else{
                        if ($task_35['status'] == 3) {
                            return true;
                        }
                        /**
                         * 判断入股任务 单次类型 是否超时
                         * 未超时时刷新开始结束时间
                         *  超时则关闭
                         */
                        if($data['template_info']['day_count']<=$day){
                            TaskSchedulingPlan::where('id', $data['id'])->update(['is_pay' => 0]);
                            try{
                                Task::where('id', $data['task_id'])->update(['create_time' => $task_35['start_time']+86400,'update_time' =>time(),'start_time'=>$task_35['start_time']+86400,'end_time'=>$task_35['start_time']+86400+86399]);
                            }catch(\Exception $e){
                                $start_time = strtotime(date('Y-m-d'));
                                Task::where('id', $data['task_id'])->update(['create_time' => $start_time+86400,'update_time' =>time(),'start_time'=>$start_time+86400,'end_time'=> $start_time + 86400+86399]);
                            }
                            return false;
                        }

                        if($data['template_info']['day_count']>$day){
                            Task::where('id', $data['task_id'])->update(['status' =>5]);
                            Log::info('入股任务 ' . $data['template_info']['title'] . '结算失败,任务为超时:' . json_encode($data));
                            return false;
                        }
//                    }
                    }else{
                        Log::info('入股任务 ' . $data['template_info']['title'] . '结算失败,任务为空:' . json_encode($data));
                        return false;
                    }
                }
                else {
                    //其他类型任务
                    $task = Task::where('id', $data['task_id'])->with('director_info')->find();
                    if ($task['status'] == 3) {
                        $name = $task['director_info']['nickname'];
                        $arr['status'] = 1;
                        $arr['money'] = $task['money'];
                    } else if ($task['status'] == 2) {
                        // 是否超时
                        $day= $data['template_info']['stage_day_one'] + $data['template_info']['stage_day_two'];

                        if($data['template_info']['day_count'] >= $day){
                            Task::where('id', $data['task_id'])->update(['status' =>5]);
                            Log::info( $data['template_info']['title'] . '结算失败,任务为超时:' . json_encode($data));
                            return false;
                        }

                        if($data['template_info']['day_count'] < $day){
                            TaskSchedulingPlan::where('id', $data['id'])->update(['is_pay' => 0]);
                            try{
                                Task::where('id', $data['task_id'])->update(['create_time' => $task['start_time']+86400,'update_time' =>time(),'start_time'=>$task['start_time']+86400,'end_time'=>$task['start_time']+86400+86399]);
                            }catch(\Exception $e){
                                $start_time = strtotime(date('Y-m-d'));
                                Task::where('id', $data['task_id'])->update(['create_time' => $start_time+86400,'update_time' =>time(),'start_time'=>$start_time+86400,'end_time'=> $start_time + 86400+86399]);
                            }
                            return false;
                        }
                    }
                }
            } catch (\Exception $e) {
                Log::error('line:'.$e->getLine().'异常报错:任务结算失败:' . $data['template_info']['title'] . $e->getMessage() . json_encode($data));
                return false;
            }
            if ($arr['status'] == 1) {
                $arr['company_id'] = $data['scheduling']['company_id'];
                $arr['msg'] = '来自任务【' . $data['template_info']['title'] . '】,完成方:' . $name . ',任务结算';
                // $arr['proportion_one'] = $data['template_info']['proportion_one'];
                // $arr['proportion_two'] = $data['template_info']['proportion_two'];
                $arr['sn'] = $data['sn'];
                $arr['id'] = $data['id'];
                (new ShareProfit())->first($arr, $company,$data);
            } else {
                Task::where('id', $data['task_id'])->update(['status' => 5]);
                Log::info('任务status=0结算失败:' . $data['template_info']['title'] . '未完成' . json_encode($data));
            }
//            queue(TaskInformationJob::class,$v);
        }
        Log::info('小组服务公司定时任务结算执行成功'.date('Y-m-d H:i:s'));
        return $this->success('小组服务公司定时任务结算执行成功');
    }


    /**
     * 镇农科公司任务下发    线上事故调试和紧急修复预案接口
     */
    public function town_task_add_ceshi()
    {
        //任务下发
        $companyId = $this->request->param('company_id');
        $taskTypeIds = $this->request->param('task_type_ids');
        $time = strtotime(date('Y-m-d'));
        // 查询系统 所有镇农科公司 未下发 的 任务安排
        $taskSchedulingList = TaskScheduling::where('cron_time', '<', time())
                                            ->where('status', 1)
                                            ->where('company_type', 16)
                                            ->where('company_id', $companyId)
                                            ->with('company_info')
                                            ->select()
                                            ->toArray();

        $taskSchedulingIds = [];
        $companyIds = [];

        foreach ($taskSchedulingList as $k => $taskScheduling) {
            $templateList = TaskTemplate::where('status', 1)->where('task_scheduling', $taskScheduling['id'])->limit(30)->select()->toArray();

            $taskSchedulingIds[] = $taskScheduling['id'];
            $companyIds[] = $taskScheduling['company_id'];
            foreach ($templateList as $template) {
                if (in_array($template['type'], explode(',', $taskTypeIds))) {
                    TaskLogic::TownCronAdd($template); // 手动下发用
                }
//                queue(TownTaskAdd::class, $template);

            }

            if (empty($templateList)) {
                unset($taskSchedulingList[$k]);
            }
        }
        Company::where('id', 'in', $companyIds)->inc('day_count')->update();
        TaskScheduling::where('id', 'in', $taskSchedulingIds)->update(['cron_time' => time()]);
        Log::info('定时任务下发执行成功' . date('Y-m-d H:i:s'));
        return $this->success('定时任务下发执行成功');
    }

    /**
     *  镇农科公司任务结算  线上事故调试和紧急修复预案接口
     */
    public function town_task_settlement_ceshi()
    {
        // 今日未结算的任务计划
        $taskSchedulingPlanList = TaskSchedulingPlan::whereDay('end_time','today')
            ->withJoin(['scheduling'], 'left')
            ->where('scheduling.company_type', 16)
            ->where('is_pay',0)
            ->with(['template_info'])
            ->select()
            ->toArray();
        dd($taskSchedulingPlanList);
        foreach($taskSchedulingPlanList as $taskSchedulingPlan) {
            if ($taskSchedulingPlan['company_id'] == 30 && $taskSchedulingPlan['template_info']['type'] == 50) {

                TaskLogic::townTaskSettlement($taskSchedulingPlan);
            }
        }
        return $this->success('镇农科公司定时任务结算执行成功');
    }

    /**
     * 村管理公司任务下发
     */
    public function village_task_add_test()
    {
        //任务下发
        $time = strtotime(date('Y-m-d'));
        // 查询系统 所有镇农科公司 未下发 的 任务安排
        $taskSchedulingList = TaskScheduling::where('cron_time', '<', time())
            ->where('status', 1)
            ->where('company_type', 17)
            ->where('company_id', 33)
            ->with('company_info')
            ->select()
            ->toArray();
        dd($taskSchedulingList);
        $taskSchedulingIds = [];
        $companyIds = [];
        foreach ($taskSchedulingList as $k => $taskScheduling) {
            $templateList = TaskTemplate::where('status', 1)->where('task_scheduling', $taskScheduling['id'])->limit(30)->select()->toArray();
            $taskSchedulingIds[] = $taskScheduling['id'];
            $companyIds[] = $taskScheduling['company_id'];
            foreach ($templateList as $template) {

                if ($template['type'] == 69) {
                    TaskLogic::VillageCronAdd($template); // 手动下发用
                }


//                queue(VillageTaskAdd::class, $template);

            }

            if (empty($templateList)) {
                unset($taskSchedulingList[$k]);
            }
        }
        Company::where('id', 'in', $companyIds)->inc('day_count')->update();
        TaskScheduling::where('id', 'in', $taskSchedulingIds)->update(['cron_time' => time()]);
        Log::info('村管理公司定时任务下发执行成功' . date('Y-m-d H:i:s'));
        return $this->success('村管理公司定时任务下发执行成功');
    }

    /**
     * 村管理公司任务结算
     */
    public function village_task_settlement_test()
    {
        Log::info('村管理公司定时任务结算执行-开始'.date('Y-m-d H:i:s'));
        //today  今日未结算的任务计划
        $taskSchedulingPlanList = TaskSchedulingPlan::whereDay('end_time','yesterday')
            ->withJoin(['scheduling'], 'left')
            ->where('scheduling.company_type', 17)
            ->where('scheduling.company_id', 33)
            ->where('is_pay',0)
            ->with(['template_info'])
            ->select()
            ->toArray();

        foreach($taskSchedulingPlanList as $taskSchedulingPlan){

                TaskLogic::villageTaskSettlement($taskSchedulingPlan);

//            queue(VillageTaskSettlementJob::class, $taskSchedulingPlan);
        }
        Log::info('村管理公司定时任务结算执行-结束'.date('Y-m-d H:i:s'));
        return $this->success('村管理公司定时任务结算执行成功');
    }


    public function countRate()
    {
        // 第一个月
        $startTime1 = strtotime(date('Y-m-d', time())); // 任务下发当天 00:00:00
        $endTime1 = strtotime("+30 day", $startTime1); // 30天后的00:00:00


        // 第二个月
        $startTime2 = strtotime(date('Y-m-d', $endTime1)); // 第一个月截止日 00:00:00
        $endTime2 = strtotime("+30 day", $startTime2); // 30天后的00:00:00
        dd([date('Y-m-d H:i:s', $startTime1), date('Y-m-d H:i:s', $endTime1), date('Y-m-d H:i:s', $startTime2),  date('Y-m-d H:i:s', $endTime2)]);
       $procureAmount = 1234;
        $step = $this->request->param('step', 1);
        // 商户入驻至今累计天数
        $targetProcureAmount = 10000;
        //  目标采购额每阶段增幅30%
        for ($i = 1; $i < $step; $i++) {
            $targetProcureAmount = self::increase($targetProcureAmount);
        }
        dd($targetProcureAmount);
        $rate = bcdiv($procureAmount, $targetProcureAmount, 2);
        return $rate;
    }

    private static function increase($value)
    {
        return bcmul($value, 1.3,2);
    }

    /**
     * 添加供应链商户
     */
    public function addSupplyMerchant()
    {
        try {
            // 添加商户数据
            $params = $this->request->param();
            $data = [
                'mer_intention_id' => 0, // 商城商户入驻申请id,签约完成后回调使用
                'company_name' => $params['company_name']??'',
                'mer_name' => $params['mer_name']??'', // 店铺名称
                'organization_code' => $params['organization_code']??'',
                'city' => $params['city']??'',
                'area' => $params['area']??'',
                'street' => $params['street']??'',
                'address' => $params['address']??'',
                'master_name' => $params['master_name']??'',
                'master_phone' => $params['master_phone']??'',
                'master_email' => $master_email??'',
                'type_name' => $params['type_name'] ?? '', //店铺类型
                'category_name' => $params['category_name'] ?? '', //商户分类
                'qualification' => !empty($params['images'])?$params['images']:json_encode([])
            ];
            $shopMerchantModel = ShopMerchant::create($data);

            $shopMerchantCertificationData = [
                'name' => $shopMerchantModel->company_name,
                'organization_code' => $shopMerchantModel->organization_code,
                'business_license' => 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/561f8202305171526091317.png',
                'master_name' => $shopMerchantModel->master_name,
                'master_email' => $shopMerchantModel->master_email,
                'master_phone' => $shopMerchantModel->master_phone,
                'id' => $shopMerchantModel->id,
            ];
            $re = app(JunziqianController::class)->ShopMerchantCertification($shopMerchantCertificationData);

            return $this->success('成功', $shopMerchantModel->toArray());
        } catch (Exception $e) {
            return $this->fail($e->getMessage());
        }

    }

    // 生成合同
    public function signSupplyMerchantContract()
    {
        try {
            $params = $this->request->param();
            // 生成合同
            $createContractData = [
                'id' => $params['id'],
                'party_a' => $params['party_a'],
                'party_a_name' => $params['party_a_name'],
                'party_b' => $params['party_b'],
                'party_b_name' => $params['party_b_name'],
                'contract_type' => 58, // 供应链商户合同
            ];
            $model = new ShopContract();
            $model->contract_no = time();
            $model->create_time = time();
            $model->check_status = 1;
            $model->update_time = time();
            $model->setAttrs($createContractData);
            $res = $model->save($createContractData);
            return $this->success('成功', $res->toArray());
        } catch (Exception $e) {
            return $this->fail($e->getMessage());
        }
    }

    public function testShopApi()
    {
        $id = $this->request->param('id');
        $templateInfo = TaskTemplate::where(['id'=>$id])->find();
        $townCompany = Company::where(['id' => $templateInfo['company_id']])->find();

        $param['start_time'] = strtotime(date('Y-m-d', $templateInfo['cretate_time'])) + 86400;
        $param['end_time'] = time();
        $param['mer_intention_id'] = 131;
//        $param['goods_id'] = '17,18';
        $param['type_id'] = 10;


        // todo 返回字段要对接
        $result = ShopRequestLogic::getGeneralMerchantProductListing($param);
        dd($result);
    }
}