Beispiel #1
0
 def update_pwd(self):
     if is_tourist():
         return TOKEN_ERROR(u"未登录")
     json_data = request.json
     if not json_data:
         return PARAMS_MISS
     oldpassword = json_data.get('oldpassword')
     newpassword = json_data.get('newpassword')
     user = get_model_return_list(self.suser.getuser_by_uid(
         request.user.id))
     if not user or user[0]['USpassword'] != oldpassword:
         return PASSWORD_WRONG
     user_update = {}
     user_update["USpassword"] = newpassword
     self.suser.update_user_by_uid(request.user.id, user_update)
     data = import_status("update_password_success", "OK")
     return data
Beispiel #2
0
 def get_product_category(self):
     args = request.args.to_dict()
     try:
         PAtype = int(args.get("PAtype"))
         if PAtype == 1:
             product_category = (get_model_return_list(self.sgoods.get_first_product_category(str(0))))
         elif PAtype == 2:
             PAid = args.get("PAid")
             product_category = (get_model_return_list(self.sgoods.get_first_product_category(PAid)))
         else:
             return NO_THIS_CATEGORY
     except Exception as e:
         print(e.message)
         return PARAMS_MISS
     response = import_status("get_product_category_success", "OK")
     response["data"] = product_category
     return response
Beispiel #3
0
 def get_sowingmap(self):
     if is_tourist():
         return TOKEN_ERROR
     mallUrls = []
     personUrls = []
     list = get_model_return_list(self.sgoods.get_sowingmap())
     for pic in list:
         if pic['SMtype'] == 1:
             personUrls.append(pic)
         if pic['SMtype'] == 2:
             mallUrls.append(pic)
     data = {}
     data['mallUrls'] = mallUrls
     data['personUrls'] = personUrls
     response = import_status("get_sowingmap_success", "OK")
     response['data'] = data
     return response
Beispiel #4
0
 def change_default(self):
     if is_tourist():
         return TOKEN_ERROR
     try:
         data = request.json
         old_defaultid = data.get('old_defaultid')
         new_defaultid = data.get('new_defaultid')
     except:
         return PARAMS_ERROR
     change_result = self.smycenter.change_default(request.user.id,
                                                   old_defaultid,
                                                   new_defaultid)
     if change_result:
         response = import_status("change_address_success", "OK")
         return response
     else:
         return CHANGE_ADDRESS_FAIL
Beispiel #5
0
 def login(self):
     try:
         json_data = request.json
         adnum = int(json_data.get('adnum'))
         adpassword = int(json_data.get('adpassword'))
     except:
         return PARAMS_MISS
     if not adnum or not adpassword:
         return NO_PHONENUM_OR_PASSWORD
     admin = get_model_return_dict(self.sadmin.getadmin_by_adnum(adnum))
     if not admin or adpassword != int(admin['ADpassword']):
         return PHONE_OR_PASSWORD_WRONG
     token = usid_to_token(admin['ADid'], type='SuperUser')
     data = import_status('generic_token_success', "OK")
     data['data'] = {
         'token': token,
     }
     return data
Beispiel #6
0
 def add_size(self):
     if not is_admin():
         return TOKEN_ERROR
     try:
         data = request.json
         sizename = data.get("sizename")
     except Exception as e:
         print e
         return PARAMS_ERROR
     is_same = self.sgoods.get_color_by_sizename(sizename.encode('utf-8'))
     if is_same:
         return REPERT_SIZE
     time_now = datetime.strftime(datetime.now(), format_for_db)
     result = self.sgoods.add_size(sizename, time_now)
     if not result:
         return SYSTEM_ERROR
     response = import_status("add_size_success", "OK")
     return response
Beispiel #7
0
 def get_product_category_list(self):
     # 获取商品分类列表
     if is_tourist():
         return TOKEN_ERROR
     first_level = get_model_return_list(self.sgoods.get_first_product_category_status(str(0)))
     options = []
     for parent_category in first_level:
         product_category_list = {}
         parnetid = parent_category['PAid']
         parentname = parent_category['PAname']
         product_category_list['PAid'] = parnetid
         product_category_list['PAname'] = parentname
         child_category = get_model_return_list(self.sgoods.get_first_product_category(parnetid))
         product_category_list['child_category'] = child_category
         options.append(product_category_list)
     response = import_status("get_product_category_list_success", "OK")
     response['data'] = options
     return response
Beispiel #8
0
 def add_sowingmap(self):
     if not is_admin():
         return TOKEN_ERROR
     try:
         data = request.json
         type = data['type']
         urls = data['urls']
     except:
         return PARAMS_ERROR 
     if int(type) < 0:
         return PARAMS_ERROR
     result = self.sgoods.update_sowingmap_by_type(type)
     if not result:
         return SYSTEM_ERROR
     result = self.sgoods.add_sowingmap(type, urls)
     if not result:
         return SYSTEM_ERROR
     response = import_status("add_sowingmap_success", "OK")
     return response
Beispiel #9
0
 def check_inforcode(self):
     data = request.json
     try:
         phonenum = data.get('usphonenum')
         iccode = data.get('iccode')
     except Exception as e:
         return PARAMS_ERROR
     if not phonenum or not iccode:
         return PARAMS_ERROR
     codeinfo = get_model_return_dict(self.smycenter.get_inforcode_by_usphonenum(phonenum))
     if not codeinfo:
         return SYSTEM_ERROR
     checkstatus = True if iccode == codeinfo['ICcode'] else False
     checkmessage = u"验证码正确" if checkstatus is True else u"验证码错误"
     response = import_status("check_inforcode_access", "OK")
     response["data"] = {"checkstatus": checkstatus,
                         "checkmessage": checkmessage
                         }
     return response
Beispiel #10
0
 def cancel_order(self):
     if is_tourist():
         return TOKEN_ERROR
     try:
         data = request.json
         oisn = data.get('oisn')
     except:
         return PARAMS_ERROR
     order = get_model_return_dict(self.sorder.get_order_details(oisn))
     if not order:
         print order
         return SYSTEM_ERROR
     if int(order['OIstatus']) != 1:
         return CANNOT_CANCEL
     session = db_session()
     try:
         session.query(OrderInfo).filter(OrderInfo.OIsn == oisn).update(
             {"OIstatus": 5})
         user = self.smycenter.get_user_basicinfo(request.user.id)
         if not user:
             raise dberror
         user = get_model_return_dict(user)
         session.query(User).filter(User.USid == request.user.id).update(
             {"USmount": user['USmount'] + order['OImount']})
         moneyrecord = MoneyRecord()  # 插入收支记录表
         moneyrecord.MRid = str(uuid.uuid4())
         moneyrecord.MRtype = 8
         moneyrecord.OIid = oisn
         moneyrecord.MRamount = order['OImount']
         moneyrecord.MRcreatetime = datetime.strftime(
             datetime.now(), format_for_db)
         moneyrecord.USid = request.user.id
         session.add(moneyrecord)
         session.commit()
     except Exception as e:
         print e
         session.rollback()
         return SYSTEM_ERROR
     finally:
         session.close()
     response = import_status("cancel_order_success", "OK")
     return response
