From f87f5ca73a515b919a3868950626df14206dbae1 Mon Sep 17 00:00:00 2001 From: jianbo <263303411@qq.com> Date: Wed, 31 Jul 2019 17:12:55 +0800 Subject: [PATCH] =?UTF-8?q?python=E5=AD=A6=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/workspace.xml | 602 +++++++++++----------- comm | 25 + common/models/member/Member.py | 19 + common/models/member/Oauth_member_bind.py | 21 + config/base_setting.py | 14 +- mina | 2 +- web/controllers/account/Account.py | 2 + web/controllers/api/Member.py | 58 +++ web/controllers/api/__init__.py | 8 + www.py | 3 +- 数据库文件/food.sql | 398 ++++++++++++++ 数据库文件/后台初始账户.sql | 5 + 数据库文件/自动生成models.txt | 1 + 13 files changed, 841 insertions(+), 317 deletions(-) create mode 100644 comm create mode 100644 common/models/member/Member.py create mode 100644 common/models/member/Oauth_member_bind.py create mode 100644 web/controllers/api/Member.py create mode 100644 web/controllers/api/__init__.py create mode 100644 数据库文件/food.sql create mode 100644 数据库文件/后台初始账户.sql create mode 100644 数据库文件/自动生成models.txt diff --git a/.idea/workspace.xml b/.idea/workspace.xml index a61ba5d..c4480c4 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,23 +2,24 @@ - - - - - + + + + + + + + + - - - - - + + + + + + - - - - - @@ -246,13 +247,6 @@ - - - - - - - @@ -264,13 +258,31 @@ - + + + + + + + + + + + + + + + + + + + @@ -287,68 +299,12 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -364,7 +320,7 @@ - + @@ -375,11 +331,11 @@ + + + - - - @@ -474,7 +430,14 @@ @@ -487,9 +450,9 @@ - + - + @@ -504,7 +467,7 @@ - + @@ -528,79 +491,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -733,23 +623,6 @@ - - - - - - - - - - - - - - - - - @@ -757,13 +630,6 @@ - - - - - - - @@ -771,13 +637,6 @@ - - - - - - - @@ -799,36 +658,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -839,9 +669,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -849,42 +736,129 @@ - - - - + - - + + - + + + + - - + + - + + + + + + + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + diff --git a/comm b/comm new file mode 100644 index 0000000..a895c88 --- /dev/null +++ b/comm @@ -0,0 +1,25 @@ +# coding: utf-8 +from sqlalchemy import BigInteger, Column, DateTime, Integer, String +from sqlalchemy.schema import FetchedValue +from sqlalchemy.ext.declarative import declarative_base + + +Base = declarative_base() +metadata = Base.metadata + + +class User(Base): + __tablename__ = 'user' + + uid = Column(BigInteger, primary_key=True) + nickname = Column(String(100), nullable=False, server_default=FetchedValue()) + mobile = Column(String(20), nullable=False, server_default=FetchedValue()) + email = Column(String(100), nullable=False, server_default=FetchedValue()) + sex = Column(Integer, nullable=False, server_default=FetchedValue()) + avatar = Column(String(64), nullable=False, server_default=FetchedValue()) + login_name = Column(String(20), nullable=False, unique=True, server_default=FetchedValue()) + login_pwd = Column(String(32), nullable=False, server_default=FetchedValue()) + login_salt = Column(String(32), nullable=False, server_default=FetchedValue()) + status = Column(Integer, nullable=False, server_default=FetchedValue()) + updated_time = Column(DateTime, nullable=False, server_default=FetchedValue()) + created_time = Column(DateTime, nullable=False, server_default=FetchedValue()) diff --git a/common/models/member/Member.py b/common/models/member/Member.py new file mode 100644 index 0000000..309b209 --- /dev/null +++ b/common/models/member/Member.py @@ -0,0 +1,19 @@ +# coding: utf-8 +from sqlalchemy import Column, DateTime, Integer, String +from sqlalchemy.schema import FetchedValue +from application import db + + +class Member(db.Model): + __tablename__ = 'member' + + id = db.Column(db.Integer, primary_key=True) + nickname = db.Column(db.String(100), nullable=False, server_default=db.FetchedValue()) + mobile = db.Column(db.String(11), nullable=False, server_default=db.FetchedValue()) + sex = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue()) + avatar = db.Column(db.String(200), nullable=False, server_default=db.FetchedValue()) + salt = db.Column(db.String(32), nullable=False, server_default=db.FetchedValue()) + reg_ip = db.Column(db.String(100), nullable=False, server_default=db.FetchedValue()) + status = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue()) + updated_time = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue()) + created_time = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue()) diff --git a/common/models/member/Oauth_member_bind.py b/common/models/member/Oauth_member_bind.py new file mode 100644 index 0000000..4080ff6 --- /dev/null +++ b/common/models/member/Oauth_member_bind.py @@ -0,0 +1,21 @@ +# coding: utf-8 +from sqlalchemy import Column, DateTime, Index, Integer, String, Text +from sqlalchemy.schema import FetchedValue +from application import db + + +class OauthMemberBind(db.Model): + __tablename__ = 'oauth_member_bind' + __table_args__ = ( + db.Index('idx_type_openid', 'type', 'openid'), + ) + + id = db.Column(db.Integer, primary_key=True) + member_id = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue()) + client_type = db.Column(db.String(20), nullable=False, server_default=db.FetchedValue()) + type = db.Column(db.Integer, nullable=False, server_default=db.FetchedValue()) + openid = db.Column(db.String(80), nullable=False, server_default=db.FetchedValue()) + unionid = db.Column(db.String(100), nullable=False, server_default=db.FetchedValue()) + extra = db.Column(db.Text, nullable=False) + updated_time = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue()) + created_time = db.Column(db.DateTime, nullable=False, server_default=db.FetchedValue()) diff --git a/config/base_setting.py b/config/base_setting.py index e25b538..dcd9e76 100644 --- a/config/base_setting.py +++ b/config/base_setting.py @@ -7,7 +7,8 @@ AUTH_COOKIE_NAME = "mooc_food" ##过滤url IGNORE_URLS = [ - "^/user/login" + "^/user/login", + "^/api" ] IGNORE_CHECK_LOGIN_URLS = [ @@ -15,10 +16,21 @@ IGNORE_CHECK_LOGIN_URLS = [ "^/favicon.ico" ] + + PAGE_SIZE = 50 PAGE_DISPLAY = 10 STATUS_MAPPING = { "1":"正常", "0":"已删除" +} + + +MINA_APP = { + 'appid':'wx2c65877d37fc29bf', + 'appkey':'8c61791794cde415042924a9714542a9', + 'paykey':'xxxxxxxxxxxxxx换自己的', + 'mch_id':'xxxxxxxxxxxx换自己的', + 'callback_url':'/api/order/callback' } \ No newline at end of file diff --git a/mina b/mina index 47c5b15..14a30e1 160000 --- a/mina +++ b/mina @@ -1 +1 @@ -Subproject commit 47c5b15aed8a3b3a88082b3943dc4129bcb14b3d +Subproject commit 14a30e11ab9a246f857d90f00cd5d6d012f33b43 diff --git a/web/controllers/account/Account.py b/web/controllers/account/Account.py index a0358ee..5a0086b 100644 --- a/web/controllers/account/Account.py +++ b/web/controllers/account/Account.py @@ -53,7 +53,9 @@ def info(): if not info: return redirect(reback_url) + access_list = AppAccessLog.query.filter_by(uid=uid).order_by(AppAccessLog.id.desc()).limit(10).all() resp_data['info'] = info + resp_data['access_list'] = access_list return ops_render("account/info.html", resp_data) diff --git a/web/controllers/api/Member.py b/web/controllers/api/Member.py new file mode 100644 index 0000000..b559541 --- /dev/null +++ b/web/controllers/api/Member.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +from web.controllers.api import route_api +from flask import request,jsonify +from application import app,db +import requests,json +from common.models.member.Member import Member +from common.models.member.Oauth_member_bind import OauthMemberBind +from common.libs.Helper import getCurrentDate + +@route_api.route("/member/login",methods = [ "GET","POST" ]) +def login(): + resp = {'code': 200, 'msg': '操作成功~', 'data': {}} + req = request.values + code = req['code'] if 'code' in req else '' + app.logger.info(code) + if not code or len(code) < 1: + resp['code'] = -1 + resp['msg'] = "需要code" + return jsonify(resp) + + + url = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code" \ + .format(app.config['MINA_APP']['appid'], app.config['MINA_APP']['appkey'], code) + r = requests.get(url) + res = json.loads(r.text) + openid = res['openid'] + + nickname = req['nickName'] if 'nickName' in req else '' + sex = req['gender'] if 'gender' in req else 0 + avatar = req['avatarUrl'] if 'avatarUrl' in req else '' + ''' + 判断是否已经测试过,注册了直接返回一些信息 + ''' + bind_info = OauthMemberBind.query.filter_by(openid=openid, type=1).first() + if not bind_info: + model_member = Member() + model_member.nickname = nickname + model_member.sex = sex + model_member.avatar = avatar + model_member.salt = '' + model_member.updated_time = model_member.created_time = getCurrentDate() + db.session.add(model_member) + db.session.commit() + + model_bind = OauthMemberBind() + model_bind.member_id = model_member.id + model_bind.type = 1 + model_bind.openid = openid + model_bind.extra = '' + model_bind.updated_time = model_bind.created_time = getCurrentDate() + db.session.add(model_bind) + db.session.commit() + + bind_info = model_bind + member_info = Member.query.filter_by(id=bind_info.member_id).first() + resp['code'] = 200 + resp['data'] = {'nickname': member_info.nickname} + return jsonify(resp) \ No newline at end of file diff --git a/web/controllers/api/__init__.py b/web/controllers/api/__init__.py new file mode 100644 index 0000000..cbacd96 --- /dev/null +++ b/web/controllers/api/__init__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +from flask import Blueprint +route_api = Blueprint('api_page',__name__ ) +from web.controllers.api.Member import * + +@route_api.route("/") +def index(): + return "Mina Api V1.0~~" \ No newline at end of file diff --git a/www.py b/www.py index dc1b80f..24270ec 100644 --- a/www.py +++ b/www.py @@ -19,7 +19,7 @@ from web.controllers.finance.Finance import route_finance from web.controllers.food.Food import route_food from web.controllers.member.Member import route_member from web.controllers.stat.Stat import route_stat - +from web.controllers.api import route_api app.register_blueprint( route_index,url_prefix = "/" ) app.register_blueprint( route_user,url_prefix = "/user" ) app.register_blueprint( route_static,url_prefix = "/static" ) @@ -28,3 +28,4 @@ app.register_blueprint(route_finance,url_prefix="/finance") app.register_blueprint(route_member,url_prefix="/member") app.register_blueprint(route_food,url_prefix="/food") app.register_blueprint(route_stat,url_prefix="/stat") +app.register_blueprint( route_api,url_prefix = "/api" ) diff --git a/数据库文件/food.sql b/数据库文件/food.sql new file mode 100644 index 0000000..6b21829 --- /dev/null +++ b/数据库文件/food.sql @@ -0,0 +1,398 @@ + + +CREATE DATABASE `food_db` DEFAULT CHARACTER SET = `utf8mb4`; + + + +DROP TABLE IF EXISTS `user`; + +CREATE TABLE `user` ( + `uid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户uid', + `nickname` varchar(100) NOT NULL DEFAULT '' COMMENT '用户名', + `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号码', + `email` varchar(100) NOT NULL DEFAULT '' COMMENT '邮箱地址', + `sex` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1:男 2:女 0:没填写', + `avatar` varchar(64) NOT NULL DEFAULT '' COMMENT '头像', + `login_name` varchar(20) NOT NULL DEFAULT '' COMMENT '登录用户名', + `login_pwd` varchar(32) NOT NULL DEFAULT '' COMMENT '登录密码', + `login_salt` varchar(32) NOT NULL DEFAULT '' COMMENT '登录密码的随机加密秘钥', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1:有效 0:无效', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`uid`), + UNIQUE KEY `login_name` (`login_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表(管理员)'; + + +DROP TABLE IF EXISTS `app_access_log`; + +CREATE TABLE `app_access_log` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `uid` bigint(20) NOT NULL DEFAULT '0' COMMENT 'uid', + `referer_url` varchar(255) NOT NULL DEFAULT '' COMMENT '当前访问的refer', + `target_url` varchar(255) NOT NULL DEFAULT '' COMMENT '访问的url', + `query_params` text NOT NULL COMMENT 'get和post参数', + `ua` varchar(255) NOT NULL DEFAULT '' COMMENT '访问ua', + `ip` varchar(32) NOT NULL DEFAULT '' COMMENT '访问ip', + `note` varchar(1000) NOT NULL DEFAULT '' COMMENT 'json格式备注字段', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `idx_uid` (`uid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户访问记录表'; + + +DROP TABLE IF EXISTS `app_error_log`; +CREATE TABLE `app_error_log` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `referer_url` varchar(255) NOT NULL DEFAULT '' COMMENT '当前访问的refer', + `target_url` varchar(255) NOT NULL DEFAULT '' COMMENT '访问的url', + `query_params` text NOT NULL COMMENT 'get和post参数', + `content` longtext NOT NULL COMMENT '日志内容', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='app错误日表'; + + + + +DROP TABLE IF EXISTS `member`; + +CREATE TABLE `member` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `nickname` varchar(100) NOT NULL DEFAULT '' COMMENT '会员名', + `mobile` varchar(11) NOT NULL DEFAULT '' COMMENT '会员手机号码', + `sex` tinyint(1) NOT NULL DEFAULT '0' COMMENT '性别 1:男 2:女', + `avatar` varchar(200) NOT NULL DEFAULT '' COMMENT '会员头像', + `salt` varchar(32) NOT NULL DEFAULT '' COMMENT '随机salt', + `reg_ip` varchar(100) NOT NULL DEFAULT '' COMMENT '注册ip', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1:有效 0:无效', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员表'; + + + +DROP TABLE IF EXISTS `oauth_member_bind`; + +CREATE TABLE `oauth_member_bind` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `member_id` int(11) NOT NULL DEFAULT '0' COMMENT '会员id', + `client_type` varchar(20) NOT NULL DEFAULT '' COMMENT '客户端来源类型。qq,weibo,weixin', + `type` tinyint(3) NOT NULL DEFAULT '0' COMMENT '类型 type 1:wechat ', + `openid` varchar(80) NOT NULL DEFAULT '' COMMENT '第三方id', + `unionid` varchar(100) NOT NULL DEFAULT '', + `extra` text NOT NULL COMMENT '额外字段', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + KEY `idx_type_openid` (`type`,`openid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='第三方登录绑定关系'; + + + +DROP TABLE IF EXISTS `food`; + +CREATE TABLE `food` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `cat_id` int(11) NOT NULL DEFAULT '0' COMMENT '分类id', + `name` varchar(100) NOT NULL DEFAULT '' COMMENT '书籍名称', + `price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '售卖金额', + `main_image` varchar(100) NOT NULL DEFAULT '' COMMENT '主图', + `summary` varchar(10000) NOT NULL DEFAULT '' COMMENT '描述', + `stock` int(11) NOT NULL DEFAULT '0' COMMENT '库存量', + `tags` varchar(200) NOT NULL DEFAULT '' COMMENT 'tag关键字,以","连接', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1:有效 0:无效', + `month_count` int(11) NOT NULL DEFAULT '0' COMMENT '月销售数量', + `total_count` int(11) NOT NULL DEFAULT '0' COMMENT '总销售量', + `view_count` int(11) NOT NULL DEFAULT '0' COMMENT '总浏览次数', + `comment_count` int(11) NOT NULL DEFAULT '0' COMMENT '总评论量', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后插入时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='食品表'; + + + + +DROP TABLE IF EXISTS `food_cat`; + +CREATE TABLE `food_cat` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL DEFAULT '' COMMENT '类别名称', + `weight` tinyint(4) NOT NULL DEFAULT '1' COMMENT '权重', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态 1:有效 0:无效', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + UNIQUE KEY `idx_name` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='食品分类'; + + +DROP TABLE IF EXISTS `food_sale_change_log`; + +CREATE TABLE `food_sale_change_log` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `food_id` int(11) NOT NULL DEFAULT '0' COMMENT '商品id', + `quantity` int(11) NOT NULL DEFAULT '0' COMMENT '售卖数量', + `price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '售卖金额', + `member_id` int(11) NOT NULL DEFAULT '0' COMMENT '会员id', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '售卖时间', + PRIMARY KEY (`id`), + KEY `idx_food_id_id` (`food_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品销售情况'; + + + + + +DROP TABLE IF EXISTS `food_stock_change_log`; + +CREATE TABLE `food_stock_change_log` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `food_id` int(11) NOT NULL COMMENT '商品id', + `unit` int(11) NOT NULL DEFAULT '0' COMMENT '变更多少', + `total_stock` int(11) NOT NULL DEFAULT '0' COMMENT '变更之后总量', + `note` varchar(100) NOT NULL DEFAULT '' COMMENT '备注字段', + `created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + KEY `idx_food_id` (`food_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据库存变更表'; + + + +DROP TABLE IF EXISTS `images`; + +CREATE TABLE `images` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `file_key` varchar(60) NOT NULL DEFAULT '' COMMENT '文件名', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + + +DROP TABLE IF EXISTS `member_address`; +CREATE TABLE `member_address` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `member_id` int(11) NOT NULL DEFAULT '0' COMMENT '会员id', + `nickname` varchar(20) NOT NULL DEFAULT '' COMMENT '收货人姓名', + `mobile` varchar(11) NOT NULL DEFAULT '' COMMENT '收货人手机号码', + `province_id` int(11) NOT NULL DEFAULT '0' COMMENT '省id', + `province_str` varchar(50) NOT NULL DEFAULT '' COMMENT '省名称', + `city_id` int(11) NOT NULL DEFAULT '0' COMMENT '城市id', + `city_str` varchar(50) NOT NULL DEFAULT '' COMMENT '市名称', + `area_id` int(11) NOT NULL DEFAULT '0' COMMENT '区域id', + `area_str` varchar(50) NOT NULL DEFAULT '' COMMENT '区域名称', + `address` varchar(100) NOT NULL DEFAULT '' COMMENT '详细地址', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否有效 1:有效 0:无效', + `is_default` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '默认地址', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + KEY `idx_member_id_status` (`member_id`,`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员收货地址'; + + + + +DROP TABLE IF EXISTS `member_cart`; + +CREATE TABLE `member_cart` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `member_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '会员id', + `food_id` int(11) NOT NULL DEFAULT '0' COMMENT '商品id', + `quantity` int(11) NOT NULL DEFAULT '0' COMMENT '数量', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + KEY `idx_member_id` (`member_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='购物车'; + + + +DROP TABLE IF EXISTS `wx_share_history`; + +CREATE TABLE `wx_share_history` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `member_id` int(11) NOT NULL DEFAULT '0' COMMENT '会员id', + `share_url` varchar(200) NOT NULL DEFAULT '' COMMENT '分享的页面url', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信分享记录'; + + + +DROP TABLE IF EXISTS `member_comments`; + +CREATE TABLE `member_comments` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `member_id` int(11) NOT NULL DEFAULT '0' COMMENT '会员id', + `food_ids` varchar(200) NOT NULL DEFAULT '' COMMENT '商品ids', + `pay_order_id` int(11) NOT NULL DEFAULT '0' COMMENT '订单id', + `score` tinyint(4) NOT NULL DEFAULT '0' COMMENT '评分', + `content` varchar(200) NOT NULL DEFAULT '' COMMENT '评论内容', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + KEY `idx_member_id` (`member_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员评论表'; + + + + + + + + + + + +DROP TABLE IF EXISTS `pay_order`; + +CREATE TABLE `pay_order` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `order_sn` varchar(40) NOT NULL DEFAULT '' COMMENT '随机订单号', + `member_id` bigint(11) NOT NULL DEFAULT '0' COMMENT '会员id', + `total_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '订单应付金额', + `yun_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '运费金额', + `pay_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '订单实付金额', + `pay_sn` varchar(128) NOT NULL DEFAULT '' COMMENT '第三方流水号', + `prepay_id` varchar(128) NOT NULL DEFAULT '' COMMENT '第三方预付id', + `note` text NOT NULL COMMENT '备注信息', + `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '1:支付完成 0 无效 -1 申请退款 -2 退款中 -9 退款成功 -8 待支付 -7 完成支付待确认', + `express_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '快递状态,-8 待支付 -7 已付款待发货 1:确认收货 0:失败', + `express_address_id` int(11) NOT NULL DEFAULT '0' COMMENT '快递地址id', + `express_info` varchar(1000) NOT NULL DEFAULT '' COMMENT '快递信息', + `comment_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '评论状态', + `pay_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '付款到账时间', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最近一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + UNIQUE KEY `idx_order_sn` (`order_sn`), + KEY `idx_member_id_status` (`member_id`,`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='在线购买订单表'; + + +DROP TABLE IF EXISTS `pay_order_item`; + +CREATE TABLE `pay_order_item` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `pay_order_id` int(11) NOT NULL DEFAULT '0' COMMENT '订单id', + `member_id` bigint(11) NOT NULL DEFAULT '0' COMMENT '会员id', + `quantity` int(11) NOT NULL DEFAULT '1' COMMENT '购买数量 默认1份', + `price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '商品总价格,售价 * 数量', + `food_id` int(11) NOT NULL DEFAULT '0' COMMENT '美食表id', + `note` text NOT NULL COMMENT '备注信息', + `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态:1:成功 0 失败', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最近一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + KEY `id_order_id` (`pay_order_id`), + KEY `idx_food_id` (`food_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单详情表'; + + + +DROP TABLE IF EXISTS `pay_order_callback_data`; + +CREATE TABLE `pay_order_callback_data` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `pay_order_id` int(11) NOT NULL DEFAULT '0' COMMENT '支付订单id', + `pay_data` text NOT NULL COMMENT '支付回调信息', + `refund_data` text NOT NULL COMMENT '退款回调信息', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`), + UNIQUE KEY `pay_order_id` (`pay_order_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + + + + +DROP TABLE IF EXISTS `queue_list`; + +CREATE TABLE `queue_list` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `queue_name` varchar(30) NOT NULL DEFAULT '' COMMENT '队列名字', + `data` varchar(500) NOT NULL DEFAULT '' COMMENT '队列数据', + `status` tinyint(1) NOT NULL DEFAULT '-1' COMMENT '状态 -1 待处理 1 已处理', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='事件队列表'; + + +DROP TABLE IF EXISTS `oauth_access_token`; + +CREATE TABLE `oauth_access_token` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `access_token` varchar(600) NOT NULL DEFAULT '', + `expired_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + KEY `idx_expired_time` (`expired_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信的access_token 用户调用其他接口的'; + + + +DROP TABLE IF EXISTS `stat_daily_food`; + +CREATE TABLE `stat_daily_food` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `date` date NOT NULL, + `food_id` int(11) NOT NULL DEFAULT '0' COMMENT '菜品id', + `total_count` int(11) NOT NULL DEFAULT '0' COMMENT '售卖总数量', + `total_pay_money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '总售卖金额', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + KEY `date_food_id` (`date`,`food_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='书籍售卖日统计'; + + + + + +DROP TABLE IF EXISTS `stat_daily_member`; + +CREATE TABLE `stat_daily_member` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `date` date NOT NULL COMMENT '日期', + `member_id` int(11) NOT NULL DEFAULT '0' COMMENT '会员id', + `total_shared_count` int(11) NOT NULL DEFAULT '0' COMMENT '当日分享总次数', + `total_pay_money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '当日付款总金额', + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + KEY `idx_date_member_id` (`date`,`member_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员日统计'; + + + + + +DROP TABLE IF EXISTS `stat_daily_site`; + +CREATE TABLE `stat_daily_site` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `date` date NOT NULL COMMENT '日期', + `total_pay_money` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '当日应收总金额', + `total_member_count` int(11) NOT NULL COMMENT '会员总数', + `total_new_member_count` int(11) NOT NULL COMMENT '当日新增会员数', + `total_order_count` int(11) NOT NULL COMMENT '当日订单数', + `total_shared_count` int(11) NOT NULL, + `updated_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间', + `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间', + PRIMARY KEY (`id`), + KEY `idx_date` (`date`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='全站日统计'; + + + + + + + + + + + diff --git a/数据库文件/后台初始账户.sql b/数据库文件/后台初始账户.sql new file mode 100644 index 0000000..c943999 --- /dev/null +++ b/数据库文件/后台初始账户.sql @@ -0,0 +1,5 @@ +请将下面的SQL语句执行,然后默认登录账号是54php.cn 密码是123456 + +INSERT INTO `user` (`uid`, `nickname`, `mobile`, `email`, `sex`, `avatar`, `login_name`, `login_pwd`, `login_salt`, `status`, `updated_time`, `created_time`) +VALUES + (1, '编程浪子www.54php.cn', '11012345679', 'apanly@163.com', 1, '', '54php.cn', '816440c40b7a9d55ff9eb7b20760862c', 'cF3JfH5FJfQ8B2Ba', 1, '2017-03-15 14:08:48', '2017-03-15 14:08:48'); diff --git a/数据库文件/自动生成models.txt b/数据库文件/自动生成models.txt new file mode 100644 index 0000000..d2fadaf --- /dev/null +++ b/数据库文件/自动生成models.txt @@ -0,0 +1 @@ +flask-sqlacodegen "mysql://root:123456@127.0.0.1/food_db" --tables member --outfile "common/models/member/Member.py" --flask