xhTrainStudentService.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace common\services;
  3. use Yii;
  4. use common\components\dict;
  5. use common\components\stringUtil;
  6. use common\components\wxUtil;
  7. use common\models\xhTrainStudent;
  8. class xhTrainStudentService {
  9. public static function getByUserId($userId)
  10. {
  11. $preKey = dict::getCacheKey('xhTrainStudent');
  12. $cacheKey = $preKey.$userId;
  13. $userAsset = Yii::$app->redis->executeCommand('HGETALL', [$cacheKey]);
  14. if(!empty($userAsset)){
  15. $arr = [];
  16. $i = 0;
  17. $x = 0;
  18. foreach($userAsset as $key => $val){
  19. $i++;
  20. if($i%2 == 0){
  21. $arr[$x]['value'] = $val;
  22. $x++;
  23. }else{
  24. $arr[$x]['key'] = $val;
  25. }
  26. }
  27. $userArr = [];
  28. foreach($arr as $key => $val){
  29. $userArr[$val['key']] = $val['value'];
  30. }
  31. unset($userArr['info_already_get_by_sql']);
  32. return $userArr;
  33. }
  34. $userAsset = xhTrainStudent::find()->where(['userId' => $userId])->asArray()->one();
  35. $params = [$cacheKey];
  36. $params[] = 'info_already_get_by_sql';
  37. $params[] = 'ok';//redis没有办法设置带空值的键,加此可以数据空时表示取过
  38. if(!empty($userAsset)){
  39. foreach($userAsset as $key => $val){
  40. $params[] = $key;
  41. $params[] = $val;
  42. }
  43. }
  44. Yii::$app->redis->executeCommand('HMSET',$params);
  45. return $userAsset;
  46. }
  47. public static function refreshByUserId($userId)
  48. {
  49. $cacheKey = dict::getCacheKey('xhTrainStudent').$userId;
  50. Yii::$app->redis->executeCommand('DEL', [$cacheKey]);
  51. self::getByUserId($userId);
  52. }
  53. public static function updateByUserId($userId,$data)
  54. {
  55. xhTrainStudent::updateByCondition(['userId' => $userId], $data);
  56. self::refreshByUserId($userId);
  57. }
  58. public static function add($data)
  59. {
  60. $student = xhTrainStudent::add($data);
  61. $userId = $student['userId'];
  62. self::refreshByUserId($userId);
  63. }
  64. }