Beispiel #11
0
 def update_shoppingcart_number(self):
     if not is_ordirnaryuser():
         return TOKEN_ERROR
     try:
         data = request.json
         psid = data.get('psid')
         number = data.get('number')
     except:
         return PARAMS_ERROR
     sku_stock = get_model_return_dict(self.sgoods.get_sku_stock(psid))
     if sku_stock['PSstatus'] != 1:
         return PRODUCT_STATUS_WRONG
     if int(number) > sku_stock['PSstock']:
         return STOCK_NOT_ENOUGH
     if int(number) < 0:
         return PARAMS_MISS
     result = self.sgoods.update_user_sku(request.user.id, psid, {"number": number})
     if not result:
         return SYSTEM_ERROR
     response = import_status("change_shoppingcart_number_success", "OK")
     return response
Beispiel #12
0
 def update_pwd(self):
     if not is_admin():
         return AUTHORITY_ERROR
     json_data = request.json
     if not json_data:
         return PARAMS_MISS
     oldpassword = json_data.get('oldpassword')
     newpassword = json_data.get('newpassword')
     user = get_model_return_dict(
         self.sadmin.getadmin_by_adminid(request.user.id))
     if not user or not check_password_hash(user['ADpassword'],
                                            oldpassword):
         return PASSWORD_WRONG
     admin_update = {}
     admin_update["ADpassword"] = generate_password_hash(newpassword)
     result = self.sadmin.update_amdin_by_adminid(user['ADid'],
                                                  admin_update)
     if not result:
         return SYSTEM_ERROR
     data = import_status("update_password_success", "OK")
     return data
Beispiel #13
0
    def publish_commessage(self):
        if not is_admin():
            return AUTHORITY_ERROR

        try:
            json_data = request.json
            type = json_data.get('type')
            title = json_data.get('title')
            url = json_data.get('url')
        except Exception as e:
            return PARAMS_ERROR
        if not title or not url:
            return PARAMS_MISS
        # 获取当前时间
        import datetime
        from common.timeformat import format_for_db
        time_time = datetime.datetime.now()
        time_str = datetime.datetime.strftime(time_time, format_for_db)
        id = str(uuid.uuid4())
        self.smessage.publish_commessage(id, time_str, type, title, url)
        response = import_status("publish_message_success", "OK")
        return response
Beispiel #14
0
 def add_qrcode(self):
     if is_tourist():
         return TOKEN_ERROR
     try:
         data = request.json
         date = str(data.get('overtime'))
         number = int(data.get('number'))
     except:
         return PARAMS_ERROR
     user_info = get_model_return_dict(self.smycenter.get_user_basicinfo(request.user.id)) if self.smycenter\
             .get_user_basicinfo(request.user.id) else None
     if not user_info:
         return NOT_FOUND_USER
     if user_info['USbail'] < float(self.conf.get('account', 'bail')):
         return NO_BAIL
     result = self.suser.add_qrcode(str(uuid.uuid4()), request.user.id,
                                    date, number)
     if result:
         response = import_status("add_qrcode_success", "OK")
         return response
     else:
         return SYSTEM_ERROR
Beispiel #15
0
 def update_useraddress(self):
     if is_tourist():
         return TOKEN_ERROR
     try:
         data = request.json
         UAid = data.get('UAid')
         USname = data.get('USname')
         USphonenum = data.get('USphonenum')
         details = data.get('details')
         areaid = data.get('areaid')
     except:
         return PARAMS_ERROR
     update_address = {}
     update_address['UAname'] = USname
     update_address['UAphonenum'] = USphonenum
     update_address['UAdetails'] = details
     update_address['areaid'] = areaid
     update_result = self.smycenter.update_address(request.user.id, UAid, update_address)
     if update_result:
         response = import_status("update_address_success", "OK")
         return response
     else:
         return UPDATE_ADDRESS_FAIL
Beispiel #16
0
 def delete_shoppingcart_sku(self):
     if not is_ordirnaryuser():
         return TOKEN_ERROR
     try:
         data = request.json
         scidlist = data.get('scidlist')
     except:
         return PARAMS_ERROR
     update = {
         "SCstatus": 0
     }
     session = db_session()
     try:
         for scid in scidlist:
             self.sgoods.update_user_sku_by_scid(session, request.user.id, str(scid), update)
         session.commit()
     except Exception as e:
         print e
         session.rollback()
         return SYSTEM_ERROR
     finally:
         session.close()
     response = import_status("delete_shoppingcart_sku_success", "OK")
     return response
Beispiel #17
0
 def delete_admin(self):
     if not is_superadmin():
         return AUTHORITY_ERROR
     try:
         data = request.json
         ADnum = data.get('ADnum')
         #ADname = data.get('ADname')
     except:
         return PARAMS_ERROR
     try:
         retnum = False  #判断ADnum是否在admin列表中
         retname = False  #判断ADname是否在admin列表中
         all_adnum = get_model_return_list(self.sadmin.get_all_adnum())
         #all_adname = get_model_return_list(self.sadmin.get_all_adname())
         for adnum_dict in all_adnum:
             if ADnum == int(adnum_dict['ADnum']):
                 retnum = True
         # if retnum == False:
         #     return ADMINNUM_ERROR
         # for adname_dict in all_adname:
         #     if ADname == adname_dict['ADname']:
         #         retcode = True
         #     else:
         #         return ADMINNAME_ERROR
         #if retnum and retname:
         if retnum:
             update_admin = {}
             update_admin['ADisfreeze'] = True
             self.sadmin.delete_admin(ADnum, update_admin)
             response = import_status("delete_admin_success", "OK")
             return response
         else:
             return ADMINNUM_ERROR
     except Exception as e:
         print e
         return SYSTEM_ERROR
Beispiel #18
0
 def login(self):
     print "hello"
     json_data = request.json
     if not json_data:
         return PARAMS_ERROR
     usphonenum = json_data.get('usphonenum')
     uspassword = json_data.get('uspassword')
     if not usphonenum or not uspassword:
         return PARAMS_MISS(u'请输入手机号或密码')
     print type(usphonenum)
     user = get_model_return_dict(
         self.suser.getuser_by_phonenum(usphonenum))
     # print "aaaa" + user.USphone + ":" + user.USpassword
     # print(dir(user))
     # print user.USphonenum
     # print type(user.USphonenum)
     if not user or uspassword != user['USpassword']:
         return PHONE_OR_PASSWORD_WRONG
     token = usid_to_token(user['USid'])
     data = import_status('generic_token_success', "OK")
     data['data'] = {
         'token': token,
     }
     return data
Beispiel #19
0
 def findback_pwd(self):
     try:
         data = request.json
         phonenum = data.get('usphonenum')
         iccode = data.get('iccode')
         newpassword = data.get('newpassword')
     except Exception as e:
         return PARAMS_ERROR
     if not phonenum or not iccode or not newpassword:
         return PARAMS_ERROR
     codeinfo = get_model_return_dict(
         self.smycenter.get_inforcode_by_usphonenum(phonenum))
     if not codeinfo:
         return SYSTEM_ERROR
     if iccode != codeinfo['ICcode']:
         return INFORCODE_WRONG
     user = get_model_return_dict(self.suser.getuser_by_phonenum(phonenum))
     if not user:
         return NOT_FOUND_USER
     user_update = {}
     user_update["USpassword"] = generate_password_hash(newpassword)
     self.suser.update_user_by_uid(user['USid'], user_update)
     data = import_status("update_password_success", "OK")
     return data
