| @@ -17,8 +17,10 @@ urlpatterns = [ | ||
| 17 | 17 | urlpatterns = [ | 
| 18 | 18 | url(r'^g/create$', group_views.group_create_api, name='group_create_api'), # 群组创建 | 
| 19 | 19 | url(r'^g/detail$', group_views.group_detail_api, name='group_detail_api'), # 群组详情 | 
| 20 | + url(r'^g/update$', group_views.group_update_api, name='group_update_api'), # 群组更新 | |
| 20 | 21 | url(r'^g/join$', group_views.group_join_api, name='group_join_api'), # 申请加群 | 
| 21 | 22 | url(r'^g/lock$', group_views.group_lock_api, name='group_lock_api'), # 群组锁定 | 
| 23 | + url(r'^g/remove$', group_views.group_remove_api, name='group_remove_api'), # 成员移除 | |
| 22 | 24 | url(r'^g/pass$', group_views.group_pass_api, name='group_pass_api'), # 申请通过 | 
| 23 | 25 | url(r'^g/refuse$', group_views.group_refuse_api, name='group_refuse_api'), # 申请拒绝 | 
| 24 | 26 | ] | 
| @@ -17,8 +17,11 @@ | ||
| 17 | 17 | 4020 —— 群组不存在 | 
| 18 | 18 | 4021 —— 群组已锁定 | 
| 19 | 19 | 4022 —— 非群组管理员 | 
| 20 | - 4023 —— 没有锁定权限 | |
| 21 | - 4024 —— 没有通过权限 | |
| 22 | - 4025 —— 没有拒绝权限 | |
| 23 | - 4026 —— 重复加群申请 | |
| 24 | - 4027 —— 加群申请不存在 | |
| 20 | + 40220 —— 没有更新权限 | |
| 21 | + 40221 —— 没有锁定权限 | |
| 22 | + 40222 —— 没有移除权限 | |
| 23 | + 40223 —— 没有通过权限 | |
| 24 | + 40224 —— 没有拒绝权限 | |
| 25 | + 4027 —— 重复加群申请 | |
| 26 | + 4028 —— 加群申请不存在 | |
| 27 | + 4029 —— 该用户不在群组 | 
| @@ -0,0 +1,23 @@ | ||
| 1 | +# -*- coding: utf-8 -*- | |
| 2 | +from __future__ import unicode_literals | |
| 3 | + | |
| 4 | +from django.db import models, migrations | |
| 5 | + | |
| 6 | + | |
| 7 | +class Migration(migrations.Migration): | |
| 8 | + | |
| 9 | + dependencies = [ | |
| 10 | +        ('group', '0003_groupinfo_admin_id'), | |
| 11 | + ] | |
| 12 | + | |
| 13 | + operations = [ | |
| 14 | + migrations.AlterModelOptions( | |
| 15 | + name='groupphotoinfo', | |
| 16 | +            options={'verbose_name': 'groupphotoinfo', 'verbose_name_plural': 'groupphotoinfo'}, | |
| 17 | + ), | |
| 18 | + migrations.AddField( | |
| 19 | + model_name='groupuserinfo', | |
| 20 | + name='deleted_at', | |
| 21 | + field=models.DateTimeField(help_text='\u5220\u9664\u65f6\u95f4', null=True, verbose_name='deleted_at', blank=True), | |
| 22 | + ), | |
| 23 | + ] | 
| @@ -31,6 +31,17 @@ class GroupInfo(CreateUpdateMixin): | ||
| 31 | 31 | def __unicode__(self): | 
| 32 | 32 | return unicode(self.group_id) | 
| 33 | 33 |  | 
| 34 | + @property | |
| 35 | + def data(self): | |
| 36 | +        return { | |
| 37 | + 'group_id': self.group_id, | |
| 38 | + 'group_name': self.group_name, | |
| 39 | + 'group_desc': self.group_desc, | |
| 40 | + 'group_from': self.group_from, | |
| 41 | + 'group_lock': self.group_lock, | |
| 42 | + 'created_at': self.created_at, | |
| 43 | + } | |
| 44 | + | |
| 34 | 45 | def users(self, user_id): | 
| 35 | 46 | all_users = GroupUserInfo.objects.filter(group_id=self.group_id) | 
| 36 | 47 |  | 
| @@ -60,6 +71,7 @@ class GroupUserInfo(CreateUpdateMixin): | ||
| 60 | 71 | APPLYING = 0 | 
| 61 | 72 | PASSED = 1 | 
| 62 | 73 | REFUSED = 2 | 
| 74 | + DELETED = 3 | |
| 63 | 75 |  | 
| 64 | 76 | USER_STATUS = ( | 
| 65 | 77 | (APPLYING, u'申请中'), | 
| @@ -74,6 +86,7 @@ class GroupUserInfo(CreateUpdateMixin): | ||
| 74 | 86 | user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS, default=APPLYING) | 
| 75 | 87 | passed_at = models.DateTimeField(_(u'passed_at'), blank=True, null=True, help_text=_(u'通过时间')) | 
| 76 | 88 | refused_at = models.DateTimeField(_(u'refused_at'), blank=True, null=True, help_text=_(u'拒绝时间')) | 
| 89 | + deleted_at = models.DateTimeField(_(u'deleted_at'), blank=True, null=True, help_text=_(u'删除时间')) | |
| 77 | 90 |  | 
| 78 | 91 | class Meta: | 
| 79 | 92 | verbose_name = _(u'groupuserinfo') | 
| @@ -47,6 +47,7 @@ def group_create_api(request): | ||
| 47 | 47 | 'message': u'群组创建成功', | 
| 48 | 48 |          'data': { | 
| 49 | 49 | 'group_id': group_id, | 
| 50 | + 'group': group.data, | |
| 50 | 51 | 'users': group.users(user_id) | 
| 51 | 52 | }, | 
| 52 | 53 | }) | 
| @@ -77,11 +78,55 @@ def group_detail_api(request): | ||
| 77 | 78 | 'message': u'获取群组详情成功', | 
| 78 | 79 |          'data': { | 
| 79 | 80 | 'group_id': group_id, | 
| 81 | + 'group': group.data, | |
| 80 | 82 | 'users': group.users(user_id) | 
| 81 | 83 | }, | 
| 82 | 84 | }) | 
| 83 | 85 |  | 
| 84 | 86 |  | 
| 87 | +def group_update_api(request): | |
| 88 | +    group_id = request.POST.get('group_id', '') | |
| 89 | +    admin_id = request.POST.get('admin_id', '') | |
| 90 | +    group_name = request.POST.get('group_name', '') | |
| 91 | +    group_desc = request.POST.get('group_desc', '') | |
| 92 | + | |
| 93 | + try: | |
| 94 | + admin = UserInfo.objects.get(user_id=admin_id) | |
| 95 | + except UserInfo.DoesNotExist: | |
| 96 | +        return JsonResponse({ | |
| 97 | + 'status': 4011, | |
| 98 | + 'message': u'用户不存在', | |
| 99 | + }) | |
| 100 | + | |
| 101 | + try: | |
| 102 | + group = GroupInfo.objects.get(group_id=group_id) | |
| 103 | + except GroupInfo.DoesNotExist: | |
| 104 | +        return JsonResponse({ | |
| 105 | + 'status': 4020, | |
| 106 | + 'message': u'群组不存在', | |
| 107 | + }) | |
| 108 | + if group.admin_id != admin_id: | |
| 109 | +        return JsonResponse({ | |
| 110 | + 'status': 40220, | |
| 111 | + 'message': u'没有更新权限', | |
| 112 | + }) | |
| 113 | + if group_name: | |
| 114 | + group.group_name = group_name | |
| 115 | + if group_desc: | |
| 116 | + group.group_desc = group_desc | |
| 117 | + group.save() | |
| 118 | + | |
| 119 | +    return JsonResponse({ | |
| 120 | + 'status': 200, | |
| 121 | + 'message': u'用户更新成功', | |
| 122 | +        'data': { | |
| 123 | + 'group_id': group_id, | |
| 124 | + 'group': group.data, | |
| 125 | + 'users': group.users(admin_id) | |
| 126 | + }, | |
| 127 | + }) | |
| 128 | + | |
| 129 | + | |
| 85 | 130 | def group_join_api(request): | 
| 86 | 131 |      group_id = request.POST.get('group_id', '') | 
| 87 | 132 |      user_id = request.POST.get('user_id', '') | 
| @@ -110,7 +155,7 @@ def group_join_api(request): | ||
| 110 | 155 |  | 
| 111 | 156 | if GroupUserInfo.objects.filter(group_id=group_id, user_id=user_id, user_status__in=[GroupUserInfo.APPLYING, GroupUserInfo.PASSED]).exists(): | 
| 112 | 157 |          return JsonResponse({ | 
| 113 | - 'status': 4026, | |
| 158 | + 'status': 4027, | |
| 114 | 159 | 'message': u'重复加群申请', | 
| 115 | 160 | }) | 
| 116 | 161 |  | 
| @@ -149,7 +194,7 @@ def group_lock_api(request): | ||
| 149 | 194 | }) | 
| 150 | 195 | if group.admin_id != user_id: | 
| 151 | 196 |          return JsonResponse({ | 
| 152 | - 'status': 4023, | |
| 197 | + 'status': 40221, | |
| 153 | 198 | 'message': u'没有锁定权限', | 
| 154 | 199 | }) | 
| 155 | 200 |  | 
| @@ -162,6 +207,60 @@ def group_lock_api(request): | ||
| 162 | 207 | }) | 
| 163 | 208 |  | 
| 164 | 209 |  | 
| 210 | +def group_remove_api(request): | |
| 211 | +    group_id = request.POST.get('group_id', '') | |
| 212 | +    admin_id = request.POST.get('admin_id', '') | |
| 213 | +    user_id = request.POST.get('user_id', '') | |
| 214 | + | |
| 215 | + try: | |
| 216 | + admin = UserInfo.objects.get(user_id=admin_id) | |
| 217 | + except UserInfo.DoesNotExist: | |
| 218 | +        return JsonResponse({ | |
| 219 | + 'status': 4011, | |
| 220 | + 'message': u'用户不存在', | |
| 221 | + }) | |
| 222 | + try: | |
| 223 | + user = UserInfo.objects.get(user_id=user_id) | |
| 224 | + except UserInfo.DoesNotExist: | |
| 225 | +        return JsonResponse({ | |
| 226 | + 'status': 4011, | |
| 227 | + 'message': u'用户不存在', | |
| 228 | + }) | |
| 229 | + | |
| 230 | + try: | |
| 231 | + group = GroupInfo.objects.get(group_id=group_id) | |
| 232 | + except GroupInfo.DoesNotExist: | |
| 233 | +        return JsonResponse({ | |
| 234 | + 'status': 4020, | |
| 235 | + 'message': u'群组不存在', | |
| 236 | + }) | |
| 237 | + if group.admin_id != admin_id: | |
| 238 | +        return JsonResponse({ | |
| 239 | + 'status': 40222, | |
| 240 | + 'message': u'没有移除权限', | |
| 241 | + }) | |
| 242 | + | |
| 243 | + try: | |
| 244 | + group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED) | |
| 245 | + except GroupUserInfo.DoesNotExist: | |
| 246 | +        return JsonResponse({ | |
| 247 | + 'status': 4029, | |
| 248 | + 'message': u'该用户不在群组', | |
| 249 | + }) | |
| 250 | + group_user.user_status = GroupUserInfo.DELETED | |
| 251 | + group_user.deleted_at = tc.utc_datetime() | |
| 252 | + group_user.save() | |
| 253 | + | |
| 254 | +    return JsonResponse({ | |
| 255 | + 'status': 200, | |
| 256 | + 'message': u'用户移除成功', | |
| 257 | +        'data': { | |
| 258 | + 'group_id': group_id, | |
| 259 | + 'users': group.users(admin_id) | |
| 260 | + }, | |
| 261 | + }) | |
| 262 | + | |
| 263 | + | |
| 165 | 264 | def group_pass_api(request): | 
| 166 | 265 |      group_id = request.POST.get('group_id', '') | 
| 167 | 266 |      admin_id = request.POST.get('admin_id', '') | 
| @@ -191,7 +290,7 @@ def group_pass_api(request): | ||
| 191 | 290 | }) | 
| 192 | 291 | if group.admin_id != admin_id: | 
| 193 | 292 |          return JsonResponse({ | 
| 194 | - 'status': 4024, | |
| 293 | + 'status': 40223, | |
| 195 | 294 | 'message': u'没有通过权限', | 
| 196 | 295 | }) | 
| 197 | 296 |  | 
| @@ -199,7 +298,7 @@ def group_pass_api(request): | ||
| 199 | 298 | group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.APPLYING) | 
| 200 | 299 | except GroupUserInfo.DoesNotExist: | 
| 201 | 300 |          return JsonResponse({ | 
| 202 | - 'status': 4027, | |
| 301 | + 'status': 4028, | |
| 203 | 302 | 'message': u'加群申请不存在', | 
| 204 | 303 | }) | 
| 205 | 304 | group_user.user_status = GroupUserInfo.PASSED | 
| @@ -211,7 +310,7 @@ def group_pass_api(request): | ||
| 211 | 310 | 'message': u'申请通过成功', | 
| 212 | 311 |          'data': { | 
| 213 | 312 | 'group_id': group_id, | 
| 214 | - 'users': group.users(user_id) | |
| 313 | + 'users': group.users(admin_id) | |
| 215 | 314 | }, | 
| 216 | 315 | }) | 
| 217 | 316 |  | 
| @@ -245,7 +344,7 @@ def group_refuse_api(request): | ||
| 245 | 344 | }) | 
| 246 | 345 | if group.admin_id != admin_id: | 
| 247 | 346 |          return JsonResponse({ | 
| 248 | - 'status': 4025, | |
| 347 | + 'status': 40224, | |
| 249 | 348 | 'message': u'没有拒绝权限', | 
| 250 | 349 | }) | 
| 251 | 350 |  | 
| @@ -253,7 +352,7 @@ def group_refuse_api(request): | ||
| 253 | 352 | group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.APPLYING) | 
| 254 | 353 | except GroupUserInfo.DoesNotExist: | 
| 255 | 354 |          return JsonResponse({ | 
| 256 | - 'status': 4027, | |
| 355 | + 'status': 4028, | |
| 257 | 356 | 'message': u'加群申请不存在', | 
| 258 | 357 | }) | 
| 259 | 358 | group_user.user_status = GroupUserInfo.REFUSED | 
| @@ -265,7 +364,7 @@ def group_refuse_api(request): | ||
| 265 | 364 | 'message': u'申请拒绝成功', | 
| 266 | 365 |          'data': { | 
| 267 | 366 | 'group_id': group_id, | 
| 268 | - 'users': group.users(user_id) | |
| 367 | + 'users': group.users(admin_id) | |
| 269 | 368 | }, | 
| 270 | 369 | }) | 
| 271 | 370 |  | 
| @@ -1,7 +1,7 @@ | ||
| 1 | 1 | CodeConvert==2.0.3 | 
| 2 | 2 | Django==1.8.4 | 
| 3 | 3 | MySQL-python==1.2.5 | 
| 4 | -TimeConvert==1.1.3 | |
| 4 | +TimeConvert==1.1.6 | |
| 5 | 5 | django-curtail-uuid==1.0.0 | 
| 6 | 6 | django-multidomain==1.1.4 | 
| 7 | 7 | django-shortuuidfield==0.1.3 |