Expand publishing and virtual product workflows

This commit is contained in:
王鹏
2026-09-30 11:00:01 +08:00
parent 4ed8743934
commit b904dcf52e
54 changed files with 2185 additions and 108 deletions

View File

@@ -0,0 +1,83 @@
package com.ruoyi.web.controller.app;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.app.domain.AppVirtualProduct;
import com.ruoyi.app.service.IAppVirtualProductService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 微信虚拟支付道具管理接口。
*/
@RestController
@RequestMapping("/app/virtualProduct")
public class AppVirtualProductController extends BaseController
{
@Autowired
private IAppVirtualProductService virtualProductService;
@PreAuthorize("@ss.hasPermi('app:virtualProduct:list')")
@GetMapping("/list")
public TableDataInfo list(AppVirtualProduct product)
{
startPage();
List<AppVirtualProduct> list = virtualProductService.selectAppVirtualProductList(product);
return getDataTable(list);
}
@PreAuthorize("@ss.hasPermi('app:virtualProduct:query')")
@GetMapping("/{id}")
public AjaxResult getInfo(@PathVariable Long id)
{
return success(virtualProductService.selectAppVirtualProductById(id));
}
@PreAuthorize("@ss.hasPermi('app:virtualProduct:add')")
@Log(title = "虚拟道具", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody AppVirtualProduct product)
{
return toAjax(virtualProductService.insertAppVirtualProduct(product));
}
@PreAuthorize("@ss.hasPermi('app:virtualProduct:edit')")
@Log(title = "虚拟道具", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody AppVirtualProduct product)
{
return toAjax(virtualProductService.updateAppVirtualProduct(product));
}
@PreAuthorize("@ss.hasPermi('app:virtualProduct:remove')")
@Log(title = "虚拟道具", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(virtualProductService.deleteAppVirtualProductByIds(ids));
}
@PreAuthorize("@ss.hasPermi('app:virtualProduct:export')")
@Log(title = "虚拟道具", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, AppVirtualProduct product)
{
List<AppVirtualProduct> list = virtualProductService.selectAppVirtualProductList(product);
ExcelUtil<AppVirtualProduct> util = new ExcelUtil<>(AppVirtualProduct.class);
util.exportExcel(response, list, "虚拟道具数据");
}
}

View File

@@ -20,7 +20,6 @@ import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.common.utils.file.FileUtils;
@@ -107,10 +106,12 @@ public class CommonController {
&& !extension.equals(".png") && !extension.equals(".webp")) {
return AjaxResult.error("仅支持JPG、PNG和WebP图片");
}
String fname = "admin-images/" + DateUtils.datePath() + "/"
+ UUID.randomUUID().toString().replace("-", "") + extension;
String fname = originalFilename.substring(0, originalFilename.lastIndexOf('.'))
+ "-" + UUID.randomUUID().toString().replace("-", "");
String domain = QiNiuConfig.getInstance().getDomainOfBucket();
if (!domain.startsWith("http://") && !domain.startsWith("https://")) {
if (domain.startsWith("http://")) {
domain = "https://" + domain.substring("http://".length());
} else if (!domain.startsWith("https://")) {
domain = "https://" + domain;
}
String fkey = domain.replaceAll("/$", "") + "/" + fname;