def fill_comment_two(self, act): """给活动对象附加一个评论属性""" acid = act.ACid comments = self.sacomment.get_comment_by_acid_two(acid) if comments: for comment in comments: BaseActivityCommentControl().fill_user(comment) comment.ACOcreatetime = get_web_time_str(comment.ACOcreatetime) replys = self.sacomment.get_apply_by_acoid( comment.ACOid) # 获取到回复列表 if replys: for reply in replys: comment.fill(replys, 'reply') reply.hide('USid') admin_user = self.ssuperuser.get_one_super_by_suid( reply.USid) if admin_user: user = admin_user admin_user.fill(0, 'robot') user.hide('SUid') else: user = {'name': u'运营人员', 'robot': 1} reply.ACOcreatetime = get_web_time_str( reply.ACOcreatetime) reply.fill(user, 'user') act.comment = comments act.add('comment') # map(self.fill_comment_apply_for, act.comment) return act
def get_all(self): """活动所有热文""" if is_tourist(): raise TOKEN_ERROR(u'未登录') args = request.args.to_dict() logger.debug("get hotmessage args is %s", args) lasting = args.get('lasting', 'true') htfilter = 1 if is_partner() else 0 if is_admin(): htfilter = [0, 1] try: hot_list = self.s_hotmessage.get_hotmsg_list_by_filter(htfilter) if str(lasting) == 'true': hot_list = filter( lambda hot: hot.HMstarttime < get_db_time_str() < hot. HMendtime, hot_list) for hotmsg in hot_list: hotmsg.HMstarttime = get_web_time_str(hotmsg.HMstarttime) hotmsg.HMendtime = get_web_time_str(hotmsg.HMendtime) data = import_status("get_hotmessage_list_success", "OK") data['data'] = hot_list return data except: logger.exception("get hotmessage error") raise SYSTEM_ERROR(u'服务器繁忙')
def fill_reward_detail(self, raward, price=None): reward_number = '{0}张' reward_number_ratio = '前{0}单' filter_str = '满{0}-{1}新衣币' ratio_str = '佣金上涨{0}%' amout_str = '{0}元无门槛新衣币' price_use = False if raward not in ['', None, [], {}]: if re.match(r'^[0-2]$', str(raward.RAtype)): if raward.RAtype == 0: reward_str = filter_str.format(int(raward.RAfilter), int(raward.RAamount)) elif raward.RAtype == 1: reward_str = ratio_str.format(int(raward.RAratio)) else: reward_str = amout_str.format(int(raward.RAamount)) zh_ratype = REWARD_TYPE.get(str(raward.RAtype)) raward.fill(zh_ratype, 'zh_ratype') raward.fill(reward_str, 'rewardstr') time_valid = raward.RAcreatetime < get_db_time_str() < raward.RAendtime and not raward.RAisdelete if price: if raward.RAtype == 0: price_use = price > raward.RAfilter elif raward.RAtype == 2: price_use = True valid = time_valid and price_use else: valid = time_valid raward.fill(valid, 'valid') raward.RAendtime = get_web_time_str(raward.RAendtime) raward.RAcreatetime = get_web_time_str(raward.RAcreatetime) return raward
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
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"服务器繁忙")
def get_complain_by_usid(self): """后台管理查看投诉记录""" if not hasattr(request, 'user'): raise TOKEN_ERROR() # 未登录, 或token错误 args = request.args.to_dict() logger.debug("get complain args is %s", args) page_size = args.get('page_size') page_size = 10 if not page_size else int(page_size) page_num = args.get('page_num') page_num = 1 if not page_num else int(page_num) try: complain_list = self.scomplain.admin_get_all_complain( page_size, page_num) complain_list_length = self.scomplain.admin_get_complain_count() from WeiDian.config.enums import complain_type data = import_status("get_complain_success", "OK") for complain in complain_list: colist = str(complain.COtype).split(",") logger.debug('get colist %s', colist) complaintype = ",".join([complain_type.get(i) for i in colist]) logger.debug('convert complain type %s', complaintype) complain.COtype = complaintype user_info = self.suser.get_user_by_user_id(complain.USid) complain.fill(user_info.USname, 'usname') complain.COcreatetime = get_web_time_str(complain.COcreatetime) data['data'] = complain_list data['count'] = complain_list_length logger.debug("get complain by usid %s", complain_list) return data except: logger.exception("get complain by usid error") raise SYSTEM_ERROR(u'获取数据错误')
def get_product_relate_bigactivity(self): """商品池获取商品与专题的关联详情""" if not is_admin(): raise AUTHORITY_ERROR(u'请使用管理员账号重新登录') prid = request.args.to_dict().get('prid') parameter_required('prid') logger.debug("get product relate bigactivity PRID is %s", prid) prbaids = self.sproduct.get_product_baid_by_prid(prid) list_baid = [] suid = '' suname = u'批量导入' updatetime = '' for prbaid in prbaids: record_info = self.sproduct.get_singel_record_by_filter({ 'PRid': prid, 'PORtarget': prbaid.BAid }) if record_info: suid = record_info.SUid suser_info = self.ssuperuser.get_one_super_by_suid(suid) suname = suser_info.SUname if suser_info else '' updatetime = get_web_time_str(record_info.PORcreatetime) dict_baid = { 'pbid': prbaid.PBid, 'baid': prbaid.BAid, 'claimid': suid, 'clainname': suname, 'updatetime': updatetime } list_baid.append(dict_baid) response = import_status("messages_get_item_ok", "OK") response['data'] = list_baid return response
def get_grant_record(self): """获取运营发放记录""" if not is_admin(): raise AUTHORITY_ERROR(u'非管理员权限') args = request.args.to_dict() logger.debug('get grant record args : %s', args) pagenum, pagesize = self.cuser.get_pagesize_pagenum(args) record_list, count = self.sraward.get_grant_record(pagenum, pagesize) for record in record_list: if record: user = self.suser.get_user_by_user_id(record.USid) usname = user.USname suser = self.ssuperuser.get_one_super_by_suid(record.SUid) susername = suser.SUname reward_info = self.sraward.get_raward_by_id(record.RAid) reward_info = self.fill_reward_detail(reward_info) record_str = '运营 {0} 发放给 {1} {2}优惠券 {3}张'.format(susername.encode('utf8'), usname.encode('utf8'), reward_info.rewardstr, record.RAnumber) record.fill(reward_info.rewardstr, 'rewardname') record.fill(usname, 'usname') record.fill(susername, 'susername') record.fill(record_str, 'record_str') record.RGRcreatetime = get_web_time_str(record.RGRcreatetime) response = import_status('messages_get_item_ok', 'OK') response['data'] = record_list response['count'] = count return response
def fill_task_params(self, task): task_detail = self.stask.get_task_by_taid(task.TAid) if not task_detail or task_detail.TAstatus == 4: return task.TAname = task_detail.TAname task.TAtype = task_detail.TAtype task.TAhead = task_detail.TAhead task.TLid = task_detail.TLid # task.TArole = task_detail.TArole # task.TAcomplateNotifications = task_detail.TAcomplateNotifications # task.RAid = task_detail.RAid task.TAstatus = TASK_STATUS.get(task_detail.TAstatus) task.TAmessage = task_detail.TAmessage task.TAurl = task_detail.TAurl task.TAstartTime = get_web_time_str(task_detail.TAstartTime) task.TAduration = task_detail.TAduration task.TAendTime = get_web_time_str(task_detail.TAendTime) task.add('TAname', "TAtype", "TAhead", "TLid", "TAstatus", "TAmessage", "TAurl", "TAendTime", "TAstartTime", "TAduration") return task
def get_comment_with_apply(self): """获取推文的评论列表(评论回复嵌套)""" try: args = request.args.to_dict() acid = args.get('acid') if not acid: raise PARAMS_MISS(u'必要的参数缺失: acid;') page = int(args.get('page', 1)) # 页码 count = int(args.get('count', 15)) # 取出条数 comment_list = self.sactivitycomment.get_comment_by_activity_id( acid, page, count) for comment in comment_list: self.fill_user(comment) comment.ACOcreatetime = get_web_time_str(comment.ACOcreatetime) replys = self.sactivitycomment.get_apply_by_acoid( comment.ACOid) if replys: for reply in replys: comment.fill(replys, 'reply') reply.hide('USid') # 改: 所有的回复都是管理员回复 admin_user = self.ssuperuser.get_one_super_by_suid( reply.USid) if admin_user: user = admin_user admin_user.fill(0, 'robot') user.hide('SUid') else: user = {'name': u'运营人员', 'robot': 1} reply.ACOcreatetime = get_web_time_str( reply.ACOcreatetime) reply.fill(user, 'user') data = import_status('get_acvity_comment_list_success', 'OK') data['data'] = comment_list data["count"] = request.all_count data["page_count"] = request.page_count return data except Exception as e: generic_log(e) raise e
def get_all_raward(self): if not is_admin(): raise AUTHORITY_ERROR(u"权限不足") args = request.args.to_dict() logger.debug("get all rewards args is %s", args) page_num, page_size = self.cuser.get_pagesize_pagenum(args) raward_list, count = self.sraward.get_all_reward(page_size, page_num) for reward in raward_list: if reward: packet_contact = self.sraward.get_is_where_packet(reward.RAid) if packet_contact: packet_info = self.sraward.get_reward_in_packet_info( packet_contact.RPTid) rptname = getattr(packet_info, 'RPTname', '') reward.fill(rptname, 'rptname') reward.RAcreatetime = get_web_time_str(reward.RAcreatetime) reward.RAendtime = get_web_time_str(reward.RAendtime) raward_list = self.fill_reward_detail(raward_list) res = import_status('get_task_success', 'OK') res['data'] = raward_list res['count'] = count return res
def get_product_operation_record(self): """获取商品操作记录""" if not is_admin(): raise AUTHORITY_ERROR(u'请使用管理员账号重新登录') args = request.args.to_dict() prid = args.get('prid') page_num, page_size = self.cuser.get_pagesize_pagenum(args) record_list = self.sproduct.get_product_operation_record( page_num, page_size, prid) if record_list: for record in record_list: portarget = record.PRid if not record.PORtarget else record.PORtarget record.PORcreatetime = get_web_time_str(record.PORcreatetime) suser = self.ssuperuser.get_one_super_by_suid(record.SUid) suname = suser.SUname if suser else '' record.fill(suname, 'suname') record.fill(portarget, 'portarget') response = import_status("messages_get_item_ok", "OK") response['data'] = record_list response['page_count'] = request.page_count response['count'] = request.all_count return response
def get_product_pools(self): """后台获取商品池列表内容""" if not is_admin(): raise AUTHORITY_ERROR(u'请使用管理员账号重新登录') args = request.args.to_dict() logger.debug("Get Commodity Pools data is %s", args) page, count = self.cuser.get_pagesize_pagenum(args) time_start = args.get('time_start') if time_start: time_start = get_db_time_str(time_start) time_end = args.get('time_end') if time_end: time_end = get_db_time_str(time_end) status = args.get('status') kw = args.get('kw') if kw not in self.empty: kw = kw.encode('utf8') isdelete = args.get('isdelete', 0) # 0 or 1 if str(isdelete) == '0': isdelete = False elif str(isdelete) == '1': isdelete = True else: isdelete = None product_list = self.sproduct.get_product_filter( kw, time_start, time_end, isdelete, status, page, count) for product in product_list: self.sproduct.update_view_num(product.PRid) self.fill_prbaid(product) self.fill_prtarget(product) if product.PRcreatetime: prcreatetime = get_web_time_str(product.PRcreatetime) product.fill(prcreatetime, 'prcreatetime') if product.SUmodifyid: isclaim = True canclaim = True if product.SUmodifyid == request.user.id else False caneditact = True if product.SUmodifyid == request.user.id else False else: isclaim = False canclaim = True caneditact = False product.fill(product.SUmodifyid or '', "claimid") product.fill(isclaim, "isclaim") product.fill(canclaim, "canclaim") product.fill(caneditact, "caneditact") isbig = False if product.PRtarget: isbig = True if product.PRtarget[0] == '101' else False product.fill(isbig, 'isbig') pv = product.PRviewnum product.fill(pv, 'pv') salesvolume = product.PRsalesvolume transform = 0 if pv == 0 else salesvolume / float(pv) ortransform = "%.2f%%" % (transform * 100) product.fill(ortransform, 'ortransform') refund_list = self.sorder.get_refund_product() redfund_num = 0 if refund_list: for refund in refund_list: refund_product = self.sorder.get_orderproductinfo_by_opiid( refund.OPIid) if refund_product: redfund_num = redfund_num + refund_product.OPIproductnum refundrate_f = 0 if salesvolume == 0 else redfund_num / float( salesvolume) refundrate = "%.2f%%" % (refundrate_f * 100) product.fill(refundrate, 'refundrate') product.fill(product.prbaid, 'prbaid') product.fill(product.PRstatus, 'prstatus') activitystatus = 0 acid = None ac_list = self.sactivity.get_acid_by_filterid({ 'AClinkvalue': product.PRid, 'ACSkipType': 2, 'ACisdelete': False }) if ac_list not in self.empty: for act in ac_list: temp_num = -1 if act.ACeditstatus is None else act.ACeditstatus activitystatus = temp_num + 1 acid = act.ACid zh_activitystatus = activity_edit_status.get(str(activitystatus)) product.fill(activitystatus, 'activitystatus') product.fill(zh_activitystatus, 'zh_activitystatus') product.fill(acid, 'acid') data = import_status('get_product_list_success', 'OK') data['data'] = product_list data["count"] = request.all_count data["page_count"] = request.page_count return data
def get_all(self): """获取条件下的所有活动 """ if is_tourist(): return AUTHORITY_ERROR(u"未登录") args = request.args.to_dict() logger.info("this is get all activity args %s", args) parameter_required(u'tnid') tnid = args.get('tnid') # 导航id suid = args.get('suid') # 管理员id lasting = args.get('lasting', 'true') # 是否正在进行的活动 acid = args.get("acid") if not acid: acid = None start = int(args.get('start', 0)) # 起始位置 count = int(args.get('count', 5)) # 取出条数 page = (args.get('page')) # 过滤跳转类型 skiptype = args.get('skiptype') if skiptype is None: settings = Partner() skiptype = settings.get_item('skip', 'skip_type') # 配置文件中的过滤条件(默认) if skiptype == 'all': skiptype = None # 分页 if not page: page = int(math.floor(start / count) + 1) if not (tnid or suid): raise PARAMS_MISS(u"参数缺失") try: topnav = self.stopnav.get_topnav_by_tnid(tnid) if not topnav: raise NOT_FOUND(u'无此tnid') if topnav.TNtype == 2 and str(tnid) != '1': # '1'为每日十荐页tnid skiptype = 0 print(skiptype) now_time = None if str(lasting) == 'true': now_time = datetime.strftime(datetime.now(), format_for_db) activity_list = self.sactivity.get_activity_by_topnavid( tnid, page, count, skiptype, acid, suid, now_time) logger.info("get activity_list success") # if suid: # activity_list = self.sactivity.get_activity_by_suid(suid, page, count) # if not activity_list: # raise SYSTEM_ERROR(u'数据库错误') for activity in activity_list: self.sactivity.update_view_num(activity.ACid) self.fill_detail(activity) self.fill_like_num(activity) self.fill_type(activity) activity.fill(activity.AClinkvalue, 'aclinkvalue') 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_list_success", "OK") data["count"] = request.all_count data["page_count"] = request.page_count data["data"] = activity_list return data except Exception as e: logger.exception("get activity error") generic_log(e) return e
def update_activity(self): if not is_admin(): raise AUTHORITY_ERROR(u'当前非管理员权限') args = request.args.to_dict() logger.debug("this is update activity args %s", args) data = request.json logger.debug("this is update activity data %s", data) parameter_required("acid") now_time = datetime.strftime(datetime.now(), format_for_web_second) acid = args.get('acid') ACstarttime = get_db_time_str(data.get('acstarttime', now_time)) # 活动开始时间, 默认当前时间 ACstarttime_str_to_time = datetime.strptime(ACstarttime, format_for_db) three_days_later = datetime.strftime( ACstarttime_str_to_time + timedelta(days=3650), format_for_db) ACendtime = get_db_time_str( data.get('acendtime', get_web_time_str( three_days_later))) # 活动结束时间, 默认3天以后,后期需求公告教程部分非必填,默认改为十年 TopnavId = data.get('topnavid') # 导航页面 ACtext = data.get('actext') # 文字内容 media = data.get('media') # 多媒体 tags = data.get('tags') # 右上角tag标签 ACistop = data.get('acistop', 0) ACtitle = data.get('actitle') AClinkvalue = data.get('aclinkvalue') SUid = data.get('suid') SUid = request.user.id if not SUid else str(SUid) ACSkipType = int(data.get('acskiptype', 0)) # 跳转类型 ACProductsSoldFakeNum = data.get('acproductssoldfakenum') ACforwardFakenum = data.get('acforwardFakenum') ACbrowsenum = data.get('acbrowsenum') AClikeFakeNum = data.get('aclikeFakeNum') accomments = data.get('accomments') if str(ACistop) == 'True': istop = self.sactivity.get_top_activity(TopnavId) if istop: self.sactivity.change_top_act_status(istop.ACid, {'ACistop': False}) image_num = 0 # 标志用来限制图片或视频的数量 if media: self.smedia.del_media_by_acid(acid) for img_or_video in media: img_or_video_keys = img_or_video.keys() if 'amimage' in img_or_video_keys and 'amvideo' not in img_or_video_keys: """图片""" self.smedia.add_model( 'ActivityMedia', **{ 'AMid': str(uuid.uuid1()), 'ACid': acid, 'AMimage': img_or_video.get('amimage'), 'AMsort': img_or_video.get('amsort', 1) }) image_num += 1 if image_num > 9: raise SYSTEM_ERROR(u"图片超出数量限制") elif 'amimage' not in img_or_video_keys and 'amvideo' in img_or_video_keys: """视频""" if image_num < 1: # 只有在无图片的状况下才会添加视频 self.smedia.del_media_by_acid(acid) self.smedia.add_model( 'ActivityMedia', **{ 'AMid': str(uuid.uuid1()), 'ACid': acid, 'AMvideo': img_or_video.get('amvideo') }) # 只可以添加一个视频, 且不可以再添加图片 break # 创建tag if tags: self.stags.del_tags_by_acid(acid) count = 0 for tag in tags: state = tag.get('atstate', 0) if str(state) not in ['0', '1']: raise PARAMS_ERROR(u'atstate参数错误') if state == 1: count += 1 elif count > 1: raise PARAMS_ERROR(u'默认显示角标只能有一个') for tag in tags: atstate = tag.get('atstate', 0) self.stags.add_model( 'ActivityTag', **{ 'ATid': str(uuid.uuid1()), 'ACid': acid, 'ATname': tag.get('atname'), 'ATstate': atstate }) if accomments: self.sacomment.del_robot_comment_by_acid(acid) for comments in accomments: self.sacomment.add_model( 'ActivityComment', **{ 'ACOid': str(uuid.uuid4()), 'ACid': acid, 'USid': 'robot', 'ACOrobot': comments.get('acorobot'), 'ACtext': comments.get('acotext'), 'ACOcreatetime': get_db_time_str() }) # 是否添加进入专题 baid = data.get('baid') model_dict = { 'ACSkipType': ACSkipType, 'AClinkvalue': AClinkvalue, 'SUid': SUid, 'ACtype': data.get('actype'), # 类型 'ACtext': ACtext, 'AClikeFakeNum': AClikeFakeNum, # 喜欢数 'ACbrowsenum': ACbrowsenum, # 浏览数 'ACforwardFakenum': ACforwardFakenum, # 转发数量 'ACProductsSoldFakeNum': ACProductsSoldFakeNum, # 商品的销售量 'ACstarttime': ACstarttime, 'ACendtime': ACendtime, 'ACtitle': ACtitle, 'ACistop': ACistop, 'BAid': baid, 'ACisdelete': data.get('acisdelete') } if baid: if ACSkipType != 2: raise PARAMS_ERROR(u'参数不合理, 仅跳转到商品的推文可以加入专题') model_dict['BAid'] = baid model_dict = { k: v for k, v in model_dict.items() if v not in self.empty } act_info = self.sactivity.update_activity_by_acid(acid, model_dict) if not act_info: raise SYSTEM_ERROR(u'数据错误') response = import_status('update_activity_success', 'OK') response['data'] = {'acid': acid} return response
def get_user_pay_reward(self): """查看用户支付时的优惠券""" if is_tourist(): raise TOKEN_ERROR(u'未登录') data = request.json logger.debug("get pay reward data is %s", data) skus = data.get('sku') # parameter_required('sku') from WeiDian.service.SProductSkuKey import SProductSkuKey if skus: total_price = 0 for sku in skus: price = SProductSkuKey().get_true_price(sku.get('pskid')) * int(sku.get('num')) total_price = total_price + price reward_info = self.sraward.get_reward_by_usid(request.user.id) from WeiDian.models.model import RewardTransfer gift_reward_info = self.sraward.get_gifts_by_usfrom_or_usid((RewardTransfer.USid==request.user.id, RewardTransfer.RFfrom==request.user.id)) try: reward_list = [] for reward in reward_info: if reward: reward_detail = self.sraward.get_raward_by_id(reward.RAid) reward_detail = self.fill_reward_detail(reward_detail, total_price) reward.fill(reward_detail, 'reward_detail') reward = dict(reward) lower_reward = {} for i, j in reward.items(): lower_reward[i.lower()] = j lower_reward['urcreatetime'] = get_web_time_str(lower_reward.get('urcreatetime')) reward_list.append(lower_reward) for gift in gift_reward_info: if gift not in ['', [], {}, None]: gift = self.fill_transfer_detail(gift) gift_detail = self.sraward.get_raward_by_id(gift.RAid) gift_detail = self.fill_reward_detail(gift_detail, total_price) # 检验转赠券在各情况下的有效性 gift_detail.valid = gift_detail.valid and gift.transfer_valid gift.fill(gift_detail, 'reward_detail') gift.RFcreatetime = get_web_time_str(gift.RFcreatetime) gift.RFendtime = get_web_time_str(gift.RFendtime) gift_dict = { 'urid': gift.RFid, 'usid': gift.USid, 'raid': gift.RAid, 'ranumber': gift.RAnumber, 'urcreatetime': gift.RFcreatetime, 'reendtime': gift.RFendtime, 'rffrom': gift.RFfrom, 'rfstatus': gift.RFstatus, 'urusetime': gift.RFusetime, 'remarks': gift.remarks, 'tag': gift.tag, 'usheader': gift.usheader, 'reward_detail': gift.reward_detail } reward_list.append(gift_dict) if reward_list not in [None, [], {}]: reward_info = filter(lambda r: r.get('reward_detail')['RAtype'] in [0, 2], reward_list) reward_info = filter(lambda k: k.get('ranumber') != 0, reward_info) data = import_status('messages_get_item_ok', "OK") data['data'] = reward_info return data except Exception as e: logger.exception("get user reward error") raise SYSTEM_ERROR(u'获取数据错误')
def get_user_reward(self): """获取用户(可转赠)优惠券""" if is_tourist(): raise TOKEN_ERROR(u'未登录') args = request.args.to_dict() logger.debug("get reward args is %s", args) allow_transfer = args.get('transfer') reward_info = self.sraward.get_reward_by_usid(request.user.id) from WeiDian.models.model import RewardTransfer gift_reward_info = self.sraward.get_gifts_by_usfrom_or_usid( (RewardTransfer.USid == request.user.id, RewardTransfer.RFfrom == request.user.id)) reward_list = [] for reward in reward_info: reward_detail = self.sraward.get_raward_by_id(reward.RAid) reward_detail = self.fill_reward_detail(reward_detail) reward.fill(reward_detail, 'reward_detail') reward = dict(reward) lower_reward = {} for i, j in reward.items(): lower_reward[i.lower()] = j lower_reward['urcreatetime'] = get_web_time_str(lower_reward.get('urcreatetime')) reward_list.append(lower_reward) for gift in gift_reward_info: gift = self.fill_transfer_detail(gift) gift_detail = self.sraward.get_raward_by_id(gift.RAid) gift_detail = self.fill_reward_detail(gift_detail) # 检验转赠券在各情况下的有效性 gift_detail.valid = gift_detail.valid and gift.transfer_valid gift.fill(gift_detail, 'reward_detail') gift.RFcreatetime = get_web_time_str(gift.RFcreatetime) gift.RFendtime = get_web_time_str(gift.RFendtime) gift_dict = { 'urid': gift.RFid, 'usid': gift.USid, 'raid': gift.RAid, 'ranumber': gift.RAnumber, 'urcreatetime': gift.RFcreatetime, 'reendtime': gift.RFendtime, 'rffrom': gift.RFfrom, 'rfstatus': gift.RFstatus, 'urusetime': gift.RFusetime, 'remarks': gift.remarks, 'tag': gift.tag, 'usheader': gift.usheader, 'reward_detail': gift.reward_detail } reward_list.append(gift_dict) # reward_info = filter(lambda r: r.get('reward_detail')['RAtype'] in [0, 2], reward_list) reward_info = filter(lambda k: k.get('ranumber') != 0, reward_list) if str(allow_transfer) == 'true': reward_info = filter(lambda r: r.get('reward_detail')['valid'] == True, reward_info) reward_info = filter(lambda r: r.get('reward_detail')['RAtransfer'] == True, reward_info) data = import_status('messages_get_item_ok', "OK") data['data'] = reward_info return data
def get_one_reward(self): """获取单张优惠券详情""" if is_tourist(): raise TOKEN_ERROR(u'未登录') # parameter_required('raid') args = request.args.to_dict() raid = args.get('raid') urid = args.get('urid') logger.debug("get reward info is %s", args) if urid: # 是赠送者原表里的 is_presenter_own_hold = self.sraward.is_user_hold_reward({'URid': urid}) # 在赠送者转赠表中,送出去过,已退回,可以继续转赠 is_presenter_gift_hold = self.sraward.is_user_hold_reward_in_gift( {'RFid': urid, 'RFstatus': 1}) if is_presenter_own_hold: raid = is_presenter_own_hold.RAid reward = self.sraward.get_raward_by_id(raid) reward_detail = self.fill_reward_detail(reward) is_presenter_own_hold.fill(reward_detail, 'reward_detail') elif is_presenter_gift_hold: raid = is_presenter_gift_hold.RAid gift = self.fill_transfer_detail(is_presenter_gift_hold) gift_detail = self.sraward.get_raward_by_id(raid) gift_detail = self.fill_reward_detail(gift_detail) # 检验转赠券在各情况下的有效性 gift_detail.valid = gift_detail.valid and gift.transfer_valid gift.fill(gift_detail, 'reward_detail') gift.RFcreatetime = get_web_time_str(gift.RFcreatetime) gift.RFendtime = get_web_time_str(gift.RFendtime) gift_dict = { 'urid': gift.RFid, 'usid': gift.USid, 'raid': gift.RAid, 'ranumber': gift.RAnumber, 'urcreatetime': gift.RFcreatetime, 'reendtime': gift.RFendtime, 'rffrom': gift.RFfrom, 'rfstatus': gift.RFstatus, 'urusetime': gift.RFusetime, 'remarks': gift.remarks, 'tag': gift.tag, 'usheader': gift.usheader, 'reward_detail': gift.reward_detail } else: raise NOT_FOUND(u'无此转赠优惠券信息') reward_detail = is_presenter_own_hold or gift_dict else: reward_info = self.sraward.get_raward_by_id(raid) if not reward_info: raise NOT_FOUND(u'无此券信息') reward_detail = self.fill_reward_detail(reward_info) presenter = self.suser.get_user_by_user_id(request.user.id) data = import_status("messages_get_item_ok", "OK") data['usname'] = presenter.USname data['usheader'] = presenter.USheader data['data'] = reward_detail return data