@@ -2,6 +2,7 @@ |
||
2 | 2 |
|
3 | 3 |
import logging |
4 | 4 |
|
5 |
+from django.core.paginator import Paginator |
|
5 | 6 |
from django.contrib.auth.hashers import check_password |
6 | 7 |
from django.db import transaction |
7 | 8 |
from django.db.models import Q |
@@ -13,6 +14,7 @@ from account.models import AdministratorInfo |
||
13 | 14 |
from goods.models import GoodsInfo, PackInfo |
14 | 15 |
from kol.models import KOLInfo |
15 | 16 |
from pay.models import OrderInfo |
17 |
+from live.models import RoomInfo, RoomGoodsInfo, RoomOrderInfo, AnchorInfo, liveGoodsInfo |
|
16 | 18 |
from utils.error.errno_utils import AdministratorStatusCode, OrderStatusCode |
17 | 19 |
|
18 | 20 |
|
@@ -131,3 +133,43 @@ def order_update(request): |
||
131 | 133 |
order.save() |
132 | 134 |
|
133 | 135 |
return response(200, 'Order Update Success', '订单更新成功') |
136 |
+ |
|
137 |
+def live_goods_list(request): |
|
138 |
+ admin_id = request.POST.get('admin_id', '') |
|
139 |
+ page = request.POST.get('page', 1) |
|
140 |
+ num = request.POST.get('num', 20) |
|
141 |
+ |
|
142 |
+ try: |
|
143 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
144 |
+ except AdministratorInfo.DoesNotExist: |
|
145 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
146 |
+ |
|
147 |
+ goods_list = liveGoodsInfo.objects.all() |
|
148 |
+ count = goods_list.count() |
|
149 |
+ goods_list = Paginator(goods_list, num).get_page(page) |
|
150 |
+ goods_list = [goods.admindata for goods in goods_list] |
|
151 |
+ |
|
152 |
+ return response(200, 'Live Goods Success', u'直播商品库获取成功', data={ |
|
153 |
+ 'goods_list': goods_list, |
|
154 |
+ 'count': count, |
|
155 |
+ }) |
|
156 |
+ |
|
157 |
+def live_room_list(request): |
|
158 |
+ admin_id = request.POST.get('admin_id', '') |
|
159 |
+ page = request.POST.get('page', 1) |
|
160 |
+ num = request.POST.get('num', 20) |
|
161 |
+ |
|
162 |
+ try: |
|
163 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
164 |
+ except AdministratorInfo.DoesNotExist: |
|
165 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
166 |
+ |
|
167 |
+ rooms = RoomInfo.objects.all() |
|
168 |
+ count = rooms.count() |
|
169 |
+ rooms = Paginator(rooms, num).get_page(page) |
|
170 |
+ rooms = [room.admindata for room in rooms] |
|
171 |
+ |
|
172 |
+ return response(200, 'Live Goods Success', u'直播商品库获取成功', data={ |
|
173 |
+ 'rooms': rooms, |
|
174 |
+ 'count': count, |
|
175 |
+ }) |
@@ -37,6 +37,10 @@ urlpatterns += [ |
||
37 | 37 |
|
38 | 38 |
url(r'^admin/order/list$', admin_views.order_list, name='order_list'), # 订单列表 |
39 | 39 |
url(r'^admin/order/update$', admin_views.order_update, name='order_update'), # 订单列表 |
40 |
+ |
|
41 |
+ # 直播 |
|
42 |
+ url(r'^admin/live/goods/list$', admin_views.live_goods_list, name='live_goods_list'), # 直播商品库列表 |
|
43 |
+ url(r'^admin/live/room/list$', admin_views.live_room_list, name='live_room_list'), # 直播商品库列表 |
|
40 | 44 |
] |
41 | 45 |
|
42 | 46 |
urlpatterns += [ |
@@ -0,0 +1,18 @@ |
||
1 |
+# Generated by Django 2.2.12 on 2020-05-20 05:47 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class Migration(migrations.Migration): |
|
7 |
+ |
|
8 |
+ dependencies = [ |
|
9 |
+ ('live', '0006_roomuserinfo'), |
|
10 |
+ ] |
|
11 |
+ |
|
12 |
+ operations = [ |
|
13 |
+ migrations.AlterField( |
|
14 |
+ model_name='roomgoodsinfo', |
|
15 |
+ name='room_id', |
|
16 |
+ field=models.CharField(db_index=True, help_text='房间唯一标识', max_length=32, verbose_name='room_id'), |
|
17 |
+ ), |
|
18 |
+ ] |
@@ -97,6 +97,21 @@ class RoomInfo(BaseModelMixin): |
||
97 | 97 |
'share_img': self.share_img_url, |
98 | 98 |
} |
99 | 99 |
|
100 |
+ @property |
|
101 |
+ def admindata(self): |
|
102 |
+ anchor = AnchorInfo.objects.get(anchor_id=self.anchor_id) |
|
103 |
+ return { |
|
104 |
+ 'room_id': self.room_id, |
|
105 |
+ 'name': self.name, |
|
106 |
+ 'live_status': self.live_status, |
|
107 |
+ 'end_time': self.end_time, |
|
108 |
+ 'cover_img': self.cover_img_url, |
|
109 |
+ 'anchor_name': self.anchor_name, |
|
110 |
+ 'share_img': self.share_img_url, |
|
111 |
+ 'anchor_id': self.anchor_id, |
|
112 |
+ 'anchor_name': anchor.anchor_name, |
|
113 |
+ 'anchor_avatar': anchor.anchor_avatar_url |
|
114 |
+ } |
|
100 | 115 |
|
101 | 116 |
|
102 | 117 |
class liveGoodsInfo(BaseModelMixin): |
@@ -141,11 +156,27 @@ class liveGoodsInfo(BaseModelMixin): |
||
141 | 156 |
@property |
142 | 157 |
def goods_img_url(self): |
143 | 158 |
return upload_file_url(self.goods_img) |
159 |
+ |
|
160 |
+ @property |
|
161 |
+ def admindata(self): |
|
162 |
+ return { |
|
163 |
+ 'goods_id': self.goods_id, |
|
164 |
+ 'wx_goods_id': self.wx_goods_id, |
|
165 |
+ 'audit_id': self.audit_id, |
|
166 |
+ 'audit_status': self.audit_status, |
|
167 |
+ 'goods_img': self.goods_img_url, |
|
168 |
+ 'name': self.name, |
|
169 |
+ 'coverImgUrl': self.coverImgUrl, |
|
170 |
+ 'price_type': self.price, |
|
171 |
+ 'price': self.price, |
|
172 |
+ 'price2': self.price2, |
|
173 |
+ 'url': self.url |
|
174 |
+ } |
|
144 | 175 |
|
145 | 176 |
|
146 | 177 |
|
147 | 178 |
class RoomGoodsInfo(BaseModelMixin): |
148 |
- room_id = models.CharField(_('room_id'), max_length=32, help_text='房间唯一标识', db_index=True, unique=True) |
|
179 |
+ room_id = models.CharField(_('room_id'), max_length=32, help_text='房间唯一标识', db_index=True) |
|
149 | 180 |
anchor_id = models.CharField(_('anchor_id'), max_length=32, blank=True, help_text='主播唯一标识') |
150 | 181 |
goods_id = models.CharField(_('goods_id'), max_length=32, blank=True, help_text='商品ID') |
151 | 182 |
inventory = models.IntegerField(_('inventory'), default=0, help_text='直播间库存数量') |