コード例 #1
0
 def get_one_or_default_address(self):
     if is_tourist():
         raise TOKEN_ERROR(u'未登录')
     uaid = request.args.to_dict().get('uaid')
     usid = request.user.id
     logger.debug("get uaid is %s", uaid)
     if uaid is not None:
         uafilter = {'UAid': uaid}
     else:
         uafilter = {'USid': usid, 'UAdefault': True, 'UAisdelete': False}
     default_address = self.suesraddress.get_one_or_default_address(
         uafilter)
     if not default_address:
         any_address = self.suesraddress.get_first_no_default_address(usid)
         if not any_address:
             raise NOT_FOUND(u'该用户未设置地址信息')
     address = default_address or any_address
     if address:
         logger.info("get address success, now to fill detail")
     addressinfoes = self.suesraddress.get_addressinfo_by_areaid(
         address.areaid)
     for addressinfo in addressinfoes:
         address.addressinfo = addressinfo
         address.add("addressinfo")
     response = import_status("messages_get_item_ok", "OK")
     response['data'] = address
     return response
コード例 #2
0
 def get_accountinfo(self):
     if is_tourist():
         return AUTHORITY_ERROR(u"未登录")
     usid = request.user.id
     user = self.suser.get_user_by_user_id(usid)
     logger.debug("get info success, this user is %s", user.USname)
     default_address = self.suesraddress.get_default_address_by_usid(usid)
     if not default_address:
         first_address = self.suesraddress.get_first_no_default_address(
             usid)
     address = default_address or first_address
     if address:
         logger.info("get user address success")
         location = self.suesraddress.get_addressinfo_by_areaid(
             address.areaid)
         logger.info("get address detail success")
         for area, city, provice in location:
             locationname = getattr(provice, "name", '') + getattr(
                 city, "name", '') + getattr(area, "name", '')
     else:
         locationname = ''
     # print ''.join([x[1] for x in area])
     bankcard = self.sbankcard.get_bankcard_by_usid(usid)
     response = import_status("get_accountinfo_success", "OK")
     response['data'] = {
         "user": user.hide('USid'),
         # "address": '%s%s' %(locationname, address.UAtext),
         "address": '%s%s' % (locationname, getattr(address, "UAtext", '')),
         "bankcard": getattr(bankcard, "BCnumber", '')
     }
     return response
コード例 #3
0
 def add_useraddress(self):
     if not hasattr(request, 'user'):
         return TOKEN_ERROR(u"未登录, 或token错误")
     parameter_required("areaid", "UAname", "UAphone", "UAtext")
     data = request.json
     logger.info("this is useraddress data %s", data)
     try:
         uaid = str(uuid.uuid1())
         logger.debug("get default address by usid")
         exist_default = self.suesraddress.get_default_address_by_usid(
             request.user.id)
         uadefault = True if not exist_default else data.get("UAdefault")
         if str(uadefault) not in ['True', 'False']:
             raise PARAMS_ERROR(u'uadefault参数不合法')
         if uadefault is True and exist_default:
             self.suesraddress.change_default_address_status(
                 exist_default.UAid, {'UAdefault': False})
         self.suesraddress.add_model(
             "UserAddress", **{
                 "UAid": uaid,
                 "USid": request.user.id,
                 "UAname": data.get("UAname"),
                 "UAphone": data.get("UAphone"),
                 "UAtext": data.get("UAtext"),
                 "areaid": data.get("areaid"),
                 "UAdefault": uadefault
             })
         response = import_status("add_address_success", "OK")
         response['data'] = {"UAid": uaid}
         return response
     except:
         logger.exception("add user address error")
         return SYSTEM_ERROR
コード例 #4
0
ファイル: CProduct.py プロジェクト: clove2han/Weidian
 def get_one_by_productid(self):
     logger.info(request.detail)
     args = request.args.to_dict()
     prid = args.get('productid')
     usid = request.user.id
     if not prid:
         raise PARAMS_MISS()
     product = self.sproduct.get_product_by_productid(prid)
     if not product:
         raise NOT_FOUND(u"无此商品")
     # 是管理员或客服则显示全部信息
     if is_admin() or is_customerservice():
         product.fields = product.all
         print '是管理员或客服'
     else:
         # 如果是游客, 或者是未购买开店大礼包的普通用户
         if is_tourist() or is_ordirnaryuser():
             print '是游客或者普通用户'
             product = self.trans_product_for_fans(product)
         else:  # 合伙人(即已购买开店大礼包的用户)
             print '合伙人'
             product = self.trans_product_for_shopkeeper(product)
         product = self.fill_product_nums(product)
     # 填充一些都需要的信息
     self.fill_product_alreadylike(product, usid)
     self.fill_images(product)
     self.fill_prtarget(product)
     self.fill_product_sku_key(product)
     self.fill_product_sku_value(product)
     self.sproduct.update_view_num(product.PRid)
     data = import_status('get_product_success', 'OK')
     data['data'] = product
     return data
コード例 #5
0
 def del_address(self):
     if is_tourist():
         return TOKEN_ERROR(u"未登录, 或token错误")
     data = request.json
     logger.info("this is del address data %s", data)
     parameter_required("UAid")
     try:
         logger.debug("del address")
         del_address = self.suesraddress.delete_address(data.get("UAid"))
         if not del_address:
             return SYSTEM_ERROR
         exist_default = self.suesraddress.get_default_address_by_usid(
             request.user.id)
         if not exist_default:
             no_default_address = self.suesraddress.get_first_no_default_address(
                 request.user.id)
             if no_default_address:
                 self.suesraddress.change_default_address_status(
                     no_default_address.UAid, {'UAdefault': True})
         response = import_status("delete_useraddress_success", "OK")
         response['data'] = {"uaid": data.get("UAid")}
         return response
     except:
         logger.exception("del address error")
         return SYSTEM_ERROR
コード例 #6
0
ファイル: CActivity.py プロジェクト: clove2han/Weidian
 def generate_poster(self):
     # formdata = request.form
     data = request.json
     # logger.info("data is %s", data)   # 因为base64 太大,所以注释掉
     # files = request.files.get("file")
     if platform.system() == "Windows":
         rootdir = "D:/qrcode"
     else:
         rootdir = "/opt/WeiDian/imgs/shareposter/"
     if not os.path.isdir(rootdir):
         os.mkdir(rootdir)
     # if "FileType" not in formdata:
     #     return
     # filessuffix = str(files.filename).split(".")[-1]
     # index = formdata.get("index", 1)
     # filename = request.user.openid + get_db_time_str() + "." + filessuffix
     filename = request.user.openid + get_db_time_str() + ".png"
     filepath = os.path.join(rootdir, filename)
     print(filepath)
     # files.save(filepath)
     baseimg = data.get('baseimg')
     imgdata = baseimg.split(',')[-1]
     img = base64.b64decode(imgdata)
     file = open(filepath, 'wb')
     file.write(img)
     file.close()
     response = import_status("save_poster_success", "OK")
     # url = Inforcode.ip + Inforcode.LinuxImgs + "/" + filename
     url = QRCODEHOSTNAME + "/imgs/shareposter/" + filename
     # print(url)
     logger.info("this url is %s", url)
     response["data"] = url
     return response
コード例 #7
0
 def update_address(self):
     if not hasattr(request, 'user'):
         return TOKEN_ERROR(u"未登录, 或token错误")
     args = request.args.to_dict()
     logger.debug("this is address args %s", args)
     data = request.json
     logger.debug("this is address data %s", data)
     uaid = args.get('uaid')
     uadefault = data.get("UAdefault")
     try:
         exist_default = self.suesraddress.get_default_address_by_usid(
             request.user.id)
         parameter_required("uaid", "areaid", "UAname", "UAphone", "UAtext",
                            "UAdefault")
         if uadefault == True and exist_default:
             self.suesraddress.change_default_address_status(
                 exist_default.UAid, {'UAdefault': False})
         update_address = self.suesraddress.update_address(
             uaid, {
                 "areaid": data.get("areaid"),
                 "UAname": data.get("UAname"),
                 "UAphone": data.get("UAphone"),
                 "UAtext": data.get("UAtext"),
                 "UAdefault": uadefault
             })
         logger.info("update address succress ")
         if not update_address:
             raise SYSTEM_ERROR(u'数据更新错误')
         response = import_status("update_useraddress_success", "OK")
         response['data'] = {"uaid": args["uaid"]}
         return response
     except:
         logger.exception("update address error")
         return SYSTEM_ERROR
