Commit 8bbbc674 by shenjunjie

Merge branch 'feature' into 'dev'

新增用户中心注册功能

See merge request !142
parents d300091b ac156e1e
......@@ -5,18 +5,14 @@ import com.zhiwei.brandkbs2.auth.Auth;
import com.zhiwei.brandkbs2.enmus.RoleEnum;
import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.service.ProjectService;
import com.zhiwei.brandkbs2.service.UserCenterService;
import com.zhiwei.brandkbs2.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
......@@ -36,21 +32,15 @@ public class LoginController extends BaseController {
@Value("${jwt.hour}")
private int jwtHour;
@Value("${qbjc.userCenter.url}")
private String yuqingInterface;
@Value("${qbjc.userCenter.token}")
private String token;
@Autowired
private RestTemplate restTemplate;
@Resource(name = "userServiceImpl")
private UserService UserService;
@Resource(name = "projectServiceImpl")
private ProjectService ProjectService;
@Resource(name = "userCenterServiceImpl")
private UserCenterService userCenterService;
@ApiOperation("用户登录")
@PostMapping("/user/login")
public ResponseResult login() {
......@@ -105,41 +95,19 @@ public class LoginController extends BaseController {
@ApiOperation("第三方接入-验证External-Token")
@GetMapping("/user/login/verify/token")
public ResponseResult verifyToken() {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("External-Origin", "BRANDKBS");
httpHeaders.set("External-Service", "BRANDKBS");
httpHeaders.set("External-Token", token);
HttpEntity<String> requestEntity = new HttpEntity<>(httpHeaders);
HttpEntity<JSONObject> entity = restTemplate.exchange(yuqingInterface + "/thirdPart/external/verify/token", HttpMethod.GET,
requestEntity, JSONObject.class);
if (null != entity.getBody() || !entity.getBody().getBoolean("status")) {
String ticket = entity.getBody().getJSONObject("data").getString("ticket");
return ResponseResult.success(ticket);
}
return ResponseResult.failure("ticket获取失败");
return userCenterService.verifyToken();
}
@ApiOperation("第三方接入-验证External-Ticket")
@GetMapping("/user/login/verify/ticket")
public ResponseResult verifyTicket(@RequestParam String ticket) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("External-Origin", "BRANDKBS");
httpHeaders.set("External-Token", token);
httpHeaders.set("External-Ticket", ticket);
HttpEntity<String> requestEntity = new HttpEntity<>(httpHeaders);
HttpEntity<JSONObject> entity = restTemplate.exchange(yuqingInterface + "/thirdPart/external/verify/ticket", HttpMethod.GET,
requestEntity, JSONObject.class);
if (null != entity.getBody()) {
JSONObject userInfo = entity.getBody().getJSONObject("data");
return ResponseResult.success(userInfo);
}
return ResponseResult.failure("用户信息获取失败");
return userCenterService.verifyTicket(ticket);
}
@ApiOperation("测试接口")
@GetMapping("/test")
public ResponseResult test() {
return ResponseResult.success("brandkbs2-success 2022/12/5");
return ResponseResult.success("brandkbs2-success 2023/1/6");
}
}
......
......@@ -31,7 +31,7 @@ import javax.annotation.Resource;
public class UserController extends BaseController {
@Resource(name = "userServiceImpl")
private UserService UserService;
private UserService userService;
@Resource(name = "behaviorServiceImpl")
private BehaviorService behaviorService;
......@@ -55,7 +55,7 @@ public class UserController extends BaseController {
@RequestParam(value = "keyword", defaultValue = "") String keyword,
@RequestParam(value = "pid") String pid,
@RequestParam(value = "role", defaultValue = "-1") int role) {
return ResponseResult.success(UserService.findUserList(page, size, keyword, pid, role));
return ResponseResult.success(userService.findUserList(page, size, keyword, pid, role));
}
@ApiOperation("根据手机号搜索用户信息")
......@@ -77,9 +77,7 @@ public class UserController extends BaseController {
@ApiOperation("添加用户")
@PostMapping("/add")
public ResponseResult addUser(@RequestBody UserDTO userDTO) {
UserService.addUser(userDTO);
behaviorService.pushBehaviorOld(OPERATION, "添加用户:" + userDTO.getId(), request);
return ResponseResult.success();
return userService.addUser(userDTO);
}
@ApiOperation("删除用户")
......@@ -89,16 +87,14 @@ public class UserController extends BaseController {
@DeleteMapping("/delete")
@Auth(role = RoleEnum.ADMIN)
public ResponseResult deleteUser(@RequestParam(value = "uid") String userId, @RequestParam(value = "pid") String pid) {
UserService.deleteUser(userId, pid);
behaviorService.pushBehaviorOld(OPERATION, "删除用户:" + userId, request);
userService.deleteUser(userId, pid);
return ResponseResult.success();
}
@ApiOperation("编辑用户")
@PutMapping("/update")
public ResponseResult updateUser(@RequestBody UserDTO userDTO) {
UserService.updateUser(userDTO);
behaviorService.pushBehaviorOld(OPERATION, "编辑用户:" + userDTO, request);
userService.updateUser(userDTO);
return ResponseResult.success();
}
......@@ -113,16 +109,14 @@ public class UserController extends BaseController {
public ResponseResult findSuperAdminList(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "size", defaultValue = "10") int size,
@RequestParam(value = "keyword", defaultValue = "") String keyword) {
return ResponseResult.success(UserService.findSuperAdminList(page, size, keyword));
return ResponseResult.success(userService.findSuperAdminList(page, size, keyword));
}
@ApiOperation("添加超级管理员")
@PostMapping("/add/superAdmin")
@Auth(role = RoleEnum.SUPER_ADMIN)
public ResponseResult addSuperAdmin(@RequestBody UserDTO userDTO) {
UserService.addSuperAdmin(userDTO);
behaviorService.pushBehaviorOld(OPERATION, "添加超级管理员:" + userDTO.getId(), request);
return ResponseResult.success();
return userService.addSuperAdmin(userDTO);
}
@ApiOperation("删除超级管理员")
......@@ -131,8 +125,7 @@ public class UserController extends BaseController {
@DeleteMapping("/delete/superAdmin")
@Auth(role = RoleEnum.SUPER_ADMIN)
public ResponseResult deleteSuperAdmin(@RequestParam(value = "uid") String userId) {
UserService.deleteSuperAdmin(userId);
behaviorService.pushBehaviorOld(OPERATION, "删除超级管理员:" + userId, request);
userService.deleteSuperAdmin(userId);
return ResponseResult.success();
}
......
......@@ -73,7 +73,7 @@ public class ChannelEsDao extends EsClientDao {
}
public void upsertChannelRecord(List<ChannelRecord> channelRecords) {
String index = getChannelRecordIndex();
String index = getChannelRecordIndexes().get(0);
BulkRequest bulkRequest = new BulkRequest();
Long startTime = null;
Long endTime = null;
......@@ -119,7 +119,7 @@ public class ChannelEsDao extends EsClientDao {
@Override
public String[] getIndexes() {
return new String[]{getChannelRecordIndex()};
return getChannelRecordIndexes().toArray(new String[0]);
}
@Override
......@@ -127,14 +127,20 @@ public class ChannelEsDao extends EsClientDao {
return channelEsClient;
}
public String getChannelRecordIndex() {
// if (test) {
// return GenericAttribute.ES_CHANNEL_INDEX_TEST;
// }
// 近1年数据库
public List<String> getChannelRecordIndexes() {
List<String> res = new ArrayList<>();
// 近3年数据库
Calendar date = Calendar.getInstance();
int year = date.get(Calendar.YEAR);
return GenericAttribute.ES_CHANNEL_INDEX_PREFIX + year;
for (int i = 0; i < 3; i++) {
year -= i;
// 2022年开始有channel_record库
if (year < 2022) {
break;
}
res.add(GenericAttribute.ES_CHANNEL_INDEX_PREFIX + year);
}
return res;
}
private BoolQueryBuilder channelUniqueBool(String fid) {
......
package com.zhiwei.brandkbs2.pojo.dto;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -38,6 +39,6 @@ public class ChannelSearchDTO {
private Integer[] articlesCount;
@ApiModelProperty("排序字段")
private String sorter = "{\"influence\":\"descend\"}";
private JSONObject sorter;
}
......@@ -35,6 +35,12 @@ public class UserDTO {
private String username;
/**
* 密码
*/
@ApiModelProperty("密码")
private String password;
/**
* 电话号码
*/
@ApiModelProperty("电话号码")
......
......@@ -266,6 +266,6 @@ public interface ChannelService {
Integer[] articlesCount, String sorter);
PageVO<ChannelVO> getChannelListNew(int page, int pageSize, String keyword, List<String> platforms, List<Integer> emotions, List<String> mediaTypes,
Integer[] articlesCount, String sorter);
Integer[] articlesCount, JSONObject sorter);
}
package com.zhiwei.brandkbs2.service;
import com.zhiwei.brandkbs2.model.ResponseResult;
/**
* @ClassName: UserCenterService
* @Description 用户中心服务接口
* @author: sjj
* @date: 2023-01-06 11:33
*/
public interface UserCenterService {
/**
* 第三方接入-验证External-Token
* @return
*/
ResponseResult verifyToken();
/**
* 第三方接入-验证External-Ticket
* @param ticket
* @return
*/
ResponseResult verifyTicket(String ticket);
/**
* 用户中心-用户注册
* @param phone 手机号
* @param password 密码
* @return
*/
boolean registerUser(long phone, String password);
}
package com.zhiwei.brandkbs2.service;
import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.UserInfo;
import com.zhiwei.brandkbs2.pojo.dto.UserDTO;
import com.zhiwei.brandkbs2.pojo.vo.PageVO;
......@@ -56,7 +57,7 @@ public interface UserService {
*
* @param userDTO
*/
void addUser(UserDTO userDTO);
ResponseResult addUser(UserDTO userDTO);
/**
* 删除用户
......@@ -88,7 +89,7 @@ public interface UserService {
*
* @param userDTO
*/
void addSuperAdmin(UserDTO userDTO);
ResponseResult addSuperAdmin(UserDTO userDTO);
/**
* 删除超级管理员
......
......@@ -971,7 +971,7 @@ public class ChannelServiceImpl implements ChannelService {
@Override
public PageVO<ChannelVO> getChannelListNew(int page, int pageSize, String keyword, List<String> platforms,
List<Integer> emotions, List<String> mediaTypes, Integer[] articlesCount, String sorter) {
List<Integer> emotions, List<String> mediaTypes, Integer[] articlesCount, JSONObject sorter) {
try {
String projectId = UserThreadLocal.getProjectId();
String contendId = "0";
......@@ -979,9 +979,11 @@ public class ChannelServiceImpl implements ChannelService {
BoolQueryBuilder postFilter = getChannelListQuery(projectId, contendId, keyword, platforms, emotions,
mediaTypes, articlesCount);
searchHelper.setPostFilter(postFilter);
if (null != sorter) {
for (Map.Entry<String, Object> entry : JSONObject.parseObject(sorter).entrySet()) {
if (entry.getValue().toString().contains("desc")) {
if (null == sorter || sorter.isEmpty()) {
searchHelper.setSort(SortBuilders.fieldSort("influence").order(SortOrder.DESC));
} else {
for (Map.Entry<String, Object> entry : sorter.entrySet()) {
if (null == entry.getValue() || entry.getValue().toString().contains("desc")) {
searchHelper.setSort(SortBuilders.fieldSort(entry.getKey()).order(SortOrder.DESC));
} else {
searchHelper.setSort(SortBuilders.fieldSort(entry.getKey()).order(SortOrder.ASC));
......
package com.zhiwei.brandkbs2.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.service.UserCenterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
/**
* @ClassName: UserCenterServiceImpl
* @Description UserCenterServiceImpl
* @author: sjj
* @date: 2023-01-06 11:36
*/
@Service("userCenterServiceImpl")
public class UserCenterServiceImpl implements UserCenterService {
@Value("${qbjc.userCenter.url}")
private String yuqingInterface;
@Value("${qbjc.userCenter.token}")
private String token;
@Autowired
private RestTemplate restTemplate;
private static final String EXTERNAL_ORIGIN = "External-Origin";
private static final String EXTERNAL_SERVICE = "External-Service";
private static final String EXTERNAL_TOKEN = "External-Token";
private static final String EXTERNAL_TICKET = "External-Ticket";
private static final String SERVICE_NAME = "BRANDKBS";
@Override
public ResponseResult verifyToken() {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set(EXTERNAL_ORIGIN, SERVICE_NAME);
httpHeaders.set(EXTERNAL_SERVICE, SERVICE_NAME);
httpHeaders.set(EXTERNAL_TOKEN, token);
HttpEntity<String> requestEntity = new HttpEntity<>(httpHeaders);
HttpEntity<JSONObject> entity = restTemplate.exchange(yuqingInterface + "/thirdPart/external/verify/token", HttpMethod.GET,
requestEntity, JSONObject.class);
if (null != entity.getBody() || !entity.getBody().getBoolean("status")) {
String ticket = entity.getBody().getJSONObject("data").getString("ticket");
return ResponseResult.success(ticket);
}
return ResponseResult.failure("ticket获取失败");
}
@Override
public ResponseResult verifyTicket(String ticket) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set(EXTERNAL_ORIGIN, SERVICE_NAME);
httpHeaders.set(EXTERNAL_SERVICE, token);
httpHeaders.set(EXTERNAL_TICKET, ticket);
HttpEntity<String> requestEntity = new HttpEntity<>(httpHeaders);
HttpEntity<JSONObject> entity = restTemplate.exchange(yuqingInterface + "/thirdPart/external/verify/ticket", HttpMethod.GET,
requestEntity, JSONObject.class);
if (null != entity.getBody()) {
JSONObject userInfo = entity.getBody().getJSONObject("data");
return ResponseResult.success(userInfo);
}
return ResponseResult.failure("用户信息获取失败");
}
@Override
public boolean registerUser(long phone, String password) {
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set(EXTERNAL_ORIGIN, SERVICE_NAME);
httpHeaders.set(EXTERNAL_TOKEN, token);
JSONObject json = new JSONObject();
json.put("phone", phone);
json.put("password", password);
HttpEntity<JSONObject> requestEntity = new HttpEntity<>(json, httpHeaders);
HttpEntity<JSONObject> entity = restTemplate.exchange(yuqingInterface + "/thirdPart/external/register/phone", HttpMethod.POST,
requestEntity, JSONObject.class);
return null != entity.getBody() && entity.getBody().getBoolean("status");
}
}
......@@ -10,11 +10,13 @@ import com.zhiwei.brandkbs2.enmus.RoleEnum;
import com.zhiwei.brandkbs2.enmus.response.LoginCodeEnum;
import com.zhiwei.brandkbs2.exception.ExceptionCast;
import com.zhiwei.brandkbs2.model.CommonCodeEnum;
import com.zhiwei.brandkbs2.model.ResponseResult;
import com.zhiwei.brandkbs2.pojo.User;
import com.zhiwei.brandkbs2.pojo.UserInfo;
import com.zhiwei.brandkbs2.pojo.UserRole;
import com.zhiwei.brandkbs2.pojo.dto.UserDTO;
import com.zhiwei.brandkbs2.pojo.vo.PageVO;
import com.zhiwei.brandkbs2.service.UserCenterService;
import com.zhiwei.brandkbs2.service.UserService;
import com.zhiwei.brandkbs2.util.MongoUtil;
import com.zhiwei.brandkbs2.util.Tools;
......@@ -61,6 +63,9 @@ public class UserServiceImpl implements UserService {
@Autowired
private com.zhiwei.middleware.auth.core.UserInfoClient userInfoClient;
@Resource(name = "userCenterServiceImpl")
private UserCenterService userCenterService;
@Override
public UserInfo login() {
String uid = UserThreadLocal.getUserId();
......@@ -119,21 +124,27 @@ public class UserServiceImpl implements UserService {
}
@Override
public void addUser(UserDTO userDTO) {
public ResponseResult addUser(UserDTO userDTO) {
if (Objects.isNull(userDTO.getRoleId()) || userDTO.getRoleId() < RoleEnum.ADMIN.getState()) {
// 抛出用户权限设置错误异常
ExceptionCast.cast(CommonCodeEnum.INVALID_PARAM, "用户权限设置异常");
ExceptionCast.cast(CommonCodeEnum.UN_AUTHORISE);
}
int roleId = UserThreadLocal.getRoleId();
// 只有超管能设置管理员
if (roleId != RoleEnum.SUPER_ADMIN.getState() && userDTO.getRoleId() <= RoleEnum.ADMIN.getState()) {
ExceptionCast.cast(CommonCodeEnum.UN_AUTHORISE);
}
// 有密码则通过用户中心注册
if (null != userDTO.getPassword()) {
if (!userCenterService.registerUser(userDTO.getPhoneNumber(), userDTO.getPassword())) {
return ResponseResult.failure("用户中心注册账号失败");
}
}
User user = userDao.findOneById(userDTO.getId());
// 新用户
if (null == user) {
userDao.insertOne(createNewUser(userDTO));
return;
return ResponseResult.success();
}
List<UserRole> roles = user.getRoles();
// 无任何角色
......@@ -149,6 +160,7 @@ public class UserServiceImpl implements UserService {
Update update = new Update();
update.set("roles", roles);
userDao.updateOneByIdWithField(userDTO.getId(), update);
return ResponseResult.success();
}
@Override
......@@ -191,7 +203,13 @@ public class UserServiceImpl implements UserService {
}
@Override
public void addSuperAdmin(UserDTO userDTO) {
public ResponseResult addSuperAdmin(UserDTO userDTO) {
// 有密码则通过用户中心注册
if (null != userDTO.getPassword()) {
if (!userCenterService.registerUser(userDTO.getPhoneNumber(), userDTO.getPassword())) {
return ResponseResult.failure("用户中心注册账号失败");
}
}
User user = userDao.findOneById(userDTO.getId());
// 老用户
if (null != user) {
......@@ -200,12 +218,13 @@ public class UserServiceImpl implements UserService {
update.set("superAdmin", true);
update.set("roles", null);
userDao.updateOneByIdWithField(user.getId(), update);
return;
return ResponseResult.success();
}
}
// 新用户
userDTO.setRoleId(RoleEnum.SUPER_ADMIN.getState());
userDao.insertOne(createNewUser(userDTO));
return ResponseResult.success();
}
@Override
......@@ -299,9 +318,7 @@ public class UserServiceImpl implements UserService {
// if (null == userId || null == projectId) {
// ExceptionCast.cast(LoginCodeEnum.LOGIN_EXPIRED_ERROR);
// }
Map<String,Object> userInfoMap = queryUserInfo(UserThreadLocal.getUserId(), UserThreadLocal.getProjectId()).toMap();
return userInfoMap;
return queryUserInfo(UserThreadLocal.getUserId(), UserThreadLocal.getProjectId()).toMap();
}
private User createNewUser(UserDTO userDTO) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment