def get(self, merchant_id):
        try:
            company_service, series_service = CompanyServices(self.db), WeddingCompanySeriesService(self.db)
            work_service = WeddingCompanyWorkService(self.db)

            company = company_service.get_company_by_id(merchant_id)
            company_gift = company_service.get_gift(company.Fuser_id,1).scalar()       #到店礼
            order_gift = company_service.get_gift(company.Fuser_id,2).scalar()       #订单礼

            works = work_service.query_work(order_by='Fcreate_time',merchant_id=company.Fuser_id)
            work_count = works.count()
            works = works.limit(6).offset(0)

            series = series_service.query_series(order_by='Fcreate_time',merchant_id=company.Fuser_id)
            series_count = series.count()
            recommend_series = series.limit(3).offset(0)
            series = series.limit(6).offset(0)

            #1.商户订单,2.套系订单 3.作品订单
            order_url = '/order/create/1/'+str(company.Fuser_id)+'/'+str(company.Fuser_id)
            self.echo('view/weddingcompany/merchant_detail.html',{
                'company':company,
                'order_gift':order_gift,
                'company_gift':company_gift,
                'works':works,
                'series':series,
                'series_count':series_count,
                'work_count':work_count,
                'recommend_series':recommend_series,
                'merchant_id':company.Fuser_id,
                'order_url':order_url
            })
        except Exception,e:
            self.captureException(*sys.exc_info())
Esempio n. 2
0
    def get(self,company_id,*args,**kwargs):

        company_service = CompanyServices(self.db)
        user_services = UserServices(self.db)
        company = company_service.get_company_by_id(company_id)
        user = user_services.get_user_by_id(company.Fuser_id)
        self.echo('ops/company/company_edit.html',{'company':company,'user':user})
Esempio n. 3
0
    def post(self, *args, **kwargs):
        self.get_paras_dict()
        self.qdict['merchant_id'], self.qdict[
            'user_id'] = self.current_user.get(
                'Fmerchant_id'), self.current_user.get('Fid')

        try:
            series_service = WeddingCompanySeriesService(self.db)

            series_service.add_series(**self.qdict)

            #更新公司最低价与最高价
            company_service = CompanyServices(self.db)
            company_service.update_range_price(
                self.current_user.get('Fmerchant_id'),
                WeddingCompanySeriesService(self.db),
                WeddingCompanyWorkService(self.db))

            #删除套系数量缓存
            self.delete_package_count(self.current_user.get('Fmerchant_id'))
            self.delete_essence()

            self.write(ujson.dumps({'stat': 'ok', 'info': '提交成功'}))

        except Exception, e:
            self.write(
                ujson.dumps({
                    'stat': 'error',
                    'info': '错误:' + e.message
                }))
            self.captureException(*sys.exc_info())
Esempio n. 4
0
    def post(self, work_id):
        try:
            work_service = WeddingCompanyWorkService()
            work_service.set_db(self.db)

            work_service.delete_work(work_id)

            #更新公司最低价与最高价
            company_service = CompanyServices(self.db)
            company_service.update_range_price(
                self.current_user.get('Fmerchant_id'),
                WeddingCompanySeriesService(self.db),
                WeddingCompanyWorkService(self.db))

            #删除套系数量缓存
            self.delete_product_count(self.current_user.get('Fmerchant_id'))

            self.write(ujson.dumps({'stat': 'ok', 'info': '提交成功'}))
        except Exception, e:
            self.write(
                ujson.dumps({
                    'stat': 'error',
                    'info': '错误:' + e.message
                }))
            self.captureException(*sys.exc_info())
