Steven 8 months ago
parent
commit
68af94a5ff
27 changed files with 376 additions and 42 deletions
  1. 6 0
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. 1 1
      KulexiuForStudent/KulexiuForStudent.xcodeproj/xcshareddata/xcschemes/KulexiuForStudent.xcscheme
  3. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvip.imageset/Contents.json
  4. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvip.imageset/mineCenter_tagSvip@2x.png
  5. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvip.imageset/mineCenter_tagSvip@3x.png
  6. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvipExpired.imageset/Contents.json
  7. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvipExpired.imageset/mineCenter_tagSvipExpired@2x.png
  8. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvipExpired.imageset/mineCenter_tagSvipExpired@3x.png
  9. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVip.imageset/Contents.json
  10. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVip.imageset/mineCenter_tagVip@2x.png
  11. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVip.imageset/mineCenter_tagVip@3x.png
  12. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVipExpired.imageset/Contents.json
  13. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVipExpired.imageset/mineCenter_tagVipExpired@2x.png
  14. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVipExpired.imageset/mineCenter_tagVipExpired@3x.png
  15. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_nomal.imageset/mine_nomal@2x.png
  16. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_nomal.imageset/mine_nomal@3x.png
  17. 2 2
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_svip.imageset/Contents.json
  18. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_svip.imageset/mine_svip@2x.png
  19. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_svip.imageset/mine_svip@3x.png
  20. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_vip.imageset/mine_vip@2x.png
  21. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_vip.imageset/mine_vip@3x.png
  22. 3 1
      KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserInfo.h
  23. 8 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserInfo.m
  24. 25 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserVip.h
  25. 134 0
      KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserVip.m
  26. 77 16
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.m
  27. 32 22
      KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.xib

+ 6 - 0
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -918,6 +918,7 @@
 		BCFC09C82C47F6AD009A727F /* KSToolLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCFC09C72C47F6AD009A727F /* KSToolLibrary.framework */; };
 		BCFC09CA2C47F6FF009A727F /* CloudAccompanyLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCFC09C92C47F6FF009A727F /* CloudAccompanyLibrary.framework */; };
 		BCFC09D12C48B3D7009A727F /* KSAccompanyDraftViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFC09D02C48B3D7009A727F /* KSAccompanyDraftViewController.m */; };
+		BCFC09DA2C48C8DE009A727F /* UserVip.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFC09D82C48C8DD009A727F /* UserVip.m */; };
 		BCFCE44E28DD5C000051FED8 /* Low.wav in Resources */ = {isa = PBXBuildFile; fileRef = BCFCE44C28DD5C000051FED8 /* Low.wav */; };
 		BCFCE44F28DD5C000051FED8 /* High.wav in Resources */ = {isa = PBXBuildFile; fileRef = BCFCE44D28DD5C000051FED8 /* High.wav */; };
 		BCFDA61228BC8FCE0022B497 /* HomeHotVideoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCFDA61028BC8FCE0022B497 /* HomeHotVideoCell.m */; };
@@ -2491,6 +2492,8 @@
 		BCFC09C92C47F6FF009A727F /* CloudAccompanyLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = CloudAccompanyLibrary.framework; sourceTree = "<group>"; };
 		BCFC09CF2C48B3D7009A727F /* KSAccompanyDraftViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KSAccompanyDraftViewController.h; sourceTree = "<group>"; };
 		BCFC09D02C48B3D7009A727F /* KSAccompanyDraftViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSAccompanyDraftViewController.m; sourceTree = "<group>"; };
+		BCFC09D82C48C8DD009A727F /* UserVip.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserVip.m; sourceTree = "<group>"; };
+		BCFC09D92C48C8DE009A727F /* UserVip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserVip.h; sourceTree = "<group>"; };
 		BCFCE44C28DD5C000051FED8 /* Low.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = Low.wav; sourceTree = "<group>"; };
 		BCFCE44D28DD5C000051FED8 /* High.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = High.wav; sourceTree = "<group>"; };
 		BCFDA60F28BC8FCE0022B497 /* HomeHotVideoCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeHotVideoCell.h; sourceTree = "<group>"; };
@@ -3241,6 +3244,8 @@
 				BC0212FD27FC66AA0040569F /* InstrumentMessageModel.m */,
 				275FA21D27E7356B00CFEA2E /* UserInfo.h */,
 				275FA21A27E7356B00CFEA2E /* UserInfo.m */,
