8">8
+
9
+    dependencies = [
10
+        ('tenancy', '0001_initial'),
11
+    ]
12
+
13
+    operations = [
14
+        migrations.AddField(
15
+            model_name='tenancyshotrequestinfo',
16
+            name='identity_card_name',
17
+            field=models.CharField(blank=True, help_text='身份证姓名', max_length=32, null=True, verbose_name='identity_card_name'),
18
+        ),
19
+        migrations.AddField(
20
+            model_name='tenancyshotrequestinfo',
21
+            name='identity_card_number',
22
+            field=models.CharField(blank=True, help_text='身份证号', max_length=32, null=True, verbose_name='identity_card_number'),
23
+        ),
24
+        migrations.AlterField(
25
+            model_name='tenancyshotrequestinfo',
26
+            name='name',
27
+            field=models.CharField(blank=True, help_text='用户姓名', max_length=255, null=True, verbose_name='name'),
28
+        ),
29
+        migrations.AlterField(
30
+            model_name='tenancyshotrequestinfo',
31
+            name='phone',
32
+            field=models.CharField(blank=True, help_text='用户电话', max_length=11, null=True, verbose_name='phone'),
33
+        ),
34
+    ]

+ 0 - 0
tenancy/migrations/__init__.py


+ 142 - 0
tenancy/models.py