Beispiel #20
0
    def get_all_order(self):
        if not is_admin():
            return AUTHORITY_ERROR
        params = [
            'page_size', 'page_num', 'oisn', 'starttime', 'endtime', 'status',
            'username', 'userphonenum', 'productname'
        ]
        try:
            data = request.json
            for param in params:
                if param not in data:
                    response = {}
                    response['message'] = u"参数缺失"
                    response['paramname'] = param
                    response['status'] = 405
                    return response
        except:
            return PARAMS_ERROR
        page_size = data.get('page_size')
        page_num = data.get('page_num')
        oisn = data.get('oisn')
        starttime = str(data.get('starttime')) + '000000' if data.get(
            'starttime') else None
        endtime = data.get('endtime') + '000000' if data.get(
            'endtime') else None
        status = data.get('status')
        username = data.get('username')
        userphonenum = data.get('userphonenum')
        productname = data.get('productname')
        all_order = get_model_return_list(
            self.sorder.get_all_order(oisn, starttime, endtime, status,
                                      username, userphonenum))
        return_list = []
        for order in all_order:
            detail = get_model_return_dict(
                self.sorder.get_order_details(order['OIsn']))
            from common.timeformat import get_web_time_str
            order['OIcreatetime'] = get_web_time_str(order['OIcreatetime'])
            product_list = get_model_return_list(
                self.sorder.get_product_list(detail['OIid']))
            for product in product_list:
                product['PRnum'] = 0
                sku_list = get_model_return_list(
                    self.sorder.get_sku_list_by_opiid(product['OPIid']))
                for sku in sku_list:
                    product['PRnum'] = product['PRnum'] + sku['number']
                product['skulist'] = sku_list
            order['product_list'] = product_list
            if productname:
                for product in product_list:
                    if productname in product['PRname']:
                        return_list.append(order)
                        break
            else:
                return_list.append(order)

        mount = len(return_list)
        page = mount / page_size
        if page == 0 or page == 1 and mount % page_size == 0:
            real_return_list = return_list[0:]
        else:
            if ((mount - (page_num - 1) * page_size) / page_size) >= 1 and \
                    (mount - (page_num  * page_size)) > 0:
                real_return_list = return_list[((page_num - 1) *
                                                page_size):(page_num *
                                                            page_size)]
            else:
                real_return_list = return_list[((page_num - 1) * page_size):]

        response = import_status("get_allorder_success", "OK")
        response['data'] = real_return_list
        response['mount'] = mount
        return response
Beispiel #21
0
 def create_review(self):
     args = request.args.to_dict()  # 捕获前端的URL参数,以字典形式呈现
     # 判断url参数是否异常
     if len(args) != 2 or "token" not in args.keys() or "Oid" not in args.keys():
         message, status, statuscode = import_status("URL_PARAM_WRONG", "response_error", "URL_PARAM_WRONG")
         return {
             "message": message,
             "status": status,
             "statuscode": statuscode,
         }
     token_to_str = get_str(args, "token")
     print('token'+token_to_str)
     oid_to_str = get_str(args, "Oid")
     oid_list_service = self.service_order.get_all_order_by_uid(token_to_str)
     oid_list_control = []
     print(oid_list_service)
     if oid_list_service == None:
         message, status, statuscode = import_status("messages_error_wrong_status_code", "response_error",
                                                     "error_wrong_status_code")
         return {
             "message": message,
             "status": status,
             "statuscode": statuscode,
         }
     for i in range(len(oid_list_service)):
         oid = oid_list_service[i].Oid
         oid_list_control.append(oid)
     print(oid_to_str)
     if oid_to_str not in oid_list_control:
         message, status, statuscode = import_status("messages_error_wrong_status_code", "response_error",
                                                     "error_wrong_status_code")
         return {
             "message": message,
             "status": status,
             "statuscode": statuscode,
         }
     else:
         # 查看订单状态是否正常
         order_abo = self.service_order.get_order_abo_by_oid(oid_to_str)
         if order_abo.Ostatus != 42:
             message, status, statuscode = import_status("messages_error_wrong_status_code", "response_error",
                                                         "error_wrong_status_code")
             return {
                 "message": message,
                 "status": status,
                 "statuscode": statuscode,
             }
     form = request.data  # 获取前端发送的body体
     form = json.loads(form)
     pro_list = form["Product_list"]
     print pro_list
     for i in range(len(pro_list)):
         review = model.Review()
         Rid = uuid.uuid4()
         review.Rid = str(Rid)
         review.Oid = oid_to_str
         review.Pid = pro_list[i].get("Pid")
         review.Uid = token_to_str
         review.Rscore = pro_list[i].get("Rscore")
         review.Rcontent = pro_list[i].get("Rcontent")
         review.Rstatus = "on"
         result = self.service_review.create_review(review)
         print(result)
     # 更新订单状态
     try:
         order_status = {}
         order_status["Ostatus"] = 49
         self.service_order.update_status_by_oid(oid_to_str, order_status)
     except Exception as e:
         print(e)
         from config.status import response_error
         from config.status_code import SYSTEM_ERROR
         from config.messages import error_system_error
         return {
             "message": error_system_error,
             "status": response_error,
             "statuscode": SYSTEM_ERROR,
         }
     from config.messages import create_review_success
     return {
         "message": create_review_success,
         "status": 200,
     }