Esempio n. 5
0
    def post(self, series_id):
        self.get_paras_dict()
        self.qdict['merchant_id'], self.qdict[
            'user_id'] = self.current_user.get(
                'Fmerchant_id'), self.current_user.get('Fid')

        try:
            series_service = WeddingDressSeriesService()
            series_service.set_db(self.db)

            series_service.update_series(series_id, **self.qdict)

            #更新公司最低价与最高价
            company_service = CompanyServices(self.db)
            company_service.update_range_price(
                self.current_user.get('Fmerchant_id'),
                WeddingDressSeriesService(self.db),
                WeddingDressWorkService(self.db))

            self.write(ujson.dumps({'stat': 'ok', 'info': '提交成功'}))
        except Exception, e:
            self.write(
                ujson.dumps({
                    'stat': 'error',
                    'info': '错误:' + e.message
                }))
            self.captureException(*sys.exc_info())
    def get(self):
        self.get_paras_dict()
        between_price = self.qdict.get('between_price','')
        area = self.qdict.get('area','')
        order = self.qdict.get('order','Fcreate_time')
        page = self.qdict.get('page',1)

        company_service = CompanyServices(self.db)
        location_service = LocationServices(self.db)
        series_service =  WeddingCompanySeriesService(self.db)
        try:
            query = company_service.get_companys_by_role('merchant_weddingcompany', **self.qdict)       #婚庆公司role_code: merchant_weddingcompany
            companys = self.get_page_data(query,page_size=PAGE_SIZE,page=page)
            areas = location_service.get_location_name_list(type='area',father_id=73)

            top_banner = self.get_banner('merchant_banner')

            self.echo('view/weddingcompany/merchant_list.html',{
                      'page_html':companys.render_admin_html_web(),
                      'companys':companys,
                      'company_count':companys.total,
                      'query_area':areas,
                      'query_price':_QUERY_PRICE,
                      'between_price':between_price,
                      'area':area,
                      'order':order,
                      'top_banner':top_banner
                      })
        except Exception,e:
            self.captureException(*sys.exc_info())
Esempio n. 7
0
    def get(self, company_id):
        if not company_id:
            return self.echo('view/login/404.html', layout='')

        company_db = CompanyServices(self.db)
        company = company_db.get_company_by_id(int(company_id))

        self.echo('ops/weixin/delete.html', {
            'company': company,
        })
Esempio n. 8
0
 def get(self,code = None,*args, **kwargs):
     self.company_service = CompanyServices(self.db)
     self.get_companys(code)
     page_html = ''
     if self.page_data:
         page_html = self.page_data.render_page_html()
     context={'page_data':self.page_data,'page_html':page_html,'code':code}
     if code == 'recommend':
         self.echo('ops/home/companys.html',context)
     else:
         self.echo('ops/company/company_list.html',context)
Esempio n. 9
0
    def get(self, name=None):
        company_db = CompanyServices(self.db)
        query = company_db.get_companys()

        if name:
            query = query.filter(Company.Fcompany_name.like("%" + name + "%"))

        page_data = self.get_page_data(query)
        self.echo('ops/weixin/list.html', {
            'name': name,
            'companies': page_data.result,
            'page_html': '',
        })
Esempio n. 10
0
 def post(self, company_id,*args, **kwargs):
     rsg = {
         'stat':'err',
         'msg':''
     }
     self.get_paras_dict()
     if not self.qdict.get('Fcompany_name') or not self.qdict.get('Fdetail_address') or not self.qdict.get('nick_name') \
             or not self.qdict.get('user_mobi'):
         rsg['msg'] = '不能为空!'
         return self.write(ujson.dumps(rsg))
     company_service = CompanyServices(self.db)
     company_service.update_company_by_id(company_id,**self.qdict)
     rsg['stat'] = 'ok'
     return self.write(ujson.dumps(rsg))
Esempio n. 11
0
 def get(self,company_id):
     rsg = {
         'stat':'err',
         'msg':''
     }
     try:
         company_service = CompanyServices(self.db)
         company_service.delete_company_by_id(company_id)
         rsg['stat'] = 'ok'
         return self.write(ujson.dumps(rsg))
     except Exception,e:
         if self.settings.get('debug'):
             self.write(str(e))
             raise e
         self.echo('apps_crm/404.html')
