Browse Source

1月13日现金管理,跨地区操作优化

lijianlin/feature-20260113-现金管理0109
wangguorui 3 days ago
parent
commit
3d7bce5178
  1. 8
      src/main/java/com/example/demo/domain/vo/coin/Result.java
  2. 3
      src/main/java/com/example/demo/mapper/coin/MarketMapper.java
  3. 7
      src/main/java/com/example/demo/mapper/coin/UserMapper.java
  4. 46
      src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java
  5. 6
      src/main/resources/mapper/MarketMapper.xml
  6. 14
      src/main/resources/mapper/UserMapper.xml

8
src/main/java/com/example/demo/domain/vo/coin/Result.java

@ -73,6 +73,14 @@ public class Result implements Serializable {
response.setMsg(e.getMessage()); response.setMsg(e.getMessage());
return response; return response;
} }
public static Result errorWithData(Object data) {
Result result = new Result();
result.setCode(0); // 错误码
result.setData(data);
return result;
}
public String toJson() throws JsonProcessingException { public String toJson() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(this); return mapper.writeValueAsString(this);

3
src/main/java/com/example/demo/mapper/coin/MarketMapper.java

@ -10,6 +10,9 @@ import java.util.Set;
public interface MarketMapper { public interface MarketMapper {
List<Market> getMarket(); List<Market> getMarket();
// MarketMapper.java 中添加
String getMarketNameById(String marketId);
//获取市场id //获取市场id
List<String> getMarketIds(List<String> list); List<String> getMarketIds(List<String> list);
//获取单个市场id //获取单个市场id

7
src/main/java/com/example/demo/mapper/coin/UserMapper.java

@ -23,6 +23,13 @@ public interface UserMapper {
//获取用户金币信息 //获取用户金币信息
GoldUser selectUser(String jwcode); GoldUser selectUser(String jwcode);
// 检查用户是否存在
int checkUserExists(String jwcode);
// 获取用户市场信息
String getUserMarket(String jwcode);
//获取用户金币信息 //获取用户金币信息
GoldUser selectUserCard(@Param("jwcode")String jwcode,@Param("markets")List<String> markets); GoldUser selectUserCard(@Param("jwcode")String jwcode,@Param("markets")List<String> markets);
//获取金币数 //获取金币数

46
src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java

@ -3,7 +3,6 @@ package com.example.demo.serviceImpl.coin;
import com.example.demo.Util.JWTUtil; import com.example.demo.Util.JWTUtil;
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.entity.User;
import com.example.demo.domain.vo.coin.Gold;
import com.example.demo.domain.vo.coin.GoldUser; import com.example.demo.domain.vo.coin.GoldUser;
import com.example.demo.domain.vo.coin.Result; import com.example.demo.domain.vo.coin.Result;
import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.MarketMapper;
@ -45,32 +44,61 @@ public class UserServiceImpl implements UserService {
//查找用户部分信息 //查找用户部分信息
@Override @Override
public Result selectUser(String jwcode) { public Result selectUser(String jwcode) {
// 检查用户是否存在
int userCount = userMapper.checkUserExists(jwcode);
if (userCount == 0) {
return Result.error("精网号有误!请检查");
}
// 解token权限 // 解token权限
try { try {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token"); String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
if (admin != null) { if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(",")); List<String> list = Arrays.asList(admin.getMarkets().split(","));
List<String> markets = marketMapper.getMarketIds(list); List<String> markets = marketMapper.getMarketIds(list);
if (markets.contains("9") || markets.contains("9999")){
markets=null;
}
// 检查是否有特殊权限
boolean hasSpecialPermission = markets.contains("9") || markets.contains("9999");
if (hasSpecialPermission) {
// 有特殊权限可访问所有用户
BigDecimal redSum = redService.selectRedSum(Integer.parseInt(jwcode)); BigDecimal redSum = redService.selectRedSum(Integer.parseInt(jwcode));
GoldUser user = userMapper.selectUserCard(jwcode, null);
user.setRed(redSum);
return Result.success(user);
} else {
// 检查用户所在市场是否在管理员权限范围内
String userMarketId = userMapper.getUserMarket(jwcode);
if (userMarketId != null) {
// 根据市场ID获取市场名称
String userMarketName = marketMapper.getMarketNameById(userMarketId);
if (markets.contains(userMarketId)) {
// 有权限访问返回用户信息
BigDecimal redSum = redService.selectRedSum(Integer.parseInt(jwcode));
GoldUser user = userMapper.selectUserCard(jwcode, markets); GoldUser user = userMapper.selectUserCard(jwcode, markets);
user.setRed(redSum); user.setRed(redSum);
return Result.success(user); return Result.success(user);
} else {
// 无权限返回用户所属地区名称到 data
return Result.errorWithData(
java.util.Map.of("market", userMarketName != null ? userMarketName : userMarketId));
} }
else{
return Result.error("用户为空");
} else {
return Result.error("用户市场信息不存在");
}
}
} else {
return Result.error("用户权限验证失败");
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return Result.error("用户查找不到");
return Result.error("精网号有误!请检查");
} }
} }
//查找用户全部信息 //查找用户全部信息

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

@ -5,6 +5,12 @@
select * from market select * from market
</select> </select>
<select id="getMarketNameById" resultType="java.lang.String">
SELECT name
FROM market
WHERE id = #{marketId}
</select>
<!-- 根据名称列表查询对应的市场ID及其子市场ID --> <!-- 根据名称列表查询对应的市场ID及其子市场ID -->
<select id="getMarketIds" parameterType="java.util.List" resultType="java.lang.String"> <select id="getMarketIds" parameterType="java.util.List" resultType="java.lang.String">
SELECT id SELECT id

14
src/main/resources/mapper/UserMapper.xml

@ -36,6 +36,20 @@
</where> </where>
</select> </select>
<!-- 检查用户是否存在 -->
<select id="checkUserExists" resultType="int">
SELECT COUNT(*)
FROM user
WHERE jwcode = #{jwcode}
</select>
<!-- 获取用户的市场信息 -->
<select id="getUserMarket" resultType="java.lang.String">
SELECT market
FROM user
WHERE jwcode = #{jwcode}
</select>
<!-- 根据精网号查询用户信息 --> <!-- 根据精网号查询用户信息 -->
<select id="selectUserCard" resultType="com.example.demo.domain.vo.coin.GoldUser"> <select id="selectUserCard" resultType="com.example.demo.domain.vo.coin.GoldUser">
SELECT SELECT

Loading…
Cancel
Save