初始上传
This commit is contained in:
272
addon/jielong/api/controller/Cart.php
Executable file
272
addon/jielong/api/controller/Cart.php
Executable file
@@ -0,0 +1,272 @@
|
||||
<?php
|
||||
|
||||
namespace addon\jielong\api\controller;
|
||||
|
||||
use addon\jielong\model\Cart as CartModel;
|
||||
use app\model\goods\Goods;
|
||||
use app\api\controller\BaseApi;
|
||||
|
||||
class Cart extends BaseApi
|
||||
{
|
||||
/**
|
||||
* 添加信息
|
||||
*/
|
||||
public function add()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
|
||||
$sku_id = $this->params['sku_id'] ?? 0;
|
||||
$num = $this->params['num'] ?? 0;
|
||||
$jielong_id = $this->params['jielong_id'] ?? 0;
|
||||
|
||||
if (empty($sku_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_SKU_ID'));
|
||||
}
|
||||
if (empty($num)) {
|
||||
return $this->response($this->error('', 'REQUEST_NUM'));
|
||||
}
|
||||
$sku_model = new Goods();
|
||||
$condition = [ [ 'sku_id', '=', $sku_id ] ];
|
||||
$skuInfo = $sku_model->getGoodsSkuInfo($condition, 'sku_id,stock');
|
||||
if (!empty($skuInfo[ 'data' ])) {
|
||||
if ($skuInfo[ 'data' ][ 'stock' ] < $num) return $this->response($this->error('', '库存不足!'));
|
||||
} else {
|
||||
return $this->response($this->error('', '商品不存在!'));
|
||||
}
|
||||
|
||||
if (empty($jielong_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
|
||||
}
|
||||
|
||||
$cart = new CartModel();
|
||||
$data = [
|
||||
'site_id' => $this->site_id,
|
||||
'member_id' => $token[ 'data' ][ 'member_id' ],
|
||||
'sku_id' => $sku_id,
|
||||
'num' => $num,
|
||||
'jielong_id' => $jielong_id
|
||||
];
|
||||
$res = $cart->addCart($data);
|
||||
return $this->response($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑信息
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
|
||||
$cart_id = $this->params['cart_id'] ?? 0;
|
||||
$num = $this->params['num'] ?? 0;
|
||||
if (empty($cart_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_CART_ID'));
|
||||
}
|
||||
if (empty($num)) {
|
||||
return $this->response($this->error('', 'REQUEST_NUM'));
|
||||
}
|
||||
$cart = new CartModel();
|
||||
$alias = 'pjc';
|
||||
$join = [ [ 'goods_sku ngs', 'ngs.sku_id = pjc.sku_id', 'left' ] ];
|
||||
$fields = 'ngs.stock,ngs.sku_id';
|
||||
$condition = [ [ 'pjc.cart_id', '=', $cart_id ] ];
|
||||
$cartSkuInfo = $cart->getCartSkuInfo($condition, $fields, $alias, $join);
|
||||
if (!empty($cartSkuInfo[ 'data' ])) {
|
||||
if ($cartSkuInfo[ 'data' ][ 'stock' ] < $num) return $this->response($this->error('', '库存不足!'));
|
||||
} else {
|
||||
return $this->response($this->error('', '商品不存在!'));
|
||||
}
|
||||
|
||||
$data = [
|
||||
'cart_id' => $cart_id,
|
||||
'member_id' => $token[ 'data' ][ 'member_id' ],
|
||||
'num' => $num
|
||||
];
|
||||
$res = $cart->editCart($data);
|
||||
return $this->response($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除信息
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
|
||||
$cart_id = $this->params['cart_id'] ?? 0;
|
||||
if (empty($cart_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_CART_ID'));
|
||||
}
|
||||
$cart = new CartModel();
|
||||
$data = [
|
||||
'cart_id' => $cart_id,
|
||||
'member_id' => $token[ 'data' ][ 'member_id' ]
|
||||
];
|
||||
$res = $cart->deleteCart($data);
|
||||
return $this->response($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空购物车
|
||||
*/
|
||||
public function clear()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
|
||||
$jielong_id = $this->params['jielong_id'] ?? 0;
|
||||
if (empty($jielong_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
|
||||
}
|
||||
|
||||
$cart = new CartModel();
|
||||
$data = [
|
||||
'member_id' => $token[ 'data' ][ 'member_id' ],
|
||||
'jielong_id' => $jielong_id
|
||||
];
|
||||
$res = $cart->clearCart($data);
|
||||
return $this->response($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品购物车列表
|
||||
*/
|
||||
public function goodsLists()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
$jielong_id = $this->params['jielong_id'] ?? 0;
|
||||
if (empty($jielong_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
|
||||
}
|
||||
$cart = new CartModel();
|
||||
$list = $cart->getCart($token[ 'data' ][ 'member_id' ], $this->site_id, $jielong_id);
|
||||
$goods = new Goods();
|
||||
if (!empty($list[ 'data' ])) {
|
||||
foreach ($list[ 'data' ] as $k => $v) {
|
||||
// 是否参与会员等级折扣
|
||||
$goods_member_price = $goods->getGoodsPrice($v[ 'sku_id' ], $this->member_id)[ 'data' ];
|
||||
if (!empty($goods_member_price[ 'member_price' ])) {
|
||||
$list[ 'data' ][ $k ][ 'member_price' ] = $goods_member_price[ 'price' ];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $this->response($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取购物车数量
|
||||
* @return string
|
||||
*/
|
||||
public function count()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
|
||||
$jielong_id = $this->params['jielong_id'] ?? 0;
|
||||
if (empty($jielong_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
|
||||
}
|
||||
|
||||
$cart = new CartModel();
|
||||
// $list = $cart->getCartCount($token['data']['member_id'],$jielong_id);
|
||||
$condition = [
|
||||
[ 'gc.jielong_id', '=', $jielong_id ],
|
||||
[ 'gc.member_id', '=', $token[ 'data' ][ 'member_id' ] ],
|
||||
[ 'gc.site_id', '=', $this->site_id ],
|
||||
[ 'gs.goods_state', '=', 1 ],
|
||||
[ 'gs.is_delete', '=', 0 ]
|
||||
];
|
||||
$list = $cart->getCartList($condition, 'gc.num');
|
||||
$list = $list[ 'data' ];
|
||||
$count = 0;
|
||||
foreach ($list as $k => $v) {
|
||||
$count += $v[ 'num' ];
|
||||
}
|
||||
return $this->response($this->success($count));
|
||||
}
|
||||
|
||||
/**
|
||||
* 购物车关联列表
|
||||
* @return false|string
|
||||
*/
|
||||
public function lists()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
|
||||
$jielong_id = $this->params['jielong_id'] ?? 0;
|
||||
if (empty($jielong_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
|
||||
}
|
||||
|
||||
$cart = new CartModel();
|
||||
$condition = [
|
||||
[ 'gc.member_id', '=', $token[ 'data' ][ 'member_id' ] ],
|
||||
[ 'gc.site_id', '=', $this->site_id ],
|
||||
[ 'gc.jielong_id', '=', $jielong_id ]
|
||||
];
|
||||
$list = $cart->getCartList($condition, 'gc.cart_id,gc.sku_id,gc.num');
|
||||
return $this->response($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取会员购物车中商品数量
|
||||
* @return false|string
|
||||
*/
|
||||
public function goodsNumCopy()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
|
||||
$jielong_id = $this->params['jielong_id'] ?? 0;
|
||||
if (empty($jielong_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
|
||||
}
|
||||
|
||||
$goods_id = $this->params[ 'goods_id' ] ?? 0;
|
||||
|
||||
$condition = [
|
||||
[ 'gc.jielong_id', '=', $jielong_id ],
|
||||
[ 'gc.member_id', '=', $this->member_id ],
|
||||
[ 'gc.site_id', '=', $this->site_id ],
|
||||
[ 'gs.goods_id', '=', $goods_id ]
|
||||
];
|
||||
|
||||
$join = [
|
||||
[
|
||||
'goods_sku gs',
|
||||
'gc.sku_id = gs.sku_id',
|
||||
'left'
|
||||
]
|
||||
];
|
||||
|
||||
$cart = new CartModel();
|
||||
$data = $cart->getCartSumCopy($condition, 'gc.num', 'gc', $join);
|
||||
return $this->response($data);
|
||||
}
|
||||
|
||||
public function goodsNum()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
|
||||
$jielong_id = $this->params['jielong_id'] ?? 0;
|
||||
if (empty($jielong_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
|
||||
}
|
||||
|
||||
$condition = [
|
||||
[ 'jielong_id', '=', $jielong_id ],
|
||||
[ 'member_id', '=', $this->member_id ],
|
||||
[ 'site_id', '=', $this->site_id ],
|
||||
];
|
||||
|
||||
$cart = new CartModel();
|
||||
$data = $cart->getCartSum($condition);
|
||||
return $this->response($data);
|
||||
}
|
||||
}
|
||||
117
addon/jielong/api/controller/Goods.php
Executable file
117
addon/jielong/api/controller/Goods.php
Executable file
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\jielong\api\controller;
|
||||
|
||||
use addon\jielong\model\Jielong as JielongModel;
|
||||
use app\api\controller\BaseApi;
|
||||
use addon\jielong\model\Poster;
|
||||
use app\model\goods\Goods as GoodsModel;
|
||||
|
||||
/**
|
||||
* 社群接龙
|
||||
*/
|
||||
class Goods extends BaseApi
|
||||
{
|
||||
|
||||
//社群接龙活动列表
|
||||
public function jielongPage()
|
||||
{
|
||||
$page = $this->params[ 'page' ] ?? 1;
|
||||
$page_size = $this->params[ 'page_size' ] ?? PAGE_LIST_ROWS;
|
||||
$condition = [
|
||||
[ 'status', 'in', '0,1' ],// 状态(0未开始 1进行中 2已结束)
|
||||
[ 'is_delete', '=', 0 ],
|
||||
[ 'site_id', '=', $this->site_id ]
|
||||
];
|
||||
$jielong_model = new JielongModel();
|
||||
$list = $jielong_model->getJielongActivityPageList($condition, $page, $page_size);
|
||||
return $this->response($list);
|
||||
}
|
||||
|
||||
//社群接龙活动详情
|
||||
public function jielongDetail()
|
||||
{
|
||||
$page = $this->params[ 'page' ] ?? 1;
|
||||
$page_size = $this->params[ 'page_size' ] ?? PAGE_LIST_ROWS;
|
||||
$jielong_id = $this->params[ 'jielong_id' ] ?? 0;
|
||||
|
||||
if (empty($jielong_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
|
||||
}
|
||||
|
||||
$condition = [
|
||||
[ 'pjg.jielong_id', '=', $jielong_id ],
|
||||
[ 'g.goods_state', '=', 1 ],
|
||||
[ 'g.is_delete', '=', 0 ],
|
||||
[ 'g.site_id', '=', $this->site_id ]
|
||||
];
|
||||
|
||||
$jielong_model = new JielongModel();
|
||||
$list = $jielong_model->getJielongActivityDetail($condition, $page, 0, '', '', $jielong_id);
|
||||
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] >= 0) {
|
||||
if (!empty($list[ 'data' ][ 'list' ])) {
|
||||
$goods = new GoodsModel();
|
||||
foreach ($list[ 'data' ][ 'list' ] as $k => $v) {
|
||||
// 是否参与会员等级折扣
|
||||
$goods_member_price = $goods->getGoodsPrice($v[ 'sku_id' ], $this->member_id)[ 'data' ];
|
||||
if (!empty($goods_member_price[ 'member_price' ])) {
|
||||
$list[ 'data' ][ 'list' ][ $k ][ 'member_price' ] = $goods_member_price[ 'member_price' ];
|
||||
}
|
||||
//购物车数量
|
||||
$list[ 'data' ][ 'list' ][ $k ][ 'cart_num' ] = $jielong_model->getCartNum($jielong_id, $v[ 'goods_id' ], $this->member_id, $this->site_id);
|
||||
|
||||
if ($v[ 'is_limit' ] && $v[ 'limit_type' ] == 2 && $v[ 'max_buy' ] > 0) $list[ 'data' ][ 'list' ][ $k ][ 'purchased_num' ] = $goods->getGoodsPurchasedNum($v[ 'goods_id' ], $this->member_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
return $this->response($list);
|
||||
}
|
||||
|
||||
//社群接龙购买列表
|
||||
public function jielongBuyPage()
|
||||
{
|
||||
$page = $this->params[ 'page' ] ?? 1;
|
||||
$page_size = $this->params[ 'page_size' ] ?? PAGE_LIST_ROWS;
|
||||
$jielong_id = $this->params[ 'jielong_id' ] ?? 0;
|
||||
if (empty($jielong_id)) {
|
||||
return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
|
||||
}
|
||||
|
||||
$condition = [
|
||||
[ 'o.pay_status', '=', '1' ],
|
||||
[ 'pjo.jielong_id', '=', $jielong_id ],
|
||||
[ 'pjo.order_status', 'not in', [ 0, -1 ] ],
|
||||
[ 'pjo.site_id', '=', $this->site_id ]
|
||||
];
|
||||
$jielong_model = new JielongModel();
|
||||
$list = $jielong_model->getJielongBuyPageList($condition, $page, $page_size);
|
||||
//list 中的count就是接龙人数
|
||||
|
||||
return $this->response($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 接龙活动海报
|
||||
*/
|
||||
public function poster()
|
||||
{
|
||||
if (!empty($qrcode_param)) return $this->response($this->error('', '缺少必须参数qrcode_param'));
|
||||
|
||||
$promotion_type = 'jielong';
|
||||
$qrcode_param = json_decode($this->params[ 'qrcode_param' ], true);
|
||||
$qrcode_param[ 'source_member' ] = $qrcode_param[ 'source_member' ] ?? 0;
|
||||
$poster = new Poster();
|
||||
$res = $poster->goods($this->params[ 'app_type' ], $this->params[ 'page' ], $qrcode_param, $promotion_type, $this->site_id);
|
||||
return $this->response($res);
|
||||
}
|
||||
}
|
||||
98
addon/jielong/api/controller/Order.php
Executable file
98
addon/jielong/api/controller/Order.php
Executable file
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
||||
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\jielong\api\controller;
|
||||
|
||||
use addon\jielong\model\JielongOrderCommon;
|
||||
use app\api\controller\BaseApi;
|
||||
use app\model\order\Order as OrderModel;
|
||||
|
||||
/**
|
||||
* 接龙活动订单
|
||||
*/
|
||||
class Order extends BaseApi
|
||||
{
|
||||
|
||||
/**
|
||||
* 订单分页列表
|
||||
* @return false|string
|
||||
*/
|
||||
public function lists()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
$order_common_model = new JielongOrderCommon();
|
||||
$condition = array (
|
||||
[ "member_id", "=", $this->member_id ],
|
||||
[ "site_id", "=", $this->site_id ]
|
||||
);
|
||||
$order_status = $this->params['order_status'] ?? '';
|
||||
switch ( $order_status ) {
|
||||
case "0"://待付款
|
||||
$condition[] = [ "order_status", "=", 0 ];
|
||||
break;
|
||||
case "1"://已完成
|
||||
$condition[] = [ "order_status", "=", 1 ];
|
||||
break;
|
||||
case "-1"://已关闭
|
||||
$condition[] = [ "order_status", "=", -1 ];
|
||||
break;
|
||||
}
|
||||
|
||||
$page_index = $this->params['page'] ?? 1;
|
||||
$page_size = $this->params['page_size'] ?? PAGE_LIST_ROWS;
|
||||
$res = $order_common_model->getMemberOrderPageList($condition, $page_index, $page_size, "create_time desc");
|
||||
|
||||
return $this->response($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单详情
|
||||
*/
|
||||
public function detail()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
$order_common_model = new JielongOrderCommon();
|
||||
$id = $this->params['id'] ?? 0;
|
||||
$result = $order_common_model->getMemberOrderDetail($id, $this->member_id, $this->site_id);
|
||||
|
||||
return $this->response($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭订单
|
||||
*/
|
||||
public function close()
|
||||
{
|
||||
$token = $this->checkToken();
|
||||
if ($token[ 'code' ] < 0) return $this->response($token);
|
||||
|
||||
$id = $this->params['id'] ?? 0;
|
||||
if (empty($id)) {
|
||||
return $this->response($this->error('', 'REQUEST_JIELONG_ID'));
|
||||
}
|
||||
$order_model = new OrderModel();
|
||||
|
||||
$log_data = [
|
||||
'uid' => $this->member_id,
|
||||
'action_way' => 1
|
||||
];
|
||||
|
||||
$order_common_model = new JielongOrderCommon();
|
||||
$order_id = $order_common_model->getJielongOrderId($id);
|
||||
|
||||
$result = $order_model->orderClose($order_id, $log_data);
|
||||
return $this->response($result);
|
||||
}
|
||||
|
||||
}
|
||||
38
addon/jielong/config/diy_view.php
Executable file
38
addon/jielong/config/diy_view.php
Executable file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
return [
|
||||
|
||||
// 自定义模板页面类型,格式:[ 'title' => '页面类型名称', 'name' => '页面标识', 'path' => '页面路径', 'value' => '页面数据,json格式' ]
|
||||
'template' => [],
|
||||
|
||||
// 后台自定义组件——装修
|
||||
'util' => [],
|
||||
|
||||
// 自定义页面路径
|
||||
'link' => [],
|
||||
|
||||
// 自定义图标库
|
||||
'icon_library' => [],
|
||||
|
||||
// uni-app 组件,格式:[ 'name' => '组件名称/文件夹名称', 'path' => '文件路径/目录路径' ],多个逗号隔开,自定义组件名称前缀必须是diy-,也可以引用第三方组件
|
||||
'component' => [],
|
||||
|
||||
// uni-app 页面,多个逗号隔开
|
||||
'pages' => [],
|
||||
|
||||
// 模板信息,格式:'title' => '模板名称', 'name' => '模板标识', 'cover' => '模板封面图', 'preview' => '模板预览图', 'desc' => '模板描述'
|
||||
'info' => [],
|
||||
|
||||
// 主题风格配色,格式可以自由定义扩展,【在uni-app中通过:this.themeStyle... 获取定义的颜色字段,例如:this.themeStyle.main_color】
|
||||
'theme' => [],
|
||||
|
||||
// 自定义页面数据,格式:[ 'title' => '页面名称', 'name' => "页面标识", 'value' => [页面数据,json格式] ]
|
||||
'data' => []
|
||||
];
|
||||
44
addon/jielong/config/event.php
Executable file
44
addon/jielong/config/event.php
Executable file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
// 事件定义文件
|
||||
return [
|
||||
'bind' => [
|
||||
|
||||
],
|
||||
|
||||
'listen' => [
|
||||
//展示活动
|
||||
'ShowPromotion' => [
|
||||
'addon\jielong\event\ShowPromotion',
|
||||
],
|
||||
|
||||
//开启接龙
|
||||
'OpenJielong' => [
|
||||
'addon\jielong\event\OpenJielong',
|
||||
],
|
||||
|
||||
//关闭接龙
|
||||
'CloseJielong' => [
|
||||
'addon\jielong\event\CloseJielong',
|
||||
],
|
||||
|
||||
// 商品营销活动类型
|
||||
'GoodsPromotionType' => [
|
||||
'addon\jielong\event\GoodsPromotionType',
|
||||
],
|
||||
//订单创建之后
|
||||
'OrderCreateAfter' => [
|
||||
'addon\jielong\event\OrderCreateAfter',
|
||||
],
|
||||
//订单支付
|
||||
'OrderPay' => [
|
||||
'addon\jielong\event\OrderPay',
|
||||
],
|
||||
//订单关闭
|
||||
'OrderClose' => [
|
||||
'addon\jielong\event\OrderClose',
|
||||
]
|
||||
],
|
||||
|
||||
'subscribe' => [
|
||||
],
|
||||
];
|
||||
20
addon/jielong/config/info.php
Executable file
20
addon/jielong/config/info.php
Executable file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
return [
|
||||
'name' => 'jielong',
|
||||
'title' => '社群接龙',
|
||||
'description' => '接龙购买,快速成单',
|
||||
'type' => 'promotion', //插件类型 system :系统插件(自动安装), promotion:扩展营销插件 tool:工具插件
|
||||
'status' => 1,
|
||||
'author' => '',
|
||||
'version' => '5.5.3',
|
||||
'version_no' => '553250709001',
|
||||
'content' => '',
|
||||
];
|
||||
76
addon/jielong/config/menu_shop.php
Executable file
76
addon/jielong/config/menu_shop.php
Executable file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | 店铺端菜单设置
|
||||
// +----------------------------------------------------------------------
|
||||
return [
|
||||
[
|
||||
'name' => 'PROMOTION_JIELONG',
|
||||
'title' => '社群接龙',
|
||||
'url' => 'jielong://shop/jielong/lists',
|
||||
'parent' => 'PROMOTION_CENTER',
|
||||
'picture' => '',
|
||||
'picture_selected' => '',
|
||||
'is_show' => 1,
|
||||
'sort' => 100,
|
||||
'child_list' => [
|
||||
[
|
||||
'name' => 'PROMOTION_JIELONG_LISTS',
|
||||
'title' => '接龙列表',
|
||||
'url' => 'jielong://shop/jielong/lists',
|
||||
'is_show' => 0,
|
||||
'sort' => 1,
|
||||
'child_list' => [
|
||||
[
|
||||
'name' => 'PROMOTION_JIELONG_ADD',
|
||||
'title' => '添加接龙',
|
||||
'url' => 'jielong://shop/jielong/add',
|
||||
'is_show' => 0,
|
||||
'type' => 'button',
|
||||
],
|
||||
[
|
||||
'name' => 'PROMOTION_JIELONG_EDIT',
|
||||
'title' => '编辑接龙',
|
||||
'url' => 'jielong://shop/jielong/edit',
|
||||
'sort' => 2,
|
||||
'is_show' => 0,
|
||||
'type' => 'button',
|
||||
],
|
||||
[
|
||||
'name' => 'PROMOTION_JIELONG_DETAIL',
|
||||
'title' => '接龙详情',
|
||||
'url' => 'jielong://shop/jielong/detail',
|
||||
'sort' => 3,
|
||||
'is_show' => 0,
|
||||
'type' => 'button',
|
||||
],
|
||||
[
|
||||
'name' => 'PROMOTION_JIELONG_DELETE',
|
||||
'title' => '删除接龙',
|
||||
'url' => 'jielong://shop/jielong/delete',
|
||||
'sort' => 4,
|
||||
'is_show' => 0,
|
||||
'type' => 'button',
|
||||
]
|
||||
]
|
||||
],
|
||||
[
|
||||
'name' => 'PROMOTION_JIELONG_ORDER',
|
||||
'title' => '订单列表',
|
||||
'url' => 'jielong://shop/order/lists',
|
||||
'is_show' => 0,
|
||||
'is_control' => 1,
|
||||
'sort' => 2,
|
||||
'child_list' => [
|
||||
[
|
||||
'name' => 'PROMOTION_JIELONG_ORDER_DETAIL',
|
||||
'title' => '订单详情',
|
||||
'url' => 'jielong://shop/order/detail',
|
||||
'is_show' => 0,
|
||||
'type' => 'button',
|
||||
]
|
||||
]
|
||||
]
|
||||
]
|
||||
],
|
||||
|
||||
];
|
||||
1
addon/jielong/data/install.sql
Executable file
1
addon/jielong/data/install.sql
Executable file
@@ -0,0 +1 @@
|
||||
SET NAMES 'utf8';
|
||||
1
addon/jielong/data/uninstall.sql
Executable file
1
addon/jielong/data/uninstall.sql
Executable file
@@ -0,0 +1 @@
|
||||
SET NAMES 'utf8';
|
||||
30
addon/jielong/event/CloseJielong.php
Executable file
30
addon/jielong/event/CloseJielong.php
Executable file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
||||
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
|
||||
namespace addon\jielong\event;
|
||||
|
||||
use addon\jielong\model\Jielong;
|
||||
|
||||
/**
|
||||
* 关闭活动
|
||||
*/
|
||||
class CloseJielong
|
||||
{
|
||||
|
||||
public function handle($params)
|
||||
{
|
||||
$jielong = new Jielong();
|
||||
$res = $jielong->cronCloseJielong($params[ 'relate_id' ]);
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
30
addon/jielong/event/GoodsPromotionType.php
Executable file
30
addon/jielong/event/GoodsPromotionType.php
Executable file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
||||
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
|
||||
namespace addon\jielong\event;
|
||||
|
||||
/**
|
||||
* 活动类型
|
||||
*/
|
||||
class GoodsPromotionType
|
||||
{
|
||||
|
||||
/**
|
||||
* 活动类型
|
||||
* @return array
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
return [ 'name' => '社群接龙', 'short' => '接', 'type' => 'jielong', 'color' => '#4CB130', 'url' => 'jielong://shop/Jielong/lists' ];
|
||||
}
|
||||
}
|
||||
26
addon/jielong/event/Install.php
Executable file
26
addon/jielong/event/Install.php
Executable file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
|
||||
namespace addon\jielong\event;
|
||||
|
||||
/**
|
||||
* 应用安装
|
||||
*/
|
||||
class Install
|
||||
{
|
||||
/**
|
||||
* 执行安装
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
return success();
|
||||
}
|
||||
}
|
||||
30
addon/jielong/event/OpenJielong.php
Executable file
30
addon/jielong/event/OpenJielong.php
Executable file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
||||
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
|
||||
namespace addon\jielong\event;
|
||||
|
||||
use addon\jielong\model\Jielong;
|
||||
|
||||
/**
|
||||
* 启动活动
|
||||
*/
|
||||
class OpenJielong
|
||||
{
|
||||
|
||||
public function handle($params)
|
||||
{
|
||||
$jielong = new Jielong();
|
||||
$res = $jielong->cronOpenJielong($params[ 'relate_id' ]);
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
38
addon/jielong/event/OrderClose.php
Executable file
38
addon/jielong/event/OrderClose.php
Executable file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
||||
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
|
||||
namespace addon\jielong\event;
|
||||
|
||||
use app\model\order\OrderCommon;
|
||||
|
||||
/**
|
||||
* 订单支付后同步状态
|
||||
*/
|
||||
class OrderClose
|
||||
{
|
||||
|
||||
public function handle($params)
|
||||
{
|
||||
$order_common_model = new OrderCommon();
|
||||
$close_status = OrderCommon::ORDER_CLOSE;
|
||||
/******************************************************* 接龙订单相关,建议移动到插件 **********************************************************/
|
||||
//更改接龙订单状态
|
||||
model('promotion_jielong_order')->update([
|
||||
'order_status' => $close_status,
|
||||
'order_status_name' => $order_common_model->order_status[$close_status]['name'],
|
||||
'order_status_action' => json_encode($order_common_model->order_status[$close_status], JSON_UNESCAPED_UNICODE),
|
||||
'close_time' => time(),
|
||||
], [['relate_order_id', '=', $params['order_id']]]);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
89
addon/jielong/event/OrderCreateAfter.php
Executable file
89
addon/jielong/event/OrderCreateAfter.php
Executable file
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
||||
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
|
||||
namespace addon\jielong\event;
|
||||
|
||||
use addon\jielong\model\Cart;
|
||||
use app\model\order\OrderCommon;
|
||||
|
||||
/**
|
||||
* 关闭活动
|
||||
*/
|
||||
class OrderCreateAfter
|
||||
{
|
||||
|
||||
public function handle($params)
|
||||
{
|
||||
//订单支付后
|
||||
$order_object = $params['order_object'];
|
||||
if ($order_object->jielong_id > 0) {
|
||||
|
||||
$cart_ids = $order_object->cart_ids;
|
||||
$member_id = $order_object->member_id;
|
||||
$jielong_cart = new Cart();
|
||||
//删除购物车
|
||||
$data_cart = [
|
||||
'cart_id' => $cart_ids,
|
||||
'member_id' => $member_id
|
||||
];
|
||||
$jielong_cart->deleteCart($data_cart);
|
||||
|
||||
|
||||
//配送数据
|
||||
$express_type_list = $order_object->config('delivery_type');
|
||||
$delivery_type_name = $express_type_list[$order_object->delivery['delivery_type']] ?? '';
|
||||
model('promotion_jielong_order')->add([
|
||||
'order_no' => $order_object->order_no,
|
||||
'site_id' => $order_object->site_id,
|
||||
'site_name' => $order_object->site_name,
|
||||
|
||||
'order_from' => $order_object->param['order_from'],
|
||||
'order_from_name' => $order_object->param['order_from_name'],
|
||||
|
||||
'order_type' => $order_object->order_type['order_type_id'],
|
||||
'order_type_name' => $order_object->order_type['order_type_name'],
|
||||
'order_status_name' => $order_object->order_type['order_status']['name'],
|
||||
'order_status_action' => json_encode($order_object->order_type['order_status'], JSON_UNESCAPED_UNICODE),
|
||||
|
||||
|
||||
'member_id' => $order_object->member_id,
|
||||
'name' => $order_object->delivery['member_address']['name'] ?? '',
|
||||
'mobile' => $order_object->delivery['member_address']['mobile'] ?? '',
|
||||
'telephone' => $order_object->delivery['member_address']['telephone'] ?? '',
|
||||
'province_id' => $order_object->delivery['member_address']['province_id'] ?? '',
|
||||
'city_id' => $order_object->delivery['member_address']['city_id'] ?? '',
|
||||
'district_id' => $order_object->delivery['member_address']['district_id'] ?? '',
|
||||
'community_id' => $order_object->delivery['member_address']['community_id'] ?? '',
|
||||
'address' => $order_object->delivery['member_address']['address'] ?? '',
|
||||
'full_address' => $order_object->delivery['member_address']['full_address'] ?? '',
|
||||
'longitude' => $order_object->delivery['member_address']['longitude'] ?? '',
|
||||
'latitude' => $order_object->delivery['member_address']['latitude'] ?? '',
|
||||
'buyer_ip' => request()->ip(),
|
||||
'buyer_message' => $order_object->param['buyer_message'] ?? '',
|
||||
'num' => $order_object->goods_num,
|
||||
'goods_money' => $order_object->goods_money,
|
||||
'delivery_money' => $order_object->delivery_money,
|
||||
'promotion_money' => $order_object->promotion_money,
|
||||
'coupon_id' => $order_object->coupon_id ?? 0,
|
||||
'coupon_money' => $order_object->coupon_money ?? 0,
|
||||
'order_money' => $order_object->order_money,
|
||||
'delivery_type' => $order_object->delivery['delivery_type'],
|
||||
'delivery_type_name' => $delivery_type_name,
|
||||
'create_time' => time(),
|
||||
'relate_order_id' => $order_object->order_id,
|
||||
'jielong_id' => $order_object->jielong_id,
|
||||
]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
45
addon/jielong/event/OrderPay.php
Executable file
45
addon/jielong/event/OrderPay.php
Executable file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
||||
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
|
||||
namespace addon\jielong\event;
|
||||
|
||||
use addon\jielong\model\Jielong;
|
||||
use app\model\order\OrderCommon;
|
||||
|
||||
/**
|
||||
* 订单支付后同步状态
|
||||
*/
|
||||
class OrderPay
|
||||
{
|
||||
|
||||
public function handle($params)
|
||||
{
|
||||
$order_id = $params['order_id'];
|
||||
$order_info = model('order')->getInfo([['order_id', '=', $order_id]]);
|
||||
//操作接龙订单start
|
||||
$where = array(
|
||||
['relate_order_id', '=', $params['order_id']],
|
||||
['order_status', '=', OrderCommon::ORDER_CREATE],
|
||||
);
|
||||
model('promotion_jielong_order')->update([
|
||||
'order_status' => $order_info['order_status'],
|
||||
'order_status_name' => $order_info['order_status_name'],
|
||||
'order_status_action' => $order_info['order_status_action'],
|
||||
'pay_time' => time(),
|
||||
'pay_type' => $order_info['pay_type'],
|
||||
'pay_type_name' => $order_info['pay_type_name']
|
||||
], $where);
|
||||
//操作接龙订单end
|
||||
return true;
|
||||
}
|
||||
}
|
||||
94
addon/jielong/event/ShowPromotion.php
Executable file
94
addon/jielong/event/ShowPromotion.php
Executable file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
||||
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
|
||||
namespace addon\jielong\event;
|
||||
|
||||
use think\facade\Db;
|
||||
|
||||
/**
|
||||
* 活动展示
|
||||
*/
|
||||
class ShowPromotion
|
||||
{
|
||||
public $promotion_type = 'time_limit';
|
||||
|
||||
/**
|
||||
* 活动展示
|
||||
* @param array $params
|
||||
* @return array
|
||||
*/
|
||||
public function handle($params = [])
|
||||
{
|
||||
$data = [
|
||||
'shop' => [
|
||||
[
|
||||
//插件名称
|
||||
'name' => 'jielong',
|
||||
//店铺端展示分类 shop:营销活动 member:互动营销
|
||||
'show_type' => 'shop',
|
||||
//展示主题
|
||||
'title' => '社群接龙',
|
||||
//展示介绍
|
||||
'description' => '接龙购买,快速成单',
|
||||
//展示图标
|
||||
'icon' => 'addon/jielong/icon.png',
|
||||
//跳转链接
|
||||
'url' => 'jielong://shop/jielong/lists',
|
||||
'summary' => $this->summary($params)
|
||||
]
|
||||
]
|
||||
|
||||
];
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 营销活动概况
|
||||
* @param $params
|
||||
* @return array
|
||||
*/
|
||||
private function summary($params)
|
||||
{
|
||||
if (empty($params)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if(isset($params['promotion_type']) && $params['promotion_type'] != $this->promotion_type){
|
||||
return [];
|
||||
}
|
||||
|
||||
//获取活动数量
|
||||
if (isset($params[ 'count' ])) {
|
||||
$count = model("promotion_jielong")->getCount([ [ 'site_id', '=', $params[ 'site_id' ] ] ]);
|
||||
return [
|
||||
'count' => $count
|
||||
];
|
||||
}
|
||||
//获取活动概况,需要获取开始时间与结束时间
|
||||
if (isset($params[ 'summary' ])) {
|
||||
$list = model("promotion_jielong")->getList([
|
||||
[ '', 'exp', Db::raw('not ( (`start_time` >= ' . $params[ 'end_time' ] . ') or (`end_time` <= ' . $params[ 'start_time' ] . '))') ],
|
||||
[ 'site_id', '=', $params[ 'site_id' ] ],
|
||||
[ 'status', '<>', 2 ],
|
||||
[ 'status', '<>', 3 ]
|
||||
], 'jielong_name as promotion_name,jielong_id as promotion_id,start_time,end_time');
|
||||
return !empty($list) ? [
|
||||
'time_limit' => [
|
||||
'count' => count($list),
|
||||
'detail' => $list,
|
||||
'color' => '#E066FF'
|
||||
]
|
||||
] : [];
|
||||
}
|
||||
}
|
||||
}
|
||||
26
addon/jielong/event/UnInstall.php
Executable file
26
addon/jielong/event/UnInstall.php
Executable file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
|
||||
namespace addon\jielong\event;
|
||||
|
||||
/**
|
||||
* 应用卸载
|
||||
*/
|
||||
class UnInstall
|
||||
{
|
||||
/**
|
||||
* 执行卸载
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
return success();
|
||||
}
|
||||
}
|
||||
BIN
addon/jielong/icon.png
Executable file
BIN
addon/jielong/icon.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
152
addon/jielong/model/Cart.php
Executable file
152
addon/jielong/model/Cart.php
Executable file
@@ -0,0 +1,152 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\jielong\model;
|
||||
|
||||
use app\model\BaseModel;
|
||||
|
||||
/**
|
||||
* 购物车
|
||||
*/
|
||||
class Cart extends BaseModel
|
||||
{
|
||||
|
||||
/**
|
||||
* 添加购物车
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
public function addCart($data)
|
||||
{
|
||||
$cart_info = model('promotion_jielong_cart')->getInfo([ [ 'sku_id', '=', $data[ 'sku_id' ] ], [ 'member_id', '=', $data[ 'member_id' ] ], [ 'jielong_id', '=', $data[ 'jielong_id' ] ] ], 'cart_id, num');
|
||||
if (!empty($cart_info)) {
|
||||
$res = model('promotion_jielong_cart')->update([ 'num' => $cart_info[ 'num' ] + $data[ 'num' ] ], [ [ 'cart_id', '=', $cart_info[ 'cart_id' ] ] ]);
|
||||
} else {
|
||||
$res = model('promotion_jielong_cart')->add($data);
|
||||
}
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取购物车商品信息
|
||||
* @param unknown $data
|
||||
*/
|
||||
public function getCartSkuInfo($condition, $fields, $alias, $join)
|
||||
{
|
||||
$res_info = model('promotion_jielong_cart')->getInfo($condition, $fields, $alias, $join);
|
||||
return $this->success($res_info);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新购物车商品数量
|
||||
* @param unknown $data
|
||||
*/
|
||||
public function editCart($data)
|
||||
{
|
||||
$res = model('promotion_jielong_cart')->update([ 'num' => $data[ 'num' ] ], [ [ 'cart_id', '=', $data[ 'cart_id' ] ], [ 'member_id', '=', $data[ 'member_id' ] ] ]);
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除购物车商品项(可以多项)
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
public function deleteCart($data)
|
||||
{
|
||||
$res = model('promotion_jielong_cart')->delete([ [ 'cart_id', 'in', explode(',', $data[ 'cart_id' ]) ], [ 'member_id', '=', $data[ 'member_id' ] ] ]);
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空购物车
|
||||
* @param unknown $data
|
||||
*/
|
||||
public function clearCart($data)
|
||||
{
|
||||
$res = model('promotion_jielong_cart')->delete([ [ 'member_id', '=', $data[ 'member_id' ] ], [ 'jielong_id', '=', $data[ 'jielong_id' ] ] ]);
|
||||
return $this->success($res);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取会员购物车
|
||||
* @param unknown $member_id
|
||||
* @param unknown $site_id
|
||||
*/
|
||||
public function getCart($member_id, $site_id, $jielong_id)
|
||||
{
|
||||
$field = 'pjc.cart_id, pjc.site_id, pjc.member_id, pjc.sku_id, pjc.num,pjc.jielong_id, ngs.sku_name,
|
||||
ngs.sku_no, ngs.sku_spec_format,ngs.price,ngs.market_price,
|
||||
ngs.discount_price, ngs.promotion_type, ngs.start_time, ngs.end_time, ngs.stock,
|
||||
ngs.sku_image, ngs.sku_images, ngs.goods_state, ngs.goods_stock_alarm, ngs.is_virtual, ngs.goods_name,
|
||||
ngs.virtual_indate, ngs.is_free_shipping, ngs.shipping_template, ngs.unit, ngs.introduction,ngs.sku_spec_format, ngs.keywords, ngs.max_buy, ngs.min_buy, ngs.max_buy, ns.site_name, ngs.is_limit, ngs.limit_type';
|
||||
$alias = 'pjc';
|
||||
$join = [
|
||||
[
|
||||
'goods_sku ngs',
|
||||
'pjc.sku_id = ngs.sku_id',
|
||||
'inner'
|
||||
],
|
||||
[
|
||||
'site ns',
|
||||
'pjc.site_id = ns.site_id',
|
||||
'inner'
|
||||
],
|
||||
];
|
||||
$list = model('promotion_jielong_cart')->getList([ [ 'pjc.member_id', '=', $member_id ], [ 'pjc.site_id', '=', $site_id ], [ 'ngs.is_delete', '=', 0 ], [ 'pjc.jielong_id', '=', $jielong_id ] ], $field, 'pjc.cart_id desc', $alias, $join);
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取购物车数量
|
||||
* @param unknown $member_id
|
||||
*/
|
||||
public function getCartCount($member_id, $jielong_id)
|
||||
{
|
||||
$list = model('promotion_jielong_cart')->getCount([ [ 'member_id', '=', $member_id ], [ 'jielong_id', '=', $jielong_id ] ]);
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取购物车商品数量
|
||||
* @param $condition
|
||||
* @return array
|
||||
*/
|
||||
public function getCartSumCopy($condition, $field, $alias = 'a', $join = null)
|
||||
{
|
||||
$sum = model('promotion_jielong_cart')->getSum($condition, $field, $alias, $join);
|
||||
return $this->success($sum);
|
||||
}
|
||||
|
||||
public function getCartSum($condition)
|
||||
{
|
||||
$sum = model('promotion_jielong_cart')->getCount($condition);
|
||||
return $this->success($sum);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取购物车商品选择数量
|
||||
* @param $condition
|
||||
* @return array
|
||||
*/
|
||||
public function getCartList($condition = [], $field = 'cart_id,site_id,member_id,sku_id,num,jielong_id', $order = 'cart_id desc')
|
||||
{
|
||||
$alias = 'gc';
|
||||
$join = [
|
||||
[
|
||||
'goods_sku gs',
|
||||
'gc.sku_id = gs.sku_id',
|
||||
'left'
|
||||
]
|
||||
];
|
||||
$list = model('promotion_jielong_cart')->getList($condition, $field, $order, $alias, $join);
|
||||
return $this->success($list);
|
||||
}
|
||||
}
|
||||
474
addon/jielong/model/Jielong.php
Executable file
474
addon/jielong/model/Jielong.php
Executable file
@@ -0,0 +1,474 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\jielong\model;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use app\model\goods\Goods;
|
||||
use app\model\system\Cron;
|
||||
|
||||
/**
|
||||
* 接龙活动
|
||||
*/
|
||||
class Jielong extends BaseModel
|
||||
{
|
||||
|
||||
private $status = [
|
||||
0 => '未开始',
|
||||
1 => '进行中',
|
||||
2 => '已结束',
|
||||
// 3 => '已关闭'
|
||||
];
|
||||
|
||||
/**
|
||||
* 获取接龙活动状态
|
||||
* @return array
|
||||
*/
|
||||
public function getJielongStatus()
|
||||
{
|
||||
return $this->success($this->status);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加接龙
|
||||
* @param $jielong_data
|
||||
* @param $goods
|
||||
* @param $sku_list
|
||||
* @return array
|
||||
*/
|
||||
public function addJielong($jielong_data, $goods)
|
||||
{
|
||||
if (empty($goods[ 'goods_ids' ])) {
|
||||
return $this->error('', '该活动至少需要一个商品参与');
|
||||
}
|
||||
|
||||
$jielong_data[ 'create_time' ] = time();
|
||||
|
||||
if (time() > $jielong_data[ 'end_time' ]) {
|
||||
return $this->error('', '当前时间不能大于结束时间');
|
||||
}
|
||||
if ($jielong_data[ 'start_time' ] <= time()) {
|
||||
$jielong_data[ 'status' ] = 1;
|
||||
$jielong_data[ 'status_name' ] = $this->status[ 1 ];
|
||||
} else {
|
||||
$jielong_data[ 'status' ] = 0;
|
||||
$jielong_data[ 'status_name' ] = $this->status[ 0 ];
|
||||
}
|
||||
|
||||
model("promotion_jielong")->startTrans();
|
||||
try {
|
||||
|
||||
//添加接龙活动
|
||||
$jielong_data[ 'goods_ids' ] = $goods[ 'goods_ids' ];
|
||||
$goods[ 'goods_ids' ] = explode(",", $goods[ 'goods_ids' ]);
|
||||
|
||||
$jielong_id = model("promotion_jielong")->add($jielong_data);
|
||||
|
||||
$list_data = [];
|
||||
foreach ($goods[ 'goods_ids' ] as $goods_id) {
|
||||
$list_data[] = [
|
||||
'site_id' => $jielong_data[ 'site_id' ],
|
||||
'jielong_id' => $jielong_id,
|
||||
'goods_id' => $goods_id,
|
||||
'sale_num' => 0
|
||||
];
|
||||
|
||||
if ($jielong_data[ 'status' ] == 1) {
|
||||
$goods = new Goods();
|
||||
$goods->modifyPromotionAddon($goods_id, [ 'jielong' => $jielong_id ]);
|
||||
}
|
||||
|
||||
}
|
||||
model('promotion_jielong_goods')->addList($list_data);
|
||||
|
||||
$cron = new Cron();
|
||||
if ($jielong_data[ 'status' ] == 1) {
|
||||
$cron->addCron(1, 0, "接龙活动关闭", "CloseJielong", $jielong_data[ 'end_time' ], $jielong_id);
|
||||
} else {
|
||||
$cron->addCron(1, 0, "接龙活动开启", "OpenJielong", $jielong_data[ 'start_time' ], $jielong_id);
|
||||
$cron->addCron(1, 0, "接龙活动关闭", "CloseJielong", $jielong_data[ 'end_time' ], $jielong_id);
|
||||
}
|
||||
|
||||
model('promotion_jielong')->commit();
|
||||
return $this->success();
|
||||
} catch (\Exception $e) {
|
||||
model('promotion_jielong')->rollback();
|
||||
return $this->error('', $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑接龙
|
||||
* @param $jielong_data
|
||||
* @param $goods
|
||||
* @param $sku_list
|
||||
* @return array
|
||||
*/
|
||||
public function editJielong($jielong_data, $goods, $sku_list)
|
||||
{
|
||||
if (empty($goods)) {
|
||||
return $this->error('', '至少需要保留一个商品参与');
|
||||
}
|
||||
|
||||
$jielong_info = model("promotion_jielong")->getInfo([ [ 'jielong_id', '=', $jielong_data[ 'jielong_id' ] ], [ 'site_id', '=', $jielong_data[ 'site_id' ] ] ], 'status,end_time,goods_ids');
|
||||
|
||||
if (empty($jielong_info)) {
|
||||
return $this->error('', '该接龙活动不存在');
|
||||
}
|
||||
|
||||
$cron = new Cron();
|
||||
if (time() > $jielong_data[ 'end_time' ]) {
|
||||
return $this->error('', '当前时间不能大于结束时间');
|
||||
}
|
||||
|
||||
$jielong_data[ 'status' ] = 0;
|
||||
|
||||
if ($jielong_info[ 'status' ] == 1) {
|
||||
$jielong_data[ 'status' ] = 1;
|
||||
$jielong_data[ 'status_name' ] = $this->status[ 1 ];
|
||||
if ($jielong_data[ 'end_time' ] < $jielong_info[ 'end_time' ]) {
|
||||
return $this->error('', '进行中活动只能延长结束时间,不能缩短时间');
|
||||
}
|
||||
} elseif ($jielong_info[ 'status' ] == 0) {
|
||||
if ($jielong_data[ 'start_time' ] <= time()) {
|
||||
$jielong_data[ 'status' ] = 1;
|
||||
$jielong_data[ 'status_name' ] = $this->status[ 1 ];
|
||||
} else {
|
||||
$jielong_data[ 'status' ] = 0;
|
||||
$jielong_data[ 'status_name' ] = $this->status[ 0 ];
|
||||
}
|
||||
}
|
||||
|
||||
$goods_ids = $goods;
|
||||
$goods = explode(",", $goods);
|
||||
model('promotion_jielong')->startTrans();
|
||||
try {
|
||||
|
||||
if ($goods_ids != $jielong_info[ 'goods_ids' ]) {
|
||||
model("promotion_jielong_goods")->delete([ [ "jielong_id", "=", $jielong_data[ 'jielong_id' ] ], [ "site_id", "=", $jielong_data[ 'site_id' ] ] ]);
|
||||
|
||||
$list_data = [];
|
||||
foreach ($goods as $v) {
|
||||
$list_data[] = [
|
||||
'site_id' => $jielong_data[ 'site_id' ],
|
||||
'jielong_id' => $jielong_data[ 'jielong_id' ],
|
||||
'goods_id' => $v,
|
||||
'sale_num' => 0
|
||||
];
|
||||
}
|
||||
|
||||
model('promotion_jielong_goods')->addList($list_data);
|
||||
|
||||
}
|
||||
|
||||
model("promotion_jielong")->update(
|
||||
array_merge($jielong_data, [
|
||||
'update_time' => time(),
|
||||
'goods_ids' => $goods_ids
|
||||
]),
|
||||
[ [ 'jielong_id', '=', $jielong_data[ 'jielong_id' ] ] ]
|
||||
);
|
||||
|
||||
if ($jielong_data[ 'status' ] == 1) {
|
||||
$goods_model = new Goods();
|
||||
|
||||
foreach ($goods as $goods_id) {
|
||||
$goods_model->modifyPromotionAddon($goods_id, [ 'jielong' => $jielong_data[ 'jielong_id' ] ]);
|
||||
}
|
||||
|
||||
$cron->deleteCron([ [ 'event', '=', 'OpenJielong' ], [ 'relate_id', '=', $jielong_data[ 'jielong_id' ] ] ]);
|
||||
$cron->deleteCron([ [ 'event', '=', 'CloseJielong' ], [ 'relate_id', '=', $jielong_data[ 'jielong_id' ] ] ]);
|
||||
|
||||
$cron->addCron(1, 0, "接龙活动关闭", "CloseJielong", $jielong_data[ 'end_time' ], $jielong_data[ 'jielong_id' ]);
|
||||
} else {
|
||||
$cron->deleteCron([ [ 'event', '=', 'OpenJielong' ], [ 'relate_id', '=', $jielong_data[ 'jielong_id' ] ] ]);
|
||||
$cron->deleteCron([ [ 'event', '=', 'CloseJielong' ], [ 'relate_id', '=', $jielong_data[ 'jielong_id' ] ] ]);
|
||||
|
||||
$cron->addCron(1, 0, "接龙活动开启", "OpenJielong", $jielong_data[ 'start_time' ], $jielong_data[ 'jielong_id' ]);
|
||||
$cron->addCron(1, 0, "接龙活动关闭", "CloseJielong", $jielong_data[ 'end_time' ], $jielong_data[ 'jielong_id' ]);
|
||||
}
|
||||
|
||||
model('promotion_jielong')->commit();
|
||||
return $this->success();
|
||||
} catch (\Exception $e) {
|
||||
model('promotion_jielong')->rollback();
|
||||
return $this->error('', $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除接龙活动
|
||||
* @param $jielong_id
|
||||
* @param $site_id
|
||||
* @return array|\multitype
|
||||
*/
|
||||
public function deleteJielong($jielong_id, $site_id)
|
||||
{
|
||||
//接龙信息
|
||||
$jielong_info = model('promotion_jielong')->getInfo([ [ 'jielong_id', '=', $jielong_id ], [ 'site_id', '=', $site_id ] ], 'status');
|
||||
if ($jielong_info) {
|
||||
if ($jielong_info[ 'status' ] != 1) {
|
||||
$res = model('promotion_jielong')->update([ 'is_delete' => 1 ], [ [ 'jielong_id', '=', $jielong_id ], [ 'site_id', '=', $site_id ] ]);
|
||||
if ($res) {
|
||||
// model('promotion_jielong_goods')->delete([['jielong_id', '=', $jielong_id], ['site_id', '=', $site_id]]);
|
||||
$cron = new Cron();
|
||||
$cron->deleteCron([ [ 'event', '=', 'OpenJielong' ], [ 'relate_id', '=', $jielong_id ] ]);
|
||||
$cron->deleteCron([ [ 'event', '=', 'CloseJielong' ], [ 'relate_id', '=', $jielong_id ] ]);
|
||||
}
|
||||
return $this->success($res);
|
||||
} else {
|
||||
return $this->error('', '接龙活动进行中,请先关闭该活动');
|
||||
}
|
||||
|
||||
} else {
|
||||
return $this->error('', '接龙活动不存在');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭接龙活动
|
||||
* @param $jielong_id
|
||||
* @param $site_id
|
||||
* @return array
|
||||
*/
|
||||
public function finishJielong($jielong_id, $site_id)
|
||||
{
|
||||
//接龙信息
|
||||
$jielong_info = model('promotion_jielong')->getInfo([ [ 'jielong_id', '=', $jielong_id ], [ 'site_id', '=', $site_id ] ], 'status,goods_ids');
|
||||
if (!empty($jielong_info)) {
|
||||
|
||||
if ($jielong_info[ 'status' ] != 2) {
|
||||
$res = model('promotion_jielong')->update([ 'status' => 2, 'status_name' => $this->status[ 2 ] ], [ [ 'jielong_id', '=', $jielong_id ], [ 'site_id', '=', $site_id ], [ 'status', '=', 1 ] ]);
|
||||
$cron = new Cron();
|
||||
$cron->deleteCron([ [ 'event', '=', 'OpenJielong' ], [ 'relate_id', '=', $jielong_id ] ]);
|
||||
$cron->deleteCron([ [ 'event', '=', 'CloseJielong' ], [ 'relate_id', '=', $jielong_id ] ]);
|
||||
|
||||
$goods = new Goods();
|
||||
$arr_ids = explode(',', $jielong_info[ 'goods_ids' ]);
|
||||
foreach ($arr_ids as $goods_id) {
|
||||
$goods->modifyPromotionAddon($goods_id, [ 'jielong' => $jielong_id ], true);
|
||||
}
|
||||
|
||||
return $this->success($res);
|
||||
} else {
|
||||
$this->error('', '该接龙活动已关闭');
|
||||
}
|
||||
} else {
|
||||
$this->error('', '该接龙活动不存在');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取接龙详细信息
|
||||
* @param $jielong_id
|
||||
* @param $site_id
|
||||
* @return array
|
||||
*/
|
||||
public function getJielongDetail($jielong_id, $site_id)
|
||||
{
|
||||
//接龙信息
|
||||
$jielong_info = model("promotion_jielong")->getInfo([ [ 'jielong_id', '=', $jielong_id ], [ 'site_id', '=', $site_id ] ], '*');
|
||||
|
||||
if (!empty($jielong_info)) {
|
||||
//商品信息
|
||||
$arr_ids = explode(',', $jielong_info[ 'goods_ids' ]);
|
||||
$goods_list = model('goods')->getList([ [ 'goods_id', 'in', $arr_ids ] ], 'goods_id,goods_class_name,goods_image,goods_name,goods_stock,is_virtual,price');
|
||||
if (!empty($goods_list)) {
|
||||
foreach ($goods_list as $k => $v) {
|
||||
$goods_list[ $k ][ 'goods_stock' ] = numberFormat($goods_list[ $k ][ 'goods_stock' ]);
|
||||
}
|
||||
}
|
||||
$jielong_info[ 'sku_list' ] = $goods_list;
|
||||
$jielong_info[ 'sku_list_count' ] = count($jielong_info[ 'sku_list' ]);
|
||||
}
|
||||
return $this->success($jielong_info);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取接龙活动分页列表
|
||||
* @param array $condition
|
||||
* @param number $page
|
||||
* @param string $page_size
|
||||
* @param string $order
|
||||
* @param string $field
|
||||
*/
|
||||
public function getJielongPageList($condition, $page, $page_size, $order, $site_id)
|
||||
{
|
||||
$field = '*';
|
||||
$list = model('promotion_jielong')->pageList($condition, $field, $order, $page, $page_size);
|
||||
|
||||
foreach ($list[ 'list' ] as &$v) {
|
||||
$v[ 'goods_num' ] = model('promotion_jielong_goods')->getCount([ [ 'jielong_id', '=', $v[ 'jielong_id' ] ], [ 'site_id', '=', $site_id ] ], 'id');
|
||||
$v[ 'order_num' ] = model('promotion_jielong_order')->getCount([ [ 'jielong_id', '=', $v[ 'jielong_id' ] ], [ 'site_id', '=', $site_id ] ], 'id');
|
||||
}
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取社群接龙活动分页列表
|
||||
* @param array $condition
|
||||
* @param number $page
|
||||
* @param string $page_size
|
||||
* @param string $order
|
||||
* @param string $field
|
||||
*/
|
||||
public function getJielongActivityPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'jielong_id desc', $field = '*')
|
||||
{
|
||||
$list = model('promotion_jielong')->pageList($condition, $field, $order, $page, $page_size);
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取社群接龙活动详情
|
||||
* @param array $condition
|
||||
* @param number $page
|
||||
* @param string $page_size
|
||||
* @param string $order
|
||||
* @param string $field
|
||||
*/
|
||||
public function getJielongActivityDetail($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'jielong_id desc', $field = '*', $jielog_id = 0)
|
||||
{
|
||||
$alias = 'pjg';
|
||||
|
||||
$field = 'pjg.*,g.goods_image,g.goods_name,g.goods_spec_format,g.sku_id,g.goods_stock,gs.price,gs.market_price,gs.discount_price,g.introduction,g.min_buy,g.max_buy,g.is_limit,g.limit_type';
|
||||
$join = [
|
||||
[ 'goods g', 'pjg.goods_id = g.goods_id', 'inner' ],
|
||||
[ 'goods_sku gs', 'g.sku_id = gs.sku_id', 'inner' ]
|
||||
];
|
||||
//接龙活动中商品信息
|
||||
$list = model('promotion_jielong_goods')->pageList($condition, $field, $order, $page, $page_size, $alias, $join);
|
||||
|
||||
//已抢件数,购买人数
|
||||
$order_ids = model('promotion_jielong_order')->getColumn([ [ 'jielong_id', '=', $jielog_id ], [ 'order_status', 'not in', [ 0, -1 ] ] ], 'relate_order_id');
|
||||
|
||||
foreach ($list[ 'list' ] as $k => $v) {
|
||||
$sku_ids = model('goods_sku')->getColumn([ [ 'goods_id', '=', $v[ 'goods_id' ] ] ], 'sku_id');
|
||||
$where = [
|
||||
[ 'order_id', 'in', $order_ids ],
|
||||
[ 'sku_id', 'in', $sku_ids ]
|
||||
];
|
||||
//已抢件数
|
||||
$list[ 'list' ][ $k ][ 'buy_num' ] = intval(model('order_goods')->getSum($where, 'num'));
|
||||
|
||||
$member_ids = model('order_goods')->getColumn($where, 'member_id', '', 'order_goods_id desc');
|
||||
$member_ids = array_unique($member_ids);
|
||||
//购买会员数
|
||||
$list[ 'list' ][ $k ][ 'member_num' ] = count($member_ids);
|
||||
|
||||
//已购买会员头像,取3个
|
||||
$new_ids = array_slice($member_ids, 0, 3);
|
||||
$head = [];
|
||||
foreach ($new_ids as $kk => $vv) {
|
||||
$member_info = model('member')->getInfo([ [ 'member_id', '=', $vv ] ], 'headimg');
|
||||
$head[] = $member_info[ 'headimg' ];
|
||||
}
|
||||
$list[ 'list' ][ $k ][ 'member_headimg' ] = $head;
|
||||
}
|
||||
|
||||
//接龙活动信息
|
||||
$list[ 'info' ] = model('promotion_jielong')->getInfo([ [ 'jielong_id', '=', $jielog_id ] ], '*');
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取社群接龙商品加车数量
|
||||
*/
|
||||
public function getCartNum($jielong_id, $goods_id, $member_id, $site_id)
|
||||
{
|
||||
|
||||
$sku_ids = model('goods_sku')->getColumn([ [ 'goods_id', '=', $goods_id ] ], 'sku_id');
|
||||
|
||||
$where = [
|
||||
[ 'sku_id', 'in', $sku_ids ],
|
||||
[ 'jielong_id', '=', $jielong_id ],
|
||||
[ 'member_id', '=', $member_id ],
|
||||
[ 'site_id', '=', $site_id ]
|
||||
];
|
||||
$num = model('promotion_jielong_cart')->getSum($where, 'num');
|
||||
|
||||
return intval($num);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取社群接龙购买分页列表
|
||||
*/
|
||||
public function getJielongBuyPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS)
|
||||
{
|
||||
$alias = 'o';
|
||||
$join = [
|
||||
[ 'promotion_jielong_order pjo', 'o.order_id = pjo.relate_order_id', 'inner' ],
|
||||
[ 'member m', 'o.member_id = m.member_id', 'inner' ]
|
||||
];
|
||||
$order = 'o.pay_time desc';
|
||||
$field = 'pjo.relate_order_id,o.member_id,o.order_name,o.pay_time,m.headimg,m.nickname';
|
||||
$list = model('order')->pageList($condition, $field, $order, $page, $page_size, $alias, $join);
|
||||
return $this->success($list);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启接龙活动
|
||||
* @param $jielong_id
|
||||
* @return array|\multitype
|
||||
*/
|
||||
public function cronOpenJielong($jielong_id)
|
||||
{
|
||||
$jielong_info = model('promotion_jielong')->getInfo([ [ 'jielong_id', '=', $jielong_id ] ], 'status,goods_ids');
|
||||
if (!empty($jielong_info)) {
|
||||
|
||||
if ($jielong_info[ 'status' ] == 0) {
|
||||
$res = model('promotion_jielong')->update([ 'status' => 1, 'status_name' => $this->status[ 1 ] ], [ [ 'jielong_id', '=', $jielong_id ] ]);
|
||||
|
||||
$goods = new Goods();
|
||||
$arr_ids = explode(',', $jielong_info[ 'goods_ids' ]);
|
||||
foreach ($arr_ids as $goods_id) {
|
||||
$goods->modifyPromotionAddon($goods_id, [ 'jielong' => $jielong_id ]);
|
||||
}
|
||||
|
||||
return $this->success($res);
|
||||
} else {
|
||||
return $this->error("", "接龙活动已开启或者关闭");
|
||||
}
|
||||
|
||||
} else {
|
||||
return $this->error("", "接龙活动不存在");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭接龙活动
|
||||
* @param $jielong_id
|
||||
* @return array|\multitype
|
||||
*/
|
||||
public function cronCloseJielong($jielong_id)
|
||||
{
|
||||
$jielong_info = model('promotion_jielong')->getInfo([ [ 'jielong_id', '=', $jielong_id ] ], 'status,goods_ids');
|
||||
if (!empty($jielong_info)) {
|
||||
|
||||
if ($jielong_info[ 'status' ] == 1) {
|
||||
$res = model('promotion_jielong')->update([ 'status' => 2, 'status_name' => $this->status[ 2 ] ], [ [ 'jielong_id', '=', $jielong_id ] ]);
|
||||
|
||||
$goods = new Goods();
|
||||
$arr_ids = explode(',', $jielong_info[ 'goods_ids' ]);
|
||||
foreach ($arr_ids as $goods_id) {
|
||||
$goods->modifyPromotionAddon($goods_id, [ 'jielong' => $jielong_id ], true);
|
||||
}
|
||||
|
||||
return $this->success($res);
|
||||
} else {
|
||||
return $this->error("", "该活动已结束");
|
||||
}
|
||||
} else {
|
||||
return $this->error("", "接龙活动不存在");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
73
addon/jielong/model/JielongOrder.php
Executable file
73
addon/jielong/model/JielongOrder.php
Executable file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\jielong\model;
|
||||
|
||||
use app\model\BaseModel;
|
||||
|
||||
/**
|
||||
* 商品接龙
|
||||
*/
|
||||
class JielongOrder extends BaseModel
|
||||
{
|
||||
|
||||
/**
|
||||
* 获取接龙订单信息
|
||||
* @param array $condition
|
||||
* @param string $field
|
||||
* @return array
|
||||
*/
|
||||
public function getJielongOrderInfo($condition = [], $field = '*')
|
||||
{
|
||||
$info = model('promotion_jielong_order')->getInfo($condition, $field);
|
||||
|
||||
$order_goods_list = model('order_goods')->getList([ 'order_id' => $info[ 'relate_order_id' ] ], 'sku_name,price,num,goods_money');
|
||||
foreach ($order_goods_list as $k => $v) {
|
||||
$order_goods_list[ $k ][ 'num' ] = numberFormat($order_goods_list[ $k ][ 'num' ]);
|
||||
}
|
||||
$info[ 'order_goods_list' ] = $order_goods_list;
|
||||
|
||||
return $this->success($info);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取接龙订单分页列表
|
||||
* @param array $condition
|
||||
* @param int $page
|
||||
* @param int $page_size
|
||||
* @param string $order
|
||||
* @param string $field
|
||||
* @return array
|
||||
*/
|
||||
public function getJielongOrderPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'id desc', $field = '*')
|
||||
{
|
||||
$join = [
|
||||
[
|
||||
'order o',
|
||||
'o.order_id = pjo.relate_order_id',
|
||||
'left'
|
||||
]
|
||||
];
|
||||
$field = 'pjo.*,o.order_status_name';
|
||||
$list = model('promotion_jielong_order')->pageList($condition, $field, $order, $page, $page_size, 'pjo', $join);
|
||||
|
||||
//获取关联订单商品
|
||||
foreach ($list[ 'list' ] as $k => $v) {
|
||||
$order_goods_list = model('order_goods')->getList([ 'order_id' => $v[ 'relate_order_id' ] ], 'sku_image,sku_name,price,num');
|
||||
foreach ($order_goods_list as $ck => $cv) {
|
||||
$order_goods_list[ $ck ][ 'num' ] = numberFormat($order_goods_list[ $ck ][ 'num' ]);
|
||||
}
|
||||
$list[ 'list' ][ $k ][ 'order_goods_list' ] = $order_goods_list;
|
||||
}
|
||||
|
||||
return $this->success($list);
|
||||
}
|
||||
|
||||
}
|
||||
230
addon/jielong/model/JielongOrderCommon.php
Executable file
230
addon/jielong/model/JielongOrderCommon.php
Executable file
@@ -0,0 +1,230 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\jielong\model;
|
||||
|
||||
use addon\store\model\StoreGoodsSku;
|
||||
use addon\store\model\StoreOrder;
|
||||
use app\model\BaseModel;
|
||||
use app\model\order\LocalOrder;
|
||||
use app\model\order\Order;
|
||||
use app\model\order\VirtualOrder;
|
||||
|
||||
/**
|
||||
* 商品接龙
|
||||
*/
|
||||
class JielongOrderCommon extends BaseModel
|
||||
{
|
||||
// 订单待付款
|
||||
const ORDER_CREATE = 0;
|
||||
//订单完成(尾款已支付)
|
||||
const ORDER_PAY = 1;
|
||||
// 订单已关闭
|
||||
const ORDER_CLOSE = -1;
|
||||
|
||||
/**
|
||||
* 基础订单状态(不同类型的订单可以不使用这些状态,但是不能冲突)
|
||||
* @var unknown
|
||||
*/
|
||||
public $order_status = [
|
||||
|
||||
self::ORDER_CREATE => [
|
||||
'status' => self::ORDER_CREATE,
|
||||
'name' => '待付款',
|
||||
'is_allow_refund' => 0,
|
||||
'icon' => 'public/uniapp/order/order-icon-send.png',
|
||||
'action' => [
|
||||
[
|
||||
'action' => 'orderClose',
|
||||
'title' => '关闭订单',
|
||||
'color' => ''
|
||||
],
|
||||
[
|
||||
'action' => 'offlinePayDeposit',
|
||||
'title' => '线下支付定金',
|
||||
'color' => ''
|
||||
],
|
||||
],
|
||||
'member_action' => [
|
||||
[
|
||||
'action' => 'orderClose',
|
||||
'title' => '关闭订单',
|
||||
'color' => ''
|
||||
],
|
||||
[
|
||||
'action' => 'orderPayDeposit',
|
||||
'title' => '支付定金',
|
||||
'color' => ''
|
||||
],
|
||||
],
|
||||
'color' => ''
|
||||
],
|
||||
self::ORDER_PAY => [
|
||||
'status' => self::ORDER_PAY,
|
||||
'name' => '已完成',
|
||||
'is_allow_refund' => 0,
|
||||
'icon' => 'public/uniapp/order/order-icon-send.png',
|
||||
'action' => [],
|
||||
'member_action' => [],
|
||||
'color' => ''
|
||||
],
|
||||
self::ORDER_CLOSE => [
|
||||
'status' => self::ORDER_CLOSE,
|
||||
'name' => '已关闭',
|
||||
'is_allow_refund' => 0,
|
||||
'icon' => 'public/uniapp/order/order-icon-close.png',
|
||||
'action' => [
|
||||
[
|
||||
'action' => 'deleteOrder',
|
||||
'title' => '删除订单',
|
||||
'color' => ''
|
||||
],
|
||||
],
|
||||
'member_action' => [
|
||||
[
|
||||
'action' => 'deleteOrder',
|
||||
'title' => '删除订单',
|
||||
'color' => ''
|
||||
],
|
||||
],
|
||||
'color' => ''
|
||||
],
|
||||
];
|
||||
|
||||
/**
|
||||
* 订单状态
|
||||
* @return array
|
||||
*/
|
||||
public function getOrderStatus()
|
||||
{
|
||||
return $this->success($this->order_status);
|
||||
}
|
||||
|
||||
/**
|
||||
* 会员接龙订单分页列表
|
||||
* @param array $condition
|
||||
* @param int $page
|
||||
* @param int $page_size
|
||||
* @param string $order
|
||||
* @param string $field
|
||||
* @return array
|
||||
*/
|
||||
public function getMemberOrderPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
|
||||
{
|
||||
$order_list = model('promotion_jielong_order')->pageList($condition, $field, $order, $page, $page_size);
|
||||
if (!empty($order_list[ 'list' ])) {
|
||||
foreach ($order_list[ 'list' ] as $k => $v) {
|
||||
$order_goods_list = model('order_goods')->getList([
|
||||
'order_id' => $v[ 'relate_order_id' ]
|
||||
]);
|
||||
foreach ($order_goods_list as $ck => $cv) {
|
||||
$order_goods_list[ $ck ][ 'num' ] = numberFormat($order_goods_list[ $ck ][ 'num' ]);
|
||||
}
|
||||
$order_list[ 'list' ][ $k ][ 'order_goods' ] = $order_goods_list;
|
||||
$action = empty($v[ "order_status_action" ]) ? [] : json_decode($v[ "order_status_action" ], true);
|
||||
$member_action = $action[ "member_action" ] ?? [];
|
||||
$order_list[ 'list' ][ $k ][ 'action' ] = $member_action;
|
||||
}
|
||||
}
|
||||
return $this->success($order_list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 会员订单详情
|
||||
* @param $id
|
||||
* @param $member_id
|
||||
*/
|
||||
public function getMemberOrderDetail($id, $member_id, $site_id)
|
||||
{
|
||||
$order_info = model('promotion_jielong_order')->getInfo([ [ 'id', "=", $id ], [ "member_id", "=", $member_id ], [ "site_id", "=", $site_id ] ]);
|
||||
|
||||
if (empty($order_info))
|
||||
return $this->error([], "当前订单不是本账号的订单!");
|
||||
|
||||
$action = empty($order_info[ "order_status_action" ]) ? [] : json_decode($order_info[ "order_status_action" ], true);
|
||||
$member_action = $action[ "member_action" ] ?? [];
|
||||
$order_info[ 'action' ] = $member_action;
|
||||
$order_goods_list = model('order_goods')->getList([ [ 'order_id', "=", $order_info[ 'relate_order_id' ] ], [ "member_id", "=", $member_id ] ]);
|
||||
|
||||
foreach ($order_goods_list as $k => $v) {
|
||||
$refund_action = empty($v[ "refund_status_action" ]) ? [] : json_decode($v[ "refund_status_action" ], true);
|
||||
$refund_action = $refund_action[ "member_action" ] ?? [];
|
||||
$order_goods_list[ $k ][ "refund_action" ] = $refund_action;
|
||||
$order_goods_list[ $k ][ 'num' ] = numberFormat($order_goods_list[ $k ][ 'num' ]);
|
||||
}
|
||||
$order_info[ 'order_goods' ] = $order_goods_list;
|
||||
$order_info[ 'order_id' ] = $order_info[ 'relate_order_id' ];
|
||||
switch ( $order_info[ 'order_type' ] ) {
|
||||
case 1:
|
||||
$order_model = new Order();
|
||||
break;
|
||||
case 2:
|
||||
$order_model = new StoreOrder();
|
||||
break;
|
||||
case 3:
|
||||
$order_model = new LocalOrder();
|
||||
break;
|
||||
case 4:
|
||||
$order_model = new VirtualOrder();
|
||||
break;
|
||||
}
|
||||
|
||||
$temp_info = $order_model->orderDetail($order_info);
|
||||
$order_info = array_merge($order_info, $temp_info);
|
||||
|
||||
return $this->success($order_info);
|
||||
}
|
||||
|
||||
//获取接龙订单id
|
||||
public function getJielongOrderId($id)
|
||||
{
|
||||
$info = model('promotion_jielong_order')->getInfo([ [ 'id', "=", $id ] ], 'relate_order_id');
|
||||
return $info[ 'relate_order_id' ];
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单关闭增加门店商品库存
|
||||
* @param $data
|
||||
* @return array
|
||||
*/
|
||||
public function incStoreGoodsStock($data)
|
||||
{
|
||||
$store_goods_sku_model = new StoreGoodsSku();
|
||||
$stock_result = $store_goods_sku_model->incStock([ "store_id" => $data[ "delivery_store_id" ], "sku_id" => $data[ "sku_id" ], 'stock' => $data[ "num" ] ]);
|
||||
if ($stock_result[ "code" ] < 0) {
|
||||
return $stock_result;
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************************** 订单异步回调 end *****************************************************************/
|
||||
|
||||
/**
|
||||
* 订单删除
|
||||
* @param $condition
|
||||
* @return array
|
||||
*/
|
||||
public function deleteOrder($condition)
|
||||
{
|
||||
$info = model('promotion_jielong_order')->getInfo($condition, 'order_status');
|
||||
if (empty($info)) {
|
||||
return $this->error('', '订单不存在');
|
||||
}
|
||||
if ($info[ 'order_status' ] != self::ORDER_CLOSE) {
|
||||
return $this->error('', '抱歉,只有已关闭的订单才可以删除');
|
||||
}
|
||||
|
||||
$res = model('promotion_jielong_order')->delete($condition);
|
||||
if ($res) {
|
||||
return $this->success($res);
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
}
|
||||
802
addon/jielong/model/Poster.php
Executable file
802
addon/jielong/model/Poster.php
Executable file
@@ -0,0 +1,802 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\jielong\model;
|
||||
|
||||
use app\model\BaseModel;
|
||||
use app\model\system\Config as ConfigModel;
|
||||
use app\model\system\Site;
|
||||
use app\model\upload\Upload;
|
||||
use extend\Poster as PosterExtend;
|
||||
|
||||
/**
|
||||
* 海报生成类
|
||||
*/
|
||||
class Poster extends BaseModel
|
||||
{
|
||||
/**
|
||||
* 接龙海报 用户端
|
||||
*/
|
||||
public function goods($app_type, $page, $qrcode_param, $promotion_type, $site_id)
|
||||
{
|
||||
//根据不同的app_type 生成不同的分享地址 二维码
|
||||
try {
|
||||
$goods_info = $this->getGoodsInfo($qrcode_param[ 'jielong_id' ], $site_id);
|
||||
if (empty($goods_info)) return $this->error('未获取到商品信息');
|
||||
$weapp_status = 0;
|
||||
//判断是否绑定小程序
|
||||
if ($app_type == 'weapp') {
|
||||
$config = new ConfigModel();
|
||||
$res = $config->getConfig([ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'WEAPP_CONFIG' ] ]);
|
||||
if (!empty($res[ 'data' ])) {
|
||||
if (empty($res[ 'data' ][ 'value' ][ 'qrcode' ])) {
|
||||
return $this->success([ "status" => 2 ]);
|
||||
} else {
|
||||
$weapp_status = 1;
|
||||
}
|
||||
} else {
|
||||
return $this->success([ "status" => 2 ]);
|
||||
}
|
||||
}
|
||||
|
||||
$qrcode_info = $this->getGoodsQrcode($app_type, $page, $qrcode_param, $promotion_type, $site_id);
|
||||
|
||||
if ($qrcode_info[ 'code' ] < 0) return $qrcode_info;
|
||||
|
||||
if (!empty($qrcode_param[ 'source_member' ])) {
|
||||
$member_info = $this->getMemberInfo($qrcode_param[ 'source_member' ]);
|
||||
}
|
||||
|
||||
//平台配置信息
|
||||
$site_model = new Site();
|
||||
$site_info = $site_model->getSiteInfo([ [ "site_id", "=", $site_id ] ]);
|
||||
$site_name = $site_info[ 'data' ][ 'site_name' ];
|
||||
|
||||
$jielong_info = $goods_info[ 'jielong_info' ];
|
||||
$goods_info = $goods_info[ 'list' ];
|
||||
$poster = new PosterExtend(600, 960);
|
||||
|
||||
$option = [
|
||||
[
|
||||
'action' => 'imageCopy', // 背景图
|
||||
'data' => [
|
||||
'upload/poster/bg/jielong.png',
|
||||
0,
|
||||
0,
|
||||
600,
|
||||
960,
|
||||
'square',
|
||||
true,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageCopy', // 二维码/太阳码
|
||||
'data' => [
|
||||
$qrcode_info[ 'data' ][ 'path' ],
|
||||
$weapp_status ? 383 : 413, //x
|
||||
$weapp_status ? 740 : 770, //y
|
||||
$weapp_status ? 165 : 135,
|
||||
$weapp_status ? 165 : 135,
|
||||
'square',
|
||||
0,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 接龙时间
|
||||
'data' => [
|
||||
$jielong_info[ 'jielong_time' ],
|
||||
18,
|
||||
[ 255, 95, 75 ],
|
||||
60,
|
||||
845,
|
||||
500,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 接龙状态
|
||||
'data' => [
|
||||
$jielong_info[ 'jielong_status_name' ],
|
||||
18,
|
||||
[ 18, 18, 18 ],
|
||||
270,
|
||||
845,
|
||||
500,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageCircularCopy', // 写入店铺头像
|
||||
'data' => [
|
||||
!empty($site_info[ 'data' ][ 'logo_square' ]) ? $site_info[ 'data' ][ 'logo_square' ] : 'public/uniapp/shop_img.png',
|
||||
30,
|
||||
40,
|
||||
80,
|
||||
80
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入店铺名称
|
||||
'data' => [
|
||||
!empty($site_name) ? $site_name : '单商户v5',
|
||||
22,
|
||||
[ 255, 255, 255 ],
|
||||
130,
|
||||
80,
|
||||
440,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入接龙语
|
||||
'data' => [
|
||||
'"这个接龙不错,快和我一起参与吧!"',
|
||||
18,
|
||||
[ 255, 255, 255 ],
|
||||
130,
|
||||
115,
|
||||
440,
|
||||
1
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
$goods_option = [];
|
||||
$y = 0;
|
||||
foreach ($goods_info as &$v) {
|
||||
array_push($goods_option,
|
||||
[
|
||||
'action' => 'imageCopy', // 商品图
|
||||
'data' => [
|
||||
$v[ 'goods_image' ],
|
||||
60,
|
||||
190 + $y,//y
|
||||
140,
|
||||
140,
|
||||
'square',
|
||||
30,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品名称
|
||||
'data' => [
|
||||
$v[ 'goods_name' ],
|
||||
16,
|
||||
[ 89, 89, 89 ],
|
||||
218,
|
||||
225 + $y,//y
|
||||
330,
|
||||
2,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品促销语
|
||||
'data' => [
|
||||
$v[ 'introduction' ],
|
||||
12,
|
||||
[ 205, 205, 205 ],
|
||||
218,
|
||||
287 + $y,//y
|
||||
330,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品售价
|
||||
'data' => [
|
||||
'¥ ' . $v[ 'discount_price' ],
|
||||
20,
|
||||
[ 255, 95, 75 ],
|
||||
218,
|
||||
326 + $y,//y
|
||||
500,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品原价
|
||||
'data' => [
|
||||
'¥ ' . $v[ 'market_price' ],
|
||||
16,
|
||||
[ 205, 205, 205 ],
|
||||
340,
|
||||
326 + $y,//y
|
||||
500,
|
||||
1,
|
||||
true,
|
||||
!empty($v[ 'is_market_price' ]) ? 1 : 0,
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageCopy', // 删除线
|
||||
'data' => [
|
||||
'upload/poster/bg/del_line.png',
|
||||
337,
|
||||
283 + $y,//y
|
||||
85,
|
||||
64,
|
||||
'square',
|
||||
true,
|
||||
!empty($v[ 'is_market_price' ]) ? 1 : 0,
|
||||
]
|
||||
]
|
||||
);
|
||||
$y += 180;
|
||||
}
|
||||
|
||||
$option = array_merge($option, $goods_option);
|
||||
$option_res = $poster->create($option);
|
||||
if (is_array($option_res)) return $option_res;
|
||||
$res = $option_res->jpeg('upload/poster/jielong', 'goods_' . $promotion_type . '_' . $qrcode_param[ 'jielong_id' ] . '_' . time() . '_' . $app_type);
|
||||
|
||||
if ($res[ 'code' ] == 0) {
|
||||
$upload = new Upload($site_id);
|
||||
$cloud_res = $upload->fileCloud($res[ 'data' ][ 'path' ]);
|
||||
if ($cloud_res[ 'code' ] >= 0) {
|
||||
if ($app_type == 'weapp') {
|
||||
return $this->success([ "poster_path" => $cloud_res[ 'data' ] . '?code=' . uniqid(), "qrcode_path" => $qrcode_info[ 'data' ][ 'path' ], "status" => $weapp_status ]);
|
||||
} else {
|
||||
return $this->success([ "poster_path" => $cloud_res[ 'data' ] . '?code=' . uniqid(), "qrcode_path" => $qrcode_info[ 'data' ][ 'path' ], "qrcode_url" => $qrcode_info[ 'data' ][ 'url' ] ]);
|
||||
}
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
return $res;
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage() . $e->getFile() . $e->getLine());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 接龙海报 管理端
|
||||
*/
|
||||
public function goodsShop($app_type, $page, $qrcode_param, $promotion_type, $site_id)
|
||||
{
|
||||
//根据不同的app_type 生成不同的分享地址 二维码
|
||||
try {
|
||||
$goods_info = $this->getGoodsInfo($qrcode_param[ 'jielong_id' ], $site_id);
|
||||
if (empty($goods_info)) return $this->error('未获取到商品信息');
|
||||
|
||||
//判断是否绑定小程序
|
||||
$config = new ConfigModel();
|
||||
$res = $config->getConfig([ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'WEAPP_CONFIG' ] ]);
|
||||
|
||||
$status = 0;
|
||||
if (!empty($res[ 'data' ])) {
|
||||
if (!empty($res[ 'data' ][ 'value' ][ 'qrcode' ])) {
|
||||
$status = 1;
|
||||
}
|
||||
}
|
||||
|
||||
//平台配置信息
|
||||
$site_model = new Site();
|
||||
$site_info = $site_model->getSiteInfo([ [ "site_id", "=", $site_id ] ]);
|
||||
$site_name = $site_info[ 'data' ][ 'site_name' ];
|
||||
|
||||
$h5_qrcode_info = $this->getGoodsQrcode('h5', $page, $qrcode_param, $promotion_type, $site_id);
|
||||
if ($h5_qrcode_info[ 'code' ] < 0) return $h5_qrcode_info;
|
||||
|
||||
$jielong_info = $goods_info[ 'jielong_info' ];
|
||||
$goods_info = $goods_info[ 'list' ];
|
||||
$poster = new PosterExtend(600, 960);
|
||||
$poster_2 = new PosterExtend(600, 960);
|
||||
$option = [
|
||||
[
|
||||
'action' => 'imageCopy', // 背景图
|
||||
'data' => [
|
||||
'upload/poster/bg/jielong.png',
|
||||
0,
|
||||
0,
|
||||
600,
|
||||
960,
|
||||
'square',
|
||||
true,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageCopy', // 二维码
|
||||
'data' => [
|
||||
$h5_qrcode_info[ 'data' ][ 'path' ],
|
||||
413, //x
|
||||
770, //y
|
||||
135,
|
||||
135,
|
||||
'square',
|
||||
0,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 接龙时间
|
||||
'data' => [
|
||||
$jielong_info[ 'jielong_time' ],
|
||||
18,
|
||||
[ 255, 95, 75 ],
|
||||
60,
|
||||
845,
|
||||
500,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 接龙状态
|
||||
'data' => [
|
||||
$jielong_info[ 'jielong_status_name' ],
|
||||
18,
|
||||
[ 18, 18, 18 ],
|
||||
270,
|
||||
845,
|
||||
500,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageCircularCopy', // 写入店铺头像
|
||||
'data' => [
|
||||
!empty($site_info[ 'data' ][ 'logo_square' ]) ? $site_info[ 'data' ][ 'logo_square' ] : 'public/uniapp/shop_img.png',
|
||||
30,
|
||||
40,
|
||||
80,
|
||||
80
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入店铺名称
|
||||
'data' => [
|
||||
!empty($site_name) ? $site_name : '单商户v5',
|
||||
22,
|
||||
[ 255, 255, 255 ],
|
||||
130,
|
||||
80,
|
||||
440,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入接龙语
|
||||
'data' => [
|
||||
'"这个接龙不错,快和我一起参与吧!"',
|
||||
18,
|
||||
[ 255, 255, 255 ],
|
||||
130,
|
||||
115,
|
||||
440,
|
||||
1
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
$goods_option = [];
|
||||
$y = 0;
|
||||
foreach ($goods_info as &$v) {
|
||||
array_push($goods_option,
|
||||
[
|
||||
'action' => 'imageCopy', // 商品图
|
||||
'data' => [
|
||||
$v[ 'goods_image' ],
|
||||
60,
|
||||
190 + $y,//y
|
||||
140,
|
||||
140,
|
||||
'square',
|
||||
30,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品名称
|
||||
'data' => [
|
||||
$v[ 'goods_name' ],
|
||||
16,
|
||||
[ 89, 89, 89 ],
|
||||
218,
|
||||
225 + $y,//y
|
||||
330,
|
||||
2,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品促销语
|
||||
'data' => [
|
||||
$v[ 'introduction' ],
|
||||
12,
|
||||
[ 205, 205, 205 ],
|
||||
218,
|
||||
287 + $y,//y
|
||||
330,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品售价
|
||||
'data' => [
|
||||
'¥ ' . $v[ 'discount_price' ],
|
||||
20,
|
||||
[ 255, 95, 75 ],
|
||||
218,
|
||||
326 + $y,//y
|
||||
500,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品原价
|
||||
'data' => [
|
||||
'¥ ' . $v[ 'market_price' ],
|
||||
16,
|
||||
[ 205, 205, 205 ],
|
||||
340,
|
||||
326 + $y,//y
|
||||
500,
|
||||
1,
|
||||
true,
|
||||
!empty($v[ 'is_market_price' ]) ? 1 : 0,
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageCopy', // 删除线
|
||||
'data' => [
|
||||
'upload/poster/bg/del_line.png',
|
||||
337,
|
||||
283 + $y,//y
|
||||
85,
|
||||
64,
|
||||
'square',
|
||||
true,
|
||||
!empty($v[ 'is_market_price' ]) ? 1 : 0,
|
||||
]
|
||||
]
|
||||
);
|
||||
$y += 180;
|
||||
}
|
||||
|
||||
$option = array_merge($option, $goods_option);
|
||||
$option_res = $poster->create($option);
|
||||
if (is_array($option_res)) return $option_res;
|
||||
|
||||
$res = $option_res->jpeg('upload/poster/jielong', 'goods_' . $promotion_type . '_' . $qrcode_param[ 'jielong_id' ] . rand(0, 99999) . '_' . 'h5');
|
||||
|
||||
if ($status) {
|
||||
$weapp_qrcode_info = $this->getGoodsQrcode('weapp', $page, $qrcode_param, $promotion_type, $site_id);
|
||||
if ($weapp_qrcode_info[ 'code' ] < 0) return $weapp_qrcode_info;
|
||||
$option_2 = [
|
||||
[
|
||||
'action' => 'imageCopy', // 背景图
|
||||
'data' => [
|
||||
'upload/poster/bg/jielong.png',
|
||||
0,
|
||||
0,
|
||||
600,
|
||||
960,
|
||||
'square',
|
||||
true,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageCopy', //太阳码
|
||||
'data' => [
|
||||
$weapp_qrcode_info[ 'data' ][ 'path' ],
|
||||
383, //x
|
||||
740, //y
|
||||
165,
|
||||
165,
|
||||
'square',
|
||||
0,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 接龙时间
|
||||
'data' => [
|
||||
$jielong_info[ 'jielong_time' ],
|
||||
18,
|
||||
[ 255, 95, 75 ],
|
||||
60,
|
||||
845,
|
||||
500,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 接龙状态
|
||||
'data' => [
|
||||
$jielong_info[ 'jielong_status_name' ],
|
||||
18,
|
||||
[ 18, 18, 18 ],
|
||||
270,
|
||||
845,
|
||||
500,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageCircularCopy', // 写入店铺头像
|
||||
'data' => [
|
||||
'public/uniapp/shop_img.png',
|
||||
30,
|
||||
40,
|
||||
80,
|
||||
80
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入店铺名称
|
||||
'data' => [
|
||||
!empty($site_name) ? $site_name : '单商户v5',
|
||||
22,
|
||||
[ 255, 255, 255 ],
|
||||
130,
|
||||
80,
|
||||
440,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入接龙语
|
||||
'data' => [
|
||||
'"这个接龙不错,快和我一起参与吧!"',
|
||||
18,
|
||||
[ 255, 255, 255 ],
|
||||
130,
|
||||
115,
|
||||
440,
|
||||
1
|
||||
]
|
||||
]
|
||||
];
|
||||
|
||||
$goods_option_2 = [];
|
||||
$y_2 = 0;
|
||||
foreach ($goods_info as &$v) {
|
||||
array_push($goods_option_2,
|
||||
[
|
||||
'action' => 'imageCopy', // 商品图
|
||||
'data' => [
|
||||
$v[ 'goods_image' ],
|
||||
60,
|
||||
190 + $y_2,//y
|
||||
140,
|
||||
140,
|
||||
'square',
|
||||
30,
|
||||
1
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品名称
|
||||
'data' => [
|
||||
$v[ 'goods_name' ],
|
||||
16,
|
||||
[ 89, 89, 89 ],
|
||||
218,
|
||||
225 + $y_2,//y
|
||||
330,
|
||||
2,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品促销语
|
||||
'data' => [
|
||||
$v[ 'introduction' ],
|
||||
12,
|
||||
[ 205, 205, 205 ],
|
||||
218,
|
||||
287 + $y_2,//y
|
||||
330,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品售价
|
||||
'data' => [
|
||||
'¥ ' . $v[ 'discount_price' ],
|
||||
20,
|
||||
[ 255, 95, 75 ],
|
||||
218,
|
||||
326 + $y_2,//y
|
||||
500,
|
||||
1,
|
||||
true
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageText', // 写入商品原价
|
||||
'data' => [
|
||||
'¥ ' . $v[ 'market_price' ],
|
||||
16,
|
||||
[ 205, 205, 205 ],
|
||||
340,
|
||||
326 + $y_2,//y
|
||||
500,
|
||||
1,
|
||||
true,
|
||||
!empty($v[ 'is_market_price' ]) ? 1 : 0,
|
||||
]
|
||||
],
|
||||
[
|
||||
'action' => 'imageCopy', // 删除线
|
||||
'data' => [
|
||||
'upload/poster/bg/del_line.png',
|
||||
337,
|
||||
283 + $y_2,//y
|
||||
85,
|
||||
64,
|
||||
'square',
|
||||
true,
|
||||
!empty($v[ 'is_market_price' ]) ? 1 : 0,
|
||||
]
|
||||
]
|
||||
);
|
||||
$y_2 += 180;
|
||||
}
|
||||
|
||||
$option_2 = array_merge($option_2, $goods_option_2);
|
||||
$option_res_2 = $poster_2->create($option_2);
|
||||
if (is_array($option_res_2)) return $option_res_2;
|
||||
$res_2 = $option_res_2->jpeg('upload/poster/jielong', 'goods_' . $promotion_type . '_' . $qrcode_param[ 'jielong_id' ] . rand(0, 999999) . '_' . 'weapp');
|
||||
|
||||
}
|
||||
|
||||
//if中的三元运算用法 true or 1==1 均可
|
||||
if ($res[ 'code' ] == 0 && ( $status ? $res_2[ 'code' ] == 0 : true )) {
|
||||
$upload = new Upload($site_id);
|
||||
$cloud_res = $upload->fileCloud($res[ 'data' ][ 'path' ]);
|
||||
|
||||
if ($status) {
|
||||
$cloud_res_2 = $upload->fileCloud($res_2[ 'data' ][ 'path' ]);
|
||||
}
|
||||
|
||||
if ($cloud_res[ 'code' ] >= 0 && ( $status ? $cloud_res_2[ 'code' ] >= 0 : 1 == 1 )) {
|
||||
$data = [
|
||||
'h5_poster_path' => $cloud_res[ 'data' ],
|
||||
'h5_qrcode_path' => $h5_qrcode_info[ 'data' ][ 'path' ],
|
||||
'h5_qrcode_url' => $h5_qrcode_info[ 'data' ][ 'url' ],
|
||||
'weapp_poster_path' => $status ? $cloud_res_2[ 'data' ] : '',
|
||||
'weapp_qrcode_path' => $status ? $weapp_qrcode_info[ 'data' ][ 'path' ] : '',
|
||||
'status' => $status,
|
||||
'code' => uniqid()
|
||||
];
|
||||
return $this->success($data);
|
||||
} else {
|
||||
return $this->error();
|
||||
}
|
||||
}
|
||||
|
||||
return $res;
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage() . $e->getFile() . $e->getLine());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户信息
|
||||
* @param unknown $member_id
|
||||
*/
|
||||
private function getMemberInfo($member_id)
|
||||
{
|
||||
$info = model('member')->getInfo([ 'member_id' => $member_id ], 'nickname,headimg');
|
||||
return $info;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品信息
|
||||
* @param unknown $jielong_id
|
||||
*/
|
||||
private function getGoodsInfo($jielong_id, $site_id)
|
||||
{
|
||||
$condition = [
|
||||
[ 'pjg.jielong_id', '=', $jielong_id ],
|
||||
[ 'g.goods_state', '=', 1 ],
|
||||
[ 'g.is_delete', '=', 0 ],
|
||||
[ 'g.site_id', '=', $site_id ]
|
||||
];
|
||||
$alias = 'pjg';
|
||||
$join = [
|
||||
[ 'goods g', 'pjg.goods_id = g.goods_id', 'inner' ],
|
||||
[ 'goods_sku gs', 'g.sku_id = gs.sku_id', 'inner' ]
|
||||
];
|
||||
$field = 'g.goods_image,g.goods_name,g.goods_stock,gs.price,gs.market_price,gs.discount_price,g.introduction';
|
||||
//接龙活动中商品信息
|
||||
$list = model('promotion_jielong_goods')->pageList($condition, $field, 'id asc', 1, 3, $alias, $join);
|
||||
$info = model('promotion_jielong')->getInfo([ 'jielong_id' => $jielong_id ], 'status,start_time,end_time');
|
||||
if ($info[ 'status' ] == 0) {
|
||||
$list[ 'jielong_info' ][ 'jielong_status_name' ] = '开始';
|
||||
$list[ 'jielong_info' ][ 'jielong_time' ] = date("m月-d日 H:i:s", $info[ 'start_time' ]);
|
||||
} else {
|
||||
$list[ 'jielong_info' ][ 'jielong_status_name' ] = '结束';
|
||||
$list[ 'jielong_info' ][ 'jielong_time' ] = date("m月d日 H:i:s", $info[ 'end_time' ]);
|
||||
}
|
||||
|
||||
//获取第一张图片
|
||||
foreach ($list[ 'list' ] as &$v) {
|
||||
$v[ 'goods_image' ] = explode(',', $v[ 'goods_image' ])[ 0 ];
|
||||
$v[ 'introduction' ] = $v[ 'introduction' ] ?: '精选好物,等你来抢';
|
||||
$v[ 'is_market_price' ] = 1;
|
||||
if ($v[ 'market_price' ] == 0) {
|
||||
$v[ 'is_market_price' ] = 0;
|
||||
}
|
||||
|
||||
//判断是否是全路径
|
||||
// if (!preg_match('/(http:\/\/)|(https:\/\/)/i', $v['goods_image'])) {
|
||||
// $v['goods_image'] = __ROOT__.'/'.$v['goods_image'];
|
||||
// }
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取商品二维码
|
||||
* @param unknown $app_type 请求类型
|
||||
* @param unknown $page uniapp页面路径
|
||||
* @param unknown $qrcode_param 二维码携带参数
|
||||
* @param string $promotion_type 活动类型 null为无活动
|
||||
*/
|
||||
private function getGoodsQrcode($app_type, $page, $qrcode_param, $promotion_type, $site_id)
|
||||
{
|
||||
$res = event('Qrcode', [
|
||||
'site_id' => $site_id,
|
||||
'app_type' => $app_type,
|
||||
'type' => 'create',
|
||||
'data' => [ 'jielong_id' => $qrcode_param[ 'jielong_id' ] ],
|
||||
'page' => $page,
|
||||
'qrcode_path' => 'upload/qrcode/jielong',
|
||||
// 'qrcode_name' => 'goods_' . $promotion_type . '_' . $qrcode_param['jielong_id'] . '_' . $qrcode_param['source_member'] . '_' . $site_id,
|
||||
'qrcode_name' => 'goods_' . $promotion_type . '_' . $qrcode_param[ 'jielong_id' ] . '_' . $site_id,
|
||||
], true);
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取接龙推广
|
||||
* @param $page
|
||||
* @param $qrcode_param
|
||||
* @param $promotion_type
|
||||
* @param $site_id
|
||||
* @return array
|
||||
*/
|
||||
public function getSolitaireQrcode($page, $qrcode_param, $promotion_type, $app_type, $site_id)
|
||||
{
|
||||
|
||||
$params = [
|
||||
'site_id' => $site_id,
|
||||
'data' => [ 'jielong_id' => $qrcode_param[ 'jielong_id' ] ],
|
||||
'page' => $page,
|
||||
'promotion_type' => $promotion_type,
|
||||
'app_type' => $app_type,
|
||||
'h5_path' => $page . '?jielong_id=' . $qrcode_param[ 'jielong_id' ],
|
||||
'qrcode_path' => 'upload/qrcode/jielong',
|
||||
'qrcode_name' => 'goods_' . $promotion_type . '_' . $qrcode_param[ 'jielong_id' ] . '_' . $site_id,
|
||||
];
|
||||
|
||||
$solitaire = event('PromotionQrcode', $params, true);
|
||||
return $this->success($solitaire);
|
||||
}
|
||||
}
|
||||
83
addon/jielong/model/share/WchatShare.php
Executable file
83
addon/jielong/model/share/WchatShare.php
Executable file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\jielong\model\share;
|
||||
|
||||
use addon\jielong\model\Jielong as JielongModel;
|
||||
use app\model\share\WchatShareBase as BaseModel;
|
||||
|
||||
/**
|
||||
* 分享
|
||||
*/
|
||||
class WchatShare extends BaseModel
|
||||
{
|
||||
protected $config = [
|
||||
[
|
||||
'title' => '接龙分享',
|
||||
'config_key' => 'WCHAT_SHARE_CONFIG_JIELONG_PROMOTE',
|
||||
'path' => [ '/pages_promotion/jielong/jielong' ],
|
||||
'method_prefix' => 'goodsDetail',
|
||||
],
|
||||
];
|
||||
|
||||
protected $sort = 4;
|
||||
|
||||
/**
|
||||
* 接龙分享
|
||||
* @param $param
|
||||
* @return array
|
||||
*/
|
||||
protected function goodsDetailShareData($param)
|
||||
{
|
||||
$site_id = $param[ 'site_id' ] ?? 0;
|
||||
$member_id = $param[ 'member_id' ] ?? 0;
|
||||
$url = $param[ 'url' ];
|
||||
|
||||
$parse_res = parse_url($url);
|
||||
parse_str($parse_res[ 'query' ] ?? '', $query);
|
||||
if (isset($query[ 'jielong_id' ]) || isset($query[ 'id' ])) {
|
||||
$jielong_id = $query['id'] ?? $query['jielong_id'];
|
||||
$condition = [
|
||||
[ 'pjg.jielong_id', '=', $jielong_id ],
|
||||
[ 'g.goods_state', '=', 1 ],
|
||||
[ 'g.is_delete', '=', 0 ],
|
||||
[ 'g.site_id', '=', $site_id ]
|
||||
];
|
||||
$jielong_model = new JielongModel();
|
||||
$sku_info = $jielong_model->getJielongActivityDetail($condition, 1, PAGE_LIST_ROWS, '', '', $jielong_id)[ 'data' ];
|
||||
if (!empty($sku_info)) {
|
||||
$config_method = preg_replace('/Data$/', 'Config', __FUNCTION__);
|
||||
$config_model = new \app\model\share\WchatShare();
|
||||
$config_data = $config_model->$config_method($param);
|
||||
$title = str_replace('{goods_name}', $sku_info[ 'info' ][ 'jielong_name' ], $config_data[ 'value' ][ 'title' ]);
|
||||
$desc = str_replace('{price}', $sku_info[ 'list' ][ 0 ][ 'price' ], $config_data[ 'value' ][ 'desc' ]);
|
||||
$desc = str_replace('\n', '\r\n', $desc);
|
||||
$link = $parse_res[ 'scheme' ] . '://' . $parse_res[ 'host' ] . $parse_res[ 'path' ] . '?jielong_id=' . $jielong_id;
|
||||
if (!empty($member_id)) $link .= '&source_member=' . $member_id;
|
||||
$image_url = $sku_info[ 'list' ][ 0 ][ 'goods_image' ];
|
||||
|
||||
$data = [
|
||||
'title' => $title,
|
||||
'desc' => $desc,
|
||||
'link' => $link,
|
||||
'imgUrl' => $image_url,
|
||||
];
|
||||
return [
|
||||
'permission' => [
|
||||
'hideOptionMenu' => false,
|
||||
'hideMenuItems' => [],
|
||||
],
|
||||
'data' => $data,//分享内容
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
208
addon/jielong/shop/controller/Jielong.php
Executable file
208
addon/jielong/shop/controller/Jielong.php
Executable file
@@ -0,0 +1,208 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\jielong\shop\controller;
|
||||
|
||||
use app\shop\controller\BaseShop;
|
||||
use addon\jielong\model\Jielong as JielongModel;
|
||||
use addon\jielong\model\Poster;
|
||||
|
||||
class Jielong extends BaseShop
|
||||
{
|
||||
|
||||
/*
|
||||
* 接龙活动列表
|
||||
*/
|
||||
public function lists()
|
||||
{
|
||||
$model = new JielongModel();
|
||||
$condition = [
|
||||
[ 'is_delete', '=', 0 ],
|
||||
[ 'site_id', '=', $this->site_id ]
|
||||
];
|
||||
|
||||
if (request()->isJson()) {
|
||||
$page = input('page', 1);
|
||||
$page_size = input('page_size', PAGE_LIST_ROWS);
|
||||
$status = input('status', '');//活动状态
|
||||
if ($status !== '') {
|
||||
$condition[] = [ 'status', '=', $status ];
|
||||
}
|
||||
//商品名称
|
||||
$jielong_name = input('jielong_name', '');
|
||||
if ($jielong_name) {
|
||||
$condition[] = [ 'jielong_name', 'like', '%' . $jielong_name . '%' ];
|
||||
}
|
||||
$start_time = input('start_time', '');
|
||||
$end_time = input('end_time', '');
|
||||
|
||||
if ($start_time && !$end_time) {
|
||||
$condition[] = [ 'end_time', '>=', date_to_time($start_time) ];
|
||||
} elseif (!$start_time && $end_time) {
|
||||
$condition[] = [ 'start_time', '<=', date_to_time($end_time) ];
|
||||
} elseif ($start_time && $end_time) {
|
||||
$start_timestamp = date_to_time($start_time);
|
||||
$end_timestamp = date_to_time($end_time);
|
||||
$sql = "start_time between {$start_timestamp} and {$end_timestamp}";
|
||||
$sql .= " or end_time between {$start_timestamp} and {$end_timestamp}";
|
||||
$sql .= " or (start_time <= {$start_timestamp} and end_time >= {$end_timestamp})";
|
||||
$condition[] = [ '', 'exp', \think\facade\Db::raw($sql) ];
|
||||
}
|
||||
|
||||
$list = $model->getJielongPageList($condition, $page, $page_size, 'create_time desc', $this->site_id);
|
||||
return $list;
|
||||
} else {
|
||||
$status_list = $model->getJielongStatus()[ 'data' ] ?? [];
|
||||
|
||||
$this->assign('jielong_status', $status_list);
|
||||
return $this->fetch("jielong/lists");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加接龙活动
|
||||
*/
|
||||
public function add()
|
||||
{
|
||||
if (request()->isJson()) {
|
||||
|
||||
$common_data = [
|
||||
'site_id' => $this->site_id,
|
||||
'jielong_name' => input('jielong_name', ''),//活动名称
|
||||
'start_time' => strtotime(input('start_time', '')),//活动开始时间
|
||||
'end_time' => strtotime(input('end_time', '')),//活动结束时间
|
||||
'take_start_time' => strtotime(input('take_start_time', '')),//自提开始时间
|
||||
'take_end_time' => strtotime(input('take_end_time', '')),//自提结束时间
|
||||
'desc' => input('desc', ''),//活动说明
|
||||
];
|
||||
|
||||
$goods = [
|
||||
'goods_ids' => input('goods_ids', '')
|
||||
];
|
||||
|
||||
$model = new JielongModel();
|
||||
return $model->addJielong($common_data, $goods);
|
||||
} else {
|
||||
return $this->fetch("jielong/add");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑活动
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$jielong_model = new JielongModel();
|
||||
|
||||
$jielong_id = input('jielong_id', '');
|
||||
if (request()->isJson()) {
|
||||
|
||||
$common_data = [
|
||||
'jielong_id' => $jielong_id,
|
||||
'site_id' => $this->site_id,
|
||||
'jielong_name' => input('jielong_name', ''),//活动名称
|
||||
'start_time' => strtotime(input('start_time', '')),//活动开始时间
|
||||
'end_time' => strtotime(input('end_time', '')),//活动结束时间
|
||||
'desc' => input('desc', ''),//活动说明
|
||||
'take_start_time' => strtotime(input('take_start_time', '')),//自提开始时间
|
||||
'take_end_time' => strtotime(input('take_end_time', '')),//自提结束时间
|
||||
];
|
||||
|
||||
$sku_list = input('sku_list', '');
|
||||
$goods = input('goods_ids', []);
|
||||
|
||||
return $jielong_model->editJielong($common_data, $goods, $sku_list);
|
||||
} else {
|
||||
|
||||
//获取接龙信息
|
||||
$jielong_info = $jielong_model->getJielongDetail($jielong_id, $this->site_id);
|
||||
$this->assign('jielong_info', $jielong_info[ 'data' ]);
|
||||
|
||||
return $this->fetch("jielong/edit");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 接龙详情
|
||||
*/
|
||||
public function detail()
|
||||
{
|
||||
$jielong_model = new JielongModel();
|
||||
$jielong_id = input('jielong_id', '');
|
||||
$jielong_info = $jielong_model->getJielongDetail($jielong_id, $this->site_id)[ 'data' ] ?? [];
|
||||
$this->assign('info', $jielong_info);
|
||||
return $this->fetch("jielong/detail");
|
||||
}
|
||||
|
||||
/*
|
||||
* 删除接龙活动
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
$jielong_id = input('jielong_id', '');
|
||||
$jielong_model = new JielongModel();
|
||||
return $jielong_model->deleteJielong($jielong_id, $this->site_id);
|
||||
}
|
||||
|
||||
/*
|
||||
* 结束接龙活动
|
||||
*/
|
||||
public function finish()
|
||||
{
|
||||
$jielong_id = input('jielong_id', '');
|
||||
$model = new JielongModel();
|
||||
return $model->finishJielong($jielong_id, $this->site_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 接龙活动海报
|
||||
*/
|
||||
public function poster()
|
||||
{
|
||||
$qrcode_param[ 'jielong_id' ] = input('jielong_id', '');
|
||||
$app_type = input('app_type', '');
|
||||
|
||||
$poster = new Poster();
|
||||
$res = $poster->getSolitaireQrcode('/pages_promotion/jielong/jielong', $qrcode_param, 'jielong', $app_type, $this->site_id);
|
||||
// $res = $poster->goodsShop('', '/promotionpages/jielong/jielong', $qrcode_param, 'jielong', $this->site_id);
|
||||
return $res;
|
||||
}
|
||||
|
||||
/*
|
||||
* 删除接龙活动
|
||||
*/
|
||||
public function deleteAll()
|
||||
{
|
||||
if (request()->isJson()) {
|
||||
$jielong_id = input('jielong_id', '');
|
||||
$jielong_model = new JielongModel();
|
||||
foreach ($jielong_id as $k => $v){
|
||||
$res = $jielong_model->deleteJielong($v, $this->site_id);
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 结束接龙活动
|
||||
*/
|
||||
public function finishAll()
|
||||
{
|
||||
if (request()->isJson()) {
|
||||
$jielong_id = input('jielong_id', '');
|
||||
$model = new JielongModel();
|
||||
foreach ($jielong_id as $k => $v){
|
||||
$res = $model->finishJielong($v, $this->site_id);
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
152
addon/jielong/shop/controller/Order.php
Executable file
152
addon/jielong/shop/controller/Order.php
Executable file
@@ -0,0 +1,152 @@
|
||||
<?php
|
||||
/**
|
||||
* Niushop商城系统 - 团队十年电商经验汇集巨献!
|
||||
* =========================================================
|
||||
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
|
||||
* ----------------------------------------------
|
||||
* 官方网址: https://www.niushop.com
|
||||
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
|
||||
* 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
|
||||
* =========================================================
|
||||
*/
|
||||
|
||||
namespace addon\jielong\shop\controller;
|
||||
|
||||
use addon\jielong\model\JielongOrder;
|
||||
use addon\jielong\model\JielongOrderCommon;
|
||||
use app\shop\controller\BaseShop;
|
||||
use app\model\order\OrderCommon as OrderCommonModel;
|
||||
use think\facade\Config;
|
||||
|
||||
/**
|
||||
* 接龙订单
|
||||
*/
|
||||
class Order extends BaseShop
|
||||
{
|
||||
/*
|
||||
* 订单列表
|
||||
*/
|
||||
public function lists()
|
||||
{
|
||||
$jielong_id = input('jielong_id', 0);
|
||||
$jielong_order_model = new JielongOrder();
|
||||
$condition = [
|
||||
[ 'pjo.site_id', '=', $this->site_id ],
|
||||
];
|
||||
if ($jielong_id > 0) {
|
||||
$condition[] = [ 'jielong_id', '=', $jielong_id ];
|
||||
}
|
||||
|
||||
if (request()->isJson()) {
|
||||
|
||||
$page = input('page', 1);
|
||||
$page_size = input('page_size', PAGE_LIST_ROWS);
|
||||
|
||||
//搜索类型(订单号,收货人姓名,收货人手机号码)
|
||||
$order_label = input('order_label', 'order_no');
|
||||
$search = input('search', '');
|
||||
if ($search) {
|
||||
$condition[] = [ 'pjo.' . $order_label, 'like', '%' . $search . '%' ];
|
||||
}
|
||||
//订单状态
|
||||
$order_status = input('order_status', '');
|
||||
if ($order_status !== '') {
|
||||
$condition[] = [ 'o.order_status', '=', $order_status ];
|
||||
}
|
||||
//订单来源
|
||||
$order_from = input("order_from", '');
|
||||
if ($order_from) {
|
||||
$condition[] = [ "pjo.order_from", "=", $order_from ];
|
||||
}
|
||||
//支付方式
|
||||
$pay_type = input("pay_type", '');
|
||||
if ($pay_type) {
|
||||
$condition[] = [ "pjo.pay_type", "=", $pay_type ];
|
||||
}
|
||||
|
||||
//创建时间
|
||||
$start_time = input('start_time', '');
|
||||
$end_time = input('end_time', '');
|
||||
if ($start_time && $end_time) {
|
||||
$condition[] = [ 'pjo.create_time', 'between', [ date_to_time($start_time), date_to_time($end_time) ] ];
|
||||
} elseif (!$start_time && $end_time) {
|
||||
$condition[] = [ 'pjo.create_time', '<=', date_to_time($end_time) ];
|
||||
} elseif ($start_time && !$end_time) {
|
||||
$condition[] = [ 'pjo.create_time', '>=', date_to_time($start_time) ];
|
||||
}
|
||||
|
||||
$list = $jielong_order_model->getJielongOrderPageList($condition, $page, $page_size, 'id desc');
|
||||
return $list;
|
||||
} else {
|
||||
|
||||
//搜索方式
|
||||
$order_label_list = array (
|
||||
"order_no" => "订单号",
|
||||
"name" => "收货人姓名",
|
||||
"mobile" => "收货人手机号",
|
||||
);
|
||||
$this->assign('order_label_list', $order_label_list);
|
||||
|
||||
//订单状态
|
||||
$order_model = new JielongOrderCommon();
|
||||
$order_status_list = $order_model->order_status;
|
||||
$this->assign("order_status_list", $order_status_list);
|
||||
|
||||
//订单来源 (支持端口)
|
||||
$order_from = Config::get("app_type");
|
||||
$this->assign('order_from_list', $order_from);
|
||||
|
||||
$order_common_model = new OrderCommonModel();
|
||||
//付款方式
|
||||
$pay_type = $order_common_model->getPayType();
|
||||
$this->assign("pay_type_list", $pay_type);
|
||||
|
||||
$this->assign('jielong_id', $jielong_id);
|
||||
return $this->fetch("order/lists");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单详情
|
||||
* @return mixed
|
||||
*/
|
||||
public function detail()
|
||||
{
|
||||
$jielong_order_model = new JielongOrder();
|
||||
|
||||
$id = input('id', '');
|
||||
|
||||
$condition = [
|
||||
[ 'site_id', '=', $this->site_id ],
|
||||
[ 'id', '=', $id ]
|
||||
];
|
||||
|
||||
$info = $jielong_order_model->getJielongOrderInfo($condition);
|
||||
|
||||
$this->assign('order_detail', $info[ 'data' ]);
|
||||
|
||||
return $this->fetch("order/detail");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除订单
|
||||
*/
|
||||
public function deleteOrder()
|
||||
{
|
||||
if (request()->isJson()) {
|
||||
|
||||
$id = input('order_id');
|
||||
|
||||
$order_common_model = new JielongOrderCommon();
|
||||
$condition = [
|
||||
[ 'id', '=', $id ],
|
||||
[ 'site_id', '=', $this->site_id ]
|
||||
];
|
||||
|
||||
$res = $order_common_model->deleteOrder($condition);
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
324
addon/jielong/shop/view/jielong/add.html
Executable file
324
addon/jielong/shop/view/jielong/add.html
Executable file
@@ -0,0 +1,324 @@
|
||||
<style>
|
||||
.layui-form-item .layui-input-inline.end-time{float: none;}
|
||||
.layui-table-body{max-height: 330px !important;}
|
||||
.goods-title{display: flex;align-items: center;}
|
||||
.goods-title .goods-img{display: flex;align-items: center;justify-content: center;width: 55px;height: 55px;margin-right: 5px;}
|
||||
.goods-title .goods-img img{max-height: 100%;max-width: 100%;}
|
||||
.goods-title .goods-name{flex: 1;line-height: 1.6;}
|
||||
.form-wrap {position: relative;}
|
||||
.goods_num {padding-left: 20px;}
|
||||
</style>
|
||||
|
||||
<div class="layui-form form-wrap">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>接龙名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="jielong_name" lay-verify="required" autocomplete="off" class="layui-input len-long" maxlength="40">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动时间:</label>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline len-mid">
|
||||
<input type="text" id="start_time" name="start_time" lay-verify="required" class="layui-input" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<span class="layui-form-mid">-</span>
|
||||
<div class="layui-input-inline len-mid end-time">
|
||||
<input type="text" id="end_time" name="end_time" lay-verify="required|etime" class="layui-input" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>自提时间:</label>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline len-mid">
|
||||
<input type="text" id="take_start_time" name="take_start_time" lay-verify="required|take_stime" class="layui-input" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<span class="layui-form-mid">-</span>
|
||||
<div class="layui-input-inline len-mid end-time">
|
||||
<input type="text" id="take_end_time" name="take_end_time" lay-verify="required|take_etime" class="layui-input" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动说明:</label>
|
||||
<div class="layui-input-inline">
|
||||
<textarea name="desc" class="layui-textarea len-long" lay-verify="required" maxlength="150"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item goods_list">
|
||||
<label class="layui-form-label">活动商品:</label>
|
||||
<div class="layui-input-block">
|
||||
<table id="selected_goods_list" lay-filter="selected_goods_list"></table>
|
||||
<button class="layui-btn" onclick="addGoods()">选择商品</button>
|
||||
<span class="goods_num">已选商品(<span id="goods_num" class="text-color">0</span>)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="sku_ids">
|
||||
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">提交</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="backJielongList()">返回</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var goodsId = {}, selectedGoodsId = [], sku_list = [],
|
||||
form,laydate,repeat_flag,currentDate,minDate;
|
||||
layui.use(['form', 'laydate'], function() {
|
||||
form = layui.form;
|
||||
laydate = layui.laydate;
|
||||
repeat_flag = false;
|
||||
currentDate = new Date();
|
||||
minDate = "";
|
||||
currentDate.setDate(currentDate.getDate() + 30);
|
||||
form.render();
|
||||
renderTable(sku_list); // 初始化表格
|
||||
|
||||
form.render('select');
|
||||
|
||||
//开始时间
|
||||
laydate.render({
|
||||
elem: '#start_time', //指定元素
|
||||
type: 'datetime',
|
||||
value: new Date(),
|
||||
done: function(value) {
|
||||
minDate = value;
|
||||
}
|
||||
});
|
||||
//结束时间
|
||||
laydate.render({
|
||||
elem: '#end_time', //指定元素
|
||||
type: 'datetime',
|
||||
value: new Date(currentDate)
|
||||
});
|
||||
|
||||
//提货开始时间
|
||||
laydate.render({
|
||||
elem: '#take_start_time', //指定元素
|
||||
type: 'date',
|
||||
value: new Date(),
|
||||
done: function(value) {
|
||||
minDate = value;
|
||||
}
|
||||
});
|
||||
//提货结束时间
|
||||
laydate.render({
|
||||
elem: '#take_end_time', //指定元素
|
||||
type: 'date',
|
||||
value: new Date(currentDate)
|
||||
});
|
||||
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
form.verify({
|
||||
etime: function(value) {
|
||||
var now_time = (new Date()).getTime();
|
||||
var start_time = (new Date($("#start_time").val())).getTime();
|
||||
var end_time = (new Date(value)).getTime();
|
||||
if (now_time > end_time) {
|
||||
return '结束时间不能小于当前时间!'
|
||||
}
|
||||
if (start_time > end_time) {
|
||||
return '结束时间不能小于开始时间!';
|
||||
}
|
||||
},
|
||||
take_stime: function(value) {
|
||||
var now_time = (new Date()).getTime();
|
||||
var take_start_time = (new Date($("#take_start_time").val()+' 00:00:00')).getTime();
|
||||
var start_time = (new Date($("#start_time").val())).getTime();
|
||||
|
||||
if (take_start_time < start_time) {
|
||||
return '自提开始时间不能小于活动开始时间!';
|
||||
}
|
||||
},
|
||||
take_etime: function(value) {
|
||||
var now_time = (new Date()).getTime();
|
||||
var take_start_time = (new Date($("#take_start_time").val()+' 00:00:00')).getTime();
|
||||
var take_end_time = (new Date(value+' 23:59:59')).getTime();
|
||||
console.log(take_end_time)
|
||||
if (now_time > take_end_time) {
|
||||
return '自提结束时间不能小于当前时间!'
|
||||
}
|
||||
if (take_start_time > take_end_time) {
|
||||
return '自提结束时间不能小于开始时间!';
|
||||
}
|
||||
var end_time = (new Date($("#end_time").val())).getTime();
|
||||
if (take_end_time < end_time) {
|
||||
return '自提结束时间不能小于活动结束时间!';
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听提交
|
||||
*/
|
||||
form.on('submit(save)', function(data){
|
||||
|
||||
var field = data.field;
|
||||
if (!Object.keys(goodsId).length) {
|
||||
layer.msg("请选择活动商品!", {icon: 5, anim: 6});
|
||||
return;
|
||||
}
|
||||
if(field.take_start_time){
|
||||
field.take_start_time = field.take_start_time+' 00:00:00';
|
||||
}
|
||||
if(field.take_end_time){
|
||||
field.take_end_time = field.take_end_time+' 23:59:59';
|
||||
}
|
||||
|
||||
field.goods_ids = selectedGoodsId;
|
||||
|
||||
if(repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("jielong://shop/jielong/add"),
|
||||
data: field,
|
||||
async: false,
|
||||
success: function(res){
|
||||
repeat_flag = false;
|
||||
|
||||
if (res.code == 0) {
|
||||
layer.confirm('添加成功', {
|
||||
title: '操作提示',
|
||||
btn: ['返回列表', '继续添加'],
|
||||
closeBtn: 0,
|
||||
yes: function(index, layero) {
|
||||
location.hash = ns.hash("jielong://shop/jielong/lists");
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function(index, layero) {
|
||||
listenerHash(); // 刷新页面
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
// 表格渲染
|
||||
function renderTable(sku_list) {
|
||||
|
||||
//展示已知数据
|
||||
table = new Table({
|
||||
elem: '#selected_goods_list',
|
||||
page: false,
|
||||
limit: Number.MAX_VALUE,
|
||||
cols: [
|
||||
[{
|
||||
title: '商品信息',
|
||||
width: '50%',
|
||||
unresize: 'false',
|
||||
templet: function(data) {
|
||||
var html = '';
|
||||
html += `
|
||||
<div class="goods-title">
|
||||
<div class="goods-img">
|
||||
<img layer-src src="${data.goods_image ? ns.img(data.goods_image).split(',')[0] : ''}" alt="">
|
||||
</div>
|
||||
<p class="multi-line-hiding goods-name" data-goods_id="${data.goods_id}" title="${data.goods_name}">${data.goods_name}</p>
|
||||
</div>
|
||||
`;
|
||||
return html;
|
||||
}
|
||||
}, {
|
||||
field: 'price',
|
||||
title: '商品价格',
|
||||
unresize: 'false',
|
||||
width: '18%',
|
||||
templet: function(data) {
|
||||
return '<p class="line-hiding" title="'+ data.price +'">¥<span>' + data.price +'</span></p>';
|
||||
}
|
||||
}, {
|
||||
title: '商品库存',
|
||||
unresize: 'false',
|
||||
width: '13%',
|
||||
templet: function(data) {
|
||||
return '<p class="line-hiding" title="'+ data.goods_stock +'"><span>' + data.goods_stock +'</span></p>';
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
],
|
||||
data: sku_list
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加商品
|
||||
*/
|
||||
function addGoods(){
|
||||
goodsSelect(function (data) {
|
||||
|
||||
sku_list = [];
|
||||
goodsId = {};
|
||||
|
||||
for (var key in data) {
|
||||
var item = data[key];
|
||||
sku_list.push(item);
|
||||
goodsId['goods_'+ item.goods_id] = {};
|
||||
goodsId['goods_'+ item.goods_id].sku_id = {};
|
||||
goodsId['goods_'+ item.goods_id].spu_id = item.goods_id;
|
||||
}
|
||||
renderTable(sku_list);
|
||||
$("input[name='sku_ids']").val(JSON.stringify(goodsId));
|
||||
|
||||
var spuId = [];
|
||||
Object.values(goodsId).forEach(function (item,index) {
|
||||
spuId.push(item.spu_id);
|
||||
});
|
||||
$("#goods_num").html(spuId.length);
|
||||
selectedGoodsId = spuId.toString();
|
||||
}, selectedGoodsId,{is_virtual: 0,sale_channel:'all,online'});
|
||||
}
|
||||
|
||||
function delRow(obj,id) {
|
||||
for (var i = 0; i < sku_list.length; i++){
|
||||
if (sku_list[i].goods_id == parseInt(id)){
|
||||
sku_list.splice(i,1);
|
||||
}
|
||||
}
|
||||
|
||||
delete goodsId['goods_'+id];
|
||||
|
||||
var spuId = [];
|
||||
Object.values(goodsId).forEach(function (item,index) {
|
||||
spuId.push(item.spu_id);
|
||||
});
|
||||
$("#goods_num").html(spuId.length);
|
||||
selectedGoodsId = spuId.toString();
|
||||
$(obj).parents("tr").remove();
|
||||
}
|
||||
|
||||
function backJielongList() {
|
||||
location.hash = ns.hash("jielong://shop/jielong/lists");
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" onclick="delRow(this,{{d.goods_id}})">删除</a>
|
||||
</div>
|
||||
</script>
|
||||
99
addon/jielong/shop/view/jielong/detail.html
Executable file
99
addon/jielong/shop/view/jielong/detail.html
Executable file
@@ -0,0 +1,99 @@
|
||||
<link rel="stylesheet" href="STATIC_CSS/promotion_detail.css">
|
||||
|
||||
<div class="layui-card card-common card-brief">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">基本信息</span>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="promotion-view">
|
||||
<div class="promotion-view-item">
|
||||
<label>活动名称:</label>
|
||||
<span>{$info.jielong_name}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>活动状态:</label>
|
||||
<span>{$info.status_name}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>开始时间:</label>
|
||||
<span>{:date('Y-m-d H:i:s',$info.start_time)}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>结束时间:</label>
|
||||
<span>{:date('Y-m-d H:i:s',$info.end_time)}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>自提开始时间:</label>
|
||||
<span>{if empty($info.take_start_time)} -- {else} {:date('Y-m-d',$info.take_start_time)} {/if}</span>
|
||||
</div>
|
||||
<div class="promotion-view-item">
|
||||
<label>自提结束时间:</label>
|
||||
<span>{if empty($info.take_end_time)} -- {else} {:date('Y-m-d',$info.take_end_time)} {/if}</span>
|
||||
</div>
|
||||
|
||||
<div class="promotion-view-item">
|
||||
<label>添加时间:</label>
|
||||
<span>{:date('Y-m-d H:i:s',$info.create_time)}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="promotion-view">
|
||||
<div class="promotion-view-item-line">
|
||||
<label class="promotion-view-item-custom-label">活动说明:</label>
|
||||
<div class="promotion-view-item-custom-box">{$info.desc}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card card-common card-brief">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">活动商品</span>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<div class='promotion-view-list'>
|
||||
<table id="promotion_list"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type='text/html' id="promotion_list_item_box_html">
|
||||
<div class="promotion-list-item-title">
|
||||
<div class="promotion-list-item-title-icon">
|
||||
<img src="{{ ns.img(d.goods_image) }}" alt="">
|
||||
</div>
|
||||
<p class="promotion-list-item-title-name multi-line-hiding">{{ d.goods_name }}</p>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
var promotion_list = {:json_encode($info.sku_list, JSON_UNESCAPED_UNICODE)};
|
||||
layui.use('table', function() {
|
||||
new Table({
|
||||
elem: '#promotion_list',
|
||||
cols: [
|
||||
[{
|
||||
field: 'sku_name',
|
||||
title: '商品名称',
|
||||
width: '30%',
|
||||
unresize: 'false',
|
||||
templet: '#promotion_list_item_box_html'
|
||||
}, {
|
||||
field: 'price',
|
||||
title: '商品价格',
|
||||
unresize: 'false',
|
||||
templet: function(data) {
|
||||
return '¥' + data.price;
|
||||
}
|
||||
}, {
|
||||
field: 'stock',
|
||||
title: '商品库存',
|
||||
unresize: 'false',
|
||||
templet: function(data) {
|
||||
return data.goods_stock;
|
||||
}
|
||||
}]
|
||||
],
|
||||
data: promotion_list
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
347
addon/jielong/shop/view/jielong/edit.html
Executable file
347
addon/jielong/shop/view/jielong/edit.html
Executable file
@@ -0,0 +1,347 @@
|
||||
<style>
|
||||
.layui-form-item .layui-input-inline.end-time{float: none;}
|
||||
.layui-table-body{max-height: 330px !important;}
|
||||
.goods-title{display: flex;align-items: center;}
|
||||
.goods-title .goods-img{display: flex;align-items: center;justify-content: center;width: 55px;height: 55px;margin-right: 5px;}
|
||||
.goods-title .goods-img img{max-height: 100%;max-width: 100%;}
|
||||
.goods-title .goods-name{flex: 1;line-height: 1.6;}
|
||||
.form-wrap {position: relative;}
|
||||
.goods-empty {width: 100%;display: flex;justify-content: center;align-items: center;}
|
||||
.goods_num {padding-left: 20px;}
|
||||
</style>
|
||||
|
||||
<div class="layui-form form-wrap">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>接龙名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="jielong_name" lay-verify="required" value="{$jielong_info.jielong_name}" autocomplete="off" class="layui-input len-long" maxlength="40">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动时间:</label>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline len-mid">
|
||||
<input type="text" id="start_time" name="start_time" value="{:date('Y-m-d H:i:s', $jielong_info.start_time)}" lay-verify="required" class="layui-input" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<span class="layui-form-mid">-</span>
|
||||
<div class="layui-input-inline len-mid end-time">
|
||||
<input type="text" id="end_time" name="end_time" value="{:date('Y-m-d H:i:s', $jielong_info.end_time)}" lay-verify="required|etime" class="layui-input" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>自提时间:</label>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline len-mid">
|
||||
<input type="text" id="take_start_time" name="take_start_time" value="{:date('Y-m-d', $jielong_info.take_start_time)}" lay-verify="required|take_stime" class="layui-input" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<span class="layui-form-mid">-</span>
|
||||
<div class="layui-input-inline len-mid end-time">
|
||||
<input type="text" id="take_end_time" name="take_end_time" value="{:date('Y-m-d', $jielong_info.take_end_time)}" lay-verify="required|take_etime" class="layui-input" autocomplete="off" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label"><span class="required">*</span>活动说明:</label>
|
||||
<div class="layui-input-inline">
|
||||
<textarea name="desc" class="layui-textarea len-long" lay-verify="required" maxlength="150">{$jielong_info.desc}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item goods_list">
|
||||
<label class="layui-form-label">活动商品:</label>
|
||||
<div class="layui-input-block" id="goods">
|
||||
<table id="selected_goods_list" lay-filter="selected_goods_list"></table>
|
||||
<button class="layui-btn" onclick="addGoods()">添加商品</button> <span class="goods_num">已选商品(<span id="goods_num" class="text-color">{$jielong_info.sku_list_count}</span>)</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="backJielongList()">返回</button>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="jielong_id" value="{$jielong_info.jielong_id}" />
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var goodsId = {},sku_list = [],status,selectedGoodsId = [];
|
||||
sku_list = {:json_encode($jielong_info.sku_list, JSON_UNESCAPED_UNICODE)};
|
||||
status = {:json_encode($jielong_info.status, JSON_UNESCAPED_UNICODE)};
|
||||
sku_list.forEach(function (item,index) {
|
||||
item.is_delete = item.goods_stock ? 1 : 2;
|
||||
});
|
||||
|
||||
layui.use(['form', 'laydate'], function() {
|
||||
var form = layui.form,
|
||||
laydate = layui.laydate,
|
||||
repeat_flag = false;
|
||||
form.render();
|
||||
|
||||
renderTable(sku_list); // 初始化表格
|
||||
|
||||
if (status == 0) {
|
||||
laydate.render({
|
||||
elem: '#start_time', //指定元素
|
||||
type: 'datetime'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#end_time', //指定元素
|
||||
type: 'datetime'
|
||||
});
|
||||
}else if (status == 1){
|
||||
laydate.render({
|
||||
elem: '#end_time', //指定元素
|
||||
type: 'datetime'
|
||||
});
|
||||
}
|
||||
|
||||
//提货开始时间
|
||||
laydate.render({
|
||||
elem: '#take_start_time', //指定元素
|
||||
type: 'date',
|
||||
});
|
||||
//提货结束时间
|
||||
laydate.render({
|
||||
elem: '#take_end_time', //指定元素
|
||||
type: 'date',
|
||||
});
|
||||
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
form.verify({
|
||||
etime: function(value) {
|
||||
var now_time = (new Date()).getTime();
|
||||
var start_time = (new Date($("#start_time").val())).getTime();
|
||||
var end_time = (new Date(value)).getTime();
|
||||
if (now_time > end_time) {
|
||||
return '结束时间不能小于当前时间!'
|
||||
}
|
||||
if (start_time > end_time) {
|
||||
return '结束时间不能小于开始时间!';
|
||||
}
|
||||
},
|
||||
take_stime: function(value) {
|
||||
var now_time = (new Date()).getTime();
|
||||
var take_start_time = (new Date($("#take_start_time").val()+' 00:00:00')).getTime();
|
||||
var start_time = (new Date($("#start_time").val())).getTime();
|
||||
if (take_start_time < start_time) {
|
||||
return '自提开始时间不能小于活动开始时间!';
|
||||
}
|
||||
},
|
||||
take_etime: function(value) {
|
||||
var now_time = (new Date()).getTime();
|
||||
var take_start_time = (new Date($("#take_start_time").val()+' 00:00:00')).getTime();
|
||||
var take_end_time = (new Date(value+' 23:59:59')).getTime();
|
||||
if (now_time > take_end_time) {
|
||||
return '自提结束时间不能小于当前时间!'
|
||||
}
|
||||
if (take_start_time > take_end_time) {
|
||||
return '自提结束时间不能小于开始时间!';
|
||||
}
|
||||
var end_time = (new Date($("#end_time").val())).getTime();
|
||||
if (take_end_time < end_time) {
|
||||
return '自提结束时间不能小于活动结束时间!';
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听提交
|
||||
*/
|
||||
form.on('submit(save)', function(data){
|
||||
var field = data.field;
|
||||
var skuLisArr = [];
|
||||
var goods_ids = [];
|
||||
sku_list.forEach(function(item,index) {
|
||||
var sku_detail = {};
|
||||
sku_detail.goods_id = item.goods_id;
|
||||
sku_detail.is_delete = item.is_delete || 1;
|
||||
skuLisArr.push(sku_detail);
|
||||
|
||||
if (item.is_delete == 2) return false;
|
||||
goods_ids.push(item.goods_id);
|
||||
});
|
||||
|
||||
if (goods_ids.length == 0) {
|
||||
layer.msg("请保留至少一件参与活动商品!", {icon: 5, anim: 6});
|
||||
return;
|
||||
}
|
||||
|
||||
if(field.take_start_time){
|
||||
field.take_start_time = field.take_start_time+' 00:00:00';
|
||||
}
|
||||
if(field.take_end_time){
|
||||
field.take_end_time = field.take_end_time+' 23:59:59';
|
||||
}
|
||||
|
||||
field.sku_list = skuLisArr;
|
||||
field.goods_ids = goods_ids.toString();
|
||||
|
||||
if(repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: ns.url("jielong://shop/jielong/edit"),
|
||||
data: field,
|
||||
async: false,
|
||||
success: function(res){
|
||||
repeat_flag = false;
|
||||
|
||||
if (res.code == 0) {
|
||||
layer.confirm('编辑成功', {
|
||||
title:'操作提示',
|
||||
btn: ['返回列表', '继续编辑'],
|
||||
yes: function(index, layero) {
|
||||
location.hash = ns.hash("jielong://shop/jielong/lists");
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function(index, layero) {
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
//删除商品
|
||||
function delRow(obj,id) {
|
||||
for (var i = 0; i < sku_list.length; i++){
|
||||
if (sku_list[i].goods_id == parseInt(id)){
|
||||
sku_list.splice(i,1);
|
||||
}
|
||||
}
|
||||
|
||||
delete goodsId['goods_'+id];
|
||||
var spuId = [];
|
||||
Object.values(goodsId).forEach(function (item,index) {
|
||||
spuId.push(item.spu_id);
|
||||
});
|
||||
selectedGoodsId = spuId.toString();
|
||||
$(obj).parents("tr").remove();
|
||||
|
||||
$("#goods_num").html(sku_list.length);
|
||||
|
||||
if (sku_list.length == 0) {
|
||||
var html = '<tr>'+
|
||||
'<td colspan="4">'+
|
||||
'<div class="goods-empty">无数据</div>'+
|
||||
'</td>'+
|
||||
'</tr>';
|
||||
|
||||
$("#goods tbody").html(html);
|
||||
}
|
||||
}
|
||||
|
||||
//添加商品
|
||||
function addGoods(){
|
||||
|
||||
selectedGoodsId = [];
|
||||
$("#goods table").find(".goods-title").each(function () {
|
||||
var id = $(this).data("goods_id");
|
||||
selectedGoodsId.push(id);
|
||||
});
|
||||
|
||||
goodsSelect(function (data) {
|
||||
|
||||
sku_list = [];
|
||||
goodsId = {};
|
||||
|
||||
for (var key in data) {
|
||||
var item = data[key];
|
||||
sku_list.push(item);
|
||||
|
||||
goodsId['goods_'+ item.goods_id] = {};
|
||||
goodsId['goods_'+ item.goods_id].sku_id = {};
|
||||
goodsId['goods_'+ item.goods_id].spu_id = item.goods_id;
|
||||
|
||||
}
|
||||
renderTable(sku_list);
|
||||
$("input[name='sku_ids']").val(JSON.stringify(goodsId));
|
||||
|
||||
var spuId = [];
|
||||
Object.values(goodsId).forEach(function (item,index) {
|
||||
spuId.push(item.spu_id);
|
||||
});
|
||||
$("#goods_num").html(spuId.length);
|
||||
selectedGoodsId = spuId.toString();
|
||||
|
||||
}, selectedGoodsId,{is_virtual: 0,sale_channel:'all,online'});
|
||||
sku_list.splice(0,sku_list.length);
|
||||
}
|
||||
|
||||
// 表格渲染
|
||||
function renderTable(sku_list) {
|
||||
|
||||
//展示已知数据
|
||||
table = new Table({
|
||||
elem: '#selected_goods_list',
|
||||
page: false,
|
||||
limit: Number.MAX_VALUE,
|
||||
cols: [
|
||||
[{
|
||||
title: '商品信息',
|
||||
width: '50%',
|
||||
unresize: 'false',
|
||||
templet: function(data) {
|
||||
var html = '';
|
||||
html += `
|
||||
<div class="goods-title" data-goods_id="${data.goods_id}">
|
||||
<div class="goods-img">
|
||||
<img layer-src src="${data.goods_image ? ns.img(data.goods_image).split(',')[0] : ''}" alt="">
|
||||
</div>
|
||||
<p class="multi-line-hiding goods-name" data-goods_id="${data.goods_id}" title="${data.goods_name}">${data.goods_name}</p>
|
||||
</div>
|
||||
`;
|
||||
return html;
|
||||
}
|
||||
}, {
|
||||
field: 'price',
|
||||
title: '商品价格',
|
||||
unresize: 'false',
|
||||
width: '20%',
|
||||
templet: function(data) {
|
||||
return '<p class="line-hiding" title="'+ data.price +'">¥<span>' + data.price +'</span></p>';
|
||||
}
|
||||
}, {
|
||||
title: '商品库存',
|
||||
unresize: 'false',
|
||||
width: '20%',
|
||||
templet: function(data) {
|
||||
return '<p class="line-hiding" style="margin:0 10px 0 30px;" title="'+ data.goods_stock +'"><span>' + data.goods_stock +'</span></p>';
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
],
|
||||
data: sku_list
|
||||
});
|
||||
}
|
||||
|
||||
function backJielongList() {
|
||||
location.hash = ns.hash("jielong://shop/jielong/lists");
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn" onclick="delRow(this,{{d.goods_id}})">删除商品</a>
|
||||
</div>
|
||||
</script>
|
||||
384
addon/jielong/shop/view/jielong/lists.html
Executable file
384
addon/jielong/shop/view/jielong/lists.html
Executable file
@@ -0,0 +1,384 @@
|
||||
<style>
|
||||
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
|
||||
.layui-layout-admin .table-tab .layui-tab-title{margin-bottom: 15px;}
|
||||
</style>
|
||||
|
||||
<div class="single-filter-box">
|
||||
<button class="layui-btn" onclick="add()">添加活动</button>
|
||||
</div>
|
||||
|
||||
<!-- 搜索框 -->
|
||||
<div class="screen layui-collapse" lay-filter="selection_panel">
|
||||
<div class="layui-colla-item">
|
||||
<form class="layui-colla-content layui-form layui-show">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">活动名称:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="jielong_name" placeholder="请输入活动名称" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">活动时间:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="start_time" placeholder="开始时间" id="start_time" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<div class="layui-form-mid">-</div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="end_time" placeholder="结束时间" id="end_time" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<button type="button" class="layui-btn" lay-filter="search" lay-submit>筛选</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-tab table-tab" lay-filter="jielong_tab">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this" data-status="">全部</li>
|
||||
{foreach $jielong_status as $k=>$v}
|
||||
<li data-status="{$k}">{$v}</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
<!-- 列表 -->
|
||||
<table id="jielong_list" lay-filter="jielong_list"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 时间 -->
|
||||
<script id="time" type="text/html">
|
||||
<div class="layui-elip">开始:{{ns.time_to_date(d.start_time)}}</div>
|
||||
<div class="layui-elip">结束:{{ns.time_to_date(d.end_time)}}</div>
|
||||
</script>
|
||||
|
||||
<!-- 批量操作 -->
|
||||
<script type="text/html" id="toolbarAction">
|
||||
<button class="layui-btn layui-btn-primary" lay-event="delete">批量删除</button>
|
||||
<button class="layui-btn layui-btn-primary" lay-event="close">批量关闭</button>
|
||||
</script>
|
||||
|
||||
<!-- 操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
<a class="layui-btn text-color" lay-event="extension">推广</a>
|
||||
<a class="layui-btn" lay-event="detail">详情</a>
|
||||
<a class="layui-btn" lay-event="launch">订单列表</a>
|
||||
{{# if(d.status == 0){ }}
|
||||
<a class="layui-btn" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn" lay-event="del">删除</a>
|
||||
{{# }else if(d.status == 1){ }}
|
||||
<a class="layui-btn" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn" lay-event="close">关闭</a>
|
||||
{{# }else{ }}
|
||||
<a class="layui-btn" lay-event="del">删除</a>
|
||||
{{# } }}
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 推广 -->
|
||||
{include file="app/shop/view/component/promote_show.html"}
|
||||
|
||||
<script>
|
||||
var laytpl,form;
|
||||
$(function () {
|
||||
layui.use(['form', 'element', 'laytpl', 'laydate'], function () {
|
||||
laytpl = layui.laytpl;
|
||||
form = layui.form;
|
||||
var table,
|
||||
element = layui.element,
|
||||
laydate = layui.laydate,
|
||||
repeat_flag = false; //防重复标识
|
||||
form.render();
|
||||
|
||||
element.on('tab(jielong_tab)', function () {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: {
|
||||
'status': this.getAttribute('data-status')
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//开始时间
|
||||
laydate.render({
|
||||
elem: '#start_time', //指定元素
|
||||
type: 'datetime'
|
||||
});
|
||||
//结束时间
|
||||
laydate.render({
|
||||
elem: '#end_time', //指定元素
|
||||
type: 'datetime'
|
||||
});
|
||||
|
||||
table = new Table({
|
||||
elem: '#jielong_list',
|
||||
url: ns.url("jielong://shop/jielong/lists"),
|
||||
cols: [
|
||||
[{
|
||||
type: 'checkbox',
|
||||
width: '3%',
|
||||
},{
|
||||
title: '活动名称',
|
||||
unresize: 'false',
|
||||
field: 'jielong_name',
|
||||
}, {
|
||||
field: 'goods_num',
|
||||
title: '商品数',
|
||||
width: '10%',
|
||||
unresize: 'false'
|
||||
}, {
|
||||
field: 'order_num',
|
||||
title: '订单数',
|
||||
width: '10%',
|
||||
unresize: 'false'
|
||||
}, {
|
||||
title: '活动时间',
|
||||
unresize: 'false',
|
||||
width: '20%',
|
||||
templet: '#time'
|
||||
}, {
|
||||
field: 'status_name',
|
||||
title: '状态',
|
||||
unresize: 'false',
|
||||
width: '10%'
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align : 'right'
|
||||
}]
|
||||
],
|
||||
toolbar: '#toolbarAction'
|
||||
});
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
form.on('submit(search)', function (data) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
});
|
||||
|
||||
table.on("sort",function (obj) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: {
|
||||
order:obj.field,
|
||||
sort:obj.type
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//监听Tab切换
|
||||
element.on('tab(status)', function (data) {
|
||||
var status = $(this).attr("data-status");
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: {
|
||||
'status': status
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 监听工具栏操作
|
||||
table.toolbar(function (obj) {
|
||||
var data = obj.data;
|
||||
if(data.length <= 0) return;
|
||||
var jielongIdAll = [];
|
||||
for (var i in data){
|
||||
jielongIdAll.push(data[i].jielong_id);
|
||||
}
|
||||
|
||||
switch (obj.event) {
|
||||
case 'delete':
|
||||
deleteJielongAll(jielongIdAll)
|
||||
break;
|
||||
case 'close':
|
||||
closeJielongAll(jielongIdAll)
|
||||
break;
|
||||
}
|
||||
})
|
||||
|
||||
function deleteJielongAll(data){
|
||||
layer.confirm('确定要删除接龙活动吗?', function (index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("jielong://shop/jielong/deleteAll"),
|
||||
data: {
|
||||
jielong_id: data
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function (res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}, function () {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
|
||||
function closeJielongAll(data){
|
||||
layer.confirm('确定要关闭接龙活动吗?', function (index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("jielong://shop/jielong/finishAll"),
|
||||
data: {
|
||||
jielong_id: data
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function (res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
table.reload();
|
||||
}
|
||||
});
|
||||
}, function () {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 监听工具栏操作
|
||||
*/
|
||||
table.tool(function (obj) {
|
||||
var data = obj.data;
|
||||
switch (obj.event) {
|
||||
case 'detail': //详情
|
||||
location.hash = ns.hash("jielong://shop/jielong/detail", {"jielong_id": data.jielong_id});
|
||||
break;
|
||||
case 'edit': //编辑
|
||||
location.hash = ns.hash("jielong://shop/jielong/edit", {"jielong_id": data.jielong_id});
|
||||
break;
|
||||
case 'del': //删除
|
||||
deleteJielong(data.jielong_id);
|
||||
break;
|
||||
case 'close': //结束
|
||||
closeJielong(data.jielong_id);
|
||||
break;
|
||||
case 'launch': //订单
|
||||
location.hash = ns.hash("jielong://shop/order/lists", {"jielong_id": data.jielong_id});
|
||||
break;
|
||||
case 'extension': //推广
|
||||
extensionJielong(data.jielong_id);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
function deleteJielong(jielong_id) {
|
||||
layer.confirm('确定要删除该接龙活动吗?', function (index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("jielong://shop/jielong/delete"),
|
||||
data: {
|
||||
jielong_id: jielong_id
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function (res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
if (res.code == 0) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}, function () {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
|
||||
// 结束
|
||||
function closeJielong(jielong_id) {
|
||||
|
||||
layer.confirm('确定要关闭该接龙活动吗?', function (index) {
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
|
||||
$.ajax({
|
||||
url: ns.url("jielong://shop/jielong/finish"),
|
||||
data: {
|
||||
jielong_id: jielong_id
|
||||
},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function (res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
if (res.code == 0) {
|
||||
table.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
}, function () {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
|
||||
function extensionJielong(jielong_id){
|
||||
new PromoteShow({
|
||||
url:ns.url("jielong://shop/jielong/poster"),
|
||||
param:{jielong_id:jielong_id},
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
function add() {
|
||||
location.hash = ns.hash("jielong://shop/jielong/add");
|
||||
}
|
||||
function binding() {
|
||||
location.hash = ns.hash("weapp://shop/weapp/setting");
|
||||
}
|
||||
|
||||
//下载图片
|
||||
function download(url) {
|
||||
location.href = ns.url("shop/upload/download", {request_mode: 'download',img_url : encodeURIComponent(url), type : 1});
|
||||
}
|
||||
</script>
|
||||
180
addon/jielong/shop/view/order/detail.html
Executable file
180
addon/jielong/shop/view/order/detail.html
Executable file
@@ -0,0 +1,180 @@
|
||||
<link rel="stylesheet" href="SHOP_CSS/order_detail.css"/>
|
||||
<link rel="stylesheet" href="SHOP_CSS/package.css"/>
|
||||
|
||||
<div class="order-detail">
|
||||
<div class="layui-row layui-col-space1 order-detail-info" >
|
||||
<div class="layui-col-md4 order-detail-left" >
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header nav-title">订单信息</div>
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-form">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">订单编号:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-mid layui-word-aux">{$order_detail['order_no']}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">订单类型:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-mid layui-word-aux">{$order_detail['order_type_name']}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">订单来源:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
<p>{$order_detail.order_from_name}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">买家:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-mid layui-word-aux"><a class="text-color" target="_blank" href='{:href_url("shop/member/editmember?member_id=".$order_detail["member_id"])}'>{$order_detail.name}</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item order-detail-hr"></div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">支付方式:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
<p>{$order_detail['pay_type_name']}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item order-detail-hr"></div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">配送方式:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
<p>{$order_detail['delivery_type_name']}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">收货人:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
<p>{$order_detail['name']}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">联系电话:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
<p>{$order_detail['mobile']}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">收货地址:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
<p>{$order_detail['full_address']}-{$order_detail['address']}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item order-detail-hr"></div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">买家留言:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-form-mid layui-word-aux">
|
||||
{if $order_detail['buyer_message'] == ""}
|
||||
<p>-</p>
|
||||
{else/}
|
||||
<p>{$order_detail['buyer_message']}</p>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md8 order-detail-operation">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">订单状态:{$order_detail.order_status_name}</div>
|
||||
<div class="layui-card-body">
|
||||
<p class="order-detail-tips"></p>
|
||||
{if $order_detail['order_status'] == -1}
|
||||
<a class="layui-btn" href="javascript:orderAction('deleteOrder', '{$order_detail.id}')">删除订单</a>
|
||||
{/if}
|
||||
<br>
|
||||
<i class="layui-icon layui-icon-about"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="order-detail-dl">
|
||||
<dl>
|
||||
<dt>提醒:</dt>
|
||||
<dd>交易成功后,平台将把货款结算至你的店铺账户余额,你可申请提现;</dd>
|
||||
<dd>请及时关注你发出的包裹状态,确保能配送至买家手中;</dd>
|
||||
<dd>如果买家表示未收到货或者货物有问题,请及时联系买家积极处理,友好协商;</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div style="height: 15px;"></div>
|
||||
|
||||
<div class="order-detail-table">
|
||||
<table class="layui-table" lay-filter="parse-table-order-product" lay-skin="line" lay-size="lg">
|
||||
<thead>
|
||||
<tr>
|
||||
<th lay-data="{field:'product_name', width:200}">商品</th>
|
||||
<th lay-data="{field:'sale_num'}">数量</th>
|
||||
<th lay-data="{field:'price'}">单价</th>
|
||||
<th lay-data="{field:'total_money'}">总价</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $order_detail.order_goods_list as $v}
|
||||
<tr>
|
||||
<td>{$v.sku_name}</td>
|
||||
<td>{$v.num}</td>
|
||||
<td>{$v.price}</td>
|
||||
<td>{$v.goods_money}</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="layui-row order-detail-total">
|
||||
<div class="layui-col-md9"> </div>
|
||||
<div class="layui-col-md3 order-money-box" >
|
||||
<div>商品总额:¥{$order_detail["goods_money"]}</div>
|
||||
<div>店铺优惠券:¥{$order_detail["coupon_money"]}</div>
|
||||
<div>配送费用:¥{$order_detail["delivery_money"]}</div>
|
||||
<div>订单共{$order_detail["num"]}件商品,总计:<span>¥{$order_detail["order_money"]}</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{include file="order/order_common_action" /}
|
||||
352
addon/jielong/shop/view/order/lists.html
Executable file
352
addon/jielong/shop/view/order/lists.html
Executable file
@@ -0,0 +1,352 @@
|
||||
<style>
|
||||
#order_page{height: 60px;}
|
||||
.topList{margin-top:16px;width:100%;background:#f1f1f1;height:46px;border-radius:2px;display: flex;align-items: center;}
|
||||
.topList-content{box-sizing: border-box; text-align: left;line-height: 46px;height: 46px;padding:0 10px;color:#666;font-weight: bold;}
|
||||
.topList-content:nth-child(1){text-align: left;}
|
||||
.layui-laypage-default{float:right}
|
||||
.shop{width:30%;}
|
||||
.moneyNum{width:8%;text-align: right !important;}
|
||||
.realMoney{width:10%;text-align: center !important;}
|
||||
.information{width:22%}
|
||||
.state{width:15%}
|
||||
.operation{width:15%}
|
||||
.bottomList{width:100%;}
|
||||
.bottomList-content{margin:16px 0;border:1px solid #f1f1f1;border-radius:4px;min-height:120px;}
|
||||
.bottomList-top{display: flex;align-items: center; width: 100%;background:#f1f1f1;height:40px;line-height: 40px;padding:0 15px;box-sizing: border-box;}
|
||||
.bottomList-top-text{margin-right:30px;text-align: left;color: #333;font-size:14px;}
|
||||
.bottomList-content-bottom{width:100%;min-height:80px;display: flex;align-items: center;}
|
||||
.bottomList-content-bottom:after{overflow: hidden;content: "";height: 0;display: block;clear: both;}
|
||||
.bottomList-content-bottom-shop{width:30%;min-height:80px;}
|
||||
.ListContentShop{display: flex;align-items: center;height: 80px; width: 100%;}
|
||||
.ListContentShop>img{width: 60px;height: 60px;}
|
||||
.ListContentShopText{float: left;margin-left:10px;width:76%;font-size:14px;color:#666; display: -webkit-box;-webkit-line-clamp:2;overflow: hidden;text-overflow: ellipsis;-webkit-box-orient: vertical;}
|
||||
.borerBottom{border-bottom:1px solid #f1f1f1;padding:10px;box-sizing: border-box;}
|
||||
.borerBottom:last-child{border-bottom:none;}
|
||||
.bottomList-content-bottom-moneyNum{width:8%;border-right: 1px solid #f1f1f1;}
|
||||
.ListContentMoneyNum{width:100%;height:81px;display: flex;flex-direction: column;justify-content: space-between;}
|
||||
.ListContentMoneyNum>p{text-align: right;font-size:14px;color:#666;}
|
||||
.bottomList-content-bottom-consignee{box-sizing: border-box; border-right:1px solid #f1f1f1; width: 22%;height:80px;padding-left:10px;display: flex;flex-direction: column;justify-content:center;}
|
||||
.consignee-center{min-height:80px;display: flex;flex-direction: column;justify-content: space-around;}
|
||||
.consignee-center>p{color:#666;font-size:14px;}
|
||||
.bottomList-content-bottom-state{padding-left:10px;border-right: 1px solid #f1f1f1;width:15%;display: flex;flex-direction: column;justify-content: center;box-sizing: border-box;}
|
||||
.bottomList-content-bottom-state>p{color:#666;font-size:14px;}
|
||||
.bottomList-content-bottom-operation{width:15%;padding-left:10px;box-sizing: border-box;display: flex;align-items: center;justify-content: flex-end;}
|
||||
.look{font-size:14px;cursor:pointer;margin-right:10px;}
|
||||
.bottomList-content-bottom-realMoney{width: 10%;box-sizing: border-box;border-right: 1px solid #f1f1f1;color:#666;display: flex;align-items: center;justify-content: center;}
|
||||
.image-content{width: 100%;height:250px;display: flex;align-items: center;justify-content: center;}
|
||||
.image-content>div>li{font-size:35px;color: #c2c2c2;text-align: center;}
|
||||
.image-content>div>p{font-size:14px;text-align: center; color: #c2c2c2;}
|
||||
.display-imageNone{display: none !important;}
|
||||
.address{height: 0;width: 1px; border: none; overflow: hidden;}
|
||||
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
|
||||
.layui-layout-admin .screen{margin-top: 15px;}
|
||||
</style>
|
||||
|
||||
<div class="layui-collapse tips-wrap">
|
||||
<div class="layui-colla-item">
|
||||
<h2 class="layui-colla-title">操作提示</h2>
|
||||
<ul class="layui-colla-content layui-show">
|
||||
<li>社群接龙展示商品相关信息</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="screen layui-collapse" lay-filter="selection_panel">
|
||||
<div class="layui-colla-item">
|
||||
<form class="layui-colla-content layui-form layui-show">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">搜索方式:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="order_label" >
|
||||
{foreach $order_label_list as $k => $label_val}
|
||||
<option value="{$k}">{$label_val}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="search" autocomplete="off" class="layui-input" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">订单来源:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="order_from">
|
||||
<option value="">全部</option>
|
||||
{foreach $order_from_list as $order_from_k => $order_from_v}
|
||||
<option value="{$order_from_k}">{$order_from_v['name']}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">付款方式:</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="pay_type" >
|
||||
<option value="">全部</option>
|
||||
{foreach pay_type_list as $pay_type_k => $pay_type_v}
|
||||
<option value="{$pay_type_k}">{$pay_type_v}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">下单时间:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="start_time" placeholder="开始时间" id="start_time" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<div class="layui-form-mid">-</div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="end_time" placeholder="结束时间" id="end_time" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(7, this);return false;">近7天</button>
|
||||
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(30, this);return false;">近30天</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="search">筛选</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary" onclick="interface()">重置</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{include file="order/order_common_action" /}
|
||||
|
||||
<div class="layui-tab table-tab" lay-filter="jielong_tab">
|
||||
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this" data-status="" name="">全部</li>
|
||||
<!-- {foreach $order_status_list as $status_val}
|
||||
<li data-status="{$status_val.status}" name="{$status_val.status}">{$status_val.name}</li>
|
||||
{/foreach} -->
|
||||
<li name="0">待支付</li>
|
||||
<li name="1">待发货</li>
|
||||
<li name="3">已发货</li>
|
||||
<li name="4">已收货</li>
|
||||
<li name="10">已完成</li>
|
||||
<li name="-1">已关闭</li>
|
||||
<li name="20">已退款</li>
|
||||
</ul>
|
||||
|
||||
<div class="topList">
|
||||
<div class="topList-content shop">商品</div>
|
||||
<div class="topList-content moneyNum">单价/数量</div>
|
||||
<div class="topList-content realMoney">实付金额</div>
|
||||
<div class="topList-content information">收货人信息</div>
|
||||
<div class="topList-content state">交易状态</div>
|
||||
<div class="topList-content operation" style="text-align: right;">操作</div>
|
||||
</div>
|
||||
<div id="bottomList" class="bottomList"></div>
|
||||
|
||||
<div id="order_page"></div>
|
||||
|
||||
<div id="image-contents" class="image-content">
|
||||
<div>
|
||||
<li class="layui-icon layui-icon-tabs"></li>
|
||||
<p>暂无数据</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/html" id="goodsList">
|
||||
{{# for(var index in d){ }}
|
||||
<div class="bottomList-content">
|
||||
<div class="bottomList-top">
|
||||
<p class="bottomList-top-text">
|
||||
<span>订单号:</span>
|
||||
<span class="bottomListTopNumber">{{d[index].order_no}}</span>
|
||||
</p>
|
||||
{{# if(d[index].pay_time){ }}
|
||||
<p class="bottomList-top-text">
|
||||
<span>下单时间:</span>
|
||||
<span class="bottomListTopTime">{{ns.time_to_date(d[index].pay_time)}}</span>
|
||||
</p>
|
||||
{{# } }}
|
||||
</div>
|
||||
<div class="bottomList-content-bottom">
|
||||
<div class="bottomList-content-bottom-shop">
|
||||
{{# for(var i in d[index].order_goods_list){ }}
|
||||
<div class="ListContentShop borerBottom">
|
||||
<img class="ListContentShopImage" src="{{ns.img(d[index].order_goods_list[i].sku_image)}}">
|
||||
<p class="ListContentShopText">{{d[index].order_goods_list[i].sku_name}}</p>
|
||||
</div>
|
||||
{{# }}}
|
||||
</div>
|
||||
<div class="bottomList-content-bottom-moneyNum">
|
||||
{{# for(var i in d[index].order_goods_list){ }}
|
||||
<div class="ListContentMoneyNum borerBottom">
|
||||
<p class="ListContentMoneyMoney">{{d[index].order_goods_list[i].price}}元</p>
|
||||
<p class="ListContentNum">{{d[index].order_goods_list[i].num}}件</p>
|
||||
</div>
|
||||
{{# }}}
|
||||
</div>
|
||||
<div class="bottomList-content-bottom-realMoney">{{d[index].order_money}}元</div>
|
||||
<div class="height bottomList-content-bottom-consignee">
|
||||
<div class="consignee-center">
|
||||
<p class="listBottomConsignee-name">{{d[index].name}}</p>
|
||||
<p class="listBottomConsignee-ipone">{{d[index].mobile}}</p>
|
||||
<p class="listBottomConsignee-dizhi">{{d[index].full_address}}<input type="text" class="address" id="address" value="{{d[index].full_address}}"><a href="javascript:ns.copy('address');" class="iconfont iconfuzhi" style="margin-top: 4px"></a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottomList-content-bottom-state">
|
||||
<p class="listBottomState">{{d[index].order_status_name}}</p>
|
||||
</div>
|
||||
<div class="bottomList-content-bottom-operation">
|
||||
<a class="look text-color" onclick="see({{d[index].relate_order_id}})" style="text-align: right;">查看订单详情</a>
|
||||
{{# if (d[index].order_status == -1){ }}
|
||||
<a class="look text-color" href="javascript:orderAction('deleteOrder', '{{d[index].id}}')">删除订单</a>
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var end_time,order_from,order_label,pay_type,search,start_time,switchs,page,page_size;
|
||||
layui.use(['form', 'element','laydate','laytpl','laypage'], function() {
|
||||
form = layui.form;
|
||||
laytpl = layui.laytpl;
|
||||
laydate = layui.laydate;
|
||||
element = layui.element;
|
||||
repeat_flag = false; //防重复标识
|
||||
laypage = layui.laypage;
|
||||
form.render();
|
||||
|
||||
//渲染时间
|
||||
laydate.render({
|
||||
elem: '#start_time',
|
||||
type: 'datetime'
|
||||
});
|
||||
|
||||
laydate.render({
|
||||
elem: '#end_time',
|
||||
type: 'datetime'
|
||||
});
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
|
||||
form.on('submit(search)', function (data) {
|
||||
end_time = data.field.end_time,
|
||||
order_from = data.field.order_from,
|
||||
// order_label=data.field.order_label,
|
||||
pay_type = data.field.pay_type,
|
||||
search = data.field.search,
|
||||
start_time = data.field.start_time;
|
||||
|
||||
orderList();
|
||||
return false
|
||||
});
|
||||
|
||||
element.on('tab(jielong_tab)', function (data) {
|
||||
switchs = $(this).attr('name');
|
||||
orderList();
|
||||
})
|
||||
|
||||
});
|
||||
|
||||
function orderList(data){
|
||||
var url = ns.url("jielong://shop/order/lists");
|
||||
$.ajax({
|
||||
type : 'get',
|
||||
dataType: 'json',
|
||||
url :url,
|
||||
data:{
|
||||
end_time:end_time,
|
||||
order_from:order_from,
|
||||
order_label:order_label,
|
||||
pay_type:pay_type,
|
||||
search:search,
|
||||
start_time:start_time,
|
||||
order_status:switchs,
|
||||
page:page,
|
||||
page_size:page_size,
|
||||
jielong_id:{$jielong_id}
|
||||
},
|
||||
success : function(res){
|
||||
let list = res.data.list;
|
||||
if(list==''){
|
||||
$("#order_page").css('display','none');
|
||||
$("#image-contents").removeClass("display-imageNone");
|
||||
}else{
|
||||
$("#order_page").css('display','block');
|
||||
$("#image-contents").addClass("display-imageNone");
|
||||
}
|
||||
|
||||
laytpl($('#goodsList').html()).render(list,function(html){
|
||||
$('#bottomList').html(html)
|
||||
});
|
||||
|
||||
if(!data){
|
||||
new Page({
|
||||
elem: 'order_page',
|
||||
count: res.data.count,
|
||||
curr: 1,
|
||||
limit:10,
|
||||
callback: function(obj, first) {
|
||||
let data={
|
||||
pages:obj.curr,
|
||||
page_sizes:obj.limit
|
||||
};
|
||||
page=obj.curr,
|
||||
page_size=obj.limit;
|
||||
if(!first){
|
||||
orderList(data);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
list.forEach((item,index)=>{
|
||||
let height=$(".bottomList-content-bottom").eq(index).height();
|
||||
$(".bottomList-content-bottom-consignee").eq(index).css('height',height);
|
||||
$(".bottomList-content-bottom-state").eq(index).css('height',height);
|
||||
$(".bottomList-content-bottom-realMoney").eq(index).css('height',height);
|
||||
})
|
||||
},
|
||||
});
|
||||
}
|
||||
orderList();
|
||||
|
||||
// 查看
|
||||
function see(id){
|
||||
window.open(ns.href("/shop/order/detail", {"order_id": id}));
|
||||
}
|
||||
/**
|
||||
* 七天时间
|
||||
*/
|
||||
function datePick(date_num,event_obj){
|
||||
$(".date-picker-btn").removeClass("selected");
|
||||
$(event_obj).addClass('selected');
|
||||
// alert(new Date().format("yyyy-MM-dd hh:mm"));
|
||||
var now_date = new Date();
|
||||
|
||||
Date.prototype.Format = function (fmt,date_num) { //author: meizz
|
||||
this.setDate(this.getDate()-date_num);
|
||||
var o = {
|
||||
"M+": this.getMonth() + 1, //月份
|
||||
"d+": this.getDate(), //日
|
||||
"H+": this.getHours(), //小时
|
||||
"m+": this.getMinutes(), //分
|
||||
"s+": this.getSeconds(), //秒
|
||||
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
|
||||
"S": this.getMilliseconds() //毫秒
|
||||
};
|
||||
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
|
||||
for (var k in o)
|
||||
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
|
||||
return fmt;
|
||||
};
|
||||
// var now_time = new Date().Format("yyyy-MM-dd HH:mm:ss",0);//当前日期
|
||||
var now_time = new Date().Format("yyyy-MM-dd 23:59:59",0);//当前日期
|
||||
var before_time = new Date().Format("yyyy-MM-dd 00:00:00",date_num-1);//前几天日期
|
||||
$("input[name=start_time]").val(before_time,0);
|
||||
$("input[name=end_time]").val(now_time,date_num-1);
|
||||
}
|
||||
</script>
|
||||
42
addon/jielong/shop/view/order/order_common_action.html
Executable file
42
addon/jielong/shop/view/order/order_common_action.html
Executable file
@@ -0,0 +1,42 @@
|
||||
<script type="text/javascript">
|
||||
var laytpl;
|
||||
var form;
|
||||
//渲染模板引擎
|
||||
layui.use(['laytpl','form'], function(){
|
||||
laytpl = layui.laytpl;
|
||||
form = layui.form;
|
||||
form.render();
|
||||
});
|
||||
/**
|
||||
* 订单操作
|
||||
* @param fun
|
||||
* @param order_id
|
||||
*/
|
||||
function orderAction(fun, order_id){
|
||||
eval(fun+"("+order_id+")");
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除订单
|
||||
* @param order_id
|
||||
*/
|
||||
function deleteOrder(order_id){
|
||||
layer.confirm('确定要删除该订单吗?', function(index) {
|
||||
layer.close(index);
|
||||
$.ajax({
|
||||
url: ns.url("jielong://shop/order/deleteOrder"),
|
||||
data: {order_id : order_id},
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
success: function(res) {
|
||||
layer.msg(res.message);
|
||||
if (res.code == 0) {
|
||||
location.hash = ns.hash("jielong://shop/order/lists");
|
||||
}
|
||||
}
|
||||
});
|
||||
}, function () {
|
||||
layer.close();
|
||||
});
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user