Esempio n. 12
0
 def post(self,mct_id):
     rsg = {'stat':'error','info':''}
     try:
         self.get_paras_dict()
         is_success,info = self.get_valid_args()
         if not is_success:
             rsg['info'] = info
             return self.write(ujson.dumps(rsg))
         company_service = CompanyServices(self.db)
         is_ok = company_service.create_login_account(mct_id,**self.qdict)
         if not is_ok:
             rsg['info'] = '添加不成功'
             return self.write(ujson.dumps(rsg))
     except Exception,e:
         print e
Esempio n. 13
0
class CompanyHandlerList(AdminBaseHandler):

    def get(self,code = None,*args, **kwargs):
        self.company_service = CompanyServices(self.db)
        self.get_companys(code)
        page_html = ''
        if self.page_data:
            page_html = self.page_data.render_page_html()
        context={'page_data':self.page_data,'page_html':page_html,'code':code}
        if code == 'recommend':
            self.echo('ops/home/companys.html',context)
        else:
            self.echo('ops/company/company_list.html',context)

    def get_companys(self,code = None):
        self.get_paras_dict()
        if code == '1':
            query = self.db.query(Company).filter(Company.Fdeleted == 1)
        else:
            query = self.company_service.get_companys(**self.qdict)
        self.page_data = self.get_page_data(query)

    def get_user_by_id(self,user_id):
        query = self.db.query(Users).filter(Users.Fdeleted==0,Users.Fid==user_id).scalar()
        return query
    def get(self, work_id):
        try:
            work_service, company_service = WeddingCompanyWorkService(self.db), CompanyServices(self.db)

            work, images = work_service.query_work(work_id=work_id).scalar(), work_service.query_work_images(work_id=work_id).all()

            recent_works = work_service.query_work(merchant_id=work.Fmerchant_id,order_by='Fcreate_time').limit(3).offset(0)
            company = company_service.get_company_by_uid(work.Fmerchant_id)  #公司信息
            company_gift = company_service.get_gift(work.Fmerchant_id,1).scalar()       #到店礼
            order_gift = company_service.get_gift(work.Fmerchant_id,2).scalar()       #y优惠
            #1.商户订单,2.套系订单 3.作品订单
            order_url = '/order/create/3/'+str(work_id)+'/'+str(company.Fuser_id)

            category = _WEDDING_COMPANY_CATEGORY.get(work.Fcategory) if _WEDDING_COMPANY_CATEGORY.get(work.Fcategory) else work.Fcategory
            color = _WEDDING_COMPANY_COLOR.get(work.Fcolor) if _WEDDING_COMPANY_COLOR.get(work.Fcolor) else work.Fcolor
            style = _WEDDING_COMPANY_STYLE.get(work.Fstyle) if _WEDDING_COMPANY_STYLE.get(work.Fstyle) else work.Fstyle

            self.echo('view/weddingcompany/work_detail.html',{
                'work':work,
                'images':images,
                'recent_works':recent_works,
                'company':company,
                'order_gift':order_gift,
                'company_gift':company_gift,
                'order_url':order_url,
                'category': category,
                'color': color,
                'style': style
            })
        except Exception,e:
            self.captureException(*sys.exc_info())
    def get(self, series_id):
        try:
            series_service, company_service = WeddingCompanySeriesService(), CompanyServices()
            series_service.set_db(self.db)
            company_service.set_db(self.db)

            series = series_service.query_series(series_id=series_id).scalar()
            images = series_service.query_series_images(series_id=series_id)
            recommend_series = series_service.query_series(order_by='Fcreate_time').limit(3).offset(0)

            conpany = company_service.get_company_by_uid(series.Fmerchant_id)           #公司信息
            company_gift = company_service.get_gift(series.Fmerchant_id,1).scalar()     #到店礼
            order_gift = company_service.get_gift(series.Fmerchant_id,2).scalar()       #订单礼
            #1.商户订单,2.套系订单 3.作品订单
            order_url = '/order/create/2/'+str(series_id)+'/'+str(conpany.Fuser_id)
            self.echo('view/weddingCompany/series_detail.html',{
                'series':series,
                'recommend_series':recommend_series,
                'company':conpany,
                'order_gift':order_gift,
                'company_gift':company_gift,
                'images':images,
                'order_url':order_url
            })

        except Exception, e:
            self.captureException(*sys.exc_info())