Beispiel #22
0
 def get_useraddress(self):
     if is_tourist():
         return TOKEN_ERROR
     try:
         data = request.json
         isdefault = int(data.get('isdefault'))
         all = int(data.get('all'))
         UAid = data.get('UAid')
     except:
         return PARAMS_ERROR
     from common.timeformat import get_web_time_str
     if all == 1:
         all_address = get_model_return_list(self.smycenter.get_all_address(request.user.id))
         if not all_address:
             response = import_status("get_address_success", "OK")
             response['data'] = []
             return response
         address_list = []
         for address in all_address:
             address = get_model_return_dict(self.smycenter.get_other_address(request.user.id, address['UAid']))
             if not address:
                 return NO_ADDRESS
             area = get_model_return_dict(self.smycenter.get_area_by_areaid(address['areaid']))
             if area:
                 city = get_model_return_dict(self.smycenter.get_city_by_cityid(area['cityid']))
                 province = get_model_return_dict(self.smycenter.get_province_by_provinceid(city['provinceid']))
                 data = {}
                 data['provincename'] = province['provincename']
                 data['provinceid'] = province['provinceid']
                 data['cityname'] = city['cityname']
                 data['cityid'] = city['cityid']
                 data['areaname'] = area['areaname']
                 data['areaid'] = area['areaid']
                 data['details'] = address['UAdetails']
                 data['username'] = address['UAname']
                 data['userphonenum'] = address['UAphonenum']
                 data['uaid'] = address['UAid']
                 data['isdefault'] = address['UAdefault']
                 data['createtime'] = get_web_time_str(address['UAcreatetime'])
                 address_list.append(data)
             else:
                 city = get_model_return_dict(self.smycenter.get_city_by_cityid(address['cityid']))
                 province = get_model_return_dict(self.smycenter.get_province_by_provinceid(city['provinceid']))
                 data = {}
                 data['provincename'] = province['provincename']
                 data['provinceid'] = province['provinceid']
                 data['cityname'] = city['cityname']
                 data['cityid'] = city['cityid']
                 data['details'] = address['UAdetails']
                 data['username'] = address['UAname']
                 data['userphonenum'] = address['UAphonenum']
                 data['uaid'] = address['UAid']
                 data['isdefault'] = address['UAdefault']
                 data['createtime'] = get_web_time_str(address['UAcreatetime'])
                 address_list.append(data)
         response = import_status("get_address_success", "OK")
         response['data'] = address_list
         return response
     if isdefault == 1:
         address = get_model_return_dict(self.smycenter.get_default_address(request.user.id))
         if not address:
             response = import_status("get_address_success", "OK")
             response['data'] = []
             return response
         area = get_model_return_dict(self.smycenter.get_area_by_areaid(address['areaid']))
         if area:
             city = get_model_return_dict(self.smycenter.get_city_by_cityid(area['cityid']))
             province = get_model_return_dict(self.smycenter.get_province_by_provinceid(city['provinceid']))
             data = {}
             data['provincename'] = province['provincename']
             data['provinceid'] = province['provinceid']
             data['cityname'] = city['cityname']
             data['cityid'] = city['cityid']
             data['areaname'] = area['areaname']
             data['areaid'] = area['areaid']
             data['details'] = address['UAdetails']
             data['username'] = address['UAname']
             data['userphonenum'] = address['UAphonenum']
             data['uaid'] = address['UAid']
             data['createtime'] = get_web_time_str(address['UAcreatetime'])
             response = import_status("get_address_success", "OK")
             response['data'] = data
             return response
         else:
             city = get_model_return_dict(self.smycenter.get_city_by_cityid(address['cityid']))
             province = get_model_return_dict(self.smycenter.get_province_by_provinceid(city['provinceid']))
             data = {}
             data['provincename'] = province['provincename']
             data['provinceid'] = province['provinceid']
             data['cityname'] = city['cityname']
             data['cityid'] = city['cityid']
             data['details'] = address['UAdetails']
             data['username'] = address['UAname']
             data['userphonenum'] = address['UAphonenum']
             data['uaid'] = address['UAid']
             data['createtime'] = get_web_time_str(address['UAcreatetime'])
             response = import_status("get_address_success", "OK")
             response['data'] = data
             return response
     elif isdefault == 0:
         address = get_model_return_dict(self.smycenter.get_other_address(request.user.id, UAid))
         if not address:
             response = import_status("get_address_success", "OK")
             response['data'] = []
             return response
         area = get_model_return_dict(self.smycenter.get_area_by_areaid(address['areaid']))
         if area:
             city = get_model_return_dict(self.smycenter.get_city_by_cityid(area['cityid']))
             province = get_model_return_dict(self.smycenter.get_province_by_provinceid(city['provinceid']))
             data = {}
             data['provincename'] = province['provincename']
             data['provinceid'] = province['provinceid']
             data['cityname'] = city['cityname']
             data['cityid'] = city['cityid']
             data['areaname'] = area['areaname']
             data['areaid'] = area['areaid']
             data['details'] = address['UAdetails']
             data['username'] = address['UAname']
             data['userphonenum'] = address['UAphonenum']
             data['uaid'] = address['UAid']
             data['createtime'] = get_web_time_str(address['UAcreatetime'])
             response = import_status("get_address_success", "OK")
             response['data'] = data
             return response
         else:
             city = get_model_return_dict(self.smycenter.get_city_by_cityid(address['cityid']))
             province = get_model_return_dict(self.smycenter.get_province_by_provinceid(city['provinceid']))
             data = {}
             data['provincename'] = province['provincename']
             data['provinceid'] = province['provinceid']
             data['cityname'] = city['cityname']
             data['cityid'] = city['cityid']
             data['details'] = address['UAdetails']
             data['username'] = address['UAname']
             data['userphonenum'] = address['UAphonenum']
             data['uaid'] = address['UAid']
             data['createtime'] = get_web_time_str(address['UAcreatetime'])
             response = import_status("get_address_success", "OK")
             response['data'] = data
             return response
Beispiel #23
0
    def deal_register_record(self):
        if not is_admin():
            return TOKEN_ERROR
        try:
            data = request.json
            IRIid = data.get('IRIid')
            willstatus = data.get('willstatus')
        except:
            return PARAMS_ERROR
        info = get_model_return_dict(
            self.suser.get_registerrecord_by_IRIid(IRIid))
        if not info:
            return NOT_FOUND_USER
        if willstatus == 2:
            session = db_session()
            try:
                user = self.smycenter.get_user_basicinfo_byphone(
                    info['IRIprephonenum'])  # 插入销售表,有数据就更新
                if not user:
                    raise dberror
                user = get_model_return_dict(user)
                monthnow = datetime.strftime(datetime.now(),
                                             format_for_db)[0:6]
                amount_data = self.saccount.get_user_date(
                    user['USid'], monthnow)
                if amount_data:
                    amount_data = get_model_return_dict(amount_data)
                    new_data = {}
                    new_data['reward'] = amount_data['reward'] + float(
                        self.conf.get('account', 'reward'))
                    try:
                        session.query(Amount).filter(
                            Amount.USid == user['USid']).update(new_data)
                    except:
                        raise dberror
                else:
                    amount = Amount()
                    amount.USid = user['USid']
                    amount.AMid = str(uuid.uuid4())
                    amount.USagentid = user['USagentid']
                    amount.USname = user['USname']
                    amount.reward = float(self.conf.get('account', 'reward'))
                    amount.AMstatus = 1
                    amount.USheadimg = user['USheadimg']
                    amount.AMcreattime = datetime.strftime(
                        datetime.now(), format_for_db)
                    amount.AMmonth = datetime.strftime(datetime.now(),
                                                       format_for_db)[0:6]
                    session.add(amount)

                new_userid = str(uuid.uuid4())  # 插入新用户
                new_user = User()
                new_user.USid = new_userid
                new_user.USname = info['IRIname']
                new_user.USpre = user['USid']
                new_user.USagentid = get_random_str(12)
                new_user.USheadimg = info['IRIpic'] if info['IRIpic'] else 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_100' \
                                                             '00&sec=1540919391&di=91c' \
                                                             '1ae656341d5814e63280616ad8ade&imgtype=jpg&er=1&src=http%3A%2F%2Fimg.zcool.cn%2Fcommun' \
                                                             'ity%2F0169d55548dff50000019ae9973427.jpg%401280w_1l_2o_100sh.jpg'
                new_user.USphonenum = info['IRIphonenum']
                new_user.USmount = 0
                new_user.USbail = 0
                new_user.USwechat = info['IRIwechat']
                new_user.idcardnum = info['IRIidcardnum']
                new_user.UScreatetime = datetime.strftime(
                    datetime.now(), format_for_db)
                new_user.USpassword = generate_password_hash(
                    info['IRIpassword'])
                session.add(new_user)

                reward = Reward()  # 插入直推奖励表
                reward.REid = str(uuid.uuid4())
                reward.RElastuserid = user['USid']
                reward.REnextuserid = new_userid
                reward.REmonth = datetime.strftime(datetime.now(),
                                                   format_for_db)[0:6]
                reward.REmount = float(self.conf.get('account', 'reward'))
                reward.REcreatetime = datetime.strftime(
                    datetime.now(), format_for_db)
                session.add(reward)

                session.query(User).filter(User.USid == user['USid'])\
                    .update({"USmount": user['USmount'] + float(self.conf.get('account', 'reward'))})

                # 写入代理消息
                content = u'您推荐的代理已审核通过,直推奖励已发放至余额'
                agent_result = self.smessage.create_agentmessage(
                    session, user['USid'],
                    datetime.strftime(datetime.now(), format_for_db), content,
                    2)
                if not agent_result:
                    return SYSTEM_ERROR

                USname = info['IRIname']  # 插入默认收货地址
                USphonenum = info['IRIphonenum']
                USdatails = info['IRIaddress']
                areaid = info['IRIarea']
                cityid = info['IRIcity']
                if areaid:
                    all_areaid = get_model_return_list(
                        self.smycenter.get_all_areaid())
                    area_list = []
                    for area in all_areaid:
                        area_list.append(area['areaid'])
                    if areaid not in area_list:
                        return BAD_ADDRESS
                    time_time = datetime.now()
                    time_str = datetime.strftime(time_time, format_for_db)
                    uaid = str(uuid.uuid1())
                    exist_default = self.smycenter.get_default_address_by_usid(
                        new_userid)
                    uadefault = True if not exist_default else False
                    self.smycenter.add_address_selfsession(session, uaid, new_userid, USname, USphonenum, USdatails, \
                                                           areaid, uadefault, time_str, None)
                else:
                    all_cityid = get_model_return_list(
                        self.smycenter.get_all_cityid())
                    cityid_list = []
                    for city in all_cityid:
                        cityid_list.append(city['cityid'])
                    if cityid not in cityid_list:
                        return BAD_ADDRESS
                    time_time = datetime.now()
                    time_str = datetime.strftime(time_time, format_for_db)
                    uaid = str(uuid.uuid1())
                    exist_default = self.smycenter.get_default_address_by_usid(
                        new_userid)
                    uadefault = True if not exist_default else False
                    self.smycenter.add_address_selfsession(session, uaid, new_userid, USname, USphonenum, USdatails, \
                                                           None, uadefault, time_str, cityid)
                session.commit()
            except Exception as e:
                print e
                session.rollback()
                return SYSTEM_ERROR
            finally:
                session.close()
        update = {}
        update['IRIstatus'] = int(willstatus)
        result = self.suser.update_register_record(IRIid, update)
        response = import_status("register_success", "OK")
        return response
