|
|
@ -89,6 +89,7 @@ class Futures extends BaseApi{
|
||||||
if($search_text != ''){
|
if($search_text != ''){
|
||||||
$condition[] = ['o.order_no','like','%'.$search_text.'%'];
|
$condition[] = ['o.order_no','like','%'.$search_text.'%'];
|
||||||
}
|
}
|
||||||
|
// $this->member_id=108;
|
||||||
//(1=库存,2=已上架,3=已售出,4=提货中,5=提货完成,6=待支付,7=捡漏,8=拆单)
|
//(1=库存,2=已上架,3=已售出,4=提货中,5=提货完成,6=待支付,7=捡漏,8=拆单)
|
||||||
switch($status){
|
switch($status){
|
||||||
case 6: //买家未付款
|
case 6: //买家未付款
|
||||||
|
|
@ -130,7 +131,7 @@ class Futures extends BaseApi{
|
||||||
$field = [
|
$field = [
|
||||||
'seller.username as seller_username',
|
'seller.username as seller_username',
|
||||||
'seller.nickname as seller_nickname',
|
'seller.nickname as seller_nickname',
|
||||||
'seller.headimg as seller_headimg',
|
'seller.headimg as seller_headimg',
|
||||||
'g.goods_name',
|
'g.goods_name',
|
||||||
'g.goods_image',
|
'g.goods_image',
|
||||||
'g.market_price',
|
'g.market_price',
|
||||||
|
|
@ -148,6 +149,7 @@ class Futures extends BaseApi{
|
||||||
'o.adjust_money',
|
'o.adjust_money',
|
||||||
'o.pay_money',
|
'o.pay_money',
|
||||||
'o.order_id',
|
'o.order_id',
|
||||||
|
'o.name as buyer_name',
|
||||||
];
|
];
|
||||||
// 表关联
|
// 表关联
|
||||||
$join = [
|
$join = [
|
||||||
|
|
@ -174,20 +176,22 @@ class Futures extends BaseApi{
|
||||||
$id = input('id', 0);
|
$id = input('id', 0);
|
||||||
$price = input('price', 0);
|
$price = input('price', 0);
|
||||||
$agree_split_order = input('agree_split_order', 0);
|
$agree_split_order = input('agree_split_order', 0);
|
||||||
|
|
||||||
$date = model('futures')->getInfo([['id', '=', $id],['seller_uid', '=', $this->member_id]]);
|
$date = model('futures')->getInfo([['id', '=', $id],['seller_uid', '=', $this->member_id]]);
|
||||||
if(empty($date)){
|
if(empty($date)){
|
||||||
return $this->response($this->error('','发布失败'));
|
return $this->response($this->error('','发布失败'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$futuresModel = new FuturesModel;
|
$futuresModel = new FuturesModel;
|
||||||
$basicsConfig = $futuresModel->getBasicsConfig($this->site_id)['data']['value'];
|
$basicsConfig = $futuresModel->getBasicsConfig($this->site_id)['data']['value'];
|
||||||
if(!($price > sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['min'] / 100)) && $price <= sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['max'] / 100)))){// 后台配置范围
|
|
||||||
return $this->response($this->error('','发布失败,价格不在允许范围内'.sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['min'] / 100)).'-'.sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['max'] / 100))));
|
|
||||||
|
// if(!($price > sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['min'] / 100)) && $price <= sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['max'] / 100)))){// 后台配置范围
|
||||||
|
// return $this->response($this->error('','发布失败,价格不在允许范围内'.sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['min'] / 100)).'-'.sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['max'] / 100))));
|
||||||
|
// }
|
||||||
|
|
||||||
|
if(!($price <= sprintf('%.2f',$date['unit_price'] * (1 + $basicsConfig['price_range']['max'] / 100)))){// 后台配置范围
|
||||||
|
return $this->response($this->error('','发布失败,价格不得高于市场价格'));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 限制发布时间
|
// 限制发布时间
|
||||||
|
|
||||||
return $this->response($futuresModel->release($id, $price, $agree_split_order));
|
return $this->response($futuresModel->release($id, $price, $agree_split_order));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -198,17 +202,15 @@ class Futures extends BaseApi{
|
||||||
public function stock(){
|
public function stock(){
|
||||||
$token = $this->checkToken();
|
$token = $this->checkToken();
|
||||||
if ($token['code'] < 0) return $this->response($token);
|
if ($token['code'] < 0) return $this->response($token);
|
||||||
|
|
||||||
$id = input('id', 0);
|
$id = input('id', 0);
|
||||||
|
|
||||||
$date = model('futures')->getInfo([['id', '=', $id],['seller_uid', '=', $this->member_id]]);
|
$date = model('futures')->getInfo([['id', '=', $id],['seller_uid', '=', $this->member_id]]);
|
||||||
if(empty($date)){
|
if(empty($date)){
|
||||||
return $this->response($this->error('','下架失败'));
|
return $this->response($this->error('','下架失败'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$futuresModel = new FuturesModel;
|
$futuresModel = new FuturesModel;
|
||||||
return $this->response($futuresModel->stock($id));
|
return $this->response($futuresModel->stock($id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 提货
|
* 提货
|
||||||
* @return false|string
|
* @return false|string
|
||||||
|
|
@ -217,28 +219,23 @@ class Futures extends BaseApi{
|
||||||
public function pickUp(){
|
public function pickUp(){
|
||||||
$token = $this->checkToken();
|
$token = $this->checkToken();
|
||||||
if ($token['code'] < 0) return $this->response($token);
|
if ($token['code'] < 0) return $this->response($token);
|
||||||
|
|
||||||
$id = input('id', 0);
|
$id = input('id', 0);
|
||||||
|
|
||||||
$date = model('futures')->getInfo([['id', '=', $id],['seller_uid', '=', $this->member_id]]);
|
$date = model('futures')->getInfo([['id', '=', $id],['seller_uid', '=', $this->member_id]]);
|
||||||
if(empty($date)){
|
if(empty($date)){
|
||||||
return $this->response($this->error('','提货失败'));
|
return $this->response($this->error('','提货失败'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$futuresModel = new FuturesModel;
|
$futuresModel = new FuturesModel;
|
||||||
return $this->response($futuresModel->pickUp($id));
|
return $this->response($futuresModel->pickUp($id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 详情
|
* 详情
|
||||||
* @return false|string
|
* @return false|string
|
||||||
*/
|
*/
|
||||||
public function detail(){
|
public function detail(){
|
||||||
|
|
||||||
$token = $this->checkToken();
|
$token = $this->checkToken();
|
||||||
if ($token['code'] < 0) return $this->response($token);
|
if ($token['code'] < 0) return $this->response($token);
|
||||||
|
|
||||||
$id = input('id', 0);
|
$id = input('id', 0);
|
||||||
|
|
||||||
$futuresModel = new FuturesModel;
|
$futuresModel = new FuturesModel;
|
||||||
$detail = $futuresModel->detail($id, $this->site_id);
|
$detail = $futuresModel->detail($id, $this->site_id);
|
||||||
$times = $futuresModel->checkTimes($this->site_id, $this->member_id, $detail['data']['status']);
|
$times = $futuresModel->checkTimes($this->site_id, $this->member_id, $detail['data']['status']);
|
||||||
|
|
@ -260,20 +257,20 @@ class Futures extends BaseApi{
|
||||||
$res = [
|
$res = [
|
||||||
'price_range' => $basicsConfig['price_range'],
|
'price_range' => $basicsConfig['price_range'],
|
||||||
'service_price' => $basicsConfig['service_price'],
|
'service_price' => $basicsConfig['service_price'],
|
||||||
|
'proposed_range' => $basicsConfig['proposed_range'],
|
||||||
|
'technical_range' => $basicsConfig['technical_range'],
|
||||||
];
|
];
|
||||||
return $this->response($this->success($res));
|
return $this->response($this->success($res));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 详情
|
* 详情
|
||||||
* @return false|string
|
* @return false|string
|
||||||
*/
|
*/
|
||||||
public function myDetail(){
|
public function myDetail(){
|
||||||
|
|
||||||
$token = $this->checkToken();
|
$token = $this->checkToken();
|
||||||
if ($token['code'] < 0) return $this->response($token);
|
if ($token['code'] < 0) return $this->response($token);
|
||||||
|
|
||||||
$id = input('id', 0);
|
$id = input('id', 0);
|
||||||
|
|
||||||
$futuresModel = new FuturesModel;
|
$futuresModel = new FuturesModel;
|
||||||
$detail = $futuresModel->detail($id, $this->site_id);
|
$detail = $futuresModel->detail($id, $this->site_id);
|
||||||
if($detail['code'] < 0 || empty($detail['data']) || !($detail['data']['seller_uid'] == $this->member_id || $detail['data']['member_id'] == $this->member_id)){
|
if($detail['code'] < 0 || empty($detail['data']) || !($detail['data']['seller_uid'] == $this->member_id || $detail['data']['member_id'] == $this->member_id)){
|
||||||
|
|
@ -292,7 +289,4 @@ class Futures extends BaseApi{
|
||||||
return $this->response($info);
|
return $this->response($info);
|
||||||
}
|
}
|
||||||
|
|
||||||
// public function testBuyBack(){
|
|
||||||
// return $this->response(event('BuyBack'));
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
@ -14,12 +14,9 @@
|
||||||
namespace addon\futures\api\controller;
|
namespace addon\futures\api\controller;
|
||||||
use app\api\controller\BaseApi;
|
use app\api\controller\BaseApi;
|
||||||
use addon\futures\model\order\FuturesOrderCreate as OrderCreateModel;
|
use addon\futures\model\order\FuturesOrderCreate as OrderCreateModel;
|
||||||
use app\model\system\Pay;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单创建
|
* 订单创建
|
||||||
* @author Administrator
|
* @author Administrator
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
class Ordercreate extends BaseApi
|
class Ordercreate extends BaseApi
|
||||||
{
|
{
|
||||||
|
|
@ -45,8 +42,10 @@ class Ordercreate extends BaseApi
|
||||||
|
|
||||||
'latitude' => $this->params[ 'latitude' ] ?? '',
|
'latitude' => $this->params[ 'latitude' ] ?? '',
|
||||||
'longitude' => $this->params[ 'longitude' ] ?? '',
|
'longitude' => $this->params[ 'longitude' ] ?? '',
|
||||||
|
|
||||||
'is_invoice' => $this->params[ 'is_invoice' ] ?? 0,
|
'is_invoice' => $this->params[ 'is_invoice' ] ?? 0,
|
||||||
|
|
||||||
|
'pay_password' => $this->params[ 'payPassword' ] ?? '',
|
||||||
|
|
||||||
'invoice_type' => $this->params[ 'invoice_type' ] ?? 0,
|
'invoice_type' => $this->params[ 'invoice_type' ] ?? 0,
|
||||||
'invoice_title' => $this->params[ 'invoice_title' ] ?? '',
|
'invoice_title' => $this->params[ 'invoice_title' ] ?? '',
|
||||||
'taxpayer_number' => $this->params[ 'taxpayer_number' ] ?? '',
|
'taxpayer_number' => $this->params[ 'taxpayer_number' ] ?? '',
|
||||||
|
|
@ -60,13 +59,9 @@ class Ordercreate extends BaseApi
|
||||||
'goods_sku_list' => !empty($this->params['goods_sku_list']) ? json_decode($this->params['goods_sku_list'], true) : [],
|
'goods_sku_list' => !empty($this->params['goods_sku_list']) ? json_decode($this->params['goods_sku_list'], true) : [],
|
||||||
'sku_id' => isset($this->params['sku_id']) ? $this->params['sku_id'] : '',
|
'sku_id' => isset($this->params['sku_id']) ? $this->params['sku_id'] : '',
|
||||||
];
|
];
|
||||||
var_dump($data);die;
|
if ($data[ 'futures_id' ] == 0) {
|
||||||
if ($data[ 'futures_id' ] == 0) {
|
return $this->response($this->error('', '缺少必填参数商品数据'));
|
||||||
return $this->response($this->error('', '缺少必填参数商品数据'));
|
}
|
||||||
}
|
|
||||||
$pay = new Pay();
|
|
||||||
$out_trade_no = $pay->createOutTradeNo($data[ 'member_id' ]);
|
|
||||||
return $this->success($out_trade_no);
|
|
||||||
$res = $order_create->create($data);
|
$res = $order_create->create($data);
|
||||||
return $this->response($res);
|
return $this->response($res);
|
||||||
}
|
}
|
||||||
|
|
@ -139,7 +134,6 @@ class Ordercreate extends BaseApi
|
||||||
if ($data[ 'futures_id' ] == 0) {
|
if ($data[ 'futures_id' ] == 0) {
|
||||||
return $this->response($this->error('', '缺少必填参数商品数据'));
|
return $this->response($this->error('', '缺少必填参数商品数据'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$res = $order_create->orderPayment($data);
|
$res = $order_create->orderPayment($data);
|
||||||
return $this->response($res);
|
return $this->response($res);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,12 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace addon\futures\api\controller;
|
namespace addon\futures\api\controller;
|
||||||
use app\api\controller\BaseApi;
|
use app\api\controller\BaseApi;
|
||||||
|
|
||||||
class User extends BaseApi{
|
class User extends BaseApi{
|
||||||
|
|
||||||
public function info(){
|
public function info(){
|
||||||
$token = $this->checkToken();
|
$token = $this->checkToken();
|
||||||
if ($token['code'] < 0) return $this->response($token);
|
if ($token['code'] < 0) return $this->response($token);
|
||||||
|
|
||||||
$info = model('futures_user')->getInfo([['member_id', '=', $this->member_id]]);
|
$info = model('futures_user')->getInfo([['member_id', '=', $this->member_id]]);
|
||||||
|
|
||||||
if(empty($info)){
|
if(empty($info)){
|
||||||
$data['member_id'] = $this->member_id;
|
$data['member_id'] = $this->member_id;
|
||||||
$data['site_id'] = $this->site_id;
|
$data['site_id'] = $this->site_id;
|
||||||
|
|
@ -17,7 +14,6 @@ class User extends BaseApi{
|
||||||
model('futures_user')->add($data);
|
model('futures_user')->add($data);
|
||||||
$info = model('futures_user')->getInfo([['member_id', '=', $this->member_id]]);
|
$info = model('futures_user')->getInfo([['member_id', '=', $this->member_id]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->response($this->success($info));
|
return $this->response($this->success($info));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -7,7 +7,7 @@ return [
|
||||||
'name' => 'TRADING_MARKET',
|
'name' => 'TRADING_MARKET',
|
||||||
'title' => '交易市场',
|
'title' => '交易市场',
|
||||||
'url' => 'futures://shop/futures/index',
|
'url' => 'futures://shop/futures/index',
|
||||||
'parent' => 'CHANNEL_ROOT',
|
'parent' => 'PROMOTION_CENTER',
|
||||||
'is_show' => 1,
|
'is_show' => 1,
|
||||||
'sort' => 1,
|
'sort' => 1,
|
||||||
'picture' => 'addon/futures/shop/view/public/img/futures_new.png', // 图标
|
'picture' => 'addon/futures/shop/view/public/img/futures_new.png', // 图标
|
||||||
|
|
@ -15,7 +15,7 @@ return [
|
||||||
'child_list' => [
|
'child_list' => [
|
||||||
[
|
[
|
||||||
'name' => 'TRADING_MARKET_HOME',
|
'name' => 'TRADING_MARKET_HOME',
|
||||||
'title' => '交易市场',
|
'title' => '交易订单',
|
||||||
'url' => 'futures://shop/futures/index',
|
'url' => 'futures://shop/futures/index',
|
||||||
'is_show' => 1,
|
'is_show' => 1,
|
||||||
'sort' => 1,
|
'sort' => 1,
|
||||||
|
|
@ -33,12 +33,7 @@ return [
|
||||||
'url' => 'futures://shop/config/basics',
|
'url' => 'futures://shop/config/basics',
|
||||||
'is_show' => 1,
|
'is_show' => 1,
|
||||||
'sort' => 2,
|
'sort' => 2,
|
||||||
],
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -8,29 +8,32 @@
|
||||||
|
|
||||||
* =========================================================
|
* =========================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace addon\futures\event;
|
namespace addon\futures\event;
|
||||||
|
use addon\futures\model\Futures as FuturesModel;
|
||||||
|
use app\model\member\MemberAccount;
|
||||||
use think\facade\Db;
|
use think\facade\Db;
|
||||||
|
|
||||||
class MemberRegister
|
class MemberRegister
|
||||||
{
|
{
|
||||||
|
|
||||||
// 会员注册
|
// 会员注册
|
||||||
public function handle($param){
|
public function handle($param){
|
||||||
// 获取用户id
|
// 获取用户id
|
||||||
$memberId = $param['member_id'] ?? 0;
|
$memberId = $param['member_id'] ?? 0;
|
||||||
if($memberId > 0){
|
if($memberId > 0){
|
||||||
|
$futuresModel = new FuturesModel;
|
||||||
$memberInfo = Db::name('member')
|
$memberInfo = Db::name('member')
|
||||||
->field('member_id,site_id')
|
->field('member_id,site_id')
|
||||||
->where('member_id',$memberId)
|
->where('member_id',$memberId)
|
||||||
->find();
|
->find();
|
||||||
|
$basics = $futuresModel->getBasicsConfig($memberInfo['site_id'])['data']['value'];
|
||||||
|
if($basics['newuser_points']){
|
||||||
|
$member_account = new MemberAccount();
|
||||||
|
$member_account->addMemberAccount($memberInfo['site_id'], $memberInfo['member_id'], 'diamond', $basics['newuser_points'], 'diamond', '赠送猕猴桃', '新用户注册赠送猕猴桃');
|
||||||
|
}
|
||||||
$data = [
|
$data = [
|
||||||
'site_id' => $memberInfo['site_id'],
|
'site_id' => $memberInfo['site_id'],
|
||||||
'member_id' => $memberInfo['member_id'],
|
'member_id' => $memberInfo['member_id'],
|
||||||
'created_time' => time()
|
'created_time' => time()
|
||||||
];
|
];
|
||||||
|
|
||||||
Db::name('futures_user')->insert($data);
|
Db::name('futures_user')->insert($data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@ class OrderPay
|
||||||
public function handle($param){
|
public function handle($param){
|
||||||
if($param['promotion_type'] == 'futures'){
|
if($param['promotion_type'] == 'futures'){
|
||||||
$futures_model = new Futures();
|
$futures_model = new Futures();
|
||||||
// $result = $futures_model->orderComplete($param['promotion_id'],$param['order_id']);
|
$result = $futures_model->orderComplete($param['promotion_id'],$param['order_id']);
|
||||||
(new Forder())->calculate($param);
|
(new Forder())->calculate($param); //计算订单佣金
|
||||||
}else{
|
}else{
|
||||||
$goods_ids = model("order_goods")->getList([[ 'order_id', '=', $param[ 'order_id' ] ] ], 'goods_id');
|
$goods_ids = model("order_goods")->getList([[ 'order_id', '=', $param[ 'order_id' ] ] ], 'goods_id');
|
||||||
$diamond = model("goods")->getSum([['goods_id', 'in', array_column($goods_ids,'goods_id')]], 'give_diamond');
|
$diamond = model("goods")->getSum([['goods_id', 'in', array_column($goods_ids,'goods_id')]], 'give_diamond');
|
||||||
|
|
@ -29,7 +29,7 @@ class OrderPay
|
||||||
$site_id=$param['site_id'];
|
$site_id=$param['site_id'];
|
||||||
$member_id=$param['member_id'];
|
$member_id=$param['member_id'];
|
||||||
$member_account = new MemberAccount();
|
$member_account = new MemberAccount();
|
||||||
$member_account->addMemberAccount($site_id, $member_id, 'diamond', $diamond, 'diamond', '赠送钻石', '会员购物赠送钻石',$param[ 'order_id' ]);
|
$member_account->addMemberAccount($site_id, $member_id, 'diamond', $diamond, 'diamond', '赠送猕猴桃', '会员购物赠送猕猴桃',$param[ 'order_id' ]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return success();
|
return success();
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace addon\futures\model;
|
namespace addon\futures\model;
|
||||||
use addon\fenxiao\model\FenxiaoAccount;
|
use addon\fenxiao\model\FenxiaoAccount;
|
||||||
|
use addon\futures\model\Futures as FuturesModel;
|
||||||
use addon\message\model\Message;
|
use addon\message\model\Message;
|
||||||
use app\model\member\MemberAccount;
|
use app\model\member\MemberAccount;
|
||||||
use app\model\system\Config as ConfigModel;
|
use app\model\system\Config as ConfigModel;
|
||||||
|
|
@ -93,6 +94,7 @@ class Futures extends BaseModel{
|
||||||
Cache::store('redis_concurrent')->set('addon_futures_stock_'.$id,'1');
|
Cache::store('redis_concurrent')->set('addon_futures_stock_'.$id,'1');
|
||||||
return $this->success($id);
|
return $this->success($id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发布
|
* 发布
|
||||||
* @param $id
|
* @param $id
|
||||||
|
|
@ -141,14 +143,22 @@ class Futures extends BaseModel{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$service_price = $price * $basics['service_price'] / 100;
|
$service_price = $price * $basics['service_price'] / 100;
|
||||||
|
$technical_range=$service_price*$basics['technical_range']/100;
|
||||||
|
if(model('member')->getValue(['member_id'=>$date['seller_uid']],'balance_money')<$service_price){
|
||||||
|
return error(-800, '您余额不足!');
|
||||||
|
}
|
||||||
model('futures')->update([
|
model('futures')->update([
|
||||||
'status' => $futuresInfo['status'],
|
'status' => $futuresInfo['status'],
|
||||||
'release_time' => time() + $basics['release_wait'] * 24 * 60 * 60,// 配置上线延迟时间
|
'release_time' => time() + $basics['release_wait'] * 24 * 60 * 60,// 配置上线延迟时间
|
||||||
'price' => $price,
|
'price' => $price,
|
||||||
'total' => $futuresInfo['total'],
|
'total' => $futuresInfo['total'],
|
||||||
'service_price' => $service_price,
|
'service_price' => $service_price,
|
||||||
'real_income' => $price - $service_price,
|
'real_income' => $price,
|
||||||
],[['id','=',$id]]);
|
],[['id','=',$id]]);
|
||||||
|
//扣除服务费
|
||||||
|
$memberAccountModel = new MemberAccount();
|
||||||
|
$memberAccountModel->addMemberAccount($date['site_id'], $date['seller_uid'], 'balance_money', -$technical_range, 'service_price', $date['id'], '服务费', $date['id']);
|
||||||
|
$memberAccountModel->addMemberAccount($date['site_id'], $date['seller_uid'], 'balance_money', -$service_price-$technical_range, 'service_price', $date['id'], '商家分账', $date['id']);
|
||||||
model('futures')->commit();
|
model('futures')->commit();
|
||||||
Cache::store('redis_concurrent')->set('addon_futures_'.$id,'1');
|
Cache::store('redis_concurrent')->set('addon_futures_'.$id,'1');
|
||||||
return $this->success();
|
return $this->success();
|
||||||
|
|
@ -174,6 +184,10 @@ class Futures extends BaseModel{
|
||||||
model('futures')->update([
|
model('futures')->update([
|
||||||
'status' => 1,
|
'status' => 1,
|
||||||
], [['id', '=', $id]]);
|
], [['id', '=', $id]]);
|
||||||
|
//扣除服务费
|
||||||
|
$memberAccountModel = new MemberAccount();
|
||||||
|
$memberAccountModel->addMemberAccount($date['site_id'], $date['seller_uid'], 'balance_money', $date['service_price'], 'service_price', $date['id'], '退回服务费与商家分账', $date['id']);
|
||||||
|
Cache::store('redis_concurrent')->set('addon_futures_stock_'.$id,'1');
|
||||||
return $this->success();
|
return $this->success();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|
@ -193,13 +207,12 @@ class Futures extends BaseModel{
|
||||||
model('futures')->update([
|
model('futures')->update([
|
||||||
'status' => 5,
|
'status' => 5,
|
||||||
], [['id', '=', $id]]);
|
], [['id', '=', $id]]);
|
||||||
|
|
||||||
$basics = $this->getBasicsConfig($date['site_id'])[ 'data' ][ 'value' ];
|
$basics = $this->getBasicsConfig($date['site_id'])[ 'data' ][ 'value' ];
|
||||||
// 提货用来减少用户买入限制
|
// 提货用来减少用户买入限制
|
||||||
Db::name('futures_user')
|
Db::name('futures_user')
|
||||||
->where('member_id',$date['member_id'])
|
->where('member_id', $date['member_id'])
|
||||||
->update([
|
->update([
|
||||||
'business_num' => Db::raw('business_num-'.$basics['order_restrictions_num']),
|
'business_num' => Db::raw('business_num-' . $basics['order_restrictions_num']),
|
||||||
]);
|
]);
|
||||||
return $this->success();
|
return $this->success();
|
||||||
}
|
}
|
||||||
|
|
@ -209,26 +222,28 @@ class Futures extends BaseModel{
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function orderCreate($id, $order_id, $member_id){
|
public function orderCreate($id, $order_id, $member_id){
|
||||||
|
|
||||||
$date = model('futures')->getInfo([['id', '=', $id]]);
|
$date = model('futures')->getInfo([['id', '=', $id]]);
|
||||||
if(empty($date) || ($date['status'] !== 2 && $date['status'] !== 7)){
|
if(empty($date) || ($date['status'] !== 2 && $date['status'] !== 7)){
|
||||||
return $this->error($date,'下单失败-1001');
|
return $this->error($date,'下单失败-1001');
|
||||||
}
|
}
|
||||||
if(!Cache::store('redis_concurrent')->delete('addon_futures_'.$id)){
|
// if(!Cache::store('redis_concurrent')->delete('addon_futures_'.$id)){
|
||||||
return $this->error('','下单失败-1002');
|
// return $this->error('','下单失败-1002');
|
||||||
}
|
// }
|
||||||
model('futures')->update([
|
model('futures')->update(
|
||||||
|
[
|
||||||
'status' => 6,
|
'status' => 6,
|
||||||
'created_time' => time(),
|
'created_time' => time(),
|
||||||
'member_id' => $member_id,
|
'member_id' => $member_id,
|
||||||
'order_id' => $order_id,
|
'order_id' => $order_id,
|
||||||
], [['id', '=', $id]]);
|
],
|
||||||
|
[['id', '=', $id]]);
|
||||||
// 增加用户已下单次数
|
// 增加用户已下单次数
|
||||||
Db::name('futures_user')
|
$res=Db::name('futures_user')
|
||||||
->where('member_id',$date['member_id'])
|
->where('member_id',$member_id)
|
||||||
->update([
|
->update([
|
||||||
'business_num' => Db::raw('business_num+1'),
|
'business_num' => Db::raw('business_num +1'),
|
||||||
'total_business_num' => Db::raw('total_business_num+1'),
|
'total_business_num' => Db::raw('total_business_num +1'),
|
||||||
]);
|
]);
|
||||||
(new Message())->addMessage($date['site_id'],'订单创建',1,$member_id,$id);
|
(new Message())->addMessage($date['site_id'],'订单创建',1,$member_id,$id);
|
||||||
Cache::store('redis_concurrent')->set('addon_futures_pay_'.$id,'1');
|
Cache::store('redis_concurrent')->set('addon_futures_pay_'.$id,'1');
|
||||||
|
|
@ -270,9 +285,16 @@ class Futures extends BaseModel{
|
||||||
// 给用户增加余额
|
// 给用户增加余额
|
||||||
$memberAccountModel = new MemberAccount();
|
$memberAccountModel = new MemberAccount();
|
||||||
$memberAccountModel->addMemberAccount($date['site_id'], $date['seller_uid'], 'balance_money', $date['price'], 'sell', $date['id'], '售卖产品', $date['id']);
|
$memberAccountModel->addMemberAccount($date['site_id'], $date['seller_uid'], 'balance_money', $date['price'], 'sell', $date['id'], '售卖产品', $date['id']);
|
||||||
$memberAccountModel->addMemberAccount($date['site_id'], $date['seller_uid'], 'balance_money', -$date['service_price'], 'service_price', $date['id'], '服务费', $date['id']);
|
$futuresModel = new FuturesModel;
|
||||||
|
$basics = $futuresModel->getBasicsConfig($date['site_id'])['data']['value'];
|
||||||
|
if ($basics['give_integral'] > 0) { //首单赠送积分
|
||||||
|
if (model('futures')->getCount(['seller_uid'=>$date['member_id']])==1) {
|
||||||
|
$memberAccountModel->addMemberAccount($date['site_id'], $date['member_id'], 'point', $basics['give_integral'], 'sell', $date['id'], '秒杀首单赠送积分', $date['id']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$point=$date['price']*$basics['order_give_points_ratio']/100;
|
||||||
//赠送积分
|
//赠送积分
|
||||||
$memberAccountModel->addMemberAccount($date['site_id'], $date['member_id'], 'point', $date['price'], 'sell', $date['id'], '秒杀赠送积分', $date['id']);
|
$memberAccountModel->addMemberAccount($date['site_id'], $date['member_id'], 'point', intval($point), 'sell', $date['id'], '秒杀赠送积分', $date['id']);
|
||||||
return $this->success();
|
return $this->success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,14 @@ namespace addon\futures\model\order;
|
||||||
use addon\fenxiao\model\FenxiaoAccount;
|
use addon\fenxiao\model\FenxiaoAccount;
|
||||||
use addon\futures\model\Futures;
|
use addon\futures\model\Futures;
|
||||||
use addon\futures\model\Futures as FuturesModel;
|
use addon\futures\model\Futures as FuturesModel;
|
||||||
|
use addon\member\model\Member;
|
||||||
use app\model\member\MemberAccount;
|
use app\model\member\MemberAccount;
|
||||||
use app\model\order\Config;
|
use app\model\order\Config;
|
||||||
use app\model\order\OrderCreate;
|
use app\model\order\OrderCreate;
|
||||||
use app\model\goods\GoodsStock;
|
use app\model\goods\GoodsStock;
|
||||||
use app\model\store\Store;
|
use app\model\store\Store;
|
||||||
use app\model\express\Express;
|
use app\model\express\Express;
|
||||||
|
use app\model\system\Cron;
|
||||||
use app\model\system\Pay;
|
use app\model\system\Pay;
|
||||||
use app\model\express\Config as ExpressConfig;
|
use app\model\express\Config as ExpressConfig;
|
||||||
use app\model\express\Local;
|
use app\model\express\Local;
|
||||||
|
|
@ -95,6 +97,8 @@ class FuturesOrderCreate extends OrderCreate
|
||||||
$order_type = $this->orderType($shop_goods_list, $calculate_data);
|
$order_type = $this->orderType($shop_goods_list, $calculate_data);
|
||||||
$order_no = $this->createOrderNo($shop_goods_list[ 'site_id' ], $data[ 'member_id' ]);
|
$order_no = $this->createOrderNo($shop_goods_list[ 'site_id' ], $data[ 'member_id' ]);
|
||||||
$member_address = $calculate_data[ 'member_address' ];
|
$member_address = $calculate_data[ 'member_address' ];
|
||||||
|
$member_info= $calculate_data[ 'member_account' ];
|
||||||
|
$times= $calculate_data[ 'times' ]['original'];
|
||||||
$data_order = [
|
$data_order = [
|
||||||
'order_no' => $order_no,
|
'order_no' => $order_no,
|
||||||
'site_id' => $site_id,
|
'site_id' => $site_id,
|
||||||
|
|
@ -119,6 +123,7 @@ class FuturesOrderCreate extends OrderCreate
|
||||||
'longitude' => $member_address[ 'longitude' ] ?? '',
|
'longitude' => $member_address[ 'longitude' ] ?? '',
|
||||||
'latitude' => $member_address[ 'latitude' ] ?? '',
|
'latitude' => $member_address[ 'latitude' ] ?? '',
|
||||||
'buyer_ip' => request()->ip(),
|
'buyer_ip' => request()->ip(),
|
||||||
|
'buyer_nickname' => $member_info['nickname'],
|
||||||
'goods_money' => $shop_goods_list[ 'goods_money' ],
|
'goods_money' => $shop_goods_list[ 'goods_money' ],
|
||||||
'delivery_money' => $shop_goods_list[ 'delivery_money' ],
|
'delivery_money' => $shop_goods_list[ 'delivery_money' ],
|
||||||
'coupon_id' => $shop_goods_list[ 'coupon_id' ] ?? 0,
|
'coupon_id' => $shop_goods_list[ 'coupon_id' ] ?? 0,
|
||||||
|
|
@ -160,7 +165,6 @@ class FuturesOrderCreate extends OrderCreate
|
||||||
$order_id = model('order')->add($data_order);
|
$order_id = model('order')->add($data_order);
|
||||||
$pay_money += $shop_goods_list[ 'pay_money' ];
|
$pay_money += $shop_goods_list[ 'pay_money' ];
|
||||||
//订单项目表
|
//订单项目表
|
||||||
|
|
||||||
foreach ($shop_goods_list[ 'goods_list' ] as $k_order_goods => $order_goods) {
|
foreach ($shop_goods_list[ 'goods_list' ] as $k_order_goods => $order_goods) {
|
||||||
$data_order_goods = array (
|
$data_order_goods = array (
|
||||||
'order_id' => $order_id,
|
'order_id' => $order_id,
|
||||||
|
|
@ -192,18 +196,19 @@ class FuturesOrderCreate extends OrderCreate
|
||||||
$order_goods_id = model('order_goods')->add($data_order_goods);
|
$order_goods_id = model('order_goods')->add($data_order_goods);
|
||||||
$calculate_data[ 'shop_goods_list' ][ 'goods_list' ][ $k_order_goods ][ 'order_goods_id' ] = $order_goods_id;
|
$calculate_data[ 'shop_goods_list' ][ 'goods_list' ][ $k_order_goods ][ 'order_goods_id' ] = $order_goods_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
$futures_model = new Futures;
|
$futures_model = new Futures;
|
||||||
$futures_info = $futures_model->orderCreate($data['futures_id'],$order_id,$data['member_id']);
|
$futures_info = $futures_model->orderCreate($data['futures_id'],$order_id,$data['member_id']);
|
||||||
if ($futures_info[ 'code' ] != 0) {
|
if ($futures_info[ 'code' ] != 0) {
|
||||||
model('order')->rollback();
|
model('order')->rollback();
|
||||||
return $futures_info;
|
return $futures_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 提前秒杀扣除钻石
|
// 提前秒杀扣除钻石
|
||||||
if($calculate_data['times']['is_early']){
|
if($calculate_data['times']['is_early']){
|
||||||
$member_account = new MemberAccount();
|
$member_account = new MemberAccount();
|
||||||
$member_account->addMemberAccount($site_id, $data['member_id'], 'balance', -1, 'diamond', '秒杀抵扣钻石', '会员抢购抵扣钻石',$order_id);
|
$member_account->addMemberAccount($site_id, $data['member_id'], 'diamond', -1, 'diamond', '秒杀抵扣猕猴桃', '会员抢购抵猕猴桃',$order_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
$result_list = event('OrderCreate', [ 'order_id' => $order_id, 'site_id' => $shop_goods_list[ 'site_id' ],'create_data' => $calculate_data ]);
|
$result_list = event('OrderCreate', [ 'order_id' => $order_id, 'site_id' => $shop_goods_list[ 'site_id' ],'create_data' => $calculate_data ]);
|
||||||
if (!empty($result_list)) {
|
if (!empty($result_list)) {
|
||||||
foreach ($result_list as $k => $v) {
|
foreach ($result_list as $k => $v) {
|
||||||
|
|
@ -214,8 +219,15 @@ class FuturesOrderCreate extends OrderCreate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//生成整体支付单据
|
//生成整体支付单据
|
||||||
$pay->addPay($shop_goods_list[ 'site_id' ], $out_trade_no, $this->pay_type, $this->order_name, $this->order_name, $this->pay_money, '', 'OrderPayNotify', '/pages_rush/futures/order?status=stock');//'/pages_rush/order/detail?order_id=' . $order_id
|
// $pay->addPay($shop_goods_list[ 'site_id' ], $out_trade_no, $this->pay_type, $this->order_name, $this->order_name, $this->pay_money, '', 'OrderPayNotify', '/pages_rush/futures/order?status=stock');//'/pages_rush/order/detail?order_id=' . $order_id
|
||||||
$this->addOrderCronClose($order_id, $shop_goods_list[ 'site_id' ]);//增加关闭订单自动事件
|
$execute_time = $times['miaosha_end_time'] ?? '';
|
||||||
|
if ($execute_time) {
|
||||||
|
$cron_model = new Cron();
|
||||||
|
$execute_time +=strtotime(date('Ymd'));
|
||||||
|
$cron_model->addCron(1, 0, "订单自动关闭", "CronOrderClose", $execute_time, $order_id);
|
||||||
|
} else {
|
||||||
|
$this->addOrderCronClose($order_id, $shop_goods_list['site_id']);//增加关闭订单自动事件
|
||||||
|
}
|
||||||
model('order')->commit();
|
model('order')->commit();
|
||||||
return $this->success($out_trade_no);
|
return $this->success($out_trade_no);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
|
@ -236,6 +248,11 @@ class FuturesOrderCreate extends OrderCreate
|
||||||
if ($data[ 'is_balance' ] > 0) {
|
if ($data[ 'is_balance' ] > 0) {
|
||||||
$this->member_balance_money = $data[ 'member_account' ][ 'balance_total' ] ?? 0;
|
$this->member_balance_money = $data[ 'member_account' ][ 'balance_total' ] ?? 0;
|
||||||
}
|
}
|
||||||
|
$member_model = new Member();
|
||||||
|
$result = $member_model->checkPayPassword($data["member_id"], $data["pay_password"]);
|
||||||
|
if ($result["code"] < 0) {
|
||||||
|
return error(-1,'支付密码不正确');
|
||||||
|
}
|
||||||
$member_id = $data['member_id'];
|
$member_id = $data['member_id'];
|
||||||
$futures_id = $data['futures_id'];
|
$futures_id = $data['futures_id'];
|
||||||
$site_id = $data['site_id'];
|
$site_id = $data['site_id'];
|
||||||
|
|
@ -245,23 +262,24 @@ class FuturesOrderCreate extends OrderCreate
|
||||||
['status', 'in', [2,7]],
|
['status', 'in', [2,7]],
|
||||||
['release_time', '<', time()],
|
['release_time', '<', time()],
|
||||||
);
|
);
|
||||||
|
|
||||||
$futures_info = model('futures')->getInfo($condition) ?? [];
|
$futures_info = model('futures')->getInfo($condition) ?? [];
|
||||||
if(empty($futures_info)) return $this->error([], '该秒杀不存在!');
|
if(empty($futures_info)) return $this->error([], '该秒杀不存在!');
|
||||||
|
|
||||||
$futuresModel = new FuturesModel;
|
$futuresModel = new FuturesModel;
|
||||||
$data['times'] = $futuresModel->checkTimes($site_id, $member_id, $futures_info['status']);
|
$data['times'] = $futuresModel->checkTimes($site_id, $member_id, $futures_info['status']);
|
||||||
if($data['times']['code'] != 0){
|
if($data['times']['code'] != 0){
|
||||||
return $data['times'];
|
return $data['times'];
|
||||||
}
|
}
|
||||||
$data['times'] = $data['times']['data'];
|
$data['times'] = $data['times']['data'];
|
||||||
$data['fenxiao_info'] = model('fenxiao')->getInfo([['member_id','=',$data['member_id']]]);
|
// $data['fenxiao_info'] = model('fenxiao')->getInfo([['member_id','=',$data['member_id']]]);
|
||||||
|
|
||||||
$basics = $futuresModel->getBasicsConfig($site_id)['data']['value'];
|
$basics = $futuresModel->getBasicsConfig($site_id)['data']['value'];
|
||||||
$data['futures_user_info'] = model('futures_user')->getInfo([['member_id','=',$data['member_id']]]);
|
$data['futures_user_info'] = model('futures_user')->getInfo([['member_id','=',$data['member_id']]]);
|
||||||
|
|
||||||
|
|
||||||
//检查钻石数量
|
//检查钻石数量
|
||||||
if($data['times']['is_early'] && $data['futures_user_info']['is_special'] == 0){
|
if($data['times']['is_early'] && $data['futures_user_info']['is_special'] == 0){
|
||||||
if($data['fenxiao_info']['diamond'] <= 0){
|
if($data['member_account']['diamond'] <= 0){
|
||||||
return error(-1,'钻石不足,不可提前秒杀');
|
return error(-1,'钻石不足,不可提前秒杀');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -56,12 +56,10 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label"><span class="required">*</span>秒杀时间段设置:</label>
|
<label class="layui-form-label"><span class="required">*</span>秒杀时间段设置:</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="layui-form-item js-new-attr-list">
|
<div class="layui-form-item js-new-attr-list">
|
||||||
<label class="layui-form-label"></label>
|
<label class="layui-form-label"></label>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
|
|
@ -126,6 +124,42 @@
|
||||||
<div class="word-aux ">达到订单数限制后,进行提货恢复限制数</div>
|
<div class="word-aux ">达到订单数限制后,进行提货恢复限制数</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">首单送积分:</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input type="number" name="give_integral" class="layui-input ns-len-mid" value="{$info.give_integral ?? 0}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="word-aux ">用户抢购首单送积分</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">新用户赠送钻石:</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input type="number" name="newuser_points" class="layui-input ns-len-mid" value="{$info.newuser_points??0}" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="word-aux ">新用户赠送积分</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-card-body">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="layui-form-label">下单赠送积分:</label>
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input type="number" name="order_give_points_ratio" class="layui-input ns-len-mid" value="{$info.order_give_points_ratio??0}" />
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid">%</div>
|
||||||
|
</div>
|
||||||
|
<div class="word-aux ">下单赠送积分,得消费额百分比,系统自动取整</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="layui-card-body">
|
<div class="layui-card-body">
|
||||||
<div class="layui-form-item time-type-view-all" >
|
<div class="layui-form-item time-type-view-all" >
|
||||||
<label class="layui-form-label">价格涨幅区间设置:</label>
|
<label class="layui-form-label">价格涨幅区间设置:</label>
|
||||||
|
|
@ -139,6 +173,14 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">%</div>
|
<div class="layui-form-mid layui-word-aux">%</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="layui-form-item time-type-view-all" >
|
||||||
|
<label class="layui-form-label">建议出售价格比例:</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input type="number" class="layui-input" name="proposed_range" value="<?= empty($info['proposed_range']) ? '' :$info['proposed_range'] ?>">
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid layui-word-aux">%</div>
|
||||||
|
</div>
|
||||||
|
<div class="word-aux ">建议出售价格比例</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-card-body">
|
<div class="layui-card-body">
|
||||||
|
|
@ -149,6 +191,15 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux">%</div>
|
<div class="layui-form-mid layui-word-aux">%</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="word-aux ">商家出售商品担保交易费用,包含计算服务费商家佣金</div>
|
||||||
|
<div class="layui-form-item time-type-view-all" >
|
||||||
|
<label class="layui-form-label">技术服务费:</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input type="number" class="layui-input" name="technical_range" placeholder="" value="<?= !isset($info['technical_range']) ? '' :$info['technical_range'] ?>">
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-mid layui-word-aux">%</div>
|
||||||
|
</div>
|
||||||
|
<div class="word-aux ">服务费拆分,用于区分服务费费用名目</div>
|
||||||
<div class="layui-form-item time-type-view-all" >
|
<div class="layui-form-item time-type-view-all" >
|
||||||
<label class="layui-form-label">订单商品数量最大翻倍次数:</label>
|
<label class="layui-form-label">订单商品数量最大翻倍次数:</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
|
|
|
||||||
|
|
@ -285,7 +285,7 @@ class Member extends BaseModel
|
||||||
*/
|
*/
|
||||||
public function getMemberDetail($member_id, $site_id)
|
public function getMemberDetail($member_id, $site_id)
|
||||||
{
|
{
|
||||||
$field = 'member_id,source_member,username,nickname,mobile,email,status,headimg,member_level,member_level_name,member_label,member_label_name,qq,realname,sex,location,birthday,reg_time,point,balance,growth,balance_money,account5,pay_password,member_level_type';
|
$field = 'member_id,source_member,username,nickname,mobile,email,status,headimg,member_level,member_level_name,member_label,member_label_name,qq,realname,sex,location,birthday,reg_time,point,balance,diamond,growth,balance_money,account5,pay_password,member_level_type';
|
||||||
$member_info = model('member')->getInfo([ [ 'member_id', '=', $member_id ], [ 'site_id', '=', $site_id ] ], $field);
|
$member_info = model('member')->getInfo([ [ 'member_id', '=', $member_id ], [ 'site_id', '=', $site_id ] ], $field);
|
||||||
if (!empty($member_info)) {
|
if (!empty($member_info)) {
|
||||||
$member_info[ 'balance_total' ] = $member_info[ 'balance' ] + $member_info[ 'balance_money' ];
|
$member_info[ 'balance_total' ] = $member_info[ 'balance' ] + $member_info[ 'balance_money' ];
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,8 @@ class Memberrecharge extends BaseApi
|
||||||
$field = 'recharge_id,recharge_name,cover_img,face_value,buy_price,point,growth,coupon_id,sale_num';
|
$field = 'recharge_id,recharge_name,cover_img,face_value,buy_price,point,growth,coupon_id,sale_num';
|
||||||
$member_recharge_model = new MemberRechargeModel();
|
$member_recharge_model = new MemberRechargeModel();
|
||||||
$list = $member_recharge_model->getMemberRechargePageList([ [ 'status', '=', 1 ], [ 'site_id', '=', $this->site_id ] ], $page, $page_size, 'create_time desc', $field);
|
$list = $member_recharge_model->getMemberRechargePageList([ [ 'status', '=', 1 ], [ 'site_id', '=', $this->site_id ] ], $page, $page_size, 'create_time desc', $field);
|
||||||
|
|
||||||
|
$list['explain']='充值任意金额后,会存到您的账户余额中';
|
||||||
return $this->response($list);
|
return $this->response($list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -38,7 +38,6 @@ class MemberrechargeOrderCreate extends OrderCreate
|
||||||
$member_info = $member['data'];
|
$member_info = $member['data'];
|
||||||
//获取套餐信息
|
//获取套餐信息
|
||||||
$recharge_model = new Memberrecharge();
|
$recharge_model = new Memberrecharge();
|
||||||
|
|
||||||
if ($data['recharge_id'] > 0) {
|
if ($data['recharge_id'] > 0) {
|
||||||
//套餐字段
|
//套餐字段
|
||||||
$field = 'recharge_id,recharge_name,cover_img,face_value,buy_price,point,growth,coupon_id';
|
$field = 'recharge_id,recharge_name,cover_img,face_value,buy_price,point,growth,coupon_id';
|
||||||
|
|
@ -59,12 +58,10 @@ class MemberrechargeOrderCreate extends OrderCreate
|
||||||
"coupon_id" => 0,
|
"coupon_id" => 0,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//创建或加入
|
//创建或加入
|
||||||
$pay = new Pay();
|
$pay = new Pay();
|
||||||
$out_trade_no = $pay->createOutTradeNo($data['member_id']);
|
$out_trade_no = $pay->createOutTradeNo($data['member_id']);
|
||||||
$order_no = $this->createOrderNo($data['site_id'], $data['member_id']);
|
$order_no = $this->createOrderNo($data['site_id'], $data['member_id']);
|
||||||
|
|
||||||
$order_data = [
|
$order_data = [
|
||||||
'recharge_id' => $data['recharge_id'],
|
'recharge_id' => $data['recharge_id'],
|
||||||
'order_no' => $order_no,
|
'order_no' => $order_no,
|
||||||
|
|
@ -90,15 +87,12 @@ class MemberrechargeOrderCreate extends OrderCreate
|
||||||
'relate_id' => $data['relate_id'] ?? 0,
|
'relate_id' => $data['relate_id'] ?? 0,
|
||||||
'relate_type' => $data['relate_type'] ?? '',
|
'relate_type' => $data['relate_type'] ?? '',
|
||||||
];
|
];
|
||||||
|
|
||||||
model("member_recharge_order")->startTrans();
|
model("member_recharge_order")->startTrans();
|
||||||
//循环生成多个订单
|
//循环生成多个订单
|
||||||
try {
|
try {
|
||||||
|
|
||||||
$order_id = model("member_recharge_order")->add($order_data);
|
$order_id = model("member_recharge_order")->add($order_data);
|
||||||
//生成整体支付单据
|
//生成整体支付单据
|
||||||
$pay->addPay($data['site_id'], $out_trade_no, "", "会员充值套餐,面额:" . $recharge_info['face_value'], "会员充值套餐,面额:" . $recharge_info['face_value'], $recharge_info['buy_price'], '', 'MemberrechargeOrderPayNotify', '');
|
$pay->addPay($data['site_id'], $out_trade_no, "", "会员充值套餐,面额:" . $recharge_info['face_value'], "会员充值套餐,面额:" . $recharge_info['face_value'], $recharge_info['buy_price'], '', 'MemberrechargeOrderPayNotify', '');
|
||||||
|
|
||||||
//计算订单自动关闭时间
|
//计算订单自动关闭时间
|
||||||
$config_model = new Config();
|
$config_model = new Config();
|
||||||
$order_config_result = $config_model->getOrderEventTimeConfig($data['site_id']);
|
$order_config_result = $config_model->getOrderEventTimeConfig($data['site_id']);
|
||||||
|
|
@ -111,16 +105,12 @@ class MemberrechargeOrderCreate extends OrderCreate
|
||||||
}
|
}
|
||||||
$cron_model = new Cron();
|
$cron_model = new Cron();
|
||||||
$cron_model->addCron(1, 0, "订单自动关闭", "MemberrechargeOrderClose", $execute_time, $order_id);
|
$cron_model->addCron(1, 0, "订单自动关闭", "MemberrechargeOrderClose", $execute_time, $order_id);
|
||||||
|
|
||||||
event("MemberRechargeOrderCreate", ['order_id' => $order_id]);
|
event("MemberRechargeOrderCreate", ['order_id' => $order_id]);
|
||||||
model("member_recharge_order")->commit();
|
model("member_recharge_order")->commit();
|
||||||
return $this->success($out_trade_no);
|
return $this->success($out_trade_no);
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
model("member_recharge_order")->rollback();
|
model("member_recharge_order")->rollback();
|
||||||
return $this->error('', $e->getMessage());
|
return $this->error('', $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -31,13 +31,10 @@ class Memberrecharge extends BaseShop
|
||||||
}
|
}
|
||||||
//套餐字段
|
//套餐字段
|
||||||
protected $field = 'recharge_id,recharge_name,cover_img,face_value,buy_price,point,growth,coupon_id,sale_num,create_time,status';
|
protected $field = 'recharge_id,recharge_name,cover_img,face_value,buy_price,point,growth,coupon_id,sale_num,create_time,status';
|
||||||
|
|
||||||
//开卡字段
|
//开卡字段
|
||||||
protected $card_field = 'card_id,recharge_id,card_account,cover_img,face_value,point,growth,coupon_id,buy_price,member_img,nickname,order_id,order_no,from_type,use_status,create_time,use_time';
|
protected $card_field = 'card_id,recharge_id,card_account,cover_img,face_value,point,growth,coupon_id,buy_price,member_img,nickname,order_id,order_no,from_type,use_status,create_time,use_time';
|
||||||
|
|
||||||
//订单字段
|
//订单字段
|
||||||
protected $order_field = 'order_id,recharge_name,recharge_id,order_no,out_trade_no,member_id,cover_img,face_value,buy_price,point,growth,coupon_id,price,pay_type,pay_type_name,status,create_time,pay_time,member_img,nickname,order_from_name,order_from';
|
protected $order_field = 'order_id,recharge_name,recharge_id,order_no,out_trade_no,member_id,cover_img,face_value,buy_price,point,growth,coupon_id,price,pay_type,pay_type_name,status,create_time,pay_time,member_img,nickname,order_from_name,order_from';
|
||||||
|
|
||||||
//优惠券字段
|
//优惠券字段
|
||||||
protected $coupon_field = 'coupon_type_id,coupon_name,money,count,lead_count,max_fetch,at_least,end_time,image,validity_type,fixed_term';
|
protected $coupon_field = 'coupon_type_id,coupon_name,money,count,lead_count,max_fetch,at_least,end_time,image,validity_type,fixed_term';
|
||||||
|
|
||||||
|
|
@ -81,7 +78,6 @@ class Memberrecharge extends BaseShop
|
||||||
public function add()
|
public function add()
|
||||||
{
|
{
|
||||||
if (request()->isAjax()) {
|
if (request()->isAjax()) {
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'site_id' => $this->site_id,
|
'site_id' => $this->site_id,
|
||||||
'recharge_name' => input('recharge_name', ''),//套餐名称
|
'recharge_name' => input('recharge_name', ''),//套餐名称
|
||||||
|
|
@ -92,10 +88,8 @@ class Memberrecharge extends BaseShop
|
||||||
'growth' => input('growth', ''),//赠送成长值
|
'growth' => input('growth', ''),//赠送成长值
|
||||||
'coupon_id' => input('coupon_id', '')//优惠券id
|
'coupon_id' => input('coupon_id', '')//优惠券id
|
||||||
];
|
];
|
||||||
|
|
||||||
$model = new MemberRechargeModel();
|
$model = new MemberRechargeModel();
|
||||||
return $model->addMemberRecharge($data);
|
return $model->addMemberRecharge($data);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return $this->fetch('memberrecharge/add');
|
return $this->fetch('memberrecharge/add');
|
||||||
}
|
}
|
||||||
|
|
@ -108,10 +102,8 @@ class Memberrecharge extends BaseShop
|
||||||
public function edit()
|
public function edit()
|
||||||
{
|
{
|
||||||
$rechargeModel = new MemberRechargeModel();
|
$rechargeModel = new MemberRechargeModel();
|
||||||
|
|
||||||
$recharge_id = input('recharge_id', '');
|
$recharge_id = input('recharge_id', '');
|
||||||
if (request()->isAjax()) {
|
if (request()->isAjax()) {
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'recharge_name' => input('recharge_name', ''),//套餐名称
|
'recharge_name' => input('recharge_name', ''),//套餐名称
|
||||||
'cover_img' => input('cover_img', ''),//封面
|
'cover_img' => input('cover_img', ''),//封面
|
||||||
|
|
@ -121,7 +113,6 @@ class Memberrecharge extends BaseShop
|
||||||
'growth' => input('growth', ''),//赠送成长值
|
'growth' => input('growth', ''),//赠送成长值
|
||||||
'coupon_id' => input('coupon_id', '')//优惠券id
|
'coupon_id' => input('coupon_id', '')//优惠券id
|
||||||
];
|
];
|
||||||
|
|
||||||
return $rechargeModel->editMemberRecharge(
|
return $rechargeModel->editMemberRecharge(
|
||||||
[
|
[
|
||||||
[ 'recharge_id', '=', $recharge_id ],
|
[ 'recharge_id', '=', $recharge_id ],
|
||||||
|
|
@ -129,7 +120,6 @@ class Memberrecharge extends BaseShop
|
||||||
]
|
]
|
||||||
, $data
|
, $data
|
||||||
);
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//获取套餐详情
|
//获取套餐详情
|
||||||
$recharge = $rechargeModel->getMemberRechargeInfo(
|
$recharge = $rechargeModel->getMemberRechargeInfo(
|
||||||
|
|
@ -143,7 +133,6 @@ class Memberrecharge extends BaseShop
|
||||||
$this->assign('recharge', $recharge);
|
$this->assign('recharge', $recharge);
|
||||||
return $this->fetch('memberrecharge/edit');
|
return $this->fetch('memberrecharge/edit');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -153,9 +142,7 @@ class Memberrecharge extends BaseShop
|
||||||
public function detail()
|
public function detail()
|
||||||
{
|
{
|
||||||
$recharge_model = new MemberRechargeModel();
|
$recharge_model = new MemberRechargeModel();
|
||||||
|
|
||||||
$recharge_id = input('recharge_id', '');
|
$recharge_id = input('recharge_id', '');
|
||||||
|
|
||||||
//获取套餐详情
|
//获取套餐详情
|
||||||
$info = $recharge_model->getMemberRechargeInfo(
|
$info = $recharge_model->getMemberRechargeInfo(
|
||||||
[
|
[
|
||||||
|
|
@ -166,7 +153,6 @@ class Memberrecharge extends BaseShop
|
||||||
)[ 'data' ] ?? [];
|
)[ 'data' ] ?? [];
|
||||||
if (empty($info)) $this->error('未获取到套餐数据', addon_url('memberrecharge://shop/memberrecharge/lists'));
|
if (empty($info)) $this->error('未获取到套餐数据', addon_url('memberrecharge://shop/memberrecharge/lists'));
|
||||||
$this->assign('info', $info);
|
$this->assign('info', $info);
|
||||||
|
|
||||||
return $this->fetch('memberrecharge/detail');
|
return $this->fetch('memberrecharge/detail');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -177,12 +163,9 @@ class Memberrecharge extends BaseShop
|
||||||
public function invalid()
|
public function invalid()
|
||||||
{
|
{
|
||||||
$model = new MemberRechargeModel();
|
$model = new MemberRechargeModel();
|
||||||
|
|
||||||
$recharge_id = input('recharge_id', '');
|
$recharge_id = input('recharge_id', '');
|
||||||
|
|
||||||
$data = [ 'status' => 2 ];
|
$data = [ 'status' => 2 ];
|
||||||
$condition = [ [ 'recharge_id', '=', $recharge_id ] ];
|
$condition = [ [ 'recharge_id', '=', $recharge_id ] ];
|
||||||
|
|
||||||
$res = $model->editMemberRecharge($condition, $data);
|
$res = $model->editMemberRecharge($condition, $data);
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
@ -194,12 +177,9 @@ class Memberrecharge extends BaseShop
|
||||||
public function open()
|
public function open()
|
||||||
{
|
{
|
||||||
$model = new MemberRechargeModel();
|
$model = new MemberRechargeModel();
|
||||||
|
|
||||||
$recharge_id = input('recharge_id', '');
|
$recharge_id = input('recharge_id', '');
|
||||||
|
|
||||||
$data = [ 'status' => 1 ];
|
$data = [ 'status' => 1 ];
|
||||||
$condition = [ [ 'recharge_id', '=', $recharge_id ] ];
|
$condition = [ [ 'recharge_id', '=', $recharge_id ] ];
|
||||||
|
|
||||||
$res = $model->editMemberRecharge($condition, $data);
|
$res = $model->editMemberRecharge($condition, $data);
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
|
|
@ -211,9 +191,7 @@ class Memberrecharge extends BaseShop
|
||||||
public function delete()
|
public function delete()
|
||||||
{
|
{
|
||||||
$model = new MemberRechargeModel();
|
$model = new MemberRechargeModel();
|
||||||
|
|
||||||
$recharge_id = input('recharge_id', '');
|
$recharge_id = input('recharge_id', '');
|
||||||
|
|
||||||
return $model->deleteMemberRecharge([ [ 'recharge_id', '=', $recharge_id ] ]);
|
return $model->deleteMemberRecharge([ [ 'recharge_id', '=', $recharge_id ] ]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -225,7 +203,6 @@ class Memberrecharge extends BaseShop
|
||||||
{
|
{
|
||||||
$recharge_id = input('recharge_id', '');
|
$recharge_id = input('recharge_id', '');
|
||||||
$page_size = input('page_size', PAGE_LIST_ROWS);
|
$page_size = input('page_size', PAGE_LIST_ROWS);
|
||||||
|
|
||||||
$model = new MemberRechargeCardModel();
|
$model = new MemberRechargeCardModel();
|
||||||
$condition[] = [ 'site_id', '=', $this->site_id ];
|
$condition[] = [ 'site_id', '=', $this->site_id ];
|
||||||
$condition[] = [ 'recharge_id', '=', $recharge_id ];
|
$condition[] = [ 'recharge_id', '=', $recharge_id ];
|
||||||
|
|
@ -235,21 +212,16 @@ class Memberrecharge extends BaseShop
|
||||||
if ($status) {
|
if ($status) {
|
||||||
$condition[] = [ 'use_status', '=', $status ];
|
$condition[] = [ 'use_status', '=', $status ];
|
||||||
}
|
}
|
||||||
|
|
||||||
$page = input('page', 1);
|
$page = input('page', 1);
|
||||||
$list = $model->getMemberRechargeCardPageList($condition, $page, $page_size, 'card_id desc', $this->card_field);
|
$list = $model->getMemberRechargeCardPageList($condition, $page, $page_size, 'card_id desc', $this->card_field);
|
||||||
return $list;
|
return $list;
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$page_size = input('page_size', PAGE_LIST_ROWS);
|
$page_size = input('page_size', PAGE_LIST_ROWS);
|
||||||
|
|
||||||
$list = $model->getMemberRechargeCardPageList($condition, 1, $page_size, 'card_id desc', $this->card_field);
|
$list = $model->getMemberRechargeCardPageList($condition, 1, $page_size, 'card_id desc', $this->card_field);
|
||||||
$this->assign('list', $list);
|
$this->assign('list', $list);
|
||||||
|
|
||||||
$this->assign('recharge_id', $recharge_id);
|
$this->assign('recharge_id', $recharge_id);
|
||||||
return $this->fetch('memberrecharge/card_lists');
|
return $this->fetch('memberrecharge/card_lists');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -259,16 +231,13 @@ class Memberrecharge extends BaseShop
|
||||||
public function cardDetail()
|
public function cardDetail()
|
||||||
{
|
{
|
||||||
$model = new MemberRechargeCardModel();
|
$model = new MemberRechargeCardModel();
|
||||||
|
|
||||||
$card_id = input('card_id', '');
|
$card_id = input('card_id', '');
|
||||||
|
|
||||||
//获取详情
|
//获取详情
|
||||||
$info = $model->getMemberRechargeCardInfo(
|
$info = $model->getMemberRechargeCardInfo(
|
||||||
[ [ 'card_id', '=', $card_id ] ],
|
[ [ 'card_id', '=', $card_id ] ],
|
||||||
$this->card_field
|
$this->card_field
|
||||||
)[ 'data' ] ?? [];
|
)[ 'data' ] ?? [];
|
||||||
$this->assign('info', $info);
|
$this->assign('info', $info);
|
||||||
|
|
||||||
return $this->fetch('memberrecharge/card_detail');
|
return $this->fetch('memberrecharge/card_detail');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ class Memberbankaccount extends BaseApi
|
||||||
$withdraw_type = isset($this->params[ 'withdraw_type' ]) ? $this->params[ 'withdraw_type' ] : '';// '账户类型 alipay 支付宝 bank 银行卡
|
$withdraw_type = isset($this->params[ 'withdraw_type' ]) ? $this->params[ 'withdraw_type' ] : '';// '账户类型 alipay 支付宝 bank 银行卡
|
||||||
$branch_bank_name = isset($this->params[ 'branch_bank_name' ]) ? $this->params[ 'branch_bank_name' ] : '';// 银行支行信息
|
$branch_bank_name = isset($this->params[ 'branch_bank_name' ]) ? $this->params[ 'branch_bank_name' ] : '';// 银行支行信息
|
||||||
$bank_account = isset($this->params[ 'bank_account' ]) ? $this->params[ 'bank_account' ] : '';// 银行账号
|
$bank_account = isset($this->params[ 'bank_account' ]) ? $this->params[ 'bank_account' ] : '';// 银行账号
|
||||||
|
$bank_address = isset($this->params[ 'bank_address' ]) ? $this->params[ 'bank_address' ] : '';// 银行地址
|
||||||
if (empty($realname)) {
|
if (empty($realname)) {
|
||||||
return $this->response($this->error('', 'REQUEST_REAL_NAME'));
|
return $this->response($this->error('', 'REQUEST_REAL_NAME'));
|
||||||
}
|
}
|
||||||
|
|
@ -62,6 +63,7 @@ class Memberbankaccount extends BaseApi
|
||||||
'withdraw_type' => $withdraw_type,
|
'withdraw_type' => $withdraw_type,
|
||||||
'branch_bank_name' => $branch_bank_name,
|
'branch_bank_name' => $branch_bank_name,
|
||||||
'bank_account' => $bank_account,
|
'bank_account' => $bank_account,
|
||||||
|
'bank_address' => $bank_address,
|
||||||
'is_default' => 1
|
'is_default' => 1
|
||||||
];
|
];
|
||||||
$res = $member_bank_account_model->addMemberBankAccount($data);
|
$res = $member_bank_account_model->addMemberBankAccount($data);
|
||||||
|
|
@ -76,13 +78,13 @@ class Memberbankaccount extends BaseApi
|
||||||
{
|
{
|
||||||
$token = $this->checkToken();
|
$token = $this->checkToken();
|
||||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||||
|
|
||||||
$id = isset($this->params[ 'id' ]) ? $this->params[ 'id' ] : 0;
|
$id = isset($this->params[ 'id' ]) ? $this->params[ 'id' ] : 0;
|
||||||
$realname = isset($this->params[ 'realname' ]) ? $this->params[ 'realname' ] : '';
|
$realname = isset($this->params[ 'realname' ]) ? $this->params[ 'realname' ] : '';
|
||||||
$mobile = isset($this->params[ 'mobile' ]) ? $this->params[ 'mobile' ] : '';
|
$mobile = isset($this->params[ 'mobile' ]) ? $this->params[ 'mobile' ] : '';
|
||||||
$withdraw_type = isset($this->params[ 'withdraw_type' ]) ? $this->params[ 'withdraw_type' ] : '';// '账户类型 alipay 支付宝 bank 银行卡
|
$withdraw_type = isset($this->params[ 'withdraw_type' ]) ? $this->params[ 'withdraw_type' ] : '';// '账户类型 alipay 支付宝 bank 银行卡
|
||||||
$branch_bank_name = isset($this->params[ 'branch_bank_name' ]) ? $this->params[ 'branch_bank_name' ] : '';// 银行支行信息
|
$branch_bank_name = isset($this->params[ 'branch_bank_name' ]) ? $this->params[ 'branch_bank_name' ] : '';// 银行支行信息
|
||||||
$bank_account = isset($this->params[ 'bank_account' ]) ? $this->params[ 'bank_account' ] : '';// 银行账号
|
$bank_account = isset($this->params[ 'bank_account' ]) ? $this->params[ 'bank_account' ] : '';// 银行账号
|
||||||
|
$bank_address = isset($this->params[ 'bank_address' ]) ? $this->params[ 'bank_address' ] : '';// 银行地址
|
||||||
if (empty($id)) {
|
if (empty($id)) {
|
||||||
return $this->response($this->error('', 'REQUEST_ID'));
|
return $this->response($this->error('', 'REQUEST_ID'));
|
||||||
}
|
}
|
||||||
|
|
@ -113,6 +115,7 @@ class Memberbankaccount extends BaseApi
|
||||||
'withdraw_type' => $withdraw_type,
|
'withdraw_type' => $withdraw_type,
|
||||||
'branch_bank_name' => $branch_bank_name,
|
'branch_bank_name' => $branch_bank_name,
|
||||||
'bank_account' => $bank_account,
|
'bank_account' => $bank_account,
|
||||||
|
'bank_address' => $bank_address,
|
||||||
'is_default' => 1
|
'is_default' => 1
|
||||||
];
|
];
|
||||||
$res = $member_bank_account_model->editMemberBankAccount($data);
|
$res = $member_bank_account_model->editMemberBankAccount($data);
|
||||||
|
|
@ -166,7 +169,7 @@ class Memberbankaccount extends BaseApi
|
||||||
return $this->response($this->error('', 'REQUEST_ID'));
|
return $this->response($this->error('', 'REQUEST_ID'));
|
||||||
}
|
}
|
||||||
$member_bank_account_model = new MemberBankAccountModel();
|
$member_bank_account_model = new MemberBankAccountModel();
|
||||||
$info = $member_bank_account_model->getMemberBankAccountInfo([ [ 'member_id', '=', $this->member_id ], [ 'id', '=', $id ] ], 'id,member_id,realname,mobile,withdraw_type,branch_bank_name,bank_account,is_default');
|
$info = $member_bank_account_model->getMemberBankAccountInfo([ [ 'member_id', '=', $this->member_id ], [ 'id', '=', $id ] ], 'id,member_id,realname,mobile,withdraw_type,branch_bank_name,bank_account,is_default,bank_address');
|
||||||
if (!empty($info[ 'data' ])) {
|
if (!empty($info[ 'data' ])) {
|
||||||
$info[ 'data' ][ 'withdraw_type_name' ] = $member_bank_account_model->getWithdrawType()[ $info[ 'data' ][ 'withdraw_type' ] ];
|
$info[ 'data' ][ 'withdraw_type_name' ] = $member_bank_account_model->getWithdrawType()[ $info[ 'data' ][ 'withdraw_type' ] ];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,7 @@ class Memberwithdraw extends BaseApi
|
||||||
"account_number" => $account_number,
|
"account_number" => $account_number,
|
||||||
"apply_money" => $apply_money,
|
"apply_money" => $apply_money,
|
||||||
"mobile" => $mobile,
|
"mobile" => $mobile,
|
||||||
|
"identity" => $mobile,
|
||||||
"app_type" => $app_type
|
"app_type" => $app_type
|
||||||
);
|
);
|
||||||
$result = $withdraw_model->apply($data, $member_info[ 'data' ][ 'site_id' ], 'shop');
|
$result = $withdraw_model->apply($data, $member_info[ 'data' ][ 'site_id' ], 'shop');
|
||||||
|
|
|
||||||
|
|
@ -132,8 +132,8 @@ class MemberAccount extends BaseModel
|
||||||
|
|
||||||
|
|
||||||
$from_type[ 'balance' ][ 'transfer' ] = [ 'type_name' => '转账', 'type_url' => '' ];
|
$from_type[ 'balance' ][ 'transfer' ] = [ 'type_name' => '转账', 'type_url' => '' ];
|
||||||
$from_type[ 'diamond' ]['diamond'] = [ 'type_name' => '赠送钻石', 'type_url' => '' ];
|
$from_type[ 'diamond' ]['diamond'] = [ 'type_name' => '赠送猕猴桃', 'type_url' => '' ];
|
||||||
$from_type[ 'balance' ]['diamond'] = [ 'type_name' => '赠送钻石', 'type_url' => '' ];
|
$from_type[ 'balance' ]['diamond'] = [ 'type_name' => '赠送猕猴桃', 'type_url' => '' ];
|
||||||
$this->from_type = $from_type;
|
$this->from_type = $from_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,9 +92,7 @@ class MemberBankAccount extends BaseModel
|
||||||
$config_model = new Withdraw();
|
$config_model = new Withdraw();
|
||||||
$config_result = $config_model->getConfig(1, 'shop');
|
$config_result = $config_model->getConfig(1, 'shop');
|
||||||
$config = $config_result['data']['value'];
|
$config = $config_result['data']['value'];
|
||||||
|
|
||||||
if (!empty($config)) {
|
if (!empty($config)) {
|
||||||
|
|
||||||
//提现方式为微信的时候 判断用户是否已关注公众号
|
//提现方式为微信的时候 判断用户是否已关注公众号
|
||||||
if ($data['withdraw_type'] == 'wechatpay') {
|
if ($data['withdraw_type'] == 'wechatpay') {
|
||||||
//获取会员信息
|
//获取会员信息
|
||||||
|
|
@ -103,26 +101,20 @@ class MemberBankAccount extends BaseModel
|
||||||
return $this->error('', '请先绑定微信');
|
return $this->error('', '请先绑定微信');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
model('member_bank_account')->startTrans();
|
model('member_bank_account')->startTrans();
|
||||||
try {
|
try {
|
||||||
|
|
||||||
if ($data['is_default'] == 1) {
|
if ($data['is_default'] == 1) {
|
||||||
model('member_bank_account')->update(['is_default' => 0], ['member_id' => $data['member_id']]);
|
model('member_bank_account')->update(['is_default' => 0], ['member_id' => $data['member_id']]);
|
||||||
}
|
}
|
||||||
$data['modify_time'] = time();
|
$data['modify_time'] = time();
|
||||||
$res = model('member_bank_account')->update($data, ['id' => $data['id']]);
|
$res = model('member_bank_account')->update($data, ['id' => $data['id']]);
|
||||||
Cache::tag("member_bank_account_" . $data['member_id'])->clear();
|
Cache::tag("member_bank_account_" . $data['member_id'])->clear();
|
||||||
|
|
||||||
model('member_bank_account')->commit();
|
model('member_bank_account')->commit();
|
||||||
return $this->success($res);
|
return $this->success($res);
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
|
||||||
model('member_bank_account')->rollback();
|
model('member_bank_account')->rollback();
|
||||||
return $this->error('', $e->getMessage());
|
return $this->error('', $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return $this->error('', '平台未开启会员提现');
|
return $this->error('', '平台未开启会员提现');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ class Withdraw extends BaseModel
|
||||||
return $this->error([], "提现金额为{$config["money_multiple"]}倍数");
|
return $this->error([], "提现金额为{$config["money_multiple"]}倍数");
|
||||||
}
|
}
|
||||||
$member_id = $data["member_id"];
|
$member_id = $data["member_id"];
|
||||||
$identity = $data["identity"];
|
$identity = $data["identity"]??'';
|
||||||
$member_model = new Member();
|
$member_model = new Member();
|
||||||
$member_info_result = $member_model->getMemberInfo([["member_id", "=", $member_id]], "balance_money,headimg,wx_openid,username,mobile,weapp_openid,nickname");
|
$member_info_result = $member_model->getMemberInfo([["member_id", "=", $member_id]], "balance_money,headimg,wx_openid,username,mobile,weapp_openid,nickname");
|
||||||
$member_info = $member_info_result["data"];
|
$member_info = $member_info_result["data"];
|
||||||
|
|
@ -169,7 +169,7 @@ class Withdraw extends BaseModel
|
||||||
"realname" => $data["realname"],
|
"realname" => $data["realname"],
|
||||||
"bank_name" => $bank_name,
|
"bank_name" => $bank_name,
|
||||||
"account_number" => $account_number,
|
"account_number" => $account_number,
|
||||||
"identity" => $identity,
|
// "identity" => $identity,
|
||||||
"mobile" => $data["mobile"],
|
"mobile" => $data["mobile"],
|
||||||
"applet_type" => $applet_type
|
"applet_type" => $applet_type
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,11 @@ class Test extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
public function s(){
|
public function s(){
|
||||||
$paydata='{"item_code":"AM010201000000117823","charset":"UTF-8","notify_time":"2023-02-02 10:41:48","commodity_order_id":"202302020000000008847076","quantity":"1","total_price":"0.00","method":"alipay.open.servicemarket.order.notify","sign":"PrqlBU8y1sIIS962JrLmAuggPH89kSTy1cPLur9z0ynHI0YurAVVahaxxt9iWErUMOQGNKehyilyMtCeZdRh84hSdHKktSTHpDvy423sX9xVLYvPBii05joMBJUZ3PM4y7BbizyPamie3yPqdomDuGQ539AYTA\/9YtmwUoh62zjloIoq4UefDOihwuESGFmB5B3HYbw6HpSiVbe8lHEGNSKOGBTCi2OowaSk1sGaT9\/5dQgBCARDGb+amg4pKGMkw105ERlD2EEW9qoGQNwQVP7o9R5UP+7KqgOhg+X95kW5qcIjltjF6rRPa2cH\/j1WQ1RSeTfTuuRBOMLAOr3xuw==","order_time":"2023-02-02 10:38:00","title":"客单豹","specifications":"客单豹","version":"1.0","notify_id":"2023020200222103800094771410174673","merchant_pid":"2088402283167085","package_count":"0","notify_type":"servicemarket_order_notify","period_day":"-1","phone":"18980669271","name":"*敏","order_item_num":"1","contactor":"柏鸿凯","app_id":"2021003167617037","sign_type":"RSA2","timestamp":"2023-02-02 10:41:48"}';
|
|
||||||
$res= event('AliAuthNotify',json_decode($paydata,true));
|
var_dump(329*1/100);
|
||||||
var_dump($res);
|
// $paydata='{"item_code":"AM010201000000117823","charset":"UTF-8","notify_time":"2023-02-02 10:41:48","commodity_order_id":"202302020000000008847076","quantity":"1","total_price":"0.00","method":"alipay.open.servicemarket.order.notify","sign":"PrqlBU8y1sIIS962JrLmAuggPH89kSTy1cPLur9z0ynHI0YurAVVahaxxt9iWErUMOQGNKehyilyMtCeZdRh84hSdHKktSTHpDvy423sX9xVLYvPBii05joMBJUZ3PM4y7BbizyPamie3yPqdomDuGQ539AYTA\/9YtmwUoh62zjloIoq4UefDOihwuESGFmB5B3HYbw6HpSiVbe8lHEGNSKOGBTCi2OowaSk1sGaT9\/5dQgBCARDGb+amg4pKGMkw105ERlD2EEW9qoGQNwQVP7o9R5UP+7KqgOhg+X95kW5qcIjltjF6rRPa2cH\/j1WQ1RSeTfTuuRBOMLAOr3xuw==","order_time":"2023-02-02 10:38:00","title":"客单豹","specifications":"客单豹","version":"1.0","notify_id":"2023020200222103800094771410174673","merchant_pid":"2088402283167085","package_count":"0","notify_type":"servicemarket_order_notify","period_day":"-1","phone":"18980669271","name":"*敏","order_item_num":"1","contactor":"柏鸿凯","app_id":"2021003167617037","sign_type":"RSA2","timestamp":"2023-02-02 10:41:48"}';
|
||||||
|
// $res= event('AliAuthNotify',json_decode($paydata,true));
|
||||||
|
// var_dump($res);
|
||||||
}
|
}
|
||||||
|
|
||||||
// public function e(){
|
// public function e(){
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,7 @@
|
||||||
{block name="resources"}
|
{block name="resources"}
|
||||||
<link rel="stylesheet" href="SHOP_CSS/index.css">
|
<link rel="stylesheet" href="SHOP_CSS/index.css">
|
||||||
{/block}
|
{/block}
|
||||||
|
|
||||||
{block name="main"}
|
{block name="main"}
|
||||||
|
|
||||||
|
|
||||||
{if !$guide_close}
|
{if !$guide_close}
|
||||||
<div class="common-wrap guide">
|
<div class="common-wrap guide">
|
||||||
<div class="head">
|
<div class="head">
|
||||||
|
|
@ -117,7 +114,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div class="common-wrap">
|
<div class="common-wrap">
|
||||||
<div class="head">
|
<div class="head">
|
||||||
<div class="title">实时概况</div>
|
<div class="title">实时概况</div>
|
||||||
|
|
@ -164,7 +160,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="common-wrap">
|
<div class="common-wrap">
|
||||||
<div class="head">
|
<div class="head">
|
||||||
<div class="title">待办事项</div>
|
<div class="title">待办事项</div>
|
||||||
|
|
@ -220,7 +215,6 @@
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="echart-wrap">
|
<div class="echart-wrap">
|
||||||
<div class="common-wrap">
|
<div class="common-wrap">
|
||||||
<div class="head">
|
<div class="head">
|
||||||
|
|
@ -239,7 +233,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="common-wrap">
|
<div class="common-wrap">
|
||||||
<div class="head">
|
<div class="head">
|
||||||
<div class="title">常用功能</div>
|
<div class="title">常用功能</div>
|
||||||
|
|
@ -281,7 +274,6 @@
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="promotion-wrap">
|
<div class="promotion-wrap">
|
||||||
<div class="common-wrap">
|
<div class="common-wrap">
|
||||||
<div class="head">
|
<div class="head">
|
||||||
|
|
@ -336,16 +328,12 @@
|
||||||
{block name="script"}
|
{block name="script"}
|
||||||
<script src="SHOP_JS/echarts.min.js"></script>
|
<script src="SHOP_JS/echarts.min.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
// 今日昨日统计
|
// 今日昨日统计
|
||||||
getDayCount();
|
getDayCount();
|
||||||
|
|
||||||
// 综合统计
|
// 综合统计
|
||||||
getSumCount();
|
getSumCount();
|
||||||
|
|
||||||
// 图形统计
|
// 图形统计
|
||||||
getChartCount();
|
getChartCount();
|
||||||
|
|
||||||
function getDay(day){
|
function getDay(day){
|
||||||
var today = new Date();
|
var today = new Date();
|
||||||
var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
|
var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
|
@ -0,0 +1,288 @@
|
||||||
|
.mask {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background: rgba(0, 0, 0, 0.4);
|
||||||
|
}
|
||||||
|
.box {
|
||||||
|
width: 100vw;
|
||||||
|
height: 50vh;
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: auto;
|
||||||
|
z-index: 101;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
.center {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.bottom {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 30rpx 30rpx 0 0;
|
||||||
|
.tle {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 30rpx 3%;
|
||||||
|
.tle_lft {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
image {
|
||||||
|
width:60rpx;
|
||||||
|
height:60rpx;
|
||||||
|
}
|
||||||
|
.tle_1 {
|
||||||
|
font-size: 30rpx;
|
||||||
|
color: #444;
|
||||||
|
font-weight: bold;
|
||||||
|
letter-spacing: 3rpx;
|
||||||
|
padding-left: 8rpx;
|
||||||
|
}
|
||||||
|
.tle_2 {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #999;
|
||||||
|
letter-spacing: 3rpx;
|
||||||
|
padding-left: 10rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tle_rgt {
|
||||||
|
padding: 0 20rpx;
|
||||||
|
image {
|
||||||
|
width: 40rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.pwd_info {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: red;
|
||||||
|
margin: 10px;
|
||||||
|
height: 100rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
}
|
||||||
|
.bg {
|
||||||
|
opacity: 0.5;
|
||||||
|
position: absolute;
|
||||||
|
top: 85rpx;
|
||||||
|
// left: 0;
|
||||||
|
right: 0;
|
||||||
|
image {
|
||||||
|
width: 250rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.pwd_box {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
background: #fff;
|
||||||
|
padding: 20rpx 0 0 0;
|
||||||
|
|
||||||
|
.pwd-text {
|
||||||
|
position: relative;
|
||||||
|
line-height: 60rpx;
|
||||||
|
vertical-align: middle;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 46rpx;
|
||||||
|
color: #0fb361;
|
||||||
|
font-weight: bold;
|
||||||
|
width: 60rpx;
|
||||||
|
height: 70rpx;
|
||||||
|
margin-right: 20rpx;
|
||||||
|
display: inline-block;
|
||||||
|
border-bottom: solid 1px #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pwd-text.active:after {
|
||||||
|
-webkit-animation: twinkle 1s infinite;
|
||||||
|
animation: twinkle 1s infinite;
|
||||||
|
height: 40rpx;
|
||||||
|
width: 5rpx;
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
background-color: #007aff;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes twinkle {
|
||||||
|
from {
|
||||||
|
background-color: #007aff;
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.solt {
|
||||||
|
width: 96vw;
|
||||||
|
background: #f5f5f5;
|
||||||
|
padding: 10rpx 2vw;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border-top: 1px solid #ccc;
|
||||||
|
|
||||||
|
// border-radius: 30rpx 30rpx 0 0;
|
||||||
|
.s_lft {
|
||||||
|
width: 78vw;
|
||||||
|
padding-right: 10rpx;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
.s_li {
|
||||||
|
width: 31%;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
background: #fff;
|
||||||
|
height: 90rpx;
|
||||||
|
line-height: 90rpx;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 40rpx;
|
||||||
|
color: #444;
|
||||||
|
font-weight: bold;
|
||||||
|
border: 1px solid #fff;
|
||||||
|
margin: 10px 5px 5px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.s_o {
|
||||||
|
width: 65%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-hover {
|
||||||
|
background: #eee !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.s_sq {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 30rpx;
|
||||||
|
height: 30rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.s_rgt {
|
||||||
|
width: 20vw;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
.s_li {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
background: #fff;
|
||||||
|
|
||||||
|
border-radius: 10rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #000;
|
||||||
|
font-weight: bold;
|
||||||
|
border: 1px solid #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.s_s {
|
||||||
|
height: 200rpx;
|
||||||
|
line-height: 200rpx;
|
||||||
|
color: #fff;
|
||||||
|
margin: 0 0 -5px;
|
||||||
|
background: #0fb361;
|
||||||
|
}
|
||||||
|
|
||||||
|
.s_x {
|
||||||
|
height: 200rpx;
|
||||||
|
line-height: 200rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 0 0 5px;
|
||||||
|
image {
|
||||||
|
width: 50rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.s_cx {
|
||||||
|
.button-hover {
|
||||||
|
background: #eee !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.s_qd {
|
||||||
|
.button-hover {
|
||||||
|
background: #2aa515 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 弹入-从下 */
|
||||||
|
.a-bounceinB {
|
||||||
|
-webkit-animation: 0.3s ease-out backwards;
|
||||||
|
-moz-animation: 0.3s ease-out backwards;
|
||||||
|
-ms-animation: 0.3s ease-out backwards;
|
||||||
|
-moz-transform: translate3d(0, 0, 0);
|
||||||
|
-ms-transform: translate3d(0, 0, 0);
|
||||||
|
-o-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
-webkit-animation-name: bounceinB;
|
||||||
|
-moz-animation-name: bounceinB;
|
||||||
|
-ms-animation-name: bounceinB;
|
||||||
|
animation-name: bounceinB;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹入-从下 */
|
||||||
|
@keyframes bounceinB {
|
||||||
|
0% {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹出-向下 */
|
||||||
|
.a-bounceoutB {
|
||||||
|
-webkit-animation: 0.3s ease-in forwards;
|
||||||
|
-moz-animation: 0.3s ease-in forwards;
|
||||||
|
-ms-animation: 0.3s ease-in forwards;
|
||||||
|
animation: 0.3s ease-in forwards;
|
||||||
|
-moz-transform: translate3d(0, 0, 0);
|
||||||
|
-ms-transform: translate3d(0, 0, 0);
|
||||||
|
-o-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
-webkit-animation-name: bounceoutB;
|
||||||
|
-moz-animation-name: bounceoutB;
|
||||||
|
-ms-animation-name: bounceoutB;
|
||||||
|
animation-name: bounceoutB;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 弹出-向下 */
|
||||||
|
@keyframes bounceoutB {
|
||||||
|
0% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(100%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 2.9 KiB |