提交代码
This commit is contained in:
parent
f7d39aa28d
commit
f1de9f5680
|
|
@ -69,6 +69,21 @@ class Base extends MyController
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定配置项的特定键值
|
||||
*
|
||||
* @param string $configName 配置项名称,如 'systemconfig'
|
||||
* @param string $key 需要获取的配置键
|
||||
* @param mixed $default 如果配置不存在时的默认值
|
||||
* @return mixed 配置值或默认值
|
||||
*/
|
||||
protected function getConfigValue($configName, $key, $default = null)
|
||||
{
|
||||
$config = getConfig($configName);
|
||||
return isset($config[$key]) ? $config[$key] : $default;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#获取菜单
|
||||
public function getMyMenuList()
|
||||
|
|
|
|||
|
|
@ -54,12 +54,45 @@ class Config extends Base
|
|||
return View::fetch('Config/weixinpay');
|
||||
}
|
||||
|
||||
//系统设置
|
||||
public function systemconfig(Request $request)
|
||||
{
|
||||
$config = getConfig('systemconfig');
|
||||
View::assign("key", "systemconfig");
|
||||
View::assign("data", $config);
|
||||
return View::fetch('Config/systemconfig');
|
||||
}
|
||||
|
||||
//修改
|
||||
public function update()
|
||||
{
|
||||
$data = input("post.");
|
||||
$data['update_time'] = time();
|
||||
|
||||
// 处理同步地址数据格式
|
||||
if ($data['key'] == 'systemconfig') {
|
||||
$syncAddresses = [];
|
||||
$addressNames = isset($data['sync_address_names']) ? $data['sync_address_names'] : [];
|
||||
$addressUrls = isset($data['sync_address_urls']) ? $data['sync_address_urls'] : [];
|
||||
|
||||
// 移除原有数组
|
||||
unset($data['sync_address_names']);
|
||||
unset($data['sync_address_urls']);
|
||||
|
||||
// 构建新的数据格式
|
||||
for ($i = 0; $i < count($addressUrls); $i++) {
|
||||
if (!empty($addressUrls[$i])) {
|
||||
$syncAddresses[] = [
|
||||
'name' => isset($addressNames[$i]) ? $addressNames[$i] : '',
|
||||
'sync_address' => $addressUrls[$i]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
// 使用新的格式设置同步地址
|
||||
$data['sync_address'] = $syncAddresses;
|
||||
}
|
||||
|
||||
$result = setConfig($data['key'], $data);
|
||||
if ($result) {
|
||||
return $this->renderSuccess('修改成功');
|
||||
|
|
|
|||
|
|
@ -382,7 +382,7 @@ class Goods extends Base
|
|||
}
|
||||
}
|
||||
$res[] = $info->allowField([])->update($data);
|
||||
//添加日志
|
||||
#添加日志
|
||||
$info['update_time'] = date('Y-m-d H:i:i:s',$info['update_time']);
|
||||
$data['update_time'] = date('Y-m-d H:i:i:s',$data['update_time']);
|
||||
$res[] = AdminGoodsLog::add_goods_log(session('admin_id'),$info['id'],0,json_encode($info),json_encode($data));
|
||||
|
|
@ -747,7 +747,7 @@ class Goods extends Base
|
|||
$res1 = GoodsList::where(['prize_code' => $goods['prize_code']])->update($data);
|
||||
|
||||
if ($res1) {
|
||||
//添加日志
|
||||
#添加日志
|
||||
$goods['update_time'] = date('Y-m-d H:i:i:s',$goods['update_time']);
|
||||
$data['update_time'] = date('Y-m-d H:i:i:s',$data['update_time']);
|
||||
$res2 = AdminGoodsLog::add_goods_log(session('admin_id'),$info['id'],$goods['id'],json_encode($goods),json_encode($data));
|
||||
|
|
@ -1090,5 +1090,152 @@ class Goods extends Base
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取同步地址列表
|
||||
*/
|
||||
public function get_sync_addresses()
|
||||
{
|
||||
$config = getConfig('systemconfig');
|
||||
$syncAddresses = isset($config['sync_address']) && is_array($config['sync_address'])
|
||||
? $config['sync_address']
|
||||
: [];
|
||||
|
||||
return $this->renderSuccess('获取成功', $syncAddresses);
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步盒子数据
|
||||
*/
|
||||
public function sync_goods()
|
||||
{
|
||||
$goods_id = $this->request->post('goods_id/d', 0);
|
||||
$targets = $this->request->post('targets/a', []);
|
||||
|
||||
if (empty($goods_id)) {
|
||||
return $this->renderError('盒子ID不能为空');
|
||||
}
|
||||
|
||||
if (empty($targets)) {
|
||||
return $this->renderError('同步目标不能为空');
|
||||
}
|
||||
|
||||
# 获取盒子数据
|
||||
$goods = \app\common\model\Goods::find($goods_id);
|
||||
if (!$goods) {
|
||||
return $this->renderError('盒子不存在');
|
||||
}
|
||||
|
||||
# 检查是否有async_code,没有则生成
|
||||
if (empty($goods['async_code'])) {
|
||||
$async_code = $this->generateUUID();
|
||||
$goods->async_code = $async_code;
|
||||
$goods->async_date = date('Y-m-d H:i:s');
|
||||
$goods->save();
|
||||
} else {
|
||||
$async_code = $goods['async_code'];
|
||||
}
|
||||
|
||||
# 获取盒子奖品数据
|
||||
$goodsList = \app\common\model\GoodsList::where('goods_id', $goods_id)->select()->toArray();
|
||||
|
||||
# 准备同步数据
|
||||
$syncData = [
|
||||
'goods' => $goods->toArray(),
|
||||
'goodsList' => $goodsList,
|
||||
'async_code' => $async_code,
|
||||
'sync_time' => time()
|
||||
];
|
||||
|
||||
# 发送到所有目标
|
||||
$successCount = 0;
|
||||
$failCount = 0;
|
||||
$errorMessages = [];
|
||||
|
||||
foreach ($targets as $target) {
|
||||
$result = $this->sendSyncData($target, $syncData);
|
||||
if ($result['success']) {
|
||||
$successCount++;
|
||||
} else {
|
||||
$failCount++;
|
||||
$errorMessages[] = $target . ': ' . $result['message'];
|
||||
}
|
||||
}
|
||||
|
||||
# 更新同步状态
|
||||
$goods->async_date = date('Y-m-d H:i:s');
|
||||
$goods->save();
|
||||
|
||||
if ($failCount == 0) {
|
||||
return $this->renderSuccess("同步成功,已成功同步到 {$successCount} 个目标");
|
||||
} else if ($successCount > 0) {
|
||||
return $this->renderSuccess("部分同步成功:{$successCount} 个成功,{$failCount} 个失败。\n失败信息:" . implode("\n", $errorMessages));
|
||||
} else {
|
||||
return $this->renderError("同步失败:" . implode("\n", $errorMessages));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成UUID
|
||||
*/
|
||||
private function generateUUID()
|
||||
{
|
||||
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0x0fff) | 0x4000,
|
||||
mt_rand(0, 0x3fff) | 0x8000,
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送同步数据到目标
|
||||
*/
|
||||
private function sendSyncData($target, $data)
|
||||
{
|
||||
try {
|
||||
# 准备请求数据
|
||||
$jsonData = json_encode($data);
|
||||
|
||||
# 初始化CURL
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $target . "/api/goods/receive_sync");
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
||||
'Content-Type: application/json',
|
||||
'Content-Length: ' . strlen($jsonData)
|
||||
]);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 30); # 30秒超时
|
||||
|
||||
# 执行请求
|
||||
$response = curl_exec($ch);
|
||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
$error = curl_error($ch);
|
||||
curl_close($ch);
|
||||
|
||||
if ($error) {
|
||||
return ['success' => false, 'message' => "CURL错误: $error"];
|
||||
}
|
||||
|
||||
if ($httpCode != 200) {
|
||||
return ['success' => false, 'message' => "HTTP错误码: $httpCode"];
|
||||
}
|
||||
|
||||
$result = json_decode($response, true);
|
||||
if (!$result || !isset($result['status'])) {
|
||||
return ['success' => false, 'message' => "无效的响应: $response"];
|
||||
}
|
||||
|
||||
if ($result['status'] != 1) {
|
||||
return ['success' => false, 'message' => $result['msg'] ?? '同步失败'];
|
||||
}
|
||||
|
||||
return ['success' => true];
|
||||
} catch (\Exception $e) {
|
||||
return ['success' => false, 'message' => "异常: " . $e->getMessage()];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -172,6 +172,8 @@ Route::rule('drawlist_add', 'Draw/drawlist_add', 'GET|POST');
|
|||
Route::rule('drawlist_edit', 'Draw/drawlist_edit', 'GET|POST');
|
||||
Route::rule('drawlist_del', 'Draw/drawlist_del', 'GET|POST');
|
||||
Route::rule('draw_add', 'Draw/draw_add', 'GET|POST');
|
||||
Route::rule('get_sync_addresses', 'Goods/get_sync_addresses', 'GET');
|
||||
Route::rule('sync_goods', 'Goods/sync_goods', 'POST');
|
||||
|
||||
#============================
|
||||
#盒子扩展
|
||||
|
|
@ -236,6 +238,7 @@ Route::get('base', 'Config/base');
|
|||
Route::get('sign', 'Config/sign');//签到设置
|
||||
Route::get('weixinpay', 'Config/weixinpay');
|
||||
Route::get('uploadsFile', 'Config/uploads'); //上传设置
|
||||
Route::get('systemconfig', 'Config/systemconfig'); //系统设置
|
||||
Route::post('update', 'Config/update');
|
||||
Route::get('wechatofficialaccount', 'Config/wechatofficialaccount');
|
||||
|
||||
|
|
|
|||
128
app/admin/view/Config/systemconfig.html
Normal file
128
app/admin/view/Config/systemconfig.html
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
{include file="Public:header2"/}
|
||||
|
||||
<body>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">系统设置</div>
|
||||
<div class="layui-card-body">
|
||||
<form class="layui-form" action="" lay-filter="component-form-element">
|
||||
<input type="hidden" name="key" value="{$key}">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">盒子同步地址</label>
|
||||
<div class="layui-input-block">
|
||||
<div id="sync-addresses">
|
||||
{if isset($data.sync_address) && is_array($data.sync_address)}
|
||||
{foreach $data.sync_address as $index => $address}
|
||||
<div class="sync-address-item">
|
||||
<div class="layui-input-inline" style="width: 200px; margin-right: 10px;">
|
||||
<input type="text" name="sync_address_names[]" value="{$address.name|default=''}" autocomplete="off" class="layui-input" placeholder="地址名称">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width: 450px; margin-right: 10px;">
|
||||
<input type="text" name="sync_address_urls[]" value="{$address.sync_address|default=''}" autocomplete="off" class="layui-input" placeholder="请输入同步地址URL">
|
||||
</div>
|
||||
<button type="button" class="layui-btn layui-btn-danger remove-address">删除</button>
|
||||
</div>
|
||||
{/foreach}
|
||||
{else}
|
||||
<div class="sync-address-item">
|
||||
<div class="layui-input-inline" style="width: 200px; margin-right: 10px;">
|
||||
<input type="text" name="sync_address_names[]" value="" autocomplete="off" class="layui-input" placeholder="地址名称">
|
||||
</div>
|
||||
<div class="layui-input-inline" style="width: 450px; margin-right: 10px;">
|
||||
<input type="text" name="sync_address_urls[]" value="" autocomplete="off" class="layui-input" placeholder="请输入同步地址URL">
|
||||
</div>
|
||||
<button type="button" class="layui-btn layui-btn-danger remove-address">删除</button>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
<div style="margin-top: 10px;">
|
||||
<button type="button" class="layui-btn layui-btn-normal" id="add-address">添加地址</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit lay-filter="component-form-element">提交</button>
|
||||
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{include file="Public:footer"/}
|
||||
|
||||
<script>
|
||||
layui.use(['form', 'layer'], function(){
|
||||
var form = layui.form;
|
||||
var layer = layui.layer;
|
||||
|
||||
// 添加地址按钮点击事件
|
||||
$('#add-address').on('click', function(){
|
||||
var newItem = '<div class="sync-address-item">' +
|
||||
'<div class="layui-input-inline" style="width: 200px; margin-right: 10px;">' +
|
||||
'<input type="text" name="sync_address_names[]" value="" autocomplete="off" class="layui-input" placeholder="地址名称">' +
|
||||
'</div>' +
|
||||
'<div class="layui-input-inline" style="width: 450px; margin-right: 10px;">' +
|
||||
'<input type="text" name="sync_address_urls[]" value="" autocomplete="off" class="layui-input" placeholder="请输入同步地址URL">' +
|
||||
'</div>' +
|
||||
'<button type="button" class="layui-btn layui-btn-danger remove-address">删除</button>' +
|
||||
'</div>';
|
||||
$('#sync-addresses').append(newItem);
|
||||
});
|
||||
|
||||
// 删除地址按钮点击事件(使用事件委托)
|
||||
$(document).on('click', '.remove-address', function(){
|
||||
// 如果只有一个地址项,则清空而不是删除
|
||||
if($('.sync-address-item').length <= 1) {
|
||||
$(this).closest('.sync-address-item').find('input').val('');
|
||||
} else {
|
||||
$(this).closest('.sync-address-item').remove();
|
||||
}
|
||||
return false; // 阻止表单提交
|
||||
});
|
||||
|
||||
// 表单提交 - 不再在前端处理数据转换,交给后端处理
|
||||
form.on('submit(component-form-element)', function(data){
|
||||
var field = data.field;
|
||||
|
||||
// 提交到后台
|
||||
$.ajax({
|
||||
url: '{:url("/admin/update")}',
|
||||
type: 'post',
|
||||
data: field,
|
||||
success: function(res){
|
||||
if(res.status){
|
||||
layer.msg(res.msg, {icon: 1});
|
||||
}else{
|
||||
layer.msg(res.msg, {icon: 2});
|
||||
}
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.sync-address-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.layui-form-label {
|
||||
width: 120px;
|
||||
}
|
||||
.layui-input-block {
|
||||
margin-left: 150px;
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,220 +1,237 @@
|
|||
{include file="Public:header2"/}
|
||||
|
||||
<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-item">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline" style="width: 300px;margin-left: 0px">
|
||||
<input type="text" name="title" value="{$Request.get.title}" placeholder="请输入盒子标题" autocomplete="off" class="layui-input">
|
||||
<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-item">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline" style="width: 300px;margin-left: 0px">
|
||||
<input type="text" name="title" value="{$Request.get.title}" placeholder="请输入盒子标题"
|
||||
autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline" style="width: 180px;margin-left: 0px">
|
||||
<select name="status" style="width:100%">
|
||||
<option value="">--请选择状态--</option>
|
||||
<option value="1" {if condition="$Request.get.status eq 1"}selected{/if}>上架</option>
|
||||
<option value="2" {if condition="$Request.get.status eq 2"}selected{/if}>下架</option>
|
||||
<option value="3" {if condition="$Request.get.status eq 3"}selected{/if}>售罄</option>
|
||||
</select>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline" style="width: 180px;margin-left: 0px">
|
||||
<select name="status" style="width:100%">
|
||||
<option value="">--请选择状态--</option>
|
||||
<option value="1" {if condition="$Request.get.status eq 1" }selected{/if}>上架</option>
|
||||
<option value="2" {if condition="$Request.get.status eq 2" }selected{/if}>下架</option>
|
||||
<option value="3" {if condition="$Request.get.status eq 3" }selected{/if}>售罄</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline" style="width: 180px;margin-left: 0px">
|
||||
<select name="type" style="width:100%">
|
||||
<option value="">--盒子类型--</option>
|
||||
<option value="1" {if condition="$Request.get.type eq 1" }selected{/if}>一番赏</option>
|
||||
<option value="2" {if condition="$Request.get.type eq 2" }selected{/if}>无限赏</option>
|
||||
<option value="3" {if condition="$Request.get.type eq 3" }selected{/if}>擂台赏</option>
|
||||
<option value="5" {if condition="$Request.get.type eq 5" }selected{/if}>积分赏</option>
|
||||
<option value="6" {if condition="$Request.get.type eq 6" }selected{/if}>全局赏</option>
|
||||
<option value="8" {if condition="$Request.get.type eq 8" }selected{/if}>领主赏</option>
|
||||
<option value="9" {if condition="$Request.get.type eq 9" }selected{/if}>连击赏</option>
|
||||
<option value="10" {if condition="$Request.get.type eq 10" }selected{/if}>商城赏</option>
|
||||
<option value="11" {if condition="$Request.get.type eq 11" }selected{/if}>自制赏</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin mmm" lay-submit
|
||||
lay-filter="LAY-user-front-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline" style="width: 180px;margin-left: 0px">
|
||||
<select name="type" style="width:100%">
|
||||
<option value="">--盒子类型--</option>
|
||||
<option value="1" {if condition="$Request.get.type eq 1"}selected{/if}>一番赏</option>
|
||||
<option value="2" {if condition="$Request.get.type eq 2"}selected{/if}>无限赏</option>
|
||||
<option value="3" {if condition="$Request.get.type eq 3"}selected{/if}>擂台赏</option>
|
||||
<option value="5" {if condition="$Request.get.type eq 5"}selected{/if}>积分赏</option>
|
||||
<option value="6" {if condition="$Request.get.type eq 6"}selected{/if}>全局赏</option>
|
||||
<option value="8" {if condition="$Request.get.type eq 8"}selected{/if}>领主赏</option>
|
||||
<option value="9" {if condition="$Request.get.type eq 9"}selected{/if}>连击赏</option>
|
||||
<option value="10" {if condition="$Request.get.type eq 10"}selected{/if}>商城赏</option>
|
||||
<option value="11" {if condition="$Request.get.type eq 11"}selected{/if}>自制赏</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin mmm" lay-submit lay-filter="LAY-user-front-search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</form>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<xblock>
|
||||
<div style="padding-bottom: 10px;">
|
||||
<a class="layui-btn" onclick="goods_add()">添加盒子</a>
|
||||
<span style="line-height:40px;float:right;">共有数据: {$count}条</span>
|
||||
</div>
|
||||
</xblock>
|
||||
<table class="layui-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>盒子ID</th>
|
||||
<th>盒子类型</th>
|
||||
<th>盒子名称</th>
|
||||
<th>盒子价格</th>
|
||||
<th>盒子图片</th>
|
||||
<th>盒子详情图片</th>
|
||||
<th>盒子套数</th>
|
||||
<th>锁箱模式</th>
|
||||
<!-- <th>发券开关</th>-->
|
||||
<!-- <th>发积分开关</th>-->
|
||||
<th>首页显示</th>
|
||||
<th>
|
||||
擂台赏<br>抽全局赏数量
|
||||
</th>
|
||||
<th>排序</th>
|
||||
<th>状态</th>
|
||||
<th>添加时间</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{volist name="list" id="vo"}
|
||||
<tr>
|
||||
<td>
|
||||
{if condition="$vo['type'] eq 1"}
|
||||
<div onclicK="goodsextendlist_edit({$vo['id']},'{$vo.title}')" style="cursor:pointer;">
|
||||
{$vo['id']}
|
||||
</div>
|
||||
{elseif condition="$vo['type'] eq 11"}
|
||||
<div onclicK="goodsextendlist_edit({$vo['id']},'{$vo.title}')" style="cursor:pointer;">
|
||||
{$vo['id']}
|
||||
</div>
|
||||
|
||||
{else }
|
||||
|
||||
<div class="layui-card-body">
|
||||
<xblock>
|
||||
<div style="padding-bottom: 10px;">
|
||||
<a class="layui-btn" onclick="goods_add()">添加盒子</a>
|
||||
<span style="line-height:40px;float:right;">共有数据: {$count}条</span>
|
||||
</div>
|
||||
</xblock>
|
||||
<table class="layui-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>盒子ID</th>
|
||||
<th>盒子类型</th>
|
||||
<th>盒子名称</th>
|
||||
<th>盒子价格</th>
|
||||
<th>盒子图片</th>
|
||||
<th>盒子详情图片</th>
|
||||
<th>盒子套数</th>
|
||||
<th>锁箱模式</th>
|
||||
<!-- <th>发券开关</th>-->
|
||||
<!-- <th>发积分开关</th>-->
|
||||
<th>首页显示</th>
|
||||
<th>
|
||||
擂台赏<br>抽全局赏数量
|
||||
</th>
|
||||
<th>排序</th>
|
||||
<th>状态</th>
|
||||
<th>添加时间</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{volist name="list" id="vo"}
|
||||
<tr>
|
||||
<td>
|
||||
{if condition="$vo['type'] eq 1"}
|
||||
<div onclicK="goodsextendlist_edit({$vo['id']},'{$vo.title}')" style="cursor:pointer;">
|
||||
{$vo['id']}
|
||||
</div>
|
||||
{elseif condition="$vo['type'] eq 11"}
|
||||
<div onclicK="goodsextendlist_edit({$vo['id']},'{$vo.title}')" style="cursor:pointer;">
|
||||
{$vo['id']}
|
||||
</div>
|
||||
|
||||
{else }
|
||||
|
||||
{$vo['id']}
|
||||
{/if}
|
||||
</td>
|
||||
<td>
|
||||
{if condition="$vo['type'] eq 1"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">一番赏</button>
|
||||
{elseif condition="$vo['type'] eq 2"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">无限赏</button>
|
||||
{elseif condition="$vo['type'] eq 3"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">擂台赏</button>
|
||||
{elseif condition="$vo['type'] eq 5"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">积分赏</button>
|
||||
{elseif condition="$vo['type'] eq 6"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">全局赏</button>
|
||||
{elseif condition="$vo['type'] eq 8"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">领主赏</button>
|
||||
{elseif condition="$vo['type'] eq 9"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">连击赏</button>
|
||||
{elseif condition="$vo['type'] eq 10"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">商城赏</button>
|
||||
{elseif condition="$vo['type'] eq 11"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">自制赏</button>
|
||||
{/if}
|
||||
</td>
|
||||
<td>{$vo['title']}</td>
|
||||
<td>{$vo['price']}</td>
|
||||
<td><img src="{PHP} echo imageUrl($vo['imgurl']){/php}" style="width:60px;height:60px;"></td>
|
||||
<td>{if $vo['imgurl_detail']}<img src="{PHP} echo imageUrl($vo['imgurl_detail']){/php}" style="width:60px;height:60px;">{/if}</td>
|
||||
<td>{if $vo['stock'] gt 0}{$vo['stock']}{/if}</td>
|
||||
<td>
|
||||
{if condition="$vo['lock_is'] eq 1"}
|
||||
<button class="layui-btn layui-btn-warm layui-btn-sm">状态:开启</button>
|
||||
<br>
|
||||
<button class="layui-btn layui-btn-warm layui-btn-sm">时间:{$vo['lock_time']}秒</button>
|
||||
{/if}
|
||||
</td>
|
||||
<!-- <td>-->
|
||||
<!-- {if $vo['coupon_is'] eq 1}-->
|
||||
<!-- <button class="layui-btn layui-btn-warm layui-btn-sm">状态:开启</button>-->
|
||||
<!-- <br>-->
|
||||
<!-- <button class="layui-btn layui-btn-warm layui-btn-sm">概率:{$vo['coupon_pro']*1}%</button>-->
|
||||
<!-- {/if}-->
|
||||
<!-- </td>-->
|
||||
<!-- <td>-->
|
||||
<!-- {if $vo['integral_is'] eq 1}-->
|
||||
<!-- <button class="layui-btn layui-btn-warm layui-btn-radius layui-btn-sm">开启</button>-->
|
||||
<!-- {/if}-->
|
||||
<!-- </td>-->
|
||||
<td>
|
||||
{if $vo['show_is'] eq 1}
|
||||
<button class="layui-btn layui-btn-danger layui-btn-radius layui-btn-sm">否</button>
|
||||
{/if}
|
||||
</td>
|
||||
<td>{if $vo['prize_num'] gt 0}{$vo['prize_num']}{/if}</td>
|
||||
<td>{$vo['sort']}</td>
|
||||
<td>
|
||||
{if $vo['status'] eq 1}
|
||||
<button onClick="del({$vo.id},2,'下架')" class="layui-btn layui-btn-danger layui-btn-xs"><i class="layui-icon"></i>下架</button>
|
||||
<!-- <button class="layui-btn layui-btn-sucess layui-btn-radius layui-btn-sm">上架</button>-->
|
||||
{elseif $vo['status'] eq 2}
|
||||
<button onClick="del({$vo.id},1,'上架')" class="layui-btn layui-btn-info layui-btn-xs"><i class="layui-icon"></i>上架</button>
|
||||
<!-- <button class="layui-btn layui-btn-danger layui-btn-radius layui-btn-sm">下架</button>-->
|
||||
{elseif $vo['status'] eq 3}
|
||||
{/if}
|
||||
</td>
|
||||
<td>
|
||||
{if condition="$vo['type'] eq 1"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">一番赏</button>
|
||||
{elseif condition="$vo['type'] eq 2"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">无限赏</button>
|
||||
{elseif condition="$vo['type'] eq 3"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">擂台赏</button>
|
||||
{elseif condition="$vo['type'] eq 5"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">积分赏</button>
|
||||
{elseif condition="$vo['type'] eq 6"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">全局赏</button>
|
||||
{elseif condition="$vo['type'] eq 8"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">领主赏</button>
|
||||
{elseif condition="$vo['type'] eq 9"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">连击赏</button>
|
||||
{elseif condition="$vo['type'] eq 10"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">商城赏</button>
|
||||
{elseif condition="$vo['type'] eq 11"}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">自制赏</button>
|
||||
{/if}
|
||||
</td>
|
||||
<td>{$vo['title']}</td>
|
||||
<td>{$vo['price']}</td>
|
||||
<td><img src="{PHP} echo imageUrl($vo['imgurl']){/php}" style="width:60px;height:60px;">
|
||||
</td>
|
||||
<td>{if $vo['imgurl_detail']}<img src="{PHP} echo imageUrl($vo['imgurl_detail']){/php}"
|
||||
style="width:60px;height:60px;">{/if}</td>
|
||||
<td>{if $vo['stock'] gt 0}{$vo['stock']}{/if}</td>
|
||||
<td>
|
||||
{if condition="$vo['lock_is'] eq 1"}
|
||||
<button class="layui-btn layui-btn-warm layui-btn-sm">状态:开启</button>
|
||||
<br>
|
||||
<button class="layui-btn layui-btn-warm layui-btn-sm">时间:{$vo['lock_time']}秒</button>
|
||||
{/if}
|
||||
</td>
|
||||
<!-- <td>-->
|
||||
<!-- {if $vo['coupon_is'] eq 1}-->
|
||||
<!-- <button class="layui-btn layui-btn-warm layui-btn-sm">状态:开启</button>-->
|
||||
<!-- <br>-->
|
||||
<!-- <button class="layui-btn layui-btn-warm layui-btn-sm">概率:{$vo['coupon_pro']*1}%</button>-->
|
||||
<!-- {/if}-->
|
||||
<!-- </td>-->
|
||||
<!-- <td>-->
|
||||
<!-- {if $vo['integral_is'] eq 1}-->
|
||||
<!-- <button class="layui-btn layui-btn-warm layui-btn-radius layui-btn-sm">开启</button>-->
|
||||
<!-- {/if}-->
|
||||
<!-- </td>-->
|
||||
<td>
|
||||
{if $vo['show_is'] eq 1}
|
||||
<button class="layui-btn layui-btn-danger layui-btn-radius layui-btn-sm">否</button>
|
||||
{/if}
|
||||
</td>
|
||||
<td>{if $vo['prize_num'] gt 0}{$vo['prize_num']}{/if}</td>
|
||||
<td>{$vo['sort']}</td>
|
||||
<td>
|
||||
{if $vo['status'] eq 1}
|
||||
<button onClick="del({$vo.id},2,'下架')"
|
||||
class="layui-btn layui-btn-danger layui-btn-xs"><i
|
||||
class="layui-icon"></i>下架</button>
|
||||
<!-- <button class="layui-btn layui-btn-sucess layui-btn-radius layui-btn-sm">上架</button>-->
|
||||
{elseif $vo['status'] eq 2}
|
||||
<button onClick="del({$vo.id},1,'上架')" class="layui-btn layui-btn-info layui-btn-xs"><i
|
||||
class="layui-icon"></i>上架</button>
|
||||
<!-- <button class="layui-btn layui-btn-danger layui-btn-radius layui-btn-sm">下架</button>-->
|
||||
{elseif $vo['status'] eq 3}
|
||||
<button class="layui-btn layui-btn-disabled layui-btn-radius layui-btn-sm">售罄</button>
|
||||
{/if}
|
||||
</td>
|
||||
<td>{$vo['addtime']|date="Y-m-d H:i"}</td>
|
||||
<td>
|
||||
<a style="text-decoration:none" title="编辑" onclick="goods_edit({$vo.id})" class="layui-btn layui-btn-normal layui-btn-xs">
|
||||
<i class="layui-icon layui-icon-edit"></i>编辑
|
||||
</a>
|
||||
<div style="margin-top: 8px"></div>
|
||||
<a style="text-decoration:none" onclick="goodslist({$vo['id']},'{$vo.title}')" class="layui-btn layui-btn-warm layui-btn-xs "><i class="layui-icon layui-icon-cart-simple"></i>奖品</a>
|
||||
<div style="margin-top: 8px"></div>
|
||||
<!-- {if condition="$vo['status'] eq 1"}-->
|
||||
<!-- <button onClick="del({$vo.id},2,'下架')" class="layui-btn layui-btn-danger layui-btn-xs"><i class="layui-icon"></i>下架</button>-->
|
||||
<!-- {else /}-->
|
||||
{/if}
|
||||
</td>
|
||||
<td>{$vo['addtime']|date="Y-m-d H:i"}</td>
|
||||
<td>
|
||||
<a style="text-decoration:none" title="编辑" onclick="goods_edit({$vo.id})"
|
||||
class="layui-btn layui-btn-normal layui-btn-xs">
|
||||
<i class="layui-icon layui-icon-edit"></i>编辑
|
||||
</a>
|
||||
<div style="margin-top: 8px"></div>
|
||||
<a style="text-decoration:none" onclick="goodslist({$vo['id']},'{$vo.title}')"
|
||||
class="layui-btn layui-btn-warm layui-btn-xs "><i
|
||||
class="layui-icon layui-icon-cart-simple"></i>奖品</a>
|
||||
<div style="margin-top: 8px"></div>
|
||||
<a style="text-decoration:none" onclick="goods_sync({$vo['id']},{$vo['async_code']})"
|
||||
class="layui-btn layui-btn-normal layui-btn-xs"><i
|
||||
class="layui-icon layui-icon-sync"></i>同步</a>
|
||||
<!-- {if condition="$vo['status'] eq 1"}-->
|
||||
<!-- <button onClick="del({$vo.id},2,'下架')" class="layui-btn layui-btn-danger layui-btn-xs"><i class="layui-icon"></i>下架</button>-->
|
||||
<!-- {else /}-->
|
||||
|
||||
<!-- {/if}-->
|
||||
<div style="margin-top: 8px"></div>
|
||||
<a style="text-decoration:none" onClick="del({$vo.id},3,'删除')" class="layui-btn layui-btn-danger layui-btn-xs">
|
||||
<i class="layui-icon layui-icon-delete"></i>删除
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
<!-- {/if}-->
|
||||
<div style="margin-top: 8px"></div>
|
||||
<a style="text-decoration:none" onClick="del({$vo.id},3,'删除')"
|
||||
class="layui-btn layui-btn-danger layui-btn-xs">
|
||||
<i class="layui-icon layui-icon-delete"></i>删除
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{/volist}
|
||||
|
||||
{if condition="empty($list)"}
|
||||
<tr><td colspan='11' style="text-align:center;">暂时没有数据!</td></tr>
|
||||
{/if}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="layui-box layui-laypage layui-laypage-default">
|
||||
{$page|raw}
|
||||
{if condition="empty($list)"}
|
||||
<tr>
|
||||
<td colspan='11' style="text-align:center;">暂时没有数据!</td>
|
||||
</tr>
|
||||
{/if}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="layui-box layui-laypage layui-laypage-default">
|
||||
{$page|raw}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{include file="Public:footer"/}
|
||||
<script type="text/javascript">
|
||||
layui.use(['layer','table'], function(){
|
||||
var $ = layui.$;
|
||||
|
||||
|
||||
})
|
||||
|
||||
//添加盒子
|
||||
function goods_add() {
|
||||
var url = "{:url('/admin/goods_add')}";
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '添加盒子',
|
||||
shadeClose: false,
|
||||
shade: 0.3,
|
||||
area: ['90%', '90%'],
|
||||
content: url,
|
||||
});
|
||||
}
|
||||
{include file="Public:footer"/}
|
||||
<script type="text/javascript">
|
||||
layui.use(['layer', 'table'], function () {
|
||||
var $ = layui.$;
|
||||
|
||||
|
||||
//编辑奖品
|
||||
function goodsextendlist_edit(goods_id,title) {
|
||||
})
|
||||
|
||||
//添加盒子
|
||||
function goods_add() {
|
||||
var url = "{:url('/admin/goods_add')}";
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '添加盒子',
|
||||
shadeClose: false,
|
||||
shade: 0.3,
|
||||
area: ['90%', '90%'],
|
||||
content: url,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//编辑奖品
|
||||
function goodsextendlist_edit(goods_id, title) {
|
||||
var url = "{:url('/admin/goodsextendlist?goods_id=" + goods_id + "')}";
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: title+'奖品配置',
|
||||
title: title + '奖品配置',
|
||||
shadeClose: false,
|
||||
// scrollbar:false,
|
||||
shade: 0.3,
|
||||
|
|
@ -225,53 +242,148 @@
|
|||
|
||||
|
||||
|
||||
//编辑盒子
|
||||
function goods_edit(id) {
|
||||
var url = "{:url('/admin/goods_edit?id="+id+"')}";
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '编辑盒子',
|
||||
shadeClose: false,
|
||||
shade: 0.3,
|
||||
area: ['90%', '90%'],
|
||||
content: url,
|
||||
});
|
||||
}
|
||||
//编辑盒子
|
||||
function goods_edit(id) {
|
||||
var url = "{:url('/admin/goods_edit?id=" + id + "')}";
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '编辑盒子',
|
||||
shadeClose: false,
|
||||
shade: 0.3,
|
||||
area: ['90%', '90%'],
|
||||
content: url,
|
||||
});
|
||||
}
|
||||
|
||||
//盒子奖品
|
||||
function goodslist(goods_id,title) {
|
||||
var url = "{:url('/admin/goodslist?goods_id="+goods_id+"')}";
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: title+' 盒子奖品',
|
||||
shadeClose: false,
|
||||
shade: 0.3,
|
||||
area: ['95%', '95%'],
|
||||
content: url,
|
||||
});
|
||||
}
|
||||
//盒子奖品
|
||||
function goodslist(goods_id, title) {
|
||||
var url = "{:url('/admin/goodslist?goods_id=" + goods_id + "')}";
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: title + ' 盒子奖品',
|
||||
shadeClose: false,
|
||||
shade: 0.3,
|
||||
area: ['95%', '95%'],
|
||||
content: url,
|
||||
});
|
||||
}
|
||||
|
||||
//上下架
|
||||
function del(id,type,type_name){
|
||||
layer.confirm('确认要执行'+type_name+'操作吗?',function(){
|
||||
var url = "{:url('/admin/goods_del')}";
|
||||
var load=layer.load(2);
|
||||
var $ = layui.$;
|
||||
$.post(url,{"id":id,'type':type},function(data){
|
||||
if(data.status == 1){
|
||||
layer.msg('操作成功',{icon:1,time:1000},function(){
|
||||
location.reload();
|
||||
//上下架
|
||||
function del(id, type, type_name) {
|
||||
layer.confirm('确认要执行' + type_name + '操作吗?', function () {
|
||||
var url = "{:url('/admin/goods_del')}";
|
||||
var load = layer.load(2);
|
||||
var $ = layui.$;
|
||||
$.post(url, { "id": id, 'type': type }, function (data) {
|
||||
if (data.status == 1) {
|
||||
layer.msg('操作成功', { icon: 1, time: 1000 }, function () {
|
||||
location.reload();
|
||||
});
|
||||
} else {
|
||||
layer.msg(data.msg, { icon: 2, anim: 6, time: 1000 }, function () {
|
||||
layer.close(load);
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//盒子奖品
|
||||
function goods_sync(goods_id, async_code) {
|
||||
layui.use(['table', 'form', 'layer','laytpl'], function () {
|
||||
var table = layui.table, form = layui.form, layer = layui.layer,laytpl = layui.laytpl;
|
||||
// 同步操作
|
||||
var confirmMsg = async_code
|
||||
? '警告:该盒子已经同步过,再次同步将会覆盖目标系统中的盒子数据!确定要继续吗?'
|
||||
: '确定要同步该盒子吗?';
|
||||
|
||||
layer.confirm(confirmMsg, {
|
||||
btn: ['确定', '取消'],
|
||||
title: '同步确认',
|
||||
skin: async_code ? 'layui-layer-danger' : ''
|
||||
}, function (index) {
|
||||
// 获取同步地址
|
||||
$.get('{:url("/admin/get_sync_addresses")}', function (res) {
|
||||
if (res.status === 1 && res.data.length > 0) {
|
||||
// 渲染同步地址选择弹窗
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: '选择同步目标',
|
||||
area: ['500px', '350px'],
|
||||
content: laytpl($('#syncDialogTpl').html()).render({ syncAddresses: res.data }),
|
||||
btn: ['开始同步', '取消'],
|
||||
success: function () {
|
||||
form.render(); // 重新渲染表单
|
||||
// 监听全选
|
||||
form.on('checkbox(syncAllFilter)', function (data) {
|
||||
var syncTargets = $('input[name="syncTargets"]');
|
||||
syncTargets.prop('checked', data.elem.checked);
|
||||
form.render('checkbox');
|
||||
});
|
||||
},
|
||||
yes: function (index, layero) {
|
||||
var selectedTargets = [];
|
||||
$('input[name="syncTargets"]:checked').each(function () {
|
||||
selectedTargets.push($(this).val());
|
||||
});
|
||||
|
||||
if (selectedTargets.length === 0) {
|
||||
layer.msg('请至少选择一个同步目标', { icon: 2 });
|
||||
return;
|
||||
}
|
||||
|
||||
// 调用同步接口
|
||||
layer.close(index);
|
||||
var loadIndex = layer.load(2);
|
||||
$.post('{:url("/admin/sync_goods")}', {
|
||||
goods_id: goods_id,
|
||||
targets: selectedTargets
|
||||
}, function (res) {
|
||||
layer.close(loadIndex);
|
||||
if (res.status === 1) {
|
||||
layer.msg('同步成功', { icon: 1 });
|
||||
table.reload('testReload'); // 刷新表格
|
||||
} else {
|
||||
layer.msg(res.msg || '同步失败', { icon: 2 });
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layer.msg('没有可用的同步目标,请先在系统设置中配置', { icon: 2 });
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(data.msg,{icon:2,anim:6,time:1000},function(){
|
||||
layer.close(load);
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- 在操作栏中添加同步按钮 -->
|
||||
<script type="text/html" id="barDemo">
|
||||
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="sync">同步</a>
|
||||
</script>
|
||||
|
||||
<!-- 添加同步弹窗模板 -->
|
||||
<script type="text/html" id="syncDialogTpl">
|
||||
<div class="layui-form" style="padding: 20px;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">选择同步目标</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="checkbox" name="syncAll" title="全选" lay-filter="syncAllFilter">
|
||||
{{# layui.each(d.syncAddresses, function(index, item){ }}
|
||||
<input type="checkbox" name="syncTargets" value="{{ item.sync_address }}" title="{{ item.name }}" lay-skin="primary">
|
||||
{{# }); }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
</html>
|
||||
|
|
@ -1232,5 +1232,76 @@ class Goods extends Base
|
|||
return $this->renderSuccess("操作成功", $user_ids);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 接收盒子同步数据
|
||||
*/
|
||||
public function receive_sync()
|
||||
{
|
||||
// 获取POST的JSON数据
|
||||
$input = file_get_contents('php://input');
|
||||
$data = json_decode($input, true);
|
||||
|
||||
if (!$data || !isset($data['goods']) || !isset($data['goodsList']) || !isset($data['async_code'])) {
|
||||
return $this->renderError('无效的同步数据');
|
||||
}
|
||||
|
||||
// 开始事务
|
||||
Db::startTrans();
|
||||
try {
|
||||
$goodsData = $data['goods'];
|
||||
$goodsListData = $data['goodsList'];
|
||||
$async_code = $data['async_code'];
|
||||
|
||||
// 检查async_code是否存在
|
||||
$existingGoods = Goodsmodel::where('async_code', $async_code)->find();
|
||||
|
||||
// 准备商品数据
|
||||
$goods = isset($goodsData['id']) ? unset($goodsData['id']) : $goodsData;
|
||||
|
||||
if ($existingGoods) {
|
||||
// 更新现有商品
|
||||
$goodsId = $existingGoods->id;
|
||||
|
||||
// 更新商品数据
|
||||
$goods['async_date'] = date('Y-m-d H:i:s');
|
||||
$existingGoods->save($goods);
|
||||
|
||||
// 删除现有的商品列表数据
|
||||
GoodsList::where('goods_id', $goodsId)->delete();
|
||||
} else {
|
||||
// 创建新商品
|
||||
$goods['async_date'] = date('Y-m-d H:i:s');
|
||||
$goods['addtime'] = time();
|
||||
$goods['update_time'] = time();
|
||||
$goodsModel = new Goodsmodel();
|
||||
$goodsModel->save($goods);
|
||||
$goodsId = $goodsModel->id;
|
||||
}
|
||||
|
||||
// 处理商品列表数据
|
||||
foreach ($goodsListData as $listItem) {
|
||||
// 处理商品列表项
|
||||
if (isset($listItem['id'])) {
|
||||
unset($listItem['id']);
|
||||
}
|
||||
|
||||
$listItem['goods_id'] = $goodsId;
|
||||
|
||||
// 创建新的商品列表项
|
||||
$goodsListModel = new GoodsList();
|
||||
$goodsListModel->save($listItem);
|
||||
}
|
||||
|
||||
// 提交事务
|
||||
Db::commit();
|
||||
|
||||
return $this->renderSuccess('同步成功');
|
||||
} catch (\Exception $e) {
|
||||
// 回滚事务
|
||||
Db::rollback();
|
||||
return $this->renderError('同步失败: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -163,4 +163,7 @@ Route::any('generate_urllinks','Index/generate_urllinks');
|
|||
//
|
||||
|
||||
Route::any('mall_ordermoney', 'Mall/mall_ordermoney');
|
||||
Route::any('mall_orderbuy', 'Mall/mall_orderbuy');
|
||||
Route::any('mall_orderbuy', 'Mall/mall_orderbuy');
|
||||
|
||||
// 添加API路由
|
||||
Route::rule('goods/receive_sync', 'Goods/receive_sync', 'POST');
|
||||
|
|
@ -223,6 +223,10 @@ return [
|
|||
'url' => '/admin/card_shang',
|
||||
'name' => '抽奖等级设置',
|
||||
],
|
||||
[
|
||||
'url' => '/admin/systemconfig',
|
||||
'name' => '系统设置',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user