|
|
package com.example.demo.controller.coin;
import com.example.demo.Util.BusinessException; import com.example.demo.Util.JWTUtil; import com.example.demo.Util.RedisLockUtil; import com.example.demo.domain.DTO.GoldDetailDTO; import com.example.demo.domain.DTO.GoldUserDTO; import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.User; import com.example.demo.domain.vo.coin.GoldDetail; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.coin.GoldDetailService; import com.example.demo.service.coin.MarketService; import com.example.demo.serviceImpl.coin.AiEmotionServiceImpl; import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.Arrays; import java.util.List; import java.util.UUID;
/** * @program: GOLD * @ClassName GoldDetailController * @description: * @author: huangqizhen * @create: 2025−06-23 14:41 * @Version 1.0 **/
@RestController @RequestMapping("/goldDetail") @RequiredArgsConstructor @Slf4j @CrossOrigin public class GoldDetailController { @Autowired private GoldDetailService goldDetailService;
@Autowired private RedisLockUtil redisLockUtil; @Autowired private AiEmotionServiceImpl aiEmotionServiceImpl; @Autowired MarketService marketService;
@PostMapping("/getGoldDetail") public Result getGoldDetail(@RequestBody Page page) throws Exception {
if(ObjectUtils.isEmpty(page.getPageNum())){ return Result.error("页码数为空!"); } if(ObjectUtils.isEmpty(page.getPageSize())){ return Result.error("页大小为空!"); } else{ if(page.getGoldDetail().getMarkets()==null||page.getGoldDetail().getMarkets().isEmpty()){ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));; if(!markets.contains("总部")&&!markets.contains("研发部")) {
page.getGoldDetail().setMarkets(marketService.getMarketIds(markets)); } } return Result.success(goldDetailService.getGoldDetail(page.getPageNum(), page.getPageSize(), page.getGoldDetail())); } } @PostMapping("/getTotal") public Result getTotal(@RequestBody Page page) throws Exception { Integer pageNum = page.getPageNum(); Integer pageSize = page.getPageSize(); GoldDetail goldDetail = page.getGoldDetail(); if(page.getGoldDetail().getMarkets()==null||page.getGoldDetail().getMarkets().isEmpty()){ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); if(!markets.contains("总部")&&!markets.contains("研发部")) {
page.getGoldDetail().setMarkets(marketService.getMarketIds(markets)); } } return Result.success(goldDetailService.sumGold(pageNum,pageSize,goldDetail)); } @PostMapping("/goldTotal") public Result GoldTotal(@RequestBody User user) throws Exception { if(user.getMarkets()==null||user.getMarkets().isEmpty()) { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")&&!markets.contains("研发部")) {
user.setMarkets(marketService.getMarketIds(markets)); } } return Result.success(goldDetailService.GoldTotal(user)); } @PostMapping("/getGold") public Result getGold(@RequestBody Page page) throws Exception { // System.out.println( page);
if(ObjectUtils.isEmpty(page.getPageNum())){ return Result.error("页码数为空!"); } if(ObjectUtils.isEmpty(page.getPageSize())){ return Result.error("页大小为空!"); } if(page.getUser().getMarkets()==null||page.getUser().getMarkets().isEmpty()) { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")&&!markets.contains("研发部")) {
page.getUser().setMarkets(marketService.getMarketIds(markets)); } } return Result.success(goldDetailService.getGold(page.getPageNum(), page.getPageSize(), page.getUser())); } @PostMapping("/export") public Result export(@Valid @RequestBody GoldDetailDTO dto) { String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key(可按用户/业务区分)
String requestId = UUID.randomUUID().toString(); // 请求 ID(防止误删锁)
long expireTime = 5000; // 锁过期时间(5秒)s
try { // 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { throw new BusinessException("操作太频繁,请稍后重试"); } // 执行业务逻辑
return goldDetailService.addExportRecord(dto); } finally { // 释放锁
redisLockUtil.unlock(lockKey, requestId); } } @PostMapping("/exportGold") public Result export(@Valid @RequestBody GoldUserDTO dto) { String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key(可按用户/业务区分)
String requestId = UUID.randomUUID().toString(); // 请求 ID(防止误删锁)
long expireTime = 5000; // 锁过期时间(5秒)s
try { // 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { throw new BusinessException("操作太频繁,请稍后重试"); } // 执行业务逻辑
return goldDetailService.addExportRecordGold(dto); } finally { // 释放锁
redisLockUtil.unlock(lockKey, requestId); } } @PostMapping("/exportqqq") public Result ExcelGoldDetail(@RequestBody Page page) throws Exception {
if(ObjectUtils.isEmpty(page.getPageNum())){ return Result.error("页码数为空!"); } if(ObjectUtils.isEmpty(page.getPageSize())){ return Result.error("页大小为空!"); } else{
return Result.success(goldDetailService.getGoldDetail(page.getPageNum(), page.getPageSize(), page.getGoldDetail())); } }
public Result ExcelGold(@RequestBody Page page) throws Exception { // System.out.println( page);
if(ObjectUtils.isEmpty(page.getPageNum())){ return Result.error("页码数为空!"); } if(ObjectUtils.isEmpty(page.getPageSize())){ return Result.error("页大小为空!"); }
return Result.success(goldDetailService.getGold(page.getPageNum(), page.getPageSize(), page.getUser())); } }
|