Exemplo n.º 1
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
Exemplo n.º 2
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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
    def add_complain(self):
        if not hasattr(request, 'user'):
            return TOKEN_ERROR  # 未登录, 或token错误
        parameter_required("OIid", "COtype")
        data = request.json
        try:
            complain = self.scomplain.get_complain_by_oiid(data.get("OIid"))
            logger.debug("get complain by oiid %s", complain)
            if complain:
                return import_status("complain_repeat_error", "WD_ERROR",
                                     "error_complain_exit")
            coid = str(uuid.uuid1())
            cotype_list = [str(i) for i in data.get("COtype", [])]

            self.scomplain.add_model(
                "Complain", **{
                    "COid": coid,
                    "COcontent": data.get("COcontent"),
                    "COtype": ",".join(cotype_list),
                    "OIid": data.get("OIid"),
                    "USid": request.user.id,
                    "COtreatstatus": 1,
                })
            response = import_status("complain_success", "OK")
            response['data'] = {"COid": coid}
            return response
        except:
            logger.exception("add complain error")
            return SYSTEM_ERROR
Exemplo n.º 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
Exemplo n.º 6
0
 def login(self):
     """超级用户登录"""
     json_data = request.json
     suname = json_data.get('suname').encode('utf8')
     supassword = json_data.get('supassword')
     logger.debug("super user login data is %s", json_data)
     # if not suname or not supassword:
     #     return PARAMS_MISS
     parameter_required('suname', 'supassword')
     try:
         suuser = self.ssuperuser.verify_super(suname, supassword)
         # if not suuser:
         #     return SYSTEM_ERROR
         if suuser.SUlevel == 0:
             level = 'customerservice'
         if suuser.SUlevel == 1:
             level = 'ordinaryadmin'
         if suuser.SUlevel == 2:
             level = 'superadmin'
         token = usid_to_token(suuser.SUid, 'SuperUser')
         token_data = {
             'token': token,
             'level': level,
             'head': suuser.SUheader
         }
         data = import_status('generic_token_success', 'OK')
         data['data'] = token_data
         return data
     except:
         logger.exception('super user login in error')
         raise SYSTEM_ERROR(u'用户名或密码错误')
Exemplo n.º 7
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
Exemplo n.º 8
0
    def update_recommend_by_reid(self):
        if not is_admin():
            raise AUTHORITY_ERROR(u'当前非管理员权限')  # 权限不足
        args = request.args.to_dict()
        logger.debug("update args is %s", args)
        data = request.json
        parameter_required(u'reid')
        logger.debug("update data is %s", data)
        reid = args.get('reid')
        recommend = {
            'REstarttime': get_db_time_str(data.get('restarttime')),
            'REendtime': get_db_time_str(data.get('reendtime')),
            'REfakeviewnum': data.get('reviewnum'),
            'RElikefakenum': data.get('relikenum'),
            'SUid': data.get('suid')
            # 'REisdelete': data.get('reisdelete')
        }
        recommend = {k: v for k, v in recommend.items() if v is not None}
        res = self.srecommend.update_recommend_by_reid(reid, recommend)
        if not res:
            raise SYSTEM_ERROR(u"信息修改错误")
        prid_list = data.get('prid_list')
        if prid_list:
            for item in prid_list:
                prid = item.get('prid')
                prisdelete = item.get('prisdelete')
                rpsort = item.get('rpsort')
                refilter = {'REid': reid, 'PRid': prid}
                already_exist_product = self.srecommend.get_exist_reproduct_by_filter(
                    refilter)
                if not already_exist_product:
                    add_model(
                        'RecommendProduct', **{
                            'REid': reid,
                            'PRid': prid,
                            'RPid': str(uuid.uuid4()),
                            'RPsort': rpsort
                        })
                else:
                    if prisdelete is True:
                        self.srecommend.del_reproduct_by_filter(refilter)
                    elif rpsort:
                        repr_changed = self.srecommend.get_exist_reproduct_by_filter(
                            {'RPsort': rpsort})
                        if repr_changed:
                            self.srecommend.update_exist_reproduct_by_filter(
                                {'RPid': repr_changed.RPid},
                                {'RPsort': already_exist_product.RPsort})
                    self.srecommend.update_exist_reproduct_by_filter(
                        refilter, {
                            'REid': reid,
                            'PRid': prid,
                            'RPsort': rpsort
                        })

        response_update_recommend = import_status('update_recommend_success',
                                                  'OK')
        response_update_recommend['data'] = {'reid': reid}
        return response_update_recommend