コード例 #8
0
 def add_bankcard(self):
     if not hasattr(request, 'user'):
         return TOKEN_ERROR(u"未登录, 或token错误")
     data = request.json
     logger.info("this add bankcard info %s", data)
     parameter_required('BCusername', 'BCnumber', 'BCbankname', 'BCaddress')
     banknumber = str(data.get('BCnumber')).strip()
     self._verify_cardnum(banknumber, error='raise')
     usid = request.user.id
     try:
         bankcard = self.sbankcard.update_bankcard_by_usid(
             usid, {'BCisdelete': True})
         logger.debug("bankcard count is %s", bankcard)
         bcid = str(uuid.uuid1())
         self.sbankcard.add_model(
             "BankCard", **{
                 "BCid": bcid,
                 "USid": usid,
                 "BCusername": data.get("BCusername"),
                 "BCnumber": banknumber,
                 "BCbankname": data.get("BCbankname"),
                 "BCaddress": data.get("BCaddress")
             })
         response = import_status("add_bank_card_success", "OK")
         response['data'] = {"BCid": bcid}
         return response
     except:
         logger.exception("add bankcard error")
         return SYSTEM_ERROR
コード例 #9
0
    def upload_task_img(self):
        if not is_admin():
            raise AUTHORITY_ERROR(u"权限不足")
        formdata = request.form
        logger.info("formdata is %s", formdata)
        files = request.files.get("file")

        if platform.system() == "Windows":
            rootdir = "D:/task"
        else:
            rootdir = "/opt/WeiDian/imgs/task/"
        if not os.path.isdir(rootdir):
            os.mkdir(rootdir)
        # if "FileType" not in formdata:
        #     return
        filessuffix = str(files.filename).split(".")[-1]
        # index = formdata.get("index", 1)
        filename = request.user.id + get_db_time_str() + "." + filessuffix
        filepath = os.path.join(rootdir, filename)
        print(filepath)
        files.save(filepath)
        response = import_status("save_photo_success", "OK")
        # url = Inforcode.ip + Inforcode.LinuxImgs + "/" + filename
        url = QRCODEHOSTNAME + "/imgs/task/" + filename
        # print(url)
        logger.info("this url is %s", url)
        response["data"] = url
        return response
コード例 #10
0
ファイル: Cuser.py プロジェクト: clove2han/Weidian
    def get_wx_config_accesstoken(self, url):
        import time
        import hashlib

        noncestr = self.__create_nonce_str()
        data = {
            "url": url,
            "jsapi_ticket": mp.jsticket(),
            'timestamp': int(time.time()),
            "noncestr": noncestr
        }
        logger.info("get wx config %s", data)
        try:
            # response_str = "&".join([str(k)+'='+str(v) for k, v in data.items()])
            # response_str = signature_str.format(**data)
            response_str = '&'.join(
                ['%s=%s' % (key.lower(), data[key]) for key in sorted(data)])
            logger.debug("get response: %s", response_str)
            signature = hashlib.sha1(response_str.encode('utf-8')).hexdigest()
            logger.debug('get signature: %s', signature)
            data['sign'] = signature
            data['appid'] = APP_ID
        except:
            logger.exception("Get wx config error")
            return SYSTEM_ERROR
        # response = import_status("SUCCESS_GET_CONFIG", "OK")
        # response['data'] = data
        # return response
        return data
コード例 #11
0
 def access_token(self, args):
     logger.info('set access token start')
     token, jsapiticket, updatetime = args[0], args[1], args[2]
     self.cf.set('access_token', 'access_token', token)
     self.cf.set("access_token", "lasttime", updatetime)
     self.cf.set("access_token", "jsapiticket", jsapiticket)
     self.write_file()
     logger.info('set access token start')
コード例 #12
0
ファイル: CRaward.py プロジェクト: clove2han/Weidian
 def get_rewardpacket(self):
     """获取优惠券集合"""
     if not is_admin():
         raise AUTHORITY_ERROR(u'非管理员权限')
     rewardpackets = self.sraward.get_reward_packet_list()
     logger.info(('get reward packet list success'))
     data = import_status("messages_get_item_ok", "OK")
     data['data'] = rewardpackets
     return data
