Merge branch 'dev' of https://gitea.lihaink.cn/mkm/TaskSystem into mkm
This commit is contained in:
commit
4bd43d4a08
35
.example.env
35
.example.env
@ -1 +1,34 @@
|
||||
APP_DEBUG = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = test
USERNAME = username
PASSWORD = password
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true
PREFIX = la_
[LANG]
default_lang = zh-cn
[PROJECT]
UNIQUE_IDENTIFICATION = likeadmin
# 演示环境
DEMO_ENV = false
|
||||
APP_DEBUG = true
|
||||
|
||||
[APP]
|
||||
DEFAULT_TIMEZONE = Asia/Shanghai
|
||||
|
||||
[DATABASE]
|
||||
TYPE = mysql
|
||||
HOSTNAME = 127.0.0.1
|
||||
DATABASE = test
|
||||
USERNAME = username
|
||||
PASSWORD = password
|
||||
HOSTPORT = 3306
|
||||
CHARSET = utf8
|
||||
DEBUG = true
|
||||
PREFIX = la_
|
||||
|
||||
[LANG]
|
||||
default_lang = zh-cn
|
||||
|
||||
[PROJECT]
|
||||
UNIQUE_IDENTIFICATION = likeadmin
|
||||
# 演示环境
|
||||
DEMO_ENV = false
|
||||
|
||||
[DATABASE]
|
||||
TYPE = "mysql"
|
||||
HOSTNAME = "47.109.36.146"
|
||||
DATABASE = "worker_task"
|
||||
USERNAME = "worker_task"
|
||||
PASSWORD = "p4WGD67TezzzX3Mc"
|
||||
HOSTPORT = "3306"
|
||||
CHARSET = "utf8mb4"
|
||||
DEBUG = "0"
|
||||
PREFIX = "la_"
|
108
app/adminapi/controller/CompanyComplaintFeedbackController.php
Normal file
108
app/adminapi/controller/CompanyComplaintFeedbackController.php
Normal file
@ -0,0 +1,108 @@
|
||||
<?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\adminapi\controller;
|
||||
|
||||
|
||||
use app\adminapi\controller\BaseAdminController;
|
||||
use app\adminapi\lists\CompanyComplaintFeedbackLists;
|
||||
use app\adminapi\logic\CompanyComplaintFeedbackLogic;
|
||||
use app\adminapi\validate\CompanyComplaintFeedbackValidate;
|
||||
|
||||
|
||||
/**
|
||||
* CompanyComplaintFeedback控制器
|
||||
* Class CompanyComplaintFeedbackController
|
||||
* @package app\adminapi\controller
|
||||
*/
|
||||
class CompanyComplaintFeedbackController extends BaseAdminController
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* @notes 获取列表
|
||||
* @return \think\response\Json
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:14
|
||||
*/
|
||||
public function lists()
|
||||
{
|
||||
return $this->dataLists(new CompanyComplaintFeedbackLists());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 添加
|
||||
* @return \think\response\Json
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:14
|
||||
*/
|
||||
public function add()
|
||||
{
|
||||
$params = (new CompanyComplaintFeedbackValidate())->post()->goCheck('add');
|
||||
$result = CompanyComplaintFeedbackLogic::add($params);
|
||||
if (true === $result) {
|
||||
return $this->success('添加成功', [], 1, 1);
|
||||
}
|
||||
return $this->fail(CompanyComplaintFeedbackLogic::getError());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 编辑
|
||||
* @return \think\response\Json
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:14
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$params = (new CompanyComplaintFeedbackValidate())->post()->goCheck('edit');
|
||||
$result = CompanyComplaintFeedbackLogic::edit($params);
|
||||
if (true === $result) {
|
||||
return $this->success('编辑成功', [], 1, 1);
|
||||
}
|
||||
return $this->fail(CompanyComplaintFeedbackLogic::getError());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 删除
|
||||
* @return \think\response\Json
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:14
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
$params = (new CompanyComplaintFeedbackValidate())->post()->goCheck('delete');
|
||||
CompanyComplaintFeedbackLogic::delete($params);
|
||||
return $this->success('删除成功', [], 1, 1);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 获取详情
|
||||
* @return \think\response\Json
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:14
|
||||
*/
|
||||
public function detail()
|
||||
{
|
||||
$params = (new CompanyComplaintFeedbackValidate())->goCheck('detail');
|
||||
$result = CompanyComplaintFeedbackLogic::detail($params);
|
||||
return $this->data($result);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -22,10 +22,9 @@ use app\common\logic\CompanyLogic;
|
||||
use app\adminapi\validate\CompanyValidate;
|
||||
use app\api\controller\JunziqianController;
|
||||
use app\common\logic\RedisLogic;
|
||||
use app\common\model\Approve;
|
||||
use app\common\model\auth\Admin;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\ShopMerchant;
|
||||
use think\cache\driver\Redis;
|
||||
use think\Exception;
|
||||
use think\facade\Db;
|
||||
use app\common\logic\contract\ContractLogic;
|
||||
@ -362,51 +361,112 @@ class CompanyController extends BaseAdminController
|
||||
{
|
||||
try {
|
||||
$params = $this->request->param();
|
||||
Log::info(['商户入驻请求', $params]);
|
||||
if (empty($params['company_name'])) {
|
||||
throw new Exception('商户名称不能为空');
|
||||
}
|
||||
if (empty($params['organization_code'])) {
|
||||
throw new Exception('社会统一信用代码不能为空');
|
||||
}
|
||||
if (empty($params['master_name'])) {
|
||||
throw new Exception('商户法人名称不能为空');
|
||||
Log::info(['商户入驻申请-请求参数', $params]);
|
||||
// if (empty($params['company_name'])) {
|
||||
// throw new Exception('商户名称不能为空');
|
||||
// }
|
||||
// if (empty($params['organization_code'])) {
|
||||
// throw new Exception('社会统一信用代码不能为空');
|
||||
// }
|
||||
// if (empty($params['master_name'])) {
|
||||
// throw new Exception('商户法人名称不能为空');
|
||||
// }
|
||||
// $master_email=Db::name('company_form')->where('organization_code',$params['organization_code'])->value('master_email');
|
||||
//
|
||||
// $isQueryStatus = false; // 需要进一步查询是否已做过企业认证
|
||||
// // $master_email为空表示没有做过认证
|
||||
// if($master_email){
|
||||
// $isQueryStatus = true;
|
||||
// }else{
|
||||
// $master_email=substr(md5(uniqid()),rand(0, 22),10)."@lihai.com";
|
||||
// }
|
||||
|
||||
// 根据street码查询所属镇农科公司
|
||||
$company = Company::where(['street' => $params['street'], 'company_type' => 41])->find();
|
||||
if(empty($company)) {
|
||||
throw new Exception('当前区域无镇农科公司');
|
||||
}
|
||||
$data = [
|
||||
'mer_intention_id' => $params['mer_intention_id'], // 商城商户入驻申请id,签约完成后回调使用
|
||||
'company_name' => $params['company_name'],
|
||||
'organization_code' => $params['organization_code'],
|
||||
'city' => $params['city'],
|
||||
'area' => $params['area'],
|
||||
'street' => $params['street'],
|
||||
'address' => isset($params['address']) && !empty($params['address'])? $params['address']: '',
|
||||
'master_name' => $params['master_name'],
|
||||
'master_phone' => $params['master_phone'],
|
||||
'master_email' => substr(md5(uniqid()),rand(0, 22),10)."@lihai.com",
|
||||
'face_create_status' => 1,
|
||||
'qualification' => !isset($params['images']) && !empty($params['images'])?$params['images']:json_encode([])
|
||||
'mer_intention_id' => $params['mer_intention_id']??'', // 商城商户入驻申请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([])
|
||||
];
|
||||
$approveModel = new Approve();
|
||||
$shopApproveType = $params['type']; // 商户申请类型 1入驻 2开通交易
|
||||
// 插入审批流
|
||||
$approveModel->type = $shopApproveType == 1? 2: 3; // 审批类型,后台配置 1 其他任务 2商户入驻 3开通交易
|
||||
$approveModel->flow_id = 2;
|
||||
$approveModel->name = $shopApproveType == 1? '商户入驻审批': '开通交易审批';
|
||||
$approveModel->admin_id = 0; // 后台发起人id 暂时为0
|
||||
$approveModel->department_id = '0';
|
||||
$approveModel->check_admin_ids = $company['admin_id']; // 当前审批人ID 镇农科公司负责人
|
||||
$approveModel->check_status = 1; // 状态 0待审核,1审核中,2审核通过,3审核不通过,4撤销审核
|
||||
$approveModel->other_type = 6;
|
||||
$approveModel->extend = json_encode(array_merge($params, $data));
|
||||
$approveModel->create_time = time();
|
||||
$approveModel->update_time = time();
|
||||
$approveModel->save();
|
||||
|
||||
$shopMerchantModel = ShopMerchant::create($data);
|
||||
// $shopMerchantModel = ShopMerchant::create($data);
|
||||
|
||||
if (!$shopMerchantModel->isEmpty()) {
|
||||
// 自动发起企业认证
|
||||
$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,
|
||||
];
|
||||
app(JunziqianController::class)->ShopMerchantCertification($shopMerchantCertificationData);
|
||||
} else {
|
||||
throw new Exception('商户创建失败');
|
||||
}
|
||||
return $this->success('成功', [], 1, 1);
|
||||
// 如果是通滩镇的商户,查询一下企业认证状态,通过的情况,则直接发起生成合同
|
||||
// if ($params['street'] == '510502106' && $isQueryStatus) {
|
||||
// $statusRe = app(JunziqianController::class)->shopMerchantStatusQuery($master_email);
|
||||
// Log::info(['商户入驻请求-通滩镇商户-认证状态查询结果', $statusRe]);
|
||||
// if($statusRe->success == true) {
|
||||
// $statusData = json_decode($statusRe->data, true);
|
||||
// if ($statusData['status'] == 1) {
|
||||
// // 生成合同
|
||||
// $createContractData = [
|
||||
// 'id' => $shopMerchantModel->id,
|
||||
// 'party_a' => 1,
|
||||
// 'party_a_name' => '泸州市海之农科技有限公司',
|
||||
// 'party_b' => $shopMerchantModel->id,
|
||||
// 'party_b_name' => $params['company_name'],
|
||||
// 'contract_type' => 22,
|
||||
// ];
|
||||
// $shopContractModel = new ShopContract();
|
||||
// $shopContractModel->contract_no = time();
|
||||
// $shopContractModel->create_time = time();
|
||||
// $shopContractModel->check_status = 1;
|
||||
// $shopContractModel->update_time = time();
|
||||
// $shopContractModel->setAttrs($createContractData);
|
||||
// $shopContractModel->save($createContractData);
|
||||
// return $this->success('已做过企业认证,直接生成合同成功', [], 1, 1);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
// if (!$shopMerchantModel->isEmpty()) {
|
||||
// // 自动发起企业认证
|
||||
// $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,
|
||||
// ];
|
||||
// app(JunziqianController::class)->ShopMerchantCertification($shopMerchantCertificationData);
|
||||
// } else {
|
||||
// throw new Exception('商户创建失败');
|
||||
// }
|
||||
return $this->success('审批创建成功', [], 1, 1);
|
||||
} catch (Exception $exception) {
|
||||
Log::error(['商户入驻请求失败', $exception->getMessage()]);
|
||||
Log::error(['商户入驻审批失败', $exception->getMessage()]);
|
||||
return $this->fail($exception->getMessage());
|
||||
}
|
||||
|
||||
|
77
app/adminapi/controller/approve/ApproveController.php
Normal file
77
app/adminapi/controller/approve/ApproveController.php
Normal file
@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace app\adminapi\controller\approve;
|
||||
|
||||
use app\adminapi\controller\BaseAdminController;
|
||||
use app\adminapi\lists\approve\ApproveLists;
|
||||
use app\common\model\Approve;
|
||||
use app\common\model\task\Task;
|
||||
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
|
||||
use think\facade\Db;
|
||||
|
||||
class ApproveController extends BaseAdminController
|
||||
{
|
||||
public function lists()
|
||||
{
|
||||
return $this->dataLists(new ApproveLists());
|
||||
}
|
||||
|
||||
public function audit()
|
||||
{
|
||||
try {
|
||||
$params = $this->request->param(); // id check_status remark
|
||||
$approve = Approve::find($params['id']);
|
||||
if (!$approve) {
|
||||
$this->fail('数据不存在');
|
||||
}
|
||||
Db::startTrans();
|
||||
// 拒绝通过 要让用户今天可以继续做任务
|
||||
if ($params['check_status'] == 3) {
|
||||
$this->refuse($params, $approve);
|
||||
}
|
||||
// 修改任务完成状态
|
||||
if ($params['check_status'] == 2) {
|
||||
$this->pass($approve);
|
||||
}
|
||||
Db::commit();
|
||||
return $this->success('审核成功');
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
return $this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
// 通过
|
||||
private function pass($approve)
|
||||
{
|
||||
$task = Task::find($approve['task_id']);
|
||||
if ($task['status'] == 2) {
|
||||
$task->status = 3;
|
||||
$task->save();
|
||||
}
|
||||
}
|
||||
|
||||
// 拒绝
|
||||
private function refuse($params, $approve)
|
||||
{
|
||||
$approve->check_status = $params['check_status'];
|
||||
$approve->remark = $params['remark'];
|
||||
$approve->update_time = time();
|
||||
$approve->save();
|
||||
|
||||
// 更新schedule_plan时间和task的时间为今天依旧可提交
|
||||
$schedulePlan = TaskSchedulingPlan::find(['tast_id' => $approve['task_id']]);
|
||||
if (empty($schedule_plan)) {
|
||||
return $this->fail('数据异常,任务计划不存在');
|
||||
}
|
||||
$time = strtotime(date('Y-m-d'));
|
||||
TaskSchedulingPlan::where(['id' => $schedulePlan['id']])->update([
|
||||
'start_time'=>$time,
|
||||
'end_time'=>$time + 86399
|
||||
]);
|
||||
Task::where('id', $approve['task_id'])->update([
|
||||
'start_time'=>$time,
|
||||
'end_time'=>$time + 86399
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
@ -17,6 +17,7 @@ namespace app\adminapi\controller\finance;
|
||||
use app\adminapi\controller\BaseAdminController;
|
||||
use app\adminapi\lists\finance\AccountLogLists;
|
||||
use app\common\enum\user\AccountLogEnum;
|
||||
use app\common\model\user\User;
|
||||
|
||||
/***
|
||||
* 账户流水控制器
|
||||
@ -50,5 +51,12 @@ class AccountLogController extends BaseAdminController
|
||||
return $this->data(AccountLogEnum::getUserMoneyChangeTypeDesc());
|
||||
}
|
||||
|
||||
public function getCompanyUserList()
|
||||
{
|
||||
$param = $this->request->param();
|
||||
$companyId = $param['company_id'];
|
||||
$userList = User::where(['company_id' => $companyId])->field('id,nickname,avatar,sn,mobile,group_id,deposit,income')->select()->toArray();
|
||||
return $this->success('成功', $userList);
|
||||
}
|
||||
|
||||
}
|
@ -20,6 +20,7 @@ use app\adminapi\controller\BaseAdminController;
|
||||
use app\adminapi\lists\task_template\TaskTemplateLists;
|
||||
use app\common\logic\task_template\TaskTemplateLogic;
|
||||
use app\adminapi\validate\task_template\TaskTemplateValidate;
|
||||
use app\common\model\Company;
|
||||
|
||||
|
||||
/**
|
||||
@ -53,8 +54,19 @@ class TaskTemplateController extends BaseAdminController
|
||||
{
|
||||
$params = (new TaskTemplateValidate())->post()->goCheck('add');
|
||||
$params['admin_id'] = $this->adminId;
|
||||
$result = TaskTemplateLogic::add($params);
|
||||
$company = Company::find($params['company_id']);
|
||||
if ($company->company_type == 41) {
|
||||
// 创建 镇农科公司 任务模板
|
||||
$result = TaskTemplateLogic::addTownTaskTemplate($params);
|
||||
} else {
|
||||
$result = TaskTemplateLogic::add($params);
|
||||
}
|
||||
|
||||
if (true === $result) {
|
||||
/**
|
||||
* 如果是公司第一次创建安排任务,则初始化公司的提现周期截止时间
|
||||
*/
|
||||
TaskTemplateLogic::initCompanyWithdrawDeadline($params['company_id']);
|
||||
return $this->success('添加成功', [], 1, 1);
|
||||
}
|
||||
return $this->fail(TaskTemplateLogic::getError());
|
||||
|
84
app/adminapi/lists/CompanyComplaintFeedbackLists.php
Normal file
84
app/adminapi/lists/CompanyComplaintFeedbackLists.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?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\adminapi\lists;
|
||||
|
||||
|
||||
use app\adminapi\lists\BaseAdminDataLists;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\CompanyComplaintFeedback;
|
||||
use app\common\lists\ListsSearchInterface;
|
||||
|
||||
|
||||
/**
|
||||
* CompanyComplaintFeedback列表
|
||||
* Class CompanyComplaintFeedbackLists
|
||||
* @package app\adminapi\lists
|
||||
*/
|
||||
class CompanyComplaintFeedbackLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* @notes 设置搜索条件
|
||||
* @return \string[][]
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:14
|
||||
*/
|
||||
public function setSearch(): array
|
||||
{
|
||||
return [
|
||||
'=' => ['company_id', 'content'],
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 获取列表
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:14
|
||||
*/
|
||||
public function lists(): array
|
||||
{
|
||||
return CompanyComplaintFeedback::where($this->searchWhere)
|
||||
->field(['id', 'company_id', 'content'])
|
||||
->append(['company_name'], true)
|
||||
->limit($this->limitOffset, $this->limitLength)
|
||||
->order(['id' => 'desc'])
|
||||
->withAttr('company_name', function ($value, $data) {
|
||||
$company = Company::where('id', $data['company_id'])->find();
|
||||
return $company['company_name'];
|
||||
})
|
||||
->select()
|
||||
->toArray();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 获取数量
|
||||
* @return int
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:14
|
||||
*/
|
||||
public function count(): int
|
||||
{
|
||||
return CompanyComplaintFeedback::where($this->searchWhere)->count();
|
||||
}
|
||||
|
||||
}
|
@ -59,6 +59,7 @@ class ShopContractLists extends BaseAdminDataLists implements ListsSearchInterfa
|
||||
->field(['id', 'contract_no', 'party_a', 'party_b', 'area_manager', 'type', 'evidence_url', 'check_status', 'status', 'notes'])
|
||||
->limit($this->limitOffset, $this->limitLength)
|
||||
->order(['id' => 'desc'])
|
||||
->with(['partyA', 'partyB'])
|
||||
->select()
|
||||
->toArray();
|
||||
}
|
||||
|
59
app/adminapi/lists/approve/ApproveLists.php
Normal file
59
app/adminapi/lists/approve/ApproveLists.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace app\adminapi\lists\approve;
|
||||
|
||||
use app\adminapi\lists\BaseAdminDataLists;
|
||||
use app\common\lists\ListsSearchInterface;
|
||||
use app\common\model\Approve;
|
||||
use app\common\model\auth\Admin;
|
||||
use app\common\model\Company;
|
||||
use think\facade\Db;
|
||||
|
||||
class ApproveLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
{
|
||||
/**
|
||||
* @notes 设置搜索条件
|
||||
* @return \string[][]
|
||||
* @author likeadmin
|
||||
* @date 2023/08/31 11:08
|
||||
*/
|
||||
public function setSearch(): array
|
||||
{
|
||||
return [
|
||||
'=' => ['type']
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
public function queryWhere()
|
||||
{
|
||||
$where = [];
|
||||
// $where[] = ['check_admin_ids', '=', $this->adminId]; // todo 放开过滤条件,只有片区经理才能查看
|
||||
return $where;
|
||||
}
|
||||
|
||||
public function lists(): array
|
||||
{
|
||||
return Approve::where($this->searchWhere)
|
||||
->where($this->queryWhere())
|
||||
->with('task')
|
||||
->field('*')
|
||||
->append(['area_manager', 'company_name'], true)
|
||||
->limit($this->limitOffset, $this->limitLength)
|
||||
->order(['id' => 'desc'])
|
||||
->select()
|
||||
->withAttr('area_manager',function($value,$data){
|
||||
return Admin::where(['id' => $data['check_admin_ids']])->value('name');
|
||||
})
|
||||
->withAttr('company_name',function($value,$data){
|
||||
return Company::where(['admin_id' => $data['check_admin_ids']])->value('company_name');
|
||||
})
|
||||
->toArray();
|
||||
}
|
||||
|
||||
|
||||
public function count(): int
|
||||
{
|
||||
return Approve::where($this->searchWhere)->count();
|
||||
}
|
||||
}
|
@ -47,30 +47,34 @@ class WithdrawLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
public function lists(): array
|
||||
{
|
||||
$lists = Withdraw::where($this->searchWhere)
|
||||
->append(['s_date', 'e_date', 'company_name'], true)
|
||||
->with('user')
|
||||
->where($this->queryWhere())
|
||||
->withAttr('company_name', function ($value, $data) {
|
||||
$company = Company::where(['admin_id'=>$data['admin_id']])->find();
|
||||
return $company['company_name']??'';
|
||||
})
|
||||
->withAttr('s_date', function ($value, $data) {
|
||||
$withdrawedCount = Withdraw::where(['user_id'=>$data['user_id'], 'status'=>3])->count();
|
||||
$company = Company::where(['admin_id'=>$data['admin_id']])->find();
|
||||
// 开始时间 如果用户第一次提现申请,则以该公司内用户 周期内第一条数据的生成时间为开始时间
|
||||
if ($withdrawedCount == 0) {
|
||||
$firstUserLog = UserAccountLog::where(['company_id'=>$company['id']])->order('id', 'asc')->find();
|
||||
return $firstUserLog['create_time'];
|
||||
} else {
|
||||
// 如果用户已成功申请过提现,则以上次提现的截止日期为开始时间
|
||||
$withdrawedCount = Withdraw::where(['user_id'=>$data['user_id'], 'status'=>3])->order('id', 'desc')->find();
|
||||
return $withdrawedCount['transfer_end_cycel'];
|
||||
}
|
||||
})
|
||||
->withAttr('e_date', function ($value, $data) {
|
||||
// 结束时间
|
||||
return date('Y-m-d H:i:s', $data['transfer_end_cycel']);
|
||||
})
|
||||
->order('id', 'desc')
|
||||
->limit($this->limitOffset, $this->limitLength)
|
||||
->select()
|
||||
->toArray();
|
||||
// 组装审核时直接跳转到余额明细列表的 开始和结束时间
|
||||
foreach ($lists as &$item) {
|
||||
$withdrawedCount = Withdraw::where(['user_id'=>$item['user_id'], 'status'=>3])->count();
|
||||
$company = Company::where(['admin_id'=>$item['admin_id']])->find();
|
||||
$item['company_name'] = $company['company_name'];
|
||||
// 开始时间 如果用户第一次提现申请,则以该公司内用户 周期内第一条数据的生成时间为开始时间
|
||||
if ($withdrawedCount == 0) {
|
||||
|
||||
$firstUserLog = UserAccountLog::where(['company_id'=>$company['id']])->order('id', 'asc')->find();
|
||||
$item['s_date'] = $firstUserLog['create_time'];
|
||||
} else {
|
||||
// 如果用户已成功申请过提现,则以上次提现的截止日期为开始时间
|
||||
$withdrawedCount = Withdraw::where(['user_id'=>$item['user_id'], 'status'=>3])->order('id', 'desc')->find();
|
||||
$item['s_date'] = $withdrawedCount['transfer_end_cycel'];
|
||||
}
|
||||
// 结束时间
|
||||
$item['e_date'] = date('Y-m-d H:i:s', $item['transfer_end_cycel']);
|
||||
}
|
||||
unset($item);
|
||||
return $lists;
|
||||
}
|
||||
|
@ -36,8 +36,8 @@ class DictDataLists extends BaseAdminDataLists implements ListsSearchInterface
|
||||
public function setSearch(): array
|
||||
{
|
||||
return [
|
||||
'%like%' => ['name', 'type_value'],
|
||||
'=' => ['status', 'type_id']
|
||||
'%like%' => ['name'],
|
||||
'=' => ['status', 'type_id', 'type_value']
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -62,8 +62,8 @@ class TaskSchedulingPlanLists extends BaseAdminDataLists implements ListsSearchI
|
||||
}
|
||||
return TaskSchedulingPlan::where($this->searchWhere)
|
||||
->where($where)
|
||||
->with(['template'])
|
||||
->field(['id', 'create_user_id', 'template_id', 'scheduling_id', 'start_time', 'end_time', 'status'])
|
||||
->with(['template','templateInfo'])
|
||||
// ->field(['id', 'create_user_id', 'template_id', 'scheduling_id', 'start_time', 'end_time', 'status'])
|
||||
->limit($this->limitOffset, $this->limitLength)
|
||||
->order(['id' => 'desc'])
|
||||
->select()
|
||||
|
106
app/adminapi/logic/CompanyComplaintFeedbackLogic.php
Normal file
106
app/adminapi/logic/CompanyComplaintFeedbackLogic.php
Normal file
@ -0,0 +1,106 @@
|
||||
<?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\adminapi\logic;
|
||||
|
||||
|
||||
use app\common\model\CompanyComplaintFeedback;
|
||||
use app\common\logic\BaseLogic;
|
||||
use think\facade\Db;
|
||||
|
||||
|
||||
/**
|
||||
* CompanyComplaintFeedback逻辑
|
||||
* Class CompanyComplaintFeedbackLogic
|
||||
* @package app\adminapi\logic
|
||||
*/
|
||||
class CompanyComplaintFeedbackLogic extends BaseLogic
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* @notes 添加
|
||||
* @param array $params
|
||||
* @return bool
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:08
|
||||
*/
|
||||
public static function add(array $params): bool
|
||||
{
|
||||
Db::startTrans();
|
||||
try {
|
||||
CompanyComplaintFeedback::create([
|
||||
'content' => $params['content'],
|
||||
]);
|
||||
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 编辑
|
||||
* @param array $params
|
||||
* @return bool
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:08
|
||||
*/
|
||||
public static function edit(array $params): bool
|
||||
{
|
||||
Db::startTrans();
|
||||
try {
|
||||
CompanyComplaintFeedback::where('id', $params['id'])->update([
|
||||
'content' => $params['content'],
|
||||
]);
|
||||
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 删除
|
||||
* @param array $params
|
||||
* @return bool
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:08
|
||||
*/
|
||||
public static function delete(array $params): bool
|
||||
{
|
||||
return CompanyComplaintFeedback::destroy($params['id']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 获取详情
|
||||
* @param $params
|
||||
* @return array
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:08
|
||||
*/
|
||||
public static function detail($params): array
|
||||
{
|
||||
return CompanyComplaintFeedback::findOrEmpty($params['id'])->toArray();
|
||||
}
|
||||
}
|
@ -99,6 +99,36 @@ class ConfigLogic
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 根据类型获取字典类型
|
||||
* @param $type
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @author 段誉
|
||||
* @date 2022/9/27 19:09
|
||||
*/
|
||||
public static function getDictTypeValueByType($type)
|
||||
{
|
||||
if (!is_string($type)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$type = explode(',', $type);
|
||||
$lists = DictData::whereIn('type_value', $type)->select()->toArray();
|
||||
|
||||
if (empty($lists)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$result = [];
|
||||
foreach ($lists as $dict) {
|
||||
$result[$dict['name']] = $dict;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -119,6 +119,10 @@ class ShopContractLogic extends BaseLogic
|
||||
province,city,area,street,village,brigade,address,province province_name,city city_name,area area_name,street street_name,village village_name,brigade brigade_name,master_phone,master_name,
|
||||
qualification'];
|
||||
$shopMerchant = ShopMerchant::where(['id' => $data['party_b']])->field($field)->find()->toArray();
|
||||
$shopMerchant['qualification'] = json_decode($shopMerchant['qualification'], true);
|
||||
if($shopMerchant['qualification'] && isset($shopMerchant['qualification']['other_qualifications'])){
|
||||
$shopMerchant['qualification']['other_qualifications']=json_decode($shopMerchant['qualification']['other_qualifications'],true);
|
||||
}
|
||||
return $shopMerchant;
|
||||
})
|
||||
->withAttr('party_a_info', function ($value, $data) {
|
||||
@ -126,7 +130,9 @@ class ShopContractLogic extends BaseLogic
|
||||
province,city,area,street,village,brigade,address,province province_name,city city_name,area area_name,street street_name,village village_name,brigade brigade_name,master_phone,master_name,
|
||||
qualification'];
|
||||
$shopMerchant = ShopMerchant::where(['id' => $data['party_a']])->field($field)->find()->toArray();
|
||||
|
||||
if($shopMerchant['qualification'] && isset($shopMerchant['qualification']['other_qualifications'])){
|
||||
$shopMerchant['qualification']['other_qualifications']=json_decode($shopMerchant['qualification']['other_qualifications'],true);
|
||||
}
|
||||
return $shopMerchant;
|
||||
})
|
||||
->withAttr('status_name', function ($value, $data) {
|
||||
|
96
app/adminapi/validate/CompanyComplaintFeedbackValidate.php
Normal file
96
app/adminapi/validate/CompanyComplaintFeedbackValidate.php
Normal file
@ -0,0 +1,96 @@
|
||||
<?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\adminapi\validate;
|
||||
|
||||
|
||||
use app\common\validate\BaseValidate;
|
||||
|
||||
|
||||
/**
|
||||
* CompanyComplaintFeedback验证器
|
||||
* Class CompanyComplaintFeedbackValidate
|
||||
* @package app\adminapi\validate
|
||||
*/
|
||||
class CompanyComplaintFeedbackValidate extends BaseValidate
|
||||
{
|
||||
|
||||
/**
|
||||
* 设置校验规则
|
||||
* @var string[]
|
||||
*/
|
||||
protected $rule = [
|
||||
'id' => 'require',
|
||||
'content' => 'require',
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
* 参数描述
|
||||
* @var string[]
|
||||
*/
|
||||
protected $field = [
|
||||
'id' => 'id',
|
||||
'content' => '内容',
|
||||
];
|
||||
|
||||
|
||||
/**
|
||||
* @notes 添加场景
|
||||
* @return CompanyComplaintFeedbackValidate
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:08
|
||||
*/
|
||||
public function sceneAdd()
|
||||
{
|
||||
return $this->only(['content']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 编辑场景
|
||||
* @return CompanyComplaintFeedbackValidate
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:08
|
||||
*/
|
||||
public function sceneEdit()
|
||||
{
|
||||
return $this->only(['id','content']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 删除场景
|
||||
* @return CompanyComplaintFeedbackValidate
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:08
|
||||
*/
|
||||
public function sceneDelete()
|
||||
{
|
||||
return $this->only(['id']);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @notes 详情场景
|
||||
* @return CompanyComplaintFeedbackValidate
|
||||
* @author likeadmin
|
||||
* @date 2023/09/23 15:08
|
||||
*/
|
||||
public function sceneDetail()
|
||||
{
|
||||
return $this->only(['id']);
|
||||
}
|
||||
|
||||
}
|
51
app/api/controller/ApproveController.php
Normal file
51
app/api/controller/ApproveController.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use app\api\lists\approve\ApproveLists;
|
||||
use app\common\logic\approve\ApproveLogic;
|
||||
use app\common\model\Approve;
|
||||
use Symfony\Component\HttpClient\HttpClient;
|
||||
use think\Exception;
|
||||
use think\facade\Db;
|
||||
|
||||
class ApproveController extends BaseApiController
|
||||
{
|
||||
public function lists()
|
||||
{
|
||||
return $this->dataLists(new ApproveLists());
|
||||
}
|
||||
|
||||
public function approveType()
|
||||
{
|
||||
$list = Db::name('flow_type')->where(['status' => 1])->field(['id, title'])->select()->toArray();
|
||||
return $this->success('成功', $list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 前台通用审批接口 审批后的业务逻辑,需要具体拆解
|
||||
*/
|
||||
public function audit()
|
||||
{
|
||||
try {
|
||||
$params = $this->request->param(); // id check_status remark
|
||||
$approve = Approve::find($params['id']);
|
||||
if (!$approve) {
|
||||
throw new Exception('数据不存在');
|
||||
}
|
||||
ApproveLogic::audit($approve, $params);
|
||||
return $this->success('操作成功');
|
||||
} catch (Exception $exception) {
|
||||
return $this->fail(ApproveLogic::getError() ?? $exception->getMessage());
|
||||
}
|
||||
}
|
||||
public function detail()
|
||||
{
|
||||
$param = $this->request->param();
|
||||
$detail = ApproveLogic::detail($param['id']);
|
||||
if (!$detail) {
|
||||
$this->fail('数据不存在');
|
||||
}
|
||||
return $this->success('成功', $detail->toArray());
|
||||
}
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
use app\common\logic\CompanyLogic;
|
||||
@ -14,70 +15,122 @@ use app\common\model\user\UserAccountLog;
|
||||
use think\facade\Log;
|
||||
use app\job\TaskAdd;
|
||||
use app\job\TaskInformationJob;
|
||||
use app\job\TaskTenZehn;
|
||||
use app\api\controller\JunziqianController;
|
||||
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'];
|
||||
public array $notNeedLogin = ['index', 'ceshi', 'ceshi1', 'ceshi2', 'task_ceshi'];
|
||||
|
||||
/**
|
||||
* 任务结算
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
{ //1201
|
||||
|
||||
// $transaction_pool=780;
|
||||
// $shang_date_total_price=[
|
||||
// 'arr'=>['total_price'=>305,'day_money'=>580]
|
||||
// ];
|
||||
// if(bcadd($shang_date_total_price['arr']['total_price'],$transaction_pool,2)>$shang_date_total_price['arr']['day_money']){
|
||||
// if($shang_date_total_price['arr']['total_price']<$shang_date_total_price['arr']['day_money']){
|
||||
// $shang_date_total_price['arr']['supplement']=bcsub($shang_date_total_price['arr']['day_money'],$shang_date_total_price['arr']['total_price'],2);
|
||||
// }else{
|
||||
// $shang_date_total_price['arr']['supplement']=0;
|
||||
// $shang_date_total_price['arr']['after_transaction_pool']=0;
|
||||
$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' => '认证回调错误']);
|
||||
// }
|
||||
// $shang_date_total_price['arr']['before_transaction_pool']=$transaction_pool;
|
||||
// Task::where('id', 839)->update(['status' => 3,'extend'=>json_encode($shang_date_total_price)]);
|
||||
|
||||
// $day_money=bcsub($shang_date_total_price['arr']['total_price'],$shang_date_total_price['arr']['day_money'],2);//当天还剩多少
|
||||
|
||||
// TaskTemplate::where('id',109)->update(['transaction_pool'=>bcadd($transaction_pool,$day_money,2)]);
|
||||
$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);
|
||||
// }
|
||||
$all=TaskSchedulingPlan::where('id',943)->with(['template_info','scheduling'])->select()->toArray();
|
||||
foreach($all as $k=>$v){
|
||||
queue(TaskInformationJob::class,$v);
|
||||
}
|
||||
return true;
|
||||
$plan_all = TaskScheduling::where('id',119)->with('company_info')->select()->toArray();
|
||||
$plan_ids = [];
|
||||
foreach ($plan_all as $k => $v) {
|
||||
$all = TaskTemplate::where('id', 116)->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) {
|
||||
halt($res);
|
||||
|
||||
queue(TaskAdd::class,['data'=>$vv,'data_two'=>$v]);
|
||||
$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;
|
||||
}
|
||||
$company_id[] = $v['company_id'];
|
||||
// $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 ceshi(){
|
||||
return false;
|
||||
$time=strtotime(date('Y-m-d'));
|
||||
// $time=strtotime(date('Y-m-d'));
|
||||
// $tiem_end=$time+86399;where('cron_time','<',$time)->
|
||||
$plan_all=TaskScheduling::where('id',99)->with('company_info')->select()->toArray();
|
||||
$plan_all=TaskScheduling::where('id',8)->with('company_info')->select()->toArray();
|
||||
foreach($plan_all as $k=>$v){
|
||||
$all=TaskTemplate::where('status',1)->where('task_scheduling',$v['id'])->limit(30)->select()->toArray();
|
||||
if($all){
|
||||
@ -96,44 +149,31 @@ return false;
|
||||
Company::where('id','in',$company_id)->inc('day_count')->update();
|
||||
}
|
||||
|
||||
public function stage_inspection($v,$moeny_type='moeny',$title='一'){
|
||||
$count_moeny=0;
|
||||
foreach($v['template'] as $kkkk=>$vvvv){
|
||||
$count_moeny+=$vvvv[$moeny_type];
|
||||
}
|
||||
if($count_moeny>200){
|
||||
Log::info($title.'阶段金额大于200无法下达'.json_encode($v['company_info']));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//三轮车判断
|
||||
public function ceshi1(){
|
||||
$params=[
|
||||
'car_id'=>3,
|
||||
'start_time'=>'2023-08-18',
|
||||
'end_time'=>'2023-08-18 23:59:59'
|
||||
];
|
||||
$task=Task::where('id',487)->select()->toArray();
|
||||
foreach($task as $k=>$v){
|
||||
if(isset($v['extend']['terminus']['lnglat'])&& isset($v['extend']['transfer']['lnglat'])){
|
||||
$arr=$v['extend']['terminus']['lnglat'];
|
||||
$a=app(RemoteController::class)->coordinate($params,$arr[0],$arr[1]);
|
||||
|
||||
$arr_two=$v['extend']['transfer']['lnglat'];
|
||||
$b=app(RemoteController::class)->coordinate($params,$arr_two[0],$arr_two[1]);
|
||||
if($a<500 && $b<500){
|
||||
Task::where('id',$v['id'])->update(['status'=>3]);
|
||||
}
|
||||
public function task_ceshi()
|
||||
{
|
||||
$time = strtotime(date('Y-m-d'));
|
||||
// $tiem_end=$time+86399;
|
||||
$plan_all = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->where('company_type', 18)->with('company_info')->select()->toArray();
|
||||
|
||||
$plan_ids = [];
|
||||
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]);
|
||||
}
|
||||
$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'));
|
||||
}
|
||||
|
||||
public function ceshi2(){
|
||||
$company = Company::where(['id'=>238])->find();
|
||||
$re = CompanyLogic::originationFaceCreate($company);
|
||||
halt($re);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -58,4 +58,16 @@ class CommonController extends BaseApiController
|
||||
return $this->data($data->toArray());
|
||||
|
||||
}
|
||||
|
||||
public function dict_data_lists_by_type_value($type_value)
|
||||
{
|
||||
$data= DictData::where(['type_value' => $type_value])
|
||||
->append(['status_desc'])
|
||||
->limit(100)
|
||||
->order(['sort' => 'desc', 'id' => 'desc'])
|
||||
->select();
|
||||
|
||||
return $this->data($data->toArray());
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ class CompanyAccountLogController extends BaseApiController{
|
||||
$where=[];
|
||||
$where['company_id']=$this->userInfo['company_id'];
|
||||
$where['change_object']=CompanyAccountLog::SHAREHOLDER;
|
||||
$where['change_type']=CompanyAccountLog::TASK_INC_SHAREHOLDER_MONEY;
|
||||
// $where['change_type']=CompanyAccountLog::TASK_INC_SHAREHOLDER_MONEY;
|
||||
$count=CompanyAccountLog::where($where)->count();
|
||||
$lists=CompanyAccountLog::where($where)->page($page,$limit)->order('id','desc')->select();
|
||||
return $this->success('ok',['count'=>$count,'list'=>$lists]);
|
||||
|
@ -5,9 +5,12 @@ namespace app\api\controller;
|
||||
use app\common\logic\contract\ContractLogic;
|
||||
use app\common\model\auth\Admin;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\company\CompanyAccountLog;
|
||||
use app\common\model\contract\Contract;
|
||||
use app\common\model\task\Task;
|
||||
use app\common\model\user\User;
|
||||
use app\common\model\user\UserAccountLog;
|
||||
use think\Exception;
|
||||
use think\facade\Db;
|
||||
use app\common\model\informationg\UserInformationg;
|
||||
use app\common\model\informationg\UserInformationgDemand;
|
||||
@ -18,6 +21,8 @@ use app\common\model\informationg\UserInformationgDemand;
|
||||
*/
|
||||
class CompanyController extends BaseApiController
|
||||
{
|
||||
public array $notNeedLogin = ['street_company'];
|
||||
|
||||
|
||||
//**签约公司*/
|
||||
public function index()
|
||||
@ -139,7 +144,14 @@ class CompanyController extends BaseApiController
|
||||
$query = User::where('id', $id);
|
||||
$user = $query->with(['company' => function ($query) {
|
||||
$query->field('id,company_name');
|
||||
}])->field('id,sex,avatar,nickname name,account,mobile phone,id_card,qualification,province,province province_name,city,city city_name,area,area area_name,street,street street_name,village,village village_name,brigade,brigade brigade_name, is_contract,company_id,is_captain')->find()->toArray();
|
||||
}])
|
||||
->field('id,sex,avatar,nickname name,account,mobile phone,id_card,qualification,province,province province_name,city,city city_name,area,area area_name,street,street street_name,village,village village_name,brigade,brigade brigade_name, is_contract,company_id,is_captain, group_id')
|
||||
->append(['is_service_manager'], true)
|
||||
->withAttr('is_service_manager', function ($value, $data) {
|
||||
return $data['group_id'] == 14 ?1 :0;
|
||||
})
|
||||
->find()
|
||||
->toArray();
|
||||
|
||||
$contract = Contract::where("type", 2)->where('party_b', $id)->append(['contract_type_name'])->find();
|
||||
$user['contract'] = $contract;
|
||||
@ -194,7 +206,7 @@ class CompanyController extends BaseApiController
|
||||
public function shareholder_info()
|
||||
{
|
||||
// $params = $this->request->param();
|
||||
$find = Company::where('id', $this->userInfo['company_id'])->field('shareholder_money,village')->find()->toArray();
|
||||
$find = Company::where('id', $this->userInfo['company_id'])->field('id,shareholder_money,village')->find()->toArray();
|
||||
$find['is_contract'] = 0;
|
||||
$find['check_status'] = 0;
|
||||
if ($find) {
|
||||
@ -220,10 +232,17 @@ class CompanyController extends BaseApiController
|
||||
} else {
|
||||
$find['is_village'] = 0;
|
||||
}
|
||||
// 股金任务是否完成
|
||||
$task = Task::where(['company_id' => $find['id'], 'type' => 35, 'status' => 3])->find();
|
||||
$find['is_done_task'] = 0;
|
||||
if (!empty($task)) {
|
||||
$find['is_done_task'] = 1;
|
||||
}
|
||||
} else {
|
||||
$find['contract_url'] = '';
|
||||
$find['contract_time'] = '';
|
||||
$find['is_village'] = 0;
|
||||
$find['is_done_task'] = 0;
|
||||
}
|
||||
return $this->success('ok', $find);
|
||||
}
|
||||
@ -255,8 +274,90 @@ class CompanyController extends BaseApiController
|
||||
}
|
||||
return $this->fail(ContractLogic::getError());
|
||||
}
|
||||
|
||||
/**
|
||||
* 小组服务公司股金上交
|
||||
*/
|
||||
public function pay_share_capital()
|
||||
{
|
||||
// return
|
||||
try {
|
||||
// 小组服务公司
|
||||
$serviceGroupCompany = Company::where('id', $this->userInfo['company_id'])->find()->toArray();
|
||||
// 村管理公司
|
||||
$villageCompany = Company::where(['village'=>$serviceGroupCompany['village'], 'company_type' => 17])->find()->toArray();
|
||||
Db::startTrans();
|
||||
// 上交股金金额
|
||||
$amount = $serviceGroupCompany['shareholder_money'];
|
||||
|
||||
$sharecapitalChangeLogData = [
|
||||
'subordinate_company_id' => $serviceGroupCompany['id'],
|
||||
'parent_company_id' => $villageCompany['id'],
|
||||
'amount' => $amount,
|
||||
'create_time' => time(),
|
||||
'update_time' => time(),
|
||||
];
|
||||
$sharecapitalChangeLogInsertId = Db::name('company_sharecapital_change_log')->insertGetId($sharecapitalChangeLogData);
|
||||
|
||||
// 小组服务公司股金变动 + 公司股金减少记录
|
||||
$leftAmount = bcsub($serviceGroupCompany['shareholder_money'], $amount, 2);
|
||||
Company::where('id', $this->userInfo['company_id'])->save(['shareholder_money'=> $leftAmount]);
|
||||
$company_log1 = [
|
||||
'sn' => generate_sn(UserAccountLog::class, 'sn', 20),
|
||||
'company_id' => $serviceGroupCompany['id'],
|
||||
'change_object' => 2, // 变动对象 1余额 2股金
|
||||
'change_type' => CompanyAccountLog::SHAREHOLDER_DEC_DEPOSIT, //变动类型
|
||||
'action' => 2, //1-增加 2-减少
|
||||
'left_amount' => $leftAmount, //变动后数量
|
||||
'change_amount' => $amount, //变动数量
|
||||
'extend' => json_encode(['company_sharecapital_change_log_id' => $sharecapitalChangeLogInsertId]),
|
||||
'status' => 1,
|
||||
];
|
||||
CompanyAccountLog::create($company_log1);
|
||||
|
||||
// 村管理公司股金变动 + 公司股金增加记录
|
||||
$addAmount = bcadd($villageCompany['shareholder_money'], $amount, 2);
|
||||
Company::where('id', $villageCompany['id'])->save(['shareholder_money'=>$addAmount]);
|
||||
|
||||
// 公司账户变动记录
|
||||
$company_log2 = [
|
||||
'sn' => generate_sn(UserAccountLog::class, 'sn', 20),
|
||||
'company_id' => $villageCompany['id'],
|
||||
'change_object' => 2, // 变动对象 1余额 2股金
|
||||
'change_type' => CompanyAccountLog::TASK_INC_SHAREHOLDER_MONEY, //变动类型
|
||||
'action' => 1, //1-增加 2-减少
|
||||
'left_amount' => $addAmount, //变动后数量
|
||||
'change_amount' => $amount, //变动数量
|
||||
'extend' => json_encode(['company_sharecapital_change_log_id' => $sharecapitalChangeLogInsertId]),
|
||||
'status' => 1,
|
||||
];
|
||||
CompanyAccountLog::create($company_log2);
|
||||
Db::commit();
|
||||
return $this->success('上交成功');
|
||||
} catch (Exception $e) {
|
||||
Db::rollback();
|
||||
return $this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function complaint_feedback()
|
||||
{
|
||||
$params = $this->request->param();
|
||||
$company = Company::where('id', $this->userInfo['company_id'])->find()->toArray();
|
||||
Db::name('company_complaint_feedback')->insertGetId(['company_id'=>$company['id'], 'content'=>$params['content'],'create_time'=>time(), 'update_time'=>time()]);
|
||||
return $this->success('成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询镇农科公司
|
||||
*/
|
||||
public function street_company(){
|
||||
$street=$this->request->param('street_code');
|
||||
$company=Db::query("select * from la_company where company_type=:company_type and FIND_IN_SET(:street,responsible_area)", ['company_type' => 41,'street'=>$street], true);
|
||||
if($company){
|
||||
return $this->success('ok',['title'=>$company[0]['company_name'],'organization_code'=>$company[0]['organization_code']]);
|
||||
}else{
|
||||
return $this->fail('当前区域无镇农科公司');
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,8 @@
|
||||
namespace app\api\controller;
|
||||
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
|
||||
use app\job\TaskInformationJob;
|
||||
use app\job\TownTaskAdd;
|
||||
use app\job\TownTaskSettlementJob;
|
||||
use think\facade\Log;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\task_template\TaskTemplate;
|
||||
@ -20,24 +22,36 @@ class CronController extends BaseApiController
|
||||
public array $notNeedLogin = ['settlement','task_add'];
|
||||
|
||||
/**
|
||||
* 结算
|
||||
* 小组服务公司任务结算
|
||||
*/
|
||||
public function settlement(){
|
||||
$all=TaskSchedulingPlan::where('is_pay',0)->with(['template_info','scheduling'])->select()->toArray();
|
||||
// $all=TaskSchedulingPlan::where('is_pay',0)->with(['template_info','scheduling'])->select()->toArray();
|
||||
$all = TaskSchedulingPlan::whereDay('end_time','yesterday')
|
||||
->withJoin(['scheduling'], 'left')
|
||||
->where('scheduling.company_type', 18)
|
||||
->where('is_pay',0)
|
||||
->with(['template_info'])
|
||||
->select()
|
||||
->toArray();
|
||||
foreach($all as $k=>$v){
|
||||
queue(TaskInformationJob::class,$v);
|
||||
}
|
||||
Log::info('定时任务结算执行成功'.date('Y-m-d H:i:s'));
|
||||
return $this->success('定时任务结算执行成功');
|
||||
Log::info('小组服务公司定时任务结算执行成功'.date('Y-m-d H:i:s'));
|
||||
return $this->success('小组服务公司定时任务结算执行成功');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 小组服务公司任务下发
|
||||
*/
|
||||
public function task_add(){
|
||||
//任务下发
|
||||
// $time=strtotime(date('Y-m-d',strtotime('-1 day')));
|
||||
$time = strtotime(date('Y-m-d'));
|
||||
// $tiem_end=$time+86399;
|
||||
$plan_all = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->with('company_info')->select()->toArray();
|
||||
// $plan_all = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->with('company_info')->select()->toArray();
|
||||
$plan_all = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->where('company_type', 18)->with('company_info')->select()->toArray();
|
||||
|
||||
$plan_ids = [];
|
||||
foreach ($plan_all as $k => $v) {
|
||||
$all = TaskTemplate::where('status', 1)->where('task_scheduling', $v['id'])->limit(30)->select()->toArray();
|
||||
@ -57,7 +71,59 @@ class CronController extends BaseApiController
|
||||
}
|
||||
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'));
|
||||
Log::info('小组服务公司定时任务下发执行成功' . date('Y-m-d H:i:s'));
|
||||
return $this->success('定时任务下发执行成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 镇农科公司任务结算
|
||||
*/
|
||||
public function town_task_settlement()
|
||||
{
|
||||
Log::info('镇农科公司定时任务结算执行-开始'.date('Y-m-d H:i:s'));
|
||||
//yesterday 昨日未结算的任务计划
|
||||
$taskSchedulingPlanList = TaskSchedulingPlan::whereDay('end_time','yesterday')
|
||||
->withJoin(['scheduling'], 'left')
|
||||
->where('scheduling.company_type', 41)
|
||||
->where('is_pay',0)
|
||||
->with(['template_info'])
|
||||
->select()
|
||||
->toArray();
|
||||
foreach($taskSchedulingPlanList as $taskSchedulingPlan){
|
||||
queue(TownTaskSettlementJob::class, $taskSchedulingPlan);
|
||||
}
|
||||
Log::info('镇农科公司定时任务结算执行-结束'.date('Y-m-d H:i:s'));
|
||||
return $this->success('镇农科公司定时任务结算执行成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 镇农科公司任务下发
|
||||
*/
|
||||
public function town_task_add()
|
||||
{
|
||||
//任务下发
|
||||
$time = strtotime(date('Y-m-d'));
|
||||
// 查询系统 所有镇农科公司 未下发 的 任务安排
|
||||
$taskSchedulingList = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->where('company_type', 41)->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) {
|
||||
queue(TownTaskAdd::class, $template);
|
||||
// TaskLogic::TownCronAdd($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('镇农科公司定时任务下发执行成功');
|
||||
}
|
||||
}
|
@ -108,7 +108,7 @@ class IndexController extends BaseApiController
|
||||
if ($find) {
|
||||
if ($find['signing_timer'] == 0) {
|
||||
Db::name('contract')->where('id', $a['id'])->update(['signing_timer' => 1]);
|
||||
return true;
|
||||
return json(['success' => true, 'msg' => '成功']);
|
||||
} else if ($find['signing_timer'] == 1) {
|
||||
Db::name('contract')->where('id', $a['id'])->update(['status' => 1, 'signing_timer' => 2]);
|
||||
if ($find['type'] == 1) {
|
||||
@ -126,7 +126,7 @@ class IndexController extends BaseApiController
|
||||
/**商户合同签约回调 */
|
||||
public function shopContractNotifyUrl()
|
||||
{
|
||||
$a = Request()->get();
|
||||
$a = Request()->param();
|
||||
Log::info(['商户合同签约回调', $a]);
|
||||
// 获取合同详情
|
||||
if ($a) {
|
||||
@ -136,7 +136,7 @@ class IndexController extends BaseApiController
|
||||
// 合同一方已签约
|
||||
if ($find['signing_timer'] == 0) {
|
||||
Db::name('shop_contract')->where('id', $a['id'])->update(['signing_timer' => 1]);
|
||||
return true;
|
||||
return json(['success' => true, 'msg' => '成功']);
|
||||
} else if ($find['signing_timer'] == 1) {
|
||||
// 合同另一方已签约,修改合同状态,修改公司状态
|
||||
Db::name('shop_contract')->where('id', $a['id'])->update(['status' => 1, 'signing_timer' => 2]);
|
||||
@ -531,10 +531,17 @@ class IndexController extends BaseApiController
|
||||
{
|
||||
$parmas = Request()->param();
|
||||
Log::info(['认证回调:',$parmas]);
|
||||
|
||||
try {
|
||||
$data=json_decode($parmas['data'],true);
|
||||
|
||||
if($data['status']==2){
|
||||
return json(['success' => false, 'msg' => '失败']);
|
||||
}
|
||||
if ($parmas) {
|
||||
// 商城系统商户入驻
|
||||
if (isset($parmas['type']) && $parmas['type'] == 'shop_merchant') {
|
||||
Db::name('company_form')->where('master_email',$data['emailOrMobile'])->update(['type' => 1]);
|
||||
$this->shopMerchantCall($parmas);
|
||||
return json(['success' => true, 'msg' => '成功']);
|
||||
} else {
|
||||
@ -560,7 +567,7 @@ class IndexController extends BaseApiController
|
||||
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
Log::error('认证回调错误:'.$e->getMessage());
|
||||
Log::error('认证回调错误569:'.$e->getMessage());
|
||||
}
|
||||
|
||||
return json(['success' => false, 'msg' => '失败,没有参数']);
|
||||
@ -569,8 +576,18 @@ class IndexController extends BaseApiController
|
||||
private function shopMerchantCall($parmas)
|
||||
{
|
||||
$shopMerchant = ShopMerchant::find(['id', $parmas['id']]);
|
||||
Log::error($shopMerchant);
|
||||
if($shopMerchant==null){
|
||||
// Log::error(['没有商户580:',$parmas]);
|
||||
return json(['success' => false, 'msg' => '认证回调错误']);
|
||||
}
|
||||
$data=json_decode($parmas['data'],true);
|
||||
if($data['status']==1){
|
||||
if($data['organizationRegNo']!=$shopMerchant['organization_code']){
|
||||
Log::error(['认证回调错误586:',$parmas]);
|
||||
return json(['success' => false, 'msg' => '认证回调错误']);
|
||||
}
|
||||
|
||||
$shopMerchant->save(['is_authentication' => 1]);
|
||||
// 生成合同
|
||||
$createContractData = [
|
||||
|
@ -26,7 +26,7 @@ class JunziqianController extends BaseApiController
|
||||
|
||||
public function initialize()
|
||||
{
|
||||
$this->serviceUrl=env('junzi.url');
|
||||
$this->serviceUrl=env('junzi.url_prefix');
|
||||
$this->appkey=env('junzi.app_key');
|
||||
$this->appSecret=env('junzi.app_secret');
|
||||
|
||||
@ -160,6 +160,19 @@ class JunziqianController extends BaseApiController
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function shopMerchantStatusQuery($email)
|
||||
{
|
||||
$param = Request()->param();
|
||||
$requestUtils = new RequestUtils($this->serviceUrl, $this->appkey, $this->appSecret);
|
||||
//初始化合同参数
|
||||
$request = array(
|
||||
"emailOrMobile" => $email, //TODO *
|
||||
);
|
||||
//发起请求
|
||||
$response = $requestUtils->doPost("/v2/user/organizationAuditStatus", $request);
|
||||
return $response;
|
||||
}
|
||||
|
||||
//企业自定义公章
|
||||
public function Custom_seal()
|
||||
{
|
||||
|
@ -16,7 +16,7 @@ namespace app\api\controller;
|
||||
use app\api\lists\recharge\RechargeLists;
|
||||
use app\api\logic\RechargeLogic;
|
||||
use app\api\validate\RechargeValidate;
|
||||
|
||||
use app\common\model\company\CompanyAccountLog;
|
||||
|
||||
/**
|
||||
* 充值控制器
|
||||
@ -36,6 +36,18 @@ class RechargeController extends BaseApiController
|
||||
{
|
||||
return $this->dataLists(new RechargeLists());
|
||||
}
|
||||
public function deposit_lists()
|
||||
{
|
||||
$params=$this->request->param();
|
||||
$list=CompanyAccountLog::where('company_id',$this->userId)->page($params['page_no'],15)->select();
|
||||
$datas=[];
|
||||
foreach($list as $k=>$v){
|
||||
$datas[$k]['create_time']=$v['create_time'];
|
||||
$datas[$k]['order_amount']=$v['change_amount'];
|
||||
$datas[$k]['tips']='充值保证金'.$v['change_amount'];
|
||||
}
|
||||
return $this->success('ok',['count'=>0,'extend'=>[],'lists'=>$datas,'page_no'=>$params['page_no'],'page_size'=>$params['page_size']]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
@ -208,6 +208,7 @@ class RemoteController extends BaseApiController
|
||||
/**
|
||||
*
|
||||
* 计算两点之间的距离
|
||||
* 返回米
|
||||
*/
|
||||
function calculateDistance($longitude1, $latitude1, $longitude2, $latitude2)
|
||||
{
|
||||
@ -220,7 +221,6 @@ class RemoteController extends BaseApiController
|
||||
cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) *
|
||||
sin($dLon / 2) * sin($dLon / 2);
|
||||
$c = 2 * asin(sqrt($a));
|
||||
|
||||
return $earthRadius * $c * 100;
|
||||
return round($earthRadius * $c*1000) ;
|
||||
}
|
||||
}
|
||||
|
@ -3,13 +3,19 @@
|
||||
namespace app\api\controller;
|
||||
|
||||
use app\common\logic\task\TaskLogic;
|
||||
use app\common\model\Approve;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\company\CompanyProperty;
|
||||
use app\common\model\contract\Contract;
|
||||
use app\common\model\dict\DictData;
|
||||
use app\common\model\flow\Flow;
|
||||
use app\common\model\informationg\UserInformationg;
|
||||
use app\common\model\task\Task;
|
||||
use app\common\model\task_template\TaskTemplate;
|
||||
use app\common\model\user\User;
|
||||
use think\facade\Log;
|
||||
use think\Exception;
|
||||
use think\facade\Db;
|
||||
|
||||
|
||||
class TaskController extends BaseApiController
|
||||
{
|
||||
@ -50,11 +56,13 @@ class TaskController extends BaseApiController
|
||||
if (isset($param['status']) && $param['status'] > 0) {
|
||||
$where[] = ['status', '=', $param['status']];
|
||||
}
|
||||
$townTaskTypeList = DictData::where(['type_value' => 'town_task_type', 'status' => 1])->column('value', 'id');
|
||||
$res = Task::where($where)
|
||||
->field(['id', 'title', 'money', 'template_id', 'director_uid', 'company_id', 'start_time', 'end_time', 'director_uid', 'type', 'status', 'content', 'extend'])
|
||||
->page($page, 25)
|
||||
->order(['id' => 'desc', 'status' => 'asc'])
|
||||
->select()->toArray();
|
||||
|
||||
foreach ($res as $k => $item) {
|
||||
if ($item['type'] == 33) {
|
||||
$company = Company::where('id', $item['company_id'])->field('id,deposit,company_money,user_id,day_count,company_type,province,city,area,street,village,brigade,responsible_area')->find(); // 可能要判断预存金是否满足
|
||||
@ -74,7 +82,68 @@ class TaskController extends BaseApiController
|
||||
$res[$k]['extend']['transaction'] = '';
|
||||
}
|
||||
}
|
||||
if (isset($townTaskTypeList[$item['type']])) {
|
||||
if ($townTaskTypeList[$item['type']] == 'town_task_type_1') {
|
||||
// 协助总负责人开展工作任务
|
||||
$groupServiceCompanyCount = 0; // 已安排任务的小组服务公司总数
|
||||
$notDoneTaskGroupServiceCompanyCount = 0; // 未完成每日任务的小组服务公司总数
|
||||
|
||||
$townCompany = Company::where(['id' => $item['company_id']])->find();
|
||||
$groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type' => 18])->select()->toArray();
|
||||
foreach ($groupServiceCompanyList as $groupServiceCompany) {
|
||||
// 小组服务公司是否有对应的每日任务安排
|
||||
$templateList = TaskTemplate::where(['company_id' => $groupServiceCompany['id']])->whereIn('type', [31, 32, 33])->select()->toArray();
|
||||
|
||||
if(count($templateList) === 3) {
|
||||
$groupServiceCompanyCount += 1;
|
||||
foreach ($templateList as $template) {
|
||||
$task = Task::where(['template_id' => $template['id'], 'status' => 3])->find();
|
||||
if (empty($task)) {
|
||||
$notDoneTaskGroupServiceCompanyCount += 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$res[$k]['extend'] = ['total' => $groupServiceCompanyCount, 'not_done_count' => $notDoneTaskGroupServiceCompanyCount];
|
||||
}
|
||||
if ($townTaskTypeList[$item['type']] == 'town_task_type_2') {
|
||||
// 拓展小组服务团队工作任务
|
||||
$contractCount = 15; // 小组服务合同总数
|
||||
$doneContractCount = 0; // 已完成小组服务合同数
|
||||
$townCompany = Company::where(['id' => $item['company_id']])->find();
|
||||
$doneContractCount = Contract::where(['party_a' => $townCompany['id'], 'status' => 1, 'contract_type' => 25])->count();
|
||||
$res[$k]['extend'] = ['total' => $contractCount, 'done_count' => $doneContractCount];
|
||||
}
|
||||
}
|
||||
|
||||
// break;
|
||||
// case 'town_task_type_2':
|
||||
// // 拓展小组服务团队工作任务
|
||||
//
|
||||
// break;
|
||||
// case 'town_task_type_3':
|
||||
// // 督促小组服务团队完成任务,协助开展工作,解决问题任务
|
||||
//
|
||||
// break;
|
||||
// case 'town_task_type_4':
|
||||
// // 督促小组服务团队学习任务
|
||||
//
|
||||
// break;
|
||||
// case 'town_task_type_5':
|
||||
// // 督促小组服务团队完成需求手机和交易任务
|
||||
//
|
||||
// break;
|
||||
// case 'town_task_type_6':
|
||||
// // 督促小组服务团队入股村联络员所成立的公司任务
|
||||
//
|
||||
// break;
|
||||
// case 'town_task_type_7':
|
||||
// // 安全工作任务
|
||||
//
|
||||
// break;
|
||||
}
|
||||
|
||||
return $this->success('ok', $res);
|
||||
}
|
||||
|
||||
@ -155,9 +224,13 @@ class TaskController extends BaseApiController
|
||||
if( $parmas['terminus']['lnglat'][0]==null || $parmas['terminus']['lnglat'][0]<=0){
|
||||
return $this->fail('定位不存在');
|
||||
}
|
||||
$res = App(RemoteController::class)->coordinate($datas, $parmas['terminus']['lnglat'][0], $parmas['terminus']['lnglat'][1]);
|
||||
$res = App(RemoteController::class)->calculateDistance($task['extend']['terminus']['lnglat'][0],$task['extend']['terminus']['lnglat'][1], $parmas['terminus']['lnglat'][0], $parmas['terminus']['lnglat'][1]);
|
||||
if($res>200){
|
||||
return $this->fail('定位坐标大于200米,请重新打卡。'.$res.'米');
|
||||
}
|
||||
$res_two = App(RemoteController::class)->coordinate($datas, $parmas['terminus']['lnglat'][0], $parmas['terminus']['lnglat'][1]);
|
||||
if($res===false){
|
||||
return $this->fail('定位不存在|或GPS无轨迹');
|
||||
return $this->fail('GPS无轨迹');
|
||||
}
|
||||
$task['extend']['update']['terminus'] = $parmas['terminus'];
|
||||
}
|
||||
@ -165,21 +238,25 @@ class TaskController extends BaseApiController
|
||||
if( $parmas['transfer']['lnglat'][0]==null || $parmas['transfer']['lnglat'][0]<=0){
|
||||
return $this->fail('定位不存在');
|
||||
}
|
||||
$res = App(RemoteController::class)->coordinate($datas, $parmas['transfer']['lnglat'][0], $parmas['transfer']['lnglat'][1]);
|
||||
$res = App(RemoteController::class)->calculateDistance($task['extend']['transfer']['lnglat'][0],$task['extend']['transfer']['lnglat'][1], $parmas['transfer']['lnglat'][0], $parmas['transfer']['lnglat'][1]);
|
||||
if($res>200){
|
||||
return $this->fail('定位坐标大于200米,请重新打卡。'.$res.'米');
|
||||
}
|
||||
$res_two = App(RemoteController::class)->coordinate($datas, $parmas['transfer']['lnglat'][0], $parmas['transfer']['lnglat'][1]);
|
||||
if($res===false){
|
||||
return $this->fail('定位不存在|或GPS无轨迹');
|
||||
return $this->fail('GPS无轨迹');
|
||||
}
|
||||
$task['extend']['update']['transfer'] = $parmas['transfer'];
|
||||
}
|
||||
if (isset($task['extend']['update']['terminus']) && isset($task['extend']['update']['transfer'])) {
|
||||
$data['status'] = 3;
|
||||
}
|
||||
if($res<100){
|
||||
if($res_two<1000){
|
||||
$data['extend'] = json_encode($task['extend']);
|
||||
Task::where('id', $parmas['id'])->update($data);
|
||||
return $this->success('更新成功');
|
||||
}
|
||||
return $this->fail('定位坐标大于100米,请重新打卡');
|
||||
return $this->fail('定位坐标大于200米,请重新打卡。'.$res.'米');
|
||||
}
|
||||
|
||||
public function informationg_list()
|
||||
@ -202,4 +279,99 @@ class TaskController extends BaseApiController
|
||||
}
|
||||
return $this->success('ok', $list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 其他任务详情
|
||||
*/
|
||||
public function other_task_detail(){
|
||||
$parmas = $this->request->param();
|
||||
$task = TaskLogic::detail($parmas);
|
||||
$extend = $task['extend'];
|
||||
if ($extend['other']['is_commit'] == 1) {
|
||||
$approve = Approve::where(['task_id' =>$task['id']])->find();
|
||||
$task['approve_status'] = $approve['check_status']; //审核状态
|
||||
$task['deny_notes'] = $approve['remark']; // 拒绝原因
|
||||
}
|
||||
return $this->success('ok', $task);
|
||||
}
|
||||
|
||||
/**
|
||||
* 其他任务 -提交
|
||||
*/
|
||||
public function commit_other_task()
|
||||
{
|
||||
try {
|
||||
$parmas = $this->request->param(); //id note annex vedio_annex
|
||||
$task = TaskLogic::detail($parmas);
|
||||
if (empty($task)) {
|
||||
$this->fail('任务不存在');
|
||||
}
|
||||
$extend = ['other' => ['is_commit' => 1, 'note' => $parmas['note'], 'annex'=>$parmas['annex'], 'video_annex' => $parmas['video_annex']]];
|
||||
Db::startTrans();
|
||||
Task::where(['id' => $parmas['id']])->update(['extend' => json_encode($extend), 'update_time'=>time(), 'director_uid'=>$this->userId]); // director_uid 指派人
|
||||
|
||||
// 片区经理
|
||||
$areaManagerId = User::where(['id' => $this->userId])->with('company')->value('area_manager');
|
||||
|
||||
// 没有则创建审批任务
|
||||
$approveModel = Approve::where(['task_id' => $task['id']])->find();
|
||||
if ($approveModel->isEmpty()) {
|
||||
$approveModel->type = 1;
|
||||
$approveModel->flow_id = 1;
|
||||
$approveModel->name = $task['title'];
|
||||
$approveModel->type = 1;
|
||||
$approveModel->admin_id = 0; // 后台发起人id 暂时为0
|
||||
$approveModel->user_id = $this->userId; // 前台发起人用户id
|
||||
$approveModel->task_id = $task['id']; // 前台发起人用户id
|
||||
$approveModel->department_id = '0';
|
||||
$approveModel->check_admin_ids = $areaManagerId; // 当前审批人ID 片区经理的admin_id
|
||||
$approveModel->check_status = 1; // 状态 0待审核,1审核中,2审核通过,3审核不通过,4撤销审核
|
||||
$approveModel->other_type = 6;
|
||||
$approveModel->create_time = time();
|
||||
$approveModel->update_time = time();
|
||||
$approveModel->save();
|
||||
} else {
|
||||
// 有则更新状态
|
||||
$approveModel->check_status = 1; // 状态 0待审核,1审核中,2审核通过,3审核不通过,4撤销审核
|
||||
$approveModel->save();
|
||||
}
|
||||
|
||||
Db::commit();
|
||||
return $this->success('ok', []);
|
||||
} catch (Exception $e) {
|
||||
Db::rollback();
|
||||
return $this->fail($e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 镇农科公司任务详情
|
||||
*/
|
||||
public function service_task_detail()
|
||||
{
|
||||
$param = $this->request->param();
|
||||
$task = TaskLogic::detail($param);
|
||||
return $this->success('成功', $task);
|
||||
}
|
||||
|
||||
/**
|
||||
* 镇农科公司任务-督促小组服务团队学习任务 -提交
|
||||
*/
|
||||
public function commit_town_task_type4()
|
||||
{
|
||||
try {
|
||||
$parmas = $this->request->param(); //id study_photo sign_in_table study_content
|
||||
$extend = ['town_task_type_4' => ['study_photo'=>$parmas['study_photo'], 'sign_in_table'=>$parmas['sign_in_table'], 'study_content'=> $parmas['study_content']]];
|
||||
if (count($parmas['study_photo']) >= 5 && !empty($parmas['sign_in_table']) && strlen($parmas['study_content'])>=50) {
|
||||
Task::where('id', $parmas['id'])->save(['extend' => json_encode($extend), 'status' => 3]);
|
||||
} else {
|
||||
Task::where('id', $parmas['id'])->save(['extend' => json_encode($extend)]);
|
||||
}
|
||||
return $this->success('成功', []);
|
||||
} catch (Exception $e) {
|
||||
return $this->fail($e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,40 @@ class UploadController extends BaseApiController
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 上传视频
|
||||
* @return Json
|
||||
* @author 段誉
|
||||
* @date 2021/12/29 16:27
|
||||
*/
|
||||
public function video()
|
||||
{
|
||||
try {
|
||||
$cid = $this->request->post('cid', 0);
|
||||
$result = UploadService::video($cid);
|
||||
return $this->success('上传成功', $result);
|
||||
} catch (Exception $e) {
|
||||
return $this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 上传文件
|
||||
* @return Json
|
||||
* @author 段誉
|
||||
* @date 2021/12/29 16:27
|
||||
*/
|
||||
public function file()
|
||||
{
|
||||
try {
|
||||
$cid = $this->request->post('cid', 0);
|
||||
$result = UploadService::file($cid);
|
||||
return $this->success('上传成功', $result);
|
||||
} catch (Exception $e) {
|
||||
return $this->fail($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -21,10 +21,12 @@ use app\api\validate\PasswordValidate;
|
||||
use app\api\validate\SetUserInfoValidate;
|
||||
use app\api\validate\UserValidate;
|
||||
use app\common\logic\contract\ContractLogic;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\contract\Contract;
|
||||
use app\common\model\dict\DictData;
|
||||
use app\common\model\user\User;
|
||||
use app\common\model\user\UserAccountLog;
|
||||
use app\common\model\user\Withdraw;
|
||||
use Common;
|
||||
use think\facade\Db;
|
||||
|
||||
@ -160,17 +162,18 @@ class UserController extends BaseApiController
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户当前可提现的周期以及可提现的金额
|
||||
* 获取用户当前可提现的截止时间以及可提现的金额
|
||||
*/
|
||||
public function getCurrCycleWithdraw()
|
||||
{
|
||||
$userInfo = User::find(['id' => $this->userId]);
|
||||
// 数据字典 提现周期 单位:天数
|
||||
$dictData = ConfigLogic::getDictByType('withdraw_cycle');
|
||||
$endCycle = strtotime(date('Y-m-d', strtotime("-{$dictData['withdraw_cycle'][0]['value']} day")));
|
||||
$company = Company::find(['id' => $userInfo['company_id']]);
|
||||
// 用户提现周期截止日期
|
||||
$endCycle = $company['withdraw_deadline'];
|
||||
$isDraw = time() >= $endCycle? 1: 0; // 当前时间大于截止时间,可提现
|
||||
// 计算公司周期内所有用户已完成的 变动类型为任务收益金额增加 动作为增加的 未提现状态 的变动金额之和
|
||||
$currTotalWithdrawMoney = UserAccountLog::where(['company_id'=>$userInfo['company_id'], 'action'=>1, 'status'=>1, 'is_withdraw'=>0, 'change_type'=>202])->where('create_time','<', $endCycle)->sum('change_amount');
|
||||
return $this->success('成功', ['end_cycle'=>$endCycle, 'user_currrent_total_withdraw_money'=>$currTotalWithdrawMoney], 1, 1);
|
||||
$currTotalWithdrawMoney = UserAccountLog::where(['company_id'=>$userInfo['company_id'], 'action'=>1, 'status'=>1, 'is_withdraw'=>0, 'change_type'=>202])->where('create_time', '<', $endCycle)->sum('change_amount');
|
||||
return $this->success('成功', ['is_draw' => $isDraw,'end_cycle'=>$endCycle, 'user_currrent_total_withdraw_money'=>$currTotalWithdrawMoney], 1, 1);
|
||||
}
|
||||
public function withdraw()
|
||||
{
|
||||
|
@ -576,7 +576,7 @@ class VehicleController extends BaseApiController
|
||||
if($company['company_type'] != 16){
|
||||
return $this->fail('非镇街公司不能访问');
|
||||
}
|
||||
$data = VehicleContract::field('id,contract_no,contract_url,status,create_time,update_time')->where('contract_logistic_id','<>',0)->where('company_b_id',$company['id'])->select();
|
||||
$data = VehicleContract::field('id,contract_no,contract_url,status,create_time,update_time')->where('contract_logistic_id',0)->where('company_b_id',$company['id'])->select();
|
||||
return $this->success('请求成功',$data->toArray());
|
||||
}
|
||||
|
||||
|
62
app/api/lists/approve/ApproveLists.php
Normal file
62
app/api/lists/approve/ApproveLists.php
Normal file
@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\lists\approve;
|
||||
|
||||
use app\api\lists\BaseApiDataLists;
|
||||
use app\common\lists\ListsSearchInterface;
|
||||
use app\common\model\Approve;
|
||||
use app\common\model\user\User;
|
||||
|
||||
class ApproveLists extends BaseApiDataLists implements ListsSearchInterface
|
||||
{
|
||||
/**
|
||||
* @notes 设置搜索条件
|
||||
* @return \string[][]
|
||||
* @author likeadmin
|
||||
* @date 2023/08/31 11:08
|
||||
*/
|
||||
public function setSearch(): array
|
||||
{
|
||||
$param = $this->request->param();
|
||||
if (isset($param['check_status']) && $param['check_status'] == 0) {
|
||||
return [
|
||||
'=' =>['type']
|
||||
];
|
||||
} else {
|
||||
return [
|
||||
'=' =>['type', 'check_status']
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function queryWhere()
|
||||
{
|
||||
$where = [];
|
||||
|
||||
// if (isset($param['type']) && $param['type'] == 2) {
|
||||
$adminId = User::where(['id' => $this->userId])->with('company')->value('admin_id');
|
||||
$where[] = ['check_admin_ids', '=', $adminId]; // 只有片区经理才能查看
|
||||
// }
|
||||
return $where;
|
||||
}
|
||||
|
||||
public function lists(): array
|
||||
{
|
||||
return Approve::where($this->searchWhere)
|
||||
->where($this->queryWhere())
|
||||
->limit($this->limitOffset, $this->limitLength)
|
||||
->order(['id' => 'desc'])
|
||||
->withAttr('extend',function ($value, $data) {
|
||||
return json_decode($data['extend'], true);
|
||||
})
|
||||
->select()
|
||||
->toArray();
|
||||
}
|
||||
|
||||
|
||||
public function count(): int
|
||||
{
|
||||
return Approve::where($this->searchWhere)->count();
|
||||
}
|
||||
}
|
@ -70,6 +70,15 @@ class LoginLogic extends BaseLogic
|
||||
if ($params['is_captain']) {
|
||||
$group_id=2;
|
||||
}
|
||||
// 镇农科公司服务部长
|
||||
if ($params['is_service_manager'] == 1) {
|
||||
$user = User::where(['company_id' => $params['company_id'], 'group_id' => 14])->find();
|
||||
if (!empty($user)) {
|
||||
self::setError('公司已创建服务部长账号');
|
||||
return false;
|
||||
}
|
||||
$group_id=14;
|
||||
}
|
||||
User::create([
|
||||
'sn' => $userSn,
|
||||
'avatar' => $avatar,
|
||||
|
@ -49,6 +49,9 @@ class RechargeLogic extends BaseLogic
|
||||
if(isset($params['task_id']) &&$params['task_id']>0){
|
||||
$data['extend']=json_encode(['task_id'=>$params['task_id'],'type'=>1]);
|
||||
}
|
||||
if(isset($params['type']) &&$params['type']==300){
|
||||
$data['change_type']=300;
|
||||
}
|
||||
$order = RechargeOrder::create($data);
|
||||
|
||||
return [
|
||||
|
@ -328,6 +328,11 @@ class UserLogic extends BaseLogic
|
||||
throw new ValidateException('余额不足');
|
||||
}
|
||||
|
||||
// 发票校验
|
||||
if (empty($params['invoice'])) {
|
||||
throw new ValidateException('没有上传电子发票');
|
||||
}
|
||||
|
||||
// 保存提现记录
|
||||
$withdraw = new Withdraw();
|
||||
$withdraw->user_id = $user['id'];
|
||||
@ -335,6 +340,7 @@ class UserLogic extends BaseLogic
|
||||
$withdraw->order_sn = $withdraw->buildOrderSn();
|
||||
$withdraw->amount = $params['amount'];
|
||||
$withdraw->transfer_end_cycel = $params['transfer_end_cycel'];
|
||||
$withdraw->invoice = $params['invoice'];
|
||||
$withdraw->create_time = time();
|
||||
$withdraw->update_time = time();
|
||||
$withdraw->save();
|
||||
|
@ -115,6 +115,10 @@ class CompanyLogic extends BaseLogic
|
||||
//小组服务公司
|
||||
AdminLogic::insertRole($admin_id, [6]);
|
||||
$admin['group_id']=5;
|
||||
} elseif ($params['company_type']==41) {
|
||||
//镇农科公司 总负责人
|
||||
AdminLogic::insertRole($admin_id, [7]); //后台角色
|
||||
$admin['group_id']=15; // 前台角色
|
||||
}
|
||||
$userSn = User::createUserSn();
|
||||
$admin['admin_id']=$admin_id;
|
||||
|
@ -16,6 +16,7 @@ namespace app\common\logic;
|
||||
|
||||
use app\common\enum\PayEnum;
|
||||
use app\common\enum\user\AccountLogEnum;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\company\CompanyAccountLog;
|
||||
use app\common\model\recharge\RechargeOrder;
|
||||
use app\common\model\task\Task;
|
||||
@ -72,6 +73,24 @@ class PayNotifyLogic extends BaseLogic
|
||||
Task::where('id', $order['extend']['task_id'])->update(['status' => 3,'extend'=>json_encode($extend)]);
|
||||
TaskTemplate::where('id', $find['template_id'])->update(['over_decimal' => $order->order_amount]);
|
||||
} else {
|
||||
|
||||
if($order['change_type']==300){
|
||||
$company=Company::where('user_id',$order['user_id'])->find();
|
||||
$left_amount= $company['deposit']+$order->order_amount;
|
||||
$datas = [
|
||||
'order_sn' => $order->sn,
|
||||
'user_id' => $order->user_id,
|
||||
'company_id' => $company['id']??0,
|
||||
'change_type' => 300,
|
||||
'change_object' => 2,
|
||||
'action' => 1,
|
||||
'change_amount' => $order->order_amount,
|
||||
'left_amount' =>$left_amount,
|
||||
'remark' => '保证金充值',
|
||||
];
|
||||
CompanyAccountLog::create($datas);
|
||||
Company::where('id',$company['id'])->update(['deposit'=>$left_amount]);
|
||||
}else{
|
||||
// 增加用户累计充值金额及用户余额
|
||||
$user = User::findOrEmpty($order->user_id);
|
||||
$user->total_recharge_amount += $order->order_amount;
|
||||
@ -87,6 +106,8 @@ class PayNotifyLogic extends BaseLogic
|
||||
$order->sn,
|
||||
'用户充值'
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 更新充值订单状态
|
||||
|
@ -8,7 +8,9 @@ class RedisLogic extends BaseLogic
|
||||
{
|
||||
$redisInstance = new \Redis();
|
||||
$redisInstance->connect(env('redis.host'));
|
||||
$redisInstance->auth(env('redis.auth'));
|
||||
if (env('redis.auth', '') != '') {
|
||||
$redisInstance->auth(env('redis.auth'));
|
||||
}
|
||||
return $redisInstance;
|
||||
}
|
||||
}
|
65
app/common/logic/approve/ApproveLogic.php
Normal file
65
app/common/logic/approve/ApproveLogic.php
Normal file
@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
namespace app\common\logic\approve;
|
||||
|
||||
use app\common\logic\BaseLogic;
|
||||
use app\common\model\Approve;
|
||||
use Symfony\Component\HttpClient\HttpClient;
|
||||
use think\facade\Db;
|
||||
use think\facade\Log;
|
||||
|
||||
|
||||
class ApproveLogic extends BaseLogic
|
||||
{
|
||||
public static function audit($approve, $params)
|
||||
{
|
||||
// 拒绝通过
|
||||
if ($params['check_status'] == 3) {
|
||||
if (empty($params['remark'])) {
|
||||
self::setError('请输入拒绝理由');
|
||||
}
|
||||
self::refuse($approve, $params);
|
||||
}
|
||||
// 修改任务完成状态
|
||||
if ($params['check_status'] == 2) {
|
||||
self::pass($approve);
|
||||
}
|
||||
|
||||
// 回调商城,通知审核状态
|
||||
if (in_array($approve['type'], [2, 3])) {
|
||||
$shopMerchantInfo = json_decode($approve['extend'], true);
|
||||
self::shopCallBack($approve, $shopMerchantInfo, $params);
|
||||
}
|
||||
}
|
||||
|
||||
private static function pass(Approve $approve)
|
||||
{
|
||||
$approve->check_status = 2;
|
||||
$approve->save();
|
||||
}
|
||||
|
||||
private static function refuse(Approve $approve, $params)
|
||||
{
|
||||
$approve->check_status = 3;
|
||||
$approve->remark = $params['remark'];
|
||||
$approve->save();
|
||||
}
|
||||
|
||||
private static function shopCallBack(Approve $approve, $shopMerchantInfo, $params)
|
||||
{
|
||||
$status = $params['check_status'] == 2? 1: 2;
|
||||
// 通知商城审批状态
|
||||
$requestResponse = HttpClient::create()->request('POST', env('url.shop_prefix') . '/api/merchant/syncStatus/'.$shopMerchantInfo['mer_intention_id'], [
|
||||
'body' => ['status' => $status, 'type' => $approve['type'] ==2 ? 1: 2, 'remark'=> $params['remark']??'']
|
||||
]);
|
||||
Log::info('通知商城审批状态-参数', ['status' => $status, 'type' => $approve['type']]);
|
||||
Log::info('通知商城审批状态-响应', [$requestResponse->getContent()]);
|
||||
}
|
||||
|
||||
public static function detail($id)
|
||||
{
|
||||
return Approve::where('id', $id)->withAttr('extend', function ($value, $data) {
|
||||
return json_decode($data['extend'], true);
|
||||
})->find();
|
||||
}
|
||||
}
|
@ -23,6 +23,7 @@ use think\facade\Db;
|
||||
use app\api\logic\SmsLogic;
|
||||
use app\common\logic\CompanyLogic;
|
||||
use app\common\logic\UserLogic;
|
||||
use think\facade\Log;
|
||||
|
||||
/**
|
||||
* Contract逻辑
|
||||
@ -244,7 +245,9 @@ class ContractLogic extends BaseLogic
|
||||
|
||||
}
|
||||
|
||||
// /**发送合同 */
|
||||
/**发送合同
|
||||
* @type 1公司 2个人
|
||||
*/
|
||||
public static function Draftingcontracts($params,$type=1)
|
||||
{
|
||||
if($type==1){
|
||||
@ -252,6 +255,7 @@ class ContractLogic extends BaseLogic
|
||||
}else{
|
||||
$result = UserLogic::detail($params['id']);
|
||||
}
|
||||
$result['contract']= Contract::where('id',$params['contract_id'])->with(['party_a_info', 'contractType'])->find();
|
||||
if ($result && isset($result['contract']) && isset($result['contract']['file']) && $result['contract']['file'] != '') {
|
||||
if ($result['contract']['check_status'] == 3) {
|
||||
return self::setError('你已经生成过合同,请勿重复生成');
|
||||
@ -294,6 +298,7 @@ class ContractLogic extends BaseLogic
|
||||
public static function postsms($params)
|
||||
{
|
||||
$result = self::detail($params);
|
||||
Log::info(['发送合同短信', $result]);
|
||||
if ($result && $result['file'] != '') {
|
||||
//发送短信
|
||||
$data = [
|
||||
@ -349,6 +354,7 @@ class ContractLogic extends BaseLogic
|
||||
'code' => 'api/Hetong/url?id=' . $find['id'].'&type='.$v['type'],
|
||||
'scene' => 'WQ'
|
||||
];
|
||||
Log::info(['发送合同短信-消息体', $sms]);
|
||||
$result = SmsLogic::contractUrl($sms);
|
||||
if ($result != true) {
|
||||
return self::setError(SmsLogic::getError());
|
||||
|
216
app/common/logic/finance/TownShareProfit.php
Normal file
216
app/common/logic/finance/TownShareProfit.php
Normal file
@ -0,0 +1,216 @@
|
||||
<?php
|
||||
|
||||
namespace app\common\logic\finance;
|
||||
|
||||
use app\common\enum\user\AccountLogEnum;
|
||||
use app\common\logic\AccountLogLogic;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\company\CompanyAccountLog;
|
||||
use app\common\model\task\Task;
|
||||
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
|
||||
use app\common\model\task_template\TaskTemplate;
|
||||
use app\common\model\user\UserAccountLog;
|
||||
use app\common\model\user\User;
|
||||
use think\facade\Db;
|
||||
use think\facade\Log;
|
||||
|
||||
class TownShareProfit
|
||||
{
|
||||
public function townTaskType1($taskInfo, $townCompany, $taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function townTaskType2($taskInfo, $townCompany, $taskSchedulePlan, $step, $contractCount)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
|
||||
if ($step == 2 && $contractCount >= 15) {
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3]);
|
||||
}
|
||||
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function townTaskType3($taskInfo, $townCompany, $taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public function townTaskType4($taskInfo, $townCompany, $taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function townTaskType5($taskInfo, $townCompany, $taskSchedulePlan, $leftTransactionPool)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3]);
|
||||
// 更新镇交易池
|
||||
(new TaskTemplate())->updateTransactionPool($taskSchedulePlan['template_info']['id'], $leftTransactionPool);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function townTaskType6($taskInfo, $townCompany, $taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public function townTaskType7($taskInfo, $townCompany, $taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
$this->shareProfit($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
// 更改结算状态
|
||||
(new TaskSchedulingPlan())->settlement($taskSchedulePlan['id']);
|
||||
// 更改任务状态
|
||||
Task::where(['id' => $taskSchedulePlan['task_id']])->update(['status' => 3]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error($taskSchedulePlan['template_info']['title'].'-任务结算失败:' . $e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 分润
|
||||
*/
|
||||
public function shareProfit($taskInfo, $company, $taskSchedulePlan)
|
||||
{
|
||||
$proportion = 0;
|
||||
//总金额除以2等于不可提现账号金额和收益
|
||||
$masterMoney = bcdiv($taskInfo['money'], 2, 2);
|
||||
|
||||
$remark = '来自任务【' . $taskSchedulePlan['template_info']['title'] . '】,';
|
||||
//服务部长收益 任务金额的50%为服务部长的收益
|
||||
$serviceManagerUser = User::where(['company_id' => $company['id'], 'group_id' => 14])->find();
|
||||
Log::info([$taskSchedulePlan['template_info']['title'].'结算-服务部长用户信息', $serviceManagerUser]);
|
||||
// 用户收益变动
|
||||
$arr = [$serviceManagerUser['id'], AccountLogEnum::UM_INC_TASK, AccountLogEnum::INC, $masterMoney, $taskSchedulePlan['sn'], $remark.'任务结算获得收益' . $masterMoney . '元', ['company_id' => $company['id'], 'proportion' => $proportion], 1];
|
||||
$this->master($arr);
|
||||
// 用户余额变动
|
||||
$arr_two = [$serviceManagerUser['id'], AccountLogEnum::UM_INC_TASKUSER, AccountLogEnum::INC, $masterMoney, $taskSchedulePlan['sn'], $remark . '获得账户余额' . $masterMoney . '元', ['company_id' => $company['id'], 'proportion' => $proportion], 1];
|
||||
$this->Account($arr_two);
|
||||
|
||||
// 公司收益
|
||||
$deposit_count = bcadd($company['deposit'], $masterMoney, 2);
|
||||
// 公司收益变动记录
|
||||
$this->AccountLog($company['id'], $deposit_count, $masterMoney, 1, CompanyAccountLog::TASK_INC_DEPOSIT);
|
||||
$company_money_count = bcadd($company['company_money'], $masterMoney, 2);
|
||||
//公司余额变动记录
|
||||
$this->AccountLog($company['id'], $company_money_count, $masterMoney, 1, CompanyAccountLog::TASK_INC_COMPANY_MONEY);
|
||||
// 变更公司收益和余额
|
||||
Company::where('id', $company['id'])->update(['deposit' => Db::raw('deposit+' . $masterMoney), 'company_money' => Db::raw('company_money+' . $masterMoney)]);
|
||||
}
|
||||
|
||||
public function AccountLog($companyId, $left_amount, $changeAmount, $change_object = 1, $change_type = 1, $action = 1)
|
||||
{
|
||||
$company_log = [
|
||||
'sn' => generate_sn(UserAccountLog::class, 'sn', 20),
|
||||
'company_id' => $companyId,
|
||||
'change_object' => $change_object, //变动对象
|
||||
'change_type' => $change_type, //变动类型
|
||||
'action' => $action, //1-增加 2-减少
|
||||
'left_amount' => $left_amount, //变动后数量
|
||||
'change_amount' => $changeAmount, //变动数量
|
||||
'status' => 1,
|
||||
];
|
||||
CompanyAccountLog::create($company_log);
|
||||
}
|
||||
/**负责人的分润
|
||||
* @param $data
|
||||
*/
|
||||
private function master($data)
|
||||
{
|
||||
User::where('id', $data[0])->update(['deposit'=>Db::raw('deposit+' . $data[3]),'user_money'=>Db::raw('user_money+' . $data[3])]);
|
||||
return AccountLogLogic::add($data[0], $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7]);
|
||||
}
|
||||
|
||||
/**成员分润
|
||||
* @param $data
|
||||
*/
|
||||
private function member($data)
|
||||
{
|
||||
User::where('id', $data[0])->update(['deposit'=>Db::raw('deposit+' . $data[3]),'user_money'=>Db::raw('user_money+' . $data[3])]);
|
||||
return AccountLogLogic::add($data[0], $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7]);
|
||||
}
|
||||
|
||||
private function Account($data)
|
||||
{
|
||||
return AccountLogLogic::add($data[0], $data[1], $data[2], $data[3], $data[4], $data[5], $data[6], $data[7]);
|
||||
}
|
||||
}
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace app\common\logic\finance;
|
||||
|
||||
use app\adminapi\logic\ConfigLogic;
|
||||
use app\common\enum\user\AccountLogEnum;
|
||||
use app\common\logic\BaseLogic;
|
||||
use app\common\model\Company;
|
||||
@ -115,8 +116,17 @@ class WithdrawLogic extends BaseLogic
|
||||
// 将用户周期内的账户变动记录变更为已提现状态
|
||||
UserAccountLog::where(['user_id'=>$user->id, 'status'=>1, 'action'=>1, 'change_type'=>202, 'is_withdraw'=>0])->where('create_time','<', $endCycle)->update(['is_withdraw'=>1]);
|
||||
}
|
||||
|
||||
// 重置公司可提现截止日期 上一次截止日期 + 长期周期天数
|
||||
$dictData = ConfigLogic::getDictTypeValueByType('withdraw_cycle');
|
||||
$cycle = $dictData['withdraw_cycle_long']['value']; // 数据字典-提现周期 单位:天数
|
||||
$withdrawDeadline = $endCycle + $cycle * 24 * 60 * 60;
|
||||
$companyInfo->save(['withdraw_deadline' => $withdrawDeadline]);
|
||||
|
||||
// 更新状态,保存转账凭证
|
||||
Withdraw::where(['id'=>$withDrawInfo['id']])->update(['status'=>3, 'transfer_voucher'=>$params['transfer_voucher']]);
|
||||
|
||||
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (Exception $exception) {
|
||||
|
@ -15,6 +15,10 @@
|
||||
namespace app\common\logic\task;
|
||||
|
||||
|
||||
use app\common\logic\finance\TownShareProfit;
|
||||
use app\common\model\CompanyComplaintFeedback;
|
||||
use app\common\model\contract\Contract;
|
||||
use app\common\model\dict\DictData;
|
||||
use app\common\model\task\Task;
|
||||
use app\common\logic\BaseLogic;
|
||||
use app\common\model\Company;
|
||||
@ -22,6 +26,7 @@ use app\common\model\informationg\UserInformationg;
|
||||
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
|
||||
use app\common\model\task_template\TaskTemplate;
|
||||
use app\common\model\user\User;
|
||||
use think\Exception;
|
||||
use think\facade\Db;
|
||||
use think\facade\Log;
|
||||
|
||||
@ -77,6 +82,8 @@ class TaskLogic extends BaseLogic
|
||||
if ($v['types'] == 3) {
|
||||
$task = Task::where('template_id', $v['id'])->find();
|
||||
if ($task) {
|
||||
// 累计任务进行天数,单次任务结算时,用于判断任务是否超时
|
||||
TaskTemplate::where('id', $v['id'])->inc('day_count')->update();
|
||||
// Task::where('template_id', $v['id'])->update(['start_time' => strtotime($task['start_time']) + 86400, 'end_time' => strtotime($task['end_time']) + 86400]);
|
||||
// TaskTemplate::where('id', $v['id'])->inc('day_count')->update();
|
||||
return true;
|
||||
@ -85,6 +92,7 @@ class TaskLogic extends BaseLogic
|
||||
$v_day_count=$v['day_count'];
|
||||
$v_day_count=$v_day_count+1;
|
||||
$time = strtotime(date('Y-m-d'));
|
||||
Db::startTrans();
|
||||
$TaskSchedulingPlan_data = [
|
||||
'create_user_id' => 0,
|
||||
'company_id' => $v['company_id'],
|
||||
@ -174,11 +182,26 @@ class TaskLogic extends BaseLogic
|
||||
];
|
||||
$data['extend'] = json_encode($extend);
|
||||
}
|
||||
// 其他任务
|
||||
if ($v['type'] == 34) {
|
||||
// is_commit 是否提交 note 详情描述 annex 附件
|
||||
$extend = [
|
||||
'other'=> [
|
||||
'is_commit' => 0,
|
||||
'note' => '',
|
||||
'annex' => [],
|
||||
'video_annex' => [],
|
||||
]
|
||||
];
|
||||
$data['extend'] = json_encode($extend);
|
||||
}
|
||||
$task_id = (new Task())->insertGetId($data);
|
||||
TaskSchedulingPlan::where('id', $TaskSchedulingPlan['id'])->update(['task_id' => $task_id, 'is_execute' => 1]);
|
||||
TaskTemplate::where('id', $v['id'])->inc('day_count')->update();
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error('定时任务添加失败'.$e->getMessage().'。line:'.$e->getLine());
|
||||
return false;
|
||||
}
|
||||
@ -188,16 +211,18 @@ class TaskLogic extends BaseLogic
|
||||
{
|
||||
$v_day_count=$v['day_count'];
|
||||
$v_day_count=$v_day_count+1;
|
||||
$stageDayOneAccumulative = $v['stage_day_one']; // 第一阶段天数
|
||||
$stageDayTwoAccumulative = bcadd($v['stage_day_one'], $v['stage_day_two']); // 第二阶段天数 第一+第二
|
||||
if ($v['types'] == 1 || $v['types'] == 3) {
|
||||
if ($v_day_count <= $v['stage_day_one']) {
|
||||
if ($v_day_count <= $stageDayOneAccumulative) {
|
||||
return $v['money'];
|
||||
} else {
|
||||
return $v['money_two'];
|
||||
}
|
||||
} elseif ($v['types'] == 2) {
|
||||
if ($v_day_count<= $v['stage_day_one']) {
|
||||
if ($v_day_count<= $stageDayOneAccumulative) {
|
||||
return $v['money'];
|
||||
} elseif ($v_day_count <= $v['stage_day_two']) {
|
||||
} elseif ($stageDayOneAccumulative < $v_day_count && $v_day_count <= $stageDayTwoAccumulative) {
|
||||
return $v['money_two'];
|
||||
} else {
|
||||
return $v['money_three'];
|
||||
@ -268,4 +293,587 @@ class TaskLogic extends BaseLogic
|
||||
}
|
||||
return $task;
|
||||
}
|
||||
|
||||
/**
|
||||
* 定时添加任务
|
||||
*/
|
||||
public static function TownCronAdd(array $taskTemplate)
|
||||
{
|
||||
try {
|
||||
Log::info(['镇农科公司定时任务下发-任务模板', $taskTemplate]);
|
||||
// 单次任务不重复下发,在结算时刷新任务时间
|
||||
if ($taskTemplate['types'] == 3) {
|
||||
$task = Task::where('template_id', $taskTemplate['id'])->find();
|
||||
if ($task) {
|
||||
// 累计任务进行天数,单次任务结算时,用于判断任务是否超时
|
||||
TaskTemplate::where('id', $taskTemplate['id'])->inc('day_count')->update();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
$time = strtotime(date('Y-m-d'));
|
||||
// 任务类型code
|
||||
$taskType = (new DictData())->getTownTaskType($taskTemplate['type']);
|
||||
Db::startTrans();
|
||||
$TaskSchedulingPlan_data = [
|
||||
'create_user_id' => 0,
|
||||
'company_id' => $taskTemplate['company_id'],
|
||||
'template_id' => $taskTemplate['id'],
|
||||
'scheduling_id' => $taskTemplate['task_scheduling'],
|
||||
'start_time' => $time,
|
||||
'end_time' => $time + 86399,
|
||||
'sn' => User::createUserSn(),
|
||||
'status' => 1
|
||||
];
|
||||
$TaskSchedulingPlan = TaskSchedulingPlan::create($TaskSchedulingPlan_data);
|
||||
Log::info(['镇农科公司定时任务下发-添加plan结果', $TaskSchedulingPlan]);
|
||||
|
||||
$serviceManagerUser = User::where(['company_id'=>$taskTemplate['company_id'], 'group_id'=> 14])->find();
|
||||
Log::info(['镇农科公司定时任务下发-服务部长user信息', $serviceManagerUser]);
|
||||
$arr = [
|
||||
'template_id' => $taskTemplate['id'],
|
||||
'scheduling_plan_id' => $TaskSchedulingPlan['id'],
|
||||
'company_id' => $taskTemplate['company_id'],
|
||||
'title' => $taskTemplate['title'],
|
||||
'money' => $taskTemplate['money'],
|
||||
'type' => $taskTemplate['type'],
|
||||
'content' => $taskTemplate['content'],
|
||||
'start_time' => $time,
|
||||
'end_time' => $time + 86399,
|
||||
'director_uid' => $serviceManagerUser['id'], // 默认都指派给服务部长
|
||||
'create_time' => time(),
|
||||
'update_time' => time(),
|
||||
];
|
||||
$data = $arr;
|
||||
$data['money'] = self::countTownTaskMoney($taskTemplate);
|
||||
$extend = [];
|
||||
// 督促小组服务团队学习任务 扩展信息
|
||||
if ($taskType == 'town_task_type_4') {
|
||||
$extend = ['town_task_type_4' => ['study_photo'=>[], 'sign_in_table'=>'', 'study_content'=> '']];
|
||||
}
|
||||
$data['extend'] = json_encode($extend);
|
||||
$task_id = (new Task())->insertGetId($data);
|
||||
Log::info(['镇农科公司定时任务下发-添加task结果', $task_id]);
|
||||
TaskSchedulingPlan::where('id', $TaskSchedulingPlan['id'])->update(['task_id' => $task_id, 'is_execute' => 1]);
|
||||
// 任务累计进行天数 +1
|
||||
TaskTemplate::where('id', $taskTemplate['id'])->inc('day_count')->update();
|
||||
Db::commit();
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
Log::error('定时任务添加失败'.$e->getMessage().'。line:'.$e->getLine());
|
||||
}
|
||||
}
|
||||
|
||||
private static function countTownTaskMoney($tempalte)
|
||||
{
|
||||
$v_day_count = $tempalte['day_count'];
|
||||
$v_day_count = $v_day_count + 1;
|
||||
$stageDayOneAccumulative = $tempalte['stage_day_one']; // 第一阶段天数
|
||||
$stageDayTwoAccumulative = bcadd($tempalte['stage_day_one'], $tempalte['stage_day_two']); // 第二阶段天数 第一+第二
|
||||
$stageDayThreeAccumulative = bcadd($stageDayTwoAccumulative, $tempalte['stage_day_three']); // 第二阶段天数 第二阶段累计值+第三
|
||||
|
||||
// 单次和循环任务
|
||||
if ($tempalte['types'] == 1 || $tempalte['types'] == 3) {
|
||||
if ($v_day_count <= $stageDayOneAccumulative) {
|
||||
// 第一阶段金额
|
||||
return $tempalte['money'];
|
||||
} else if ($stageDayOneAccumulative < $v_day_count && $v_day_count<= $stageDayTwoAccumulative) {
|
||||
// 第二阶段金额
|
||||
return $tempalte['money_two'];
|
||||
} else if ( $stageDayTwoAccumulative < $v_day_count && $v_day_count <= $stageDayThreeAccumulative) {
|
||||
// 第三阶段金额
|
||||
return $tempalte['new_money_three'];
|
||||
}
|
||||
} elseif ($tempalte['types'] == 2) { // 长期任务
|
||||
if ($v_day_count<= $stageDayOneAccumulative) {
|
||||
// 第一阶段金额
|
||||
return $tempalte['money'];
|
||||
} elseif ( $stageDayOneAccumulative < $v_day_count && $v_day_count <= $stageDayTwoAccumulative) {
|
||||
// 第二阶段金额
|
||||
return $tempalte['money_two'];
|
||||
} else if ( $stageDayTwoAccumulative < $v_day_count && $v_day_count <=$stageDayThreeAccumulative) {
|
||||
// 第三阶段金额
|
||||
return $tempalte['new_money_three'];
|
||||
} else {
|
||||
// 长期金额
|
||||
return $tempalte['money_three'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 先判定任务是否已完成 再按每个任务对应的结算方式结算
|
||||
* $taskSchedulePlan 包含 task_tempalte、task_schedule、task_schedule_plan 三张表的信息
|
||||
*/
|
||||
public static function townTaskSettlement($taskSchedulePlan)
|
||||
{
|
||||
try {
|
||||
Log::info(['镇农科公司定时任务结算执行-任务计划', $taskSchedulePlan]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
// 任务类型用的数据字典主键id,将id和value作映射,避免测试和正式环境数据字典数据不一致时出问题
|
||||
$townTaskTypeList = DictData::where(['type_value' => 'town_task_type', 'status' => 1])->column('value', 'id');
|
||||
switch ($townTaskTypeList[$taskTemplateInfo['type']]){
|
||||
|
||||
case 'town_task_type_1':
|
||||
// 协助总负责人开展工作任务
|
||||
self::dealTownTask1($taskSchedulePlan);
|
||||
break;
|
||||
case 'town_task_type_2':
|
||||
// 拓展小组服务团队工作任务
|
||||
self::dealTownTask2($taskSchedulePlan);
|
||||
break;
|
||||
case 'town_task_type_3':
|
||||
// 督促小组服务团队完成任务,协助开展工作,解决问题任务
|
||||
self::dealTownTask3($taskSchedulePlan);
|
||||
break;
|
||||
case 'town_task_type_4':
|
||||
// 督促小组服务团队学习任务
|
||||
self::dealTownTask4($taskSchedulePlan);
|
||||
break;
|
||||
case 'town_task_type_5':
|
||||
// 督促小组服务团队完成需求收集和交易任务
|
||||
self::dealTownTask5($taskSchedulePlan);
|
||||
break;
|
||||
case 'town_task_type_6':
|
||||
// 督促小组服务团队入股村联络员所成立的公司任务
|
||||
self::dealTownTask6($taskSchedulePlan);
|
||||
break;
|
||||
case 'town_task_type_7':
|
||||
// 安全工作任务
|
||||
self::dealTownTask7($taskSchedulePlan);
|
||||
break;
|
||||
default :
|
||||
return true;
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
Log::error(['镇农科任务结算失败',$e]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 系统自动判定镇农科公司下属小组服务公司 是否100%完成每日任务:三轮车任务,档案更新任务,平台交易任务
|
||||
*/
|
||||
private static function dealTownTask1($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$taskInfo = Task::where(['id' => $taskSchedulePlan['task_id']])->find();
|
||||
$townCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type' => 18])->select()->toArray();
|
||||
$isDone = 1; // 任务是否完成标记
|
||||
$isTaskSchedule = 0; // 下属小组服务公司是否有每日任务安排标记
|
||||
|
||||
foreach ($groupServiceCompanyList as $groupServiceCompany) {
|
||||
// 查询小组服务公司是否有对应的每日任务安排
|
||||
$templateList = TaskTemplate::where(['company_id' => $groupServiceCompany['id']])->whereIn('type', [31, 32, 33])->select()->toArray();
|
||||
// 未做任务安排的小组服务公司不在判定范围内,跳出本次循环
|
||||
if(count($templateList) === 3) {
|
||||
$isTaskSchedule = 1;
|
||||
// 查询小组服务公司的循环任务有没有全部做完 任意有一个任务没有做完,则判定为该小组服务公司没有完成每日任务,即协助总负责人开展工作任务也认定失败
|
||||
foreach ($templateList as $template) {
|
||||
$task = Task::where(['template_id' => $template['id'], 'status' => 3])->find();
|
||||
if (empty($task)) {
|
||||
$isDone = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// 下属小组服务公司有任务安排,也完成了任务
|
||||
if ($isDone === 1 && $isTaskSchedule === 1) {
|
||||
// 做任务结算,分润
|
||||
(new TownShareProfit())->townTaskType1($taskInfo, $townCompany, $taskSchedulePlan);
|
||||
} else {
|
||||
// 关闭任务
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
Log::info('协助总负责人开展工作任务,结算失败:' . $taskTemplateInfo['title'] . '未完成。任务:' . json_encode($taskInfo));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 拓展小组服务团队工作任务 单次任务
|
||||
* 当前任务进行天数 < 第一阶段天数 只刷新任务时间
|
||||
* 当前任务进行天数 = 第一阶段天数 做第一阶段结算 如果第一阶段已完成全部任务,也要刷新任务时间,等到第二阶段结算时才结束任务
|
||||
* 当前任务进行天数 > 第一阶段天数 但未到第二阶段结算时间 继续刷新任务时间
|
||||
* 当前任务进行天数 = (第一阶段+第二阶段)天数 未完成则关闭任务 完成则结算第二阶段金额
|
||||
*/
|
||||
private static function dealTownTask2($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$townCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$day = $taskTemplateInfo['stage_day_one'] + $taskTemplateInfo['stage_day_two'];
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->with('director_info')->find();
|
||||
|
||||
// 当前任务进行天数 < 第一阶段天数 只刷新任务时间
|
||||
if($taskTemplateInfo['day_count'] < $taskTemplateInfo['stage_day_one']) {
|
||||
self::flushTaskTime($taskSchedulePlan);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 当前任务进行天数 = 第一阶段天数 做第一阶段结算 如果第一阶段已完成全部任务,也要刷新任务时间,等到第二阶段结算时才结束任务
|
||||
if($taskTemplateInfo['day_count'] == $taskTemplateInfo['stage_day_one']) {
|
||||
// 已签约的小组服务合同个数
|
||||
$contractCount = Contract::where(['party_a' => $townCompany['id'], 'status' => 1, 'contract_type' => 25])->count();
|
||||
if ($contractCount < 9) {
|
||||
self::flushTaskTime($taskSchedulePlan);
|
||||
return false;
|
||||
}
|
||||
$totalMoney = bcmul($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], 2);
|
||||
$taskMoney = 0;
|
||||
switch ($contractCount) {
|
||||
case 9:
|
||||
$taskMoney = bcmul($totalMoney, 0.4, 2);
|
||||
break;
|
||||
case 10:
|
||||
$taskMoney = bcmul($totalMoney, 0.4, 2);
|
||||
break;
|
||||
case 11:
|
||||
$taskMoney = bcmul($totalMoney, 0.5, 2);
|
||||
break;
|
||||
case 12:
|
||||
$taskMoney = bcmul($totalMoney, 0.6, 2);
|
||||
break;
|
||||
case 13:
|
||||
$taskMoney = bcmul($totalMoney, 0.6, 2);
|
||||
break;
|
||||
case 14:
|
||||
$taskMoney = bcmul($totalMoney, 0.7, 2);
|
||||
break;
|
||||
case 15:
|
||||
$taskMoney = bcmul($totalMoney, 1, 2);
|
||||
break;
|
||||
}
|
||||
if ($contractCount > 15) {
|
||||
$taskMoney = bcmul($totalMoney, 1, 2);
|
||||
}
|
||||
$task['money'] = $taskMoney; // 任务金额
|
||||
(new TownShareProfit())->townTaskType2($task, $townCompany, $taskSchedulePlan, 1, $contractCount);
|
||||
}
|
||||
|
||||
// 当前任务进行天数 > 第一阶段天数 但未到第二阶段结算 继续刷新任务时间
|
||||
if($taskTemplateInfo['day_count'] > $taskTemplateInfo['stage_day_one'] && $taskTemplateInfo['day_count'] < $day){
|
||||
self::flushTaskTime($taskSchedulePlan);
|
||||
}
|
||||
|
||||
// 当前任务进行天数 = 第一+第二阶段天数 第二阶段结算
|
||||
if ($taskTemplateInfo['day_count'] == $day) {
|
||||
// 已签约的小组服务合同个数
|
||||
$contractCount = Contract::where(['party_a' => $townCompany['id'], 'status' => 1, 'contract_type' => 25])->count();
|
||||
// 第二阶段未完成
|
||||
if ($contractCount < 15) {
|
||||
// 关闭任务,并且没有奖励
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
Log::info('结算失败:' . $taskTemplateInfo['title'] . '第二阶段未完成。任务:' . json_encode($task));
|
||||
return false;
|
||||
}
|
||||
|
||||
$taskMoney = bcmul($taskTemplateInfo['stage_day_two'], $taskTemplateInfo['money_two'], 2);
|
||||
$task['money'] = $taskMoney; // 任务金额
|
||||
|
||||
(new TownShareProfit())->townTaskType2($task, $townCompany, $taskSchedulePlan, 2, $contractCount);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private static function flushTaskTime($taskSchedulePlan)
|
||||
{
|
||||
$time = strtotime(date('Y-m-d')); // 今天的 00:00:00
|
||||
|
||||
TaskSchedulingPlan::where(['id' => $taskSchedulePlan['id']])->update(
|
||||
[
|
||||
'create_time' => $time+86400, //第二天的00:00:00
|
||||
'update_time' =>time(),
|
||||
'start_time'=>$time+86400, //第二天的00:00:00
|
||||
'end_time'=>$time+86400+86399 //第二天的 23:59:59
|
||||
]);
|
||||
|
||||
Task::where('id', $taskSchedulePlan['task_id'])->update(
|
||||
[
|
||||
'create_time' => $time+86400,
|
||||
'update_time' => time(),
|
||||
'start_time'=> $time+86400,
|
||||
'end_time'=> $time+86400+86399
|
||||
]);
|
||||
}
|
||||
|
||||
private static function dealTownTask3($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$townCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type' => 18])->select()->toArray();
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->with('director_info')->find();
|
||||
// 完成任务情况
|
||||
list($groupServiceCompanyCount, $doneTaskGroupServiceCompanyCount) = self::taskType3DoneInfo($groupServiceCompanyList);
|
||||
$doneRate = bcdiv($doneTaskGroupServiceCompanyCount, $groupServiceCompanyCount,2);
|
||||
// <80% 未完成任务 关闭本次任务
|
||||
if (bccomp($doneRate, 0.8, 2) == -1) {
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
return true;
|
||||
} else {
|
||||
// 结算 分润
|
||||
(new TownShareProfit())->townTaskType3($task, $townCompany, $taskSchedulePlan);
|
||||
}
|
||||
}
|
||||
|
||||
public static function taskType3DoneInfo($groupServiceCompanyList)
|
||||
{
|
||||
$groupServiceCompanyCount = count($groupServiceCompanyList); // 团队总数
|
||||
$doneTaskGroupServiceCompanyCount = 0; // 完成任务团队总数
|
||||
// 判定完成条件 组建成功的小组服务团队 每日完成档案更新任务和三轮车任务 的团队数量 >= 80% 小于80%则视为未完成
|
||||
foreach ($groupServiceCompanyList as $groupServiceCompany) {
|
||||
// 档案更新任务
|
||||
$taskType31 = Task::where(['company_id' => $groupServiceCompany['id'], 'type' => 31, 'status' => 3])->whereDay('start_time', 'today')->find();
|
||||
// 三轮车任务
|
||||
$taskType32 = Task::where(['company_id' => $groupServiceCompany['id'], 'type' => 32, 'status' => 3])->whereDay('start_time', 'today')->find();
|
||||
if (!empty($taskType31) && !empty($taskType32)) {
|
||||
$doneTaskGroupServiceCompanyCount++;
|
||||
}
|
||||
}
|
||||
return [$groupServiceCompanyCount, $doneTaskGroupServiceCompanyCount];
|
||||
}
|
||||
|
||||
/**
|
||||
* 督促小组服务团队学习任务 长期任务 前置操作:每天要从APP端提交资料上来,根据提交资料来判定当天任务有没有完成
|
||||
* 任务完成条件:(学习照片5张,签到表一份,培训内容大纲 >= 50个字),每月提交>=4次
|
||||
* 1 当前任务进行天数 < 第一阶段天数 只判断当天是否完成 状态未完成则关闭任务
|
||||
* 2 当前任务进行天数 = 第一阶段天数 做第一阶段结算 且更改 task_schedule_plan 状态为已结算,后续将会根据这个时间来统计、判断各阶段的周期内是否达成完成条件(*)
|
||||
* 3 第一阶段天数 < 当前任务进行天数 < (第一 + 第二) 只判断当天是否完成 状态未完成则关闭任务
|
||||
* 4 当前任务进行天数 = (第一阶段+第二阶段)天数 第二阶段结算 且更改 task_schedule_plan 状态为已结算
|
||||
* 5 第一阶段+第二阶段 < 当前任务进行天数 < (第一 + 第二 + 第三阶段天数) 只判断当天是否完成 状态未完成则关闭任务
|
||||
* 6 当前任务进行天数 = (第一 + 第二 + 第三阶段天数) 第三阶段结算 且更改 task_schedule_plan 状态为已结算
|
||||
* 7 当前任务进行天数 > (第一 + 第二 + 第三阶段天数) 但 当前任务进行天数/30 != 0 只判断当天是否完成 状态未完成则关闭任务
|
||||
* 8 当前任务进行天数/30 = 0, 长期阶段结算 且更改 task_schedule_plan 状态为已结算
|
||||
*/
|
||||
private static function dealTownTask4($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$townCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$taskDayCount = $taskTemplateInfo['day_count']; // 任务累计进行天数
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
$stageDayOneAccumulative = $taskTemplateInfo['stage_day_one']; // 第一阶段累计天数
|
||||
$stageDayTwoAccumulative = intval(bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two'])); // 第二阶段累计天数 第一+第二
|
||||
$stageDayThreeAccumulative = intval(bcadd($stageDayTwoAccumulative, $taskTemplateInfo['stage_day_three'])); // 第三阶段累计天数 第二阶段累计值+第三阶段天数
|
||||
|
||||
// 1 当前任务进行天数 < 第一阶段天数 只判断当天是否完成 状态未完成则关闭任务
|
||||
if ($taskDayCount < $stageDayOneAccumulative) {
|
||||
if ($task['status'] != 3) {
|
||||
(new Task())->closeTask($task['id']);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 2 当前任务进行天数 = 第一阶段天数 做第一阶段结算 且更改 task_schedule_plan 状态为已结算,后续将会根据这个时间来筛选、统计、判断各阶段周期内是否达成完成条件
|
||||
if($taskDayCount == $stageDayOneAccumulative){
|
||||
$doneTaskCount = Task::where(['template_id'=>$taskTemplateInfo['id'], 'status'=>3])->count();
|
||||
if ($doneTaskCount >= 4) {
|
||||
$task['money'] = bcmul($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], 2);
|
||||
(new TownShareProfit())->townTaskType4($task, $townCompany, $taskSchedulePlan);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 3 第一阶段天数 < 当前任务进行天数 < (第一 + 第二) 只判断当天是否完成 状态未完成则关闭任务
|
||||
if ($stageDayOneAccumulative < $taskDayCount && $taskDayCount < $stageDayTwoAccumulative) {
|
||||
if ($task['status'] != 3) {
|
||||
(new Task())->closeTask($task['id']);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 4 当前任务进行天数 = (第一阶段+第二阶段)天数 第二阶段结算 且更改 task_schedule_plan 状态为已结算
|
||||
if ($taskDayCount == $stageDayTwoAccumulative) {
|
||||
// 上一次做了结算的任务计划
|
||||
$lastTaskSchedulePlan = TaskSchedulingPlan::where(['template_id'=>$taskTemplateInfo['id'], 'is_pay'=>1])->order('start_time', 'desc')->find();
|
||||
// 上一次结算后到现在,完成的任务次数
|
||||
$doneTaskCount = Task::where(['template_id'=>$taskTemplateInfo['id'], 'status'=>3])->whereBetween('start_time', [$lastTaskSchedulePlan['start_time'], time()])->count();
|
||||
if ($doneTaskCount >= 8) {
|
||||
$task['money'] = bcmul($taskTemplateInfo['stage_day_two'], $taskTemplateInfo['money_two'], 2);
|
||||
(new TownShareProfit())->townTaskType4($task, $townCompany, $taskSchedulePlan);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 5 第一阶段+第二阶段 < 当前任务进行天数 < (第一 + 第二 + 第三阶段天数) 只判断当天是否完成 状态未完成则关闭任务
|
||||
if ($stageDayTwoAccumulative < $taskDayCount && $taskDayCount < $stageDayThreeAccumulative) {
|
||||
if ($task['status'] != 3) {
|
||||
(new Task())->closeTask($task['id']);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 6 当前任务进行天数 = (第一 + 第二 + 第三阶段天数) 第三阶段结算 且更改 task_schedule_plan 状态为已结算
|
||||
if ($taskDayCount == $stageDayThreeAccumulative) {
|
||||
// 上一次做了结算的任务计划
|
||||
$lastTaskSchedulePlan = TaskSchedulingPlan::where(['template_id'=>$taskTemplateInfo['id'], 'is_pay'=>1])->order('start_time', 'desc')->find();
|
||||
// 上一次结算后到现在,完成的任务次数
|
||||
$doneTaskCount = Task::where(['template_id'=>$taskTemplateInfo['id'], 'status'=>3])->whereBetween('start_time', [$lastTaskSchedulePlan['start_time'], time()])->count();
|
||||
if ($doneTaskCount >= 8) {
|
||||
$task['money'] = bcmul($taskTemplateInfo['stage_day_three'], $taskTemplateInfo['new_money_three'], 2);
|
||||
(new TownShareProfit())->townTaskType4($task, $townCompany, $taskSchedulePlan);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 7 当前任务进行天数 > (第一 + 第二 + 第三阶段天数) 但 当前任务进行天数/30 != 0 只判断当天是否完成 状态未完成则关闭任务
|
||||
if($taskDayCount > $stageDayThreeAccumulative && $taskDayCount%30 != 0) {
|
||||
if ($task['status'] != 3) {
|
||||
(new Task())->closeTask($task['id']);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 8 当前任务进行天数/30 = 0, 长期阶段结算 且更改 task_schedule_plan 状态为已结算
|
||||
if ($taskDayCount > $stageDayThreeAccumulative && $taskDayCount%30 == 0) {
|
||||
// 上一次做了结算的任务计划
|
||||
$lastTaskSchedulePlan = TaskSchedulingPlan::where(['template_id'=>$taskTemplateInfo['id'], 'is_pay'=>1])->order('start_time', 'desc')->find();
|
||||
// 上一次结算后到现在,完成的任务次数
|
||||
$doneTaskCount = Task::where(['template_id'=>$taskTemplateInfo['id'], 'status'=>3])->whereBetween('start_time', [$lastTaskSchedulePlan['start_time'], time()])->count();
|
||||
if ($doneTaskCount >= 4) {
|
||||
$task['money'] = bcmul(30, $taskTemplateInfo['money_three'], 2);
|
||||
(new TownShareProfit())->townTaskType4($task, $townCompany, $taskSchedulePlan);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查镇所属小组服务公司当日实际完成金额总和+镇农科公司的资金池
|
||||
* 查镇所属小组服务公司当日任务目标金额总和
|
||||
*/
|
||||
private static function dealTownTask5($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$townCompany = Company::where(['id' => $taskTemplateInfo['company_id']])->find();
|
||||
$townTask = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
$groupServiceCompanyList = Company::where(['street' => $townCompany['street'], 'company_type'=> 18])->select()->toArray();
|
||||
$townTransactionPool = $taskTemplateInfo['transaction_pool']; // 镇交易池
|
||||
$townTotalTradeAmount = 0; // 镇下属小组服务公司 每日实际总交易额
|
||||
$targetAmount = 0; // 镇下属小组服务公司每日 目标总交易额
|
||||
// 查镇所属小组服务公司当日任务目标金额总和
|
||||
foreach ($groupServiceCompanyList as $groupServiceCompany) {
|
||||
$tempTask = Task::where(['company_id'=> $groupServiceCompany['id'], 'status'=>3, 'type'=>33])
|
||||
->whereDay('start_time','today')
|
||||
->find();
|
||||
if ($tempTask) {
|
||||
$plan = TaskSchedulingPlan::where(['id'=>$tempTask['scheduling_plan_id']])->find();
|
||||
if ($plan['is_pay'] == 1) {
|
||||
$extend = json_decode($tempTask['extend'], true);
|
||||
$targetAmount += $extend['transaction']['arr']['day_money'];
|
||||
$townTotalTradeAmount += $extend['transaction']['arr']['total_price'];
|
||||
}
|
||||
}
|
||||
}
|
||||
// 完成条件: 查镇所属小组服务公司当日实际完成金额总和+镇农科公司的资金池 > 查镇所属小组服务公司当日任务目标金额总和
|
||||
if($targetAmount != 0 && bcadd($townTransactionPool, $townTotalTradeAmount, 2) >= $targetAmount) {
|
||||
// 将余下金额放入镇交易池
|
||||
$leftTransactionPool = bcsub(bcadd($townTransactionPool, $townTotalTradeAmount, 2), $targetAmount, 2);
|
||||
(new TownShareProfit())->townTaskType5($townTask, $townCompany, $taskSchedulePlan, $leftTransactionPool);
|
||||
} else {
|
||||
// 关闭任务
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 督促小组服务团队入股村联络员所成立的公司任务 单次任务
|
||||
* 当前任务进行天数 < 第一+第二阶段天数 只刷新任务时间
|
||||
* 当前任务进行天数 = 第一+第二阶段天数 判定任务是否完成 结算 分润
|
||||
*/
|
||||
private static function dealTownTask6($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
$taskDayCount = $taskTemplateInfo['day_count']; // 任务累计进行天数
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
$stageDayOneAccumulative = $taskTemplateInfo['stage_day_one']; // 第一阶段累计天数
|
||||
$stageDayTwoAccumulative = intval(bcadd($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['stage_day_two'])); // 第二阶段累计天数 第一+第二
|
||||
$townCompany = Company::where('id', $taskTemplateInfo['company_id'])->find(); // 镇农科公司
|
||||
$villageCompanyList = Company::where(['street' => $townCompany['street'], 'company_type'=> 17])->select()->toArray(); // 村管理公司
|
||||
|
||||
// 当前任务进行天数 < 第一+第二阶段天数 只刷新任务时间
|
||||
if ($taskDayCount < $stageDayOneAccumulative) {
|
||||
self::flushTaskTime($taskSchedulePlan);
|
||||
return true;
|
||||
}
|
||||
|
||||
// 当前任务进行天数 = 第一+第二阶段天数 判定任务是否完成 结算 分润
|
||||
if($taskDayCount == $stageDayTwoAccumulative) {
|
||||
// 小组服务公司总数
|
||||
$groupServiceCompanyCount = Company::where(['street' => $townCompany['street'], 'company_type'=> 18])->count();
|
||||
|
||||
// 小组服务完成股金上交数
|
||||
$sharecapitalPaidCount= Db::name('company_sharecapital_change_log')->where(['parent_company_id'=>$villageCompanyList['id']])->count();
|
||||
|
||||
$rate = bcdiv($sharecapitalPaidCount, $groupServiceCompanyCount, 2);
|
||||
|
||||
// 小于50% 未完成 关闭任务
|
||||
if (bccomp($rate, 0.5, 2) == -1) {
|
||||
(new Task())->closeTask($taskSchedulePlan['task_id']);
|
||||
} else {
|
||||
// 已完成 计算结算金额
|
||||
$totalMoney = bcadd(bcmul($taskTemplateInfo['stage_day_one'], $taskTemplateInfo['money'], 2) , bcmul($taskTemplateInfo['stage_day_two'], $taskTemplateInfo['money_two'], 2), 2);
|
||||
// =50% - %59.9 x40%
|
||||
if (bccomp($rate, 0.5, 2) == 0 || (bccomp($rate, 0.5, 2) == 1 && bccomp($rate, 0.599, 2) == -1)) {
|
||||
$task['money'] = bcmul($totalMoney, 0.4, 2);
|
||||
}
|
||||
// =60% - %69.9 x50%
|
||||
if (bccomp($rate, 0.6, 2) == 0 || (bccomp($rate, 0.6, 2) == 1 && bccomp($rate, 0.699, 2) == -1)) {
|
||||
$task['money'] = bcmul($totalMoney, 0.5, 2);
|
||||
}
|
||||
|
||||
// =70% - %79.9 x60%
|
||||
if (bccomp($rate, 0.7, 2) == 0 || (bccomp($rate, 0.7, 2) == 1 && bccomp($rate, 0.799, 2) == -1)) {
|
||||
$task['money'] = bcmul($totalMoney, 0.6, 2);
|
||||
}
|
||||
|
||||
// =80% - %89.9 x70%
|
||||
if (bccomp($rate, 0.8, 2) == 0 || (bccomp($rate, 0.8, 2) == 1 && bccomp($rate, 0.899, 2) == -1)) {
|
||||
$task['money'] = bcmul($totalMoney, 0.7, 2);
|
||||
}
|
||||
// >=90% x100%
|
||||
if (bccomp($rate, 0.9, 2) == 0 || bccomp($rate, 0.9, 2) == 1) {
|
||||
$task['money'] = $totalMoney;
|
||||
}
|
||||
// 分润
|
||||
(new TownShareProfit())->townTaskType6($task, $townCompany, $taskSchedulePlan);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 安全任务结算
|
||||
private static function dealTownTask7($taskSchedulePlan)
|
||||
{
|
||||
Log::info(['镇农科公司定时任务结算执行-'.$taskSchedulePlan['template_info']['title']]);
|
||||
$taskTemplateInfo = $taskSchedulePlan['template_info'];
|
||||
|
||||
$townCompany = Company::where('id', $taskTemplateInfo['company_id'])->find(); // 镇农科公司
|
||||
$task = Task::where('id', $taskSchedulePlan['task_id'])->find();
|
||||
|
||||
// 片区下公司有任一投诉都判定为未完成
|
||||
$isDone = 1;
|
||||
$companyList = Company::where('street', $townCompany['street'])->select()->toArray();
|
||||
foreach ($companyList as $company) {
|
||||
$complain = CompanyComplaintFeedback::where(['company_id'=>$company['id']])->whereDay('create_time', 'today')->find();
|
||||
if (!empty($complain)) {
|
||||
$isDone = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 完成任务 结算 分润
|
||||
if ($isDone === 1) {
|
||||
(new TownShareProfit())->townTaskType7($task, $townCompany, $taskSchedulePlan);
|
||||
} else {
|
||||
// 关闭任务
|
||||
(new Task())->closeTask($task['id']);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -15,11 +15,14 @@
|
||||
namespace app\common\logic\task_template;
|
||||
|
||||
|
||||
use app\adminapi\logic\ConfigLogic;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\task_template\TaskTemplate;
|
||||
use app\common\logic\BaseLogic;
|
||||
use app\common\model\company\CompanyProperty;
|
||||
use app\common\model\informationg\UserInformationg;
|
||||
use app\common\model\task_scheduling\TaskScheduling;
|
||||
use app\common\model\user\User;
|
||||
use think\facade\Db;
|
||||
|
||||
|
||||
@ -41,8 +44,9 @@ class TaskTemplateLogic extends BaseLogic
|
||||
*/
|
||||
public static function add(array $params): bool
|
||||
{
|
||||
Db::startTrans();
|
||||
try {
|
||||
Db::startTrans();
|
||||
|
||||
$find=TaskTemplate::where('task_scheduling', $params['task_scheduling'])->where('company_id',$params['company_id'])->where('type',$params['type'])->field('id,types,type')->find();
|
||||
if($find&&$params['type']==$find['type']){
|
||||
self::setError('已经有同一种任务类型了');
|
||||
@ -78,12 +82,14 @@ class TaskTemplateLogic extends BaseLogic
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if($params['types']!=33){
|
||||
// 除了长期任务,其他阶段类型没有长期金额
|
||||
if($params['types']!=2){
|
||||
$params['money_three']=0;
|
||||
}
|
||||
if($params['type']==35){
|
||||
$params['extend']=['shareholder'=>['user_id'=>$params['task_admin']]];
|
||||
}
|
||||
|
||||
TaskTemplate::create([
|
||||
'title' => $params['title'],
|
||||
'admin_id' => $params['admin_id'],
|
||||
@ -103,7 +109,6 @@ class TaskTemplateLogic extends BaseLogic
|
||||
'proportion_two' => $params['proportion_two']??0,
|
||||
'recharge' => $params['recharge']??0,
|
||||
]);
|
||||
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
@ -159,7 +164,8 @@ class TaskTemplateLogic extends BaseLogic
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if($params['types']!=33){
|
||||
// 除了长期任务,其他阶段类型没有长期金额
|
||||
if($params['types']!=2){
|
||||
$params['money_three']=0;
|
||||
}
|
||||
if($params['type']==35){
|
||||
@ -217,4 +223,93 @@ class TaskTemplateLogic extends BaseLogic
|
||||
{
|
||||
return TaskTemplate::findOrEmpty($params['id'])->toArray();
|
||||
}
|
||||
|
||||
public static function initCompanyWithdrawDeadline($companyId)
|
||||
{
|
||||
// 如果是公司第一次创建安排任务,初始化公司的可提现周期截止时间
|
||||
$templateCount = TaskTemplate::where(['company_id' => $companyId])->count();
|
||||
if ($templateCount == 1) {
|
||||
$dictData = ConfigLogic::getDictTypeValueByType('withdraw_cycle');
|
||||
$cycle = $dictData['withdraw_cycle_1']['value']; // 数据字典-提现周期 单位:天数
|
||||
$today = strtotime(date('Y-m-d'));
|
||||
$withdrawDeadline = $today + $cycle * 24 * 60 * 60 + 86400;
|
||||
$company = Company::find($companyId);
|
||||
$company->withdraw_deadline = $withdrawDeadline;
|
||||
$company->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @notes 添加任务模板
|
||||
* @param array $params
|
||||
* @return bool
|
||||
* @author likeadmin
|
||||
* @date 2023/08/06 17:30
|
||||
*/
|
||||
public static function addTownTaskTemplate(array $params): bool
|
||||
{
|
||||
try {
|
||||
Db::startTrans();
|
||||
|
||||
$serviceManagerUser = (new User())->searchServiceManager($params['company_id']);
|
||||
if (empty($serviceManagerUser)) {
|
||||
self::setError('公司还没有服务部长,无法指派任务');
|
||||
return false;
|
||||
}
|
||||
$find = TaskTemplate::where('task_scheduling', $params['task_scheduling'])->where('company_id',$params['company_id'])->where('type',$params['type'])->field('id,types,type')->find();
|
||||
if($find && $params['type'] == $find['type']){
|
||||
self::setError('已经有同一种任务类型了');
|
||||
return false;
|
||||
}
|
||||
|
||||
$moeny = TaskTemplate::where('company_id', $params['company_id'])->sum('money');
|
||||
if($moeny + $params['money'] > 200){
|
||||
self::setError('任务模板一阶段合计金额不能大于任务调度金额');
|
||||
return false;
|
||||
}
|
||||
$moneyTwo = TaskTemplate::where('company_id', $params['company_id'])->sum('money_two');
|
||||
if($moneyTwo + $params['money_two'] > 200){
|
||||
self::setError('任务模板二阶段合计金额不能大于任务调度金额');
|
||||
return false;
|
||||
}
|
||||
$newMoneyThree = TaskTemplate::where('company_id', $params['company_id'])->sum('new_money_three');
|
||||
if($newMoneyThree + $params['new_money_three'] > 200){
|
||||
self::setError('任务模板三阶段合计金额不能大于任务调度金额');
|
||||
return false;
|
||||
}
|
||||
$moneyThree = TaskTemplate::where('company_id', $params['company_id'])->sum('money_three');
|
||||
if($moneyThree + $params['money_three']>200){
|
||||
self::setError('任务模板长期合计金额不能大于任务调度金额');
|
||||
return false;
|
||||
}
|
||||
|
||||
TaskTemplate::create([
|
||||
'title' => $params['title'],
|
||||
'admin_id' => $params['admin_id'],
|
||||
'company_id' => $params['company_id'],
|
||||
'task_scheduling' => $params['task_scheduling']??0,
|
||||
'money' => $params['money'],
|
||||
'money_two' => $params['money_two'],
|
||||
'money_three' => $params['money_three'],
|
||||
'type' => $params['type'],
|
||||
'types' => $params['types'],
|
||||
'status' => $params['status'],
|
||||
'content' => $params['content'],
|
||||
'extend'=>json_encode($params['extend']),
|
||||
'stage_day_one' => $params['stage_day_one']??0,
|
||||
'proportion_one' => $params['proportion_one']??0,
|
||||
'stage_day_two' => $params['stage_day_two']??0,
|
||||
'proportion_two' => $params['proportion_two']??0,
|
||||
'recharge' => $params['recharge']??0,
|
||||
'stage_day_three' => $params['stage_day_three']??0,
|
||||
'new_money_three' => $params['new_money_three']??0,
|
||||
]);
|
||||
Db::commit();
|
||||
return true;
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
self::setError($e->getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
20
app/common/model/Approve.php
Normal file
20
app/common/model/Approve.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace app\common\model;
|
||||
|
||||
use app\common\model\dict\DictData;
|
||||
use app\common\model\task\Task;
|
||||
use think\model\concern\SoftDelete;
|
||||
|
||||
class Approve extends BaseModel
|
||||
{
|
||||
use SoftDelete;
|
||||
protected $name = 'approve';
|
||||
protected $deleteTime = 'delete_time';
|
||||
|
||||
public function task()
|
||||
{
|
||||
return $this->hasOne(Task::class, 'id', 'task_id');
|
||||
}
|
||||
|
||||
}
|
34
app/common/model/CompanyComplaintFeedback.php
Normal file
34
app/common/model/CompanyComplaintFeedback.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?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;
|
||||
|
||||
|
||||
use app\common\model\BaseModel;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* CompanyComplaintFeedback模型
|
||||
* Class CompanyComplaintFeedback
|
||||
* @package app\common\model
|
||||
*/
|
||||
class CompanyComplaintFeedback extends BaseModel
|
||||
{
|
||||
|
||||
protected $name = 'company_complaint_feedback';
|
||||
|
||||
|
||||
|
||||
}
|
@ -16,7 +16,7 @@ namespace app\common\model;
|
||||
|
||||
|
||||
use app\common\model\BaseModel;
|
||||
|
||||
use app\common\model\dict\DictData;
|
||||
|
||||
|
||||
/**
|
||||
@ -28,7 +28,51 @@ class ShopContract extends BaseModel
|
||||
{
|
||||
|
||||
protected $name = 'shop_contract';
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @notes 关联company_name
|
||||
* @return \think\model\relation\HasOne
|
||||
* @author likeadmin
|
||||
* @date 2023/07/18 14:28
|
||||
*/
|
||||
public function companyName()
|
||||
{
|
||||
return $this->hasOne(ShopMerchant::class, 'id', 'company_id')->bind(['company_name']);
|
||||
}
|
||||
public function company()
|
||||
{
|
||||
return $this->hasOne(ShopMerchant::class, 'id', 'company_id');
|
||||
}
|
||||
public function partyAInfo()
|
||||
{
|
||||
return $this->hasOne(ShopMerchant::class, 'id', 'party_a')->field('id,company_name,organization_code,master_name,master_phone,master_email,area_manager');
|
||||
}
|
||||
public function partyBInfo()
|
||||
{
|
||||
// halt($this->type);
|
||||
// if($this->type==1){
|
||||
return $this->hasOne(ShopMerchant::class, 'id', 'party_b')->field('id,company_name,organization_code,master_name,master_phone,master_email,area_manager');
|
||||
// }else{
|
||||
// return $this->hasOne(User::class, 'id', 'party_b')->field('id,nickname company_name');
|
||||
// }
|
||||
}
|
||||
public function partyA()
|
||||
{
|
||||
return $this->hasOne(ShopMerchant::class, 'id', 'party_a')->bind(['party_a_name' => 'company_name']);
|
||||
}
|
||||
public function partyB()
|
||||
{
|
||||
return $this->hasOne(ShopMerchant::class, 'id', 'party_b')->bind(['party_b_name' => 'company_name']);
|
||||
}
|
||||
public function contractType()
|
||||
{
|
||||
return $this->hasOne(DictData::class, 'id', 'contract_type')->bind(['contract_type_name' => 'name']);
|
||||
}
|
||||
|
||||
public function getContractTypeNameAttr($value)
|
||||
{
|
||||
return DictData::where(['id' => $this->contract_type])->value('name');
|
||||
}
|
||||
}
|
@ -51,7 +51,7 @@ class ShopMerchant extends BaseModel
|
||||
|
||||
public function getContractAttr()
|
||||
{
|
||||
$find=Contract::where('party_a|party_b', $this->id)->field('check_status,status')->find();
|
||||
$find=ShopContract::where('party_a|party_b', $this->id)->field('check_status,status')->find();
|
||||
if($find){
|
||||
return $find->toArray();
|
||||
}else{
|
||||
|
@ -76,11 +76,11 @@ class CompanyAccountLog extends BaseModel
|
||||
*/
|
||||
|
||||
/**
|
||||
* 保证金
|
||||
* 任务收益
|
||||
*/
|
||||
const TASK_INC_DEPOSIT = 200;
|
||||
/**
|
||||
* 收益
|
||||
* 公司余额
|
||||
*/
|
||||
const TASK_INC_COMPANY_MONEY = 201;
|
||||
/**
|
||||
|
@ -44,4 +44,13 @@ class DictData extends BaseModel
|
||||
return $data['status'] ? '正常' : '停用';
|
||||
}
|
||||
|
||||
// 根据镇农科公司任务类型,获取code
|
||||
public function getTownTaskType($typeId){
|
||||
$townTaskTypeList = DictData::where(['type_value' => 'town_task_type', 'status' => 1])->column('value', 'id');
|
||||
if(isset($townTaskTypeList[$typeId])) {
|
||||
return $townTaskTypeList[$typeId];
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
}
|
@ -6,5 +6,12 @@ use app\common\model\BaseModel;
|
||||
|
||||
class UserInformationgDemand extends BaseModel
|
||||
{
|
||||
public function getDataAttr($value)
|
||||
{
|
||||
if($value){
|
||||
return json_decode($value,true);
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ namespace app\common\model\task;
|
||||
|
||||
|
||||
use app\common\model\BaseModel;
|
||||
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
|
||||
use app\common\model\user\User;
|
||||
use think\model\concern\SoftDelete;
|
||||
|
||||
@ -47,5 +48,9 @@ class Task extends BaseModel
|
||||
{
|
||||
return $this->hasOne(User::class, 'id', 'director_uid')->field(['id', 'nickname', 'avatar']);
|
||||
}
|
||||
// 关闭任务
|
||||
public function closeTask($id) {
|
||||
return Task::where(['id'=>$id])->save(['status'=>5]);
|
||||
}
|
||||
|
||||
}
|
@ -39,7 +39,7 @@ class TaskScheduling extends BaseModel
|
||||
}
|
||||
public function companyType()
|
||||
{
|
||||
return $this->hasOne(DictData::class, 'id', 'company_type')->bind(['company_type_name'=>'name']);
|
||||
return $this->hasOne(DictData::class, 'id', 'company_type')->bind(['dict_company_type'=>'id', 'company_type_name'=>'name']);
|
||||
}
|
||||
public function template()
|
||||
{
|
||||
|
@ -57,4 +57,7 @@ class TaskSchedulingPlan extends BaseModel
|
||||
public function scheduling(){
|
||||
return $this->hasOne(TaskScheduling::class,'id','scheduling_id');
|
||||
}
|
||||
public function settlement($id=0){
|
||||
TaskSchedulingPlan::where('id', $id)->update(['is_pay' => 1]);
|
||||
}
|
||||
}
|
@ -53,4 +53,8 @@ class TaskTemplate extends BaseModel
|
||||
return json_decode($value,true);
|
||||
}
|
||||
}
|
||||
public function updateTransactionPool($id, $transactionPool)
|
||||
{
|
||||
return TaskTemplate::where('id', $id)->save(['transaction_pool' => $transactionPool]);
|
||||
}
|
||||
}
|
@ -182,7 +182,7 @@ class User extends BaseModel
|
||||
|
||||
public function company()
|
||||
{
|
||||
return $this->hasOne(Company::class, 'id', 'company_id')->field(['id','company_name','admin_id','company_type','responsible_area']);
|
||||
return $this->hasOne(Company::class, 'id', 'company_id')->field(['id','company_name','admin_id','company_type','responsible_area', 'area_manager']);
|
||||
}
|
||||
public function getProvinceNameAttr($value)
|
||||
{
|
||||
@ -220,4 +220,9 @@ class User extends BaseModel
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
public function searchServiceManager($companyId)
|
||||
{
|
||||
return User::where(['company_id' => $companyId, 'group_id'=> 14])->find();
|
||||
}
|
||||
}
|
@ -93,6 +93,11 @@ class TaskInformationJob
|
||||
$arr['money'] = $task_35['money'];
|
||||
$arr['company_account_type'] = 2;
|
||||
}else{
|
||||
/**
|
||||
* 判断入股任务 单次类型 是否超时
|
||||
* 未超时时刷新开始结束时间
|
||||
* 超时则关闭
|
||||
*/
|
||||
if($data['template_info']['day_count']<=$day){
|
||||
TaskSchedulingPlan::where('id', $data['id'])->update(['is_pay' => 0]);
|
||||
try{
|
||||
@ -100,10 +105,10 @@ class TaskInformationJob
|
||||
}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));
|
||||
@ -117,15 +122,32 @@ class TaskInformationJob
|
||||
}
|
||||
else {
|
||||
//其他类型任务
|
||||
$task_count = Task::where('id', $data['task_id'])->field('director_uid,money')->where('status', 3)->with('director_info')->find();
|
||||
if (empty($task_count)) {
|
||||
Log::info('其他任务 ' . $data['template_info']['title'] . '结算失败,任务为空:' . json_encode($data));
|
||||
Task::where('id', $data['task_id'])->update(['status' => 5]);
|
||||
return false;
|
||||
$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;
|
||||
}
|
||||
}
|
||||
$name = $task_count['director_info']['nickname'];
|
||||
$arr['status'] = 1;
|
||||
$arr['money'] = $task_count['money'];
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
Log::error('line:'.$e->getLine().'异常报错:任务结算失败:' . $data['template_info']['title'] . $e->getMessage() . json_encode($data));
|
||||
|
26
app/job/TaskTenZehn.php
Normal file
26
app/job/TaskTenZehn.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace app\job;
|
||||
|
||||
use app\common\logic\task\TaskLogic;
|
||||
use think\queue\Job;
|
||||
use app\api\controller\JunziqianController;
|
||||
|
||||
/**
|
||||
* 任务下发执行的具体逻辑
|
||||
*/
|
||||
class TaskTenZehn
|
||||
{
|
||||
|
||||
public function fire(Job $job, $data)
|
||||
{
|
||||
if ($job->attempts() > 3) {
|
||||
//通过这个方法可以检查这个任务已经重试了几次了
|
||||
}
|
||||
$a=app(JunziqianController::class)->organizationReapply($data);
|
||||
|
||||
// TaskLogic::CronAdd($data['data'],$data['data_two']);
|
||||
//如果任务执行成功后 记得删除任务,不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法
|
||||
$job->delete();
|
||||
}
|
||||
}
|
23
app/job/TownTaskAdd.php
Normal file
23
app/job/TownTaskAdd.php
Normal file
@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace app\job;
|
||||
|
||||
use app\common\logic\task\TaskLogic;
|
||||
use think\queue\Job;
|
||||
|
||||
/**
|
||||
* 镇农科公司任务下发执行的具体逻辑
|
||||
*/
|
||||
class TownTaskAdd
|
||||
{
|
||||
|
||||
public function fire(Job $job, $template)
|
||||
{
|
||||
if ($job->attempts() > 3) {
|
||||
//通过这个方法可以检查这个任务已经重试了几次了
|
||||
}
|
||||
TaskLogic::TownCronAdd($template);
|
||||
//如果任务执行成功后 记得删除任务,不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法
|
||||
$job->delete();
|
||||
}
|
||||
}
|
26
app/job/TownTaskSettlementJob.php
Normal file
26
app/job/TownTaskSettlementJob.php
Normal file
@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace app\job;
|
||||
|
||||
use app\api\controller\RemoteController;
|
||||
use app\common\logic\finance\ShareProfit;
|
||||
use app\common\logic\task\TaskLogic;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\task\Task;
|
||||
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
|
||||
use app\common\model\task_template\TaskTemplate;
|
||||
use think\facade\Log;
|
||||
use think\queue\Job;
|
||||
|
||||
class TownTaskSettlementJob
|
||||
{
|
||||
/**
|
||||
* 镇农科公司任务结算
|
||||
*/
|
||||
public function fire(Job $job, $taskSchedulingPlan)
|
||||
{
|
||||
TaskLogic::townTaskSettlement($taskSchedulingPlan);
|
||||
//如果任务执行成功后 记得删除任务,不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法
|
||||
$job->delete();
|
||||
}
|
||||
}
|
@ -20,7 +20,7 @@ class TaskCron extends Task
|
||||
// $this->everyMinute();//每分钟
|
||||
}
|
||||
/**
|
||||
* 执行任务
|
||||
* 小组服务公司执行任务下发
|
||||
* @return mixed
|
||||
*/
|
||||
protected function execute()
|
||||
@ -29,7 +29,8 @@ class TaskCron extends Task
|
||||
// $time=strtotime(date('Y-m-d',strtotime('-1 day')));
|
||||
$time = strtotime(date('Y-m-d'));
|
||||
// $tiem_end=$time+86399;
|
||||
$plan_all = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->with('company_info')->select()->toArray();
|
||||
// 查询系统目前小组公司的任务安排
|
||||
$plan_all = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->where('company_type', 18)->with('company_info')->select()->toArray();
|
||||
$plan_ids = [];
|
||||
foreach ($plan_all as $k => $v) {
|
||||
$all = TaskTemplate::where('status', 1)->where('task_scheduling', $v['id'])->limit(30)->select()->toArray();
|
||||
|
@ -15,13 +15,26 @@ class TaskSettlementCron extends Task{
|
||||
// $this->everyMinute();//每分钟
|
||||
}
|
||||
/**
|
||||
* 任务结算
|
||||
* 小组服务公司任务结算
|
||||
* @return mixed
|
||||
*/
|
||||
protected function execute()
|
||||
{
|
||||
//yesterday
|
||||
$all=TaskSchedulingPlan::whereDay('end_time','yesterday')->where('is_pay',0)->with(['template_info','scheduling'])->select()->toArray();
|
||||
// $all=TaskSchedulingPlan::whereDay('end_time','yesterday')
|
||||
// ->where('is_pay',0)
|
||||
// ->with(['template_info','scheduling'=>function($query){
|
||||
// $query->where('company_type', 18);
|
||||
// }])
|
||||
// ->select()
|
||||
// ->toArray();
|
||||
$all = TaskSchedulingPlan::whereDay('end_time','yesterday')
|
||||
->withJoin(['scheduling'], 'left')
|
||||
->where('scheduling.company_type', 18)
|
||||
->where('is_pay',0)
|
||||
->with(['template_info'])
|
||||
->select()
|
||||
->toArray();
|
||||
foreach($all as $k=>$v){
|
||||
queue(TaskInformationJob::class,$v);
|
||||
}
|
||||
|
51
app/task/TownTaskCron.php
Normal file
51
app/task/TownTaskCron.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace app\task;
|
||||
|
||||
use app\common\logic\task\TaskLogic;
|
||||
use app\common\model\Company;
|
||||
use app\common\model\task_scheduling\TaskScheduling;
|
||||
use app\common\model\task_template\TaskTemplate;
|
||||
use app\job\TaskAdd;
|
||||
use app\job\TownTaskAdd;
|
||||
use think\facade\Log;
|
||||
use yunwuxin\cron\Task;
|
||||
|
||||
class TownTaskCron extends Task {
|
||||
|
||||
public function configure()
|
||||
{
|
||||
$this->daily(); //设置任务的周期,每天执行一次,更多的方法可以查看源代码,都有注释
|
||||
// $this->everyMinute();//每分钟
|
||||
}
|
||||
/**
|
||||
* 镇农科公司任务下发
|
||||
*/
|
||||
protected function execute()
|
||||
{
|
||||
//任务下发
|
||||
$time = strtotime(date('Y-m-d'));
|
||||
// 查询系统 所有镇农科公司 未下发 的 任务安排
|
||||
$taskSchedulingList = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->where('company_type', 41)->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) {
|
||||
queue(TownTaskAdd::class, $template);
|
||||
// TaskLogic::TownCronAdd($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'));
|
||||
}
|
||||
|
||||
}
|
39
app/task/TownTaskSettlementCron.php
Normal file
39
app/task/TownTaskSettlementCron.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace app\task;
|
||||
|
||||
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
|
||||
use app\job\TownTaskSettlementJob;
|
||||
use think\facade\Log;
|
||||
use yunwuxin\cron\Task;
|
||||
|
||||
class TownTaskSettlementCron extends Task
|
||||
{
|
||||
public function configure()
|
||||
{
|
||||
$this->daily(); //设置任务的周期,每天执行一次,更多的方法可以查看源代码,都有注释
|
||||
// $this->everyMinute();//每分钟
|
||||
}
|
||||
/**
|
||||
* 镇农科公司任务结算
|
||||
* @return mixed
|
||||
*/
|
||||
protected function execute()
|
||||
{
|
||||
Log::info('定时任务结算执行-开始'.date('Y-m-d H:i:s'));
|
||||
//yesterday 昨日未结算的任务计划
|
||||
$taskSchedulingPlanList = TaskSchedulingPlan::whereDay('end_time','yesterday')
|
||||
->withJoin(['scheduling'], 'left')
|
||||
->where('scheduling.company_type', 41)
|
||||
->where('is_pay',0)
|
||||
->with(['template_info'])
|
||||
->select()
|
||||
->toArray();
|
||||
foreach($taskSchedulingPlanList as $taskSchedulingPlan){
|
||||
queue(TownTaskSettlementJob::class, $taskSchedulingPlan);
|
||||
}
|
||||
Log::info('定时任务结算执行-结束'.date('Y-m-d H:i:s'));
|
||||
|
||||
//...具体的任务执行
|
||||
}
|
||||
}
|
@ -10,7 +10,7 @@
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
return [
|
||||
'default' => 'sync',
|
||||
'default' => env('redis.queue'),
|
||||
'connections' => [
|
||||
'sync' => [
|
||||
'type' => 'sync',
|
||||
@ -24,9 +24,9 @@ return [
|
||||
'redis' => [
|
||||
'type' => 'redis',
|
||||
'queue' => 'default',
|
||||
'host' => '127.0.0.1',
|
||||
'host' => env('redis.host'),
|
||||
'port' => 6379,
|
||||
'password' => '',
|
||||
'password' => env('redis.auth'),
|
||||
'select' => 0,
|
||||
'timeout' => 0,
|
||||
'persistent' => false,
|
||||
|
@ -19,11 +19,8 @@ namespace IFlytek\Xfyun\Speech;
|
||||
|
||||
use IFlytek\Xfyun\Core\Traits\SignTrait;
|
||||
use IFlytek\Xfyun\Core\HttpClient;
|
||||
use GuzzleHttp\Psr7\Request;
|
||||
use IFlytek\Xfyun\Speech\Constants\ChatConstants;
|
||||
|
||||
/**
|
||||
* 文本纠错客户端
|
||||
* 讯飞Ai户端
|
||||
*
|
||||
* @author guizheng@iflytek.com
|
||||
*/
|
||||
@ -87,4 +84,37 @@ class ChatClient
|
||||
));
|
||||
return $authAddr;
|
||||
}
|
||||
|
||||
function getBody($appid, $question)
|
||||
{
|
||||
$header = array(
|
||||
"app_id" => $appid,
|
||||
"uid" => "1"
|
||||
);
|
||||
|
||||
$parameter = array(
|
||||
"chat" => array(
|
||||
"domain" => "generalv2",
|
||||
"temperature" => 0.5,
|
||||
"max_tokens" => 1024
|
||||
)
|
||||
);
|
||||
|
||||
$payload = array(
|
||||
"message" => array(
|
||||
"text" => array(
|
||||
array("role" => "user", "content" => $question)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$json_string = json_encode(array(
|
||||
"header" => $header,
|
||||
"parameter" => $parameter,
|
||||
"payload" => $payload
|
||||
));
|
||||
|
||||
return $json_string;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1 +0,0 @@
|
||||
jvGPsGV8dSY3kiokKm83QbY7p7AzLpoiYRDILKtqxTw.ygZpRA3Elso4JmfhhS2sEZzf8WSBgcsagKxvXavv6_M
|
1
public/admin/assets/403.2908d7ab.js
Normal file
1
public/admin/assets/403.2908d7ab.js
Normal file
@ -0,0 +1 @@
|
||||
import o from"./error.c52a2209.js";import{d as r,o as i,c as p,U as m,L as e,a as t}from"./@vue.51d7f2d8.js";import"./element-plus.b64c0a90.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.9f65afb1.js";import"./index.f190d0dd.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";const s="/admin/assets/no_perms.a56e95a5.png",a={class:"error404"},u=t("div",{class:"flex justify-center"},[t("img",{class:"w-[150px] h-[150px]",src:s,alt:""})],-1),T=r({__name:"403",setup(c){return(n,_)=>(i(),p("div",a,[m(o,{code:"403",title:"\u60A8\u7684\u8D26\u53F7\u6743\u9650\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650\uFF01","show-btn":!1},{content:e(()=>[u]),_:1})]))}});export{T as default};
|
1
public/admin/assets/403.64b73e21.js
Normal file
1
public/admin/assets/403.64b73e21.js
Normal file
@ -0,0 +1 @@
|
||||
import o from"./error.b10dbad5.js";import{d as r,o as i,c as p,U as m,L as e,a as t}from"./@vue.51d7f2d8.js";import"./element-plus.4328d892.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.9f65afb1.js";import"./index.4ff2d535.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";const s="/admin/assets/no_perms.a56e95a5.png",a={class:"error404"},u=t("div",{class:"flex justify-center"},[t("img",{class:"w-[150px] h-[150px]",src:s,alt:""})],-1),T=r({__name:"403",setup(c){return(n,_)=>(i(),p("div",a,[m(o,{code:"403",title:"\u60A8\u7684\u8D26\u53F7\u6743\u9650\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650\uFF01","show-btn":!1},{content:e(()=>[u]),_:1})]))}});export{T as default};
|
1
public/admin/assets/403.be543633.js
Normal file
1
public/admin/assets/403.be543633.js
Normal file
@ -0,0 +1 @@
|
||||
import o from"./error.c4961842.js";import{d as r,o as i,c as p,U as m,L as e,a as t}from"./@vue.51d7f2d8.js";import"./element-plus.4328d892.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.9f65afb1.js";import"./index.5a6ac86e.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";const s="/admin/assets/no_perms.a56e95a5.png",a={class:"error404"},u=t("div",{class:"flex justify-center"},[t("img",{class:"w-[150px] h-[150px]",src:s,alt:""})],-1),T=r({__name:"403",setup(c){return(n,_)=>(i(),p("div",a,[m(o,{code:"403",title:"\u60A8\u7684\u8D26\u53F7\u6743\u9650\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650\uFF01","show-btn":!1},{content:e(()=>[u]),_:1})]))}});export{T as default};
|
1
public/admin/assets/403.fb90ae6f.js
Normal file
1
public/admin/assets/403.fb90ae6f.js
Normal file
@ -0,0 +1 @@
|
||||
import o from"./error.bfcea95a.js";import{d as r,o as i,c as p,U as m,L as e,a as t}from"./@vue.51d7f2d8.js";import"./element-plus.b64c0a90.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.9f65afb1.js";import"./index.760285cd.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";const s="/admin/assets/no_perms.a56e95a5.png",a={class:"error404"},u=t("div",{class:"flex justify-center"},[t("img",{class:"w-[150px] h-[150px]",src:s,alt:""})],-1),T=r({__name:"403",setup(c){return(n,_)=>(i(),p("div",a,[m(o,{code:"403",title:"\u60A8\u7684\u8D26\u53F7\u6743\u9650\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650\uFF01","show-btn":!1},{content:e(()=>[u]),_:1})]))}});export{T as default};
|
1
public/admin/assets/404.4128af2f.js
Normal file
1
public/admin/assets/404.4128af2f.js
Normal file
@ -0,0 +1 @@
|
||||
import o from"./error.c52a2209.js";import{d as r,o as t,c as m,U as p}from"./@vue.51d7f2d8.js";import"./element-plus.b64c0a90.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.9f65afb1.js";import"./index.f190d0dd.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";const i={class:"error404"},P=r({__name:"404",setup(e){return(u,c)=>(t(),m("div",i,[p(o,{code:"404",title:"\u54CE\u5440\uFF0C\u51FA\u9519\u4E86\uFF01\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u2026"})]))}});export{P as default};
|
1
public/admin/assets/404.920de617.js
Normal file
1
public/admin/assets/404.920de617.js
Normal file
@ -0,0 +1 @@
|
||||
import o from"./error.c4961842.js";import{d as r,o as t,c as m,U as p}from"./@vue.51d7f2d8.js";import"./element-plus.4328d892.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.9f65afb1.js";import"./index.5a6ac86e.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";const i={class:"error404"},P=r({__name:"404",setup(e){return(u,c)=>(t(),m("div",i,[p(o,{code:"404",title:"\u54CE\u5440\uFF0C\u51FA\u9519\u4E86\uFF01\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u2026"})]))}});export{P as default};
|
1
public/admin/assets/404.c2718075.js
Normal file
1
public/admin/assets/404.c2718075.js
Normal file
@ -0,0 +1 @@
|
||||
import o from"./error.b10dbad5.js";import{d as r,o as t,c as m,U as p}from"./@vue.51d7f2d8.js";import"./element-plus.4328d892.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.9f65afb1.js";import"./index.4ff2d535.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";const i={class:"error404"},P=r({__name:"404",setup(e){return(u,c)=>(t(),m("div",i,[p(o,{code:"404",title:"\u54CE\u5440\uFF0C\u51FA\u9519\u4E86\uFF01\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u2026"})]))}});export{P as default};
|
1
public/admin/assets/404.f1a21415.js
Normal file
1
public/admin/assets/404.f1a21415.js
Normal file
@ -0,0 +1 @@
|
||||
import o from"./error.bfcea95a.js";import{d as r,o as t,c as m,U as p}from"./@vue.51d7f2d8.js";import"./element-plus.b64c0a90.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.9f65afb1.js";import"./index.760285cd.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";const i={class:"error404"},P=r({__name:"404",setup(e){return(u,c)=>(t(),m("div",i,[p(o,{code:"404",title:"\u54CE\u5440\uFF0C\u51FA\u9519\u4E86\uFF01\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u2026"})]))}});export{P as default};
|
1
public/admin/assets/Withdrawal.1c0df456.js
Normal file
1
public/admin/assets/Withdrawal.1c0df456.js
Normal file
File diff suppressed because one or more lines are too long
1
public/admin/assets/Withdrawal.25da6fc9.js
Normal file
1
public/admin/assets/Withdrawal.25da6fc9.js
Normal file
File diff suppressed because one or more lines are too long
1
public/admin/assets/Withdrawal.656bf41f.js
Normal file
1
public/admin/assets/Withdrawal.656bf41f.js
Normal file
File diff suppressed because one or more lines are too long
1
public/admin/assets/Withdrawal.7b69bf9e.js
Normal file
1
public/admin/assets/Withdrawal.7b69bf9e.js
Normal file
File diff suppressed because one or more lines are too long
1
public/admin/assets/account-adjust.204d978a.js
Normal file
1
public/admin/assets/account-adjust.204d978a.js
Normal file
@ -0,0 +1 @@
|
||||
import"./account-adjust.vue_vue_type_script_setup_true_lang.18806740.js";import{_ as N}from"./account-adjust.vue_vue_type_script_setup_true_lang.18806740.js";import"./element-plus.4328d892.js";import"./@vue.51d7f2d8.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.1c9aaf4d.js";import"./index.vue_vue_type_style_index_0_scoped_95d1884e_lang.0fc4c9f8.js";import"./index.4ff2d535.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./vue-router.9f65afb1.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";export{N as default};
|
1
public/admin/assets/account-adjust.4b8ab13d.js
Normal file
1
public/admin/assets/account-adjust.4b8ab13d.js
Normal file
@ -0,0 +1 @@
|
||||
import"./account-adjust.vue_vue_type_script_setup_true_lang.67917e81.js";import{_ as N}from"./account-adjust.vue_vue_type_script_setup_true_lang.67917e81.js";import"./element-plus.b64c0a90.js";import"./@vue.51d7f2d8.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.9561c5d9.js";import"./index.vue_vue_type_style_index_0_scoped_95d1884e_lang.0fc4c9f8.js";import"./index.f190d0dd.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./vue-router.9f65afb1.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";export{N as default};
|
1
public/admin/assets/account-adjust.4e202fa0.js
Normal file
1
public/admin/assets/account-adjust.4e202fa0.js
Normal file
@ -0,0 +1 @@
|
||||
import"./account-adjust.vue_vue_type_script_setup_true_lang.a704baaf.js";import{_ as N}from"./account-adjust.vue_vue_type_script_setup_true_lang.a704baaf.js";import"./element-plus.4328d892.js";import"./@vue.51d7f2d8.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.df3950ef.js";import"./index.vue_vue_type_style_index_0_scoped_95d1884e_lang.0fc4c9f8.js";import"./index.5a6ac86e.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./vue-router.9f65afb1.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";export{N as default};
|
1
public/admin/assets/account-adjust.8c3b1050.js
Normal file
1
public/admin/assets/account-adjust.8c3b1050.js
Normal file
@ -0,0 +1 @@
|
||||
import"./account-adjust.vue_vue_type_script_setup_true_lang.ce6c7365.js";import{_ as N}from"./account-adjust.vue_vue_type_script_setup_true_lang.ce6c7365.js";import"./element-plus.b64c0a90.js";import"./@vue.51d7f2d8.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.8bb6f5eb.js";import"./index.vue_vue_type_style_index_0_scoped_95d1884e_lang.0fc4c9f8.js";import"./index.760285cd.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./vue-router.9f65afb1.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";export{N as default};
|
@ -0,0 +1 @@
|
||||
import{C as x,G as B,H as R,B as g,D as N}from"./element-plus.4328d892.js";import{P as q}from"./index.1c9aaf4d.js";import{f as C}from"./index.4ff2d535.js";import{d as A,s as D,$ as I,e as S,w as b,o as U,K as j,L as a,a as G,U as o,u as r,R as n,S as E}from"./@vue.51d7f2d8.js";const P={class:"pr-8"},T=A({__name:"account-adjust",props:{show:{type:Boolean,required:!0},value:{type:[Number,String],required:!0}},emits:["update:show","confirm"],setup(d,{emit:i}){const c=d,s=D(),u=I({action:1,num:"",remark:""}),m=D(),f=S(()=>Number(c.value)+Number(u.num)*(u.action==1?1:-1)),w={num:[{required:!0,message:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D"}]},v=e=>{if(e.includes("-"))return C.msgError("\u8BF7\u8F93\u5165\u6B63\u6574\u6570");u.num=e},y=async()=>{var e;await((e=s.value)==null?void 0:e.validate()),i("confirm",u)},V=()=>{var e;i("update:show",!1),(e=s.value)==null||e.resetFields()};return b(()=>c.show,e=>{var l,t;e?(l=m.value)==null||l.open():(t=m.value)==null||t.close()}),b(f,e=>{e<0&&(C.msgError("\u8C03\u6574\u540E\u4F59\u989D\u9700\u5927\u4E8E0"),u.num="")}),(e,l)=>{const t=x,_=B,h=R,F=g,k=N;return U(),j(q,{ref_key:"popupRef",ref:m,title:"\u4F59\u989D\u8C03\u6574",width:"500px",onConfirm:y,async:!0,onClose:V},{default:a(()=>[G("div",P,[o(k,{ref_key:"formRef",ref:s,model:r(u),"label-width":"120px",rules:w},{default:a(()=>[o(t,{label:"\u5F53\u524D\u4F59\u989D"},{default:a(()=>[n("\xA5 "+E(d.value),1)]),_:1}),o(t,{label:"\u4F59\u989D\u589E\u51CF",required:"",prop:"action"},{default:a(()=>[o(h,{modelValue:r(u).action,"onUpdate:modelValue":l[0]||(l[0]=p=>r(u).action=p)},{default:a(()=>[o(_,{label:1},{default:a(()=>[n("\u589E\u52A0\u4F59\u989D")]),_:1}),o(_,{label:2},{default:a(()=>[n("\u6263\u51CF\u4F59\u989D")]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(t,{label:"\u8C03\u6574\u4F59\u989D",prop:"num"},{default:a(()=>[o(F,{"model-value":r(u).num,placeholder:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D",type:"number",onInput:v},null,8,["model-value"])]),_:1}),o(t,{label:"\u8C03\u6574\u540E\u4F59\u989D"},{default:a(()=>[n(" \xA5 "+E(r(f)),1)]),_:1}),o(t,{label:"\u5907\u6CE8",prop:"remark"},{default:a(()=>[o(F,{modelValue:r(u).remark,"onUpdate:modelValue":l[1]||(l[1]=p=>r(u).remark=p),type:"textarea",rows:4},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},512)}}});export{T as _};
|
@ -0,0 +1 @@
|
||||
import{C as x,G as B,H as R,B as g,D as N}from"./element-plus.b64c0a90.js";import{P as q}from"./index.9561c5d9.js";import{f as C}from"./index.f190d0dd.js";import{d as A,s as D,$ as I,e as S,w as b,o as U,K as j,L as a,a as G,U as o,u as r,R as n,S as E}from"./@vue.51d7f2d8.js";const P={class:"pr-8"},T=A({__name:"account-adjust",props:{show:{type:Boolean,required:!0},value:{type:[Number,String],required:!0}},emits:["update:show","confirm"],setup(d,{emit:i}){const c=d,s=D(),u=I({action:1,num:"",remark:""}),m=D(),f=S(()=>Number(c.value)+Number(u.num)*(u.action==1?1:-1)),w={num:[{required:!0,message:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D"}]},v=e=>{if(e.includes("-"))return C.msgError("\u8BF7\u8F93\u5165\u6B63\u6574\u6570");u.num=e},y=async()=>{var e;await((e=s.value)==null?void 0:e.validate()),i("confirm",u)},V=()=>{var e;i("update:show",!1),(e=s.value)==null||e.resetFields()};return b(()=>c.show,e=>{var l,t;e?(l=m.value)==null||l.open():(t=m.value)==null||t.close()}),b(f,e=>{e<0&&(C.msgError("\u8C03\u6574\u540E\u4F59\u989D\u9700\u5927\u4E8E0"),u.num="")}),(e,l)=>{const t=x,_=B,h=R,F=g,k=N;return U(),j(q,{ref_key:"popupRef",ref:m,title:"\u4F59\u989D\u8C03\u6574",width:"500px",onConfirm:y,async:!0,onClose:V},{default:a(()=>[G("div",P,[o(k,{ref_key:"formRef",ref:s,model:r(u),"label-width":"120px",rules:w},{default:a(()=>[o(t,{label:"\u5F53\u524D\u4F59\u989D"},{default:a(()=>[n("\xA5 "+E(d.value),1)]),_:1}),o(t,{label:"\u4F59\u989D\u589E\u51CF",required:"",prop:"action"},{default:a(()=>[o(h,{modelValue:r(u).action,"onUpdate:modelValue":l[0]||(l[0]=p=>r(u).action=p)},{default:a(()=>[o(_,{label:1},{default:a(()=>[n("\u589E\u52A0\u4F59\u989D")]),_:1}),o(_,{label:2},{default:a(()=>[n("\u6263\u51CF\u4F59\u989D")]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(t,{label:"\u8C03\u6574\u4F59\u989D",prop:"num"},{default:a(()=>[o(F,{"model-value":r(u).num,placeholder:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D",type:"number",onInput:v},null,8,["model-value"])]),_:1}),o(t,{label:"\u8C03\u6574\u540E\u4F59\u989D"},{default:a(()=>[n(" \xA5 "+E(r(f)),1)]),_:1}),o(t,{label:"\u5907\u6CE8",prop:"remark"},{default:a(()=>[o(F,{modelValue:r(u).remark,"onUpdate:modelValue":l[1]||(l[1]=p=>r(u).remark=p),type:"textarea",rows:4},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},512)}}});export{T as _};
|
@ -0,0 +1 @@
|
||||
import{C as x,G as B,H as R,B as g,D as N}from"./element-plus.4328d892.js";import{P as q}from"./index.df3950ef.js";import{f as C}from"./index.5a6ac86e.js";import{d as A,s as D,$ as I,e as S,w as b,o as U,K as j,L as a,a as G,U as o,u as r,R as n,S as E}from"./@vue.51d7f2d8.js";const P={class:"pr-8"},T=A({__name:"account-adjust",props:{show:{type:Boolean,required:!0},value:{type:[Number,String],required:!0}},emits:["update:show","confirm"],setup(d,{emit:i}){const c=d,s=D(),u=I({action:1,num:"",remark:""}),m=D(),f=S(()=>Number(c.value)+Number(u.num)*(u.action==1?1:-1)),w={num:[{required:!0,message:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D"}]},v=e=>{if(e.includes("-"))return C.msgError("\u8BF7\u8F93\u5165\u6B63\u6574\u6570");u.num=e},y=async()=>{var e;await((e=s.value)==null?void 0:e.validate()),i("confirm",u)},V=()=>{var e;i("update:show",!1),(e=s.value)==null||e.resetFields()};return b(()=>c.show,e=>{var l,t;e?(l=m.value)==null||l.open():(t=m.value)==null||t.close()}),b(f,e=>{e<0&&(C.msgError("\u8C03\u6574\u540E\u4F59\u989D\u9700\u5927\u4E8E0"),u.num="")}),(e,l)=>{const t=x,_=B,h=R,F=g,k=N;return U(),j(q,{ref_key:"popupRef",ref:m,title:"\u4F59\u989D\u8C03\u6574",width:"500px",onConfirm:y,async:!0,onClose:V},{default:a(()=>[G("div",P,[o(k,{ref_key:"formRef",ref:s,model:r(u),"label-width":"120px",rules:w},{default:a(()=>[o(t,{label:"\u5F53\u524D\u4F59\u989D"},{default:a(()=>[n("\xA5 "+E(d.value),1)]),_:1}),o(t,{label:"\u4F59\u989D\u589E\u51CF",required:"",prop:"action"},{default:a(()=>[o(h,{modelValue:r(u).action,"onUpdate:modelValue":l[0]||(l[0]=p=>r(u).action=p)},{default:a(()=>[o(_,{label:1},{default:a(()=>[n("\u589E\u52A0\u4F59\u989D")]),_:1}),o(_,{label:2},{default:a(()=>[n("\u6263\u51CF\u4F59\u989D")]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(t,{label:"\u8C03\u6574\u4F59\u989D",prop:"num"},{default:a(()=>[o(F,{"model-value":r(u).num,placeholder:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D",type:"number",onInput:v},null,8,["model-value"])]),_:1}),o(t,{label:"\u8C03\u6574\u540E\u4F59\u989D"},{default:a(()=>[n(" \xA5 "+E(r(f)),1)]),_:1}),o(t,{label:"\u5907\u6CE8",prop:"remark"},{default:a(()=>[o(F,{modelValue:r(u).remark,"onUpdate:modelValue":l[1]||(l[1]=p=>r(u).remark=p),type:"textarea",rows:4},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},512)}}});export{T as _};
|
@ -0,0 +1 @@
|
||||
import{C as x,G as B,H as R,B as g,D as N}from"./element-plus.b64c0a90.js";import{P as q}from"./index.8bb6f5eb.js";import{f as C}from"./index.760285cd.js";import{d as A,s as D,$ as I,e as S,w as b,o as U,K as j,L as a,a as G,U as o,u as r,R as n,S as E}from"./@vue.51d7f2d8.js";const P={class:"pr-8"},T=A({__name:"account-adjust",props:{show:{type:Boolean,required:!0},value:{type:[Number,String],required:!0}},emits:["update:show","confirm"],setup(d,{emit:i}){const c=d,s=D(),u=I({action:1,num:"",remark:""}),m=D(),f=S(()=>Number(c.value)+Number(u.num)*(u.action==1?1:-1)),w={num:[{required:!0,message:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D"}]},v=e=>{if(e.includes("-"))return C.msgError("\u8BF7\u8F93\u5165\u6B63\u6574\u6570");u.num=e},y=async()=>{var e;await((e=s.value)==null?void 0:e.validate()),i("confirm",u)},V=()=>{var e;i("update:show",!1),(e=s.value)==null||e.resetFields()};return b(()=>c.show,e=>{var l,t;e?(l=m.value)==null||l.open():(t=m.value)==null||t.close()}),b(f,e=>{e<0&&(C.msgError("\u8C03\u6574\u540E\u4F59\u989D\u9700\u5927\u4E8E0"),u.num="")}),(e,l)=>{const t=x,_=B,h=R,F=g,k=N;return U(),j(q,{ref_key:"popupRef",ref:m,title:"\u4F59\u989D\u8C03\u6574",width:"500px",onConfirm:y,async:!0,onClose:V},{default:a(()=>[G("div",P,[o(k,{ref_key:"formRef",ref:s,model:r(u),"label-width":"120px",rules:w},{default:a(()=>[o(t,{label:"\u5F53\u524D\u4F59\u989D"},{default:a(()=>[n("\xA5 "+E(d.value),1)]),_:1}),o(t,{label:"\u4F59\u989D\u589E\u51CF",required:"",prop:"action"},{default:a(()=>[o(h,{modelValue:r(u).action,"onUpdate:modelValue":l[0]||(l[0]=p=>r(u).action=p)},{default:a(()=>[o(_,{label:1},{default:a(()=>[n("\u589E\u52A0\u4F59\u989D")]),_:1}),o(_,{label:2},{default:a(()=>[n("\u6263\u51CF\u4F59\u989D")]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(t,{label:"\u8C03\u6574\u4F59\u989D",prop:"num"},{default:a(()=>[o(F,{"model-value":r(u).num,placeholder:"\u8BF7\u8F93\u5165\u8C03\u6574\u7684\u91D1\u989D",type:"number",onInput:v},null,8,["model-value"])]),_:1}),o(t,{label:"\u8C03\u6574\u540E\u4F59\u989D"},{default:a(()=>[n(" \xA5 "+E(r(f)),1)]),_:1}),o(t,{label:"\u5907\u6CE8",prop:"remark"},{default:a(()=>[o(F,{modelValue:r(u).remark,"onUpdate:modelValue":l[1]||(l[1]=p=>r(u).remark=p),type:"textarea",rows:4},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},512)}}});export{T as _};
|
1
public/admin/assets/add-nav.23985b44.js
Normal file
1
public/admin/assets/add-nav.23985b44.js
Normal file
@ -0,0 +1 @@
|
||||
import"./add-nav.vue_vue_type_script_setup_true_lang.4fd23862.js";import{_ as Z}from"./add-nav.vue_vue_type_script_setup_true_lang.4fd23862.js";import"./element-plus.4328d892.js";import"./@vue.51d7f2d8.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.11ed41fb.js";import"./index.5a6ac86e.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./vue-router.9f65afb1.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";import"./picker.995d7639.js";import"./index.df3950ef.js";import"./index.vue_vue_type_style_index_0_scoped_95d1884e_lang.0fc4c9f8.js";import"./picker.3a1ba420.js";import"./index.45141e8f.js";import"./index.vue_vue_type_script_setup_true_lang.f93228b5.js";import"./index.4f535bb7.js";import"./index.vue_vue_type_script_setup_true_lang.dc835bba.js";import"./usePaging.2ad8e1e6.js";import"./vue3-video-play.b911321b.js";import"./vuedraggable.0cb40d3a.js";import"./vue.5de34049.js";import"./sortablejs.ef73fc5c.js";export{Z as default};
|
1
public/admin/assets/add-nav.85e8f8ae.js
Normal file
1
public/admin/assets/add-nav.85e8f8ae.js
Normal file
@ -0,0 +1 @@
|
||||
import"./add-nav.vue_vue_type_script_setup_true_lang.0e1c4206.js";import{_ as Z}from"./add-nav.vue_vue_type_script_setup_true_lang.0e1c4206.js";import"./element-plus.b64c0a90.js";import"./@vue.51d7f2d8.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.d26f69dc.js";import"./index.f190d0dd.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./vue-router.9f65afb1.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";import"./picker.6663b709.js";import"./index.9561c5d9.js";import"./index.vue_vue_type_style_index_0_scoped_95d1884e_lang.0fc4c9f8.js";import"./picker.0b7aa777.js";import"./index.74494060.js";import"./index.vue_vue_type_script_setup_true_lang.a080b28e.js";import"./index.bec6119f.js";import"./index.vue_vue_type_script_setup_true_lang.c4fa43c7.js";import"./usePaging.2ad8e1e6.js";import"./vue3-video-play.b911321b.js";import"./vuedraggable.0cb40d3a.js";import"./vue.5de34049.js";import"./sortablejs.ef73fc5c.js";export{Z as default};
|
1
public/admin/assets/add-nav.c8bc6bb7.js
Normal file
1
public/admin/assets/add-nav.c8bc6bb7.js
Normal file
@ -0,0 +1 @@
|
||||
import"./add-nav.vue_vue_type_script_setup_true_lang.53d58090.js";import{_ as Z}from"./add-nav.vue_vue_type_script_setup_true_lang.53d58090.js";import"./element-plus.b64c0a90.js";import"./@vue.51d7f2d8.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.faac87da.js";import"./index.760285cd.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./vue-router.9f65afb1.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";import"./picker.a03ef28f.js";import"./index.8bb6f5eb.js";import"./index.vue_vue_type_style_index_0_scoped_95d1884e_lang.0fc4c9f8.js";import"./picker.3283c3e3.js";import"./index.f53f11d9.js";import"./index.vue_vue_type_script_setup_true_lang.a080b28e.js";import"./index.b06f93da.js";import"./index.vue_vue_type_script_setup_true_lang.c4fa43c7.js";import"./usePaging.2ad8e1e6.js";import"./vue3-video-play.b911321b.js";import"./vuedraggable.0cb40d3a.js";import"./vue.5de34049.js";import"./sortablejs.ef73fc5c.js";export{Z as default};
|
1
public/admin/assets/add-nav.f11f2b07.js
Normal file
1
public/admin/assets/add-nav.f11f2b07.js
Normal file
@ -0,0 +1 @@
|
||||
import"./add-nav.vue_vue_type_script_setup_true_lang.ba506477.js";import{_ as Z}from"./add-nav.vue_vue_type_script_setup_true_lang.ba506477.js";import"./element-plus.4328d892.js";import"./@vue.51d7f2d8.js";import"./@vueuse.ec90c285.js";import"./@element-plus.a074d1f6.js";import"./lodash-es.29c53eac.js";import"./dayjs.e873ead7.js";import"./@amap.8a62addd.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.7debd8b2.js";import"./index.4ff2d535.js";import"./lodash.08438971.js";import"./axios.105476b3.js";import"./vue-router.9f65afb1.js";import"./pinia.56356cb7.js";import"./vue-demi.b3a9cad9.js";import"./css-color-function.7ac6f233.js";import"./color.44a05936.js";import"./clone.0afcbf90.js";import"./color-convert.755d189f.js";import"./color-name.e7a4e1d3.js";import"./color-string.e356f5de.js";import"./balanced-match.d2a36341.js";import"./debug.86067895.js";import"./ms.a9ae1d6d.js";import"./nprogress.f73355d0.js";import"./vue-clipboard3.dca5bca3.js";import"./clipboard.16e4491b.js";import"./echarts.ac57a99a.js";import"./zrender.d54ce080.js";import"./tslib.60310f1a.js";import"./highlight.js.dba6fa1b.js";import"./@highlightjs.40d5feba.js";import"./picker.fdd8465d.js";import"./index.1c9aaf4d.js";import"./index.vue_vue_type_style_index_0_scoped_95d1884e_lang.0fc4c9f8.js";import"./picker.7728648c.js";import"./index.d647cb3f.js";import"./index.vue_vue_type_script_setup_true_lang.f93228b5.js";import"./index.fd921f20.js";import"./index.vue_vue_type_script_setup_true_lang.dc835bba.js";import"./usePaging.2ad8e1e6.js";import"./vue3-video-play.b911321b.js";import"./vuedraggable.0cb40d3a.js";import"./vue.5de34049.js";import"./sortablejs.ef73fc5c.js";export{Z as default};
|
@ -0,0 +1 @@
|
||||
import{B,w as D}from"./element-plus.b64c0a90.js";import{_ as F}from"./index.d26f69dc.js";import{_ as A}from"./picker.6663b709.js";import{_ as y}from"./picker.0b7aa777.js";import{f as p,b as E}from"./index.f190d0dd.js";import{D as U}from"./vuedraggable.0cb40d3a.js";import{d as C,e as w,o as c,c as N,a as e,U as t,L as m,K as $,u as r,k as z,R as L}from"./@vue.51d7f2d8.js";const R={class:"bg-fill-light flex items-center w-full p-4 mb-4 cursor-move"},I={class:"upload-btn w-[60px] h-[60px]"},K={class:"ml-3 flex-1"},P={class:"flex"},T=e("span",{class:"text-tx-regular flex-none mr-3"},"\u540D\u79F0",-1),j={class:"flex mt-[18px]"},q=e("span",{class:"text-tx-regular flex-none mr-3"},"\u94FE\u63A5",-1),W=C({__name:"add-nav",props:{modelValue:{type:Array,default:()=>[]},max:{type:Number,default:10},min:{type:Number,default:1}},emits:["update:modelValue"],setup(_,{emit:i}){const o=_,s=w({get(){return o.modelValue},set(a){i("update:modelValue",a)}}),f=()=>{var a;((a=o.modelValue)==null?void 0:a.length)<o.max?s.value.push({image:"",name:"\u5BFC\u822A\u540D\u79F0",link:{}}):p.msgError(`\u6700\u591A\u6DFB\u52A0${o.max}\u4E2A`)},V=a=>{var u;if(((u=o.modelValue)==null?void 0:u.length)<=o.min)return p.msgError(`\u6700\u5C11\u4FDD\u7559${o.min}\u4E2A`);s.value.splice(a,1)};return(a,u)=>{const x=E,g=y,h=B,v=A,k=F,b=D;return c(),N("div",null,[e("div",null,[t(r(U),{class:"draggable",modelValue:r(s),"onUpdate:modelValue":u[0]||(u[0]=l=>z(s)?s.value=l:null),animation:"300"},{item:m(({element:l,index:d})=>[(c(),$(k,{class:"max-w-[400px]",key:d,onClose:n=>V(d)},{default:m(()=>[e("div",R,[t(g,{modelValue:l.image,"onUpdate:modelValue":n=>l.image=n,"upload-class":"bg-body",size:"60px","exclude-domain":""},{upload:m(()=>[e("div",I,[t(x,{name:"el-icon-Plus",size:20})])]),_:2},1032,["modelValue","onUpdate:modelValue"]),e("div",K,[e("div",P,[T,t(h,{modelValue:l.name,"onUpdate:modelValue":n=>l.name=n,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),e("div",j,[q,t(v,{modelValue:l.link,"onUpdate:modelValue":n=>l.link=n},null,8,["modelValue","onUpdate:modelValue"])])])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),e("div",null,[t(b,{type:"primary",onClick:f},{default:m(()=>[L("\u6DFB\u52A0")]),_:1})])])}}});export{W as _};
|
@ -0,0 +1 @@
|
||||
import{B,w as D}from"./element-plus.4328d892.js";import{_ as F}from"./index.11ed41fb.js";import{_ as A}from"./picker.995d7639.js";import{_ as y}from"./picker.3a1ba420.js";import{f as p,b as E}from"./index.5a6ac86e.js";import{D as U}from"./vuedraggable.0cb40d3a.js";import{d as C,e as w,o as c,c as N,a as e,U as t,L as m,K as $,u as r,k as z,R as L}from"./@vue.51d7f2d8.js";const R={class:"bg-fill-light flex items-center w-full p-4 mb-4 cursor-move"},I={class:"upload-btn w-[60px] h-[60px]"},K={class:"ml-3 flex-1"},P={class:"flex"},T=e("span",{class:"text-tx-regular flex-none mr-3"},"\u540D\u79F0",-1),j={class:"flex mt-[18px]"},q=e("span",{class:"text-tx-regular flex-none mr-3"},"\u94FE\u63A5",-1),W=C({__name:"add-nav",props:{modelValue:{type:Array,default:()=>[]},max:{type:Number,default:10},min:{type:Number,default:1}},emits:["update:modelValue"],setup(_,{emit:i}){const o=_,s=w({get(){return o.modelValue},set(a){i("update:modelValue",a)}}),f=()=>{var a;((a=o.modelValue)==null?void 0:a.length)<o.max?s.value.push({image:"",name:"\u5BFC\u822A\u540D\u79F0",link:{}}):p.msgError(`\u6700\u591A\u6DFB\u52A0${o.max}\u4E2A`)},V=a=>{var u;if(((u=o.modelValue)==null?void 0:u.length)<=o.min)return p.msgError(`\u6700\u5C11\u4FDD\u7559${o.min}\u4E2A`);s.value.splice(a,1)};return(a,u)=>{const x=E,g=y,h=B,v=A,k=F,b=D;return c(),N("div",null,[e("div",null,[t(r(U),{class:"draggable",modelValue:r(s),"onUpdate:modelValue":u[0]||(u[0]=l=>z(s)?s.value=l:null),animation:"300"},{item:m(({element:l,index:d})=>[(c(),$(k,{class:"max-w-[400px]",key:d,onClose:n=>V(d)},{default:m(()=>[e("div",R,[t(g,{modelValue:l.image,"onUpdate:modelValue":n=>l.image=n,"upload-class":"bg-body",size:"60px","exclude-domain":""},{upload:m(()=>[e("div",I,[t(x,{name:"el-icon-Plus",size:20})])]),_:2},1032,["modelValue","onUpdate:modelValue"]),e("div",K,[e("div",P,[T,t(h,{modelValue:l.name,"onUpdate:modelValue":n=>l.name=n,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),e("div",j,[q,t(v,{modelValue:l.link,"onUpdate:modelValue":n=>l.link=n},null,8,["modelValue","onUpdate:modelValue"])])])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),e("div",null,[t(b,{type:"primary",onClick:f},{default:m(()=>[L("\u6DFB\u52A0")]),_:1})])])}}});export{W as _};
|
@ -0,0 +1 @@
|
||||
import{B,w as D}from"./element-plus.b64c0a90.js";import{_ as F}from"./index.faac87da.js";import{_ as A}from"./picker.a03ef28f.js";import{_ as y}from"./picker.3283c3e3.js";import{f as p,b as E}from"./index.760285cd.js";import{D as U}from"./vuedraggable.0cb40d3a.js";import{d as C,e as w,o as c,c as N,a as e,U as t,L as m,K as $,u as r,k as z,R as L}from"./@vue.51d7f2d8.js";const R={class:"bg-fill-light flex items-center w-full p-4 mb-4 cursor-move"},I={class:"upload-btn w-[60px] h-[60px]"},K={class:"ml-3 flex-1"},P={class:"flex"},T=e("span",{class:"text-tx-regular flex-none mr-3"},"\u540D\u79F0",-1),j={class:"flex mt-[18px]"},q=e("span",{class:"text-tx-regular flex-none mr-3"},"\u94FE\u63A5",-1),W=C({__name:"add-nav",props:{modelValue:{type:Array,default:()=>[]},max:{type:Number,default:10},min:{type:Number,default:1}},emits:["update:modelValue"],setup(_,{emit:i}){const o=_,s=w({get(){return o.modelValue},set(a){i("update:modelValue",a)}}),f=()=>{var a;((a=o.modelValue)==null?void 0:a.length)<o.max?s.value.push({image:"",name:"\u5BFC\u822A\u540D\u79F0",link:{}}):p.msgError(`\u6700\u591A\u6DFB\u52A0${o.max}\u4E2A`)},V=a=>{var u;if(((u=o.modelValue)==null?void 0:u.length)<=o.min)return p.msgError(`\u6700\u5C11\u4FDD\u7559${o.min}\u4E2A`);s.value.splice(a,1)};return(a,u)=>{const x=E,g=y,h=B,v=A,k=F,b=D;return c(),N("div",null,[e("div",null,[t(r(U),{class:"draggable",modelValue:r(s),"onUpdate:modelValue":u[0]||(u[0]=l=>z(s)?s.value=l:null),animation:"300"},{item:m(({element:l,index:d})=>[(c(),$(k,{class:"max-w-[400px]",key:d,onClose:n=>V(d)},{default:m(()=>[e("div",R,[t(g,{modelValue:l.image,"onUpdate:modelValue":n=>l.image=n,"upload-class":"bg-body",size:"60px","exclude-domain":""},{upload:m(()=>[e("div",I,[t(x,{name:"el-icon-Plus",size:20})])]),_:2},1032,["modelValue","onUpdate:modelValue"]),e("div",K,[e("div",P,[T,t(h,{modelValue:l.name,"onUpdate:modelValue":n=>l.name=n,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),e("div",j,[q,t(v,{modelValue:l.link,"onUpdate:modelValue":n=>l.link=n},null,8,["modelValue","onUpdate:modelValue"])])])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),e("div",null,[t(b,{type:"primary",onClick:f},{default:m(()=>[L("\u6DFB\u52A0")]),_:1})])])}}});export{W as _};
|
@ -0,0 +1 @@
|
||||
import{B,w as D}from"./element-plus.4328d892.js";import{_ as F}from"./index.7debd8b2.js";import{_ as A}from"./picker.fdd8465d.js";import{_ as y}from"./picker.7728648c.js";import{f as p,b as E}from"./index.4ff2d535.js";import{D as U}from"./vuedraggable.0cb40d3a.js";import{d as C,e as w,o as c,c as N,a as e,U as t,L as m,K as $,u as r,k as z,R as L}from"./@vue.51d7f2d8.js";const R={class:"bg-fill-light flex items-center w-full p-4 mb-4 cursor-move"},I={class:"upload-btn w-[60px] h-[60px]"},K={class:"ml-3 flex-1"},P={class:"flex"},T=e("span",{class:"text-tx-regular flex-none mr-3"},"\u540D\u79F0",-1),j={class:"flex mt-[18px]"},q=e("span",{class:"text-tx-regular flex-none mr-3"},"\u94FE\u63A5",-1),W=C({__name:"add-nav",props:{modelValue:{type:Array,default:()=>[]},max:{type:Number,default:10},min:{type:Number,default:1}},emits:["update:modelValue"],setup(_,{emit:i}){const o=_,s=w({get(){return o.modelValue},set(a){i("update:modelValue",a)}}),f=()=>{var a;((a=o.modelValue)==null?void 0:a.length)<o.max?s.value.push({image:"",name:"\u5BFC\u822A\u540D\u79F0",link:{}}):p.msgError(`\u6700\u591A\u6DFB\u52A0${o.max}\u4E2A`)},V=a=>{var u;if(((u=o.modelValue)==null?void 0:u.length)<=o.min)return p.msgError(`\u6700\u5C11\u4FDD\u7559${o.min}\u4E2A`);s.value.splice(a,1)};return(a,u)=>{const x=E,g=y,h=B,v=A,k=F,b=D;return c(),N("div",null,[e("div",null,[t(r(U),{class:"draggable",modelValue:r(s),"onUpdate:modelValue":u[0]||(u[0]=l=>z(s)?s.value=l:null),animation:"300"},{item:m(({element:l,index:d})=>[(c(),$(k,{class:"max-w-[400px]",key:d,onClose:n=>V(d)},{default:m(()=>[e("div",R,[t(g,{modelValue:l.image,"onUpdate:modelValue":n=>l.image=n,"upload-class":"bg-body",size:"60px","exclude-domain":""},{upload:m(()=>[e("div",I,[t(x,{name:"el-icon-Plus",size:20})])]),_:2},1032,["modelValue","onUpdate:modelValue"]),e("div",K,[e("div",P,[T,t(h,{modelValue:l.name,"onUpdate:modelValue":n=>l.name=n,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),e("div",j,[q,t(v,{modelValue:l.link,"onUpdate:modelValue":n=>l.link=n},null,8,["modelValue","onUpdate:modelValue"])])])])]),_:2},1032,["onClose"]))]),_:1},8,["modelValue"])]),e("div",null,[t(b,{type:"primary",onClick:f},{default:m(()=>[L("\u6DFB\u52A0")]),_:1})])])}}});export{W as _};
|
1
public/admin/assets/admin.4e4b3799.js
Normal file
1
public/admin/assets/admin.4e4b3799.js
Normal file
@ -0,0 +1 @@
|
||||
import{r as n}from"./index.760285cd.js";function e(t){return n.get({url:"/auth.admin/lists",params:t},{ignoreCancelToken:!0})}function r(t){return n.post({url:"/auth.admin/add",params:t})}function u(t){return n.post({url:"/auth.admin/edit",params:t})}function i(t){return n.post({url:"/auth.admin/delete",params:t})}function s(t){return n.get({url:"/auth.admin/detail",params:t})}function d(t){return n.get({url:"/auth.admin/Draftingcontracts",params:t})}function o(t){return n.get({url:"/auth.admin/postsms",params:t})}export{e as a,u as b,r as c,s as d,i as e,d as g,o as s};
|
1
public/admin/assets/admin.67cc58eb.js
Normal file
1
public/admin/assets/admin.67cc58eb.js
Normal file
@ -0,0 +1 @@
|
||||
import{r as n}from"./index.f190d0dd.js";function e(t){return n.get({url:"/auth.admin/lists",params:t},{ignoreCancelToken:!0})}function r(t){return n.post({url:"/auth.admin/add",params:t})}function u(t){return n.post({url:"/auth.admin/edit",params:t})}function i(t){return n.post({url:"/auth.admin/delete",params:t})}function s(t){return n.get({url:"/auth.admin/detail",params:t})}function d(t){return n.get({url:"/auth.admin/Draftingcontracts",params:t})}function o(t){return n.get({url:"/auth.admin/postsms",params:t})}export{e as a,u as b,r as c,s as d,i as e,d as g,o as s};
|
1
public/admin/assets/admin.776a94cb.js
Normal file
1
public/admin/assets/admin.776a94cb.js
Normal file
@ -0,0 +1 @@
|
||||
import{r as n}from"./index.5a6ac86e.js";function e(t){return n.get({url:"/auth.admin/lists",params:t},{ignoreCancelToken:!0})}function r(t){return n.post({url:"/auth.admin/add",params:t})}function u(t){return n.post({url:"/auth.admin/edit",params:t})}function i(t){return n.post({url:"/auth.admin/delete",params:t})}function s(t){return n.get({url:"/auth.admin/detail",params:t})}function d(t){return n.get({url:"/auth.admin/Draftingcontracts",params:t})}function o(t){return n.get({url:"/auth.admin/postsms",params:t})}export{e as a,u as b,r as c,s as d,i as e,d as g,o as s};
|
1
public/admin/assets/admin.d6edf2a4.js
Normal file
1
public/admin/assets/admin.d6edf2a4.js
Normal file
@ -0,0 +1 @@
|
||||
import{r as n}from"./index.4ff2d535.js";function e(t){return n.get({url:"/auth.admin/lists",params:t},{ignoreCancelToken:!0})}function r(t){return n.post({url:"/auth.admin/add",params:t})}function u(t){return n.post({url:"/auth.admin/edit",params:t})}function i(t){return n.post({url:"/auth.admin/delete",params:t})}function s(t){return n.get({url:"/auth.admin/detail",params:t})}function d(t){return n.get({url:"/auth.admin/Draftingcontracts",params:t})}function o(t){return n.get({url:"/auth.admin/postsms",params:t})}export{e as a,u as b,r as c,s as d,i as e,d as g,o as s};
|
1
public/admin/assets/article.02db8bbe.js
Normal file
1
public/admin/assets/article.02db8bbe.js
Normal file
@ -0,0 +1 @@
|
||||
import{r as e}from"./index.f190d0dd.js";function a(t){return e.get({url:"/article.articleCate/lists",params:t})}function l(t){return e.get({url:"/article.articleCate/all",params:t})}function i(t){return e.post({url:"/article.articleCate/add",params:t})}function c(t){return e.post({url:"/article.articleCate/edit",params:t})}function u(t){return e.post({url:"/article.articleCate/delete",params:t})}function n(t){return e.get({url:"/article.articleCate/detail",params:t})}function s(t){return e.post({url:"/article.articleCate/updateStatus",params:t})}function o(t){return e.get({url:"/article.article/lists",params:t})}function d(t){return e.post({url:"/article.article/add",params:t})}function f(t){return e.post({url:"/article.article/edit",params:t})}function C(t){return e.post({url:"/article.article/delete",params:t})}function p(t){return e.get({url:"/article.article/detail",params:t})}function g(t){return e.post({url:"/article.article/updateStatus",params:t})}export{c as a,i as b,n as c,u as d,s as e,a as f,p as g,l as h,f as i,d as j,g as k,C as l,o as m};
|
1
public/admin/assets/article.1563f12b.js
Normal file
1
public/admin/assets/article.1563f12b.js
Normal file
@ -0,0 +1 @@
|
||||
import{r as e}from"./index.5a6ac86e.js";function a(t){return e.get({url:"/article.articleCate/lists",params:t})}function l(t){return e.get({url:"/article.articleCate/all",params:t})}function i(t){return e.post({url:"/article.articleCate/add",params:t})}function c(t){return e.post({url:"/article.articleCate/edit",params:t})}function u(t){return e.post({url:"/article.articleCate/delete",params:t})}function n(t){return e.get({url:"/article.articleCate/detail",params:t})}function s(t){return e.post({url:"/article.articleCate/updateStatus",params:t})}function o(t){return e.get({url:"/article.article/lists",params:t})}function d(t){return e.post({url:"/article.article/add",params:t})}function f(t){return e.post({url:"/article.article/edit",params:t})}function C(t){return e.post({url:"/article.article/delete",params:t})}function p(t){return e.get({url:"/article.article/detail",params:t})}function g(t){return e.post({url:"/article.article/updateStatus",params:t})}export{c as a,i as b,n as c,u as d,s as e,a as f,p as g,l as h,f as i,d as j,g as k,C as l,o as m};
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user