logs = logs.filter(audit_status=ComplementCodeLogInfo.AUDIT_TODO) elif type_ == 'pass': logs = logs.filter(audit_status=ComplementCodeLogInfo.AUDIT_PASS) elif type_ == 'refused': logs = logs.filter(audit_status=ComplementCodeLogInfo.AUDIT_REFUSED) logs = logs.order_by('audit_status', '-pk') if query: logs = logs.filter(Q(phone=query) | Q(name__icontains=query) | Q(sn=query)) count = logs.count() logs, left = pagination(logs, page, num) logs = [log.data for log in logs] return response(200, 'Get Complement Code List Success', u'获取补码列表成功', data={ 'logs': logs, 'left': left, 'count': count }) @transaction.atomic def complement_code_audit(request): brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) admin_id = request.POST.get('admin_id', '') log_id = request.POST.get('log_id', '') audit_status = int(request.POST.get('audit_status', 0)) # -1 审核不通过, 1 审核通过 if brand_id != settings.KODO_DEFAULT_BRAND_ID: return response(ProductBrandStatusCode.BRAND_NOT_MATCH) try: administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) except AdministratorInfo.DoesNotExist: return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) if audit_status not in [ComplementCodeLogInfo.AUDIT_REFUSED, ComplementCodeLogInfo.AUDIT_PASS]: return response(ComplementCodeStatusCode.COMPLEMENT_CODE_STATUS_INVALID) try: log = ComplementCodeLogInfo.objects.select_for_update().get(log_id=log_id, status=True) except ComplementCodeLogInfo.DoesNotExist: return response(ComplementCodeStatusCode.COMPLEMENT_CODE_NOT_FOUND) if log.audit_status != ComplementCodeLogInfo.AUDIT_TODO: return response(ComplementCodeStatusCode.COMPLEMENT_CODE_HAS_AUDITED) log.audit_status = audit_status log.save() # 如果"审核通过" if log.audit_status == ComplementCodeLogInfo.AUDIT_PASS: try: brand = BrandInfo.objects.get(brand_id=brand_id) except BrandInfo.DoesNotExist: brand = None try: model = ModelInfo.objects.get(model_id=log.model_id) except ModelInfo.DoesNotExist: model = None # brand_id#model_id#distributor_id#sn#time # AAAA#AAAAAA#AAAAA#AAAAAAAAAAAAAA#180224 # brand_pk, model_pk, distributor_pk, sn, time = plaintext.split('#') plaintext = '{}#{}#{}#{}#{}'.format( brand.pk if brand else 0, model.pk if model else 0, 0, log.sn, tc.local_string(format='%Y%m%d')[2:], ) ciphertext = get_ciphertext(plaintext, admin_id, True) log.ciphertext = ciphertext log.save() try: user = UserInfo.objects.get(user_id=log.user_id, status=True) except UserInfo.DoesNotExist: return response() # Send template_message data = { "first": { "value": u'你的补码申请已通过,请点击消息绑定您的电子保修卡', "color": "#173177" }, "keyword1": { "value": log.name, "color": "#173177" }, "keyword2": { "value": log.model_name, "color": "#173177" }, "keyword3": { "value": log.sn, "color": "#173177" }, "remark": { "value": u'感谢您的使用', "color": "#173177" } } wxcfg = WECHAT.get('MINIAPP', {}) appid = wxcfg.get('appID') sendtemplatemessage(openid=user.openid, template_id=settings.TEMPLATE_ID_COMPLEMENT, data=data, miniappid=appid, minipagepath='/pages/register/consumer/consumer?q={}&marketcode=1'.format(ciphertext)) return response(data={ 'ciphertext': ciphertext, }) return response() @transaction.atomic def complement_code_contacted(request): brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID) admin_id = request.POST.get('admin_id', '') log_id = request.POST.get('log_id', '') is_contacted = int(request.POST.get('is_contacted', 0)) # 0 未联系, 1 已联系 if brand_id != settings.KODO_DEFAULT_BRAND_ID: return response(ProductBrandStatusCode.BRAND_NOT_MATCH) try: administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) except AdministratorInfo.DoesNotExist: return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) try: log = ComplementCodeLogInfo.objects.select_for_update().get(log_id=log_id, status=True) except ComplementCodeLogInfo.DoesNotExist: return response(ComplementCodeStatusCode.COMPLEMENT_CODE_NOT_FOUND) log.is_contacted = is_contacted log.save() return response() kodo - Gogs: Go Git Service

Nessuna descrizione

models.py 2.9KB

    # -*- coding: utf-8 -*- from django.conf import settings from django.db import models from django.utils.translation import ugettext_lazy as _ from django_models_ext import BaseModelMixin, SexModelMixin from shortuuidfield import ShortUUIDField class ScreenAdminInfo(BaseModelMixin): ACTIVATED = 1 DISABLED = 2 DELETED = 3 USER_STATUS_TUPLE = ( (ACTIVATED, u'已激活'), (DISABLED, u'已禁用'), (DELETED, u'已删除'), ) admin_id = ShortUUIDField(_(u'admin_id'), max_length=32, blank=True, null=True, help_text=u'大屏管理员唯一标识', db_index=True, unique=True) unionid = models.CharField(_(u'unionid'), max_length=32, blank=True, null=True, help_text=u'微信 Union ID', db_index=True) openid = models.CharField(_(u'openid'), max_length=32, blank=True, null=True, help_text=u'微信 Open ID', db_index=True) name = models.CharField(_(u'name'), max_length=8, blank=True, null=True, help_text=u'用户姓名') sex = models.IntegerField(_(u'sex'), choices=SexModelMixin.SEX_TUPLE, default=SexModelMixin.UNKNOWN, help_text=u'用户性别') nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户昵称') avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像') phone = models.CharField(_(u'phone'), max_length=11, blank=True, null=True, help_text=u'用户电话', db_index=True) country = models.CharField(_(u'country'), max_length=16, blank=True, null=True, help_text=u'用户国家') province = models.CharField(_(u'province'), max_length=16, blank=True, null=True, help_text=u'用户省份') city = models.CharField(_(u'city'), max_length=16, blank=True, null=True, help_text=u'用户城市') location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'用户地址') brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True) brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称') user_status = models.IntegerField(_(u'user_status'), choices=USER_STATUS_TUPLE, default=ACTIVATED, help_text=u'管理员状态', db_index=True) class Meta: verbose_name = _(u'ScreenAdminInfo') verbose_name_plural = _(u'ScreenAdminInfo') unique_together = ( ('brand_id', 'unionid', 'openid'), ) def __unicode__(self): return '%d' % self.pk @property def final_avatar(self): return self.avatar and self.avatar.replace(settings.QINIU_FILE_URL_BEFORE, settings.QINIU_FILE_URL_AFTER).replace(settings.QINIU_FILE_URL_BEFORE2, settings.QINIU_FILE_URL_AFTER) @property def data(self): return { 'admin_id': self.admin_id, 'nickname': self.nickname, 'avatar': self.final_avatar, }