Beispiel #24
0
 def register(self):
     params = [
         'qrid', 'preusername', 'prephonenum', 'username', 'phonenum',
         'inforcode', 'password', 'idcardnum', 'wechat', 'cityid', 'areaid',
         'details', 'paytype', 'payamount', 'paytime', 'headimg', 'proof',
         'alipaynum', 'bankname', 'accountname', 'cardnum'
     ]
     data = request.json
     for param in data:
         if param not in params:
             return PARAMS_MISS
     try:
         qrid = data['qrid']
         preusername = data['preusername']
         prephonenum = data['prephonenum']
         username = data['username']
         phonenum = data['phonenum']
         inforcode = data['inforcode']  # 验证码
         password = data['password']
         idcardnum = data['idcardnum']
         wechat = data['wechat']
         cityid = data['cityid']
         areaid = data['areaid']
         details = data['details']
         paytype = data['paytype']
         payamount = data['payamount']
         paytime = data['paytime']
         headimg = data['headimg']
         proof = data['proof']
         alipaynum = data['alipaynum']
         bankname = data['bankname']
         accountname = data['accountname']
         cardnum = data['cardnum']
         if int(paytype) == 1:
             if not alipaynum or bankname or accountname or cardnum:
                 return PARAMS_ERROR
         if int(paytype) == 2:
             if alipaynum or not bankname or not accountname or not cardnum:
                 return PARAMS_ERROR
     except:
         return PARAMS_ERROR
     qr = get_model_return_dict(self.suser.get_qrcode_by_qrid(
         qrid)) if self.suser.get_qrcode_by_qrid(qrid) else None
     if not qr:
         return NOT_FOUND_QRCODE
     update = {}
     update['QRnumber'] = str(int(qr['QRnumber']) - 1)
     result = self.suser.update_qrcode(qrid, update)
     if not result:
         return NOT_FOUND_QRCODE
     check_phone = self.suser.getuser_by_phonenum(phonenum)
     if check_phone:
         return HAS_REGISTER
     codeinfo = get_model_return_dict(self.smycenter.get_inforcode_by_usphonenum(phonenum)) if self.smycenter\
         .get_inforcode_by_usphonenum(phonenum) else None
     if not codeinfo:
         return SYSTEM_ERROR
     if inforcode != codeinfo['ICcode']:
         return INFORCODE_WRONG
     session = db_session()
     try:
         result = self.suser.insertInvitate(session, data)
         if not result:
             raise dberror
         session.commit()
     except Exception as e:
         print e
         session.rollback()
         return SYSTEM_ERROR
     finally:
         session.close()
     response = import_status("register_success", "OK")
     return response
Beispiel #25
0
    def get_registerinfo(self):
        try:
            data = request.json
            qrcodeid = str(data.get('qrid'))
        except:
            return PARAMS_ERROR

        if not qrcodeid:
            user_dict = {}
            user_dict['alipaynum'] = self.conf.get('account', 'alipaynum')
            user_dict['alipayname'] = self.conf.get('account', 'alipayname')
            user_dict['bankname'] = self.conf.get('account', 'bankname')
            user_dict['accountname'] = self.conf.get('account', 'accountname')
            user_dict['cardnum'] = self.conf.get('account', 'cardnum')
            user_dict['money'] = float(self.conf.get('account', 'money'))
            user_dict['service'] = self.conf.get('account', 'service')
            user_dict['drawbank'] = self.conf.get('account', 'drawbank')
            response = import_status("get_registerinfo_success", "OK")
            response['data'] = user_dict
            return response
        usid = self.suser.get_user_by_qrid(qrcodeid)
        if not usid:
            return NOT_FOUND_QRCODE
        usid = get_model_return_dict(usid)
        user = self.suser.getuserinfo_by_uid(usid['USid'])
        if not user:
            return NOT_FOUND_USER
        user = get_model_return_dict(user)
        user_dict = {}
        user_dict['name'] = user['USname']
        user_dict['USphonenum'] = user['USphonenum']
        user_dict['alipaynum'] = self.conf.get('account', 'alipaynum')
        user_dict['alipayname'] = self.conf.get('account', 'alipayname')
        user_dict['bankname'] = self.conf.get('account', 'bankname')
        user_dict['accountname'] = self.conf.get('account', 'accountname')
        user_dict['cardnum'] = self.conf.get('account', 'cardnum')
        user_dict['money'] = float(self.conf.get('account', 'money'))
        user_dict['service'] = self.conf.get('account', 'service')
        user_dict['drawbank'] = self.conf.get('account', 'drawbank')
        address = self.smycenter.get_user_default_details(usid['USid'])
        if address:
            address = get_model_return_dict(address)
            area = get_model_return_dict(
                self.smycenter.get_area_by_areaid(address['areaid']))
            if area:
                city = get_model_return_dict(
                    self.smycenter.get_city_by_cityid(area['cityid']))
                province = get_model_return_dict(
                    self.smycenter.get_province_by_provinceid(
                        city['provinceid']))
                provincename = province['provincename']
                cityname = city['cityname']
                areaname = area['areaname']
                details = address['UAdetails']
                real_address = provincename + cityname + areaname + details
                user_dict['address'] = real_address
                response = import_status("get_registerinfo_success", "OK")
                response['data'] = user_dict
                return response
            else:
                city = get_model_return_dict(
                    self.smycenter.get_city_by_cityid(address['cityid']))
                province = get_model_return_dict(
                    self.smycenter.get_province_by_provinceid(
                        city['provinceid']))
                data = {}
                provincename = province['provincename']
                cityname = city['cityname']
                details = address['UAdetails']
                real_address = provincename + cityname + details
                user_dict['address'] = real_address
                response = import_status("get_registerinfo_success", "OK")
                response['data'] = user_dict
                return response
        else:
            address = self.smycenter.get_user_otherdefault_details(
                usid['USid'])
            if address:
                address = get_model_return_dict(address)
                area = get_model_return_dict(
                    self.smycenter.get_area_by_areaid(address['areaid']))
                if area:
                    city = get_model_return_dict(
                        self.smycenter.get_city_by_cityid(area['cityid']))
                    province = get_model_return_dict(
                        self.smycenter.get_province_by_provinceid(
                            city['provinceid']))
                    provincename = province['provincename']
                    cityname = city['cityname']
                    areaname = area['areaname']
                    details = address['UAdetails']
                    real_address = provincename + cityname + areaname + details
                    response = import_status("get_registerinfo_success", "OK")
                    response['data'] = user_dict
                    return response
                else:
                    city = get_model_return_dict(
                        self.smycenter.get_city_by_cityid(address['cityid']))
                    province = get_model_return_dict(
                        self.smycenter.get_province_by_provinceid(
                            city['provinceid']))
                    data = {}
                    provincename = province['provincename']
                    cityname = city['cityname']
                    details = address['UAdetails']
                    real_address = provincename + cityname + details
                    user_dict['address'] = real_address
                    response = import_status("get_registerinfo_success", "OK")
                    response['data'] = user_dict
                    return response
        return SYSTEM_ERROR