+				BCFC09D92C48C8DE009A727F /* UserVip.h */,
+				BCFC09D82C48C8DD009A727F /* UserVip.m */,
 				275FA21B27E7356B00CFEA2E /* UserInfoManager.h */,
 				275FA21C27E7356B00CFEA2E /* UserInfoManager.m */,
 			);
@@ -6959,6 +6964,7 @@
 				BCC0F6B62A8CDD4000C4EFA4 /* LocalRenderManager.m in Sources */,
 				BC106C042A933829000759A9 /* TXLiveMessageMemberUp.m in Sources */,
 				BCC0F6542A8CD8F500C4EFA4 /* TXChatBottomView.m in Sources */,
+				BCFC09DA2C48C8DE009A727F /* UserVip.m in Sources */,
 				BC02381928685087005560CA /* LiveAnimationView.m in Sources */,
 				BCC0F6122A8CD89400C4EFA4 /* TXClassroomViewController.m in Sources */,
 				BC8A45AA283DC33400094BBB /* TrackChooseView.m in Sources */,

+ 1 - 1
KulexiuForStudent/KulexiuForStudent.xcodeproj/xcshareddata/xcschemes/KulexiuForStudent.xcscheme

@@ -51,7 +51,7 @@
       </Testables>
    </TestAction>
    <LaunchAction
-      buildConfiguration = "TEST"
+      buildConfiguration = "DEV"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       launchStyle = "0"

+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvip.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "mineCenter_tagSvip@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "mineCenter_tagSvip@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvip.imageset/mineCenter_tagSvip@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvip.imageset/mineCenter_tagSvip@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvipExpired.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "mineCenter_tagSvipExpired@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "mineCenter_tagSvipExpired@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvipExpired.imageset/mineCenter_tagSvipExpired@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagSvipExpired.imageset/mineCenter_tagSvipExpired@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVip.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "mineCenter_tagVip@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "mineCenter_tagVip@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVip.imageset/mineCenter_tagVip@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVip.imageset/mineCenter_tagVip@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVipExpired.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "mineCenter_tagVipExpired@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "mineCenter_tagVipExpired@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVipExpired.imageset/mineCenter_tagVipExpired@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mineCenter_tagVipExpired.imageset/mineCenter_tagVipExpired@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_nomal.imageset/mine_nomal@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_nomal.imageset/mine_nomal@3x.png


+ 2 - 2
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_nomal.imageset/Contents.json → KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_svip.imageset/Contents.json

@@ -5,12 +5,12 @@
       "scale" : "1x"
     },
     {
-      "filename" : "mine_nomal@2x.png",
+      "filename" : "mine_svip@2x.png",
       "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "filename" : "mine_nomal@3x.png",
+      "filename" : "mine_svip@3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_svip.imageset/mine_svip@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_svip.imageset/mine_svip@3x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_vip.imageset/mine_vip@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Mine/mine_vip.imageset/mine_vip@3x.png


+ 3 - 1
KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserInfo.h

@@ -6,7 +6,7 @@
 //
 
 #import <Foundation/Foundation.h>
-
+#import "UserVip.h"
 
 
 @interface UserInfo : NSObject <NSCoding, NSCopying>
@@ -55,6 +55,8 @@
 @property (nonatomic, assign) double lockFlag;
 
 @property (nonatomic, strong) NSString *tenantGroupName;
+@property (nonatomic, strong) UserVip *userVip;
+
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
 - (instancetype)initWithDictionary:(NSDictionary *)dict;

+ 8 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserInfo.m

@@ -51,6 +51,7 @@ NSString *const kUserInfoIsReal = @"isReal";
 NSString *const kUserInfoIdCardNo = @"idCardNo";
 NSString *const kUserInfoLockFlag = @"lockFlag";
 NSString *const kUserInfoTenantGroupName = @"tenantGroupName";
+NSString *const kUserInfoUserVip = @"userVip";
 
 
 @interface UserInfo ()
@@ -104,6 +105,7 @@ NSString *const kUserInfoTenantGroupName = @"tenantGroupName";
 @synthesize idCardNo = _idCardNo;
 @synthesize lockFlag = _lockFlag;
 @synthesize tenantGroupName = _tenantGroupName;
+@synthesize userVip = _userVip;
 
 + (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
 {
@@ -160,6 +162,8 @@ NSString *const kUserInfoTenantGroupName = @"tenantGroupName";
             self.idCardNo = [self objectOrNilForKey:kUserInfoIdCardNo fromDictionary:dict];
             self.lockFlag = [[self objectOrNilForKey:kUserInfoLockFlag fromDictionary:dict] doubleValue];
         self.tenantGroupName = [self objectOrNilForKey:kUserInfoTenantGroupName fromDictionary:dict];
+        self.userVip = [UserVip modelObjectWithDictionary:[dict objectForKey:kUserInfoUserVip]];
+
     }
     
     return self;
@@ -212,6 +216,7 @@ NSString *const kUserInfoTenantGroupName = @"tenantGroupName";
     [mutableDict setValue:self.idCardNo forKey:kUserInfoIdCardNo];
     [mutableDict setValue:[NSNumber numberWithDouble:self.lockFlag] forKey:kUserInfoLockFlag];
     [mutableDict setValue:self.tenantGroupName forKey:kUserInfoTenantGroupName];
+    [mutableDict setValue:[self.userVip dictionaryRepresentation] forKey:kUserInfoUserVip];
     return [NSDictionary dictionaryWithDictionary:mutableDict];
 }
 
@@ -281,6 +286,7 @@ NSString *const kUserInfoTenantGroupName = @"tenantGroupName";
     self.idCardNo = [aDecoder decodeObjectForKey:kUserInfoIdCardNo];
     self.lockFlag = [aDecoder decodeDoubleForKey:kUserInfoLockFlag];
     self.tenantGroupName = [aDecoder decodeObjectForKey:kUserInfoTenantGroupName];
+    self.userVip = [aDecoder decodeObjectForKey:kUserInfoUserVip];
     return self;
 }
 
