Browse Source

Merge branch 'milestone-20250711-金币重构二期' of http://39.101.133.168:8807/huangqizhen/gold-java into lijianlin/feature-20250710152503-二期工作台与部分权限

huangqizheng/feature-20250717200321-优化导出
lijianlin 7 months ago
parent
commit
fecc0e5c6b
  1. 28
      src/main/java/com/example/demo/Export/ExportServiceImpl.java
  2. 13
      src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java
  3. 30
      src/main/java/com/example/demo/controller/AdminController.java
  4. 4
      src/main/java/com/example/demo/controller/ConsumeController.java
  5. 2
      src/main/java/com/example/demo/controller/GeneralController.java
  6. 47
      src/main/java/com/example/demo/controller/MenuController.java
  7. 5
      src/main/java/com/example/demo/controller/PermissionController.java
  8. 6
      src/main/java/com/example/demo/controller/RechargeController.java
  9. 4
      src/main/java/com/example/demo/controller/RefundController.java
  10. 51
      src/main/java/com/example/demo/controller/RoleController.java
  11. 2
      src/main/java/com/example/demo/controller/UserController.java
  12. 2
      src/main/java/com/example/demo/domain/entity/Admin.java
  13. 2
      src/main/java/com/example/demo/domain/entity/Menu.java
  14. 1
      src/main/java/com/example/demo/domain/entity/Role.java
  15. 2
      src/main/java/com/example/demo/domain/vo/AdminVo.java
  16. 30
      src/main/java/com/example/demo/domain/vo/MenuVo.java
  17. 30
      src/main/java/com/example/demo/domain/vo/Password.java
  18. 20
      src/main/java/com/example/demo/domain/vo/RoleMenu.java
  19. 38
      src/main/java/com/example/demo/domain/vo/RoleVo.java
  20. 10
      src/main/java/com/example/demo/mapper/AdminMapper.java
  21. 6
      src/main/java/com/example/demo/mapper/ConsumeMapper.java
  22. 3
      src/main/java/com/example/demo/mapper/GeneralMapper.java
  23. 31
      src/main/java/com/example/demo/mapper/MenuMapper.java
  24. 1
      src/main/java/com/example/demo/mapper/PermissionMapper.java
  25. 2
      src/main/java/com/example/demo/mapper/RateMapper.java
  26. 5
      src/main/java/com/example/demo/mapper/RechargeMapper.java
  27. 5
      src/main/java/com/example/demo/mapper/RefundMapper.java
  28. 34
      src/main/java/com/example/demo/mapper/RoleMapper.java
  29. 8
      src/main/java/com/example/demo/mapper/UserMapper.java
  30. 11
      src/main/java/com/example/demo/service/AdminService.java
  31. 4
      src/main/java/com/example/demo/service/ConsumeService.java
  32. 27
      src/main/java/com/example/demo/service/MenuService.java
  33. 6
      src/main/java/com/example/demo/service/PermissionService.java
  34. 2
      src/main/java/com/example/demo/service/RateService.java
  35. 4
      src/main/java/com/example/demo/service/RechargeService.java
  36. 5
      src/main/java/com/example/demo/service/RefundService.java
  37. 25
      src/main/java/com/example/demo/service/RoleService.java
  38. 7
      src/main/java/com/example/demo/service/UserService.java
  39. 108
      src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java
  40. 1
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  41. 9
      src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java
  42. 100
      src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java
  43. 69
      src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java
  44. 4
      src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java
  45. 10
      src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java
  46. 9
      src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java
  47. 97
      src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java
  48. 8
      src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java
  49. 3
      src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java
  50. 6
      src/main/resources/application.yml
  51. 12
      src/main/resources/mapper/AdminMapper.xml
  52. 42
      src/main/resources/mapper/ConsumeMapper.xml
  53. 4
      src/main/resources/mapper/GoldDetailMapper.xml
  54. 38
      src/main/resources/mapper/MenuMapper.xml
  55. 8
      src/main/resources/mapper/PermissionMapper.xml
  56. 10
      src/main/resources/mapper/RechargeMapper.xml
  57. 35
      src/main/resources/mapper/RefundMapper.xml
  58. 31
      src/main/resources/mapper/RoleMapper.xml

28
src/main/java/com/example/demo/Export/ExportServiceImpl.java