@@ -0,0 +1,142 @@
1
+# -*- coding: utf-8 -*-
2
+
3
+from django.db import models
4
+from django.utils.translation import ugettext_lazy as _
5
+from django_models_ext import BaseModelMixin
6
+from jsonfield import JSONField
7
+from shortuuidfield import ShortUUIDField
8
+from TimeConvert import TimeConvert as tc
9
+
10
+from mch.models import ModelInfo
11
+
12
+
13
+class TenancyShotInfo(BaseModelMixin):
14
+    FITTINGS_TYPE = (
15
+        (0, u'前盖'),
16
+        (1, u'后盖'),
17
+        (2, u'遮光罩'),
18
+        (3, u'脚架环'),
19
+        (4, u'外观性能'),
20
+    )
21
+
22
+    TENANCY_STATUS = (
23
+        (0, u'未租'),
24
+        (1, u'已租'),
25
+    )
26
+
27
+    shot_id = ShortUUIDField(_(u'shot_id'), max_length=32, blank=True, null=True, help_text=u'镜头唯一标识', db_index=True, unique=True)
28
+    model_name = models.CharField(_(u'model_name'), max_length=255, blank=True, null=True, help_text=u'型号名称')
29
+    sn = models.CharField(_(u'sn'), max_length=32, blank=True, null=True, help_text=u'序列号', db_index=True)
30
+    fittings_type = models.IntegerField(_(u'fittings_type'), choices=FITTINGS_TYPE, default=0, help_text=u'配件类型')
31
+    tenancy_status = models.IntegerField(_(u'tenancy_status'), choices=TENANCY_STATUS, default=0, help_text=u'租借状态')
32
+
33
+    class Meta:
34
+        verbose_name = _(u'租赁镜头信息')
35
+        verbose_name_plural = _(u'租赁镜头信息')
36
+
37
+    def __unicode__(self):
38
+        return '%d' % self.pk
39
+
40
+    @property
41
+    def data(self):
42
+        return {
43
+            'shot_id': self.shot_id,
44
+            'model_name': self.model_name,
45
+            'sn': self.sn,
46
+            'fittings_type': self.fittings_type,
47
+            'fittings_type_str': dict(TenancyShotInfo.FITTINGS_TYPE).get(self.fittings_type),
48
+            'tenancy_status': self.tenancy_status,
49
+            'tenancy_status_str': dict(TenancyShotInfo.TENANCY_STATUS).get(self.tenancy_status),
50
+            'created_at': tc.local_string(utc_dt=self.created_at),
51
+        }
52
+
53
+
54
+class TenancyShotRequestInfo(BaseModelMixin):
55
+    AUDIT_PASS = 1
56
+    AUDIT_STATUS = (
57
+        (0, u'未审批'),
58
+        (1, u'已通过'),
59
+        (2, u'未通过'),
60
+    )
61
+
62
+    request_id = ShortUUIDField(_(u'request_id'), max_length=32, blank=True, null=True, help_text=u'申请唯一标识', db_index=True, unique=True)
63
+    shot_id = models.CharField(_(u'shot_id'), max_length=32, blank=True, null=True, help_text=u'镜头唯一标识', db_index=True)
64
+
65
+    user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
66
+
67
+    # 身份证信息
68
+    identity_card_number = models.CharField(_(u'identity_card_number'), max_length=32, blank=True, null=True, help_text=u'身份证号')
69
+    identity_card_name = models.CharField(_(u'identity_card_name'), max_length=32, blank=True, null=True, help_text=u'身份证姓名')
70
+
71
+    # 邮寄信息
72
+    name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'用户姓名')
73
+    phone = models.CharField(_(u'phone'), max_length=11, blank=True, null=True, help_text=u'用户电话')
74
+    location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'用户地址')
75
+    postcode = models.CharField(_(u'postcode'), max_length=255, blank=True, null=True, help_text=u'用户邮政编码')
76
+
77
+    # 租赁信息
78
+    purpose = models.CharField(_(u'purpose'), max_length=255, blank=True, null=True, help_text=u'用途')
79
+    return_date = models.DateField(_(u'return_date'), blank=True, null=True, help_text=u'预定归还日期')
80
+
81
+    # 公司 =》 用户
82
+    express_name = models.CharField(_(u'express_name'), max_length=255, blank=True, null=True, help_text=u'快递公司')
83
+    express_com = models.CharField(_(u'express_com'), max_length=255, blank=True, null=True, help_text=u'快递编码')
84
+    tracking_number = models.CharField(_(u'tracking_number'), max_length=255, blank=True, null=True, help_text=u'快递单号')
85
+    tracking_info = JSONField(_(u'tracking_info'), blank=True, null=True, default={}, help_text=u'快递信息')
86
+    tracking_signed = models.BooleanField(_(u'tracking_signed'), default=False, help_text=u'快递是否已签收')
87
+    tracking_signed_images = JSONField(_(u'tracking_signed_images'), blank=True, null=True, default=[], help_text=u'快递签收图片列表')
88
+
89
+    # 用户 =》 公司
90
+    back_express_name = models.CharField(_(u'back_express_name'), max_length=255, blank=True, null=True, help_text=u'寄回快递公司')
91
+    back_express_com = models.CharField(_(u'back_express_com'), max_length=255, blank=True, null=True, help_text=u'寄回快递编码')
92
+    back_tracking_number = models.CharField(_(u'back_tracking_number'), max_length=255, blank=True, null=True, help_text=u'寄回快递单号')
93
+    back_tracking_info = JSONField(_(u'back_tracking_info'), blank=True, null=True, default={}, help_text=u'寄回快递信息')
94
+    back_tracking_signed = models.BooleanField(_(u'back_tracking_signed'), default=False, help_text=u'寄回快递是否已签收')
95
+
96
+    audit_status = models.IntegerField(_(u'audit_status'), choices=AUDIT_STATUS, default=0, help_text=u'审批状态', db_index=True)
97
+    # REQUEST_STATUS = (
98
+    #     (0, u'寄出'),
99
+    #     (1, u'寄出已签收'),
100
+    #     (2, u'寄回'),
101
+    #     (3, u'寄回已签收并检查无损坏'),
102
+    # )
103
+    # request_status = models.IntegerField(_(u'request_status'), choices=REQUEST_STATUS, default=0, help_text=u'租借申请状态')
104
+    request_status = models.CharField(_(u'request_status'), max_length=16, default='', help_text=u'租借申请状态')
105
+    request_status_at = JSONField(_(u'request_status_at'), blank=True, null=True, default={}, help_text=u'租借申请状态变更时间')
106
+
107
+    class Meta:
108
+        verbose_name = _(u'租赁镜头申请信息')
109
+        verbose_name_plural = _(u'租赁镜头申请信息')
110
+
111
+    def __unicode__(self):
112
+        return '%d' % self.pk
113
+
114
+    @property
115
+    def data(self):
116
+        return {
117
+            'request_id': self.request_id,
118
+            'shot_id': self.shot_id,
119
+            'user_id': self.user_id,
120
+            'name': self.name,
121
+            'phone': self.phone,
122
+            'location': self.location,
123
+            'postcode': self.postcode,
124
+            'purpose': self.purpose,
125
+            'return_date': tc.local_date_string(self.return_date),
126
+            'express_name': self.express_name,
127
+            'express_com': self.express_com,
128
+            'tracking_number': self.tracking_number,
129
+            'tracking_info': self.tracking_info,
130
+            'tracking_signed': self.tracking_signed,
131
+            'tracking_signed_images': self.tracking_signed_images,
132
+            'back_express_name': self.back_express_name,
133
+            'back_express_com': self.back_express_com,
134
+            'back_tracking_number': self.back_tracking_number,
135
+            'back_tracking_info': self.back_tracking_info,
136
+            'back_tracking_signed': self.back_tracking_signed,
137
+            'audit_status': self.audit_status,
138
+            'request_status': self.request_status,
139
+            'request_status_at': {k: tc.local_string(utc_dt=tc.string_to_utc_datetime(v, format='%Y-%m-%dT%H:%M:%S.%fZ')) for k, v in self.request_status_at.items()},
140
+            'created_at': tc.local_string(utc_dt=self.created_at),
141
+            'updated_at': tc.local_string(utc_dt=self.updated_at),
142
+        }