@@ -330,6 +336,7 @@ NSString *const kUserInfoTenantGroupName = @"tenantGroupName";
     [aCoder encodeObject:_idCardNo forKey:kUserInfoIdCardNo];
     [aCoder encodeDouble:_lockFlag forKey:kUserInfoLockFlag];
     [aCoder encodeObject:_tenantGroupName forKey:kUserInfoTenantGroupName];
+    [aCoder encodeObject:_userVip forKey:kUserInfoUserVip];
 }
 
 - (id)copyWithZone:(NSZone *)zone
@@ -381,6 +388,7 @@ NSString *const kUserInfoTenantGroupName = @"tenantGroupName";
         copy.idCardNo = [self.idCardNo copyWithZone:zone];
         copy.lockFlag = self.lockFlag;
         copy.tenantGroupName = [self.tenantGroupName copyWithZone:zone];
+        copy.userVip = [self.userVip copyWithZone:zone];
     }
     
     return copy;

+ 25 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserVip.h

@@ -0,0 +1,25 @@
+//
+//  UserVip.h
+//
+//  Created by Steven  on 2024/7/18
+//  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+
+@interface UserVip : NSObject <NSCoding, NSCopying>
+
+@property (nonatomic, strong) NSString *expireVipType;
+@property (nonatomic, strong) NSString *svipEndDate;
+@property (nonatomic, strong) NSString *vipType;
+@property (nonatomic, assign) NSInteger vipEndDays;
+@property (nonatomic, assign) NSInteger svipEndDays;
+@property (nonatomic, strong) NSString *vipEndDate;
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict;
+- (instancetype)initWithDictionary:(NSDictionary *)dict;
+- (NSDictionary *)dictionaryRepresentation;
+
+@end

+ 134 - 0
KulexiuForStudent/KulexiuForStudent/Module/Login/Model/UserVip.m