Exemplo n.º 9
0
 def del_task(self):
     if not is_admin():
         raise AUTHORITY_ERROR(u'权限不足')
     data = request.json
     parameter_required("TAid")
     logger.debug('get del task data, %s', data)
     update_result = self.stask.update_task(data.get("TAid"),
                                            {"TAstatus": 4})
     if not update_result:
         raise SYSTEM_ERROR(u'数据库异常')
     return import_status("delete_success", "OK")
Exemplo n.º 10
0
 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"服务器繁忙")
Exemplo n.º 11
0
 def add_one(self):
     """添加推荐"""
     # 此处无需添加图片, 关联商品id即可
     if not is_admin():
         return AUTHORITY_ERROR(u'当前非管理员权限')
     data = request.json
     logger.debug("data is %s", data)
     parameter_required('PRid_list')
     now_time = datetime.strftime(datetime.now(), format_for_web_second)
     restarttime = get_db_time_str(data.get('REstarttime',
                                            now_time))  # 上线时间, 默认当前时间
     restarttime_str_to_time = datetime.strptime(restarttime, format_for_db)
     days_later = datetime.strftime(
         restarttime_str_to_time + timedelta(days=7), format_for_web_second)
     reendtime = get_db_time_str(data.get('REendtime',
                                          days_later))  # 推荐下线时间, 默认7天以后
     relikefakenum = data.get('RElikenum', 0)  # 喜欢数
     refakeviewnum = data.get('REviewnum', 0)  # 浏览数
     prid_list = data.get('PRid_list')
     if not prid_list:
         raise PARAMS_MISS(u'缺失PRid_list')
     reid = str(uuid.uuid4())
     try:
         re_info = {
             # 'REid': reid,
             # 'SUid': request.user.id,
             'RElikefakenum': relikefakenum,
             'REfakeviewnum': refakeviewnum,
             'REstarttime': restarttime,
             'REendtime': reendtime,
         }
         update_info = self.srecommend.update_recommend_by_reid
     except Exception as e:
         logger.debug("add Recommend error")
         raise SYSTEM_ERROR(u'添加Recommend错误')
     try:
         for item in prid_list:
             add_model(
                 'RecommendProduct', **{
                     'REid': reid,
                     'PRid': item.get('PRid'),
                     'RPid': str(uuid.uuid4()),
                     'RPsort': item.get('RPsort')
                 })
     except Exception as e:
         logger.debug("add recommondproduct list error")
         raise SYSTEM_ERROR(u'添加每日推荐商品RecommendProduct内容出错')
     response_make_recommend = import_status('add_recommend_success', 'OK')
     response_make_recommend['data'] = {
         'reid': reid,
     }
     return response_make_recommend
Exemplo n.º 12
0
    def del_task_level(self):
        if not is_admin():
            raise AUTHORITY_ERROR(u'权限不足')
        data = request.json
        parameter_required("tlid")
        logger.debug('get del task level data, %s', data)
        tasklevel = self.stask.get_task_level_by_tlid(data.get("tlid"))
        if not tasklevel:
            return SYSTEM_ERROR(u'该任务等级不存在或已删除')
        self.stask.update_task_by_tlid(tasklevel.TLid, {"TAstatus": 4})
        self.stask.update_task_level(data.get("tlid"), {"TLisdelete": True})

        return import_status("delete_success", "OK")
