diff --git a/pom.xml b/pom.xml index e813b18..14fd1f8 100644 --- a/pom.xml +++ b/pom.xml @@ -24,10 +24,10 @@ spring-boot-starter-thymeleaf - - org.springframework.kafka - spring-kafka - + + + + @@ -50,7 +50,7 @@ org.springframework.boot spring-boot-starter-security - + 3.3.6 org.springframework.boot diff --git a/src/main/java/com/example/demo/controller/AdminController.java b/src/main/java/com/example/demo/controller/AdminController.java index d51bdd9..9a8e068 100644 --- a/src/main/java/com/example/demo/controller/AdminController.java +++ b/src/main/java/com/example/demo/controller/AdminController.java @@ -24,6 +24,17 @@ public class AdminController { private final AdminService adminService; + @PostMapping("/add") + public Result add(@RequestBody Admin admin){ + try { + return Result.success(adminService.add(admin)); + } catch (Exception e) { + e.printStackTrace(); + log.error(e.getMessage()); + return Result.error(e.getMessage()); + } + } + @PostMapping("/search") public Result search(@RequestBody Page page){ if(ObjectUtils.isEmpty(page.getPageNum())){ @@ -34,6 +45,16 @@ public class AdminController { } } + @PostMapping("/area") + + public Result area(){ + return Result.success(adminService.area()); + } + @PostMapping("/store") + public Result store(){ + return Result.success(adminService.store()); + } + @PostMapping("/login") public Result login(@RequestBody Admin admin){ @@ -73,5 +94,25 @@ public class AdminController { } } + @PostMapping("/update") + public Result update(@RequestBody Admin admin){ + try { + return Result.success(adminService.edit(admin)); + } catch (Exception e) { + e.printStackTrace(); + log.error(e.getMessage()); + return Result.error(e.getMessage()); + } + } + @PostMapping("/selectNo") + public Result selectNo(@RequestBody Admin admin){ + try { + return Result.success(adminService.selectNo(admin)); + } catch (Exception e) { + e.printStackTrace(); + log.error(e.getMessage()); + return Result.error(e.getMessage()); + } + } } diff --git a/src/main/java/com/example/demo/controller/ConsumeController.java b/src/main/java/com/example/demo/controller/ConsumeController.java index 8172131..cb24134 100644 --- a/src/main/java/com/example/demo/controller/ConsumeController.java +++ b/src/main/java/com/example/demo/controller/ConsumeController.java @@ -3,7 +3,7 @@ package com.example.demo.controller; import com.example.demo.domain.entity.Detail; import com.example.demo.domain.entity.DetailY; import com.example.demo.domain.vo.*; -import com.example.demo.controller.KafkaProducer; +//import com.example.demo.controller.KafkaProducer; import com.example.demo.serviceImpl.ConsumeServiceImpl; import com.example.demo.serviceImpl.UserServiceImpl; import com.fasterxml.jackson.databind.ObjectMapper; @@ -28,8 +28,8 @@ public class ConsumeController { @Autowired private UserServiceImpl userService; - @Autowired - private KafkaProducer kafkaProducer; +// @Autowired +// private KafkaProducer kafkaProducer; @PostMapping("/add") public Result add(@RequestBody DetailY detailY) throws Exception { @@ -38,14 +38,14 @@ public class ConsumeController { ObjectMapper objectMapper = new ObjectMapper(); String detailJson = objectMapper.writeValueAsString(detailY); - // 发送消息到 Kafka 队列 - kafkaProducer.sendMessage("consume-topic", detailJson); - - return Result.success("Request added to Kafka queue"); +// // 发送消息到 Kafka 队列 +// kafkaProducer.sendMessage("consume-topic", detailJson); + consumeService.insert(detailY); } catch (Exception e) { log.error(Arrays.toString(e.getStackTrace())); return Result.error(e.getMessage()); } + return Result.success(); } @PostMapping("/select") diff --git a/src/main/java/com/example/demo/controller/KafkaConfig.java b/src/main/java/com/example/demo/controller/KafkaConfig.java index 4dd1d94..cff361d 100644 --- a/src/main/java/com/example/demo/controller/KafkaConfig.java +++ b/src/main/java/com/example/demo/controller/KafkaConfig.java @@ -1,9 +1,9 @@ -package com.example.demo.controller; - -import org.springframework.context.annotation.Configuration; -import org.springframework.kafka.annotation.EnableKafka; - -@Configuration -@EnableKafka -public class KafkaConfig { -} +//package com.example.demo.controller; +// +//import org.springframework.context.annotation.Configuration; +//import org.springframework.kafka.annotation.EnableKafka; +// +//@Configuration +//@EnableKafka +//public class KafkaConfig { +//} diff --git a/src/main/java/com/example/demo/controller/KafkaConsumer.java b/src/main/java/com/example/demo/controller/KafkaConsumer.java index 373a98a..5f40597 100644 --- a/src/main/java/com/example/demo/controller/KafkaConsumer.java +++ b/src/main/java/com/example/demo/controller/KafkaConsumer.java @@ -1,76 +1,76 @@ -package com.example.demo.controller; - -import com.example.demo.domain.entity.Detail; -import com.example.demo.domain.entity.DetailY; -import com.example.demo.domain.entity.Recharge; -import com.example.demo.serviceImpl.ConsumeServiceImpl; -import com.example.demo.sevice.RechargeService; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.kafka.annotation.KafkaListener; -import org.springframework.stereotype.Service; - -import java.io.IOException; -import java.util.List; - -@Service -@Slf4j -public class KafkaConsumer { - - @Autowired - private ConsumeServiceImpl consumeService; - - @Autowired - private RechargeService rechargeService; - - private final ObjectMapper objectMapper = new ObjectMapper(); - - @KafkaListener(topics = "rechargeadd_topic") - public void listenRechargeadd(String message) { - try { - // 反序列化为List - List rechargeList = objectMapper.readValue(message, new TypeReference>() {}); - - // 遍历并处理每个充值记录 - for (Recharge recharge : rechargeList) { - processRecharge(recharge); - } - } catch (IOException e) { - // 处理反序列化异常 - e.printStackTrace(); - } - } - - private void processRecharge(Recharge recharge) { - // 具体的业务处理逻辑 - System.out.println("Processing recharge: " + recharge); - } - - @KafkaListener(topics = "consume-topic", groupId = "my-group") - public void listenConsume(String message) { - try { - DetailY detailY = objectMapper.readValue(message, DetailY.class); - - // 处理消费请求 - Integer result = consumeService.insert(detailY); - log.info("Processed consume request with result: {}", result); - } catch (Exception e) { - log.error("Error processing consume message: {}", message, e); - } - } - - @KafkaListener(topics = "recharge-topic", groupId = "my-group") - public void listenRecharge(String message) { - try { - Recharge recharge = objectMapper.readValue(message, Recharge.class); - - // 处理充值请求 - rechargeService.add(recharge); - log.info("Processed recharge request with id: {}", recharge.getRechargeId()); - } catch (Exception e) { - log.error("Error processing recharge message: {}", message, e); - } - } -} +//package com.example.demo.controller; +// +//import com.example.demo.domain.entity.Detail; +//import com.example.demo.domain.entity.DetailY; +//import com.example.demo.domain.entity.Recharge; +//import com.example.demo.serviceImpl.ConsumeServiceImpl; +//import com.example.demo.sevice.RechargeService; +//import com.fasterxml.jackson.core.type.TypeReference; +//import com.fasterxml.jackson.databind.ObjectMapper; +//import lombok.extern.slf4j.Slf4j; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.kafka.annotation.KafkaListener; +//import org.springframework.stereotype.Service; +// +//import java.io.IOException; +//import java.util.List; +// +//@Service +//@Slf4j +//public class KafkaConsumer { +// +// @Autowired +// private ConsumeServiceImpl consumeService; +// +// @Autowired +// private RechargeService rechargeService; +// +// private final ObjectMapper objectMapper = new ObjectMapper(); +// +// @KafkaListener(topics = "rechargeadd_topic") +// public void listenRechargeadd(String message) { +// try { +// // 反序列化为List +// List rechargeList = objectMapper.readValue(message, new TypeReference>() {}); +// +// // 遍历并处理每个充值记录 +// for (Recharge recharge : rechargeList) { +// processRecharge(recharge); +// } +// } catch (IOException e) { +// // 处理反序列化异常 +// e.printStackTrace(); +// } +// } +// +// private void processRecharge(Recharge recharge) { +// // 具体的业务处理逻辑 +// System.out.println("Processing recharge: " + recharge); +// } +// +// @KafkaListener(topics = "consume-topic", groupId = "my-group") +// public void listenConsume(String message) { +// try { +// DetailY detailY = objectMapper.readValue(message, DetailY.class); +// +// // 处理消费请求 +// Integer result = consumeService.insert(detailY); +// log.info("Processed consume request with result: {}", result); +// } catch (Exception e) { +// log.error("Error processing consume message: {}", message, e); +// } +// } +// +// @KafkaListener(topics = "recharge-topic", groupId = "my-group") +// public void listenRecharge(String message) { +// try { +// Recharge recharge = objectMapper.readValue(message, Recharge.class); +// +// // 处理充值请求 +// rechargeService.add(recharge); +// log.info("Processed recharge request with id: {}", recharge.getRechargeId()); +// } catch (Exception e) { +// log.error("Error processing recharge message: {}", message, e); +// } +// } +//} diff --git a/src/main/java/com/example/demo/controller/KafkaProducer.java b/src/main/java/com/example/demo/controller/KafkaProducer.java index 3893bb1..23015cc 100644 --- a/src/main/java/com/example/demo/controller/KafkaProducer.java +++ b/src/main/java/com/example/demo/controller/KafkaProducer.java @@ -1,16 +1,16 @@ -package com.example.demo.controller; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.kafka.core.KafkaTemplate; -import org.springframework.stereotype.Service; - -@Service -public class KafkaProducer { - - @Autowired - private KafkaTemplate kafkaTemplate; - - public void sendMessage(String topic, String message) { - kafkaTemplate.send(topic, message); - } -} +//package com.example.demo.controller; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.kafka.core.KafkaTemplate; +//import org.springframework.stereotype.Service; +// +//@Service +//public class KafkaProducer { +// +// @Autowired +// private KafkaTemplate kafkaTemplate; +// +// public void sendMessage(String topic, String message) { +// kafkaTemplate.send(topic, message); +// } +//} diff --git a/src/main/java/com/example/demo/controller/PermissionController.java b/src/main/java/com/example/demo/controller/PermissionController.java new file mode 100644 index 0000000..e5717be --- /dev/null +++ b/src/main/java/com/example/demo/controller/PermissionController.java @@ -0,0 +1,24 @@ +package com.example.demo.controller; + + +import com.example.demo.domain.vo.Result; +import com.example.demo.sevice.PermissionService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/permission") +@RequiredArgsConstructor +@Slf4j +@CrossOrigin +public class PermissionController { + private final PermissionService permissionService; + + @RequestMapping("/getPermission") + public Result getPermission() { + return Result.success(permissionService.getPermission()); + } +} diff --git a/src/main/java/com/example/demo/controller/RechargeController.java b/src/main/java/com/example/demo/controller/RechargeController.java index 1c808b1..52e751e 100644 --- a/src/main/java/com/example/demo/controller/RechargeController.java +++ b/src/main/java/com/example/demo/controller/RechargeController.java @@ -3,8 +3,9 @@ package com.example.demo.controller; import com.example.demo.domain.entity.Recharge; import com.example.demo.domain.vo.Page; import com.example.demo.domain.vo.Result; -import com.example.demo.controller.KafkaProducer; +//import com.example.demo.controller.KafkaProducer; import com.example.demo.sevice.RechargeService; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -24,12 +25,13 @@ import java.util.stream.Collectors; @RequiredArgsConstructor @Slf4j @CrossOrigin +@JsonIgnoreProperties(ignoreUnknown = true) public class RechargeController { private final RechargeService rechargeService; private final ObjectMapper objectMapper; // 添加这一行 - @Autowired - private KafkaProducer kafkaProducer; +// @Autowired +// private KafkaProducer kafkaProducer; @PostMapping("/addmore") public Result add(@RequestBody Map requestBody) { try { @@ -41,7 +43,7 @@ public class RechargeController { // 提取并转换所有的 Recharge 对象 List recharges = requestBody.entrySet().stream() - .filter(entry -> !entry.getKey().equals("token")) + .filter(entry -> !entry.getKey().equals("token") && entry.getValue() instanceof Map) .map(entry -> { try { return objectMapper.convertValue(entry.getValue(), Recharge.class); @@ -60,8 +62,8 @@ public class RechargeController { // 将 Recharge 对象转换为 JSON 字符串 String rechargeJson = objectMapper.writeValueAsString(recharges); - // 发送消息到 Kafka 队列 - kafkaProducer.sendMessage("rechargeadd-topic", rechargeJson); + // 发送消息到 Kafka 队列(如果需要) + // kafkaProducer.sendMessage("rechargeadd-topic", rechargeJson); return rechargeService.addRecharges(recharges); } catch (Exception e) { @@ -77,15 +79,16 @@ public class RechargeController { // 将 Recharge 对象转换为 JSON 字符串 ObjectMapper objectMapper = new ObjectMapper(); String rechargeJson = objectMapper.writeValueAsString(recharge); - - // 发送消息到 Kafka 队列 - kafkaProducer.sendMessage("recharge-topic", rechargeJson); - - return Result.success("Request added to Kafka queue"); + rechargeService.add(recharge); +//// // 发送消息到 Kafka 队列 +//// kafkaProducer.sendMessage("recharge-topic", rechargeJson); +// +// return Result.success("Request added to Kafka queue"); } catch (Exception e) { log.error(Arrays.toString(e.getStackTrace())); return Result.error(e.getMessage()); } + return Result.success(); } @PostMapping("/edit") diff --git a/src/main/java/com/example/demo/domain/entity/Admin.java b/src/main/java/com/example/demo/domain/entity/Admin.java index 17b96b8..d5f3e60 100644 --- a/src/main/java/com/example/demo/domain/entity/Admin.java +++ b/src/main/java/com/example/demo/domain/entity/Admin.java @@ -1,3 +1,74 @@ +//package com.example.demo.domain.entity; +// +//import com.fasterxml.jackson.annotation.JsonFormat; +//import com.fasterxml.jackson.annotation.JsonIgnore; +//import lombok.Data; +//import lombok.NoArgsConstructor; +//import org.springframework.format.annotation.DateTimeFormat; +//import org.springframework.security.core.GrantedAuthority; +//import org.springframework.security.core.authority.SimpleGrantedAuthority; +//import org.springframework.security.core.userdetails.UserDetails; +// +//import java.io.Serializable; +//import java.util.*; +// +//@Data +//@NoArgsConstructor +//public class Admin implements UserDetails, Serializable { +// private Integer adminId; +// private String name; +// private String username; +// private String password; +// private String permission; +// private String area; +// private String adminFlag; +// private String store; +// private String token; +// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") +// @DateTimeFormat(pattern = "yyyy-MM-dd") +// private Date createTime; +// private String jwcode; +// @Override +// @JsonIgnore +// public Collection getAuthorities() { +// Set authorities = new HashSet<>(); +// if (permission != null) { +// int permValue = permission.intValue(); +// if (permValue == 1) { +// authorities.add(new SimpleGrantedAuthority("ROLE_SUPER_ADMIN")); +// } else if (permValue == 2) { +// authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN")); +// } else if (permValue == 3) { +// authorities.add(new SimpleGrantedAuthority("ROLE_AUDITORS")); +// } +// } +// return authorities; +// } +// @Override +// @JsonIgnore +// public boolean isAccountNonExpired() { +// return UserDetails.super.isAccountNonExpired(); +// } +// +// @Override +// @JsonIgnore +// public boolean isAccountNonLocked() { +// return UserDetails.super.isAccountNonLocked(); +// } +// +// @Override +// @JsonIgnore +// public boolean isCredentialsNonExpired() { +// return UserDetails.super.isCredentialsNonExpired(); +// } +// +// @Override +// @JsonIgnore +// public boolean isEnabled() { +// return UserDetails.super.isEnabled(); +// } +//} +// package com.example.demo.domain.entity; import com.fasterxml.jackson.annotation.JsonFormat; @@ -19,7 +90,7 @@ public class Admin implements UserDetails, Serializable { private String name; private String username; private String password; - private Integer permission; + private String permission; private String area; private String adminFlag; private String store; @@ -28,41 +99,53 @@ public class Admin implements UserDetails, Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd") private Date createTime; private String jwcode; + @Override @JsonIgnore public Collection getAuthorities() { - Setauthorities = new HashSet<>(); - if(permission == 1){ - authorities.add(new SimpleGrantedAuthority("ROLE_SUPER_ADMIN")); - }else if(permission == 2){ - authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN")); - }else if(permission == 3){ - authorities.add(new SimpleGrantedAuthority("ROLE_AUDITORS")); - } - return authorities; + Set authorities = new HashSet<>(); + Optional.ofNullable(permission) + .map(Integer::valueOf) + .ifPresent(permValue -> { + switch (permValue) { + case 1: + authorities.add(new SimpleGrantedAuthority("ROLE_SUPER_ADMIN")); + break; + case 2: + authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN")); + break; + case 3: + authorities.add(new SimpleGrantedAuthority("ROLE_AUDITORS")); + break; + default: + // 可以添加默认角色或处理未知权限 + break; + } + }); + return authorities; } + @Override @JsonIgnore public boolean isAccountNonExpired() { - return UserDetails.super.isAccountNonExpired(); + return true; // 默认账户未过期 } @Override @JsonIgnore public boolean isAccountNonLocked() { - return UserDetails.super.isAccountNonLocked(); + return true; // 默认账户未锁定 } @Override @JsonIgnore public boolean isCredentialsNonExpired() { - return UserDetails.super.isCredentialsNonExpired(); + return true; // 默认凭证未过期 } @Override @JsonIgnore public boolean isEnabled() { - return UserDetails.super.isEnabled(); + return true; // 默认账户启用 } -} - +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/domain/entity/Permission.java b/src/main/java/com/example/demo/domain/entity/Permission.java new file mode 100644 index 0000000..ce46180 --- /dev/null +++ b/src/main/java/com/example/demo/domain/entity/Permission.java @@ -0,0 +1,11 @@ +package com.example.demo.domain.entity; + +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class Permission { + private Integer permissionId; + private String permissionName; +} diff --git a/src/main/java/com/example/demo/domain/entity/Recharge.java b/src/main/java/com/example/demo/domain/entity/Recharge.java index 91f79ef..87bee95 100644 --- a/src/main/java/com/example/demo/domain/entity/Recharge.java +++ b/src/main/java/com/example/demo/domain/entity/Recharge.java @@ -1,6 +1,7 @@ package com.example.demo.domain.entity; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; @@ -10,8 +11,9 @@ import java.util.Date; @Data @NoArgsConstructor - +@JsonIgnoreProperties(ignoreUnknown = true) public class Recharge { + private String Rate; private Integer rechargeId; private String jwcode; private Integer activityId; @@ -35,13 +37,10 @@ public class Recharge { private String orderCode; private String token; private Integer rateId; - private Integer line; + private Integer line; private String showInput; private String imageUrl; - private String rate; private String isInputInvalid; private String inputErrorMessage; - - } diff --git a/src/main/java/com/example/demo/mapper/AdminMapper.java b/src/main/java/com/example/demo/mapper/AdminMapper.java index a443c2f..e07fd69 100644 --- a/src/main/java/com/example/demo/mapper/AdminMapper.java +++ b/src/main/java/com/example/demo/mapper/AdminMapper.java @@ -11,9 +11,9 @@ import java.util.List; public interface AdminMapper { @Insert({ "insert into admin", - "(name,jwcode,password,permission,area,admin_flag,create_time)", + "(name,jwcode,password,permission,area,admin_flag,create_time,remark)", "values", - "(#{name},#{jwcode},,#{password},#{permission},#{area},#{admin_flag},now())" + "(#{name},#{jwcode},,#{password},#{permission},#{area},#{admin_flag},now(),#{remark})" }) @Options(useGeneratedKeys = true,keyColumn = "admin_id",keyProperty = "adminId") int insert(Admin admin); @@ -46,13 +46,40 @@ public interface AdminMapper { "" }) List select(Admin admin); + + @Select({ + "select DISTINCT store from admin" + }) + List selectStore(); + @Select({ + "select DISTINCT area from admin" + }) + List selectArea(); + + @Select({ +// "