td> 200
+
201
+    if 'content_type' in request.POST:
202
+        contributions = contributions.filter(content_type=content_type)
203
+    if 'is_myself' in request.POST:
204
+        if is_myself:
205
+            contributions = contributions.filter(user_id=user_id)
206
+        else:
207
+            contributions = contributions.exclude(user_id=user_id)
208
+    if 'audit_status' in request.POST:
209
+        contributions = contributions.filter(audit_status=audit_status)
210
+    if 'is_audit_pass' in request.POST:
211
+        if is_audit_pass:
212
+            contributions = contributions.filter(audit_status=MemberActivityContributionInfo.AUDIT_PASS)
213
+        else:
214
+            contributions = contributions.exclude(audit_status=MemberActivityContributionInfo.AUDIT_PASS)
215
+    if 'is_selected' in request.POST:
216
+        contributions = contributions.filter(is_selected=is_selected)
217
+    contributions = contributions.order_by('-pk')
218
+    contributions, left = pagination(contributions, page, num)
219
+    contributions = [contribution.data for contribution in contributions]
220
+
221
+    return response(data={
222
+        'contributions': contributions,
223
+        'left': left,
224
+    })
225
+
226
+
227
+@logit
228
+def activity_contribute_detail(request):
229
+    brand_id = request.POST.get('brand_id') or settings.KODO_DEFAULT_BRAND_ID
230
+    contribution_id = request.POST.get('contribution_id', '')
231
+
232
+    try:
233
+        contribution = MemberActivityContributionInfo.objects.get(contribution_id=contribution_id, status=True)
234
+    except MemberActivityContributionInfo.DoesNotExist:
235
+        return response(MemberActivityContributionStatusCode.ACTIVITY_CONTRIBUTION_NOT_FOUND)
236
+
237
+    return response(data=contribution.data)

+ 21 - 0
member/migrations/0062_memberactivitysignupinfo_fields.py

@@ -0,0 +1,21 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+# Generated by Django 3.2.6 on 2023-05-15 08:07
4
+
5
+from django.db import migrations
6
+import jsonfield.fields
7
+
8
+
9
+class Migration(migrations.Migration):
10
+
11
+    dependencies = [
12
+        ('member', '0061_alter_memberactivityinfo_feed_id'),
13
+    ]
14
+
15
+    operations = [
16
+        migrations.AddField(
17
+            model_name='memberactivitysignupinfo',
18
+            name='fields',
19
+            field=jsonfield.fields.JSONField(blank=True, default='[]', help_text='自定义报名字段', null=True, verbose_name='fields'),
20
+        ),
21
+    ]

+ 4 - 0
member/models.py

@@ -718,6 +718,8 @@ class MemberActivitySignupInfo(BaseModelMixin, BrandInfoMixin):
718 718
     name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'姓名')
719 719
     phone = models.CharField(_(u'phone'), max_length=255, blank=True, null=True, help_text=u'电话')
720 720
 
721
+    fields = JSONField(_(u'fields'), blank=True, null=True, default='[]', help_text=u'自定义报名字段')
722
+
721 723
     class Meta:
722 724
         verbose_name = _(u'会员活动报名信息')
723 725
         verbose_name_plural = _(u'会员活动报名信息')
@@ -741,6 +743,7 @@ class MemberActivitySignupInfo(BaseModelMixin, BrandInfoMixin):
741 743
             'avatar': self.final_avatar,
742 744
             'name': self.name,
743 745
             'phone': self.phone,
746
+            'fields': json.loads(self.fields) if self.fields else [],
744 747
         }
745 748
 
746 749
     @property
@@ -753,6 +756,7 @@ class MemberActivitySignupInfo(BaseModelMixin, BrandInfoMixin):
753 756
             'avatar': self.final_avatar,
754 757
             'name': self.name,
755 758
             'phone': self.phone,
759
+            'fields': json.loads(self.fields) if self.fields else [],
756 760
         }
757 761
 
758 762
 

+ 14 - 0
member/mp_urls.py

@@ -10,3 +10,17 @@ urlpatterns = [
10 10
     url(r'^member/activity/list$', activity_mp_views.activity_list, name='mp_member_activity_list'),  # 获取会员分区活动列表
11 11
     url(r'^member/activity/detail$', activity_mp_views.activity_detail, name='mp_member_activity_detail'),  # 获取会员分区活动详情
12 12
 ]
13
+
14
+# activity signup
15
+urlpatterns += [
16
+    url(r'^member/activity/signup$', activity_mp_views.activity_signup, name='mp_member_activity_signup'),  # 会员活动报名
17
+    url(r'^member/activity/signup/detail$', activity_mp_views.activity_signup_detail, name='mp_member_activity_signup_detail'),  # 获取会员活动报名信息
18
+]
19
+
20
+# activity contribution
21
+urlpatterns += [
22
+    url(r'^member/activity/contribute/create$', activity_mp_views.activity_contribute_create, name='mp_member_activity_contribute_create'),
23
+    url(r'^member/activity/contribute/list$', activity_mp_views.activity_contribute_list, name='member_activity_contribute_list'),
24
+    url(r'^member/activity/contribute/update$', activity_mp_views.activity_contribute_update, name='member_aactivity_contribute_update'),
25
+    url(r'^member/activity/contribute/detail$', activity_mp_views.activity_contribute_detail, name='member_activity_contribute_detail'),
26
+]