Exemplo n.º 13
0
    def add_or_update_task_level(self):
        if not is_admin():
            raise AUTHORITY_ERROR(u"权限不足")
        parameter_required(*self.add_task_level)
        data = request.json
        logger.debug('get request data : %s', data)
        reward_list = data.get("reward")
        try:
            tasklevel = self.stask.get_tasklevel_by_level(
                int(data.get("TAlevel")))

            if not tasklevel:
                tlid = str(uuid.uuid1())
                self.stask.add_model(
                    "TaskLevel", **{
                        "TLid":
                        tlid,
                        "TAlevel":
                        data.get("TAlevel"),
                        "TArole":
                        data.get("TArole"),
                        "TAcomplateNotifications":
                        data.get("TAcomplateNotifications"),
                        "TLisdelete":
                        0
                    })

                for reward in reward_list:
                    self.add_task_raward(tlid, reward)

            else:
                update_result = self.stask.update_task_level(
                    tasklevel.TLid, {
                        "TAlevel":
                        data.get("TAlevel", 0),
                        "TArole":
                        data.get("TArole"),
                        "TAcomplateNotifications":
                        data.get("TAcomplateNotifications")
                    })
                if not update_result:
                    return import_status("update_data_error", "WEIDIAN_ERROR",
                                         "error_update_data")
                self.sraward.delte_task_raward_by_tlid(tasklevel.TLid)
                for reward in reward_list:
                    self.add_task_raward(tasklevel.TLid, reward)
            return import_status('add_task_success', 'OK')
        except:
            logger.exception('add or update task level error')
            return SYSTEM_ERROR(u"服务器繁忙")
Exemplo n.º 14
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
Exemplo n.º 15
0
    def set_share_params(self):
        if not is_admin():
            raise TOKEN_ERROR(u'请使用管理员登录')
        data = request.json
        title = data.get('title')
        # title = title.encode("utf8") if isinstance(title, unicode) else title

        content = data.get('content')
        img = data.get('img')

        parameter_required('title', 'content', 'img')
        Partner().set_item('share', 'title', title)
        Partner().set_item('share', 'content', content)
        Partner().set_item('share', 'img', img)
        response = import_status('set_success', 'OK')
        return response
Exemplo n.º 16
0
 def like_or_cancel(self):
     if not is_partner():
         return AUTHORITY_ERROR
     print '是合伙人'
     json_data = parameter_required('reid')
     reid = json_data.get('reid')
     already_like = self.srecommendlike.get_recommend_like_by_usidreid(request.user.id, reid)
     # recommend = self.srecommend.get_recommend_by_reid(reid)
     if not already_like:
         rl_dict = dict(
             rlid=str(uuid.uuid4()),
             usid=request.user.id,
             reid=reid
         )
         dict_add_models('RecommendLike', rl_dict)
         rlid = already_like.RLid if already_like else rl_dict['rlid']
         self.srecommend.add_like_num(reid)  # 数量更改
         data = import_status('add_recommend_like_success', 'OK')
         data['data'] = {'rlid': rlid}
         return data
     else:
         # 删除点赞
         self.srecommendlike.del_like(request.user.id, reid)
         self.srecommend.del_like_num(reid)
         response_make_like = import_status('cancel_recommend_like_success', 'OK')
         response_make_like['data'] = {'reid': reid}
         return response_make_like
Exemplo n.º 17
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
Exemplo n.º 18
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'收藏信息不存在')
Exemplo n.º 19
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
Exemplo n.º 20
0
 def add_one(self):
     """添加活动热文, 需要管理员登录"""
     if not is_admin():
         return AUTHORITY_ERROR  # 权限不足
     data = request.json
     logger.debug("add hotmessage data is ", data)
     parameter_required('HMtext', 'HMsort', 'HMSkipType')
     now_time = datetime.strftime(datetime.now(), format_for_db)
     HMstarttime = get_db_time_str(data.get('HMstarttime',
                                            now_time))  # 热文开始时间
     hmstarttime_str_to_time = datetime.strptime(HMstarttime, format_for_db)
     # 7天以后
     seven_days_later = datetime.strftime(
         hmstarttime_str_to_time + timedelta(days=7), format_for_db)
     HMendtime = get_db_time_str(data.get(
         'HMendtime', seven_days_later))  # 热文结束时间, 默认7天以后
     # if not self.sproduct.get_product_by_prid(prid):
     #     return SYSTEM_ERROR
     HMSkipType = data.get('HMSkipType')
     if str(HMSkipType) not in self.hotmessage_type:
         raise SYSTEM_ERROR(u'HMSkipType参数错误')
     HMdisplaytype = data.get("HMdisplaytype")
     if str(HMdisplaytype) not in self.hotmessage_display_type:
         raise SYSTEM_ERROR(u'HMdisplaytype参数错误')
     try:
         HMid = str(uuid.uuid1())
         self.s_hotmessage.add_model(
             'HotMessage', **{
                 'HMid': HMid,
                 'HMtext': data.get('HMtext'),
                 'HMstarttime': HMstarttime,
                 'HMendtime': HMendtime,
                 'HMsort': data.get('HMsort'),
                 'HMSkipType': HMSkipType,
                 "HMcontent": data.get("HMcontent"),
                 "HMdisplaytype": HMdisplaytype
             })
         response_make_hotmesasge = import_status('add_hotmessage_success',
                                                  'OK')
         response_make_hotmesasge['data'] = {'HMid': HMid}
         return response_make_hotmesasge
     except:
         logger.exception("create hotmessage error")
         return SYSTEM_ERROR(u'服务器繁忙')
