This commit is contained in:
manghe 2025-04-06 17:26:08 +00:00
parent e85bdc0976
commit 7749e26e2c
28 changed files with 1573 additions and 435 deletions

View File

@ -9,6 +9,7 @@ use app\common\model\Danye as DanyeModel;
class Danye extends Base
{
public $page = '50';
public function index()
{
$whe = [];
@ -47,7 +48,7 @@ class Danye extends Base
if (!$info) {
return $this->renderError('请求参数错误1');
}
if ($info['id'] != 1) {
if ($info['id'] != 1 && $info['id'] < 21) {
unset($data['title']);
}
$data['update_time'] = time();

View File

@ -142,7 +142,7 @@ class Goods extends Base
}
$data['prize_num'] = 0;
$data['category_id'] = 0;
} elseif ($data['type'] == 2) {
} elseif ($data['type'] == 2 || $data['type'] == 16) {
$data['stock'] = 0;
$data['lock_is'] = 0;
$data['lock_time'] = 0;
@ -390,7 +390,7 @@ class Goods extends Base
}
$data['prize_num'] = 0;
$data['category_id'] = 0;
} elseif ($type == 2) {
} elseif ($type == 2 || $type == 16) {
$data['stock'] = 0;
$data['lock_is'] = 0;
$data['lock_time'] = 0;
@ -573,6 +573,7 @@ class Goods extends Base
}
}
/**
* 上、下架,删除盒子
*/
@ -613,45 +614,88 @@ class Goods extends Base
return $this->renderError('请求参数错误');
}
$type = $info['type'];
$title = trim(input('get.title'));
$lian_ji_type = input('get.lian_ji_type');
$whe = array();
$whe[] = ['goods_id', '=', $goods_id];
View::assign('goods_id', $goods_id);
View::assign('type', $type);
return View::fetch("Goods/goodslist");
}
/**
* 获取奖品列表数据(前后端分离接口)
*/
public function getGoodsListData(Request $request)
{
$goods_id = $request->param('goods_id/d', 0);
$page = $request->param('page/d', 1);
$limit = $request->param('limit/d', 50);
$title = $request->param('title/s', '');
$lian_ji_type = $request->param('lian_ji_type/s', '');
$info = GoodsModel::where(['id' => $goods_id])->find();
if (!$info) {
return $this->renderError('请求参数错误');
}
$type = $info['type'];
$where = [];
$where[] = ['goods_id', '=', $goods_id];
if ($type == 1 || $type == 3 || $type == 5 || $type == 6 || $type == 10 || $type == 11) {
$whe[] = ['num', '=', 1];
} elseif ($type == 2 || $type == 8 || $type == 9 || $type == 15) {
$whe[] = ['num', '=', 0];
$where[] = ['num', '=', 1];
} elseif ($type == 2 || $type == 8 || $type == 9 || $type == 15 || $type == 16) {
$where[] = ['num', '=', 0];
} else {
return $this->renderError('请求参数错误1');
}
if (!empty($title)) {
$whe[] = ['title', 'like', '%' . $title . '%'];
$where[] = ['title', 'like', "%{$title}%"];
}
if (!empty($lian_ji_type)) {
$whe[] = ['lian_ji_type', '=', $lian_ji_type];
$where[] = ['lian_ji_type', '=', $lian_ji_type];
}
$field = "*";
$order = "sort desc,shang_id asc,id asc";
$data = GoodsList::getList($whe, $field, $order, 150);
$real_pro = 0;
foreach ($data['list'] as &$value) {
$value['shang'] = Shang::where(['id' => $value['shang_id']])->value('title');
// if ($value['goods_type'] == 2) {
// $value['sale_time'] = date('Y-m-d', $value['sale_time']);
// } else {
// $value['sale_time'] = '';
// }
$real_pro += $value['real_pro'];
}
View::assign('list', $data['list']);
View::assign('count', $data['count']);
View::assign('page', $data['page']);
View::assign('goods_id', $goods_id);
View::assign('type', $type);
View::assign('real_pro', $real_pro);
return View::fetch("Goods/goodslist");
$where[] = ['goods_list_id', '=', 0];
$query = GoodsList::where($where)->order('sort desc, shang_id asc, id asc');
$count = $query->count();
$list = $query->page($page, $limit)->select()->toArray();
$real_pro = 0;
// 处理数据
foreach ($list as &$item) {
$item['shang'] = Shang::where(['id' => $item['shang_id']])->value('title');
$item['imgurl'] = imageUrl($item['imgurl']);
if (!empty($item['imgurl_detail'])) {
$item['imgurl_detail'] = imageUrl($item['imgurl_detail']);
}
$real_pro += $item['real_pro'];
if ($item['goods_type'] == 4) {
$goods_list = GoodsList::where('goods_id', $item['goods_id'])
->where('goods_list_id', '=', $item['id'])
->select()
->toArray();
if ($goods_list) {
$item['isParent'] = 'true';
$real_pro1 = 0;
foreach ($goods_list as &$goods_list_item) {
$goods_list_item['shang'] = Shang::where(['id' => $goods_list_item['shang_id']])->value('title');
$goods_list_item['imgurl'] = imageUrl($goods_list_item['imgurl']);
if (!empty($goods_list_item['imgurl_detail'])) {
$goods_list_item['imgurl_detail'] = imageUrl($goods_list_item['imgurl_detail']);
}
$real_pro1 += $goods_list_item['real_pro'];
}
if ($type == 2 || $type == 8 || $type == 9 || $type == 15 || $type == 16) {
$goods_list[] = ['title' => '宝箱概率合计', 'real_pro' => $real_pro1, 'id' => -1];
}
$item['children'] = $goods_list;
}
}
}
return $this->renderTable('获取成功', $count, $list, ['code' => 0, 'real_pro' => $real_pro]);
}
/**
@ -662,12 +706,16 @@ class Goods extends Base
if (!$request->isPost()) {
$goods_id = $request->param('goods_id/d', 0);
$info = GoodsModel::where(['id' => $goods_id])->find();
$goods_list_id = $request->param('goods_list_id/d', 0);
if (!$info) {
return $this->renderError('请求参数错误');
}
if ($info['type'] == 1 || $info['type'] == 5 || $info['type'] == 10 || $info['type'] == 11 || $info['type'] == 6) {
$shang = Shang::where('id', '<=', 33)->where('id', '<>', 5)->select()->toArray();
} elseif ($info['type'] == 2 || $info['type'] == 8 || $info['type'] == 9) {
if( $goods_list_id){
$shang = Shang::where('id', '<=', 33)->where('id', '>', 5)->select()->toArray();
}
} elseif ($info['type'] == 2 || $info['type'] == 8 || $info['type'] == 9 || $info['type'] == 16) {
$shang = Shang::where('id', 'between', [34, 38])->select()->toArray();
} elseif ($info['type'] == 3) {
$shang = Shang::where('id', 'between', [4, 33])->select()->toArray();
@ -678,6 +726,7 @@ class Goods extends Base
}
View::assign('shang', $shang);
View::assign('goods_id', $goods_id);
View::assign('goods_list_id', $goods_list_id);
View::assign('type', $info['type']);
return View::fetch('Goods/goodslist_add');
} else {
@ -707,7 +756,7 @@ class Goods extends Base
}
if ($data['goods_type'] == 1) {
$data['sale_time'] = 0;
} else if (in_array($data['goods_type'], [2, 8, 9])) {
} else if (in_array($data['goods_type'], [2, 8, 9, 16])) {
if (empty($data['sale_time'])) {
return $this->renderError('请选择预售时间');
}
@ -718,6 +767,8 @@ class Goods extends Base
}
} elseif ($type == 15) {
$data['sale_time'] = 0;
} elseif ($data['goods_type'] == 3 || $data['goods_type'] == 4) {
$data['sale_time'] = 0;
} else {
return $this->err('奖品类型选择错误');
}
@ -745,9 +796,9 @@ class Goods extends Base
$data['prize_code'] = $prize_code;
$save_sports_data[] = $data;
}
} elseif (in_array($type, [2, 8, 9])) {
if (RegMoney($data['real_pro'] * 100)) {
return $this->renderError('真实概率设置错误,最多保留两位小数1');
} elseif (in_array($type, [2, 8, 9, 16])) {
if (RegMoney($data['real_pro'] * 10000)) {
return $this->renderError('真实概率设置错误,最多保留四位小数');
}
$prize_code = getPrizeCode() . '_' . time();
@ -817,6 +868,7 @@ class Goods extends Base
if (!$request->isPost()) {
$id = $request->param('id/d', 0);
$goods = GoodsList::where(['id' => $id])->find();
$goods_list_id = $request->param('goods_list_id/d', 0);
if (!$goods) {
return $this->renderError('请求参数错误');
}
@ -832,7 +884,10 @@ class Goods extends Base
}
if ($info['type'] == 1 || $info['type'] == 5 || $info['type'] == 6 || $info['type'] == 10 | $info['type'] == 11) {
$shang = Shang::where('id', '<=', 33)->where('id', '<>', 5)->select()->toArray();
} elseif ($info['type'] == 2 || $info['type'] == 8 || $info['type'] == 9) {
if( $goods_list_id){
$shang = Shang::where('id', '<=', 33)->where('id', '>', 5)->select()->toArray();
}
} elseif ($info['type'] == 2 || $info['type'] == 8 || $info['type'] == 9 || $info['type'] == 16) {
$shang = Shang::where('id', 'between', [34, 38])->select()->toArray();
} elseif ($info['type'] == 15) {
$shang = Shang::where('id', '>=', 114)->select()->toArray();
@ -845,6 +900,7 @@ class Goods extends Base
View::assign('goods', $goods);
View::assign('shang', $shang);
View::assign('type', $info['type']);
View::assign('goods_list_id', $goods_list_id);
return View::fetch('Goods/goodslist_edit');
} else {
@ -887,7 +943,7 @@ class Goods extends Base
if ($today_time >= $data['sale_time']) {
return $this->renderError('预售时间请在今天之后');
}
} elseif ($data['goods_type'] == 3) {
} elseif ($data['goods_type'] == 3 || $data['goods_type'] == 4) {
$data['sale_time'] = 0;
} else {
return $this->err('奖品类型选择错误');
@ -899,9 +955,9 @@ class Goods extends Base
if ($type == 1 || $type == 5 || $type == 10 || $type == 6 || $type == 11 || $type == 15) {
} elseif ($type == 2 || $type == 8 || $type == 9) {
if (RegMoney($data['real_pro'] * 1000)) {
return $this->renderError('真实概率设置错误,最多保留位小数');
} elseif ($type == 2 || $type == 8 || $type == 9 || $type == 16) {
if (RegMoney($data['real_pro'] * 10000)) {
return $this->renderError('真实概率设置错误,最多保留位小数');
}
} else if ($type == 3) {
if (RegInt($data['prize_num']) && $data['shang_id'] == 5) {

View File

@ -161,6 +161,7 @@ Route::rule('card_set', 'CardGoods/card_set', 'GET|POST');
#============================
Route::rule('goods', 'Goods/goods', 'GET|POST');
Route::rule('api/goods/list', 'Goods/getGoodsList', 'GET');
Route::rule('getGoodsListData', 'Goods/getGoodsListData', 'GET|POST');
Route::rule('api/goods/types', 'Goods/getGoodsTypeList', 'GET');
Route::rule('goods_add', 'Goods/goods_add', 'GET|POST');
Route::rule('goods_edit', 'Goods/goods_edit', 'GET|POST');

View File

@ -15,7 +15,7 @@
<div class="layui-input-block">
<input type="text" name="title" value="{$info['title']}" lay-verify="required"
placeholder="请输入标题" autocomplete="off" class="layui-input" {if
condition="$info['id'] neq 1" }readonly{/if}>
condition="$info['id'] lt 20" }readonly{/if}>
</div>
</div>
<div class="layui-form-item">

View File

@ -21,9 +21,9 @@
<div class="layui-form-item">
<label class="layui-form-label">是否首抽五折</label>
<div class="layui-input-inline" style="width: 700px">
<input type="radio" name="is_shou_zhe" value="0" lay-filter="type"
<input type="radio" name="is_shou_zhe" value="0" lay-filter="shou_zhe"
class="layui-input" title="否" checked>
<input type="radio" name="is_shou_zhe" value="1" lay-filter="type"
<input type="radio" name="is_shou_zhe" value="1" lay-filter="shou_zhe"
class="layui-input" title="是">
</div>
</div>
@ -358,6 +358,8 @@
$(".lian_ji_num").hide();
$(".lian_ji_shang_id").hide();
form.on('radio(type)', function (data) {
console.log('aaa');
var value = data.value; // 当前选中的value值
$("#div_daily_xiangou").show();
$("#goods_describe_div").hide();
@ -382,7 +384,7 @@
$(".lingzhu_shang_id").hide();
$(".lian_ji_num").hide();
$(".lian_ji_shang_id").hide();
} else if (value == 2) {
} else if (value == 2 || value == 16) {
$(".id_stock").hide();
$(".id_lock_is").hide();
$(".id_lock_time").hide();
@ -546,6 +548,13 @@
$('.xiajia-config').hide();
}
});
// 首抽五折切换事件
form.on('radio(shou_zhe)', function (data) {
// 仅记录选择,不做界面显示变化
console.log('首抽五折设置为:', data.value);
});
//执行实例
upload.render({
accept: 'imgurl'

View File

@ -21,9 +21,9 @@
<div class="layui-form-item">
<label class="layui-form-label">是否首抽五折</label>
<div class="layui-input-inline" style="width: 700px">
<input type="radio" name="is_shou_zhe" value="0" lay-filter="type"
<input type="radio" name="is_shou_zhe" value="0" lay-filter="shou_zhe"
class="layui-input" title="否" {if $info.is_shou_zhe eq 0} checked {/if}>
<input type="radio" name="is_shou_zhe" value="1" lay-filter="type"
<input type="radio" name="is_shou_zhe" value="1" lay-filter="shou_zhe"
class="layui-input" title="是" {if $info.is_shou_zhe eq 1} checked {/if}>
</div>
</div>
@ -65,7 +65,8 @@
class="layui-input" style="width: 600px">
</div>
</div>
<div class="layui-form-item flw_time_config" {if $type eq 15}style="display: block;"{else}style="display: none;"{/if}>
{if $type eq 15}
<div class="layui-form-item flw_time_config" style="display: block;">
<label class="layui-form-label">开始时间</label>
<div class="layui-input-inline">
<input type="text" name="flw_start_time" id="flw_start_time"
@ -73,7 +74,7 @@
placeholder="请选择开始时间" class="layui-input" style="width: 600px">
</div>
</div>
<div class="layui-form-item flw_time_config" {if $type eq 15}style="display: block;"{else}style="display: none;"{/if}>
<div class="layui-form-item flw_time_config" style="display: block;">
<label class="layui-form-label">结束时间</label>
<div class="layui-input-inline">
<input type="text" name="flw_end_time" id="flw_end_time"
@ -81,7 +82,7 @@
placeholder="请选择结束时间" class="layui-input" style="width: 600px">
</div>
</div>
<div class="layui-form-item flw_time_config" {if $type eq 15}style="display: block;"{else}style="display: none;"{/if}>
<div class="layui-form-item flw_time_config" style="display: block;">
<label class="layui-form-label">开奖时间</label>
<div class="layui-input-inline">
<input type="text" name="open_time" id="open_time"
@ -89,6 +90,7 @@
placeholder="请选择开奖时间" class="layui-input" style="width: 600px">
</div>
</div>
{/if}
<div class="layui-form-item id_stock">
<label class="layui-form-label">套数</label>
<div class="layui-input-inline">
@ -350,6 +352,12 @@
var value = data.value; // 当前选中的value值
type_switch(value);
});
// 首抽五折切换事件
form.on('radio(shou_zhe)', function (data) {
// 仅记录选择,不做界面显示变化
console.log('首抽五折设置为:', data.value);
});
function type_switch(value) {
$('#isshouwchou').show();
@ -376,7 +384,7 @@
$(".lingzhu_shang_id").hide();
$(".lian_ji_num").hide();
$(".lian_ji_shang_id").hide();
} else if (value == 2) {
} else if (value == 2 || value == 16) {
$(".id_stock").hide();
$(".id_lock_is").hide();
$(".id_lock_time").hide();
@ -534,6 +542,15 @@
}
}
// 自动下架开关切换事件
form.on('radio(autoXiajia)', function (data) {
if (data.value == "1") {
$('.xiajia-config').show();
} else {
$('.xiajia-config').hide();
}
});
//执行实例
upload.render({
accept: 'imgurl'

View File

@ -1,20 +1,20 @@
{include file="Public:header2"/}
{include file="Public:header3"/}
<body>
<div class="layui-fluid">
<div class="layui-card">
<form method="get" class="layui-form layui-card-header layuiadmin-card-header-auto">
<div class="layui-form layui-card-header layuiadmin-card-header-auto">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-block" style="margin-left: 0px">
<input type="text" name="title" value="{$Request.get.title}" placeholder="请输入奖品标题"
autocomplete="off" class="layui-input">
<input type="text" name="title" id="searchTitle" value="{$Request.get.title}"
placeholder="请输入奖品标题" autocomplete="off" class="layui-input">
</div>
</div>
{if $type eq 9}
<div class="layui-inline">
<div class="layui-input-inline" style="width: 180px;margin-left: 0px">
<select name="lian_ji_type" style="width:100%">
<select name="lian_ji_type" id="searchLianJiType" style="width:100%">
<option value="">--奖池分类--</option>
<option value="0" {if condition="$Request.get.lian_ji_type eq 0" }selected{/if}>连击赏池
</option>
@ -24,165 +24,304 @@
</div>
</div>
{/if}
<input type="hidden" name="goods_id" value="{$goods_id}">
<input type="hidden" id="goodsId" value="{$goods_id}">
<input type="hidden" id="goodsType" value="{$type}">
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-useradmin mmm" lay-submit
lay-filter="LAY-user-front-search">
<button class="layui-btn layuiadmin-btn-useradmin" id="searchBtn">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
</div>
</div>
</form>
</div>
<div class="layui-card-body">
<xblock>
<div style="padding-bottom: 10px;">
<a class="layui-btn" onclick="goodslist_add({$goods_id})">添加奖品</a>
<span style="line-height:40px;float:right;">共有数据: {$count}条</span>
</div>
</xblock>
<table class="layui-table" style="text-align:center">
<thead>
<tr>
<th>奖品名称</th>
<th>奖品图片</th>
<th>商品详情图</th>
<th>奖品售价</th>
<th>奖品兑换价</th>
{if $type eq 1 || $type eq 3 || $type eq 5 || $type eq 10 || $type eq 11|| $type eq 15}
<th>奖品数量</th>
{/if}
{if $type eq 2 || $type eq 8 || $type eq 9}
<th>真实概率({$real_pro})</th>
{/if}
{if $type eq 9}
<th>奖池分类</th>
{/if}
<th>奖赏类型</th>
<!-- <th>预售时间</th>-->
<th>排序</th>
<!-- <th>赠送编码</th>-->
<th>操作</th>
</tr>
</thead>
<tbody>
{volist name="list" id="vo"}
<tr>
<td>{$vo['title']}</td>
<td><img src="{PHP} echo imageUrl($vo['imgurl']){/php}" style="width:60px;height:60px;">
</td>
<td>
{if condition="!empty($vo['imgurl_detail'])"}
<img src="{PHP} echo imageUrl($vo['imgurl_detail']){/php}" style="width:60px;height:60px;">
{else/}
<span></span>
{/if}
</td>
<td>{$vo['price']}</td>
<td>{$vo['money']}</td>
{if $type eq 1}
{/if}
{if $type eq 1 || $type eq 3 || $type eq 5 || $type eq 10 || $type eq 11 || $type eq 15}
<td>{$vo['stock']}</td>
{/if}
{if $type eq 2 || $type eq 8 || $type eq 9}
<td>{$vo['real_pro']}%</td>
{/if}
{if $type eq 9}
{if condition="$vo['lian_ji_type'] eq 0"}
<th>连击赏池</th>
{elseif condition="$vo['lian_ji_type'] eq 1"}
<th>秘宝池</th>
{/if}
{/if}
<td>
<button
class="layui-btn layui-btn-info layui-btn-radius layui-btn-sm">{$vo['shang']}</button>
</td>
<!-- <td>{$vo.sale_time}</td>-->
<td>{$vo['sort']}</td>
<!-- <td style="text-align: left">{$vo['card_no']}</td>-->
<td>
<a style="text-decoration:none" title="编辑" onclick="goodslist_edit({$vo['id']})"
class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs">
<i class="layui-icon layui-icon-edit"></i>编辑
</a>
<a style="text-decoration:none" title="删除" onClick="del({$vo.id})"
class="layui-btn layui-btn-danger layui-btn-radius layui-btn-xs">删除</a>
</td>
</tr>
{/volist}
{if condition="empty($list)"}
<tr>
<td colspan='10' style="text-align:center;">暂时没有数据!</td>
</tr>
{/if}
</tbody>
</table>
<div class="layui-box layui-laypage layui-laypage-default">
{$page|raw}
<div style="padding-bottom: 10px;">
<button class="layui-btn" id="addBtn">添加奖品</button>
</div>
<!-- 表格 -->
<table id="goodsListTable" lay-filter="goodsListTable"></table>
<!-- 奖品类型模板 -->
<script type="text/html" id="goodsTypeTpl">
{{# if(d.id!=-1){ }}
{{# if(d.goods_type === 1){ }}
<span>现货</span>
{{# } else if(d.goods_type === 2){ }}
<span>预售</span>
{{# } else if(d.goods_type === 3){ }}
<span>货币</span>
{{# } else if(d.goods_type === 4){ }}
<span>宝箱</span>
{{# } }}
{{# } }}
</script>
<!-- 操作列模板 -->
<script type="text/html" id="operationTpl">
{{# if(d.id!=-1){ }}
{{# if(d.goods_type === 4){ }}
<a class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs" lay-event="add">
<i class="layui-icon layui-icon-edit"></i>添加奖品
</a>
{{# } }}
<a class="layui-btn layui-btn-radius layui-btn-normal layui-btn-xs" lay-event="edit">
<i class="layui-icon layui-icon-edit"></i>编辑
</a>
<a class="layui-btn layui-btn-danger layui-btn-radius layui-btn-xs" lay-event="del">删除</a>
{{# } }}
</script>
<!-- 图片模板 -->
<script type="text/html" id="imgTpl">
{{# if(d.id!=-1){ }}
<img src="{{d.imgurl}}" style="width:60px;height:60px;">
{{# } }}
</script>
<!-- 详情图模板 -->
<script type="text/html" id="imgDetailTpl">
{{# if(d.id!=-1){ }}
{{# if(d.imgurl_detail){ }}
<img src="{{d.imgurl_detail}}" style="width:60px;height:60px;">
{{# } else { }}
<span></span>
{{# } }}
{{# } }}
</script>
<!-- 奖赏类型模板 -->
<script type="text/html" id="shangTpl">
{{# if(d.id!=-1){ }}
<button class="layui-btn layui-btn-info layui-btn-radius layui-btn-sm">{{d.shang}}</button>
{{# } }}
</script>
<!-- 奖池分类模板 -->
<script type="text/html" id="lianJiTypeTpl">
{{# if(d.id!=-1){ }}
{{# if(d.lian_ji_type === 0){ }}
<span>连击赏池</span>
{{# } else if(d.lian_ji_type === 1){ }}
<span>秘宝池</span>
{{# } }}
{{# } }}
</script>
<!-- 价格信息模板 -->
<script type="text/html" id="priceTpl">
{{# if(d.id!=-1){ }}
<div>售价: {{d.price}}</div>
<div>兑换价: {{d.money}}</div>
<div>参考价: {{d.sc_money}}</div>
<div>id: {{d.id}}</div>
<div>所属id: {{d.goods_list_id}}</div>
{{# } }}
</script>
</div>
</div>
</div>
{include file="Public:footer"/}
{include file="Public:footer3"/}
<script type="text/javascript">
layui.use(['layer', 'table'], function () {
var $ = layui.$;
layui.use(function () {
var $ = layui.$,
layer = layui.layer,
table = layui.table,
form = layui.form;
var treeTable = layui.treeTable;
// 获取PHP传递的值
var goodsId = $('#goodsId').val();
var goodsType = parseInt($('#goodsType').val());
})
// 初始化表格
initTable();
//添加奖品
function goodslist_add(goods_id) {
var url = "{:url('/admin/goodslist_add?goods_id=" + goods_id + "')}";
layer.open({
type: 2,
title: '添加奖品',
shadeClose: false,
shade: 0.3,
area: ['90%', '90%'],
content: url,
});
}
// 初始化表格
function initTable() {
// 构建表格列配置
var columns = [];
// columns.push({ field: 'id', title: 'ID', minWidth: 80 });
// columns.push({ field: 'goods_list_id', title: '所属宝箱id', minWidth: 80 });
// 基础列
columns.push({ field: 'title', title: '奖品名称', minWidth: 260 });
columns.push({ field: 'goods_type', title: '奖品类型', templet: '#goodsTypeTpl', minWidth: 100 });
// 通用列
columns.push({ field: 'shang', title: '奖赏类型', templet: '#shangTpl', minWidth: 100, totalRow: false });
columns.push({ field: 'imgurl', title: '奖品图片', templet: '#imgTpl', minWidth: 100 });
columns.push({ field: 'imgurl_detail', title: '商品详情图', templet: '#imgDetailTpl', minWidth: 100 });
columns.push({ field: 'price', title: '价格信息', templet: '#priceTpl', minWidth: 150 });
// 根据类型添加特定列
if ([1, 3, 5,6, 10, 11, 15].indexOf(goodsType) > -1) {
columns.push({ field: 'stock', title: '奖品数量', minWidth: 100 });
}
if ([2, 8, 9, 16].indexOf(goodsType) > -1) {
columns.push({
field: 'real_pro', title: '真实概率', templet: function (d) {
return d.real_pro + '%'
}, minWidth: 140, totalRow: '总概率:{{= d.TOTAL_ROW.real_pro }}%'
});
}
if (goodsType === 16) {
columns.push({ field: 'doubling', title: '赠送倍率', minWidth: 100 });
}
if (goodsType === 9) {
columns.push({ field: 'lian_ji_type', title: '奖池分类', templet: '#lianJiTypeTpl', minWidth: 100 });
}
columns.push({ field: 'sort', title: '排序', minWidth: 80 });
columns.push({ title: '操作', toolbar: '#operationTpl', minWidth: 210, fixed: 'right' });
//编辑奖品
function goodslist_edit(id) {
var url = "{:url('/admin/goodslist_edit?id=" + id + "')}";
layer.open({
type: 2,
title: '编辑奖品',
shadeClose: false,
shade: 0.3,
area: ['90%', '90%'],
content: url,
});
}
// 渲染表格
treeTable.render({
elem: '#goodsListTable',
url: '{:url("/admin/getGoodsListData")}',
method: 'get',
where: {
goods_id: goodsId
},
lineStyle: 'height:100px',
height: 'full-150',
page: true,
limit: 50,
totalRow: true,
tree: {
enable: true,
customName: {
name: 'title',
children: 'children',
isParent: 'isParent',
id: 'id'
},
view: {
indent: 20,
showIcon: false,
expandAllDefault: true
}
},
cols: [columns],
parseData: (res) => {
// console.log(res);
// res.data[0].children = [res.data[1]];
// res.data[0].children[0].id=9989;
// res.data[0].isParent = true;
// console.log(res.data);
//上下架
function del(id) {
var title = "删除";
layer.confirm('确认要执行' + title + '操作吗?', function () {
var url = "{:url('/admin/goodslist_del')}";
var load = layer.load(2);
var $ = layui.$;
$.post(url, { "id": id }, function (data) {
if (data.status == 1) {
layer.msg(title + '成功', { icon: 1, time: 1000 }, function () {
location.reload();
});
} else {
layer.msg(data.msg, { icon: 2, anim: 6, time: 1000 }, function () {
layer.close(load);
});
return {
"totalRow": {
"real_pro": res.code.real_pro,
},
"code": res.code.code, //解析接口状态
"msg": res.msg, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
},
done: function (res) {
// 表格加载完成后的回调
}
})
});
}
// 搜索按钮点击事件
$('#searchBtn').on('click', function () {
var title = $('#searchTitle').val();
var lianJiType = $('#searchLianJiType').val();
// 执行重载
table.reload('goodsListTable', {
where: {
goods_id: goodsId,
title: title,
lian_ji_type: lianJiType
},
page: {
curr: 1 // 重新从第1页开始
}
});
});
}
// 添加奖品按钮点击事件
$('#addBtn').on('click', function () {
openAddLayer(goodsId);
});
// 监听表格工具条事件
table.on('tool(goodsListTable)', function (obj) {
var data = obj.data;
if (obj.event === 'edit') {
// 编辑
openEditLayer(data.id, data.goods_list_id);
} else if (obj.event === 'del') {
// 删除
deleteItem(data.id);
} else if (obj.event === 'add') {
console.log(data);
openAddLayer(data.goods_id, data.id);
}
});
// 打开添加层
function openAddLayer(goodsId, goods_list_id = '') {
var url = "{:url('/admin/goodslist_add')}?goods_id=" + goodsId + "&goods_list_id=" + goods_list_id;
layer.open({
type: 2,
title: '添加奖品',
shadeClose: false,
shade: 0.3,
area: ['90%', '90%'],
content: url,
end: function () {
// 刷新表格
table.reload('goodsListTable');
}
});
}
// 打开编辑层
function openEditLayer(id, goods_list_id = '') {
var url = "{:url('/admin/goodslist_edit')}?id=" + id + "&goods_list_id=" + goods_list_id;
layer.open({
type: 2,
title: '编辑奖品',
shadeClose: false,
shade: 0.3,
area: ['90%', '90%'],
content: url,
end: function () {
// 刷新表格
table.reload('goodsListTable');
}
});
}
// 删除项目
function deleteItem(id) {
var title = "删除";
layer.confirm('确认要执行' + title + '操作吗?', function () {
var url = "{:url('/admin/goodslist_del')}";
var load = layer.load(2);
$.post(url, { "id": id }, function (data) {
if (data.status == 1) {
layer.msg(title + '成功', { icon: 1, time: 1000 }, function () {
// 刷新表格
table.reload('goodsListTable');
});
} else {
layer.msg(data.msg, { icon: 2, anim: 6, time: 1000 }, function () {
layer.close(load);
});
}
});
});
}
});
</script>
</body>

View File

@ -28,14 +28,19 @@
{/if}
<div class="layui-form-item">
<label class="layui-form-label">奖品分类</label>
<div class="layui-input-inline" style="width: 512px;">
<div class="layui-input-inline" style="width:700px;">
<input type="radio" lay-filter="goods_type" name="goods_type" value="1"
title="现货" checked>
<input type="radio" lay-filter="goods_type" name="goods_type" value="2"
title="预售">
<input type="radio" lay-filter="goods_type" name="goods_type" value="3"
title="货币">
<input type="radio" lay-filter="goods_type" name="goods_type" value="4"
title="宝箱" {if $goods_list_id}disabled{/if}>
<br />
<span style="font-size: 12px;color: #999;">货币:抽到后直接发放,不会到用户的盒柜里</span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">奖品类型</label>
@ -68,7 +73,8 @@
class="layui-input">
</div>
</div>
{if $type eq 1 || $type eq 3 || $type eq 5 || $type eq 10 || $type eq 6 || $type eq 11 || $type eq 15}
{if $type eq 1 || $type eq 3 || $type eq 5 || $type eq 10 || $type eq 6 || $type eq 11
|| $type eq 15}
<div class="layui-form-item">
<label class="layui-form-label">奖品数量</label>
<div class="layui-input-inline">
@ -87,7 +93,7 @@
</div>
</div>
{/if}
{if $type eq 2 || $type eq 8 || $type eq 9}
{if $type eq 2 || $type eq 8 || $type eq 9 || $type eq 16}
<div class="layui-form-item">
<label class="layui-form-label">真实概率</label>
<div class="layui-input-inline" style="width: 700px">
@ -97,6 +103,16 @@
</div>
{/if}
{if $type eq 16}
<div class="layui-form-item">
<label class="layui-form-label">赠送倍率</label>
<div class="layui-input-inline">
<input type="number" name="doubling" value="1" autocomplete="off"
placeholder="请输入赠送倍率" class="layui-input" style="width: 521px">
</div>
</div>
{/if}
<div class="layui-form-item sale_time" style="display: none">
<label class="layui-form-label">预售时间</label>
<div class="layui-input-inline" style="width: 512px;">
@ -129,13 +145,14 @@
<div class="layui-form-item">
<label class="layui-form-label">商品详情图</label>
<div class="layui-input-inline">
<input type="hidden" name="imgurl_detail" value=""
placeholder="请上传商品详情图" autocomplete="off" class="layui-input">
<input type="hidden" name="imgurl_detail" value="" placeholder="请上传商品详情图"
autocomplete="off" class="layui-input">
<img style="float:left;width:120px;" class="" id="imgurl_detail"
src="/static/image/upload.jpg">
</div>
</div>
<input type="hidden" name="goods_id" value="{$goods_id}">
<input type="hidden" name="goods_list_id" value="{$goods_list_id}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" onclick="return check()">确认保存</button>
@ -177,8 +194,9 @@
$(".sale_time").hide()
} else if (value == 2) {
$(".sale_time").show()
} else if (value == 3) {
} else if (value == 3 || value == 4) {
$("#sale_time").val('')
$(".sale_time").hide()
}
});

View File

@ -27,6 +27,21 @@
</div>
</div>
{/if}
<div class="layui-form-item">
<label class="layui-form-label">奖品分类</label>
<div class="layui-input-inline" style="width: 521px;">
<input type="radio" lay-filter="goods_type" name="goods_type" value="1"
title="现货" {if $goods.goods_type eq 1} checked {/if}>
<input type="radio" lay-filter="goods_type" name="goods_type" value="2"
title="预售" {if $goods.goods_type eq 2} checked {/if}>
<input type="radio" lay-filter="goods_type" name="goods_type" value="3"
title="货币" {if $goods.goods_type eq 3} checked {/if}>
<input type="radio" lay-filter="goods_type" name="goods_type" value="4"
title="宝箱" {if $goods_list_id}disabled{/if} {if $goods.goods_type eq 4} checked {/if}>
<br />
<span style="font-size: 12px;color: #999;">货币:抽到后直接发放,不会到用户的盒柜里</span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">奖品类型</label>
<div class="layui-input-inline" style="width: 521px">
@ -79,7 +94,7 @@
</div>
</div>
{/if}
{if $type eq 2 || $type eq 8 || $type eq 9}
{if $type eq 2 || $type eq 8 || $type eq 9 || $type eq 16}
<div class="layui-form-item">
<label class="layui-form-label">真实概率</label>
<div class="layui-input-inline" style="width: 700px">
@ -89,19 +104,19 @@
</div>
</div>
{/if}
{if $type eq 16}
<div class="layui-form-item">
<label class="layui-form-label">奖品类型</label>
<div class="layui-input-inline" style="width: 521px;">
<input type="radio" lay-filter="goods_type" name="goods_type" value="1"
title="现货" {if $goods.goods_type eq 1} checked {/if}>
<input type="radio" lay-filter="goods_type" name="goods_type" value="2"
title="预售" {if $goods.goods_type eq 2} checked {/if}>
<input type="radio" lay-filter="goods_type" name="goods_type" value="3"
title="货币" {if $goods.goods_type eq 3} checked {/if}>
<label class="layui-form-label">赠送倍率</label>
<div class="layui-input-inline">
<input type="number" name="doubling" value="{$goods.doubling|default=1}"
autocomplete="off" placeholder="请输入赠送倍率" class="layui-input"
style="width: 521px">
</div>
</div>
<div class="layui-form-item sale_time" {if $goods.goods_type eq 1 || $goods.goods_type eq 3} style="display: none"
{/if}>
{/if}
<div class="layui-form-item sale_time" {if $goods.goods_type eq 1 || $goods.goods_type
eq 3 || $goods.goods_type eq 4} style="display: none" {/if}>
<label class="layui-form-label">预售时间</label>
<div class="layui-input-inline" style="width: 521px;">
<input type="text" name="sale_time" value="{$goods.sale_time}" id="sale_time"
@ -136,10 +151,12 @@
<input type="hidden" name="imgurl_detail" value="{$goods.imgurl_detail}"
placeholder="请上传商品详情图" autocomplete="off" class="layui-input">
<img style="float:left;width:120px;" class="" id="imgurl_detail"
src="{if condition="$goods.imgurl_detail neq ''"}{:imageUrl($goods.imgurl_detail)}{else}/static/image/upload.jpg{/if}">
src="{if condition=" $goods.imgurl_detail
neq ''"}{:imageUrl($goods.imgurl_detail)}{else}/static/image/upload.jpg{/if}">
</div>
</div>
<input type="hidden" name="id" value="{$goods.id}">
<input type="hidden" name="goods_list_id" value="{$goods.goods_list_id}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" onclick="return check()">确认保存</button>
@ -181,8 +198,9 @@
$(".sale_time").hide()
} else if (value == 2) {
$(".sale_time").show()
} else if (value == 3) {
} else if (value == 3 || value == 4) {
$("#sale_time").val('')
$(".sale_time").hide()
}
});
@ -240,7 +258,8 @@
layer.msg(data.msg, { icon: 1, time: 1500 }, function () {
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index);
parent.location.reload();
// parent.location.reload();
parent.layui.table.reload('goodsListTable');
});
} else {
layer.msg(data.msg, { icon: 2, anim: 6, time: 1500 }, function () {

View File

@ -0,0 +1,3 @@
<script src="/js/v2.10.3/layui/layui.js"></script>
<script src="/js/jquery-3.1.1.min.js"></script>
<script src="/js/reward-component.js"></script>

View File

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>后台管理 - {$config.title}</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="/js/v2.10.3/layui/css/layui.css" media="all">
</head>

View File

@ -85,6 +85,8 @@ class Goods extends Base
$whe[] = ['type', '=', 12];
} elseif ($type_str == 15) {
$whe[] = ['type', '=', 15];
} elseif ($type_str == 16) {
$whe[] = ['type', '=', 16];
} else {
$whe[] = ['type', 'not in', [4, 10, 15]];
}
@ -128,6 +130,7 @@ class Goods extends Base
$join_count = OrderList::field('id')
->where('shang_id', 'between', self::$shang_count_id)
->where('goods_id', '=', $itme['id'])
->where('parent_goods_list_id', '=', 0)
->where('order_type', '=', $itme['type'])
->count();
$itme['join_count'] = $join_count;
@ -154,6 +157,8 @@ class Goods extends Base
$type_text = '商品赏';
} elseif ($itme['type'] == 11) {
$type_text = '自制赏';
} elseif ($itme['type'] == 16) {
$type_text = '翻倍赏';
}
// elseif ($itme['type'] == 9) {
// $type_text = '冲冲赏';
@ -204,6 +209,7 @@ class Goods extends Base
$goodslist_info = GoodsList::field('num,sum(`surplus_stock`) as all_surplus_stock')
->where(['goods_id' => $goods_id])
->where('shang_id', 'not in', [1, 2, 3, 4, 5])
->where('goods_list_id', '=', 0)
->having('all_surplus_stock', '>', 0)
->group('num')
->order('num asc')
@ -226,6 +232,7 @@ class Goods extends Base
$goods_surplus = GoodsList::field('sum(`stock`) as stock, sum(`surplus_stock`) as surplus_stock')
->where('goods_id', '=', $goods_id)
->where('num', '=', $goods_num)
->where('goods_list_id', '=', 0)
->where('shang_id', 'between', self::$shang_prize_id)
->find();
$all_surplus_stock = $goods_surplus['surplus_stock'];
@ -241,6 +248,7 @@ class Goods extends Base
->append(['shang_info'])
->where(['goods_id' => $goods_id])
->where(['num' => $goods_num])
->where('goods_list_id', '=', 0)
->order('sort desc,shang_id asc,id asc')
->select()->toArray();
foreach ($goodslist as $key => &$value) {
@ -276,11 +284,17 @@ class Goods extends Base
$pro_max = $pro_num;
$pro_key = $key;
}
if ($value['goods_type'] == 4) {
//表示有子奖品
$value['children'] = true;
} else {
$value['children'] = false;
}
}
#概率不足时
if ($pro_max > 0 && $pro_all < 100) {
$surplus_pro = bcsub("100", "$pro_all", 2);
$goodslist[$pro_key]['pro'] = bcadd("$pro_max", "$surplus_pro", 2) . '%';
$goodslist[$pro_key]['pro'] = '概率:' . bcadd("$pro_max", "$surplus_pro", 2) . '%';
}
#锁箱信息===============
$goods_lock_user_nickname = 0;
@ -357,6 +371,88 @@ class Goods extends Base
}
/**
* 获取商品子奖品信息
* @param $goods_id 盒子id
* @param $goods_num 盒子箱号
* @param $goods_list_id 父奖品ID
*/
public function getGoodsChildren()
{
$goods_id = request()->param('goods_id/d', 0);
$goods_num = request()->param('goods_num/d', 0);
$goods_list_id = request()->param('goods_list_id/d', 0);
if (!$goods_list_id) {
return $this->renderError("对应的宝箱ID不能为空");
}
#盒子信息
$goods = Goodsmodel::field('id,title,status')
->where(['id' => $goods_id])
->find();
if (!$goods) {
return $this->renderError("盒子不存在");
}
if ($goods['status'] != 1 && $goods['status'] != 3) {
return $this->renderError("盒子已下架");
}
#所有奖品信息
$goodslist_1 = GoodsList::field('id,shang_id,title,stock,surplus_stock,imgurl,goods_type,sale_time,price,real_pro,sc_money')
->append(['shang_info'])
->where(['goods_id' => $goods_id])
->where(['num' => $goods_num])
->where('goods_list_id', '=', $goods_list_id)
->order('sort desc,shang_id asc,id asc')
->select()->toArray();
if ($goodslist_1) {
//过滤数组将数组中的shang_id 等于 shang_give_arr 的全部过滤掉。然后在将数组中的surplus_stock求和
$goodslist_1_1 = array_filter($goodslist_1, function ($item) {
return !array_key_exists($item['shang_id'], self::$shang_give_arr);
});
//将数组中的surplus_stock求和
$goodsList_surplus_stock = array_sum(array_column($goodslist_1_1, 'surplus_stock'));
foreach ($goodslist_1 as $key_1 => &$value_1) {
$value_1['imgurl'] = imageUrl($value_1['imgurl']);
if ($value_1['stock'] == 0) {
//保留两位小数
$value_1['pro'] = '概率:' . round($value_1['real_pro'], 2) . '%';
$value_1['pro_num'] = round($value_1['real_pro'], 2);
unset($value_1['surplus_stock']);
unset($value_1['stock']);
continue;
}
$surplus_stock_1 = $value_1['surplus_stock'];
$pro_num_1 = 0;
$pro_1 = 0;
if (array_key_exists($value_1['shang_id'], self::$shang_give_arr)) {
#概率
$pro_1 = self::$shang_give_arr[$value_1['shang_id']];
$pro_num_1 = 0;
} else {
#概率
if ($surplus_stock_1 > 0) {
//计算概率,保留两位小数
$pro_num_1 = round(($surplus_stock_1 / $goodsList_surplus_stock) * 100, 2);
$pro_1 = '概率:' . $pro_num_1 . '%';
} else {
$pro_1 = '概率:' . 0 . '%';
$pro_num_1 = 0;
}
}
$value_1['pro'] = $pro_1;
$value_1['pro_num'] = $pro_num_1;
}
}
return $this->renderSuccess("请求成功", $goodslist_1);
}
/**
* 换箱箱号
*/
@ -1509,5 +1605,7 @@ class Goods extends Base
}
}
}