コード例 #13
0
ファイル: CActivity.py プロジェクト: clove2han/Weidian
    def share_activity(self):
        if is_tourist():
            raise TOKEN_ERROR(u'未登录')
        data = request.json
        logger.debug("share qrcode data is %s", data)
        # data_url = data.get("dataurl")
        data_url = self.get_share_url(data.get("dataurl"))
        try:
            logger.info("get user info")
            user = self.suser.get_user_by_user_id(request.user.id)
            if not user:
                raise SYSTEM_ERROR(u'找不到该用户')
            save_path = LinuxRoot + LinuxImgs + "/qrcode/" + user.openid + '.png' if platform.system(
            ) == "Linux" else WindowsRoot + "qrcode/" + user.openid + '.png'
            make_qrcode(user.USheader, data_url, save_path)
            response = import_status("make_qrcode_success", "OK")
            response[
                "qrcodeurl"] = QRCODEHOSTNAME + '/' + LinuxImgs + '/qrcode/' + user.openid + '.png'
            response[
                "components"] = QRCODEHOSTNAME + '/' + LinuxImgs + '/components.png'
            logger.debug('response url is %s', response["qrcodeurl"])

            url = data_url.split('#')[-1]
            from WeiDian.common.get_url_params import GetUrlParams
            parse_dict = GetUrlParams.url_params_to_dict(url)
            if 'baid' in parse_dict or 'prid' in parse_dict:
                # 分享时更改转发数
                paramstype = bool(not 'baid' in parse_dict)
                filter_parameter = {
                    'AClinkvalue':
                    parse_dict['prid'] if paramstype else parse_dict['baid'],
                    'ACSkipType':
                    2 if paramstype else 1,
                    'ACisdelete':
                    False
                }
                act_list = self.sactivity.get_acid_by_filterid(
                    filter_parameter)
                for act in act_list:
                    if act.ACforwardFakenum != 0:
                        self.sactivity.update_forward_fakenum(act.ACid)
                    else:
                        self.sactivity.add_model(
                            'ActivityFoward', **{
                                'AFid': str(uuid.uuid1()),
                                'USid': request.user.id,
                                'ACid': act.ACid
                            })

                if is_partner():

                    self.do_shoppingtask_or_forwardtask(1)
            return response
        except:
            logger.exception("make qrcode error")
            return SYSTEM_ERROR(u'服务器繁忙')
コード例 #14
0
 def set_item(self, section, option, value):
     logger.info('set item start')
     if not isinstance(value, basestring):
         value = str(value).encode('utf8')
     elif isinstance(value, unicode):
         value = value.encode('utf8')
     self.cf.set(section, option, value)
     self.write_file()
     logger.info('set item success')
     return 'ok'
コード例 #15
0
    def get_content_by_seach(self):
        if not hasattr(request, 'user'):
            return TOKEN_ERROR  # 未登录, 或token错误
        
        args = request.args.to_dict()
        logger.debug("get search args is %s", args)
        page = args.get('page')  # 页码
        page = 1 if not page else int(page)
        start = args.get('start')  # 起始位置
        count = args.get('count')  # 取出条数
        count = 5 if not count else int(count)
        start = int((page - 1) * count) if not start else int(start)
        serachact = args.get("serachact")
        tnid = args.get('tnid')
        from WeiDian.service.SProduct import SProduct
        from WeiDian.service.SActivity import SActivity
        from WeiDian.control.CActivity import CActivity
        prname = args.get("PRname")
        prname = prname.encode("utf8") if isinstance(prname, unicode) else prname
        sactivity = SActivity()
        activity_list = []
        if str(serachact) == 'true':
            logger.info("now we'll search act through actext")
            activity_list.extend(sactivity.get_activity_list_by_actext(prname, tnid))
        else:
            logger.info("now we'll search act with product through prname")
            prid_list = SProduct().get_products_by_prname(prname)
            for prid in prid_list:
                activity_list.extend(sactivity.get_activity_by_prid(prid.PRid))
            activity_list = filter(lambda act: act.ACstarttime < get_db_time_str() < act.ACendtime, activity_list)

        if count > 30:
            count = 30
        end = start + count
        len_aclist = len(activity_list)
        if end > len_aclist:
            end = len_aclist
        cactivity = CActivity()
        activity_list = map(cactivity.fill_detail, activity_list)
        for activity in activity_list:
            activity.fill(activity.AClinkvalue, 'aclinkvalue')
            sactivity.update_view_num(activity.ACid)
            activity.ACstarttime = get_web_time_str(activity.ACstarttime)
            activity.ACendtime = get_web_time_str(activity.ACendtime)

        activity_list = activity_list[start:end]
        # map(cactivity.fill_comment_two, activity_list)
        map(cactivity.fill_like_num, activity_list)

        map(cactivity.fill_type, activity_list)
        map(cactivity.fill_product, activity_list)
        data = import_status("get_activity_list_success", "OK")
        data["data"] = activity_list
        data["count"] = len_aclist
        return data
