def put(self, request): user = request.current_user if not user.is_admin: # 仅限超级用户修改 return make_response(code=Msg.NO_DATA, status=403) serializer = MeInEditSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data id = data["id"] business_id = data.get("businessId", None) name = data.get("name", None) path = data.get("path", None) try: menu = Menu.objects.get(code=id) business = None if business_id: business = Business.objects.get(code=business_id) menu.name = name if name else menu.name menu.path = path if path else menu menu.business = business if business else menu.business menu.visible = data.get("visible", menu.visible) menu.save() return make_response() except Menu.DoesNotExist: return make_response(code=Msg.MENU_NOT_EXIST, status=400) except Business.DoesNotExist: return make_response(code=Msg.BUSINESS_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def get(self, request): serializer = MeInSerializer(data=request.GET) if serializer.is_valid(): data = serializer.validated_data page, count, id, name, path = \ data["page"], data["count"], data.get( "businessId"), data.get("name"), data.get("path") factory = query_dict(id, name, path) menu = Menu.objects.filter(**factory) total = menu.count() menu = menu.order_by("-create_time")[(page - 1) * count:page * count] return make_response( data={ "result": [{ "name": i.name, "path": i.path, "id": str(i.code), "businessId": str(i.business.code), "businessName": i.business.name, "visible": i.visible } for i in menu], "total": total }) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def post(self, request): user = request.current_user if not user.is_admin: # 仅限超级用户添加 return make_response(code=Msg.NO_DATA, status=403) serializer = AddMeIntSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data try: biz = Business.objects.get(code=data["businessId"]) menu = Menu( name=data["name"], path=data["path"], creator=user, business=biz, code=str(uuid1()).replace("-", ""), visible=data["visible"], ) menu.save() return make_response() except Business.DoesNotExist: return make_response(code=Msg.BUSINESS_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def put(self, request): user = request.current_user if not user.is_admin: # 仅限超级用户修改 return make_response(code=Msg.NO_DATA, status=403) serializer = EditIntSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data id = data["id"] business_id = data.get("businessId", None) try: interface = Interface.objects.get(code=id) name = data.get("name", interface.name) path = data.get("path", interface.path) method = data.get("method", interface.method) business = None if business_id: business = Business.objects.get(code=business_id) interface.name = name interface.path = path interface.method = method interface.business = business if business else interface.business interface.visible = data.get("visible", interface.visible) interface.save() return make_response() except Interface.DoesNotExist: return make_response(code=Msg.INTERFACE_NOT_EXIST, status=400) except Business.DoesNotExist: return make_response(code=Msg.BUSINESS_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def put(self, request): serializer = MerSysSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data try: mer = Merchant.objects.get(code=data["id"]) # 先清空当前用户的所有分配系统和域名 mer.business.clear() Domain.objects.filter(merchant__code=data["id"]).delete() domains = [] for i in data["system"]: biz = Business.objects.get(code=i["businessId"]) mer.business.add(biz) if Domain.objects.filter(domain=i["domain"]): return make_response(code=Msg.DOMAIN_ALREADY_EXIST, status=400) domains.append( Domain(domain=i["domain"], business=biz, merchant=mer, creator=request.current_user, code=str(uuid1()).replace("-", ""))) for i in domains: i.save() mer.save() return make_response() except Merchant.DoesNotExist: return make_response(code=Msg.MERCHANT_NOT_EXIST, status=400) except Business.DoesNotExist: return make_response(code=Msg.BUSINESS_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def post(self, request): serializer = UserAdditionSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data try: merchant = Merchant.objects.get(code=data["merchantId"]) mobile = data["mobile"] if User.objects.filter(mobile=mobile): return make_response(code=Msg.MOBILE_USED, status=400) user = User( mobile=mobile, name=data.get("name"), sex=data.get("sex"), wechat=data.get("wechat"), qq=data.get("qq"), mail=data.get("mail"), address=data.get("address"), merchant=merchant, code=str(uuid1()).replace("-", ""), ) user.generate_password("123456") user.save() return make_response() except Merchant.DoesNotExist: return make_response(code=Msg.MERCHANT_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def get(self, request): serializer = BaseSerializer(data=request.GET) if serializer.is_valid(): id = serializer.validated_data['id'] user = request.current_user try: business = Business.objects.get(code=id) # 判断用户是否有访问此业务系统的权限 if not user.is_admin and user.merchant not in business.merchant.all( ): return make_response(code=Msg.NO_DATA, status=403) return make_response( data={ "interface": [{ "id": str(i.code), 'name': i.name, } for i in Interface.objects.filter(business=business, visible=True)], "menu": [{ "id": str(i.code), "name": i.name, "path": i.path } for i in Menu.objects.filter(business=business, visible=True)] }) except Business.DoesNotExist: return make_response(code=Msg.BUSINESS_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def post(self, request): serializer = AddRoleSerializer(data=request.data) if serializer.is_valid(): user = request.current_user data = serializer.validated_data name = data["name"] business_id = data["businessId"] interface = data["interface"] menu = data["menu"] factor = {"business__code": business_id} if user.merchant: factor.update({"merchant__code": user.merchant.code}) factor.update({"name": name}) if Role.objects.filter(**factor): return make_response(code=Msg.ROLE_NAME_ALREADY_EXIST, status=400) try: biz = Business.objects.get(code=business_id) role = Role(name=name, creator=user, merchant=user.merchant, business=biz, code=str(uuid1()).replace("-", "")) role.save() return role_insert(role, interface, menu) except Business.DoesNotExist: return make_response(code=Msg.BUSINESS_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, status=400)
def get(self, request): user = request.current_user appid = request.META.get("HTTP_APPID", None) try: biz = Business.objects.get(appid=appid) roles = user.roles.all() menus = [i.menu.all() for i in roles] menus = [j for i in menus for j in i] if user.is_admin: menus = Menu.objects.all() return make_response( data={ "name": user.name, "merchantId": str(user.merchant.code) if user.merchant else None, "merchantName": user.merchant.name if user.merchant else None, "menu": [{ "id": str(i.code), "name": i.name, "path": i.path } for i in menus], "businessName": biz.name, "businessId": str(biz.code) }) except Business.DoesNotExist: return make_response(code=Msg.BUSINESS_NOT_EXIST, status=400)
def upload_file(request): """ 图片上传 :param request: :return: """ if request.method == "POST": try: image = request.FILES.get("image") if not image: return make_response(code=Msg.NO_DATA, status=400) name = str(uuid1()).replace("-", "") filename = "images/{}.jpg".format(name) with open(settings.MEDIA_ROOT + "/" + filename, "wb+") as f: for chunk in image.chunks(): f.write(chunk) return make_response( data={ "url": "//" + request.META["HTTP_HOST"] + settings.MEDIA_URL + filename }) except Exception as e: logging.warning(str(e)) return make_response(code=Msg.UPLOAD_IMG_FAILED) return make_response(status=405)
def get(self, request): serializer = BizSerializer(data=request.GET) if serializer.is_valid(): data = serializer.validated_data page = data["page"] count = data["count"] name = data.get("name") user = request.current_user factory = {} if name: factory.update({"name__contains": name}) if not user.is_admin: factory.update({"merchant__code": user.merchant.code}) business = Business.objects.filter( **factory).order_by("-create_time") total = business.count() business = business[(page - 1) * count:page * count] return make_response( data={ "result": [{ "id": str(i.code), "name": i.name, "appid": i.appid, "status": i.status } for i in business], "total": total }) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def put(self, request): serializer = BizEditSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data id = data["id"] name = data.get("name", None) appid = data.get("appid", None) try: business = Business.objects.get(code=id) if appid and business.appid: # 如果该业务系统的 appid 已经存在 return make_response(code=Msg.APPID_ALREADY_EXIST, status=400) # 业务系统不允许重名 if name: # 查询一下这个 name 存不存在 biz = Business.objects.filter(name=name) if biz and biz[0].name != business.name: return make_response( code=Msg.BUSINESS_NAME_ALREADY_EXIST, status=400) business.name = name if name else business.name business.appid = str(uuid4()).replace( "-", "") if appid else business.appid business.save() return make_response() except Business.DoesNotExist: return make_response(code=Msg.BUSINESS_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def get(self, request): serializer = AuthSerializer(data=request.GET) if serializer.is_valid(): data = serializer.validated_data page = data["page"] count = data["count"] name = data.get("name") user = request.current_user # superuser 用户查询所有的用户 factory = {"active": True, "is_admin": False} if name: factory.update({"name__contains": name}) if not user.is_admin: # 商户用户只能看到除自己以外的用户 factory.update({"merchant__code": user.merchant.code}) users = User.objects.filter(~Q(code=user.code), **factory).order_by("-create_time") total = users.count() users = users[(page - 1) * count:page * count] data = [] for i in users: res = { "id": str(i.code), "name": i.name, "mobile": i.mobile, "merchantName": i.merchant.name if i.merchant else None, "merchantId": str(i.merchant.code) if i.merchant else None } businesses = {} roles = i.roles.all() for role in roles: # 获取角色对应的业务 id 和业务名 business_id = role.business.code business_name = role.business.name if business_id in businesses: businesses[business_id][1].append({ "id": str(role.code), "name": role.name }) else: businesses[business_id] = [ business_name, [{ "id": str(role.code), "name": role.name }] ] res.update({ "businesses": [{ "id": str(k), "name": v[0], "roles": v[1] } for k, v in businesses.items()] }) data.append(res) return make_response(data={"result": data, "total": total}) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def put(self, request): serializer = ResetPasswordSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data try: manager = Manager.objects.get(code=data["manager_code"]) manager.generate_password("123456") manager.save() return make_response() except Manager.DoesNotExist: return make_response(code=Msg.MANAGER_NOT_EXISTS, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def get(self, request): serializer = QueryMerSerializer(data=request.GET) if serializer.is_valid(): data = serializer.validated_data page, count, name, production = \ data["page"], data["count"], data.get( "name", None), data.get("production", None) factor = {"name__contains": name} if name else {} factor.update( {"production__contains": production} if production else {}) merchant = Merchant.objects.filter( **factor).order_by("-create_time") total = merchant.count() return make_response( data={ "result": [{ "id": str(i.code), "name": i.name, "production": i.production, "logo": i.logo, "ibaLoanName": i.iba_loan_name, "ibaLoanNo": i.iba_loan_no, "ibaCollectionName": i.iba_collection_name, "ibaCollectionNo": i.iba_collection_no, "ibaPreDepositName": i.iba_pre_deposit_name, "ibaPreDepositNo": i.iba_pre_deposit_no, "orgNo": i.org_no, "domains": [{ "businessId": str(j.business.code), "businessName": str(j.business.name), "domain": j.domain, "domainId": str(j.code) } for j in i.domains.all()] } for i in merchant[(page - 1) * count:page * count]], "total": total }) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def role_insert(role, interface, menu): try: for i in interface: inter = Interface.objects.get(code=i) role.interface.add(inter) for i in menu: me = Menu.objects.get(code=i) role.menu.add(me) role.save() return make_response() except Interface.DoesNotExist: return make_response(code=Msg.INTERFACE_NOT_EXIST, status=400) except Menu.DoesNotExist: return make_response(code=Msg.MENU_NOT_EXIST, status=400)
def decorator(*args, **kwargs): token = args[1].META.get("HTTP_JWT", None) if token is None: return make_response(code=Msg.NO_DATA, status=401) manager = manager_token_verify(token) if manager == "EXPIRED": return make_response(code=Msg.TOKEN_EXPIRATION, status=401) elif manager == "INVALID": return make_response(code=Msg.INVALID_TOKEN, status=401) elif manager == "NOT_EXIST": return make_response(code=Msg.MANAGER_NOT_EXISTS, status=401) # 为 request 修改默认 user 属性 args[1].current_user = manager return func(*args, **kwargs)
def put(self, request): serializer = ForgetPasswordSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data verify_code = data["verify_code"] phone = data["phone"] try: manager = Manager.objects.get(phone=phone) #调短信验证 if verify_code =="0": return make_response() except Manager.DoesNotExist: return make_response(code=Msg.MANAGER_NOT_EXISTS, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def put(self, request): serializer = UserActivationSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data try: user = User.objects.get(code=data["id"]) user.active = data["status"] user.save() return make_response() except User.DoesNotExist: return make_response(code=Msg.USER_NOT_EXISTS, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def delete(self, request): serializer = BaseSerializer(data=request.GET) if serializer.is_valid(): id = serializer.validated_data["id"] try: role = Role.objects.get(code=id) # 删除角色 # 判断用户是否有此角色 role.delete() return make_response() except Role.DoesNotExist: return make_response(code=Msg.PARAMS_ERROR) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def delete(self, request): user = request.current_user if not user.is_admin: return make_response(code=Msg.NO_DATA, status=403) serializer = BaseSerializer(data=request.GET) if serializer.is_valid(): try: menu = Menu.objects.get(code=serializer.validated_data["id"]) menu.delete() return make_response() except Menu.DoesNotExist: return make_response(code=Msg.MENU_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def get(self, request): serializer = AllMerRole(data=request.GET) if serializer.is_valid(): user = request.current_user merchant_code = serializer.validated_data["merchantId"] business = Business.objects.filter(merchant__code=merchant_code) data = {} if user.is_admin: for i in business: data[(str(i.code), i.name)] = [] for j in i.roles.all(): data[(str(i.code), i.name)].append({ "id": str(j.code), "name": j.name }) else: for i in business: data[(str(i.code), i.name)] = [] for j in i.roles.all(): if j.merchant: data[(str(i.code), i.name)].append({ "id": str(j.code), "name": j.name }) return make_response( data={ "business": [{ "id": k[0], "name": k[1], "roles": v } for k, v in data.items()] })
def put(self, request): serializer = ManagerEditSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data try: manager = Manager.objects.get(code=data["manager_code"]) manager.name=data.get("name",manager.name) manager.sex=data.get("sex",manager.sex) manager.address=data.get("address",manager.address) manager.id_img=data.get("id_img",manager.id_img) manager.head_img=data.get("head_img",manager.head_img) manager.save() return make_response() except Manager.DoesNotExist: return make_response(code=Msg.MANAGER_NOT_EXISTS, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def get(self, request): manager = request.current_user contractlist = Contract.objects.filter(manager=manager) sum =0 for i in contractlist: sum+=i.commission return make_response(data={"result" : sum })
def put (self, request): """ 修改信息 """ print(request.data) serializer = ManagerInfoSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data print(data.get("address")) manager =request.current_user manager.address = data.get("address", manager.address) manager.id_img = data.get("id_img", manager.id_img) manager.head_img = data.get("head_img", manager.head_img) manager.save() return make_response() return make_response(code=Msg.PARAMS_ERROR, msg = serializer.errors ,status=400 )
def put(self, request): serializer = ModifyPasswordSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data old_password = data["oldPassword"] new_password = data["newPassword"] manager = request.current_user if manager.verify_password(old_password): manager.generate_password(new_password) manager.save() token = request.META.get("HTTP_JWT", None) redis_conn.delete(token) return make_response() return make_response(code=Msg.OLD_PASSWORD_ERROR, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def put(self, request): serializer = AcBizSerializer(data=request.data) if serializer.is_valid(): data = serializer.validated_data id = data["id"] status = data["status"] try: business = Business.objects.get(code=id) business.status = status business.save() return make_response() except Business.DoesNotExist: return make_response(code=Msg.BUSINESS_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def get(self, request): serializer = InquireSreializer(data=request.GET) if serializer.is_valid(): user = request.current_user merchant_id = user.merchant.code if user.merchant else None data = serializer.validated_data page, count, id, name = data["page"], data["count"], data.get( "businessId", None), data.get("name", None) # 超级用户获取所有的 role, 而其余用户获取当前业务系统的 role factory = {} if id: factory.update({"business__code": id}) if name: factory.update({"name__contains": name}) if not user.is_admin: factory.update({"merchant__code": merchant_id}) roles = Role.objects.filter(**factory).order_by("-create_time") total = roles.count() roles = roles[(page - 1) * count:page * count] return make_response( data={ "result": [{ "id": str(i.code), "name": i.name, "businessId": str(i.business.code), "businessName": i.business.name, "creator": i.creator.name, "interface": [{ "id": str(j.code), "path": j.path } for j in i.interface.all()], "menu": [{ "id": str(j.code), "path": j.path } for j in i.menu.all()] } for i in roles], "total": total }) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def delete(self, request): user = request.current_user if not user.is_admin: # 仅限超级用户删除 return make_response(code=Msg.NO_DATA, status=403) serializer = BaseSerializer(data=request.GET) if serializer.is_valid(): try: interface = Interface.objects.get( code=serializer.validated_data["id"]) interface.delete() return make_response() except Interface.DoesNotExist: return make_response(code=Msg.INTERFACE_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)
def put(self, request): serializer = EditMerDomain(data=request.data) if serializer.is_valid(): data = serializer.validated_data if Domain.objects.filter(~Q(code=data["id"]), domain=data["domain"]): return make_response(code=Msg.DOMAIN_ALREADY_EXIST, status=400) try: do = Domain.objects.get(code=data["id"]) do.domain = data["domain"] do.save() return make_response() except Domain.DoesNotExist: return make_response(code=Msg.DOMAIN_NOT_EXIST, status=400) return make_response(code=Msg.PARAMS_ERROR, msg=serializer.errors, status=400)