diff --git a/admin/src/main/java/com/jinrui/reference/admin/controller/AdminUserController.java b/admin/src/main/java/com/jinrui/reference/admin/controller/AdminUserController.java index 9992ab5..8642f42 100644 --- a/admin/src/main/java/com/jinrui/reference/admin/controller/AdminUserController.java +++ b/admin/src/main/java/com/jinrui/reference/admin/controller/AdminUserController.java @@ -215,6 +215,46 @@ public class AdminUserController { return ResultObject.failed(500, "服务端错误,请联系系统管理员!"); } - return adminUserService.create(name, phone); + return adminUserService.create(name, phone, adminUserCreateDTO.getUserType()); + } + + /** + * 管理后台创建用户接口 + * + * @param token 登陆Token + * @param adminUserCreateDTO 要创建的用户昵称及手机号 + * @return 创建结果 + */ + @PostMapping("/h5") + public ResultObject createH5User(@RequestHeader("auth-token") String token, + @RequestParam(value = "phone", required = true) String phone) { + if (!StringUtils.hasText(token)) { + return ResultObject.failed("登陆Token为空!"); + } + + if (!StringUtils.hasText(phone)) { + return ResultObject.failed("手机号不可为空!"); + } + + try { + AdminUser adminUser = AdminJwtService.parseToken(token); + if (adminUser == null) { + log.warn("解析token {}拿不到AdminUser对象!", token); + return ResultObject.failed("登陆Token有误,请联系系统管理员!"); + } + + if (!adminUser.isActive()) { + log.warn("当前用户已被封禁! id = {}", adminUser.getId()); + return ResultObject.failed("当前用户已被封禁!请联系系统管理员!"); + } + + log.info("path: /admin/user/h5, method: POST, request user id: {}, name: {}, phone: {}", + adminUser.getId(), adminUser.getName(), phone); + } catch (Exception e) { + log.error("解析登陆Token出错!", e); + return ResultObject.failed(500, "服务端错误,请联系系统管理员!"); + } + + return adminUserService.createH5User(phone); } } diff --git a/admin/src/main/java/com/jinrui/reference/admin/controller/ApiController.java b/admin/src/main/java/com/jinrui/reference/admin/controller/ApiController.java index 8f44510..5834d08 100644 --- a/admin/src/main/java/com/jinrui/reference/admin/controller/ApiController.java +++ b/admin/src/main/java/com/jinrui/reference/admin/controller/ApiController.java @@ -3,6 +3,8 @@ package com.jinrui.reference.admin.controller; import java.util.List; import java.util.Map; +import javax.servlet.http.HttpServletRequest; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; @@ -34,18 +36,29 @@ public class ApiController { } @GetMapping("/news") - public ResultObject> getNews(@RequestParam(name = "num", required = true, defaultValue = "10") Integer num, @RequestParam(name = "last", required = false) Long last) { - return newsService.requestNewsByApi(num, last); + public ResultObject> getNews(@RequestParam(name = "num", required = true, defaultValue = "10") Integer num, @RequestParam(name = "last", required = false) Long last, HttpServletRequest request) { + String accessKey = request.getHeader("X-Api-Key"); + Integer clientType = apiKeyService.getClientType(accessKey); + if (clientType == null) { + return ResultObject.failed("非法操作,用户不存在!"); + } + return newsService.requestNewsByApi(num, last, clientType); } @PostMapping("/news") - public ResultObject> queryNews(@RequestParam(name = "num", required = true, defaultValue = "10") Integer num, @RequestParam(name = "last", required = false) Long last) { - return newsService.requestNewsByApi(num, last); + public ResultObject> queryNews(@RequestParam(name = "num", required = true, defaultValue = "10") Integer num, @RequestParam(name = "last", required = false) Long last, HttpServletRequest request) { + String accessKey = request.getHeader("X-Api-Key"); + Integer clientType = apiKeyService.getClientType(accessKey); + if (clientType == null) { + return ResultObject.failed("非法操作,用户不存在!"); + } + return newsService.requestNewsByApi(num, last, clientType); } @PostMapping("/key") public ResultObject> generateApiKey(@RequestHeader("auth-token") String token, - @RequestParam(name = "clientName", required = true) String clientName) { + @RequestParam(name = "clientName", required = true) String clientName, + @RequestParam(name = "clientType", required = true) Integer clientType) { if (!StringUtils.hasText(token)) { return ResultObject.failed("登陆Token为空!"); } @@ -64,7 +77,7 @@ public class ApiController { } log.info("path: /api/key, method: POST, request user id: {}, clientName: {}", adminUserId, clientName); - return apiKeyService.generateApiKey(clientName); + return apiKeyService.generateApiKey(clientName, clientType); } catch (Exception e) { log.error("解析登陆Token出错!", e); return ResultObject.failed(500, "服务端错误,请联系系统管理员!"); @@ -74,7 +87,8 @@ public class ApiController { @GetMapping("/key") public ResultObject> getApiKey(@RequestHeader("auth-token") String token, - @RequestParam(name = "clientName", required = true) String clientName) { - return generateApiKey(token, clientName); + @RequestParam(name = "clientName", required = true) String clientName, + @RequestParam(name = "clientType", required = true) Integer clientType) { + return generateApiKey(token, clientName, clientType); } } diff --git a/admin/src/main/java/com/jinrui/reference/admin/mapper/AdminUserMapper.java b/admin/src/main/java/com/jinrui/reference/admin/mapper/AdminUserMapper.java index a83f77e..013edf2 100644 --- a/admin/src/main/java/com/jinrui/reference/admin/mapper/AdminUserMapper.java +++ b/admin/src/main/java/com/jinrui/reference/admin/mapper/AdminUserMapper.java @@ -59,15 +59,22 @@ public interface AdminUserMapper { void delete(@Param("id") long id); @Insert("") - void create(@Param("name") String name, @Param("phone") String phone); + void create(@Param("name") String name, @Param("phone") String phone, @Param("password") String password, @Param("userType") String userType); + + @Insert("") + void createH5User(@Param("phone") String phone); } diff --git a/admin/src/main/java/com/jinrui/reference/admin/model/dto/login/AdminUserCreateDTO.java b/admin/src/main/java/com/jinrui/reference/admin/model/dto/login/AdminUserCreateDTO.java index f403c60..193338e 100644 --- a/admin/src/main/java/com/jinrui/reference/admin/model/dto/login/AdminUserCreateDTO.java +++ b/admin/src/main/java/com/jinrui/reference/admin/model/dto/login/AdminUserCreateDTO.java @@ -14,6 +14,8 @@ public class AdminUserCreateDTO { * 用户手机号 不可为空 */ private String phone; + + private String userType; public String getName() { return name; @@ -30,4 +32,12 @@ public class AdminUserCreateDTO { public void setPhone(String phone) { this.phone = phone; } + + public String getUserType() { + return userType; + } + + public void setUserType(String userType) { + this.userType = userType; + } } diff --git a/admin/src/main/java/com/jinrui/reference/admin/service/AdminUserService.java b/admin/src/main/java/com/jinrui/reference/admin/service/AdminUserService.java index 4e87ba3..42512cf 100644 --- a/admin/src/main/java/com/jinrui/reference/admin/service/AdminUserService.java +++ b/admin/src/main/java/com/jinrui/reference/admin/service/AdminUserService.java @@ -9,6 +9,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import com.fasterxml.jackson.core.JsonProcessingException; @@ -245,7 +246,7 @@ public class AdminUserService { return ResultObject.success(); } - public ResultObject create(String name, String phone) { + public ResultObject create(String name, String phone, String userType) { try { AdminUser adminUser = adminUserMapper.getAdminUserByPhone(phone); if (adminUser != null) { @@ -256,9 +257,11 @@ public class AdminUserService { log.error("根据手机号查询用户出错!", e); return ResultObject.failed(500, "服务端错误!请联系系统管理员!"); } - + if (ObjectUtils.isEmpty(userType)) { + userType = "00"; + } try { - adminUserMapper.create(name, phone); + adminUserMapper.create(name, phone, "111111", userType); } catch (Exception e) { log.error("注册用户报错!", e); return ResultObject.failed(500, "服务端错误!请联系系统管理员!"); @@ -293,4 +296,14 @@ public class AdminUserService { private static String getLoginLockKey(String phone) { return REDIS_LOGIN_LOCK_KEY + phone; } + + public ResultObject createH5User(String phone) { + try { + adminUserMapper.createH5User(phone); + } catch (Exception e) { + log.error("注册用户报错!", e); + return ResultObject.failed(500, "服务端错误!请联系系统管理员!"); + } + return ResultObject.success(); + } } diff --git a/core/src/main/java/com/jinrui/reference/core/mapper/ApiUserMapper.java b/core/src/main/java/com/jinrui/reference/core/mapper/ApiUserMapper.java index 285ce58..a3d2d30 100644 --- a/core/src/main/java/com/jinrui/reference/core/mapper/ApiUserMapper.java +++ b/core/src/main/java/com/jinrui/reference/core/mapper/ApiUserMapper.java @@ -10,10 +10,13 @@ public interface ApiUserMapper { @Select("select secret_key from api_user where access_key = #{ak} and disabled = 0") String getClientSecretkey(@Param("ak") String ak); + @Select("select fulled from api_user where access_key = #{ak} and disabled = 0") + Integer getClientType(@Param("ak") String ak); + @Select("select access_key, secret_key from api_user where client_name = #{clientName} and disabled = 0") Map getClientKey(@Param("clientName") String clientName); - @Insert("insert into api_user(client_name, access_key, secret_key)" + - "values (#{clientName}, #{accessKey}, #{secretKey})") - void save(@Param("clientName") String clientName, @Param("accessKey") String accessKey, @Param("secretKey") String secretKey); + @Insert("insert into api_user(client_name, access_key, secret_key, fulled)" + + "values (#{clientName}, #{accessKey}, #{secretKey}, #{fulled})") + void save(@Param("clientName") String clientName, @Param("accessKey") String accessKey, @Param("secretKey") String secretKey, @Param("fulled") Integer fulled); } diff --git a/core/src/main/java/com/jinrui/reference/core/mapper/NewsMapper.java b/core/src/main/java/com/jinrui/reference/core/mapper/NewsMapper.java index 70dc78d..9a4222e 100644 --- a/core/src/main/java/com/jinrui/reference/core/mapper/NewsMapper.java +++ b/core/src/main/java/com/jinrui/reference/core/mapper/NewsMapper.java @@ -72,8 +72,8 @@ public interface NewsMapper { void saveDraft(NewsDraft newsDraft); @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") - @Insert("insert into news(draft_id, title, summary, picture, type, content, create_time, update_time, status, publish_time, content_text, newsinfo_id, llm_title, llm_content, rating)" + - "values (#{draftId}, #{title}, #{summary}, #{picture}, #{type}, #{content}, now(), now(), #{status}, #{publishTime}, #{contentText}, #{newsinfoId}, #{llmTitle}, #{llmContent}, #{rating})") + @Insert("insert into news(draft_id, title, summary, picture, type, content, create_time, update_time, status, publish_time, content_text, newsinfo_id, llm_title, llm_content, rating, overseas_event, overseas_macro, china_macro, industry_news, company_news, reprint_source, company_name)" + + "values (#{draftId}, #{title}, #{summary}, #{picture}, #{type}, #{content}, now(), now(), #{status}, #{publishTime}, #{contentText}, #{newsinfoId}, #{llmTitle}, #{llmContent}, #{rating}, #{overseasEvent}, #{overseasMacro}, #{chinaMacro}, #{industryNews}, #{companyNews}, #{reprintSource}, #{companyName})") void saveNews(News news); @Select("") - List queryNewsByApi(@Param("last") Long last, @Param("limit") int limit); + List queryNewsByApi(@Param("last") Long last, @Param("limit") int limit, @Param("clientType") int clientType); } diff --git a/core/src/main/java/com/jinrui/reference/core/mapper/NewsTagsMapper.java b/core/src/main/java/com/jinrui/reference/core/mapper/NewsTagsMapper.java index 8e09724..a04291f 100644 --- a/core/src/main/java/com/jinrui/reference/core/mapper/NewsTagsMapper.java +++ b/core/src/main/java/com/jinrui/reference/core/mapper/NewsTagsMapper.java @@ -6,7 +6,6 @@ import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; -import com.jinrui.reference.core.model.entity.News; import com.jinrui.reference.core.model.entity.NewsTags; import com.jinrui.reference.core.typehandler.JsonArrayTypeHandler; diff --git a/core/src/main/java/com/jinrui/reference/core/model/entity/News.java b/core/src/main/java/com/jinrui/reference/core/model/entity/News.java index 344d470..01a91b8 100644 --- a/core/src/main/java/com/jinrui/reference/core/model/entity/News.java +++ b/core/src/main/java/com/jinrui/reference/core/model/entity/News.java @@ -1,5 +1,6 @@ package com.jinrui.reference.core.model.entity; +import com.fasterxml.jackson.annotation.JsonProperty; import com.jinrui.reference.core.model.dto.news.SaveNewsDTO; import java.util.Date; @@ -87,6 +88,20 @@ public class News { private Byte rating; private String revision; + + private Integer overseasEvent; + + private Integer overseasMacro; + + private Integer chinaMacro; + + private Integer industryNews; + + private Integer companyNews; + + private String reprintSource; + + private String companyName; public News() {} @@ -267,4 +282,60 @@ public class News { public String getRevision() { return revision; } + + public Integer getOverseasEvent() { + return overseasEvent; + } + + public void setOverseasEvent(Integer overseasEvent) { + this.overseasEvent = overseasEvent; + } + + public Integer getOverseasMacro() { + return overseasMacro; + } + + public void setOverseasMacro(Integer overseasMacro) { + this.overseasMacro = overseasMacro; + } + + public Integer getChinaMacro() { + return chinaMacro; + } + + public void setChinaMacro(Integer chinaMacro) { + this.chinaMacro = chinaMacro; + } + + public Integer getIndustryNews() { + return industryNews; + } + + public void setIndustryNews(Integer industryNews) { + this.industryNews = industryNews; + } + + public Integer getCompanyNews() { + return companyNews; + } + + public void setCompanyNews(Integer companyNews) { + this.companyNews = companyNews; + } + + public String getReprintSource() { + return reprintSource; + } + + public void setReprintSource(String reprintSource) { + this.reprintSource = reprintSource; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } } diff --git a/core/src/main/java/com/jinrui/reference/core/model/entity/NewsInfo.java b/core/src/main/java/com/jinrui/reference/core/model/entity/NewsInfo.java index eceebdb..ddf58a8 100644 --- a/core/src/main/java/com/jinrui/reference/core/model/entity/NewsInfo.java +++ b/core/src/main/java/com/jinrui/reference/core/model/entity/NewsInfo.java @@ -141,7 +141,7 @@ public class NewsInfo { @JsonProperty("news_tags") private NewsTags newsTags; - + public NewsInfo() {} public String getId() { diff --git a/core/src/main/java/com/jinrui/reference/core/model/entity/NewsTags.java b/core/src/main/java/com/jinrui/reference/core/model/entity/NewsTags.java index c89cc7f..89f3a6a 100644 --- a/core/src/main/java/com/jinrui/reference/core/model/entity/NewsTags.java +++ b/core/src/main/java/com/jinrui/reference/core/model/entity/NewsTags.java @@ -4,8 +4,10 @@ import java.util.Date; import java.util.List; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +@JsonIgnoreProperties(ignoreUnknown = true) public class NewsTags { @JsonProperty("id") private Long id; @@ -66,6 +68,27 @@ public class NewsTags { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss", timezone = "Asia/Shanghai") private Date updateTime; +// @JsonProperty("overseas_event") +// private Boolean overseasEvent; +// +// @JsonProperty("overseas_macro") +// private Boolean overseasMacro; +// +// @JsonProperty("china_macro") +// private Boolean chinaMacro; +// +// @JsonProperty("industry_news") +// private Boolean industryNews; +// +// @JsonProperty("company_news") +// private Boolean companyNews; +// +// @JsonProperty("reprint_source") +// private String reprintSource; +// +// @JsonProperty("company_name") +// private String companyName; + public List getIndustryScore() { return industryScore; } diff --git a/core/src/main/java/com/jinrui/reference/core/service/ApiKeyService.java b/core/src/main/java/com/jinrui/reference/core/service/ApiKeyService.java index 1207453..16b73d5 100644 --- a/core/src/main/java/com/jinrui/reference/core/service/ApiKeyService.java +++ b/core/src/main/java/com/jinrui/reference/core/service/ApiKeyService.java @@ -27,13 +27,13 @@ public class ApiKeyService { return secretKey; } - public ResultObject> generateApiKey(String clientName) { + public ResultObject> generateApiKey(String clientName, Integer clientType) { Map clientKeyMap = apiUserMapper.getClientKey(clientName); if (ObjectUtils.isEmpty(clientKeyMap)) { String accessKey = ApiKeyGenerator.generateAK(); String secretKey = ApiKeyGenerator.generateSK(); try { - apiUserMapper.save(clientName, accessKey, secretKey); + apiUserMapper.save(clientName, accessKey, secretKey, clientType); } catch (Exception e) { LOGGER.error("产生客户API密钥对失败", e); ResultObject.failed("客户已存在!"); @@ -46,4 +46,8 @@ public class ApiKeyService { return ResultObject.success(clientKeyMap); } + public Integer getClientType(String ak) { + return apiUserMapper.getClientType(ak); + } + } diff --git a/core/src/main/java/com/jinrui/reference/core/service/NewsService.java b/core/src/main/java/com/jinrui/reference/core/service/NewsService.java index b3d2bbf..488cc16 100644 --- a/core/src/main/java/com/jinrui/reference/core/service/NewsService.java +++ b/core/src/main/java/com/jinrui/reference/core/service/NewsService.java @@ -1078,8 +1078,8 @@ public class NewsService { * @param last * @return */ - public ResultObject> requestNewsByApi(Integer num, Long last) { - List result = newsMapper.queryNewsByApi(last, Integer.min(num, 1000)); + public ResultObject> requestNewsByApi(Integer num, Long last, Integer clientType) { + List result = newsMapper.queryNewsByApi(last, Integer.min(num, 1000), clientType); Map industryMap = industryMapper.queryAll().stream().collect(Collectors.toMap(Industry::getId, Function.identity())); result.stream().forEach( e -> {