wanghousheng 8 months ago
parent b432fa2691
commit 1de56bc79f
  1. 156
      app/command/CalDealerTime.php

@ -4,17 +4,15 @@ declare (strict_types=1);
namespace app\command;
use think\facade\Db;
use app\api\model\User;
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 app\api\model\PreSale;
use think\console\Command;
use app\api\model\PreSaleLog;
use app\api\model\PreSaleMessage;
use app\api\model\{Goods as GoodsModel};
use app\common\enum\user\UserTypeEnum;
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
@ -24,67 +22,105 @@ class CalDealerTime extends Command
{
// 指令配置
$this->setName('CalDealerTime')
->setDescription('自动计算分销时间');
->setDescription('会员身份以及分销身份检测');
}
/**
* @notes:执行
* @param Input $input
* @param Output $output
* @throws DataNotFoundException
* @throws DbException
* @throws ModelNotFoundException
* @author: wanghousheng
*/
protected function execute(Input $input, Output $output)
{
//todo wmc这边代码需要优化
//$list = User::where('status', 1)
$list = User::where('user_type', 'in', [UserTypeEnum::MEMBER,UserTypeEnum::DEALER])
->where('is_delete', '=', 0)
//->where('store_id',10001)
$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();
// print '<pre>';
// print_r($list->toArray());
// print '</pre>';
// die;
$del_fx_user_ids = [];
$del_hy_user_ids = [];
foreach ($list as $item) {
//如果分销商到期,改成会员;并且删除分销商
if(isset($item['fx_effective_time']) && strtotime($item['fx_effective_time']) <= strtotime(date('Y-m-d'))){
$del_fx_user_ids[] = $item['user_id'];
// User::where('user_id',$item['user_id'])->update([
// 'user_type'=>UserTypeEnum::MEMBER
// ]);
// //分销商表软删除
// DealerUserModel::where('user_id',$item['user_id'])->update(['is_delete'=>1]);
$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((strtotime($item['effective_time']) <= strtotime(date('Y-m-d'))) && (isset($item['fx_effective_time']) && strtotime($item['fx_effective_time']) <= strtotime(date('Y-m-d')))){
$del_hy_user_ids[] = $item['user_id'];
// User::where('user_id',$item['user_id'])->update([
// 'user_type'=>UserTypeEnum::NORMAL
// ]);
if ($plusUserIds) {
(new User)->whereIn('user_id', $plusUserIds)->update(['user_type' => UserTypeEnum::MEMBER]);
}
//如果会员到期,分销商根本没有,改成普通用户
if((strtotime($item['effective_time']) <= strtotime(date('Y-m-d'))) && !isset($item['fx_effective_time'])){
$del_hy_user_ids[] = $item['user_id'];
// User::where('user_id',$item['user_id'])->update([
// 'user_type'=>UserTypeEnum::NORMAL
// ]);
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]);
}
}
//var_dump([$del_fx_user_ids, $del_hy_user_ids]);die;
Db::transaction(function () use ($del_fx_user_ids, $del_hy_user_ids) {
//如果分销商到期,改成会员;并且删除分销商
User::whereIn('user_id',$del_fx_user_ids)->update([
'user_type'=>UserTypeEnum::MEMBER
]);
//分销商表软删除
DealerUserModel::whereIn('user_id',$del_fx_user_ids)->update(['is_delete'=>1]);
//如果会员到期,分销商到期了/根本没有,改成普通用户
User::whereIn('user_id',$del_hy_user_ids)->update([
'user_type'=>UserTypeEnum::NORMAL
]);
});
}
/**
* @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]);
}
}
}
}

Loading…
Cancel
Save