def save_models(self): #获取保持对象 obj = self.new_obj obj.save() if obj is not None: bid_audit = obj bid_audit.auditor = self.user.username bid_audit.audiTime = timezone.now() user_profile_obj = bid_audit.applier #如果审核成功 if bid_audit.state == BitStatesUtils.STATE_AUDIT(): #给标添加状态信息 bid_request = bid_audit.bidRequestId bid_request.bidRequestState = BidConst.GET_BIDREQUEST_STATE_BIDDING() bid_request.note = bid_audit.remark #保存模型 bid_request.save() #给申请用户添加借款标状态 user_profile_obj.addState(BitStatesUtils.GET_OP_HAS_BIDREQUEST_PROCESS()) else: #审核失败,移出用户招标状态 user_profile_obj.removeState(BitStatesUtils.GET_OP_HAS_BIDREQUEST_PROCESS()) user_profile_obj.save() bid_audit.save()
def post(self, request): #// 检查, 得到借款信息 query = BidRequest.objects.filter(id=request.POST.get('bidRequestId')) loaner_bid_amount = Decimal(request.POST.get('amount')) #获取贷款款账户 loaner_account = Account.objects.get(userProfile=request.user) #如何借款信息存在 if query.exists(): #获得借款信息对象 bid_request = query.first() # 1,借款状态为招标中; 2,当前用户不是借款的借款人; 3,当前用户账户余额>=投标金额; 4,投标金额>=最小投标金额; 5,投标金额<=借款剩余投标金额; if bid_request.minBidAmount <= loaner_bid_amount \ and bid_request.bidRequestState == BidConst.GET_BIDREQUEST_STATE_BIDDING() \ and bid_request.createUser.userProfile.id != loaner_account.userProfile.id \ and loaner_account.usableAmount >= loaner_bid_amount \ and bid_request.getRemainAmount() >= loaner_bid_amount: # // 执行投标操作 # // 1, 创建一个投标对象; # 设置相关属性; bid_form = BidForm() bid_form.save(user=request.user, bid_request=bid_request, loaner_bid_amount=loaner_bid_amount) #2, 得到投标人账户, 修改账户信息; loaner_account.usableAmount = loaner_account.usableAmount - loaner_bid_amount loaner_account.freezedAmount = loaner_account.freezedAmount + loaner_bid_amount loaner_account.save() #// 3,生成一条投标流水; account_flow = AccountFlowForm() account_flow.save(loaner_account=loaner_account, loaner_bid_amount=loaner_bid_amount) # // 4, 修改借款相关信息; bid_request.bidCount = bid_request.bidCount + 1 bid_request.currentSum = bid_request.currentSum + loaner_bid_amount bid_request.save() #// 判断当前标是否投满: if bid_request.bidRequestAmount == bid_request.currentSum: # // 1, 修改标的状态;,满标一审 bid_request.bidRequestState = BidConst.GET_BIDREQUEST_STATE_APPROVE_PENDING_1( ) bid_request.save() #生成满标一审 self.createBrAuditHistory(bid_request=bid_request) print(bid_request.bids.all()) return HttpResponse('{"status":"success", "message":"投标成功"}', content_type='application/json') return HttpResponse('{"status":"failure", "message":"投标失败"}', content_type='application/json')
def get_investor_nums(self, year, month): # 统计借款人数 bid_request_query = BidRequest.objects.filter( (Q(bidRequestState=BidConst.GET_BIDREQUEST_STATE_PAYING_BACK()) | Q(bidRequestState=BidConst.GET_BIDREQUEST_STATE_BIDDING())) & Q(applyTime__month=month) & Q(applyTime__year=year)) if bid_request_query.exists(): return bid_request_query.count() else: return 0
def is_bidding(bidRequest): if bidRequest.bidRequestState == BidConst.GET_BIDREQUEST_STATE_BIDDING(): return True return False
def all_bid_request_objs(): query = BidRequest.objects.filter( bidRequestState=BidConst.GET_BIDREQUEST_STATE_BIDDING()) return query