+ 7 - 0
tenancy/tests.py

@@ -0,0 +1,7 @@
1
+# -*- coding: utf-8 -*-
2
+from __future__ import unicode_literals
3
+
4
+from django.test import TestCase
5
+
6
+
7
+# Create your tests here.

+ 7 - 0
tenancy/views.py

@@ -0,0 +1,7 @@
1
+# -*- coding: utf-8 -*-
2
+from __future__ import unicode_literals
3
+
4
+from django.shortcuts import render
5
+
6
+
7
+# Create your views here.

升级app版本1019 · 768c98f72d - Gogs: Go Git Service

升级app版本1019

chengzhenyu 9 years ago
parent
commit
768c98f72d

+ 4 - 0
.idea/modules.xml

@@ -3,10 +3,14 @@
3 3
   <component name="ProjectModuleManager">
4 4
     <modules>
5 5
       <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
6
+      <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
7
+      <module fileurl="file://$PROJECT_DIR$/client.iml" filepath="$PROJECT_DIR$/client.iml" />
6 8
       <module fileurl="file://$PROJECT_DIR$/client.iml" filepath="$PROJECT_DIR$/client.iml" />
7 9
       <module fileurl="file://$PROJECT_DIR$/common/common.iml" filepath="$PROJECT_DIR$/common/common.iml" />
10
+      <module fileurl="file://$PROJECT_DIR$/common/common.iml" filepath="$PROJECT_DIR$/common/common.iml" />
8 11
       <module fileurl="file://$PROJECT_DIR$/trunk.iml" filepath="$PROJECT_DIR$/trunk.iml" />
9 12
       <module fileurl="file://$PROJECT_DIR$/views/views.iml" filepath="$PROJECT_DIR$/views/views.iml" />
13
+      <module fileurl="file://$PROJECT_DIR$/views/views.iml" filepath="$PROJECT_DIR$/views/views.iml" />
10 14
     </modules>
11 15
   </component>
12 16
 </project>

+ 3 - 3
app/build.gradle

@@ -12,9 +12,9 @@ android {
12 12
     defaultConfig {
13 13
         applicationId "ai.pai.client"
14 14
         minSdkVersion 14
15
-        targetSdkVersion 23
16
-        versionCode 1018
17
-        versionName "1.0.18"
15
+        targetSdkVersion 22
16
+        versionCode 1019
17
+        versionName "1.0.19"
18 18
         buildConfigField "boolean","isDevMode","true"
19 19
         manifestPlaceholders = [CHANNEL_NAME: "guanwang"]
20 20
 

+ 1 - 1
app/src/main/java/ai/pai/client/services/MyLocationService.java

@@ -39,7 +39,7 @@ public class MyLocationService extends Service implements Handler.Callback{
39 39
     private double lastLon;
40 40
     private double repeatTime;
41 41
 
42
-    private static final int FETCH_GATHER_INFO_PERIOD = 15*60*1000;
42
+    private static final int FETCH_GATHER_INFO_PERIOD = 20*60*1000;
43 43
     private static final int LOCATION_MAX_PERIOD = 10*60*1000;
44 44
     private static final int LOCATION_MIN_PERIOD = 60*1000;
45 45
     private static final int LOCATION_PERIOD_CHANGE_DEADLINE = 15*60*1000;

+ 1 - 1
common/build.gradle

@@ -6,7 +6,7 @@ android {
6 6
 
7 7
     defaultConfig {
8 8
         minSdkVersion 14
9
-        targetSdkVersion 23
9
+        targetSdkVersion 22
10 10
         versionCode 1
11 11
         versionName "1.0"
12 12
     }

+ 1 - 1
views/build.gradle

@@ -6,7 +6,7 @@ android {
6 6
 
7 7
     defaultConfig {
8 8
         minSdkVersion 14
9
-        targetSdkVersion 23
9
+        targetSdkVersion 22
10 10
         versionCode 1
11 11
         versionName "1.0"
12 12
     }