Import complete SCRM project

This commit is contained in:
2026-07-29 16:20:57 +08:00
parent 86665d9c26
commit e27b758795
984 changed files with 282038 additions and 0 deletions
@@ -0,0 +1,123 @@
/*
*
* * Copyright 2019-2108 ICC (Intelligence Commerce Chain, https://icchain.io).
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package io.icchain.wxcontractbot;
import io.icchain.wxcontractbot.controller.im.agent.api.MsgCache;
import io.icchain.wxcontractbot.job.*;
import io.icchain.wxcontractbot.utils.MysqlUtil;
import io.icchain.wxcontractbot.utils.RedisUtils;
import io.icchain.wxcontractbot.utils.jedis.RedisUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import javax.annotation.PreDestroy;
/**
* @ClassName: AppRunner
* @Description: TODO
* @date: 2019年5月11日 下午4:20:01
*/
@Component
public class AppRunner implements ApplicationRunner {
private static final Logger log = LoggerFactory.getLogger(AppRunner.class.getName());
@Autowired
public MysqlUtil mysql;
@Autowired
public RedisUtil redisUtils;
@Autowired(required = false)
public RedisUtils redisUtilsTemplate;
/*
* @Title: run
* @Description: TODO
* @param args
* @throws Exception
* @see org.springframework.boot.ApplicationRunner#run(org.springframework.boot.ApplicationArguments)
*/
@Override
public void run(ApplicationArguments args) throws Exception {
MysqlUtil.util = mysql;
MysqlUtil.util.cSrv.redisUtil=redisUtils;
if (redisUtilsTemplate != null) {
MsgCache.setRedisUtils(redisUtilsTemplate);
}
MessageSendJob.start();
JoinFriendsJob.start();
JoinFriendsJob.startCheckStatus();
JoinFriendsJob.deleteInvalidData();
JoinFriendsJob.updateJoinFriendsStatus();
MysqlUtil.util.cSrv.initSpamMessageCache();
BotFriendsJob.start();
WxIdMappingUpdateJob.start();
BotOnlineStatusCheckJob.start();
// 注册关闭钩子,确保应用关闭时正确释放资源
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
log.info("Application is shutting down, cleaning up resources...");
shutdownAllJobs();
}));
}
/**
* 应用关闭时清理所有资源
*/
@PreDestroy
public void cleanup() {
shutdownAllJobs();
}
/**
* 关闭所有定时任务的线程池
*/
private void shutdownAllJobs() {
try {
MessageSendJob.shutdown();
} catch (Exception e) {
log.error("Error shutting down MessageSendJob", e);
}
try {
JoinFriendsJob.shutdown();
} catch (Exception e) {
log.error("Error shutting down JoinFriendsJob", e);
}
try {
BotFriendsJob.shutdown();
} catch (Exception e) {
log.error("Error shutting down BotFriendsJob", e);
}
try {
WxIdMappingUpdateJob.shutdown();
} catch (Exception e) {
log.error("Error shutting down WxIdMappingUpdateJob", e);
}
try {
BotOnlineStatusCheckJob.shutdown();
} catch (Exception e) {
log.error("Error shutting down BotOnlineStatusCheckJob", e);
}
log.info("All jobs shutdown completed");
}
}
@@ -0,0 +1,17 @@
package io.icchain.wxcontractbot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@@ -0,0 +1,29 @@
package io.icchain.wxcontractbot.config;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @Des : 获取spring上下文配置
*
* @Date : 2019/9/10 11:02
* @Author : Lgo
* @return :
* @param : null
*/
@Component
public class ApplicationContextProvider implements ApplicationContextAware {
private static ApplicationContext ctx = null;
public static ApplicationContext getApplicationContext() {
return ctx;
}
@Override
public void setApplicationContext(final ApplicationContext ctx) throws BeansException {
ApplicationContextProvider.ctx = ctx;
}
}
@@ -0,0 +1,39 @@
package io.icchain.wxcontractbot.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@Component
public class CorsInterceptor implements Filter {
@Value("${allow.domain}")
private String allowDomain;
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
String[] allowDomainArray = allowDomain.split(",");
Set<String> allowedOrigins = new HashSet<String>(Arrays.asList(allowDomainArray));
String originHeader = request.getHeader("Origin");
if (allowedOrigins.contains(originHeader)) {
response.setHeader("Access-Control-Allow-Origin", originHeader);
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-type");
}
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {}
public void destroy() {}
}
@@ -0,0 +1,34 @@
package io.icchain.wxcontractbot.config;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import javax.servlet.http.HttpServletRequest;
/**
* 模块编号:io.icchain.wxcontractbot.config GlobalExceptionHandler
* 作 者:xuelei.wang
* 创建时间:2020/5/19 14:44
* 修改编号:1
* 描 述:DES
*/
@RestControllerAdvice
public class GlobalExceptionHandler {
private Logger logger= LoggerFactory.getLogger(GlobalExceptionHandler.class);
@ExceptionHandler(value = Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public BaseResponse defaultErrorHandler(HttpServletRequest request, Exception exception) throws Exception {
BaseResponse baseResponse=new BaseResponse();
baseResponse.setSuccess(false);
baseResponse.setError_message("服务出现了异常,请联系开发人员!");
logger.error("全局拦截出现了异常:{},{}",request,exception);
return baseResponse;
}
}
@@ -0,0 +1,34 @@
package io.icchain.wxcontractbot.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
import java.util.Locale;
@Configuration
public class LocaleConfig implements WebMvcConfigurer {
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.CHINA);
return slr;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("lang");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}
@@ -0,0 +1,45 @@
package io.icchain.wxcontractbot.config;
import cn.hutool.json.JSONUtil;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.icchain.wxcontractbot.utils.Const;
import io.icchain.wxcontractbot.utils.MsgUtil;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
if (StringUtils.isEmpty(session.getAttribute(Const.currentLoginUserId))) {
buildResponse(response, 401, MsgUtil.getMessage("notLogin"));
return false;
}
if (request.getRequestURI().toLowerCase().startsWith("/admin/")) {
Object userType = session.getAttribute(Const.currentLoginUserType);
if (userType == null || !userType.toString().equals("admin")) {
buildResponse(response, 402, MsgUtil.getMessage("insufficientPermission"));
return false;
}
}
return true;
}
private void buildResponse(HttpServletResponse response, Integer code, String message) throws Exception {
String res = JSONUtil.toJsonStr(new BaseResponse(){{
setSuccess(false);
setError_code(code);
setError_message(message);
}});
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write(res);
}
}
@@ -0,0 +1,44 @@
package io.icchain.wxcontractbot.config;
/*
* 描述信息
* 模块编号: RestTemplateConfig
* 作 者:xuelei.wang
* 创建时间:2023/10/14
* 修改编号:1
* 描 述:描述信息
*/
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.StandardCharsets;
/**
* 模块编号:io.icchain.wxcontractbot.config RestTemplateConfig
* 作 者:xuelei.wang
* 创建时间:2023/10/14 22:31
* 修改编号:1
* 描 述:DES
*/
@Configuration
public class RestTemplateConfig {
/** 连接超时(毫秒),避免连不上时一直阻塞 */
private static final int CONNECT_TIMEOUT_MS = 10_000;
/** 读取超时(毫秒),避免 gewe 等外部接口慢时拖死 /cmd 请求 */
private static final int READ_TIMEOUT_MS = 30_000;
@Bean
public RestTemplate restTemplate() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(CONNECT_TIMEOUT_MS);
factory.setReadTimeout(READ_TIMEOUT_MS);
factory.setChunkSize(Integer.MAX_VALUE);
RestTemplate restTemplate = new RestTemplate(factory);
restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
return restTemplate;
}
}
@@ -0,0 +1,25 @@
package io.icchain.wxcontractbot.config;
import org.springframework.context.annotation.Bean;
import org.springframework.session.data.redis.config.ConfigureRedisAction;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 86400)
public class SpringSessionConfig {
public SpringSessionConfig() {}
@Bean
public CookieSerializer httpSessionIdResolver() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
cookieSerializer.setSameSite(null);
return cookieSerializer;
}
@Bean
public static ConfigureRedisAction configureRedisAction() {
return ConfigureRedisAction.NO_OP;
}
}
@@ -0,0 +1,31 @@
package io.icchain.wxcontractbot.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Configuration
public class Swagger2 {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("io.icchain"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.version("1.0")
.build();
}
}
@@ -0,0 +1,30 @@
package io.icchain.wxcontractbot.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
.excludePathPatterns("/service/webjars/**")
.excludePathPatterns("/service/swagger/**")
.excludePathPatterns("/service/swagger-ui.html")
.excludePathPatterns("/service/v2/api-docs/**")
.excludePathPatterns("/service/swagger-resources/**")
.excludePathPatterns("/service/user/captcha")
.excludePathPatterns("/service/user/smscode")
.excludePathPatterns("/service/user/emailcode")
.excludePathPatterns("/service/user/register/**")
.excludePathPatterns("/service/user/resetPassword/**")
.excludePathPatterns("/service/user/login/**")
.excludePathPatterns("/service/user/logout")
.excludePathPatterns("/service/iqa/answer")
.excludePathPatterns("/service/welcome/queryByChatId")
.excludePathPatterns("/service/pullGroup/queryByContent")
.addPathPatterns("/service/**");
}
}
@@ -0,0 +1,101 @@
/**
* Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package io.icchain.wxcontractbot.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public abstract class BaseController {
/**
* 日志对象
*/
protected Logger logger = LoggerFactory.getLogger(getClass());
/**
* 添加Model消息
*
* @param message
*/
protected void addMessage(Model model, String... messages) {
StringBuilder sb = new StringBuilder();
for (String message : messages) {
sb.append(message).append(messages.length > 1 ? "<br/>" : "");
}
model.addAttribute("message", sb.toString());
}
/**
* 添加Flash消息
*
* @param message
*/
protected void addMessage(RedirectAttributes redirectAttributes, String... messages) {
StringBuilder sb = new StringBuilder();
for (String message : messages) {
sb.append(message).append(messages.length > 1 ? "<br/>" : "");
}
redirectAttributes.addFlashAttribute("message", sb.toString());
}
/**
* 客户端返回字符串
*
* @param response
* @param string
* @return
*/
protected String sendMsg(HttpServletResponse response, String string) {
try {
response.reset();
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().print(string);
return null;
} catch (IOException e) {
return null;
}
}
protected String getParameter(HttpServletRequest request, String key, String defaultVal) {
String val = request.getParameter(key);
return StringUtils.isEmpty(val) ? defaultVal : val;
}
protected Integer getInt(HttpServletRequest request, String key, Integer defaultVal) {
String val = request.getParameter(key);
if (StringUtils.isEmpty(val)) {
return defaultVal;
}
return Integer.parseInt(val);
}
protected Integer getInt(HttpServletRequest request, String key) {
return getInt(request, key, null);
}
protected Double getDouble(HttpServletRequest request, String key, Double defaultVal) {
String val = request.getParameter(key);
if (StringUtils.isEmpty(val)) {
return defaultVal;
}
return Double.parseDouble(val);
}
protected Double getDouble(HttpServletRequest request, String key) {
return getDouble(request, key, null);
}
}
@@ -0,0 +1,13 @@
package io.icchain.wxcontractbot.controller;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HealthController {
@GetMapping("/health")
public ResponseEntity<String> health() {
return ResponseEntity.ok("OK");
}
}
@@ -0,0 +1,101 @@
package io.icchain.wxcontractbot.controller.accurate.add.friends;
import io.icchain.wxcontractbot.entity.accurate.add.friends.AccurateAddFriendsBot;
import io.icchain.wxcontractbot.service.accurate.add.friends.AccurateAddFriendsBotService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 精确加粉机器人表(io.icchain.wxcontractbot.entity.accurate.add.friends.AccurateAddFriendsBot)表控制层
*
* @author xuelei.wang
* @create time 2020-06-04 12:02:01
*/
@Api(tags = "精确加粉-机器人表")
@RestController
@RequestMapping("accurateAddFriendsBot")
public class AccurateAddFriendsBotController {
/**
* 服务对象
*/
@Autowired
private AccurateAddFriendsBotService accurateAddFriendsBotService;
/**
* 新增
*
* @param accurateAddFriendsBot
* @return
* @author xuelei.wang 2020-06-04 12:02:01
*/
@ApiOperation("新增")
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(AccurateAddFriendsBot accurateAddFriendsBot) {
BaseResponse baseResponse = accurateAddFriendsBotService.add(accurateAddFriendsBot);
return baseResponse;
}
/**
* 新增
*
* @param accurateAddFriendsBotList
* @return
* @author xuelei.wang 2020-06-04 12:02:01
*/
@ApiOperation("批量新增")
@RequestMapping(value = "addList", method = {RequestMethod.POST})
public BaseResponse addList(@RequestBody List<AccurateAddFriendsBot> accurateAddFriendsBotList) {
BaseResponse baseResponse = accurateAddFriendsBotService.addList(accurateAddFriendsBotList);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2020-06-04 12:02:01
*/
@ApiOperation("根据ID删除")
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse = accurateAddFriendsBotService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param accurateAddFriendsBot
* @return
* @author xuelei.wang 2020-06-04 12:02:01
*/
@ApiOperation("更新")
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(AccurateAddFriendsBot accurateAddFriendsBot) {
BaseResponse baseResponse = accurateAddFriendsBotService.update(accurateAddFriendsBot);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2020-06-04 12:02:01
*/
@ApiOperation("分页获取信息")
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(String addFriendsId,@PageableDefault(value = 20, page = 0) Pageable pageable) {
return accurateAddFriendsBotService.list(addFriendsId,pageable);
}
}
@@ -0,0 +1,100 @@
package io.icchain.wxcontractbot.controller.accurate.add.friends;
import io.icchain.wxcontractbot.entity.accurate.add.friends.AccurateAddFriendsComment;
import io.icchain.wxcontractbot.service.accurate.add.friends.AccurateAddFriendsCommentService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 精准加粉文案表(AccurateAddFriendsComment)表控制层
*
* @author xuelei.wang
* @create time 2020-06-04 13:24:44
*/
@Api(tags = "精准加粉-文案表")
@RestController
@RequestMapping("accurateAddFriendsComment")
public class AccurateAddFriendsCommentController {
/**
* 服务对象
*/
@Autowired
private AccurateAddFriendsCommentService accurateAddFriendsCommentService;
/**
* 新增
*
* @param accurateAddFriendsComment
* @return
* @author xuelei.wang 2020-06-04 13:24:44
*/
@ApiOperation("新增")
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(AccurateAddFriendsComment accurateAddFriendsComment) {
BaseResponse baseResponse = accurateAddFriendsCommentService.add(accurateAddFriendsComment);
return baseResponse;
}
/**
* 新增
*
* @param commentList
* @return
* @author xuelei.wang 2020-06-04 13:24:44
*/
@ApiOperation("批量新增")
@RequestMapping(value = "addList", method = {RequestMethod.POST})
public BaseResponse addList(@RequestBody List<AccurateAddFriendsComment> commentList) {
BaseResponse baseResponse = accurateAddFriendsCommentService.addList(commentList);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2020-06-04 13:24:44
*/
@ApiOperation("根据ID删除")
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse = accurateAddFriendsCommentService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param accurateAddFriendsComment
* @return
* @author xuelei.wang 2020-06-04 13:24:44
*/
@ApiOperation("更新")
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(AccurateAddFriendsComment accurateAddFriendsComment) {
BaseResponse baseResponse = accurateAddFriendsCommentService.update(accurateAddFriendsComment);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2020-06-04 13:24:44
*/
@ApiOperation("分页获取信息")
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(String addFriendsId,@PageableDefault(value = 20, page = 0,sort = {"sortNum"},direction = Sort.Direction.ASC) Pageable pageable) {
return accurateAddFriendsCommentService.list(addFriendsId,pageable);
}
}
@@ -0,0 +1,99 @@
package io.icchain.wxcontractbot.controller.accurate.add.friends;
import io.icchain.wxcontractbot.entity.accurate.add.friends.AccurateAddFriends;
import io.icchain.wxcontractbot.service.accurate.add.friends.AccurateAddFriendsService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;
/**
* 精准加粉配置表(AccurateAddFriends)表控制层
*
* @author xuelei.wang
* @create time 2020-06-04 12:02:24
*/
@Api(tags = "精准加粉主表")
@RestController
@RequestMapping("accurateAddFriends")
public class AccurateAddFriendsController {
/**
* 服务对象
*/
@Autowired
private AccurateAddFriendsService accurateAddFriendsService;
/**
* 新增
*
* @param accurateAddFriends
* @return
* @author xuelei.wang 2020-06-04 12:02:24
*/
@ApiOperation("新增")
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(AccurateAddFriends accurateAddFriends) {
BaseResponse baseResponse = accurateAddFriendsService.add(accurateAddFriends);
return baseResponse;
}
/**
* 新增
*
* @param accurateAddFriends
* @return
* @author xuelei.wang 2020-06-04 12:02:24
*/
@ApiOperation("新增")
@RequestMapping(value = "addAll", method = {RequestMethod.POST})
public BaseResponse addAll(@RequestBody AccurateAddFriends accurateAddFriends) {
BaseResponse baseResponse = accurateAddFriendsService.addAll(accurateAddFriends);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2020-06-04 12:02:24
*/
@ApiOperation("根据ID删除")
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse = accurateAddFriendsService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param accurateAddFriends
* @return
* @author xuelei.wang 2020-06-04 12:02:24
*/
@ApiOperation("更新")
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(AccurateAddFriends accurateAddFriends) {
BaseResponse baseResponse = accurateAddFriendsService.update(accurateAddFriends);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2020-06-04 12:02:24
*/
@ApiOperation("分页获取信息")
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 20, page = 0,sort = {"createDate"},direction = Sort.Direction.DESC) Pageable pageable) {
return accurateAddFriendsService.list(pageable);
}
}
@@ -0,0 +1,112 @@
package io.icchain.wxcontractbot.controller.accurate.add.friends;
import io.icchain.wxcontractbot.entity.accurate.add.friends.AccurateAddFriendsUser;
import io.icchain.wxcontractbot.service.accurate.add.friends.AccurateAddFriendsUserService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Map;
/**
* 精准加粉用户列表(AccurateAddFriendsUser)表控制层
*
* @author xuelei.wang
* @create time 2020-06-04 12:02:12
*/
@Api(tags = "精准加粉-用户列表")
@RestController
@RequestMapping("accurateAddFriendsUser")
public class AccurateAddFriendsUserController {
/**
* 服务对象
*/
@Autowired
private AccurateAddFriendsUserService accurateAddFriendsUserService;
/**
* 新增
*
* @param accurateAddFriendsUser
* @return
* @author xuelei.wang 2020-06-04 12:02:12
*/
@ApiOperation("新增")
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(AccurateAddFriendsUser accurateAddFriendsUser) {
BaseResponse baseResponse = accurateAddFriendsUserService.add(accurateAddFriendsUser);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2020-06-04 12:02:12
*/
@ApiOperation("根据ID删除")
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse = accurateAddFriendsUserService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param accurateAddFriendsUser
* @return
* @author xuelei.wang 2020-06-04 12:02:12
*/
@ApiOperation("更新")
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(AccurateAddFriendsUser accurateAddFriendsUser) {
BaseResponse baseResponse = accurateAddFriendsUserService.update(accurateAddFriendsUser);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2020-06-04 12:02:12
*/
@ApiOperation("分页获取信息")
@RequestMapping(value = "list", method = { RequestMethod.POST})
public BaseResponse list(AccurateAddFriendsUser user,@PageableDefault(value = 20, page = 0) Pageable pageable) {
return accurateAddFriendsUserService.list(user,pageable);
}
/**
* 获取统计信息
*
* @return
* @author xuelei.wang 2020-06-04 12:02:12
*/
@ApiOperation("获取统计信息")
@RequestMapping(value = "getCount", method = { RequestMethod.POST})
public BaseResponse getCount(@RequestBody AccurateAddFriendsUser user) {
return accurateAddFriendsUserService.getCount(user);
}
/**
* 导入用户信息
*
* @return
* @author xuelei.wang 2020-06-04 12:02:12
*/
@ApiOperation("导入用户,支持xls,xlsx两种格式")
@RequestMapping(value = "importUser", method = {RequestMethod.POST})
@ResponseBody
public BaseResponse importUser(@RequestParam MultipartFile file) {
return accurateAddFriendsUserService.importUser(file);
}
}
@@ -0,0 +1,283 @@
package io.icchain.wxcontractbot.controller.agent;
import com.alibaba.fastjson.JSON;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.service.agent.BotService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.icchain.wxcontractbot.utils.HttpUtil;
import io.icchain.wxcontractbot.utils.jedis.RedisUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Pageable;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "bot", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class BotController {
@Autowired
private BotService botService;
@Value("${bot.agent.api.url}")
private String botAgentApiUrl;
@Value("${BOT_KEY}")
private String botKey;
@Autowired
private RedisUtil redisUtil;
private Logger log = LoggerFactory.getLogger(BotController.class);
@Autowired
private CommonService commonService;
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(Pageable pageable) {
return botService.list(pageable);
}
@RequestMapping(value = "all", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse all() {
return botService.all();
}
@RequestMapping(value = "search", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse search(@RequestParam(value = "keyword", defaultValue = "") String keyword,
@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize) {
return botService.search(keyword, page, pagesize);
}
/**
* 修改机器人头像头像
*
* @param
* @param
* @return
*/
@RequestMapping(value = "setBotAvatar", method = RequestMethod.POST)
public String setBotAvatar(String botId, String img) {
List<NameValuePair> nvp = new ArrayList<>();
nvp.add(new BasicNameValuePair("botId", botId));
nvp.add(new BasicNameValuePair("img", img));
try {
return HttpUtil.postRequest(botAgentApiUrl + "setBotAvatar", nvp);
} catch (Exception ex) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setSuccess(false);
log.info("setBotAvatar error:{}", ex);
return JSON.toJSONString(baseResponse);
}
}
/**
* 设置机器人昵称
*
* @param
* @param
* @return
*/
@RequestMapping(value = "setBotNickname", method = RequestMethod.POST)
public String setBotNickname(String botId, String nickname) {
List<NameValuePair> nvp = new ArrayList<>();
nvp.add(new BasicNameValuePair("botId", botId));
nvp.add(new BasicNameValuePair("nickname", nickname));
try {
return HttpUtil.postRequest(botAgentApiUrl + "setBotNickname", nvp);
} catch (Exception ex) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setSuccess(false);
log.info("setBotNickname error:{}", ex);
return JSON.toJSONString(baseResponse);
}
}
/**
* 获取自己的二维码
*
* @param
* @param
* @return
*/
@RequestMapping(value = "getQrcode", method = RequestMethod.POST)
public BaseResponse getQrcode(String botId) {
return botService.getQrcode(botId);
}
/**
* 更新二维码
*
* @param
* @param
* @return
*/
@RequestMapping(value = "updateQrcode", method = RequestMethod.POST)
public BaseResponse updateQrcode(String botId) {
return botService.updateQrcode(botId);
}
@RequestMapping(value="/uploadQrcode",method = {RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public BaseResponse uploadImage(@RequestParam(value = "file") MultipartFile file,String wxId) throws Exception {
if(StringUtils.isEmpty(wxId)){
return new BaseResponse("wxId不能为空!");
}
if (file == null || "".equals(file)) {
return new BaseResponse("文件不能为空!");
}
if (file.getSize() > 0.2 * 1024 * 1024) {
return new BaseResponse("文件大小不能超过200KB!");
}
byte[] imgBytes = file.getBytes();
String encodingStr = org.apache.commons.codec.binary.Base64.encodeBase64String(imgBytes);
botService.uploadQrCode(encodingStr,wxId);
return new BaseResponse(true,"",encodingStr);
}
/**
* 退群
*
* @param
* @param
* @return
*/
@RequestMapping(value = "quitChat", method = RequestMethod.POST)
public String quitChat(String botId, String chatId) {
List<NameValuePair> nvp = new ArrayList<>();
nvp.add(new BasicNameValuePair("botId", botId));
nvp.add(new BasicNameValuePair("chatId", chatId));
try {
BaseResponse baseResponse = commonService.quitChat(botId, chatId);
if (baseResponse.getSuccess() == false) {
return JSON.toJSONString(baseResponse);
}
return HttpUtil.postRequest(botAgentApiUrl + "quitChat", nvp);
} catch (Exception ex) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setSuccess(false);
baseResponse.setError_message(ex.getMessage());
log.info("quitChat error:{}", ex.getMessage());
return JSON.toJSONString(baseResponse);
}
}
/**
* 邀请机器人进群
*
* @param
* @param
* @return
*/
@RequestMapping(value = "joinChat", method = RequestMethod.POST)
public BaseResponse joinChat(String botId, String chatId) {
BaseResponse baseResponse = commonService.joinChat(botId, chatId);
return baseResponse;
}
/**
* 邀请机器人进群
*
* @param
* @param
* @return
*/
@RequestMapping(value = "getAllBotInfo", method = RequestMethod.POST)
public BaseResponse getAllBotInfo() {
BaseResponse baseResponse = commonService.getAllBotInfo();
return baseResponse;
}
@RequestMapping("setBotRemind")
public BaseResponse setBotRemind(String botWxId, Integer chatCount, String maxChatResp) {
chatCount = (chatCount == null ? 50 : chatCount);
BaseResponse baseResponse = new BaseResponse();
if (StringUtils.isEmpty(botWxId)) {
baseResponse.setSuccess(false);
baseResponse.setError_message("机器人ID不能为空!");
return baseResponse;
}
String botUrl = getBotUrl(botWxId);
if (StringUtils.isEmpty(botUrl)) {
baseResponse.setSuccess(false);
baseResponse.setError_message("更新机器人配置失败!");
return baseResponse;
}
if (!botService.updateBotConfig(botWxId, chatCount, maxChatResp)) {
baseResponse.setSuccess(false);
baseResponse.setError_message("更新机器人配置失败!");
return baseResponse;
}
String server = botUrl.split("_")[0];
botNotice(server, botWxId, "{\"max_chat\":" + chatCount + ",\"max_chat_exceed_msg\":\"" + maxChatResp + "\"}");
baseResponse.setData("修改成功");
baseResponse.setSuccess(true);
return baseResponse;
}
@RequestMapping("getEditStatus")
public BaseResponse getEditStatus() {
BaseResponse baseResponse = new BaseResponse();
if ("wxim_wxids".equals(botKey)) {
baseResponse.setData(true);
} else {
baseResponse.setData(false);
}
baseResponse.setSuccess(true);
return baseResponse;
}
public String getBotUrl(String wxId) {
try {
Map<String, String> botMap = redisUtil.hgetAll(botKey);
String botInfo = botMap.get(wxId);
return JSON.parseObject(botInfo).getString("status");
} catch (Exception ex) {
log.info("getBotUrl error:{},{}", wxId, ex.getMessage());
return null;
}
}
public String botNotice(String server, String wxid, String copywriting) {
if (server == null || server.isEmpty()) {
log.warn("server is null, {}", wxid);
return null;
}
String url = "http://" + server + "/api/v1/cmd";
HashMap<String, String> bodyInfo = new HashMap<>();
bodyInfo.put("wxid", wxid);
bodyInfo.put("cmdType", "updateConfig");
bodyInfo.put("config", copywriting);
String body = JSON.toJSONString(bodyInfo);
log.info("群主请求参数" + body);
String rsp = HttpUtil.post(url, body);
log.info("群主请求结果" + rsp);
return rsp;
}
}
@@ -0,0 +1,88 @@
package io.icchain.wxcontractbot.controller.agent;
import com.alibaba.fastjson.JSONObject;
import io.icchain.wxcontractbot.entity.common.RequestParamEntity;
import io.icchain.wxcontractbot.service.agent.ChatAnalysisService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(tags = "社群分析")
@RequestMapping(value = "chat/analysis", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class ChatAnalysisController {
@Autowired
private ChatAnalysisService chatAnalysisService;
@ApiOperation("概述查询" +
"@param chatIds 群ID" +
"")
@RequestMapping(value = "getSummaryInfo", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSummaryInfo(String chatIds) {
return chatAnalysisService.getSummaryInfo(chatIds);
}
@ApiOperation("总体分析图表查询+" +
"@param chatIds 群ID" +
"@param startDate 开始时间" +
"@param endDate 结束时间" +
"@param queryType 查询类型:month(月),week(周)" +
"")
@RequestMapping(value = "getChartData", method = {RequestMethod.GET, RequestMethod.POST})
public String getChartData(RequestParamEntity entity) {
return chatAnalysisService.getChartData(entity);
}
@ApiOperation("私域社群分页查询 * " +
" @param orderStr 排序\n" +
" 1: 昨日消息数 desc\n" +
" 2: 昨日消息数 asc\n" +
" 3: 月消息数 desc\n" +
" 4: 月消息数 asc\n" +
" <p>\n" +
" 5: 昨日活跃用户数 desc\n" +
" 6: 昨日活跃用户数 asc\n" +
" 7: 月消活跃用户数 desc\n" +
" 8: 月消活跃用户数 asc\n" +
" 9: 群内用户数 desc\n" +
" 10:群内用户数 asc"
)
@RequestMapping(value = "listPrivate", method = {RequestMethod.POST})
public String listPrivate(@RequestBody JSONObject req) {
return chatAnalysisService.listPrivate(req);
}
@ApiOperation("活跃用户分页查询 * @param orderStr 排序" +
" 1:发言总量DESC\n" +
" 2:发言总量ASC\n" +
" 3:邀请进群数DESC\n" +
" 4:邀请进群数ASC"+
" @param:chatIds 群ID"
)
@RequestMapping(value = "listActiveUsr", method = {RequestMethod.POST})
public String listActiveUsr(@RequestBody JSONObject req) {
return chatAnalysisService.listActiveUsr(req);
}
@ApiOperation("导出活跃用户Excel" +
" @param:chatId 群ID")
@RequestMapping( value = "exportExcel", method = {RequestMethod.POST})
@ResponseBody
public void exportExcel(String chatId, HttpServletRequest request, HttpServletResponse response)throws Exception{
chatAnalysisService.exportExcel(chatId,request,response);
}
}
@@ -0,0 +1,92 @@
package io.icchain.wxcontractbot.controller.agent;
import io.icchain.wxcontractbot.entity.faq.FaqEntity;
import io.icchain.wxcontractbot.service.agent.ChatService;
import io.icchain.wxcontractbot.service.faq.FaqService;
import io.icchain.wxcontractbot.service.marketingrecord.MarketingMessageService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.icchain.wxcontractbot.utils.MsgUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "chat", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class ChatController {
@Autowired
private ChatService chatService;
@Autowired
private MarketingMessageService messageService;
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(String userCount, String botCount,String strategyCount, Pageable pageable) {
return chatService.list(userCount,botCount,strategyCount,pageable);
}
@RequestMapping(value = "getSummaryInfo", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSummaryInfo() {
return chatService.getSummaryInfo();
}
@RequestMapping(value = "messagelist", method = {RequestMethod.GET, RequestMethod.POST})
public Object messagelist(String chatId) {
String res = messageService.searchMessage(chatId, new Date());
return StringUtils.isEmpty(res) ? new BaseResponse(MsgUtil.getMessage("user.programException")) : res;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "listPrivateChat", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse listPrivateChat(Pageable pageable) {
return chatService.listPrivateChat(pageable);
}
/**
* 保存或更新群的ai_key配置
* @param chatId 群ID
* @param aiKey ai_key
* @param aiKeyName ai_key名称
* @return
*/
@RequestMapping(value = "saveChatAiKey", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse saveChatAiKey(String chatId, String aiKey, String aiKeyName) {
return chatService.saveChatAiKey(chatId, aiKey, aiKeyName);
}
/**
* 获取群的ai_key配置
* @param chatId 群ID
* @return
*/
@RequestMapping(value = "getChatAiKey", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getChatAiKey(String chatId) {
return chatService.getChatAiKey(chatId);
}
}
@@ -0,0 +1,99 @@
package io.icchain.wxcontractbot.controller.agent;
import io.icchain.wxcontractbot.entity.agent.ChatOwnerConfigComment;
import io.icchain.wxcontractbot.service.agent.ChatOwnerConfigCommentService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 占领群配置-文案配置表(ChatOwnerConfigComment)表控制层
*
* @author xuelei.wang
* @create time 2020-06-05 11:21:02
*/
@Api(tags="占领群配置-文案配置表")
@RestController
@RequestMapping("chatOwnerConfigComment")
public class ChatOwnerConfigCommentController {
/**
* 服务对象
*/
@Autowired
private ChatOwnerConfigCommentService chatOwnerConfigCommentService;
/**
* 新增
*
* @param chatOwnerConfigComment
* @return
* @author xuelei.wang 2020-06-05 11:21:02
*/
@ApiOperation("新增")
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(ChatOwnerConfigComment chatOwnerConfigComment) {
BaseResponse baseResponse= chatOwnerConfigCommentService.add(chatOwnerConfigComment);
return baseResponse;
}
/**
* 新增
*
* @param commentList
* @return
* @author xuelei.wang 2020-06-05 11:21:02
*/
@ApiOperation("批量新增")
@RequestMapping(value = "addList", method = {RequestMethod.POST})
public BaseResponse addList(@RequestBody List<ChatOwnerConfigComment> commentList) {
BaseResponse baseResponse= chatOwnerConfigCommentService.addList(commentList);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2020-06-05 11:21:02
*/
@ApiOperation("根据ID删除")
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= chatOwnerConfigCommentService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param chatOwnerConfigComment
* @return
* @author xuelei.wang 2020-06-05 11:21:02
*/
@ApiOperation("更新")
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(ChatOwnerConfigComment chatOwnerConfigComment) {
BaseResponse baseResponse= chatOwnerConfigCommentService.update(chatOwnerConfigComment);
return baseResponse;
}
/**
* 获取所有
*
* @return
* @author xuelei.wang 2020-06-05 11:21:02
*/
@ApiOperation("获取所有")
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list() {
return chatOwnerConfigCommentService.list();
}
}
@@ -0,0 +1,46 @@
package io.icchain.wxcontractbot.controller.agent;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 占领群配置(ChatOwnerConfig)表控制层
*
* @author xuelei.wang
* @create time 2020-06-05 11:21:01
*/
@Api(tags="占领群配置")
@RestController
@RequestMapping("chatOwnerConfig")
public class ChatOwnerConfigController {
@Autowired
private CommonService commonService;
/**
* 更新
*
* @return
* @author xuelei.wang 2020-06-05 11:21:01
*/
@ApiOperation("更新占领群配置")
@RequestMapping(value = "setChatOwnerCmd", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse setChatOwnerCmd(String cmd) {
BaseResponse baseResponse= commonService.setChatOwnerCmd(cmd);
return baseResponse;
}
/**
* 获取配置,如果没有,则新增一个
*
* @return
* @author xuelei.wang 2020-06-05 11:21:01
*/
@ApiOperation("获取占领群配置")
@RequestMapping(value = "getChatOwnerCmd", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getChatOwnerCmd() {
return commonService.getChatOwnerCmd();
}
}
@@ -0,0 +1,379 @@
package io.icchain.wxcontractbot.controller.agent;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.qiniu.linking.model.Device;
import io.icchain.wxcontractbot.entity.agent.DeviceEntity;
import io.icchain.wxcontractbot.service.agent.DeviceService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.icchain.wxcontractbot.utils.HttpUtil;
import io.icchain.wxcontractbot.utils.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.xmlbeans.impl.jam.JSourcePosition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "device", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class DeviceController {
private Logger logger = LoggerFactory.getLogger(DeviceController.class);
@Autowired
private DeviceService deviceService;
@Autowired
private RestTemplate restTemplate;
@Value("${gewe.api.url}")
private String geweApiUrl;
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(Pageable pageable) {
return deviceService.list(pageable);
}
@RequestMapping(value = "all", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse all() {
return deviceService.all();
}
/**
* 新增
*
* @param entity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "createApp", method = {RequestMethod.POST})
public BaseResponse createApp(@RequestBody DeviceEntity entity) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setSuccess(true);
if (entity.getRegionId() == null || entity.getRegionId().equals(0)) {
baseResponse.setSuccess(false);
baseResponse.setError_message("regionId不能为空!");
return baseResponse;
}
try {
entity.setAppid("");
deviceService.add(entity);
baseResponse.setData(entity);
} catch (Exception ex) {
logger.error("createapp error:{}", JSON.toJSONString(ex));
}
return baseResponse;
}
/**
* 获取登录二维码
*
* @param entity
* @return
*/
@RequestMapping(value = "getLoginQrCode")
public BaseResponse getLoginQrCode(DeviceEntity entity) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setSuccess(true);
JSONObject param = new JSONObject();
if (entity.getRegionId() != null && entity.getRegionId() != 0) {
param.put("regionId", entity.getRegionId());
}
param.put("appId", entity.getAppid());
ResponseEntity<String> exchange = restTemplate.exchange(geweApiUrl + "v2/api/login/getLoginQrCode",
HttpMethod.valueOf(HttpMethod.POST.name()),
new HttpEntity<>(param.toJSONString(), HttpUtil.buildGeweHeaders()),
String.class,
new HashMap<>());
String body = exchange.getBody();
logger.info("getloginqrcode result:{}", body);
if (StringUtils.isNotEmpty(body)) {
try {
JSONObject result = JSON.parseObject(body);
if ("200".equals(result.getString("ret"))) {
JSONObject data = result.getJSONObject("data");
DeviceEntity device = deviceService.findById(entity.getId());
if (device != null&&data!=null) {
device.setProxyIp(data.getString("proxyIp"));
device.setAppid(data.getString("appId"));
device.setUuid(data.getString("uuid"));
logger.error(" deviceService.update(device);\n :{}", JSON.toJSONString(device));
deviceService.update(device);
}
baseResponse.setData(result.getJSONObject("data"));
}else if("500".equalsIgnoreCase(result.getString("ret"))){
baseResponse.setSuccess(false);
baseResponse.setError_code(500);
baseResponse.setError_message(result.getString("msg"));
}else{
baseResponse.setSuccess(false);
baseResponse.setError_code(500);
baseResponse.setError_message("出现了异常:"+body);
}
} catch (Exception ex) {
logger.error("createapp error:{}", JSON.toJSONString(ex));
}
}
return baseResponse;
}
/**
* 执行登录
*
* @return
*/
@RequestMapping(value = "checkLoginQrCode")
public BaseResponse checkLoginQrCode(DeviceEntity entity) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setSuccess(true);
JSONObject param = new JSONObject();
param.put("appId", entity.getAppid());
param.put("uuid", entity.getUuid());
if(StringUtils.isNotEmpty(entity.getCaptchCode())){
param.put("captchCode", entity.getCaptchCode());
}
ResponseEntity<String> exchange = restTemplate.exchange(geweApiUrl + "v2/api/login/checkLogin",
HttpMethod.valueOf(HttpMethod.POST.name()),
new HttpEntity<>(param.toJSONString(), HttpUtil.buildGeweHeaders()),
String.class,
new HashMap<>());
String body = exchange.getBody();
logger.info("checkloginqrcode result:{}", body);
if (StringUtils.isNotEmpty(body)) {
try {
JSONObject result = JSON.parseObject(body);
if ("200".equals(result.getString("ret"))) {
JSONObject data = result.getJSONObject("data");
if (data != null ) {
DeviceEntity deviceEntity = deviceService.findById(entity.getId());
if (deviceEntity != null) {
if (StringUtils.isNotEmpty(data.getString("nickName"))) {
deviceEntity.setUserName(data.getString("nickName"));
deviceEntity.setNickName(data.getString("nickName"));
}
if (StringUtils.isNotEmpty(data.getString("headImgUrl"))) {
deviceEntity.setHeadImgUrl(data.getString("headImgUrl"));
}
deviceEntity.setStatus(1);
deviceEntity.setWxid(getMeWxId(deviceEntity.getAppid()));
deviceService.update(deviceEntity);
JSONObject device = new JSONObject();
device.put("devId", deviceEntity.getAppid());
device.put("gender", "");
device.put("province", "");
device.put("city", "");
device.put("phone", "");
device.put("signature", "");
device.put("nickname", deviceEntity.getNickName());
device.put("avatar", deviceEntity.getHeadImgUrl());
device.put("wxid", deviceEntity.getAppid());
device.put("account", deviceEntity.getAppid());
logger.error("addWxidStatus :{}", JSON.toJSONString(device));
deviceService.addWxidStatus(deviceEntity.getAppid(), device);
deviceService.addTotalWxids(deviceEntity.getAppid(), device);
}
baseResponse.setData(deviceEntity);
}
} else {
baseResponse.setSuccess(false);
baseResponse.setError_code(-1);
baseResponse.setError_message("手机已经登录,请勿重复登录!");
return baseResponse;
}
} catch (Exception ex) {
logger.error("createapp error:{}", JSON.toJSONString(ex));
}
}
return baseResponse;
}
/**
* 获取个人信息
*
* @param appid
* @return
*/
public String getMeWxId(String appid) {
JSONObject param = new JSONObject();
param.put("appid", appid);
ResponseEntity<String> exchange = restTemplate.exchange(geweApiUrl + "api/personal/getprofile",
HttpMethod.valueOf(HttpMethod.POST.name()),
new HttpEntity<>(param.toJSONString(), HttpUtil.buildGeweHeaders()),
String.class,
new HashMap<>());
String body = exchange.getBody();
logger.info("getMe result:{}", body);
if (StringUtils.isNotEmpty(body)) {
try {
JSONObject result = JSON.parseObject(body);
if ("0".equals(result.getString("ret"))) {
JSONObject data = result.getJSONObject("data");
if (data.containsKey("userInfo")) {
JSONObject userInfo = data.getJSONObject("userInfo");
if (userInfo != null) {
String userName = "";
if (userInfo.containsKey("UserName")) {
userName = userInfo.getJSONObject("UserName").getString("string");
}
return userName;
}
}
}
} catch (Exception ex) {
logger.info("getMe error:{}", JSON.toJSONString(ex));
}
}
return "";
}
/**
* 处理验证码
*
* @return
*/
@RequestMapping(value = "killLoginQrCodeAuth")
public BaseResponse killLoginQrCodeAuth(DeviceEntity entity) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setSuccess(true);
if (StringUtils.isEmpty(entity.getAppid()) || StringUtils.isEmpty(entity.getCode())) {
baseResponse.setSuccess(false);
baseResponse.setError_message("必填参数不能为空!");
return baseResponse;
}
JSONObject param = new JSONObject();
param.put("appid", entity.getAppid());
param.put("code", entity.getCode());
param.put("ticket", "ticket");
ResponseEntity<String> exchange = restTemplate.exchange(geweApiUrl + "api/login/checkloginqrcode",
HttpMethod.valueOf(HttpMethod.POST.name()),
new HttpEntity<>(param.toJSONString(), HttpUtil.buildGeweHeaders()),
String.class,
new HashMap<>());
String body = exchange.getBody();
logger.info("checkloginqrcode result:{}", body);
if (StringUtils.isNotEmpty(body)) {
try {
JSONObject result = JSON.parseObject(body);
if ("0".equals(result.getString("ret"))) {
return baseResponse;
} else {
baseResponse.setSuccess(false);
baseResponse.setError_message("微信已登陆,请勿重复调用。");
return baseResponse;
}
} catch (Exception ex) {
logger.error("createapp error:{}", JSON.toJSONString(ex));
}
}
return baseResponse;
}
/**
* 退出登录
*
* @return
*/
@RequestMapping(value = "logout")
public BaseResponse logout(DeviceEntity entity) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setSuccess(true);
if (StringUtils.isEmpty(entity.getAppid())) {
baseResponse.setSuccess(false);
baseResponse.setError_message("必填参数不能为空!");
return baseResponse;
}
JSONObject param = new JSONObject();
param.put("appId", entity.getAppid());
ResponseEntity<String> exchange = restTemplate.exchange(geweApiUrl + "v2/api/login/logout",
HttpMethod.valueOf(HttpMethod.POST.name()),
new HttpEntity<>(param.toJSONString(), HttpUtil.buildGeweHeaders()),
String.class,
new HashMap<>());
String body = exchange.getBody();
logger.info("logout result:{}", body);
if (StringUtils.isNotEmpty(body)) {
try {
JSONObject result = JSON.parseObject(body);
if ("200".equals(result.getString("ret"))) {
baseResponse.setData("手机已退出!");
DeviceEntity deviceEntity = deviceService.findByAppId(entity.getAppid());
if (deviceEntity != null) {
deviceEntity.setStatus(0);
deviceService.update(deviceEntity);
deviceService.delWxidStatus(deviceEntity.getAppid());
}
return baseResponse;
} else {
baseResponse.setData("手机已退出!");
DeviceEntity deviceEntity = deviceService.findByAppId(entity.getAppid());
if (deviceEntity != null) {
deviceEntity.setStatus(0);
deviceService.update(deviceEntity);
deviceService.delWxidStatus(deviceEntity.getAppid());
}
return baseResponse;
}
} catch (Exception ex) {
logger.error("createapp error:{}", JSON.toJSONString(ex));
}
}
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse = deviceService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param entity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(DeviceEntity entity) {
BaseResponse baseResponse = deviceService.update(entity);
return baseResponse;
}
}
@@ -0,0 +1,217 @@
package io.icchain.wxcontractbot.controller.agent;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import io.icchain.wxcontractbot.entity.agent.PcDeviceEntity;
import io.icchain.wxcontractbot.service.agent.PcDeviceService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.icchain.wxcontractbot.utils.HttpUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "pcDevice", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class PcDeviceController {
private Logger logger = LoggerFactory.getLogger(PcDeviceController.class);
@Autowired
private PcDeviceService deviceService;
@Autowired
private RestTemplate restTemplate;
@Value("${pc.hook.api.url}")
private String pcHookApiUrl;
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(Pageable pageable) {
return deviceService.list(pageable);
}
@RequestMapping(value = "all", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse all() {
return deviceService.all();
}
/**
* 新增
*
* @param entity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "createApp", method = {RequestMethod.POST})
public BaseResponse createApp(@RequestBody PcDeviceEntity entity) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setSuccess(true);
if (entity.getRegionId() == null || entity.getRegionId().equals(0)) {
baseResponse.setSuccess(false);
baseResponse.setError_message("regionId不能为空!");
return baseResponse;
}
if(StringUtils.isEmpty(entity.getAppid())){
baseResponse.setSuccess(false);
baseResponse.setError_message("appId不能为空!");
return baseResponse;
}
if(StringUtils.isEmpty(entity.getKey())){
baseResponse.setSuccess(false);
baseResponse.setError_message("key不能为空!");
return baseResponse;
}
deviceService.add(entity);
baseResponse.setData(entity);
return baseResponse;
}
/**
* 获取登录二维码
*
* @param entity
* @return
*/
@RequestMapping(value = "getLoginQrCode")
public BaseResponse getLoginQrCode(PcDeviceEntity entity) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setSuccess(true);
JSONObject param = new JSONObject();
PcDeviceEntity deviceEntity = deviceService.findById(entity.getId());
param.put("appId", entity.getAppid());
param.put("regionId", deviceEntity.getRegionId());
param.put("apiKey", deviceEntity.getKey());
ResponseEntity<String> exchange = restTemplate.exchange(pcHookApiUrl + "v2/api/login/getLoginQrCode",
HttpMethod.valueOf(HttpMethod.POST.name()),
new HttpEntity<>(param.toJSONString(), HttpUtil.buildGeweHeaders()),
String.class,
new HashMap<>());
String body = exchange.getBody();
logger.info("get pc loginqrcode result:{}", body);
if (StringUtils.isNotEmpty(body)) {
try {
JSONObject result = JSON.parseObject(body);
if ("200".equals(result.getString("ret"))) {
PcDeviceEntity device = deviceService.findByAppId(entity.getAppid());
if (device != null) {
device.setUuid(result.getString("uuid"));
device.setNkey(result.getString("nkey"));
device.setAppid(result.getString("nkey"));
deviceService.update(device);
}
baseResponse.setData(result.getJSONObject("appId"));
}
} catch (Exception ex) {
logger.error("createapp error:{}", JSON.toJSONString(ex));
}
}
return baseResponse;
}
/**
* 退出登录
*
* @return
*/
@RequestMapping(value = "logout")
public BaseResponse logout(PcDeviceEntity entity) {
BaseResponse baseResponse = new BaseResponse();
baseResponse.setSuccess(true);
if (StringUtils.isEmpty(entity.getAppid())) {
baseResponse.setSuccess(false);
baseResponse.setError_message("必填参数不能为空!");
return baseResponse;
}
JSONObject param = new JSONObject();
param.put("appId", entity.getAppid());
ResponseEntity<String> exchange = restTemplate.exchange(pcHookApiUrl + "api/login/logout",
HttpMethod.valueOf(HttpMethod.POST.name()),
new HttpEntity<>(param.toJSONString(), HttpUtil.buildGeweHeaders()),
String.class,
new HashMap<>());
String body = exchange.getBody();
logger.info("logout result:{}", body);
if (StringUtils.isNotEmpty(body)) {
try {
JSONObject result = JSON.parseObject(body);
if ("200".equals(result.getString("ret"))) {
baseResponse.setData("手机已退出!");
PcDeviceEntity deviceEntity = deviceService.findByAppId(entity.getAppid());
if (deviceEntity != null) {
deviceEntity.setStatus(0);
deviceService.update(deviceEntity);
deviceService.delWxidStatus(deviceEntity.getAppid());
}
return baseResponse;
} else {
baseResponse.setData("手机已退出!");
PcDeviceEntity deviceEntity = deviceService.findByAppId(entity.getAppid());
if (deviceEntity != null) {
deviceEntity.setStatus(0);
deviceService.update(deviceEntity);
deviceService.delWxidStatus(deviceEntity.getAppid());
}
return baseResponse;
}
} catch (Exception ex) {
logger.error("createapp error:{}", JSON.toJSONString(ex));
}
}
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse = deviceService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param entity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(PcDeviceEntity entity) {
BaseResponse baseResponse = deviceService.update(entity);
return baseResponse;
}
}
@@ -0,0 +1,60 @@
package io.icchain.wxcontractbot.controller.agent;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.service.agent.ChatService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "user/statistics", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class UserStatisticsController {
@Autowired
private CommonService commonService;
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(String startDate,String endDate,String queryType,@PageableDefault(value = 10,page=0) Pageable page) {
return commonService.getUserStatisticsList(startDate,endDate,queryType,page);
}
/**
* 数据导出
*
* @param response
* @return 导出数据结果
* @throws Exception 
*/
@RequestMapping(value="exportNodeUser", method = {RequestMethod.GET, RequestMethod.POST})
public String exportNodeUser(HttpServletResponse response)
throws Exception {
String fileName = "节点用户导出";
try {
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + ".xlsx", "utf-8") + ";filename*=utf-8''" + URLEncoder.encode(fileName + ".xlsx", "utf-8"));
SXSSFWorkbook workbook = commonService.getNodeUserList();
workbook.write(response.getOutputStream());
response.flushBuffer();
} catch (Exception e) {
e.printStackTrace();
}
return "导出成功";
}
}
@@ -0,0 +1,53 @@
package io.icchain.wxcontractbot.controller.alivecode;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.entity.alivecode.AliveCode;
import io.icchain.wxcontractbot.service.alivecode.AliveCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("aliveCode")
public class AliveCodeController extends BaseController {
@Autowired
private AliveCodeService aliveCodeService;
@RequestMapping("saveAliveCode")
@ResponseBody
public Object saveAliveCode(AliveCode aliveCode) {
return aliveCodeService.saveAliveCode(aliveCode);
}
@RequestMapping("aliveCodeList")
@ResponseBody
public Object aliveCodeList() {
return aliveCodeService.aliveCodeList();
}
@RequestMapping("viewAliveCode")
@ResponseBody
public Object viewAliveCode(String id) {
return aliveCodeService.viewAliveCode(id);
}
@RequestMapping("modifyAliveCode")
@ResponseBody
public Object modifyAliveCode(AliveCode aliveCode) {
return aliveCodeService.modifyAliveCode(aliveCode);
}
@RequestMapping("deleteAliveCode")
@ResponseBody
public Object deleteAliveCode(String id) {
return aliveCodeService.deleteAliveCode(id);
}
@RequestMapping("deleteChatQrcode")
@ResponseBody
public Object deleteChatQrcode(String id) {
return aliveCodeService.deleteChatQrcode(id);
}
}
@@ -0,0 +1,46 @@
package io.icchain.wxcontractbot.controller.analysis;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "/analysis/marketing", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingAnalysisController {
@Autowired
private CommonService commonService;
/**
* 分页获取信息
*
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getAdDataInfo", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getAdDataInfo(String startDate,String endDate,String queryType) {
return commonService.getAdDataInfo(startDate,endDate,queryType);
}
@RequestMapping(value = "getAdClickDetail", method = {RequestMethod.GET, RequestMethod.POST})
public String getAdClickDetail(Pageable page) {
return commonService.getAdClickDetail(page);
}
@RequestMapping(value = "getSummaryInfo", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSummaryInfo() {
return commonService.getAdOverviewSummaryInfo();
}
}
@@ -0,0 +1,39 @@
package io.icchain.wxcontractbot.controller.analysis;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "/analysis/overview", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class OverviewController {
@Autowired
private CommonService commonService;
/**
* 分页获取信息
*
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getDataInfo", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getDataInfo(String startDate,String endDate,String queryType) {
return commonService.getOverviewDataInfo(startDate,endDate,queryType);
}
@RequestMapping(value = "getSummaryInfo", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSummaryInfo() {
return commonService.getOverviewSummaryInfo();
}
}
@@ -0,0 +1,50 @@
package io.icchain.wxcontractbot.controller.analysis;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "/analysis/user", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class UserAnalysisController {
@Autowired
private CommonService commonService;
/**
* 分页获取信息
*
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getDataInfo", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getDataInfo(String startDate,String endDate,String queryType) {
return commonService.getUserOverviewDataInfo(startDate,endDate,queryType);
}
@RequestMapping(value = "getSummaryInfo", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSummaryInfo() {
return commonService.getUserOverviewSummaryInfo();
}
@RequestMapping(value = "getYesterdayPrivateActive", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getYesterdayPrivateActive() {
return commonService.getYesterdayActiveUserCount("1");
}
@RequestMapping(value = "getYesterdayPublicActive", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getYesterdayPublicActive() {
return commonService.getYesterdayActiveUserCount("0");
}
}
@@ -0,0 +1,220 @@
package io.icchain.wxcontractbot.controller.callback;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.qiniu.util.Md5;
import io.icchain.wxcontractbot.controller.im.agent.api.MsgCache;
import io.icchain.wxcontractbot.dao.marketing.MarketingDao;
import io.icchain.wxcontractbot.utils.MD5Util;
import io.icchain.wxcontractbot.utils.RedisUtils;
import io.icchain.wxcontractbot.utils.jedis.RedisUtil;
import org.apache.commons.codec.digest.Md5Crypt;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.ByteArrayInputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
/**
* 模块编号:io.icchain.wxcontractbot.controller.callback GeWeCallbackController
* 作 者:xuelei.wang
* 创建时间:2023/10/14 22:02
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "/gewe", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class GeWeCallbackController {
private Logger log = LoggerFactory.getLogger(GeWeCallbackController.class);
@Autowired
private RedisUtils redisUtils;
/*
*
* @return
*/
@RequestMapping(value = "callback")
public synchronized void callback(@RequestBody String body) {
if (StringUtils.isNotEmpty(body)) {
log.info("接收到=====\r\ngewe body:{}\r\n", body);
// {
// "Appid": "wx_MoRx8U6XmG_XIhnZAud49",
// "TypeName": "AddMsg",
// "Data": {
// "MsgId": 1776006948,
// "FromUserName": {
// "string": "wxid_xl52ulfg3px722"
// },
// "ToUserName": {
// "string": "wxid_6735k4cyucqp22"
// },
// "MsgType": 1,
// "Content": {
// "string": "你好啊"
// },
// "Status": 3,
// "ImgStatus": 1,
// "ImgBuf": {
// "iLen": 0
// },
// "CreateTime": 1722833487,
// "MsgSource": "<msgsource>\n\t<alnode>\n\t\t<fr>1</fr>\n\t</alnode>\n\t<pua>1</pua>\n\t<signature>V1_FFdKlfkv|v1_FFdKlfkv</signature>\n\t<tmp_node>\n\t\t<publisher-id></publisher-id>\n\t</tmp_node>\n</msgsource>\n",
// "PushContent": "ZERO : 你好啊",
// "NewMsgId": 1182483844997577401,
// "MsgSeq": 776006948
// },
// "Wxid": "wxid_6735k4cyucqp22"
// }
try {
JSONObject result = JSON.parseObject(body);
if (result != null) {
JSONObject data = result.getJSONObject("Data");
String appid = result.getString("Appid");
if (data != null) {
String onlineStatus = data.getString("Status");
if (StringUtils.isNoneBlank(appid)) {
JSONObject msg = new JSONObject();
msg.put("emojiId", 0);
msg.put("fd", 0);
msg.put("serverId", 0);
msg.put("is_at", "false");
msg.put("isSend", 0);
msg.put("nickname", "");
msg.put("talkerName", "");
msg.put("create_time", data.getLongValue("CreateTime") * 1000);
msg.put("msgID", data.getLong("MsgId"));
msg.put("type", 1);
if (data.getJSONObject("Content") != null && data.getJSONObject("Content").containsKey("string")) {
String content = data.getJSONObject("Content").getString("string");
if (StringUtils.isNotEmpty(content)) {
if (StringUtils.contains(content, ":")) {
String[] contentArr = StringUtils.split(content, ":");
if (contentArr.length == 2) {
msg.put("content", contentArr[1]);
} else {
msg.put("content", contentArr[0]);
}
} else {
msg.put("content", content);
}
}
//新人进群通知
if (content.contains("邀请") && content.contains("加入了群聊")) {
String wxidValue = "";
String nicknameValue = "";
String inviteWxidValue = "";
String inviteNicknameValue = "";
msg.put("type", 15);
int index = StringUtils.indexOf(content, ":");
if (index > 0) {
String xmlString = StringUtils.substring(content, index + 1);
if (StringUtils.isNotEmpty(xmlString)) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
ByteArrayInputStream input = new ByteArrayInputStream(xmlString.getBytes());
Document document = builder.parse(input);
NodeList wxidList = document.getElementsByTagName("username");
NodeList nicknameList = document.getElementsByTagName("nickname");
if (wxidList != null && wxidList.getLength() == 2) {
inviteWxidValue = wxidList.item(0).getTextContent().trim();
wxidValue = wxidList.item(1).getTextContent().trim();
}
if (nicknameList != null && nicknameList.getLength() == 2) {
inviteNicknameValue = nicknameList.item(0).getTextContent().trim();
nicknameValue = nicknameList.item(1).getTextContent().trim();
}
if (StringUtils.isNotEmpty(wxidValue) && StringUtils.isNotEmpty(nicknameValue)) {
log.info("解析出进群消息:{}", wxidValue + ",nicknameValue" + nicknameValue);
JSONObject contentMsg = new JSONObject();
contentMsg.put("type", "invite");
contentMsg.put("username", inviteWxidValue + "," + wxidValue);
contentMsg.put("invite_id", wxidValue);
contentMsg.put("template", inviteNicknameValue + "\"邀请\"" + nicknameValue + "\"加入了群聊");
msg.put("content", contentMsg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
if (content.contains("以上是打招呼的消息")) {
msg.put("type", 99);
}
}
String fromUserName = "";
String toUserName = "";
if (data.getJSONObject("FromUserName") != null && data.getJSONObject("FromUserName").containsKey("string")) {
fromUserName = data.getJSONObject("FromUserName").getString("string");
}
if (data.getJSONObject("ToUserName") != null && data.getJSONObject("ToUserName").containsKey("string")) {
toUserName = data.getJSONObject("ToUserName").getString("string");
}
//如果是群聊
if (StringUtils.endsWith(fromUserName, "@chatroom")) {
msg.put("toID", fromUserName);
msg.put("fromID", toUserName);
} else {
if (StringUtils.endsWith(toUserName, "@chatroom")) {
msg.put("toID", toUserName);
msg.put("fromID", fromUserName);
} else {
msg.put("toID", fromUserName);
msg.put("fromID", toUserName);
}
}
msg.put("uid", appid);
msg.put("xml", data.getString("MsgSource"));
if (redisUtils.hasKey(msg.getString("msgID"))) {
log.info("MsgCache 已存在:" + msg.toString());
return;
}
redisUtils.set(msg.getString("msgID"),"",30);
MsgCache.addMsg(appid, msg.toJSONString());
log.info("MsgCache add Msg:" + msg.toString());
}
if (!"3".equals(onlineStatus)) {
log.error("callback 机器人已经掉线:{}", appid);
}
}
}
} catch (Exception ex) {
log.error("callback error:{}", JSON.toJSONString(ex));
}
}
}
public static String setMD5(String userInfo) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(userInfo.getBytes());
return new BigInteger(1, md5.digest()).toString(16);
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}
@@ -0,0 +1,31 @@
package io.icchain.wxcontractbot.controller.common;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
/**
* 模块编号:io.icchain.wxcontractbot.controller.common CommonController
* 作 者:xuelei.wang
* 创建时间:2020/5/19 11:09
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "api/common", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class CommonController {
@Autowired
private CommonService commonService;
@RequestMapping(value="/uploadImage")
@ResponseBody
public BaseResponse uploadImage(@RequestParam(value = "file") MultipartFile file) throws Exception {
return commonService.uploadImage(file);
}
}
@@ -0,0 +1,49 @@
package io.icchain.wxcontractbot.controller.faq;
import io.icchain.wxcontractbot.entity.faq.AiSetting;
import io.icchain.wxcontractbot.entity.faq.FaqEntity;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.icchain.wxcontractbot.utils.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "ai", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class AiSettingController {
@Autowired
private CommonService commonService;
/**
* 更新
*
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(AiSetting aiSetting) {
BaseResponse baseResponse= commonService.aiSetting(aiSetting);
return baseResponse;
}
/**
* 获取统计信息
*
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "getInfo", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getInfo() {
BaseResponse baseResponse=commonService.getAiSetting();
return baseResponse;
}
}
@@ -0,0 +1,106 @@
package io.icchain.wxcontractbot.controller.faq;
import io.icchain.wxcontractbot.entity.faq.FaqAnswerEntity;
import io.icchain.wxcontractbot.service.faq.FaqAnswerService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47:00
* 修改编号:1
* 描 述:DES
*/
@Api(value = "智能问答-FAQ组-回答")
@RequestMapping(value = "faq/answer", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class FaqAnswerController {
@Autowired
private FaqAnswerService faqAnswerService;
/**
* 新增
*
* @param faqAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(FaqAnswerEntity faqAnswerEntity) {
BaseResponse baseResponse= faqAnswerService.add(faqAnswerEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= faqAnswerService.del(id);
return baseResponse;
}
/**
* 根据FaqID删除
*
* @param faqId 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "delByFaqId/{faqId}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse delByFaqId(@PathVariable("faqId") String faqId) {
BaseResponse baseResponse= faqAnswerService.delByFaqId(faqId);
return baseResponse;
}
/**
* 更新
*
* @param faqAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(FaqAnswerEntity faqAnswerEntity) {
BaseResponse baseResponse= faqAnswerService.update(faqAnswerEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return faqAnswerService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0)Pageable pageable, String faqId) {
return faqAnswerService.list(pageable,faqId);
}
}
@@ -0,0 +1,106 @@
package io.icchain.wxcontractbot.controller.faq;
import io.icchain.wxcontractbot.entity.faq.FaqAskEntity;
import io.icchain.wxcontractbot.service.faq.FaqAskService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "智能问答-FAQ组-问题")
@RequestMapping(value = "faq/ask", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class FaqAskController {
@Autowired
private FaqAskService faqAskService;
/**
* 新增
*
* @param faqAskEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(FaqAskEntity faqAskEntity) {
BaseResponse baseResponse= faqAskService.add(faqAskEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= faqAskService.del(id);
return baseResponse;
}
/**
* 根据FaqID删除
*
* @param faqId 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "delByFaqId/{faqId}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse delByFaqId(@PathVariable("faqId") String faqId) {
BaseResponse baseResponse= faqAskService.delByFaqId(faqId);
return baseResponse;
}
/**
* 更新
*
* @param faqAskEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(FaqAskEntity faqAskEntity) {
BaseResponse baseResponse= faqAskService.update(faqAskEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return faqAskService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0)Pageable pageable, String faqId) {
return faqAskService.list(pageable,faqId);
}
}
@@ -0,0 +1,91 @@
package io.icchain.wxcontractbot.controller.faq;
import io.icchain.wxcontractbot.entity.faq.FaqEntity;
import io.icchain.wxcontractbot.service.faq.FaqService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "智能问答-FAQ组")
@RequestMapping(value = "faq", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class FaqController {
@Autowired
private FaqService faqService;
/**
* 新增
*
* @param faqEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(FaqEntity faqEntity) {
BaseResponse baseResponse= faqService.add(faqEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= faqService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param faqEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(FaqEntity faqEntity) {
BaseResponse baseResponse= faqService.update(faqEntity);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0)Pageable pageable) {
return faqService.list(pageable);
}
/**
* 获取统计信息
*
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "summaryInfo", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse summaryInfo() {
BaseResponse baseResponse= faqService.summaryInfo();
return baseResponse;
}
}
@@ -0,0 +1,53 @@
package io.icchain.wxcontractbot.controller.friendreply;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.friendreply.AddedFriendReplyService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/friendReply")
@Controller
public class AddedFriendReplyController extends BaseController {
@Autowired
private AddedFriendReplyService addedFriendReplyService;
@RequestMapping(value="")
@ResponseBody
public BaseResponse info() {
return addedFriendReplyService.info();
}
@RequestMapping(value="/switch")
@ResponseBody
public BaseResponse switchTo(String enable) {
return addedFriendReplyService.switchTo(enable);
}
@RequestMapping(value="/save")
@ResponseBody
public BaseResponse add(@RequestParam(value = "messages", defaultValue = "") String messages) {
return addedFriendReplyService.save(messages);
}
@RequestMapping(value="/list/all")
@ResponseBody
public BaseResponse list() {
return addedFriendReplyService.list();
}
@RequestMapping(value="/delete")
@ResponseBody
public BaseResponse delete(String id) {
return addedFriendReplyService.delete(id);
}
}
@@ -0,0 +1,110 @@
/*
*
* * Copyright 2019-2108 ICC (Intelligence Commerce Chain, https://icchain.io).
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package io.icchain.wxcontractbot.controller.im.agent.api;
import io.icchain.wxcontractbot.utils.RedisUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
/**
* 消息缓存,使用 Redis List 存储每个 wxid 的消息队列
* @date 2019年4月26日 下午2:59:57
*/
public class MsgCache {
private static final Logger logger = LoggerFactory.getLogger(MsgCache.class.getName());
private static final String KEY_PREFIX = "MSG_CACHE:";
private static final int MAX_BATCH_SIZE = 1000;
private static final int MAX_QUEUE_SIZE = 1000;
private static RedisUtils redisUtils;
public static void setRedisUtils(RedisUtils redisUtils) {
MsgCache.redisUtils = redisUtils;
}
/**
* 获取并移除该 wxid 队列中的消息(最多返回 MAX_BATCH_SIZE 条)
*/
public static List<String> getMsgs(String wxid) {
if (redisUtils == null) {
logger.warn("MsgCache redisUtils not set, return null");
return null;
}
String key = KEY_PREFIX + wxid;
if (!redisUtils.hasKey(key)) {
logger.info("wxid:{},null", wxid);
return null;
}
long size = redisUtils.lGetListSize(key);
if (size == 0) {
logger.info("wxid:{},null", wxid);
return null;
}
long end = Math.min(size - 1, MAX_BATCH_SIZE - 1);
List<Object> raw = redisUtils.lGet(key, 0, end);
if (raw == null || raw.isEmpty()) {
return null;
}
List<String> ret = new ArrayList<>(raw.size());
for (Object o : raw) {
if (o != null) {
ret.add(o.toString());
}
}
// 移除已取出的元素:保留 [end+1, -1],即删除 [0, end]
if (size > MAX_BATCH_SIZE) {
redisUtils.lTrim(key, MAX_BATCH_SIZE, -1);
} else {
redisUtils.del(key);
}
if (size > MAX_BATCH_SIZE) {
logger.warn("wxid:{} has {} remaining messages, only returned first {} messages", wxid, size - MAX_BATCH_SIZE, MAX_BATCH_SIZE);
}
return ret;
}
/**
* 向该 wxid 的消息队列尾部追加一条消息;队列长度超过 MAX_QUEUE_SIZE 时丢弃最旧的消息
*/
public static void addMsg(String wxid, String msg) {
if (redisUtils == null) {
logger.warn("MsgCache redisUtils not set, skip addMsg");
return;
}
logger.info("put msg:{}", msg);
String key = KEY_PREFIX + wxid;
redisUtils.lSet(key, msg);
long size = redisUtils.lGetListSize(key);
if (size > MAX_QUEUE_SIZE) {
// 只保留最后 MAX_QUEUE_SIZE 条
redisUtils.lTrim(key, size - MAX_QUEUE_SIZE, -1);
logger.warn("MsgCache queue size exceeded {}, trimmed. wxid={}", MAX_QUEUE_SIZE, wxid);
}
}
}
@@ -0,0 +1,44 @@
package io.icchain.wxcontractbot.controller.iqa;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.iqa.IqaAnswerService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/iqa/answer")
@Controller
public class IqaAnswerController extends BaseController {
@Autowired
private IqaAnswerService iqaAnswerService;
@RequestMapping(value="/add")
@ResponseBody
public BaseResponse add(@RequestParam(value = "title", defaultValue = "") String title,
@RequestParam(value = "content", defaultValue = "") String content,
@RequestParam(value = "advice", defaultValue = "") String advice) {
return iqaAnswerService.add(title, content, advice);
}
@RequestMapping(value="/update")
@ResponseBody
public BaseResponse update(@RequestParam(value = "id", defaultValue = "") String id,
@RequestParam(value = "title", defaultValue = "") String title,
@RequestParam(value = "content", defaultValue = "") String content,
@RequestParam(value = "advice", defaultValue = "") String advice) {
return iqaAnswerService.update(id, title, content, advice);
}
@RequestMapping(value="/delete")
@ResponseBody
public BaseResponse delete(@RequestParam(value = "id", defaultValue = "") String id) {
return iqaAnswerService.delete(id);
}
}
@@ -0,0 +1,48 @@
package io.icchain.wxcontractbot.controller.iqa;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.iqa.IqaQuestionAnswerService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/iqa")
@Controller
public class IqaQuestionAnswerController extends BaseController {
@Autowired
private IqaQuestionAnswerService iqaQuestionAnswerService;
@RequestMapping(value="")
@ResponseBody
public BaseResponse info() {
return iqaQuestionAnswerService.get();
}
@RequestMapping(value="/switch")
@ResponseBody
public BaseResponse switchTo(@RequestParam(value = "enable", defaultValue = "") String enable) {
return iqaQuestionAnswerService.switchTo(enable);
}
@RequestMapping(value="/save")
@ResponseBody
public BaseResponse save(@RequestParam(value = "questionIds", defaultValue = "") String questionIds,
@RequestParam(value = "answerIds", defaultValue = "") String answerIds) {
return iqaQuestionAnswerService.save(questionIds, answerIds);
}
@RequestMapping(value="/answer")
@ResponseBody
public BaseResponse answer(@RequestParam(value = "question", defaultValue = "") String question) {
return iqaQuestionAnswerService.answer(question);
}
}
@@ -0,0 +1,32 @@
package io.icchain.wxcontractbot.controller.iqa;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.iqa.IqaQuestionService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/iqa/question")
@Controller
public class IqaQuestionController extends BaseController {
@Autowired
private IqaQuestionService iqaQuestionService;
@RequestMapping(value="/add")
@ResponseBody
public BaseResponse add(@RequestParam(value = "content", defaultValue = "") String content) {
return iqaQuestionService.add(content);
}
@RequestMapping(value="/delete")
@ResponseBody
public BaseResponse delete(@RequestParam(value = "id", defaultValue = "") String id) {
return iqaQuestionService.delete(id);
}
}
@@ -0,0 +1,46 @@
package io.icchain.wxcontractbot.controller.kfgzt.level;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.kfgzt.level.LevelService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping(value = "/kfgzt/level")
@RestController
public class LevelController extends BaseController {
@Autowired
private LevelService levelService;
@RequestMapping(value="/add")
public BaseResponse add(String name, String description) {
return levelService.add(name, description);
}
@RequestMapping(value="/list/all")
public BaseResponse listall() {
return levelService.listall();
}
@RequestMapping(value="/update")
public BaseResponse update(String id, String name, String description) {
return levelService.update(id, name, description);
}
@RequestMapping(value="/updateSortNum")
public BaseResponse updateSortNum(String id, int num) {
return levelService.updateSortNum(id, num);
}
@RequestMapping(value="/delete")
public BaseResponse delete(String id) {
return levelService.delete(id);
}
}
@@ -0,0 +1,22 @@
package io.icchain.wxcontractbot.controller.kfgzt.level;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.kfgzt.level.UserLevelService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping(value = "/kfgzt/userLevel")
@RestController
public class UserLevelController extends BaseController {
@Autowired
private UserLevelService userLevelService;
@RequestMapping(value="/save")
public BaseResponse save(String wxid, String levelId) {
return userLevelService.save(wxid, levelId);
}
}
@@ -0,0 +1,48 @@
package io.icchain.wxcontractbot.controller.kfgzt.message;
import io.icchain.wxcontractbot.service.kfgzt.message.MessageService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/kfgzt/message")
public class MessageController {
@Autowired
private MessageService messageService;
@RequestMapping("/save")
public BaseResponse save(String chatType, String fromId, String fromUserName, String fromAvatar, String toId, String msgType, String content, String create_time) {
return messageService.save(chatType, fromId, fromUserName, fromAvatar, toId, msgType, content, create_time);
}
@RequestMapping("/search")
public BaseResponse search(int chatType, String toId,
@RequestParam(value = "wxid", defaultValue = "") String wxid,
@RequestParam(value = "content", defaultValue = "") String content,
@RequestParam(value = "date", defaultValue = "") String date,
@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "20") int size) {
return messageService.search(chatType, toId, wxid, content, date, page, size);
}
@RequestMapping("/context")
public BaseResponse context(int chatType, String toId,
@RequestParam(value = "wxid", defaultValue = "") String wxid,
@RequestParam(value = "time", defaultValue = "") String time,
@RequestParam(value = "size", defaultValue = "20") int size) {
return messageService.context(chatType, toId, wxid, time, size);
}
@RequestMapping("/history")
public BaseResponse history(int chatType, String toId,
@RequestParam(value = "wxid", defaultValue = "") String wxid,
@RequestParam(value = "time", defaultValue = "") String time,
@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "20") int size) {
return messageService.history(chatType, toId, wxid, time, page, size);
}
}
@@ -0,0 +1,42 @@
package io.icchain.wxcontractbot.controller.kfgzt.quick.reply;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.kfgzt.quick.reply.QuickReplyService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping(value = "/kfgzt/quickReply")
@RestController
public class QuickReplyController extends BaseController {
@Autowired
private QuickReplyService quickReplyService;
@RequestMapping(value="/add")
public BaseResponse add(String groupId, String messages) {
return quickReplyService.add(groupId, messages);
}
@RequestMapping(value="/search")
public BaseResponse search(@RequestParam(value = "keyword", defaultValue = "") String keyword) {
return quickReplyService.search(keyword);
}
@RequestMapping(value="/update")
public BaseResponse update(String id, String type, String content,
@RequestParam(value = "remark", defaultValue = "") String remark) {
return quickReplyService.update(id, type, content, remark);
}
@RequestMapping(value="/delete")
public BaseResponse delete(String id) {
return quickReplyService.delete(id);
}
}
@@ -0,0 +1,35 @@
package io.icchain.wxcontractbot.controller.kfgzt.quick.reply;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.kfgzt.quick.reply.QuickReplyGroupService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping(value = "/kfgzt/quickReplyGroup")
@RestController
public class QuickReplyGroupController extends BaseController {
@Autowired
private QuickReplyGroupService quickReplyGroupService;
@RequestMapping(value="/save")
public BaseResponse save(@RequestParam(value = "id", defaultValue = "") String id, String name) {
return quickReplyGroupService.save(id, name);
}
@RequestMapping(value="/list/all")
public BaseResponse listall() {
return quickReplyGroupService.listall();
}
@RequestMapping(value="/delete")
public BaseResponse delete(String id) {
return quickReplyGroupService.delete(id);
}
}
@@ -0,0 +1,48 @@
package io.icchain.wxcontractbot.controller.kfgzt.tag;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.kfgzt.tag.TagService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping(value = "/kfgzt/tag")
@RestController
public class TagController extends BaseController {
@Autowired
private TagService tagService;
@RequestMapping(value="/add")
public BaseResponse add(String name) {
return tagService.add(name);
}
@RequestMapping(value="/list")
public BaseResponse list(@RequestParam(value = "page", defaultValue = "0") int page,
@RequestParam(value = "size", defaultValue = "20") int size) {
return tagService.list(page, size);
}
@RequestMapping(value="/list/all")
public BaseResponse listall() {
return tagService.listall();
}
@RequestMapping(value="/update")
public BaseResponse update(String id, String name) {
return tagService.update(id, name);
}
@RequestMapping(value="/delete")
public BaseResponse delete(String id) {
return tagService.delete(id);
}
}
@@ -0,0 +1,28 @@
package io.icchain.wxcontractbot.controller.kfgzt.tag;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.kfgzt.tag.UserTagService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping(value = "/kfgzt/userTag")
@RestController
public class UserTagController extends BaseController {
@Autowired
private UserTagService userTagService;
@RequestMapping(value="/add")
public BaseResponse add(String wxid, String tagId) {
return userTagService.add(wxid, tagId);
}
@RequestMapping(value="/delete")
public BaseResponse delete(String id) {
return userTagService.delete(id);
}
}
@@ -0,0 +1,29 @@
package io.icchain.wxcontractbot.controller.kfgzt.user;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.entity.kfgzt.user.KFUser;
import io.icchain.wxcontractbot.service.kfgzt.user.KFUserService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping(value = "/kfgzt/user")
@RestController
public class KFUserController extends BaseController {
@Autowired
private KFUserService userService;
@RequestMapping(value="/save")
public BaseResponse save(KFUser user) {
return userService.save(user);
}
@RequestMapping(value="")
public BaseResponse info(String wxid) {
return userService.info(wxid);
}
}
@@ -0,0 +1,106 @@
package io.icchain.wxcontractbot.controller.marketing;
import io.icchain.wxcontractbot.entity.marketing.MarketingAnswerEntity;
import io.icchain.wxcontractbot.service.marketing.MarketingAnswerService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "会话式营销-答")
@RequestMapping(value = "marketing/answer", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingAnswerController {
@Autowired
private MarketingAnswerService marketingAnswerService;
/**
* 新增
*
* @param marketingAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(MarketingAnswerEntity marketingAnswerEntity) {
BaseResponse baseResponse= marketingAnswerService.add(marketingAnswerEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= marketingAnswerService.del(id);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "delByGroupId/{answerGroupId}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse delByGroupId(@PathVariable("answerGroupId") String answerGroupId) {
BaseResponse baseResponse= marketingAnswerService.delByGroupId(answerGroupId);
return baseResponse;
}
/**
* 更新
*
* @param marketingAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingAnswerEntity marketingAnswerEntity) {
BaseResponse baseResponse= marketingAnswerService.update(marketingAnswerEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return marketingAnswerService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable, String groupId) {
return marketingAnswerService.list(pageable,groupId);
}
}
@@ -0,0 +1,92 @@
package io.icchain.wxcontractbot.controller.marketing;
import io.icchain.wxcontractbot.entity.marketing.MarketingAnswerGroupEntity;
import io.icchain.wxcontractbot.service.marketing.MarketingAnswerGroupService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "会话式营销-组-答")
@RequestMapping(value = "marketing/answer/group", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingAnswerGroupController {
@Autowired
private MarketingAnswerGroupService marketingAnswerGroupService;
/**
* 新增
*
* @param marketingAnswerGroupEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(MarketingAnswerGroupEntity marketingAnswerGroupEntity) {
BaseResponse baseResponse= marketingAnswerGroupService.add(marketingAnswerGroupEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= marketingAnswerGroupService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param marketingAnswerGroupEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingAnswerGroupEntity marketingAnswerGroupEntity) {
BaseResponse baseResponse= marketingAnswerGroupService.update(marketingAnswerGroupEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return marketingAnswerGroupService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable, String marketingId) {
return marketingAnswerGroupService.list(marketingId,pageable);
}
}
@@ -0,0 +1,106 @@
package io.icchain.wxcontractbot.controller.marketing;
import io.icchain.wxcontractbot.entity.marketing.MarketingAskEntity;
import io.icchain.wxcontractbot.service.marketing.MarketingAskService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "会话式营销-问")
@RequestMapping(value = "marketing/ask", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingAskController {
@Autowired
private MarketingAskService marketingAskService;
/**
* 新增
*
* @param marketingAskEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(MarketingAskEntity marketingAskEntity) {
BaseResponse baseResponse= marketingAskService.add(marketingAskEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= marketingAskService.del(id);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "delByGroupId/{askGroupId}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse delByGroupId(@PathVariable("askGroupId") String askGroupId) {
BaseResponse baseResponse= marketingAskService.delByGroupId(askGroupId);
return baseResponse;
}
/**
* 更新
*
* @param marketingAskEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingAskEntity marketingAskEntity) {
BaseResponse baseResponse= marketingAskService.update(marketingAskEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return marketingAskService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable, String groupId) {
return marketingAskService.list(pageable,groupId);
}
}
@@ -0,0 +1,92 @@
package io.icchain.wxcontractbot.controller.marketing;
import io.icchain.wxcontractbot.entity.marketing.MarketingAskGroupEntity;
import io.icchain.wxcontractbot.service.marketing.MarketingAskGroupService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "会话式营销-问-组")
@RequestMapping(value = "marketing/ask/group", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingAskGroupController {
@Autowired
private MarketingAskGroupService marketingAskGroupService;
/**
* 新增
*
* @param marketingAskGroupEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(MarketingAskGroupEntity marketingAskGroupEntity) {
BaseResponse baseResponse= marketingAskGroupService.add(marketingAskGroupEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= marketingAskGroupService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param marketingAskGroupEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingAskGroupEntity marketingAskGroupEntity) {
BaseResponse baseResponse= marketingAskGroupService.update(marketingAskGroupEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return marketingAskGroupService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable, String marketingId) {
return marketingAskGroupService.list(marketingId,pageable);
}
}
@@ -0,0 +1,78 @@
package io.icchain.wxcontractbot.controller.marketing;
import io.icchain.wxcontractbot.entity.marketing.MarketingEntity;
import io.icchain.wxcontractbot.service.marketing.MarketingService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "会话式营销")
@RequestMapping(value = "marketing", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingController {
@Autowired
private MarketingService marketingService;
/**
* 新增
*
* @param marketingEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(MarketingEntity marketingEntity) {
BaseResponse baseResponse= marketingService.add(marketingEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= marketingService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param marketingEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingEntity marketingEntity) {
BaseResponse baseResponse= marketingService.update(marketingEntity);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable) {
return marketingService.list(pageable);
}
}
@@ -0,0 +1,106 @@
package io.icchain.wxcontractbot.controller.marketing;
import io.icchain.wxcontractbot.entity.marketing.MarketingEchoEntity;
import io.icchain.wxcontractbot.service.marketing.MarketingEchoService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "会话式营销-附和")
@RequestMapping(value = "marketing/echo", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingEchoController {
@Autowired
private MarketingEchoService marketingEchoService;
/**
* 新增
*
* @param marketingEchoEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(MarketingEchoEntity marketingEchoEntity) {
BaseResponse baseResponse= marketingEchoService.add(marketingEchoEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= marketingEchoService.del(id);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "delByGroupId/{echoGroupId}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse delByGroupId(@PathVariable("echoGroupId") String echoGroupId) {
BaseResponse baseResponse= marketingEchoService.delByGroupId(echoGroupId);
return baseResponse;
}
/**
* 更新
*
* @param marketingEchoEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingEchoEntity marketingEchoEntity) {
BaseResponse baseResponse= marketingEchoService.update(marketingEchoEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return marketingEchoService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable, String groupId) {
return marketingEchoService.list(pageable,groupId);
}
}
@@ -0,0 +1,117 @@
package io.icchain.wxcontractbot.controller.marketing;
import io.icchain.wxcontractbot.entity.marketing.MarketingEchoGroupEntity;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.service.marketing.MarketingEchoGroupService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "会话式营销-附和-组")
@RequestMapping(value = "marketing/echo/group", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingEchoGroupController {
@Autowired
private MarketingEchoGroupService marketingEchoGroupService;
@Autowired
private CommonService commonService;
/**
* 新增
*
* @param marketingEchoGroupEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(MarketingEchoGroupEntity marketingEchoGroupEntity) {
BaseResponse baseResponse= marketingEchoGroupService.add(marketingEchoGroupEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= marketingEchoGroupService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param marketingEchoGroupEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingEchoGroupEntity marketingEchoGroupEntity) {
BaseResponse baseResponse= marketingEchoGroupService.update(marketingEchoGroupEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return marketingEchoGroupService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable, String marketingId) {
return marketingEchoGroupService.list(marketingId,pageable);
}
/**
* 设置数量
*
* @param count
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "setGroupCount", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse setGroupCount(int count) {
return commonService.setGroupCount(count);
}
/**
* 设置数量
*
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "getGroupCount", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getGroupCount() {
return commonService.getGroupCount();
}
}
@@ -0,0 +1,81 @@
package io.icchain.wxcontractbot.controller.marketing;
import io.icchain.wxcontractbot.entity.marketing.MarketingKeywordsEntity;
import io.icchain.wxcontractbot.service.marketing.MarketingKeywordsService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "会话式营销-触发关键词")
@RequestMapping(value = "marketing/keywords", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingKeywordsController {
@Autowired
private MarketingKeywordsService marketingKeywordsService;
/**
* 新增
*
* @param marketingEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(MarketingKeywordsEntity marketingEntity) {
BaseResponse baseResponse= marketingKeywordsService.add(marketingEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= marketingKeywordsService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param marketingEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingKeywordsEntity marketingEntity) {
BaseResponse baseResponse= marketingKeywordsService.update(marketingEntity);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable) {
return marketingKeywordsService.list(pageable);
}
}
@@ -0,0 +1,43 @@
package io.icchain.wxcontractbot.controller.marketing;
import io.icchain.wxcontractbot.entity.marketing.MarketingEntity;
import io.icchain.wxcontractbot.service.marketing.MarketingOrderService;
import io.icchain.wxcontractbot.service.marketing.MarketingService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "会话式营销")
@RequestMapping(value = "marketing/order", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingOrderController {
@Autowired
private MarketingOrderService marketingOrderService;
/**
* 分页获取信息
*
* @param taskId 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "findByTaskId", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse findByTaskId(String taskId) {
return marketingOrderService.findByTaskId(taskId);
}
}
@@ -0,0 +1,41 @@
package io.icchain.wxcontractbot.controller.marketing;
import io.icchain.wxcontractbot.entity.marketing.MarketingKeywordsEntity;
import io.icchain.wxcontractbot.service.marketing.MarketingKeywordsService;
import io.icchain.wxcontractbot.service.marketing.MarketingRecordService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@Api(value = "会话式营销-营销记录")
@RequestMapping(value = "marketing/record", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingRecordController {
@Autowired
private MarketingRecordService marketingRecordService;
/**
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "getSingle", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle() {
BaseResponse baseResponse = marketingRecordService.getSingle();
return baseResponse;
}
}
@@ -0,0 +1,40 @@
package io.icchain.wxcontractbot.controller.marketingrecord;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.marketingrecord.MarketingChatService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/marketing/chat")
@Controller
public class MarketingChatController extends BaseController {
@Autowired
private MarketingChatService marketingChatService;
@RequestMapping(value = "/count")
@ResponseBody
public BaseResponse count() {
return marketingChatService.count();
}
@RequestMapping(value = "/list")
@ResponseBody
public BaseResponse list(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize) {
return marketingChatService.list(page, pagesize);
}
@RequestMapping(value = "/stop")
@ResponseBody
public Object stop(String id) {
return marketingChatService.stop(id);
}
}
@@ -0,0 +1,23 @@
package io.icchain.wxcontractbot.controller.marketingrecord;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.marketingrecord.MarketingMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/marketing/message")
@Controller
public class MarketingMessageController extends BaseController {
@Autowired
private MarketingMessageService marketingMessageService;
@RequestMapping(value = "/list")
@ResponseBody
public Object messagelist(String marketingChatId) {
return marketingMessageService.messagelist(marketingChatId);
}
}
@@ -0,0 +1,54 @@
package io.icchain.wxcontractbot.controller.marketingrecord;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.entity.marketingrecord.MarketingTask;
import io.icchain.wxcontractbot.service.marketingrecord.MarketingTaskService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.icchain.wxcontractbot.utils.Const;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/marketing/task")
@Controller
public class MarketingTaskController extends BaseController {
@Autowired
private MarketingTaskService marketingTaskService;
@RequestMapping(value = "/chat/count")
@ResponseBody
public BaseResponse chatCount(@RequestParam(value = "botNum", defaultValue = Const.BOT_NUM_DEFAULT) int botNum) {
return marketingTaskService.chatCount(botNum);
}
@RequestMapping(value = "/chat/search")
@ResponseBody
public BaseResponse chatSearch(@RequestParam(value = "chatType") String chatType,
@RequestParam(value = "keyword", defaultValue = "") String keyword,
@RequestParam(value = "botNum", defaultValue = Const.BOT_NUM_DEFAULT) int botNum,
@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize) {
return marketingTaskService.chatSearch(chatType, keyword, botNum, page, pagesize);
}
@RequestMapping(value = "/chatIds/search/all")
@ResponseBody
public BaseResponse chatIdsSearch(@RequestParam(value = "chatType") String chatType,
@RequestParam(value = "keyword", defaultValue = "") String keyword,
@RequestParam(value = "botNum", defaultValue = Const.BOT_NUM_DEFAULT) int botNum) {
return marketingTaskService.chatIdsSearch(chatType, keyword, botNum);
}
@RequestMapping(value = "/create")
@ResponseBody
public BaseResponse create(MarketingTask task) {
return marketingTaskService.create(task);
}
}
@@ -0,0 +1,61 @@
package io.icchain.wxcontractbot.controller.moments;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.moments.MomentsService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
@RequestMapping(value = "/moments")
@Controller
public class MomentsController extends BaseController {
@Autowired
private MomentsService momentsService;
@RequestMapping(value="/uploadImage")
@ResponseBody
public BaseResponse uploadImage(@RequestParam(value = "file") MultipartFile file) throws Exception {
return momentsService.uploadImage(file);
}
@RequestMapping(value="/add")
@ResponseBody
public BaseResponse add(@RequestParam(value = "content", defaultValue = "") String content,
@RequestParam(value = "imageUrl", defaultValue = "") String imageUrl) {
return momentsService.add(content, imageUrl);
}
@RequestMapping(value="/list")
@ResponseBody
public BaseResponse list(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize) {
return momentsService.list(page, pagesize);
}
@RequestMapping(value="/update")
@ResponseBody
public BaseResponse update(@RequestParam(value = "id", defaultValue = "") String id,
@RequestParam(value = "content", defaultValue = "") String content,
@RequestParam(value = "imageUrl", defaultValue = "") String imageUrl) {
return momentsService.update(id, content, imageUrl);
}
@RequestMapping(value="/delete")
@ResponseBody
public BaseResponse delete(@RequestParam(value = "id", defaultValue = "") String id) {
return momentsService.delete(id);
}
}
@@ -0,0 +1,24 @@
package io.icchain.wxcontractbot.controller.pullgroup;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.pullgroup.PullGroupService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/pullGroup")
@Controller
public class PullGroupController extends BaseController {
@Autowired
private PullGroupService pullGroupService;
@RequestMapping(value="/queryByContent")
@ResponseBody
public BaseResponse queryByContent(String botWxid, String content) {
return pullGroupService.queryByContent(botWxid, content);
}
}
@@ -0,0 +1,68 @@
package io.icchain.wxcontractbot.controller.pullgroup;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.pullgroup.PullGroupKeywordChatService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/pullGroup/keywordChat")
@Controller
public class PullGroupKeywordChatController extends BaseController {
@Autowired
private PullGroupKeywordChatService pullGroupKeywordChatService;
@RequestMapping(value="/add")
@ResponseBody
public BaseResponse add(String keywordIds, String chatIds) {
return pullGroupKeywordChatService.add(keywordIds, chatIds);
}
@RequestMapping(value="")
@ResponseBody
public BaseResponse info(String id) {
return pullGroupKeywordChatService.info(id);
}
@RequestMapping(value="/update")
@ResponseBody
public BaseResponse update(String id, String keywordIds, String chatIds) {
return pullGroupKeywordChatService.update(id, keywordIds, chatIds);
}
@RequestMapping(value="/list")
@ResponseBody
public BaseResponse list(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize) {
return pullGroupKeywordChatService.list(page, pagesize);
}
@RequestMapping(value="/keyword/list/all")
@ResponseBody
public BaseResponse keywordListAll(String id) {
return pullGroupKeywordChatService.keywordListAll(id);
}
@RequestMapping(value="/chat/list/all")
@ResponseBody
public BaseResponse chatListAll(String id) {
return pullGroupKeywordChatService.chatListAll(id);
}
@RequestMapping(value="/delete")
@ResponseBody
public BaseResponse delete(String id) {
return pullGroupKeywordChatService.delete(id);
}
}
@@ -0,0 +1,31 @@
package io.icchain.wxcontractbot.controller.pullgroup;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.pullgroup.PullGroupKeywordService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/pullGroup/keyword")
@Controller
public class PullGroupKeywordController extends BaseController {
@Autowired
private PullGroupKeywordService pullGroupKeywordService;
@RequestMapping(value="/add")
@ResponseBody
public BaseResponse add(String content) {
return pullGroupKeywordService.add(content);
}
@RequestMapping(value="/delete")
@ResponseBody
public BaseResponse delete(String id) {
return pullGroupKeywordService.delete(id);
}
}
@@ -0,0 +1,62 @@
package io.icchain.wxcontractbot.controller.pullgroup;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.entity.pullgroup.PullGroupTask;
import io.icchain.wxcontractbot.service.pullgroup.PullGroupTaskService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/pullGroup/task")
@Controller
public class PullGroupTaskController extends BaseController {
@Autowired
private PullGroupTaskService pullGroupTaskService;
@RequestMapping(value="/add")
@ResponseBody
public BaseResponse add(PullGroupTask task) {
return pullGroupTaskService.add(task);
}
@RequestMapping(value="/list")
@ResponseBody
public BaseResponse list(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize) {
return pullGroupTaskService.list(page, pagesize);
}
@RequestMapping(value="/keyword/list/all")
@ResponseBody
public BaseResponse keywordListAll(String id) {
return pullGroupTaskService.keywordListAll(id);
}
@RequestMapping(value="/chat/list/all")
@ResponseBody
public BaseResponse chatListAll(String id) {
return pullGroupTaskService.chatListAll(id);
}
@RequestMapping(value="/status/update")
@ResponseBody
public BaseResponse updateStatus(String id, String status) {
return pullGroupTaskService.updateStatus(id, status);
}
@RequestMapping(value="/delete")
@ResponseBody
public BaseResponse delete(String id) {
return pullGroupTaskService.delete(id);
}
}
@@ -0,0 +1,18 @@
package io.icchain.wxcontractbot.controller.push;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icchain.wxcontractbot.controller.common CommonController
* 作 者:xuelei.wang
* 创建时间:2020/5/19 11:09
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "push/content", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MessagePushContentController {
}
@@ -0,0 +1,42 @@
package io.icchain.wxcontractbot.controller.push;
import io.icchain.wxcontractbot.entity.marketing.MarketingEntity;
import io.icchain.wxcontractbot.entity.push.MessagePush;
import io.icchain.wxcontractbot.entity.push.MessagePushContent;
import io.icchain.wxcontractbot.entity.push.MessagePushContext;
import io.icchain.wxcontractbot.entity.push.MessagePushDetail;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.service.push.MessagePushService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* 模块编号:io.icchain.wxcontractbot.controller.common CommonController
* 作 者:xuelei.wang
* 创建时间:2020/5/19 11:09
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "push", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MessagePushController {
@Autowired
private MessagePushService messagePushService;
/**
* 新增
*
* @param messagePushContext
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(@RequestBody MessagePushContext messagePushContext) {
BaseResponse baseResponse= messagePushService.add(messagePushContext);
return baseResponse;
}
}
@@ -0,0 +1,50 @@
package io.icchain.wxcontractbot.controller.push;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.service.push.MessagePushDetailService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* 模块编号:io.icchain.wxcontractbot.controller.common CommonController
* 作 者:xuelei.wang
* 创建时间:2020/5/19 11:09
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "push/detail", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MessagePushDetailController {
@Autowired
private MessagePushDetailService messagePushDetailService;
/**
* 更新
*
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(String id,String status) {
BaseResponse baseResponse= messagePushDetailService.update(id,status);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(sort ={"createDate"},direction = Sort.Direction.DESC) Pageable pageable) {
return messagePushDetailService.list(pageable);
}
}
@@ -0,0 +1,83 @@
package io.icchain.wxcontractbot.controller.spam.message.filter;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;
import io.icchain.wxcontractbot.entity.spam.message.filter.SpamMessageFilterConfigBlackList;
import io.icchain.wxcontractbot.service.spam.message.filter.SpamMessageFilterConfigBlackListService;
/**
* 垃圾检测-黑名单表(SpamMessageFilterConfigBlackList)表控制层
*
* @author xuelei.wang
* @create time 2020-06-19 15:19:49
*/
@Api(tags = "垃圾检测-黑名单表")
@RestController
@RequestMapping("spam/message/filter/blackList")
public class SpamMessageFilterConfigBlackListController {
/**
* 服务对象
*/
@Autowired
private SpamMessageFilterConfigBlackListService spamMessageFilterConfigBlackListService;
/**
* 新增
*
* @param spamMessageFilterConfigBlackList
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("新增")
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(SpamMessageFilterConfigBlackList spamMessageFilterConfigBlackList) {
BaseResponse baseResponse = spamMessageFilterConfigBlackListService.add(spamMessageFilterConfigBlackList);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("根据ID删除")
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse = spamMessageFilterConfigBlackListService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param spamMessageFilterConfigBlackList
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("更新")
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(SpamMessageFilterConfigBlackList spamMessageFilterConfigBlackList) {
BaseResponse baseResponse = spamMessageFilterConfigBlackListService.update(spamMessageFilterConfigBlackList);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("分页获取信息")
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 20, page = 0) Pageable pageable) {
return spamMessageFilterConfigBlackListService.list(pageable);
}
}
@@ -0,0 +1,102 @@
package io.icchain.wxcontractbot.controller.spam.message.filter;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;
import io.icchain.wxcontractbot.entity.spam.message.filter.SpamMessageFilterConfigChat;
import io.icchain.wxcontractbot.service.spam.message.filter.SpamMessageFilterConfigChatService;
import java.util.List;
/**
* 垃圾检测-群(SpamMessageFilterConfigChat)表控制层
*
* @author xuelei.wang
* @create time 2020-06-19 15:19:49
*/
@Api(tags = "垃圾检测-群")
@RestController
@RequestMapping("spam/message/filter/chat")
public class SpamMessageFilterConfigChatController {
/**
* 服务对象
*/
@Autowired
private SpamMessageFilterConfigChatService spamMessageFilterConfigChatService;
/**
* 新增
*
* @param spamMessageFilterConfigChat
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("新增")
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(SpamMessageFilterConfigChat spamMessageFilterConfigChat) {
BaseResponse baseResponse = spamMessageFilterConfigChatService.add(spamMessageFilterConfigChat);
return baseResponse;
}
/**
* 新增
*
* @param list
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("批量新增")
@RequestMapping(value = "addAll", method = { RequestMethod.POST})
public BaseResponse addAll(@RequestBody List<SpamMessageFilterConfigChat> list) {
BaseResponse baseResponse = spamMessageFilterConfigChatService.addAll(list);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("根据ID删除")
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse = spamMessageFilterConfigChatService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param spamMessageFilterConfigChat
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("更新")
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(SpamMessageFilterConfigChat spamMessageFilterConfigChat) {
BaseResponse baseResponse = spamMessageFilterConfigChatService.update(spamMessageFilterConfigChat);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("分页获取信息")
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 20, page = 0) Pageable pageable) {
return spamMessageFilterConfigChatService.list(pageable);
}
}
@@ -0,0 +1,68 @@
package io.icchain.wxcontractbot.controller.spam.message.filter;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.icchain.wxcontractbot.entity.spam.message.filter.SpamMessageFilterConfig;
import io.icchain.wxcontractbot.service.spam.message.filter.SpamMessageFilterConfigService;
import org.springframework.web.multipart.MultipartFile;
/**
* 垃圾检测配置表(SpamMessageFilterConfig)表控制层
*
* @author xuelei.wang
* @create time 2020-06-19 15:19:48
*/
@Api(tags = "垃圾检测配置表")
@RestController
@RequestMapping("spam/message/filter")
public class SpamMessageFilterConfigController {
/**
* 服务对象
*/
@Autowired
private SpamMessageFilterConfigService spamMessageFilterConfigService;
/**
* 新增
*
* @return
* @author xuelei.wang 2020-06-19 15:19:48
*/
@ApiOperation("获取配置")
@RequestMapping(value = "getOne", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getOne() {
BaseResponse baseResponse = spamMessageFilterConfigService.getOne();
return baseResponse;
}
/**
* 更新
*
* @param spamMessageFilterConfig
* @return
* @author xuelei.wang 2020-06-19 15:19:48
*/
@ApiOperation("更新")
@RequestMapping(value = "update", method = {RequestMethod.POST})
public BaseResponse update(@RequestBody SpamMessageFilterConfig spamMessageFilterConfig) {
BaseResponse baseResponse = spamMessageFilterConfigService.update(spamMessageFilterConfig);
return baseResponse;
}
/**
* 更新
*
* @return
* @author xuelei.wang 2020-06-19 15:19:48
*/
@ApiOperation("批量导入关键词")
@RequestMapping(value = "importKeywords", method = {RequestMethod.POST})
public BaseResponse importKeywords(@RequestParam("file") MultipartFile file) {
BaseResponse baseResponse = spamMessageFilterConfigService.importKeywords(file);
return baseResponse;
}
}
@@ -0,0 +1,84 @@
package io.icchain.wxcontractbot.controller.spam.message.filter;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;
import io.icchain.wxcontractbot.entity.spam.message.filter.SpamMessageFilterConfigLinkWhiteList;
import io.icchain.wxcontractbot.service.spam.message.filter.SpamMessageFilterConfigLinkWhiteListService;
/**
* 垃圾检测-链接白名单(SpamMessageFilterConfigLinkWhiteList)表控制层
*
* @author xuelei.wang
* @create time 2020-06-19 15:19:49
*/
@Api(tags = "垃圾检测-链接白名单")
@RestController
@RequestMapping("spam/message/filter/linkWhiteList")
public class SpamMessageFilterConfigLinkWhiteListController {
/**
* 服务对象
*/
@Autowired
private SpamMessageFilterConfigLinkWhiteListService spamMessageFilterConfigLinkWhiteListService;
/**
* 新增
*
* @param spamMessageFilterConfigLinkWhiteList
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("新增")
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(SpamMessageFilterConfigLinkWhiteList spamMessageFilterConfigLinkWhiteList) {
BaseResponse baseResponse = spamMessageFilterConfigLinkWhiteListService.add(spamMessageFilterConfigLinkWhiteList);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("根据ID删除")
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse = spamMessageFilterConfigLinkWhiteListService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param spamMessageFilterConfigLinkWhiteList
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("更新")
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(SpamMessageFilterConfigLinkWhiteList spamMessageFilterConfigLinkWhiteList) {
BaseResponse baseResponse = spamMessageFilterConfigLinkWhiteListService.update(spamMessageFilterConfigLinkWhiteList);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("分页获取信息")
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 20, page = 0) Pageable pageable) {
return spamMessageFilterConfigLinkWhiteListService.list(pageable);
}
}
@@ -0,0 +1,85 @@
package io.icchain.wxcontractbot.controller.spam.message.filter;
import io.icchain.wxcontractbot.utils.BaseResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.web.bind.annotation.*;
import io.icchain.wxcontractbot.entity.spam.message.filter.SpamMessageFilterConfigWhiteList;
import io.icchain.wxcontractbot.service.spam.message.filter.SpamMessageFilterConfigWhiteListService;
/**
* 垃圾检测-白名单表(SpamMessageFilterConfigWhiteList)表控制层
*
* @author xuelei.wang
* @create time 2020-06-19 15:19:49
*/
@Api(tags = "垃圾检测-白名单表")
@RestController
@RequestMapping("spam/message/filter/whiteList")
public class SpamMessageFilterConfigWhiteListController {
/**
* 服务对象
*/
@Autowired
private SpamMessageFilterConfigWhiteListService spamMessageFilterConfigWhiteListService;
/**
* 新增
*
* @param spamMessageFilterConfigWhiteList
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("新增")
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(SpamMessageFilterConfigWhiteList spamMessageFilterConfigWhiteList) {
BaseResponse baseResponse = spamMessageFilterConfigWhiteListService.add(spamMessageFilterConfigWhiteList);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("根据ID删除")
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse = spamMessageFilterConfigWhiteListService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param spamMessageFilterConfigWhiteList
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("更新")
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(SpamMessageFilterConfigWhiteList spamMessageFilterConfigWhiteList) {
BaseResponse baseResponse = spamMessageFilterConfigWhiteListService.update(spamMessageFilterConfigWhiteList);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2020-06-19 15:19:49
*/
@ApiOperation("分页获取信息")
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 20, page = 0) Pageable pageable) {
return spamMessageFilterConfigWhiteListService.list(pageable);
}
}
@@ -0,0 +1,91 @@
package io.icchain.wxcontractbot.controller.template;
import io.icchain.wxcontractbot.entity.marketing.template.MarketingAnswerTemplate;
import io.icchain.wxcontractbot.service.template.AnswerTemplateService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "template/answer", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class AnswerTemplateController {
@Autowired
private AnswerTemplateService questionAnswerService;
/**
* 新增
*
* @param questionAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(MarketingAnswerTemplate questionAnswerEntity) {
BaseResponse baseResponse= questionAnswerService.add(questionAnswerEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= questionAnswerService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param questionAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingAnswerTemplate questionAnswerEntity) {
BaseResponse baseResponse= questionAnswerService.update(questionAnswerEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return questionAnswerService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable, String marketingId) {
return questionAnswerService.list(pageable,marketingId);
}
}
@@ -0,0 +1,91 @@
package io.icchain.wxcontractbot.controller.template;
import io.icchain.wxcontractbot.entity.marketing.template.MarketingAskTemplate;
import io.icchain.wxcontractbot.service.template.AskTemplateService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "template/ask", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class AskTemplateController {
@Autowired
private AskTemplateService questionAnswerService;
/**
* 新增
*
* @param questionAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(MarketingAskTemplate questionAnswerEntity) {
BaseResponse baseResponse= questionAnswerService.add(questionAnswerEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= questionAnswerService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param questionAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingAskTemplate questionAnswerEntity) {
BaseResponse baseResponse= questionAnswerService.update(questionAnswerEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return questionAnswerService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable, String marketingId) {
return questionAnswerService.list(pageable,marketingId);
}
}
@@ -0,0 +1,77 @@
package io.icchain.wxcontractbot.controller.template;
import io.icchain.wxcontractbot.entity.marketing.template.MarketingEchoGroupTemplate;
import io.icchain.wxcontractbot.service.template.EchoGroupTemplateService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "template/group", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class EchoGroupTemplateController {
@Autowired
private EchoGroupTemplateService questionAnswerService;
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= questionAnswerService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param questionAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingEchoGroupTemplate questionAnswerEntity) {
BaseResponse baseResponse= questionAnswerService.update(questionAnswerEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return questionAnswerService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable, String marketingId) {
return questionAnswerService.list(marketingId,pageable);
}
}
@@ -0,0 +1,91 @@
package io.icchain.wxcontractbot.controller.template;
import io.icchain.wxcontractbot.entity.marketing.template.MarketingEchoTemplate;
import io.icchain.wxcontractbot.service.template.EchoTemplateService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "template/echo", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class EchoTemplateController {
@Autowired
private EchoTemplateService questionAnswerService;
/**
* 新增
*
* @param questionAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "add", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse add(MarketingEchoTemplate questionAnswerEntity) {
BaseResponse baseResponse= questionAnswerService.add(questionAnswerEntity);
return baseResponse;
}
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= questionAnswerService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param questionAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingEchoTemplate questionAnswerEntity) {
BaseResponse baseResponse= questionAnswerService.update(questionAnswerEntity);
return baseResponse;
}
/**
* 根据ID获取单个信息
*
* @param id ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "getSingle/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getSingle(@PathVariable("id") String id) {
return questionAnswerService.getSingle(id);
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(@PageableDefault(value = 500, page = 0) Pageable pageable, String groupId) {
return questionAnswerService.list(pageable,groupId);
}
}
@@ -0,0 +1,106 @@
package io.icchain.wxcontractbot.controller.template;
import io.icchain.wxcontractbot.entity.marketing.template.MarketingTemplate;
import io.icchain.wxcontractbot.service.CommonService;
import io.icchain.wxcontractbot.service.template.MarketingTemplateService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
/**
* 模块编号:io.icc.controller QuestionAnswerController
* 作 者:xuelei.wang
* 创建时间:2019/11/19 15:47
* 修改编号:1
* 描 述:DES
*/
@RequestMapping(value = "template", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@RestController
public class MarketingTemplateController {
@Autowired
private MarketingTemplateService questionAnswerService;
@Autowired
private CommonService commonService;
/**
* 根据ID删除
*
* @param id 表ID
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "del/{id}", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse del(@PathVariable("id") String id) {
BaseResponse baseResponse= questionAnswerService.del(id);
return baseResponse;
}
/**
* 更新
*
* @param questionAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "update", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse update(MarketingTemplate questionAnswerEntity) {
BaseResponse baseResponse= questionAnswerService.update(questionAnswerEntity);
return baseResponse;
}
/**
* 更新
*
* @param questionAnswerEntity
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "setTemplateStatus", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse setEnable(String name,@RequestParam(name = "inUse",defaultValue = "1",required = true) int inUse) {
BaseResponse baseResponse= questionAnswerService.setTemplateStatus(name,inUse);
return baseResponse;
}
/**
* 分页获取信息
*
* @param pageable 分页信息
* @return
* @author xuelei.wang 2019-11-19
*/
@RequestMapping(value = "list", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse list(String name,@RequestParam(name = "inUse",defaultValue = "-1",required = false) int inUse,@PageableDefault(value = 500, page = 0) Pageable pageable) {
return questionAnswerService.list(name,inUse,pageable);
}
/**
* 更新
*
* @param name
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "copyTemplate", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse copyTemplate(String name) {
BaseResponse baseResponse= commonService.copyTemplate(name);
return baseResponse;
}
/**
* getTemplateNameList
*
* @return
* @author xuelei.wang 2019-9-19
*/
@RequestMapping(value = "getTemplateNameList", method = {RequestMethod.GET, RequestMethod.POST})
public BaseResponse getTemplateNameList(@RequestParam(name = "inUse",defaultValue = "-1",required = false) int inUse) {
BaseResponse baseResponse= questionAnswerService.getTemplateNameList(inUse);
return baseResponse;
}
}
@@ -0,0 +1,109 @@
package io.icchain.wxcontractbot.controller.tokenprice;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.utils.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.Map;
@RequestMapping(value = "/tokenPrice")
@Controller
public class TokenPriceController extends BaseController {
@Value("${company.name}")
private String companyName;
@Value("${token.price.ad.short.link.count}")
private String shortLinkCount;
@Autowired
private RedisUtils redisUtils;
@Autowired
private ShortUrlUtil shortUrlUtil;
@RequestMapping(value="")
@ResponseBody
public BaseResponse info() {
try {
Object enable = redisUtils.get(companyName + Const.TOKEN_PRICE_ENABLE);
Object adWords = redisUtils.get(companyName + Const.TOKEN_PRICE_AD_WORDS);
Object adLink = redisUtils.get(companyName + Const.TOKEN_PRICE_AD_LINK);
Map<String, Object> res = new HashMap<>();
res.put("enable", enable != null ? enable.toString() : "0");
res.put("adWords", adWords != null ? adWords.toString() : "");
res.put("adLink", adLink != null ? adLink.toString() : "");
return new BaseResponse(res);
} catch (Exception e) {
logger.error("tokenPrice error:{}", e.getMessage());
return new BaseResponse(MsgUtil.getMessage("user.programException"));
}
}
@RequestMapping(value="/switch")
@ResponseBody
public BaseResponse switchTo(@RequestParam(value = "enable", defaultValue = "") String enable) {
if (StringUtils.isEmpty(enable)) {
return new BaseResponse(MsgUtil.getMessage("missingParameterValue"));
}
try {
redisUtils.set(companyName + Const.TOKEN_PRICE_ENABLE, enable);
return new BaseResponse(new HashMap<>());
} catch (Exception e) {
logger.error("tokenPrice switch error:{}", e.getMessage());
return new BaseResponse(MsgUtil.getMessage("user.programException"));
}
}
@RequestMapping(value="/adWords/save")
@ResponseBody
public BaseResponse adWordsSave(@RequestParam(value = "adWords", defaultValue = "") String adWords) {
try {
redisUtils.set(companyName + Const.TOKEN_PRICE_AD_WORDS, adWords);
return new BaseResponse(new HashMap<>());
} catch (Exception e) {
logger.error("adWords save error:{}", e.getMessage());
return new BaseResponse(MsgUtil.getMessage("user.programException"));
}
}
@RequestMapping(value="/adLink/save")
@ResponseBody
public BaseResponse adLinkSave(@RequestParam(value = "adLink", defaultValue = "") String adLink) {
try {
adLink = adLink.trim();
String linkKey = companyName + Const.TOKEN_PRICE_AD_LINK;
String shortLinkKey = companyName + Const.TOKEN_PRICE_AD_SHORT_LINK;
Object obj = redisUtils.get(linkKey);
if (StringUtils.isEmpty(adLink)) {
redisUtils.del(linkKey, shortLinkKey);
} else {
if (!adLink.equals(obj)) {
String[] shortLinks = shortUrlUtil.compress(adLink, Integer.parseInt(shortLinkCount), Const.SHORT_LINK_TOKEN_PRICE_AD);
redisUtils.del(shortLinkKey);
if (shortLinks.length > 0) {
redisUtils.sSet(shortLinkKey, shortLinks);
} else {
redisUtils.sSet(shortLinkKey, adLink);
}
redisUtils.set(linkKey, adLink);
}
}
return new BaseResponse(new HashMap<>());
} catch (Exception e) {
logger.error("adLink save error:{}", e.getMessage());
return new BaseResponse(MsgUtil.getMessage("user.programException"));
}
}
}
@@ -0,0 +1,337 @@
package io.icchain.wxcontractbot.controller.user;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.entity.user.User;
import io.icchain.wxcontractbot.service.user.UserService;
import io.icchain.wxcontractbot.utils.*;
import io.icchain.wxcontractbot.utils.submail.MailSendHelper;
import io.icchain.wxcontractbot.utils.submail.SubmailSendMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@RequestMapping(value = "/user")
@Controller
public class UserController extends BaseController {
@Autowired
private UserService userService;
@RequestMapping(value = "/captcha")
public void crimg(HttpServletRequest request, HttpServletResponse response) throws IOException {
HttpSession session = request.getSession(true);
long time = System.currentTimeMillis();
response.setContentType("image/png");
response.setHeader("Cache-Control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Last-Modified", time);
response.setDateHeader("Date", time);
response.setDateHeader("Expires", time);
String captStr = CaptchaUtils.generateCaptcha(response.getOutputStream());
session.setAttribute("captchaStr", captStr);
logger.info("【captcha】 当前的SessionID:{} 验证码:{}", session.getId(), captStr);
}
@RequestMapping(value = "/smscode")
@ResponseBody
public BaseResponse smscode(String countryCode, String phone, String captcha, String source, HttpSession session) {
if (StringUtils.isEmpty(countryCode) || StringUtils.isEmpty(phone) || StringUtils.isEmpty(captcha) || StringUtils.isEmpty(source)) {
return new BaseResponse(MsgUtil.getMessage("user.smscode.phoneCaptchaSourceEmpty"));
}
BaseResponse baseResponse = checkCaptcha(captcha, session);
if (baseResponse != null) {
return baseResponse;
}
if (source.equals(Const.SOURCE_REGISTER)) {
boolean exist = userService.existByPhone(countryCode, phone);
if (exist) {
return new BaseResponse(MsgUtil.getMessage("user.smscode.phoneRegistered"));
}
} else if (source.equals(Const.SOURCE_RESET_PASSWORD)) {
boolean exist = userService.existByPhone(countryCode, phone);
if (!exist) {
return new BaseResponse(MsgUtil.getMessage("user.smscode.phoneUnregistered"));
}
} else {
return new BaseResponse(MsgUtil.getMessage("user.smscode.sourceInvalid"));
}
try {
String code = SysUtil.getSixRandom();
String phoneNum = countryCode.equals("86") ? phone : "+" + countryCode + phone;
SubmailSendMessage.sendSubMailMessage(phoneNum, MsgUtil.getMessage("user.smscode.captcha") + code);
session.setAttribute("countryCode", countryCode);
session.setAttribute("phone", phone);
session.setAttribute("smscode", code);
session.removeAttribute("captchaStr");
return new BaseResponse(new HashMap<>());
} catch (Exception e) {
logger.error("发送手机验证码异常: {} ", e.getMessage(), e);
return new BaseResponse(MsgUtil.getMessage("user.programException"));
}
}
private BaseResponse checkCaptcha(String captcha, HttpSession session) {
String captchaStr = (String) session.getAttribute("captchaStr");
if (captchaStr == null) {
logger.error("session中图片验证码为空");
return new BaseResponse(MsgUtil.getMessage("user.code.captcha.refresh"));
}
if (!captchaStr.equalsIgnoreCase(captcha)) {
logger.error("图片验证码错误: 原验证码{}, 现验证码{}", captchaStr, captcha);
return new BaseResponse(MsgUtil.getMessage("user.code.captcha.error"));
}
return null;
}
@RequestMapping(value = "/register/phone")
@ResponseBody
public synchronized BaseResponse registerByPhone(String countryCode, String phone, String password, String code, HttpSession session) {
BaseResponse baseResponse = checkByPhone(countryCode, phone, password, code, session);
if (baseResponse != null) {
return baseResponse;
}
boolean exist = userService.existByPhone(countryCode, phone);
if (exist) {
return new BaseResponse(MsgUtil.getMessage("user.register.phone.phoneRegistered"));
}
String md5Password = MD5Util.MD(password, phone);
User user = new User(countryCode, phone, null, md5Password);
user.setType(Const.USER_TYPE_USER);
user.preInsert();
userService.save(user);
session.removeAttribute("countryCode");
session.removeAttribute("phone");
session.removeAttribute("smscode");
return new BaseResponse(new HashMap<>());
}
@RequestMapping(value = "/resetPassword/phone")
@ResponseBody
public BaseResponse resetPasswordByPhone(String countryCode, String phone, String password, String code, HttpSession session) {
BaseResponse baseResponse = checkByPhone(countryCode, phone, password, code, session);
if (baseResponse != null) {
return baseResponse;
}
User user = userService.getUserByPhone(countryCode, phone);
if (user == null) {
return new BaseResponse(MsgUtil.getMessage("user.resetPassword.phone.phoneUnregistered"));
}
String md5Password = MD5Util.MD(password, phone);
user.setPassword(md5Password);
user.preUpdate();
userService.save(user);
session.removeAttribute("countryCode");
session.removeAttribute("phone");
session.removeAttribute("smscode");
return new BaseResponse(new HashMap<>());
}
private BaseResponse checkByPhone(String countryCode, String phone, String password, String code, HttpSession session) {
if (StringUtils.isEmpty(countryCode) || StringUtils.isEmpty(phone) || StringUtils.isEmpty(password) || StringUtils.isEmpty(code)) {
return new BaseResponse(MsgUtil.getMessage("user.phone.phonePasswordCodeEmpty"));
}
String oldCountryCode = (String) session.getAttribute("countryCode");
String oldPhone = (String) session.getAttribute("phone");
String oldSmscode = (String) session.getAttribute("smscode");
if (oldCountryCode == null || oldPhone == null || oldSmscode == null) {
logger.error("手机号或手机验证码为空: 手机号{}, 验证码{}", oldPhone, oldSmscode);
return new BaseResponse(MsgUtil.getMessage("user.phone.code.empty"));
}
if (!oldCountryCode.equals(countryCode) || !oldPhone.equals(phone) || !oldSmscode.equals(code)) {
logger.error("手机验证码错误: 原手机号{}, 现手机号{}, 原验证码{}, 现验证码{}", oldPhone, phone, oldSmscode, code);
return new BaseResponse(MsgUtil.getMessage("user.phone.code.error"));
}
return null;
}
@RequestMapping(value = "/emailcode")
@ResponseBody
public BaseResponse emailcode(String email, String captcha, String source, HttpSession session) {
if (StringUtils.isEmpty(email) || StringUtils.isEmpty(captcha) || StringUtils.isEmpty(source)) {
return new BaseResponse(MsgUtil.getMessage("user.emailcode.emailCaptchaSourceEmpty"));
}
BaseResponse baseResponse = checkCaptcha(captcha, session);
if (baseResponse != null) {
return baseResponse;
}
if (source.equals(Const.SOURCE_REGISTER)) {
boolean exist = userService.existByEmail(email);
if (exist) {
return new BaseResponse(MsgUtil.getMessage("user.emailcode.emailRegistered"));
}
} else if (source.equals(Const.SOURCE_RESET_PASSWORD)) {
boolean exist = userService.existByEmail(email);
if (!exist) {
return new BaseResponse(MsgUtil.getMessage("user.emailcode.emailUnregistered"));
}
} else {
return new BaseResponse(MsgUtil.getMessage("user.emailcode.sourceInvalid"));
}
try {
String code = SysUtil.getSixRandom();
MailSendHelper.sendMail(email, code);
session.setAttribute("email", email);
session.setAttribute("emailcode", code);
session.removeAttribute("captchaStr");
return new BaseResponse(new HashMap<>());
} catch (Exception e) {
logger.error("发送邮箱验证码异常: {} ", e.getMessage(), e);
return new BaseResponse(MsgUtil.getMessage("user.programException"));
}
}
@RequestMapping(value = "/register/email")
@ResponseBody
public synchronized BaseResponse registerByEmail(String email, String password, String code, HttpSession session) {
BaseResponse baseResponse = checkByEmail(email, password, code, session);
if (baseResponse != null) {
return baseResponse;
}
boolean exist = userService.existByEmail(email);
if (exist) {
return new BaseResponse(MsgUtil.getMessage("user.register.email.emailRegistered"));
}
String md5Password = MD5Util.MD(password, email);
User user = new User(null, null, email, md5Password);
user.setType(Const.USER_TYPE_USER);
user.preInsert();
userService.save(user);
session.removeAttribute("email");
session.removeAttribute("emailcode");
return new BaseResponse(new HashMap<>());
}
@RequestMapping(value = "/resetPassword/email")
@ResponseBody
public BaseResponse resetPasswordByEmail(String email, String password, String code, HttpSession session) {
BaseResponse baseResponse = checkByEmail(email, password, code, session);
if (baseResponse != null) {
return baseResponse;
}
User user = userService.getUserByEmail(email);
if (user == null) {
return new BaseResponse(MsgUtil.getMessage("user.register.email.emailUnregistered"));
}
String md5Password = MD5Util.MD(password, email);
user.setPassword(md5Password);
user.preUpdate();
userService.save(user);
session.removeAttribute("email");
session.removeAttribute("emailcode");
return new BaseResponse(new HashMap<>());
}
private BaseResponse checkByEmail(String email, String password, String code, HttpSession session) {
if (StringUtils.isEmpty(email) || StringUtils.isEmpty(password) || StringUtils.isEmpty(code)) {
return new BaseResponse(MsgUtil.getMessage("user.email.phonePasswordCodeEmpty"));
}
String oldEmail = (String) session.getAttribute("email");
String oldEmailcode = (String) session.getAttribute("emailcode");
if (oldEmail == null || oldEmailcode == null) {
logger.error("邮箱或邮箱验证码为空: 邮箱{}, 验证码{}", oldEmail, oldEmailcode);
return new BaseResponse(MsgUtil.getMessage("user.email.code.empty"));
}
if (!oldEmail.equals(email) || !oldEmailcode.equals(code)) {
logger.error("邮箱验证码错误: 原邮箱{}, 现邮箱{}, 原验证码{}, 现验证码{}", oldEmail, email, oldEmailcode, code);
return new BaseResponse(MsgUtil.getMessage("user.email.code.error"));
}
return null;
}
@RequestMapping(value = "/login/phone")
@ResponseBody
public BaseResponse loginByPhone(String countryCode, String phone, String password, HttpSession session) {
if (StringUtils.isEmpty(countryCode) || StringUtils.isEmpty(phone) || StringUtils.isEmpty(password)) {
return new BaseResponse(MsgUtil.getMessage("user.login.phonePasswordEmpty"));
}
try {
User user = userService.getUserByPhone(countryCode, phone);
if (user == null) {
return new BaseResponse(MsgUtil.getMessage("user.login.phoneUnregistered"));
}
String md5Password = MD5Util.MD(password, phone);
if (!user.getPassword().equals(md5Password)) {
return new BaseResponse(MsgUtil.getMessage("user.login.phonePasswordError"));
}
return login(session, user);
} catch (Exception e) {
logger.error("用户登录失败: {} ", e.getMessage(), e);
return new BaseResponse(MsgUtil.getMessage("user.programException"));
}
}
public static void main(String[] args) {
String md5Password = MD5Util.MD("liqun.123", "13522070301");
System.out.println(md5Password);
}
@RequestMapping(value = "/login/email")
@ResponseBody
public BaseResponse loginByEmail(String email, String password, HttpSession session) {
if (StringUtils.isEmpty(email) || StringUtils.isEmpty(password)) {
return new BaseResponse(MsgUtil.getMessage("user.login.emailPasswordEmpty"));
}
try {
User user = userService.getUserByEmail(email);
if (user == null) {
return new BaseResponse(MsgUtil.getMessage("user.login.emailUnregistered"));
}
String md5Password = MD5Util.MD(password, email);
if (!user.getPassword().equals(md5Password)) {
return new BaseResponse(MsgUtil.getMessage("user.login.emailPasswordError"));
}
return login(session, user);
} catch (Exception e) {
logger.error("用户登录失败: {} ", e.getMessage(), e);
return new BaseResponse(MsgUtil.getMessage("user.programException"));
}
}
private BaseResponse login(HttpSession session, User user) {
session.setAttribute(Const.currentLoginUserId, user.getId());
session.setAttribute(Const.currentLoginUserType, user.getType());
Map<String, Object> res = new HashMap<>();
res.put("type", user.getType());
return new BaseResponse(res);
}
@RequestMapping(value = "/logout")
@ResponseBody
public BaseResponse logout(HttpSession session) {
session.removeAttribute(Const.currentLoginUserId);
session.removeAttribute(Const.currentLoginUserType);
logger.info("【logout】 退出成功!当前SessionID:{}", session.getId() );
return new BaseResponse(new HashMap<>());
}
@RequestMapping(value = "/tryLogin")
@ResponseBody
public BaseResponse tryLogin() {
return new BaseResponse(new HashMap<>());
}
}
@@ -0,0 +1,120 @@
package io.icchain.wxcontractbot.controller.welcome;
import io.icchain.wxcontractbot.controller.BaseController;
import io.icchain.wxcontractbot.service.welcome.WelcomeService;
import io.icchain.wxcontractbot.utils.BaseResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@RequestMapping(value = "/welcome")
@Controller
public class WelcomeController extends BaseController {
@Autowired
private WelcomeService welcomeService;
@RequestMapping(value="queryByChatId")
@ResponseBody
public BaseResponse queryByChatId(String chatId) {
return welcomeService.queryByChatId(chatId);
}
@RequestMapping(value="")
@ResponseBody
public BaseResponse info() {
return welcomeService.info();
}
@RequestMapping(value="/list")
@ResponseBody
public BaseResponse list(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize) {
return welcomeService.list(page, pagesize);
}
@RequestMapping(value="/intervalSeconds/save")
@ResponseBody
public BaseResponse saveIntervalSeconds(String intervalSeconds) {
return welcomeService.saveIntervalSeconds(intervalSeconds);
}
@RequestMapping(value="/sleepPeriod/save")
@ResponseBody
public BaseResponse saveSleepPeriod(String sleepPeriod) {
return welcomeService.saveSleepPeriod(sleepPeriod);
}
@RequestMapping(value="/chat/list")
@ResponseBody
public BaseResponse chatList(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize) {
return welcomeService.chatList(page, pagesize);
}
@RequestMapping(value="/chat/all")
@ResponseBody
public BaseResponse chatAll() {
return welcomeService.chatAll();
}
@RequestMapping(value="/appliedChat/list")
@ResponseBody
public BaseResponse appliedChatList(@RequestParam(value = "id", defaultValue = "") String id,
@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "pagesize", defaultValue = "10") int pagesize) {
return welcomeService.appliedChatList(id, page, pagesize);
}
@RequestMapping(value="/appliedChatIds/all")
@ResponseBody
public BaseResponse appliedChatIds(@RequestParam(value = "id", defaultValue = "") String id) {
return welcomeService.appliedChatIds(id);
}
@RequestMapping(value="/add")
@ResponseBody
public BaseResponse add(@RequestParam(value = "title", defaultValue = "") String title,
@RequestParam(value = "atUser", defaultValue = "") String atUser,
@RequestParam(value = "content", defaultValue = "") String content,
@RequestParam(value = "chatIds", defaultValue = "") String chatIds) {
return welcomeService.add(title, atUser, content, chatIds);
}
@RequestMapping(value="/update")
@ResponseBody
public BaseResponse update(@RequestParam(value = "id", defaultValue = "") String id,
@RequestParam(value = "title", defaultValue = "") String title,
@RequestParam(value = "atUser", defaultValue = "") String atUser,
@RequestParam(value = "content", defaultValue = "") String content,
@RequestParam(value = "chatIds", defaultValue = "") String chatIds) {
return welcomeService.update(id, title, atUser, content, chatIds);
}
@RequestMapping(value="/status/update")
@ResponseBody
public BaseResponse updateStatus(String id, String status) {
return welcomeService.updateStatus(id, status);
}
@RequestMapping(value="/delete")
@ResponseBody
public BaseResponse delete(String id) {
return welcomeService.delete(id);
}
}
@@ -0,0 +1,49 @@
package io.icchain.wxcontractbot.dao.accurate.add.friends;
import io.icchain.wxcontractbot.entity.accurate.add.friends.AccurateAddFriendsBot;
import io.icchain.wxcontractbot.entity.common.BotJoinFriendsDataInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
/**
* 精确加粉机器人表(io.icchain.wxcontractbot.entity.accurate.add.friends.AccurateAddFriendsBot)表数据库访问层
*
* @author xuelei.wang
* @create time 2020-06-04 12:02:00
*/
@Repository
public interface AccurateAddFriendsBotDao extends JpaRepository<AccurateAddFriendsBot, String>, JpaSpecificationExecutor<AccurateAddFriendsBot> {
/**
* 获取七日内发送加好友机器人信息
* @param wxIds
* @param queryDate
* @return
*/
@Query(value = "select u.bot_wx_id as 'wxid',count(1) as 'sendCount' from t_accurate_add_friends_user u\n" +
"where u.status!='0' and u.bot_wx_id in (?1) and u.create_date>=?2\n" +
"group by u.bot_wx_id ",nativeQuery = true)
List<BotJoinFriendsDataInfo> getSevenDaySendMsgData(List<String> wxIds, Date queryDate);
/**
* 获取七日内加好友成功信息
* @param wxIds
* @param queryDate
* @return
*/
@Query(value = "select u.bot_wx_id as 'wxid',count(1) as 'addCount' from t_accurate_add_friends_user u\n" +
"where u.status='3' and u.bot_wx_id in (?1) and u.create_date>=?2\n" +
"group by u.bot_wx_id ",nativeQuery = true)
List<BotJoinFriendsDataInfo> getSevenDayJoinFriendsData(List<String> wxIds, Date queryDate);
/**
* 获取最近7天加好友信息的机器人信息
* @return
*/
@Query(value = "select t.* from t_accurate_add_friends_bot t where t.create_date>=SUBDATE(NOW(),INTERVAL 7 DAY)",nativeQuery = true)
List<AccurateAddFriendsBot> getSevenDayJoinFriendBotList();
}
@@ -0,0 +1,20 @@
package io.icchain.wxcontractbot.dao.accurate.add.friends;
import io.icchain.wxcontractbot.entity.accurate.add.friends.AccurateAddFriendsComment;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
/**
* 精准加粉文案表(AccurateAddFriendsComment)表数据库访问层
*
* @author xuelei.wang
* @create time 2020-06-04 13:24:43
*/
@Repository
public interface AccurateAddFriendsCommentDao extends JpaRepository<AccurateAddFriendsComment, String>, JpaSpecificationExecutor<AccurateAddFriendsComment> {
@Query(value = "select max(t.sortNum) from AccurateAddFriendsComment t ")
Integer getMaxSortNum();
}
@@ -0,0 +1,39 @@
package io.icchain.wxcontractbot.dao.accurate.add.friends;
import io.icchain.wxcontractbot.entity.accurate.add.friends.AccurateAddFriends;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import javax.transaction.Transactional;
import java.util.Date;
import java.util.List;
/**
* 精准加粉配置表(AccurateAddFriends)表数据库访问层
*
* @author xuelei.wang
* @create time 2020-06-04 12:02:22
*/
@Repository
public interface AccurateAddFriendsDao extends JpaRepository<AccurateAddFriends, String>, JpaSpecificationExecutor<AccurateAddFriends> {
@Query("select u from AccurateAddFriends u where u.status in(?1) ")
List<AccurateAddFriends> findListByStatus(List<String> status);
@Query("select u from AccurateAddFriends u where u.createDate>=?1")
List<AccurateAddFriends> findLastTenDayData(Date queryDate);
/**
* 更新执行中的任务状态
* @return
*/
@Transactional
@Modifying
@Query(value = "update t_accurate_add_friends t2 set t2.`status`='2' where not EXISTS(select *from (select f.* from t_accurate_add_friends f \n" +
"inner join t_accurate_add_friends_user u on u.add_friends_id=f.id\n" +
"where u.`status`='0') as t1 where t1.id=t2.id)", nativeQuery = true)
Integer updateExecutingTaskStatus();
}
@@ -0,0 +1,16 @@
package io.icchain.wxcontractbot.dao.accurate.add.friends;
import io.icchain.wxcontractbot.entity.accurate.add.friends.AccurateAddFriendsRecords;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
/**
* 精确加粉 记录表(AccurateAddFriendsRecords)表数据库访问层
*
* @author xuelei.wang
* @create time 2020-06-08 16:29:14
*/
@Repository
public interface AccurateAddFriendsRecordsDao extends JpaRepository<AccurateAddFriendsRecords,String>, JpaSpecificationExecutor<AccurateAddFriendsRecords> {
}
@@ -0,0 +1,88 @@
package io.icchain.wxcontractbot.dao.accurate.add.friends;
import io.icchain.wxcontractbot.entity.accurate.add.friends.AccurateAddFriendsUser;
import io.icchain.wxcontractbot.entity.common.StatisticDataInfo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import javax.transaction.Transactional;
import java.util.Date;
import java.util.List;
/**
* 精准加粉用户列表(AccurateAddFriendsUser)表数据库访问层
*
* @author xuelei.wang
* @create time 2020-06-04 12:02:12
*/
@Repository
public interface AccurateAddFriendsUserDao extends JpaRepository<AccurateAddFriendsUser, String>, JpaSpecificationExecutor<AccurateAddFriendsUser> {
@Query("select count(t) from AccurateAddFriendsUser t where t.userWxId=?1 and t.createDate>=?2")
Integer findByUserWxId(String userWxId, Date queryDate);
@Query("select t from AccurateAddFriendsUser t where t.addFriendsId=?1")
Page<AccurateAddFriendsUser> findAll(String addFriendsId, Pageable pageable);
/**
* 获取一天内机器人进群数量大于10个
*/
@Query(value = " select b.bot_wx_id as wxId,max(b.bot_nick_name) as nickName,count(t.bot_wx_id) as count from t_accurate_add_friends_bot b \n" +
" inner join t_accurate_add_friends_records t on t.bot_wx_id=b.bot_wx_id " +
" and Date(t.create_date)=Date(NOW()) " +
" where b.add_friends_id=?2 and b.bot_wx_id in(?3)" +
" group by b.bot_wx_id " +
" having count>?1", nativeQuery = true)
List<StatisticDataInfo> findNotAvailableToSendMsgBotList(Integer count,String addFriendsId,List<String> botWxIds);
/**
* 获取一组任务内机器人的信息
*/
@Query(value = " select b1.bot_wx_id as wxId,max(t2.create_date) as maxDate,max(b1.bot_nick_name) as nickName from t_accurate_add_friends_bot b1 " +
"left join t_accurate_add_friends_records t2 " +
"on t2.bot_wx_id=b1.bot_wx_id " +
"where b1.add_friends_id=?1 " +
"group by t2.bot_wx_id ", nativeQuery = true)
List<StatisticDataInfo> findBotList(String addFriendsId);
@Query(value = "select * from t_accurate_add_friends_user t where t.user_wx_id in (?1) " +
"and t.create_date>SUBDATE(NOW(),INTERVAL 7 Day)", nativeQuery = true)
List<AccurateAddFriendsUser> findSevenDaySendMsgWxIdList(List<String> userWxIds);
@Transactional
@Modifying
@Query(value = "update t_accurate_add_friends_user u set u.`status`='3',u.update_date=now()\n" +
"where u.user_wx_id in(select distinct t.user_wx_id from t_accurate_add_friends_records t\n" +
"inner join t_wxcb_user_add_bot_as_friend f on t.bot_wx_id=f.bot_wxid and f.wxid=t.user_wx_id \n" +
"where t.create_date>=SUBDATE(now(),INTERVAL 7 DAY))", nativeQuery = true)
Integer updateJoinFriendsStatus();
@Query(value = "select u.add_friends_id as wxId,count(*) as count from t_accurate_add_friends_user u\n" +
"where u.`status`=?1 and u.add_friends_id in(?2) \n" +
"group by u.add_friends_id", nativeQuery = true)
List<StatisticDataInfo> findDataByStatus(String status, List<String> idList);
@Query(value = "select u.add_friends_id as wxId,count(u.user_wx_id) as count from t_accurate_add_friends_user u \n" +
" where u.`status`='3' and u.add_friends_id in(?1) \n" +
" group by u.add_friends_id", nativeQuery = true)
List<StatisticDataInfo> findAddSuccessData(List<String> idList);
@Transactional
@Modifying
@Query(value = "delete from t_accurate_add_friends_user \n" +
"where create_date<=SUBDATE(NOW(),INTERVAL 15 MINUTE) and\n" +
"not exists(select * from t_accurate_add_friends f where f.id=add_friends_id)", nativeQuery = true)
Integer deleteInvalidUserData();
/**
* 获取近7日被机器人添加好友的人数
* @return
*/
@Query(value = "select t.* from t_accurate_add_friends_user t where t.status='1' and t.create_date>=SUBDATE(NOW(),INTERVAL 7 DAY)",nativeQuery = true)
List<AccurateAddFriendsUser> getSevenDayJoinFriendUserList();
}
@@ -0,0 +1,38 @@
/*
*
* * Copyright 2019-2108 ICC (Intelligence Commerce Chain, https://icchain.io).
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.AnswerDetailEntity;
import io.icchain.wxcontractbot.entity.agent.ManageUserEntity;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.Date;
/**
* @ClassName: HookTokenPriceAnswerDetailDao
* @Description: TODO
* @date: 2019年5月13日 下午4:10:37
*/
public interface AnswerDetailDao extends JpaRepository<AnswerDetailEntity,String>, JpaSpecificationExecutor<AnswerDetailEntity> {
}
@@ -0,0 +1,37 @@
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.BotChat;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface BotChatDao extends JpaRepository<BotChat,String>, JpaSpecificationExecutor<BotChat> {
@Query(value = "from BotChat t where t.wxId=?1 and t.chatId=?2")
List<BotChat> findByChatIdAndWxId(String lineid, String chatId);
@Query(value = "from BotChat t where t.chatId=?1")
List<BotChat> findByChatId(String chatId);
@Query(value = "select t.wxId from BotChat t where t.chatId=?1")
List<String> getBotListByChatId(String chatId);
@Query(value = "select t from BotChat t where t.chatId in (?1)")
List<BotChat> findByChatIds(List<String> chatIdList);
@Query(value = "delete from BotChat where wxId=?1 and chatId=?2")
@Modifying
int delByBotIdAndChatId(String botId, String chatId);
@Query(value = "select t from BotChat t where t.chatId in (?1)")
List<BotChat> findByChatIdsAndWxIds(List<String> chatIdList);
}
@@ -0,0 +1,63 @@
/*
*
* * Copyright 2019-2108 ICC (Intelligence Commerce Chain, https://icchain.io).
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.ChatOwnerEntity;
import io.icchain.wxcontractbot.entity.common.StatisticDataInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
@Repository
public interface BotChatOwnerDao extends JpaRepository<ChatOwnerEntity,String>, JpaSpecificationExecutor<ChatOwnerEntity> {
@Query(value = "select IFNULL(sum(chat.chat_member_cnt),0) from t_wxcb_chat_owner o\n" +
"inner join t_wxcb_chat_message chat on o.chat_id=chat.chat_id",nativeQuery = true)
Long getOwnerChatTotalUserCount();
@Query(value = "select count(DISTINCT t.wxid) from t_wxcb_chat_owner t",nativeQuery = true)
Long getOwnerChatUserCount();
@Query(value = "select count(*) as count,DATE_FORMAT(t.create_date,?3) as dateStr from t_wxcb_chat_owner t\n" +
"where t.create_date>=?1 and t.create_date<=?2 " +
"group by DATE_FORMAT(t.create_date,?3)",nativeQuery = true)
List<StatisticDataInfo> findByDate(Date startDate, Date endDate, String pattern);
@Query(value = "select IFNULL(sum(chat.chat_member_cnt),0) as count,DATE_FORMAT(t.create_date,?3) as dateStr from t_wxcb_chat_owner t" +
" inner join t_wxcb_chat_message chat on chat.chat_id=t.chat_id" +
" where t.create_date>=?1 and t.create_date<=?2 "+
" group by DATE_FORMAT(t.create_date,?3)",nativeQuery = true)
List<StatisticDataInfo> findUserCountByDate(Date startDate, Date endDate, String groupPattern);
@Query(value = "select IFNULL(sum(chat.chat_member_cnt),0) from t_wxcb_chat_owner o\n" +
"inner join t_wxcb_chat_message chat on o.chat_id=chat.chat_id where o.create_date>=?1 and o.create_date<=?2",nativeQuery = true)
Long getOwnerChatUserCountByTime(Date startDate, Date endDate);
@Query(value = "select count(1) from t_wxcb_chat_owner o\n" +
"inner join t_wxcb_chat_message chat on o.chat_id=chat.chat_id",nativeQuery = true)
Long totalChatOwnerCount();
}
@@ -0,0 +1,39 @@
/*
*
* * Copyright 2019-2108 ICC (Intelligence Commerce Chain, https://icchain.io).
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.BotFriends;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @ClassName: TokenPriceManageUserDao
* @Description: TODO
* @date: 2019年5月13日 下午4:09:40
*/
@Repository
public interface BotFriendsDao extends JpaRepository<BotFriends,String>, JpaSpecificationExecutor<BotFriends> {
@Query(value ="select t.wxid from BotFriends t where t.wxid in (?1)")
List<String> findByUserIds(List<String> userIds);
}
@@ -0,0 +1,52 @@
/*
*
* * Copyright 2019-2108 ICC (Intelligence Commerce Chain, https://icchain.io).
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.BotMessageEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
@Repository
public interface BotMessageDao extends JpaRepository<BotMessageEntity,String>, JpaSpecificationExecutor<BotMessageEntity> {
@Query("select t from BotMessageEntity t where t.wxId=?1")
List<BotMessageEntity> findByWxId(String wxId);
@Query(value = "select wx_id wxId,bot_nickname botNickname from t_wxcb_bot_message", nativeQuery = true)
List<Map> getAll();
@Query(value = "select m.wx_id wxId,m.bot_nickname botNickname,m.friend_cnt friendCnt,count(c.id) botChatCount from t_wxcb_bot_message m " +
"left join t_wxcb_bot_chat c on m.wx_id = c.wx_id group by m.wx_id order by m.id asc limit ?1, ?2", nativeQuery = true)
List<Map> getPage(int start, int number);
@Query(value = "select count(1) from t_wxcb_bot_message", nativeQuery = true)
Long getCount();
@Query(value = "select m.wx_id wxId,m.bot_nickname botNickname,m.friend_cnt friendCnt,count(c.id) botChatCount from t_wxcb_bot_message m " +
"left join t_wxcb_bot_chat c on m.wx_id = c.wx_id where m.bot_nickname like %?1% group by m.wx_id order by m.id asc limit ?2, ?3", nativeQuery = true)
List<Map> getPageByNickname(String nickname, int start, int number);
@Query(value = "select count(1) from t_wxcb_bot_message where bot_nickname like %?1%", nativeQuery = true)
Long getCountByNickname(String nickname);
}
@@ -0,0 +1,16 @@
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.BotQuitChatRecords;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
/**
* @author wangx
*/
@Repository
public interface BotQuitChatRecordsDao extends JpaRepository<BotQuitChatRecords,String>, JpaSpecificationExecutor<BotQuitChatRecords> {
@Query(value="select count(*) from (select * from t_wxcb_bot_quit_chat_records t group by t.chat_id ) as t",nativeQuery = true)
Long getQuitCount();
}
@@ -0,0 +1,23 @@
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.ChatAiConfig;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface ChatAiConfigDao extends JpaRepository<ChatAiConfig, String>, JpaSpecificationExecutor<ChatAiConfig> {
@Query("select t from ChatAiConfig t where t.chatId=?1 and t.delFlag='0'")
ChatAiConfig findByChatId(String chatId);
@Query("select t from ChatAiConfig t where t.delFlag='0'")
List<ChatAiConfig> findAllActive();
@Query("select t from ChatAiConfig t where t.chatId in ?1 and t.delFlag='0'")
List<ChatAiConfig> findByChatIdIn(List<String> chatIds);
}
@@ -0,0 +1,43 @@
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.ChatAnalysisRecords;
import io.icchain.wxcontractbot.entity.common.StatisticDataInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
/**
* 社群分析记录表(ChatAnalysisRecords)表数据库访问层
*
* @author xuelei.wang
* @create time 2020-06-29 17:51:12
*/
@Repository
public interface ChatAnalysisRecordsDao extends JpaRepository<ChatAnalysisRecords, String>, JpaSpecificationExecutor<ChatAnalysisRecords> {
@Query(value = "select t.* from t_chat_analysis_records t where DATE(t.create_date)=DATE(ADDDATE(NOW(),INTERVAL -1 DAY)) ",nativeQuery = true)
List<ChatAnalysisRecords> findYesterdayData();
@Query("select sum(t.privateChatIncrementCnt) from ChatAnalysisRecords t where t.privateChatIncrementCnt>0 and t.createDate>=?1 and t.createDate<=?2")
Long findChatCountByTime(Date startDate, Date endDate);
@Query("select sum(t.privateChatCnt) from ChatAnalysisRecords t where t.createDate>=?1 and t.createDate<=?2")
Long findYesterdayChatCountByTime(Date startDate, Date endDate);
@Query("select sum(t.privateChatUsrIncrementCnt) from ChatAnalysisRecords t where t.privateChatUsrIncrementCnt>0 and t.createDate>=?1 and t.createDate<=?2")
Long findChatUserCountByTime(Date startDate, Date endDate);
@Query("select sum(t.privateChatUsrCnt) from ChatAnalysisRecords t where t.createDate>=?1 and t.createDate<=?2")
Long findYesterdayChatUserCountByTime(Date startDate, Date endDate);
@Query(value = "select sum(t.private_chat_usr_increment_cnt) as count,sum(t.private_chat_increment_cnt) as chatCount,DATE_FORMAT(t.create_date,?3) as dateStr" +
" from t_chat_analysis_records t " +
" where t.create_date>=?1 and t.create_date<=?2 "+
" group by DATE_FORMAT(t.create_date,?3)",nativeQuery = true)
List<StatisticDataInfo> findAnalysisData(Date startDate, Date endDate, String groupPattern);
}
@@ -0,0 +1,164 @@
/*
*
* * Copyright 2019-2108 ICC (Intelligence Commerce Chain, https://icchain.io).
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.ChatMessageEntity;
import io.icchain.wxcontractbot.entity.common.StatisticDataInfo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Repository
public interface ChatMessageDao extends JpaRepository<ChatMessageEntity,String>, JpaSpecificationExecutor<ChatMessageEntity> {
@Query(value = "select count(DISTINCT t.wxid) as count,DATE_FORMAT(t.create_date,?3) as dateStr from t_wxcb_chat_owner t " +
" where t.create_date>=?1 and t.create_date<=?2 "+
" group by DATE_FORMAT(t.create_date,?3)",nativeQuery = true)
List<StatisticDataInfo> findTotalCountByDate(Date startDate, Date endDate, String groupPattern);
@Query(value = "select distinct t from ChatMessageEntity t " +
" left join t.botChatList botList" +
" left join t.strategyTriggerRecordsEntityList triggerList " +
" where CAST(t.chatMemberCnt as int)>1 and botList is not null")
Page<ChatMessageEntity> findDataAll(Pageable pageable);
@Query(value = "select distinct t from ChatMessageEntity t " +
" left join t.botChatList botList" +
" left join t.strategyTriggerRecordsEntityList triggerList where CAST(t.chatMemberCnt as int)>=0 and botList is not null order by size(botList) desc")
Page<ChatMessageEntity> findDataAllOrderByBotChatDesc(Pageable pageable);
@Query(value = "select distinct t from ChatMessageEntity t order by t.createDate desc ")
Page<ChatMessageEntity> findDataAllOrderByChatMemberCntDesc(Pageable pageable);
@Query(value = "select distinct t from ChatMessageEntity t " +
" left join t.botChatList botList " +
" left join t.strategyTriggerRecordsEntityList triggerList " +
" where CAST(t.chatMemberCnt as int)>0 and botList is not null order by size(botList) asc")
Page<ChatMessageEntity> findDataAllOrderByBotChatAsc(Pageable pageable);
@Query(value = "select distinct t from ChatMessageEntity t " +
" left join t.strategyTriggerRecordsEntityList triggerList " +
" left join t.botChatList botList where CAST(t.chatMemberCnt as int)>=0 and botList is not null order by CAST(t.chatMemberCnt AS int) asc")
Page<ChatMessageEntity> findDataAllOrderByChatMemberCntAsc(Pageable pageable);
@Query(value = "select count(distinct t) from ChatMessageEntity t join t.botChatList botList where CAST(t.chatMemberCnt as int)>1 and t.chatType='0' and botList is not null ")
Long getPublicChatCount();
@Query(value = "select count(distinct t) from ChatMessageEntity t join t.botChatList botList where CAST(t.chatMemberCnt as int)>1 and t.chatType='1' and botList is not null ")
Long getPrivateChatCount();
@Query(value = "delete from ChatMessageEntity where chatId=?1")
@Modifying
int delByChatId(String chatId);
@Query(value = "select distinct t from ChatMessageEntity t join t.botChatList botList where CAST(t.chatMemberCnt as int)>1 and t.chatType='1' and botList is not null")
Page<ChatMessageEntity> getPrivateList(Pageable pageable);
@Query(value = "select distinct t from ChatMessageEntity t join t.botChatList botList where CAST(t.chatMemberCnt as int)>1 and t.chatType='1' and botList is not null")
List<ChatMessageEntity> findPrivateChat();
@Query(value = "select NULLIF(sum(t.chat_member_cnt),0)from t_wxcb_chat_message t",nativeQuery = true)
Long findTotalUserCount();
@Query(value = "select distinct t from ChatMessageEntity t left join t.botChatList botList " +
" left join t.strategyTriggerRecordsEntityList triggerList " +
"where CAST(t.chatMemberCnt as int)>1 and botList is not null order by size(triggerList) desc")
Page<ChatMessageEntity> findDataAllOrderByStrategyDesc(Pageable pageable);
@Query(value = "select distinct t from ChatMessageEntity t left join t.botChatList botList " +
" left join t.strategyTriggerRecordsEntityList triggerList " +
" where CAST(t.chatMemberCnt as int)>1 and botList is not null order by size(triggerList) asc")
Page<ChatMessageEntity> findDataAllOrderByStrategyAsc(Pageable pageable);
@Query(value = "select * from (select distinct t.*,count(wx_id) botCnt from t_wxcb_chat_message t " +
"left join t_wxcb_bot_chat bc on t.chat_id = bc.chat_id " +
"where cast(t.chat_member_cnt as signed) > 1 and t.chat_type = ?1 group by chat_id)tt where botCnt >= ?2 limit ?3, ?4", nativeQuery = true)
List<ChatMessageEntity> findPageByChatType(String chatType, int minBotCnt, int start, int number);
@Query(value = "select * from (select distinct t.*,count(wx_id) botCnt from t_wxcb_chat_message t " +
"left join t_wxcb_bot_chat bc on t.chat_id = bc.chat_id " +
"where cast(t.chat_member_cnt as signed) > 1 and t.chat_type = ?1 and t.chat_name like %?2% group by chat_id)tt where botCnt >= ?3 limit ?4, ?5", nativeQuery = true)
List<ChatMessageEntity> findPageByChatTypeName(String chatType, String chatName, int minBotCnt, int start, int number);
@Query(value = "select count(1) from (select distinct t.*,count(wx_id) botCnt from t_wxcb_chat_message t " +
"left join t_wxcb_bot_chat bc on t.chat_id = bc.chat_id " +
"where cast(t.chat_member_cnt as signed) > 1 and t.chat_type = ?1 group by chat_id)tt where botCnt >= ?2", nativeQuery = true)
Long getCountByChatType(String chatType, int minBotCnt);
@Query(value = "select count(1) from (select distinct t.*,count(wx_id) botCnt from t_wxcb_chat_message t " +
"left join t_wxcb_bot_chat bc on t.chat_id = bc.chat_id " +
"where cast(t.chat_member_cnt as signed) > 1 and t.chat_type = ?1 and t.chat_name like %?2% group by chat_id)tt where botCnt >= ?3", nativeQuery = true)
Long getCountByChatTypeName(String chatType, String chatName, int minBotCnt);
@Query(value = "select chat_id chatId,chat_name chatName from (select distinct t.*,count(wx_id) botCnt from t_wxcb_chat_message t " +
"left join t_wxcb_bot_chat bc on t.chat_id = bc.chat_id " +
"where cast(t.chat_member_cnt as signed) > 1 and t.chat_type = ?1 group by chat_id)tt where botCnt >= ?2", nativeQuery = true)
List<Map> findByChatType(String chatType, int minBotCnt);
@Query(value = "select chat_id chatId,chat_name chatName from (select distinct t.*,count(wx_id) botCnt from t_wxcb_chat_message t " +
"left join t_wxcb_bot_chat bc on t.chat_id = bc.chat_id " +
"where cast(t.chat_member_cnt as signed) > 1 and t.chat_type = ?1 and t.chat_name like %?2% group by chat_id)tt where botCnt >= ?3", nativeQuery = true)
List<Map> findByChatTypeName(String chatType, String chatName, int minBotCnt);
@Query(value = "select distinct t.* from t_wxcb_chat_message t where chat_id in (?1) order by locate(chat_id, ?2)", nativeQuery = true)
List<ChatMessageEntity> findByChatIds(List<String> chatIdList, String chatIds);
@Query(value = "select distinct t.* from t_wxcb_chat_message t where chat_id in (?1) ", nativeQuery = true)
List<ChatMessageEntity> findByChatIds(List<String> chatIdList);
@Query(value = "select replace(t.chat_id,'@chatroom','') from t_wxcb_chat_message t where t.chat_type=?1",nativeQuery = true)
List<String> findChatIdByChatType(String chatType);
@Query(value = "select replace(t.chat_id,'@chatroom','') from t_wxcb_chat_message t ",nativeQuery = true)
List<String> findChatIdAll();
@Query(value = "select replace(t.chat_id,'@chatroom','') from t_wxcb_chat_message t where t.chat_type='1' ",nativeQuery = true)
List<String> findPrivateChatIdAll();
@Query(value = "select t.chat_id from t_wxcb_chat_message t where t.chat_type='1' ",nativeQuery = true)
List<String> findPrivateChatIdOriginalAll();
@Query(value = "select sum(CAST(t.chatMemberCnt as int)) from ChatMessageEntity t join t.botChatList botList where CAST(t.chatMemberCnt as int)>1 and t.chatType='1' and botList is not null ")
Long getTotalPrivateChatUserCount();
@Query(value = "select t from ChatMessageEntity t where t.chatType='1' " +
" order by CAST(t.chatMemberCnt as int) desc ")
Page<ChatMessageEntity> findPrivateByPageOrderByUsrCntDesc(Pageable pageable);
@Query(value = "select t from ChatMessageEntity t where t.chatType='1' " +
" order by CAST(t.chatMemberCnt as int) asc ")
Page<ChatMessageEntity> findPrivateByPageOrderByUsrCntAsc(Pageable pageable);
@Query(value = "select t from ChatMessageEntity t where t.chatType='1'")
List<ChatMessageEntity> getPrivateAll();
}
@@ -0,0 +1,38 @@
/*
*
* * Copyright 2019-2108 ICC (Intelligence Commerce Chain, https://icchain.io).
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.ChatMessageRecordsEntity;
import io.icchain.wxcontractbot.entity.common.StatisticDataInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
@Repository
public interface ChatMessageRecordsDao extends JpaRepository<ChatMessageRecordsEntity,String>, JpaSpecificationExecutor<ChatMessageRecordsEntity> {
@Query(value = "select count(*) as count,DATE_FORMAT(t.create_date,?3) as dateStr from t_wxcb_chat_message_records t " +
" where t.create_date>=?1 and t.create_date<=?2 "+
" group by DATE_FORMAT(t.create_date,?3)",nativeQuery = true)
List<StatisticDataInfo> findByDate(Date startDate, Date endDate, String groupPattern);
}
@@ -0,0 +1,20 @@
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.ChatOwnerConfigComment;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
/**
* 占领群配置-文案配置表(ChatOwnerConfigComment)表数据库访问层
*
* @author xuelei.wang
* @create time 2020-06-05 11:21:02
*/
@Repository
public interface ChatOwnerConfigCommentDao extends JpaRepository<ChatOwnerConfigComment,String>, JpaSpecificationExecutor<ChatOwnerConfigComment> {
@Query(value = "select max(t.sortNum) from ChatOwnerConfigComment t ")
Integer getMaxSortNum();
}
@@ -0,0 +1,38 @@
/*
*
* * Copyright 2019-2108 ICC (Intelligence Commerce Chain, https://icchain.io).
* *
* * Licensed under the Apache License, Version 2.0 (the "License");
* * you may not use this file except in compliance with the License.
* * You may obtain a copy of the License at
* *
* * http://www.apache.org/licenses/LICENSE-2.0
* *
* * Unless required by applicable law or agreed to in writing, software
* * distributed under the License is distributed on an "AS IS" BASIS,
* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* * See the License for the specific language governing permissions and
* * limitations under the License.
*
*/
package io.icchain.wxcontractbot.dao.agent;
import io.icchain.wxcontractbot.entity.agent.ChatUserCountRecords;
import io.icchain.wxcontractbot.entity.common.StatisticDataInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.List;
@Repository
public interface ChatUserCountRecordsDao extends JpaRepository<ChatUserCountRecords,String>, JpaSpecificationExecutor<ChatUserCountRecords> {
@Query(value = "select t.total_usr_cnt as count,DATE_FORMAT(t.create_date,?3) as dateStr from t_wxcb_chat_user_count_records t " +
" where t.create_date>=?1 and t.create_date<=?2 and t.records_type=?4 ",nativeQuery = true)
List<StatisticDataInfo> findByTime(Date startDate, Date endDate, String pattern,String chatUserQueryType);
}

Some files were not shown because too many files have changed in this diff Show More