#答题
@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")

成语猜题小程序答题服务端源码相关推荐

  1. 微云二手车运营版 公众号+小程序v1.1.20+微信小程序+抖音端源码安装教程

    系统包括PC+公众号+小程序v1.1.20+微信小程序+抖音小程序前端,使用前先在后台初始化下数据.播播资源网技术小编看了下说明是带PC端功能,但后台没找到设置的地方,不过公众号+小程序+抖音也够用了 ...

  2. 浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务)

    浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) 参考文章: (1)浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) (2)https://www.cnblogs.com/ ...

  3. 【微信小程序】小程序与服务端的http通信

    文章目录 搭建服务端 小程序 小程序与服务端通信 get请求 小程序向服务端发送数据 服务端接收小程序发送过来的数据 post请求 小程序向服务端发送数据 服务端接收小程序发送过来的数据 请求前后的状 ...

  4. 【程序源代码】共享充电桩小程序(服务端)

    " 关键字:小程序 共享 充电桩  "  正文: 共享充电桩小程序(服务端) 最近好多小伙伴问我,说:有没有什么好的后台管理的工程可以做小程序的服务使用啊,能不能给可以推荐啊.想学 ...

  5. 小程序PHP CGI,微信小程序php服务端nginx配置

    微信小程序php服务端nginx配置 微信小程序server端如果选择自己部署的话,可以选择java或者php的,为了省事我选择了php的,腾讯是用CodeIgniter框架做的demo,由于CI框架 ...

  6. 五子棋服务端程序java_9网上五子棋对战(java)服务端源码

    9网上五子棋对战(java)服务端源码 网上五子棋对战(java)服务端源码 /* 五子棋游戏是本人在学习java swing时写的一个程序,程序分两部分:服务器端和客户端.运行程序时先运行服务器端, ...

  7. 基于JAVA社区微服务平台小程序服务器端计算机毕业设计源码+系统+lw文档+部署

    基于JAVA社区微服务平台小程序服务器端计算机毕业设计源码+系统+lw文档+部署 基于JAVA社区微服务平台小程序服务器端计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 ...

  8. 新版WIFI小程序分销系统微信源码序WiFi大师版流量主搭建独立源码WiFi分销源码

    网传版本,未测试,新版WIFI大师v4.47小程序源码,WIFI分销系统带流量主和独立运行版. 更新内容: 1.后台更多板块列表新增分页 2.平台管理端图标优化 3.平台管理端新增平台统计 4.优化后 ...

  9. java毕业设计融呗智慧金融微资讯移动平台服务端源码+lw文档+mybatis+系统+mysql数据库+调试

    java毕业设计融呗智慧金融微资讯移动平台服务端源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计融呗智慧金融微资讯移动平台服务端源码+lw文档+mybatis+系统+my ...

最新文章

  1. 机器人暑假班招生推文_机器人兴趣班开学季
  2. 遍历json数组的常用方式
  3. hbase读写流程及缓存机制
  4. java cpu过高排查_涨薪秘籍:JAVA项目排查cpu负载过高
  5. 从基础到实践,一文带你看懂HashMap
  6. Keras-1 学习Keras,从Hello World开始
  7. 接口测试--获取动态参数进阶
  8. 已经到了退休年龄的城乡居民,可以一次性补交十五年的养老金吗?
  9. canvas绘图粒子扩散效果【原创】
  10. Java 基础 —— 注解
  11. Android usb audio录音(四)
  12. Redis系列四 Redis常见配置
  13. 详解修改BXP服务器IP地址的方法(转)
  14. 小米无线网卡linux驱动下载,Linux 下小米WIFI 的无线网卡驱动
  15. CNVD 与 CNNVD 的区别
  16. 服务器lsass系统错误,lsass.exe-系统错误,终结点格式无效 windows2003服务器出错
  17. Few-Shot Video Object Detection
  18. 2011年好莱坞大片索引
  19. 如何用css实现左右翻页效果图,如何利用CSS3实现3D翻书效果
  20. 破解Excel的宏密码

热门文章

  1. 使用DiskGenius给C盘扩展容量
  2. Android各种屏幕分辨率(VGA、HVGA、QVGA、WQVGA、WVGA、FWVGA) 详解 .
  3. 使用JQuery实现一个图书分类的一个效果
  4. Hadoop框架体系
  5. 图同构(graph isomorphism)算法(1)
  6. 网络常用 snmp oid
  7. linux附加组命令,如何从Linux命令行将用户添加到组
  8. Python使用turtle库 描绘小猪佩奇
  9. Java高级----List集合、Set集合、Map集合总结
  10. Java+SpringBoot+JSP实现在线心理评测与咨询系统