287 lines
10 KiB
Java
287 lines
10 KiB
Java
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);
|
||
ExcelUtil<UserSecondaryCard> util = new ExcelUtil<UserSecondaryCard>(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<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));
|
||
}
|
||
}
|