Esempio n. 16
0
    def get(self, company_id):
        if not company_id:
            return self.echo('view/login/404.html', layout='')

        company_db = CompanyServices(self.db)
        company = company_db.get_company_by_id(int(company_id))

        app_url = ''
        if company.Fapp_url:
            app_url = company.Fapp_url
        else:
            app_url = setting.WX_APP_URL + '/' + str(
                company.Fid)  #使用公司id作为app url的关键参数
            company_db.update_company_by_id(company.Fid, Fapp_url=app_url)

        app_token = ''
        if company.Fapp_token:
            app_token = company.Fapp_token
        else:
            uuid_str = uuid.uuid3(
                uuid.NAMESPACE_DNS,
                str(company.Fid) +
                str(company.Fuser_id))  #使用id+user_id生产uuid作为token
            app_token = str(uuid_str)
            app_token = app_token.replace('-', '')
            company_db.update_company_by_id(company.Fid, Fapp_token=app_token)

        self.echo('ops/weixin/detail.html', {
            'company': company,
            'app_url': app_url,
            'app_token': app_token,
        })
Esempio n. 17
0
 def post(self):
     rsp = {'stat': 'err', 'msg': ''}
     uid_mct = self.get_current_user().get('Fmerchant_id')
     self.get_paras_dict()
     del self.qdict['_xsrf']
     company_db = CompanyServices(self.db)
     # status, info = self.get_valid_args()
     # if not status:
     #     rsp['msg'] = info
     #     return self.write(rsp)
     if 'desc' in self.qdict:
         self.qdict['Fdescription'] = self.qdict.get('desc')
         del self.qdict['Fdescription']
     if not company_db.get_company_by_uid(uid_mct):
         company_db.create_company(uid_mct,
                                   self.qdict.get('Fcompany_name', ''),
                                   self.qdict.get('Fdetail_address', ''),
                                   self.qdict.get('Fphone', ''),
                                   self.qdict.get('Fmail', ''),
                                   **self.qdict)
     else:
         company_db.update_company_by_uid(uid_mct, **self.qdict)
     rsp['stat'] = 'ok'
     rsp['id'] = uid_mct
     cookies = ujson.loads(self.get_secure_cookie('loginuser'))
     if cookies['Fcompany_name'] != self.qdict['Fcompany_name']:
         cookies['Fcompany_name'] = self.qdict['Fcompany_name']
         self.set_secure_cookie('loginuser',
                                ujson.dumps(cookies),
                                expires_days=1)
     return self.write(ujson.dumps(rsp))
Esempio n. 18
0
    def post(self, company_id):
        rspDic = {}
        rspDic["stat"] = "ok"  #返回页面的字典,ok,fail
        rspDic["msg"] = ""

        if not company_id:
            rspDic["stat"] = "fail"
            rspDic["msg"] = u"公司不存在"
            return self.write(json.dumps(rspDic))

        try:
            company_db = CompanyServices(self.db)
            company = company_db.get_company_by_id(int(company_id))
            if company.Fmenu_codes:
                rspDic["stat"] = "fail"
                rspDic["msg"] = u"解除绑定前,请先解除菜单绑定!"
                return self.write(json.dumps(rspDic))

            dic_app = {}
            dic_app['Fapp_url'] = ''
            dic_app['Fapp_token'] = ''
            dic_app['Fapp_id'] = ''
            dic_app['Fapp_secret'] = ''

            company_db = CompanyServices(self.db)
            company_db.update_company_by_id(int(company_id), **dic_app)
        except Exception, e:
            rspDic["stat"] = "fail"
            rspDic["msg"] = u"微信删除失败"
