完善后台管理店铺搜索
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -18,5 +18,5 @@ public class DeleteBrandProgressProperties {
|
|||||||
* 商品风险(PRODUCT_RISK_RESOLVE)RUNNING 超时自动收尾/失败,按分钟计算;
|
* 商品风险(PRODUCT_RISK_RESOLVE)RUNNING 超时自动收尾/失败,按分钟计算;
|
||||||
* 与删除品牌共用同一定时调度。
|
* 与删除品牌共用同一定时调度。
|
||||||
*/
|
*/
|
||||||
private long productRiskStaleTimeoutMinutes = 1;
|
private long productRiskStaleTimeoutMinutes = 10;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,8 +50,10 @@ public class ShopManageController {
|
|||||||
})
|
})
|
||||||
public ApiResponse<ShopManagePageVo> page(
|
public ApiResponse<ShopManagePageVo> page(
|
||||||
@Parameter(description = "页码") @RequestParam(defaultValue = "1") Long page,
|
@Parameter(description = "页码") @RequestParam(defaultValue = "1") Long page,
|
||||||
@Parameter(description = "每页数量") @RequestParam(defaultValue = "15") Long pageSize) {
|
@Parameter(description = "每页数量") @RequestParam(defaultValue = "15") Long pageSize,
|
||||||
return ApiResponse.success(shopManageService.page(page, pageSize));
|
@Parameter(description = "分组ID") @RequestParam(required = false) Long groupId,
|
||||||
|
@Parameter(description = "店铺名") @RequestParam(required = false) String shopName) {
|
||||||
|
return ApiResponse.success(shopManageService.page(page, pageSize, groupId, shopName));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping
|
@PostMapping
|
||||||
|
|||||||
@@ -28,15 +28,23 @@ public class ShopManageService {
|
|||||||
private final ShopCredentialCryptoService shopCredentialCryptoService;
|
private final ShopCredentialCryptoService shopCredentialCryptoService;
|
||||||
|
|
||||||
public ShopManagePageVo page(long page, long pageSize) {
|
public ShopManagePageVo page(long page, long pageSize) {
|
||||||
|
return page(page, pageSize, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ShopManagePageVo page(long page, long pageSize, Long groupId, String shopName) {
|
||||||
long safePage = Math.max(page, 1);
|
long safePage = Math.max(page, 1);
|
||||||
long safePageSize = Math.min(Math.max(pageSize, 1), 100);
|
long safePageSize = Math.min(Math.max(pageSize, 1), 100);
|
||||||
|
String safeShopName = shopName == null ? "" : shopName.trim();
|
||||||
|
|
||||||
LambdaQueryWrapper<ShopManageEntity> query = new LambdaQueryWrapper<ShopManageEntity>()
|
LambdaQueryWrapper<ShopManageEntity> query = new LambdaQueryWrapper<ShopManageEntity>()
|
||||||
|
.eq(groupId != null && groupId > 0, ShopManageEntity::getGroupId, groupId)
|
||||||
|
.like(!safeShopName.isEmpty(), ShopManageEntity::getShopName, safeShopName)
|
||||||
.orderByDesc(ShopManageEntity::getId);
|
.orderByDesc(ShopManageEntity::getId);
|
||||||
Long total = shopManageMapper.selectCount(query);
|
Long total = shopManageMapper.selectCount(query);
|
||||||
List<ShopManageEntity> rows = shopManageMapper
|
List<ShopManageEntity> rows = shopManageMapper
|
||||||
.selectList(query.last("LIMIT " + ((safePage - 1) * safePageSize) + ", " + safePageSize));
|
.selectList(query.last("LIMIT " + ((safePage - 1) * safePageSize) + ", " + safePageSize));
|
||||||
|
|
||||||
Map<Long, String> groupNameById = buildGroupNameMap(rows.stream()
|
Map<Long, String> groupNameById = buildGroupNameMap(rows.stream()
|
||||||
.map(ShopManageEntity::getGroupId)
|
.map(ShopManageEntity::getGroupId)
|
||||||
.filter(id -> id != null && id > 0)
|
.filter(id -> id != null && id > 0)
|
||||||
.distinct()
|
.distinct()
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ aiimage:
|
|||||||
heartbeat-timeout-minutes: ${AIIMAGE_DELETE_BRAND_HEARTBEAT_TIMEOUT_MINUTES:15}
|
heartbeat-timeout-minutes: ${AIIMAGE_DELETE_BRAND_HEARTBEAT_TIMEOUT_MINUTES:15}
|
||||||
stale-check-cron: ${AIIMAGE_DELETE_BRAND_STALE_CHECK_CRON:*/30 * * * * *}
|
stale-check-cron: ${AIIMAGE_DELETE_BRAND_STALE_CHECK_CRON:*/30 * * * * *}
|
||||||
finalize-check-cron: ${AIIMAGE_DELETE_BRAND_FINALIZE_CHECK_CRON:30 */2 * * * *}
|
finalize-check-cron: ${AIIMAGE_DELETE_BRAND_FINALIZE_CHECK_CRON:30 */2 * * * *}
|
||||||
product-risk-stale-timeout-minutes: ${AIIMAGE_PRODUCT_RISK_STALE_TIMEOUT_MINUTES:1}
|
product-risk-stale-timeout-minutes: ${AIIMAGE_PRODUCT_RISK_STALE_TIMEOUT_MINUTES:10}
|
||||||
module-cleanup:
|
module-cleanup:
|
||||||
enabled: ${AIIMAGE_MODULE_CLEANUP_ENABLED:true}
|
enabled: ${AIIMAGE_MODULE_CLEANUP_ENABLED:true}
|
||||||
cron: ${AIIMAGE_MODULE_CLEANUP_CRON:0 0 0 * * *}
|
cron: ${AIIMAGE_MODULE_CLEANUP_CRON:0 0 0 * * *}
|
||||||
|
|||||||
Binary file not shown.
@@ -947,10 +947,24 @@ def delete_dedupe_total_data(item_id):
|
|||||||
def list_shop_manages():
|
def list_shop_manages():
|
||||||
page = max(1, int(request.args.get('page', 1)))
|
page = max(1, int(request.args.get('page', 1)))
|
||||||
page_size = min(100, max(1, int(request.args.get('page_size', 15))))
|
page_size = min(100, max(1, int(request.args.get('page_size', 15))))
|
||||||
|
group_id_raw = (request.args.get('group_id') or '').strip()
|
||||||
|
shop_name = (request.args.get('shop_name') or '').strip()
|
||||||
|
|
||||||
|
params = {'page': page, 'pageSize': page_size}
|
||||||
|
if group_id_raw:
|
||||||
|
try:
|
||||||
|
group_id = int(group_id_raw)
|
||||||
|
if group_id > 0:
|
||||||
|
params['groupId'] = group_id
|
||||||
|
except (TypeError, ValueError):
|
||||||
|
pass
|
||||||
|
if shop_name:
|
||||||
|
params['shopName'] = shop_name
|
||||||
|
|
||||||
result, error_response, status = _proxy_backend_java(
|
result, error_response, status = _proxy_backend_java(
|
||||||
'GET',
|
'GET',
|
||||||
'/api/admin/shop-manages',
|
'/api/admin/shop-manages',
|
||||||
params={'page': page, 'pageSize': page_size},
|
params=params,
|
||||||
)
|
)
|
||||||
if error_response is not None:
|
if error_response is not None:
|
||||||
return error_response, status
|
return error_response, status
|
||||||
|
|||||||
@@ -382,6 +382,19 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="panel-box">
|
<div class="panel-box">
|
||||||
<h3 style="margin-bottom:16px;font-size:15px;">店铺列表</h3>
|
<h3 style="margin-bottom:16px;font-size:15px;">店铺列表</h3>
|
||||||
|
<div class="form-row" style="margin-bottom:12px;">
|
||||||
|
<div class="form-group" style="min-width:180px;">
|
||||||
|
<label>分组</label>
|
||||||
|
<select id="shopManageFilterGroupId">
|
||||||
|
<option value="">全部分组</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="form-group" style="min-width:220px;">
|
||||||
|
<label>店铺名</label>
|
||||||
|
<input type="text" id="shopManageFilterShopName" placeholder="请输入店铺名">
|
||||||
|
</div>
|
||||||
|
<button class="btn" id="btnSearchShopManage">查询</button>
|
||||||
|
</div>
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -1456,20 +1469,32 @@
|
|||||||
var shopManageGroups = [];
|
var shopManageGroups = [];
|
||||||
|
|
||||||
function buildShopManageQuery(page) {
|
function buildShopManageQuery(page) {
|
||||||
return 'page=' + (page || 1) + '&page_size=' + shopManagePageSize;
|
var query = 'page=' + (page || 1) + '&page_size=' + shopManagePageSize;
|
||||||
|
var groupId = (document.getElementById('shopManageFilterGroupId').value || '').trim();
|
||||||
|
var shopName = (document.getElementById('shopManageFilterShopName').value || '').trim();
|
||||||
|
if (groupId) query += '&group_id=' + encodeURIComponent(groupId);
|
||||||
|
if (shopName) query += '&shop_name=' + encodeURIComponent(shopName);
|
||||||
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
function refreshShopGroupSelects(selectedCreateId, selectedEditId) {
|
function refreshShopGroupSelects(selectedCreateId, selectedEditId) {
|
||||||
var createSel = document.getElementById('shopManageGroupSelect');
|
var createSel = document.getElementById('shopManageGroupSelect');
|
||||||
var editSel = document.getElementById('editShopManageGroupSelect');
|
var editSel = document.getElementById('editShopManageGroupSelect');
|
||||||
var opts = ['<option value="">请选择分组</option>'];
|
var filterSel = document.getElementById('shopManageFilterGroupId');
|
||||||
|
var selectedFilterId = filterSel ? filterSel.value : '';
|
||||||
|
var createOpts = ['<option value="">请选择分组</option>'];
|
||||||
|
var filterOpts = ['<option value="">全部分组</option>'];
|
||||||
shopManageGroups.forEach(function(g) {
|
shopManageGroups.forEach(function(g) {
|
||||||
opts.push('<option value="' + g.id + '">' + (g.group_name || '') + '</option>');
|
var option = '<option value="' + g.id + '">' + (g.group_name || '') + '</option>';
|
||||||
|
createOpts.push(option);
|
||||||
|
filterOpts.push(option);
|
||||||
});
|
});
|
||||||
createSel.innerHTML = opts.join('');
|
createSel.innerHTML = createOpts.join('');
|
||||||
editSel.innerHTML = opts.join('');
|
editSel.innerHTML = createOpts.join('');
|
||||||
|
if (filterSel) filterSel.innerHTML = filterOpts.join('');
|
||||||
if (selectedCreateId != null) createSel.value = String(selectedCreateId);
|
if (selectedCreateId != null) createSel.value = String(selectedCreateId);
|
||||||
if (selectedEditId != null) editSel.value = String(selectedEditId);
|
if (selectedEditId != null) editSel.value = String(selectedEditId);
|
||||||
|
if (filterSel && selectedFilterId) filterSel.value = selectedFilterId;
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadShopManageGroups(selectedCreateId, selectedEditId) {
|
function loadShopManageGroups(selectedCreateId, selectedEditId) {
|
||||||
@@ -1603,6 +1628,15 @@
|
|||||||
|
|
||||||
document.getElementById('btnManageShopGroups').onclick = openShopManageGroupModal;
|
document.getElementById('btnManageShopGroups').onclick = openShopManageGroupModal;
|
||||||
document.getElementById('btnManageShopGroupsFromEdit').onclick = openShopManageGroupModal;
|
document.getElementById('btnManageShopGroupsFromEdit').onclick = openShopManageGroupModal;
|
||||||
|
document.getElementById('btnSearchShopManage').onclick = function() {
|
||||||
|
loadShopManage(1);
|
||||||
|
};
|
||||||
|
document.getElementById('shopManageFilterShopName').addEventListener('keydown', function(e) {
|
||||||
|
if (e.key === 'Enter') {
|
||||||
|
e.preventDefault();
|
||||||
|
loadShopManage(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
document.getElementById('btnCloseShopManageGroupModal').onclick = function() {
|
document.getElementById('btnCloseShopManageGroupModal').onclick = function() {
|
||||||
document.getElementById('shopManageGroupModal').classList.remove('show');
|
document.getElementById('shopManageGroupModal').classList.remove('show');
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user