723 lines
32 KiB
PHP
723 lines
32 KiB
PHP
|
<?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);
|
|||
|
}
|
|||
|
}
|