Beispiel #26
0
 def get_order_list(self):
     if is_tourist():
         return TOKEN_ERROR
     data = request.json
     if not data:
         return PARAMS_MISS
     try:
         type = int(data.get('type'))
         page = int(data.get('page'))
         count = int(data.get('count'))
     except:
         return PARAMS_ERROR
     order_return_list = []
     if type == 0:
         order_list = get_model_return_list(
             self.sorder.get_allorder_list(request.user.id, page, count))
         state0 = int(self.sorder.get_total_order_num(
             request.user.id)) if self.sorder.get_total_order_num(
                 request.user.id) else 0
         state1 = int(self.sorder.get_order_num(
             request.user.id, 1)) if self.sorder.get_order_num(
                 request.user.id, 1) else 0
         state2 = int(self.sorder.get_order_num(
             request.user.id, 2)) if self.sorder.get_order_num(
                 request.user.id, 2) else 0
         state3 = int(self.sorder.get_order_num(
             request.user.id, 3)) if self.sorder.get_order_num(
                 request.user.id, 3) else 0
         state4 = int(self.sorder.get_order_num(
             request.user.id, 4)) if self.sorder.get_order_num(
                 request.user.id, 4) else 0
         state1 = state1 + state4
         for order in order_list:
             product_list = get_model_return_list(
                 self.sorder.get_product_list(order['OIid']))
             for product in product_list:
                 product['PRnum'] = 0
                 sku_list = get_model_return_list(
                     self.sorder.get_sku_list_by_opiid(product['OPIid']))
                 for sku in sku_list:
                     product['PRnum'] = product['PRnum'] + sku['number']
                 product['skulist'] = sku_list
             order['product_list'] = product_list
             from common.timeformat import get_web_time_str
             order['OIcreatetime'] = get_web_time_str(order['OIcreatetime'])
             order_return_list.append(order)
         response = import_status("get_orderlist_success", "OK")
         response['data'] = order_return_list
         response['state0_num'] = state0
         response['state1_num'] = state1
         response['state2_num'] = state2
         response['state3_num'] = state3
         return response
     else:
         order_list = get_model_return_list(
             self.sorder.get_order_list(request.user.id, type, page, count))
         if type == 1:
             order_list = order_list + get_model_return_list(
                 self.sorder.get_order_list(request.user.id, 4, page,
                                            count))
             new_list = sorted(order_list,
                               key=lambda order: order['OIcreatetime'],
                               reverse=True)
             order_list = new_list
         if not order_list:
             response = import_status("get_orderlist_success", "OK")
             response['data'] = order_return_list
             return response
         for order in order_list:
             product_list = get_model_return_list(
                 self.sorder.get_product_list(order['OIid']))
             for product in product_list:
                 product['PRnum'] = 0
                 sku_list = get_model_return_list(
                     self.sorder.get_sku_list_by_opiid(product['OPIid']))
                 for sku in sku_list:
                     product['PRnum'] = product['PRnum'] + sku['number']
                 product['skulist'] = sku_list
             order['product_list'] = product_list
             from common.timeformat import get_web_time_str
             order['OIcreatetime'] = get_web_time_str(order['OIcreatetime'])
             order_return_list.append(order)
         response = import_status("get_orderlist_success", "OK")
         response['data'] = order_return_list
         return response
Beispiel #27
0
 def upload_file(self):
     try:
         param = request.args.to_dict()
         type = param.get("type")
     except:
         type = None
     if is_ordirnaryuser() or is_admin():
         try:
             files = request.files.get("file")
         except:
             return PARAMS_ERROR
         if not files:
             return NOT_FOUND_FILE
         if platform.system() == "Windows":
             rootdir = "D:/task"
         else:
             rootdir = "/opt/beili/file/"
         if not os.path.isdir(rootdir):
             os.makedirs(rootdir)
         lastpoint = str(files.filename).rindex(".")
         filessuffix = str(files.filename)[lastpoint + 1:]
         print 'filessuffix', filessuffix
         if is_ordirnaryuser():
             if filessuffix.lower() in ['png', 'jpg', 'jpeg', 'gif']:
                 image = Image.open(files)
                 w, h = image.size
                 filename = request.user.id + get_db_time_str(
                 ) + get_random_str(6) + "." + filessuffix
                 filepath = os.path.join(rootdir, filename)
                 if type == 1:
                     image.resize((128, 128)).save(filepath)
                 else:
                     image.resize((w / 2, h / 2)).save(filepath)
                 response = import_status("upload_file_success", "OK")
                 url = QRCODEHOSTNAME + "/file/" + filename
                 response["data"] = url
                 return response
         if is_admin():
             if filessuffix.lower() in ['png', 'jpg', 'jpeg', 'gif']:
                 image = Image.open(files)
                 w, h = image.size
                 filename = request.user.id + get_db_time_str(
                 ) + get_random_str(6) + "." + filessuffix
                 filepath = os.path.join(rootdir, filename)
                 # image.resize((w / 2, h / 2)).save(filepath)
                 if w > 1000:
                     image.resize((w * 2 / 3, h * 2 / 3)).save(filepath)
                 else:
                     image.save(filepath)
                 response = import_status("upload_file_success", "OK")
                 url = QRCODEHOSTNAME + "/file/" + filename
                 response["data"] = url
                 return response
         filename = request.user.id + get_db_time_str() + get_random_str(
             6) + "." + filessuffix
         filepath = os.path.join(rootdir, filename)
         print(filepath)
         files.save(filepath)
         response = import_status("upload_file_success", "OK")
         url = QRCODEHOSTNAME + "/file/" + filename
         response["data"] = url
         return response
     else:
         id1 = str(uuid.uuid4())
         token = usid_to_token(id=id1, type='Temp')
         try:
             files = request.files.get("file")
         except:
             return PARAMS_ERROR
         if not files:
             return NOT_FOUND_FILE
         if platform.system() == "Windows":
             rootdir = "D:/task"
         else:
             rootdir = "/opt/beili/file/"
         if not os.path.isdir(rootdir):
             os.makedirs(rootdir)
         lastpoint = str(files.filename).rindex(".")
         filessuffix = str(files.filename)[lastpoint + 1:]  # 后缀名
         print filessuffix
         if filessuffix.lower() in ['png', 'jpg', 'jpeg', 'gif']:
             image = Image.open(files)
             w, h = image.size
             filename = id1 + get_db_time_str() + "." + filessuffix
             filepath = os.path.join(rootdir, filename)
             if type == 1:
                 image.resize((128, 128)).save(filepath)
             else:
                 image.resize((w / 2, h / 2)).save(filepath)
             url = QRCODEHOSTNAME + "/file/" + filename
             data = import_status("upload_file_success", "OK")
             data['data'] = {'token': token, 'url': url}
             return data
         filename = id1 + get_db_time_str() + "." + filessuffix
         filepath = os.path.join(rootdir, filename)
         print(filepath)
         files.save(filepath)
         url = QRCODEHOSTNAME + "/file/" + filename
         data = import_status("upload_file_success", "OK")
         data['data'] = {'token': token, 'url': url}
         return data
