Browse Source

拉一下Merge branch 'milestone-20250702-金币重构一期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250702-金币重构一期

lihuilin/hotfix-20250810160509-余额地区传参
lihuilin 2 months ago
parent
commit
d024415f3c
  1. 24
      pom.xml
  2. 2
      src/main/java/com/example/demo/Util/JWTUtil.java
  3. 2
      src/main/java/com/example/demo/Util/TokenPayload.java
  4. 31
      src/main/java/com/example/demo/controller/AdminController.java
  5. 3
      src/main/java/com/example/demo/domain/entity/Admin.java
  6. 5
      src/main/java/com/example/demo/domain/vo/Result.java
  7. 1
      src/main/java/com/example/demo/mapper/AdminMapper.java
  8. 8
      src/main/java/com/example/demo/security/SecurityConfig.java
  9. 36
      src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java
  10. 30
      src/main/java/com/example/demo/serviceImpl/UserDetailServiceImpl.java
  11. 5
      src/main/resources/mapper/AdminMapper.xml
  12. 6
      src/main/resources/mapper/AuditMapper.xml
  13. 8
      src/main/resources/mapper/RateMapper.xml
  14. 7
      src/main/resources/mapper/StatisticsMapper.xml

24
pom.xml

@ -5,7 +5,7 @@
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.12</version>
<version>3.3.6</version>
<relativePath/> <!-- lookup parent from repository --> <relativePath/> <!-- lookup parent from repository -->
</parent> </parent>
<groupId>com.example</groupId> <groupId>com.example</groupId>
@ -100,6 +100,23 @@
<version>3.0.4</version> <version>3.0.4</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt-api</artifactId>-->
<!-- <version>0.11.5</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt-impl</artifactId>-->
<!-- <version>0.11.5</version>-->
<!-- <scope>runtime</scope>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt-jackson</artifactId> &lt;!&ndash; 或 jjwt-gson &ndash;&gt;-->
<!-- <version>0.11.5</version>-->
<!-- <scope>runtime</scope>-->
<!-- </dependency>-->
<dependency> <dependency>
<groupId>io.jsonwebtoken</groupId> <groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId> <artifactId>jjwt</artifactId>
@ -133,6 +150,11 @@
<artifactId>hibernate-validator</artifactId> <artifactId>hibernate-validator</artifactId>
<version>8.0.0.Final</version> <!-- 对应Spring Boot 3的实现版本 --> <version>8.0.0.Final</version> <!-- 对应Spring Boot 3的实现版本 -->
</dependency> </dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

2
src/main/java/com/example/demo/Util/JWTUtil.java

@ -7,8 +7,10 @@ import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
import javax.crypto.SecretKey; import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec; import javax.crypto.spec.SecretKeySpec;
import java.util.Base64; import java.util.Base64;

2
src/main/java/com/example/demo/Util/TokenPayload.java

