增加积分商城

FFIB 4 年之前
父节点
当前提交
491e5d1e1c
共有 3 个文件被更改,包括 177 次插入1 次删除
  1. 127 1
      api/admin_views.py
  2. 5 0
      api/urls.py
  3. 45 0
      member/models.py

+ 127 - 1
api/admin_views.py

@@ -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'积分商品创建成功')

+ 5 - 0
api/urls.py

@@ -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 += [

+ 45 - 0
member/models.py

@@ -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