Beispiel #28
0
    def update_order(self):
        if not is_admin():
            return AUTHORITY_ERROR
        try:
            data = request.json
            oisn = data.get('oisn')
            expressname = data.get('expressname')
            expressnum = data.get('expressnum')
            if not expressname or not expressnum:
                raise dberror
        except:
            return PARAMS_ERROR
        detail = get_model_return_dict(self.sorder.get_order_details(oisn))
        if not detail:
            return NOT_FOUND_ORDER
        session = db_session()
        try:
            is_exits = get_model_return_dict(
                session.query(OrderInfo.expressnum).filter(
                    OrderInfo.OIsn == oisn).first())
            if is_exits['expressnum']:
                update = {}
                update['OIstatus'] = 2
                update['expressname'] = expressname
                update['expressnum'] = expressnum
                session.query(OrderInfo).filter(
                    OrderInfo.OIsn == oisn).update(update)
            else:
                update = {}
                update['OIstatus'] = 2
                update['expressname'] = expressname
                update['expressnum'] = expressnum
                session.query(OrderInfo).filter(
                    OrderInfo.OIsn == oisn).update(update)
                monthnow = datetime.strftime(datetime.now(),
                                             format_for_db)[0:6]
                amount_data = self.saccount.get_user_date(
                    detail['USid'], monthnow)
                order = get_model_return_dict(
                    self.sorder.get_order_details(oisn))
                user = self.smycenter.get_user_basicinfo(
                    detail['USid'])  # 插入销售表,有数据就更新
                if not user:
                    raise dberror
                user = get_model_return_dict(user)
                if not order:
                    raise dberror
                if amount_data:
                    amount_data = get_model_return_dict(amount_data)
                    new_data = {}
                    new_data['performance'] = amount_data[
                        'performance'] + order['discountnum']
                    try:
                        session.query(Amount).filter(
                            Amount.USid == detail['USid']).filter(
                                Amount.AMmonth == monthnow).update(new_data)
                    except:
                        raise dberror
                else:
                    amount = Amount()
                    amount.USid = detail['USid']
                    amount.AMid = str(uuid.uuid4())
                    amount.USagentid = user['USagentid']
                    amount.performance = order['discountnum']
                    amount.USname = user['USname']
                    amount.AMstatus = 1
                    amount.USheadimg = user['USheadimg']
                    amount.AMcreattime = datetime.strftime(
                        datetime.now(), format_for_db)
                    amount.AMmonth = monthnow
                    session.add(amount)

                performance = Performance()  # 插入业绩表
                performance.USid = detail['USid']
                performance.REmonth = datetime.strftime(
                    datetime.now(), format_for_db)[0:6]
                performance.PEid = str(uuid.uuid4())
                performance.PEdiscountnum = order['discountnum']
                performance.PEcreatetime = datetime.strftime(
                    datetime.now(), format_for_db)
                session.add(performance)
            session.commit()
        except Exception as e:
            print e
            session.rollback()
            return SYSTEM_ERROR
        finally:
            session.close()
        reponse = import_status("update_order_success", "OK")
        detail = get_model_return_dict(self.sorder.get_order_details(oisn))
        from common.timeformat import get_web_time_str
        detail['OIcreatetime'] = get_web_time_str(detail['OIcreatetime'])
        product_list = get_model_return_list(
            self.sorder.get_product_list(detail['OIid']))
        detail['product_list'] = product_list
        reponse['data'] = detail
        return reponse