@ -12,7 +12,7 @@ import lombok.NoArgsConstructor;
public class TokenPayload { public class TokenPayload {
@JsonProperty("token") @JsonProperty("token")
private String token; private String token;
private String jwcode;
private String account;
private String password; private String password;
private String pageNum; private String pageNum;
private String pageSize; private String pageSize;

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

@ -1,12 +1,16 @@
package com.example.demo.controller; 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.domain.entity.Admin; import com.example.demo.domain.entity.Admin;
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.databind.ObjectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/** /**
@ -26,18 +30,37 @@ 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) {
try { try {
admin = adminService.login(admin); admin = adminService.login(admin);
String token = JWTUtil.createJWT(admin);
System.out.println( token);
admin.setPassword(null); admin.setPassword(null);
System.out.println("达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达瓦达");
return Result.success(admin);
return Result.success(token,admin);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
log.error(e.getMessage()); log.error(e.getMessage());
return Result.error(e.getMessage()); return Result.error(e.getMessage());
} }
}
@PostMapping("/userinfo")
public UserDetails getUserInfo(@RequestBody String requestBody) {
ObjectMapper objectMapper = new ObjectMapper();
TokenPayload token1;
try {
token1 = objectMapper.readValue(requestBody, TokenPayload.class);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
String token = token1.getToken();
System.out.println("1/*/*/*/*//*-*-*-*-*-*-1" +token);
try {
System.out.println("/+/+/+/+/+/+/+//" + JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class));
return JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
} }
}

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

@ -2,6 +2,7 @@ package com.example.demo.domain.entity;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
@ -13,6 +14,7 @@ import java.util.*;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Admin implements UserDetails, Serializable { public class Admin implements UserDetails, Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -35,6 +37,7 @@ public class Admin implements UserDetails, Serializable {
@Override @Override
@JsonIgnore
public Collection<? extends GrantedAuthority> getAuthorities() { public Collection<? extends GrantedAuthority> getAuthorities() {
Set<GrantedAuthority> authorities = new HashSet<>(); Set<GrantedAuthority> authorities = new HashSet<>();
Optional.ofNullable(postiton) Optional.ofNullable(postiton)

5
src/main/java/com/example/demo/domain/vo/Result.java

@ -24,7 +24,10 @@ public class Result implements Serializable {
public static Result success() { public static Result success() {
return new Result(200, "success", new HashMap<>()); return new Result(200, "success", new HashMap<>());
} }
//登录返回token使用
public static Result success(String token,Object data) {
return new Result(200, token, data);
}
// 查询成功响应把查询结果作为返回数据响应给前端 // 查询成功响应把查询结果作为返回数据响应给前端
public static Result success(Object data) { public static Result success(Object data) {
return new Result(200, "success", data); return new Result(200, "success", data);

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

@ -14,4 +14,5 @@ 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);
} }

8
src/main/java/com/example/demo/security/SecurityConfig.java

@ -36,8 +36,8 @@ import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
public class SecurityConfig { public class SecurityConfig {
// @Autowired
// TokenFilter tokenFilter;
@Autowired
TokenFilter tokenFilter;
// 核心配置 配置一个过滤器链 // 核心配置 配置一个过滤器链
@ -60,7 +60,7 @@ public class SecurityConfig {
request request
.requestMatchers( HttpMethod.POST, .requestMatchers( HttpMethod.POST,
// 用户不登录就可以访问的路径 // 用户不登录就可以访问的路径
"/admin/login","/upload/**","/detailY/ERP","/home/java/haiwaiyanfa/gold1/**","/home/java/haiwaiyanfa/**").permitAll()
"/admin/login","/upload/**","/detailY/ERP","/home/java/haiwaiyanfa/gold1/**","/home/java/haiwaiyanfa/**","/**").permitAll()
.requestMatchers( .requestMatchers(
"/error","alipay/**","/upload/**","/home/java/haiwaiyanfa/gold1/**","/home/java/haiwaiyanfa/**" "/error","alipay/**","/upload/**","/home/java/haiwaiyanfa/gold1/**","/home/java/haiwaiyanfa/**"
).permitAll() ).permitAll()
@ -70,7 +70,7 @@ public class SecurityConfig {
// http.addFilterBefore(tokenFilter, UsernamePasswordAuthenticationFilter.class); // 然后是TokenFilter
http.addFilterBefore(tokenFilter, UsernamePasswordAuthenticationFilter.class); // 然后是TokenFilter
return http.build(); return http.build();
} }

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

@ -6,22 +6,19 @@ 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.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 org.springframework.transaction.annotation.Transactional;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class AdminServiceImpl implements AdminService { public class AdminServiceImpl implements AdminService {
private static final Logger log = LoggerFactory.getLogger(AdminServiceImpl.class);
private final AuthenticationManager authenticationManager;
@Autowired
private AuthenticationManager authenticationManager;
private final AdminMapper adminMapper; private final AdminMapper adminMapper;
@Override @Override
@ -33,18 +30,18 @@ public class AdminServiceImpl implements AdminService {
throw new IllegalArgumentException("账号不能为空"); throw new IllegalArgumentException("账号不能为空");
} }
// Admin adminInDB = adminMapper.getAdmin(account);
// System.out.println("adminInDB:" + adminInDB);
// if (adminInDB == null) {
// throw new RuntimeException("无此精网号");
// }
Admin adminInDB = adminMapper.getAdmin(account);
System.out.println("adminInDB:" + adminInDB);
if (adminInDB == null) {
throw new RuntimeException("无此精网号");
}
// 校验机器权限
// if (!hasPermissionToMachine(adminInDB, inputMachineId)) {
// throw new RuntimeException("你没有使用该机器的权限!");
// }
// 校验机器权限
if (!hasPermissionToMachine(adminInDB, inputMachineId)) {
throw new RuntimeException("你没有使用该机器的权限!");
}
// try {
try {
System.out.println("admin:" + account); System.out.println("admin:" + account);
System.out.println("admin:" + admin.getPassword()); System.out.println("admin:" + admin.getPassword());
UsernamePasswordAuthenticationToken token = UsernamePasswordAuthenticationToken token =
@ -52,11 +49,10 @@ public class AdminServiceImpl implements AdminService {
Authentication authentication = authenticationManager.authenticate(token); Authentication authentication = authenticationManager.authenticate(token);
return (Admin) authentication.getPrincipal(); return (Admin) authentication.getPrincipal();
// } catch (Exception e) {
// System.out.println("密码错误"+e.getMessage());
// log.error("登录过程中发生异常", e);
// throw new RuntimeException("登录失败,请稍后再试", e);
// }
} catch (Exception e) {
System.out.println("密码错误"+e.getMessage());
throw new RuntimeException("登录失败,请稍后再试", e);
}
} }
private boolean hasPermissionToMachine(Admin admin, String targetMachineId) { private boolean hasPermissionToMachine(Admin admin, String targetMachineId) {

30
src/main/java/com/example/demo/serviceImpl/UserDetailServiceImpl.java

@ -0,0 +1,30 @@
package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.Admin;
import com.example.demo.mapper.AdminMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
@Transactional
@Service
@RequiredArgsConstructor
public class UserDetailServiceImpl implements UserDetailsService {
@Autowired
private AdminMapper adminMapper;
@Override
public UserDetails loadUserByUsername(String account) throws UsernameNotFoundException {
Admin admin=adminMapper.selectByName(account);
if(ObjectUtils.isEmpty(admin)){
throw new UsernameNotFoundException("用户名不存在");
}
return admin;
}
}

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

@ -6,4 +6,9 @@
select * from admin select * from admin
where account=#{account} where account=#{account}
</select> </select>
<select id="selectByName" resultType="com.example.demo.domain.entity.Admin">
select * from admin
where account= #{account}
</select>
</mapper> </mapper>

6
src/main/resources/mapper/AuditMapper.xml

@ -6,7 +6,8 @@
update user_gold_record update user_gold_record
set audit_id = #{auditId}, set audit_id = #{auditId},
audit_status = #{auditStatus}, audit_status = #{auditStatus},
reject_reason = #{rejectReason}
reject_reason = #{rejectReason},
audit_time = #{auditTime}
where order_code = #{orderCode} where order_code = #{orderCode}
</update> </update>
<!--更新用户余额--> <!--更新用户余额-->
@ -20,6 +21,7 @@
current_free_june = current_free_june + COALESCE(#{currentFreeJune},0), current_free_june = current_free_june + COALESCE(#{currentFreeJune},0),
current_free_december = current_free_december + COALESCE(#{currentFreeDecember},0), current_free_december = current_free_december + COALESCE(#{currentFreeDecember},0),
current_task_gold = current_task_gold + COALESCE(#{currentTaskGold},0) current_task_gold = current_task_gold + COALESCE(#{currentTaskGold},0)
where jwcode = #{jwcode} where jwcode = #{jwcode}
</update> </update>
<!--修改消费订单为已退款--> <!--修改消费订单为已退款-->
@ -53,7 +55,7 @@
AND ugr.activity = #{rechargeAudit.activity} AND ugr.activity = #{rechargeAudit.activity}
</if> </if>
<if test="rechargeAudit.payModel != null and rechargeAudit.payModel != ''"> <if test="rechargeAudit.payModel != null and rechargeAudit.payModel != ''">
AND ugr.payModel = #{rechargeAudit.payModel}
AND ugr.pay_model = #{rechargeAudit.payModel}
</if> </if>
<if test="rechargeAudit.market != null and rechargeAudit.market != ''"> <if test="rechargeAudit.market != null and rechargeAudit.market != ''">
AND u.market = #{rechargeAudit.market} AND u.market = #{rechargeAudit.market}

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

@ -3,12 +3,8 @@
<mapper namespace="com.example.demo.mapper.RateMapper"> <mapper namespace="com.example.demo.mapper.RateMapper">
<select id="selectAll" resultType="com.example.demo.domain.vo.RateDetail"> <select id="selectAll" resultType="com.example.demo.domain.vo.RateDetail">
SELECT SELECT
*,
CASE
WHEN update_time IS NULL OR create_time > update_time THEN create_time
ELSE update_time
END AS last_time
FROM rate
r.id,r.rate_name rateName,r.num,r.admin_id adminId,r.create_time createTime,r.update_time updateTime
FROM rate r
</select> </select>
<select id="selectById" resultType="com.example.demo.domain.entity.Rate"> <select id="selectById" resultType="com.example.demo.domain.entity.Rate">

7
src/main/resources/mapper/StatisticsMapper.xml

@ -78,7 +78,7 @@
<foreach item="status" collection="auditStatusList" open="(" separator="," close=")"> <foreach item="status" collection="auditStatusList" open="(" separator="," close=")">
#{status} #{status}
</foreach> </foreach>
AND ugr.pay_time BETWEEN #{startTime} AND #{endTime}
AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
</select> </select>
<!-- 计算该天充值人数--> <!-- 计算该天充值人数-->
<select id="countRechargeNum" resultType="java.lang.Integer"> <select id="countRechargeNum" resultType="java.lang.Integer">
@ -87,7 +87,7 @@
INNER JOIN user u ON ugr.jwcode = u.jwcode INNER JOIN user u ON ugr.jwcode = u.jwcode
WHERE u.market = #{market} WHERE u.market = #{market}
AND ugr.audit_status IN (1,3) AND ugr.audit_status IN (1,3)
AND ugr.pay_time BETWEEN #{startTime} AND #{endTime}
AND ugr.audit_time BETWEEN #{startTime} AND #{endTime}
</select> </select>
<!--计算该天首充人数--> <!--计算该天首充人数-->
<select id="countFirstRecharge" resultType="java.lang.Integer"> <select id="countFirstRecharge" resultType="java.lang.Integer">
@ -96,9 +96,10 @@
INNER JOIN user u ON ugr.jwcode = u.jwcode INNER JOIN user u ON ugr.jwcode = u.jwcode
WHERE u.market = #{market} WHERE u.market = #{market}
AND ugr.audit_status = 1 AND ugr.audit_status = 1
AND ugr.pay_time BETWEEN #{startTime} AND #{endTime}
AND ugr.audit_time BETWEEN #{startTime} AND #{endTime}
AND u.first_recharge = #{startTime} AND u.first_recharge = #{startTime}
</select> </select>
<!--获取某地区某时间所在日期的数据(仅一条)-->
<select id="selectByMarketAndDate" resultType="com.example.demo.domain.entity.Statistics"> <select id="selectByMarketAndDate" resultType="com.example.demo.domain.entity.Statistics">
SELECT * SELECT *
FROM statistics FROM statistics

Loading…
Cancel
Save