Esempio n. 19
0
    def get(self, company_id=None):
        try:
            #获取输入参数
            query = self.request.query
            qdict = urlparse.parse_qs(query)
            print('AccessHandler get() qdict=' + str(qdict))

            if not qdict:
                print('qdict is null.')
                return

            if not company_id:
                print('company_id is null.')
                return

            #获取token
            company_db = CompanyServices(self.db)
            company = company_db.get_company_by_id(int(company_id))
            if not company:
                print('no user!')
                return

            #校验
            isFromWeixin = self.checkSignature(company.Fapp_token, **qdict)

            if isFromWeixin:  #匹配成功
                print('weixin check ok!')
                if qdict.has_key('echostr'):
                    self.write(qdict.get('echostr')[0])
                else:
                    self.write('')
            else:
                print('weixin check error!')
                self.write('[ERROR]not Weixin!')
        except Exception, e:
            e = sys.exc_info()[0](traceback.format_exc())
            print(e)

            print('weixin access error!')

            return
Esempio n. 20
0
 def get(self):
     uid_mct = self.get_current_user().get('Fmerchant_id')
     company_db = CompanyServices(self.db)
     company_info = company_db.get_company_by_uid(uid_mct)
     province_db = LocationServices(self.db)
     province = province_db.get_location_name_list('province')
     if not province:
         return self.write("t_province no data")
     if company_info:
         city, area = province_db.get_city_area_list(
             company_info.Fprovince, company_info.Fcity)
     else:
         city, area = province_db.get_city_area_list(province.first().Fid)
     return self.echo('crm/merchant/edit_info_py.html', {
         'company': company_info if company_info else {},
         'type_class': 'base_setting',
         'province': province,
         'city': city,
         'area': area
     },
                      layout='crm/common/base.html')
Esempio n. 21
0
    def get(self, company_id):
        if not company_id:
            return self.echo('view/login/404.html', layout='')

        company_db = CompanyServices(self.db)
        query = company_db.get_companys()
        query = query.filter(Company.Fid == int(company_id))
        company = query.scalar()

        #获取menu code对应的菜单名称
        wxService = WxService(self.db)
        company_menu_name = ''
        if company.Fmenu_codes:
            for code in company.Fmenu_codes.split(','):
                if len(code) > 0:
                    company_menu_name = company_menu_name + ',' + wxService.query_name_by_code(
                        code)
            company_menu_name = company_menu_name.strip(',')
        else:
            company.Fmenu_codes = ''

        #查询所有菜单
        wxService = WxService(self.db)
        menus = wxService.query_menus()
        for menu in menus:
            if menu.type == 'view':
                menu.url = setting.WX_APP_URL + menu.url
                print 'menu.url=' + menu.url
                if menu.is_common == 0:  #url中存在参数
                    menu.url = menu.url % (company.Fuser_id)

        self.echo(
            'ops/weixin/menu.html', {
                'error': '',
                'company': company,
                'company_menu_name': company_menu_name,
                'menus': menus,
                'page_html': '',
            })
Esempio n. 22
0
    def post(self, company_id):
        #界面参数解析
        self.get_paras_dict()

        rspDic = {}
        rspDic["stat"] = "ok"  #返回页面的字典,ok,fail
        rspDic["msg"] = ""

        if not company_id:
            rspDic["stat"] = "fail"
            rspDic["msg"] = u"公司不存在"
            return self.write(json.dumps(rspDic))

        try:
            dic_app = {}
            dic_app['Fapp_url'] = self.qdict.get('app_url')
            dic_app['Fapp_token'] = self.qdict.get('app_token')
            app_id = self.qdict.get('app_id')
            dic_app['Fapp_id'] = app_id.strip()
            app_secret = self.qdict.get('app_secret')
            dic_app['Fapp_secret'] = app_secret.strip()

            #check
            menuManager = MenuManager()
            access_Token = menuManager.getAccessToken(dic_app['Fapp_id'],
                                                      dic_app['Fapp_secret'])
            if access_Token.has_key('errcode'):
                rspDic["stat"] = "fail"
                rspDic["msg"] = u"验证失败"
            else:
                company_db = CompanyServices(self.db)
                company_db.update_company_by_id(int(company_id), **dic_app)
        except Exception, e:
            print e
            rspDic["stat"] = "fail"
            rspDic["msg"] = u"微信绑定失败"
