class CCarts():
    def __init__(self):
        from SharpGoods.service.SCarts import SCarts
        self.scarts = SCarts()
        from SharpGoods.service.SProduct import SProduct
        self.sproduct = SProduct()
        from SharpGoods.service.SUsers import SUsers
        self.suser = SUsers()

    def del_cart(self):
        args = request.args.to_dict()
        print "=================args================="
        print args
        print "=================args================="
        data = json.loads(request.data)
        print "=================data================="
        print data
        print "=================data================="
        if "token" not in args:
            return PARAMS_MISS
        uid = args.get("token")
        user = self.suser.get_usname_by_usid(get_str(args, "token"))
        if not user:
            return TOKEN_ERROR

        pbid = data.get("PBid")
        try:
            cart = self.scarts.get_cart_by_uid_pid(uid, pbid)
            print "=================cart================="
            print cart
            print "=================cart================="
            if not cart:
                return import_status("ERROR_MESSAGE_NONE_PRODUCT",
                                     "SHARPGOODS_ERROR", "ERROR_NONE_PRODUCT")
            self.scarts.del_carts(cart.CAid)
            return import_status("SUCCESS_MESSAGE_DEL_CART", "OK")
        except Exception as e:
            print(e.message)
            return SYSTEM_ERROR

    def add_or_update_cart(self):
        args = request.args.to_dict()
        print "=================args================="
        print args
        print "=================args================="
        data = json.loads(request.data)
        print "=================data================="
        print data
        print "=================data================="

        if "token" not in args:
            return PARAMS_MISS
        uid = args.get("token")
        pbid = data.get("PBid")
        CAnumber = data.get("CAnumber")
        if CAnumber <= 0:
            PBnumber = self.scarts.get_pbnumber_by_pbid_and_usid(pbid, uid)
            pnum = int(CAnumber) + int(PBnumber)
            if pnum <= 0:
                return self.del_cart()
        try:
            if not self.sproduct.get_product_by_pbid(pbid):
                return import_status("ERROR_MESSAGE_NONE_PRODUCT",
                                     "SHARPGOODS_ERROR", "ERROR_NONE_PRODUCT")
            cart = self.scarts.get_cart_by_uid_pid(uid, pbid)
            print "=================cart================="
            print cart
            print "=================cart================="
            if cart:
                PBnumber = self.scarts.get_pbnumber_by_pbid_and_usid(pbid, uid)
                pnum = int(CAnumber) + int(PBnumber)
                self.scarts.update_num_cart(pnum, cart.CAid)
            else:
                self.scarts.add_model(
                    "Cart", **{
                        "CAid": str(uuid.uuid4()),
                        "CAnumber": CAnumber,
                        "USid": uid,
                        "CAstatus": 1,
                        "PBid": pbid
                    })
        except dberror:
            return SYSTEM_ERROR
        except Exception as e:
            print(e.message)
            return SYSTEM_ERROR

        add_update_cart_ok = import_status("SUCCESS_MESSAGE_ADD_UPDATE_CART",
                                           "OK")
        return add_update_cart_ok

    def get_carts_by_uid(self):
        args = request.args.to_dict()
        print "=================args================="
        print args
        print "=================args================="
        if "token" not in args:
            return PARAMS_MISS

        # todo uid 验证未实现
        uid = args["token"]
        # res_get_all = {}

        cart_info_list = []
        cart_list = self.scarts.get_carts_by_Uid(uid)
        print "=================cart_list================="
        print cart_list
        print "=================cart_list================="
        for cart in cart_list:
            if cart.CAstatus != 1:
                continue
            cart_service_info = self.sproduct.get_product_by_pbid(cart.PBid)
            print "=================cart_service_info================="
            print cart_service_info
            print "=================cart_service_info================="
            if not cart_service_info:
                return SYSTEM_ERROR
            PRid = cart_service_info.PRid
            BRid = cart_service_info.BRid
            product = self.sproduct.get_product_by_prid(PRid)
            print "=================product================="
            print product
            print "=================product================="
            if not product:
                return SYSTEM_ERROR
            cart_info = {}
            cart_info["PRquality"] = {}
            quality_list = self.sproduct.get_all_brand_by_brid_last(BRid)
            #cart_info["PRquality"] = self.sproduct.get_all_brand_by_brid_last(BRid)
            for key in quality_list.keys():
                cart_info["PRquality"][key] = {}
                cart_info["PRquality"][key]["name"] = self.choose_key(key)
                cart_info["PRquality"][key]["choice"] = []
                cart_info["PRquality"][key]["choice"].append(quality_list[key])
            cart_info["PBid"] = cart.PBid
            cart_info["PBimage"] = cart_service_info.PBimage
            cart_info["PBsalesvolume"] = cart_service_info.PBsalesvolume
            cart_info["PBprice"] = cart_service_info.PBprice
            cart_info["CAid"] = cart.CAid
            PBunit = cart_service_info.PBunit
            if PBunit == 401:
                cart_info["PBunit"] = "$"
            elif PBunit == 402:
                cart_info["PBunit"] = "¥"
            elif PBunit == 403:
                cart_info["PBunit"] = "欧元"
            elif PBunit == 404:
                cart_info["PBunit"] = "英镑"
            else:
                cart_info["PBunit"] = "其他币种"
            cart_info["PBscore"] = cart_service_info.PBscore
            cart_info["CAnumber"] = cart.CAnumber
            cart_info["PRname"] = product.PRname
            cart_info["PRinfo"] = product.PRinfo
            PRbrand = product.PRbrand
            if PRbrand == 601:
                cart_info["PRbrand"] = "美妆类"
            elif PRbrand == 602:
                cart_info["PRbrand"] = "3C类"
            else:
                cart_info["PRbrand"] = "其他"
            cart_info["PRvideo"] = product.PRvideo
            PRtype = product.PRtype
            if PRtype == 501:
                cart_info["PRtype"] = "自营"
            elif PRtype == 502:
                cart_info["PRtype"] = "非自营"
            else:
                cart_info["PRtype"] = "未知商品"
            cart_info_list.append(cart_info)
        res_get_all = import_status("SUCCESS_MESSAGE_GET_INFO", "OK")
        res_get_all["data"] = cart_info_list
        return res_get_all

    def get_carts_by_uid_caid(self):
        args = request.args.to_dict()
        print "=================args================="
        print args
        print "=================args================="
        if "token" not in args:
            return PARAMS_MISS

        data = json.loads(request.data, encoding="utf8")
        caidlist = data.get("CAid")

        # todo uid 验证未实现
        uid = args["token"]
        # res_get_all = {}

        cart_info_list = []
        cart_list = self.scarts.get_carts_by_Uid(uid)
        print "=================cart_list================="
        print cart_list
        print "=================cart_list================="
        for cart in cart_list:
            if cart.CAstatus != 1:
                continue
            if caidlist and cart.CAid not in caidlist:
                continue
            cart_service_info = self.sproduct.get_product_by_pbid(cart.PBid)
            print "=================cart_service_info================="
            print cart_service_info
            print "=================cart_service_info================="
            if not cart_service_info:
                return SYSTEM_ERROR
            PRid = cart_service_info.PRid
            BRid = cart_service_info.BRid
            product = self.sproduct.get_product_by_prid(PRid)
            print "=================product================="
            print product
            print "=================product================="
            if not product:
                return SYSTEM_ERROR
            cart_info = {}
            cart_info["PRquality"] = {}
            quality_list = self.sproduct.get_all_brand_by_brid_last(BRid)

            for key in quality_list.keys():
                cart_info["PRquality"][key] = {}
                cart_info["PRquality"][key]["name"] = self.choose_key(key)
                cart_info["PRquality"][key]["choice"] = []
                cart_info["PRquality"][key]["choice"].append(quality_list[key])
            cart_info["PBid"] = cart.PBid
            cart_info["PBimage"] = cart_service_info.PBimage
            cart_info["PBsalesvolume"] = cart_service_info.PBsalesvolume
            cart_info["PBprice"] = cart_service_info.PBprice
            PBunit = cart_service_info.PBunit
            if PBunit == 401:
                cart_info["PBunit"] = "$"
            elif PBunit == 402:
                cart_info["PBunit"] = "¥"
            elif PBunit == 403:
                cart_info["PBunit"] = "欧元"
            elif PBunit == 404:
                cart_info["PBunit"] = "英镑"
            else:
                cart_info["PBunit"] = "其他币种"
            cart_info["PBscore"] = cart_service_info.PBscore
            cart_info["CAnumber"] = cart.CAnumber
            cart_info["PRname"] = product.PRname
            cart_info["PRinfo"] = product.PRinfo
            PRbrand = product.PRbrand
            if PRbrand == 601:
                cart_info["PRbrand"] = "美妆类"
            elif PRbrand == 602:
                cart_info["PRbrand"] = "3C类"
            else:
                cart_info["PRbrand"] = "其他"
            cart_info["PRvideo"] = product.PRvideo
            PRtype = product.PRtype
            if PRtype == 501:
                cart_info["PRtype"] = "自营"
            elif PRtype == 502:
                cart_info["PRtype"] = "非自营"
            else:
                cart_info["PRtype"] = "未知商品"
            cart_info_list.append(cart_info)
        res_get_all = import_status("SUCCESS_MESSAGE_GET_INFO", "OK")
        res_get_all["data"] = cart_info_list
        return res_get_all

    def choose_key(self, BRkey):
        if BRkey == "BRno":
            return "版本选择"
        elif BRkey == "BRcolor":
            return "颜色选择"
        else:
            return "未知类目"
