@@ -488,7 +488,7 @@ class UserInfo(BaseModelMixin, LensmanTypeBoolMixin): |
||
| 488 | 488 |
|
| 489 | 489 |
try: |
| 490 | 490 |
maintenance = MaintenancemanInfo.objects.get(brand_id=brand_id, user_id=self.user_id, status=True) |
| 491 |
- except SaleclerkInfo.DoesNotExist: |
|
| 491 |
+ except: |
|
| 492 | 492 |
maintenance = {}
|
| 493 | 493 |
|
| 494 | 494 |
maintenance_info = maintenance.data if maintenance else {}
|
@@ -0,0 +1,20 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+# Generated by Django 1.11.26 on 2020-06-02 08:50 |
|
| 3 |
+from __future__ import unicode_literals |
|
| 4 |
+ |
|
| 5 |
+from django.db import migrations, models |
|
| 6 |
+ |
|
| 7 |
+ |
|
| 8 |
+class Migration(migrations.Migration): |
|
| 9 |
+ |
|
| 10 |
+ dependencies = [ |
|
| 11 |
+ ('coupon', '0012_auto_20200413_1543'),
|
|
| 12 |
+ ] |
|
| 13 |
+ |
|
| 14 |
+ operations = [ |
|
| 15 |
+ migrations.AddField( |
|
| 16 |
+ model_name='usercouponinfo', |
|
| 17 |
+ name='admin_name', |
|
| 18 |
+ field=models.CharField(blank=True, db_index=True, help_text='\u6838\u9500\u5458\u540d\u79f0', max_length=255, null=True, verbose_name='admin_name'), |
|
| 19 |
+ ), |
|
| 20 |
+ ] |
@@ -79,6 +79,7 @@ class UserCouponInfo(BaseModelMixin): |
||
| 79 | 79 |
|
| 80 | 80 |
has_used = models.BooleanField(_(u'has_used'), default=False, help_text=u'是否已核销', db_index=True) |
| 81 | 81 |
admin_id = models.CharField(_(u'admin_id'), max_length=32, blank=True, null=True, help_text=u'核销员唯一标识', db_index=True) |
| 82 |
+ admin_name = models.CharField(_(u'admin_name'), max_length=255, blank=True, null=True, help_text=u'核销员名称', db_index=True) |
|
| 82 | 83 |
used_at = models.DateTimeField(_(u'used_at'), blank=True, null=True, help_text=u'维修券核销时间') |
| 83 | 84 |
is_coupon_admin_writeoff = models.BooleanField(_(u'is_coupon_admin_writeoff'), default=True, help_text=_(u'是否是管理员核销'), db_index=True) |
| 84 | 85 |
|
@@ -169,6 +170,7 @@ class UserCouponInfo(BaseModelMixin): |
||
| 169 | 170 |
'has_expired': self.has_expired, |
| 170 | 171 |
'has_used': self.has_used, |
| 171 | 172 |
'admin_id': self.admin_id, |
| 173 |
+ 'admin_name': self.admin_name, |
|
| 172 | 174 |
'used_at': self.used_at, |
| 173 | 175 |
'coupon_from': self.activity_name if self.coupon_from == 'PROMOTION' else self.coupon_from, |
| 174 | 176 |
'clerk_name': self.clerk_name, |
@@ -217,6 +217,21 @@ class RightInfo(BaseModelMixin): |
||
| 217 | 217 |
'left_num': 3, |
| 218 | 218 |
'left_tip': 3, |
| 219 | 219 |
} |
| 220 |
+ |
|
| 221 |
+ def maintaindata(self, level): |
|
| 222 |
+ right_detail = '' |
|
| 223 |
+ if level == 1: |
|
| 224 |
+ right_detail = self.level1 if self.level1 else '' |
|
| 225 |
+ elif level == 2: |
|
| 226 |
+ right_detail = self.level2 if self.level2 else '' |
|
| 227 |
+ elif level == 3: |
|
| 228 |
+ right_detail = self.level3 if self.level3 else '' |
|
| 229 |
+ elif level == 4: |
|
| 230 |
+ right_detail = self.level4 if self.level4 else '' |
|
| 231 |
+ elif level == 5: |
|
| 232 |
+ right_detail = self.level5 if self.level5 else '' |
|
| 233 |
+ |
|
| 234 |
+ return right_detail |
|
| 220 | 235 |
|
| 221 | 236 |
|
| 222 | 237 |
class ShotTypeInfo(BaseModelMixin): |
@@ -131,17 +131,7 @@ def query_userinfo(request): |
||
| 131 | 131 |
coupons = UserCouponInfo.objects.filter(user_id=user.user_id) |
| 132 | 132 |
coupons = [coupon.data for coupon in coupons] |
| 133 | 133 |
|
| 134 |
- right_detail = '' |
|
| 135 |
- if user.level == 1: |
|
| 136 |
- right_detail = right.level1 if right.level1 else '' |
|
| 137 |
- elif user.level == 2: |
|
| 138 |
- right_detail = right.level2 if right.level2 else '' |
|
| 139 |
- elif user.level == 3: |
|
| 140 |
- right_detail = right.level3 if right.level3 else '' |
|
| 141 |
- elif user.level == 4: |
|
| 142 |
- right_detail = right.level4 if right.level4 else '' |
|
| 143 |
- elif user.level == 5: |
|
| 144 |
- right_detail = right.level5 if right.level5 else '' |
|
| 134 |
+ right_detail = right.maintaindata(level=user.level) |
|
| 145 | 135 |
|
| 146 | 136 |
return response(200, 'UserInfo Success', u'获取用户信息成功', data={
|
| 147 | 137 |
'coupons': coupons, |
@@ -17,9 +17,10 @@ from account.models import UserInfo |
||
| 17 | 17 |
from coupon.models import UserCouponInfo |
| 18 | 18 |
from integral.models import SaleclerkIntegralIncomeExpensesInfo, SaleclerkSubmitLogInfo |
| 19 | 19 |
from logs.models import MchInfoEncryptLogInfo |
| 20 |
-from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo, SaleclerkInfo |
|
| 20 |
+from mch.models import BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, ModelInfo, SaleclerkInfo, MaintenancemanInfo |
|
| 21 | 21 |
from statistic.models import (DistributorSaleStatisticInfo, ModelSaleStatisticInfo, ProvinceSaleStatisticInfo, |
| 22 | 22 |
SaleclerkSaleStatisticInfo, SaleStatisticInfo) |
| 23 |
+from member.models import RightInfo |
|
| 23 | 24 |
from utils.error.errno_utils import (CouponStatusCode, ProductBrandStatusCode, ProductDistributorStatusCode, |
| 24 | 25 |
ProductMachineStatusCode, ProductModelStatusCode, SaleclerkStatusCode) |
| 25 | 26 |
|
@@ -429,6 +430,7 @@ def clerk_query_coupon(request): |
||
| 429 | 430 |
brandID = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_PK)
|
| 430 | 431 |
user_id = request.POST.get('user_id', '')
|
| 431 | 432 |
user_coupon_id = request.POST.get('user_coupon_id', '')
|
| 433 |
+ is_maintenance = int(request.POST.get('is_maintenance', 0))
|
|
| 432 | 434 |
|
| 433 | 435 |
try: |
| 434 | 436 |
user = UserInfo.objects.get(user_id=user_id, status=True) |
@@ -449,17 +451,31 @@ def clerk_query_coupon(request): |
||
| 449 | 451 |
return response(ProductBrandStatusCode.BRAND_NOT_FOUND) |
| 450 | 452 |
|
| 451 | 453 |
try: |
| 452 |
- clerk = SaleclerkInfo.objects.get(brand_id=brand.brand_id, unionid=user.unionid, status=True) |
|
| 453 |
- except SaleclerkInfo.DoesNotExist: |
|
| 454 |
- return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
| 455 |
- |
|
| 456 |
- try: |
|
| 457 | 454 |
user_coupon = UserCouponInfo.objects.get(user_coupon_id=user_coupon_id) |
| 458 | 455 |
except UserCouponInfo.DoesNotExist: |
| 459 | 456 |
return response(CouponStatusCode.COUPON_NOT_FOUND) |
| 457 |
+ |
|
| 458 |
+ right_detail = '' |
|
| 459 |
+ if is_maintenance: |
|
| 460 |
+ try: |
|
| 461 |
+ maintenance = MaintenancemanInfo.objects.get(brand_id=brand.brand_id, user_id=user.user_id, status=True) |
|
| 462 |
+ |
|
| 463 |
+ # 维修人工费 |
|
| 464 |
+ right = RightInfo.objects.get(right_id='X457xEV8KVxHQiTvhA7Dtf') |
|
| 465 |
+ member = UserInfo.objects.get(user_id=user_coupon.user_id) |
|
| 466 |
+ |
|
| 467 |
+ right_detail = right.maintaindata(level=member.level) |
|
| 468 |
+ except: |
|
| 469 |
+ return response(400001, 'MaintenancemanInfo Not Found', u'维修员不存在') |
|
| 470 |
+ else: |
|
| 471 |
+ try: |
|
| 472 |
+ clerk = SaleclerkInfo.objects.get(brand_id=brand.brand_id, clerk_phone=user.phone, status=True) |
|
| 473 |
+ except SaleclerkInfo.DoesNotExist: |
|
| 474 |
+ return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
| 460 | 475 |
|
| 461 | 476 |
return response(200, data={
|
| 462 |
- 'user_coupon': user_coupon.data |
|
| 477 |
+ 'user_coupon': user_coupon.data, |
|
| 478 |
+ 'right': right_detail |
|
| 463 | 479 |
}) |
| 464 | 480 |
|
| 465 | 481 |
|
@@ -468,6 +484,7 @@ def clerk_writeoff_coupon(request): |
||
| 468 | 484 |
brandID = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_PK)
|
| 469 | 485 |
user_id = request.POST.get('user_id', '')
|
| 470 | 486 |
user_coupon_id = request.POST.get('user_coupon_id', '')
|
| 487 |
+ is_maintenance = int(request.POST.get('is_maintenance', 0))
|
|
| 471 | 488 |
|
| 472 | 489 |
try: |
| 473 | 490 |
user = UserInfo.objects.get(user_id=user_id, status=True) |
@@ -486,30 +503,39 @@ def clerk_writeoff_coupon(request): |
||
| 486 | 503 |
brand = BrandInfo.objects.get(brand_id=brandID) |
| 487 | 504 |
except BrandInfo.DoesNotExist: |
| 488 | 505 |
return response(ProductBrandStatusCode.BRAND_NOT_FOUND) |
| 489 |
- |
|
| 490 |
- try: |
|
| 491 |
- clerk = SaleclerkInfo.objects.get(brand_id=brand.brand_id, unionid=user.unionid, status=True) |
|
| 492 |
- except SaleclerkInfo.DoesNotExist: |
|
| 493 |
- return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
| 494 |
- |
|
| 506 |
+ |
|
| 495 | 507 |
try: |
| 496 | 508 |
user_coupon = UserCouponInfo.objects.get(user_coupon_id=user_coupon_id) |
| 497 | 509 |
if user_coupon.has_used: |
| 498 | 510 |
return response(CouponStatusCode.COUPON_HAS_USED) |
| 499 |
- elif user_coupon.is_coupon_admin_writeoff: |
|
| 511 |
+ elif user_coupon.is_coupon_admin_writeoff and not is_maintenance: |
|
| 500 | 512 |
return response(CouponStatusCode.COUPON_PERMISSION_DENIED) |
| 501 |
- elif not user_coupon.has_expired: |
|
| 513 |
+ elif user_coupon.has_expired: |
|
| 514 |
+ return response(CouponStatusCode.COUPON_EXPIRED) |
|
| 515 |
+ except UserCouponInfo.DoesNotExist: |
|
| 516 |
+ return response(CouponStatusCode.COUPON_NOT_FOUND) |
|
| 517 |
+ |
|
| 518 |
+ user_coupon.has_used = True |
|
| 519 |
+ user_coupon.used_at = tc.utc_datetime() |
|
| 520 |
+ |
|
| 521 |
+ if is_maintenance: |
|
| 522 |
+ try: |
|
| 523 |
+ maintenance = MaintenancemanInfo.objects.get(brand_id=brand.brand_id, user_id=user.user_id, status=True) |
|
| 524 |
+ user_coupon.admin_id = maintenance.maintenance_id |
|
| 525 |
+ user_coupon.admin_name = maintenance.maintenance_name |
|
| 526 |
+ user_coupon.save() |
|
| 527 |
+ except: |
|
| 528 |
+ return response(400001, 'MaintenancemanInfo Not Found', u'维修员不存在') |
|
| 529 |
+ else: |
|
| 530 |
+ try: |
|
| 531 |
+ clerk = SaleclerkInfo.objects.get(brand_id=brand.brand_id, unionid=user.unionid, status=True) |
|
| 502 | 532 |
user_coupon.clerk_id = clerk.clerk_id |
| 503 | 533 |
user_coupon.clerk_name = clerk.clerk_name |
| 504 | 534 |
user_coupon.distributor_id = clerk.distributor_id |
| 505 | 535 |
user_coupon.distributor_name = clerk.distributor_name |
| 506 |
- user_coupon.has_used = True |
|
| 507 |
- user_coupon.used_at = tc.utc_datetime() |
|
| 508 | 536 |
user_coupon.save() |
| 509 |
- else: |
|
| 510 |
- return response(CouponStatusCode.COUPON_EXPIRED) |
|
| 511 |
- except UserCouponInfo.DoesNotExist: |
|
| 512 |
- return response(CouponStatusCode.COUPON_NOT_FOUND) |
|
| 537 |
+ except SaleclerkInfo.DoesNotExist: |
|
| 538 |
+ return response(SaleclerkStatusCode.CLERK_NOT_FOUND) |
|
| 513 | 539 |
|
| 514 | 540 |
return response(200, 'Write Off Coupon Success', u'劵核销成功') |
| 515 | 541 |
|