You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yanzong/app/command/CalDealerTime.php

126 lines
4.2 KiB

<?php
declare (strict_types=1);
namespace app\command;
use app\api\model\dealer\User as DealerUserModel;
use app\api\model\User;
use app\common\enum\user\UserTypeEnum;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
use think\db\exception\ModelNotFoundException;
// /www/server/php/74/bin/php /server/wwwroot/yanzong/think CalDealerTime
class CalDealerTime extends Command
{
protected function configure()
{
// 指令配置
$this->setName('CalDealerTime')
->setDescription('会员身份以及分销身份检测');
}
/**
* @notes:执行
* @param Input $input
* @param Output $output
* @throws DataNotFoundException
* @throws DbException
* @throws ModelNotFoundException
* @author: wanghousheng
*/
protected function execute(Input $input, Output $output)
{
$nowDay = date('Y-m-d');
$this->dealerUser($nowDay);
$this->plusUser($nowDay);
}
/**
* @notes:分销商用户
* @param $nowDay
* @return void
* @throws DataNotFoundException
* @throws DbException
* @throws ModelNotFoundException
* @author: wanghousheng
*/
private function dealerUser($nowDay)
{
$dealerUser = (new User)->where(['user_type' => UserTypeEnum::DEALER])
->whereDay('fx_effective_time', $nowDay)
->field('user_id,user_type,fx_effective_time,effective_time')
->select();
$plusUserIds = [];
$normalUserIds = [];
if (!$dealerUser->isEmpty()) {
$dealerUser = $dealerUser->toArray();
foreach ($dealerUser as $value) {
$fx_effective_time = strtotime($value['fx_effective_time'] . ' 23:59:59');
if (time() > $fx_effective_time) {
//分销商到期 会员未到期
if (!empty($value['effective_time'])) {
$effective_time = strtotime($value['effective_time'] . ' 23:59:59');
if (time() < $effective_time) {
$plusUserIds[] = $value['user_id'];
} else {
$normalUserIds[] = $value['user_id'];//会员已到期
}
} else {
//普通会员
$normalUserIds[] = $value['user_id'];
}
}
}
if ($plusUserIds) {
(new User)->whereIn('user_id', $plusUserIds)->update(['user_type' => UserTypeEnum::MEMBER]);
}
if ($normalUserIds) {
$normalUserIds = array_unique($normalUserIds);
(new User)->whereIn('user_id', $normalUserIds)->update(['user_type' => UserTypeEnum::NORMAL]);
}
$dealerUserIds = array_unique(array_merge($normalUserIds, $plusUserIds));
//删除分销商(软)
if ($dealerUserIds) {
// foreach ($dealerUserIds as $value) {
// UserModel::detail($value)->delete();
// }
(new DealerUserModel())->whereIn('user_id', $dealerUserIds)->update(['is_delete' => 1]);
}
}
}
/**
* @notes:plus会员
* @param $nowDay
* @throws DataNotFoundException
* @throws DbException
* @throws ModelNotFoundException
* @author: wanghousheng
*/
private function plusUser($nowDay)
{
$normalUserIds = [];
$list = (new User)->where(['user_type' => UserTypeEnum::MEMBER])
->whereDay('effective_time', $nowDay)
->field('user_id,user_type,effective_time')
->select();
if (!$list->isEmpty()) {
$list = $list->toArray();
foreach ($list as $value) {
$effective_time = strtotime($value['effective_time'] . ' 23:59:59');
if (time() > $effective_time) {
$normalUserIds[] = $value['user_id'];
}
}
if ($normalUserIds) {
(new User)->whereIn('user_id', $normalUserIds)->update(['user_type' => UserTypeEnum::NORMAL]);
}
}
}
}