コード例 #1
0
def set_lottery(qnid, hqrq, addnum):
    '''采用指定的摇号方案'''
    import mqsnaire
    QNOBJ = mdb.get_naire(qnid)
    cjje = mdb.catch_hq(hqrq).get('success')
    if not cjje:
        return {'error': '无行情数据'}
    t = dbFrame.transaction()
    try:
        if addnum > 0:
            dbFrame.update("QN_NAIRE",
                           vars=locals(),
                           where='QN_ID=$qnid',
                           NUM_LOTTERY=web.SQLLiteral("NUM_LOTTERY+%d" %
                                                      addnum))
            for x in xrange(1, addnum + 1):
                dbFrame.insert('QN_LOTTERY',
                               LT_ID=utils.get_keyword(),
                               QN_ID=qnid,
                               FS_ID=10000,
                               LOTTERY_NO=QNOBJ.NUM_LOTTERY + x)
        winno = cjje % (QNOBJ.NUM_LOTTERY + addnum) + 1
        mqsnaire.set_winaward(QNOBJ, winno, cjje, hqrq)
    except Exception, e:
        t.rollback()
        traceback.print_exc()
        return {'error': e}
コード例 #2
0
def getStateBusinessID(state):
    '''根据微信网页授权的url中的state参数获取业务数据ID。这里state是qnid,返回问卷的fsid'''
    #这个函数被mforweixin调用
    QNOBJ = mdb.get_naire(state)
    #有奖问卷或红包问卷发布人才能成为别人的引荐人,或问卷发布人是系统配置的营销人员
    import madmin
    return QNOBJ.FS_ID if QNOBJ and (QNOBJ.QN_TYPE in (1, 2) or QNOBJ.FS_ID
                                     in madmin.get_salers()) else 10000
コード例 #3
0
def replayQnaire(fromuser):
    qnid = web.config.app_configuration.get('sys:subnaire', '')  #设置问卷ID在关注时返回
    if qnid:
        QNOBJ = mdb.get_naire(qnid)
        if QNOBJ and QNOBJ.QN_STATUS == 2:
            FSOBJ = mdb.get_fans_byopenid(fromuser)
            ANOBJ = mdb.get_answer(QNOBJ.QN_ID, FSOBJ.FS_ID)
            if not ANOBJ:  #如果没参与过才发
                msg = getQsArticleBody(QNOBJ)
                delaySendMessage(fromuser, msg, 500)
コード例 #4
0
def replyClickMB3(fromuser):
    '''从模板创建问卷'''
    tps = json.loads(web.config.app_configuration.get('sys:qstemplate', '[]'))
    retval = []
    for x in tps:
        TPOBJ = mdb.get_naire(x)
        art = {
            "title": TPOBJ.QN_TITLE,
            "url": '',
            "description": TPOBJ.QN_SUMMARY,
            "picurl": ''
        }
        if TPOBJ.get('IMG1_URL'):
            art['picurl'] = '%s' % (TPOBJ.IMG1_URL)
        elif TPOBJ.get('SHARE_PICURL'):
            art['picurl'] = '%s' % (TPOBJ.SHARE_PICURL)
        art['url'] = mforweixin.get_mp_authurl("%s/newfromtp" % (HOST_NOS),
                                               TPOBJ.QN_ID)
        retval.append(art)
    return retval
コード例 #5
0
def testSendQnaire(qnid):
    #将指定问卷图文消息发送给695423523
    from models import mdb, mqsnaire
    msg = mqsnaire.getQsArticleBody(mdb.get_naire(qnid))
    print sendToMe(msg)