@ -5,10 +5,13 @@ import com.example.demo.domain.DTO.ConsumeDTO;
import com.example.demo.domain.DTO.RechargeDTO; import com.example.demo.domain.DTO.RechargeDTO;
import com.example.demo.domain.DTO.RefundDTO; import com.example.demo.domain.DTO.RefundDTO;
import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.Result;
import com.example.demo.exception.SystemException; import com.example.demo.exception.SystemException;
import com.example.demo.mapper.GoldDetailMapper; import com.example.demo.mapper.GoldDetailMapper;
import com.example.demo.Util.RedisUtil; import com.example.demo.Util.RedisUtil;
import com.example.demo.service.AdminService;
import com.example.demo.service.UserService;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -22,6 +25,8 @@ import java.time.format.DateTimeFormatter;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static net.sf.jsqlparser.util.validation.metadata.NamedObject.user;
/** /**
* @program: GOLD * @program: GOLD
* @ClassName ExportServiceImpl * @ClassName ExportServiceImpl
@ -36,6 +41,8 @@ public class ExportServiceImpl implements ExportService{
private GoldDetailMapper goldDetailMapper; private GoldDetailMapper goldDetailMapper;
@Autowired @Autowired
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Autowired
private AdminService adminService;
@Override @Override
public Result addExportRecharge(RechargeDTO dto) { public Result addExportRecharge(RechargeDTO dto) {
@ -48,10 +55,11 @@ public class ExportServiceImpl implements ExportService{
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
String admin = adminService.getName(String.valueOf(dto.getAccount()));
// 生成文件名 // 生成文件名
String fileName = String.format("%s_%s_%s.xlsx", String fileName = String.format("%s_%s_%s.xlsx",
"充值明细", "充值明细",
"操作人",
admin,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
System.out.println(fileName); System.out.println(fileName);
dto.setUrl(""); dto.setUrl("");
@ -78,10 +86,6 @@ public class ExportServiceImpl implements ExportService{
// 手动构造请求数据避免 toString() 只返回部分字段 // 手动构造请求数据避免 toString() 只返回部分字段
Map<String, Object> requestData = new HashMap<>(); Map<String, Object> requestData = new HashMap<>();
requestData.put("text", dto.getText());
requestData.put("sort", dto.getSort());
requestData.put("field", dto.getField());
requestData.put("deptId", dto.getDeptid());
requestData.put("rechargeUser", dto.getRechargeUser()); requestData.put("rechargeUser", dto.getRechargeUser());
exportData.put("requestData", requestData); exportData.put("requestData", requestData);
@ -106,10 +110,11 @@ public class ExportServiceImpl implements ExportService{
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
String admin = adminService.getName(String.valueOf(dto.getAccount()));
// 生成文件名 // 生成文件名
String fileName = String.format("%s_%s_%s.xlsx", String fileName = String.format("%s_%s_%s.xlsx",
"退款明细", "退款明细",
"操作人",
admin,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
System.out.println(fileName); System.out.println(fileName);
dto.setUrl(""); dto.setUrl("");
@ -135,10 +140,6 @@ public class ExportServiceImpl implements ExportService{
// 手动构造请求数据避免 toString() 只返回部分字段 // 手动构造请求数据避免 toString() 只返回部分字段
Map<String, Object> requestData = new HashMap<>(); Map<String, Object> requestData = new HashMap<>();
requestData.put("text", dto.getText());
requestData.put("sort", dto.getSort());
requestData.put("field", dto.getField());
requestData.put("deptId", dto.getDeptid());
requestData.put("refundUser", dto.getRefundUser()); requestData.put("refundUser", dto.getRefundUser());
exportData.put("requestData", requestData); exportData.put("requestData", requestData);
@ -163,10 +164,11 @@ public class ExportServiceImpl implements ExportService{
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
String admin = adminService.getName(String.valueOf(dto.getAccount()));
// 生成文件名 // 生成文件名
String fileName = String.format("%s_%s_%s.xlsx", String fileName = String.format("%s_%s_%s.xlsx",
"消耗明细", "消耗明细",
"操作人",
admin,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
System.out.println(fileName); System.out.println(fileName);
dto.setUrl(""); dto.setUrl("");
@ -192,10 +194,6 @@ public class ExportServiceImpl implements ExportService{
// 手动构造请求数据避免 toString() 只返回部分字段 // 手动构造请求数据避免 toString() 只返回部分字段
Map<String, Object> requestData = new HashMap<>(); Map<String, Object> requestData = new HashMap<>();
requestData.put("text", dto.getText());
requestData.put("sort", dto.getSort());
requestData.put("field", dto.getField());
requestData.put("deptId", dto.getDeptid());
requestData.put("consumeUser", dto.getConsumeUser()); requestData.put("consumeUser", dto.getConsumeUser());
exportData.put("requestData", requestData); exportData.put("requestData", requestData);

13
src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java

@ -34,8 +34,9 @@ public class MysqlServiceImpl implements MysqlService {
Set<Integer> validZeroTypes = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 18, 19, 20, 21, 22, 23, 24, 26, 28, 29, 35, 36, 40, 45, 46, 47, 48, 49, 53, 54, 60)); Set<Integer> validZeroTypes = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 18, 19, 20, 21, 22, 23, 24, 26, 28, 29, 35, 36, 40, 45, 46, 47, 48, 49, 53, 54, 60));
Set<Integer> validOneTypes = new HashSet<>(Arrays.asList(9, 15, 17, 25, 27, 37, 41, 42, 43, 50, 51, 62)); Set<Integer> validOneTypes = new HashSet<>(Arrays.asList(9, 15, 17, 25, 27, 37, 41, 42, 43, 50, 51, 62));
Set<Integer> validTwoTypes = new HashSet<>(Arrays.asList(52, 55, 56, 57, 58, 59, 61));
Set<Integer> validTwoTypes = new HashSet<>(Arrays.asList(52,61));
Set<Integer> validThreeTypes = new HashSet<>(Arrays.asList(10, 16, 30, 31, 32, 33, 34, 39, 44)); Set<Integer> validThreeTypes = new HashSet<>(Arrays.asList(10, 16, 30, 31, 32, 33, 34, 39, 44));
Set<Integer> validFourTypes = new HashSet<>(Arrays.asList(55, 56, 57, 58, 59, 63, 64, 65));
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
Month currentMonth = now.getMonth(); Month currentMonth = now.getMonth();
@Autowired @Autowired
@ -76,7 +77,7 @@ public class MysqlServiceImpl implements MysqlService {
//退款类型 61ERP退款退金币 //退款类型 61ERP退款退金币
String insertSql = "INSERT INTO user_gold_record (order_code,jwcode,sum_gold,permanent_gold,free_june,free_december," + String insertSql = "INSERT INTO user_gold_record (order_code,jwcode,sum_gold,permanent_gold,free_june,free_december," +
"task_gold,pay_platform,goods_name,refund_type,refund_model,remark,type,admin_id," + "task_gold,pay_platform,goods_name,refund_type,refund_model,remark,type,admin_id," +
"audit_status,create_time) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
"audit_status,create_time,flag) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
try (PreparedStatement mysqlStmt = mysqlConn.prepareStatement(insertSql)) { try (PreparedStatement mysqlStmt = mysqlConn.prepareStatement(insertSql)) {
while (resultSet.next()) { while (resultSet.next()) {
int gtype = resultSet.getInt("gtype"); int gtype = resultSet.getInt("gtype");
@ -102,6 +103,9 @@ public class MysqlServiceImpl implements MysqlService {
Random random = new Random(); Random random = new Random();
int randomNumber = random.nextInt(900) + 100; int randomNumber = random.nextInt(900) + 100;
// 判断gtype // 判断gtype
if(validFourTypes.contains(gtype)){
continue;
}
if(validZeroTypes.contains(gtype)){ if(validZeroTypes.contains(gtype)){
mysqlStmt.setInt(13, 0); mysqlStmt.setInt(13, 0);
mysqlStmt.setString(1, "ERPCZ"+timestampPart+randomNumber); mysqlStmt.setString(1, "ERPCZ"+timestampPart+randomNumber);
@ -155,6 +159,11 @@ public class MysqlServiceImpl implements MysqlService {
mysqlStmt.setString(12, remark); mysqlStmt.setString(12, remark);
mysqlStmt.setInt(15, 3); mysqlStmt.setInt(15, 3);
mysqlStmt.setTimestamp(16, created_at); mysqlStmt.setTimestamp(16, created_at);
if(remark.contains("测试")){
mysqlStmt.setInt(17, 0);
}else {
mysqlStmt.setInt(17, 1);
}
// 更新时的值 // 更新时的值
mysqlStmt.addBatch(); mysqlStmt.addBatch();

30
src/main/java/com/example/demo/controller/AdminController.java

@ -3,6 +3,7 @@ package com.example.demo.controller;
import com.example.demo.Util.JWTUtil; import com.example.demo.Util.JWTUtil;
import com.example.demo.Util.TokenPayload; import com.example.demo.Util.TokenPayload;
import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.Password;
import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.Result;
import com.example.demo.service.AdminService; import com.example.demo.service.AdminService;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
@ -29,6 +30,7 @@ import org.springframework.web.bind.annotation.*;
public class AdminController { public class AdminController {
@Autowired @Autowired
private AdminService adminService; private AdminService adminService;
@PostMapping("/login") @PostMapping("/login")
public Result login(@RequestBody Admin admin) { public Result login(@RequestBody Admin admin) {
@ -44,6 +46,7 @@ public class AdminController {
return Result.error(e.getMessage()); return Result.error(e.getMessage());
} }
} }
@PostMapping("/userinfo") @PostMapping("/userinfo")
public UserDetails getUserInfo(@RequestHeader("token") String token1) { public UserDetails getUserInfo(@RequestHeader("token") String token1) {
@ -52,12 +55,14 @@ public class AdminController {
System.out.println("1/*/*/*/*//*-*-*-*-*-*-1" + token); System.out.println("1/*/*/*/*//*-*-*-*-*-*-1" + token);
try { try {
System.out.println("/+/+/+/+/+/+/+//" + JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class)); System.out.println("/+/+/+/+/+/+/+//" + JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class));
return JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); return JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }
//获取管理员ID
@PostMapping("/adminId") @PostMapping("/adminId")
public Result selectId(@RequestBody Admin admin) { public Result selectId(@RequestBody Admin admin) {
@ -69,4 +74,29 @@ public class AdminController {
return Result.error(e.getMessage()); return Result.error(e.getMessage());
} }
} }
//更新用户密码
@PostMapping("/password")
public Result updatePassword(@RequestBody Password password){
try {
return adminService.updatePassword(password);
} catch (Exception e) {
return Result.error("服务器波动,请稍作等待");
}
}
//更新用户密码
@PostMapping("/reset")
public Result resetPassword(@RequestBody Password password){
try {
return adminService.resetPassword(password);
} catch (Exception e) {
return Result.error("重置失败");
}
}
} }

4
src/main/java/com/example/demo/controller/ConsumeController.java

@ -36,9 +36,11 @@ public class ConsumeController {
@PostMapping("/selectAll") @PostMapping("/selectAll")
public Result selcetAll(@RequestBody Page page) { public Result selcetAll(@RequestBody Page page) {
try { try {
//页码校验
if (ObjectUtils.isEmpty(page.getPageNum())) { if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!"); return Result.error("页码数为空!");
} }
//页面大小校验
if (ObjectUtils.isEmpty(page.getPageSize())) { if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!"); return Result.error("页大小为空!");
} else { } else {
@ -56,9 +58,11 @@ public class ConsumeController {
@PostMapping("/selectBy") @PostMapping("/selectBy")
public Result selcetBy(@RequestBody Page page) { public Result selcetBy(@RequestBody Page page) {
try { try {
//页码校验
if (ObjectUtils.isEmpty(page.getPageNum())) { if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!"); return Result.error("页码数为空!");
} }
//页面大小校验
if (ObjectUtils.isEmpty(page.getPageSize())) { if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!"); return Result.error("页大小为空!");
} else { } else {

2
src/main/java/com/example/demo/controller/GeneralController.java

@ -41,12 +41,14 @@ public class GeneralController {
List<String> list = generalService.getPlatform(); List<String> list = generalService.getPlatform();
return Result.success(list); return Result.success(list);
} }
//获取商品名称
@PostMapping("/goods") @PostMapping("/goods")
public Result getGoods() public Result getGoods()
{ {
List<String> list = generalService.getGoods(); List<String> list = generalService.getGoods();
return Result.success(list); return Result.success(list);
} }
//获取活动名称
@PostMapping("/activity") @PostMapping("/activity")
public Result getActivity() public Result getActivity()
{ {

47
src/main/java/com/example/demo/controller/MenuController.java

@ -0,0 +1,47 @@
package com.example.demo.controller;
import com.example.demo.domain.vo.MenuVo;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
import com.example.demo.service.MenuService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @program: gold-java
* @ClassName MenuController
* @description:
* @author: Double
* @create: 202507-15 14:10
* @Version 1.0
**/
@RestController
@RequestMapping("/menu")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class MenuController {
@Autowired
private MenuService menuService;
//获取权限树
@PostMapping("/tree")
public Result getPermissionTree(@RequestBody RoleVo roleVo) {
List<MenuVo> permissionTree = menuService.getPermissionTree(roleVo.getId());
return Result.success(permissionTree);
}
//新增权限
@PostMapping("/add")
public Result addPermission(@RequestBody RoleVo roleVo) {
return menuService.addPermission(roleVo);
}
}

5
src/main/java/com/example/demo/controller/PermissionController.java

