39;-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 }) @check_admin @transaction.atomic def complement_code_audit(request, administrator): brand_id = request.POST.get('brand_id') or 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 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(UserStatusCode.USER_NOT_FOUND) # 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() @check_admin @transaction.atomic def complement_code_contacted(request, administrator): log_id = request.POST.get('log_id', '') is_contacted = int(request.POST.get('is_contacted', 0)) # 0 未联系, 1 已联系 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() @check_admin def administrator_list(request, administrator): page = request.POST.get('page', 1) num = request.POST.get('num', 20) admin_type = request.POST.get('admin_type', '') logs = AdministratorInfo.objects.filter(status=True).order_by('-created_at') if admin_type: logs = logs.filter(admin_type=admin_type) count = logs.count() logs, left = pagination(logs, page, num) logs = [log.admindata for log in logs] return response(200, 'Get Admin List Success', u'获取后台管理员成功', data={ 'logs': logs, 'left': left, 'count': count }) @check_admin def administrator_create(request, administrator): admin_type = request.POST.get('admin_type', '') phone = request.POST.get('phone', '') name = request.POST.get('name', '') password = request.POST.get('password', '') brand_name = request.POST.get('brand_name', '') if administrator.admin_type != AdministratorInfo.ADMINISTRATOR: return response(AdministratorStatusCode.ADMINISTRATOR_PERMISSION_DENIED) encryption = make_password(strip(password), settings.MAKE_PASSWORD_SALT, settings.MAKE_PASSWORD_HASHER) AdministratorInfo.objects.create( brand_id=administrator.brand_id, brand_name=brand_name or administrator.brand_name, admin_type=admin_type, phone=phone, name=name, password='', encryption=encryption, ) return response(200, 'Create Admin Success', u'创建后台管理员成功') @check_admin def administrator_update(request, administrator): target_admin_id = request.POST.get('target_admin_id', '') admin_type = int(request.POST.get('admin_type', -1)) phone = request.POST.get('phone', '') name = request.POST.get('name', '') password = request.POST.get('password', '') if administrator.admin_type != AdministratorInfo.ADMINISTRATOR: return response(AdministratorStatusCode.ADMINISTRATOR_PERMISSION_DENIED) target_admin = AdministratorInfo.objects.get(admin_id=target_admin_id, status=True) if admin_type != -1: target_admin.admin_type = admin_type if phone: target_admin.phone = phone if name: target_admin.name = name AdministratorLoginLogInfo.objects.filter(admin_id=target_admin_id).update(admin_name=name) if password: encryption = make_password(strip(password), settings.MAKE_PASSWORD_SALT, settings.MAKE_PASSWORD_HASHER) target_admin.encryption = encryption target_admin.save() return response(200, 'Update Admin Success', u'更新后台管理员成功') @check_admin def administrator_delete(request, administrator): target_admin_id = request.POST.get('target_admin_id', '') if administrator.admin_type != AdministratorInfo.ADMINISTRATOR: return response(AdministratorStatusCode.ADMINISTRATOR_PERMISSION_DENIED) AdministratorInfo.objects.filter(admin_id=target_admin_id).update(status=False) return response(200, 'Delete Admin Success', u'删除后台管理员成功') @check_admin def administrator_login_list(request, administrator): page = request.POST.get('page', 1) num = request.POST.get('num', 20) target_admin_id = request.POST.get('target_admin_id', '') if administrator.admin_type != AdministratorInfo.ADMINISTRATOR: return response(AdministratorStatusCode.ADMINISTRATOR_PERMISSION_DENIED) logs = AdministratorLoginLogInfo.objects.filter(status=True).order_by('-login_at') if target_admin_id: logs = logs.filter(admin_id=target_admin_id) count = logs.count() logs, left = pagination(logs, page, num) logs = [log.admindata for log in logs] return response(200, 'Get Administrator Login List Success', u'获取后台管理员登录日志成功', data={ 'logs': logs, 'left': left, 'count': count }) Kodo/kodo - Gogs: Go Git Service

