增加 会员活动接口(增、删、改、查)

FFIB 4 年之前
父節點
當前提交
e2d620ee89
共有 3 個文件被更改,包括 215 次插入2 次删除
  1. 162 1
      api/admin_views.py
  2. 5 0
      api/urls.py
  3. 48 1
      member/models.py

+ 162 - 1
api/admin_views.py

@@ -18,7 +18,7 @@ from coupon.models import UserCouponInfo
18 18
 from integral.models import SaleclerkSubmitLogInfo
19 19
 from logs.models import MchInfoEncryptLogInfo
20 20
 from mch.models import AdministratorInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo
21
-from member.models import GoodsOrderInfo
21
+from member.models import GoodsOrderInfo, MemberActivityInfo, MemberActivityGroupShareInfo
22 22
 from statistic.models import ConsumeModelSaleStatisticInfo, ConsumeSaleStatisticInfo, ConsumeUserStatisticInfo
23 23
 from utils.error.errno_utils import (AdministratorStatusCode, ProductBrandStatusCode, ProductCouponStatusCode,
24 24
                                      ProductMachineStatusCode, UserStatusCode)
@@ -774,3 +774,164 @@ def record_warehouse(request):
774 774
         'left': left,
775 775
         'count': count
776 776
     })
777
+
778
+def member_activity_list(request):
779
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
780
+    admin_id = request.POST.get('admin_id', '')
781
+    title = request.POST.get('title', '')
782
+    start_time = request.POST.get('start_time', '')
783
+    end_time = request.POST.get('end_time', '')
784
+    page = request.POST.get('page', 1)
785
+    num = request.POST.get('num', 20)
786
+
787
+    if brand_id != settings.KODO_DEFAULT_BRAND_ID:
788
+        return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
789
+
790
+    try:
791
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
792
+    except AdministratorInfo.DoesNotExist:
793
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
794
+
795
+    logs = MemberActivityInfo.objects.filter(title__icontains=title, status=True)
796
+
797
+    if start_time and end_time:
798
+        start_time = datetime.strptime(start_time, '%Y%m%d')
799
+        end_time = datetime.strptime(end_time + ' 23:59:59', '%Y%m%d %H:%M:%S')
800
+        logs = logs.filter(created_at__range=(start_time, end_time))
801
+    
802
+    logs = logs.order_by('-created_at')
803
+ 
804
+    count = logs.count()
805
+    logs, left = pagination(logs, page, num)
806
+    logs = [log.admindata for log in logs]
807
+    print logs
808
+    return response(200, 'Get Member Activity Record Success', u'获取会员活动成功', data={
809
+        'logs': logs,
810
+        'left': left,
811
+        'count': count
812
+    })
813
+
814
+def member_activity_details(request):
815
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
816
+    admin_id = request.POST.get('admin_id', '')
817
+    activity_id = request.POST.get('activity_id', '')
818
+    if brand_id != settings.KODO_DEFAULT_BRAND_ID:
819
+        return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
820
+
821
+    try:
822
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
823
+    except AdministratorInfo.DoesNotExist:
824
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
825
+
826
+    try:
827
+        log = MemberActivityInfo.objects.get(activity_id=activity_id, status=True)
828
+    except:
829
+        return response()
830
+    
831
+    log = log.admindetails
832
+
833
+    return response(200, 'Get Member Activity Record Details Success', u'获取会员活动详情成功', data={
834
+        'log': log,
835
+    })
836
+
837
+def member_activity_update(request):
838
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
839
+    admin_id = request.POST.get('admin_id', '')
840
+    activity_id = request.POST.get('activity_id', '')
841
+    title = request.POST.get('title', '')
842
+    subtitle = request.POST.get('subtitle', '')
843
+    date = request.POST.get('date', '')
844
+    city = request.POST.get('city', '')
845
+    location = request.POST.get('location', '')
846
+    integral = request.POST.get('integral', '')
847
+    cover_url = request.POST.get('cover_path', '')
848
+    slider_image = request.POST.get('banner_path', '')
849
+    image = request.POST.get('banner_path', '')
850
+    is_signup = request.POST.get('is_signup', '')
851
+    group_share_integral = request.POST.get('share_integral', '')
852
+    group_share_max_integral = request.POST.get('group_share_max_integral', '')
853
+    group_share_integral = request.POST.get('share_integral', '')
854
+    is_slider = request.POST.get('is_slider', '')
855
+    content_rich_text = request.POST.get('content_rich_text', '')
856
+    share_h5_link = request.POST.get('share_h5_link', '')
857
+
858
+    if brand_id != settings.KODO_DEFAULT_BRAND_ID:
859
+        return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
860
+
861
+    try:
862
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
863
+    except AdministratorInfo.DoesNotExist:
864
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
865
+
866
+    try:
867
+        log = MemberActivityInfo.objects.get(activity_id=activity_id, status=True)
868
+    except:
869
+        return response()
870
+    
871
+    log.title = title
872
+    log.subtitle = subtitle
873
+    log.date = date
874
+    log.city = city
875
+    log.location = location
876
+    log.integral = integral
877
+    log.cover_url = cover_url
878
+    log.slider_image = slider_image
879
+    log.image = image
880
+    log.is_signup = is_signup
881
+    log.group_share_integral = group_share_integral
882
+    log.group_share_max_integral = group_share_max_integral
883
+    log.group_share_integral = group_share_integral
884
+    log.is_slider = is_slider
885
+    log.content_rich_text = content_rich_text
886
+    log.share_h5_link = share_h5_link
887
+    log.save()
888
+
889
+    return response(200, 'MemberActivityInfo Update Success', u'会员活动更新成功')
890
+
891
+def member_activity_create(request):
892
+    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
893
+    admin_id = request.POST.get('admin_id', '')
894
+    title = request.POST.get('title', '')
895
+    subtitle = request.POST.get('subtitle', '')
896
+    date = request.POST.get('date', '')
897
+    city = request.POST.get('city', '')
898
+    location = request.POST.get('location', '')
899
+    integral = request.POST.get('integral', '')
900
+    cover_url = request.POST.get('cover_path', '')
901
+    slider_image = request.POST.get('banner_path', '')
902
+    image = request.POST.get('banner_path', '')
903
+    is_signup = request.POST.get('is_signup', '')
904
+    group_share_max_integral = request.POST.get('group_share_max_integral', '')
905
+    group_share_integral = request.POST.get('share_integral', '')
906
+    is_slider = request.POST.get('is_slider', '')
907
+    content_rich_text = request.POST.get('content_rich_text', '')
908
+    share_h5_link = request.POST.get('share_h5_link', '')
909
+
910
+    if brand_id != settings.KODO_DEFAULT_BRAND_ID:
911
+        return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
912
+
913
+    try:
914
+        administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)
915
+    except AdministratorInfo.DoesNotExist:
916
+        return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
917
+
918
+    MemberActivityInfo.objects.create(
919
+        brand_id=administrator.brand_id,
920
+        title=title,
921
+        subtitle=subtitle,
922
+        date=date,
923
+        city=city,
924
+        location=location,
925
+        integral=integral,
926
+        cover_url=cover_url,
927
+        slider_image=slider_image,
928
+        image=image,
929
+        is_signup=is_signup,
930
+        group_share_max_integral=group_share_max_integral,
931
+        group_share_integral=group_share_integral,
932
+        is_slider=is_slider,
933
+        content_rich_text=content_rich_text,
934
+        share_h5_link=share_h5_link,
935
+    )
936
+
937
+    return response(200, 'MemberActivityInfo Create Success', u'会员活动创建成功')

