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);
|
||
}
|
||
}
|