137 Commits (137ed6dee2e6506477ff1c3fd8fd3ca8e3aec00c)

Auteur SHA1 Bericht Datum
  Brightcells 61590ecb17 Fix Bug: admin remove itself from a group 10 jaren geleden
  Brightcells f5a460140f Fix Bug: get flag of whether user has thumbup or not error 10 jaren geleden
  Brightcells 454f8cd8ec change some info store in redis & remove some unnecessary params check & add some return for some api 10 jaren geleden
  Brightcells 78e4e238a7 GroupUserInfo.user_status == GroupUserInfo.DELETED & error status code 10 jaren geleden
  Brightcells 90515dc878 update comment_num and thumbup_num in api comment_submit_api/thumbup_submit_api/thumbup_cancel_api 10 jaren geleden
  Brightcells 1bc6cf2a73 add update group_avatar 10 jaren geleden
  Brightcells f7d159714f Fix Bug: PAI2_HOME_API error 10 jaren geleden
  Brightcells 17a826bc1b add status filter for GroupPhotoInfo query 10 jaren geleden
  Brightcells deeabd58a2 change 'nickname=nickname or user.final_nickname' in api flyimg_upload_api 10 jaren geleden
  Brightcells 5a05032918 modify order ruler to by DATE(created_at) desc 10 jaren geleden
  Brightcells 88049b12db store/return more field for photo 10 jaren geleden
  Brightcells ca727b0362 store/return w/h for photo 10 jaren geleden
  Brightcells f6a88c632b add group_default_avatar field for GroupInfo 10 jaren geleden
  Brightcells e50a206d29 add pagination for pai2_home_api 10 jaren geleden
  Brightcells da2a81fff1 add api pai2_home 10 jaren geleden
  Brightcells 7d85bed0b0 move errno_utils.py/response_utils.py into error file 10 jaren geleden
  Brightcells 7a17d0fb90 add api wxpay & add redis relative 10 jaren geleden
  Brightcells 62aff0cb2f move status code into errno_utils.py to unified management 10 jaren geleden
  Brightcells 0786f22bad order_by('-pk') replace of order_by('-created_at') 10 jaren geleden
  Brightcells 30daca135b add api message_list_api/message_type_list_api/message_read_api 10 jaren geleden
  Brightcells 03561aaa5f modify api comment_submit_api/comment_list_api 10 jaren geleden
  Brightcells c72d89f6e5 add api comment_submit_api/comment_list_api/thumbup_submit_api/thumbup_list_api/thumbup_cancel_api 10 jaren geleden
  Brightcells df1df69fe3 add api upgrade/splash 10 jaren geleden
  Brightcells 814ed79bfc add api group_unlock_api 10 jaren geleden
  Brightcells 1c25788dbf add group_name for group_create_api 10 jaren geleden
  Brightcells 4afdb94e20 add avatar for GroupUserInfo 10 jaren geleden
  Brightcells 5ef425fee7 add api wx_authorize_api 10 jaren geleden
  Brightcells d3798a39f1 update session_detail_api 10 jaren geleden
  Brightcells ce10db91f9 thumbnail_utils make_thumb 10 jaren geleden
  Brightcells f587f0a48f user can just see photo after he joined the group & zh_Hans replace zh_CN in settings.py 10 jaren geleden
  Brightcells 42df840f43 return current_id for api flyimg_upload/flyimg_list 10 jaren geleden
  Brightcells 9077a53317 return next_id for api flyimg_upload/flyimg_list 10 jaren geleden
  Brightcells f58bde298b add api flyimg_upload/flyimg_list 10 jaren geleden
  Brightcells 7fd74ed1e4 add group_join_api direct pass 10 jaren geleden
  Brightcells 7467a3e68a add api group_update/group_remove 10 jaren geleden
  Brightcells 7e305483ab add api group_detail/group_lock/group_pass/group_refuse 10 jaren geleden
  Brightcells e184e7dd5b add api group_create/group_join 10 jaren geleden