Esempio n. 23
0
 def get(self,mct_id):
     permission_service = PermissionsServices(self.db)
     company_service = CompanyServices(self.db)
     permissions = permission_service.get_permissions()
     company_name = company_service.get_company_by_uid(mct_id).Fcompany_name
     self.echo('ops/company/accountable_create.html',{'permissions':permissions,'company_name':company_name})
Esempio n. 24
0
    def post(self, company_id=None):
        #获取输入参数
        print('AccessHandler post()')
        query = self.request.query
        qdict = urlparse.parse_qs(query)
        print('AccessHandler post() qdict=' + str(qdict))

        if company_id:
            print('company_id=' + str(company_id))
            #获取token
            company_db = CompanyServices(self.db)
            company = company_db.get_company_by_id(int(company_id))
            if not company:
                print('no company!')
                return

            #校验
            isFromWeixin = self.checkSignature(company.Fapp_token, **qdict)

            if not isFromWeixin:  #匹配不成功
                print('not match!')
                self.write('')
                return
        else:
            print('no company id')
            self.write('')
            return

        nonce = qdict.get('nonce')[0]
        request_data = str(self.request.body)
        print('request_data=' + request_data)

        request_xml = etree.fromstring(request_data)  #进行XML解析
        msgType = request_xml.find("MsgType").text
        fromUser = request_xml.find("FromUserName").text
        toUser = request_xml.find("ToUserName").text

        result_msg = ''
        print('msgType=' + msgType)
        if msgType == 'event':  #事件
            event = request_xml.find("Event").text  #获得事件内容
            print('event=' + event)
            if event == 'subscribe':  #关注事件
                result_msg = WX_MESSAGE.REPLY_TEXT % (
                    fromUser, toUser, int(time.time()),
                    unicode('欢迎关注%s!' % (company.Fcompany_name)))
            elif event == 'unsubscribe':  #取消关注事件
                result_msg = ''
                #???后台清理
            elif event == 'CLICK':  #菜单点击事件
                eventKey = request_xml.find("EventKey").text  #获得事件KEY值
                print('eventKey=' + eventKey)
                if eventKey == Constant.EVENT_CONTACT:  #联系我们
                    #读取联系信息
                    msgx_content = ''
                    if company.Fcompany_name:
                        msgx_content = msgx_content + u'名称:' + company.Fcompany_name + '\n'
                    if company.Faddress:
                        msgx_content = msgx_content + u'地址:' + company.Faddress + '\n'
                    if company.Fcontact:
                        msgx_content = msgx_content + u'联系人:' + company.Fcontact + '\n'
                    if company.Fphone:
                        msgx_content = msgx_content + u'电话:' + company.Fphone + '\n'
                    if company.Fqq:
                        msgx_content = msgx_content + u'QQ:' + company.Fqq + '\n'
                    if company.Fmail:
                        msgx_content = msgx_content + u'邮箱:' + company.Fmail
                    result_msg = WX_MESSAGE.REPLY_TEXT % (
                        fromUser, toUser, int(time.time()), msgx_content)
            elif event == 'VIEW':  #取消关注事件
                eventKey = request_xml.find("EventKey").text  #获得事件KEY值
                print('VIEW url=' + eventKey)
                #result_msg = WX_MESSAGE.REPLY_TEXT %(fromUser, toUser, int(time.time()), u'未绑定用户,请在菜单中进行绑定.')
                result_msg = nonce
        else:
            content = request_xml.find("Content").text  #获得用户所输入的内容
            result_msg = WX_MESSAGE.REPLY_TEXT % (
                fromUser, toUser, int(
                    time.time()), unicode('欢迎关注%s!' % (company.Fcompany_name)))

        self.write(result_msg)
Esempio n. 25
0
#encoding:utf-8
__author__ = 'binpo'

from common.base import BaseApiHandler
from services.series.series_services import SeriesServices
from services.company.company_services import CompanyServices

company_service = CompanyServices()
series_service = SeriesServices()


class SeriesQueryhandler(BaseApiHandler):
    def get(self, *args, **kwargs):
        pass


