javacodeadmin/ruoyi-system/src/main/java/com/ruoyi/system/controller/UserSecondaryCardController...

392 lines
14 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.ruoyi.system.controller;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson2.JSONArray;
import com.ruoyi.system.ControllerUtil.GenerateCustomCode;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.service.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import java.util.Map;
/**
* 次卡管理Controller
*
* @author ruoyi
* @date 2025-07-02
*/
@RestController
@RequestMapping("/system/UserSecondaryCard")
public class UserSecondaryCardController extends BaseController
{
@Autowired
private IUserSecondaryCardService userSecondaryCardService;
@Autowired
private IServiceGoodsService serviceGoodsService;
@Autowired
private IServiceCateService serviceCateService;
@Autowired
private IUserUseSecondaryCardService userUseSecondaryCardService;
@Autowired
private IUsersService usersService;
/**
* 数字转中文工具方法
*/
private String numberToChinese(Long num) {
if (num == null || num <= 0) {
return "";
}
String[] chineseNumbers = {"", "", "", "", "", "", "", "", "", "", ""};
if (num <= 10) {
return chineseNumbers[num.intValue()];
} else if (num < 20) {
return "" + (num > 10 ? chineseNumbers[Math.toIntExact((num - 10))] : "");
} else if (num < 100) {
long tens = num / 10;
long ones = num % 10;
String result = chineseNumbers[(int)tens] + "";
if (ones > 0) {
result += chineseNumbers[(int)ones];
}
return result;
} else {
// 对于大于100的数字直接返回阿拉伯数字
return num.toString();
}
}
/**
* 生成introduction字段
*/
private String generateIntroduction(Long allnum, Long num) {
if (allnum == null || num == null) {
return "";
}
String allnumChinese = numberToChinese(allnum);
String numChinese = numberToChinese(num);
return allnumChinese + "" + numChinese;
}
/**
* 查询次卡管理列表
*/
@PreAuthorize("@ss.hasPermi('system:UserSecondaryCard:list')")
@GetMapping("/list")
public TableDataInfo list(UserSecondaryCard userSecondaryCard)
{
startPage();
List<UserSecondaryCard> list = userSecondaryCardService.selectUserSecondaryCardList(userSecondaryCard);
JSONArray jsonArray = new JSONArray();
//JSONArray.parseArray(str);
for(UserSecondaryCard t:list){
List<String> idsList = com.alibaba.fastjson2.JSONArray.parseArray(t.getGoodsids(), String.class);
t.setGoodsname(serviceGoodsService.selectTitlesJSONArrayByIds(idsList));
ServiceCate serviceCate = serviceCateService.selectServiceCateById(t.getType());
if(serviceCate!=null){
t.setTypename(serviceCate.getTitle());
}
}
return getDataTable(list);
}
/**
* 导出次卡管理列表
*/
@PreAuthorize("@ss.hasPermi('system:UserSecondaryCard:export')")
@Log(title = "次卡管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, UserSecondaryCard userSecondaryCard)
{
List<UserSecondaryCard> list = userSecondaryCardService.selectUserSecondaryCardList(userSecondaryCard);
// 处理导出数据,确保关联信息正确
for(UserSecondaryCard item : list) {
// 处理服务名称
if (item.getGoodsids() != null && !item.getGoodsids().isEmpty()) {
try {
List<String> idsList = com.alibaba.fastjson2.JSONArray.parseArray(item.getGoodsids(), String.class);
item.setGoodsname(serviceGoodsService.selectTitlesJSONArrayByIds(idsList));
} catch (Exception e) {
item.setGoodsname("数据解析错误");
}
}
// 处理分类名称
if (item.getType() != null) {
ServiceCate serviceCate = serviceCateService.selectServiceCateById(item.getType());
if (serviceCate != null) {
item.setTypename(serviceCate.getTitle());
}
}
// 设置可用/总数显示
if (item.getNum() != null && item.getAllnum() != null) {
item.setServiceCountDisplay(item.getNum() + "/" + item.getAllnum());
} else {
item.setServiceCountDisplay("0/0");
}
// 处理状态显示 - 将数字状态转换为中文状态名称
if (item.getStatus() != null) {
switch (item.getStatus().intValue()) {
case 1:
item.setStatusName("上线");
break;
case 2:
item.setStatusName("下线");
break;
case 3:
item.setStatusName("下架");
break;
default:
item.setStatusName("未知状态");
break;
}
} else {
item.setStatusName("未知状态");
}
}
ExcelUtil<UserSecondaryCard> util = new ExcelUtil<UserSecondaryCard>(UserSecondaryCard.class);
util.exportExcel(response, list, "次卡管理数据");
}
/**
* 导出次卡购买明细
*/
@PreAuthorize("@ss.hasPermi('system:UserSecondaryCard:export')")
@Log(title = "次卡购买明细", businessType = BusinessType.EXPORT)
@PostMapping("/exportPurchaseDetails")
public void exportPurchaseDetails(HttpServletResponse response, Long cardId)
{
if (cardId == null) {
throw new RuntimeException("次卡ID不能为空");
}
List<UserUseSecondaryCard> list = userUseSecondaryCardService.selectPurchaseDetailsByCardId(cardId.toString());
// 处理数据,设置状态名称和用户名称
for (UserUseSecondaryCard item : list) {
// 设置状态名称
if (item.getStatus() != null) {
switch (item.getStatus().intValue()) {
case 1:
item.setStatusName("可用");
break;
case 2:
item.setStatusName("已用完");
break;
case 3:
item.setStatusName("已退款");
break;
case 4:
item.setStatusName("未支付");
break;
default:
item.setStatusName("未知状态");
break;
}
} else {
item.setStatusName("未知状态");
}
// 设置用户名称
if (item.getUid() != null) {
Users users = usersService.selectUsersById(item.getUid());
if (users != null) {
item.setUserName(users.getName());
} else {
item.setUserName("未知用户");
}
} else {
item.setUserName("未知用户");
}
}
ExcelUtil<UserUseSecondaryCard> util = new ExcelUtil<UserUseSecondaryCard>(UserUseSecondaryCard.class);
util.exportExcel(response, list, "次卡购买明细");
}
/**
* 获取次卡管理详细信息
*/
@PreAuthorize("@ss.hasPermi('system:UserSecondaryCard:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(userSecondaryCardService.selectUserSecondaryCardById(id));
}
/**
* 新增次卡管理
*/
@PreAuthorize("@ss.hasPermi('system:UserSecondaryCard:add')")
@Log(title = "次卡管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody UserSecondaryCard userSecondaryCard)
{
// 数据验证
if (userSecondaryCard.getAllnum() == null || userSecondaryCard.getAllnum() <= 0) {
return error("总服务数必须大于0");
}
if (userSecondaryCard.getNum() == null || userSecondaryCard.getNum() <= 0) {
return error("可提供服务数必须大于0");
}
if (userSecondaryCard.getNum() > userSecondaryCard.getAllnum()) {
return error("可提供服务数不能大于总服务数");
}
if (userSecondaryCard.getShowMoney() != null && userSecondaryCard.getRealMoney() != null) {
if (userSecondaryCard.getRealMoney().compareTo(userSecondaryCard.getShowMoney()) > 0) {
return error("实付价格不能大于展示价格");
}
}
userSecondaryCard.setOrderid(GenerateCustomCode.generCreateOrder("CIKA"));
userSecondaryCard.setCreattime(new Date());
// 自动生成introduction字段
String introduction = generateIntroduction(userSecondaryCard.getAllnum(), userSecondaryCard.getNum());
userSecondaryCard.setIntroduction(introduction);
return toAjax(userSecondaryCardService.insertUserSecondaryCard(userSecondaryCard));
}
/**
* 修改次卡管理
*/
@PreAuthorize("@ss.hasPermi('system:UserSecondaryCard:edit')")
@Log(title = "次卡管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody UserSecondaryCard userSecondaryCard)
{
// 数据验证
if (userSecondaryCard.getAllnum() != null && userSecondaryCard.getAllnum() <= 0) {
return error("总服务数必须大于0");
}
if (userSecondaryCard.getNum() != null && userSecondaryCard.getNum() <= 0) {
return error("可提供服务数必须大于0");
}
if (userSecondaryCard.getNum() != null && userSecondaryCard.getAllnum() != null) {
if (userSecondaryCard.getNum() > userSecondaryCard.getAllnum()) {
return error("可提供服务数不能大于总服务数");
}
}
if (userSecondaryCard.getShowMoney() != null && userSecondaryCard.getRealMoney() != null) {
if (userSecondaryCard.getRealMoney().compareTo(userSecondaryCard.getShowMoney()) > 0) {
return error("实付价格不能大于展示价格");
}
}
// 自动生成introduction字段
String introduction = generateIntroduction(userSecondaryCard.getAllnum(), userSecondaryCard.getNum());
userSecondaryCard.setIntroduction(introduction);
return toAjax(userSecondaryCardService.updateUserSecondaryCard(userSecondaryCard));
}
/**
* 删除次卡管理
*/
@PreAuthorize("@ss.hasPermi('system:UserSecondaryCard:remove')")
@Log(title = "次卡管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(userSecondaryCardService.deleteUserSecondaryCardByIds(ids));
}
/**
* 批量更新次卡状态
*/
@PreAuthorize("@ss.hasPermi('system:UserSecondaryCard:edit')")
@Log(title = "批量更新次卡状态", businessType = BusinessType.UPDATE)
@PutMapping("/batchStatus")
public AjaxResult batchUpdateStatus(@RequestBody Map<String, Object> params)
{
List<Long> ids = (List<Long>) params.get("ids");
Integer status = (Integer) params.get("status");
if (ids == null || ids.isEmpty()) {
return error("请选择要更新的次卡");
}
if (status == null || status < 1 || status > 3) {
return error("状态值无效");
}
int result = 0;
for (Long id : ids) {
UserSecondaryCard card = new UserSecondaryCard();
card.setId(id);
card.setStatus(status.longValue());
result += userSecondaryCardService.updateUserSecondaryCard(card);
}
return toAjax(result);
}
/**
* 批量删除次卡
*/
@PreAuthorize("@ss.hasPermi('system:UserSecondaryCard:remove')")
@Log(title = "批量删除次卡", businessType = BusinessType.DELETE)
@DeleteMapping("/batchDelete")
public AjaxResult batchDelete(@RequestBody List<Long> ids)
{
if (ids == null || ids.isEmpty()) {
return error("请选择要删除的次卡");
}
return toAjax(userSecondaryCardService.deleteUserSecondaryCardByIds(ids.toArray(new Long[0])));
}
/**
* 查询次卡购买详情
*/
@PreAuthorize("@ss.hasPermi('system:UserSecondaryCard:query')")
@GetMapping("/purchaseDetails/{id}")
public AjaxResult getPurchaseDetails(@PathVariable("id") String id)
{
List<UserUseSecondaryCard> list = userUseSecondaryCardService.selectPurchaseDetailsByCardId(id);
for (UserUseSecondaryCard userUseSecondaryCard : list){
Users users = usersService.selectUsersById(userUseSecondaryCard.getUid());
if (users != null) {
userUseSecondaryCard.setRemark(users.getName());
}
}
return success(list);
//return success(userUseSecondaryCardService.selectPurchaseDetailsByCardId(id));
}
}