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 list = userSecondaryCardService.selectUserSecondaryCardList(userSecondaryCard); JSONArray jsonArray = new JSONArray(); //JSONArray.parseArray(str); for(UserSecondaryCard t:list){ List 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 list = userSecondaryCardService.selectUserSecondaryCardList(userSecondaryCard); ExcelUtil util = new ExcelUtil(UserSecondaryCard.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 params) { List ids = (List) 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 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 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)); } }