def update_manager_by_matel(self): args = request.args.to_dict() log.info("args", args) if "token" not in args: return PARAMS_MISS data = json.loads(request.data) log.info("data", data) if "MAtelphone" not in data: return PARAMS_MISS maid = token_to_usid(args.get("token")) manager = self.smanager.get_manager_by_maid(maid) if manager.MAidentity > 101: return get_response("ERROR_MESSAGE_NO_PERMISSION", "MANAGERSYSTEMERROR", "ERROR_CODE_NO_PERMISSION") try: from ManagerSystem.models.model import Manager mng = { "MAstatus": conversion_MAstatus_resverse.get(get_str(data, "MAstatus")) } update_result = self.smanager.update_users_by_matel( data.get("MAtelphone"), mng) if not update_result: return get_response("ERROR_MESSAGE_DB_ERROR", "MANAGERSYSTEMERROR", "ERROR_CODE_DB_ERROR") return get_response("SUCCESS_MESSAGE_UPDATE_DATA", "OK") except Exception as e: log.error("update users", e.message) return SYSTEM_ERROR
def update_manager(self): args = request.args.to_dict() log.info("args", args) if "token" not in args: return PARAMS_MISS data = json.loads(request.data) log.info("data", data) if "MAidentity" not in data or "MAstatus" not in data: return PARAMS_MISS manager = {"MAcreatTime": TimeManager.get_db_time_str()} if data.get("MAidentity"): manager["MAidentity"] = conversion_MAidentity_reverse.get( data.get("MAidentity", "卖家")) if data.get("MAstatus"): manager["MAstatus"] = conversion_MAstatus_resverse.get( data.get("MAstatus"), "可用") maid = token_to_usid(args.get("token")) try: self.smanager.update_manager(maid, manager) return get_response("SUCCESS_MESSAGE_GET_INFO", "OK") except Exception as e: log.error("UPDATEERROR", e.message) return SYSTEM_ERROR
def add_category(self): args = request.args.to_dict() log.info("args", args) data = json.loads(request.data) if "token" not in args: return PARAMS_MISS # todo 权限审核 try: maid = token_to_usid(args.get("token")) except: return TOKEN_ERROR ctfromid = "0" if "CTid" in data: ctfromid = get_str(data, "CTid") try: ctid = str(uuid.uuid1()) cateary = { "CTid": ctid, "CTfromid": ctfromid, "MAid": maid, "CTname": data.get("CTname") } self.scategory.add_model("Category", **cateary) except Exception as e: log.error("add category", e.message) return SYSTEM_ERROR
def get_users(self): args = request.args.to_dict() log.info("args", args) if "token" not in args: return PARAMS_MISS maid = token_to_usid(args.get("token")) try: manager = self.smanager.get_manager_by_maid(maid) if not manager: return SYSTEM_ERROR if manager.MAidentity > 101: return get_response("ERROR_MESSAGE_NO_PERMISSION", "MANAGERSYSTEMERROR", "ERROR_CODE_NO_PERMISSION") page_size = int(args.get("page_size")) page_num = int(args.get("page_num")) or_filter = set() if args.get("USfilter"): from ManagerSystem.models.model import Users or_filter.add( Users.USname.like("%{0}%".format(get_str(args, "USfilter")))) or_filter.add( Users.UStelphone.like("%{0}%".format( get_str(args, "USfilter")))) from ManagerSystem.config.conversion import conversion_USsex pn, count = self.check_page_value(page_num, page_size, "model.Users.USid", set(), or_filter) start_num = (pn - 1) * page_size users = tolist( self.smanager.get_users(start_num, page_size, or_filter)) for user in users: user["USsex"] = conversion_USsex.get(user.get("USsex")) user["UScreateTime"] = TimeManager.get_web_time_str( user.get("UScreateTime")) user["USloginTime"] = TimeManager.get_web_time_str( user.get("USloginTime")) user["USstatus"] = conversion_MAstatus.get( user.get("USstatus")) response = get_response("SUCCESS_MESSAGE_GET_INFO", "OK") response["data"] = { "count": count, "page_num": pn, "page_size": page_size, "USers": users } return response except Exception as e: log.error("get users", e.message) return SYSTEM_ERROR
def update_product_status(self): args = request.args.to_dict() log.info("args", args) maid = token_to_usid(args.get("token")) if "token" not in args: return PARAMS_MISS data = json.loads(request.data, encoding="utf8") log.info("data", data) if "PRstatus" not in data or "PRid" not in data: return PARAMS_MISS prstatus = get_str(data, "PRstatus") pridlist = data.get("PRid") self.on_or_off_shelves(pridlist, conversion_PBstatus_reverse.get(prstatus), maid) return get_response("SUCCESS_MESSAGE_UPDATE_DATA", "OK")
def get_managers(self): args = request.args.to_dict() log.info("args", args) if "token" not in args: return PARAMS_MISS page_size = int(args.get("page_size")) page_num = int(args.get("page_num")) or_filter = set() if "MAfilter" in args: from ManagerSystem.models.model import Manager or_filter.add( Manager.MAnicname.like("%{0}%".format(get_str( args, "MAfilter")))) or_filter.add( Manager.MAemail.like("%{0}%".format(get_str(args, "MAfilter")))) maid = token_to_usid(args.get("token")) try: pn, count = self.check_page_value(page_num, page_size, "model.Manager.MAid", set(), or_filter) start_num = (pn - 1) * page_size manager = self.smanager.get_manager_by_maid(maid) if not manager: return SYSTEM_ERROR manager_list = tolist( self.smanager.get_managers(start_num, page_size, or_filter)) for manager in manager_list: manager["MAidentity"] = conversion_MAidentity.get( manager.get("MAidentity")) manager["MAstatus"] = conversion_MAstatus.get( manager.get("MAstatus")) manager["MAloginTime"] = TimeManager.get_web_time_str( manager.get("MAloginTime")) manager["MAcreatTime"] = TimeManager.get_web_time_str( manager.get("MAcreatTime")) response = get_response("SUCCESS_MESSAGE_GET_INFO", "OK") response["data"] = { "count": count, "page_num": pn, "page_size": page_size, "Managers": manager_list } return response except Exception as e: log.error("get managers", e.message) return SYSTEM_ERROR
def get_manager(self): args = request.args.to_dict() log.info("args", args) if "token" not in args: return PARAMS_MISS maid = token_to_usid(args.get("token")) try: manager = todict(self.smanager.get_manager_by_maid(maid)) manager["MAstatus"] = conversion_MAstatus.get( manager.get("MAstatus")) manager["MAidentity"] = conversion_MAidentity.get( manager.get("MAidentity")) return manager except Exception as e: log.error("ERROR", e.message) return SYSTEM_ERROR
def add_manager(self): args = request.args.to_dict() log.info("args", args) if "token" not in args: return PARAMS_MISS smid = token_to_usid(args.get("token")) smanager = self.smanager.get_manager_by_maid(smid) if smanager.MAidentity != 100: return get_response("ERROR_MESSAGE_NO_PERMISSION", "MANAGERSYSTEMERROR", "ERROR_CODE_NO_PERMISSION") data = json.loads(request.data) log.info("data", data) manager_key = ["MAtelphone", "MAemail", "MAname"] manager = {} for key in manager_key: if key in data: manager[key] = data.get(key) maid = str(uuid.uuid1()) manager["MAid"] = maid manager["MAname"] = get_str(data, "MAname") manager["MAtelphone"] = get_str(data, "MAtelphone") manager["MApassword"] = self.create_password() manager["MAemail"] = get_str(data, "MAemail") manager["MAidentity"] = 101 manager["MAstatus"] = 153 manager["MAstatus"] = 153 manager["MAcreatTime"] = TimeManager.get_db_time_str() manager["MAendTime"] = TimeManager.get_forward_time(days=365) manager["MAloginTime"] = TimeManager.get_db_time_str() self.smanager.add_model("Manager", **manager) from ManagerSystem.service.SInterface import SInterface from ManagerSystem.models.model import Menu sinterface = SInterface() mmlist = sinterface.get_menu_by_filter({Menu.MNparent != "0"}) for mm in mmlist: self.smanager.add_model("ManagerMenu", MMid=str(uuid.uuid1()), MAid=maid, MNid=mm.MNid) response = get_response("SUCCESS_MESSAGE_REGISTER", "OK") response["data"] = manager return response
def get_acabo(self): args = request.args.to_dict() log.info("args", args) if "token" not in args or "COid" not in args: return PARAMS_MISS try: maid = token_to_usid(args.get("token")) except: return TOKEN_ERROR manager = self.smanager.get_manager_by_maid(maid) if not manager: return TOKEN_ERROR coid = args.get("COid") try: co = tolist( self.sactive.get_actives_by_filter( {CouponsActives.COid == coid}, set())) log.info("co", co) if not co: return get_response("ERROR_MESSAGE_DB_ERROR", "MANAGERSYSTEMERROR", "ERROR_CODE_DB_ERROR") co = co[0] co["COstatus"] = conversion_COstatus.get(co["COstatus"]) co["COtype"] = conversion_COtype.get(co["COtype"]) co["COstart"] = TimeManager.get_web_time_str(co["COstart"]) co["COend"] = TimeManager.get_web_time_str(co["COend"]) co["COunit"] = conversion_PBunit.get(co["COunit"]) co["COgenre"] = conversion_COgenre.get(co["COgenre"]) co["COimage"] = json.loads(co["COimage"]) cm_list = self.sactive.get_cm_by_filter( {CouponsManager.COid == coid}, set()) prid = [] for cm in cm_list: if cm.PRid: prid.append(cm.PRid) co["PRids"] = prid response = get_response("SUCCESS_MESSAGE_GET_INFO", "OK") response["data"] = co return response except Exception as e: log.error("get abo", e.message) return SYSTEM_ERROR
def add_product(self): args = request.args.to_dict() log.info("args", args) data = json.loads(request.data) log.info("data", data) if "token" not in args: return PARAMS_MISS # if "PRid" not in data: # return PARAMS_MISS try: maid = token_to_usid(args.get("token")) except Exception as e: return TOKEN_ERROR # 库存 prid = data.get("PRid") # todo 拆分更新 prid = prid if prid else str(uuid.uuid1()) # try: if not self.add_brands(prid, data.get("brands"), data.get("brands_key")): return get_response("ERROR_MESSAGE_WRONG_BRNADS", "MANAGERSYSTEMERROR", "ERROR_CODE_WRONG_BRANDS") product = { "PRid": prid, "PRname": data.get("PRname", ""), "PRvideo": data.get("PRvideo", ""), "PRimage": json.dumps(data.get("PRimage", [])), "PRaboimage": json.dumps(data.get("PRaboimage", "")), "PRinfo": data.get("PRinfo", ""), "PRvideostart": data.get("PRvideostart", ""), "PRfranking": data.get("PRfranking", 0.0), "MAid": maid, "PRtype": conversion_PRtype_reverse.get(get_str(data, "PRtype", "自营")), "PRbrand": json.dumps(data.get("PRbrand")), "PRtime": TimeManager.get_db_time_str(), "CTid": data.get("CTid") } self.sproduct.add_model("Products", **product) self.add_approval(maid, prid) return get_response("SUCCESS_MESSAGE_ADD_DATA", "OK")
def update_password(self): args = request.args.to_dict() if "token" not in args: return PARAMS_MISS log.info("args", args) maid = token_to_usid(args.get("token")) data = json.loads(request.data) log.info("data", data) params_key = ["MApasswordNew", "MApasswordRepeat", "MApasswordOld"] for key in params_key: if key not in data: return PARAMS_MISS new_pwd = data.get("MApasswordNew") repeat_pwd = data.get("MApasswordRepeat") old_pwd = data.get("MApasswordOld") if new_pwd and repeat_pwd and new_pwd != repeat_pwd: return get_response("ERROR_MESSAGE_WRONG_PARAMS", "MANAGERSYSTEMERROR", "ERROR_CODE_WRONG_PARAMS") try: password = self.smanager.get_manager_by_maid(maid).MApassword log.info("password", password) if password != old_pwd: return get_response("ERROR_MESSAGE_WRONG_PASSWORD", "MANAGERSYSTEMERROR", "ERROR_WRONG_PASSWORD") except Exception as e: log.error("DBERROR", e.message) return SYSTEM_ERROR try: result = self.smanager.update_manager(maid, {"MApassword": new_pwd}) log.info("update result", result) if result == 1: return get_response("SUCCESS_MESSAGE_UPDATE_PASSWORD", "OK") except Exception as e: log.error("UPDATEERROR", e.message) return SYSTEM_ERROR
def update_active_status(self): args = request.args.to_dict() log.info("args", args) if "token" not in args: return PARAMS_MISS data = json.loads(request.data) log.info("data", data) try: maid = token_to_usid(args.get("token")) except: return TOKEN_ERROR manager = self.smanager.get_manager_by_maid(maid) if not manager: return TOKEN_ERROR coid = data.get("COid") log.info("coid", coid) log.info("maid", maid) costatus = conversion_COstatus_resverse.get(get_str(data, "COstatus")) try: cmlist = self.sactive.get_cm_by_filter( {CouponsManager.MAid == maid, CouponsManager.COid == coid}, set()) log.info("cmlist", cmlist) if not cmlist: return SYSTEM_ERROR update_result = self.sactive.update_actives( coid, {"COstatus": costatus}) log.info("update result", update_result) if not update_result: return get_response("ERROR_MESSAGE_DB_ERROR", "MANAGERSYSTEMERROR", "ERROR_CODE_DB_ERROR") return get_response("SUCCESS_MESSAGE_UPDATE_ORDER", "OK") except Exception as e: log.error("update actiave status", e.message) return SYSTEM_ERROR
def get_order_abo(self): try: args = request.args.to_dict() log.info("args", args) if "token" not in args or "OMid" not in args: return PARAMS_MISS maid = token_to_usid(args.get("token")) if not maid: return TOKEN_ERROR order_main = todict( self.sorder.get_order_main_by_om_id(get_str(args, "OMid"))) order_main.pop("USid") self._get_order_abo_by_order_main(order_main) log.info("order main", order_main) data = get_response("SUCCESS_MESSAGE_GET_INFO", "OK") data["data"] = order_main return data except Exception as e: log.error("get order abo", e.message) return SYSTEM_ERROR
def get_active(self): args = request.args.to_dict() log.info("args", args) params_key = ["token", "page_size", "page_num", "COgenre"] for key in params_key: if key not in args: return PARAMS_MISS try: maid = token_to_usid(args.get("token")) except: return TOKEN_ERROR manager = self.smanager.get_manager_by_maid(maid) if not manager: return TOKEN_ERROR page_num = int(args.get("page_num")) page_size = int(args.get("page_size")) start_time = "" end_time = "" if args.get("COstart"): start_time = TimeManager.get_db_time_str(args.get("COstart")) if args.get("COend"): end_time = TimeManager.get_db_time_str(args.get("COend")) amfilter = {CouponsManager.MAid == maid} cm_dict = {} for cm in self.sactive.get_cm_by_filter(amfilter, set()): if cm.COid not in cm_dict: cm_dict[cm.COid] = [cm.PRid] else: cm_dict[cm.COid].append(cm.PRid) active_list = [] for coid in cm_dict: am_tmp_filter = { CouponsActives.COid == coid, CouponsActives.COgenre == conversion_COgenre_resverse.get( get_str(args, "COgenre")), CouponsActives.COstatus != 560 } ca_list = tolist( self.sactive.get_actives_by_filter(am_tmp_filter, set())) for ca in ca_list: if args.get("COname") and get_str( args, "COname") not in get_str(ca, "COname"): continue if args.get("COid") and get_str(args, "COid") not in get_str( ca, "COid"): continue if args.get("COstatus") and conversion_COstatus_resverse.get( get_str(args, "COstatus")) != ca.get("COstatus"): continue if start_time and start_time > ca.get("COend"): continue if end_time and end_time < ca.get("COstart"): continue if args.get("COtype") and conversion_COtype_resverse.get( get_str(args, "COtype")) != ca.get("COtype"): continue ca["COstatus"] = conversion_COstatus.get(ca["COstatus"]) ca["duration"] = TimeManager.get_delta_time( ca["COstart"], ca["COend"]) ca["COstart"] = TimeManager.get_web_time_str(ca["COstart"]) ca["COend"] = TimeManager.get_web_time_str(ca["COend"]) ca["COunit"] = conversion_PBunit.get(ca["COunit"]) ca["COtype"] = conversion_COtype.get(ca.get("COtype")) ca["PRids"] = cm_dict.get(coid) ca["COimage"] = json.loads(ca["COimage"]) ca["get_num"] = len( self.sactive.get_cp_by_filter({Cardpackage.COid == coid}, set())) active_list.append(ca) count = len(active_list) if page_size * page_num > count: page_num = count / page_size + 1 active_list = active_list[(page_num - 1) * page_size:page_num * page_size] response = get_response("SUCCESS_MESSAGE_GET_INFO", "OK") response["count"] = count response["page_size"] = page_size response["page_num"] = page_num response["CouponsActives"] = active_list return response
def get_situation(self): args = request.args.to_dict() log.info("args", args) if "token" not in args: return PARAMS_MISS maid = token_to_usid(args.get("token")) try: manager = self.smanager.get_manager_by_maid(maid) if not manager: return SYSTEM_ERROR dealing_sum = 0 approvaling_sum = 0 deliver_sum = 0 ordered_sum = 0 paid_num = 0 ordered_price_sum = 0 payed_price_sum = 0 active_sum = 0 couponse_sum = 0 today_omprice = 0 today_vistor = 0 today_order = 0 today_payed = 0 yesterday_omprice = 0 yesterday_vistor = 0 yesterday_order = 0 yesterday_payed = 0 time_filter_week = TimeManager.get_forward_time(days=-7) time_filter_yesterday = TimeManager.get_forward_time( days=-1)[:8] + "000000" time_filter_today = TimeManager.get_db_time_str()[:8] + "000000" from ManagerSystem.service.SApproval import SApproval sapproval = SApproval() approval = [ apr.APname for apr in sapproval.get_approval_by_maid(maid) ] approval = {}.fromkeys(approval).keys() approvaling_sum = len(approval) from ManagerSystem.service.SOrder import SOrder from ManagerSystem.service.SProducts import SProducts from ManagerSystem.config.conversion import conversion_OMstatus, conversion_OMstatus_reverse sorder = SOrder() sproduct = SProducts() prid_list = [ product.PRid for product in sproduct.get_product_by_maid(maid) ] pbid_list = [] for prid in prid_list: pbid_list.extend( [pb.PBid for pb in sproduct.get_pbid_by_prid(prid)]) omid_list = [] for pbid in pbid_list: omid_list.extend([ op.OMid for op in sorder.get_order_part_list_by_pbid(pbid) ]) omid_list = {}.fromkeys(omid_list).keys() om_count = {k: 0 for k in conversion_OMstatus} for omid in omid_list: om = sorder.get_order_main_by_om_id(omid) om_count[om.OMstatus] += 1 if om.OMtime > time_filter_week: if om.OMstatus >= 21: paid_num += 1 payed_price_sum += om.OMprice if om.OMstatus >= 7: ordered_sum += 1 ordered_price_sum += om.OMprice if om.OMtime[:8] == time_filter_today[:8]: if om.OMstatus >= 21: today_omprice += om.OMprice today_payed += 1 if om.OMstatus >= 7: today_order += 1 elif om.OMtime[:8] == time_filter_yesterday[:8]: if om.OMstatus >= 21: yesterday_payed += 1 yesterday_omprice += om.OMprice if om.OMstatus >= 7: yesterday_order += 1 # om_count_result = {} # for status in om_count: # om_count_result[conversion_OMstatus.get(status)] = om_count.get(status, 0) deliver_sum = om_count.get(21) dealing_sum = deliver_sum + approvaling_sum from ManagerSystem.service.SActive import SActive from ManagerSystem.models.model import CouponsManager from ManagerSystem.models.model import CouponsActives sactive = SActive() cmlist = [ cm.COid for cm in sactive.get_cm_by_filter( {CouponsManager.MAid == maid}, set()) ] cmlist = {}.fromkeys(cmlist).keys() for coid in cmlist: ca = sactive.get_actives_by_filter( { CouponsActives.COid == coid, CouponsActives.COstatus == 551 }, set()) if ca: ca = ca[0] if ca.COgenre == 561: couponse_sum += 1 elif ca.COgenre == 562: active_sum += 1 visitors_sum = len( self.smanager.get_visitors_by_maid(maid, time_filter_week)) today_vistor = len( self.smanager.get_visitors_by_maid(maid, time_filter_today)) yesterday_vistor = len( self.smanager.get_visitors_by_maid(maid, time_filter_yesterday)) from decimal import Decimal vto = (Decimal(ordered_sum) / (Decimal(visitors_sum))).quantize( Decimal('0.00')) if visitors_sum != 0 else 0 vtp = (Decimal(paid_num) / (Decimal(visitors_sum))).quantize( Decimal('0.00')) if visitors_sum != 0 else 0 otp = (Decimal(paid_num) / (Decimal(ordered_sum))).quantize( Decimal('0.00')) if ordered_sum != 0 else 0 pct = (Decimal(payed_price_sum) / (Decimal(paid_num))).quantize( Decimal("0.00")) if paid_num != 0 else 0 response = get_response("SUCCESS_MESSAGE_GET_INFO", "OK") response["data"] = { "deliver_sum": deliver_sum, "approvaling_sum": approvaling_sum, "dealing_sum": dealing_sum, "om_count": om_count, "active_sum": active_sum, "couponse_sum": couponse_sum, "vtp": float(vtp), "vto": float(vto), "otp": float(otp), "today_vistor": today_vistor, "today_omprice": today_omprice, "today_order": today_order, "today_payed": today_payed, "yesterday_omprice": yesterday_omprice, "yesterday_vistor": yesterday_vistor, "yesterday_order": yesterday_order, "yesterday_payed": yesterday_payed, "paid_num": paid_num, "ordered_sum": ordered_sum, "visitors_sum": visitors_sum, "payed_price_sum": payed_price_sum, "ordered_price_sum": ordered_price_sum, "pct": float(pct), } return response except Exception as e: log.error("get situation", e.message) return SYSTEM_ERROR
def get_all(self): args = request.args.to_dict() log.info("args", args) if "token" not in args or "page_size" not in args or "page_num" not in args: return PARAMS_MISS page_size = int(args.get("page_size")) page_num = int(args.get("page_num")) maid = token_to_usid(args.get("token")) from ManagerSystem.models.model import Products pro_fillter = {Products.MAid == maid} sub_filter = set() if args.get("product_filter"): product_filter = get_str(args, "product_filter") sub_filter = { Products.PRname.like("%{0}%".format(product_filter)), Products.PRinfo.like("%{0}%".format(product_filter)) } pn, count = self.check_page_value(page_num, page_size, "model.Products.PRid", pro_fillter, sub_filter) start_num = (pn - 1) * page_size PRid_list = [products.PRid for products in self.sproduct.get_all_prid(start_num, page_size, pro_fillter, sub_filter)] log.info("PRid list", PRid_list) pbstatus = get_str(args, "PBstatus") # todo 增加遍历输出所有图片 # htv = float(args.get("htv", 0.48)) # from ManagerSystem.common.Gethdp import get_hdp # hdp = get_hdp(htv) product_infos = [] for PRid in PRid_list: product = todict(self.sproduct.get_product_by_prid(PRid)) log.info("product", product) if not product: return SYSTEM_ERROR product["PRid"] = PRid product["PRimage"] = json.loads(product.get("PRimage")) product["PRaboimage"] = json.loads(product.get("PRaboimage")) product["PRtype"] = conversion_PRtype.get(get_str(product, "PRtype")) product["PRtime"] = TimeManager.get_web_time_str(product.get("PRtime")) product["PRbrand"] = json.loads(product.get("PRbrand")) log.info("pbstatus", pbstatus) saleamount = 0 stockamout = 0 if not pbstatus: pb_list = tolist(self.sproduct.get_pball_by_prid(PRid)) else: pb_list = tolist(self.sproduct.get_pball_by_prid_pbstatus(PRid, conversion_PBstatus_reverse.get(pbstatus))) PRstatus = "" for pb in pb_list: saleamount += int(pb.get("PBsalesvolume")) PRstatus = conversion_PBstatus.get(pb.get("PBstatus")) stockamout += sum([int(st.get("PBnumber", 0)) for st in tolist(self.stock.get_stocks_by_PBid(pb.get("PBid")))]) pb.update(product) if not PRstatus: count -= 1 continue # product_infos.extend(pb_list) product["PRsalesvolume"] = saleamount product["PRstock"] = stockamout product["PRstatus"] = PRstatus product_infos.append(product) response_of_product = get_response("SUCCESS_MESSAGE_GET_INFO", "OK") response_of_product["data"] = { "count": count, "page_num": page_num, "page_size": page_size, "products": product_infos } log.info("response", response_of_product) return response_of_product
def get_situation(self): args = request.args.to_dict() log.info("args", args) if "token" not in args: return PARAMS_MISS try: maid = token_to_usid(args.get("token")) except: return TOKEN_ERROR manager = self.smanager.get_manager_by_maid(maid) if not manager: return TOKEN_ERROR # start_time = int(args.get("days", 1)) end_time = TimeManager.get_db_time_str(args.get("end_time")) start_time = TimeManager.get_db_time_str(args.get("start_time")) try: cm_list = self.sactive.get_cm_by_filter( {CouponsManager.MAid == maid}, set()) log.info("cm list", cm_list) coid_list_all = {}.fromkeys([cm.COid for cm in cm_list]).keys() # timefilter = TimeManager.get_forward_time_web(days=-days) cogenre = conversion_COgenre_resverse.get(get_str(args, "COgenre")) log.info("COgenre", cogenre) # 筛选优惠券/活动 coid_list_filter = [] for coid in coid_list_all: ca = self.sactive.get_actives_by_filter( {CouponsActives.COid == coid}, set()) log.info("ca", ca) if ca: ca = ca[0] if ca.COgenre != cogenre: continue coid_list_filter.append(ca.COid) om_list = self.sorder.get_om_by_filter(set()) used_sum = 0 for om in om_list: if om.COid in coid_list_filter and end_time > om.OMtime > start_time: used_sum += 1 cp_list = self.sactive.get_cp_by_filter(set(), set()) get_num = 0 for cp in cp_list: if cp.COid in coid_list_filter and end_time > cp.CPtime > start_time: get_num += 1 data_dict = {} days = TimeManager.get_delta_days(start_time, end_time) log.info("days", days + 1) for i in range(0, days + 1): sub_time_filter_start = TimeManager.get_forward_time_web( days=-(i + 1)) sub_time_filter_end = TimeManager.get_forward_time_web(days=-i) sub_om_num = 0 for om in om_list: if om.COid in coid_list_filter and sub_time_filter_end < om.OMtime < sub_time_filter_start: sub_om_num += 1 sub_cp_num = 0 for cp in cp_list: sub_cp_num += 1 if cp.COid in coid_list_filter and sub_time_filter_end < cp.CPtime < sub_time_filter_start: sub_cp_num += 1 data_dict[sub_time_filter_start] = [sub_om_num, sub_cp_num] response = get_response("SUCCESS_MESSAGE_GET_INFO", "OK") params = [ { "name": "领取张数", "value": get_num }, { "name": "使用张数", "value": used_sum }, ] response["data"] = {"params": params, "data": data_dict} return response except Exception as e: log.error("get situation", e.message) return SYSTEM_ERROR
def add_active(self): args = request.args.to_dict() log.info("args", args) if "token" not in args: return PARAMS_MISS data = json.loads(request.data) log.info("data", data) try: maid = token_to_usid(args.get("token")) except: return TOKEN_ERROR manager = self.smanager.get_manager_by_maid(maid) if not manager: return TOKEN_ERROR params_list = ["COname", "COabo", "COtype", "COstart", "COend"] for key in params_list: if key not in data: return PARAMS_MISS acstart = TimeManager.get_db_time_str(get_str(data, "COstart")) acend = TimeManager.get_db_time_str(get_str(data, "COend")) if acstart >= acend: return get_response("ERROR_MESSAGE_TIME_ERROR", "MANAGERSYSTEMERROR", "ERROR_CODE_TIME_ERROR") coid = str(uuid.uuid1()) CA = { "COid": coid, "COabo": get_str(data, "COabo"), "COimage": json.dumps(data.get("COimage")), "COname": get_str(data, "COname"), "COstatus": conversion_COstatus_resverse.get(get_str(data, "COstatus"), 550), "COstart": acstart, "COend": acend, "COfilter": data.get("COfilter", 0), "COother": get_str(data, "COother"), "COdiscount": data.get("COdiscount", 1), "COamount": data.get("COamount", 0), "COtype": conversion_COtype_resverse.get(get_str(data, "COtype")), "COnumber": data.get("COnumber", 0), "COgenre": conversion_COgenre_resverse.get(get_str(data, "COgenre")), "COunit": conversion_PBunit_reverse.get(get_str(data, "COunit"), 402), "COtime": TimeManager.get_db_time_str(), "COuserfilter": data.get("COuserfilter", 0), "COotherType": data.get("COotherType", "0") } log.info("CA", CA) try: self.sactive.add_model("CouponsActives", **CA) except Exception as e: log.error("add CA", e.message) return SYSTEM_ERROR try: prid_list = data.get("PRids") if prid_list: for prid in prid_list: self.sactive.add_model( "CouponsManager", **{ "CMid": str(uuid.uuid1()), "COid": coid, "MAid": maid, "PRid": prid, "CMprobability": data.get("CMprobability", 1) }) else: self.sactive.add_model( "CouponsManager", **{ "CMid": str(uuid.uuid1()), "COid": coid, "MAid": maid, "PRid": "", "CMprobability": data.get("CMprobability", 1) }) response = get_response("SUCCESS_MESSAGE_ADD_DATA", "OK") response["data"] = coid return response except Exception as e: log.error("add CM", e.message) return SYSTEM_ERROR