コード例 #16
0
ファイル: weixinmp.py プロジェクト: clove2han/Weidian
 def get_wx_response(self, url, urltype):
     try:
         req = urllib2.Request(url)
         response = urllib2.urlopen(req)
         strResult = response.read()
         response.close()
         logger.info("%s is %s", urltype, strResult)
         return json.loads(strResult)
     except:
         logger.exception("%s error", urltype)
         raise NETWORK_ERROR
コード例 #17
0
ファイル: CActivity.py プロジェクト: clove2han/Weidian
 def get_one(self):
     """通过acid获取活动及活动下的评论
     """
     if is_tourist():
         return AUTHORITY_ERROR(u"未登录或token错误")
     args = request.args.to_dict()
     logger.info("get one act args is %s", args)
     parameter_required('acid')
     acid = args.get('acid')  # 活动id
     try:
         activity = self.sactivity.get_activity_by_acid(acid)
         logger.debug("get one act access")
         if not activity:
             raise SYSTEM_ERROR(u'数据错误,无此内容')
         self.sactivity.update_view_num(activity.ACid)
         self.fill_detail(activity)
         self.fill_like_num(activity)
         self.fill_type(activity)
         if activity.ACSkipType == 0:
             self.fill_comment_two(activity)
             activity.fill('none_skip', 'skip_type')
             activity.fill('无跳转类型', 'zh_skip_type')
         elif activity.ACSkipType == 1:
             baid = activity.AClinkvalue
             activity.fill('bigactivity', 'skip_type')
             activity.fill('专题', 'zh_skip_type')
             bigactivity = self.sbigactivity.get_one_big_act(baid)
             if not bigactivity:
                 # raise NOT_FOUND()
                 pass
             else:
                 bigactivity_type = bigactivity.BAtype
                 big_activity_content = {'type': bigactivity_type}
                 big_activity_content.setdefault('baid', bigactivity.BAid)
                 # 图片类型专题
                 if bigactivity_type == 0:
                     big_activity_content.setdefault(
                         'baimage', bigactivity.BAlongimg)  # 返回字段不修改
                     big_activity_content.setdefault(
                         'baid', bigactivity.BAid)
                 activity.fill(big_activity_content, 'bigactivity')
         elif activity.ACSkipType == 2:
             self.fill_soldnum(activity)
             self.fill_product(activity)
             activity.fill('product', 'skip_type')
             activity.fill('商品', 'zh_skip_type')
         activity.ACstarttime = get_web_time_str(activity.ACstarttime)
         activity.ACendtime = get_web_time_str(activity.ACendtime)
         data = import_status("get_activity_info_success", "OK")
         data["data"] = activity
         return data
     except:
         logger.exception("get one act error")
         return SYSTEM_ERROR(u"服务器繁忙")
コード例 #18
0
ファイル: CActivity.py プロジェクト: clove2han/Weidian
 def get_exist_tags(self):
     if not is_admin():
         raise AUTHORITY_ERROR(u'非管理员权限')
     args = request.args.to_dict()
     logger.debug("get tags args is %s", args)
     try:
         tags_list = self.stags.get_exist_tags()
         logger.info("try to get tags")
         response = import_status("messages_get_item_ok", "OK")
         response['data'] = {"tags_list": tags_list}
         return response
     except Exception as e:
         logger.exception("get exist tags error")
         raise SYSTEM_ERROR(u"数据错误")
コード例 #19
0
 def get_area_by_citynum(self):
     args = request.args.to_dict()
     logger.info("get area args is %s", args)
     parameter_required('cityid')
     city_id = args['cityid']
     try:
         logger.debug("get arealist by cityid")
         area_list = self.suesraddress.get_arealist_by_cityid(city_id)
         # map(lambda x: x.hide('_id'), area_list)
         res = import_status("get_area_list_success", "OK")
         res["data"] = area_list
         return res
     except:
         logger.exception("get area list error")
         return SYSTEM_ERROR
