def POST(self): params = self.req.inputjson() # 获取customer_id customer_id = None try: customer_id = self.get_cid() except: if self.check_ip(): cid = hids.decode(params.get('cid')) customer_id = cid[0] if cid else None if not customer_id: raise SessionError('用户未登录') # 消费者进行认证 # 将更新商户member_tag if params.get('mode') == 'submit': userids = hids.decode(params.get('userid')) if userids: self.add_tag(userids[0], customer_id, 'submit', MemDefine.MEMBER_SRC_SUBMIT) fields = ['nickname', 'cname', 'mobile', 'birthday'] update_data = {i: params[i] for i in fields if params.get(i)} if 'birthday' in update_data: profile = get_profile(customer_id) if profile['birthday']: raise ParamError('已经设置了生日信息') # 更新消费者信息 if update_data: thrift_callex(config.OPENUSER_SERVER, QFCustomer, 'profile_update', customer_id, tcProfile(**update_data)) return success({})
def GET(self): d = {k: v.strip() for k, v in self.req.input().iteritems()} data = {} # userid try: data['mchnt_id'] = hids.decode(d['mchnt_id'])[0] except: data['mchnt_id'] = int(d.get('mchnt_id') or 0) # customer_id try: data['customer_id'] = hids.decode(d['customer_id'])[0] except: if self.customer.customer_id: data['customer_id'] = self.customer.customer_id else: raise SessionError('消费者未登录') # groupid groupid = d.get('groupid') if is_valid_int(groupid): data['groupid'] = groupid # 分页信息 page, pagesize = d.get('page', 0), d.get('pagesize', 10) if not all(map(is_valid_int, (pagesize, page))): raise ParamError('分页信息错误') data['offset'], data['limit'] = int(page) * int(pagesize), int( pagesize) # 获取列表 r, total_num = self.card_list(data) return self.write(success({'cards': r, 'total_num': total_num}))
def GET(self): cids = self.req.input().get('customer_id') or '' cids = [cid for cid in cids.split(',') if cid.strip()] customer_ids = [] for cid in cids: if cid.strip(): try: customer_ids.append(hids.decode(cid)[0]) except: pass if not customer_ids: return self.write(success({'info': []})) infos = [] try: spec = json.dumps({'user_id': customer_ids}) profiles = thrift_callex(config.OPENUSER_SERVER, OpenUser, 'get_profiles', config.OPENUSER_APPID, spec) profiles = {i.user_id: i.__dict__ for i in profiles} except: log.warn('get openuser_info error:%s' % traceback.format_exc()) for customer_id in customer_ids: if customer_id in profiles: profile = profiles[customer_id] info = { i: profile[i] or '' for i in ('avatar', 'gender', 'nickname') } info['gender'] = info['gender'] or 3 info['customer_id'] = hids.encode(customer_id) infos.append(info) return self.write(success({'info': infos}))
def GET(self): if not self.customer.is_login(): raise SessionError('登录以后才可以使用!') customer_id = self.customer.customer_id code = self.req.input().get('code') if not code: raise ParamError('未能获取二维码') decode = hids.decode(code) if not decode: raise ParamError('解析二维码失败') cb_id = decode[0] # 查询数据库 status = {} with get_connection('qf_marketing') as db: status = db.select_one(table='coupon_bind', fields='status, customer_id', where={ 'id': cb_id, 'customer_id': customer_id }) if not status: raise ParamError('没能获取到券的状态') return self.write(success(status))
def _(self, *args, **kwargs): userid = int(self.user.userid) params = self.req.input() if params.has_key("shopid"): shopid = params.get("shopid", '') if not shopid: raise ParamError("商户id参数错误") try: shopid = hids.decode(shopid)[0] except: raise ParamError("商户id参数错误") # 验证是否是当前商户的子商户 cate = self.get_cate() if cate == "bigmerchant": subids = get_linkids(userid) if shopid not in subids: raise ParamError("非大商户的子商户") else: userid = shopid ret = func(self, userid) return ret
def _trans_input(self): d = {k:v.strip() for k, v in self.req.input().iteritems()} log.info('d:%s' % d) r = {} try: r['customer_id'] = hids.decode(d.get('customer_id'))[0] except: if self.customer.customer_id: r['customer_id'] = self.customer.customer_id else: r['customer_id'] = -1 r['mode'] = d.get('mode', '') r['userid'] = d.get('userid', '') if is_valid_int(d.get('groupid')): r['groupid'] = d.get('groupid') if r['mode'] not in ('info', 'list'): raise ParamError('请求参数错误') elif r['mode'] == 'info': r['userid'] = int(r['userid']) elif r['mode'] == 'list': r['mchnt_id'] = int(d.get('mchnt_id') or 0) if r['customer_id'] == -1: raise ParamError('消费者id不正确') page, pagesize = d.get('page', 0), d.get('pagesize', 10) if not all(map(is_valid_int, (pagesize, page))): raise ParamError('分页信息错误') r['offset'], r['limit'] = int(page)*int(pagesize), int(pagesize) return r
def get_input_userid(self): cate = self.get_cate() if cate == 'bigmerchant': params = self.req.input() if params.get('userid'): userid = int(params['userid']) elif params.get('enuserid'): userid = hids.decode(params['enuserid']) if not userid: raise ParamError('商户不存在') else: userid = userid[0] else: return int(self.user.userid) link_ids = self.get_link_ids() if userid not in link_ids: raise ParamError('商户不存在') return userid else: return int(self.user.userid)
def GET(self): ret = {} tmp = [] d = self.validator.data mode = d['mode'] page = d['page'] pagesize = d['pagesize'] userid = d.get('userid') if not userid: userid = int(self.user.userid) else: userid_tuple = hids.decode(userid) if userid_tuple: userid = userid_tuple[0] else: if not userid.isdigit(): raise ParamError('用户编号不存在') log.debug('decoded userid={}'.format(userid)) # 操作员登录,返回空列表 if 'opuid' in self.user.ses: ret['opusers'] = [] return self.write(success(ret)) # 判断分页显示或者全部显示,根据status筛选 other = 'order by create_time desc limit {limit} offset {offset}'.format( limit=pagesize, offset=pagesize * page) if mode == 'all': other = 'order by create_time desc' where = {'userid': userid} # 获取商户下操作员 opusers = [] with get_connection('qf_core') as db: opusers = db.select(table='opuser', where=where, fields='opname, opuid, perms', other=other) for opuser in opusers: result = {} source_opuid = opuser['opuid'] prefix = (4 - len(str(source_opuid))) * '0' result['opuid'] = prefix + str(source_opuid) try: perms = json.loads(opuser['perms']) refund = perms.get('refund', 0) except: refund = 0 result['refund'] = refund result['opname'] = opuser['opname'] tmp.append(result) ret['opusers'] = tmp return self.write(success(ret))
def GET(self): default_info = { 'nickname': '微信支付顾客', 'avatar': config.HJ_AVATAR, 'gender': 3, 'num': 0, 'txamt': 0, 'last_txdtm': '' } d = self.req.inputjson() userid = int(self.user.userid) customer_id = None if d.get('customer_id'): try: customer_id = hids.decode(d['customer_id'])[0] except: if is_valid_int(d['customer_id']): customer_id = int(d['customer_id']) # 如果包含openid elif d.get('openid'): customer_id = thrift_call(OpenUser, 'get_user_id_by_openid', config.OPENUSER_SERVER, config.OPENUSER_APPID, d['openid']) if customer_id <= 0: return self.write(success(default_info)) # 获取消费者信息 r = get_member_info(customer_id) or {} member = {} with get_connection('qf_mchnt') as db: member = db.select_one('member', where={ 'userid': userid, 'customer_id': customer_id }) or {} info = {} info['nickname'] = r.get('nickname') or default_info['nickname'] info['avatar'] = r.get('avatar') or default_info['avatar'] info['gender'] = r.get('gender') or default_info['gender'] info['num'] = member.get('num') or default_info['num'] info['txamt'] = member.get('txamt') or default_info['txamt'] info['last_txdtm'] = (tstamp_to_str(member['last_txdtm']) if 'last_txdtm' in member else default_info['last_txdtm']) # 如果是储值交易 # 获取储值信息 if d.get('busicd', '').startswith('7'): balance = self.get_balance(userid, customer_id) if balance is not None: info['balance'] = balance return self.write(success(info))
def get_customer_id(self): '''获取customer_id''' try: customer_id = hids.decode(self.req.input().get('customer_id'))[0] except: if self.customer.customer_id: customer_id = self.customer.customer_id else: raise ParamError('消费者不存在') return customer_id
def get_sub_list(self, params): ret = {'shops': [], 'total_num': 0} # 大商户userid big_uid = hids.decode(params.get('code')) if not big_uid: return success(ret) big_uid = big_uid[0] # 子商户userid relates = apcli_ex('getUserRelation', int(big_uid), 'merchant') or [] link_ids = [i.userid for i in relates] ret['total_num'] = len(relates) limit, offset = self.get_pageinfo() link_ids = link_ids[offset:offset + limit] if not link_ids: return success(ret) users = apcli_ex('findUserBriefsByIds', link_ids) or [] user_dict = {user.uid: user.__dict__ for user in users} user_exts = apcli_ex('getUserExts', link_ids) or [] user_ext_dict = {i.uid: i.__dict__ for i in user_exts} shops = [] for link_id in link_ids: tmp = {} user = user_dict.get(link_id, {}) tmp['shopname'] = user.get('shopname', '') tmp['mobile'] = user.get('mobile', '') tmp['address'] = user.get('address', '') tmp['enuserid'] = hids.encode(link_id) user_ext = user_ext_dict.get(link_id, {}) tmp['head_img'] = user_ext.get('head_img', '') tmp['logo_url'] = user_ext.get('logo_url', '') if not tmp['head_img']: tmp['head_img'] = get_qd_conf_value_ex(groupid=user.get( 'groupid' or 0), mode='default_head_img', key='ext') or '' if not tmp['logo_url']: tmp['logo_url'] = get_qd_conf_value_ex(groupid=user.get( 'groupid', 0), mode='default_logo_url', key='ext') or '' shops.append(tmp) ret['shops'] = shops return success(ret)
def get_submit_profile(self, customer_id): profile = get_profile(customer_id) ret = {} for field in ('nickname', 'cname', 'mobile', 'birthday'): ret[field] = profile[field] or '' tags = [] data = self.req.inputjson() userids = hids.decode(data.get('userid')) if userids: tags = self.get_tags(customer_id, userids[0]) ret['submit'] = int('submit' in tags) return success(ret)
def get_mchnt_id_list(self, mchnt_id_list, aid=None): ''' 获取mchnt_id_list''' userid = int(self.user.userid) if self.get_cate() != 'bigmerchant': return json.dumps([str(userid)]) mchnt_id_list = [i for i in mchnt_id_list if i] # 获取适用门店列表 link_ids = apcli.userids_by_linkid(userid, 'merchant') link_ids = {i.userid for i in link_ids} if not mchnt_id_list: mchnt_ids = link_ids else: mchnt_ids = set() for i in mchnt_id_list: try: mchnt_ids.add(hids.decode(i)[0]) except: pass if mchnt_ids - link_ids: raise ParamError('包含了非自己的子商户') with get_connection_exception('qf_mchnt') as db: userids = list(mchnt_ids) + [userid] actvs = db.select('card_actv', where={ 'expire_time': ('>', int(time.time())), 'userid': ('in', userids) }, fields='userid, mchnt_id_list, id') for actv in actvs: if aid == actv['id']: continue try: uids = json.loads(actv['mchnt_id_list']) uids = {int(i) for i in uids} except: uids = set() onuids = uids & mchnt_ids if onuids: mchnt = apcli_ex('findUserBriefsByIds', [list(onuids)[0]]) or [] shopname = mchnt[0].shopname if mchnt else '' raise ParamError('{}等子商户有正在进行的集点活动'.format(shopname)) return json.dumps([str(i) for i in mchnt_ids])
def get_userid(self, params): userid = None if params.get('enuserid'): userids = hids.decode(params['enuserid']) or [ None, ] userid = userids[0] elif is_valid_int(params.get('userid')): userid = int(params['userid']) if not userid: raise ParamError('商户不存在') return userid
def GET(self): userid = hids.decode(self.req.input().get('userid')) if not userid: raise ParamError('商户userid为空') userid = userid[0] data = self.validator.data limit = data['pagesize'] offset = data['page'] * data['pagesize'] ret = {} ret['shops'] = self.get_shops(userid, offset, limit) ret['shop_num'] = self._shop_num return self.write(success(ret))
def _trans_input(self): d = {k:v.strip() for k, v in self.req.input().iteritems()} # 活动id r = {'id' : d.get('id', '')} if not is_valid_int(r['id']): raise ParamError('活动id不合法') try: r['customer_id'] = hids.decode(d.get('customer_id'))[0] except: if self.customer.customer_id: r['customer_id'] = self.customer.customer_id else: raise ParamError('消费者id不正确') return r
def check_customer(self, mobile): ''' 消费者补充会员休息 ''' enuserid = self.req.input().get('enuserid') if enuserid: try: userid = hids.decode(enuserid)[0] except: if not is_valid_int(enuserid): return userid = int(enuserid) user = apcli('findUserBriefById', userid) if user: self._groupid = user.groupid
def GET(self): params = self.req.input() groupid = None if 'userid' in params: groupid = self.get_groupid(userid=params['userid']) elif 'enuserid' in params: userid = hids.decode(params['enuserid']) if userid: groupid = self.get_groupid(userid=userid) else: if self.check_login(): groupid = self.get_groupid() return self.write(success({'is_baipai': self.is_baipai(groupid)}))
def POST(self): userid = int(self.user.userid) params = self.req.input() if not params.get('encid'): raise ParamError(self._base_err) encode = params.get('encid').lstrip(self.MEMBER_PRE_CODE) customer_id, tstmp = hids.decode(encode) limit = getattr(config, 'ADD_MEMBER_LIMIT', 30) if time.time()- tstmp > limit: raise ParamError('二维码过期了') is_new = self.be_member(userid, customer_id) return success({ 'is_new': is_new, 'customer_id': hids.encode(customer_id) })
def get_code_info(self, code): code_info = hids.decode(code) if len(code_info) < 2: raise ParamError('核销失败,兑换码不存在!') code_type, code_id = code_info[:2] if code_type != CodeDef.DW_CODE: raise ParamError('核销失败,兑换码不存在!') with get_connection_exception('qf_marketing') as db: code_info = db.select_one('verify_coupon', where={'id': code_id}) if not code_info: raise ParamError('核销失败,兑换码不存在!') if (code_info['status'] not in (CodeDef.DW_STATUS_CREATE, CodeDef.DW_STATUS_BIND)): raise ParamError('核销失败,兑换码已被使用') actv_info = db.select_one('activity_verify', where={'id': code_info['activity_id']}) try: mchnt_id_list = json.loads(actv_info['mchnt_id_list']) mchnt_ids = set(map(int, mchnt_id_list)) except: mchnt_ids = [] now = datetime.datetime.now() if now > actv_info['expire_time']: raise ParamError('核销失败, 兑换码已过期') if now < actv_info['start_time']: raise ParamError('核销失败, 请在{}至{}兑换'.format( str(actv_info['start_time']), str(actv_info['expire_time']))) if int(self.user.userid) not in mchnt_ids: raise ParamError('核销失败, 该兑换码不能在该店核销') return code_info
def POST(self): # 转化input参数 d = {k: v.strip() for k, v in self.req.input().iteritems()} code = d.get('code') or '' try: data = {} data['userid'], data['customer_id'], data['out_sn'], data[ 'txamt'], data['total_amt'] = hids.decode(code) data['src'] = d.get('src') or 'query' except: raise ParamError('参数错误') data['out_sn'] = str(data['out_sn']) # query actv, customer, overdue = self._query(data) return success({ 'actv': actv or {}, 'customer_info': customer or {}, 'overdue': overdue })
def POST(self): # 获取参数 d = {k: v.strip() for k, v in self.req.input().iteritems()} code = d.get('code') or '' try: data = {} data['userid'], data['customer_id'], data['out_sn'], data[ 'txamt'], data['total_amt'], data['orig_out_sn'] = hids.decode( code) except: raise ParamError('参数错误') data['out_sn'] = str(data['out_sn']) data['orig_out_sn'] = str(data['orig_out_sn']) # cancel r = (self._cancel(data) or { 'cancel_pt': 0, 'activity_id': '0', 'card_id': 0 }) return success(r)
def GET(self): where = {'status': CODE_STATUS_EXCHANGED} params = self.req.input() if is_valid_int(params.get('id')): where['id'] = int(params['id']) elif 'code' in params: try: code = params['code'] encode = code[len(self.pre_code):] code, actv_id, code_id = hids.decode(encode) code = '{:0>4d}'.format(code) where['id'] = code_id except: raise ParamError('兑换码不存在') else: raise ParamError('兑换码不存在') with get_connection_exception('qf_mchnt') as db: r = db.select_one('exchange_record', where=where) return success({'exchanged': int(bool(r))})
def POST(self): params = self.req.inputjson() code = params.get('code') if code.startswith(self.pre_code): encode = code[len(self.pre_code):] code, actv_id, code_id = hids.decode(encode) code = '{:0>4d}'.format(code) else: actv_id = params.get('id') if not is_valid_int(actv_id): raise ParamError('活动不存在') actv_id = int(actv_id) # 检查活动 actv = self.check_allow_query(actv_id) # 检查兑换码 if (not is_valid_int(code) or len(code) != 4 or not int(code)): raise ParamError('兑换码错误,请确认') with get_connection_exception('qf_mchnt') as db: # 获取兑换码信息 records = db.select('exchange_record', where={ 'activity_id': actv_id, 'code': int(code) }) if not records: raise ParamError('兑换码错误,请确认') # 查看兑换码的状态 codes = {} for i in records: codes[i['status']] = i if codes.get(CODE_STATUS_CREATE): code_info = codes[CODE_STATUS_CREATE] cid = code_info['customer_id'] elif codes.get(CODE_STATUS_EXCHANGED): raise ParamError('兑换失败,此码不可重复使用') else: raise ParamError('兑换码错误,请确认') # 查询消费者信息 member = db.select_one('member_pt', where={ 'activity_id': actv_id, 'customer_id': cid }) if not member: raise ParamError('消费者不存在') if actv['exchange_pt'] > member['cur_pt']: raise ParamError('兑换码信息错误') # 更新兑换信息 self.exchange(actv, member, code_info) # 推送 self.trade_push(actv, member, code_info) return self.write(success({}))
def POST(self): userid = self.user.userid # 验证兑换码 code = self.req.input().get('code') de_code = hids.decode(code) if not de_code: raise ParamError('兑换码不存在') cb_id = de_code[0] # 获取红包绑定信息和活动信息 cb_info = {} act_id = '' with get_connection_exception('qf_marketing') as db: cb_info = db.select_one(table='coupon_bind', where={'id': cb_id}) if not cb_info: raise ParamError('兑换码不存在') act_id = cb_info.get('activity_id') if not act_id: raise ParamError('查询活动信息失败') amt = cb_info.get('amt') start_time = cb_info.get('start_time') expire_time = cb_info.get('expire_time') status = cb_info.get('status') coupon_mchnt_id = cb_info.get('mchnt_id') coupon_rule_id = cb_info.get('coupon_rule_id') now = datetime.datetime.now() if not (start_time < now < expire_time): raise ParamError('不在活动时间内') if status != COUPON_STATUS_BIND: raise ParamError('这张消费券不能使用了!') if not coupon_mchnt_id: mchnt_id_list = [] mchnt_id_json = '' with get_connection('qf_marketing') as db: mchnt_id_json = db.select_one( fields='mchnt_id_list', where={'coupon_rule_id': coupon_rule_id}) if not mchnt_id_json: raise ParamError('查询可使用商户列表失败') mchnt_id_list = json.loads(mchnt_id_json) if not (str(userid) in mchnt_id_list): raise ParamError('该消费券不能在该店铺使用') if int(coupon_mchnt_id) != int(userid): raise ParamError('该消费券不能在该店铺使用') # 使用红包 coas = CouponOperateArgs() coas.coupon_code = cb_info.get('coupon_code') coas.src = cb_info.get('src') coas.type = COUPON_STATUS_USE coas.trade_amt = int(amt) coas.customer_id = str(cb_info.get('customer_id')) coas.out_sn = str(getid()) coas.content = '交易使用消费券' coas.mchnt_id = userid try: thrift_callex(config.QF_MARKETING_SERVERS, QFMarketing, 'coupon_use', coas) except: log.warn(traceback.format_exc()) raise ThirdError('使用红包失败') return self.write(success({}))
def GET(self): input_cid = self.req.input().get('customer_id') try: customer_id = hids.decode(input_cid)[0] except: customer_id = input_cid if not is_valid_int(customer_id): raise ParamError('参数错误') customer_id = int(customer_id) userid = int(self.user.userid) userids = self.get_link_ids() or [] userids.append(userid) member = None with get_connection('qf_mchnt') as db: member = db.select_one( table= 'member', where= { 'userid': ('in', userids), 'customer_id': customer_id }, fields= 'customer_id, txamt, num, last_txdtm, userid' ) if not member: raise ParamError('暂未获得会员信息~') profile = {} try: profile = thrift_callex( config.OPENUSER_SERVER, QFCustomer, 'get_profiles', config.OPENUSER_APPID, json.dumps({'user_id': customer_id}) )[0].__dict__ except: log.warn('get openuser_info error:%s' % traceback.format_exc()) tags = self.get_tags(customer_id) tags_dict = {flag.keys()[0]:flag.values()[0] for flag in config.MEMBER_FLAGS} default_val = '暂无' member['per_txamt'] = member['txamt'] / (member['num'] or 1) member['avatar'] = profile.get('avatar') or config.HJ_AVATAR member['gender'] = profile.get('gender', 1) member['birthday'] = default_val member['mobile'] = default_val member['name'] = default_val member['is_auth'] = 0 if 'submit' in tags: member['birthday'] = profile.get('birthday') or default_val member['mobile'] = profile.get('mobile') or default_val member['name'] = profile.get('cname') or default_val member['is_auth'] = 1 member['nickname'] = profile.get('nickname') or default_val member['last_txdtm'] = tstamp_to_str(member['last_txdtm']) member['tag'] = [tags_dict[tag] for tag in tags if tag in tags_dict] member['customer_id'] = hids.encode(customer_id) actvinfo = [] actvinfo.append(self.get_actv_card(userid, customer_id)) actvinfo.append(self.get_actv_prepaid(userid, customer_id)) return success({ 'baseinfo': member, 'actvinfo': actvinfo })
def GET(self): customer_id = self.get_cid() userid = hids.decode(self.req.input().get('userid')) if not userid: raise ParamError('商户userid为空') userid = userid[0] openid = self.req.input().get('openid', '') ret = dict() # 消费者信息 ret['profile'] = {} profile = get_profile(customer_id) ret['profile']['avatar'] = profile['avatar'] ret['profile']['is_new'] = self.be_member(userid, customer_id) ret['profile']['customer_id'] = hids.encode(customer_id) ret['profile']['is_submit'] = self.get_submit_info(userid, customer_id) # 活动信息 ret['actvs'] = {} ret['actvs']['privilege'] = self.get_privilege(userid) ret['actvs']['balance'] = self.get_balance(userid, customer_id) or 0 card = self.get_actv_card(userid, customer_id) or {} ret['actvs']['card'] = card.get('desc') ret['actvs']['card_actv_id'] = card.get('mp_id') # 店铺信息 bg_urls = config.CARDS_INFO_BG_URLS ret['shopinfo'] = {} ret['shopinfo']['mchnt_id'] = userid ret['shopinfo']['userid'] = hids.encode(int(userid)) ret['shopinfo']['bg_url'] = bg_urls[userid % 10 % len(bg_urls)] user = apcli_ex('findUserBriefById', userid) if user: ret['shopinfo']['address'] = user.address ret['shopinfo']['mobile'] = user.mobile ret['shopinfo']['shopname'] = user.shopname user_ext = apcli_ex('getUserExt', int(userid)) if user_ext: ret['shopinfo']['head_img'] = user_ext.head_img or '' ret['shopinfo']['logo_url'] = user_ext.logo_url or '' ret['shopinfo']['mobile'] = user_ext.contact or user.mobile # 实用门店 ret['shops'] = self.get_shops(userid) ret['shop_num'] = self._shop_num # 是否卡包信息 ret['wxcard'] = self.get_wxcard(userid, customer_id) or {} # 从weixin_card获取此openid,appid对应的卡包里的所有的卡券列表 # 如果cardid在里面则返回1, 不然异常情况或者不在都返回0 appid, card_id = '', '' if ret['wxcard']: appid = ret['wxcard']['appid'] card_id = ret['wxcard']['card_id'] if not appid: is_added = 0 card_code = '' else: # 如果前端没有给传openid,则先获取openid if not openid: try: openid = thrift_callex( config.OPENUSER_SERVER, QFCustomer, 'get_openid_by_wxappid_and_customid', wx_appid=appid, customid=customer_id) except CustomerError: is_added = 0 log.debug(traceback.format_exc()) if not openid: is_added = 0 card_code = '' else: client = ThriftClient(config.WXCARD_SERVERS, WXCard) card_code = client.call("get_cardcode_by_openid", openid=openid, card_id=card_id) try: card_list = client.call("get_card_list", openid, appid) if card_id: if card_id in card_list: is_added = 1 else: is_added = 0 else: is_added = 0 except WXCardError: log.debug(traceback.format_exc()) is_added = 0 ret['wxcard']['is_added'] = is_added # 获取用户领卡时候的code ret['wxcard']['code'] = card_code return self.write(success(ret))