Browse Source

用户和商户订单红点角标badge

master
weigang 5 years ago
parent
commit
ba5b1f0cf6
  1. 198
      app/Service/v3/Implementations/BadgeService.php
  2. 6
      app/Service/v3/Interfaces/BadgeServiceInterface.php

198
app/Service/v3/Implementations/BadgeService.php

@ -77,14 +77,36 @@ class BadgeService implements BadgeServiceInterface
public function allByUserOrder($userId)
{
$redis = ApplicationContext::getContainer()->get(Redis::class);
$redisHName = 'badge_user';
$redisHKey = 'user_id_'.$userId;
// 取出当前用户的key的badge(key=>value json串)
$userBadges = $redis->hGet($redisHName, $redisHKey);
$userBadges = json_decode($userBadges, true);
return [
'unpaid' => count($redis->sMembers('badge_unpaid_user_'.$userId)),
'receiving' => count($redis->sMembers('badge_receiving_user_'.$userId)),
'finish' => count($redis->sMembers('badge_finish_user_'.$userId)),
'refund' => count($redis->sMembers('badge_refund_user_'.$userId)),
'canceled' => count($redis->sMembers('badge_canceled_user_'.$userId)),
'rejection' => count($redis->sMembers('badge_rejection_store_'.$userId)),
'unpaid' => isset($userBadges['unpaid']) ? count($userBadges['unpaid']) : 0,
'receiving' => isset($userBadges['receiving']) ? count($userBadges['receiving']) : 0,
'finish' => isset($userBadges['finish']) ? count($userBadges['finish']) : 0,
'refund' => isset($userBadges['refund']) ? count($userBadges['refund']) : 0,
'canceled' => isset($userBadges['canceled']) ? count($userBadges['canceled']) : 0,
'rejection' => isset($userBadges['rejection']) ? count($userBadges['rejection']) : 0,
'unpaid_arr' => $userBadges['unpaid'] ?? [],
'receiving_arr' => $userBadges['receiving'] ?? [],
'finish_arr' => $userBadges['finish'] ?? [],
'refund_arr' => $userBadges['refund'] ?? [],
'canceled_arr' => $userBadges['canceled'] ?? [],
'rejection_arr' => $userBadges['rejection'] ?? [],
];
// return [
// 'unpaid' => count($redis->sMembers('badge_unpaid_user_'.$userId)),
// 'receiving' => count($redis->sMembers('badge_receiving_user_'.$userId)),
// 'finish' => count($redis->sMembers('badge_finish_user_'.$userId)),
// 'refund' => count($redis->sMembers('badge_refund_user_'.$userId)),
// 'canceled' => count($redis->sMembers('badge_canceled_user_'.$userId)),
// 'rejection' => count($redis->sMembers('badge_rejection_store_'.$userId)),
// ];
}
/**
@ -93,14 +115,36 @@ class BadgeService implements BadgeServiceInterface
public function allByStoreOrder($storeId)
{
$redis = ApplicationContext::getContainer()->get(Redis::class);
$redisHName = 'badge_store';
$redisHKey = 'store_id_'.$storeId;
// 取出当前用户的key的badge(key=>value json串)
$storeBadges = $redis->hGet($redisHName, $redisHKey);
$storeBadges = json_decode($storeBadges, true);
return [
'paid' => count($redis->sMembers('badge_paid_store_'.$storeId)),
'delivery' => count($redis->sMembers('badge_delivery_store_'.$storeId)),
'finish' => count($redis->sMembers('badge_finish_store_'.$storeId)),
'refund' => count($redis->sMembers('badge_refund_store_'.$storeId)),
'canceled' => count($redis->sMembers('badge_canceled_store_'.$storeId)),
'rejection' => count($redis->sMembers('badge_rejection_store_'.$storeId)),
'paid' => isset($storeBadges['paid']) ? count($storeBadges['paid']) : 0,
'delivery' => isset($storeBadges['delivery']) ? count($storeBadges['delivery']) : 0,
'finish' => isset($storeBadges['finish']) ? count($storeBadges['finish']) : 0,
'refund' => isset($storeBadges['refund']) ? count($storeBadges['refund']) : 0,
'canceled' => isset($storeBadges['canceled']) ? count($storeBadges['canceled']) : 0,
'rejection' => isset($storeBadges['rejection']) ? count($storeBadges['rejection']) : 0,
'paid_arr' => $storeBadges['paid'] ?? [],
'delivery_arr' => $storeBadges['delivery'] ?? [],
'finish_arr' => $storeBadges['finish'] ?? [],
'refund_arr' => $storeBadges['refund'] ?? [],
'canceled_arr' => $storeBadges['canceled'] ?? [],
'rejection_arr' => $storeBadges['rejection'] ?? [],
];
// return [
// 'paid' => count($redis->sMembers('badge_paid_store_'.$storeId)),
// 'delivery' => count($redis->sMembers('badge_delivery_store_'.$storeId)),
// 'finish' => count($redis->sMembers('badge_finish_store_'.$storeId)),
// 'refund' => count($redis->sMembers('badge_refund_store_'.$storeId)),
// 'canceled' => count($redis->sMembers('badge_canceled_store_'.$storeId)),
// 'rejection' => count($redis->sMembers('badge_rejection_store_'.$storeId)),
// ];
}
/**
@ -109,13 +153,30 @@ class BadgeService implements BadgeServiceInterface
public function sAddUserOrder($badge, $userId, $globalOrderId)
{
$redis = ApplicationContext::getContainer()->get(Redis::class);
$redis->sRem('badge_unpaid_user_'.$userId, $globalOrderId); # 移除用户待付款
$redis->sRem('badge_receiving_user_'.$userId, $globalOrderId); # 移除用户待收货
$redis->sRem('badge_finish_user_'.$userId, $globalOrderId); # 移除用户已完成
$redis->sRem('badge_canceled_user_'.$userId, $globalOrderId); # 移除用户已取消
$redis->sRem('badge_refund_user_'.$userId, $globalOrderId); # 移除用户退款售后
$redis->sRem('badge_rejection_store_', $userId, $globalOrderId); # 移除用户拒单
$redis->sAdd('badge_'.$badge.'_user_'.$userId, $globalOrderId); # 新增用户当前状态的值
$redisHName = 'badge_user';
$redisHKey = 'user_id_'.$userId;
// 取出当前用户的key的badge(key=>value json串)
$userBadges = $redis->hGet($redisHName, $redisHKey);
$userBadges = json_decode($userBadges, true);
$userBadges['unpaid'] = isset($userBadges['unpaid']) ? array_diff($userBadges['unpaid'], [$globalOrderId]) : []; # 移除用户待付款
$userBadges['receiving'] = isset($userBadges['receiving']) ? array_diff($userBadges['receiving'], [$globalOrderId]) : []; # 移除用户待收货
$userBadges['finish'] = isset($userBadges['finish']) ? array_diff($userBadges['finish'], [$globalOrderId]) : []; # 移除用户已完成
$userBadges['canceled'] = isset($userBadges['canceled']) ? array_diff($userBadges['canceled'], [$globalOrderId]) : []; # 移除用户已取消
$userBadges['refund'] = isset($userBadges['refund']) ? array_diff($userBadges['refund'], [$globalOrderId]) : []; # 移除用户退款售后
$userBadges['rejection'] = isset($userBadges['rejection']) ? array_diff($userBadges['rejection'], [$globalOrderId]) : []; # 移除用户拒单
$userBadges[$badge] = array_merge($userBadges[$badge], [$globalOrderId]); # 新增用户当前状态的值
$redis->hSet($redisHName,$redisHKey,json_encode($userBadges));
// $redis->sRem('badge_unpaid_user_'.$userId, $globalOrderId); # 移除用户待付款
// $redis->sRem('badge_receiving_user_'.$userId, $globalOrderId); # 移除用户待收货
// $redis->sRem('badge_finish_user_'.$userId, $globalOrderId); # 移除用户已完成
// $redis->sRem('badge_canceled_user_'.$userId, $globalOrderId); # 移除用户已取消
// $redis->sRem('badge_refund_user_'.$userId, $globalOrderId); # 移除用户退款售后
// $redis->sRem('badge_rejection_store_', $userId, $globalOrderId); # 移除用户拒单
// $redis->sAdd('badge_'.$badge.'_user_'.$userId, $globalOrderId); # 新增用户当前状态的值
}
/**
@ -124,48 +185,101 @@ class BadgeService implements BadgeServiceInterface
public function sAddStoreOrder($badge, $storeId, $globalOrderId)
{
$redis = ApplicationContext::getContainer()->get(Redis::class);
$redis->sRem('badge_paid_store_'.$storeId, $globalOrderId); # 移除商户待接单
$redis->sRem('badge_delivery_store_'.$storeId, $globalOrderId); # 移除商户待送达
$redis->sRem('badge_finish_store_'.$storeId, $globalOrderId); # 移除商户已完成
$redis->sRem('badge_canceled_store_'.$storeId, $globalOrderId); # 移除商户已取消
$redis->sRem('badge_refund_store_'.$storeId, $globalOrderId); # 移除商户退款售后
$redis->sRem('badge_rejection_store_', $storeId, $globalOrderId); # 移除商户拒单
$redis->sAdd('badge_'.$badge.'_store_'.$storeId, $globalOrderId); # 新增用户当前状态的值
$redisHName = 'badge_store';
$redisHKey = 'store_id_'.$storeId;
// 取出当前用户的key的badge(key=>value json串)
$storeBadges = $redis->hGet($redisHName, $redisHKey);
$storeBadges = json_decode($storeBadges, true);
$storeBadges['paid'] = isset($storeBadges['paid']) ? array_diff($storeBadges['paid'], [$globalOrderId]) : []; # 移除商户待接单
$storeBadges['delivery'] = isset($storeBadges['delivery']) ? array_diff($storeBadges['delivery'], [$globalOrderId]) : []; # 移除商户待送达
$storeBadges['finish'] = isset($storeBadges['finish']) ? array_diff($storeBadges['finish'], [$globalOrderId]) : []; # 移除商户已完成
$storeBadges['canceled'] = isset($storeBadges['canceled']) ? array_diff($storeBadges['canceled'], [$globalOrderId]) : []; # 移除商户已取消
$storeBadges['refund'] = isset($storeBadges['refund']) ? array_diff($storeBadges['refund'], [$globalOrderId]) : []; # 移除商户退款售后
$storeBadges['rejection'] = isset($storeBadges['rejection']) ? array_diff($storeBadges['rejection'], [$globalOrderId]) : []; # 移除商户拒单
$storeBadges[$badge] = array_merge($storeBadges[$badge], [$globalOrderId]); # 新增商户当前状态的值
$redis->hSet($redisHName,$redisHKey,json_encode($storeBadges));
// $redis->sRem('badge_paid_store_'.$storeId, $globalOrderId); # 移除商户待接单
// $redis->sRem('badge_delivery_store_'.$storeId, $globalOrderId); # 移除商户待送达
// $redis->sRem('badge_finish_store_'.$storeId, $globalOrderId); # 移除商户已完成
// $redis->sRem('badge_canceled_store_'.$storeId, $globalOrderId); # 移除商户已取消
// $redis->sRem('badge_refund_store_'.$storeId, $globalOrderId); # 移除商户退款售后
// $redis->sRem('badge_rejection_store_', $storeId, $globalOrderId); # 移除商户拒单
// $redis->sAdd('badge_'.$badge.'_store_'.$storeId, $globalOrderId); # 新增用户当前状态的值
}
/**
* @inheritDoc
*/
public function clearUserOrder($userId, $badge = 'all')
public function clearUserOrder($userId, $badge = 'all', $globalOrderId = '')
{
$redis = ApplicationContext::getContainer()->get(Redis::class);
$redisHName = 'badge_user';
$redisHKey = 'user_id_'.$userId;
// 取出当前用户的key的badge(key=>value json串)
$userBadges = $redis->hGet($redisHName, $redisHKey);
$userBadges = json_decode($userBadges, true);
if ($badge == 'all') {
$redis->del('badge_unpaid_user_'.$userId); # 移除用户待付款
$redis->del('badge_receiving_user_'.$userId); # 移除用户待收货
$redis->del('badge_finish_user_'.$userId); # 移除用户已完成
$redis->del('badge_canceled_user_'.$userId); # 移除用户已取消
$redis->del('badge_refund_user_'.$userId); # 移除用户退款售后
$redis->del('badge_rejection_store_', $userId); # 移除用户拒单
$redis->hDel($redisHName, $redisHKey);
// $redis->del('badge_unpaid_user_'.$userId); # 移除用户待付款
// $redis->del('badge_receiving_user_'.$userId); # 移除用户待收货
// $redis->del('badge_finish_user_'.$userId); # 移除用户已完成
// $redis->del('badge_canceled_user_'.$userId); # 移除用户已取消
// $redis->del('badge_refund_user_'.$userId); # 移除用户退款售后
// $redis->del('badge_rejection_store_', $userId); # 移除用户拒单
} else {
$redis->del('badge_'.$badge.'_user_'.$userId);
if ($globalOrderId) {
$userBadges[$badge] = isset($userBadges[$badge]) ? array_diff($userBadges[$badge], [$globalOrderId]) : []; # 移除当前状态里的某个值
} else {
unset($userBadges[$badge]);
}
$redis->hSet($redisHName,$redisHKey,json_encode($userBadges));
// $redis->del('badge_'.$badge.'_user_'.$userId);
}
}
/**
* @inheritDoc
*/
public function clearStoreOrder($storeId, $badge = 'all')
public function clearStoreOrder($storeId, $badge = 'all', $globalOrderId = '')
{
$redis = ApplicationContext::getContainer()->get(Redis::class);
$redisHName = 'badge_store';
$redisHKey = 'store_id_'.$storeId;
// 取出当前用户的key的badge(key=>value json串)
$storeBadges = $redis->hGet($redisHName, $redisHKey);
$storeBadges = json_decode($storeBadges, true);
if ($badge == 'all') {
$redis->del('badge_paid_store_'.$storeId); # 移除商户待付款
$redis->del('badge_delivery_store_'.$storeId); # 移除商户待收货
$redis->del('badge_finish_store_'.$storeId); # 移除商户已完成
$redis->del('badge_canceled_store_'.$storeId); # 移除商户已取消
$redis->del('badge_refund_store_'.$storeId); # 移除商户退款售后
$redis->del('badge_rejection_store_', $storeId); # 移除商户拒单
$redis->hDel($redisHName, $redisHKey);
// $redis->del('badge_paid_store_'.$storeId); # 移除商户待付款
// $redis->del('badge_delivery_store_'.$storeId); # 移除商户待收货
// $redis->del('badge_finish_store_'.$storeId); # 移除商户已完成
// $redis->del('badge_canceled_store_'.$storeId); # 移除商户已取消
// $redis->del('badge_refund_store_'.$storeId); # 移除商户退款售后
// $redis->del('badge_rejection_store_', $storeId); # 移除商户拒单
} else {
$redis->del('badge_'.$badge.'_store_'.$storeId);
if ($globalOrderId) {
$storeBadges[$badge] = isset($storeBadges[$badge]) ? array_diff($storeBadges[$badge], [$globalOrderId]) : []; # 移除当前状态里的某个值
} else {
unset($storeBadges[$badge]);
}
$redis->hSet($redisHName,$redisHKey,json_encode($storeBadges));
// $redis->del('badge_'.$badge.'_store_'.$storeId);
}
}
}

6
app/Service/v3/Interfaces/BadgeServiceInterface.php

@ -50,15 +50,17 @@ interface BadgeServiceInterface
* 清除用户角标
* @param $userId
* @param string $badge
* @param string $globalOrderId
* @return mixed
*/
public function clearUserOrder($userId, $badge = 'all');
public function clearUserOrder($userId, $badge = 'all', $globalOrderId = '');
/**
* 清除商户角标
* @param $storeId
* @param string $badge
* @param string $globalOrderId
* @return mixed
*/
public function clearStoreOrder($storeId, $badge = 'all');
public function clearStoreOrder($storeId, $badge = 'all', $globalOrderId = '');
}
Loading…
Cancel
Save