コード例 #20
0
 def get_city_by_provincenum(self):
     args = request.args.to_dict()
     logger.info("get city list args is %s", args)
     parameter_required("provinceid")
     province_id = args["provinceid"]
     try:
         logger.debug("get citylist by province_id")
         city_list = self.suesraddress.get_citylist_by_provinceid(
             province_id)
         # map(lambda x: x.hide('_id'), city_list)
         res = import_status("get_city_list_success", "OK")
         res["data"] = city_list
         return res
     except:
         logger.exception("get city list error")
         return SYSTEM_ERROR
コード例 #21
0
 def batch_delete_prlike(self):
     if is_tourist():
         return TOKEN_ERROR(u'未登录')
     data = request.json
     plid_list = data.get("plid").split(
         ',') if data and 'plid' in data else None
     logger.info("batch del prlike data is %s", data)
     print plid_list
     try:
         self.sproductlike.batch_delete_prlike(plid_list)
         response = import_status('delete_activity_success', 'OK')
         response['data'] = {"plidlist": plid_list}
         return response
     except:
         logger.exception("batch del prlike error")
         return SYSTEM_ERROR
コード例 #22
0
    def get_like_list(self):
        """获取用户的收藏列表"""
        if is_tourist():
            return TOKEN_ERROR(u'未登录')
        args = request.args.to_dict()
        logger.debug("get like list args is %s", args)
        parameter_required("page_size", "page_num")
        page_num = args.get("page_num")
        page_size = args.get("page_size")
        page_num = 1 if not page_num else int(page_num)
        page_size = 5 if not page_size else int(page_size)
        try:
            productlike_list = self.sproductlike.get_productlike_list_by_usid(
                request.user.id, page_num, page_size)
            if not productlike_list:
                raise NOT_FOUND(u'用户无收藏信息')
            logger.info("get product like list success")
            map(self.fill_productinfo, productlike_list)
            # 获取转发数
            from WeiDian.service.SActivity import SActivity
            from WeiDian.service.SActivityFoward import SActivityFoward
            total_forward = 0
            for prlike in productlike_list:
                forward_act = SActivity().get_acid_by_filterid({
                    'AClinkvalue':
                    prlike.PRid,
                    'ACSkipType':
                    2,
                })
                for act in forward_act:
                    forward_num = SActivityFoward().get_fowardnum_by_acid(
                        act.ACid)
                    total_forward = total_forward + forward_num

                prlike.forwardnum = total_forward
                prlike.add("forwardnum")
            prlikecount = self.sproductlike.get_prlike_count_by_usid(
                request.user.id)
            data = import_status("get_product_like_success", "OK")
            data["count"] = prlikecount
            data["data"] = productlike_list
            return data
        except Exception as e:
            logger.exception("get product like error")
            raise SYSTEM_ERROR(u'收藏信息不存在')
コード例 #23
0
 def del_bankcard(self):
     if not hasattr(request, 'user'):
         return TOKEN_ERROR(u"未登录, 或token错误")
     data = request.json
     logger.info("this is del bankcard data %s", data)
     parameter_required("BCid")
     try:
         logger.debug("del bankcard")
         del_bankcard = self.sbankcard.del_bankcard(data.get("BCid"),
                                                    request.user.id)
         if not del_bankcard:
             return SYSTEM_ERROR
         response = import_status("delete_bankcard_success", "OK")
         response['data'] = {"bcid": data.get("BCid")}
         return response
     except:
         logger.exception("del address error")
         return SYSTEM_ERROR
コード例 #24
0
    def get_bankcard(self):
        if not hasattr(request, 'user'):
            return TOKEN_ERROR(u"未登录, 或token错误")
        args = request.args.to_dict()
        logger.info("get bankcard this is args %s", args)
        try:
            logger.debug("get bankcard")
            my_bankcard = self.sbankcard.get_bankcard_by_usid(request.user.id)

            if not my_bankcard or not my_bankcard.BCnumber or not my_bankcard.BCusername:
                my_bankcard = None

            response = import_status("get_bankcard_success", "OK")
            response['data'] = my_bankcard
            return response
        except:
            logger.exception("get bankcard error")
            return SYSTEM_ERROR