Beispiel #29
0
    def create_order(self):
        if is_tourist():
            return TOKEN_ERROR
        data = request.json
        if not data:
            return PARAMS_MISS
        params_list = [
            "UAid", "product_list", "OInote", "PRlogisticsfee", "totalprice"
        ]
        for param in params_list:
            if param not in data:
                response = {}
                response['message'] = u"参数缺失"
                response['paramname'] = param
                response['status'] = 405
                return response
        try:
            UAid = data['UAid']
            OInote = data['OInote']
            product_list = data['product_list']
            PRlogisticsfee = float(data['PRlogisticsfee'])
            totalprice = float(data['totalprice'])
        except:
            return PARAMS_ERROR
        real_PRlogisticsfee = 0
        if len(product_list) == 1 and len(
                product_list[0]['skulist']) == 1 and int(
                    product_list[0]['skulist'][0]['number']) == 1:
            real_PRlogisticsfee = get_model_return_dict(
                self.sgoods.get_product_details(
                    product_list[0]['PRid']))['PRlogisticsfee']
        user_info = get_model_return_dict(
            self.smycenter.get_user_basicinfo(request.user.id))
        if not user_info:
            return SYSTEM_ERROR
        if user_info['USbail'] < float(self.conf.get('account', 'bail')):
            return NO_BAIL
        mount = 0
        new_list = []
        all_psid = []
        discountnum = 0
        product_num = 0
        try:
            for product in product_list:
                check_product = get_model_return_dict(
                    self.sgoods.get_product_info(product['PRid']))
                if not check_product:
                    return PRODUCT_OFFLINE
                for sku in product['skulist']:
                    sku_info = get_model_return_dict(
                        self.sgoods.get_sku_status(sku['psid']))
                    if not sku_info:
                        return SKU_WRONG
                    if sku['number'] > sku_info['PSstock']:
                        return STOCK_NOT_ENOUGH
                    mount = mount + sku['number'] * check_product['PRprice']
                    product_num = product_num + sku['number']
                    discountnum = discountnum + sku['number'] * check_product[
                        'PAdiscountnum']
                    all_psid.append(sku['psid'])
                product['PRprice'] = check_product['PRprice']
                new_list.append(product)
            if round(totalprice,
                     2) != round(mount + real_PRlogisticsfee,
                                 2) or real_PRlogisticsfee != PRlogisticsfee:
                response = {}
                response['status'] = 200
                response['success'] = False
                response['data'] = new_list
                response['PRlogisticsfee'] = real_PRlogisticsfee
                response['totalprice'] = round(mount + real_PRlogisticsfee, 2)
                return response
            if user_info['USmount'] < round(mount + PRlogisticsfee, 2):
                return NO_ENOUGH_MOUNT
        except Exception as e:
            print e
            return SYSTEM_ERROR
        session = db_session()
        try:
            OIid = str(uuid.uuid4())
            OIsn = datetime.strftime(datetime.now(),
                                     format_for_db) + get_random_int()
            OIcreatetime = datetime.strftime(datetime.now(), format_for_db)
            address = get_model_return_dict(
                self.smycenter.get_other_address(request.user.id, UAid))
            if not address:
                return NO_ADDRESS
            area = get_model_return_dict(
                self.smycenter.get_area_by_areaid(address['areaid']))
            from common.timeformat import get_web_time_str
            if area:
                city = get_model_return_dict(
                    self.smycenter.get_city_by_cityid(area['cityid']))
                province = get_model_return_dict(
                    self.smycenter.get_province_by_provinceid(
                        city['provinceid']))
                provincename = province['provincename']
                cityname = city['cityname']
                areaname = area['areaname']
                details = address['UAdetails']
                username = address['UAname']
                userphonenum = address['UAphonenum']
            else:
                city = get_model_return_dict(
                    self.smycenter.get_city_by_cityid(address['cityid']))
                province = get_model_return_dict(
                    self.smycenter.get_province_by_provinceid(
                        city['provinceid']))
                provincename = province['provincename']
                cityname = city['cityname']
                areaname = None
                details = address['UAdetails']
                username = address['UAname']
                userphonenum = address['UAphonenum']

            result = self.sorder.add_order(session, OIid, OIsn,
                                           request.user.id, OInote, mount,
                                           UAid, OIcreatetime, PRlogisticsfee,
                                           provincename, cityname, areaname,
                                           details, username, userphonenum,
                                           product_num, discountnum)
            if not result:
                raise dberror

            # 插入订单商品详情表
            for product in new_list:
                OPIid = str(uuid.uuid4())
                PRid = product['PRid']
                PRname = product['PRname']
                PRimage = get_model_return_dict(
                    self.sgoods.get_product(PRid))['PRpic']
                PRprice = product['PRprice']
                result = self.sorder.add_orderproductinfo(
                    session, OPIid, OIid, PRid, PRname, PRprice, PRimage)
                if not result:
                    raise dberror
                # 插入订单sku详情表
                for sku in product['skulist']:
                    orderskuinfo = OrderSkuInfo()
                    orderskuinfo.OSIid = str(uuid.uuid4())
                    orderskuinfo.OPIid = OPIid
                    orderskuinfo.number = sku['number']
                    orderskuinfo.sizename = sku['sizename']
                    orderskuinfo.colorname = sku['colorname']
                    session.add(orderskuinfo)
                    sku_info = get_model_return_dict(
                        self.sgoods.get_sku_status(sku['psid']))
                    session.query(ProductSku).filter(ProductSku.PSid == sku['psid'])\
                        .update({"PSstock": sku_info['PSstock'] - sku['number']})

            # 更改用户购物车商品状态
            for psid in all_psid:
                session.query(ShoppingCart).filter(ShoppingCart.USid == request.user.id).filter(ShoppingCart.PSid == psid)\
                    .update({"SCstatus": 0})
            # 减余额并插入代理消息
            user = {}
            user['USmount'] = round(
                user_info['USmount'] - round(mount + real_PRlogisticsfee, 2),
                2)
            session.query(User).filter_by(USid=request.user.id).update(user)
            agentmessage = AgentMessage()
            agentmessage.AMid = str(uuid.uuid4())
            agentmessage.USid = request.user.id
            agentmessage.AMdate = OIcreatetime
            agentmessage.AMtype = 0
            agentmessage.AMcontent = u'您的订单创建成功,订单号为' + ' ' + str(OIsn)
            session.add(agentmessage)

            moneyrecord = MoneyRecord()  # 插入收支记录表
            moneyrecord.MRid = str(uuid.uuid4())
            moneyrecord.MRtype = 1
            moneyrecord.OIid = OIsn
            moneyrecord.MRamount = -(mount + real_PRlogisticsfee)
            moneyrecord.MRcreatetime = datetime.strftime(
                datetime.now(), format_for_db)
            moneyrecord.USid = request.user.id
            session.add(moneyrecord)
            session.commit()
        except stockerror as e:
            session.rollback()
            return STOCK_NOT_ENOUGH
        except Exception as e2:
            session.rollback()
            print e2.message
            return SYSTEM_ERROR
        finally:
            session.close()
        response = import_status("create_order_success", "OK")
        response['success'] = True
        return response
Beispiel #30
0
 def get_willsend_products(self):
     if not is_admin():
         return TOKEN_ERROR
     # workbook = xlrd.open_workbook(r'/Users/fx/Desktop/项目相关/1.xls')
     # print (workbook.sheet_names())
     # sheet = workbook.sheet_names()[0]
     # sheet_data = workbook.sheet_by_name(sheet)
     # print(sheet_data)
     # print (sheet_data.name, sheet_data.nrows, sheet_data.ncols)
     # rows = sheet_data.row_values(0)  # 获取第一行内容
     # cols = sheet_data.col_values(0)  # 获取第一列内容
     # print (rows)
     try:
         data = request.json
         oisnlist = data.get('oisnlist')
     except:
         return PARAMS_ERROR
     new_oisn_list = []
     for oisn in oisnlist:
         order = get_model_return_dict(
             self.sorder.get_order_details(str(oisn)))
         if order['OIstatus'] == 1:
             new_oisn_list.append(order)
     style = xlwt.XFStyle()
     font = xlwt.Font()
     font.name = u'宋体'
     font.bold = True
     style.font = font
     time_now = datetime.strftime(datetime.now(), format_for_db)
     workbook = xlwt.Workbook(encoding='utf-8')
     worksheet = workbook.add_sheet('sheet1')
     # worksheet.write_merge()
     worksheet.write(0, 0, label='订单号', style=style)
     worksheet.write(0, 1, label='收货地址', style=style)
     worksheet.write(0, 2, label='卖家备注', style=style)
     worksheet.write(0, 3, label='发件人姓名', style=style)
     worksheet.write(0, 4, label='发件人电话', style=style)
     worksheet.write(0, 5, label='发件人地址', style=style)
     worksheet.write(0, 6, label='发货商品', style=style)
     font = xlwt.Font()
     font.name = u'宋体'
     font.bold = False
     style.font = font
     url = ''
     session = db_session()
     try:
         if new_oisn_list:
             for i, order in enumerate(new_oisn_list):
                 oisn = order['OIsn']
                 username = order['username']
                 phone = order['userphonenum']
                 provincename = order['provincename']
                 cityname = order['cityname']
                 areaname = order['areaname'] if order['areaname'] else ''
                 details = order['details']
                 address = username + ' ' + phone + ' ' + provincename + cityname + areaname + details
                 OInote = order['OInote']
                 product_list = get_model_return_list(
                     self.sorder.get_product_list(order['OIid']))
                 productname = self.get_product_name(product_list)
                 worksheet.write(i + 1, 0, label=oisn, style=style)
                 worksheet.write(i + 1, 1, label=address, style=style)
                 worksheet.write(i + 1, 2, label=OInote, style=style)
                 worksheet.write(i + 1,
                                 3,
                                 label=self.conf.get('account', 'sendname'),
                                 style=style)
                 worksheet.write(i + 1,
                                 4,
                                 label=self.conf.get(
                                     'account', 'sendphone'),
                                 style=style)
                 worksheet.write(i + 1,
                                 5,
                                 label=self.conf.get(
                                     'account', 'sendaddress'),
                                 style=style)
                 session.query(OrderInfo).filter(
                     OrderInfo.OIsn == oisn).update({"OIstatus": 4})
                 worksheet.write(i + 1, 6, label=productname, style=style)
         if platform.system() == "Windows":
             rootdir = "D:/task"
         else:
             rootdir = "/opt/beili/file/"
         if not os.path.isdir(rootdir):
             os.makedirs(rootdir)
         filename = get_db_time_str() + "." + 'xls'
         filepath = os.path.join(rootdir, filename)
         print(filepath)
         workbook.save(filepath)
         url = QRCODEHOSTNAME + "/file/" + filename
     except Exception as e:
         print e
         session.rollback()
         return SYSTEM_ERROR
     finally:
         session.commit()
     response = import_status("get_willsend_products_success", "OK")
     response['data'] = url
     return response