View File

@ -91,6 +91,7 @@ class Infinite extends Base
->append(['userinfo'])
->where('goods_id', '=', $goods_id)
->where('order_type', '=', $goods['type'])
->order('id desc')
->group('user_id')
->limit(5)
@ -113,6 +114,7 @@ class Infinite extends Base
->append(['shang_info', 'goods_list'])
->where(['goods_id' => $goods_id])
->where(['num' => 0])
->where('goods_list_id', '=', 0)
->order('sort desc,shang_id asc,id asc')
->group('shang_id')
->select()->toArray();
@ -123,13 +125,14 @@ class Infinite extends Base
$value['shang_color'] = $value['shang_info']['color'];
unset($value['shang_info']);
}
$goods_list = GoodsList::field('goods_id,shang_id,title,imgurl,price,real_pro,sc_money,goods_type,sale_time')
$goods_list = GoodsList::field('goods_id,shang_id,title,imgurl,price,real_pro,sc_money,goods_type,sale_time,doubling')
->append(['shang_info', 'goods_list'])
->withAttr('imgurl', function ($value, $data) {
return imageUrl($value);
})
->where(['goods_id' => $goods_id])
->where(['num' => 0])
->where('goods_list_id', '=', 0)
->order('sort desc,shang_id asc,id asc')
->paginate(1000);
foreach ($goods_list as &$value) {
@ -147,6 +150,8 @@ class Infinite extends Base
$type1 = 8;
} elseif ($goods['type'] == 8) {
$type1 = 14;
} elseif ($goods['type'] == 16) {
$type1 = 21;
}
$new_data = [
@ -589,7 +594,7 @@ class Infinite extends Base
return $this->renderError("盒子已下架");
}
if (!in_array($goods['type'], [2, 8, 9, 10])) {
if (!in_array($goods['type'], [2, 8, 9, 10,16])) {
return $this->renderError("非法请求");
}
$user_id = $this->getuserid();
@ -1031,7 +1036,7 @@ class Infinite extends Base
return $this->renderError("支付异常,请刷新重试");
}
#普通赏
$data = OrderList::field('id,user_id,shang_id,goodslist_id,goodslist_title,goodslist_imgurl,goodslist_money')
$data = OrderList::field('id,user_id,shang_id,goodslist_id,goodslist_title,goodslist_imgurl,goodslist_money,doubling')
->append(['shang_title'])
->where('user_id', '=', $user['id'])
->where('order_id', '=', $order_info['id'])

