Browse Source

加点功能

master
nili 11 months ago
parent
commit
e82a1d6da7
  1. 3
      game-dao/src/main/java/awesome/group/game/dao/bean/MatrixAdmin.java
  2. 2
      game-dao/src/main/java/awesome/group/game/dao/bean/MatrixApp.java
  3. 4
      game-dao/src/main/java/awesome/group/game/dao/mapper/MatrixAdminMapper.java
  4. 6
      game-service/pom.xml
  5. 66
      game-service/src/main/java/awesome/group/game/service/AdminService.java
  6. 29
      game-service/src/main/java/awesome/group/game/service/bo/MatrixAdminBo.java
  7. 16
      game-web/src/main/java/awesome/group/RequestContext.java
  8. 27
      game-web/src/main/java/awesome/group/rest/matrix/AdminController.java
  9. 10
      pom.xml

3
game-dao/src/main/java/awesome/group/game/dao/bean/MatrixAdmin.java

@ -10,4 +10,7 @@ public class MatrixAdmin {
private Integer id;
private String name;
private String password;
private String appIds;
private Integer role;//1超级管理员,2管理员,3普通账号
private String channel;//fanmiyou,qiji
}

2
game-dao/src/main/java/awesome/group/game/dao/bean/MatrixApp.java

@ -11,5 +11,5 @@ public class MatrixApp {
private String name;
private String code;
private String url;
private Integer ownerId;
private Integer income;
}

4
game-dao/src/main/java/awesome/group/game/dao/mapper/MatrixAdminMapper.java

@ -3,8 +3,12 @@ package awesome.group.game.dao.mapper;
import awesome.group.game.dao.bean.MatrixAdmin;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
public interface MatrixAdminMapper extends BaseMapper<MatrixAdmin> {
@Select("select * from matrix_admin where name = #{name}")
MatrixAdmin query(String name);
@Update("update matrix_admin set app_ids = #{appIds} where id = #{id}")
int updateAppIds(String appIds, int id);
}

6
game-service/pom.xml

@ -68,7 +68,11 @@
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
</dependencies>

66
game-service/src/main/java/awesome/group/game/service/AdminService.java

