@@ -10,13 +10,18 @@ from django_response import response |
||
| 10 | 10 |
from paginator import pagination |
| 11 | 11 |
from TimeConvert import TimeConvert as tc |
| 12 | 12 |
|
| 13 |
+from account.models import UserInfo |
|
| 13 | 14 |
from maintenance.models import ExpressCompanyInfo, MaintenaceInfo |
| 15 |
+from pre.custom_message import sendtemplatemessage |
|
| 14 | 16 |
from utils.admin_utils import is_admin, is_maintenanceman |
| 15 | 17 |
from utils.error.errno_utils import MaintenanceStatusCode |
| 16 | 18 |
from utils.kuaidi.subscribe import KuaiDi100 as KuaiDi100Subscribe |
| 17 | 19 |
from utils.kuaidi.synquery import KuaiDi100 |
| 18 | 20 |
|
| 19 | 21 |
|
| 22 |
+WECHAT = settings.WECHAT |
|
| 23 |
+ |
|
| 24 |
+ |
|
| 20 | 25 |
@logit |
| 21 | 26 |
def maintenance_add(request): |
| 22 | 27 |
user_id = request.POST.get('user_id', '')
|
@@ -31,7 +36,7 @@ def maintenance_add(request): |
||
| 31 | 36 |
point_name = request.POST.get('point_name', '')
|
| 32 | 37 |
express_name = request.POST.get('express_name', '')
|
| 33 | 38 |
tracking_number = request.POST.get('tracking_number', '')
|
| 34 |
- maintenance_status = request.POST.get('maintenance_status', u'寄出运送中')
|
|
| 39 |
+ maintenance_status = request.POST.get('maintenance_status', MaintenaceInfo.TRACKING_TO_DESPATCH)
|
|
| 35 | 40 |
|
| 36 | 41 |
try: |
| 37 | 42 |
company = ExpressCompanyInfo.objects.get(name=express_name, status=True) |
@@ -100,7 +105,7 @@ def maintenance_update(request): |
||
| 100 | 105 |
tracking_number = request.POST.get('tracking_number', '')
|
| 101 | 106 |
back_express_name = request.POST.get('back_express_name', '')
|
| 102 | 107 |
back_tracking_number = request.POST.get('back_tracking_number', '')
|
| 103 |
- maintenance_status = request.POST.get('maintenance_status', u'寄出运送中')
|
|
| 108 |
+ maintenance_status = request.POST.get('maintenance_status', MaintenaceInfo.TRACKING_TO_DESPATCH)
|
|
| 104 | 109 |
|
| 105 | 110 |
try: |
| 106 | 111 |
maintenance = MaintenaceInfo.objects.get(id=maintenance_id, status=True) |
@@ -112,6 +117,11 @@ def maintenance_update(request): |
||
| 112 | 117 |
|
| 113 | 118 |
old_tracking_number = maintenance.tracking_number |
| 114 | 119 |
old_back_tracking_number = maintenance.back_tracking_number |
| 120 |
+ old_maintenance_status = maintenance.maintenance_status |
|
| 121 |
+ |
|
| 122 |
+ # 新增 `back_tracking_number` 之后,更新维修状态 |
|
| 123 |
+ if not maintenance_status and not old_back_tracking_number and back_tracking_number: |
|
| 124 |
+ maintenance_status = MaintenaceInfo.TRACKING_FIXED_BACK |
|
| 115 | 125 |
|
| 116 | 126 |
if name: |
| 117 | 127 |
maintenance.name = name |
@@ -148,7 +158,8 @@ def maintenance_update(request): |
||
| 148 | 158 |
if maintenance_status: |
| 149 | 159 |
maintenance.maintenance_status = maintenance_status |
| 150 | 160 |
maintenance_status_at = maintenance.maintenance_status_at |
| 151 |
- maintenance_status_at[maintenance_status] = tc.utc_datetime() |
|
| 161 |
+ if maintenance_status not in maintenance_status_at: |
|
| 162 |
+ maintenance_status_at[maintenance_status] = tc.utc_datetime() |
|
| 152 | 163 |
maintenance.maintenance_status_at = maintenance_status_at |
| 153 | 164 |
maintenance.save() |
| 154 | 165 |
|
@@ -157,6 +168,9 @@ def maintenance_update(request): |
||
| 157 | 168 |
if back_tracking_number and back_tracking_number != old_back_tracking_number: |
| 158 | 169 |
maintenance_tracking_info_subscribe(maintenance, 'back_tracking') |
| 159 | 170 |
|
| 171 |
+ if maintenance_status != old_maintenance_status: |
|
| 172 |
+ maintenance_status_update_sendtemplatemessage(maintenance) |
|
| 173 |
+ |
|
| 160 | 174 |
return response() |
| 161 | 175 |
|
| 162 | 176 |
|
@@ -197,7 +211,43 @@ def maintenance_detail(request): |
||
| 197 | 211 |
}) |
| 198 | 212 |
|
| 199 | 213 |
|
| 200 |
-def is_tracking_signed(tracking_info): |
|
| 214 |
+def maintenance_status_update_sendtemplatemessage(maintenance): |
|
| 215 |
+ try: |
|
| 216 |
+ user = UserInfo.objects.get(user_id=maintenance.user_id, status=True) |
|
| 217 |
+ except UserInfo.DoesNotExist: |
|
| 218 |
+ return |
|
| 219 |
+ |
|
| 220 |
+ # Send template_message |
|
| 221 |
+ # data = {
|
|
| 222 |
+ # "first": {
|
|
| 223 |
+ # "value": u'你的补码申请已通过,请点击消息绑定您的电子保修卡', |
|
| 224 |
+ # "color": "#173177" |
|
| 225 |
+ # }, |
|
| 226 |
+ # "keyword1": {
|
|
| 227 |
+ # "value": log.name, |
|
| 228 |
+ # "color": "#173177" |
|
| 229 |
+ # }, |
|
| 230 |
+ # "keyword2": {
|
|
| 231 |
+ # "value": log.model_name, |
|
| 232 |
+ # "color": "#173177" |
|
| 233 |
+ # }, |
|
| 234 |
+ # "keyword3": {
|
|
| 235 |
+ # "value": log.sn, |
|
| 236 |
+ # "color": "#173177" |
|
| 237 |
+ # }, |
|
| 238 |
+ # "remark": {
|
|
| 239 |
+ # "value": u'感谢您的使用', |
|
| 240 |
+ # "color": "#173177" |
|
| 241 |
+ # } |
|
| 242 |
+ # } |
|
| 243 |
+ # |
|
| 244 |
+ # wxcfg = WECHAT.get('MINIAPP', {})
|
|
| 245 |
+ # appid = wxcfg.get('appID')
|
|
| 246 |
+ # |
|
| 247 |
+ # sendtemplatemessage(openid=user.openid, template_id=settings.TEMPLATE_ID_COMPLEMENT, data=data, miniappid=appid, minipagepath='/pages/register/consumer/consumer?q={}&marketcode=1'.format(ciphertext))
|
|
| 248 |
+ |
|
| 249 |
+ |
|
| 250 |
+def is_maintenance_tracking_signed(tracking_info): |
|
| 201 | 251 |
if not tracking_info: |
| 202 | 252 |
return False |
| 203 | 253 |
items = tracking_info.get('data', [])
|
@@ -206,6 +256,28 @@ def is_tracking_signed(tracking_info): |
||
| 206 | 256 |
return items[0].get('status') == u'签收'
|
| 207 | 257 |
|
| 208 | 258 |
|
| 259 |
+def maintenance_tracking_info_update(maintenance, type_, tracking_info): |
|
| 260 |
+ old_maintenance_status = maintenance.maintenance_status |
|
| 261 |
+ is_tracking_signed = is_maintenance_tracking_signed(tracking_info) |
|
| 262 |
+ if type_ == 'tracking': |
|
| 263 |
+ maintenance.tracking_info = tracking_info |
|
| 264 |
+ maintenance.tracking_signed = is_tracking_signed |
|
| 265 |
+ maintenance_status = MaintenaceInfo.TRACKING_SIGNED_FIXING |
|
| 266 |
+ else: |
|
| 267 |
+ maintenance.back_tracking_info = tracking_info |
|
| 268 |
+ maintenance.back_tracking_signed = is_tracking_signed |
|
| 269 |
+ maintenance_status = MaintenaceInfo.TRACKING_BACK_SIGNED |
|
| 270 |
+ maintenance.maintenance_status = maintenance_status |
|
| 271 |
+ maintenance_status_at = maintenance.maintenance_status_at |
|
| 272 |
+ if maintenance_status not in maintenance_status_at: |
|
| 273 |
+ maintenance_status_at[maintenance_status] = tc.utc_datetime() |
|
| 274 |
+ maintenance.maintenance_status_at = maintenance_status_at |
|
| 275 |
+ maintenance.save() |
|
| 276 |
+ |
|
| 277 |
+ if maintenance_status != old_maintenance_status: |
|
| 278 |
+ maintenance_status_update_sendtemplatemessage(maintenance) |
|
| 279 |
+ |
|
| 280 |
+ |
|
| 209 | 281 |
@logit |
| 210 | 282 |
def maintenance_tracking_info(request): |
| 211 | 283 |
maintenance_id = request.POST.get('maintenance_id', '')
|
@@ -231,13 +303,7 @@ def maintenance_tracking_info(request): |
||
| 231 | 303 |
tracking_info = {}
|
| 232 | 304 |
|
| 233 | 305 |
if tracking_info: |
| 234 |
- if type_ == 'tracking': |
|
| 235 |
- maintenance.tracking_info = tracking_info |
|
| 236 |
- maintenance.tracking_signed = is_tracking_signed(tracking_info) |
|
| 237 |
- else: |
|
| 238 |
- maintenance.back_tracking_info = tracking_info |
|
| 239 |
- maintenance.back_tracking_signed = is_tracking_signed(tracking_info) |
|
| 240 |
- maintenance.save() |
|
| 306 |
+ maintenance_tracking_info_update(maintenance, type_, tracking_info) |
|
| 241 | 307 |
|
| 242 | 308 |
return response(data={
|
| 243 | 309 |
'type': type_, |
@@ -283,12 +349,6 @@ def maintenance_tracking_info_callback(request): |
||
| 283 | 349 |
except MaintenaceInfo.DoesNotExist: |
| 284 | 350 |
return response(MaintenanceStatusCode.MAINTENACE_NOT_FOUND) |
| 285 | 351 |
|
| 286 |
- if type_ == 'tracking': |
|
| 287 |
- maintenance.tracking_info = tracking_info |
|
| 288 |
- maintenance.tracking_signed = is_tracking_signed(tracking_info) |
|
| 289 |
- else: |
|
| 290 |
- maintenance.back_tracking_info = tracking_info |
|
| 291 |
- maintenance.back_tracking_signed = is_tracking_signed(tracking_info) |
|
| 292 |
- maintenance.save() |
|
| 352 |
+ maintenance_tracking_info_update(maintenance, type_, tracking_info) |
|
| 293 | 353 |
|
| 294 | 354 |
return response() |
@@ -54,6 +54,11 @@ class ExpressCompanyInfo(BaseModelMixin): |
||
| 54 | 54 |
|
| 55 | 55 |
|
| 56 | 56 |
class MaintenaceInfo(BaseModelMixin): |
| 57 |
+ TRACKING_TO_DESPATCH = u'寄出运送中' |
|
| 58 |
+ TRACKING_SIGNED_FIXING = u'已签收修理中' |
|
| 59 |
+ TRACKING_FIXED_BACK = u'已修复寄回' |
|
| 60 |
+ TRACKING_BACK_SIGNED = u'寄回签收' |
|
| 61 |
+ |
|
| 57 | 62 |
user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True) |
| 58 | 63 |
|
| 59 | 64 |
name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'姓名') |
@@ -81,7 +86,7 @@ class MaintenaceInfo(BaseModelMixin): |
||
| 81 | 86 |
back_tracking_signed = models.BooleanField(_(u'back_tracking_signed'), default=False, help_text=u'寄回快递是否已签收') |
| 82 | 87 |
|
| 83 | 88 |
# 寄出运送中、已签收修理中、已修复寄回、寄回签收 |
| 84 |
- maintenance_status = models.CharField(_(u'maintenance_status'), max_length=8, default=u'寄出运送中', help_text=u'维修状态') |
|
| 89 |
+ maintenance_status = models.CharField(_(u'maintenance_status'), max_length=8, default=TRACKING_TO_DESPATCH, help_text=u'维修状态') |
|
| 85 | 90 |
maintenance_status_at = JSONField(_(u'maintenance_status_at'), blank=True, null=True, default={}, help_text=u'维修状态变更时间')
|
| 86 | 91 |
|
| 87 | 92 |
class Meta: |