View File

@ -547,6 +547,7 @@ class Notify extends Base
->where('goods_id', '=', $goods_id)
->where('num', '=', $num)
->where('shang_id', 'between', self::$shang_prize_id)
->where('goods_list_id', '=', 0)
->find();
// var_dump($goodslist['surplus_stock']);
#普通赏销量数量
@ -606,154 +607,53 @@ class Notify extends Base
$ordinary_prize = GoodsList::where('goods_id', '=', $goods_id)
->where('num', '=', $num)
->where('shang_id', 'between', self::$shang_prize_id)
->where('goods_list_id', '=', 0)
->order('sort desc,shang_id asc')
->select()->toArray();
if (!$ordinary_prize) {
$res[] = 0;
return $res;
}
//获取最低抽奖次数
$goods_extend_model_list = GoodsExtendListModel::getGoodsExtendList($goods_id);
$res[] = $this->ordinary_prize_notice_box($ordinary_prize, $prize_num, $order_id, $user_id, $goods_id, $order_type, $num);
return $res;
}
/**
* 普通奖品开奖宝箱
* @param mixed $ordinary_prize
* @param mixed $prize_num
* @param mixed $order_id
* @param mixed $user_id
* @param mixed $goods_id
* @param mixed $order_type
* @param mixed $num
* @return array<array|GoodsList|int>
*/
protected function ordinary_prize_notice_box($ordinary_prize, $prize_num, $order_id, $user_id, $goods_id, $order_type, $num)
{
$res = [];
#抽了多少抽
$stock = array_sum(array_column($ordinary_prize, 'stock'));
$surplus_stock = array_sum(array_column($ordinary_prize, 'surplus_stock'));
$reward_num_count = $stock - $surplus_stock;
#普通奖暂存信息
// $stock = array_sum(array_column($ordinary_prize, 'stock'));
// $surplus_stock = array_sum(array_column($ordinary_prize, 'surplus_stock'));
$ordinary_prize_all = [];
#普通奖暂存信息
$ordinary_prize_special_all = [];
#其他
$ordinary_prize_other = [];
foreach ($ordinary_prize as $k => $v) {
#剩余
#库存
$surplus_prize = $v['surplus_stock'];
//奖品id
$prize_code = $v['prize_code'];
$goods_list_id = $v['id'];
//扩展配置
$goods_extend_model = $goods_extend_model_list->where('goods_list_id', '=', $goods_list_id)->first();
//最低抽奖次数
$reward_num = 0;
if ($goods_extend_model != null) {
if ($goods_extend_model['rawrd_type'] == 1) {
$reward_num = $goods_extend_model->reward_num;
} else if ($goods_extend_model['rawrd_type'] == 2) {
//当前抽数
$goods_extend_model_reward_num = $goods_extend_model['reward_num'];
if ($reward_num_count < $goods_extend_model_reward_num) {
//未过期
$v['goods_extend'] = $goods_extend_model;
$ordinary_prize_special_all[] = $v;
$ordinary_prize_all[] = $v;
continue;
}
} else if ($goods_extend_model['rawrd_type'] == 3) {
//当前抽数
// if ($reward_num_count >= $goods_extend_model['reward_num'] && $reward_num_count <= $goods_extend_model['reward_num_1']) {
//未过期
$v['goods_extend'] = $goods_extend_model;
$ordinary_prize_special_all[] = $v;
if ($surplus_prize > 0) {
//库存数量
for ($i = 1; $i <= $surplus_prize; $i++) {
$ordinary_prize_all[] = $v;
continue;
// }
}
}
$prize_code = '';
//库存数量
for ($i = 1; $i <= $surplus_prize; $i++) {
if ($reward_num_count > 0) {
if ($reward_num_count > $reward_num) {
$ordinary_prize_other[] = $v;
}
} else if ($v['reward_num'] > 0) {
if ($reward_num_count >= $v['reward_num']) {
#全部延迟出赏普通奖品
$ordinary_prize_other[] = $v;
}
} else {
#全部未延迟出赏普通奖品
$ordinary_prize_other[] = $v;
}
$ordinary_prize_all[] = $v;
}
}
$is_special = true;
if ($prize_num > count($ordinary_prize_other)) {
#全部商品
$end_ordinary_prize = $ordinary_prize_all;
$is_special = false;
} else {
#延迟出赏
$end_ordinary_prize = $ordinary_prize_other;
}
shuffle($end_ordinary_prize);
shuffle($end_ordinary_prize);
if ($is_special) {
foreach ($ordinary_prize_special_all as $kk => $vv) {
// $surplus_prize_1 = 1;
$surplus_prize_1 = $vv['surplus_stock'];
//奖品id
$goods_extend_model_1 = $vv['goods_extend'];
for ($i = 1; $i <= $surplus_prize_1; $i++) {
//指定抽数
if ($goods_extend_model_1['rawrd_type'] == 2) {
//指定抽奖数-
$randomNumber = $goods_extend_model_1['reward_num'] - $reward_num_count - 1;
//如果小于0则表示
if ($randomNumber < 0) {
$randomNumber = random_int(0, count($end_ordinary_prize));
}
if ($randomNumber >= 0) {
//表示第二个对象 goods_list_id
if (isset($end_ordinary_prize[$randomNumber]['goods_extend'])) {
$goods_extend_model_2 = $end_ordinary_prize[$randomNumber]['goods_extend'];
if ($goods_extend_model_2 != null) {
//表示相同抽数
if ($goods_extend_model_1['reward_num'] == $goods_extend_model_2['reward_num']) {
$randomNumber = random_int($randomNumber, count($end_ordinary_prize));
}
}
}
if (isset($end_ordinary_prize[$randomNumber]['prize_code']) && isset($vv['prize_code'])) {
if ($end_ordinary_prize[$randomNumber]['prize_code'] == $vv['prize_code']) {
if (count($end_ordinary_prize) > $randomNumber) {
$randomNumber = random_int($randomNumber, count($end_ordinary_prize));
} else {
$randomNumber = random_int(0, count($end_ordinary_prize));
}
}
}
array_splice($end_ordinary_prize, $randomNumber, 0, [$vv]);
}
}
//抽奖范围
if ($goods_extend_model_1['rawrd_type'] == 3) {
$randomNumber = 0;
if ($reward_num_count >= $goods_extend_model_1['reward_num'] && $reward_num_count <= $goods_extend_model_1['reward_num_1']) {
//在范围里面
$max_randomNumber = $goods_extend_model_1['reward_num_1'] - $reward_num_count - 1;
$randomNumber = random_int(0, intval($max_randomNumber));
} else if ($reward_num_count <= $goods_extend_model_1['reward_num']) {
//$goods_extend_model_1['reward_num']-$reward_num_count
$randomNumber = count($end_ordinary_prize) - 1;
}
array_splice($end_ordinary_prize, $randomNumber, 0, [$vv]);
}
}
}
}
#入库奖品
$save_order_goods = [];
shuffle($ordinary_prize_all);
shuffle($ordinary_prize_all);
#开普通奖品
for ($i = 0; $i < $prize_num; $i++) {
$ordinary_prize_info = $end_ordinary_prize[$i];
$save_order_goods[
] = [
$ordinary_prize_info = $ordinary_prize_all[$i];
$order_goods_info=[
'order_id' => $order_id,
'user_id' => $user_id,
'status' => 0,#0未操作 1选择兑换 2选择发货
@ -770,17 +670,35 @@ class Notify extends Base
'addtime' => time(),
'prize_code' => $ordinary_prize_info['prize_code'],
'order_type' => $order_type,
'parent_goods_list_id' => $ordinary_prize_info['goods_list_id'],
];
$res[] = OrderList::insert($order_goods_info);
#减少库存
$res[] = GoodsList::field('surplus_stock')
->where(['id' => $ordinary_prize_info['id']])
->dec('surplus_stock')
->update();
# 赠送货币
if ($ordinary_prize_info['doubling'] > 1) {
$bei = $ordinary_prize_info['doubling'] - 1;
$change_money = $ordinary_prize_info['money'] * $bei * 100;
$res[] = User::changeIntegral($user_id, $change_money, 6, '抽中翻倍赏-' . $ordinary_prize_info['title'] . '赠送');
}
# 宝箱
if ($ordinary_prize_info['goods_type'] == 4) {
# 查找宝箱奖品
$goodslist_1 = GoodsList::where(['goods_id' => $goods_id])
->where('goods_list_id', '=', $ordinary_prize_info['id'])
->select()->toArray();
$res[] = $this->ordinary_prize_notice_box($goodslist_1, 1, $order_id, $user_id, $goods_id, $order_type, $num);
}
}
if ($save_order_goods) {
#新增奖品列表
$res[] = OrderList::insertAll($save_order_goods);
}
// if ($save_order_goods) {
// #新增奖品列表
// $res[] = OrderList::insertAll($save_order_goods);
// }
return $res;
}
@ -909,6 +827,7 @@ class Notify extends Base
->where('num', '=', $num)
->where('surplus_stock', '>', 0)
->where('shang_id', 'in', self::$shang_give_arr)
->where('goods_list_id', '=', 0)
->select()->toArray();
$surplus_give_stock = $special_prize ? array_sum(array_column($special_prize, 'surplus_stock')) : 0;
if ($special_prize && $surplus_give_stock > 0) {
@ -1128,81 +1047,14 @@ class Notify extends Base
//普通
$where[] = ['lian_ji_type', '=', 0];
}
$where[] = ['goods_list_id', '=', 0];
#查找奖品
$goodslist = GoodsList::field('id,shang_id,real_pro')
->where($where)
->select()->toArray();
if ($goodslist) {
// 计算总概率
$totalProbability = array_sum(array_column($goodslist, 'real_pro'));
// 构建概率区间
$probabilityRanges = [];
$currentRange = 0;
foreach ($goodslist as $good) {
$rangeStart = $currentRange;
$currentRange += $good['real_pro'];
$probabilityRanges[] = [
'id' => $good['id'],
'start' => $rangeStart,
'end' => $currentRange
];
}
for ($i = 0; $i < $prize_num; $i++) {
// 生成随机数 (保持与原始方法相同的精度100000)
$maxRand = (int) ($totalProbability * 100000);
$random = mt_rand(0, $maxRand) / 100000;
// 查找中奖奖品
$prize_id = null;
foreach ($probabilityRanges as $range) {
if ($random >= $range['start'] && $random < $range['end']) {
$prize_id = $range['id'];
break;
}
}
// 获取奖品信息
$prize_info = GoodsList::where(['id' => $prize_id])->find();
#编号
$luck_no = OrderList::field('id')
->where('goods_id', '=', $goods_id)
->where('num', '=', 0)
->where('order_type', '=', $order_type)
->order('id desc')
->value('luck_no');
$luck_no++;
#新增记录
$save_prize_info = [
'order_id' => $order_id,
'user_id' => $user_id,
'status' => 0,#0未操作 1选择兑换 2选择发货
'goods_id' => $goods_id,
'num' => 0,
'shang_id' => $prize_info['shang_id'],
'goodslist_id' => $prize_info['id'],
'goodslist_title' => $prize_info['title'],
'goodslist_imgurl' => $prize_info['imgurl'],
'goodslist_price' => $prize_info['price'],
'goodslist_money' => $prize_info['money'],
'goodslist_type' => $prize_info['goods_type'],
'goodslist_sale_time' => $prize_info['sale_time'],
'addtime' => time(),
'prize_code' => $prize_info['prize_code'],
'order_type' => $order_type,
'luck_no' => $luck_no,
];
#入库===
$res[] = OrderList::insert($save_prize_info);
}
$res[] = $this->infinite_drawprize_box($goodslist, $prize_num, $order_id, $user_id, $goods_id, $order_type);
//去除秘宝池次数
if ($infinite_goods['type'] == 9 && $order['is_mibao'] == 1) {
@ -1228,7 +1080,101 @@ class Notify extends Base
}
/**
* 无限赏开奖逻辑
* 抽出奖品
* @param $order 订单信息
*/
protected function infinite_drawprize_box($goodslist, $prize_num, $order_id, $user_id, $goods_id, $order_type)
{
// 计算总概率
$totalProbability = array_sum(array_column($goodslist, 'real_pro'));
// 构建概率区间
$probabilityRanges = [];
$currentRange = 0;
foreach ($goodslist as $good) {
$rangeStart = $currentRange;
$currentRange += $good['real_pro'];
$probabilityRanges[] = [
'id' => $good['id'],
'start' => $rangeStart,
'end' => $currentRange
];
}
for ($i = 0; $i < $prize_num; $i++) {
// 生成随机数 (保持与原始方法相同的精度100000)
$maxRand = (int) ($totalProbability * 100000);
$random = mt_rand(0, $maxRand) / 100000;
// 查找中奖奖品
$prize_id = null;
foreach ($probabilityRanges as $range) {
if ($random >= $range['start'] && $random < $range['end']) {
$prize_id = $range['id'];
break;
}
}
// 获取奖品信息
$prize_info = GoodsList::where(['id' => $prize_id])->find();
#编号
$luck_no = OrderList::field('id')
->where('goods_id', '=', $goods_id)
->where('num', '=', 0)
->where('order_type', '=', $order_type)
->order('id desc')
->value('luck_no');
$luck_no++;
#新增记录
$save_prize_info = [
'order_id' => $order_id,
'user_id' => $user_id,
'status' => 0,#0未操作 1选择兑换 2选择发货
'goods_id' => $goods_id,
'num' => 0,
'doubling' => $prize_info['doubling'],
'shang_id' => $prize_info['shang_id'],
'goodslist_id' => $prize_info['id'],
'goodslist_title' => $prize_info['title'],
'goodslist_imgurl' => $prize_info['imgurl'],
'goodslist_price' => $prize_info['price'],
'goodslist_money' => $prize_info['money'],
'goodslist_type' => $prize_info['goods_type'],
'goodslist_sale_time' => $prize_info['sale_time'],
'addtime' => time(),
'prize_code' => $prize_info['prize_code'],
'order_type' => $order_type,
'luck_no' => $luck_no,
'parent_goods_list_id' => $prize_info['goods_list_id'],
];
#入库===
$res[] = OrderList::insert($save_prize_info);
# 赠送货币
if ($prize_info['doubling'] > 1) {
$bei = $prize_info['doubling'] - 1;
$change_money = $prize_info['money'] * $bei * 100;
$res[] = User::changeIntegral($user_id, $change_money, 6, '抽中翻倍赏-' . $prize_info['title'] . '赠送');
}
# 宝箱
if ($prize_info['goods_type'] == 4) {
# 查找宝箱奖品
$goodslist_1 = GoodsList::where(['goods_id' => $goods_id])
->where('goods_list_id', '=', $prize_info['id'])
->select()->toArray();
// $res[] = $this->infinite_drawprize_box($order);
$res[] = $this->infinite_drawprize_box($goodslist_1, 1, $order_id, $user_id, $goods_id, $order_type);
}
}
return $res;
}
/**
* 商城赏
* @param $order 订单信息
*/
protected function infinite_shangchengshang($order = [])
@ -1926,7 +1872,7 @@ class Notify extends Base
}
/**
* 无限赏开始抽======================================================
* 商城======================================================
* @param int $user_id 会员id
* @param int $order_id 订单ID
* @param int $box_id 盲盒id

View File

@ -80,9 +80,8 @@ Route::any('quan_yi_ling', 'QuanYi/quan_yi_ling');
#Goods.php盒子管理
#============================
Route::any('goods', 'Goods/goods');
Route::any('goodsdetail', 'Goods/goodsdetail');
Route::any('goods_children', 'Goods/getGoodsChildren');
Route::any('goodslist_count', 'Goods/goodslist_count');
Route::any('goodslist_content', 'Goods/goodslist_content');
Route::any('shang_log', 'Goods/shang_log');

View File

@ -17,7 +17,7 @@ class Danye extends Base{
$list = self::where($where)
->field($field)
->order($order)
->paginate(15);
->paginate($pageSize);
$page = $list->render();
$data['list'] = $list->toArray()['data'];
$data['count']=$list->total();

View File

@ -75,12 +75,13 @@ class GoodsList extends Base
public function getGoodsListAttr($value, $data)
{
$data = self::field('title,imgurl,price,real_pro,goods_type')
$data = self::field('id,title,imgurl,price,real_pro,goods_type,doubling')
->withAttr('imgurl', function ($value, $data) {
return imageUrl($value);
})
->where('goods_id', '=', $data['goods_id'])
->where('shang_id', '=', $data['shang_id'])
->where('goods_list_id', '=', 0)
->select()->toArray();
return $data;
}

View File

@ -169,7 +169,7 @@ class User extends Base
/**
* 用户变化
* 用户变化 发放uu币
* @param $user_id
* @param $change_money
* @param $type 1后台充值 2抽赏消费 3开券获得

4
public/js/jquery-3.1.1.min.js vendored Executable file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,394 @@
/**
* 奖励信息组件
* 用于创建和管理奖励信息表单元素
*/
/**
* 初始化奖励信息区域
* @param {string} containerId - 容器ID
* @param {Array|string} existingRewards - 已存在的奖励数据数组或reward_id
*/
function initRewardInfo(containerId, existingRewards = null) {
var $ = layui.$;
var form = layui.form;
// 奖励类型选项
var rewardTypes = [
{ value: '1', text: '钻石' },
{ value: '2', text: 'UU币' },
{ value: '3', text: '达达卷' },
{ value: '4', text: '优惠券' }
];
// 存储优惠券数据
var couponsData = [];
// 创建奖励信息卡片
var cardHtml = '<div class="layui-card">' +
'<div class="layui-card-header">' +
'<button type="button" class="layui-btn layui-btn-sm layui-btn-normal" id="addReward">' +
'<i class="layui-icon">&#xe654;</i>添加奖励' +
'</button>' +
'</div>' +
'<div class="layui-card-body">' +
'<div id="rewardContainer">' +
'<!-- 动态添加的奖励项将显示在这里 -->' +
'</div>' +
'</div>' +
'</div>';
if ($('input[name="reward_id"]').length == 0) {
cardHtml += '<input type="hidden" name="reward_id" value="">';
}
// 渲染奖励信息卡片
$('#' + containerId).html(cardHtml);
// 请求优惠券数据
function fetchCoupons(callback) {
var load = layer.load(2);
$.ajax({
url: '/admin/get_coupons',
type: 'GET',
dataType: 'json',
success: function (res) {
layer.close(load);
if (res.code == 0) {
couponsData = res.data;
if (typeof callback === 'function') {
callback(couponsData);
}
} else {
layer.msg(res.msg || '获取优惠券失败', { icon: 2, anim: 6, time: 1500 });
}
},
error: function () {
layer.close(load);
layer.msg('网络错误,请稍后重试', { icon: 2, anim: 6, time: 1500 });
}
});
}
// 生成唯一ID
function generateUniqueId() {
return 'reward_' + new Date().getTime() + '_' + Math.floor(Math.random() * 1000);
}
// 添加奖励项
function addRewardItem(rewardData = null) {
var uniqueId = generateUniqueId();
var html = '<div class="layui-form-item reward-item" id="' + uniqueId + '">' +
'<div class="layui-inline">' +
'<select class="reward-type-select" lay-filter="rewardTypeFilter">' +
'<option value="">请选择奖励类型</option>';
// 添加奖励类型选项
for (var i = 0; i < rewardTypes.length; i++) {
var selected = rewardData && rewardData.reward_type == rewardTypes[i].value ? 'selected' : '';
html += '<option value="' + rewardTypes[i].value + '" ' + selected + '>' + rewardTypes[i].text + '</option>';
}
html += '</select>' +
'</div>';
// 根据奖励类型决定显示哪个输入区域
var rewardValueDisplay = (!rewardData || rewardData.reward_type != '4') ? '' : 'style="display:none;"';
var couponDisplay = (!rewardData || rewardData.reward_type != '4') ? 'style="display:none;"' : '';
var rewardValue = rewardData ? rewardData.reward_value : '';
html += '<div class="layui-inline reward-value-container" ' + rewardValueDisplay + '>' +
'<input type="text" placeholder="请输入奖励数值" class="layui-input reward-value-input" value="' + rewardValue + '">' +
'</div>' +
'<div class="layui-inline coupon-container" ' + couponDisplay + '>' +
'<select class="coupon-select">' +
'<option value="">请选择优惠券</option>' +
'<option value="loading" disabled>加载中...</option>' +
'</select>' +
'</div>' +
'<div class="layui-inline">' +
'<button type="button" class="layui-btn layui-btn-danger layui-btn-sm remove-reward" data-id="' + uniqueId + '">' +
'<i class="layui-icon">&#xe640;</i>删除' +
'</button>' +
'</div>' +
'</div>';
$('#rewardContainer').append(html);
form.render('select'); // 重新渲染表单
// 绑定删除按钮事件
$('.remove-reward[data-id="' + uniqueId + '"]').click(function () {
var id = $(this).data('id');
$('#' + id).remove();
});
// 如果是优惠券类型,需要加载优惠券数据
if (rewardData && rewardData.reward_type == '4') {
var $item = $('#' + uniqueId);
var $couponSelect = $item.find('.coupon-select');
// 获取优惠券数据并选中指定的优惠券
if (couponsData.length > 0) {
fillCouponOptions($couponSelect, couponsData, rewardData.reward_extend);
} else {
fetchCoupons(function (coupons) {
fillCouponOptions($couponSelect, coupons, rewardData.reward_extend);
});
}
}
return uniqueId;
}
// 添加奖励按钮点击事件
$('#addReward').click(function () {
addRewardItem();
});
// 监听奖励类型选择
form.on('select(rewardTypeFilter)', function (data) {
var $item = $(data.elem).closest('.reward-item');
var value = data.value;
if (value == '4') { // 选择了优惠券
$item.find('.reward-value-container').hide();
$item.find('.coupon-container').show();
$item.find('.reward-value-input').val(''); // 清空奖励数值
// 获取当前选择框的优惠券选择框
var $couponSelect = $item.find('.coupon-select');
// 如果优惠券数据已加载,直接填充
if (couponsData.length > 0) {
fillCouponOptions($couponSelect, couponsData);
} else {
// 否则请求加载
fetchCoupons(function (coupons) {
fillCouponOptions($couponSelect, coupons);
});
}
} else {
$item.find('.reward-value-container').show();
$item.find('.coupon-container').hide();
$item.find('.coupon-select').val(''); // 清空优惠券选择
form.render('select');
}
});
// 填充优惠券选项
function fillCouponOptions($select, coupons, selectedCouponId = null) {
// 清空现有选项,保留第一个"请选择"
$select.find('option:not(:first)').remove();
// 添加优惠券选项
for (var i = 0; i < coupons.length; i++) {
var coupon = coupons[i];
var selected = selectedCouponId && coupon.id == selectedCouponId ? 'selected' : '';
$select.append('<option value="' + coupon.id + '" ' + selected + '>' +
coupon.title + ' (满' + coupon.man_price + '减' + coupon.price + ')</option>');
}
// 重新渲染表单
form.render('select');
}
// 处理初始化奖励数据
if (existingRewards) {
// 如果传入的是字符串reward_id则通过接口获取奖励数据
if (typeof existingRewards === 'string' && existingRewards.trim() !== '') {
var rewardId = existingRewards;
// 通过API获取奖励数据
var loadingIndex = layer.load(1, { shade: [0.1, '#fff'] });
$.ajax({
url: '/admin/get_rewards_by_id',
type: 'GET',
data: { reward_id: rewardId },
dataType: 'json',
success: function (res) {
layer.close(loadingIndex);
if (res.status === 1 && res.data && res.data.length > 0) {
// 先获取优惠券数据,再初始化奖励表单
if ($('input[name="reward_id"]').length > 0) {
$('input[name="reward_id"]').val(rewardId);
}
fetchCoupons(function () {
// 遍历奖励数据,添加奖励项
for (var i = 0; i < res.data.length; i++) {
var rewardItem = {
reward_type: res.data[i].reward_type.toString(),
reward_value: res.data[i].reward_value || '',
reward_extend: res.data[i].reward_extend || ''
};
addRewardItem(rewardItem);
}
});
} else {
// layer.msg('没有找到奖励数据或获取失败', { icon: 2, time: 2000 });
}
},
error: function () {
layer.close(loadingIndex);
layer.msg('网络错误,无法获取奖励数据', { icon: 2, time: 2000 });
}
});
}
// 如果传入的是数组,直接使用
else if (Array.isArray(existingRewards) && existingRewards.length > 0) {
// 先获取优惠券数据,再初始化奖励表单
fetchCoupons(function () {
for (var i = 0; i < existingRewards.length; i++) {
addRewardItem(existingRewards[i]);
}
});
}
} else {
// 预加载优惠券数据,以便后续使用
fetchCoupons();
}
}
/**
* 验证奖励信息
* @returns {boolean} - 验证结果
*/
function validateRewardInfo() {
var $ = layui.$;
var hasRewardType = false;
$('.reward-type-select').each(function () {
if ($(this).val()) {
hasRewardType = true;
var $item = $(this).closest('.reward-item');
var rewardType = $(this).val();
// 如果不是优惠券类型,检查奖励数值
if (rewardType != '4' && !$item.find('.reward-value-input').val()) {
layer.msg('请输入奖励数值', { icon: 2, anim: 6, time: 1500 });
hasRewardType = false;
return false;
}
// 如果是优惠券类型,检查是否选择了优惠券
if (rewardType == '4' && !$item.find('.coupon-select').val()) {
layer.msg('请选择优惠券', { icon: 2, anim: 6, time: 1500 });
hasRewardType = false;
return false;
}
}
});
if (!hasRewardType) {
layer.msg('请至少添加一项奖励信息', { icon: 2, anim: 6, time: 1500 });
return false;
}
// 验证通过后,处理奖励数据
processRewardData();
return true;
}
/**
* 处理奖励数据将其转换为JSON格式并添加到隐藏字段
*/
function processRewardData() {
var $ = layui.$;
var rewardData = [];
// 收集所有奖励项的数据
$('.reward-item').each(function () {
var $item = $(this);
var rewardType = $item.find('.reward-type-select').val();
if (rewardType) {
var rewardObj = {
reward_type: rewardType,
reward_value: '',
coupon_id: ''
};
// 根据奖励类型设置相应的值
if (rewardType == '4') { // 优惠券类型
rewardObj.coupon_id = $item.find('.coupon-select').val() || '';
} else { // 其他类型
rewardObj.reward_value = $item.find('.reward-value-input').val() || '';
}
rewardData.push(rewardObj);
}
});
// 将奖励数据转换为JSON字符串
var rewardJson = JSON.stringify(rewardData);
// 检查表单中是否已存在reward隐藏字段
if ($('input[name="reward"]').length > 0) {
$('input[name="reward"]').val(rewardJson);
} else {
// 创建隐藏字段并添加到表单中
$('form').append('<input type="hidden" name="reward" value=\'' + rewardJson + '\'>');
}
// 清除可能残留的旧字段(兼容性考虑)
$('input[name="reward_type[]"], input[name="reward_value[]"], input[name="coupon_id[]"]').remove();
}
/**
* 处理奖励数据将其转换为JSON格式并添加到隐藏字段
*/
async function processRewardIdData(pre, reward_id = '') {
var $ = layui.$;
var rewardData = [];
// 收集所有奖励项的数据
$('.reward-item').each(function () {
var $item = $(this);
var rewardType = $item.find('.reward-type-select').val();
if (rewardType) {
var rewardObj = {
reward_type: rewardType,
reward_value: '',
coupon_id: ''
};
// 根据奖励类型设置相应的值
if (rewardType == '4') { // 优惠券类型
rewardObj.coupon_id = $item.find('.coupon-select').val() || '';
} else { // 其他类型
rewardObj.reward_value = $item.find('.reward-value-input').val() || '';
}
rewardData.push(rewardObj);
}
});
if (reward_id || reward_id == '') {
if ($('input[name="reward_id"]').length > 0) {
reward_id = $('input[name="reward_id"]').val();
}
}
if (reward_id == '' && rewardData.length == 0) {
layer.msg('请至少添加一项奖励信息', { icon: 2, anim: 6, time: 1500 });
return false;
}
// 将奖励数据转换为JSON字符串
var rewardJson = JSON.stringify(rewardData);
// reward_add_json
var url = "/admin/reward_add_json.html";
var $ = layui.$;
var load = layer.load(2);
let l = await $.post(url, { reward: rewardJson, reward_id: reward_id, reward_id_pre: pre });
layer.close(load);
console.log(l);
if (l && l.status === 1) {
reward_id = l.data.reward_id;
}
// 检查表单中是否已存在reward隐藏字段
if ($('input[name="reward_id"]').length > 0) {
$('input[name="reward_id"]').val(reward_id);
} else {
// 创建隐藏字段并添加到表单中
$('form').append('<input type="hidden" name="reward_id" value=\'' + reward_id + '\'>');
}
// 清除可能残留的旧字段(兼容性考虑)
$('input[name="reward_type[]"], input[name="reward_value[]"], input[name="coupon_id[]"]').remove();
}

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -222,7 +222,7 @@ function initRewardInfo(containerId, existingRewards = null) {
}
});
} else {
layer.msg('没有找到奖励数据或获取失败', { icon: 2, time: 2000 });
// layer.msg('没有找到奖励数据或获取失败', { icon: 2, time: 2000 });
}
},
error: function () {
@ -365,6 +365,10 @@ async function processRewardIdData(pre, reward_id = '') {
reward_id = $('input[name="reward_id"]').val();
}
}
if (reward_id == '' && rewardData.length == 0) {
// layer.msg('请至少添加一项奖励信息', { icon: 2, anim: 6, time: 1500 });
return false;
}
// 将奖励数据转换为JSON字符串
var rewardJson = JSON.stringify(rewardData);
// reward_add_json