diff --git a/pom.xml b/pom.xml index 0948cd6..66e00de 100644 --- a/pom.xml +++ b/pom.xml @@ -120,23 +120,6 @@ dynamic-datasource-spring-boot-starter 3.5.2 - - - - - - - - - - - - - - - - - io.jsonwebtoken jjwt @@ -177,7 +160,43 @@ + + + + + dev + + + dev + + + + true + + + + + test + + test + + + + + prod + + pro + + + + ${project.name} + + + src/main/resources + true + + org.apache.maven.plugins diff --git a/src/main/java/com/example/demo/Export/ExportService.java b/src/main/java/com/example/demo/Export/ExportService.java index 6e77ea5..f0b2475 100644 --- a/src/main/java/com/example/demo/Export/ExportService.java +++ b/src/main/java/com/example/demo/Export/ExportService.java @@ -24,4 +24,8 @@ public interface ExportService { Result addExportFan(FanDTO dto); //金豆文章导出 Result addExportArticle(ArticleDTO dto); + + Result addExportBean(BeanRechargeDTO dto); + + Result addExportOnline(OnlineDTO dto); } diff --git a/src/main/java/com/example/demo/Export/ExportServiceImpl.java b/src/main/java/com/example/demo/Export/ExportServiceImpl.java index 5af6232..44717c9 100644 --- a/src/main/java/com/example/demo/Export/ExportServiceImpl.java +++ b/src/main/java/com/example/demo/Export/ExportServiceImpl.java @@ -109,6 +109,16 @@ public class ExportServiceImpl implements ExportService { fanDTO.setUrl(""); fanDTO.setFileName(generateFileName("铁粉明细", adminName)); fanDTO.setDataNum(0); + } else if (dto instanceof BeanRechargeDTO beanRechargeDTO){ + beanRechargeDTO.setAccount(Integer.valueOf(account)); + beanRechargeDTO.setUrl(""); + beanRechargeDTO.setFileName(generateFileName("金豆充值明细", adminName)); + beanRechargeDTO.setDataNum(0); + } else if(dto instanceof OnlineDTO onlineDTO){ + onlineDTO.setAccount(Integer.valueOf(account)); + onlineDTO.setUrl(""); + onlineDTO.setFileName(generateFileName("在线明细", adminName)); + onlineDTO.setDataNum(0); } } @@ -176,6 +186,26 @@ public class ExportServiceImpl implements ExportService { articleDTO.getFileName(), articleDTO.getDataNum() ); + } else if (dto instanceof BeanRechargeDTO beanRechargeDTO){ + goldDetailMapper.insertExportRecord( + idHolder, + account, + beanRechargeDTO.getType(), + beanRechargeDTO.getState(), + beanRechargeDTO.getUrl(), + beanRechargeDTO.getFileName(), + beanRechargeDTO.getDataNum() + ); + } else if (dto instanceof OnlineDTO onlineDTO){ + goldDetailMapper.insertExportRecord( + idHolder, + account, + onlineDTO.getType(), + onlineDTO.getState(), + onlineDTO.getUrl(), + onlineDTO.getFileName(), + onlineDTO.getDataNum() + ); } } @@ -200,6 +230,10 @@ public class ExportServiceImpl implements ExportService { requestData.put(requestDataKey, fanDTO.getBeanConsumeFan()); } else if (dto instanceof ArticleDTO articleDTO) { requestData.put(requestDataKey, articleDTO.getBeanConsumeArticle()); + } else if (dto instanceof BeanRechargeDTO beanRechargeDTO){ + requestData.put(requestDataKey, beanRechargeDTO.getBeanRechargeInfo()); + } else if (dto instanceof OnlineDTO onlineDTO){ + requestData.put(requestDataKey, onlineDTO.getBeanRechargeInfo()); } exportData.put("requestData", requestData); @@ -245,4 +279,14 @@ public class ExportServiceImpl implements ExportService { public Result addExportArticle(ArticleDTO dto) { return addExport(dto, "文章明细", "article:queue:export_queue", "beanConsumeArticle"); } + + @Override + public Result addExportBean(BeanRechargeDTO dto) { + return addExport(dto, "金豆明细", "bean:queue:export_queue", "beanRechargeInfo"); + } + + @Override + public Result addExportOnline(OnlineDTO dto) { + return addExport(dto, "在线明细", "online:queue:export_queue", "beanRechargeInfo"); + } } \ No newline at end of file diff --git a/src/main/java/com/example/demo/Util/BaseDES2.java b/src/main/java/com/example/demo/Util/BaseDES2.java index c877377..2020806 100644 --- a/src/main/java/com/example/demo/Util/BaseDES2.java +++ b/src/main/java/com/example/demo/Util/BaseDES2.java @@ -91,7 +91,7 @@ public class BaseDES2 { public static void main(String args[]) { try { BaseDES2 d = new BaseDES2(); - String encryptedText = d.encrypt("30003761"); + String encryptedText = d.encrypt("90035176"); System.out.println("加密结果:" + encryptedText); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/com/example/demo/config/AppConfig.java b/src/main/java/com/example/demo/config/AppConfig.java index c40f7fd..a50aa5b 100644 --- a/src/main/java/com/example/demo/config/AppConfig.java +++ b/src/main/java/com/example/demo/config/AppConfig.java @@ -2,6 +2,7 @@ package com.example.demo.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.client.RestTemplate; @Configuration @@ -9,6 +10,8 @@ public class AppConfig { @Bean public RestTemplate restTemplate() { - return new RestTemplate(); + RestTemplate restTemplate = new RestTemplate(); + restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); + return restTemplate; } } diff --git a/src/main/java/com/example/demo/config/Mysql4DataSourceConfig.java b/src/main/java/com/example/demo/config/Mysql4DataSourceConfig.java index 9ba65a8..32bf6b8 100644 --- a/src/main/java/com/example/demo/config/Mysql4DataSourceConfig.java +++ b/src/main/java/com/example/demo/config/Mysql4DataSourceConfig.java @@ -36,7 +36,7 @@ public class Mysql4DataSourceConfig { @Qualifier("globalConfiguration4") org.apache.ibatis.session.Configuration globalConfiguration4) throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); - sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:payMapper/*.xml")); + sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:paymapper/*.xml")); sessionFactory.setConfiguration(globalConfiguration4); return sessionFactory.getObject(); } diff --git a/src/main/java/com/example/demo/controller/bean/BeanConsumeController.java b/src/main/java/com/example/demo/controller/bean/BeanConsumeController.java index 1711016..5234ccb 100644 --- a/src/main/java/com/example/demo/controller/bean/BeanConsumeController.java +++ b/src/main/java/com/example/demo/controller/bean/BeanConsumeController.java @@ -1,6 +1,8 @@ package com.example.demo.controller.bean; +import com.example.demo.domain.vo.bean.BeanConsume; import com.example.demo.domain.vo.bean.BeanConsumeGold; +import com.example.demo.domain.vo.bean.BeanRecharge; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.bean.BeanConsumeService; @@ -45,6 +47,16 @@ public class BeanConsumeController { return Result.success(deptList); } + + //减少金豆 + @PostMapping("/reduce") + public Result reduce(@RequestBody BeanConsume consume) { + try { + return beanConsumeService.reduce(consume); + } catch (Exception e) { + return Result.error("减少失败"); + } + } //筛选查询直播消费记录 @PostMapping("/selectLiveBy") public Result selectLiveBy(@RequestBody Page page){ diff --git a/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java b/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java index 47194af..c254645 100644 --- a/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java +++ b/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java @@ -1,7 +1,8 @@ package com.example.demo.controller.bean; +import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; import com.example.demo.domain.vo.bean.BeanRecharge; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; +import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; import com.example.demo.domain.vo.bean.GoldBean; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; @@ -53,7 +54,7 @@ public class BeanRechargeController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { - return Result.success(beanRechargeService.selectBySystem(page.getPageNum(), page.getPageSize(), page.getBeanRechargeInfo())); + return Result.success(beanRechargeService.selectBySystem(page.getPageNum(), page.getPageSize(), page.getBeanSystemRechargeInfo())); } } catch (Exception e) { e.printStackTrace(); @@ -64,9 +65,9 @@ public class BeanRechargeController { //系统金豆统计 @PostMapping("/statsSystemBean") - public Result statsSystemBean(@RequestBody BeanRechargeInfo beanRechargeInfo) { + public Result statsSystemBean(@RequestBody BeanSystemRechargeInfo beanSystemRechargeInfo) { try { - GoldBean goldBean = beanRechargeService.statsSystemBean(beanRechargeInfo); + GoldBean goldBean = beanRechargeService.statsSystemBean(beanSystemRechargeInfo); return Result.success(goldBean); } catch (Exception e) { return Result.error("请检查数据的格式"); @@ -90,7 +91,7 @@ public class BeanRechargeController { if (ObjectUtils.isEmpty(page.getPageSize())) { return Result.error("页大小为空!"); } else { - return Result.success(beanRechargeService.selectByOnline(page.getPageNum(), page.getPageSize(), page.getBeanRechargeInfo())); + return Result.success(beanRechargeService.selectByOnline(page.getPageNum(), page.getPageSize(), page.getBeanOnlineRechargeInfo())); } } catch (Exception e) { e.printStackTrace(); @@ -101,9 +102,9 @@ public class BeanRechargeController { //线上金豆统计 @PostMapping("/statsOnlineBean") - public Result statsOnlineBean(@RequestBody BeanRechargeInfo beanRechargeInfo) { + public Result statsOnlineBean(@RequestBody BeanOnlineRechargeInfo beanOnlineRechargeInfo) { try { - GoldBean goldBean = beanRechargeService.statsOnlineBean(beanRechargeInfo); + GoldBean goldBean = beanRechargeService.statsOnlineBean(beanOnlineRechargeInfo); return Result.success(goldBean); } catch (Exception e) { return Result.error("请检查数据的格式"); diff --git a/src/main/java/com/example/demo/controller/coin/ExportController.java b/src/main/java/com/example/demo/controller/coin/ExportController.java index c3b85bc..a425c2a 100644 --- a/src/main/java/com/example/demo/controller/coin/ExportController.java +++ b/src/main/java/com/example/demo/controller/coin/ExportController.java @@ -149,4 +149,38 @@ public class ExportController { redisLockUtil.unlock(lockKey, requestId); } } + @PostMapping("/exportBean") + public Result export(@Valid @RequestBody BeanRechargeDTO dto){ + String lockKey = "export:lock:" + dto.getToken(); + String requestId = UUID.randomUUID().toString(); + long expireTime = 5000; + try { + // 尝试获取锁 + if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { + throw new BusinessException("操作太频繁,请稍后重试"); + } + // 执行业务逻辑 + return exportService.addExportBean(dto); + } finally { + // 释放锁 + redisLockUtil.unlock(lockKey, requestId); + } + } + @PostMapping("/exportol") + public Result exportol(@Valid @RequestBody OnlineDTO dto) throws Exception { + String lockKey = "export:lock:" + dto.getToken(); + String requestId = UUID.randomUUID().toString(); + long expireTime = 5000; + try { + // 尝试获取锁 + if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) { + throw new BusinessException("操作太频繁,请稍后重试"); + } + // 执行业务逻辑 + return exportService.addExportOnline(dto); + } finally { + // 释放锁 + redisLockUtil.unlock(lockKey, requestId); + } + } } \ No newline at end of file diff --git a/src/main/java/com/example/demo/controller/coin/GoldDetailController.java b/src/main/java/com/example/demo/controller/coin/GoldDetailController.java index f890b29..8c155aa 100644 --- a/src/main/java/com/example/demo/controller/coin/GoldDetailController.java +++ b/src/main/java/com/example/demo/controller/coin/GoldDetailController.java @@ -11,6 +11,7 @@ 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; @@ -42,13 +43,16 @@ import java.util.UUID; @Slf4j @CrossOrigin public class GoldDetailController { - private final GoldDetailService goldDetailService; + @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 { @@ -65,8 +69,9 @@ public class GoldDetailController { String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));; - if(!markets.contains("1")) { - page.getGoldDetail().setMarkets(markets); + if(!markets.contains("总部")&&!markets.contains("研发部")) { + + page.getGoldDetail().setMarkets(marketService.getMarketIds(markets)); } } return Result.success(goldDetailService.getGoldDetail(page.getPageNum(), page.getPageSize(), page.getGoldDetail())); @@ -82,9 +87,10 @@ public class GoldDetailController { String token = request.getHeader("token"); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); - if(!markets.contains("1")) { - page.getGoldDetail().setMarkets(markets); - } + if(!markets.contains("总部")&&!markets.contains("研发部")) { + + page.getGoldDetail().setMarkets(marketService.getMarketIds(markets)); + } } return Result.success(goldDetailService.sumGold(pageNum,pageSize,goldDetail)); } @@ -96,8 +102,9 @@ public class GoldDetailController { Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); - if(!markets.contains("1")) { - user.setMarkets(markets); + if(!markets.contains("总部")&&!markets.contains("研发部")) { + + user.setMarkets(marketService.getMarketIds(markets)); } } return Result.success(goldDetailService.GoldTotal(user)); @@ -117,8 +124,9 @@ public class GoldDetailController { Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); - if(!markets.contains("1")) { - page.getUser().setMarkets(markets); + if(!markets.contains("总部")&&!markets.contains("研发部")) { + + page.getUser().setMarkets(marketService.getMarketIds(markets)); } } return Result.success(goldDetailService.getGold(page.getPageNum(), page.getPageSize(), page.getUser())); diff --git a/src/main/java/com/example/demo/controller/coin/WorkbenchController.java b/src/main/java/com/example/demo/controller/coin/WorkbenchController.java index 7e5d3da..2f6e514 100644 --- a/src/main/java/com/example/demo/controller/coin/WorkbenchController.java +++ b/src/main/java/com/example/demo/controller/coin/WorkbenchController.java @@ -57,7 +57,7 @@ public class WorkbenchController { List markets = workbenchService.getAdminMarket(account); WorkbenchCard result; //判断是否是总部 - if (markets != null && markets.contains("1")) { + if (markets != null && markets.contains("总部")||markets.contains("研发部")) { result = workbenchService.getCardCache(markets);//走缓存,拿全部市场的缓存数据 } else { result = workbenchService.getCard(markets);//不走缓存,计算卡片属性 @@ -71,7 +71,7 @@ public class WorkbenchController { @PostMapping("getGraph") public ResponseEntity graph1(@RequestBody WorkbenchCard workbench, @AuthenticationPrincipal Admin admin) { String account = admin.getAccount(); - List markets = generalService.getAdminMarket(account); + List markets = workbenchService.getAdminMarket(account); workbench.setMarkets(markets); diff --git a/src/main/java/com/example/demo/domain/DTO/ArticleDTO.java b/src/main/java/com/example/demo/domain/DTO/ArticleDTO.java index c5853e0..c9dc8da 100644 --- a/src/main/java/com/example/demo/domain/DTO/ArticleDTO.java +++ b/src/main/java/com/example/demo/domain/DTO/ArticleDTO.java @@ -23,7 +23,7 @@ public class ArticleDTO { private Integer sort = 0; private String field = ""; private Integer account; - private Integer type = 7; //类型 + private Integer type = 8; //类型 private Integer state = 0; //状态 private String text = ""; //关键词搜索 private Integer dataNum = 0; diff --git a/src/main/java/com/example/demo/domain/DTO/BeanRechargeDTO.java b/src/main/java/com/example/demo/domain/DTO/BeanRechargeDTO.java new file mode 100644 index 0000000..99a0ae7 --- /dev/null +++ b/src/main/java/com/example/demo/domain/DTO/BeanRechargeDTO.java @@ -0,0 +1,37 @@ +package com.example.demo.domain.DTO; + +import com.example.demo.domain.vo.bean.BeanConsumeArticle; +import com.example.demo.domain.vo.bean.BeanRechargeInfo; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @program: GOLD + * @ClassName BeanRechargeDTO + * @description: + * @author: huangqizhen + * @create: 2025−08-03 09:26 + * @Version 1.0 + **/ +@Data +@NoArgsConstructor +public class BeanRechargeDTO { + private String token; + private String url = ""; + private String fileName = ""; + private Integer sort = 0; + private String field = ""; + private Integer account; + private Integer type = 9; //类型 + private Integer state = 0; //状态 + private String text = ""; //关键词搜索 + private Integer dataNum = 0; + private String deptid = ""; + + @NotNull(message = "page不能为空") + private Integer page = 1; + @NotNull(message = "pageSize不能为空") + private Integer pageSize = 20; + private BeanRechargeInfo beanRechargeInfo; +} diff --git a/src/main/java/com/example/demo/domain/DTO/OnlineDTO.java b/src/main/java/com/example/demo/domain/DTO/OnlineDTO.java new file mode 100644 index 0000000..3247e86 --- /dev/null +++ b/src/main/java/com/example/demo/domain/DTO/OnlineDTO.java @@ -0,0 +1,36 @@ +package com.example.demo.domain.DTO; + +import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @program: GOLD + * @ClassName OnlineDTO + * @description: + * @author: huangqizhen + * @create: 2025−08-03 11:51 + * @Version 1.0 + **/ +@Data +@NoArgsConstructor +public class OnlineDTO { + private String token; + private String url = ""; + private String fileName = ""; + private Integer sort = 0; + private String field = ""; + private Integer account; + private Integer type = 10; //类型 + private Integer state = 0; //状态 + private String text = ""; //关键词搜索 + private Integer dataNum = 0; + private String deptid = ""; + + @NotNull(message = "page不能为空") + private Integer page = 1; + @NotNull(message = "pageSize不能为空") + private Integer pageSize = 20; + private BeanOnlineRechargeInfo beanRechargeInfo; +} diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanConsume.java b/src/main/java/com/example/demo/domain/vo/bean/BeanConsume.java new file mode 100644 index 0000000..2ae8f76 --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanConsume.java @@ -0,0 +1,26 @@ +package com.example.demo.domain.vo.bean; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @program: gold-java + * @ClassName BeanConsume + * @description: + * @author: Ethan + * @create: 2025−08-02 11:32 + * @Version 1.0 + **/ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class BeanConsume { + private Integer id;//id + private String jwcode; // 精网号 + private Integer freeBean; // 免费豆 + private Integer permanentBean; // 永久豆 + private String remark; //备注 + private Integer money; // 金额 + private String adminName; // 管理员名称 +} diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanOnlineRechargeInfo.java b/src/main/java/com/example/demo/domain/vo/bean/BeanOnlineRechargeInfo.java new file mode 100644 index 0000000..ff03497 --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanOnlineRechargeInfo.java @@ -0,0 +1,58 @@ +package com.example.demo.domain.vo.bean; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +/** + * @program: gold-java + * @ClassName BeanRecharge + * @description: + * @author: Double + * @create: 2025−07-30 15:11 + * @Version 1.0 + **/ + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class BeanOnlineRechargeInfo { + + + private Long id;//id + @ExcelProperty("精网号") + private Integer jwcode; // 精网号 + @ExcelProperty("客户姓名") + private String name; // 姓名 + @ExcelProperty("所属地区") + private String market; // 所属地区 + @ExcelProperty("金额") + private Double money; // 金额 + @ExcelProperty("数量") + private Integer num; // 数量 + @ExcelProperty("订单号") + private String orderNo; // 订单号 + @ExcelProperty("充值平台 PC:1 手机:2") + private String platform; // 充值平台 + @ExcelProperty("充值时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date rechargeTime; // 充值时间 + @ExcelIgnore + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date startTime; // 开始时间 + @ExcelIgnore + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date endTime; // 结束时间 + @ExcelIgnore + private List markets; // 地区列表 + @ExcelIgnore + private String sortField; //排序字段 + @ExcelIgnore + private String sortOrder; //排序顺序 +} diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java b/src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java index 6dc7101..3dd0e65 100644 --- a/src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java @@ -1,5 +1,6 @@ package com.example.demo.domain.vo.bean; +import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; @@ -41,18 +42,21 @@ public class BeanRechargeInfo { private Integer num; // 数量 @ExcelProperty("订单号") private String orderNo; // 订单号 - @ExcelProperty("备注") - private String remark; //备注 - @ExcelProperty("充值平台") + @ExcelProperty("充值平台 PC:1 手机:2") private String platform; // 充值平台 @ExcelProperty("充值时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date rechargeTime; // 充值时间 + @ExcelIgnore @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date startTime; // 开始时间 + @ExcelIgnore @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date endTime; // 结束时间 + @ExcelIgnore private List markets; // 地区列表 + @ExcelIgnore private String sortField; //排序字段 + @ExcelIgnore private String sortOrder; //排序顺序 } diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanSystemRechargeInfo.java b/src/main/java/com/example/demo/domain/vo/bean/BeanSystemRechargeInfo.java new file mode 100644 index 0000000..c76346d --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanSystemRechargeInfo.java @@ -0,0 +1,58 @@ +package com.example.demo.domain.vo.bean; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +/** + * @program: gold-java + * @ClassName BeanRecharge + * @description: + * @author: Double + * @create: 2025−07-30 15:11 + * @Version 1.0 + **/ + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class BeanSystemRechargeInfo { + + + private Long id;//id + @ExcelProperty("精网号") + private Integer jwcode; // 精网号 + @ExcelProperty("客户姓名") + private String name; // 姓名 + @ExcelProperty("所属地区") + private String market; // 所属地区 + @ExcelProperty("免费金豆") + private Integer freeBean; // 免费豆 + @ExcelProperty("永久金豆") + private Integer permanentBean; // 永久豆 + @ExcelProperty("金额") + private Double money; // 金额 + @ExcelProperty("备注") + private String remark; //备注 + @ExcelProperty("充值时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date rechargeTime; // 充值时间 + @ExcelIgnore + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date startTime; // 开始时间 + @ExcelIgnore + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private Date endTime; // 结束时间 + @ExcelIgnore + private List markets; // 地区列表 + @ExcelIgnore + private String sortField; //排序字段 + @ExcelIgnore + private String sortOrder; //排序顺序 +} diff --git a/src/main/java/com/example/demo/domain/vo/coin/Page.java b/src/main/java/com/example/demo/domain/vo/coin/Page.java index 428ff9a..7f727a1 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/Page.java +++ b/src/main/java/com/example/demo/domain/vo/coin/Page.java @@ -34,7 +34,8 @@ public class Page { private BeanConsumeLive beanConsumeLive; //直播金豆消费 private BeanConsumeFan beanConsumeFan; //铁粉金豆消费 private BeanConsumeArticle beanConsumeArticle; //文章金豆消费 - private BeanRechargeInfo beanRechargeInfo; //金豆充值信息 + private BeanSystemRechargeInfo beanSystemRechargeInfo; //金豆充值信息 + private BeanOnlineRechargeInfo beanOnlineRechargeInfo; //金豆充值信息 private BeanConsumeGold beanConsumeGold; //金豆消费合计数 private BeanUser beanUser; //客户金豆余额明细 private BeanUserCard beanUserCard; //客户金豆卡片 diff --git a/src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java b/src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java index f61556e..8efcef8 100644 --- a/src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java +++ b/src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java @@ -1,7 +1,8 @@ package com.example.demo.mapper.bean; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; + +import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -18,7 +19,7 @@ import java.util.List; @Mapper public interface BeanRechargeMapper2 { - List selectBySystem(BeanRechargeInfo beanRechargeInfo); + List selectBySystem(BeanSystemRechargeInfo beanSystemRechargeInfo); List systemMarket(); } \ No newline at end of file diff --git a/src/main/java/com/example/demo/mapper/bean/BeanUserMapper.java b/src/main/java/com/example/demo/mapper/bean/BeanUserMapper.java index 66694c2..4ea43b2 100644 --- a/src/main/java/com/example/demo/mapper/bean/BeanUserMapper.java +++ b/src/main/java/com/example/demo/mapper/bean/BeanUserMapper.java @@ -23,7 +23,7 @@ public interface BeanUserMapper { List selectUserBy(@Param("beanUser") BeanUser beanUser); //查询用户卡片 - BeanUserCard userCard(@Param("jwcode")String jwcode, @Param("markets")List markets); + BeanUserCard userCard(@Param("jwcode")String jwcode); //查询客户金豆余额合计 BeanUserCard SumUserBy(@Param("beanUser")BeanUser beanUser); //查询客户分部 diff --git a/src/main/java/com/example/demo/mapper/coin/MarketMapper.java b/src/main/java/com/example/demo/mapper/coin/MarketMapper.java index a043938..6377f7a 100644 --- a/src/main/java/com/example/demo/mapper/coin/MarketMapper.java +++ b/src/main/java/com/example/demo/mapper/coin/MarketMapper.java @@ -6,4 +6,7 @@ import java.util.List; public interface MarketMapper { List getMarket(); + + //获取市场id + List getMarketIds(List list); } \ No newline at end of file diff --git a/src/main/java/com/example/demo/mapper/coin/StatisticsMapper.java b/src/main/java/com/example/demo/mapper/coin/StatisticsMapper.java index e8747d5..875f7c4 100644 --- a/src/main/java/com/example/demo/mapper/coin/StatisticsMapper.java +++ b/src/main/java/com/example/demo/mapper/coin/StatisticsMapper.java @@ -24,49 +24,17 @@ public interface StatisticsMapper { //批量查询 List selectByMarketsAndDate(@Param("markets") List markets, @Param("startDate") Date startDate, @Param("endDate") Date endDate); - //根据地区、审核状态、起止时间查询订单表数据 - List findByMarketAndAuditStatus(@Param("market") String market, - @Param("auditStatusList") List auditStatusList, - @Param("startTime") Date startTime, - @Param("endTime") Date endTime); - //获取某地区当前永久金币余量 - Integer sumCurrentPermanentGold(@Param("market") String market); - //获取某地区当前六月免费金币余量 - Integer sumCurrentFreeJune(@Param("market") String market); - //获取某地区当前永久金币余量 - Integer sumCurrentFreeDecember(@Param("market") String market); - //获取某地区当前永久金币余量 - Integer sumCurrentTaskGold(@Param("market") String market); + //计算该天充值人数 Integer countRechargeNum( @Param("market") String market, @Param("startTime") Date startTime, @Param("endTime") Date endTime); - //计算该天首充人数 - Integer countFirstRecharge( - @Param("market") String market, - @Param("startTime") Date startTime, - @Param("endTime") Date endTime); - //新增part1统计数据 - void insertPart1(Statistics statistics); - //更新part1统计数据 - void updatePart1(Statistics statistics); - //新增part2统计数据 - void insertPart2(Statistics statistics); - //更新part2统计数据 - void updatePart2(Statistics statistics); - //新增年度统计数据 - void insertYear(Statistics statistics); - //更新年度统计数据 - void updateYear(Statistics statistics); + //获取某地区某时间所在日期的数据(仅一条) Statistics selectByMarketAndDate(@Param("market") String market, @Param("startDate") Date startDate, @Param("endDate") Date endDate); - //获取某地区某时间段的统计数据(仅一条) - Statistics selectSumByMarketAndDate(@Param("market") String market, - @Param("startDate") Date startDate, - @Param("endDate") Date endDate); // 一次查 所有地区 Part1(余量) List listPart1All(@Param("today") LocalDate today); diff --git a/src/main/java/com/example/demo/mapper/pay/BeanRechargeMapper3.java b/src/main/java/com/example/demo/mapper/pay/BeanRechargeMapper3.java index 8f32789..9038f66 100644 --- a/src/main/java/com/example/demo/mapper/pay/BeanRechargeMapper3.java +++ b/src/main/java/com/example/demo/mapper/pay/BeanRechargeMapper3.java @@ -1,7 +1,7 @@ package com.example.demo.mapper.pay; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; +import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -18,7 +18,7 @@ import java.util.List; @Mapper public interface BeanRechargeMapper3 { - List selectByOnline(BeanRechargeInfo beanRechargeInfo); + List selectByOnline(BeanOnlineRechargeInfo beanOnlineRechargeInfo); - List systemMarket(); + List onlineMarket(); } \ No newline at end of file diff --git a/src/main/java/com/example/demo/service/bean/BeanConsumeService.java b/src/main/java/com/example/demo/service/bean/BeanConsumeService.java index 62f0138..3b4711c 100644 --- a/src/main/java/com/example/demo/service/bean/BeanConsumeService.java +++ b/src/main/java/com/example/demo/service/bean/BeanConsumeService.java @@ -3,6 +3,7 @@ package com.example.demo.service.bean; import com.example.demo.domain.vo.bean.*; import com.example.demo.domain.vo.coin.Gold; import com.example.demo.domain.vo.coin.Page; +import com.example.demo.domain.vo.coin.Result; import java.util.List; @@ -18,6 +19,10 @@ import java.util.List; public interface BeanConsumeService { //获取消费用户的分部 List getDept(); + //获取直播客户地区 + List getLiveDept(); + //减少金豆 + Result reduce(BeanConsume consume); //筛选查询直播消费 Object selectLiveBy(Integer pageNum, Integer pageSize, BeanConsumeLive beanConsumeLive); //筛选查询铁粉消费 @@ -31,6 +36,6 @@ public interface BeanConsumeService { //获取直播频道 List getLiveChannel(); - //获取直播客户地区 - List getLiveDept(); + + } diff --git a/src/main/java/com/example/demo/service/bean/BeanRechargeService.java b/src/main/java/com/example/demo/service/bean/BeanRechargeService.java index fd41a35..66f8ad6 100644 --- a/src/main/java/com/example/demo/service/bean/BeanRechargeService.java +++ b/src/main/java/com/example/demo/service/bean/BeanRechargeService.java @@ -1,7 +1,8 @@ package com.example.demo.service.bean; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; +import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; +import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; import com.example.demo.domain.vo.bean.GoldBean; import com.example.demo.domain.vo.coin.RefundUser; import com.example.demo.domain.vo.coin.Result; @@ -25,16 +26,16 @@ public interface BeanRechargeService { Result add(BeanRecharge recharge); //系统充值 - PageInfo selectBySystem(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo); + PageInfo selectBySystem(Integer pageNum, Integer pageSize, BeanSystemRechargeInfo beanRechargeInfo); //系统金豆统计 - GoldBean statsSystemBean(BeanRechargeInfo beanRechargeInfo); + GoldBean statsSystemBean(BeanSystemRechargeInfo beanRechargeInfo); //线上充值 - PageInfo selectByOnline(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo); + PageInfo selectByOnline(Integer pageNum, Integer pageSize, BeanOnlineRechargeInfo beanRechargeInfo); //线上金豆统计 - GoldBean statsOnlineBean(BeanRechargeInfo beanRechargeInfo); + GoldBean statsOnlineBean(BeanOnlineRechargeInfo beanRechargeInfo); //获取系统充值地区 List systemMarket(); diff --git a/src/main/java/com/example/demo/service/coin/ExportExcelService.java b/src/main/java/com/example/demo/service/coin/ExportExcelService.java index 5957dde..c0d316b 100644 --- a/src/main/java/com/example/demo/service/coin/ExportExcelService.java +++ b/src/main/java/com/example/demo/service/coin/ExportExcelService.java @@ -27,7 +27,11 @@ public interface ExportExcelService { Exception FanExcel(String message) throws Exception; Exception ArticleExcel(String message) throws Exception; List getExcel(Export export); + Exception BeanExcel(String message) throws Exception; @Transactional Exception exportExcelGeneric(String message, String exportType, Function dataFetcher) throws Exception; + + + Exception OnlineExcel(String message) throws Exception; } \ No newline at end of file diff --git a/src/main/java/com/example/demo/service/coin/MarketService.java b/src/main/java/com/example/demo/service/coin/MarketService.java index 54de093..43437ee 100644 --- a/src/main/java/com/example/demo/service/coin/MarketService.java +++ b/src/main/java/com/example/demo/service/coin/MarketService.java @@ -14,4 +14,7 @@ import java.util.List; **/ public interface MarketService { List selectMarket(); + + //获取市场id + List getMarketIds(List list); } diff --git a/src/main/java/com/example/demo/service/listen/BeanListener.java b/src/main/java/com/example/demo/service/listen/BeanListener.java new file mode 100644 index 0000000..d9ae7e6 --- /dev/null +++ b/src/main/java/com/example/demo/service/listen/BeanListener.java @@ -0,0 +1,35 @@ +package com.example.demo.service.listen; + +import com.example.demo.Export.ExportService; +import com.example.demo.Util.RedisUtil; +import com.example.demo.service.coin.ExportExcelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @program: GOLD + * @ClassName BeanListener + * @description: + * @author: huangqizhen + * @create: 2025−08-03 11:14 + * @Version 1.0 + **/ +@Component +public class BeanListener extends BaseMessageListener{ + @Autowired + private ExportExcelService exportExcelService; + protected BeanListener(RedisUtil redisQueueUtil) { + super(redisQueueUtil,"bean:queue:export_queue"); + } + + @Override + protected void handleMessage(String message) { + validateMessage( message); + try { + Thread.sleep(5000); + exportExcelService.BeanExcel(message); + } catch (Exception e) { + handleException(e, message); + } + } +} diff --git a/src/main/java/com/example/demo/service/listen/OnLineListener.java b/src/main/java/com/example/demo/service/listen/OnLineListener.java new file mode 100644 index 0000000..e3f5484 --- /dev/null +++ b/src/main/java/com/example/demo/service/listen/OnLineListener.java @@ -0,0 +1,34 @@ +package com.example.demo.service.listen; + +import com.example.demo.Util.RedisUtil; +import com.example.demo.service.coin.ExportExcelService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @program: GOLD + * @ClassName OnLineListener + * @description: + * @author: huangqizhen + * @create: 2025−08-03 11:58 + * @Version 1.0 + **/ +@Component +public class OnLineListener extends BaseMessageListener { + @Autowired + public ExportExcelService exportExcelService; + protected OnLineListener(RedisUtil redisQueueUtil) { + super(redisQueueUtil, "online:queue:export_queue"); + } + + @Override + protected void handleMessage(String message) { + validateMessage( message); + try { + Thread.sleep(5000); + exportExcelService.OnlineExcel(message); + } catch (Exception e) { + handleException(e, message); + } + } +} diff --git a/src/main/java/com/example/demo/serviceImpl/bean/BeanAuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/bean/BeanAuditServiceImpl.java index 40d84c5..21625a7 100644 --- a/src/main/java/com/example/demo/serviceImpl/bean/BeanAuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/bean/BeanAuditServiceImpl.java @@ -1,5 +1,6 @@ package com.example.demo.serviceImpl.bean; +import com.example.demo.Util.BaseDES2; import com.example.demo.domain.vo.bean.BeanAuditInfo; import com.example.demo.domain.vo.bean.BeanRechargeInfo; import com.example.demo.domain.vo.bean.GoldBean; @@ -11,13 +12,22 @@ import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; + +import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.UUID; /** @@ -41,7 +51,7 @@ public class BeanAuditServiceImpl implements BeanAuditService { // 2. 构建接口URL及参数 - @Value("${file.upload.url}") + @Value("${bean.url}") String apiUrl; //查找审核信息 @@ -57,36 +67,50 @@ public class BeanAuditServiceImpl implements BeanAuditService { public Result updateStatus1(BeanAuditInfo info) { BeanAuditInfo beanAuditInfo = beanAuditMapper.selectById(info.getId()); String jwcode = beanAuditInfo.getJwcode().toString(); - String op = "recharge"; // 操作类型(根据实际业务定义,例如"recharge"表示充值) +// String jwcode = "2e35cadd48a15cc4cd834d35e38faa71"; + try { + BaseDES2 d = new BaseDES2(); + jwcode = d.encrypt(jwcode); + } catch (Exception e) { + return Result.error("加密失败"); + } String content = beanAuditInfo.getRemark(); // 备注作为content参数 String orderNo = UUID.randomUUID().toString().replace("-", ""); // 生成唯一订单号(去除横线) - UriComponentsBuilder urlBuilder1 = UriComponentsBuilder.fromHttpUrl(apiUrl) - .queryParam("jwcode", jwcode) - .queryParam("op", op) - .queryParam("gold", beanAuditInfo.getFreeBean()) - .queryParam("content", content); - - UriComponentsBuilder urlBuilder2 = UriComponentsBuilder.fromHttpUrl(apiUrl) - .queryParam("jwcode", jwcode) - .queryParam("op", op) - .queryParam("gold", beanAuditInfo.getPermanentBean()) - .queryParam("content", content) - .queryParam("order_no", orderNo); - // 3. 发送GET请求 - ResponseEntity response1 = restTemplate.getForEntity(urlBuilder1.toUriString(), String.class); - - // 4. 处理响应结果 - if (!response1.getStatusCode().is2xxSuccessful()) { - return Result.error("免费远程接口调用失败,状态码:" + response1.getStatusCodeValue()); - } - // 3. 发送GET请求 - ResponseEntity response2 = restTemplate.getForEntity(urlBuilder2.toUriString(), String.class); + // 1. 创建请求参数对象(使用Map或自定义实体类) + Map params = new HashMap<>(); + params.put("jwcode", jwcode); + params.put("gold_buy", beanAuditInfo.getPermanentBean().toString()); + params.put("gold_free", beanAuditInfo.getFreeBean().toString()); + params.put("content", content); + params.put("order_no", orderNo); + +// 2. 构建请求头,指定Content-Type为JSON + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); // 关键:设置为JSON格式 - // 4. 处理响应结果 - if (!response2.getStatusCode().is2xxSuccessful()) { - return Result.error("付费远程接口调用失败,状态码:" + response2.getStatusCodeValue()); +// 3. 构建请求实体(参数+头信息) + HttpEntity> requestEntity = new HttpEntity<>(params, headers); + + try { + // 4. 发送POST请求 + ResponseEntity response = restTemplate.postForEntity( + apiUrl, + requestEntity, + String.class + ); + + System.out.println("请求参数:" + params); + System.out.println("响应状态码:" + response.getStatusCodeValue()); + System.out.println("响应内容:" + response.getBody()); + + if (!response.getStatusCode().is2xxSuccessful()) { + return Result.error("远程接口接口调用失败,状态码:" + response.getStatusCodeValue() + ",响应:" + response.getBody()); + } + } catch (RestClientException e) { + e.printStackTrace(); + return Result.error("请求发送失败:" + e.getMessage()); } beanAuditMapper.updateStatus1(info); return Result.success(); diff --git a/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java index 2835cab..15bcf5f 100644 --- a/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java @@ -1,19 +1,21 @@ package com.example.demo.serviceImpl.bean; import com.example.demo.domain.vo.bean.*; -import com.example.demo.domain.vo.coin.Gold; -import com.example.demo.domain.vo.coin.Page; -import com.example.demo.domain.vo.coin.RechargeAudit; -import com.example.demo.domain.vo.coin.RechargeUser; +import com.example.demo.domain.vo.coin.*; import com.example.demo.mapper.bean.BeanConsumeMapper; +import com.example.demo.mapper.coin.UserMapper; import com.example.demo.mapper.live.LiveMapper; import com.example.demo.service.bean.BeanConsumeService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; import java.util.List; +import java.util.UUID; /** * @program: gold-java @@ -29,6 +31,11 @@ public class BeanConsumeServiceImpl implements BeanConsumeService { private BeanConsumeMapper beanConsumeMapper; @Autowired private LiveMapper liveMapper; + @Autowired + private UserMapper userMapper; + @Autowired + private RestTemplate restTemplate; + //获取消费用户分部 @Override @@ -36,6 +43,72 @@ public class BeanConsumeServiceImpl implements BeanConsumeService { List deptList = beanConsumeMapper.getDept(); return deptList; } + //获取直播消费客户分部 + @Override + public List getLiveDept() { + List liveDeptList = liveMapper.getDept(); + return liveDeptList; + } + //减少金豆 + @Override + public Result reduce(BeanConsume consume) { + try { + // 验证精网号是否有效 + if (consume.getJwcode() == null || consume.getJwcode().isEmpty()) { + return Result.error("精网号不能为空"); + } + + // 验证免费豆和永久豆是否为非负数 + if (consume.getFreeBean() < 0 || consume.getPermanentBean() < 0) { + return Result.error("免费豆和永久豆不能为负数"); + } + // 验证免费豆和永久豆是否为非负数 + if (consume.getFreeBean() > 999999 || consume.getPermanentBean() > 999999) { + return Result.error("免费豆和永久豆不能超过999999"); + } + // 验证免费豆和永久豆是否均为0 + if (consume.getFreeBean() == 0 && consume.getPermanentBean() == 0) { + return Result.error("免费豆和永久豆不能同时为0"); + } + // 验证备注是否为空 + if (consume.getRemark() == null || consume.getRemark().toString().isEmpty()) { + return Result.error("备注不能为空"); + } + if(consume.getAdminName() == null || consume.getAdminName().toString().isEmpty()){ + return Result.error("管理员名称不能为空"); + } + GoldUser goldUser = userMapper.selectUser(consume.getJwcode().toString()); + if(goldUser==null){ + return Result.error("用户不存在"); + } + // String jwcode = consume.getJwcode(); + String jwcode = "2e35cadd48a15cc4cd834d35e38faa71"; + String op = "cost"; // 操作类型(根据实际业务定义,例如"recharge"表示充值) + String content = consume.getRemark(); // 备注作为content参数 + String orderNo = UUID.randomUUID().toString().replace("-", ""); // 生成唯一订单号(去除横线) + + // 2. 构建接口URL及参数 + String apiUrl = "http://39.101.133.168:8828/mock/61/hljw/api/user/gold"; + UriComponentsBuilder urlBuilder = UriComponentsBuilder.fromHttpUrl(apiUrl) + .queryParam("jwcode", jwcode) + .queryParam("op", op) + .queryParam("gold", consume.getPermanentBean()) + .queryParam("content", content) + .queryParam("order_no", orderNo); + + // 3. 发送GET请求 + ResponseEntity response = restTemplate.getForEntity(urlBuilder.toUriString(), String.class); + + // 4. 处理响应结果 + if (!response.getStatusCode().is2xxSuccessful()) { + return Result.error("远程接口调用失败,状态码:" + response.getStatusCodeValue()); + } + return Result.success("减少成功"); + } catch (Exception e) { + return Result.error("系统异常:" + e.getMessage()); + } + + } //筛选查询直播消费 @Override public Object selectLiveBy(Integer pageNum, Integer pageSize, BeanConsumeLive beanConsumeLive) { @@ -87,9 +160,5 @@ public class BeanConsumeServiceImpl implements BeanConsumeService { return liveMapper.getLiveChannel(); } - @Override - public List getLiveDept() { - List liveDeptList = liveMapper.getDept(); - return liveDeptList; - } + } diff --git a/src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java index ca630d1..0427fb9 100644 --- a/src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java @@ -1,7 +1,8 @@ package com.example.demo.serviceImpl.bean; +import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; import com.example.demo.domain.vo.bean.BeanRecharge; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; +import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; import com.example.demo.domain.vo.bean.GoldBean; import com.example.demo.domain.vo.coin.Gold; import com.example.demo.domain.vo.coin.GoldUser; @@ -115,17 +116,17 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { //系统充值明细 @Override - public PageInfo selectBySystem(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo){ + public PageInfo selectBySystem(Integer pageNum, Integer pageSize, BeanSystemRechargeInfo beanSystemRechargeInfo){ PageHelper.startPage(pageNum, pageSize); - List beanRechargeInfos = beanRechargeMapper2.selectBySystem(beanRechargeInfo); - return new PageInfo<>(beanRechargeInfos); + List beanSystemRechargeInfos = beanRechargeMapper2.selectBySystem(beanSystemRechargeInfo); + return new PageInfo<>(beanSystemRechargeInfos); } //统计系统金豆记录 @Override - public GoldBean statsSystemBean(BeanRechargeInfo beanRechargeInfo) { + public GoldBean statsSystemBean(BeanSystemRechargeInfo beanSystemRechargeInfo) { GoldBean gold = new GoldBean(); - List beanRechargeInfos = beanRechargeMapper2.selectBySystem(beanRechargeInfo); + List beanSystemRechargeInfos = beanRechargeMapper2.selectBySystem(beanSystemRechargeInfo); // 初始化累加器 int permanentGoldSum = 0; @@ -133,7 +134,7 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { Double moneySum = 0.0; // 遍历充值记录并累加金币 - for (BeanRechargeInfo info : beanRechargeInfos) { + for (BeanSystemRechargeInfo info : beanSystemRechargeInfos) { // 累加永久金币 if (info.getPermanentBean() != null) { permanentGoldSum += info.getPermanentBean(); @@ -169,24 +170,24 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { //线上充值明细 @Override - public PageInfo selectByOnline(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo){ + public PageInfo selectByOnline(Integer pageNum, Integer pageSize, BeanOnlineRechargeInfo beanOnlineRechargeInfo){ PageHelper.startPage(pageNum, pageSize); - List beanRechargeInfos = beanRechargeMapper3.selectByOnline(beanRechargeInfo); - return new PageInfo<>(beanRechargeInfos); + List beanOnlineRechargeInfos = beanRechargeMapper3.selectByOnline(beanOnlineRechargeInfo); + return new PageInfo<>(beanOnlineRechargeInfos); } //统计线上金豆记录 @Override - public GoldBean statsOnlineBean(BeanRechargeInfo beanRechargeInfo) { + public GoldBean statsOnlineBean(BeanOnlineRechargeInfo beanOnlineRechargeInfo) { GoldBean gold = new GoldBean(); - List beanRechargeInfos = beanRechargeMapper3.selectByOnline(beanRechargeInfo); + List beanOnlineRechargeInfos = beanRechargeMapper3.selectByOnline(beanOnlineRechargeInfo); // 初始化累加器 int countSum = 0; Double moneySum = 0.0; // 遍历充值记录并累加金币 - for (BeanRechargeInfo info : beanRechargeInfos) { + for (BeanOnlineRechargeInfo info : beanOnlineRechargeInfos) { // 累加数量 if (info.getNum() != null) { countSum += info.getNum(); @@ -207,7 +208,7 @@ public class BeanRechargeServiceImpl implements BeanRechargeService { @Override public List onlineMarket() { - List list = beanRechargeMapper3.systemMarket(); + List list = beanRechargeMapper3.onlineMarket(); // 使用 Java 8 的 Stream API 过滤 null 和空字符串 List filteredList = list.stream() .filter(Objects::nonNull) // 过滤掉 null 值 diff --git a/src/main/java/com/example/demo/serviceImpl/bean/BeanUserServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/bean/BeanUserServiceImpl.java index 415963a..2efb15e 100644 --- a/src/main/java/com/example/demo/serviceImpl/bean/BeanUserServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/bean/BeanUserServiceImpl.java @@ -40,17 +40,9 @@ public class BeanUserServiceImpl implements BeanUserService { public Result userCard(String jwcode) { //解token权限 try { - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - String token = request.getHeader("token"); - Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); - if (admin != null) { - List list = Arrays.asList(admin.getMarkets().split(",")); - BeanUserCard user = beanUserMapper.userCard(jwcode,list); - return Result.success(user); - } - else{ - return Result.error("登录用户为空"); - } + BeanUserCard user = beanUserMapper.userCard(jwcode); + return Result.success(user); + } catch (Exception e) { e.printStackTrace(); return Result.error("用户查找不到"); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java index 7a8b769..f9a377a 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -8,6 +8,7 @@ import com.example.demo.domain.vo.coin.GoldUser; import com.example.demo.domain.vo.coin.RechargeAudit; import com.example.demo.domain.vo.coin.RefundAudit; import com.example.demo.mapper.coin.AuditMapper; +import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.UserMapper; import com.example.demo.service.coin.AdminService; import com.example.demo.service.coin.AuditService; @@ -40,6 +41,8 @@ public class AuditServiceImpl implements AuditService { private AdminService adminService; @Autowired private GeneralService generalService; + @Autowired + private MarketMapper marketMapper; /* 审核订单并修改用户余额等 */ @@ -138,6 +141,8 @@ public class AuditServiceImpl implements AuditService { @Override public PageInfo selectRechargeBy(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit) { + List markets = marketMapper.getMarketIds(rechargeAudit.getMarkets()); + rechargeAudit.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List rechargeAudits = auditMapper.selectRechargeBy(pageNum, pageSize, rechargeAudit); // rechargeAudit.setFreeGold(rechargeAudit.getFreeJune()+rechargeAudit.getFreeDecember()); @@ -150,7 +155,8 @@ public class AuditServiceImpl implements AuditService { public PageInfo selectRefundBy(Integer pageNum, Integer pageSize, RefundAudit refundAudit) { - + List markets = marketMapper.getMarketIds(refundAudit.getMarkets()); + refundAudit.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List refundAudits = auditMapper.selectRefundBy(pageNum, pageSize, refundAudit); @@ -165,6 +171,9 @@ public class AuditServiceImpl implements AuditService { Gold gold = new Gold(); //获取充值审核订单列表 + + List markets = marketMapper.getMarketIds(rechargeAudit.getMarkets()); + rechargeAudit.setMarkets(markets); List rechargeAudits = auditMapper.selectRechargeBy(1, 500000, rechargeAudit); // 初始化累加器 int totalNum=0; @@ -198,6 +207,9 @@ public class AuditServiceImpl implements AuditService { public Gold sumRefundGold(Integer pageNum, Integer pageSize, RefundAudit refundAudit) { Gold gold = new Gold(); //获取充值审核订单列表 + + List markets = marketMapper.getMarketIds(refundAudit.getMarkets()); + refundAudit.setMarkets(markets); List refundAudits = auditMapper.selectRefundBy(1, 500000, refundAudit); // 初始化累加器 int totalNum=0; diff --git a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java index 3babb05..48b1e51 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -8,8 +8,10 @@ import com.example.demo.domain.vo.coin.Gold; import com.example.demo.domain.vo.coin.GoldUser; import com.example.demo.domain.vo.coin.Result; import com.example.demo.mapper.coin.ConsumeMapper; +import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.UserMapper; import com.example.demo.service.coin.ConsumeService; +import com.example.demo.service.coin.MarketService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; @@ -41,10 +43,15 @@ public class ConsumeServiceImpl implements ConsumeService { @Autowired private UserMapper userMapper; + @Autowired + private MarketMapper marketMapper; //消耗明细 @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, ConsumeUser consumeUser){ + //获取市场id + List markets = marketMapper.getMarketIds(consumeUser.getMarkets()); + consumeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List consumeUsers = consumeMapper.selectAll(consumeUser); return new PageInfo<>(consumeUsers); @@ -53,6 +60,9 @@ public class ConsumeServiceImpl implements ConsumeService { //消耗金币统计 @Override public Gold statsGold(ConsumeUser consumeUser) { + //获取市场id + List markets = marketMapper.getMarketIds(consumeUser.getMarkets()); + consumeUser.setMarkets(markets); Gold gold = new Gold(); List consumeUsers = consumeMapper.selectBy(consumeUser); @@ -88,6 +98,9 @@ public class ConsumeServiceImpl implements ConsumeService { //消耗明细筛选 @Override public PageInfo selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser) { + //获取市场id + List markets = marketMapper.getMarketIds(consumeUser.getMarkets()); + consumeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List consumeUsers = consumeMapper.selectBy(consumeUser); return new PageInfo<>(consumeUsers); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java index fb9845f..1ceee59 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -7,6 +7,7 @@ import com.alibaba.excel.write.metadata.WriteSheet; import com.example.demo.Util.ExcelUploadUtil; import com.example.demo.Util.JWTUtil; import com.example.demo.controller.bean.BeanConsumeController; +import com.example.demo.controller.bean.BeanRechargeController; import com.example.demo.controller.coin.ConsumeController; import com.example.demo.controller.coin.GoldDetailController; import com.example.demo.controller.coin.RechargeController; @@ -15,9 +16,7 @@ import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Export; import com.example.demo.domain.entity.User; import com.example.demo.domain.export.Goldmingxi; -import com.example.demo.domain.vo.bean.BeanConsumeArticle; -import com.example.demo.domain.vo.bean.BeanConsumeFan; -import com.example.demo.domain.vo.bean.BeanConsumeLive; +import com.example.demo.domain.vo.bean.*; import com.example.demo.domain.vo.coin.*; @@ -73,6 +72,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { @Autowired private BeanConsumeController beanConsumeController; @Autowired + private BeanRechargeController beanRechargeController; + @Autowired private AuthenticationManager authenticationManager; // 每页查询的数据量 private static final int PAGE_SIZE = 1000; @@ -172,6 +173,26 @@ public class ExportExcelServiceImpl implements ExportExcelService { } }); } + @Override + public Exception BeanExcel(String message) throws Exception { + return exportExcelGeneric(message, "beanUser", page -> { + try { + return beanRechargeController.selectBySystem(page); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + } + @Override + public Exception OnlineExcel(String message) throws Exception { + return exportExcelGeneric(message, "onlineUser", page -> { + try { + return beanRechargeController.selectByOnline(page); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + } @Override public List getExcel(Export export) { @@ -360,6 +381,10 @@ public class ExportExcelServiceImpl implements ExportExcelService { } return null; } + + + + private Class getExportClass(String exportType) { switch (exportType) { case "goldDetail": @@ -378,6 +403,10 @@ public class ExportExcelServiceImpl implements ExportExcelService { return BeanConsumeFan.class; case "articleUser": return BeanConsumeArticle.class; + case "beanUser": + return BeanSystemRechargeInfo.class; + case "onlineUser": + return BeanOnlineRechargeInfo.class; default: throw new IllegalArgumentException("不支持的导出类型: " + exportType); } diff --git a/src/main/java/com/example/demo/serviceImpl/coin/GeneralServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/GeneralServiceImpl.java index b827a95..7879ce8 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/GeneralServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/GeneralServiceImpl.java @@ -130,7 +130,7 @@ public class GeneralServiceImpl implements GeneralService { } List list = Arrays.asList(market.split(",")); //判断是否是总部 - if (list != null && list.contains("1")) { + if (list != null && list.contains("总部")||list.contains("研发部")) { List allMarkets = getMarket(); // 获取所有地区 allMarkets.remove("1"); // 先移除可能存在的总部 allMarkets.add(0, "1"); // 将总部添加到列表第一位 @@ -181,7 +181,7 @@ public class GeneralServiceImpl implements GeneralService { } List list = Arrays.asList(market.split(",")); //判断是否是总部 - if (list != null && list.contains("1")) { + if (list != null && list.contains("总部")) { list=getAllRoleMarket();//总部有所有地区的权限 } return list; diff --git a/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java index 31d028c..b3df7af 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/MarketServiceImpl.java @@ -15,6 +15,7 @@ import java.util.stream.Collectors; public class MarketServiceImpl implements MarketService { @Autowired private MarketMapper marketMapper; + @Override public List selectMarket() { List markets = marketMapper.getMarket(); @@ -22,10 +23,11 @@ public class MarketServiceImpl implements MarketService { // 2. 构建树形结构(根节点parentId=1) return buildTree(markets, -1); } + private List buildTree(List markets, Integer parentId) { // 过滤出当前父节点的子菜单 List children = markets.stream() - .filter(menu -> Objects.equals(menu.getParentId(), parentId)) + .filter(menu -> Objects.equals(menu.getParentId(), parentId)) .collect(Collectors.toList()); // 过滤出当前父节点的子菜单,同时过滤掉id为9的权限 // List children = allMenus.stream() @@ -39,4 +41,10 @@ public class MarketServiceImpl implements MarketService { return children; } + + @Override + public List getMarketIds(List list) { + return marketMapper.getMarketIds(list); + } + } \ No newline at end of file diff --git a/src/main/java/com/example/demo/serviceImpl/coin/PermissionServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/PermissionServiceImpl.java index aaa66ec..193f3fc 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/PermissionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/PermissionServiceImpl.java @@ -8,6 +8,7 @@ import com.example.demo.domain.vo.coin.Password; import com.example.demo.domain.vo.coin.Permission; import com.example.demo.domain.vo.coin.Result; import com.example.demo.mapper.coin.AdminMapper; +import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.PermissionMapper; import com.example.demo.service.coin.PermissionService; import com.github.pagehelper.PageHelper; @@ -37,6 +38,8 @@ public class PermissionServiceImpl implements PermissionService { private PermissionMapper permissionMapper; @Autowired private AdminMapper adminMapper; + @Autowired + private MarketMapper marketMapper; @Override public List getposition(String token) { @@ -50,6 +53,7 @@ public class PermissionServiceImpl implements PermissionService { @Override public PageInfo getpermission(Integer pageNum, Integer pageSize, Permission permission) { + PageHelper.startPage(pageNum, pageSize); List list = permissionMapper.getPermission(permission); for (Permission item : list) { diff --git a/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java index 3644526..c9aba5a 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/RechargeServiceImpl.java @@ -1,8 +1,10 @@ package com.example.demo.serviceImpl.coin; import com.example.demo.domain.entity.UserGoldRecord; +import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.RechargeMapper; import com.example.demo.mapper.coin.UserMapper; +import com.example.demo.service.coin.MarketService; import com.example.demo.service.coin.RechargeService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -34,11 +36,17 @@ public class RechargeServiceImpl implements RechargeService { @Autowired private UserMapper userMapper; + @Autowired + private MarketMapper marketMapper; + //查询所有充值 @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) throws Exception{ + //获取市场id + List markets = marketMapper.getMarketIds(rechargeUser.getMarkets()); + rechargeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List rechargeUsers = rechargeMapper.selectAll(rechargeUser); return new PageInfo<>(rechargeUsers); @@ -47,6 +55,8 @@ public class RechargeServiceImpl implements RechargeService { //查询筛选充值 @Override public PageInfo selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) throws Exception{ + List markets = marketMapper.getMarketIds(rechargeUser.getMarkets()); + rechargeUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List rechargeUsers = rechargeMapper.selectBy(rechargeUser); return new PageInfo<>(rechargeUsers); @@ -55,6 +65,8 @@ public class RechargeServiceImpl implements RechargeService { //统计金币记录 @Override public Gold statsGold(RechargeUser rechargeUser) { + List markets = marketMapper.getMarketIds(rechargeUser.getMarkets()); + rechargeUser.setMarkets(markets); Gold gold = new Gold(); List rechargeUsers = rechargeMapper.selectBy(rechargeUser); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java index 58edfb6..e1bc5b7 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java @@ -2,8 +2,10 @@ package com.example.demo.serviceImpl.coin; import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.mapper.coin.ConsumeMapper; +import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.RefundMapper; import com.example.demo.mapper.coin.UserMapper; +import com.example.demo.service.coin.MarketService; import com.example.demo.service.coin.RefundService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; @@ -40,9 +42,14 @@ public class RefundServiceImpl implements RefundService { private UserMapper userMapper; + @Autowired + private MarketMapper marketMapper; + //查找全部退款 @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) throws Exception{ + List markets = marketMapper.getMarketIds(refundUser.getMarkets()); + refundUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List refundUsers = refundMapper.selectAll(refundUser); return new PageInfo<>(refundUsers); @@ -51,6 +58,8 @@ public class RefundServiceImpl implements RefundService { //统计退款金额 @Override public Gold statsGold(RefundUser refundUser) { + List markets = marketMapper.getMarketIds(refundUser.getMarkets()); + refundUser.setMarkets(markets); Gold gold = new Gold(); List refundUsers = refundMapper.selectBy(refundUser); @@ -86,6 +95,8 @@ public class RefundServiceImpl implements RefundService { //查找筛选退款 @Override public PageInfo selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser)throws Exception { + List markets = marketMapper.getMarketIds(refundUser.getMarkets()); + refundUser.setMarkets(markets); PageHelper.startPage(pageNum, pageSize); List refundUsers = refundMapper.selectBy(refundUser); return new PageInfo<>(refundUsers); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java index f9d8c7b..ef80e2b 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java @@ -60,10 +60,10 @@ public class WorkbenchServiceImpl implements WorkbenchService { } List list = Arrays.asList(market.split(",")); //判断是否是总部 - if (list != null && list.contains("1")) { + if (list != null && list.contains("总部")||market.equals("研发部")) { List allMarkets = workBenchMapper.getMarket(); // 获取所有地区 - allMarkets.remove("1"); // 先移除可能存在的总部 - allMarkets.add(0, "1"); // 将总部添加到列表第一位 + allMarkets.remove("总部"); // 先移除可能存在的总部 + allMarkets.add(0, "总部"); // 将总部添加到列表第一位 list = allMarkets; // 更新list } return list; @@ -130,6 +130,7 @@ public class WorkbenchServiceImpl implements WorkbenchService { //没缓存获取新数据并存入缓存 try { //获取新的工作台数据 + markets = workBenchMapper.getMarket(); WorkbenchCard freshData = getCard(markets); //存入缓存,一小时后过期(与统计表更新时间对应) redisTemplate.opsForValue().set(CACHE_KEY, freshData, 1, java.util.concurrent.TimeUnit.HOURS); diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 9e0b8a1..ceeecca 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -12,9 +12,9 @@ spring: pool-name: mysql1HikariCP maximum-pool-size: 10 sqlserver1: - jdbc-url: jdbc:sqlserver://52.76.43.43:1433;databaseName=hwhcGold;encrypt=true;sslProtocol=TLSv1;trustServerCertificate=true; - username: hwhc_gold_query - password: hwhc_gold_query4564jkj + jdbc-url: jdbc:sqlserver://54.255.120.171:1433;databaseName=hwhcGold;encrypt=true;sslProtocol=TLSv1;trustServerCertificate=true; + username: newkst_test + password: ahsjdh#$gas6545 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver application: @@ -51,9 +51,11 @@ file: feishu: webhook: url: https://open.feishu.cn/open-apis/bot/v2/hook/384c78aa-8df1-498b-9c47-04e890ed9877 - +bean: + # url: http://api.homilychart.com/hljwgo/api/wallet/recharge + url: http://39.101.133.168:8828/hljwgo/api/wallet/recharge server: - port: 8081 + port: 10704 logging: level: diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index b6241a9..10fe60e 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -54,7 +54,8 @@ feishu: url: https://open.feishu.cn/open-apis/bot/v2/hook/1a515b19-b64f-46b7-9486-35842b9539fe bean: - url: http://47.92.148.30:3003/mock/61/hljw/api/user/gold + # url: http://api.homilychart.com/hljwgo/api/wallet/recharge + url: http://39.101.133.168:8828/hljwgo/api/wallet/recharge server: port: 10704 diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 17db5f5..d2a2b71 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -12,9 +12,9 @@ spring: pool-name: mysql1HikariCP maximum-pool-size: 10 sqlserver1: - jdbc-url: jdbc:sqlserver://52.76.43.43:1433;databaseName=hwhcGold;encrypt=true;sslProtocol=TLSv1;trustServerCertificate=true; - username: hwhc_gold_query - password: hwhc_gold_query4564jkj + jdbc-url: jdbc:sqlserver://54.255.120.171:1433;databaseName=hwhcGold;encrypt=true;sslProtocol=TLSv1;trustServerCertificate=true; + username: newkst_test + password: ahsjdh#$gas6545 driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver application: @@ -34,10 +34,10 @@ spring: data: redis: - database: 1 - host: localhost - port: 6379 - password: 123456 + database: 0 + host: 18.143.76.3 + port: 10703 + password: Ngc0FYUTA6h3wC5J lettuce: pool: @@ -45,17 +45,15 @@ spring: max-wait: -1 max-idle: 5 - file: upload: url: http://39.101.133.168:8828/hljw/api/aws/upload feishu: webhook: url: https://open.feishu.cn/open-apis/bot/v2/hook/384c78aa-8df1-498b-9c47-04e890ed9877 - bean: - url: http://47.92.148.30:3003/mock/61/hljw/api/user/gold - + # url: http://api.homilychart.com/hljwgo/api/wallet/recharge + url: http://39.101.133.168:8828/hljwgo/api/wallet/recharge server: port: 8081 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 050854c..2784550 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: dev + active: @spring.profiles.active@ jackson: deserialization: fail-on-unknown-properties: false @@ -103,7 +103,8 @@ file: upload: url: http://39.101.133.168:8828/hljw/api/aws/upload bean: - url: http://47.92.148.30:3003/mock/61/hljw/api/user/gold + # url: http://api.homilychart.com/hljwgo/api/wallet/recharge + url: http://39.101.133.168:8828/hljwgo/api/wallet/recharge server: port: 8081 diff --git a/src/main/resources/jindouMapper/BeanRechargeMapper2.xml b/src/main/resources/jindouMapper/BeanRechargeMapper2.xml index 14ab855..02d8982 100644 --- a/src/main/resources/jindouMapper/BeanRechargeMapper2.xml +++ b/src/main/resources/jindouMapper/BeanRechargeMapper2.xml @@ -1,7 +1,7 @@ - SELECT f.id AS id, m.jwcode AS jwcode, m.nickname AS name, diff --git a/src/main/resources/mapper/AuditMapper.xml b/src/main/resources/mapper/AuditMapper.xml index 2e5bb5e..0a54306 100644 --- a/src/main/resources/mapper/AuditMapper.xml +++ b/src/main/resources/mapper/AuditMapper.xml @@ -47,13 +47,14 @@ SELECT ugr.*, (COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold, u.name as name, - u.market as market, + m.name as market, a1.admin_name as adminName, a2.admin_name as auditName FROM user_gold_record as ugr LEFT JOIN user u ON ugr.jwcode = u.jwcode LEFT JOIN admin a1 ON ugr.admin_id = a1.id LEFT JOIN admin a2 ON ugr.audit_id = a2.id + left join market m ON u.market = m.id AND ugr.jwcode = #{rechargeAudit.jwcode} @@ -61,10 +62,11 @@ AND ugr.activity = #{rechargeAudit.activity} - + + AND ( - - u.market LIKE CONCAT('%', #{market}, '%') + + u.market = #{market} ) @@ -75,7 +77,7 @@ AND ugr.rate_id = #{rechargeAudit.rateId} --> - AND u.market = #{rechargeAudit.market} + AND m.name = #{rechargeAudit.market} AND ugr.pay_time between #{rechargeAudit.startTime} and #{rechargeAudit.endTime} @@ -101,13 +103,14 @@ SELECT ugr.*, (COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold, u.name as name, - u.market as market, + m.name as market, a1.admin_name as adminName, a2.admin_name as auditName FROM user_gold_record as ugr LEFT JOIN user u ON ugr.jwcode = u.jwcode LEFT JOIN admin a1 ON ugr.admin_id = a1.id LEFT JOIN admin a2 ON ugr.audit_id = a2.id + left join market m ON u.market = m.id @@ -119,13 +122,12 @@ AND ugr.goods_name = #{refundAudit.goodsName} - - AND u.market = #{refundAudit.market} - - + + + AND ( - - u.market LIKE CONCAT('%', #{market}, '%') + + u.market = #{market} ) diff --git a/src/main/resources/mapper/ConsumeMapper.xml b/src/main/resources/mapper/ConsumeMapper.xml index 38d429b..a3e63b8 100644 --- a/src/main/resources/mapper/ConsumeMapper.xml +++ b/src/main/resources/mapper/ConsumeMapper.xml @@ -6,7 +6,7 @@ SELECT u.name AS name, ugr.jwcode AS jwcode, - u.market AS market, + m.name as market, ugr.goods_name AS goodsName, ugr.pay_platform AS payPlatform, ugr.sum_gold AS sumGold, @@ -90,13 +91,16 @@ user u ON u.jwcode = ugr.jwcode left JOIN admin a ON ugr.admin_id = a.id + left join market m ON u.market = m.id + ugr.type = 1 AND ugr.flag = 1 - - AND u.market IN - - #{market} + + AND ( + + u.market = #{market} + ) AND ugr.jwcode = #{jwcode} diff --git a/src/main/resources/mapper/GeneralMapper.xml b/src/main/resources/mapper/GeneralMapper.xml index a943662..74a0fff 100644 --- a/src/main/resources/mapper/GeneralMapper.xml +++ b/src/main/resources/mapper/GeneralMapper.xml @@ -27,6 +27,6 @@ where id = #{roleId} \ No newline at end of file diff --git a/src/main/resources/mapper/MarketMapper.xml b/src/main/resources/mapper/MarketMapper.xml index 6904cbd..5ed1af2 100644 --- a/src/main/resources/mapper/MarketMapper.xml +++ b/src/main/resources/mapper/MarketMapper.xml @@ -4,4 +4,26 @@ + + + \ No newline at end of file diff --git a/src/main/resources/mapper/PermissionMapper.xml b/src/main/resources/mapper/PermissionMapper.xml index eded8b8..624e73e 100644 --- a/src/main/resources/mapper/PermissionMapper.xml +++ b/src/main/resources/mapper/PermissionMapper.xml @@ -84,7 +84,7 @@ and admin.postiton=#{postiton} - + AND ( admin.market LIKE CONCAT('%', #{market}, '%') diff --git a/src/main/resources/mapper/RechargeMapper.xml b/src/main/resources/mapper/RechargeMapper.xml index 5ee4e84..b3c4bee 100644 --- a/src/main/resources/mapper/RechargeMapper.xml +++ b/src/main/resources/mapper/RechargeMapper.xml @@ -7,7 +7,7 @@ SELECT u.name AS name, ugr.jwcode AS jwcode, - u.market AS market, + m.name as market, ugr.activity AS activity, ugr.rate_id AS rateId, r.rate_name AS rateName, @@ -24,15 +24,17 @@ left JOIN user u ON u.jwcode = ugr.jwcode left JOIN admin a ON ugr.admin_id = a.id left JOIN rate r ON ugr.rate_id = r.id + left join market m ON u.market = m.id ugr.type = 0 AND ugr.audit_status IN (1,3) AND ugr.flag = 1 - - AND user.market IN - - #{markets} + + AND ( + + u.market = #{market} + ) @@ -75,7 +77,7 @@ SELECT u.name AS name, ugr.jwcode AS jwcode, - u.market AS market, + m.name as market, ugr.activity AS activity, ugr.rate_id AS rateId, r.rate_name AS rateName, @@ -92,15 +94,17 @@ left JOIN user u ON u.jwcode = ugr.jwcode left JOIN admin a ON ugr.admin_id = a.id left JOIN rate r ON ugr.rate_id = r.id + left join market m ON u.market = m.id ugr.type = 0 AND ugr.audit_status IN (1,3) AND ugr.flag = 1 - - AND u.market IN - - #{market} + + AND ( + + u.market = #{market} + ) AND ugr.jwcode = #{jwcode} diff --git a/src/main/resources/mapper/RefundMapper.xml b/src/main/resources/mapper/RefundMapper.xml index 1c12cf7..1601c16 100644 --- a/src/main/resources/mapper/RefundMapper.xml +++ b/src/main/resources/mapper/RefundMapper.xml @@ -6,7 +6,7 @@ SELECT u.name AS name, ugr.jwcode AS jwcode, - u.market AS market, + m.name as market, ugr.order_code AS orderCode, ugr.goods_name AS goodsName, ugr.refund_model AS refundModel, @@ -93,13 +94,15 @@ user u ON u.jwcode = ugr.jwcode left JOIN admin a ON ugr.admin_id = a.id + left join market m ON u.market = m.id ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1 - - AND u.market IN - - #{market} + + AND ( + + u.market = #{market} + ) AND ugr.jwcode = #{jwcode} diff --git a/src/main/resources/mapper/RoleMapper.xml b/src/main/resources/mapper/RoleMapper.xml index 125c3be..fe5cb51 100644 --- a/src/main/resources/mapper/RoleMapper.xml +++ b/src/main/resources/mapper/RoleMapper.xml @@ -37,7 +37,7 @@ SELECT id,role_name FROM role - + AND market IN #{market} @@ -91,7 +91,7 @@ r.market LIKE CONCAT('%', #{market}, '%') - + AND r.market IN #{market} diff --git a/src/main/resources/mapper/StatisticsMapper.xml b/src/main/resources/mapper/StatisticsMapper.xml index 557bbb5..5c45b3b 100644 --- a/src/main/resources/mapper/StatisticsMapper.xml +++ b/src/main/resources/mapper/StatisticsMapper.xml @@ -1,60 +1,7 @@ - - - INSERT INTO statistics ( - market, current_datetime, - recharge, money, - consume_permanent, consume_free_june, - consume_free_december, consume_task, - refund_permanent, refund_free_june, - refund_free_december,refund_task, - recharge_num, first_recharge - ) VALUES ( - #{market}, #{currentDatetime}, - #{recharge}, #{money}, - #{consumePermanent}, #{consumeFreeJune}, - #{consumeFreeDecember}, #{consumeTask}, - #{refundPermanent}, #{refundFreeJune}, - #{refundFreeDecember}, #{refundTask}, - #{rechargeNum}, #{firstRecharge} - ) - - - - INSERT INTO statistics ( - market, current_datetime, - current_gold, daily_change, - current_permanent, current_free_june, - current_free_december, current_task - ) VALUES ( - #{market}, #{currentDatetime}, - #{currentGold}, #{dailyChange}, - #{currentPermanent}, #{currentFreeJune}, - #{currentFreeDecember}, #{currentTask} - - ) - - - - INSERT INTO statistics ( - market, current_datetime, - yearly_recharge, - yearly_money, - yearly_consume, - yearly_refund, - yearly_recharge_num - - ) VALUES ( - #{market}, #{currentDatetime}, - #{yearlyRecharge},#{yearlyMoney}, - #{yearlyConsume},#{yearlyRefund}, - #{yearlyRechargeNum} - - ) - INSERT INTO statistics ( @@ -136,66 +83,7 @@ yearly_recharge_num = VALUES(yearly_recharge_num) - - - UPDATE statistics - SET - recharge = #{recharge}, - money = #{money}, - consume_permanent = #{consumePermanent}, - consume_free_june = #{consumeFreeJune}, - consume_free_december = #{consumeFreeDecember}, - consume_task = #{consumeTask}, - refund_permanent = #{refundPermanent}, - refund_free_june = #{refundFreeJune}, - refund_free_december = #{refundFreeDecember}, - refund_task = #{refundTask}, - recharge_num = #{rechargeNum}, - first_recharge = #{firstRecharge} - - ,update_time = #{updateTime} - - WHERE market = #{market} and current_datetime = #{currentDatetime} - - - - update statistics - SET - current_gold = #{currentGold}, - daily_change = #{dailyChange}, - current_permanent = #{currentPermanent}, - current_free_june = #{currentFreeJune}, - current_free_december = #{currentFreeDecember}, - current_task = #{currentTask} - WHERE market = #{market} and current_datetime = #{currentDatetime} - - - - update statistics - SET - yearly_recharge=#{yearlyRecharge}, - yearly_money=#{yearlyMoney}, - yearly_consume=#{yearlyConsume}, - yearly_refund=#{yearlyRefund}, - yearly_recharge_num=#{yearlyRechargeNum} - WHERE market = #{market} and current_datetime = #{currentDatetime} - - - - - - + - - - - - diff --git a/src/main/resources/mapper/WorkBenchMapper.xml b/src/main/resources/mapper/WorkBenchMapper.xml index 52e417c..e9de162 100644 --- a/src/main/resources/mapper/WorkBenchMapper.xml +++ b/src/main/resources/mapper/WorkBenchMapper.xml @@ -132,6 +132,6 @@ diff --git a/src/main/resources/paymapper/BeanRechargeMapper3.xml b/src/main/resources/paymapper/BeanRechargeMapper3.xml index 1078b2b..cc72ec0 100644 --- a/src/main/resources/paymapper/BeanRechargeMapper3.xml +++ b/src/main/resources/paymapper/BeanRechargeMapper3.xml @@ -1,7 +1,7 @@ - SELECT g.id AS id, g.jwcode AS jwcode, m.name AS name,