成语猜题小程序答题服务端源码

#答题
@csrf_exempt
def submitanswer(request):
    code=request.POST["code"]
    suboption=request.POST["suboption"]
    questionid=request.POST["questionid"]
    res=get_sessionkey_openid(code)
    openid=res[0]
    guserinfo=guser.objects.get(guser_openid=openid)
    questioninfo=idiom.objects.get(id=questionid)
    answerexist=answer_detail.objects.filter(answer_linkguser=openid)
    if answerexist:
        #取最近一条答题记录
        txinfo=answer_detail.objects.filter(answer_linkguser=openid).order_by("answer_time").last()
        if txinfo.answer_linkidiom==int(questionid):
            resdata={}
            resdata["result"]="norepeat"
            resdata=json.dumps(resdata)
            return HttpResponse(resdata,content_type="application/json")
        else:
            #校验金币是否足够每局100
            if guserinfo.guser_curgold>=100:
                #【答对处理逻辑】
                if suboption==questioninfo.idiom_lack:
                    #每局金币减少100
                    guserinfo.guser_curgold=guserinfo.guser_curgold-100
                    #闯关数+1
                    guserinfo.guser_pass+=1
                    #取倍数
                    mult=getmult(guserinfo.guser_continright)
                    #取翻倍
                    doublenum=getdouble()
                    #获取元宝
                    if guserinfo.guser_isblack==0:
                        #黑名单
                        yb=1
                        guserinfo.guser_curyb=guserinfo.guser_curyb+yb
                        guserinfo.guser_countyb=guserinfo.guser_countyb+yb
                    else:
                        #白名单调用获取元宝
                        yb=getyb(guserinfo.guser_pass)
                        guserinfo.guser_curyb=guserinfo.guser_curyb+yb*mult
                        guserinfo.guser_countyb=guserinfo.guser_countyb+yb*mult
                    
                    guserinfo.save()
                    #线程执行
                    nowtime=timeadd8()
                    res=1
                    subtask=threading.Thread(target=subanswertask, args=(openid,questionid,suboption,res,nowtime))
                    subtask.start()

                    goldbefore=guserinfo.guser_curgold+100
                    goldchange=-100
                    goldafter=guserinfo.guser_curgold
                    goldremark="答题金币"
                    goldtask=threading.Thread(target=golddetailtask, args=(openid,goldbefore,goldchange,goldafter,goldremark,nowtime))
                    goldtask.start()
                     
                    ybbefore=guserinfo.guser_curyb-yb*mult
                    ybchange=yb*mult
                    ybafter=guserinfo.guser_curyb
                    ybremark="答题"
                    ybtask=threading.Thread(target=ybdetailtask, args=(openid,ybbefore,ybchange,ybafter,ybremark,nowtime))
                    ybtask.start()
                    
                    resdata={}
                    resdata["result"]="success"
                    resdata["explain"]=questioninfo.idiom_explain
                    resdata["ybchange"]=yb
                    resdata["mult"]=mult
                    resdata["doublenum"]=doublenum
                    resdata=json.dumps(resdata)
                    return HttpResponse(resdata,content_type="application/json")
                #答错处理逻辑
                else:
                    #每局金币减少100
                    guserinfo.guser_curgold=guserinfo.guser_curgold-100
                    #闯关数-1
                    guserinfo.guser_pass-=1
                    #闯关数变为负数处理
                    if guserinfo.guser_pass<=0:
                        guserinfo.guser_pass=0
                    guserinfo.save()
                    #线程执行
                    nowtime=timeadd8()
                    res=0
                    subtask=threading.Thread(target=subanswertask, args=(openid,questionid,suboption,res,nowtime))
                    subtask.start()
                     
                    goldbefore=guserinfo.guser_curgold+100
                    goldchange=-100
                    goldafter=guserinfo.guser_curgold
                    goldremark="答题金币"
                    goldtask=threading.Thread(target=golddetailtask, args=(openid,goldbefore,goldchange,goldafter,goldremark,nowtime))
                    goldtask.start()
                     
                    ybbefore=guserinfo.guser_curyb
                    ybchange=0
                    ybafter=guserinfo.guser_curyb
                    ybremark="答题"
                    ybtask=threading.Thread(target=ybdetailtask, args=(openid,ybbefore,ybchange,ybafter,ybremark,nowtime))
                    ybtask.start()
                    
                    resdata={}
                    resdata["result"]="fail"
                    resdata["explain"]=questioninfo.idiom_explain
                    resdata=json.dumps(resdata)
                    return HttpResponse(resdata,content_type="application/json")
            else:
                resdata={}
                resdata["result"]="nogold"
                resdata=json.dumps(resdata)
                return HttpResponse(resdata,content_type="application/json")
    else:
        #校验金币是否足够每局100
        if guserinfo.guser_curgold>=100:
            #【答对处理逻辑】
            if suboption==questioninfo.idiom_lack:
                #每局金币减少100
                guserinfo.guser_curgold=guserinfo.guser_curgold-100
                #闯关数+1
                guserinfo.guser_pass+=1
                #取倍数
                mult=getmult(guserinfo.guser_continright)
                #取翻倍
                doublenum=getdouble()
                #获取元宝
                if guserinfo.guser_isblack==0:
                    #黑名单
                    yb=1
                    guserinfo.guser_curyb=guserinfo.guser_curyb+yb
                    guserinfo.guser_countyb=guserinfo.guser_countyb+yb
                else:
                    #白名单调用获取元宝
                    yb=getyb(guserinfo.guser_pass)
                    guserinfo.guser_curyb=guserinfo.guser_curyb+yb*mult
                    guserinfo.guser_countyb=guserinfo.guser_countyb+yb*mult
                
                guserinfo.save()
                #线程执行
                nowtime=timeadd8()
                res=1
                subtask=threading.Thread(target=subanswertask, args=(openid,questionid,suboption,res,nowtime))
                subtask.start()
                
                goldbefore=guserinfo.guser_curgold+100
                goldchange=-100
                goldafter=guserinfo.guser_curgold
                goldremark="答题金币"
                goldtask=threading.Thread(target=golddetailtask, args=(openid,goldbefore,goldchange,goldafter,goldremark,nowtime))
                goldtask.start()
                  
                ybbefore=guserinfo.guser_curyb-yb**mult
                ybchange=yb**mult
                ybafter=guserinfo.guser_curyb
                ybremark="答题"
                ybtask=threading.Thread(target=ybdetailtask, args=(openid,ybbefore,ybchange,ybafter,ybremark,nowtime))
                ybtask.start()
                
                resdata={}
                resdata["result"]="success"
                resdata["explain"]=questioninfo.idiom_explain
                resdata["ybchange"]=yb
                resdata["mult"]=mult
                resdata["doublenum"]=doublenum
                resdata=json.dumps(resdata)
                return HttpResponse(resdata,content_type="application/json")
            #答错处理逻辑
            else:
                #每局金币减少100
                guserinfo.guser_curgold=guserinfo.guser_curgold-100
                #闯关数-1
                guserinfo.guser_pass-=1
                #闯关数变为负数处理
                if guserinfo.guser_pass<=0:
                    guserinfo.guser_pass=0
                guserinfo.save()
                #线程执行
                nowtime=timeadd8()
                res=0
                subtask=threading.Thread(target=subanswertask, args=(openid,questionid,suboption,res,nowtime))
                subtask.start()
                
                goldbefore=guserinfo.guser_curgold+100
                goldchange=-100
                goldafter=guserinfo.guser_curgold
                goldremark="答题金币"
                goldtask=threading.Thread(target=golddetailtask, args=(openid,goldbefore,goldchange,goldafter,goldremark,nowtime))
                goldtask.start()
               
                ybbefore=guserinfo.guser_curyb
                ybchange=0
                ybafter=guserinfo.guser_curyb
                ybremark="答题"
                ybtask=threading.Thread(target=ybdetailtask, args=(openid,ybbefore,ybchange,ybafter,ybremark,nowtime))
                ybtask.start()
                
                resdata={}
                resdata["result"]="fail"
                resdata["explain"]=questioninfo.idiom_explain
                resdata=json.dumps(resdata)
                return HttpResponse(resdata,content_type="application/json")
        else:
            resdata={}
            resdata["result"]="nogold"
            resdata=json.dumps(resdata)
            return HttpResponse(resdata,content_type="application/json")

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

py编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值