Exemple #2
0
class CReview():
    def __init__(self):
        self.service_review = SReview()
        from SharpGoods.service.SOrders import SOrders
        self.sorder = SOrders()
        from SharpGoods.service.SProduct import SProduct
        self.sproduct = SProduct()
        from SharpGoods.service.SUsers import SUsers
        self.suser = SUsers()

    #  创建评论
    def create_review(self):
        args = request.args.to_dict()  # 捕获前端的URL参数,以字典形式呈现
        print "=================args================="
        print args
        print "=================args================="
        # 判断url参数是否异常
        if "token" not in args and "OMid" not in args:
            return PARAMS_MISS
        Uid = args["token"]
        OMid = args["OMid"]

        uid = self.sorder.get_uid_by_omid(OMid)
        print "=================uid================="
        print uid
        print "=================uid================="
        omstatus = self.sorder.get_omstatus_by_omid(OMid)
        print "=================omstatus================="
        print omstatus
        print "=================omstatus================="
        if uid != Uid:
            return import_status("ERROR_MESSAGE_NONE_PERMISSION",
                                 "SHARPGOODS_ERROR", "ERROR_NONE_PERMISSION")
        if omstatus != 42:
            return import_status("ERROR_MESSAGE_WRONG_STATUS",
                                 "SHARPGOODS_ERROR", "ERROR_WRONG_STATUS")

        data = json.loads(request.data)
        print "=================data================="
        print data
        print "=================data================="
        if data == []:
            return PARAMS_MISS
        for review in data:
            if "PBid" not in review or "REcontent" not in review or "REscore" not in review:
                return PARAMS_MISS
            PRid = self.sproduct.get_prid_by_pbid(review["PBid"])
            print "=================PRid================="
            print PRid
            print "=================PRid================="
            REcontent = review["REcontent"]
            add_review = self.service_review.new_review(PRid, uid, REcontent)
            if not add_review:
                return SYSTEM_ERROR
            product = self.sproduct.get_volue_score_by_pbid(review["PBid"])
            print "=================product================="
            print product
            print "=================product================="
            PBscore, PBvolue = product.PBscore, product.PBsalesvolume
            score = (review["REscore"] + PBscore * PBvolue) / PBvolue
            product_brand = {}
            product_brand["PBid"] = review["PBid"]
            product_brand["PBscore"] = score
            update_product = self.sproduct.update_score_by_pbid(
                review["PBid"], product_brand)
            if not update_product:
                return SYSTEM_ERROR
        order_main = {}
        order_main["OMstatus"] = 49
        update_order_status = self.sorder.update_omstatus_by_omid(
            OMid, order_main)
        if not update_order_status:
            return SYSTEM_ERROR
        return import_status("SUCCESS_MESSAGE_NEW_REVIEW", "OK")

    # 根据Oid获取商品评论
    def get_review(self):
        args = request.args.to_dict()  # 捕获前端的URL参数,以字典形式呈现
        print "=================args================="
        print args
        print "=================args================="
        # 判断url参数是否异常
        if "PRid" not in args:
            return PARAMS_MISS
        PRid = args["PRid"]
        PBid_list = self.sproduct.get_pbid_by_prid(PRid)
        review_list = []
        all_review = self.service_review.get_review_by_pbid(PRid)
        print "=================all_review================="
        print all_review
        print "=================all_review================="
        if all_review:
            for review in all_review:
                reviews = {}
                REid = review.REid
                REtime = review.REtime
                REtime = get_web_time_str(REtime)
                USid = review.USid
                REcontent = review.REcontent
                USname = self.suser.get_usname_by_usid(USid)
                print "=================USname================="
                print USname
                print "=================USname================="
                reviews["REid"] = REid
                reviews["REtime"] = REtime
                reviews["USname"] = USname
                reviews["REcontent"] = REcontent
                review_list.append(reviews)
        response = import_status("SUCCESS_MESSAGE_GET_REVIEW", "OK")
        response["data"] = review_list
        return response

    # def get_user_review(self):
    #     args = request.args.to_dict()  # 捕获前端的URL参数,以字典形式呈现
    #     # 判断url参数是否异常
    #     if len(args) != 1 or "Uid" not in args.keys():
    #         message, status, statuscode = import_status("URL_PARAM_WRONG", "response_error", "URL_PARAM_WRONG")
    #         return {
    #             "message": message,
    #             "status": status,
    #             "statuscode": statuscode,
    #         }
    #     uid_to_str = get_str(args, "Uid")
    #     uid_list = []
    #     if uid_to_str not in uid_list:
    #         message, status, statuscode = import_status("URL_PARAM_WRONG", "response_error", "URL_PARAM_WRONG")
    #         return {
    #             "message": message,
    #             "status": status,
    #             "statuscode": statuscode,
    #         }
    #     review_of_control = self.service_review.get_user_review(uid_to_str)
    #     review_list = []
    #     for i in range(len(review_of_control)):
    #         dict_of_review = {}
    #         dict_of_review["Rid"] = review_of_control[i].get("Rid")
    #         dict_of_review["Rpname"] = review_of_control[i].get("Rpname")
    #         dict_of_review["Rpimage"] = review_of_control[i].get("Rpimage")
    #         dict_of_review["Rscore"] = review_of_control[i].get("Rscore")
    #         dict_of_review["Rcontent"] = review_of_control[i].get("Rcontent")
    #         review_list.append(dict_of_review)
    #     return {
    #         "message": "get user revirew success !",
    #         "status": 200,
    #         "statuscode": review_list
    #     }

    def delete_user_review(self):
        args = request.args.to_dict()  # 捕获前端的URL参数,以字典形式呈现
        # 判断url参数是否异常
        if len(args) != 1 or "Uid" not in args.keys(
        ) or "Rid" not in args.keys():
            message, status, statuscode = import_status(
                "URL_PARAM_WRONG", "response_error", "URL_PARAM_WRONG")
            return {
                "message": message,
                "status": status,
                "statuscode": statuscode,
            }
        uid_to_str = get_str(args, "Uid")
        uid_list = []
        if uid_to_str not in uid_list:
            message, status, statuscode = import_status(
                "URL_PARAM_WRONG", "response_error", "URL_PARAM_WRONG")
            return {
                "message": message,
                "status": status,
                "statuscode": statuscode,
            }
        rid_to_str = get_str(args, "Rid")
        rid_list = self.service_review.get_rid_by_uid(uid_to_str)
        if rid_to_str not in rid_list:
            message, status, statuscode = import_status(
                "NO_THIS_REVIEW", "response_error", "NO_THIS_REVIEW")
            return {
                "message": message,
                "status": status,
                "statuscode": statuscode,
            }
        result = self.service_review.delete_user_review(rid_to_str)
        print(request)
        return {
            "message": "delete review success !",
            "status": 200,
        }