pai2 - Gogs: Go Git Service

拍爱

contactus.html 4.9KB

    <!doctype html> <html> <head> <meta charset="UTF-8"> <title>拍爱 PAI.AI 联系我们</title> <meta name="keywords" content="摄影 图片 影像 分享 交流 社交 交友 摄影师 女性 孩子 亲子 旅行 旅游 约拍 iphone android app" /> <link href="css/layout.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="js/jquery.min.js"></script> <style> .my-map { margin: 0 auto 30px auto; width: 550px; height: 350px;float:left} .my-map .icon { background: url(http://lbs.amap.com/console/public/show/marker.png) no-repeat; } .my-map .icon-cir { height: 31px; width: 28px; } .my-map .icon-cir-red { background-position: -11px -5px; } </style> </head> <body> <div id="header"> <div class="content"> <a href="index.html" target="_self" class="logo"></a> <div class="navigation"> <a href="contactus.html" target="_self" class="current">联系我们</a> <a href="joinus.html" target="_self" >加入拍爱</a> <a href="aboutus.html" target="_self" >关于我们</a> <a href="index.html" target="_self" >首页</a> </div> </div> </div> <div id="container" ><div class="content contactus"> <div id="wrap" class="my-map map"> <div id="mapContainer"></div> </div> <script src="http://webapi.amap.com/maps?v=1.2&key=8325164e247e15eea68b59e89200988b"></script> <script> !function(){ var infoWindow, map, level = 16, center = {lng: 116.284361, lat: 39.931229}, features = [{type: "Marker", name: "拍爱 PAI.AI", desc: "北京市海淀区西八里庄路玲珑商务楼", color: "red", icon: "cir", offset: {x: -9, y: -31}, lnglat: {lng: 116.28449, lat: 39.930834}}]; function loadFeatures(){ for(var feature, data, i = 0, len = features.length, j, jl, path; i < len; i++){ data = features[i]; switch(data.type){ case "Marker": feature = new AMap.Marker({ map: map, position: new AMap.LngLat(data.lnglat.lng, data.lnglat.lat), zIndex: 3, extData: data, offset: new AMap.Pixel(data.offset.x, data.offset.y), title: data.name, content: '<div class="icon icon-' + data.icon + ' icon-'+ data.icon +'-' + data.color +'"></div>' }); break; case "Polyline": for(j = 0, jl = data.lnglat.length, path = []; j < jl; j++){ path.push(new AMap.LngLat(data.lnglat[j].lng, data.lnglat[j].lat)); } feature = new AMap.Polyline({ map: map, path: path, extData: data, zIndex: 2, strokeWeight: data.strokeWeight, strokeColor: data.strokeColor, strokeOpacity: data.strokeOpacity }); break; case "Polygon": for(j = 0, jl = data.lnglat.length, path = []; j < jl; j++){ path.push(new AMap.LngLat(data.lnglat[j].lng, data.lnglat[j].lat)); } feature = new AMap.Polygon({ map: map, path: path, extData: data, zIndex: 1, strokeWeight: data.strokeWeight, strokeColor: data.strokeColor, strokeOpacity: data.strokeOpacity, fillColor: data.fillColor, fillOpacity: data.fillOpacity }); break; default: feature = null; } if(feature){ AMap.event.addListener(feature, "click", mapFeatureClick); } } } function mapFeatureClick(e){ if(!infoWindow){ infoWindow = new AMap.InfoWindow({autoMove: true}); } var extData = e.target.getExtData(); infoWindow.setContent("<h5>" + extData.name + "</h5><div>" + extData.desc + "</div>"); infoWindow.open(map, e.lnglat); } map = new AMap.Map("mapContainer", {center: new AMap.LngLat(center.lng, center.lat), level: level}); loadFeatures(); map.plugin(["AMap.ToolBar", "AMap.OverView", "AMap.Scale"], function(){ map.addControl(new AMap.ToolBar); map.addControl(new AMap.OverView({isOpen: true})); map.addControl(new AMap.Scale); }); }(); </script> <p style="width:400px;float:right"><img src="img/weixin_qr.png" ><br><strong>关注拍爱 官方微信:</strong>pai_ai</p> <p style="width:400px;float:right"> <strong>商务合作:</strong>partner@pai.ai<br> <strong>用户反馈及帮助:</strong>feedback@pai.ai<br> <strong>公司地址:</strong>北京市海淀区西八里庄路玲珑商务楼 </p> </div></div> <div id="footer"> <div class="content foot"> <a href="aboutus.html" target="_self" >关于我们</a> <span>|</span> <a href="contactus.html" target="_self" >联系我们</a> ©2016 拍爱 PAI.AI 琼ICP备16000076号 </div> </div> </body> </html>