Exemplo n.º 21
0
 def update_status(self):
     # if not is_admin():
     #     raise TOKEN_ERROR
     parameter_required('coid', 'cotreatstatus')
     data = request.json
     logger.debug('get update complain status %s', data)
     complain = self.scomplain.get_complain_by_coid(data.get("coid"))
     if not complain:
         raise PARAMS_MISS('params coid is not right')
     if not re.match(r'^[0-2]$', str(data.get("cotreatstatus"))):
         raise PARAMS_MISS('params cotreatstatus is not right')
     cotreatstatus = int(data.get("cotreatstatus"))
     if cotreatstatus <= complain.COtreatstatus:
         raise PARAMS_MISS('params cotreatstatus is not right')
     update_result = self.scomplain.update_complain(
         data.get("coid"), {"COtreatstatus": cotreatstatus})
     if not update_result:
         raise SYSTEM_ERROR(u"服务器繁忙")
     return import_status('update_complain_success', "OK")
Exemplo n.º 22
0
    def add_admin_by_superadmin(self):
        """超级管理员添加普通管理"""
        if not is_superadmin():
            raise AUTHORITY_ERROR(u'当前非超管权限')
        data = request.json
        logger.debug("add admin data is %s", data)
        parameter_required('suname', 'password', 'suheader')
        suid = str(uuid.uuid1())
        password = data.get('password')

        if len(password) < 4:
            raise PARAMS_ERROR(u'密码长度低于4位')
        zh_pattern = re.compile(u'[\u4e00-\u9fa5]+')
        match = zh_pattern.search(password)
        if match:
            raise PARAMS_ERROR(u'密码包含中文字符')

        suname = data.get('suname')
        sulevel = data.get('sulevel')
        sulevel = 1 if not sulevel else int(sulevel)
        if sulevel not in [0, 1]:
            raise PARAMS_ERROR(u'sulevel参数错误')
        sufilter = {'SUisdelete': False, 'SUname': suname}
        suexist = self.ssuperuser.get_existuser_by_name(sufilter)
        if suexist:
            raise SYSTEM_ERROR(u'用户名已存在')
        try:
            self.ssuperuser.add_model(
                'SuperUser', **{
                    'SUid': suid,
                    'SUname': suname,
                    'SUpassword': generate_password_hash(password),
                    'SUheader': data.get('suheader'),
                    'SUlevel': sulevel,
                })
            response = import_status("add_admin_success", "OK")
            response["data"] = {'suid': suid}
            return response
        except Exception as e:
            logger.exception("add admin error")
            raise SYSTEM_ERROR(u'添加管理员信息错误')
Exemplo n.º 23
0
    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
Exemplo n.º 24
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
Exemplo n.º 25
0
    def get_all_admin_by_filter(self):
        """获取所有管理员"""
        if not is_admin():
            raise AUTHORITY_ERROR(u'当前非管理员账户')
        args = request.args.to_dict()
        logger.debug("get admin args is %s", args)
        parameter_required('sutype')
        sutype = args.get('sutype')
        if not sutype:
            sutype = 'normal'
        if str(sutype) not in ['all', 'normal', 'freeze']:
            raise PARAMS_ERROR('sutype error')
        if str(sutype) == 'normal':
            sufilter = {'SUisdelete': False, 'SUidfreeze': False}
        elif str(sutype) == 'freeze':
            sufilter = {'SUisdelete': False, 'SUidfreeze': True}
        else:
            sufilter = {'SUisdelete': False}
        logger.debug("query sutype is %s", sutype)
        suser_list = self.ssuperuser.get_all_super_by_sufilter(sufilter)

        for suser in suser_list:
            suser.fill(suser.SUlevel, 'sulevel')
            suser.fill(suser.SUid, 'suid')
            if suser.SUlevel == 0:
                suser.level = 'customerservice'
            if suser.SUlevel == 1:
                suser.level = 'ordinaryadmin'
            if suser.SUlevel == 2:
                suser.level = 'superadmin'
            suser.fill(suser.level, 'levelmeaning')
            if suser.SUidfreeze is True:
                suser.sustatus = 'freeze'
            else:
                suser.sustatus = 'normal'
            suser.fill(suser.sustatus, 'sustatus')
        response = import_status("messages_get_item_ok", "OK")
        response['data'] = suser_list
        return response