class SeriesDetailhandler(BaseApiHandler):
    def get(self, series_id, **kwargs):
        series_service.set_db(self.db)
        company_service.set_db(self.db)

        series = series_service.get_series_by_id(series_id)
        images = series_service.get_series_iamges_by_id(series_id)
        recommend_series = series_service.query_series(
            order_by='Fcreate_time').limit(3).offset(0)

        conpany = company_service.get_company_by_uid(
            series.Fmerchant_id)  #公司信息
        company_gift = company_service.get_gift(series.Fmerchant_id,
                                                1).scalar()  #到店礼
        order_gift = company_service.get_gift(series.Fmerchant_id,
Esempio n. 26
0
    def get(self, company_id, menu_code):
        if not company_id:
            return self.echo('view/login/404.html', layout='')

        error = u''
        company_db = CompanyServices(self.db)
        company = company_db.get_company_by_id(int(company_id))
        wxService = WxService(self.db)

        #获取当前menu code对应的菜单名称
        company_menu_name = ''
        if company.Fmenu_codes:
            for code in company.Fmenu_codes.split(','):
                if len(code) > 0:
                    company_menu_name = company_menu_name + ',' + wxService.query_name_by_code(
                        code)
            company_menu_name = company_menu_name.strip(',')

        #查询当前所有菜单
        menus = wxService.query_menus()

        try:
            wxService = WxService(self.db)
            error = u''

            company_db = CompanyServices(self.db)
            query = company_db.get_companys()
            query = query.filter(Company.Fid == int(company_id))
            company = query.scalar()

            menu_codes = ''
            if company.Fmenu_codes.find(menu_code) > -1:  #已绑定
                menu_codes = company.Fmenu_codes.replace(menu_code, '')
            else:
                menu_codes = company.Fmenu_codes

            #整理code顺序
            menu_codes_order = ''
            menus = wxService.query_menus()
            for menu in menus:
                if menu_codes.find(menu.code) > -1:
                    menu_codes_order = menu_codes_order + ',' + menu.code
            menu_codes = menu_codes_order.strip(',')

            #更新公众号菜单
            menuManager = MenuManager()
            dic_accessToken = menuManager.getAccessToken(
                company.Fapp_id, company.Fapp_secret)
            if len(menu_codes) == 0:  #
                menuManager.delMenu(dic_accessToken.get("access_token"))
            else:
                menus = wxService.query_menus()
                all_menu_str = wx_util.getMenuStr(menus, menu_codes,
                                                  company.Fuser_id)
                print("all_menu_str=" + all_menu_str)

                result = menuManager.refreshMenu(
                    dic_accessToken.get("access_token"), all_menu_str)
                if result <> 'ok':
                    error = u'绑定失败'
                    raise error

            #更新menu_codes
            if menu_codes <> company.Fmenu_codes:
                company_db.update_company_by_id(int(company_id),
                                                Fmenu_codes=menu_codes)

            #获取menu code对应的菜单名称
            company_menu_name = ''
            if menu_codes:
                for code in menu_codes.split(','):
                    if len(code) > 0:
                        company_menu_name = company_menu_name + ',' + wxService.query_name_by_code(
                            code)
                company_menu_name = company_menu_name.strip(',')
            else:
                company.Fmenu_codes = ''

            #查询所有菜单
            wxService = WxService(self.db)
            menus = wxService.query_menus()
            for menu in menus:
                if menu.type == 'view':
                    menu.url = setting.WX_APP_URL + menu.url
                    if menu.is_common == 0:  #url中存在参数
                        menu.url = menu.url % (company.Fuser_id)

            self.echo(
                'ops/weixin/menu.html', {
                    'error': error,
                    'company': company,
                    'company_menu_name': company_menu_name,
                    'menus': menus,
                    'page_html': '',
                })
        except Exception, e:
            e = sys.exc_info()[0](traceback.format_exc())
            print(e)

            self.echo(
                'ops/weixin/menu.html', {
                    'error': error,
                    'company': company,
                    'company_menu_name': company_menu_name,
                    'menus': menus,
                    'page_html': '',
                })