@@ -0,0 +1,134 @@
+//
+//  UserVip.m
+//
+//  Created by Steven  on 2024/7/18
+//  Copyright (c) 2024 __MyCompanyName__. All rights reserved.
+//
+
+#import "UserVip.h"
+
+
+NSString *const kUserVipExpireVipType = @"expireVipType";
+NSString *const kUserVipSvipEndDate = @"svipEndDate";
+NSString *const kUserVipVipType = @"vipType";
+NSString *const kUserVipVipEndDays = @"vipEndDays";
+NSString *const kUserVipSvipEndDays = @"svipEndDays";
+NSString *const kUserVipVipEndDate = @"vipEndDate";
+
+
+@interface UserVip ()
+
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict;
+
+@end
+
+@implementation UserVip
+
+@synthesize expireVipType = _expireVipType;
+@synthesize svipEndDate = _svipEndDate;
+@synthesize vipType = _vipType;
+@synthesize vipEndDays = _vipEndDays;
+@synthesize svipEndDays = _svipEndDays;
+@synthesize vipEndDate = _vipEndDate;
+
+
++ (instancetype)modelObjectWithDictionary:(NSDictionary *)dict
+{
+    return [[self alloc] initWithDictionary:dict];
+}
+
+- (instancetype)initWithDictionary:(NSDictionary *)dict
+{
+    self = [super init];
+    
+    // This check serves to make sure that a non-NSDictionary object
+    // passed into the model class doesn't break the parsing.
+    if(self && [dict isKindOfClass:[NSDictionary class]]) {
+            self.expireVipType = [self objectOrNilForKey:kUserVipExpireVipType fromDictionary:dict];
+            self.svipEndDate = [self objectOrNilForKey:kUserVipSvipEndDate fromDictionary:dict];
+            self.vipType = [self objectOrNilForKey:kUserVipVipType fromDictionary:dict];
+            self.vipEndDays = [[self objectOrNilForKey:kUserVipVipEndDays fromDictionary:dict] integerValue];
+            self.svipEndDays = [[self objectOrNilForKey:kUserVipSvipEndDays fromDictionary:dict] integerValue];
+            self.vipEndDate = [self objectOrNilForKey:kUserVipVipEndDate fromDictionary:dict];
+
+    }
+    
+    return self;
+    
+}
+
+- (NSDictionary *)dictionaryRepresentation
+{
+    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
+    [mutableDict setValue:self.expireVipType forKey:kUserVipExpireVipType];
+    [mutableDict setValue:self.svipEndDate forKey:kUserVipSvipEndDate];
+    [mutableDict setValue:self.vipType forKey:kUserVipVipType];
+    [mutableDict setValue:[NSNumber numberWithInteger:self.vipEndDays] forKey:kUserVipVipEndDays];
+    [mutableDict setValue:[NSNumber numberWithInteger:self.svipEndDays] forKey:kUserVipSvipEndDays];
+    [mutableDict setValue:self.vipEndDate forKey:kUserVipVipEndDate];
+
+    return [NSDictionary dictionaryWithDictionary:mutableDict];
+}
+
+- (NSString *)description 
+{
+    return [NSString stringWithFormat:@"%@", [self dictionaryRepresentation]];
+}
+
+#pragma mark - Helper Method
+- (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
+{
+    id object = [dict objectForKey:aKey];
+    if ([object isKindOfClass:[NSNumber class]]) {
+        NSNumber *number = object;
+        object = [number stringValue];
+    }
+    return [object isEqual:[NSNull null]] ? nil : object;
+}
+
+
+#pragma mark - NSCoding Methods
+
+- (id)initWithCoder:(NSCoder *)aDecoder
+{
+    self = [super init];
+
+    self.expireVipType = [aDecoder decodeObjectForKey:kUserVipExpireVipType];
+    self.svipEndDate = [aDecoder decodeObjectForKey:kUserVipSvipEndDate];
+    self.vipType = [aDecoder decodeObjectForKey:kUserVipVipType];
+    self.vipEndDays = [aDecoder decodeIntegerForKey:kUserVipVipEndDays];
+    self.svipEndDays = [aDecoder decodeIntegerForKey:kUserVipSvipEndDays];
+    self.vipEndDate = [aDecoder decodeObjectForKey:kUserVipVipEndDate];
+    return self;
+}
+
+- (void)encodeWithCoder:(NSCoder *)aCoder
+{
+
+    [aCoder encodeObject:_expireVipType forKey:kUserVipExpireVipType];
+    [aCoder encodeObject:_svipEndDate forKey:kUserVipSvipEndDate];
+    [aCoder encodeObject:_vipType forKey:kUserVipVipType];
+    [aCoder encodeInteger:_vipEndDays forKey:kUserVipVipEndDays];
+    [aCoder encodeInteger:_svipEndDays forKey:kUserVipSvipEndDays];
+    [aCoder encodeObject:_vipEndDate forKey:kUserVipVipEndDate];
+}
+
+- (id)copyWithZone:(NSZone *)zone
+{
+    UserVip *copy = [[UserVip alloc] init];
+    
+    if (copy) {
+
+        copy.expireVipType = [self.expireVipType copyWithZone:zone];
+        copy.svipEndDate = [self.svipEndDate copyWithZone:zone];
+        copy.vipType = [self.vipType copyWithZone:zone];
+        copy.vipEndDays = self.vipEndDays;
+        copy.svipEndDays = self.svipEndDays;
+        copy.vipEndDate = [self.vipEndDate copyWithZone:zone];
+    }
+    
+    return copy;
+}
+
+
+@end

+ 77 - 16
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.m

@@ -43,6 +43,10 @@
 
 @property (weak, nonatomic) IBOutlet UIImageView *viperImage;
 
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *tagViewWidth;
+@property (weak, nonatomic) IBOutlet UIImageView *memberLogoTag;
+@property (weak, nonatomic) IBOutlet NSLayoutConstraint *memberDescLeft;
+
 @property (nonatomic, strong) UIImage *preDisplayImage;
 
 @end
@@ -71,13 +75,17 @@
 
 - (void)configWithSource:(UserInfo *)sourceModel {
     NSString *viperImage = @"";
-    if (sourceModel.membershipDays > 0) {
-        self.userAvatar.layer.borderColor = HexRGB(0xFFE0B9).CGColor;
+    if ([sourceModel.userVip.vipType isEqualToString:@"PERMANENT_SVIP"] || [sourceModel.userVip.vipType isEqualToString:@"SVIP"]) {
+        self.userAvatar.layer.borderColor = HexRGB(0xF0AF88).CGColor;
+        viperImage = @"mine_svip";
+    }
+    else if ([sourceModel.userVip.vipType isEqualToString:@"VIP"]) {
+        self.userAvatar.layer.borderColor = HexRGB(0xFADA9B).CGColor;
         viperImage = @"mine_vip";
     }
     else {
         self.userAvatar.layer.borderColor = HexRGB(0xffffff).CGColor;
-        viperImage = @"mine_nomal";
+        viperImage = @"";
     }
     
     [self.viperImage setImage:[UIImage imageNamed:viperImage]];
@@ -95,18 +103,7 @@
     self.userName.text = userName;
     self.userIdLabel.text = [NSString stringWithFormat:@"学号:%.0f",sourceModel.userId];
     
-    if (sourceModel.membershipDays > 0) {
-        self.memberCountLabel.text = [NSString stringWithFormat:@"会员有效期剩余%.0f天",sourceModel.membershipDays];
-    }
-    else {
-        if (![NSString isEmptyString:sourceModel.membershipEndTime]) {
-            self.memberCountLabel.text = @"会员已过期";
-        }
-        else {
-            self.memberCountLabel.text = @"暂未开通";
-        }
-    }
-    
+    [self configMemberDisplay:sourceModel.userVip];
     
     if (![NSString isEmptyString:sourceModel.heardUrl]) {
         [self.userAvatar displayImageWithUrl:[NSURL URLWithString:[sourceModel.heardUrl getUrlEndcodeString]] placeholder:self.preDisplayImage defaultImage:[UIImage imageNamed:USERDEFAULT_LOGO] callback:^(UIImage * _Nonnull image) {
@@ -127,6 +124,70 @@
     }
 }
 
+- (void)configMemberDisplay:(UserVip *)userVip {
+    NSString *displayImg = @"";
+    NSMutableAttributedString *descAttr = nil;
+    if ([userVip.vipType isEqualToString:@"PERMANENT_SVIP"]) {
+        displayImg = @"mineCenter_tagSvip";
+        NSString *desc = @"您已是永久SVIP";
+        descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+        [descAttr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightMedium], NSForegroundColorAttributeName:HexRGB(0xFF623A)} range:[desc rangeOfString:@"永久SVIP"]];
+    }
+    else if ([userVip.vipType isEqualToString:@"SVIP"]) {
+        displayImg = @"mineCenter_tagSvip";
+        NSString *timeStr = [[userVip.svipEndDate componentsSeparatedByString:@" "] firstObject];
+        NSString *desc = [NSString stringWithFormat:@"SVIP有效期至 %@", [NSString returnNoNullStringWithString:timeStr]];
+        
+        descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+        [descAttr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightMedium], NSForegroundColorAttributeName:HexRGB(0xFF623A)} range:[desc rangeOfString:timeStr]];
+        
+    }
+    else if ([userVip.vipType isEqualToString:@"VIP"]) {
+        displayImg = @"mineCenter_tagVip";
+        NSString *timeStr = [[userVip.vipEndDate componentsSeparatedByString:@" "] firstObject];
+        NSString *desc = [NSString stringWithFormat:@"VIP有效期至 %@", [NSString returnNoNullStringWithString:timeStr]];
+        
+        descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+        [descAttr addAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightMedium], NSForegroundColorAttributeName:HexRGB(0xFF623A)} range:[desc rangeOfString:timeStr]];
+    }
+    else {
+        if ([NSString isEmptyString:userVip.expireVipType]) {
+            displayImg = @"";
+            NSString *desc = @"您还未开通会员哦~";
+            descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+        }
+        else {
+            if ([userVip.expireVipType isEqualToString:@"SVIP"]) {
+                displayImg = @"mineCenter_tagSvipExpired";
+                NSString *desc = @"SVIP已过期";
+                descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+            }
+            else if ([userVip.expireVipType isEqualToString:@"VIP"]) {
+                displayImg = @"mineCenter_tagVipExpired";
+                NSString *desc = @"VIP已过期";
+                descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+            }
+            else if ([userVip.expireVipType isEqualToString:@"ALL_VIP"]) {
+                displayImg = @"";
+                NSString *desc = @"会员已过期";
+                descAttr = [[NSMutableAttributedString alloc] initWithString:desc attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f weight:UIFontWeightRegular],NSForegroundColorAttributeName:HexRGB(0x502C0C)}];
+            }
+        }
+    }
+    if ([NSString isEmptyString:displayImg]) {
+        self.memberDescLeft.constant = 0.0f;
+        self.tagViewWidth.constant = 0.0;
+    }
+    else {
+        self.memberDescLeft.constant = 5.0f;
+        self.tagViewWidth.constant = 18.0;
+    }
+    [self.memberLogoTag setImage:[UIImage imageNamed:displayImg]];
+    self.memberCountLabel.attributedText = descAttr;
+    
+}
+
+
 - (IBAction)toMemberDetail:(id)sender {
     if (self.callback) {
         self.callback(MINEVIEWTYPE_MEMBER);
@@ -160,7 +221,7 @@
 }
 
 - (CGFloat)getViewHeight {
-    return 80 + 15 + (self.memberViewHeight.constant) / 2 + 10 + 80 + 12 + (136 + 12) * 3 + (192 + 12);
+    return 80 + 15 + (self.memberViewHeight.constant) / 2 + 5 + 80 + 12 + (136 + 12) * 3 + (192 + 12);
 }
 
 - (IBAction)modifyUser:(id)sender {

+ 32 - 22
KulexiuForStudent/KulexiuForStudent/Module/Mine/View/MineBodyView.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -15,7 +15,7 @@
             <autoresizingMask key="autoresizingMask"/>
             <subviews>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="yLa-RZ-nEh">
-                    <rect key="frame" x="12" y="238" width="390" height="136"/>
+                    <rect key="frame" x="12" y="232" width="390" height="136"/>
                     <subviews>
                         <view tag="1002" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Nn2-CW-v6f">
                             <rect key="frame" x="0.0" y="51" width="78" height="80"/>
@@ -305,11 +305,10 @@
                                 </userDefinedRuntimeAttribute>
                             </userDefinedRuntimeAttributes>
                         </imageView>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_nomal" translatesAutoresizingMaskIntoConstraints="NO" id="0Am-MA-eFO">
-                            <rect key="frame" x="343" y="58.5" width="34" height="15"/>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="mine_svip" translatesAutoresizingMaskIntoConstraints="NO" id="0Am-MA-eFO">
+                            <rect key="frame" x="340.5" y="57" width="39" height="18"/>
                             <constraints>
-                                <constraint firstAttribute="height" constant="15" id="jbJ-ZB-M7W"/>
-                                <constraint firstAttribute="width" constant="34" id="o2b-DA-Y3j"/>
+                                <constraint firstAttribute="height" constant="18" id="jbJ-ZB-M7W"/>
                             </constraints>
                         </imageView>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="QuV-vC-ohV">
@@ -347,17 +346,24 @@
                         <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="member_bg" translatesAutoresizingMaskIntoConstraints="NO" id="1bH-7t-qOO">
                             <rect key="frame" x="0.0" y="0.0" width="372" height="82"/>
                         </imageView>
-                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="member_logo" translatesAutoresizingMaskIntoConstraints="NO" id="5z5-qL-E8k">
-                            <rect key="frame" x="20" y="18" width="19" height="18"/>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" horizontalCompressionResistancePriority="752" image="mineCenter_tagSvip" translatesAutoresizingMaskIntoConstraints="NO" id="5z5-qL-E8k">
+                            <rect key="frame" x="17" y="14" width="18" height="18"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="18" id="9WR-bC-D8Z"/>
+                                <constraint firstAttribute="height" constant="18" id="C1N-Yc-fj2"/>
+                            </constraints>
                         </imageView>
-                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="会员有效期剩余xx天" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6qT-My-OUw">
-                            <rect key="frame" x="47" y="18.5" width="132.5" height="17"/>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6qT-My-OUw">
+                            <rect key="frame" x="39" y="13" width="0.0" height="20"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="20" id="DWM-cF-dEE"/>
+                            </constraints>
                             <fontDescription key="fontDescription" type="system" pointSize="14"/>
                             <color key="textColor" red="0.49803921568627452" green="0.41960784313725491" blue="0.24705882352941178" alpha="1" colorSpace="calibratedRGB"/>
                             <nil key="highlightedColor"/>
                         </label>
                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mmG-7j-0TH">
-                            <rect key="frame" x="282" y="14" width="74" height="26"/>
+                            <rect key="frame" x="282" y="10" width="74" height="26"/>
                             <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                             <constraints>
                                 <constraint firstAttribute="width" constant="74" id="3z5-of-1Pd"/>
@@ -375,19 +381,20 @@
                     <constraints>
                         <constraint firstItem="mmG-7j-0TH" firstAttribute="centerY" secondItem="6qT-My-OUw" secondAttribute="centerY" id="0Ld-nO-6mC"/>
                         <constraint firstItem="1bH-7t-qOO" firstAttribute="leading" secondItem="Z2G-Np-QOj" secondAttribute="leading" id="4m4-tT-78p"/>
-                        <constraint firstItem="5z5-qL-E8k" firstAttribute="top" secondItem="Z2G-Np-QOj" secondAttribute="top" constant="18" id="Fnw-sO-do7"/>
+                        <constraint firstItem="5z5-qL-E8k" firstAttribute="top" secondItem="Z2G-Np-QOj" secondAttribute="top" constant="14" id="Fnw-sO-do7"/>
+                        <constraint firstItem="mmG-7j-0TH" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="6qT-My-OUw" secondAttribute="trailing" constant="5" id="P2W-Gw-uIq"/>
                         <constraint firstAttribute="height" constant="82" id="SKi-Qq-ImA"/>
-                        <constraint firstItem="5z5-qL-E8k" firstAttribute="leading" secondItem="Z2G-Np-QOj" secondAttribute="leading" constant="20" id="Toc-JQ-yJL"/>
+                        <constraint firstItem="5z5-qL-E8k" firstAttribute="leading" secondItem="Z2G-Np-QOj" secondAttribute="leading" constant="17" id="Toc-JQ-yJL"/>
                         <constraint firstAttribute="trailing" secondItem="1bH-7t-qOO" secondAttribute="trailing" id="XTN-4K-JX8"/>
                         <constraint firstItem="1bH-7t-qOO" firstAttribute="top" secondItem="Z2G-Np-QOj" secondAttribute="top" id="Xge-VT-KfW"/>
                         <constraint firstItem="6qT-My-OUw" firstAttribute="centerY" secondItem="5z5-qL-E8k" secondAttribute="centerY" id="bpQ-lk-9Pa"/>
                         <constraint firstAttribute="trailing" secondItem="mmG-7j-0TH" secondAttribute="trailing" constant="16" id="hPZ-lO-ZhG"/>
-                        <constraint firstItem="6qT-My-OUw" firstAttribute="leading" secondItem="5z5-qL-E8k" secondAttribute="trailing" constant="8" id="hug-4m-7ex"/>
+                        <constraint firstItem="6qT-My-OUw" firstAttribute="leading" secondItem="5z5-qL-E8k" secondAttribute="trailing" constant="4" id="hug-4m-7ex"/>
                         <constraint firstAttribute="bottom" secondItem="1bH-7t-qOO" secondAttribute="bottom" id="ivR-56-GdM"/>
                     </constraints>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="CM0-x0-QTu">
-                    <rect key="frame" x="12" y="146" width="390" height="80"/>
+                    <rect key="frame" x="12" y="140" width="390" height="80"/>
                     <subviews>
                         <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="A7V-1n-5kh">
                             <rect key="frame" x="0.0" y="0.0" width="130" height="80"/>
@@ -540,7 +547,7 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Qk7-Dc-xiJ">
-                    <rect key="frame" x="12" y="534" width="390" height="136"/>
+                    <rect key="frame" x="12" y="528" width="390" height="136"/>
                     <subviews>
                         <view tag="1008" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qla-Gh-0cD">
                             <rect key="frame" x="0.0" y="15" width="390" height="50"/>
@@ -624,7 +631,7 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6Vb-ea-cCL">
-                    <rect key="frame" x="14" y="386" width="386" height="136"/>
+                    <rect key="frame" x="14" y="380" width="386" height="136"/>
                     <subviews>
                         <view tag="1006" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="p7a-wm-XFM">
                             <rect key="frame" x="0.0" y="51" width="96.5" height="80"/>
@@ -793,7 +800,7 @@
                     </userDefinedRuntimeAttributes>
                 </view>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="qXK-bw-j5E">
-                    <rect key="frame" x="14" y="682" width="386" height="192"/>
+                    <rect key="frame" x="14" y="676" width="386" height="192"/>
                     <subviews>
                         <view tag="1010" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iFf-ti-ghK">
                             <rect key="frame" x="0.0" y="15" width="386" height="50"/>
@@ -915,7 +922,7 @@
                 <constraint firstItem="Z2G-Np-QOj" firstAttribute="top" secondItem="4LF-Bt-r8c" secondAttribute="bottom" constant="15" id="GU6-hP-WIs"/>
                 <constraint firstAttribute="trailing" secondItem="qXK-bw-j5E" secondAttribute="trailing" constant="14" id="Lmf-J3-IbP"/>
                 <constraint firstAttribute="trailing" secondItem="4LF-Bt-r8c" secondAttribute="trailing" id="MwJ-5v-sNZ"/>
-                <constraint firstItem="CM0-x0-QTu" firstAttribute="top" secondItem="Z2G-Np-QOj" secondAttribute="centerY" constant="10" id="R5O-DO-tRR"/>
+                <constraint firstItem="CM0-x0-QTu" firstAttribute="top" secondItem="Z2G-Np-QOj" secondAttribute="centerY" constant="4" id="R5O-DO-tRR"/>
                 <constraint firstItem="6Vb-ea-cCL" firstAttribute="top" secondItem="yLa-RZ-nEh" secondAttribute="bottom" constant="12" id="ay3-1C-BkA"/>
                 <constraint firstItem="qXK-bw-j5E" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="14" id="bWF-55-ywb"/>
                 <constraint firstItem="4LF-Bt-r8c" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="bax-Hn-A2W"/>
@@ -939,12 +946,15 @@
                 <outlet property="finishCourseLabel" destination="lLR-pZ-jam" id="cVd-kH-5uJ"/>
                 <outlet property="followTeacherLabel" destination="gfo-ED-EEb" id="Fn2-TG-zkD"/>
                 <outlet property="memberCountLabel" destination="6qT-My-OUw" id="zH9-FK-BPX"/>
+                <outlet property="memberDescLeft" destination="hug-4m-7ex" id="9xF-rF-nae"/>
+                <outlet property="memberLogoTag" destination="5z5-qL-E8k" id="qyc-A0-RzS"/>
                 <outlet property="memberView" destination="Z2G-Np-QOj" id="NaQ-ff-30V"/>
                 <outlet property="memberViewHeight" destination="SKi-Qq-ImA" id="Uoi-Sz-DTf"/>
                 <outlet property="recordView" destination="tzR-Pz-0l8" id="qFg-sX-2Nk"/>
                 <outlet property="residueCourseLabel" destination="kXq-zC-0rd" id="48S-nZ-xUu"/>
                 <outlet property="subjectLabel" destination="dTC-4P-d18" id="im6-MY-idV"/>
                 <outlet property="subjectView" destination="NZg-rk-TQZ" id="Fzo-ku-gVU"/>
+                <outlet property="tagViewWidth" destination="9WR-bC-D8Z" id="T2e-nT-Uym"/>
                 <outlet property="ticketView" destination="ie2-Na-Fwe" id="Oiq-bn-8Iz"/>
                 <outlet property="userAvatar" destination="0Xj-Pq-GsW" id="HFE-tF-Mjw"/>
                 <outlet property="userIdLabel" destination="yim-3c-rJe" id="SSw-wm-kIL"/>
@@ -1043,7 +1053,7 @@
         <image name="activity_award" width="42" height="42"/>
         <image name="member_bg" width="176.5" height="82"/>
         <image name="member_center" width="74" height="26"/>
-        <image name="member_logo" width="19" height="18"/>
+        <image name="mineCenter_tagSvip" width="18" height="18"/>
         <image name="mine_course" width="33" height="33"/>
         <image name="mine_goodsOrder" width="42" height="42"/>
         <image name="mine_homework" width="33" height="33"/>
@@ -1051,7 +1061,7 @@
         <image name="mine_music" width="33" height="33"/>
         <image name="mine_musicProduct" width="33" height="34"/>
         <image name="mine_next" width="8" height="15"/>
-        <image name="mine_nomal" width="34" height="15"/>
+        <image name="mine_svip" width="39" height="18"/>
         <image name="mine_ticket" width="42" height="42"/>
         <image name="mine_trainRecord" width="42" height="42"/>
         <image name="mine_uid" width="11" height="11"/>