作者 刘锟

Merge remote-tracking branch 'origin/master' into akun

... ... @@ -59,15 +59,30 @@ class MonthProjectCount extends Command
* @time :2024/1/8 9:05
*/
public function count($project_id,$url,$is_upgrade = 0){
$data = [];
$list = DB::connection('custom_mysql')->table('gl_customer_visit')
->select(DB::raw('DATE_FORMAT(updated_date, "%Y-%m") as month'))
->orderBy('month', 'asc')
->groupBy('month')->get()->toArray();
foreach ($list as $v){
$data = [];
if (!empty($list)) {
// 提取已有月份
foreach ($list as $v) {
$data[] = $v->month;
}
$list = $this->fillMissingMonths($data);
// 生成连续月份
$startMonth = $data[0];
$endMonth = end($data);
$fullMonths = [];
$current = $startMonth;
while ($current <= $endMonth) {
$fullMonths[] = $current;
$current = date('Y-m', strtotime($current . ' +1 month'));
}
$data = $fullMonths;
} else {
$data = [];
}
$list = $data;
foreach ($list as $v){
$arr = [];
$monthCountModel = new MonthCount();
... ... @@ -179,38 +194,4 @@ class MonthProjectCount extends Command
$arr['referrer_port'] = json_encode($referrer_port);
return $arr;
}
/**
* @remark :补齐月份
* @name :fillMissingMonths
* @author :lyh
* @method :post
* @time :2024/8/14 11:11
*/
public function fillMissingMonths($dates) {
// 将字符串日期转换为 Carbon 对象
$carbonDates = array_map(function($date) {
return Carbon::createFromFormat('Y-m', $date);
}, $dates);
// 排序日期,确保列表按时间顺序排列
usort($carbonDates, function($a, $b) {
return $a->gt($b);
});
// 用于存储完整日期的数组
$completeDates = [];
// 遍历日期列表,补齐中间缺失的月份
for ($i = 0; $i < count($carbonDates) - 1; $i++) {
$current = $carbonDates[$i];
$next = $carbonDates[$i + 1];
// 将当前月份加入完整日期数组
array_push($completeDates, $current->format('Y-m'));
// 循环补齐中间缺失的月份
while ($current->addMonth()->lt($next)) {
array_push($completeDates, $current->format('Y-m'));
}
}
// 加入最后一个月份
array_push($completeDates, $carbonDates[count($carbonDates) - 1]->format('Y-m'));
return $completeDates;
}
}
... ...
... ... @@ -41,7 +41,7 @@ class GeoController extends BaseController
$projectModel = new Project();
$projectInfo = $projectModel->read(['id' => $project_id],['title','version']);
$geoWritingsModel = new GeoWritings();
$lists = $geoWritingsModel->list(['project_id' => $project_id, 'status' => 2 ,'is_del' => GeoWritings::IS_DEL_FALSE],'id',['title', 'status', 'uniqid', 'confirm_at']);
$lists = $geoWritingsModel->list(['project_id' => $project_id, 'status' => ['in',[GeoWritings::STATUS_RUNNING,GeoWritings::STATUS_FINISH]] ,'is_del' => GeoWritings::IS_DEL_FALSE],'id',['title', 'status', 'uniqid', 'confirm_at']);
$result = [
'project' => $projectInfo,
'list' => $lists
... ...
... ... @@ -71,4 +71,26 @@ class GeoConfirmController extends BaseController
$data = $this->logic->saveConfirmContent($this->param);
$this->response('success', Code::SUCCESS, $data);
}
/**
* @remark :保存确认信息
* @name :saveInfo
* @author :lyh
* @method :post
* @time :2025/10/30 11:30
*/
public function saveInfo()
{
$this->request->validate([
'id' => 'required',
'confirm' => 'required',
'confirm_num' => 'required',
], [
'id.required' => '主键id不能为空',
'confirm.required' => '客户确认内容不能为空',
'confirm_num.max' => '客户确认数量不能为空',
]);
$data = $this->logic->saveConfirmInfo();
$this->response('success', Code::SUCCESS, $data);
}
}
... ...
... ... @@ -68,6 +68,24 @@ class GeoConfirmLogic extends BaseLogic
public function getConfirmInfo()
{
$data = $this->model->read($this->param);
if($data === false){
$this->fail('当前数据不存在或者已被删除');
}
$data['confirm'] = $data['content'];
return $this->success($data);
}
/**
* @remark :保存确认信息
* @name :saveConfirmInfo
* @author :lyh
* @method :post
* @time :2025/10/30 11:41
*/
public function saveConfirmInfo()
{
$this->param['status'] = GeoConfirm::STATUS_FINISH;
$this->model->edit($this->param,['id'=>$this->param['id']]);
return $this->success(['id'=>$this->param['id']]);
}
}
... ...
... ... @@ -479,6 +479,14 @@ class SyncSubmitTaskService
){
throw new InquiryFilterException( '全局过滤');
}
if(
empty($data['data']['name']) &&
strlen($data['data']['message']??'') >= 8 &&
preg_match('/^[a-zA-Z]+$/', $data['data']['message']??'') &&
in_array($data['country']??'', ['荷兰', '俄罗斯'])
){
throw new InquiryFilterException( '全局过滤');
}
//全局过滤 ip 荷兰 有name、phone、email字段,但都是空
if(
in_array($data['country']??'', ['荷兰', '俄罗斯']) &&
... ...
... ... @@ -597,6 +597,7 @@ Route::middleware(['aloginauth'])->group(function () {
Route::prefix('confirm')->group(function () {
Route::any('/saveConfirmContent', [Aside\Geo\GeoConfirmController::class, 'saveConfirmContent'])->name('admin.geo_confirm_saveConfirmContent');
Route::any('/getInfo', [Aside\Geo\GeoConfirmController::class, 'getInfo'])->name('admin.geo_confirm_getInfo');
Route::any('/saveInfo', [Aside\Geo\GeoConfirmController::class, 'saveInfo'])->name('admin.geo_confirm_saveInfo');
});
//geoai文章任务管理
Route::prefix('writing_task')->group(function () {
... ...