Example #1
0
    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
Example #2
0
    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
Example #3
0
    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
Example #4
0
    def add_approval(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 "PEtype" not in data or "APcontent" not in data:
            return PARAMS_MISS

        petype = conversion_PEtype_resverse.get(get_str(data, "PEtype"))
        apreceive_list =[apreceive.MAid for apreceive in  self.sapproval.get_permission_by_petype_pesublevel(petype, 1)]
        if not apreceive_list:
            return get_response("ERROR_MESSAGE_DB_ERROR", "MANAGERSYSTEMERROR", "ERROR_CODE_DB_ERROR")

        apstart = token_to_usid(args.get("token"))
        try:
            apname = get_str(data, "PEtype") + str(uuid.uuid1())
            for apreceive in apreceive_list:
                self.sapproval.add_model("Approval", **{
                    "APid": str(uuid.uuid1()),
                    "APname": apname,
                    "APstart": apstart,
                    "APstatus": 445,
                    "APreceive": apreceive,
                    "PEtype": petype,
                    "APremark": "",
                    "APcontent": data.get("APcontent"),
                    "APtime": TimeManager.get_db_time_str()
                    })
            return get_response("SUCCESS_MESSAGE_ADD_DATA", "OK")
        except Exception as e:
            log.error("add approval", e.message)
            return SYSTEM_ERROR
Example #5
0
    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
Example #6
0
    def apply_manager(self):
        data = json.loads(request.data)
        log.info("data", data)
        param_keys = ["MAtelphone"]
        for params in param_keys:
            if params not in data:
                return PARAMS_MISS
        manager_key = [
            "MAname", "MAtelphone", "MAemail", "MAidentity", "MApassword",
            "MAstatus", "MAcreatTime", "MAendTime", "MAidNumber",
            "MAidImageFront", "MAidImageReverse", "MAbusinessLicense",
            "MAcredit"
        ]
        manager = {}
        for key in manager_key:
            if key in data:
                manager[key] = data.get(key)

        MAid = str(uuid.uuid1())
        manager["MAid"] = MAid
        maname = "商家{0}".format(data.get(
            "MAtelphone")) if not data.get("MAname") else data.get("MAname")
        manager["MAname"] = maname

        manager["MApassword"] = self.create_password()
        manager["MAidentity"] = conversion_MAidentity_reverse.get(
            data.get("MAidentity", "卖家"))
        manager["MAcreatTime"] = TimeManager.get_db_time_str()
        manager["MAendTime"] = TimeManager.get_db_time_str(
            data.get("MAendTime"))
        manager["MAstatus"] = conversion_MAstatus_resverse.get(
            data.get("MAstatus", "可用"))

        try:
            self.smanager.add_model("Manager", **manager)
        except Exception as e:
            log.error("add manager error", e.message)
            return SYSTEM_ERROR
        response = get_response("SUCCESS_MESSAGE_REGISTER", "OK")
        response["data"] = {
            "MAname": maname,
            "MApassword": manager["MApassword"]
        }
        return response
Example #7
0
    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
Example #8
0
    def update_pro_info(self):
        args = request.args.to_dict()
        log.info("args", args)
        data = json.loads(request.data, encoding="utf8")
        log.info("data", data)
        if "token" not in args:
            return PARAMS_MISS

        if "PRid" not in data:
            return PARAMS_MISS
        prid = data.get("PRid")
        product = {
            "PRimage": json.dumps(data.get("PRimage", [])),
            "PRvideo": data.get("PRvideo", ""),
            "PRfranking": data.get("PRfranking", 0),
            "PRPoint": data.get("PRPoint", ""),
            "PRtime": TimeManager.get_db_time_str(),
        }
        if data.get("PRbrand"):
            product["PRbrand"] = json.dumps(data.get("PRbrand"))

        try:
            update_result = self.sproduct.update_product(prid, product)
            log.info("update result", update_result)
            if not update_result:
                return get_response("ERROR_MESSAGE_DB_ERROR", "MANAGERSYSTEMERROR", "ERROR_CODE_DB_ERROR")
            # brid_list = [br.BRid for br in self.sproduct.get_brid_by_prid(prid)]
            # while True:
            #     fromid_list = []
            #     if not brid_list:
            #         break
            #     for brid in brid_list:
            #         fromid = self.sproduct.get_brfromid_by_brid(brid)
            #         if fromid != "0":
            #             fromid_list.append(fromid)
            #             self.sproduct.del_brand(brid)

                # brid_list = {}.fromkeys(fromid_list).keys()

            delete_result = self.sproduct.delete_pb(prid)
            log.info("delete result", delete_result)
            self.add_brands(prid, data.get("brands"), data.get("brands_key"))
            return get_response("SUCCESS_MESSAGE_UPDATE_DATA", "OK")

        except Exception as e:
            log.error("update product", e.message)
            return SYSTEM_ERROR
Example #9
0
 def add_approval(self, maid, prid):
     from ManagerSystem.service.SApproval import SApproval
     sapproval = SApproval()
     receive_list = sapproval.get_permission_by_petype_pesublevel(304, 1)
     apname = "商品发布审批" + str(uuid.uuid1())
     for pe in receive_list:
         approval = {
             "APid": str(uuid.uuid1()),
             "APname": apname,
             "APstart": maid,
             "APreceive": pe.MAid,
             "PEtype": 304,
             "APcontent": prid,
             "APremark": "",
             "APstatus": 443,
             "APtime": TimeManager.get_db_time_str()
         }
         sapproval.add_model("Approval", **approval)
Example #10
0
    def get_approval(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

        page_size = int(args.get("page_size"))
        page_num = int(args.get("page_num"))

        approval_filter = {
            Approval.APreceive == maid,
        }
        if args.get("APname"):
            approval_filter.add(Approval.APname.like("%{0}%".format(get_str(args, "APname"))))
        if args.get("APstart"):
            apstart = [ma.MAid for ma in self.smanager.get_manager_by_name(args.get("APstart"))]
            approval_filter.add(Approval.APstart.in_(apstart))
        pn, count = self.check_page_value(page_num, page_size, "model.Approval.APid", approval_filter, set())
        start_num = (pn - 1) * page_size
        try:
            approval_list = tolist(self.sapproval.get_approval_by_and_filter(start_num, page_size, approval_filter))
            log.info("approval", approval_list)
            for approval in approval_list:
                approval["APstatus"] = conversion_APstatus.get(approval.get("APstatus", 441))
                approval["PEtype"] = conversion_PEtype.get(approval.get("PEtype", 304))
                manager = self.smanager.get_manager_by_maid(approval.get("APstart"))
                log.info("manager", manager)
                approval["APstart"] = manager.MAname
                approval["APtime"] = TimeManager.get_web_time_str(approval.get("APtime"))
            response = get_response("SUCCESS_MESSAGE_GET_INFO", "OK")
            response["data"] = {
                "approvals": approval_list,
                "count": count,
                "page_size": page_size,
                "page_num": page_num
            }
            return response
        except Exception as e:
            log.error("get approval", e.message)
            return SYSTEM_ERROR
Example #11
0
    def _get_order_abo_by_order_main(self, order_main):
        order_part_list = tolist(
            self.sorder.get_order_part_list_by_omid(order_main.get("OMid")))
        for order_part in order_part_list:
            order_part.update(
                self._get_product_into_order_abo(order_part.get("PBid")))

        order_main["order_abo"] = order_part_list
        order_main["OMcointype"] = cvs.conversion_PBunit.get(
            order_main.get("OMcointype"), "其他币种")
        order_main["OMstatus"] = cvs.conversion_OMstatus.get(
            order_main.get("OMstatus"), 0)
        order_main["OMtime"] = TimeManager.get_web_time_str(
            order_main.get("OMtime"))
        location = todict(
            self.sorder.get_location_by_loid(order_main.get("LOid")))
        if location.get("LOisedit") == 303:
            print(get_response("ERROR_MESSAGE_GET_LOCATION",
                               "WORING_LOCATION"))
        order_main.update(location)
        order_main["CAid"] = order_main.pop("COid")
Example #12
0
    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")
Example #13
0
    def login(self):
        data = json.loads(request.data)
        log.info("data", data)
        param_keys = ["MAname", "MApassword"]
        for key in param_keys:
            if key not in data:
                return PARAMS_MISS
        name = get_str(data, "MAname")
        password = data.get("MApassword")

        if not name or not password:
            return get_response("ERROR_MESSAGE_WRONG_PARAMS",
                                "MANAGERSYSTEMERROR",
                                "ERROR_CODE_WRONG_PARAMS")

        try:
            manager = self.smanager.get_manager_by_maname_mapassword(
                name, password)

            if not manager:
                return get_response("ERROR_MESSAGE_WRONG_PASSWORD",
                                    "MANAGERSYSTEMERROR",
                                    "ERROR_WRONG_PASSWORD")

            maid = manager.MAid
            self.smanager.update_manager(
                maid, {"MAloginTime": TimeManager.get_db_time_str()})
            response = get_response("SUCCESS_MESSAGE_LOGIN", "OK")
            response["data"] = {
                "side": self.get_interface(maid),
                "token": usid_to_token(maid),
                "MAidentity": conversion_MAidentity.get(manager.MAidentity)
            }
            return response
        except Exception as e:
            log.error("LOGINERROR", e.message)
            return SYSTEM_ERROR
Example #14
0
    def get_order_list(self):
        try:
            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
            product_filter = {Products.MAid == maid}
            if args.get("PRname"):
                product_filter.add(
                    Products.PRname.like("%{0}%".format(get_str(
                        args, "PRname"))))

            product_list = tolist(
                self.sproduct.get_product_by_filter(product_filter))
            log.info("product list ", product_list)
            pb_list = []
            for product in product_list:
                product["PBunit"] = cvs.conversion_PBunit.get(
                    product.get("PBunit", "其他币种"))
                product["PRbrand"] = cvs.conversion_PRbrand.get(
                    product.get("PRbrand"), "其他")
                product["PRtype"] = cvs.conversion_PRtype.get(
                    product.get("PRtype"))
                for pb in tolist(
                        self.sproduct.get_pball_by_prid(product.get("PRid"))):
                    pb.update(product)
                    pb_list.append(pb)
            log.info("pb_list", pb_list)
            om_list = []
            om_id_dict = {}
            from ManagerSystem.models.model import OrderMain
            omfilter = set()
            if args.get("OMstatus"):
                omstatus = cvs.conversion_OMstatus_reverse.get(
                    get_str(args, "OMstatus"))
                omfilter.add(OrderMain.OMstatus == omstatus)
            if args.get("OMlogisticsName"):
                omfilter.add(OrderMain.OMlogisticsName == get_str(
                    args, "OMlogisticsName"))
            if args.get("OMstartTime"):
                omfilter.add(OrderMain.OMtime >= TimeManager.get_db_time_str(
                    args.get("OMstartTime")))
            if args.get("OMendTime"):
                omfilter.add(OrderMain.OMtime <= TimeManager.get_db_time_str(
                    args.get("OMendTime")))

            for pb in pb_list:
                op_pb_list = tolist(
                    self.sorder.get_order_part_list_by_pbid(pb.get("PBid")))
                for op_pb in op_pb_list:
                    op_pb.update(pb)
                    if op_pb.get("OMid") in om_id_dict:
                        om_id_dict[op_pb.get("OMid")].append(op_pb)
                    else:
                        om_id_dict[op_pb.get("OMid")] = [op_pb]
            log.info("om_id_dict", om_id_dict)
            om_count = {k: 0 for k in cvs.conversion_OMstatus}
            for om_id in om_id_dict:
                if args.get("OMid") and args.get("OMid") not in om_id:
                    continue
                omfilter_tmp = omfilter.copy()
                omfilter_tmp.add(OrderMain.OMid == om_id)
                om_dict = tolist(self.sorder.get_om_by_filter(omfilter_tmp))
                if not om_dict:
                    continue
                om_dict = om_dict[0]
                om_dict.update({"order_item": om_id_dict.get(om_id)})
                location = todict(
                    self.sorder.get_location_by_usid(om_dict.pop("USid")))
                log.info("location", location)
                om_count[om_dict.get("OMstatus")] += 1
                om_dict.update(location)
                om_dict["OMcointype"] = cvs.conversion_PBunit.get(
                    om_dict.get("OMcointype"), "其他币种")
                om_dict["OMstatus"] = cvs.conversion_OMstatus.get(
                    om_dict.get("OMstatus"), 0)
                om_dict["OMtime"] = TimeManager.get_web_time_str(
                    om_dict.get("OMtime"))

                om_list.append(om_dict)
            log.info("omlist", om_list)
            count = len(om_list)
            if page_size * page_num > count:
                page_num = count / page_size + 1
            page_num = page_num if page_num > 0 else 1
            om_list = om_list[(page_num - 1) * page_size:page_num * page_size]
            data = get_response("SUCCESS_MESSAGE_GET_INFO", "OK")
            data["data"] = {
                "count": count,
                "page_num": page_num,
                "page_size": page_size,
                "OrderMains": om_list,
                "OMcount": om_count
            }
            return data
        except Exception as e:
            log.error("get order list", e.message)
            import traceback
            print(traceback.format_exc())
            return SYSTEM_ERROR
Example #15
0
    def get_order_situation(self):
        args = request.args.to_dict()
        log.info("args", args)
        if "token" not in args:
            return PARAMS_MISS
        from ManagerSystem.models.model import OrderMain
        days = int(args.get("days", 1))
        maid = token_to_usid(args.get("token"))
        prid_list = self.sproduct.get_product_by_maid(maid)
        pbid_list = []
        for pr in prid_list:
            pbid_list.extend(
                [pb.PBid for pb in self.sproduct.get_pbid_by_prid(pr.PRid)])
        OMid_list = []
        for pbid in pbid_list:
            OMid_list.extend([
                op.OMid for op in self.sorder.get_order_part_list_by_pbid(pbid)
            ])

        OMid_list = {}.fromkeys(OMid_list).keys()
        ordered_count = 0  # 下单总数
        paying_count = 0  # 待付款
        deliver_count = 0  # 待发货
        received_count = 0  # 已收货
        omprice = 0  # 订单总收入
        refund_count = 0  # 退款中
        week_payed_list = []
        week_paying_list = []

        for omid in OMid_list:

            om = self.sorder.get_om_by_filter({OrderMain.OMid == omid})[0]
            if om.OMtime > TimeManager.get_forward_time(days=-days):
                if om.OMstatus >= 56:
                    refund_count += 1

                if om.OMstatus >= 14:
                    ordered_count += 1
                    omprice += om.OMprice
                elif om.OMstatus != 0:
                    paying_count += 1

                if om.OMstatus == 21:
                    deliver_count += 1

                if om.OMstatus >= 28:
                    received_count += 1

            for i in range(1, days + 1):
                if om.OMtime == TimeManager.get_forward_time(days=-i):
                    if om.OMstatus >= 14:
                        if len(week_payed_list) < i:
                            week_payed_list.append(1)
                        else:
                            week_payed_list[i - 1] += 1
                    if om.OMstatus >= 21:
                        if len(week_paying_list) < i:
                            week_paying_list.append(1)
                        else:
                            week_paying_list[i - 1] += 1
                else:
                    if len(week_payed_list) < i:
                        week_payed_list.append(0)
                    else:
                        week_payed_list[i - 1] += 0

                    if len(week_paying_list) < i:
                        week_paying_list.append(0)
                    else:
                        week_paying_list[i - 1] += 0

        # payed_filter = {
        #     OrderMain.OMtime< TimeManager.get_forward_time(days=-days),
        #     OrderMain.OMstatus >= 21,
        # }
        # payed_count = self.sorder.get_count_by_or_filter("model.OrderMain.OMid", payed_filter, set())
        # omlist = self.sorder.get_om_by_filter(payed_filter)
        # omprice = 0
        # for om in omlist:
        #     omprice += om.OMprice
        # paying_filter = {
        #     OrderMain.OMtime < TimeManager.get_forward_time(days=-days),
        #     OrderMain.OMstatus < 21,
        #     OrderMain.OMstatus != 0,
        # }
        # paying_count = self.sorder.get_count_by_or_filter("model.OrderMain.OMid", paying_filter, set())
        # deliver_filter = {
        #     OrderMain.OMstatus == 21,
        # }
        # deliver_count = self.sorder.get_count_by_or_filter("model.OrderMain.OMid", deliver_filter, set())
        # week_payed_filter = {
        #     OrderMain.OMtime < TimeManager.get_forward_time(days=-7),
        #     OrderMain.OMstatus >= 21
        #
        # }
        # week_payed_count = self.sorder.get_count_by_or_filter("model.OrderMain.OMid", week_payed_filter, set())
        # week_paying_filter = {
        #     OrderMain.OMtime < TimeManager.get_forward_time(days=-days),
        #     OrderMain.OMstatus < 21,
        #     OrderMain.OMstatus != 0,
        # }
        # week_paying_count = self.sorder.get_count_by_or_filter("model.OrderMain.OMid", week_paying_filter, set())
        # week_payed_list = []
        # week_paying_list = []
        # for i in range(1, 8):
        #     day_payed_filter = {
        #         OrderMain.OMtime < TimeManager.get_forward_time(days=-i),
        #         OrderMain.OMstatus >= 21
        #     }
        #     count = self.sorder.get_count_by_or_filter(day_payed_filter)
        #     week_payed_list.append(count)
        #     day_paying_filter = {
        #         OrderMain.OMtime < TimeManager.get_forward_time(days=-i),
        #         OrderMain.OMstatus < 21,
        #         OrderMain.OMstatus != 0,
        #     }
        #     count = self.sorder.get_count_by_or_filter(day_paying_filter)
        #     week_paying_list.append(count)
        response = get_response("SUCCESS_MESSAGE_GET_INFO", "OK")
        response["data"] = {
            "ordered_count": ordered_count,
            "paying_count": paying_count,
            "deliver_count": deliver_count,
            "received_count": received_count,
            "refund_count": refund_count,
            "week_payed_list": week_payed_list,
            "week_paying_list": week_paying_list,
            "omprice": omprice,
        }
        return response
Example #16
0
    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
Example #17
0
    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
Example #18
0
    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
Example #19
0
    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
Example #20
0
    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