コード例 #6
0
def replyTextMessage(fromuser, content):
    '''解析收到的文本消息。允许管理员用户通过文字指令进行管理操作'''
    retval = ''
    content = content.encode('utf8')  #收到的消息字符串是unicode类型
    fsid = mdb.get_fsid_byopenid(fromuser)
    #测试号上允许访问扒问卷星的页面
    if wxcode == 'test' and fsid in web.config.app_configuration[
            'run:selfman'] and content.find('sojump.com') >= 0:
        wjid = formatting.get_sojump_id(content)
        qnid = 'sojump_' + wjid
        qnid = hashlib.md5(qnid).hexdigest()
        if mdb.get_naire(qnid):
            retval = '编号为 %s 的问卷已经有了!' % wjid
        else:
            # url = '%s/admin/bawj?fsid=%s&r=%s&wjid=%s'%(HOST_NOS,fsid,cacher_random_checker.genRandomValueForFSID(fsid),wjid)
            url = mforweixin.get_mp_authurl("%s/admin/bawj" % (HOST_NOS), wjid)
            retval = {
                "title": "扒问卷",
                "url": url,
                "description": "要扒问卷星的问卷吗?点我继续",
                "picurl": ""
            }
    #管理人员指令
    import madmin
    if not retval and fsid in madmin.get_administrators():
        if content == '?' or content == '?':
            retval = '1.当日实时答卷数\n2.预览抽奖\n3.昨日统计数据\n33.昨日结算\n4.按日统计数据的走势图\n5.营销推广管理\n6.本周答卷王\nC.从系统模板创建问卷\nD.查看调试数据'
        elif content == '1':  #1.当日实时答卷数
            today = datetime.datetime.today().strftime("%Y%m%d")
            countans = web.listget(
                dbFrame.select(
                    "QN_ANSWERS",
                    what="COUNT(*) CNT",
                    vars=locals(),
                    where="DATE_FORMAT(INPUT_TIME,'%Y%m%d')=$today").list(), 0,
                {}).get('CNT', 0)
            return '今日实时答卷数:%d' % countans
        elif content == '2':  #2.预览抽奖
            pushTask(previewLottery, fromuser, 0)
        elif content == '33':  #33.昨日结算\n
            pushTask(dailyWork,
                     (fromuser, formatting.date_add(-1).strftime("%Y%m%d")), 0)
        elif content == '3':  #3.昨日统计数据
            import madmin
            retval = '\n'.join([
                '%s: %s' % (key, val)
                for key, val in madmin.get_lastday_stat()
            ])
        elif content == '4':  #4.数据趋势图
            retval = {
                "title":
                "按日统计数据的走势图",
                "url":
                mforweixin.get_mp_authurl("%s/admin/chartdaily" % (HOST_NOS)),
                "description":
                "按日统计数据的走势图",
                "picurl":
                ""
            }
        elif content == '5':  #5.营销推广管理
            retval = {
                "title": "营销推广管理",
                "url":
                mforweixin.get_mp_authurl("%s/admin/mngmarket" % (HOST_NOS)),
                "description": "查看营销推广数据,支付推广报酬",
                "picurl": ""
            }
        elif content == '6':  #6.本周答卷王
            retval = []
            for idx, x in enumerate(mdb.stat_thisweek_coin(), 1):
                retval.append('%d. %s  %s' %
                              (idx, formatting.unAscSafeString(
                                  x.NICKNAME).encode('utf8'), x.CHG_AMOUNT))
            if not retval:
                retval = '无数据'
            else:
                retval = '\n'.join(retval)
        elif content.lower() == 'c':
            pass
        elif content.lower() == 'd':  #D.查看调试数据
            retval = {
                "title": "查看调试数据",
                "url": mforweixin.get_mp_authurl("%s/debug" % (HOST_NOS)),
                "description": "查看调试数据。已重新加载了系统配置数据。",
                "picurl": ""
            }
        elif content.startswith('black'):
            fsid = content.replace('black', '')
            if 'run:blacklist' not in web.config.app_configuration:
                web.config.app_configuration['run:blacklist'] = []
            if fsid:
                for x in fsid.split(','):
                    web.config.app_configuration['run:blacklist'].append(x)
            web.config.app_configuration['run:blacklist'] = list(
                set(web.config.app_configuration['run:blacklist']))
            retval = formatting.json_string(
                web.config.app_configuration['run:blacklist'])
        elif content.startswith('white'):
            fsid = content.replace('white', '')
            if 'run:blacklist' not in web.config.app_configuration:
                web.config.app_configuration['run:blacklist'] = []
            if fsid:
                for x in fsid.split(','):
                    if x in web.config.app_configuration['run:blacklist']:
                        web.config.app_configuration['run:blacklist'].remove(x)
            web.config.app_configuration['run:blacklist'] = list(
                set(web.config.app_configuration['run:blacklist']))
            retval = formatting.json_string(
                web.config.app_configuration['run:blacklist'])
    else:
        retval = decodeReceiveMessage(fromuser, fsid, content)
        if retval:
            return retval
        #不能解析粉丝发来的消息,先把【发达消息】发给粉丝
        pushTask(mforweixin.sendTextMessage,
                 (fromuser,
                  '没有搜索到有关[%s]的问卷。客服也可能在偷懒╯﹏╰,看看下面几篇文章吧,或许对您有用' % content))
        if wxcode == 'test':
            pushTask(mforweixin.sendTextMessage,
                     (fromuser, 'cSpmz_6G_PBkj7hqA8EYpdAXzqi-wD19aL29_wPSPwQ'),
                     2000)
        else:
            pushTask(mforweixin.sendMPNews,
                     (fromuser, 'cSpmz_6G_PBkj7hqA8EYpdAXzqi-wD19aL29_wPSPwQ'),
                     2000)
        #将粉丝发发来的消息转给我自己
        pushTask(madmin.sendToMe, ('{0}:{1}'.format(fsid, content), ))
        #按要求返回特定格式数据,消息便会发到客服
        retval = mforweixin.replyCustomerService(wxaccount.ORIGINAL_ID,
                                                 fromuser)
    return retval