Initial commit

This commit is contained in:
易焱
2021-04-18 18:51:51 +08:00
commit ec705f2fa8
3240 changed files with 623103 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
<?php
//距离确认收货时间
function auto_receipt_time($delivery_time){
$auto_time=C("shop.auto_receipt_time");
$auto_time=$auto_time*3600*24;
$has_time=$auto_time+$delivery_time-time();
//天
$day=floor($has_time / 86400);
$hours=ceil($has_time % 86400 / 3600);
if($day){
return $day."".$hours."小时";
}else{
return $hours."小时";
}
}
+1
View File
@@ -0,0 +1 @@
+32
View File
@@ -0,0 +1,32 @@
<?php
return array(
'TOKEN_ON' => true, // 是否开启令牌验证 默认关闭
'TOKEN_NAME' => '__hash__', // 令牌验证的表单隐藏字段名称,默认为__hash__
'TOKEN_TYPE' => 'md5', //令牌哈希验证规则 默认为MD5
'TOKEN_RESET' => true, //令牌验证出错后是否重置令牌 默认为true
'alipay'=>array (
//应用ID,您的APPID。
'app_id' => "2016071401617215",
//商户私钥
'merchant_private_key' => "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCBEXV+4jOBnuUur0QX6f01flJ6gzk2CbHWD3+VXgSV3JJ+vsQVoz2juIN59EF2cgBgKOml3DQuZ5zymijg1B3+0cxzBAVAQJv0znCrITF1iyCEHP/Sk0c/Ix2kndUj+0gja75dpQ0pilXSOfDUvhvPhIMqjxztPY/f6xvlBHYw8UdIpEnhUG4X/blTLEkYPMskpmRaIYB5q0LqDqJX8M0ZrscHlUx+YZno8gyn1oAN46YGafj8ceBeB3+uwmqymr3FBwPqZtTRoGz03qjpjyDMWNCQTr3yiwGkK86+7Vty+dvzXhV2nElPZLsA+J4P1VnlbUmsyAjNpAeVDhf26THTAgMBAAECggEADiFiMrUDHJLP1o+brd6ROTUORJlvPwpKrPvfZPP5HosagsPR5eiMTAtcYZKrRBNxFRYFloIIOHhhh3H3Pb4bVpWTg5gSFxm7uU6MqT+mEY9czPn7zAsRxsjKawZYmmrdV/toyQnT6hNaF/z979ysYMjKL3OhoBuYT9SGpkkZw3vPGL6aVIoYrnuop9TpEv5M5gSdiuc+sEfP8i6b/AiH51/NIR8fLaiYrMD2M7tB0tsVz+utQNMRfXZhAZkTyjzNeQ2iw2MmAbrKcWW1Uzrxv8GEQMpecPD4VclbeMVOTLW9ss7HR8dt0obsXiDka1r3iDWg4b8cCSP2Jsu1tDTR+QKBgQC6UUwu/z7dFHJd/8BLIlGAA+RzWG727YsT1a6M0/ZQUDFRmsTmMXkT6FrF3uCnEej/vJcDReyV76iXxC6kdKLYAe6CYX2fPvhMpHmxutn7zzrs6CRRQlmaSKfUGgsKrlrdrpyx/qyclC6dzO0OzIn/j5IOlpc/lZzp6DIxyUeZPQKBgQCxVueIoMKQdT4bFdrHshRB4CjSKTzhjMAFDKYUx24OLya9W4lHn7pzC0WkvWtkPLRxu3s3xf57ivRi1TPIaENVjQmZOaJoPfYCH12N2+LQnhfJq9qsOOblLABiUu+xWguNHAc1x2ebiQ4fBWchE282+INif8QvgL4a+OWWC5MITwKBgQC2HCpjsVaHjqmumQEiLxwMDUHpQCHNtyb+LxjaS39wxsE96xHTkb2vqKe4yf05L3dXJ8VPDLSPZN2b4cRZOCvHCDRROesokMrvVsAf6OuRhd8pmkmNJ1YfSC7KUN5EBWGJVleQXsXmkavyz09R7Lhhk7oGCkkxfBIQSsVtBji2XQKBgQCSzCd5F+o2/nZcoWirKaRPK6le3rgA1SwWgfPw+20E3M8qrF0lJvmGRexuhEYjgYS1KMbE0mboCYxnS6lD2drzNH6fke/4bmH4O9KLnVtR6awzSskHC0tGpXfj7Fdx7eHl+y+Uuu3u+DLyRtypqpbDYFAR90WFNQMo/KO/4vDhTQKBgQCeNg5Hc7rEk7ZVi7kb/l74gYM4buP07DCWPhxnMpflCMOEIs7uI4Azvf6Nk8kcankc3FdJhkb4w68JaF5iFzFnEhLmBflmamohQbQeTCm10Mqo6GRXsodgn0aqauYly1fmE4bB9onvJ4Ythsge8HmubLM/LFsY3JaeCDyJAXUBkA==",
//异步通知地址
'notify_url' => "http://paytest.win-8.cn/index.php/Shop/PayNotify/notify_url.html",//注意这里url一定不能带有参数的形式,否则会和支付宝的参数冲突
'wap_notify_url' => "http://paytest.win-8.cn/index.php/Shop/PayNotify/wap_notify_url.html",//注意这里url一定不能带有参数的形式,否则会和支付宝的参数冲突
//同步跳转
'return_url' => "http://paytest.win-8.cn/index.php/Shop/PayNotify/return_url.html",
'wap_return_url' => "http://paytest.win-8.cn/index.php/Shop/PayNotify/return_url.html",
//编码格式
'charset' => "UTF-8",
//签名方式
'sign_type'=>"RSA2",
//支付宝网关
//'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
'gatewayUrl' => "https://openapi.alipaydev.com/gateway.do",
//支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
'alipay_public_key' => "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgRF1fuIzgZ7lLq9EF+n9NX5SeoM5Ngmx1g9/lV4EldySfr7EFaM9o7iDefRBdnIAYCjppdw0Lmec8poo4NQd/tHMcwQFQECb9M5wqyExdYsghBz/0pNHPyMdpJ3VI/tII2u+XaUNKYpV0jnw1L4bz4SDKo8c7T2P3+sb5QR2MPFHSKRJ4VBuF/25UyxJGDzLJKZkWiGAeatC6g6iV/DNGa7HB5VMfmGZ6PIMp9aADeOmBmn4/HHgXgd/rsJqspq9xQcD6mbU0aBs9N6o6Y8gzFjQkE698osBpCvOvu1bcvnb814VdpxJT2S7APieD9VZ5W1JrMgIzaQHlQ4X9ukx0wIDAQAB",
),
//'配置项'=>'配置值'
//自定义success和error的提示页面模板
'TMPL_ACTION_SUCCESS'=>'Public:success',
'TMPL_ACTION_ERROR'=>'Public:error',
);
+1
View File
@@ -0,0 +1 @@
+4
View File
@@ -0,0 +1,4 @@
<?php
return array(
'view_filter' => array('Behavior\TokenBuildBehavior'),
);
@@ -0,0 +1,149 @@
<?php
namespace Shop\Controller;
use Think\Controller;
class PayController extends Controller {
public function __construct() {
parent::__construct();
$this->order_id=I("get.order_id",0,"intval");
$this->order=M("shop_order")->find($this->order_id);
if(!$this->order){
$this->error("订单不存在");
}
if($this->order["is_pay"]){
$this->error("该订单已支付");
}
}
//线下付款
public function bankPay(){
if(I("get.is_submit")){
M("shop_order")->save(array(
"order_id"=>$this->order_id,
"is_offline_pay"=>1,
));
//设置订单状态
D("shop_order")->setOrderState($this->order_id);
//订单日志
D("shop_order")->log($this->order_id,"用户选择对公转账付款");
$this->success("操作成功");
}else{
$this->display();
}
}
//支付宝pc端支付
public function aliPay(){
if(isMobile()){
if(isWxClient()){
//$this->success("微信端不支持支付宝付款,请点击右上角【浏览器打开】这个链接,使用支付宝付款",U("Shop/ShopOrder/index"),60);
}
$this->aliWapPay();
}else{
$this->aliPcPay();
}
}
//支付宝pc端支付
public function aliPcPay(){
//
$proName="订单号:".$this->order["order_num"];
$out_trade_no=$this->order["order_num"];
$total_amount =$this->order['pay_money'];
$body="";
//
Vendor('AlipaySdk.aop.AopClient');
Vendor('AlipaySdk.aop.request.AlipayTradePagePayRequest');
$c = new \AopClient();
$config = C('alipay');
$c->gatewayUrl = $config['gatewayUrl'];;
$c->appId = $config['app_id'];
$c->rsaPrivateKey = $config['merchant_private_key'];
$c->format = "json";
$c->charset= "UTF-8";
$c->signType= "RSA2";
$c->alipayrsaPublicKey = $config['alipay_public_key'];
$request = new \AlipayTradePagePayRequest();
$request->setReturnUrl($config['return_url']);
$request->setNotifyUrl($config['notify_url']);
$request->setBizContent("{" .
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," .
" \"subject\":\"$proName\"," .
" \"out_trade_no\":\"$out_trade_no\"," .
" \"total_amount\":$total_amount," .
" \"body\":\"$body\"" .
" }");
$result = $c->pageExecute ($request);
//输出
echo $result;
}
//支付宝手机端支付
public function aliWapPay(){
Vendor('AlipaySdk.aop.AopClient');
Vendor('AlipaySdk.aop.request.AlipayTradeWapPayRequest');
Vendor('AlipaySdk.wappay.service.AlipayTradeService');
Vendor('AlipaySdk.wappay.buildermodel.AlipayTradeWapPayContentBuilder');
$c = new \AopClient();
$config = C('alipay');
//商户订单号,商户网站订单系统中唯一订单号,必填
$out_trade_no = $this->order["order_num"];
//订单名称,必填
$subject = "订单号:".$this->order["order_num"];
//付款金额,必填
$total_amount = $this->order['pay_money'];
//商品描述,可空
$body = "";
//超时时间
$timeout_express="1m";
$payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setOutTradeNo($out_trade_no);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setTimeExpress($timeout_express);
//这里要把return_url和notify_url重新改变成手机的
$config["return_url"]=$config['wap_return_url'];
$config["notify_url"]=$config['wap_notify_url'];
$payResponse = new \AlipayTradeService($config);
$result=$payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);
}
//异步通知(PC支付)
public function notify_url(){
$arr=$_POST;
Vendor('AlipaySdk.pagepay.service.AlipayTradeService');
$alipaySevice = new \AlipayTradeService(C('alipay'));
$result = $alipaySevice->check($arr);
if($result){
$out_trade_no = $_POST['out_trade_no'];
$total_amount= $_POST['total_amount'];
if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//这里加入商业逻辑处理
$order=D("shop_order")->where(array("order_num"=>$out_trade_no))->find();
//这里要判断是否is_pay为0才执行商业处理,防止异步通知执行两次以上从而造成多条付款明细
if($order&&!$order["is_pay"]){
M("shop_order")->save(array(
"order_id"=>$order["order_id"],
"is_pay"=>1,
));
//设置订单状态
D("shop_order")->setOrderState($order["order_id"]);
//订单日志
D("shop_order")->log($order["order_id"],"用户在线支付,金额:{$total_amount},支付方式:阿里云");
//
$this->payMent($order["order_id"],"alipay",json_encode($_POST));
}
}
echo "success";//请不要修改或删除
}else{
}
}
public function return_url(){
redirect(U("Shop/ShopOrder/index"));
}
//付款记录
private function payMent($orderid,$paytype,$detail){
M("shop_order_payment")->add(array(
"order_id" =>$orderid,
"addtime" =>time(),
"paytype" =>$paytype,
"detail" =>$detail,
));
}
}
@@ -0,0 +1,81 @@
<?php
namespace Shop\Controller;
use Think\Controller;
class PayNotifyController extends Controller {
//异步通知(PC支付)
public function notify_url(){
$arr=$_POST;
Vendor('AlipaySdk.pagepay.service.AlipayTradeService');
$alipaySevice = new \AlipayTradeService(C('alipay'));
$alipaySevice->writeLog(var_export($_POST,true));
$result = $alipaySevice->check($arr);
if($result){
$out_trade_no = $_POST['out_trade_no'];
$total_amount= $_POST['total_amount'];
if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//这里加入商业逻辑处理
$order=D("shop_order")->where(array("order_num"=>$out_trade_no))->find();
//这里要判断是否is_pay为0才执行商业处理,防止异步通知执行两次以上从而造成多条付款明细
if($order&&!$order["is_pay"]){
M("shop_order")->save(array(
"order_id"=>$order["order_id"],
"is_pay"=>1,
));
//设置订单状态
D("shop_order")->setOrderState($order["order_id"]);
//订单日志
D("shop_order")->log($order["order_id"],"用户在线支付,金额:{$total_amount},支付方式:支付宝");
//
$this->payMent($order["order_id"],"alipay",json_encode($_POST));
}
}
echo "success";//请不要修改或删除
}else{
}
}
//异步通知(手机支付)
public function wap_notify_url(){
$arr=$_POST;
Vendor('AlipaySdk.aop.AopClient');
Vendor('AlipaySdk.wappay.service.AlipayTradeService');
$alipaySevice = new \AlipayTradeService(C('alipay'));
$result = $alipaySevice->check($arr);
if($result){
$out_trade_no = $_POST['out_trade_no'];
$total_amount= $_POST['total_amount'];
if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//这里加入商业逻辑处理
$order=D("shop_order")->where(array("order_num"=>$out_trade_no))->find();
//这里要判断是否is_pay为0才执行商业处理,防止异步通知执行两次以上从而造成多条付款明细
if($order&&!$order["is_pay"]){
M("shop_order")->save(array(
"order_id"=>$order["order_id"],
"is_pay"=>1,
));
//设置订单状态
D("shop_order")->setOrderState($order["order_id"]);
//订单日志
D("shop_order")->log($order["order_id"],"用户在线支付,金额:{$total_amount},支付方式:支付宝(wap)");
//
$this->payMent($order["order_id"],"alipay",json_encode($_POST));
}
}
echo "success";//请不要修改或删除
}else{
}
}
//支付定同步返回
public function return_url(){
redirect(U("Shop/ShopOrder/index"));
}
//付款记录
private function payMent($orderid,$paytype,$detail){
M("shop_order_payment")->add(array(
"order_id" =>$orderid,
"addtime" =>time(),
"paytype" =>$paytype,
"detail" =>$detail,
));
}
}
@@ -0,0 +1,209 @@
<?php
namespace Shop\Controller;
use Member\Controller\BaseController;
class ShopCartController extends BaseController{
public function __construct() {
parent::__construct();
$this->ShopCart = D("ShopCart");
}
public function confirmation_order(){
$ids = session("confirmation_order_ids");
$member_id = session("member.member_id");
if(!$ids){
$this->error("请选择购买商品");
}
$where["id"] = array("in",$ids);
$where["member_id"] = $member_id;
$data = $this->ShopCart->relation(true)->where($where)->select();
if(!$data){
$this->error('数据错误');
}
if(IS_POST){
//收货地址
$sh_address=M("member_address")->where(array(
"member_id"=>$member_id,
"id"=>I("post.order_sh_address_id")
))->find();
//发票信息
$order_invoice=M("member_invoice")->where(array(
"member_id"=>$member_id,
"id"=>I("post.order_invoice_id")
))->find();
//收票地址
$sp_address=M("member_address")->where(array(
"member_id"=>$member_id,
"id"=>I("post.order_sp_address_id")
))->find();
//
if(!$sh_address){
$this->error('请选择收货地址');
}
if(!I("post.order_invoice_id")){
$this->error('请设置发票信息');
}
//
if(!$sp_address){
$this->error('请选择收票地址');
}
$order_id = D("ShopOrder")->add_order($data,$sh_address,$order_invoice,$sp_address);
$url=U("pay",array("order_id"=>$order_id));
$this->success($url);
}else{
//默认收货地址
$this->sh_address = M("member_address")->where(array(
"member_id"=>$member_id,
"sh_status"=>1,
))->find();
//默认发票
$this->invoice = M("member_invoice")->where(array(
"member_id"=>$member_id,
"status"=>1,
))->find();
//默认收票地址
$this->sp_address = M("member_address")->where(array(
"member_id"=>$member_id,
"sp_status"=>1,
))->find();
$this->pagetitle="确认订单信息";
$this->data = $data;
$this->display();
}
}
public function pay($order_id){
$this->order=M("shop_order")->find($order_id);
if(!$this->order){
$this->error("订单不存在");
}
$this->display();
}
public function index(){
if(IS_POST){
$ids = I("post.ids");
if(count($ids) <= 0){
$this->error("请选择购物车商品提交");
}
session("confirmation_order_ids",$ids);
$this->success("提交成功");
}else{
$this->pagetitle="我的购物车";
$member_id = session("member.member_id");
$where["member_id"] = $member_id;
$data = $this->ShopCart->relation(true)->where($where)->select();
$this->data = $data;
$this->shopcart_act = "on";
$this->display();
}
}
public function change_shop_cart(){
$id = I("get.id");
$quantity = I("get.num");
// 修改条件
$where["id"] = $id;
$where["member_id"] = session("member.member_id");
// 保存数据
$data["quantity"] = $quantity;
$res = $this->ShopCart->where($where)->save($data);
$this->success($res);
}
public function add_shop_cart(){
$product_id = I("post.id");
$member_id = session("member.member_id");
$quantity = I("post.num");
$where["product_id"] = $product_id;
$where["member_id"] = $member_id;
$res = $this->ShopCart->where($where)->find();
if($res){
$res["quantity"] += $quantity;
$this->ShopCart->save($res);
}else{
$data["quantity"] = $quantity;
$data["catid"] = M("cms_product")->where(array("id"=>$product_id))->getField("catid");
$data["product_id"] = $product_id;
$data["member_id"] = $member_id;
$data["addtime"] = time();
$this->ShopCart->add($data);
}
$this->success("加入购物车成功!");
}
public function move_collect(){
$member_id = session("member.member_id");
$ids = I("post.ids");
if(is_array($ids)){
$where["id"] = array("in",$ids);
}else if($ids){
$where["id"] = $ids;
}else{
$this->error("请选择购物车商品");
}
$where["member_id"] = $member_id;
// 查询所有需要修改的购物车信息
$res_data = $this->ShopCart->where($where)->select();
// 删除购物车信息
// $this->ShopCart->where($where)->delete();
$collect = M("collect");
foreach($res_data as $k => $v){
$where = array();
$where["product_id"] = $v["product_id"];
$where["member_id"] = $member_id;
$rs = $collect->where($where)->find();
if(!$rs){
$data[$k]["product_id"] = $v["product_id"];
$data[$k]["member_id"] = $member_id;
$data[$k]["addtime"] = time();
$data[$k]["checked"] = 1;
}
if($rs["checked"] == 0){
$rs["checked"] = 1;
$collect->save($rs);
}
}
if($data){
$res = $collect->addAll($data);
}
$this->success("添加成功");
}
public function delete(){
$id = I("get.delete_id");
$member_id = session("member.member_id");
$where["id"] = $id;
$where["member_id"] = $member_id;
$this->ShopCart->where($where)->delete();
$this->success();
}
//当前用户收件地址列表
public function addressList(){
$member_id = session("member.member_id");
$where["member_id"] = $member_id;
$this->data= M("member_address")->where($where)->select();
$this->display();
}
//新增收件地址
public function addAddress(){
$this->display();
}
//编辑收货地址
public function editorAddress(){
$where["id"] = I("get.id");
$where["member_id"] = session("member.member_id");
$this->r= M("member_address")->where($where)->find();
$this->display();
}
//发票抬头列表
public function fpList(){
$member_id = session("member.member_id");
$where["member_id"] = $member_id;
$data= M("member_invoice")->where($where)->order("id desc")->select();
$this->success($data);
}
}
@@ -0,0 +1,162 @@
<?php
namespace Shop\Controller;
use Member\Controller\BaseController;
class ShopOrderController extends BaseController {
public function __construct() {
parent::__construct();
$this->table = D("ShopOrder");
//系统查询哪些超时付款,超时未收货自动做相关操作
$this->table->autoReceipt();
$this->table->autoCancelOrder();
}
public function index(){
$this->status_code=I("get.status_code");//订单状态
$where=array();
$where["member_id"]=session("member.member_id");
//订单号
$order_num=I("get.order_num");
if($order_num){
$where["db_shop_order.order_num"]=$order_num;
}
//订货号
$type_no=I("get.type_no");
if($type_no){
$where["type_no"]=$type_no;
}
//产品名称
$title=I("get.title");
if($title){
$where["title"]=array("like","%".$title."%");
}
//订单状态
if($this->status_code){
$where["status_code"]=$this->status_code;
}
//不同状态下的订单统计
$this->readyPayCount=$this->table->where(array(
"member_id"=>session("member.member_id"),
"status_code"=>101,
))->count();
$this->readyDeliveryCount=$this->table->where(array(
"member_id"=>session("member.member_id"),
"status_code"=>102,
))->count();
$this->readyReceiptCount=$this->table->where(array(
"member_id"=>session("member.member_id"),
"status_code"=>103,
))->count();
$this->ReceiptCount=$this->table->where(array(
"member_id"=>session("member.member_id"),
"status_code"=>104,
))->count();
//
$total=$this->table
->join("db_shop_order_detail on db_shop_order.order_id=db_shop_order_detail.order_id")
->where($where)->group("db_shop_order.order_id")->count();
$page = new \Think\Page($total,10);
$data=$this->table
->join("db_shop_order_detail on db_shop_order.order_id=db_shop_order_detail.order_id")
->relation(true)->where($where)->group("db_shop_order.order_id")->order("db_shop_order.order_id desc")->limit($page->firstRow,$page->listRows)->select();
$this->assign("listpage", $page->show());
$this->assign("data",$data);
$this->pagetitle="我的订单";
$this->navLight="wddj";//菜单高亮
$this->display();
}
//订单详情
public function show($order_id){
$where["member_id"]=session("member.member_id");
$where["order_id"]=$order_id;
$this->r=$this->table->relation(true)->where($where)->find();
$this->pagetitle="订单详情";
$this->navLight="wddj";//菜单高亮
$this->display();
}
//取消订单
public function cancelOrder($order_id){
$where["member_id"]=session("member.member_id");
$where["order_id"]=$order_id;
$order=$this->table->where($where)->find();
if(!$order){
$this->error("订单不存在");
}
//
if($order[status_code]!=101){
$this->error("订单状态不允许取消");
}
//调用模型里的取消订单
$this->table->cancelOrder($order_id,"用户取消订单");
$this->success("取消成功");
}
//用户申请退款
public function refundOrder($order_id){
$where["member_id"]=session("member.member_id");
$where["order_id"]=$order_id;
$order=$this->table->where($where)->find();
if(!$order){
$this->error("订单不存在");
}
//查看是否支付
if($order[is_pay]!=1){
$this->error("未付款订单不需要申请退款");
}
if(M("shop_order_refund")->find($order_id)){
$this->error("您已经申请过了");
}
//增加退款表
M("shop_order_refund")->add(array(
"order_id"=>$order_id,
"is_refund"=>1,
"is_refund_time"=>time(),
));
//改状态
$this->table->setOrderState($order_id);//改状态
//写日志
$this->table->log($order_id,"用户申请退款");
$this->success("操作成功");
}
//删除订单
public function deleteOrder($order_id){
$where["member_id"]=session("member.member_id");
$where["order_id"]=$order_id;
$order=$this->table->where($where)->find();
if(!$order){
$this->error("订单不存在");
}
//
if($order[status_code]!=201){
$this->error("订单状态不允许删除");
}
//调用模型里的取消订单
$this->table->deleteOrder($order_id);
$this->success("删除成功");
}
//用户确认收货
public function confirmReceipt($order_id){
$where["member_id"]=session("member.member_id");
$where["order_id"]=$order_id;
$order=$this->table->where($where)->find();
if(!$order){
$this->error("订单不存在");
}
//
if($order[status_code]!=103){
$this->error("订单状态不允许操作");
}
//调用模型里的确认收货
$this->table->confirmReceipt($order_id,"用户确认收货");
$this->success("取消成功");
}
//快递
public function kuaidi($com,$num){
$kuaidi=new \Model\KuaidiModel($com, $num);
$kuaidi_result=$kuaidi->getKuaidi();
if(!$kuaidi_result){
$this->error($kuaidi->getError());
}else{
$this->data=$kuaidi_result;
$this->pagetitle="物流查询";
$this->display();
}
}
}
@@ -0,0 +1,17 @@
<?php
namespace Shop\Model;
use Think\Model\RelationModel;
class ShopCartModel extends RelationModel{
//关联模型
Protected $_link=array(
"cms_product"=>array(
'mapping_type' => self::BELONGS_TO,
'foreign_key' => 'product_id',
),
"cat"=>array(
'mapping_type' => self::BELONGS_TO,
'foreign_key' => 'catid',
),
);
}
@@ -0,0 +1,306 @@
<?php
namespace Shop\Model;
use Think\Model\RelationModel;
class ShopOrderModel extends RelationModel{
private $order_status_config=array(
/*
* status_code为订单状态码
* set_table 为查询的对象表
* sql_where 为查询的对象表的判断条件
*/
/*******************以1开头的是正常购买状态************************/
//待付款
array(
"status_code"=>101,
"status_name"=>"待付款",
"set_table"=>"shop_order",
"sql_where"=>array(
"is_pay"=>0,
),
),
//待付款
array(
"status_code"=>111,
"status_name"=>"对公转账",
"set_table"=>"shop_order",
"sql_where"=>array(
"is_pay"=>0,
"is_offline_pay"=>1,
),
),
//待发货
array(
"status_code"=>102,
"status_name"=>"待发货",
"set_table"=>"shop_order",
"sql_where"=>array(
"is_pay"=>1,
"is_delivery"=>0,
),
),
//待收货
array(
"status_code"=>103,
"status_name"=>"待收货",
"set_table"=>"shop_order",
"sql_where"=>array(
"is_delivery"=>1,
"is_receipt"=>0,
),
),
//已收货
array(
"status_code"=>104,
"status_name"=>"已收货",
"set_table"=>"shop_order",
"sql_where"=>array(
"is_delivery"=>1,
"is_receipt"=>1,
),
),
/*******************以2为开头的为取消订单************************/
//取消订单(包含用户取消,超时取消)
array(
"status_code"=>201,
"status_name"=>"已取消",
"set_table"=>"shop_order",
"sql_where"=>array(
"is_cancel"=>1,
),
),
/*******************以3为开头的为退货状态 状态表为副表:order_refund(退款表)************************/
//用户申请退款中
array(
"status_code"=>301,
"status_name"=>"申请退款中",
"set_table"=>"shop_order_refund",
"sql_where"=>array(
"is_refund"=>1,
"is_rerund_agree"=>0,//(is_rerund_agree为1表示管理员同意,为0表示还未操作但不代表不同意)
"is_rerund_disagree"=>0,
),
),
//平台同意退款
array(
"status_code"=>302,
"status_name"=>"平台同意退款",
"set_table"=>"shop_order_refund",
"sql_where"=>array(
"is_refund"=>1,
"is_rerund_agree"=>1,
),
),
//费用已原路返还
array(
"status_code"=>303,
"status_name"=>"退款成功,费用已原路返还",
"set_table"=>"shop_order_refund",
"sql_where"=>array(
"is_refund"=>1,
"is_rerund_agree"=>1,
"is_back_money"=>1,
),
),
//平台不同意退款
array(
"status_code"=>311,
"status_name"=>"平台不同意退款",
"set_table"=>"shop_order_refund",
"sql_where"=>array(
"is_refund"=>1,
"is_rerund_agree"=>0,
"is_rerund_disagree"=>1,
),
),
//用户取消退款
array(
"status_code"=>321,
"status_name"=>"用户取消退款",
"set_table"=>"shop_order_refund",
"sql_where"=>array(
"is_refund_cancel"=>1,
),
),
);
//关联模型
Protected $_link=array(
//收货地址表
"shop_order_address"=>array(
'mapping_type' => self::HAS_ONE,
'parent_key' =>"order_id",
'foreign_key' =>"order_id",
),
//发票信息
"shop_order_invoice"=>array(
'mapping_type' => self::HAS_ONE,
'parent_key' =>"order_id",
'foreign_key' =>"order_id",
),
//收票地址表
"shop_order_invoice_address"=>array(
'mapping_type' => self::HAS_ONE,
'parent_key' =>"order_id",
'foreign_key' =>"order_id",
),
//商品详情表
"shop_order_detail"=>array(
'mapping_type' => self::HAS_MANY,
'parent_key' =>"order_id",
'foreign_key' =>"order_id",
),
//退款表
"shop_order_refund"=>array(
'mapping_type' => self::HAS_ONE,
'parent_key' =>"order_id",
'foreign_key' =>"order_id",
),
//日志表
"shop_order_log"=>array(
'mapping_type' => self::HAS_MANY,
'parent_key' =>"order_id",
'foreign_key' =>"order_id",
),
//会员表
"member" => array(
'mapping_type' => self::BELONGS_TO,
"parent_key" => 'member_id', //parent_key一定是主键,否则会列不出子表的数据
'foreign_key' => 'member_id',
),
);
/*设置订单状态
* $order(Array) 是一个订单信息的所有字段,包含关联的数据表
*/
public function setOrderState($order_id){
//这里一定要将数组倒序一下,订单最初状态判断条件很少。否则会造成判断不准确
$order_status_config = array_reverse($this->order_status_config);
foreach($order_status_config as $v){
$sql_where=$v["sql_where"];
$sql_where["order_id"]=$order_id;
//这里一定是配置里的表名,因为退款表是shop_order_refund表
$count=M($v["set_table"])->where($sql_where)->count();
if($count){
M("shop_order")->save(array(
"order_id"=>$order_id,
"status_code"=>$v["status_code"],
"status_name"=>$v["status_name"],
));
break;
}
}
}
//前台的增加订单
public function add_order($data,$sh_address,$order_invoice,$sp_address){
$member_id = session("member.member_id");
// 创建订单 计算金额
$money=0;
foreach($data as $k=>$v){
$money += ($v[cms_product]['price2']?$v[cms_product]['price2']:$v[cms_product]['price'])* $v["quantity"];
}
$data_order["money"] = number_format($money,2, '.', '');//这里第4个参数一定要加一个空,否则金额超出1000会转换为类似于2,155.00的,会增加一个千分位,存入数据只保存了前面2
$data_order["pay_money"] = number_format($money,2, '.', '');
$data_order["order_num"] = date("YmdHis").$member_id.rand(1000,9999);
$data_order["member_id"] = $member_id;
$data_order["addtime"] = time();
$data_order["remark"] = I("remark");
//收货地址表
$data_order["shop_order_address"] = D("shop_order_address")->create($sh_address);
//发票表
if($order_invoice){
$data_order["shop_order_invoice"] = D("shop_order_invoice")->create($order_invoice);
}
//收票地址表
if($order_invoice){
$data_order["shop_order_invoice_address"] = D("shop_order_invoice_address")->create($sp_address);
}
//商品详情表
foreach ($data as $k=>$v){
$price=($v[cms_product]['price2']?$v[cms_product]['price2']:$v[cms_product]['price']);
$money=($v[cms_product]['price2']?$v[cms_product]['price2']:$v[cms_product]['price']) * $v["quantity"];
$data_order["shop_order_detail"][$k]["thumb"] = $v["cms_product"]["thumb"];
$data_order["shop_order_detail"][$k]["title"] = $v["cms_product"]["title"];
$data_order["shop_order_detail"][$k]["type_no"] = $v["cms_product"]["type_no"];
$data_order["shop_order_detail"][$k]["price"] = number_format($price,2);
$data_order["shop_order_detail"][$k]["product_id"] = $v["cms_product"]["id"];
$data_order["shop_order_detail"][$k]["catid"] = $v["cat"]["catid"];
$data_order["shop_order_detail"][$k]["quantity"] = $v["quantity"];
$data_order["shop_order_detail"][$k]["money"] = number_format($money,2);
//更新订单销量
M("cms_product")->where(array("id"=>$v["cms_product"]["id"]))->setInc('sales',$v["quantity"]);
//
}
$order_id = $this->relation(true)->add($data_order);
//订单日志
$this->log($order_id,"用户创建订单");
//修改订单状态
$this->setOrderState($order_id);
// 删除购物车数据
$ids = session("confirmation_order_ids");
$ids[] = 0;
$where["id"] = array("in",$ids);
M("shop_cart")->where($where)->delete();
session("confirmation_order_ids",null);
return $order_id;
}
//取消订单
public function cancelOrder($order_id,$content){
$this->save(array(
"order_id"=>$order_id,
"is_cancel"=>1,
));
//订单日志
$this->log($order_id,$content);
//更新状态
$this->setOrderState($order_id);
}
//确认收货
public function confirmReceipt($order_id,$content){
$this->save(array(
"order_id"=>$order_id,
"is_receipt"=>1,
));
//订单日志
$this->log($order_id,$content);
//更新状态
$this->setOrderState($order_id);
}
//删除订单
public function deleteOrder($order_id){
$this->relation(true)->delete($order_id);
}
//订单日志
public function log($order_id,$content){
M("shop_order_log")->add(array(
"addtime"=>time(),
"order_id"=>$order_id,
"content"=>$content,
));
}
//自动收货
public function autoReceipt(){
$auto_time=C("shop.auto_receipt_time");
$auto_time=$auto_time?$auto_time:5;
$auto_time=$auto_time*3600*24;
$ago_time=time()-$auto_time;
$data=$this->where(array(
"status_code"=>103,
"delivery_time"=>array("lt",$ago_time),
))->getField("order_id",true);
foreach($data as $v){
$this->confirmReceipt($v,"超时系统自动收货");
}
}
//自动取消
public function autoCancelOrder(){
$auto_time=C("shop.order_timeout");
//$auto_time=$auto_time?$auto_time:60;
$auto_time=$auto_time*3600;
$ago_time=time()-$auto_time;
$data=$this->where(array(
"status_code"=>101,
"addtime"=>array("lt",$ago_time),
))->getField("order_id",true);
foreach($data as $v){
$this->cancelOrder($v,"超时系统取消订单");
}
}
}
@@ -0,0 +1,169 @@
<?php
namespace Shop\Model;
use Think\Model\RelationModel;
use Org\pay\lib;
class ShopOrderModel extends RelationModel {
public function __construct() {
parent::__construct();
ini_set('date.timezone', 'Asia/Shanghai');
//error_reporting(E_ERROR);
require_once "./ThinkPHP/Library/Vendor/Wxpay/lib/WxPay.Api.php";
require_once "./ThinkPHP/Library/Vendor/Wxpay/example/WxPay.NativePay.php";
require_once './ThinkPHP/Library/Vendor/Wxpay/example/WxPay.JsApiPay.php';
require_once './ThinkPHP/Library/Vendor/Wxpay/example/log.php';
require_once './ThinkPHP/Library/Vendor/Wxpay/example/phpqrcode/phpqrcode.php';
require_once './ThinkPHP/Library/Vendor/Wxpay/example/WxpayService.php';
}
//关联模型
Protected $_link = array(
"shop_order_detail" => array(
'mapping_type' => self::HAS_MANY,
"parent_key" => 'order_id', //parent_key一定是主键,否则会列不出子表的数据
'foreign_key' => 'order_id',
),
);
//验证
protected $_validate = array(
//array("字段","验证规则","错误提示",["验证条件","附加条件","验证时间"]),
array("provinceName", "require", "送货地址不能为空"),
array("cityName", "require", "送货地址不能为空"),
array("countryName", "require", "送货地址不能为空"),
array("detailInfo", "require", "送货地址不能为空"),
array("userName", "require", "送货地址不能为空"),
array("telNumber", "require", "送货地址不能为空"),
);
public function Wxpay_order_h5($order) {
$input = new \WxpayService();
$input->SetAttach($order["order_id"]);
$input->setTotalFee($order["money"]*100);
$input->setOutTradeNo($order["order_num"]."1");
$input->setOrderName("维健乐");
$input->setWapUrl("http://" . $_SERVER['HTTP_HOST']);
$input->setWapName("维健乐");
$input->setNotifyUrl("http://" . $_SERVER['HTTP_HOST'] . "/payment.php");
$where["order_id"] = $order["order_id"];
$where["order_num"] = $order["order_num"];
$rs = M("transaction")->where($where)->find();
if (!$rs) {
$data = array();
$data["order_type"] = 1;
$data["pay_type"] = 1;
$data["order_num"] = $order["order_num"];
$data["order_id"] = $order["order_id"];
$data["money"] = $order["money"];
$data["addtime"] = $order["addtime"];
M("transaction")->add($data);
}
return $input->createJsBizPackage();
}
public function Wxpay_order_jssdk($order) {
//①、获取用户openid
$tools = new \JsApiPay();
$openId = session("member_r.openid");
// ②、统一下单
$input = new \WxPayUnifiedOrder();
$input->SetBody("维健乐");
$input->SetAttach($order["order_id"]);
$input->SetOut_trade_no($order["order_num"]."2");
$input->SetTotal_fee($order["money"]*100);
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("维健乐");
$input->SetNotify_url("http://".$_SERVER['HTTP_HOST']."/payment.php");
$input->SetTrade_type("JSAPI");
$input->SetOpenid($openId);
$orders = \WxPayApi::unifiedOrder($input);
$jsApiParameters = $tools->GetJsApiParameters($orders);
$where["order_id"] = $order["order_id"];
$where["order_num"] = $order["order_num"];
$rs = M("transaction")->where($where)->find();
if(!$rs){
$data = array();
$data["order_type"] = 1;
$data["pay_type"] = 1;
$data["order_num"] = $order["order_num"];
$data["order_id"] = $order["order_id"];
$data["money"] = $order["money"];
$data["addtime"] = $order["addtime"];
M("transaction")->add($data);
}
return $jsApiParameters;
}
public function Wxpay_order($order) {
//模式二
/**
* 流程:
* 1、调用统一下单,取得code_url,生成二维码
* 2、用户扫描二维码,进行支付
* 3、支付完成之后,微信服务器会通知支付成功 $order["money"]*100
* 4、在支付成功通知中需要查单确认是否真正支付成功(见:notify.php)
*/
$notify = new \NativePay();
$input = new \WxPayUnifiedOrder();
$input->SetBody("维健乐");
$input->SetAttach($order["order_id"]);
$input->SetOut_trade_no($order["order_num"]."3");
$input->SetTotal_fee($order["money"]*100);
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("维健乐");
$input->SetNotify_url("http://" . $_SERVER['HTTP_HOST'] . "/payment.php");
$input->SetTrade_type("NATIVE");
$input->SetProduct_id();
$result = $notify->GetPayUrl($input);
$url = $result["code_url"];
$where["order_id"] = $order["order_id"];
$where["order_num"] = $order["order_num"];
$rs = M("transaction")->where($where)->find();
if (!$rs) {
$data = array();
$data["order_type"] = 1;
$data["pay_type"] = 1;
$data["order_num"] = $order["order_num"];
$data["order_id"] = $order["order_id"];
$data["money"] = $order["money"];
$data["addtime"] = $order["addtime"];
M("transaction")->add($data);
}
return $url;
}
public function qrcode($url) {
\QRcode::png($url);
}
function getIPaddress(){
$IPaddress='';
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$IPaddress = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$IPaddress = $_SERVER["HTTP_CLIENT_IP"];
} else {
$IPaddress = $_SERVER["REMOTE_ADDR"];
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")){
$IPaddress = getenv("HTTP_X_FORWARDED_FOR");
} else if (getenv("HTTP_CLIENT_IP")) {
$IPaddress = getenv("HTTP_CLIENT_IP");
} else {
$IPaddress = getenv("REMOTE_ADDR");
}
}
return $IPaddress;
}
}
+46
View File
@@ -0,0 +1,46 @@
<div class="bottom_txt_list">
<div class="txt_list_title clear">
<span class="fl">订单编号:{$v.order_num}</span>
<span class="fl">下单时间:{:date("Y-m-d H:i:s",$v[addtime])}</span>
<if condition="$v.status_code eq 201">
<a href="{:U('Shop/ShopOrder/deleteOrder',array('order_id'=>$v['order_id']))}" confirm_info="您确定要删除这个订单吗?" class="delete fr ajax_del" title="删除订单"><img src="/Public/skin/images/icon_delete.png"/></a>
</if>
<if condition="$v.is_pay eq 1">
<a href="{:U('Shop/ShopOrder/refundOrder',array('order_id'=>$v['order_id']))}" confirm_info="您确认要申请退款吗?" class="delete fr ajax_del" title="申请退款"><img src="/Public/skin/images/icon_tui.png"/></a>
</if>
</div>
<div class="txt_list_body clear">
<div class="list_body_lister clear">
<div class="list_body_list fl clear list_body_product">
<foreach name="v[shop_order_detail]" item="vv">
<div class="body_list_lister clear">
<div class="body_list_img fl"><img src="{$vv.thumb}" /></div>
<div class="body_list_txt fl">
<dd><a href="/{$vv.catid}/{$vv.product_id}.html" target="_blank">{$vv.title}</a></dd>
<dt>¥{$vv.price}<span>{$vv.quantity}</span></dt>
</div>
</div>
</foreach>
</div>
<div class="list_body_list fl body_product_li">
<dt>¥{$v.pay_money}</dt>
</div>
<div class="list_body_list fl body_product_li">
<dt>{$v.status_name}</dt>
</div>
<div class="list_body_list fl body_product_li">
<if condition="$v.status_code eq 101">
<a href="{:U('Shop/ShopCart/pay',array('order_id'=>$v['order_id']))}" class="body_list_Pay">立即支付</a>
<a href="{:U('Shop/ShopOrder/cancelOrder',array('order_id'=>$v['order_id']))}" confirm_info="您确定要取消这个订单吗?" class="body_list_cancel ajax_del">取消订单</a>
</if>
<if condition="$v.status_code eq 103">
<div>还剩{:auto_receipt_time($v[delivery_time])}</div>
<a href="{:U('Shop/ShopOrder/confirmReceipt',array('order_id'=>$v['order_id']))}" confirm_info="您确定确认收货吗?" class="body_list_Pay ajax_del">确认收货</a>
</if>
<a href="{:U('Shop/ShopOrder/show',array('order_id'=>$v[order_id]))}">订单详情</a>
</div>
</div>
</div>
</div>
+86
View File
@@ -0,0 +1,86 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>{$pagetitle}-{$Think.config.setting.sitename}</title>
<link href="__PUBLIC__/skin/css/animate.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/font-awesome.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav2.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/slick-min.css" type="text/css" rel="stylesheet"/>
<link href="__PUBLIC__/skin/css/global.css" rel="stylesheet">
</head>
<body>
<include file="./Application/Data/templateFile/header.html"/>
<div class="indexProduct UserCenter_nav">
<div class="indexProduct_content clear all">
<a href="/">首页</a>
<span class="fa fa-angle-right"></span>
<a href="#" class="on">在线支付</a>
</div>
</div>
<div class="indexProduct UserCenter shopping Pay">
<div class="indexProduct_content clear all">
<div class="shopping_title clear">
<div class="shopping_title_list fl on">
<dd>1</dd>
<dt>我的购物车</dt>
</div>
<div class="shopping_title_list fl on">
<dd>2</dd>
<dt>确认订单信息</dt>
</div>
<div class="shopping_title_list fl on">
<dd>3</dd>
<dt>支付订单(对公转账)</dt>
</div>
</div>
<form action="{:U('bankPay',array('order_id'=>$order[order_id],'is_submit'=>1))}" method="get" class="form1" onsubmit="return save_form(this,isback)">
<div class="Pay_top">
<div class="Pay_top_title">
<p><b>开户银行:</b>中国银行上海通河路支行 </p>
<p><b>银行账号:</b>441664296740</p>
<p><b>账户名称:</b>上海集锦信息科技有限公司 </p>
<p><b>特别提醒:</b><font style="color_F03A58">付款账户名称请与发票抬头(xxx公司)保持一致,否则无法开具发票</font></p>
</div>
</div>
<div class="Pay_bottom clear">
<div class="Pay_bottom_content fr">
<a onclick="$('.form1').submit()">提交</a>
</div>
</div>
</form>
</div>
</div>
<include file="./Application/Data/templateFile/footer.html"/>
<script type="text/javascript" src="/Public/skin/js/jquery-1.8.3.min.js"></script>
<script src="/Public/skin/js/global.js"></script>
<script src="/Public/skin/js/nav.js"></script>
<script src="/Public/Admin/layer/layer.js"></script>
<script src="/Public/Admin/js/globals.js"></script>
<script src="/Public/skin/js/plugin.js"></script>
<script src="/Public/Home/js/shop.js"></script>
<script src="/Public/skin/js/distpicker.data.js"></script>
<script src="/Public/skin/js/distpicker.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
function isback(){
layer.alert("操作成功", { icon: 1, closeBtn: 0 }, function (index) {
window.location.href="/index.php?m=Shop&c=ShopOrder&a=index";
});
}
</script>
</body>
</html>
+57
View File
@@ -0,0 +1,57 @@
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">
<title>跳转提示</title>
<link rel="stylesheet" href="/Public/Home/css/weui.css"/>
</head>
<body ontouchstart>
<div class="page msg_success js_show">
<div class="weui-msg">
<div class="weui-msg__icon-area"><i class="weui-icon-warn weui-icon_msg"></i></div>
<div class="weui-msg__text-area">
<h2 class="weui-msg__title">
<?php if(isset($message)) {?>
<?php echo($message); ?>
<?php }else{?>
<?php echo($error); ?>
<?php }?>
</h2>
</div>
<div class="weui-msg__opr-area">
<p class="weui-btn-area">
<a href="<?php echo($jumpUrl); ?>" id="href" class="weui-btn weui-btn_primary">返回上一页</a>
</p>
</div>
<div class="weui-msg__extra-area">
<div class="weui-footer">
<p class="weui-footer__links">
</p>
<p class="weui-footer__text">Copyright © {:date("Y")}-{:date("Y")+1}</p>
</div>
</div>
</div>
</div>
<script type="text/javascript">
(function(){
var wait = {$waitSecond},href = document.getElementById('href').href;
var interval = setInterval(function(){
var time = --wait;
if(time <= 0) {
location.href = href;
clearInterval(interval);
};
}, 1000);
})();
</script>
</body>
</html>
+57
View File
@@ -0,0 +1,57 @@
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0,viewport-fit=cover">
<title>操作成功</title>
<link rel="stylesheet" href="/Public/Home/css/weui.css"/>
</head>
<body ontouchstart>
<div class="page msg_success js_show">
<div class="weui-msg">
<div class="weui-msg__icon-area"><i class="weui-icon-success weui-icon_msg"></i></div>
<div class="weui-msg__text-area">
<h2 class="weui-msg__title">
<?php if(isset($message)) {?>
<?php echo($message); ?>
<?php }else{?>
<?php echo($error); ?>
<?php }?>
</h2>
</div>
<div class="weui-msg__opr-area">
<p class="weui-btn-area">
<a href="<?php echo($jumpUrl); ?>" id="href" class="weui-btn weui-btn_primary">继续操作</a>
</p>
</div>
<div class="weui-msg__extra-area">
<div class="weui-footer">
<p class="weui-footer__links">
</p>
<p class="weui-footer__text">Copyright © {:date("Y")}-{:date("Y")+1}</p>
</div>
</div>
</div>
</div>
<script type="text/javascript">
(function(){
var wait ={$waitSecond},href = document.getElementById('href').href;
var interval = setInterval(function(){
var time = --wait;
if(time <= 0) {
location.href = href;
clearInterval(interval);
};
}, 1000);
})();
</script>
</body>
</html>
@@ -0,0 +1,53 @@
<div class="Address NewAddress">
<div class="SelectAddress_title clear">
<dd class="fl">新增收件地址</dd>
<a href="javascript:closeAddAddress();" class="fr NewAddress_close"><img src="/Public/skin/images/close.png" /></a>
</div>
<form action="{:U('Member/Index/address')}" method="post" onsubmit="return save_form(this,thiscallback)">
<div class="NewAddress_content">
<div class="NewAddress_content_list clear">
<dd class="fl">收货人</dd>
<dt class="fl"><input name="username" type="text" placeholder="请输入收件人姓名" /></dt>
</div>
<div class="NewAddress_content_list clear">
<dd class="fl">手机号</dd>
<dt class="fl"><input name="mobile" type="text" placeholder="请输入收件人姓名" /></dt>
</div>
<div class="NewAddress_content_list clear">
<dd class="fl">所在地区</dd>
<dt class="fl">
<div id="distpicker5" >
<select name="province" ></select>
<select name="city" ></select>
<select name="area" ></select>
</div>
</dt>
</div>
<div class="NewAddress_content_list clear">
<dd class="fl">详细地址</dd>
<dt class="fl"><textarea name="detail" placeholder="请输入详细地址"></textarea></dt>
</div>
</div>
<div class="NewAddress_bottom">
<label class="NewAddress_bottom_checkbox">
<input name="sh_status" type="checkbox" value="1"/>
<div class="button">设为默认收货地址</div>
</label>
<label class="NewAddress_bottom_checkbox">
<input name="sp_status" type="checkbox" value="1"/>
<div class="button">设为默认收票地址</div>
</label>
</div>
<div class="NewAddress_submit">
<input type="submit" value="保存" />
<a href="javascript:closeAddAddress()">取消</a>
</div>
</form>
</div>
<script>
function thiscallback(){
closeAddAddress();
closeAddressList();
addressList();
}
</script>
@@ -0,0 +1,28 @@
<div class="bg2"></div>
<div class="Address SelectAddress">
<div class="SelectAddress_title clear">
<dd class="fl">选择地址</dd>
<a href="javascript:closeAddressList();" class="fr"><img src="/Public/skin/images/close.png" /></a>
</div>
<div class="SelectAddress_content">
<div class="SelectAddress_content_title" style="display: none;">您还没有设置收货地址</div>
<div class="SelectAddress_content_txt">
<foreach name="data" item="v">
<div class="radio_SelectAddress clear">
<label class="fl">
<input name="sh_address_id" type="radio" value="{$v.id}">
<div class="button">{$v.province}{$v.city}{$v.district}{$v.detail}-{$v.username}{$v.mobile}</div>
</label>
<div class="radio_SelectAddress_operating fl">
<a href="javascript:editorAddress({$v.id});" class="fl address_edit">编辑</a>
</div>
</div>
</foreach>
</div>
<a href="javascript:addAddress()" class="new new_address">新增地址</a>
</div>
<div class="SelectAddress_bottom clear">
<a href="javascript:setShAddress()" class="save">保存</a>
<a href="javascript:closeAddressList()">取消</a>
</div>
</div>
@@ -0,0 +1,340 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>{$pagetitle}-{$Think.config.setting.sitename}</title>
<link href="__PUBLIC__/skin/css/animate.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/font-awesome.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav2.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/slick-min.css" type="text/css" rel="stylesheet"/>
<link href="__PUBLIC__/skin/css/global.css" rel="stylesheet">
</head>
<body>
<include file="./Application/Data/templateFile/header.html"/>
<div class="indexProduct UserCenter_nav">
<div class="indexProduct_content clear all">
<a href="#">首页</a>
<span class="fa fa-angle-right"></span>
<a href="#" class="on">购物车</a>
</div>
</div>
<div id="app">
<div class="indexProduct UserCenter shopping Order">
<div class="indexProduct_content clear all">
<div class="shopping_title clear">
<div class="shopping_title_list fl on">
<dd>1</dd>
<dt>我的购物车</dt>
</div>
<div class="shopping_title_list fl on">
<dd>2</dd>
<dt>确认订单信息</dt>
</div>
<div class="shopping_title_list fl">
<dd>3</dd>
<dt>支付订单</dt>
</div>
</div>
<form action="{:U('confirmation_order')}" method="post" onsubmit="return save_form(this,isOk)">
<input type="hidden" name="order_invoice_id" v-model="order_invoice_id"/>
<div class="Order_top">
<div class="Order_top_list clear">
<dd class="fl">收件地址</dd>
<dt class="fl">
<input type="hidden" name="order_sh_address_id" value="{$sh_address.id}">
<if condition="$sh_address">
<span id="sh_address_str">{$sh_address.province}{$sh_address.city}{$sh_address.district}{$sh_address.detail}-{$sh_address.username}{$sh_address.mobile}</span>
<else/>
<span id="sh_address_str">请设置收货地址</span>
</if>
<a href="javascript:addressList('sh')">设置</a>
</dt>
</div>
<div class="Order_top_list clear">
<dd class="fl">发票信息</dd>
<dt class="fl">
<if condition="$invoice">
<span id="invoice_str">{$invoice[type]?'增值税专用发票':'增值税普通发票'} 发票抬头:{$invoice.company_name}</span>
<else/>
<span id="invoice_str">请设置发票信息</span>
</if>
<a @click="openFpList" class="InvoiceSetting">设置</a>
</dt>
</div>
<div class="Order_top_list clear" :style="order_invoice_id>0?'display:block':'display:none'">
<dd class="fl">收票地址</dd>
<dt class="fl">
<input type="hidden" name="order_sp_address_id" value="{$sp_address.id}">
<if condition="$sp_address">
<span id="sp_address_str">{$sp_address.province}{$sp_address.city}{$sp_address.district}{$sp_address.detail}-{$sp_address.username}{$sp_address.mobile}</span>
<else/>
<span id="sp_address_str">请设置收票地址</span>
</if>
<a href="javascript:addressList('sp')">设置</a>
</dt>
</div>
</div>
<div class="mygwc cartBox">
<div class="mygwc_title clear">
<div class="mygwc_title_xun fl">商品清单</div>
<div class="mygwc_title_xun fl">商品信息</div>
<div class="mygwc_title_xun fl">单价</div>
<div class="mygwc_title_xun fl">数量</div>
<div class="mygwc_title_xun fl">金额</div>
</div>
<div class="mygwc_wen">
<foreach name="data" item="v">
<?php
$total1=($v[cms_product]['price2']?$v[cms_product]['price2']:$v[cms_product]['price'])*$v[quantity];
$total=$total+$total1;
?>
<div class="mygwc_wen_xun clear order_lists">
<div class="wen_xun_img fl clear">
<div class="xun_img_left fl"><img src="{$v.cms_product.thumb}"></div>
<div class="xun_img_right fl">
<dd>{$v.cms_product.title}</dd>
<dt>
<p>商品型号:{$v.cms_product.type_no}</p>
<p>订货号:{$v.cms_product.type_no}</p>
</dt>
</div>
</div>
<div class="wen_xun_dj fl list_price">
<dd class="price">¥{$v[cms_product]['price2']?$v[cms_product]['price2']:$v[cms_product]['price']} / 个</dd>
<if condition="$v[cms_product]['price2']"><dt><s>¥{$v.cms_product.price} / 个</s></dt></if>
</div>
<div class="wen_xun_sl fl amount_box">{$v[quantity]}</div>
<div class="wen_xun_xj fl list_sum"><span class="sum_price">¥{$total1}</span></div>
</div>
</foreach>
</div>
<div class="Order_bottom clear">
<div class="Order_bottom_left fl">
<dd class="fl">备注:</dd>
<dt class="fl">
<textarea name="remark" placeholder="若您对订单有特殊要求,请在此留言告知我们,我们的客服会在第一时间跟您沟通,尽量满足您的需求!"></textarea>
</dt>
</div>
<div class="Order_bottom_right fr">
<div class="bottom_right_list">
<span>商品总金额:</span>
<i>{:number_format($total,2)}元</i>
</div>
</div>
</div>
<div class="Order_Amounts clear">
<div class="Order_Amounts_content fr clear">
<dd class="fl">应付金额:</dd>
<dt class="fl">{:number_format($total,2)} 元</dt>
</div>
</div>
<div class="Order_submit clear">
<div class="fr">
<div class="Order_submit_content clear">
<a href="{:U('index')}">返回继续购物</a>
<input type="submit" value="提交订单" />
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div class="fwtk_tan" id="fwtk">
<div class="fwtk_tan_bg"></div>
<div class="sfwtk_tan_wen">
<div class="tan_wen_title">销售合同条款<i class="fa fa-close"></i></div>
<div class="tan_wen_nei"><img src="skin/images/bg116.jpg" /></div>
</div>
</div>
<div class="bg"></div>
<div class="Address SelectInvoice">
<div class="SelectAddress_title clear">
<dd class="fl">选择发票</dd>
<a @click="closeFplist" class="fr SelectInvoice_close"><img src="/Public/skin/images/close.png" /></a>
</div>
<div class="SelectAddress_content">
<div class="SelectAddress_content_title" style="display: none;">您还没有设置收货地址</div>
<div class="SelectAddress_content_txt">
<div class="radio_SelectAddress clear">
<!--<label class="fl">
<template v-if="0==order_invoice_id"><input name="fp_id" type="radio" value="0" checked/></template>
<template v-else><input name="fp_id" type="radio" value="0"/></template>
<div class="button">不需要发票</div>
</label>-->
<div class="radio_SelectAddress_operating fl"></div>
</div>
<template v-for="(item,index) in fpList">
<div class="radio_SelectAddress clear">
<label class="fl">
<template v-if="item.id==order_invoice_id"><input name="fp_id" type="radio" :value="item.id" checked/></template>
<template v-else><input name="fp_id" type="radio" :value="item.id"/></template>
<div class="button">{{item.type==1?'增值税专用发票':'增值税普通发票'}} 发票抬头:{{item.company_name}}</div>
</label>
<div class="radio_SelectAddress_operating fl">
<a @click="openEditorInvoice(item)" class="fl Invoice_edit">编辑</a>
</div>
</div>
</template>
</div>
<a @click="openEditorInvoice({type:0})" class="new new_Invoice" >新增发票</a>
</div>
<div class="SelectAddress_bottom clear">
<a @click="checkFp" class="save">保存</a>
<a @click="closeFplist">取消</a>
</div>
</div>
<div class="Address Invoice NewInvoice">
<div class="SelectAddress_title clear">
<dd class="fl">新增发票</dd>
<a @click="closeEditorInvoice" class="fr"><img src="/Public/skin/images/close.png" /></a>
</div>
<form action="{:U('Member/index/invoice')}" method="post" onsubmit="return save_form(this,function(){app.closeEditorInvoice();app.openFpList();})">
<input type="hidden" name="type" v-model="fpContent.type">
<input type="hidden" name="id" v-model="fpContent.id">
<div class="SelectInvoice_content">
<div class="SelectInvoice_content_title">
<a href="javascript:;" :class="fpContent.type==1?'on':''" onclick="app.fpContent.type=1">增值税专用发票</a>
<a href="javascript:;" :class="fpContent.type!=1?'on':''" onclick="app.fpContent.type=0">增值税普通发票</a>
</div>
<div class="NewAddress_content SelectInvoice_content_txt">
<div class="NewAddress_content_list">
<div class="NewAddress_content_list clear">
<dd class="fl">发票抬头</dd>
<dt class="fl"><input type="text" name="company_name" v-model="fpContent.company_name" placeholder="输入公司名称" /></dt>
</div>
<div class="NewAddress_content_list clear">
<dd class="fl">纳税人识别号</dd>
<dt class="fl"><input type="text" name="taxpayer_number" v-model="fpContent.taxpayer_number" placeholder="输入纳税人识别号" /></dt>
</div>
<div :style="fpContent.type==1?'display:block':'display:none'"><!--根据发票类型判断是否要显示专票的相关字段-->
<div class="NewAddress_content_list clear">
<dd class="fl">注册地址</dd>
<dt class="fl"><input type="text" name="registration_address" v-model="fpContent.registration_address" placeholder="输入单位注册地址" /></dt>
</div>
<div class="NewAddress_content_list clear">
<dd class="fl">注册电话</dd>
<dt class="fl"><input type="text" name="registration_mobile" v-model="fpContent.registration_mobile" placeholder="输入单位注册电话" /></dt>
</div>
<div class="NewAddress_content_list clear">
<dd class="fl">开户银行</dd>
<dt class="fl"><input type="text" name="opening_bank" v-model="fpContent.opening_bank" placeholder="输入开户银行" /></dt>
</div>
<div class="NewAddress_content_list clear">
<dd class="fl">银行账户</dd>
<dt class="fl"><input type="text" name="bank_account" v-model="fpContent.bank_account" placeholder="输入银行账户" /></dt>
</div>
</div>
<div class="NewAddress_bottom">
<label class="NewAddress_bottom_checkbox">
<template v-if="fpContent.status==1"><input name="status" type="checkbox" value="1" checked="true"/></template>
<template v-else><input name="status" value="1" type="checkbox"/></template>
<div class="button">设为默认发票</div>
</label>
</div>
</div>
</div>
<div class="NewAddress_submit">
<input type="submit" value="保存" />
<a @click="closeEditorInvoice">取消</a>
</div>
</div>
</form>
</div>
</div>
<include file="./Application/Data/templateFile/footer.html"/>
<script type="text/javascript" src="/Public/skin/js/jquery-1.8.3.min.js"></script>
<script src="/Public/skin/js/global.js"></script>
<script src="/Public/skin/js/nav.js"></script>
<script src="/Public/Admin/layer/layer.js"></script>
<script src="/Public/Admin/js/globals.js"></script>
<script src="/Public/skin/js/plugin.js"></script>
<script src="/Public/Home/js/shop.js"></script>
<script src="/Public/skin/js/distpicker.data.js"></script>
<script src="/Public/skin/js/distpicker.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
//提交表单成功回调函数
function isOk(result){
window.location.href=result;
}
//
var app = new Vue({
el: '#app',
data: {
fpList:[],//发票列表
fpContent:[],//发票详情
order_invoice_id:"{$invoice.id}",//表单里的发票ID
},
methods:{
//发票列表
openFpList:function(){
$.get("/index.php?m=Shop&c=ShopCart&a=fpList",function(result){
if(result.status==1){
app.fpList=result.info;
$(".SelectInvoice").fadeIn();
$(".bg").show();
}
},"json");
},
//关闭发票列表
closeFplist:function(){
$(".SelectInvoice").fadeOut();
$(".bg").hide();
},
//修改发票
openEditorInvoice:function(data){
app.fpContent=data;
$(".NewInvoice").fadeIn();
$(".NewAddress_bg").show();
},
//关闭修改发票
closeEditorInvoice:function(){
$(".NewInvoice").fadeOut();
$(".NewAddress_bg").hide();
},
//最终选择的发票
checkFp:function(){
var fpid=$("input[name='fp_id']:checked").val();
if(fpid){
app.order_invoice_id=fpid;
var fpname=$("input[name='fp_id']:checked").next().html();
$("#invoice_str").html(fpname);
//如果不需要发票,删除收票地址
if(fpid==0){
$("input[name='order_sp_address_id']").val("");
$("#sp_address_str").html("未选择收票地址");
}
}else{
layer.alert("未选择发票");
}
app.closeFplist();
}
}
});
</script>
</body>
</html>
@@ -0,0 +1,60 @@
<div class="Address NewAddress">
<div class="SelectAddress_title clear">
<dd class="fl">新增收件地址</dd>
<a href="javascript:closeAddAddress();" class="fr NewAddress_close"><img src="/Public/skin/images/close.png" /></a>
</div>
<form action="{:U('Member/Index/address')}" method="post" onsubmit="return save_form(this,thiscallback)">
<input type="hidden" name="id" value="{$r.id}">
<div class="NewAddress_content">
<div class="NewAddress_content_list clear">
<dd class="fl">收货人</dd>
<dt class="fl"><input name="username" value="{$r.username}" type="text" placeholder="请输入收件人姓名" /></dt>
</div>
<div class="NewAddress_content_list clear">
<dd class="fl">手机号</dd>
<dt class="fl"><input name="mobile" value="{$r.mobile}" type="text" placeholder="请输入收件人姓名" /></dt>
</div>
<div class="NewAddress_content_list clear">
<dd class="fl">所在地区</dd>
<dt class="fl">
<div id="distpicker5" >
<select name="province" ></select>
<select name="city" ></select>
<select name="area" ></select>
</div>
</dt>
</div>
<div class="NewAddress_content_list clear">
<dd class="fl">详细地址</dd>
<dt class="fl"><textarea name="detail" placeholder="请输入详细地址">{$r.detail}</textarea></dt>
</div>
</div>
<div class="NewAddress_bottom">
<label class="NewAddress_bottom_checkbox">
<input name="sh_status" type="checkbox" value="1" {$r[sh_status]?'checked':''}/>
<div class="button">设为默认收货地址</div>
</label>
<label class="NewAddress_bottom_checkbox">
<input name="sp_status" type="checkbox" value="1" {$r[sp_status]?'checked':''}/>
<div class="button">设为默认收票地址</div>
</label>
</div>
<div class="NewAddress_submit">
<input type="submit" value="保存" />
<a href="javascript:closeAddAddress()">取消</a>
</div>
</form>
</div>
<script>
function thiscallback(){
closeAddAddress();
closeAddressList();
addressList();
}
//
$("#distpicker5").distpicker({
province: "{$r.province}",
city: "{$r.city:}",
district: "{$r.area}"
});
</script>
+126
View File
@@ -0,0 +1,126 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>{$pagetitle}-{$Think.config.setting.sitename}</title>
<link href="__PUBLIC__/skin/css/animate.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/font-awesome.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav2.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/slick-min.css" type="text/css" rel="stylesheet"/>
<link href="__PUBLIC__/skin/css/global.css" rel="stylesheet">
</head>
<body>
<include file="./Application/Data/templateFile/header.html"/>
<div class="indexProduct UserCenter shopping">
<div class="indexProduct_content clear all">
<div class="shopping_title clear">
<div class="shopping_title_list fl on">
<dd>1</dd>
<dt>我的购物车</dt>
</div>
<div class="shopping_title_list fl">
<dd>2</dd>
<dt>确认订单信息</dt>
</div>
<div class="shopping_title_list fl">
<dd>3</dd>
<dt>支付订单</dt>
</div>
</div>
<div class="mygwc cartBox">
<form name="" method="post" action="" onsubmit="return save_form(this,callback)">
<div class="mygwc_title clear">
<div class="mygwc_title_xun fl">
<label class="checkbox_gwc">
<input name="nm" type="checkbox" value="" id="mor" class="whole_check"/>
<div class="title_wen_xun clear">
<dd class="fl"></dd>
</div>
</label>
</div>
<div class="mygwc_title_xun fl">商品信息</div>
<div class="mygwc_title_xun fl">单价</div>
<div class="mygwc_title_xun fl">数量</div>
<div class="mygwc_title_xun fl">小计</div>
<div class="mygwc_title_xun fl">操作</div>
</div>
<div class="mygwc_wen">
<foreach name="data" item="v">
<div class="mygwc_wen_xun clear order_lists" data-id="{$v.id}">
<div class="wen_xun_buttom fl">
<label class="checkbox_gwc">
<input name="ids[]" type="checkbox" value="{$v.id}" id="mor" class="son_check"/>
<div class="title_wen_xun"><dd></dd></div>
</label>
</div>
<div class="wen_xun_img fl clear">
<div class="xun_img_left fl"><a href="{:titleurl($v[cms_product])}" target="_blank"><img src="{$v.cms_product.thumb}"></a></div>
<div class="xun_img_right fl">
<dd><a href="{:titleurl($v[cms_product])}" target="_blank">{$v.cms_product.title}</a></dd>
<dt>
<p>商品型号:{$v.cms_product.type_no}</p>
<p>订货号:{$v.cms_product.type_no}</p>
</dt>
</div>
</div>
<div class="wen_xun_dj fl list_price">
<dd class="price">¥{$v[cms_product]['price2']?$v[cms_product]['price2']:$v[cms_product]['price']} / 个</dd>
<if condition="$v[cms_product]['price2']"><dt><s>¥{$v.cms_product.price} / 个</s></dt></if>
</div>
<div class="wen_xun_sl fl amount_box">
<a href="javascript:;" class="reduce reSty fl" data-id="{$v.id}">-</a>
<input type="text" value="{$v.quantity}" data-id="{$v.id}" class="sum fl">
<a href="javascript:;" class="plus fl" data-id="{$v.id}">+</a>
</div>
<div class="wen_xun_xj fl list_sum"><span class="sum_price">¥{:($v[cms_product]['price2']?$v[cms_product]['price2']:$v[cms_product]['price'])*$v[quantity]}</span></div>
<div class="wen_xun_cz fl">
<a href="javascript:;" class="delBtn" data-id="{$v.id}">删除</a>
</div>
</div>
</foreach>
</div>
<div class="mygwc_jieg clear">
<div class="mygwc_jieg_left fl">
<a href="javascript:history.go(-1)"><img src="/Public/skin/images/bn81.png" />返回继续购物</a>
<a href="javascript:;" id="deleteAll">删除选中商品</a>
</div>
<div class="mygwc_jieg_right fr clear">
<div class="jieg_right_gj totalMoney">总金额(不含运费):<span class="total_text">¥0.00</span></div>
<input type="submit" value="结算" disabled class="fr" />
</div>
</div>
</form>
</div>
</div>
</div>
<section class="model_bg"></section>
<section class="my_model">
<p class="title">删除宝贝<span class="closeModel">X</span></p>
<p>您确认要删除该宝贝吗?</p>
<div class="opBtn"><a href="javascript:;" class="dialog-sure">确定</a><a href="javascript:;" class="dialog-close">关闭</a></div>
</section>
<include file="./Application/Data/templateFile/footer.html"/>
<script type="text/javascript" src="__PUBLIC__/skin/js/jquery-1.8.3.min.js"></script>
<script src="__PUBLIC__/skin/js/global.js"></script>
<script src="__PUBLIC__/skin/js/nav.js"></script>
<script src="/Public/Admin/layer/layer.js"></script>
<script src="/Public/Admin/js/globals.js"></script>
<script>
function callback(data){
window.location.href="{:U('confirmation_order')}";
}
var change_shop_cart_url = "{:U('change_shop_cart')}";
var delete_url = "{:U('delete')}";
</script>
<script src="/Public/Home/js/shop.js"></script>
</body>
</html>
+92
View File
@@ -0,0 +1,92 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<meta http-equiv="content-type" content="text/html" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="renderer" content="webkit" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>{$pagetitle}-{$Think.config.setting.sitename}</title>
<link href="__PUBLIC__/skin/css/animate.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/font-awesome.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav2.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/slick-min.css" type="text/css" rel="stylesheet"/>
<link href="__PUBLIC__/skin/css/global.css" rel="stylesheet">
</head>
<body>
<include file="./Application/Data/templateFile/header.html"/>
<div class="indexProduct UserCenter_nav">
<div class="indexProduct_content clear all">
<a href="/">首页</a>
<span class="fa fa-angle-right"></span>
<a href="#" class="on">在线支付</a>
</div>
</div>
<div class="indexProduct UserCenter shopping Pay">
<div class="indexProduct_content clear all">
<div class="shopping_title clear">
<div class="shopping_title_list fl on">
<dd>1</dd>
<dt>我的购物车</dt>
</div>
<div class="shopping_title_list fl on">
<dd>2</dd>
<dt>确认订单信息</dt>
</div>
<div class="shopping_title_list fl on">
<dd>3</dd>
<dt>支付订单</dt>
</div>
</div>
<form>
<div class="Pay_top">
<div class="Pay_top_title">
<p>感谢您提交订单,请在24小时内完成支付,我们将在您成功付款后处理此订单。</p>
<p>订单号:{$order.order_num}</p>
</div>
<div class="Pay_top_content clear">
<label class="top_content_list fl">
<input name="payType" type="radio" value="{:U('Pay/aliPay',array('order_id'=>$order[order_id]))}" checked/>
<div class="button"><img src="/Public/skin/images/bg46.jpg" /></div>
</label>
<label class="top_content_list fl">
<input name="payType" type="radio" value="{:U('Pay/bankPay',array('order_id'=>$order[order_id]))}" />
<div class="button"><img src="/Public/skin/images/gdg_tran.jpg" /></div>
</label>
</div>
</div>
<div class="Pay_bottom clear">
<div class="Pay_bottom_content fr">
<dd>支付金额:<span>¥{$order.pay_money}</span></dd>
<a href="javascript:pay()">去支付</a>
</div>
</div>
</form>
</div>
</div>
<include file="./Application/Data/templateFile/footer.html"/>
<script type="text/javascript" src="/Public/skin/js/jquery-1.8.3.min.js"></script>
<script src="/Public/skin/js/global.js"></script>
<script src="/Public/skin/js/nav.js"></script>
<script src="/Public/Admin/layer/layer.js"></script>
<script src="/Public/Admin/js/globals.js"></script>
<script src="/Public/skin/js/plugin.js"></script>
<script src="/Public/Home/js/shop.js"></script>
<script src="/Public/skin/js/distpicker.data.js"></script>
<script src="/Public/skin/js/distpicker.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
function pay(){
var url=$("input[name='payType']:checked").val();
window.location.href=url;
}
</script>
</body>
</html>
@@ -0,0 +1,92 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<meta content="text/html" http-equiv="content-type" />
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content="webkit" name="renderer" />
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<title>{$pagetitle}-{$Think.config.setting.sitename}</title>
<link href="__PUBLIC__/skin/css/animate.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/font-awesome.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav2.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/slick-min.css" rel="stylesheet" type="text/css"/>
<link href="__PUBLIC__/skin/css/global.css" rel="stylesheet">
</head>
<body>
<include file="./Application/Data/templateFile/header.html"/>
<div class="indexProduct UserCenter_nav">
<div class="indexProduct_content clear all">
<a href="/">首页</a>
<span class="fa fa-angle-right"></span>
<a href="#" class="on">用户中心</a>
</div>
</div>
<div class="indexProduct UserCenter MyOrder">
<div class="indexProduct_content clear all">
<div class="UserCenter_left fl"><include file="./Application/Member/View/Inc/left.html"/></div>
<div class="UserCenter_right fl">
<div class="MyOrder_title">
<form action="/index.php/Shop/ShopOrder/index.html" mehod="get" class="clear">
<div class="MyOrder_title_list fl">
订单号:<input type="text" name="order_num" value="{$_GET[order_num]}"/>
</div>
<div class="MyOrder_title_list fl">
订货号:<input type="text" name="type_no" value="{$_GET[type_no]}"/>
</div>
<div class="MyOrder_title_list fl">
产品名称:<input type="text" name="title" value="{$_GET[title]}"/>
</div>
<div class="MyOrder_title_submit">
<input type="submit" value="查询" />
</div>
</form>
</div>
<div class="MyOrder_content">
<div class="MyOrder_content_top clear">
<a href="/index.php/Shop/ShopOrder/index.html" class="fl {$_GET[status_code]?'':'on'}">全部订单</a>
<a href="/index.php/Shop/ShopOrder/index.html?status_code=101" class="fl {$_GET[status_code]==101?'on':''}">待付款(<span>{$readyPayCount}</span>)</a>
<a href="/index.php/Shop/ShopOrder/index.html?status_code=102" class="fl {$_GET[status_code]==102?'on':''}">待发货(<span>{$readyDeliveryCount}</span>)</a>
<a href="/index.php/Shop/ShopOrder/index.html?status_code=103" class="fl {$_GET[status_code]==103?'on':''}">待收货(<span>{$readyReceiptCount}</span>)</a>
<a href="/index.php/Shop/ShopOrder/index.html?status_code=104" class="fl {$_GET[status_code]==104?'on':''}">已完成订单(<span>{$ReceiptCount}</span>)</a>
</div>
<div class="MyOrder_content_bottom">
<div class="content_bottom_title clear">
<dd class="fl">商品信息</dd>
<dd class="fl">金额</dd>
<dd class="fl">订单状态</dd>
<dd class="fl">操作</dd>
</div>
<div class="content_bottom_txt">
<foreach name="data" item="v">
<include file="./Application/Shop/View/Inc/orderLi.html"/>
</foreach>
</div>
</div>
<div class="page vertical">{$listpage}</div>
</div>
</div>
</div>
</div>
<include file="./Application/Data/templateFile/footer.html"/>
<script type="text/javascript" src="/Public/skin/js/jquery-1.8.3.min.js"></script>
<script src="/Public/skin/js/global.js"></script>
<script src="/Public/skin/js/nav.js"></script>
<script src="/Public/Admin/layer/layer.js"></script>
<script src="/Public/Admin/js/globals.js"></script>
<script>
$(document).ready(function($){
$(".MyOrder .MyOrder_content .MyOrder_content_bottom .content_bottom_txt .bottom_txt_list").each(function() {
var h_1 = $(this).find(".list_body_product").height();
$(this).find(".body_product_li").height(h_1);
});
});
</script>
</body>
</html>
@@ -0,0 +1,79 @@
<!DOCTYPE html>
<html class="">
<style>
</style>
<head>
<meta charset="utf-8">
<meta content="text/html" http-equiv="content-type" />
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content="webkit" name="renderer" />
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<title>{$pagetitle}</title>
<link href="/Public/skin/css/animate.min.css" rel="stylesheet">
<link href="/Public/skin/css/font-awesome.min.css" rel="stylesheet">
<link href="/Public/skin/css/nav.css" rel="stylesheet">
<link href="/Public/skin/css/nav2.css" rel="stylesheet">
<link href="/Public/skin/css/slick-min.css" rel="stylesheet" type="text/css"/>
<link href="/Public/skin/css/global.css" rel="stylesheet">
</head>
<style>
.Logistics{ background: #f3f3f3; width: 100%; margin: 0 auto; padding: 25px;}
.Logistics .Logistics_title{ font-size: 18px; border-bottom: 1px solid #e7e7e7; margin: 0; padding: 14px 0 14px 20px; position: relative;}
.Logistics .Logistics_content{ margin: 20px 0px; margin-left: 12px; padding: 20px 0px; padding-left: 10px; position: relative;}
.Logistics .Logistics_content:before{
content: "";
width: 2px;
height: 100%;
background: #dcdcdc;
display: inline-block;
position: absolute;
top: 0px;
}
.Logistics .Logistics_content .Logistics_content_list{ position: relative; padding-left: 12px; margin-bottom: 15px;}
.Logistics .Logistics_content .Logistics_content_list dd{ width: 20%; font-size: 13px; font-weight: bolder; color: #666; line-height: 24px;}
.Logistics .Logistics_content .Logistics_content_list dt{ font-size: 13px; color: #333; width: 77%; margin-left: 3%; line-height: 24px;}
.Logistics .Logistics_content .Logistics_content_list:before{
content: '';
position: absolute;
border: 3px solid #f3f3f3;
background-color: #d9d9d9;
display: inline-block;
width: 5px;
height: 5px;
border-radius: 5px;
left: -5px;
top: 5px;
}
.Logistics .Logistics_content .Logistics_content_list:first-child:before{ background: #b8182c;}
.Logistics .Logistics_content .Logistics_content_list:first-child dd{ color: #b8182c;}
</style>
<body>
<div class="Logistics">
<div class="Logistics_content">
<foreach name="data" item="v" >
<div class="Logistics_content_list clear">
<dd class="fl">{$v.time}</dd>
<dt class="fl">{$v.context}</dt>
</div>
</foreach>
</div>
</div>
<script type="text/javascript" src="/Public/skin/js/jquery-1.8.3.min.js"></script>
<script src="/Public/Admin/layer/layer.js"></script>
<script src="/Public/Admin/js/globals.js"></script>
<script language="javascript">
$(function(){
//改变高度
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
parent.layer.iframeAuto(index);
var title=$("title").html();
parent.$(".layui-layer-title").html(title);
})
</script>
</body>
</html>
+217
View File
@@ -0,0 +1,217 @@
<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<meta content="text/html" http-equiv="content-type" />
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content="webkit" name="renderer" />
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
<title>{$pagetitle}-{$Think.config.setting.sitename}</title>
<link href="__PUBLIC__/skin/css/animate.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/font-awesome.min.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/nav2.css" rel="stylesheet">
<link href="__PUBLIC__/skin/css/slick-min.css" rel="stylesheet" type="text/css"/>
<link href="__PUBLIC__/skin/css/global.css" rel="stylesheet">
</head>
<body> <include file="./Application/Data/templateFile/header.html"/>
<div class="indexProduct UserCenter_nav">
<div class="indexProduct_content clear all">
<a href="#">首页</a>
<span class="fa fa-angle-right"></span>
<a href="#" class="on">订单详情</a>
</div>
</div>
<style>
.MyOrder .MyOrder_content .MyOrder_content_bottom .content_bottom_txt .bottom_txt_list .txt_list_body .list_body_list .body_list_lister{ margin-bottom:7px;}
.MyOrder .MyOrder_content .MyOrder_content_bottom .content_bottom_txt .bottom_txt_list .txt_list_body .list_body_list .body_list_lister:last-child{ margin-bottom:0px;}
.MyOrder .MyOrder_content .MyOrder_content_bottom .content_bottom_txt .bottom_txt_list .txt_list_body .list_body_list .body_list_lister .body_list_txt dd a{ display:inline-block; width:100%;}
.Order_details .indexProduct_content{ background: none;}
.Order_details .mygwc{ width: 81%; background: #fff; padding: 20px; border: 1px solid #e5e5e5; border-left: 0px; padding-top: 0px;}
.Order_details .Safety_title{ margin-bottom: 30px;}
.Order_details .UserCenter_left{ width: 19%;}
.Order_details .Order_bottom{ padding: 0px;}
.Order_details .UserCenter_right{ padding:0px; width:100%; border:0px;}
.Order_details .MyOrder_content .MyOrder_content_bottom .content_bottom_title dd:nth-child(1){ width:80%;}
.Order_details .MyOrder_content .MyOrder_content_bottom .content_bottom_title dd:nth-child(2){ width:20%; text-align:center;}
.Order_details .MyOrder_content .MyOrder_content_bottom .content_bottom_txt .bottom_txt_list .txt_list_body .list_body_list:nth-child(1){ width:80%;}
.Order_details .MyOrder_content .MyOrder_content_bottom .content_bottom_txt .bottom_txt_list .txt_list_body .list_body_list:nth-child(2){ width:20%;}
.Order_details .MyOrder_content .MyOrder_content_bottom .content_bottom_txt .bottom_txt_list .txt_list_body .list_body_list .body_list_img{ width:100px; margin-right:15px;}
.Order_details .UserCenter_right{ min-height:auto; }
.Order_details .Order_bottom .Order_bottom_right{ margin-top:20px;}
.Order_details .Order_details_top .details_top_list{ border:1px solid #dcdcdc; padding:30px 0px; margin-bottom:20px;}
.Order_details .Order_details_top .details_top_list:last-child{ margin-bottom:0px;}
.Order_details .Order_details_top .details_top_list .top_list_lister{ line-height:24px; width:33.333%; padding:0px 35px; position:relative;}
.Order_details .Order_details_top .details_top_list .top_list_lister:before{ content:""; position:absolute; display:inline-block; height:122px; background:#dcdcdc; right:0; top:3%; width:1px;}
.Order_details .Order_details_top .details_top_list .top_list_lister:last-child:before{ display:none;}
.Order_details .Order_details_top .details_top_list .top_list_lister dd{ color:#000; font-size:14px;}
.Order_details .Order_details_top .details_top_list .top_list_lister dd span{ color:#b8182c; font-size:16px;}
.Order_details .Order_details_top .details_top_list .top_list_lister dt p{ color:#999; font-size:12px;}
.Order_details .Order_details_top .details_top_list .top_list_lister a{ font-size:14px; color:#b8182c; display:inline-block; border:1px solid #b8182c; padding:3px 15px; border-radius:5px; margin-top:25px;}
.Order_details .Order_details_top .details_top_list:nth-child(2) .top_list_lister:before{ height:210px;}
.Order_details .MyOrder_content .MyOrder_content_bottom .content_bottom_txt .bottom_txt_list .txt_list_body .list_body_list:last-child{ border-right: 0px;}
</style>
<div class="indexProduct UserCenter Safety shopping MyOrder Order Order_details">
<div class="indexProduct_content clear all">
<div class="UserCenter_left fl"><include file="./Application/Member/View/Inc/left.html"/></div>
<div class="mygwc cartBox fr">
<div class="Safety_title">订单详情</div>
<div class="Order_bottom clear">
<div class="Order_details_top">
<div class="details_top_list clear">
<div class="top_list_lister fl">
<dd>订单状态:<span>{$r.status_name}</span></dd>
<dt>
<p>订单号:<span>{$r.order_num}</span></p>
<p>下单时间:{:date("Y-m-d H:i:s",$r[addtime])}</p>
<p>订单备注:{$r[remark]?$r[remark]:'-'}</p>
</dt>
</div>
<div class="top_list_lister fl">
<dd>订单收货信息</dd>
<dt>
<p>收货人:{$r.shop_order_address.username} {$r.shop_order_address.mobile}</p>
<p>收货地址:{$r.shop_order_address.province} {$r.shop_order_address.city} {$r.shop_order_address.area} {$r.shop_order_address.detail}</p>
</dt>
</div>
<div class="top_list_lister fl">
<dd>订单物流信息</dd>
<dt>
<p>物流公司:{$r[shop_order_address][express_company]?$r[shop_order_address][express_company]:'-'}</p>
<p>物流单号:{$r[shop_order_address][express_company_num]?$r[shop_order_address][express_company_num]:'-'}</p>
</dt>
<?php
if($r[shop_order_address][express_company_num]){
$com=$r['shop_order_address'][express_company_code];
$num=$r['shop_order_address'][express_company_num];
?>
<a href="{:U('kuaidi',array('com'=>$com,'num'=>$num))}" class="iframe" >物流跟踪</a>
<?php
}
?>
</div>
</div>
<?php
if($r[shop_order_invoice]){
?>
<div class="details_top_list clear">
<div class="top_list_lister fl">
<dd>发票信息:</dd>
<dt>
<p>发票类型:<span>{$r[shop_order_invoice][type]?'增值税专用发票':'增值税普通发票'}</span></p>
<p>公司名称:{$r.shop_order_invoice.company_name}</p>
<p>纳税人识别号:{$r.shop_order_invoice.taxpayer_number}</p>
<?php
if($r[shop_order_invoice][type]){
?>
<p>注册地址:{$r.shop_order_invoice.registration_address}</p>
<p>注册电话:{$r.shop_order_invoice.registration_mobile}</p>
<p>开户银行:{$r.shop_order_invoice.opening_bank}</p>
<p>银行招账户:{$r.shop_order_invoice.bank_account}</p>
<?php
}
?>
</dt>
</div>
<div class="top_list_lister fl">
<dd>发票收货信息</dd>
<dt>
<p>收货人:{$r.shop_order_invoice_address.username} {$r.shop_order_invoice_address.mobile}</p>
<p>收货地址:{$r.shop_order_invoice_address.province} {$r.shop_order_invoice_address.city} {$r.shop_order_invoice_address.area} {$r.shop_order_invoice_address.detail}</p>
</dt>
</div>
<div class="top_list_lister fl">
<dd>订单物流信息</dd>
<dt>
<p>物流公司:{$r[shop_order_invoice_address][express_company]?$r[shop_order_invoice_address][express_company]:'-'}</p>
<p>物流单号:{$r[shop_order_invoice_address][express_company_num]?$r[shop_order_invoice_address][express_company_num]:'-'}</p>
</dt>
<?php
if($r[shop_order_invoice_address][express_company_num]){
$com=$r['shop_order_invoice_address'][express_company_code];
$num=$r['shop_order_invoice_address'][express_company_num];
?>
<a href="{:U('kuaidi',array('com'=>$com,'num'=>$num))}" class="iframe" >物流跟踪</a>
<?php
}
?>
</div>
</div>
<?php
}
?>
</div>
<div class="UserCenter_right fl">
<div class="MyOrder_content">
<div class="MyOrder_content_bottom">
<div class="content_bottom_title clear">
<dd class="fl">商品信息</dd>
<dd class="fl">金额</dd>
</div>
<div class="content_bottom_txt">
<div class="bottom_txt_list">
<div class="txt_list_title">
<span>订单编号:{$r.order_num}</span>
<span>下单时间:{:date("Y-m-d H:i:s",$r[addtime])}</span>
</div>
<div class="txt_list_body clear">
<div class="list_body_lister clear">
<div class="list_body_list fl clear list_body_product">
<foreach name="r[shop_order_detail]" item="vv">
<div class="body_list_lister clear">
<div class="body_list_img fl"><img src="{$vv.thumb}" /></div>
<div class="body_list_txt fl">
<dd><a href="/{$vv.catid}/{$vv.product_id}.html" target="_blank">{$vv.title}</a></dd>
<dt>¥{$vv.price}<span>{$vv.quantity}</span></dt>
</div>
</div>
</foreach>
</div>
<div class="list_body_list fl body_product_li">
<dt>¥{$r.money}</dt>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="Order_bottom_right fr">
<div class="bottom_right_list">
<span>商品总金额:</span>
<i>{$r.money} 元</i>
</div>
<div class="bottom_right_list">
</div>
</div>
</div>
<div class="Order_Amounts clear">
<div class="Order_Amounts_content fr clear">
<dd class="fl">应付金额:</dd>
<dt class="fl">{$r.pay_money}元</dt>
</div>
</div>
</div>
</div>
</div>
<include file="./Application/Data/templateFile/footer.html"/>
<script type="text/javascript" src="__PUBLIC__/skin/js/jquery-1.8.3.min.js"></script>
<script src="/Public/Admin/layer/layer.js"></script>
<script src="/Public/Admin/js/globals.js"></script>
</body>
</html>