@@ -20,7 +20,7 @@ from coupon.models import UserCouponInfo, CouponInfo |
||
20 | 20 |
from integral.models import SaleclerkSubmitLogInfo |
21 | 21 |
from logs.models import MchInfoEncryptLogInfo |
22 | 22 |
from mch.models import AdministratorInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo |
23 |
-from member.models import GoodsOrderInfo, MemberActivityInfo, MemberActivityGroupShareInfo |
|
23 |
+from member.models import GoodsOrderInfo, MemberActivityInfo, MemberActivityGroupShareInfo, GoodsInfo |
|
24 | 24 |
from statistic.models import ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo |
25 | 25 |
from utils.error.errno_utils import (AdministratorStatusCode, ProductBrandStatusCode, ProductCouponStatusCode, |
26 | 26 |
ProductMachineStatusCode, UserStatusCode) |
@@ -1198,3 +1198,129 @@ def coupon_delete(request): |
||
1198 | 1198 |
|
1199 | 1199 |
return response(200, 'CouponInfo Delete Success', u'劵删除成功') |
1200 | 1200 |
|
1201 |
+def member_goods_list(request): |
|
1202 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
1203 |
+ admin_id = request.POST.get('admin_id', '') |
|
1204 |
+ title = request.POST.get('title', '') |
|
1205 |
+ page = request.POST.get('page', 1) |
|
1206 |
+ num = request.POST.get('num', 20) |
|
1207 |
+ |
|
1208 |
+ if brand_id != settings.KODO_DEFAULT_BRAND_ID: |
|
1209 |
+ return response(ProductBrandStatusCode.BRAND_NOT_MATCH) |
|
1210 |
+ |
|
1211 |
+ try: |
|
1212 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
1213 |
+ except AdministratorInfo.DoesNotExist: |
|
1214 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
1215 |
+ |
|
1216 |
+ logs = GoodsInfo.objects.filter(title__icontains=title, only_for_member=False).order_by('-created_at') |
|
1217 |
+ |
|
1218 |
+ count = logs.count() |
|
1219 |
+ logs, left = pagination(logs, page, num) |
|
1220 |
+ logs = [log.admindata for log in logs] |
|
1221 |
+ return response(200, 'Get Member Goods Success', u'获取会员商品成功', data={ |
|
1222 |
+ 'logs': logs, |
|
1223 |
+ 'left': left, |
|
1224 |
+ 'count': count |
|
1225 |
+ }) |
|
1226 |
+ |
|
1227 |
+def member_goods_details(request): |
|
1228 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
1229 |
+ admin_id = request.POST.get('admin_id', '') |
|
1230 |
+ good_id = request.POST.get('good_id', '') |
|
1231 |
+ if brand_id != settings.KODO_DEFAULT_BRAND_ID: |
|
1232 |
+ return response(ProductBrandStatusCode.BRAND_NOT_MATCH) |
|
1233 |
+ |
|
1234 |
+ try: |
|
1235 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
1236 |
+ except AdministratorInfo.DoesNotExist: |
|
1237 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
1238 |
+ |
|
1239 |
+ try: |
|
1240 |
+ log = GoodsInfo.objects.get(good_id=good_id) |
|
1241 |
+ except: |
|
1242 |
+ return response() |
|
1243 |
+ |
|
1244 |
+ log = log.admindetails |
|
1245 |
+ |
|
1246 |
+ return response(200, 'Get Member Goods Details Success', u'获取积分商品详情成功', data={ |
|
1247 |
+ 'log': log, |
|
1248 |
+ }) |
|
1249 |
+ |
|
1250 |
+def member_goods_update(request): |
|
1251 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
1252 |
+ admin_id = request.POST.get('admin_id', '') |
|
1253 |
+ good_id = request.POST.get('good_id', '') |
|
1254 |
+ title = request.POST.get('title', '') |
|
1255 |
+ desc = request.POST.get('desc', '') |
|
1256 |
+ value = int(request.POST.get('value', 0)) |
|
1257 |
+ left_num = int(request.POST.get('left_num', 0)) |
|
1258 |
+ image = request.POST.get('image_path', '') |
|
1259 |
+ coupon_id = request.POST.get('coupon_id', '') |
|
1260 |
+ slider_image = request.POST.get('slider_path', '') |
|
1261 |
+ integral = int(request.POST.get('integral', 0)) |
|
1262 |
+ fee = int(request.POST.get('fee', 0)) |
|
1263 |
+ |
|
1264 |
+ if brand_id != settings.KODO_DEFAULT_BRAND_ID: |
|
1265 |
+ return response(ProductBrandStatusCode.BRAND_NOT_MATCH) |
|
1266 |
+ |
|
1267 |
+ try: |
|
1268 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
1269 |
+ except AdministratorInfo.DoesNotExist: |
|
1270 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
1271 |
+ |
|
1272 |
+ try: |
|
1273 |
+ log = GoodsInfo.objects.get(good_id=good_id, status=True) |
|
1274 |
+ except: |
|
1275 |
+ return response() |
|
1276 |
+ |
|
1277 |
+ log.title = title |
|
1278 |
+ log.desc = desc |
|
1279 |
+ log.value = value |
|
1280 |
+ log.left_num = left_num |
|
1281 |
+ log.image = image |
|
1282 |
+ log.coupon_id = coupon_id |
|
1283 |
+ log.slider_image = slider_image |
|
1284 |
+ log.integral = integral |
|
1285 |
+ log.fee = fee |
|
1286 |
+ log.save() |
|
1287 |
+ |
|
1288 |
+ return response(200, 'GoodsInfo Update Success', u'积分商品更新成功') |
|
1289 |
+ |
|
1290 |
+def member_goods_create(request): |
|
1291 |
+ brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) |
|
1292 |
+ admin_id = request.POST.get('admin_id', '') |
|
1293 |
+ good_type = int(request.POST.get('good_type', 0)) |
|
1294 |
+ title = request.POST.get('title', '') |
|
1295 |
+ desc = request.POST.get('desc', '') |
|
1296 |
+ value = int(request.POST.get('value', 0)) |
|
1297 |
+ left_num = int(request.POST.get('left_num', 0)) |
|
1298 |
+ image = request.POST.get('image_path', '') |
|
1299 |
+ coupon_id = request.POST.get('coupon_id', '') |
|
1300 |
+ slider_image = request.POST.get('slider_path', '') |
|
1301 |
+ integral = int(request.POST.get('integral', 0)) |
|
1302 |
+ fee = int(request.POST.get('fee', 0)) |
|
1303 |
+ |
|
1304 |
+ if brand_id != settings.KODO_DEFAULT_BRAND_ID: |
|
1305 |
+ return response(ProductBrandStatusCode.BRAND_NOT_MATCH) |
|
1306 |
+ |
|
1307 |
+ try: |
|
1308 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
1309 |
+ except AdministratorInfo.DoesNotExist: |
|
1310 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
1311 |
+ |
|
1312 |
+ GoodsInfo.objects.create( |
|
1313 |
+ brand_id=administrator.brand_id, |
|
1314 |
+ good_type=good_type, |
|
1315 |
+ title=title, |
|
1316 |
+ desc=desc, |
|
1317 |
+ value=value, |
|
1318 |
+ left_num=left_num, |
|
1319 |
+ image=image, |
|
1320 |
+ coupon_id=coupon_id, |
|
1321 |
+ slider_image=slider_image, |
|
1322 |
+ integral=integral, |
|
1323 |
+ fee=fee, |
|
1324 |
+ ) |
|
1325 |
+ |
|
1326 |
+ return response(200, 'GoodsInfo Create Success', u'积分商品创建成功') |
@@ -172,6 +172,11 @@ urlpatterns += [ |
||
172 | 172 |
url(r'^admin/coupon/create$', admin_views.coupon_create, name='coupon_create'), |
173 | 173 |
url(r'^admin/coupon/update$', admin_views.coupon_update, name='coupon_update'), |
174 | 174 |
url(r'^admin/coupon/delete$', admin_views.coupon_delete, name='coupon_delete'), |
175 |
+ |
|
176 |
+ url(r'^admin/member/goods/list$', admin_views.member_goods_list, name='member_goods_list'), |
|
177 |
+ url(r'^admin/member/goods/details$', admin_views.member_goods_details, name='member_goods_details'), |
|
178 |
+ url(r'^admin/member/goods/create$', admin_views.member_goods_create, name='member_goods_create'), |
|
179 |
+ url(r'^admin/member/goods/update$', admin_views.member_goods_update, name='member_goods_update'), |
|
175 | 180 |
] |
176 | 181 |
|
177 | 182 |
urlpatterns += [ |
@@ -7,6 +7,7 @@ from shortuuidfield import ShortUUIDField |
||
7 | 7 |
from TimeConvert import TimeConvert as tc |
8 | 8 |
|
9 | 9 |
from mch.models import ModelInfo |
10 |
+from coupon.models import CouponInfo |
|
10 | 11 |
from simditor.fields import RichTextField |
11 | 12 |
|
12 | 13 |
|
@@ -97,6 +98,50 @@ class GoodsInfo(BaseModelMixin): |
||
97 | 98 |
detail['desc'] = self.desc |
98 | 99 |
return detail |
99 | 100 |
|
101 |
+ @property |
|
102 |
+ def admindata(self): |
|
103 |
+ try: |
|
104 |
+ coupon = CouponInfo.objects.get(coupon_id=self.coupon_id).admindata |
|
105 |
+ except: |
|
106 |
+ coupon = {} |
|
107 |
+ return { |
|
108 |
+ 'good_id': self.good_id, |
|
109 |
+ 'good_type': self.good_type, |
|
110 |
+ 'title': self.title, |
|
111 |
+ 'image': self.image_url, |
|
112 |
+ 'image_path': self.image_path, |
|
113 |
+ 'slider_image': self.slider_image_url, |
|
114 |
+ 'slider_path': self.slider_image_path, |
|
115 |
+ 'integral': self.integral, |
|
116 |
+ 'fee': self.fee, |
|
117 |
+ 'value': self.value, |
|
118 |
+ 'left_num': self.left_num, |
|
119 |
+ 'coupon': coupon, |
|
120 |
+ 'created_at': tc.local_string(utc_dt=self.created_at, format='%Y-%m-%d %H:%M:%S'), |
|
121 |
+ } |
|
122 |
+ |
|
123 |
+ @property |
|
124 |
+ def admindetails(self): |
|
125 |
+ try: |
|
126 |
+ coupon = CouponInfo.objects.get(coupon_id=self.coupon_id).admindata |
|
127 |
+ except: |
|
128 |
+ coupon = {} |
|
129 |
+ return { |
|
130 |
+ 'good_id': self.good_id, |
|
131 |
+ 'good_type': self.good_type, |
|
132 |
+ 'title': self.title, |
|
133 |
+ 'image': self.image_url, |
|
134 |
+ 'image_path': self.image_path, |
|
135 |
+ 'slider_image': self.slider_image_url, |
|
136 |
+ 'slider_path': self.slider_image_path, |
|
137 |
+ 'integral': self.integral, |
|
138 |
+ 'fee': self.fee, |
|
139 |
+ 'value': self.value, |
|
140 |
+ 'desc': self.desc, |
|
141 |
+ 'left_num': self.left_num, |
|
142 |
+ 'coupon': coupon, |
|
143 |
+ 'created_at': tc.local_string(utc_dt=self.created_at, format='%Y-%m-%d %H:%M:%S'), |
|
144 |
+ } |
|
100 | 145 |
|
101 | 146 |
class GoodsOrderInfo(BaseModelMixin): |
102 | 147 |
PHYSICAL = 0 |