+ 5 - 0
api/urls.py

@@ -326,6 +326,11 @@ urlpatterns += [
326 326
 
327 327
     url(r'^admin/member/goods/order$', admin_views.member_goods_order, name='member_goods_order'),
328 328
     url(r'^admin/member/goods/order/update$', admin_views.member_goods_order_update, name='member_goods_order_update'),
329
+    
330
+    url(r'^admin/member/activity/list$', admin_views.member_activity_list, name='member_activity_list'),
331
+    url(r'^admin/member/activity/details$', admin_views.member_activity_details, name='member_activity_details'),
332
+    url(r'^admin/member/activity/update$', admin_views.member_activity_update, name='member_activity_update'),
333
+    url(r'^admin/member/activity/create$', admin_views.member_activity_create, name='member_activity_create'),
329 334
 ]
330 335
 
331 336
 urlpatterns += [

+ 48 - 1
member/models.py

@@ -353,7 +353,7 @@ class MemberActivityInfo(BaseModelMixin):
353 353
             return u'报名中'
354 354
         tdate = tc.local_date()
355 355
         if tdate < self.date:
356
-            return u'报名中'
356
+            return u'报名中' if self.is_signup else '进行中'
357 357
         if tdate == self.date:
358 358
             return u'活动中'
359 359
         return u'已结束'
@@ -404,6 +404,53 @@ class MemberActivityInfo(BaseModelMixin):
404 404
             'is_signed': self.is_signed(user_id),
405 405
             'is_signup': self.is_signup,
406 406
         }
407
+    
408
+    @property
409
+    def admindata(self):
410
+        return {
411
+            'id': self.activity_id,
412
+            'activity_id': self.activity_id,
413
+            'title': self.title,
414
+            'subtitle': self.subtitle,
415
+            'date': self.date.strftime('%Y-%m-%d'),
416
+            'city': self.city,
417
+            'location': self.location,
418
+            'lat': self.lat,
419
+            'lon': self.lon,
420
+            'integral': self.integral,
421
+            'cover_url': self.cover_url,
422
+            'share_img_link': self.share_img_link,
423
+            'share_h5_link': self.share_h5_link,
424
+            'slider_image': self.slider_image_url,
425
+            'state': self.final_state,
426
+            'is_signup': self.is_signup,
427
+            'share_integral': self.group_share_integral,
428
+            'share_max_integral': self.group_share_max_integral
429
+        }
430
+    
431
+    @property
432
+    def admindetails(self):
433
+        return {
434
+            'id': self.activity_id,
435
+            'activity_id': self.activity_id,
436
+            'title': self.title,
437
+            'subtitle': self.subtitle,
438
+            'date': self.date.strftime('%Y-%m-%d'),
439
+            'city': self.city,
440
+            'location': self.location,
441
+            'lat': self.lat,
442
+            'lon': self.lon,
443
+            'integral': self.integral,
444
+            'content_rich_text': self.content_rich_text,
445
+            'cover_url': self.cover_url,
446
+            'share_img_link': self.share_img_link,
447
+            'share_h5_link': self.share_h5_link,
448
+            'slider_image': self.slider_image_url,
449
+            'state': self.final_state,
450
+            'is_signup': self.is_signup,
451
+            'share_integral': self.group_share_integral,
452
+            'share_max_integral': self.group_share_max_integral
453
+        }
407 454
 
408 455
 
409 456
 class MemberActivitySignupInfo(BaseModelMixin):