拍爱

views.py 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. # -*- coding: utf-8 -*-
  2. from django.db import transaction
  3. from django.http import JsonResponse
  4. from rest_framework import viewsets
  5. from account.models import UserInfo
  6. from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo
  7. from group.serializers import GroupInfoSerializer, GroupUserInfoSerializer, GroupPhotoInfoSerializer
  8. from utils.ip_utils import ip_addr
  9. from curtail_uuid import CurtailUUID
  10. from TimeConvert import TimeConvert as tc
  11. @transaction.atomic
  12. def group_create_api(request):
  13. user_id = request.POST.get('user_id', '')
  14. try:
  15. user = UserInfo.objects.get(user_id=user_id)
  16. except UserInfo.DoesNotExist:
  17. return JsonResponse({
  18. 'status': 4011,
  19. 'message': u'用户不存在',
  20. })
  21. group_id = CurtailUUID.uuid(GroupInfo, 'group_id')
  22. group = GroupInfo.objects.create(
  23. group_id=group_id,
  24. admin_id=user_id,
  25. group_from=GroupInfo.APP_GROUP,
  26. )
  27. GroupUserInfo.objects.create(
  28. group_id=group_id,
  29. user_id=user_id,
  30. nickname=user.username,
  31. admin=True,
  32. user_status=GroupUserInfo.PASSED,
  33. passed_at=tc.utc_datetime(),
  34. )
  35. return JsonResponse({
  36. 'status': 200,
  37. 'message': u'群组创建成功',
  38. 'data': {
  39. 'group_id': group_id,
  40. 'group': group.data,
  41. 'users': group.users(user_id)
  42. },
  43. })
  44. def group_detail_api(request):
  45. group_id = request.POST.get('group_id', '')
  46. user_id = request.POST.get('user_id', '')
  47. try:
  48. user = UserInfo.objects.get(user_id=user_id)
  49. except UserInfo.DoesNotExist:
  50. return JsonResponse({
  51. 'status': 4011,
  52. 'message': u'用户不存在',
  53. })
  54. try:
  55. group = GroupInfo.objects.get(group_id=group_id)
  56. except GroupInfo.DoesNotExist:
  57. return JsonResponse({
  58. 'status': 4020,
  59. 'message': u'群组不存在',
  60. })
  61. return JsonResponse({
  62. 'status': 200,
  63. 'message': u'获取群组详情成功',
  64. 'data': {
  65. 'group_id': group_id,
  66. 'group': group.data,
  67. 'users': group.users(user_id)
  68. },
  69. })
  70. def group_update_api(request):
  71. group_id = request.POST.get('group_id', '')
  72. admin_id = request.POST.get('admin_id', '')
  73. group_name = request.POST.get('group_name', '')
  74. group_desc = request.POST.get('group_desc', '')
  75. try:
  76. admin = UserInfo.objects.get(user_id=admin_id)
  77. except UserInfo.DoesNotExist:
  78. return JsonResponse({
  79. 'status': 4011,
  80. 'message': u'用户不存在',
  81. })
  82. try:
  83. group = GroupInfo.objects.get(group_id=group_id)
  84. except GroupInfo.DoesNotExist:
  85. return JsonResponse({
  86. 'status': 4020,
  87. 'message': u'群组不存在',
  88. })
  89. if group.admin_id != admin_id:
  90. return JsonResponse({
  91. 'status': 40220,
  92. 'message': u'没有更新权限',
  93. })
  94. if group_name:
  95. group.group_name = group_name
  96. if group_desc:
  97. group.group_desc = group_desc
  98. group.save()
  99. return JsonResponse({
  100. 'status': 200,
  101. 'message': u'用户更新成功',
  102. 'data': {
  103. 'group_id': group_id,
  104. 'group': group.data,
  105. 'users': group.users(admin_id)
  106. },
  107. })
  108. def group_join_api(request):
  109. group_id = request.POST.get('group_id', '')
  110. user_id = request.POST.get('user_id', '')
  111. nickname = request.POST.get('nickname', '')
  112. try:
  113. user = UserInfo.objects.get(user_id=user_id)
  114. except UserInfo.DoesNotExist:
  115. return JsonResponse({
  116. 'status': 4011,
  117. 'message': u'用户不存在',
  118. })
  119. try:
  120. group = GroupInfo.objects.get(group_id=group_id)
  121. except GroupInfo.DoesNotExist:
  122. return JsonResponse({
  123. 'status': 4020,
  124. 'message': u'群组不存在',
  125. })
  126. if group.group_lock:
  127. return JsonResponse({
  128. 'status': 4021,
  129. 'message': u'群组已锁定',
  130. })
  131. if GroupUserInfo.objects.filter(group_id=group_id, user_id=user_id, user_status__in=[GroupUserInfo.APPLYING, GroupUserInfo.PASSED]).exists():
  132. return JsonResponse({
  133. 'status': 4027,
  134. 'message': u'重复加群申请',
  135. })
  136. GroupUserInfo.objects.create(
  137. group_id=group_id,
  138. user_id=user_id,
  139. nickname=nickname or user.username,
  140. admin=False,
  141. user_status=GroupUserInfo.PASSED,
  142. )
  143. return JsonResponse({
  144. 'status': 200,
  145. 'message': u'申请已提交',
  146. })
  147. def group_lock_api(request):
  148. group_id = request.POST.get('group_id', '')
  149. user_id = request.POST.get('user_id', '')
  150. try:
  151. user = UserInfo.objects.get(user_id=user_id)
  152. except UserInfo.DoesNotExist:
  153. return JsonResponse({
  154. 'status': 4011,
  155. 'message': u'用户不存在',
  156. })
  157. try:
  158. group = GroupInfo.objects.get(group_id=group_id)
  159. except GroupInfo.DoesNotExist:
  160. return JsonResponse({
  161. 'status': 4020,
  162. 'message': u'群组不存在',
  163. })
  164. if group.admin_id != user_id:
  165. return JsonResponse({
  166. 'status': 40221,
  167. 'message': u'没有锁定权限',
  168. })
  169. group.group_lock = True
  170. group.save()
  171. return JsonResponse({
  172. 'status': 200,
  173. 'message': u'锁定成功',
  174. })
  175. def group_remove_api(request):
  176. group_id = request.POST.get('group_id', '')
  177. admin_id = request.POST.get('admin_id', '')
  178. user_id = request.POST.get('user_id', '')
  179. try:
  180. admin = UserInfo.objects.get(user_id=admin_id)
  181. except UserInfo.DoesNotExist:
  182. return JsonResponse({
  183. 'status': 4011,
  184. 'message': u'用户不存在',
  185. })
  186. try:
  187. user = UserInfo.objects.get(user_id=user_id)
  188. except UserInfo.DoesNotExist:
  189. return JsonResponse({
  190. 'status': 4011,
  191. 'message': u'用户不存在',
  192. })
  193. try:
  194. group = GroupInfo.objects.get(group_id=group_id)
  195. except GroupInfo.DoesNotExist:
  196. return JsonResponse({
  197. 'status': 4020,
  198. 'message': u'群组不存在',
  199. })
  200. if group.admin_id != admin_id:
  201. return JsonResponse({
  202. 'status': 40222,
  203. 'message': u'没有移除权限',
  204. })
  205. try:
  206. group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)
  207. except GroupUserInfo.DoesNotExist:
  208. return JsonResponse({
  209. 'status': 4029,
  210. 'message': u'该用户不在群组',
  211. })
  212. group_user.user_status = GroupUserInfo.DELETED
  213. group_user.deleted_at = tc.utc_datetime()
  214. group_user.save()
  215. return JsonResponse({
  216. 'status': 200,
  217. 'message': u'用户移除成功',
  218. 'data': {
  219. 'group_id': group_id,
  220. 'users': group.users(admin_id)
  221. },
  222. })
  223. def group_pass_api(request):
  224. group_id = request.POST.get('group_id', '')
  225. admin_id = request.POST.get('admin_id', '')
  226. user_id = request.POST.get('user_id', '')
  227. try:
  228. admin = UserInfo.objects.get(user_id=admin_id)
  229. except UserInfo.DoesNotExist:
  230. return JsonResponse({
  231. 'status': 4011,
  232. 'message': u'用户不存在',
  233. })
  234. try:
  235. user = UserInfo.objects.get(user_id=user_id)
  236. except UserInfo.DoesNotExist:
  237. return JsonResponse({
  238. 'status': 4011,
  239. 'message': u'用户不存在',
  240. })
  241. try:
  242. group = GroupInfo.objects.get(group_id=group_id)
  243. except GroupInfo.DoesNotExist:
  244. return JsonResponse({
  245. 'status': 4020,
  246. 'message': u'群组不存在',
  247. })
  248. if group.admin_id != admin_id:
  249. return JsonResponse({
  250. 'status': 40223,
  251. 'message': u'没有通过权限',
  252. })
  253. try:
  254. group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.APPLYING)
  255. except GroupUserInfo.DoesNotExist:
  256. return JsonResponse({
  257. 'status': 4028,
  258. 'message': u'加群申请不存在',
  259. })
  260. group_user.user_status = GroupUserInfo.PASSED
  261. group_user.passed_at = tc.utc_datetime()
  262. group_user.save()
  263. return JsonResponse({
  264. 'status': 200,
  265. 'message': u'申请通过成功',
  266. 'data': {
  267. 'group_id': group_id,
  268. 'users': group.users(admin_id)
  269. },
  270. })
  271. def group_refuse_api(request):
  272. group_id = request.POST.get('group_id', '')
  273. admin_id = request.POST.get('admin_id', '')
  274. user_id = request.POST.get('user_id', '')
  275. try:
  276. admin = UserInfo.objects.get(user_id=admin_id)
  277. except UserInfo.DoesNotExist:
  278. return JsonResponse({
  279. 'status': 4011,
  280. 'message': u'用户不存在',
  281. })
  282. try:
  283. user = UserInfo.objects.get(user_id=user_id)
  284. except UserInfo.DoesNotExist:
  285. return JsonResponse({
  286. 'status': 4011,
  287. 'message': u'用户不存在',
  288. })
  289. try:
  290. group = GroupInfo.objects.get(group_id=group_id)
  291. except GroupInfo.DoesNotExist:
  292. return JsonResponse({
  293. 'status': 4020,
  294. 'message': u'群组不存在',
  295. })
  296. if group.admin_id != admin_id:
  297. return JsonResponse({
  298. 'status': 40224,
  299. 'message': u'没有拒绝权限',
  300. })
  301. try:
  302. group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.APPLYING)
  303. except GroupUserInfo.DoesNotExist:
  304. return JsonResponse({
  305. 'status': 4028,
  306. 'message': u'加群申请不存在',
  307. })
  308. group_user.user_status = GroupUserInfo.REFUSED
  309. group_user.refused_at = tc.utc_datetime()
  310. group_user.save()
  311. return JsonResponse({
  312. 'status': 200,
  313. 'message': u'申请拒绝成功',
  314. 'data': {
  315. 'group_id': group_id,
  316. 'users': group.users(admin_id)
  317. },
  318. })
  319. class GroupInfoViewSet(viewsets.ModelViewSet):
  320. queryset = GroupInfo.objects.all().order_by('-created_at')
  321. serializer_class = GroupInfoSerializer
  322. class GroupUserInfoViewSet(viewsets.ModelViewSet):
  323. queryset = GroupUserInfo.objects.all().order_by('-created_at')
  324. serializer_class = GroupUserInfoSerializer
  325. class GroupPhotoInfoViewSet(viewsets.ModelViewSet):
  326. queryset = GroupPhotoInfo.objects.all().order_by('-created_at')
  327. serializer_class = GroupPhotoInfoSerializer