コード例 #25
0
ファイル: CRaward.py プロジェクト: clove2han/Weidian
    def user_receive_reward(self):
        """用户自己领取页面内的优惠券"""
        if is_tourist():
            raise TOKEN_ERROR(u'未登录')
        data = request.json
        parameter_required('raid')
        logger.debug("user recevive data is", data)
        usid = request.user.id
        raid = data.get('raid')

        # 判断发放的优惠券是否还有领取数量
        hang_out = self.sraward.is_hand_out({'RAid': raid})
        if hang_out:
            if hang_out.RTcount <= 0:
                raise NOT_FOUND(u'该优惠券已领取完毕')
            else:
                self.sraward.update_is_hand_out({'RAid': hang_out.RAid}, {'RTcount': hang_out.RTcount - 1})

        # 判断用户是否已持有
        is_hold = self.sraward.is_user_hold_reward({'USid': usid, 'RAid': raid})
        if is_hold:
            logger.info("The user already has this type of reward ")
            reward_info = self.sraward.get_raward_by_id(raid)
            urid = is_hold.URid
            if is_hold.RAnumber < reward_info.RAmaxholdnum:
                self.sraward.update_user_reward({'RAid': raid}, {'RAnumber': is_hold.RAnumber + 1})
            else:
                raise PARAMS_REDUNDANCE(u'已拥有该券最大可持有数量')
        else:
            logger.info("New reward to user")
            urid = str(uuid.uuid1())
            self.sraward.add_model('UserRaward', **{
                'URid': urid,
                'USid': usid,
                'RAid': raid,
            })

        data = import_status("receive_reward_success", "OK")
        data['data'] = {'urid': urid
                        }
        return data
コード例 #26
0
 def update_bankcard(self):
     if not hasattr(request, 'user'):
         return TOKEN_ERROR(u"未登录, 或token错误")
     args = request.args.to_dict()
     logger.info("this is update bankcard args %s", args)
     data = request.json
     logger.info("this is update bankcard data %s", data)
     try:
         parameter_required("bcid", "BCusername", "BCnumber", "BCbankname",
                            "BCaddress")
         update_bankcard = self.sbankcard.update_bankcard(
             args["bcid"], data)
         logger.debug("update bankcard accress")
         if not update_bankcard:
             return SYSTEM_ERROR
         response = import_status("update_bankcard_success", "OK")
         response["data"] = {"bcid": args["bcid"]}
         return response
     except:
         logger.exception("update bankcard error")
         return SYSTEM_ERROR
コード例 #27
0
ファイル: CAdImage.py プロジェクト: clove2han/Weidian
 def get_image(self):
     if is_tourist():
         return AUTHORITY_ERROR(u"未登录")
     args = request.args.to_dict()
     lasting = args.get('lasting', 'true')
     logger.debug("get image args is %s", args)
     try:
         logger.info("get my image list")
         adimage_list = self.sadimage.get_myimage()
         if lasting == 'true':
             now_time = datetime.strftime(datetime.now(), format_for_db)
             adimage_list = filter(
                 lambda adimage: adimage.AIstarttime < now_time < adimage.
                 AIendtime, adimage_list)
         for adimage in adimage_list:
             adimage.hide('AIurl')
         data = import_status("get_adimage_success", "OK")
         data['data'] = adimage_list
         return data
     except:
         logger.exception("get ad_image by aiid error")
         return SYSTEM_ERROR(u"无底部图片")
コード例 #28
0
    def do_task(self):
        if is_tourist():
            raise AUTHORITY_ERROR(u"未登录")
        parameter_required(*self.do_task_params)
        data = request.json
        logger.debug("get data %s", data)
        user_task = self.stask.get_user_task_by_id(data.get("TUid"))
        logger.info('get user task %s', user_task)
        if not user_task:
            raise SYSTEM_ERROR(u"服务器繁忙")
        task = self.stask.get_task_by_taid(user_task.TAid)
        logger.info('get task : %s', dict(task))

        if str(task.TAtype) == '0':
            logger.debug('start update task')
            # self.add_user_task_raward(request.user.id, task.TLid)
            update_result = self.stask.update_user_task(
                user_task.TUid, {
                    "TUstatus": 1,
                    "TUnumber": 1
                })
            logger.debug('get update result %s', update_result)
        else:
            # todo 其他类型任务执行
            pass
        # todo_task = self.stask.get_todo_user_task_by_user_id(request.user.id)
        # is_complate = False
        # if not todo_task:
        #     is_complate = True
        #     # 更新任务状态为已失效,发放奖励。并且添加新的任务内容
        #     self.stask.update_user_tasks(request.user.id, {"TUstatus": 4})
        #     if task.TAlevel < 3:
        #         self.add_user_task(request.user.id, task.TAlevel)
        # response = import_status("do_task_success", 'OK')
        # response['data'] = {
        #     "is_complate": is_complate
        # }
        return import_status("do_task_success", 'OK')