@ -7,6 +7,7 @@ import awesome.group.game.dao.mapper.MatrixAdminMapper;
import awesome.group.game.dao.mapper.MatrixAdvRecordMapper;
import awesome.group.game.dao.mapper.MatrixAppMapper;
import awesome.group.game.service.bo.AdvRecordQuery;
import awesome.group.game.service.bo.MatrixAdminBo;
import awesome.group.game.service.bo.MatrixAdvRecordBo;
import awesome.group.game.service.bo.PageResult;
import awesome.group.game.service.common.exception.PaganiException;
@ -21,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import com.google.common.base.Joiner;
import java.sql.Timestamp;
import java.text.ParseException;
@ -40,7 +42,11 @@ public class AdminService {
@Autowired
private MatrixAppMapper appMapper;
public MatrixAdmin login(String name, String pwd) {
public static final int SUPER_ADMIN = 1;//超级管理员
public static final int NORMAL_ADMIN = 2;//普通管理员
public static final int OTHER = 3;//普通账号
public MatrixAdmin login(String name, String pwd, String channel) {
MatrixAdmin admin = adminMapper.query(name);
if (admin == null) {
throw new PaganiException(PaganiExceptionCode.GENERAL_ERROR, "用户名或密码不正确");
@ -49,6 +55,9 @@ public class AdminService {
if (!password.equals(admin.getPassword())) {
throw new PaganiException(PaganiExceptionCode.GENERAL_ERROR, "用户名或密码不正确");
}
if (admin.getRole() != SUPER_ADMIN && !admin.getChannel().equalsIgnoreCase(channel)) {
throw new PaganiException(PaganiExceptionCode.GENERAL_ERROR, "用户名或密码不正确");
}
return admin;
}
@ -56,7 +65,8 @@ public class AdminService {
return adminMapper.selectById(id);
}
public PageResult<MatrixAdvRecordBo> advList(AdvRecordQuery param, int ownerId) {
public PageResult<MatrixAdvRecordBo> advList(AdvRecordQuery param, Integer ownerId) {
MatrixAdmin admin = adminMapper.selectById(ownerId);
List<MatrixApp> appList = appMapper.selectList(null);
LambdaQueryWrapper<MatrixAdvRecord> wrapper = Wrappers.lambdaQuery();
@ -86,8 +96,8 @@ public class AdminService {
}
wrapper.orderByDesc(MatrixAdvRecord::getId);
if (ownerId != 1) {
List<Integer> appIds = appList.stream().filter(x -> x.getOwnerId() != null && x.getOwnerId() == ownerId).map(MatrixApp::getId).toList();
if (admin.getRole() != SUPER_ADMIN) {
List<Integer> appIds = Arrays.stream(admin.getAppIds().split(",")).map(Integer::parseInt).toList();
if (CollectionUtils.isEmpty(appIds)) {
return new PageResult<>(new ArrayList<>(), 0);
}
@ -108,11 +118,55 @@ public class AdminService {
}
public List<MatrixApp> appList(Integer adminId) {
if (adminId == 1) {
MatrixAdmin admin = adminMapper.selectById(adminId);
if (adminId == SUPER_ADMIN) {
return appMapper.selectList(null);
}
LambdaQueryWrapper<MatrixApp> query = Wrappers.lambdaQuery();
query.eq(MatrixApp::getOwnerId, adminId);
query.in(MatrixApp::getId, Arrays.stream(admin.getAppIds().split(",")).map(Integer::parseInt).toList());
return appMapper.selectList(query);
}
public void grantApp(String appIds, int adminId, Integer currentAdminId) {
List<Integer> legalAppIds = new ArrayList<>(appList(currentAdminId).stream().map(MatrixApp::getId).toList());
List<Integer> paramIds = Arrays.stream(appIds.split(",")).map(Integer::parseInt).toList();
legalAppIds.retainAll(paramIds);
String str = Joiner.on(",").join(legalAppIds);
adminMapper.updateAppIds(str, adminId);
}
public List<MatrixAdminBo> adminList(String channel) {
LambdaQueryWrapper<MatrixAdmin> query = Wrappers.lambdaQuery();
query.eq(MatrixAdmin::getChannel, channel);
List<MatrixAdmin> res = adminMapper.selectList(query);
return res.stream().map(MatrixAdminBo::new).toList();
}
public void saveAdmin(MatrixAdminBo bo, String channel) {
MatrixAdmin admin = new MatrixAdmin();
BeanUtils.copyProperties(bo, admin);
if (!CollectionUtils.isEmpty(bo.getAppIds())) {
admin.setAppIds(Joiner.on(",").join(bo.getAppIds()));
}
admin.setChannel(channel);
if (admin.getId() != null) {
if (StringUtils.hasText(admin.getPassword())) {
admin.setPassword(EncryptUtil.sha1(admin.getPassword()));
} else {
MatrixAdmin origin = adminMapper.selectById(admin.getId());
admin.setPassword(origin.getPassword());
}
adminMapper.updateById(admin);
} else {
if(adminMapper.query(bo.getName()) != null) {
throw new PaganiException(PaganiExceptionCode.GENERAL_ERROR, "用户名重复");
}
if (!StringUtils.hasText(bo.getPassword())) {
throw new PaganiException(PaganiExceptionCode.GENERAL_ERROR, "密码不能为空");
}
admin.setPassword(EncryptUtil.sha1(bo.getPassword()));
adminMapper.insert(admin);
}
}
}

29
game-service/src/main/java/awesome/group/game/service/bo/MatrixAdminBo.java

@ -0,0 +1,29 @@
package awesome.group.game.service.bo;
import awesome.group.game.dao.bean.MatrixAdmin;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.util.StringUtils;
import java.util.Arrays;
import java.util.List;
@Data
public class MatrixAdminBo {
private Integer id;
private String name;
private String password;
private List<Integer> appIds;
private Integer role;//1超级管理员,2管理员,3普通账号
public MatrixAdminBo() {
}
public MatrixAdminBo(MatrixAdmin admin) {
BeanUtils.copyProperties(admin, this);
this.password = null;
if (StringUtils.hasText(admin.getAppIds())) {
this.appIds = Arrays.stream(admin.getAppIds().split(",")).map(Integer::parseInt).toList();
}
}
}

16
game-web/src/main/java/awesome/group/RequestContext.java

@ -47,6 +47,22 @@ public class RequestContext {
return (HttpServletResponse) THREAD_LOCAL.get().get(KEY_RESPONSE);
}
public static String getRequestChannel() {
HttpServletRequest request = getRequest();
String serverName = request.getServerName();
if (serverName.equalsIgnoreCase("localhost")) {
return "qiji";
}
int port = request.getServerPort();
switch (port) {
case 80:
case 443:
return "qiji";
case 8888:
return "fanmiyou";
}
return null;
}
public static Integer getUid() {
if (THREAD_LOCAL.get() == null) {

27
game-web/src/main/java/awesome/group/rest/matrix/AdminController.java

@ -5,7 +5,10 @@ import awesome.group.aop.RestApi;
import awesome.group.game.dao.bean.MatrixAdmin;
import awesome.group.game.dao.bean.MatrixApp;
import awesome.group.game.service.AdminService;
import awesome.group.game.service.bo.*;
import awesome.group.game.service.bo.AdvRecordQuery;
import awesome.group.game.service.bo.MatrixAdminBo;
import awesome.group.game.service.bo.MatrixAdvRecordBo;
import awesome.group.game.service.bo.PageResult;
import awesome.group.game.service.common.response.R;
import awesome.group.game.service.util.JwtUtils;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -26,7 +29,7 @@ public class AdminController {
@PostMapping("/login")
@RestApi
public R<Void> adminLogin(@RequestParam String name, @RequestParam String pwd) {
MatrixAdmin data = adminService.login(name, pwd);
MatrixAdmin data = adminService.login(name, pwd, RequestContext.getRequestChannel());
String token = JwtUtils.generatorToken(data.getId() + "", 15 * 86400);
Cookie cookie = new Cookie("MatrixToken", token);
RequestContext.getResponse().addCookie(cookie);
@ -53,4 +56,24 @@ public class AdminController {
List<MatrixApp> data = adminService.appList(RequestContext.getAdminID());
return new R<>(R.CODE_SUCCESS, "ok", data);
}
@PostMapping("/grantApp")
@RestApi
public R<Void> grantApp(@RequestParam String appIds, @RequestParam int adminId) {
adminService.grantApp(appIds, adminId, RequestContext.getAdminID());
return new R<>(R.CODE_SUCCESS, "ok", null);
}
@GetMapping("/adminList")
@RestApi
public R<List<MatrixAdminBo>> adminList() {
return new R<>(R.CODE_SUCCESS, "ok", adminService.adminList(RequestContext.getRequestChannel()));
}
@PostMapping("/saveAdmin")
@RestApi
public R<Void> saveAdmin(@RequestBody MatrixAdminBo matrixAdmin) {
adminService.saveAdmin(matrixAdmin, RequestContext.getRequestChannel());
return new R<>(R.CODE_SUCCESS, "ok", null);
}
}

10
pom.xml

@ -58,6 +58,16 @@
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
</dependencies>
</dependencyManagement>

Loading…
Cancel
Save