Giter VIP home page Giter VIP logo

milkdeliverylaravel's Introduction

Milk Delivery Admin & Mobile Web App

Milk delivery admin web application, made using Laravel PHP framework.

Overview

PC端后台为主,客户端为微信端Web App,通过公众号进入

主要功能

1. 后台

  • 奶厂端
    用户管理、奶站管理、基础信息管理、订单管理、财务管理、生产管理、奶卡管理、瓶框管理、客户管理、评价管理、统计分析
  • 奶站端
    用户管理、订单管理、基础信息管理、生产配送管理、客户管理、瓶框管理、财务管理、统计分析
  • 总平台端
    系统日志、用户管理、财务管理、客户管理、统计分析

2. 微信端

  • 订单管理
    下单、订单查看、订单修改、评价

Techniques

Laravel框架 v5.2.45

1. UI开发

2. 功能开发

数据库为MySQL, 数据表结构参考database目录

2.1 后台网站

用户登录

通过Middleware与Auth实现过滤

  • RedirectIfNotGongchang
  • RedirectIfNotNaizhan
  • RedirectIfNotZongpingtai

2.2 REST Api

网站内通过Ajax调用实现功能

  • /api/* 开头路径

2.3 微信支付

支付下单流程
  • 统一下单
    生成商户订单号,获取prepay_id
  • JSAPI支付
  • 生成订单
JSAPI支付

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6

  • 确认订单时开启支付
// 调用微信JS api 支付
function jsApiCall(param) {
    var objParam = JSON.parse(param);

    WeixinJSBridge.invoke(
        'getBrandWCPayRequest',
        objParam,
        function (res) {
            WeixinJSBridge.log(res.err_msg);
            // 支付成功
            if (res.err_msg == 'get_brand_wcpay_request:ok') {
                // 跳转到成功页面
                window.location = SITE_URL + "weixin/zhifuchenggong?tradeNo=" + gTradeNo;
            }
            // 用户取消
            else if (res.err_msg == 'get_brand_wcpay_request:cancel') {
            }
            // 支付失败
            else {
                window.location = SITE_URL + "weixin/zhifushibai";
            }
        }
    );
}
微信支付API
// 商户订单号
$strTradeNo = time() . uniqid();

// 预支付
$worder = new \WxPayUnifiedOrder();
$worder->SetBody($strBody);
$worder->SetOut_trade_no($strTradeNo);
$worder->SetTotal_fee(intval($dAmount * 100));
$worder->SetNotify_url('http://' . $request->server('HTTP_HOST') . '/' . env('SITE_PATH') . 'weixin/payresult');
$worder->SetTrade_type("JSAPI");
$worder->SetOpenid($user->openid);

$payOrder = \WxPayApi::unifiedOrder($worder);

3. 代码技巧

大规模数据的csv导入(订单列表)

select * from TABLE  
into outfile FILE
character set gbk 
fields terminated by ','
escaped by '\"'
enclosed by '\"'
lines terminated by '\n';

4. Third-Party Libraries

4.1 jQuery plugins

  • 数据导出为xls或csv文件

app/Lib/Payweixin

借用亿美软通短信服务实现短信验证

require_once app_path() . "/Lib/ChuanglanSmsHelper/ChuanglanSmsApi.php";

class YimeiSmsCtrl extends Controller {
	public function sendSMS($phone, $msg) {
		// 发送短信验证码
	}
}

Updates

2019-04-01

  • BUG: 少数情况下,微信支付成功,但订单没生成

原因

把生成订单接入点设置为前端收到回复get_brand_wcpay_request:ok之后,并没处理支付回调接口

修复

收到支付回调,结果成功,直接生成订单
WeChatCtrl::paymentResult()

订单生成时,需要附加信息,如备注

微信订单参数里有attach,能保存附加信息,但长度有限制(127),所以不能使用。
因此,数据库里做个临时订单表,统一下单时保存相关数据,生成订单成功后删除。 数据表结构参考wxorders

Need to Improve

  • 调整vendors里面的hard code,保持vendors为初始状态
  • 提高加载地区列表速度
  • 微信公众号、支付采用Laravel插件
  • model里删除多余的appends属性, 换成get函数,提高性能
  • 屏幕小界面布局很难看
  • 微信端界面
  • 数据显示需要分页查询
  • 整理所有垃圾代码 ->get()->first(), ->get()->count()
    ... ...

milkdeliverylaravel's People

Contributors

highjump0615 avatar shaoyang0815 avatar thestrong21 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.