@ -2,6 +2,7 @@ package com.example.demo.controller;
import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.AdminRole; import com.example.demo.domain.entity.AdminRole;
import com.example.demo.domain.vo.AdminVo;
import com.example.demo.domain.vo.Page; import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.Permission; import com.example.demo.domain.vo.Permission;
import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.Result;
@ -53,9 +54,9 @@ public class PermissionController {
} }
//编辑用户 //编辑用户
@PostMapping("/updateAdmin") @PostMapping("/updateAdmin")
public Result updateAdmin(@RequestBody Admin admin) throws Exception {
public Result updateAdmin(@RequestBody AdminVo adminVo) throws Exception {
try { try {
return Result.success(permissionService.updateAdmin(admin));
return Result.success(permissionService.updateAdmin(adminVo));
} }
catch (Exception e) { catch (Exception e) {
log.error(Arrays.toString(e.getStackTrace())); log.error(Arrays.toString(e.getStackTrace()));

6
src/main/java/com/example/demo/controller/RechargeController.java

@ -29,7 +29,7 @@ public class RechargeController {
@Autowired @Autowired
private RechargeService rechargeService; private RechargeService rechargeService;
//消耗明细
//充值明细
@PostMapping("/selectAll") @PostMapping("/selectAll")
public Result selcetAll(@RequestBody Page page) { public Result selcetAll(@RequestBody Page page) {
try { try {
@ -49,7 +49,7 @@ public class RechargeController {
} }
//消耗明细筛选
//充值明细筛选
@PostMapping("/selectBy") @PostMapping("/selectBy")
public Result selcetBy(@RequestBody Page page) { public Result selcetBy(@RequestBody Page page) {
try { try {
@ -67,7 +67,7 @@ public class RechargeController {
} }
//消耗金币统计
//充值金币统计
@PostMapping("/statsGold") @PostMapping("/statsGold")
public Result statsGold(@RequestBody RechargeUser rechargeUser) { public Result statsGold(@RequestBody RechargeUser rechargeUser) {
try { try {

4
src/main/java/com/example/demo/controller/RefundController.java

@ -48,6 +48,7 @@ public class RefundController {
} }
//退款筛选
@PostMapping("/selectBy") @PostMapping("/selectBy")
public Result selcetBy(@RequestBody Page page) { public Result selcetBy(@RequestBody Page page) {
try { try {
@ -66,6 +67,7 @@ public class RefundController {
} }
//退款金币统计
@PostMapping("/statsGold") @PostMapping("/statsGold")
public Result statsGold(@RequestBody RefundUser refundUser) { public Result statsGold(@RequestBody RefundUser refundUser) {
try { try {
@ -76,6 +78,7 @@ public class RefundController {
} }
} }
//获取退款类型
@PostMapping("/refundType") @PostMapping("/refundType")
public Result getRefundType() public Result getRefundType()
{ {
@ -83,6 +86,7 @@ public class RefundController {
return Result.success(list); return Result.success(list);
} }
//筛选产品
@PostMapping("/selectGoods") @PostMapping("/selectGoods")
public Result getSelectGoods(@RequestBody RefundUser refundUser) public Result getSelectGoods(@RequestBody RefundUser refundUser)
{ {

51
src/main/java/com/example/demo/controller/RoleController.java

@ -0,0 +1,51 @@
package com.example.demo.controller;
import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
import com.example.demo.service.RefundService;
import com.example.demo.service.RoleService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @program: gold-java
* @ClassName RoleController
* @description:
* @author: Double
* @create: 202507-15 11:23
* @Version 1.0
**/
@RestController
@RequestMapping("/role")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class RoleController {
@Autowired
private RoleService roleService;
//新增角色
@PostMapping("/add")
public Result addRole(@RequestBody RoleVo roleVo) {
return roleService.addRole(roleVo);
}
//查找全部角色
@PostMapping("/selectAll")
public Result selectRole() {
List<RoleVo> list = roleService.selectAllRole();
return Result.success(list);
}
}

2
src/main/java/com/example/demo/controller/UserController.java

@ -30,6 +30,7 @@ public class UserController {
@Autowired @Autowired
private UserService userService; private UserService userService;
//查找用户
@PostMapping("/selectUser") @PostMapping("/selectUser")
public Result selectUser(@RequestBody GoldUser user) { public Result selectUser(@RequestBody GoldUser user) {
try { try {
@ -39,6 +40,7 @@ public class UserController {
return Result.error("请检查输入精网号"); return Result.error("请检查输入精网号");
} }
} }
//查找用户全部信息
@PostMapping("/selectAllUser") @PostMapping("/selectAllUser")
public Result selectUser(@RequestBody User user) { public Result selectUser(@RequestBody User user) {
try { try {

2
src/main/java/com/example/demo/domain/entity/Admin.java

@ -24,7 +24,7 @@ public class Admin implements UserDetails, Serializable {
private String password; // 密码 private String password; // 密码
private String machineId; // 机器码限两个 private String machineId; // 机器码限两个
private Byte adminStatus; // 状态启用/不启用 private Byte adminStatus; // 状态启用/不启用
private String market; // 地区
private List<String> market; // 地区
private String postiton; // 职位 private String postiton; // 职位
private String remark; // 备注 private String remark; // 备注

2
src/main/java/com/example/demo/domain/entity/Menu.java

@ -23,7 +23,7 @@ public class Menu implements Serializable {
private String permission; // 权限标识 private String permission; // 权限标识
private Integer sort; // 排序 private Integer sort; // 排序
private Byte menuStatus; // 状态 private Byte menuStatus; // 状态
private Integer priority;//优先级
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime; // 创建时间 private Date createTime; // 创建时间

1
src/main/java/com/example/demo/domain/entity/Role.java

@ -17,6 +17,7 @@ public class Role implements Serializable {
private Integer id; // 角色id private Integer id; // 角色id
private String roleName; // 角色名 private String roleName; // 角色名
private String roleKey; // 角色标识符 private String roleKey; // 角色标识符
private Integer priority;//优先级
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime; // 创建时间 private Date createTime; // 创建时间

2
src/main/java/com/example/demo/domain/vo/AdminVo.java

@ -25,7 +25,7 @@ public class AdminVo implements UserDetails, Serializable {
private String machineId; // 第一个机器码 private String machineId; // 第一个机器码
private String machineIds; //第二个机器码 private String machineIds; //第二个机器码
private Byte adminStatus; // 状态启用/不启用 private Byte adminStatus; // 状态启用/不启用
private String market; // 地区
private List<String> market; // 地区
private String postiton; // 职位 private String postiton; // 职位
private String remark; // 备注 private String remark; // 备注

30
src/main/java/com/example/demo/domain/vo/MenuVo.java

@ -0,0 +1,30 @@
package com.example.demo.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @program: gold-java
* @ClassName MenuVo
* @description:
* @author: Double
* @create: 202507-15 13:16
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MenuVo {
private Integer id;//id
private String menuName;//菜单名
private Integer parentId;//父id
private Integer priority;//优先级
private Integer menuType;//类型
// 子菜单列表用于构建树形结构
private List<MenuVo> children;
}

30
src/main/java/com/example/demo/domain/vo/Password.java

@ -0,0 +1,30 @@
package com.example.demo.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @program: gold-java
* @ClassName Password
* @description:
* @author: Double
* @create: 202507-10 11:02
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Password implements Serializable {
private String account; // 账号
private String oldPassword;
private String newPassword;
private String againPassword;
}

20
src/main/java/com/example/demo/domain/vo/RoleMenu.java

@ -0,0 +1,20 @@
package com.example.demo.domain.vo;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: gold-java
* @ClassName RoleMenu
* @description:
* @author: Double
* @create: 202507-15 16:19
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class RoleMenu {
private Integer roleId; // 角色id
private Integer menuId; // 菜单id
}

38
src/main/java/com/example/demo/domain/vo/RoleVo.java

@ -0,0 +1,38 @@
package com.example.demo.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
* @ClassName RoleVo
* @description:
* @author: Double
* @create: 202507-15 11:45
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class RoleVo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id; // 角色id
private String roleName; // 角色名
private String roleKey; // 角色标识符
private Integer priority;//优先级
private Integer fatherId;//上级角色id
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime; // 创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date updateTime; // 更新时间
List<Integer> menuIds;//拥有的菜单id
}

10
src/main/java/com/example/demo/mapper/AdminMapper.java

@ -13,8 +13,18 @@ import org.apache.ibatis.annotations.Mapper;
**/ **/
@Mapper @Mapper
public interface AdminMapper { public interface AdminMapper {
//查找管理员信息
Admin getAdmin(String account); Admin getAdmin(String account);
Admin selectByName(String account); Admin selectByName(String account);
//获取管理员ID
Integer getId(String account); Integer getId(String account);
//更新密码
void updatePassword(Admin admin);
String getName(String account);
} }

6
src/main/java/com/example/demo/mapper/ConsumeMapper.java

@ -18,13 +18,19 @@ import java.util.List;
@Mapper @Mapper
public interface ConsumeMapper { public interface ConsumeMapper {
//查找全部订单
List<ConsumeUser> selectAll(ConsumeUser consumeUser); List<ConsumeUser> selectAll(ConsumeUser consumeUser);
//查找经过筛选后的订单
List<ConsumeUser> selectBy(ConsumeUser consumeUser); List<ConsumeUser> selectBy(ConsumeUser consumeUser);
//添加消费订单
void add(UserGoldRecord userGoldRecord); void add(UserGoldRecord userGoldRecord);
//更新退款状态
void updateIsRefund(String orderCode); void updateIsRefund(String orderCode);
//获得订单号
List<ConsumeUser> selectOrderCodeByJwcode(String jwcode,String orderCode); List<ConsumeUser> selectOrderCodeByJwcode(String jwcode,String orderCode);
} }

3
src/main/java/com/example/demo/mapper/GeneralMapper.java

@ -16,6 +16,9 @@ import java.util.List;
public interface GeneralMapper { public interface GeneralMapper {
List<String> getMarket(); List<String> getMarket();
List<String> getPlatform(); List<String> getPlatform();
//获取商品
List<String> getGoods(); List<String> getGoods();
//获取活动
List<String> getActivity(); List<String> getActivity();
} }

31
src/main/java/com/example/demo/mapper/MenuMapper.java

@ -0,0 +1,31 @@
package com.example.demo.mapper;
import com.example.demo.domain.entity.Menu;
import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.MenuVo;
import com.example.demo.domain.vo.RoleMenu;
import com.example.demo.domain.vo.RoleVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @program: gold-java
* @ClassName MenuMapper
* @description:
* @author: Double
* @create: 202507-15 13:28
* @Version 1.0
**/
@Mapper
public interface MenuMapper {
//根据角色ID查菜单权限
List<MenuVo> selectMenusByRoleId(Integer roleId);
//新增权限
void addPermission(List<RoleMenu> roleMenuList);
//查找菜单id
Menu selectByMenuId(Integer id);
}

1
src/main/java/com/example/demo/mapper/PermissionMapper.java

@ -3,6 +3,7 @@ package com.example.demo.mapper;
import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.AdminRole; import com.example.demo.domain.entity.AdminRole;
import com.example.demo.domain.entity.Role; import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.AdminVo;
import com.example.demo.domain.vo.Permission; import com.example.demo.domain.vo.Permission;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;

2
src/main/java/com/example/demo/mapper/RateMapper.java

@ -8,7 +8,7 @@ import java.util.List;
@Mapper @Mapper
public interface RateMapper { public interface RateMapper {
List<Rate> selectAll();
List<RateDetail> selectAll();
Rate selectById(Integer id); Rate selectById(Integer id);

5
src/main/java/com/example/demo/mapper/RechargeMapper.java

@ -19,9 +19,10 @@ import java.util.List;
@Mapper @Mapper
public interface RechargeMapper { public interface RechargeMapper {
//获取全部充值
List<RechargeUser> selectAll(RechargeUser rechargeUser); List<RechargeUser> selectAll(RechargeUser rechargeUser);
//获取筛选后的充值
List<RechargeUser> selectBy(RechargeUser rechargeUser); List<RechargeUser> selectBy(RechargeUser rechargeUser);
//添加充值订单
void add(UserGoldRecord userGoldRecord); void add(UserGoldRecord userGoldRecord);
} }

5
src/main/java/com/example/demo/mapper/RefundMapper.java

@ -19,14 +19,19 @@ import java.util.List;
@Mapper @Mapper
public interface RefundMapper { public interface RefundMapper {
//获取全部退款订单
List<RefundUser> selectAll(RefundUser refundUser); List<RefundUser> selectAll(RefundUser refundUser);
//获取筛选后的订单
List<RefundUser> selectBy(RefundUser refundUser); List<RefundUser> selectBy(RefundUser refundUser);
//添加退款订单
void add(UserGoldRecord userGoldRecord); void add(UserGoldRecord userGoldRecord);
//获取退款类型
List<String> getRefundType(); List<String> getRefundType();
//获取商品
List<RefundUser> selectGoods(Integer jwcode); List<RefundUser> selectGoods(Integer jwcode);
} }

34
src/main/java/com/example/demo/mapper/RoleMapper.java

@ -0,0 +1,34 @@
package com.example.demo.mapper;
import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.RoleVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Random;
/**
* @program: gold-java
* @ClassName RoleMaper
* @description:
* @author: Double
* @create: 202507-15 11:33
* @Version 1.0
**/
@Mapper
public interface RoleMapper {
//查找角色名
Role selectByRoleName(String roleName);
//查找角色id
Role selectByRoleId(Integer id);
//查找全部角色
List<RoleVo> selectAllRole();
//新建角色
void addRole(RoleVo roleVo);
}

8
src/main/java/com/example/demo/mapper/UserMapper.java

@ -22,24 +22,32 @@ import java.util.List;
@Mapper @Mapper
public interface UserMapper { public interface UserMapper {
//获取用户金币信息
GoldUser selectUser(String jwcode); GoldUser selectUser(String jwcode);
//获取金币数
GoldUser selectGold(String jwcode); GoldUser selectGold(String jwcode);
//更新金币数
void updateGold(User user); void updateGold(User user);
//查找用户全部信息
User selectAllUser(String jwcode); User selectAllUser(String jwcode);
//获取用户表全部jwcode //获取用户表全部jwcode
List<Integer> getAllJwcode(); List<Integer> getAllJwcode();
//获取某用户最早的充值订单 //获取某用户最早的充值订单
Date getEarliestRecharge(Integer jwcode); Date getEarliestRecharge(Integer jwcode);
//更新用户首充日期 //更新用户首充日期
void updateFirstRecharge(@Param("jwcode") Integer jwcode, void updateFirstRecharge(@Param("jwcode") Integer jwcode,
@Param("firstRecharge") Date firstRecharge); @Param("firstRecharge") Date firstRecharge);
void updateAllGold(User user); void updateAllGold(User user);
void addUser(User user); void addUser(User user);
//根据精网号查询用户 //根据精网号查询用户
User selectUserByJwcode(Integer jwcode); User selectUserByJwcode(Integer jwcode);

11
src/main/java/com/example/demo/service/AdminService.java

@ -1,6 +1,8 @@
package com.example.demo.service; package com.example.demo.service;
import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.Password;
import com.example.demo.domain.vo.Result;
/** /**
* @program: GOLD * @program: GOLD
@ -13,5 +15,14 @@ import com.example.demo.domain.entity.Admin;
public interface AdminService { public interface AdminService {
Admin login(Admin admin)throws Exception; Admin login(Admin admin)throws Exception;
//获取用户ID
String getId(String account); String getId(String account);
String getName(String account);
//更新密码
Result updatePassword(Password password);
//重置密码
Result resetPassword(Password password);
} }

4
src/main/java/com/example/demo/service/ConsumeService.java

@ -18,11 +18,15 @@ import com.github.pagehelper.PageInfo;
public interface ConsumeService { public interface ConsumeService {
//查询全部消费
PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize, ConsumeUser consumeUser); PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize, ConsumeUser consumeUser);
//统计消费金币
Gold statsGold(ConsumeUser consumeUser); Gold statsGold(ConsumeUser consumeUser);
//查询筛选消费
PageInfo<ConsumeUser> selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser); PageInfo<ConsumeUser> selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser);
//增加消费订单
Result add(ConsumeUser consumeUser); Result add(ConsumeUser consumeUser);
} }

27
src/main/java/com/example/demo/service/MenuService.java

@ -0,0 +1,27 @@
package com.example.demo.service;
import java.util.List;
import com.example.demo.domain.vo.MenuVo;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
/**
* @program: gold-java
* @ClassName MenuService
* @description:
* @author: Double
* @create: 202507-15 13:38
* @Version 1.0
**/
public interface MenuService {
//根据角色ID生成权限树
List<MenuVo> getPermissionTree(Integer roleId);
//新增权限
Result addPermission(RoleVo roleVo);
}

6
src/main/java/com/example/demo/service/PermissionService.java

@ -3,7 +3,9 @@ package com.example.demo.service;
import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.AdminRole; import com.example.demo.domain.entity.AdminRole;
import com.example.demo.domain.entity.Role; import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.AdminVo;
import com.example.demo.domain.vo.Permission; import com.example.demo.domain.vo.Permission;
import com.example.demo.domain.vo.Result;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import java.util.List; import java.util.List;
@ -26,6 +28,6 @@ public interface PermissionService {
//权限编辑用户 //权限编辑用户
Integer updateAdminRole(AdminRole adminRole); Integer updateAdminRole(AdminRole adminRole);
Integer upadatePermission(Admin admin) throws Exception; Integer upadatePermission(Admin admin) throws Exception;
Object updateAdmin(Admin admin)throws Exception;
//更新管理员信息
Result updateAdmin(AdminVo adminVo)throws Exception;
} }

2
src/main/java/com/example/demo/service/RateService.java

@ -7,7 +7,7 @@ import com.github.pagehelper.PageInfo;
public interface RateService { public interface RateService {
PageInfo<Rate> selectAll(Integer pageNum, Integer pageSize);
PageInfo<RateDetail> selectAll(Integer pageNum, Integer pageSize);
Rate selectById(Integer id); Rate selectById(Integer id);

4
src/main/java/com/example/demo/service/RechargeService.java

@ -16,11 +16,15 @@ import com.github.pagehelper.PageInfo;
**/ **/
public interface RechargeService { public interface RechargeService {
//查询所有充值
PageInfo<RechargeUser> selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser); PageInfo<RechargeUser> selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser);
//统计金币记录
Gold statsGold(RechargeUser rechargeUser); Gold statsGold(RechargeUser rechargeUser);
//查询筛选充值
PageInfo<RechargeUser> selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser); PageInfo<RechargeUser> selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser);
//添加充值记录
Result add(RechargeUser rechargeUser); Result add(RechargeUser rechargeUser);
} }

5
src/main/java/com/example/demo/service/RefundService.java

@ -20,16 +20,21 @@ import java.util.List;
public interface RefundService { public interface RefundService {
//查找全部退款
PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser); PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser);
//统计退款金额
Gold statsGold(RefundUser refundUser); Gold statsGold(RefundUser refundUser);
//查找筛选退款
PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser); PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser);
//添加退款记录
Result add(RefundUser refundUser); Result add(RefundUser refundUser);
//获取退款类型 //获取退款类型
List<String> getRefundType(); List<String> getRefundType();
//查找退款商品
List<RefundUser> selectGoods(Integer jwcode); List<RefundUser> selectGoods(Integer jwcode);
} }

25
src/main/java/com/example/demo/service/RoleService.java

@ -0,0 +1,25 @@
package com.example.demo.service;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
import java.util.List;
/**
* @program: gold-java
* @ClassName RoleService
* @description:
* @author: Double
* @create: 202507-15 11:29
* @Version 1.0
**/
public interface RoleService {
//新增角色
Result addRole(RoleVo roleVo);
//查找全部角色
List<RoleVo> selectAllRole();
}

7
src/main/java/com/example/demo/service/UserService.java

@ -17,14 +17,21 @@ import java.util.List;
public interface UserService { public interface UserService {
//查找用户部分信息
GoldUser selectUser(String jwcode); GoldUser selectUser(String jwcode);
//查找用户金币
GoldUser selectgold(String jwcode); GoldUser selectgold(String jwcode);
//查找用户全部信息
User selectAllUser(String jwcode); User selectAllUser(String jwcode);
//更新用户的全部金币 //更新用户的全部金币
void updateAllGold(User user); void updateAllGold(User user);
//新增用户 //新增用户
void addUser(User user); void addUser(User user);
//更新用户的首充时间 //更新用户的首充时间
void updateFirstRecharge(); void updateFirstRecharge();
} }

108
src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java

@ -1,18 +1,27 @@
package com.example.demo.serviceImpl; package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.Password;
import com.example.demo.domain.vo.Result;
import com.example.demo.mapper.AdminMapper; import com.example.demo.mapper.AdminMapper;
import com.example.demo.service.AdminService; import com.example.demo.service.AdminService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.regex.Pattern;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class AdminServiceImpl implements AdminService { public class AdminServiceImpl implements AdminService {
@ -55,11 +64,17 @@ public class AdminServiceImpl implements AdminService {
} }
} }
//获取用户ID
@Override @Override
public String getId(String account) { public String getId(String account) {
return adminMapper.getAdmin(account).getId().toString(); return adminMapper.getAdmin(account).getId().toString();
} }
@Override
public String getName(String account) {
return adminMapper.getName(account);
}
private boolean hasPermissionToMachine(Admin admin, String targetMachineId) { private boolean hasPermissionToMachine(Admin admin, String targetMachineId) {
if (targetMachineId == null || admin.getMachineId() == null) { if (targetMachineId == null || admin.getMachineId() == null) {
return false; return false;
@ -72,4 +87,97 @@ public class AdminServiceImpl implements AdminService {
} }
return false; return false;
} }
private static final String PASSWORD_REGEX = "^(?![0-9]+$)(?![a-zA-Z]+$)(?!\\W+$).{8,16}$";
private static final Pattern PASSWORD_PATTERN = Pattern.compile(PASSWORD_REGEX);
//更新密码
@Override
public Result updatePassword(Password password) {
String oldPassword = password.getOldPassword();
String newPassword = password.getNewPassword();
String againPassword = password.getAgainPassword();
// 校验输入参数是否为空账号旧密码新密码确认密码均不可为空
if(oldPassword == null || newPassword == null || againPassword == null ||password.getAccount() == null) {
return Result.error("输入不能为空");
}
// 检查两次输入的新密码是否一致
if (!newPassword.equals(againPassword)) {
return Result.error("两次输入的新密码不一致");
}
// 检查新密码是否符合复杂度要求
if (!PASSWORD_PATTERN.matcher(newPassword).matches()) {
return Result.error("新密码必须为8-16位数字、字母或符号组成,且至少包含其中两种");
}
if(adminMapper.getAdmin(password.getAccount())==null)
{
return Result.error("用户不存在");
}
// 校验新密码是否与旧密码相同不允许相同
if (oldPassword.equals(newPassword)) {
return Result.error("新密码与历史密码重复");
}
try {
// 创建认证令牌并验证旧密码
UsernamePasswordAuthenticationToken token =
new UsernamePasswordAuthenticationToken(password.getAccount(), oldPassword);
Authentication authentication = authenticationManager.authenticate(token);
// 获取认证后的用户信息
Admin admin = (Admin) authentication.getPrincipal();
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
// 使用Spring管理的密码编码器不要手动new
String encodedPassword = passwordEncoder.encode(newPassword);
// 更新数据库中的密码
admin.setPassword(encodedPassword);
admin.setUpdateTime(new Date()); // 更新修改时间
adminMapper.updatePassword(admin);
return Result.success("密码修改成功");
} catch (BadCredentialsException e) {
// 旧密码验证失败
return Result.error("原密码错误");
}
catch (Exception e) {
return Result.error("密码更新失败");
}
}
//重置密码
@Override
public Result resetPassword(Password password) {
String newPassword = "123456";
if(password.getAccount() == null) {
return Result.error("账户未输入");
}
if(adminMapper.getAdmin(password.getAccount())==null)
{
return Result.error("账户查找不到");
}
try {
// 获取认证后的用户信息
Admin admin = adminMapper.getAdmin(password.getAccount());
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
// 使用Spring管理的密码编码器不要手动new
String encodedPassword = passwordEncoder.encode(newPassword);
// 更新数据库中的密码
admin.setPassword(encodedPassword);
admin.setUpdateTime(new Date()); // 更新修改时间
adminMapper.updatePassword(admin);
return Result.success("密码重置成功");
}
catch (Exception e) {
return Result.error("其他错误");
}
}
} }

1
src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java

@ -146,6 +146,7 @@ public class ConsumeServiceImpl implements ConsumeService {
userGoldRecord.setFreeJune(0); userGoldRecord.setFreeJune(0);
} }
} }
//信息输入
userGoldRecord.setTaskGold(-consumeUser.getTaskGold()); userGoldRecord.setTaskGold(-consumeUser.getTaskGold());
userGoldRecord.setRemark(consumeUser.getRemark()); userGoldRecord.setRemark(consumeUser.getRemark());
userGoldRecord.setType((byte) 1); userGoldRecord.setType((byte) 1);

9
src/main/java/com/example/demo/serviceImpl/GoldDetailServiceImpl.java

@ -9,6 +9,7 @@ import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.*; import com.example.demo.domain.vo.*;
import com.example.demo.exception.SystemException; import com.example.demo.exception.SystemException;
import com.example.demo.mapper.GoldDetailMapper; import com.example.demo.mapper.GoldDetailMapper;
import com.example.demo.service.AdminService;
import com.example.demo.service.GoldDetailService; import com.example.demo.service.GoldDetailService;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
@ -42,6 +43,8 @@ public class GoldDetailServiceImpl implements GoldDetailService {
private GoldDetailMapper goldDetailMapper; private GoldDetailMapper goldDetailMapper;
@Autowired @Autowired
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Autowired
private AdminService adminService;
@Override @Override
public PageInfo<GoldDetail> getGoldDetail(Integer pageNum, Integer pageSize, GoldDetail goldDetail) { public PageInfo<GoldDetail> getGoldDetail(Integer pageNum, Integer pageSize, GoldDetail goldDetail) {
@ -124,10 +127,11 @@ public class GoldDetailServiceImpl implements GoldDetailService {
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
String admin = adminService.getName(String.valueOf(dto.getAccount()));
// 生成文件名 // 生成文件名
String fileName = String.format("%s_%s_%s.xlsx", String fileName = String.format("%s_%s_%s.xlsx",
"客户金币明细", "客户金币明细",
"操作人",
admin,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
System.out.println(fileName); System.out.println(fileName);
dto.setUrl(""); dto.setUrl("");
@ -182,10 +186,11 @@ public class GoldDetailServiceImpl implements GoldDetailService {
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e.getMessage()); throw new RuntimeException(e.getMessage());
} }
String admin = adminService.getName(String.valueOf(dto.getAccount()));
// 生成文件名 // 生成文件名
String fileName = String.format("%s_%s_%s.xlsx", String fileName = String.format("%s_%s_%s.xlsx",
"金币余额明细", "金币余额明细",
"操作人",
admin,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
System.out.println(fileName); System.out.println(fileName);
dto.setUrl(""); dto.setUrl("");

100
src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java

@ -0,0 +1,100 @@
package com.example.demo.serviceImpl;
import com.example.demo.domain.vo.MenuVo;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleMenu;
import com.example.demo.domain.vo.RoleVo;
import com.example.demo.mapper.MenuMapper;
import com.example.demo.mapper.RoleMapper;
import com.example.demo.service.MenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @program: gold-java
* @ClassName MenuServiceImpl
* @description:
* @author: Double
* @create: 202507-15 13:38
* @Version 1.0
**/
@Service
public class MenuServiceImpl implements MenuService {
@Autowired
private MenuMapper menuMapper;
@Autowired
private RoleMapper roleMapper;
//构建菜单树
@Override
public List<MenuVo> getPermissionTree(Integer roleId) {
// 1. 查询该管理员的所有权限菜单平级列表
List<MenuVo> allMenus = menuMapper.selectMenusByRoleId(roleId);
// 2. 构建树形结构根节点parentId=1
return buildTree(allMenus, 1);
}
/**
* 递归构建树形结构
* @param allMenus 所有菜单列表
* @param parentId 父菜单ID初始为0查根节点
*/
//详细递归构建树过程
private List<MenuVo> buildTree(List<MenuVo> allMenus, Integer parentId) {
// 过滤出当前父节点的子菜单
List<MenuVo> children = allMenus.stream()
.filter(menu -> Objects.equals(menu.getParentId(), parentId))
.collect(Collectors.toList());
// 递归为每个子菜单设置子节点
for (MenuVo child : children) {
child.setChildren(buildTree(allMenus, child.getId()));
}
return children;
}
//新增权限
@Override
@Transactional
public Result addPermission(RoleVo roleVo) {
//校验
if(Objects.isNull(roleVo)) {
return Result.error("传入角色为空");
}
if(Objects.isNull(roleVo.getId())) {
return Result.error("角色ID为空");
}
if(roleVo.getMenuIds() == null||roleVo.getMenuIds().isEmpty()) {
return Result.error("角色权限为空");
}
if(roleMapper.selectByRoleId(roleVo.getId())==null){
return Result.error("角色不存在");
}
//角色菜单权限对应
List<RoleMenu> roleMenuList = new ArrayList<>();
//循环导入
for (Integer menuId : roleVo.getMenuIds()) {
if(menuMapper.selectByMenuId(menuId)==null){
return Result.error("菜单不存在");
}
RoleMenu roleMenu = new RoleMenu();
roleMenu.setRoleId(roleVo.getId());
roleMenu.setMenuId(menuId);
roleMenuList.add(roleMenu);
}
//提交
menuMapper.addPermission(roleMenuList);
return Result.success("权限新增成功");
}
}

69
src/main/java/com/example/demo/serviceImpl/PermissionServiceImpl.java

@ -3,9 +3,13 @@ package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.AdminRole; import com.example.demo.domain.entity.AdminRole;
import com.example.demo.domain.entity.Role; import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.AdminVo;
import com.example.demo.domain.vo.Password;
import com.example.demo.domain.vo.Permission; import com.example.demo.domain.vo.Permission;
import com.example.demo.domain.vo.Result;
import com.example.demo.mapper.AdminMapper; import com.example.demo.mapper.AdminMapper;
import com.example.demo.mapper.PermissionMapper; import com.example.demo.mapper.PermissionMapper;
import com.example.demo.service.AdminService;
import com.example.demo.service.PermissionService; import com.example.demo.service.PermissionService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
@ -15,6 +19,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.Collections;
import java.util.List; import java.util.List;
/** /**
@ -32,6 +37,9 @@ public class PermissionServiceImpl implements PermissionService {
private PermissionMapper permissionMapper; private PermissionMapper permissionMapper;
@Autowired @Autowired
private AdminMapper adminMapper; private AdminMapper adminMapper;
@Autowired
private AdminService adminService;
@Override @Override
public List<String> getposition(String token) { public List<String> getposition(String token) {
return permissionMapper.getposition(token); return permissionMapper.getposition(token);
@ -62,6 +70,9 @@ public class PermissionServiceImpl implements PermissionService {
if (ObjectUtils.isEmpty(admin.getMarket())) { if (ObjectUtils.isEmpty(admin.getMarket())) {
throw new Exception("地区为空!"); throw new Exception("地区为空!");
} }
if (admin.getMarket().contains("总部") && admin.getMarket().size() > 1) {
throw new Exception("总部不可与其他地区共存");
}
if (ObjectUtils.isEmpty(admin.getPostiton())) { if (ObjectUtils.isEmpty(admin.getPostiton())) {
throw new Exception("职位为空!"); throw new Exception("职位为空!");
} }
@ -76,10 +87,12 @@ public class PermissionServiceImpl implements PermissionService {
} }
if (admin.getMachineId().contains(",")) { if (admin.getMachineId().contains(",")) {
throw new Exception("机器编号格式错误"); throw new Exception("机器编号格式错误");
}
else {
} else {
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
admin.setPassword(passwordEncoder.encode(("123456"))); admin.setPassword(passwordEncoder.encode(("123456")));
// 将地区列表转换为逗号分隔的字符串
String markets = String.join(",", admin.getMarket());
admin.setMarket(Collections.singletonList(markets));
permissionMapper.addPermission(admin); permissionMapper.addPermission(admin);
AdminRole adminRole = new AdminRole(); AdminRole adminRole = new AdminRole();
adminRole.setAdminId(admin.getId()); adminRole.setAdminId(admin.getId());
@ -115,32 +128,50 @@ public class PermissionServiceImpl implements PermissionService {
return permissionMapper.updatePermission(admin); return permissionMapper.updatePermission(admin);
} }
//更新管理员信息
@Override @Override
public Object updateAdmin(Admin admin)throws Exception {
if(ObjectUtils.isEmpty(admin.getAccount())){
public Result updateAdmin(AdminVo adminVo) throws Exception {
// 校验账号是否为空账号是唯一标识必须存在
if (ObjectUtils.isEmpty(adminVo.getAccount())) {
throw new Exception("账号为空!"); throw new Exception("账号为空!");
} }
if(ObjectUtils.isEmpty( admin.getMarket())){
// 校验用户名是否为空管理员姓名为必填项
if (ObjectUtils.isEmpty(adminVo.getAdminName())) {
throw new Exception("用户名为空!");
}
// 校验地区是否为空管理员所属地区为必填项
if (ObjectUtils.isEmpty(adminVo.getMarket())) {
throw new Exception("地区为空!"); throw new Exception("地区为空!");
} }
if(ObjectUtils.isEmpty( admin.getPostiton())){
if (adminVo.getMarket().contains("总部") && adminVo.getMarket().size() > 1) {
throw new Exception("总部不可与其他地区共存");
}
// 校验职位是否为空管理员职位为必填项
if (ObjectUtils.isEmpty(adminVo.getPostiton())) {
throw new Exception("职位为空!"); throw new Exception("职位为空!");
} }
if(ObjectUtils.isEmpty( admin.getAdminName())){
throw new Exception("用户名为空!");
}
if(ObjectUtils.isEmpty( admin.getMachineId())){
throw new Exception("机器编号为空!");
}
if (admin.getMachineId().contains(",")) {
// 校验机器编号格式不允许包含逗号避免与后续拼接逻辑冲突
if (adminVo.getMachineId().contains(",")) {
throw new Exception("机器编号格式错误"); throw new Exception("机器编号格式错误");
}
else {
return permissionMapper.updateAdmin(admin);
} else {
Admin admin = new Admin();
admin.setAccount(adminVo.getAccount());
admin.setAdminName(adminVo.getAdminName());
admin.setMarket(adminVo.getMarket());
admin.setPostiton(adminVo.getPostiton());
// 将地区列表转换为逗号分隔的字符串
String markets = String.join(",", admin.getMarket());
admin.setMarket(Collections.singletonList(markets));
// 处理机器编号若存在额外机器编号machineIds则与原编号拼接用逗号分隔
if (adminVo.getMachineIds() == null) {
admin.setMachineId(adminVo.getMachineId());
} else {
admin.setMachineId(adminVo.getMachineId() + "," + adminVo.getMachineIds());
}
admin.setRemark(adminVo.getRemark());
permissionMapper.updateAdmin(admin);
return Result.success("成功");
} }
} }

4
src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java

@ -22,9 +22,9 @@ public class RateServiceImpl implements RateService {
@Override @Override
public PageInfo<Rate> selectAll(Integer pageNum, Integer pageSize) {
public PageInfo<RateDetail> selectAll(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);
List<Rate> rates = rateMapper.selectAll();
List<RateDetail> rates = rateMapper.selectAll();
return new PageInfo<>(rates); return new PageInfo<>(rates);
} }

10
src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java

@ -38,7 +38,7 @@ public class RechargeServiceImpl implements RechargeService {
@Autowired @Autowired
private UserMapper userMapper; private UserMapper userMapper;
//查询所有充值
@Override @Override
public PageInfo<RechargeUser> selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) { public PageInfo<RechargeUser> selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) {
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);
@ -46,6 +46,7 @@ public class RechargeServiceImpl implements RechargeService {
return new PageInfo<>(rechargeUsers); return new PageInfo<>(rechargeUsers);
} }
//查询筛选充值
@Override @Override
public PageInfo<RechargeUser> selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) { public PageInfo<RechargeUser> selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) {
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);
@ -53,6 +54,7 @@ public class RechargeServiceImpl implements RechargeService {
return new PageInfo<>(rechargeUsers); return new PageInfo<>(rechargeUsers);
} }
//统计金币记录
@Override @Override
public Gold statsGold(RechargeUser rechargeUser) { public Gold statsGold(RechargeUser rechargeUser) {
Gold gold = new Gold(); Gold gold = new Gold();
@ -82,13 +84,14 @@ public class RechargeServiceImpl implements RechargeService {
} }
//添加充值记录
@Override @Override
public Result add(RechargeUser rechargeUser) { public Result add(RechargeUser rechargeUser) {
if(rechargeUser.getFreeGold()==null||rechargeUser.getPermanentGold()==null||rechargeUser.getMoney()==null){ if(rechargeUser.getFreeGold()==null||rechargeUser.getPermanentGold()==null||rechargeUser.getMoney()==null){
return Result.error("金币和金额不能为空"); return Result.error("金币和金额不能为空");
} }
if(rechargeUser.getFreeGold()<0||rechargeUser.getPermanentGold()<=0||rechargeUser.getMoney()<=0){
return Result.error("充值不能为负数或0");
if(rechargeUser.getFreeGold()<0||rechargeUser.getPermanentGold()<0||rechargeUser.getMoney()<0){
return Result.error("充值不能为0");
} }
GoldUser goldUser = userMapper.selectUser(rechargeUser.getJwcode().toString()); GoldUser goldUser = userMapper.selectUser(rechargeUser.getJwcode().toString());
if(goldUser==null){ if(goldUser==null){
@ -120,6 +123,7 @@ public class RechargeServiceImpl implements RechargeService {
userGoldRecord.setFreeJune(rechargeUser.getFreeGold()); userGoldRecord.setFreeJune(rechargeUser.getFreeGold());
userGoldRecord.setFreeDecember(0); userGoldRecord.setFreeDecember(0);
} }
//数据输入
userGoldRecord.setSumGold(rechargeUser.getFreeGold()+rechargeUser.getPermanentGold()); userGoldRecord.setSumGold(rechargeUser.getFreeGold()+rechargeUser.getPermanentGold());
userGoldRecord.setRateId(rechargeUser.getRateId()); userGoldRecord.setRateId(rechargeUser.getRateId());
userGoldRecord.setMoney(rechargeUser.getMoney()); userGoldRecord.setMoney(rechargeUser.getMoney());

9
src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java

@ -44,7 +44,7 @@ public class RefundServiceImpl implements RefundService {
@Autowired @Autowired
private UserMapper userMapper; private UserMapper userMapper;
//查找全部退款
@Override @Override
public PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) { public PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) {
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);
@ -52,6 +52,7 @@ public class RefundServiceImpl implements RefundService {
return new PageInfo<>(refundUsers); return new PageInfo<>(refundUsers);
} }
//统计退款金额
@Override @Override
public Gold statsGold(RefundUser refundUser) { public Gold statsGold(RefundUser refundUser) {
Gold gold = new Gold(); Gold gold = new Gold();
@ -86,6 +87,7 @@ public class RefundServiceImpl implements RefundService {
return gold; return gold;
} }
//查找筛选退款
@Override @Override
public PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser) { public PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser) {
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);
@ -93,6 +95,7 @@ public class RefundServiceImpl implements RefundService {
return new PageInfo<>(refundUsers); return new PageInfo<>(refundUsers);
} }
//添加退款记录
@Transactional @Transactional
@Override @Override
public Result add(RefundUser refundUser) { public Result add(RefundUser refundUser) {
@ -140,6 +143,7 @@ public class RefundServiceImpl implements RefundService {
userGoldRecord.setFreeJune(refundUser.getFreeGold()); userGoldRecord.setFreeJune(refundUser.getFreeGold());
userGoldRecord.setFreeDecember(0); userGoldRecord.setFreeDecember(0);
} }
//信息输入
userGoldRecord.setTaskGold(refundUser.getTaskGold()); userGoldRecord.setTaskGold(refundUser.getTaskGold());
userGoldRecord.setSumGold(refundUser.getSumGold()); userGoldRecord.setSumGold(refundUser.getSumGold());
userGoldRecord.setPayPlatform("金币系统"); userGoldRecord.setPayPlatform("金币系统");
@ -149,6 +153,7 @@ public class RefundServiceImpl implements RefundService {
userGoldRecord.setAuditStatus(0); userGoldRecord.setAuditStatus(0);
userGoldRecord.setCreateTime(new Date()); userGoldRecord.setCreateTime(new Date());
List<ConsumeUser> list = consumeMapper.selectOrderCodeByJwcode(userGoldRecord.getJwcode().toString(), orderCode); List<ConsumeUser> list = consumeMapper.selectOrderCodeByJwcode(userGoldRecord.getJwcode().toString(), orderCode);
//消费订单号校验
if (list == null || list.isEmpty()) { if (list == null || list.isEmpty()) {
return Result.error("该用户没有该订单号"); return Result.error("该用户没有该订单号");
}else if(list.size()==1){ }else if(list.size()==1){
@ -165,6 +170,7 @@ public class RefundServiceImpl implements RefundService {
return Result.success(); return Result.success();
} }
//获取退款类型
@Override @Override
public List<String> getRefundType() { public List<String> getRefundType() {
List<String> list = refundMapper.getRefundType(); List<String> list = refundMapper.getRefundType();
@ -175,6 +181,7 @@ public class RefundServiceImpl implements RefundService {
return filteredList; return filteredList;
} }
//查找退款商品
@Override @Override
public List<RefundUser> selectGoods(Integer jwcode) { public List<RefundUser> selectGoods(Integer jwcode) {
List<RefundUser> refundUsers = refundMapper.selectGoods(jwcode); List<RefundUser> refundUsers = refundMapper.selectGoods(jwcode);

97
src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java

@ -0,0 +1,97 @@
package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
import com.example.demo.mapper.RefundMapper;
import com.example.demo.mapper.RoleMapper;
import com.example.demo.service.MenuService;
import com.example.demo.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @program: gold-java
* @ClassName RoleServiceImpl
* @description:
* @author: Double
* @create: 202507-15 11:30
* @Version 1.0
**/
@Service
public class RoleServiceImpl implements RoleService {
@Autowired
private RoleMapper roleMapper;
@Autowired
private MenuService menuService;
//新增角色
@Override
@Transactional
public Result addRole(RoleVo roleVo) {
//校验角色
if(roleVo.getRoleName()==null|| roleVo.getRoleName().isEmpty()){
return Result.error("角色名为空");
}
if(roleMapper.selectByRoleName(roleVo.getRoleName())!=null){
return Result.error("角色名重复");
}
if(roleVo.getPriority()==null){
return Result.error("优先级为空");
}
if(roleVo.getMenuIds()==null||roleVo.getMenuIds().isEmpty()){
return Result.error("权限为空");
}
try {
roleMapper.addRole(roleVo);
Role role = roleMapper.selectByRoleName(roleVo.getRoleName());
if(role==null){
return Result.error("角色添加失败");
}else{
roleVo.setId(role.getId());
}
menuService.addPermission(roleVo);
}catch (Exception e)
{
return Result.error("添加失败");
}
return Result.success("创建成功");
}
//查找全部角色
@Override
public List<RoleVo> selectAllRole() {
return roleMapper.selectAllRole();
}
}

8
src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java

@ -42,7 +42,7 @@ public class StatisticsServiceImpl implements StatisticsService {
每小时执行定时任务更新当天part1数据 每小时执行定时任务更新当天part1数据
*/ */
@Override @Override
// @Scheduled(cron = "0 0 * * * ?") // 每小时执行一次
@Scheduled(cron = "0 0 * * * ?") // 每小时执行一次
public void runHourlyTaskPart1() { public void runHourlyTaskPart1() {
Date today = new Date(); //取当天日期 Date today = new Date(); //取当天日期
for(String market : generalService.getMarket()){ for(String market : generalService.getMarket()){
@ -54,7 +54,7 @@ public class StatisticsServiceImpl implements StatisticsService {
每小时执行定时任务更新当天part2数据 每小时执行定时任务更新当天part2数据
*/ */
@Override @Override
// @Scheduled(cron = "0 0 * * * ?") // 每小时执行一次
@Scheduled(cron = "0 0 * * * ?") // 每小时执行一次
public void runHourlyTaskPart2() { public void runHourlyTaskPart2() {
Date today = new Date(); //取当天日期 Date today = new Date(); //取当天日期
for(String market : generalService.getMarket()){ for(String market : generalService.getMarket()){
@ -65,7 +65,7 @@ public class StatisticsServiceImpl implements StatisticsService {
每小时执行定时任务更新年度数据 每小时执行定时任务更新年度数据
*/ */
@Override @Override
// @Scheduled(cron = "0 0 * * * ?") // 每小时执行一次
@Scheduled(cron = "0 0 * * * ?") // 每小时执行一次
public void runHourlyTaskYear() { public void runHourlyTaskYear() {
Date today = new Date(); Date today = new Date();
// 获取当前日期 // 获取当前日期
@ -86,7 +86,7 @@ public class StatisticsServiceImpl implements StatisticsService {
0点执行定时任务更新近一周part2数据 0点执行定时任务更新近一周part2数据
*/ */
@Override @Override
// @Scheduled(cron = "0 0 0 * * ?")
@Scheduled(cron = "0 0 0 * * ?")
public void runDailyTaskPart2() { public void runDailyTaskPart2() {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, -7); // 一周前 cal.add(Calendar.DAY_OF_YEAR, -7); // 一周前

3
src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java

@ -29,12 +29,14 @@ public class UserServiceImpl implements UserService {
@Autowired @Autowired
private UserMapper userMapper; private UserMapper userMapper;
//查找用户部分信息
@Override @Override
public GoldUser selectUser(String jwcode) { public GoldUser selectUser(String jwcode) {
GoldUser user = userMapper.selectUser(jwcode); GoldUser user = userMapper.selectUser(jwcode);
return user; return user;
} }
//查找用户全部信息
@Override @Override
public User selectAllUser(String jwcode) { public User selectAllUser(String jwcode) {
User user = userMapper.selectAllUser(jwcode); User user = userMapper.selectAllUser(jwcode);
@ -72,6 +74,7 @@ public class UserServiceImpl implements UserService {
} }
} }
//查找用户金币
@Override @Override
public GoldUser selectgold(String jwcode) { public GoldUser selectgold(String jwcode) {
GoldUser gold = userMapper.selectGold(jwcode); GoldUser gold = userMapper.selectGold(jwcode);

6
src/main/resources/application.yml

@ -4,9 +4,9 @@ spring:
fail-on-unknown-properties: false fail-on-unknown-properties: false
datasource: datasource:
mysql1: mysql1:
jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgold?serverTimezone=Asia/Shanghai
username: hwgold
password: aDiw7MERSATdfGta
jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgoldc?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true
username: hwgoldc
password: zB48T55wCsHC8KPz
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
hikari: hikari:
pool-name: mysql1HikariCP pool-name: mysql1HikariCP

12
src/main/resources/mapper/AdminMapper.xml

@ -14,4 +14,16 @@
select id from admin select id from admin
where account=#{account} where account=#{account}
</select> </select>
<!--更新用户密码-->
<update id="updatePassword">
update admin
set password = #{password},
update_time = #{updateTime}
where account = #{account}
</update>
<select id="getName" resultType="java.lang.String">
select admin_name from admin
where account= #{account}
</select>
</mapper> </mapper>

42
src/main/resources/mapper/ConsumeMapper.xml

@ -16,12 +16,12 @@
ugr.remark AS remark, ugr.remark AS remark,
a.admin_name AS adminName, a.admin_name AS adminName,
ugr.create_time AS createTime ugr.create_time AS createTime
FROM user u
JOIN
user_gold_record ugr ON u.jwcode = ugr.jwcode
JOIN
FROM user_gold_record ugr
left JOIN
user u ON u.jwcode = ugr.jwcode
left JOIN
admin a ON ugr.admin_id = a.id admin a ON ugr.admin_id = a.id
WHERE ugr.type = 1
WHERE ugr.type = 1 AND ugr.flag = 1
<trim prefix="ORDER BY" suffixOverrides=","> <trim prefix="ORDER BY" suffixOverrides=",">
<choose> <choose>
<!-- 当指定排序字段时使用指定字段排序 --> <!-- 当指定排序字段时使用指定字段排序 -->
@ -30,7 +30,9 @@
<!-- 对三种金币数量的排序处理 --> <!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'taskGold'">ugr.task_gold</when> <when test="sortField == 'taskGold'">ugr.task_gold</when>
<when test="sortField == 'permanentGold'">ugr.permanent_gold</when> <when test="sortField == 'permanentGold'">ugr.permanent_gold</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december,
0))
</when>
<!-- 对时间字段的排序处理 --> <!-- 对时间字段的排序处理 -->
<when test="sortField == 'createTime'">ugr.create_time</when> <when test="sortField == 'createTime'">ugr.create_time</when>
<!-- 其他字段不支持排序,使用默认排序 --> <!-- 其他字段不支持排序,使用默认排序 -->
@ -72,13 +74,13 @@
ugr.remark AS remark, ugr.remark AS remark,
a.admin_name AS adminName, a.admin_name AS adminName,
ugr.create_time AS createTime ugr.create_time AS createTime
FROM user u
JOIN
user_gold_record ugr ON u.jwcode = ugr.jwcode
JOIN
FROM user_gold_record ugr
left JOIN
user u ON u.jwcode = ugr.jwcode
left JOIN
admin a ON ugr.admin_id = a.id admin a ON ugr.admin_id = a.id
<where> <where>
ugr.type = 1
ugr.type = 1 AND ugr.flag = 1
<if test="jwcode != null and jwcode != ''"> <if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode} AND ugr.jwcode = #{jwcode}
</if> </if>
@ -103,7 +105,9 @@
<!-- 对三种金币数量的排序处理 --> <!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'taskGold'">ugr.task_gold</when> <when test="sortField == 'taskGold'">ugr.task_gold</when>
<when test="sortField == 'permanentGold'">ugr.permanent_gold</when> <when test="sortField == 'permanentGold'">ugr.permanent_gold</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december,
0))
</when>
<!-- 对时间字段的排序处理 --> <!-- 对时间字段的排序处理 -->
<when test="sortField == 'createTime'">ugr.create_time</when> <when test="sortField == 'createTime'">ugr.create_time</when>
<!-- 其他字段不支持排序,使用默认排序 --> <!-- 其他字段不支持排序,使用默认排序 -->
@ -132,17 +136,17 @@
</select> </select>
<select id="selectOrderCodeByJwcode" resultType="com.example.demo.domain.vo.ConsumeUser"> <select id="selectOrderCodeByJwcode" resultType="com.example.demo.domain.vo.ConsumeUser">
SELECT
ugr.jwcode AS jwcode,
SELECT ugr.jwcode AS jwcode,
ugr.order_code AS orderCode, ugr.order_code AS orderCode,
ugr.is_refund AS isRefund ugr.is_refund AS isRefund
FROM user_gold_record ugr FROM user_gold_record ugr
where
ugr.order_code = #{orderCode}
where ugr.order_code = #{orderCode}
AND ugr.jwcode = #{jwcode} AND ugr.jwcode = #{jwcode}
AND ugr.flag = 1
</select> </select>
<insert id="add" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true" keyProperty="id">
<insert id="add" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true"
keyProperty="id">
INSERT INTO user_gold_record INSERT INTO user_gold_record
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
order_code, order_code,
@ -186,7 +190,7 @@
<update id="updateIsRefund" parameterType="java.lang.String"> <update id="updateIsRefund" parameterType="java.lang.String">
UPDATE user_gold_record UPDATE user_gold_record
SET is_refund = 1 SET is_refund = 1
where
order_code = #{orderCode}
where order_code = #{orderCode}
AND flag = 1
</update> </update>
</mapper> </mapper>

4
src/main/resources/mapper/GoldDetailMapper.xml

@ -13,6 +13,7 @@
left join `user` on `user`.jwcode = `ugr`.jwcode left join `user` on `user`.jwcode = `ugr`.jwcode
left join `admin` on `admin`.id = `ugr`.admin_id left join `admin` on `admin`.id = `ugr`.admin_id
<where> <where>
ugr.flag = 1 and
ugr.audit_status IN (1,3) ugr.audit_status IN (1,3)
<if test="jwcode != null"> <if test="jwcode != null">
and ugr.jwcode = #{jwcode} and ugr.jwcode = #{jwcode}
@ -44,6 +45,8 @@
select sum(sum_gold) as Goldtotal, sum(permanent_gold) as permanentGold, sum(free_june+free_december) as freeGold, sum(task_gold) as taskGold select sum(sum_gold) as Goldtotal, sum(permanent_gold) as permanentGold, sum(free_june+free_december) as freeGold, sum(task_gold) as taskGold
from user_gold_record from user_gold_record
<where> <where>
ugr.flag = 1 and
ugr.audit_status IN (1,3)
<if test="jwcode != null"> <if test="jwcode != null">
and `ugr`.jwcode = #{jwcode} and `ugr`.jwcode = #{jwcode}
</if> </if>
@ -103,6 +106,7 @@
left join `user` on `user`.jwcode = `ugr`.jwcode left join `user` on `user`.jwcode = `ugr`.jwcode
left join `admin` on `admin`.id = `ugr`.admin_id left join `admin` on `admin`.id = `ugr`.admin_id
<where> <where>
ugr.flag = 1
<if test="jwcode != null"> <if test="jwcode != null">
and `ugr`.jwcode = #{jwcode} and `ugr`.jwcode = #{jwcode}
</if> </if>

38
src/main/resources/mapper/MenuMapper.xml

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.MenuMapper">
<select id="selectMenusByRoleId" resultType="com.example.demo.domain.vo.MenuVo">
SELECT DISTINCT
m.id,
m.menu_name,
m.parent_id,
m.menu_type,
m.priority
FROM
role r
LEFT JOIN role_menu rm ON r.id = rm.role_id
LEFT JOIN menu m ON rm.menu_id = m.id
WHERE
r.id = #{roleId}
AND m.id IS NOT NULL
ORDER BY
m.parent_id,m.priority
</select>
<insert id="addPermission">
INSERT INTO role_menu (role_id, menu_id)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.roleId}, #{item.menuId})
</foreach>
</insert>
<select id="selectByMenuId" resultType="com.example.demo.domain.entity.Menu">
SELECT menu_name FROM menu
<where>
id = #{id}
</where>
</select>
</mapper>

8
src/main/resources/mapper/PermissionMapper.xml

@ -3,7 +3,7 @@
<mapper namespace="com.example.demo.mapper.PermissionMapper"> <mapper namespace="com.example.demo.mapper.PermissionMapper">
<insert id="addPermission" useGeneratedKeys="true" keyProperty="id" keyColumn="id"> <insert id="addPermission" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
insert into admin(admin_name,machine_id,account,password,market,postiton,remark,admin_status) insert into admin(admin_name,machine_id,account,password,market,postiton,remark,admin_status)
values(#{adminName},#{machineId},#{account},#{password},#{market},#{postiton},#{remark},1)
values(#{adminName},#{machineId},#{account},#{password},#{market[0]},#{postiton},#{remark},1)
</insert> </insert>
<insert id="addadminRole"> <insert id="addadminRole">
insert into admin_role(admin_id,role_id) insert into admin_role(admin_id,role_id)
@ -27,6 +27,7 @@
</set> </set>
where admin_id= #{id} where admin_id= #{id}
</update> </update>
<update id="updateAdmin"> <update id="updateAdmin">
update admin update admin
<set> <set>
@ -42,12 +43,11 @@
<if test="remark!=null"> <if test="remark!=null">
remark= #{remark}, remark= #{remark},
</if> </if>
<if test="market!=null">
market= #{market}
</if>
market= #{market[0]}
</set> </set>
where account= #{account} where account= #{account}
</update> </update>
<delete id="deleteAdmin"> <delete id="deleteAdmin">
delete from admin where id=#{id} delete from admin where id=#{id}
</delete> </delete>

10
src/main/resources/mapper/RechargeMapper.xml

@ -25,6 +25,7 @@
JOIN admin a ON ugr.admin_id = a.id JOIN admin a ON ugr.admin_id = a.id
JOIN rate r ON ugr.rate_id = r.id JOIN rate r ON ugr.rate_id = r.id
WHERE ugr.type = 0 AND ugr.audit_status IN (1,3) WHERE ugr.type = 0 AND ugr.audit_status IN (1,3)
AND ugr.flag = 1
<trim prefix="ORDER BY" suffixOverrides=","> <trim prefix="ORDER BY" suffixOverrides=",">
<choose> <choose>
@ -79,12 +80,13 @@
ugr.admin_id AS adminId, ugr.admin_id AS adminId,
a.admin_name AS adminName, a.admin_name AS adminName,
ugr.pay_time AS payTime ugr.pay_time AS payTime
FROM user u
JOIN user_gold_record ugr ON u.jwcode = ugr.jwcode
JOIN admin a ON ugr.admin_id = a.id
JOIN rate r ON ugr.rate_id = r.id
FROM user_gold_record ugr
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
<where> <where>
ugr.type = 0 AND ugr.audit_status IN (1,3) ugr.type = 0 AND ugr.audit_status IN (1,3)
AND ugr.flag = 1
<if test="jwcode != null and jwcode != ''"> <if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode} AND ugr.jwcode = #{jwcode}
</if> </if>

35
src/main/resources/mapper/RefundMapper.xml

@ -19,11 +19,11 @@
a.admin_name AS adminName, a.admin_name AS adminName,
ugr.create_time AS createTime ugr.create_time AS createTime
FROM user u FROM user u
JOIN
left JOIN
user_gold_record ugr ON u.jwcode = ugr.jwcode user_gold_record ugr ON u.jwcode = ugr.jwcode
JOIN
left JOIN
admin a ON ugr.admin_id = a.id admin a ON ugr.admin_id = a.id
WHERE ugr.type = 2 AND ugr.audit_status IN (1,3)
WHERE ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1
<trim prefix="ORDER BY" suffixOverrides=","> <trim prefix="ORDER BY" suffixOverrides=",">
<choose> <choose>
<!-- 当指定排序字段时使用指定字段排序 --> <!-- 当指定排序字段时使用指定字段排序 -->
@ -32,7 +32,9 @@
<!-- 对三种金币数量的排序处理 --> <!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'taskGold'">ugr.task_gold</when> <when test="sortField == 'taskGold'">ugr.task_gold</when>
<when test="sortField == 'permanentGold'">ugr.permanent_gold</when> <when test="sortField == 'permanentGold'">ugr.permanent_gold</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december,
0))
</when>
<!-- 对时间字段的排序处理 --> <!-- 对时间字段的排序处理 -->
<when test="sortField == 'createTime'">ugr.create_time</when> <when test="sortField == 'createTime'">ugr.create_time</when>
<!-- 其他字段不支持排序,使用默认排序 --> <!-- 其他字段不支持排序,使用默认排序 -->
@ -76,13 +78,13 @@
ugr.remark AS remark, ugr.remark AS remark,
a.admin_name AS adminName, a.admin_name AS adminName,
ugr.create_time AS createTime ugr.create_time AS createTime
FROM user u
JOIN
user_gold_record ugr ON u.jwcode = ugr.jwcode
JOIN
FROM user_gold_record ugr
left JOIN
user u ON u.jwcode = ugr.jwcode
left JOIN
admin a ON ugr.admin_id = a.id admin a ON ugr.admin_id = a.id
<where> <where>
ugr.type = 2 AND ugr.audit_status IN (1,3)
ugr.type = 2 AND ugr.audit_status IN (1,3) AND ugr.flag = 1
<if test="jwcode != null and jwcode != ''"> <if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode} AND ugr.jwcode = #{jwcode}
</if> </if>
@ -107,8 +109,12 @@
<!-- 对三种金币数量的排序处理 --> <!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'taskGold'">ugr.task_gold</when> <when test="sortField == 'taskGold'">ugr.task_gold</when>
<when test="sortField == 'permanentGold'">ugr.permanent_gold</when> <when test="sortField == 'permanentGold'">ugr.permanent_gold</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))</when>
<when test="sortField == 'sumGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)+ COALESCE(ugr.permanent_gold, 0)+ COALESCE(ugr.task_gold, 0))</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december,
0))
</when>
<when test="sortField == 'sumGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december,
0)+ COALESCE(ugr.permanent_gold, 0)+ COALESCE(ugr.task_gold, 0))
</when>
<!-- 对时间字段的排序处理 --> <!-- 对时间字段的排序处理 -->
<when test="sortField == 'createTime'">ugr.create_time</when> <when test="sortField == 'createTime'">ugr.create_time</when>
<!-- 其他字段不支持排序,使用默认排序 --> <!-- 其他字段不支持排序,使用默认排序 -->
@ -136,7 +142,8 @@
</trim> </trim>
</select> </select>
<insert id="add" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true" keyProperty="id">
<insert id="add" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true"
keyProperty="id">
INSERT INTO user_gold_record INSERT INTO user_gold_record
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
order_code, order_code,
@ -178,7 +185,8 @@
</insert> </insert>
<select id="getRefundType" resultType="java.lang.String"> <select id="getRefundType" resultType="java.lang.String">
select DISTINCT refund_Type from user_gold_record
select DISTINCT refund_Type
from user_gold_record
</select> </select>
<select id="selectGoods" resultType="com.example.demo.domain.vo.RefundUser"> <select id="selectGoods" resultType="com.example.demo.domain.vo.RefundUser">
@ -193,6 +201,7 @@
<where> <where>
ugr.type = 1 ugr.type = 1
AND ugr.is_refund = 0 AND ugr.is_refund = 0
AND ugr.flag = 1
<if test="jwcode != null and jwcode != ''"> <if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode} AND ugr.jwcode = #{jwcode}
</if> </if>

31
src/main/resources/mapper/RoleMapper.xml

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.RoleMapper">
<select id="selectByRoleName" resultType="com.example.demo.domain.entity.Role">
SELECT id FROM role
<where>
role_name = #{roleName}
</where>
</select>
<select id="selectByRoleId" resultType="com.example.demo.domain.entity.Role">
SELECT role_name FROM role
<where>
id = #{id}
</where>
</select>
<select id="selectAllRole" resultType="com.example.demo.domain.vo.RoleVo">
SELECT id,role_name FROM role
</select>
<!-- 插入角色信息 -->
<insert id="addRole" parameterType="com.example.demo.domain.vo.RoleVo" useGeneratedKeys="true" keyProperty="id">
INSERT INTO role
(role_name, priority, father_id)
VALUES
(#{roleName}, #{priority}, #{fatherId})
</insert>
</mapper>
Loading…
Cancel
Save