Esempio n. 1
0
    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()
Esempio n. 2
0
    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')
Esempio n. 3
0
 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
Esempio n. 4
0
def is_bidding(bidRequest):
    if bidRequest.bidRequestState == BidConst.GET_BIDREQUEST_STATE_BIDDING():
        return True
    return False
Esempio n. 5
0
def all_bid_request_objs():
    query = BidRequest.objects.filter(
        bidRequestState=BidConst.GET_BIDREQUEST_STATE_BIDDING())
    return query