コード例 #29
0
    def add_task(self):
        if not is_admin():
            raise AUTHORITY_ERROR(u"权限不足")
        data = request.json
        logger.info("add task body %s", data)
        parameter_required(*self.add_task_params)
        task = {k: data.get(k) for k in self.add_task_params}

        logger.debug('get tatype is %s and type of tatype is %s',
                     task.get("TAtype"), type(task.get("TAtype")))
        tatype = int(task.get("TAtype"))
        if tatype == 0 and "TAurl" not in data:
            raise PARAMS_ERROR(u"参数TAurl缺失")
        task['TAstartTime'] = get_db_time_str(data.get("TAstartTime"))
        if data.get("TAendTime"):
            task['TAendTime'] = get_db_time_str(data.get("TAendTime"))
        if data.get("TAduration"):
            task['TAduration'] = data.get("TAduration")
        task['TAstatus'] = data.get("TAstatus", 0)
        task['TAmessage'] = data.get("TAmessage")
        task['TAurl'] = data.get("TAurl", 1)
        task['TAtype'] = tatype
        logger.debug('add task : task is %s', task)
        try:
            if data.get("TAid"):
                update_result = self.stask.update_task(data.get("TAid"), task)
                if not update_result:
                    raise SYSTEM_ERROR(u"数据库异常")
                task["TAid"] = data.get("TAid")
            else:
                task['TAid'] = str(uuid.uuid1())
                self.stask.add_model("Task", **task)
            # self.add_or_update_task_raward(task['TAid'], task['RAid'], task.get("RAnumber", 1))
        except:
            logger.exception("add task error")
            return SYSTEM_ERROR(u'服务器繁忙')
        return import_status("add_task_success", "OK")
コード例 #30
0
ファイル: CRaward.py プロジェクト: clove2han/Weidian
    def create_reward(self):
        """创建优惠券"""
        if not is_admin():
            raise AUTHORITY_ERROR(u'当前账号权限不足')
        data = request.json
        logger.debug("create reward data is %s", data)
        raid = str(uuid.uuid1())
        ratype = data.get('ratype')
        rptid = data.get('rptid')
        if not re.match(r'^[0-4]$', str(ratype)):
            raise PARAMS_ERROR(u'ratype, 参数异常')
        now_time = get_db_time_str()
        nowtime_str_to_time = datetime.strptime(now_time, format_for_db)
        days_later = datetime.strftime(nowtime_str_to_time + timedelta(days=30), format_for_web_second)
        reendtime = get_db_time_str(data.get('raendtime', days_later))
        ratransfer = data.get('ratransfer', False)
        reward_dict = {
            'RAid': raid,
            'RAtype': ratype,
            'RAmaxusenum': data.get('ramaxusenum', 1),
            'RAmaxholdnum': data.get('ramaxholdnum', 1),
            'RAendtime': reendtime,
            'RAname': data.get('raname'),
            'RAtransfer': ratransfer,
            'SUid': request.user.id
        }
        if re.match(r'^[0-2]$', str(ratype)):
            if str(ratype) == '0':
                parameter_required('rafilter', 'raamount', 'ratype', 'raname')
                logger.info('This reward type 0 is created')
                reward_dict['RAfilter'] = data.get('rafilter')
                reward_dict['RAamount'] = data.get('raamount')
            elif str(ratype) == '1':
                parameter_required('raratio', 'ratype', 'raname')
                logger.info('This reward type 1 is created')
                reward_dict['RAratio'] = data.get('raratio')
            else:
                parameter_required('raamount', 'ratype', 'raname')
                logger.info('This reward type 2 is created')
                reward_dict['RAfilter'] = 0
                reward_dict['RAamount'] = data.get('raamount')
        if ratransfer == True:
            reward_dict['RAtransfereffectivetime'] = data.get('ratransfereffectivetime', 24)
        self.sraward.add_model('Raward', **reward_dict)

        if rptid:
            self.sraward.add_model('RewardPacketContact', **{
                'RPCid': str(uuid.uuid1()),
                'RAid': raid,
                'RPTid': rptid
            })

        data = import_status("create_reward_success", "OK")
        data['data'] = {'raid': raid}
        return data