feat: 扫码签到功能

This commit is contained in:
2026-03-19 17:41:23 +08:00
parent e2c8ae752d
commit 76a6e430b9
9 changed files with 530 additions and 357 deletions

View File

@@ -1,6 +1,6 @@
<?php
// +----------------------------------------------------------------------
// | 麦沃德科技赋能开发者,助力商协会发展
// | 麦沃德科技赋能开发者,助力商协会发展
// +----------------------------------------------------------------------
// | Copyright (c) 20172024 www.wdsxh.cn All rights reserved.
// +----------------------------------------------------------------------
@@ -94,23 +94,53 @@ class Activity extends Api
if(!$this->request->isGet()) {
$this->error('请求类型错误');
}
$id = $this->request->get('id');
$data = $this->model
$id = $this->request->get('id');
$activity = $this->model
->where('id',$id)
->field('id,images,start_time,end_time,name,fees,state activity_state,
contacts,mobile,
organizing_method,url,address,longitude,latitude,content,
is_verifying,refund,
apply_time,
activity_auth,
points_status,points,
apply_field_state,
apply_limit_number,
non_member_registration_status')
->field([
'id', 'images', 'start_time', 'end_time', 'name', 'fees',
'state' => 'activity_state', 'contacts', 'mobile',
'organizing_method', 'url', 'address', 'longitude',
'latitude', 'content', 'is_verifying', 'refund',
'apply_time', 'activity_auth', 'points_status', 'points',
'apply_field_state', 'apply_limit_number', 'non_member_registration_status'
])
->find();
if (!$data) {
if (!$activity) {
$this->error('活动不存在');
}
$data = $activity->toArray();
// 如果活动未结束,则根据当前时间校验活动状态并更新状态
if ($data['activity_state'] < 3) {
$now = time();
// 当前时间小于报名截止时间,状态流转处于:报名中
if ($now < $data['apply_time']) $data['actitity_state_trans'] = 1;
// 当前时间大于等于报名截止时间小于开始时间,状态流转处于:未开始
if ($now >= $data['apply_time'] && $now < $data['start_time']) $data['actitity_state_trans'] = 2;
// 当前时间大于等于开始时间小于等于结束时间,状态流转处于:进行中
if ($now >= $data['start_time'] && $now <= $data['end_time']) {
$data['actitity_state_trans'] = 3;
// 如果活动未结束,则根据当前时间校验活动状态并更新状态
if ($data['activity_state'] != 2) {
$activity->state = $data['activity_state'] = 2;
$activity->save();
}
}
// 当前时间大于结束时间,状态流转处于:已结束
if ($now > $data['end_time']) {
$data['actitity_state_trans'] = 4;
// 如果活动已结束,则根据当前时间更新状态
if ($data['activity_state'] != 3) {
$activity->state = $data['activity_state'] = 3;
$activity->save();
}
}
} else {
// 活动结束,状态流转就一直处理:已结束
$data['actitity_state_trans'] = 4;
}
if ($this->auth->isLogin()) {
$wechat_id = (new UserWechat())->where('user_id',$this->auth->id)->value('id');
$activityApplyObj = (new \app\api\model\wdsxh\activity\ActivityApply())
@@ -123,6 +153,7 @@ class Activity extends Api
$data['apply_id'] = '';
$data['reject'] = '';
} else {
$data['check_in_status'] = $activityApplyObj['check_in_status'];
$data['pay_state'] = $activityApplyObj['state'];
$data['apply_id'] = $activityApplyObj['id'];
$activityRefundObj = (new Refund())
@@ -263,6 +294,35 @@ class Activity extends Api
$v->fees = $orderObj ? $orderObj['pay_amount'] : '';
$v->organizing_method = $activityObj['organizing_method'];
$v->activity_state = $activityObj['state'];
// 如果活动未结束,则根据当前时间校验活动状态并更新状态
if ($v->activity_state < 3) {
$now = time();
// 当前时间小于报名截止时间,状态流转处于:报名中
if ($now < $activityObj['apply_time']) $v->actitity_state_trans = 1;
// 当前时间大于等于报名截止时间小于开始时间,状态流转处于:未开始
if ($now >= $activityObj['apply_time'] && $now < $activityObj['start_time']) $v->actitity_state_trans = 2;
// 当前时间大于等于开始时间小于等于结束时间,状态流转处于:进行中
if ($now >= $activityObj['start_time'] && $now <= $activityObj['end_time']) {
$v->actitity_state_trans = 3;
// 如果活动未结束,则根据当前时间校验活动状态并更新状态
if ($activityObj['state'] != 2) {
$activityObj->state = $v->activity_state = 2;
$activityObj->save();
}
}
// 当前时间大于结束时间,状态流转处于:已结束
if ($now > $activityObj['end_time']) {
$v->actitity_state_trans = 4;
// 如果活动已结束,则根据当前时间更新状态
if ($activityObj['state'] != 3) {
$activityObj->state = $v->activity_state = 3;
$activityObj->save();
}
}
} else {
// 活动结束,状态流转就一直处理:已结束
$v->actitity_state_trans = 4;
}
$v->refund = $activityObj['refund'];
$v->url = $activityObj['url'];
$v->is_verifying = $activityObj['is_verifying'];
@@ -490,7 +550,3 @@ class Activity extends Api
$this->success('请求成功',['show_status'=>$is_status]);
}
}