Exemplo n.º 26
0
 def set_show_type(self):
     if not is_admin():
         raise TOKEN_ERROR(u'请使用管理员登录')
     data = parameter_required('skip_type')
     try:
         skip_type = str(data.get('skip_type'))
         if skip_type not in ['0', '1', '2']:
             raise TypeError()
     except TypeError as e:
         raise PARAMS_ERROR(u'参数skip_type错误')
     Partner().set_item('skip', 'skip_type', skip_type)
     response = import_status('set_success', 'OK')
     return response
Exemplo n.º 27
0
 def superadmin_to_update_others(self):
     if not is_superadmin():
         raise AUTHORITY_ERROR(u'当前非超管权限')
     data = request.json
     logger.debug("update admin data is %s", data)
     parameter_required('suid')
     suid = data.get('suid')
     password = data.get('password')
     sulevel = data.get("sulevel")
     sulevel = 1 if not sulevel else int(sulevel)
     if sulevel not in [0, 1]:
         raise PARAMS_ERROR(u'sulevel参数错误')
     change_suser = self.ssuperuser.get_one_super_by_suid(suid)
     if not change_suser:
         raise NOT_FOUND(u'要修改的信息不存在')
     upinfo = {
         "SUid": suid,
         "SUname": data.get("suname"),
         "SUheader": data.get("suheader"),
         "SUlevel": sulevel,
         "SUidfreeze": data.get("suisfreeze"),
         "SUisdelete": data.get("suisdelete")
     }
     upinfo = {k: v for k, v in upinfo.items() if v not in self.empty}
     if password:
         if len(password) < 4:
             raise PARAMS_ERROR(u'密码长度低于4位')
         zh_pattern = re.compile(u'[\u4e00-\u9fa5]+')
         match = zh_pattern.search(password)
         if match:
             raise PARAMS_ERROR(u'密码包含中文字符')
         pwdhashed = generate_password_hash(password)
         upinfo["SUpassword"] = pwdhashed
     changed = self.ssuperuser.update_info(suid, upinfo)
     if not changed:
         raise SYSTEM_ERROR(u"修改信息不存在")
     response = import_status("update_superinfo_success", "OK")
     response['data'] = {'suid': suid}
     return response
Exemplo n.º 28
0
 def update_sku_price(self):
     """更新sku里的售价/进价/利润"""
     if not is_admin():
         raise AUTHORITY_ERROR(u'请使用管理员账号重新登录')
     data = request.json
     pskid = data.get('pskid')
     parameter_required('pskid')
     logger.debug("update sku price data is %s", data)
     sku_info = self.sproductskukey.get_psk_by_pskid(pskid)
     if not sku_info:
         raise NOT_FOUND(u'没有找到相应的sku')
     price_dict = {
         "PSKprice": data.get('pskprice'),
         "PSKprofict": data.get('pskprofict'),
         "PSKpurchase": data.get('pskpurchase')
     }
     price_dict = {
         k: v
         for k, v in price_dict.items() if v not in self.empty
     }
     if price_dict not in self.empty:
         up_info = self.sproductskukey.update_sku_price_by_filter(
             {'PSKid': pskid}, price_dict)
         if not up_info:
             raise SYSTEM_ERROR(u'更新数据错误')
     # 操作日志
     operation_dict = {
         "PSKprice": u'更新售价',
         "PSKprofict": u'更新利润',
         "PSKpurchase": u'更新进货价'
     }
     if price_dict not in self.empty:
         for i in price_dict.keys():
             self.__make_product_recording(sku_info.PRid, sku_info.PSskuid,
                                           operation_dict[i])
     response = import_status("update_success", "OK")
     response['data'] = {'pskid': pskid}
     return response
Exemplo n.º 29
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')
Exemplo n.º 30
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")