更新java17,springboot3.3.9,maven3.9.10,

This commit is contained in:
wuchunlei
2025-07-07 09:55:09 +08:00
parent 596922cf83
commit 1fae61bfec
150 changed files with 422 additions and 3697 deletions

View File

@@ -24,7 +24,7 @@ import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.Date;

View File

@@ -3,20 +3,13 @@ package com.peanut.common.service;
import com.aliyun.vod20170321.models.DecryptKMSDataKeyResponseBody;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import com.peanut.common.utils.PlayToken;
import com.peanut.common.utils.SpdbUtil;
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.spi.HttpServerProvider;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;

View File

@@ -1,6 +1,6 @@
package com.peanut.common.utils;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

View File

@@ -3,7 +3,7 @@ package com.peanut.common.utils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.util.Objects;
public class HttpContextUtil {

View File

@@ -10,8 +10,7 @@ package com.peanut.common.utils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
public class HttpContextUtils {

View File

@@ -11,8 +11,7 @@ package com.peanut.common.utils;
import com.alibaba.druid.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
/**
* IP地址

View File

@@ -1,7 +1,6 @@
package com.peanut.common.utils;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
import cn.hutool.core.codec.Base64;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.MessageDigest;

View File

@@ -1,38 +0,0 @@
package com.peanut.common.utils;
import com.peanut.modules.app.entity.UEditorFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.ClassUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.Date;
@Component
public class UEditorUpload {
private Logger log = LoggerFactory.getLogger(UEditorUpload.class);
private String path = ClassUtils.getDefaultClassLoader().getResource("").getPath();
public UEditorFile uploadImage(MultipartFile file) throws IOException {
log.info("UEditor开始上传文件");
String fileName = file.getOriginalFilename(); //获取文件名
//Ueditor的config.json规定的返回路径格式
String returnPath = "/image/upload/ueditor/"+new Date().getTime()+"/"+fileName;
File saveFile = new File(path+"static"+returnPath);
if (!saveFile.exists()){
saveFile.mkdirs();
}
file.transferTo(saveFile); //将临时文件移动到保存路径
log.info("UEditor上传文件成功保存路径"+saveFile.getAbsolutePath());
UEditorFile uEditorFile = new UEditorFile();
uEditorFile.setState("SUCCESS");
uEditorFile.setUrl(returnPath); //访问URL
uEditorFile.setTitle(fileName);
uEditorFile.setOriginal(fileName);
return uEditorFile;
}
}

View File

@@ -11,9 +11,9 @@ package com.peanut.common.validator;
import com.peanut.common.exception.RRException;
import com.peanut.common.utils.Constant;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validation;
import jakarta.validation.Validator;
import java.util.Set;
/**

View File

@@ -8,7 +8,7 @@
package com.peanut.common.validator.group;
import javax.validation.GroupSequence;
import jakarta.validation.GroupSequence;
/**
* 定义校验顺序如果AddGroup组失败则UpdateGroup组不会再校验

View File

@@ -8,8 +8,8 @@
package com.peanut.common.xss;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
/**

View File

@@ -13,10 +13,10 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import jakarta.servlet.ReadListener;
import jakarta.servlet.ServletInputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.LinkedHashMap;

View File

@@ -13,8 +13,7 @@ import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.DelegatingFilterProxy;
import javax.servlet.DispatcherType;
import jakarta.servlet.DispatcherType;
/**
* Filter配置

View File

@@ -8,7 +8,8 @@
package com.peanut.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -24,7 +25,10 @@ public class MybatisPlusConfig {
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}

View File

@@ -17,7 +17,7 @@ import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.Filter;
import jakarta.servlet.Filter;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

View File

@@ -1,61 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.config;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ApiKey;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.List;
import static com.google.common.collect.Lists.newArrayList;
@Configuration
@EnableSwagger2
public class SwaggerConfig implements WebMvcConfigurer {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//加了ApiOperation注解的类才生成接口文档
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
//包下的类,才生成接口文档
//.apis(RequestHandlerSelectors.basePackage("io.renren.controller"))
.paths(PathSelectors.any())
.build()
.securitySchemes(security());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("人人开源")
.description("renren-fast文档")
.termsOfServiceUrl("https://www.renren.io")
.version("3.0.0")
.build();
}
private List<ApiKey> security() {
return newArrayList(
new ApiKey("token", "token", "header")
);
}
}

View File

@@ -3,11 +3,11 @@ package com.peanut.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import jakarta.websocket.OnClose;
import jakarta.websocket.OnMessage;
import jakarta.websocket.OnOpen;
import jakarta.websocket.Session;
import jakarta.websocket.server.ServerEndpoint;
import java.util.concurrent.CopyOnWriteArraySet;

View File

@@ -1,22 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.modules.app.annotation;
import java.lang.annotation.*;
/**
* app登录效验
*
* @author Mark sunlightcs@gmail.com
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Login {
}

View File

@@ -1,25 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.modules.app.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 登录用户信息
*
* @author Mark sunlightcs@gmail.com
*/
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface LoginUser {
}

View File

@@ -1,18 +0,0 @@
package com.peanut.modules.app.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "aliyun.sms")
@Component
@Data
public class SMSConfig {
private String accessKeyId;
private String accessKeySecret;
private String singName;
private String templateCode;
private String sTemplateCode;//国际短信模版
}

View File

@@ -1,17 +0,0 @@
package com.peanut.modules.app.config;
import com.aliyun.teaopenapi.models.*;
public class Sample {
public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config()
// 您的 AccessKey ID
.setAccessKeyId(accessKeyId)
// 您的 AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "dysmsapi.aliyuncs.com";
return new com.aliyun.dysmsapi20170525.Client(config);
}
}

View File

@@ -1,56 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.modules.app.config;
import com.peanut.modules.app.interceptor.AuthorizationInterceptor;
import com.peanut.modules.app.resolver.LoginUserHandlerMethodArgumentResolver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.AsyncTaskExecutor;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.List;
import java.util.concurrent.Executor;
/**
* MVC配置
*
* @author Mark sunlightcs@gmail.com
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private AuthorizationInterceptor authorizationInterceptor;
@Autowired
private LoginUserHandlerMethodArgumentResolver loginUserHandlerMethodArgumentResolver;
@Autowired
@Qualifier("fluxTaskExecutor")
private AsyncTaskExecutor taskExecutor;
@Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
configurer.setTaskExecutor(taskExecutor);
configurer.setDefaultTimeout(30_000); // 超时时间设为30秒
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(authorizationInterceptor).addPathPatterns("/app/**");
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(loginUserHandlerMethodArgumentResolver);
}
}

View File

@@ -1,55 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.modules.app.controller;
import com.peanut.modules.app.utils.JwtUtils;
import com.peanut.modules.book.service.MyUserService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* APP登录授权
*
* @author Mark sunlightcs@gmail.com
*/
@RestController
@RequestMapping("/app")
@Api("APP登录接口")
public class AppLoginController {
@Autowired
private MyUserService userService;
@Autowired
private JwtUtils jwtUtils;
/**
* 登录
*/
// @PostMapping("login")
// @ApiOperation("登录")
// public R login(@RequestBody LoginForm form){
// //表单校验
// ValidatorUtils.validateEntity(form);
//
// //用户登录
// long userId = userService.login(form);
//
// //生成token
// String token = jwtUtils.generateToken(userId);
//
// Map<String, Object> map = new HashMap<>();
// map.put("token", token);
// map.put("expire", jwtUtils.getExpire());
//
// return R.ok(map);
// }
}

View File

@@ -1,45 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.modules.app.controller;
import com.peanut.modules.book.service.MyUserService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 注册
*
* @author Mark sunlightcs@gmail.com
*/
@RestController
@RequestMapping("/app")
@Api("APP注册接口")
public class AppRegisterController {
@Autowired
private MyUserService userService;
// @PostMapping("register")
// @ApiOperation("注册")
// public R register(@RequestBody RegisterForm form){
// //表单校验
// ValidatorUtils.validateEntity(form);
//
// UserEntity user = new UserEntity();
// user.setMobile(form.getMobile());
// user.setUsername(form.getMobile());
// user.setPassword(DigestUtils.sha256Hex(form.getPassword()));
// user.setCreateTime(new Date());
// userService.save(user);
//
// return R.ok();
// }
}

View File

@@ -1,53 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.modules.app.controller;
import com.peanut.common.utils.R;
import com.peanut.modules.app.annotation.Login;
import com.peanut.modules.app.annotation.LoginUser;
import com.peanut.modules.common.entity.MyUserEntity;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* APP测试接口
*
* @author Mark sunlightcs@gmail.com
*/
@RestController
@RequestMapping("/app")
@Api("APP测试接口")
public class AppTestController {
@Login
@GetMapping("userInfo")
@ApiOperation("获取用户信息")
public R userInfo(@LoginUser MyUserEntity user){
return R.ok().put("user", user);
}
@Login
@GetMapping("userId")
@ApiOperation("获取用户ID")
public R userInfo(@RequestAttribute("userId") Integer userId){
return R.ok().put("userId", userId);
}
@GetMapping("notToken")
@ApiOperation("忽略Token验证测试")
public R notToken(){
return R.ok().put("msg", "无需token也能访问。。。");
}
}

View File

@@ -1,56 +0,0 @@
package com.peanut.modules.app.controller;
import com.alibaba.fastjson.JSONObject;
import com.baidu.ueditor.ActionEnter;
import com.peanut.common.utils.UEditorUpload;
import com.peanut.modules.app.entity.UEditorFile;
import com.peanut.modules.oss.service.OssService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
@Controller
@RequestMapping("/ueditor")
public class UeditorController {
@Autowired
ResourceLoader resourceLoader;
@Autowired
UEditorUpload ueditorUpload;
@RequestMapping("/config")
@ResponseBody
public String exec(HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value = "action") String action,
@RequestParam(value = "upfile", required = false) MultipartFile upfile) throws Exception {
if (action.equals("config")) {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html");
String rootPath = request.getSession().getServletContext().getRealPath("/");
return new ActionEnter(request, rootPath).exec();
} else if (action.equals("uploadimage")) {
UEditorFile uEditorFile = ueditorUpload.uploadImage(upfile);
String jsonString = JSONObject.toJSONString(uEditorFile);
return jsonString;
} else if (action.equals("uploadfile")) {
UEditorFile uEditorFile = ueditorUpload.uploadImage(upfile);
String jsonString = JSONObject.toJSONString(uEditorFile);
return jsonString;
}
return "无效Action";
}
}

View File

@@ -1,31 +0,0 @@
package com.peanut.modules.app.entity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data
@NoArgsConstructor
@Accessors(chain = true)
public class UEditorFile {
private static final long serialVersionUID=1L;
private String state;
private String url;
private String title;
private String original;
@Override
public String toString() {
return "{" +
"state='" + state + '\'' +
", url='" + url + '\'' +
", title='" + title + '\'' +
", original='" + original + '\'' +
'}';
}
}

View File

@@ -1,33 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.modules.app.form;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 登录表单
*
* @author Mark sunlightcs@gmail.com
*/
@Data
@ApiModel(value = "登录表单")
public class LoginForm {
@ApiModelProperty(value = "手机号")
@NotBlank(message="手机号不能为空")
private String mobile;
@ApiModelProperty(value = "密码")
@NotBlank(message="密码不能为空")
private String password;
}

View File

@@ -1,33 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.modules.app.form;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 注册表单
*
* @author Mark sunlightcs@gmail.com
*/
@Data
@ApiModel(value = "注册表单")
public class RegisterForm {
@ApiModelProperty(value = "手机号")
@NotBlank(message="手机号不能为空")
private String mobile;
@ApiModelProperty(value = "密码")
@NotBlank(message="密码不能为空")
private String password;
}

View File

@@ -1,72 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.modules.app.interceptor;
import com.peanut.common.exception.RRException;
import com.peanut.modules.app.annotation.Login;
import com.peanut.modules.app.utils.JwtUtils;
import io.jsonwebtoken.Claims;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 权限(Token)验证
*
* @author Mark sunlightcs@gmail.com
*/
@Component
public class AuthorizationInterceptor extends HandlerInterceptorAdapter {
@Autowired
private JwtUtils jwtUtils;
public static final String USER_KEY = "userId";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Login annotation;
if(handler instanceof HandlerMethod) {
annotation = ((HandlerMethod) handler).getMethodAnnotation(Login.class);
}else{
return true;
}
if(annotation == null){
return true;
}
//获取用户凭证
String token = request.getHeader(jwtUtils.getHeader());
if(StringUtils.isBlank(token)){
token = request.getParameter(jwtUtils.getHeader());
}
//凭证为空
if(StringUtils.isBlank(token)){
throw new RRException(jwtUtils.getHeader() + "不能为空", HttpStatus.UNAUTHORIZED.value());
}
Claims claims = jwtUtils.getClaimByToken(token);
if(claims == null || jwtUtils.isTokenExpired(claims.getExpiration())){
throw new RRException(jwtUtils.getHeader() + "失效,请重新登录", HttpStatus.UNAUTHORIZED.value());
}
//设置userId到request里后续根据userId获取用户信息
request.setAttribute(USER_KEY, Long.parseLong(claims.getSubject()));
return true;
}
}

View File

@@ -1,53 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.modules.app.resolver;
import com.peanut.modules.app.annotation.LoginUser;
import com.peanut.modules.app.interceptor.AuthorizationInterceptor;
import com.peanut.modules.common.entity.MyUserEntity;
import com.peanut.modules.book.service.MyUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.support.WebDataBinderFactory;
import org.springframework.web.context.request.NativeWebRequest;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.method.support.ModelAndViewContainer;
/**
* 有@LoginUser注解的方法参数注入当前登录用户
*
* @author Mark sunlightcs@gmail.com
*/
@Component
public class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
@Autowired
private MyUserService userService;
@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.getParameterType().isAssignableFrom(MyUserEntity.class) && parameter.hasParameterAnnotation(LoginUser.class);
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container,
NativeWebRequest request, WebDataBinderFactory factory) throws Exception {
//获取用户ID
Object object = request.getAttribute(AuthorizationInterceptor.USER_KEY, RequestAttributes.SCOPE_REQUEST);
if(object == null){
return null;
}
//获取用户信息
MyUserEntity user = userService.getById((Long)object);
return user;
}
}

View File

@@ -1,97 +0,0 @@
/**
* Copyright (c) 2016-2019 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有,侵权必究!
*/
package com.peanut.modules.app.utils;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* jwt工具类
*
* @author Mark sunlightcs@gmail.com
*/
@Slf4j
@ConfigurationProperties(prefix = "renren.jwt")
@Component
public class JwtUtils {
private Logger logger = LoggerFactory.getLogger(getClass());
private String secret;
private long expire;
private String header;
/**
* 生成jwt token
*/
public String generateToken(long userId) {
Date nowDate = new Date();
//过期时间
Date expireDate = new Date(nowDate.getTime() + expire * 1000);
return Jwts.builder()
.setHeaderParam("typ", "JWT")
.setSubject(userId+"")
.setIssuedAt(nowDate)
.setExpiration(expireDate)
.signWith(SignatureAlgorithm.HS512, secret)
.compact();
}
public Claims getClaimByToken(String token) {
try {
return Jwts.parser()
.setSigningKey(secret)
.parseClaimsJws(token)
.getBody();
}catch (Exception e){
logger.debug("validate is token error ", e);
return null;
}
}
/**
* token是否过期
* @return true过期
*/
public boolean isTokenExpired(Date expiration) {
return expiration.before(new Date());
}
public String getSecret() {
return secret;
}
public void setSecret(String secret) {
this.secret = secret;
}
public long getExpire() {
return expire;
}
public void setExpire(long expire) {
this.expire = expire;
}
public String getHeader() {
return header;
}
public void setHeader(String header) {
this.header = header;
}
}

View File

@@ -664,7 +664,7 @@ public class BookController {
for (BookEntity b:bookEntityPage.getRecords()){
LambdaQueryWrapper<BookForumArticlesEntity> bookForumArticlesEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
bookForumArticlesEntityLambdaQueryWrapper.eq(BookForumArticlesEntity::getBookid,b.getId());
Integer integer = bookForumArticlesDao.selectCount(bookForumArticlesEntityLambdaQueryWrapper);
Integer integer = bookForumArticlesDao.selectCount(bookForumArticlesEntityLambdaQueryWrapper).intValue();
b.setForumNum(integer);
}

View File

@@ -73,7 +73,7 @@ public class BookShelfController {
Integer integer = bookShelfService.getBaseMapper().selectCount(new QueryWrapper<BookShelfEntity>()
.eq("book_id", bookShelf.getBookId())
.eq("user_id", bookShelf.getUserId()));
.eq("user_id", bookShelf.getUserId())).intValue();
// System.out.println("bookShelf"+bookShelf);
if (integer > 0){
return R.error(500,"当前书籍已加入书架");

View File

@@ -45,7 +45,7 @@ public class BookTeachLikeAndCommentController {
LambdaQueryWrapper<BookTeachLikeEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BookTeachLikeEntity::getDelFlag,0);
wrapper.eq(BookTeachLikeEntity::getTeachId,teachId);
int count = likeService.count(wrapper);
Long count = likeService.count(wrapper);
return R.ok().put("count", count);
}

View File

@@ -38,7 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;

View File

@@ -17,7 +17,6 @@ import com.peanut.modules.book.vo.response.PrintTemplateVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -88,8 +87,8 @@ public class ExpressController {
Page<ExpressOrder> expressOrderPage = new Page<>(currentPage, pageSize);
QueryWrapper<ExpressOrder> expressOrderQueryWrapper = new QueryWrapper<>();
int totalDataSize = expressOrderService.count(expressOrderQueryWrapper);
int totalPage = totalDataSize / pageSize + 1;
Long totalDataSize = expressOrderService.count(expressOrderQueryWrapper);
int totalPage = totalDataSize.intValue() / pageSize + 1;
Page<ExpressOrder> page = expressOrderService.page(expressOrderPage, expressOrderQueryWrapper);
List<ExpressOrder> expressOrderList = page.getRecords();
List<PrintTemplateVo> data = new ArrayList<>();

View File

@@ -57,7 +57,7 @@ public class BookForumArticlesServiceImpl extends ServiceImpl<BookForumArticlesD
LambdaQueryWrapper<BookForumArticlesEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BookForumArticlesEntity::getDelflag,0);
wrapper.eq(BookForumArticlesEntity::getBookid,book_id);
int count = this.count(wrapper);
return count;
Long count = this.count(wrapper);
return count.intValue();
}
}

View File

@@ -69,8 +69,8 @@ public class BookForumCommenServiceImpl extends ServiceImpl<BookForumCommentDao,
LambdaQueryWrapper<BookForumCommentEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BookForumCommentEntity::getBfaid,forum_id);
wrapper.eq(BookForumCommentEntity::getDelflag,0);
int count = this.count(wrapper);
return count;
Long count = this.count(wrapper);
return count.intValue();
}
@@ -93,7 +93,7 @@ public class BookForumCommenServiceImpl extends ServiceImpl<BookForumCommentDao,
LambdaQueryWrapper<BookForumCommentEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BookForumCommentEntity::getPid,comment_id);
wrapper.eq(BookForumCommentEntity::getDelflag,0);
Integer integer = this.getBaseMapper().selectCount(wrapper);
Integer integer = this.getBaseMapper().selectCount(wrapper).intValue();
return integer;
}
}

View File

@@ -277,7 +277,7 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
queryWrapper.eq("user_id", userId);
queryWrapper.eq("address_id", addressId);
queryWrapper.eq("address_modified", 0);
Integer totalSize = count(queryWrapper);
Integer totalSize = (int)count(queryWrapper);
Integer totalPage = totalSize / requestVo.getPageSize() + 1;
Page<BuyOrder> page = page(buyOrderPage, queryWrapper);
List<BuyOrder> buyOrderList = page.getRecords();
@@ -601,8 +601,7 @@ public class BuyOrderServiceImpl extends ServiceImpl<BuyOrderDao, BuyOrder> impl
QueryWrapper<BuyOrderProduct> buyOrderProductQueryWrapper = new QueryWrapper<>();
buyOrderProductQueryWrapper.eq("order_id", buyorder.getOrderId());
buyOrderProductQueryWrapper.eq("express_order_id", 0);
int count = buyOrderProductService.count(buyOrderProductQueryWrapper);
if (count == 0) {
if (buyOrderProductService.count(buyOrderProductQueryWrapper) == 0) {
buyorder.setOrderStatus(Constants.ORDER_STATUS_SHIPPED);
}
}

View File

@@ -1,16 +1,8 @@
package com.peanut.modules.book.service.impl;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.dysmsapi20170525.models.SendSmsResponseBody;
import com.aliyun.tea.TeaException;
import com.aliyun.teautil.Common;
import com.aliyun.teautil.models.RuntimeOptions;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.peanut.common.utils.*;
import com.peanut.modules.app.config.SMSConfig;
import com.peanut.modules.app.config.Sample;
import com.peanut.modules.book.service.*;
import com.peanut.modules.common.entity.*;
import lombok.extern.slf4j.Slf4j;
@@ -27,8 +19,6 @@ import com.peanut.modules.common.dao.MyUserDao;
public class MyUserServiceImpl extends ServiceImpl<MyUserDao, MyUserEntity> implements MyUserService {
@Autowired
private SMSConfig smsConfig;
@Autowired
private SmsUtil smsUtil;
@Autowired
@@ -49,7 +39,6 @@ public class MyUserServiceImpl extends ServiceImpl<MyUserDao, MyUserEntity> impl
@Override
public R sendCodeForRegister(String phone, String code,Integer areaCode) throws Exception {
String scode = code.split("_")[0];
// sendCode(phone,scode,areaCode);
if (areaCode!=null&&areaCode>0&&areaCode!=86){
return smsUtil.sendSmsAbroad(""+areaCode+phone,scode);
}else {
@@ -93,37 +82,6 @@ public class MyUserServiceImpl extends ServiceImpl<MyUserDao, MyUserEntity> impl
return userEbookBuyEntity != null;
}
private void sendCode(String phone, String code, Integer areaCode) throws Exception {
com.aliyun.dysmsapi20170525.Client client = Sample.createClient(smsConfig.getAccessKeyId(),smsConfig.getAccessKeySecret());
String tem;
if(areaCode!=null&&areaCode>0&&areaCode!=86){
tem = smsConfig.getSTemplateCode();
phone = areaCode+phone;
}else{
tem = smsConfig.getTemplateCode();
}
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setSignName(smsConfig.getSingName())
.setTemplateCode(tem)
.setPhoneNumbers(phone)
.setTemplateParam("{\"code\":\""+ code +"\"}");
RuntimeOptions runtime = new RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);
SendSmsResponseBody body = sendSmsResponse.getBody();
// System.out.println(body.getMessage());
} catch (TeaException error) {
// 如有需要,请打印 error
Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 如有需要,请打印 error
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
@Override
public boolean checkUserTelOrEmail(MyUserEntity user) {
LambdaQueryWrapper<MyUserEntity> wrapper = new LambdaQueryWrapper<>();

View File

@@ -86,7 +86,8 @@ public class UserAddressServiceImpl extends ServiceImpl<UserAddressDao, UserAddr
QueryWrapper<UserAddress> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_id", userId);
queryWrapper.eq("is_default", 1);
return this.count(queryWrapper);
Long count = this.count(queryWrapper);
return count.intValue();
}
public void clearUserDefaultAddress(Integer userId) {

View File

@@ -1,23 +0,0 @@
package com.peanut.modules.book.to;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
public class UserRecordDto implements Serializable {
private String[] images;
}

View File

@@ -3,33 +3,25 @@ package com.peanut.modules.common.controller;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.promeg.pinyinhelper.Pinyin;
import com.peanut.common.utils.DateUtils;
import com.peanut.common.utils.R;
import com.peanut.common.utils.ShiroUtils;
import com.peanut.modules.common.dao.ClassExamUserDao;
import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.service.*;
import com.peanut.modules.medical.service.CourseService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashSet;
import java.util.List;
@@ -267,7 +259,7 @@ public class ClassController {
ClassEntity classEntity = classEntityService.getById(classTask.getClassId());
if (classEntity.getId()>168){
ClassModel classModel = classModelService.getById(classEntity.getModelId());
int taskCount = classTaskService.count(new LambdaQueryWrapper<ClassTask>()
Long taskCount = classTaskService.count(new LambdaQueryWrapper<ClassTask>()
.eq(ClassTask::getClassId,classEntity.getId())
.eq(ClassTask::getType,"2")
.eq(ClassTask::getUserId,ShiroUtils.getUId()));

View File

@@ -19,7 +19,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
import java.util.Set;
@Slf4j
@RestController("commonCoupon")
@@ -59,8 +58,9 @@ public class CouponController {
Page<CouponEntity> couponPage = couponService.page(new Page<>(page, limit), wrapper);
for (CouponEntity couponEntity : couponPage.getRecords()) {
couponService.setRangeList(couponEntity);
couponEntity.setGrantCount(couponHistoryService.count(new LambdaQueryWrapper<CouponHistory>()
.eq(CouponHistory::getCouponId,couponEntity.getId())));
Long count = couponHistoryService.count(new LambdaQueryWrapper<CouponHistory>()
.eq(CouponHistory::getCouponId,couponEntity.getId()));
couponEntity.setGrantCount(count.intValue());
}
return R.ok().put("couponPage",couponPage);
}
@@ -110,8 +110,9 @@ public class CouponController {
public R getCouponInfo(@RequestBody Map<String,Object> params){
CouponEntity couponEntity = couponService.getByIdSetRange(Integer.parseInt(params.get("id").toString()));
couponService.setRangeList(couponEntity);
couponEntity.setGrantCount(couponHistoryService.count(new LambdaQueryWrapper<CouponHistory>()
.eq(CouponHistory::getCouponId,couponEntity.getId())));
Long count = couponHistoryService.count(new LambdaQueryWrapper<CouponHistory>()
.eq(CouponHistory::getCouponId,couponEntity.getId()));
couponEntity.setGrantCount(count.intValue());
return R.ok().put("couponEntity",couponEntity);
}
@@ -136,7 +137,7 @@ public class CouponController {
@Transactional
public R delCoupon(@RequestBody Map<String,Object> params){
int couponId = Integer.parseInt(params.get("id").toString());
int count = couponHistoryService.count(new LambdaQueryWrapper<CouponHistory>()
Long count = couponHistoryService.count(new LambdaQueryWrapper<CouponHistory>()
.eq(CouponHistory::getCouponId,couponId));
if (count>0){
return R.error("已有用户拥有优惠券");

View File

@@ -9,7 +9,6 @@ import com.peanut.common.utils.ShiroUtils;
import com.peanut.config.Constants;
import com.peanut.config.DelayQueueConfig;
import com.peanut.modules.book.service.TransactionDetailsService;
import com.peanut.modules.common.dao.CourseToMedicineDao;
import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.service.*;
import com.peanut.modules.common.service.JfTransactionDetailsService;
@@ -27,8 +26,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
@@ -102,10 +99,10 @@ public class CourseRelearnController {
if (cc != null) {
CourseEntity courseEntity = courseService.getById(cc.getCourseId());
if (courseEntity != null) {
int mCount = courseToMedicalService.count(new LambdaQueryWrapper<CourseToMedicine>().eq(CourseToMedicine::getCourseId,courseEntity.getId()));
int sCount = courseToSociologyService.count(new LambdaQueryWrapper<CourseToSociologyEntity>().eq(CourseToSociologyEntity::getCourseId,courseEntity.getId()));
int pCount = courseToPsycheService.count(new LambdaQueryWrapper<CourseToPsyche>().eq(CourseToPsyche::getCourseId,courseEntity.getId()));
int tCount = courseToTaihumedService.count(new LambdaQueryWrapper<CourseToTaihumed>().eq(CourseToTaihumed::getCourseId,courseEntity.getId()));
Long mCount = courseToMedicalService.count(new LambdaQueryWrapper<CourseToMedicine>().eq(CourseToMedicine::getCourseId,courseEntity.getId()));
Long sCount = courseToSociologyService.count(new LambdaQueryWrapper<CourseToSociologyEntity>().eq(CourseToSociologyEntity::getCourseId,courseEntity.getId()));
Long pCount = courseToPsycheService.count(new LambdaQueryWrapper<CourseToPsyche>().eq(CourseToPsyche::getCourseId,courseEntity.getId()));
Long tCount = courseToTaihumedService.count(new LambdaQueryWrapper<CourseToTaihumed>().eq(CourseToTaihumed::getCourseId,courseEntity.getId()));
if (mCount>0||sCount > 0||pCount > 0||tCount > 0){
List<UserCourseBuyEntity> list = userCourseBuyService.list(new MPJLambdaWrapper<UserCourseBuyEntity>()
.disableLogicDel()//查询出已删除数据
@@ -134,10 +131,10 @@ public class CourseRelearnController {
if (cc != null) {
CourseEntity courseEntity = courseService.getById(cc.getCourseId());
if (courseEntity != null){
int mCount = courseToMedicalService.count(new LambdaQueryWrapper<CourseToMedicine>().eq(CourseToMedicine::getCourseId,courseEntity.getId()));
int sCount = courseToSociologyService.count(new LambdaQueryWrapper<CourseToSociologyEntity>().eq(CourseToSociologyEntity::getCourseId,courseEntity.getId()));
int pCount = courseToPsycheService.count(new LambdaQueryWrapper<CourseToPsyche>().eq(CourseToPsyche::getCourseId,courseEntity.getId()));
int tCount = courseToTaihumedService.count(new LambdaQueryWrapper<CourseToTaihumed>().eq(CourseToTaihumed::getCourseId,courseEntity.getId()));
Long mCount = courseToMedicalService.count(new LambdaQueryWrapper<CourseToMedicine>().eq(CourseToMedicine::getCourseId,courseEntity.getId()));
Long sCount = courseToSociologyService.count(new LambdaQueryWrapper<CourseToSociologyEntity>().eq(CourseToSociologyEntity::getCourseId,courseEntity.getId()));
Long pCount = courseToPsycheService.count(new LambdaQueryWrapper<CourseToPsyche>().eq(CourseToPsyche::getCourseId,courseEntity.getId()));
Long tCount = courseToTaihumedService.count(new LambdaQueryWrapper<CourseToTaihumed>().eq(CourseToTaihumed::getCourseId,courseEntity.getId()));
if (mCount>0||sCount > 0||pCount > 0||tCount > 0){
MPJLambdaWrapper<ShopProduct> wrapper = new MPJLambdaWrapper<>();
wrapper.leftJoin(ShopProductCourseEntity.class,ShopProductCourseEntity::getProductId,ShopProduct::getProductId);

View File

@@ -85,8 +85,8 @@ public class ExpressController {
Page<ExpressOrder> expressOrderPage = new Page<>(currentPage, pageSize);
QueryWrapper<ExpressOrder> expressOrderQueryWrapper = new QueryWrapper<>();
int totalDataSize = expressOrderService.count(expressOrderQueryWrapper);
int totalPage = totalDataSize / pageSize + 1;
Long totalDataSize = expressOrderService.count(expressOrderQueryWrapper);
int totalPage = totalDataSize.intValue() / pageSize + 1;
Page<ExpressOrder> page = expressOrderService.page(expressOrderPage, expressOrderQueryWrapper);
List<ExpressOrder> expressOrderList = page.getRecords();
List<PrintTemplateVo> data = new ArrayList<>();

View File

@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@@ -92,7 +92,7 @@ public class TrainingClassController {
if (m!=null&m.containsKey("fee")){
trainingClass.setFinalFee(m.get("fee").toString());
}
int count = trainingToUserService.count(new LambdaQueryWrapper<TrainingToUser>()
Long count = trainingToUserService.count(new LambdaQueryWrapper<TrainingToUser>()
.eq(TrainingToUser::getUserId, ShiroUtils.getUId())
.eq(TrainingToUser::getTrainingId,trainingClass.getId()));
if (count > 0) {

View File

@@ -24,8 +24,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.transaction.Transactional;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.transaction.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;

View File

@@ -3,10 +3,6 @@ package com.peanut.modules.common.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.joda.time.DateTime;
import javax.persistence.Column;
import javax.xml.soap.Text;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

View File

@@ -2,8 +2,8 @@ package com.peanut.modules.common.entity;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
@Data
public class UserAppAuthorEntity {

View File

@@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import jakarta.persistence.Temporal;
import jakarta.persistence.TemporalType;
import java.util.Date;
/**

View File

@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import jakarta.persistence.Temporal;
import jakarta.persistence.TemporalType;
import java.util.Date;
/**

View File

@@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import jakarta.persistence.Temporal;
import jakarta.persistence.TemporalType;
import java.util.Date;
@Data

View File

@@ -270,29 +270,29 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
ClassModel classModel = classModelDao.selectById(classEntity.getModelId());
//开班校验
int monitorCount = classUserDao.selectCount(new LambdaQueryWrapper<ClassUser>()
.eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"1"));
.eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"1")).intValue();
if (monitorCount<1){
return R.error("请先设置班长");
}
int dmonitorCount = classUserDao.selectCount(new LambdaQueryWrapper<ClassUser>()
.eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"2"));
.eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"2")).intValue();
if (dmonitorCount<1){
return R.error("请先设置副班长");
}
int studyCount = classUserDao.selectCount(new LambdaQueryWrapper<ClassUser>()
.eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"3"));
.eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"3")).intValue();
if (studyCount<1){
return R.error("请先设置学习委员");
}
int commentCount = classUserDao.selectCount(new LambdaQueryWrapper<ClassUser>()
.eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"4"));
.eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"4")).intValue();
if (commentCount<3){
return R.error("请先设置3位评分员");
}
if (classModel.getIsTask()==1){
int taskCount = classTaskDao.selectCount(new LambdaQueryWrapper<ClassTask>()
.eq(ClassTask::getClassId,classEntity.getId()).eq(ClassTask::getType,"0"));
.eq(ClassTask::getClassId,classEntity.getId()).eq(ClassTask::getType,"0")).intValue();
double allWeek = Math.ceil((classModel.getDays())/7.0)-2;
if (taskCount<allWeek){
return R.error("请至少发布"+allWeek+"个任务。");
@@ -300,7 +300,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
}
int studentCount = classUserDao.selectCount(new LambdaQueryWrapper<ClassUser>()
.eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"0"));
.eq(ClassUser::getClassId,classEntity.getId()).eq(ClassUser::getRole,"0")).intValue();
if (studentCount<classEntity.getNumber()){
return R.error("学生人数未满");
}
@@ -311,12 +311,12 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
for (ClassCourse classCourse : classCourses) {
CourseEntity course = courseDao.selectById(classCourse.getCourseId());
int singleCount = classExamSubjectDao.selectCount(new LambdaQueryWrapper<ClassExamSubject>()
.eq(ClassExamSubject::getCourseId,classCourse.getCourseId()).eq(ClassExamSubject::getType,"0"));
.eq(ClassExamSubject::getCourseId,classCourse.getCourseId()).eq(ClassExamSubject::getType,"0")).intValue();
if (singleCount<Integer.parseInt(classModel.getExamProportion().split(":")[0])){
return R.error(course.getTitle()+"-单选题不足,请补充题库");
}
int multipleCount = classExamSubjectDao.selectCount(new LambdaQueryWrapper<ClassExamSubject>()
.eq(ClassExamSubject::getCourseId,classCourse.getCourseId()).eq(ClassExamSubject::getType,"1"));
.eq(ClassExamSubject::getCourseId,classCourse.getCourseId()).eq(ClassExamSubject::getType,"1")).intValue();
if (multipleCount<Integer.parseInt(classModel.getExamProportion().split(":")[1])){
return R.error(course.getTitle()+"-多选题不足,请补充题库");
}
@@ -341,7 +341,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
for (CourseCatalogueEntity catalog:catalogues){
int ucbCount = userCourseBuyDao.selectCount(new LambdaQueryWrapper<UserCourseBuyEntity>()
.eq(UserCourseBuyEntity::getUserId,classUser.getUserId())
.eq(UserCourseBuyEntity::getCatalogueId,catalog.getId()));
.eq(UserCourseBuyEntity::getCatalogueId,catalog.getId())).intValue();
if (ucbCount == 0){
flag = true;
CourseEntity c = courseDao.selectById(classCourse.getCourseId());
@@ -541,7 +541,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
int count = classUserDao.selectCount(
new LambdaQueryWrapper<ClassUser>()
.eq(ClassUser::getClassId,classEntity.getId())
.eq(ClassUser::getRole,0));
.eq(ClassUser::getRole,0)).intValue();
if (count > 0){
return R.error("还有学员存在,删除失败。");
}else {
@@ -599,7 +599,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
for (CourseCatalogueEntity catalog:catalogues){
int ucbCount = userCourseBuyDao.selectCount(new LambdaQueryWrapper<UserCourseBuyEntity>()
.eq(UserCourseBuyEntity::getUserId,user.getId())
.eq(UserCourseBuyEntity::getCatalogueId,catalog.getId()));
.eq(UserCourseBuyEntity::getCatalogueId,catalog.getId())).intValue();
if (ucbCount > 0){
sb.append(course.getTitle()+"-"+catalog.getTitle()+"已购买 ");//空格用来分割多门课程
}else {
@@ -729,7 +729,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
for (CourseCatalogueEntity catalog:catalogues){
int ucbCount = userCourseBuyDao.selectCount(new LambdaQueryWrapper<UserCourseBuyEntity>()
.eq(UserCourseBuyEntity::getUserId,user.getId())
.eq(UserCourseBuyEntity::getCatalogueId,catalog.getId()));
.eq(UserCourseBuyEntity::getCatalogueId,catalog.getId())).intValue();
if (ucbCount == 0){
CourseEntity courseEntity = courseDao.selectById(classCourse.getCourseId());
if (StringUtils.isEmpty(msg)){
@@ -760,7 +760,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
int count = userCertificateDao.selectCount(new LambdaQueryWrapper<UserCertificate>()
.and(t->t.eq(UserCertificate::getType,"A").or().eq(UserCertificate::getType,"B"))
.eq(UserCertificate::getCourseId,classCourse.getCourseId())
.eq(UserCertificate::getUserId,ShiroUtils.getUId()));
.eq(UserCertificate::getUserId,ShiroUtils.getUId())).intValue();
if (count>0){
return R.error("已获得相关课程证书");
}
@@ -780,7 +780,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
//判断开班人数
int count = classUserDao.selectCount(new LambdaQueryWrapper<ClassUser>()
.eq(ClassUser::getClassId,classEntity.getId())
.eq(ClassUser::getRole,"0"));
.eq(ClassUser::getRole,"0")).intValue();
if (count<classEntity.getNumber()){
ClassUser classUser = new ClassUser();
classUser.setClassId(classEntity.getId());
@@ -914,11 +914,11 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
for (ClassTask classTask:classTaskPage.getRecords()){
int alreadyReply = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getType,0)
.eq(ClassTaskAndQuesReply::getRelationId,classTask.getId()));
.eq(ClassTaskAndQuesReply::getRelationId,classTask.getId())).intValue();
int userNoCount = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getType,0)
.eq(ClassTaskAndQuesReply::getRelationId,classTask.getId())
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\""));
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")).intValue();
Map<String,Object> result = new HashMap<>();
result.put("setGiveHomeWorkNumber",alreadyReply);
result.put("userNoCount",userNoCount);
@@ -1001,7 +1001,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
int count = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getType,0)
.eq(ClassTaskAndQuesReply::getRelationId,classTask.getId())
.eq(ClassTaskAndQuesReply::getUserId,ShiroUtils.getUId()));
.eq(ClassTaskAndQuesReply::getUserId,ShiroUtils.getUId())).intValue();
if (count > 0) {
classTask.setReply(true);
}else {
@@ -1016,7 +1016,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
int c = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getType,classTaskAndQuesReply.getType())
.eq(ClassTaskAndQuesReply::getRelationId,classTaskAndQuesReply.getRelationId())
.eq(ClassTaskAndQuesReply::getUserId,classTaskAndQuesReply.getUserId()));
.eq(ClassTaskAndQuesReply::getUserId,classTaskAndQuesReply.getUserId())).intValue();
if (c > 0) {
return 2;
}
@@ -1161,14 +1161,14 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
int task0Replys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getType,0)
.eq(ClassTaskAndQuesReply::getClassId,classEntity.getId())
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\""));
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")).intValue();
if (task0Replys > 0){
info += "任务";
}
int quesReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getType,1)
.eq(ClassTaskAndQuesReply::getClassId,classEntity.getId())
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\""));
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")).intValue();
if (quesReplys > 0){
info += "思考题";
}
@@ -1181,7 +1181,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
.eq(ClassTaskAndQuesReply::getType,0)
.eq(ClassTaskAndQuesReply::getClassId,classEntity.getId())
.eq(ClassTaskAndQuesReply::getRelationId,ct.getId())
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\""));
.notLike(ClassTaskAndQuesReply::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")).intValue();
if (task1Replys > 0){
flag = true;
}
@@ -1192,7 +1192,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
int expReplys = classTaskDao.selectCount(new LambdaQueryWrapper<ClassTask>()
.eq(ClassTask::getClassId,cu.getClassId())
.eq(ClassTask::getType,2)
.notLike(ClassTask::getScoreInfo,"\""+ShiroUtils.getUId()+"\""));
.notLike(ClassTask::getScoreInfo,"\""+ShiroUtils.getUId()+"\"")).intValue();
if (expReplys > 0){
info += "心得";
}
@@ -1450,7 +1450,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
wrapper.leftJoin(ClassModel.class,ClassModel::getId,ClassCourse::getModelId);
wrapper.eq(ClassModel::getId,classModel.getId());
wrapper.ne(CourseCatalogueChapterEntity::getQuestions,"");
int count = courseCatalogueChapterDao.selectCount(wrapper);
int count = courseCatalogueChapterDao.selectCount(wrapper).intValue();
BigDecimal totalScore = new BigDecimal(staticScore*count);
questionScore = questionScore.divide(totalScore,2, RoundingMode.HALF_UP);
questionScore = questionScore.multiply(new BigDecimal(classModel.getQuestionScore()));
@@ -1466,7 +1466,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
MPJLambdaWrapper<ClassTask> wrapper = new MPJLambdaWrapper();
wrapper.eq(ClassTask::getClassId,classEntity.getId());
wrapper.eq(ClassTask::getType,"0");
int count = classTaskDao.selectCount(wrapper);
int count = classTaskDao.selectCount(wrapper).intValue();
BigDecimal totalScore = new BigDecimal(staticScore*count);
task0Score = task0Score.divide(totalScore,2, RoundingMode.HALF_UP);
task0Score = task0Score.multiply(new BigDecimal(classModel.getTaskScore()));
@@ -1482,7 +1482,7 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
MPJLambdaWrapper<ClassTask> wrapper = new MPJLambdaWrapper();
wrapper.eq(ClassTask::getClassId,classEntity.getId());
wrapper.eq(ClassTask::getType,"1");
int count = classTaskDao.selectCount(wrapper);
int count = classTaskDao.selectCount(wrapper).intValue();
BigDecimal totalScore = new BigDecimal(staticScore*count);
task1Score = task1Score.divide(totalScore,2, RoundingMode.HALF_UP);
task1Score = task1Score.multiply(new BigDecimal(classModel.getMedicalcaseScore()));
@@ -1600,17 +1600,17 @@ public class ClassEntityServiceImpl extends ServiceImpl<ClassEntityDao, ClassEnt
//结班限制
int classExamUsers = classExamUserDao.selectCount(new LambdaQueryWrapper<ClassExamUser>()
.eq(ClassExamUser::getRelationId,classEntity.getId())
.eq(ClassExamUser::getScoreSuccess,0));
.eq(ClassExamUser::getScoreSuccess,0)).intValue();
if (classExamUsers>0){
return R.error("有学员正在考试,请稍后再试");
}
int task0AndQuesReplys = classTaskAndQuesReplyDao.selectCount(new LambdaQueryWrapper<ClassTaskAndQuesReply>()
.eq(ClassTaskAndQuesReply::getClassId,classEntity.getId())
.lt(ClassTaskAndQuesReply::getScoreSuccess,3));
.lt(ClassTaskAndQuesReply::getScoreSuccess,3)).intValue();
int task1AndExpReplys = classTaskDao.selectCount(new LambdaQueryWrapper<ClassTask>()
.eq(ClassTask::getClassId,classEntity.getId())
.eq(ClassTask::getType,2)
.lt(ClassTask::getScoreSuccess,3));
.lt(ClassTask::getScoreSuccess,3)).intValue();
if (task0AndQuesReplys>0||task1AndExpReplys>0){
return R.error("学员打分未完成,请完成打分后结班");
}

View File

@@ -6,14 +6,11 @@ import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.common.utils.DateUtils;
import com.peanut.common.utils.R;
import com.peanut.common.utils.ShiroUtils;
import com.peanut.config.DelayQueueConfig;
import com.peanut.modules.common.dao.*;
import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.service.CouponService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.amqp.core.MessagePostProcessor;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@@ -77,7 +74,7 @@ public class CouponServiceImpl extends ServiceImpl<CouponDao, CouponEntity> impl
CouponEntity couponEntity = couponDao.selectById(couponId);
if (couponEntity.getCurrentState()==0){
int historyCount = couponHistoryDao.selectCount(new LambdaQueryWrapper<CouponHistory>()
.eq(CouponHistory::getCouponId,couponId));
.eq(CouponHistory::getCouponId,couponId)).intValue();
//是否超出总发行量
if (historyCount<couponEntity.getTotalCirculation()){
List<CouponHistory> historyList = couponHistoryDao.selectList(new LambdaQueryWrapper<CouponHistory>()

View File

@@ -4,19 +4,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.common.utils.ShiroUtils;
import com.peanut.modules.common.dao.CourseGuestbookDao;
import com.peanut.modules.common.dao.CourseGuestbookSupportDao;
import com.peanut.modules.common.dao.MyUserDao;
import com.peanut.modules.common.entity.CourseGuestbook;
import com.peanut.modules.common.entity.CourseGuestbookSupport;
import com.peanut.modules.common.entity.MyUserEntity;
import com.peanut.modules.common.service.CourseGuestbookService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@@ -92,14 +89,14 @@ public class CourseGuestbookServiceImpl extends ServiceImpl<CourseGuestbookDao,
public int getUserSupportCount(int guestbookId) {
LambdaQueryWrapper<CourseGuestbookSupport> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CourseGuestbookSupport::getGuestbookId,guestbookId);
return supportDao.selectCount(wrapper);
return supportDao.selectCount(wrapper).intValue();
}
public boolean getUserSupport(int guestbookId,int userId) {
LambdaQueryWrapper<CourseGuestbookSupport> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CourseGuestbookSupport::getGuestbookId,guestbookId);
wrapper.eq(CourseGuestbookSupport::getUserId,userId);
int c = supportDao.selectCount(wrapper);
int c = supportDao.selectCount(wrapper).intValue();
if (c>0){
return true;
}else {

View File

@@ -15,7 +15,6 @@ import com.peanut.modules.common.to.ParamTo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@@ -86,7 +85,7 @@ public class CoursePsycheServiceImpl extends ServiceImpl<CoursePsycheDao, Course
@Override
public R delCoursePsyche(int id) {
//查看下一级是否存在
int count = this.count(new LambdaQueryWrapper<CoursePsyche>().eq(CoursePsyche::getPid, id));
Long count = this.count(new LambdaQueryWrapper<CoursePsyche>().eq(CoursePsyche::getPid, id));
if(count>0){
return R.error(501,"删除失败,请先删除子项目后再尝试");
}

View File

@@ -1,16 +1,8 @@
package com.peanut.modules.common.service.impl;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.aliyun.dysmsapi20170525.models.SendSmsResponseBody;
import com.aliyun.tea.TeaException;
import com.aliyun.teautil.Common;
import com.aliyun.teautil.models.RuntimeOptions;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.peanut.common.utils.R;
import com.peanut.common.utils.SmsUtil;
import com.peanut.modules.app.config.SMSConfig;
import com.peanut.modules.app.config.Sample;
import com.peanut.modules.common.dao.MyUserDao;
import com.peanut.modules.common.entity.MyUserEntity;
import com.peanut.modules.common.service.MyUserService;
@@ -22,15 +14,12 @@ import org.springframework.stereotype.Service;
@Service("commonMyUserService")
public class MyUserServiceImpl extends ServiceImpl<MyUserDao, MyUserEntity> implements MyUserService {
@Autowired
private SMSConfig smsConfig;
@Autowired
private SmsUtil smsUtil;
@Override
public R sendCodeForRegister(String phone, String code, Integer areaCode){
String scode = code.split("_")[0];
// sendCode(phone,scode,areaCode);
if (areaCode!=null&&areaCode>0&&areaCode!=86){
return smsUtil.sendSmsAbroad(""+areaCode+phone,scode);
}else {
@@ -38,36 +27,4 @@ public class MyUserServiceImpl extends ServiceImpl<MyUserDao, MyUserEntity> impl
}
}
private void sendCode(String phone, String code, Integer areaCode) throws Exception {
com.aliyun.dysmsapi20170525.Client client = Sample.createClient(smsConfig.getAccessKeyId(),smsConfig.getAccessKeySecret());
String tem;
if(areaCode!=null&&areaCode>0&&areaCode!=86){
tem = smsConfig.getSTemplateCode();
phone = areaCode+phone;
}else{
tem = smsConfig.getTemplateCode();
}
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setSignName(smsConfig.getSingName())
.setTemplateCode(tem)
.setPhoneNumbers(phone)
.setTemplateParam("{\"code\":\""+ code +"\"}");
RuntimeOptions runtime = new RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime);
SendSmsResponseBody body = sendSmsResponse.getBody();
// System.out.println(body.getMessage());
} catch (TeaException error) {
// 如有需要,请打印 error
Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 如有需要,请打印 error
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}

View File

@@ -39,7 +39,7 @@ public class TrainingClassServiceImpl extends ServiceImpl<TrainingClassDao, Trai
if (StringUtils.isNotEmpty(trainingClass.getVipType())){
String[] vipTypes = trainingClass.getVipType().split(",");
for (String vipType : vipTypes) {
int count = userVipService.count(new LambdaQueryWrapper<UserVip>()
Long count = userVipService.count(new LambdaQueryWrapper<UserVip>()
.eq(UserVip::getUserId,userId).eq(UserVip::getType,vipType).eq(UserVip::getState,0));
if (count>0){
fee = trainingClass.getVipFee();
@@ -113,7 +113,7 @@ public class TrainingClassServiceImpl extends ServiceImpl<TrainingClassDao, Trai
@Override
public void addTrainingClassForUser(BuyOrder buyOrder) {
int count = trainingToUserService.count(new LambdaQueryWrapper<TrainingToUser>()
Long count = trainingToUserService.count(new LambdaQueryWrapper<TrainingToUser>()
.eq(TrainingToUser::getUserId,buyOrder.getUserId())
.eq(TrainingToUser::getTrainingId,buyOrder.getTrainingClassId()));
if (count == 0){

View File

@@ -57,7 +57,7 @@ public class UserInviteRegisterServiceImpl extends ServiceImpl<UserInviteRegiste
inviteCode.append(chars.charAt(index));
}
int count = myUserDao.selectCount(new LambdaQueryWrapper<MyUserEntity>()
.eq(MyUserEntity::getInviteCode,inviteCode.toString()));
.eq(MyUserEntity::getInviteCode,inviteCode.toString())).intValue();
if (count > 0) {
code = generateInviteCode();
}else {

View File

@@ -13,7 +13,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;

View File

@@ -25,7 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import jakarta.annotation.PostConstruct;
import java.util.*;
@Service("scheduleJobService")

View File

@@ -30,7 +30,7 @@ public class AiVipTask implements ITask{
if (aiVipLog.getEndTime().getTime()<new Date().getTime()){
aiVipLog.setState(1);
aiVipLogService.updateById(aiVipLog);
}else if (DateUtil.isSameDay(DateUtils.addDays(new Date(),1), aiVipLog.getEndTime())){
}else if (DateUtil.isSameDay(new Date(), aiVipLog.getEndTime())){
rabbitTemplate.convertAndSend(
DelayQueueConfig.COMMON_EXCHANGE,
DelayQueueConfig.COMMON_ROUTING_KEY,

View File

@@ -63,7 +63,7 @@ public class BuyConfigController {
@RequestMapping("/delBookBuyConfig")
public R delBookBuyConfig(@RequestBody Map<String, Object> params) {
int count = buyOrderService.count(new LambdaQueryWrapper<BuyOrder>()
Long count = buyOrderService.count(new LambdaQueryWrapper<BuyOrder>()
.eq(BuyOrder::getOrderStatus,3)
.eq(BuyOrder::getProductId,params.get("id").toString()));
if (count > 0) {

View File

@@ -3,7 +3,6 @@ package com.peanut.modules.master.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.common.utils.ObjectUtils;
import com.peanut.common.utils.R;
import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.to.ParamTo;
@@ -57,14 +56,14 @@ public class CourseMedicineMarketController {
public R editSociologyMarket(@RequestBody CourseMedicineMarketEntity courseMedicineMarketEntity){
CourseMedicineMarketEntity old = marketService.getById(courseMedicineMarketEntity.getId());
if(courseMedicineMarketEntity.getIsLast()==1&&old.getIsLast()==0){//非终节点到终结点,要排除是否存在子集
Integer integer = marketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseMedicineMarketEntity>().eq(CourseMedicineMarketEntity::getPid, courseMedicineMarketEntity.getId()));
Integer integer = marketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseMedicineMarketEntity>().eq(CourseMedicineMarketEntity::getPid, courseMedicineMarketEntity.getId())).intValue();
if(integer>0){
return R.error("请先清空子集再操作!");
}
}
if(courseMedicineMarketEntity.getIsLast()==0&&old.getIsLast()==1){
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToMedicineMarketEntity>().eq(CourseToMedicineMarketEntity::getMedicineMarketId, courseMedicineMarketEntity.getId()));
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToMedicineMarketEntity>().eq(CourseToMedicineMarketEntity::getMedicineMarketId, courseMedicineMarketEntity.getId())).intValue();
if(integer>0){
return R.error("请先清空绑定的课程后,再操作");
}
@@ -130,7 +129,7 @@ public class CourseMedicineMarketController {
public R bindCourseAndMedicineMarket(@RequestBody Map<String,Integer> map){
int marketId = map.get("marketId");
int courseId = map.get("courseId");
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToMedicineMarketEntity>().eq(CourseToMedicineMarketEntity::getMedicineMarketId, marketId).eq(CourseToMedicineMarketEntity::getCourseId, courseId));
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToMedicineMarketEntity>().eq(CourseToMedicineMarketEntity::getMedicineMarketId, marketId).eq(CourseToMedicineMarketEntity::getCourseId, courseId)).intValue();
if(integer>0){
return R.error("不可重复绑定");
}

View File

@@ -58,14 +58,14 @@ public class CoursePsycheMarketController {
public R editPsycheMarket(@RequestBody CoursePsycheMarket coursePsycheMarket){
CoursePsycheMarket old = marketService.getById(coursePsycheMarket.getId());
if(coursePsycheMarket.getIsLast()==1&&old.getIsLast()==0){//非终节点到终结点,要排除是否存在子集
Integer integer = marketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CoursePsycheMarket>().eq(CoursePsycheMarket::getPid, coursePsycheMarket.getId()));
Integer integer = marketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CoursePsycheMarket>().eq(CoursePsycheMarket::getPid, coursePsycheMarket.getId())).intValue();
if(integer>0){
return R.error("请先清空子集再操作!");
}
}
if(coursePsycheMarket.getIsLast()==0&&old.getIsLast()==1){
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToPsycheMarket>().eq(CourseToPsycheMarket::getPsycheMarketId, coursePsycheMarket.getId()));
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToPsycheMarket>().eq(CourseToPsycheMarket::getPsycheMarketId, coursePsycheMarket.getId())).intValue();
if(integer>0){
return R.error("请先清空绑定的课程后,再操作");
}
@@ -129,7 +129,7 @@ public class CoursePsycheMarketController {
public R bindCourseAndPsycheMarket(@RequestBody Map<String,Integer> map){
int marketId = map.get("marketId");
int courseId = map.get("courseId");
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToPsycheMarket>().eq(CourseToPsycheMarket::getPsycheMarketId, marketId).eq(CourseToPsycheMarket::getCourseId, courseId));
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToPsycheMarket>().eq(CourseToPsycheMarket::getPsycheMarketId, marketId).eq(CourseToPsycheMarket::getCourseId, courseId)).intValue();
if(integer>0){
return R.error("不可重复绑定");
}

View File

@@ -3,7 +3,6 @@ package com.peanut.modules.master.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.common.utils.ObjectUtils;
import com.peanut.common.utils.R;
import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.to.ParamTo;
@@ -14,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -56,14 +54,14 @@ public class CourseSociologyMarketController {
public R editSociologyMarket(@RequestBody CourseSociologyMarketEntity courseSociologyMarketEntity){
CourseSociologyMarketEntity old = marketService.getById(courseSociologyMarketEntity.getId());
if(courseSociologyMarketEntity.getIsLast()==1&&old.getIsLast()==0){//非终节点到终结点,要排除是否存在子集
Integer integer = marketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseSociologyMarketEntity>().eq(CourseSociologyMarketEntity::getPid, courseSociologyMarketEntity.getId()));
Integer integer = marketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseSociologyMarketEntity>().eq(CourseSociologyMarketEntity::getPid, courseSociologyMarketEntity.getId())).intValue();
if(integer>0){
return R.error("请先清空子集再操作!");
}
}
if(courseSociologyMarketEntity.getIsLast()==0&&old.getIsLast()==1){
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToSociologyMarketEntity>().eq(CourseToSociologyMarketEntity::getSociologyMarketId, courseSociologyMarketEntity.getId()));
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToSociologyMarketEntity>().eq(CourseToSociologyMarketEntity::getSociologyMarketId, courseSociologyMarketEntity.getId())).intValue();
if(integer>0){
return R.error("请先清空绑定的课程后,再操作");
}
@@ -158,7 +156,7 @@ public class CourseSociologyMarketController {
public R bindCourseAndSociologyMarket(@RequestBody Map<String,Integer> map){
int marketId = map.get("marketId");
int courseId = map.get("courseId");
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToSociologyMarketEntity>().eq(CourseToSociologyMarketEntity::getSociologyMarketId, marketId).eq(CourseToSociologyMarketEntity::getCourseId, courseId));
Integer integer = toMarketService.getBaseMapper().selectCount(new LambdaQueryWrapper<CourseToSociologyMarketEntity>().eq(CourseToSociologyMarketEntity::getSociologyMarketId, marketId).eq(CourseToSociologyMarketEntity::getCourseId, courseId)).intValue();
if(integer>0){
return R.error("不可重复绑定");
}

View File

@@ -12,7 +12,6 @@ import com.peanut.modules.common.entity.CourseToTalent;
import com.peanut.modules.common.service.CourseTaihumedService;
import com.peanut.modules.common.service.CourseToTaihumedService;
import com.peanut.modules.common.service.CourseToTalentService;
import com.peanut.modules.common.to.ParamTo;
import com.peanut.modules.master.service.CourseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,7 +19,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -55,7 +53,7 @@ public class CourseTaihumedController {
@RequestMapping("/delCourseTaihumed")
public R delCourseTaihumed(@RequestBody Map<String,Object> params){
//查看下一级是否存在
int count = courseTaihumedService.count(new LambdaQueryWrapper<CourseTaihumed>()
Long count = courseTaihumedService.count(new LambdaQueryWrapper<CourseTaihumed>()
.eq(CourseTaihumed::getPid, params.get("id")));
if(count>0){
return R.error(501,"删除失败,请先删除子项目后再尝试");
@@ -86,7 +84,7 @@ public class CourseTaihumedController {
}
}
if(old.getIsLast()==1&& courseTaihumed.getIsLast()==0){
Integer integer = courseToTaihumedService.count(new LambdaQueryWrapper<CourseToTaihumed>()
Long integer = courseToTaihumedService.count(new LambdaQueryWrapper<CourseToTaihumed>()
.eq(CourseToTaihumed::getTaihumedId, courseTaihumed.getId()));
if(integer>0){
return R.error(502,"更新失败,请先把此项与课程的关联关系清空后才可把此标签变成普通标签");

View File

@@ -76,7 +76,7 @@ public class OfflineActivityController {
@RequestMapping("/updateOfflineActivity")
public R updateOfflineActivity(@RequestBody OfflineActivity offlineActivity) {
int count = toUserService.count(new LambdaQueryWrapper<OfflineActivityToUser>()
Long count = toUserService.count(new LambdaQueryWrapper<OfflineActivityToUser>()
.eq(OfflineActivityToUser::getActivityId,offlineActivity.getId()));
if (count > 0) {
return R.error("已有人报名禁止修改");
@@ -87,7 +87,7 @@ public class OfflineActivityController {
@RequestMapping("/delOfflineActivity")
public R delOfflineActivity(@RequestBody Map<String,Object> params) {
int count = toUserService.count(new LambdaQueryWrapper<OfflineActivityToUser>()
Long count = toUserService.count(new LambdaQueryWrapper<OfflineActivityToUser>()
.eq(OfflineActivityToUser::getActivityId,params.get("id").toString()));
if (count > 0) {
return R.error("已有人报名禁止删除");

View File

@@ -76,7 +76,7 @@ public class TaihuTalentController {
if(one != null){
return R.error(501,"绑定失败,绑定关系已将存在");
}
int count = courseToTalentService.count(new LambdaQueryWrapper<CourseToTalent>()
Long count = courseToTalentService.count(new LambdaQueryWrapper<CourseToTalent>()
.eq(CourseToTalent::getCourseId, courseToTalent.getCourseId()));
List<CourseToTaihumed> ctts = courseToTaihumedService.list(new LambdaQueryWrapper<CourseToTaihumed>()
.eq(CourseToTaihumed::getCourseId,courseToTalent.getCourseId()));

View File

@@ -20,7 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;

View File

@@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
@@ -224,7 +224,7 @@ public class UserCertificateController {
}
}
if(oldLabel.getIsLast()==1&& label.getIsLast()==0){
Integer integer = userCertificateService.count(new LambdaQueryWrapper<UserCertificate>()
Long integer = userCertificateService.count(new LambdaQueryWrapper<UserCertificate>()
.eq(UserCertificate::getLabelId, label.getId()));
if(integer>0){
return R.error("更新失败,标签下存在证书");
@@ -238,13 +238,13 @@ public class UserCertificateController {
@RequestMapping("/delUserCertificateLabel")
public R delUserCertificateLabel(@RequestBody Map<String,Object> params) {
//查看下一级是否存在
int count = userCertificateLabelService.count(new LambdaQueryWrapper<UserCertificateLabel>()
Long count = userCertificateLabelService.count(new LambdaQueryWrapper<UserCertificateLabel>()
.eq(UserCertificateLabel::getPid, params.get("id")));
if(count>0){
return R.error("删除失败,请先删除子项目后再尝试");
}
//查看绑定关系是否存在
Integer integer = userCertificateService.count(new LambdaQueryWrapper<UserCertificate>()
Long integer = userCertificateService.count(new LambdaQueryWrapper<UserCertificate>()
.eq(UserCertificate::getLabelId, params.get("id")));
if(integer>0){
return R.error("删除失败,标签下存在证书");

View File

@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.net.URLEncoder;
@@ -79,7 +79,7 @@ public class UserContributionController {
@RequestMapping("/delUserContributionLabelList")
public R delUserContributionLabelList(@RequestBody Map<String, Object> params) {
SysDictDataEntity sysDictDataEntity = sysDictDataService.getById(params.get("id").toString());
int count = contributionService.count(new LambdaQueryWrapper<UserContribution>()
Long count = contributionService.count(new LambdaQueryWrapper<UserContribution>()
.eq(UserContribution::getType,sysDictDataEntity.getDictType()));
if (count > 0){
return R.error("已存在湖分记录");

View File

@@ -14,7 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.transaction.Transactional;
import jakarta.transaction.Transactional;
import java.math.BigDecimal;
import java.util.*;

View File

@@ -19,7 +19,6 @@ import com.peanut.modules.master.service.CourseCatalogueChapterVideoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
@Slf4j
@@ -109,7 +108,7 @@ public class CourseCatalogueChapterVideoServiceImpl extends ServiceImpl<CourseCa
GetVideoPlayAuthResponse p = SpdbUtil.getPlayAuth(video.getVideo());
String playAuth = p.getBody().getPlayAuth();
video.setPlayAuth(playAuth);
Integer integer = videoM3u8Dao.selectCount(new LambdaQueryWrapper<VideoM3u8Entity>().eq(VideoM3u8Entity::getVid, video.getVideo()));
Integer integer = videoM3u8Dao.selectCount(new LambdaQueryWrapper<VideoM3u8Entity>().eq(VideoM3u8Entity::getVid, video.getVideo())).intValue();
if(integer>0){
String s = playToken.generateToken();
GetPlayInfoResponseBody urlBody = SpdbUtil.getUrl(video.getVideo());
@@ -206,7 +205,7 @@ public class CourseCatalogueChapterVideoServiceImpl extends ServiceImpl<CourseCa
wrapper.eq(UserCourseBuyEntity::getCatalogueId,courseCatalogueEntity.getId());
wrapper.and(i -> i.apply("end_time IS NULL OR end_time > {0}", new Date()));
// wrapper.and(r->r.isNull(UserCourseBuyEntity::getEndTime).or().gt(UserCourseBuyEntity::getEndTime,new Date()));
Integer integer = userCourseBuyDao.selectCount(wrapper);
Integer integer = userCourseBuyDao.selectCount(wrapper).intValue();
return integer>0;
}
}

View File

@@ -11,7 +11,6 @@ import com.peanut.modules.master.service.CourseCatalogueService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@@ -54,19 +53,19 @@ public class CourseCatalogueServiceImpl extends ServiceImpl<CourseCatalogueDao,
@Override
public R delCourseCatalogue(int id) {
Integer integer = courseCatalogueChapterDao.selectCount(new LambdaQueryWrapper<CourseCatalogueChapterEntity>().eq(CourseCatalogueChapterEntity::getCatalogueId, id));
Integer integer = courseCatalogueChapterDao.selectCount(new LambdaQueryWrapper<CourseCatalogueChapterEntity>().eq(CourseCatalogueChapterEntity::getCatalogueId, id)).intValue();
if(integer>0){
return R.error(502,"删除失败,请先清空章节");
}
LambdaQueryWrapper<UserCourseBuyEntity> userCourseBuyEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
userCourseBuyEntityLambdaQueryWrapper.eq(UserCourseBuyEntity::getCatalogueId,id);
userCourseBuyEntityLambdaQueryWrapper.gt(UserCourseBuyEntity::getEndTime,new Date());
Integer integer1 = userCourseBuyDao.selectCount(userCourseBuyEntityLambdaQueryWrapper);
Integer integer1 = userCourseBuyDao.selectCount(userCourseBuyEntityLambdaQueryWrapper).intValue();
if(integer1>0){
return R.error(502,"删除失败,有人已购买此课程");
}
Integer integer2 = shopProductCourseDao.selectCount(new LambdaQueryWrapper<ShopProductCourseEntity>().eq(ShopProductCourseEntity::getCatalogueId, id));
Integer integer2 = shopProductCourseDao.selectCount(new LambdaQueryWrapper<ShopProductCourseEntity>().eq(ShopProductCourseEntity::getCatalogueId, id)).intValue();
if(integer2>0){
return R.error(503,"删除失败,有商品已绑定此课程,请解绑或删除后再操作");
}
@@ -96,7 +95,7 @@ public class CourseCatalogueServiceImpl extends ServiceImpl<CourseCatalogueDao,
return R.error("价格异常");
}
Integer integer = shopProductCourseDao.selectCount(new LambdaQueryWrapper<ShopProductCourseEntity>()
.eq(ShopProductCourseEntity::getCatalogueId, byId.getId()));
.eq(ShopProductCourseEntity::getCatalogueId, byId.getId())).intValue();
if(integer>1){
return R.error("生成失败已存在商品数量大于等于2快捷生成商品不可用");
}

View File

@@ -13,7 +13,6 @@ import com.peanut.modules.master.service.CourseMedicalService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@@ -33,7 +32,7 @@ public class CourseMedicineServiceImpl extends ServiceImpl<CourseMedicineDao, Co
@Override
public R delCourseMedical(int id) {
//查看下一级是否存在
int count = this.count(new LambdaQueryWrapper<CourseMedicine>().eq(CourseMedicine::getPid, id));
Long count = this.count(new LambdaQueryWrapper<CourseMedicine>().eq(CourseMedicine::getPid, id));
if(count>0){
return R.error(501,"删除失败,请先删除子项目后再尝试");
}
@@ -62,7 +61,7 @@ public class CourseMedicineServiceImpl extends ServiceImpl<CourseMedicineDao, Co
}
}
if(old.getIsLast()==1&& courseMedicine.getIsLast()==0){
Integer integer = toMedicalDao.selectCount(new LambdaQueryWrapper<CourseToMedicine>().eq(CourseToMedicine::getMedicalId, courseMedicine.getId()));
Integer integer = toMedicalDao.selectCount(new LambdaQueryWrapper<CourseToMedicine>().eq(CourseToMedicine::getMedicalId, courseMedicine.getId())).intValue();
if(integer>0){
return R.error(502,"更新失败,请先把此项与课程的关联关系清空后才可把此标签变成普通标签");
}

View File

@@ -11,7 +11,6 @@ import com.peanut.modules.common.dao.*;
import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.to.ParamTo;
import com.peanut.modules.master.service.CourseService;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -105,7 +104,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseDao, CourseEntity> impl
@Override
public R delCourse(int id) {
Integer integer = courseCatalogueDao.selectCount(new LambdaQueryWrapper<CourseCatalogueEntity>().eq(CourseCatalogueEntity::getCourseId, id));
Integer integer = courseCatalogueDao.selectCount(new LambdaQueryWrapper<CourseCatalogueEntity>().eq(CourseCatalogueEntity::getCourseId, id)).intValue();
if (integer>0){
return R.error(501,"请先删除目录后再删除!");
}

View File

@@ -13,7 +13,6 @@ import com.peanut.modules.master.service.CourseSociologyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@@ -33,7 +32,7 @@ public class CourseSociologyServiceImpl extends ServiceImpl<CourseSociologyDao,
@Override
public R delCourseSociology(int id) {
//查看下一级是否存在
int count = this.count(new LambdaQueryWrapper<CourseSociologyEntity>().eq(CourseSociologyEntity::getPid, id));
Long count = this.count(new LambdaQueryWrapper<CourseSociologyEntity>().eq(CourseSociologyEntity::getPid, id));
if(count>0){
return R.error(501,"删除失败,请先删除子项目后再尝试");
}

View File

@@ -83,7 +83,7 @@ public class ShopProductServiceImpl extends ServiceImpl<ShopProductDao, ShopProd
public void bindProductAndBookLabel(String[] productIds, Integer labelId) {
for (String id:productIds){
//check
Integer integer = shopProductToBookLabelDao.selectCount(new LambdaQueryWrapper<ShopProductToBookLabel>().eq(ShopProductToBookLabel::getProductId, Integer.valueOf(id)).eq(ShopProductToBookLabel::getBookLabelId, labelId));
Integer integer = shopProductToBookLabelDao.selectCount(new LambdaQueryWrapper<ShopProductToBookLabel>().eq(ShopProductToBookLabel::getProductId, Integer.valueOf(id)).eq(ShopProductToBookLabel::getBookLabelId, labelId)).intValue();
if(integer>0){
continue;
}
@@ -102,7 +102,7 @@ public class ShopProductServiceImpl extends ServiceImpl<ShopProductDao, ShopProd
@Override
public void bindProductAndBookMarket(String[] productIds, Integer marketId) {
for (String p:productIds){
Integer integer = shopProductToBookMarketDao.selectCount(new LambdaQueryWrapper<ShopProductToBookMarket>().eq(ShopProductToBookMarket::getProductId, Integer.valueOf(p)).eq(ShopProductToBookMarket::getBookMarketId, marketId));
Integer integer = shopProductToBookMarketDao.selectCount(new LambdaQueryWrapper<ShopProductToBookMarket>().eq(ShopProductToBookMarket::getProductId, Integer.valueOf(p)).eq(ShopProductToBookMarket::getBookMarketId, marketId)).intValue();
if(integer>0){
continue;
}
@@ -121,7 +121,7 @@ public class ShopProductServiceImpl extends ServiceImpl<ShopProductDao, ShopProd
@Override
public void bindProductAndSociologyLabel(String[] productIds, Integer labelId) {
for (String p : productIds){
Integer integer = shopProductToSociologyLabelDao.selectCount(new LambdaQueryWrapper<ShopProductToSociologyLabel>().eq(ShopProductToSociologyLabel::getProductId, Integer.valueOf(p)).eq(ShopProductToSociologyLabel::getSociologyLabelId, labelId));
Integer integer = shopProductToSociologyLabelDao.selectCount(new LambdaQueryWrapper<ShopProductToSociologyLabel>().eq(ShopProductToSociologyLabel::getProductId, Integer.valueOf(p)).eq(ShopProductToSociologyLabel::getSociologyLabelId, labelId)).intValue();
if(integer>0){
continue;
}
@@ -140,7 +140,7 @@ public class ShopProductServiceImpl extends ServiceImpl<ShopProductDao, ShopProd
@Override
public void bindProductAndSociologyMarket(String[] productId, int marketId) {
for (String p:productId){
Integer integer = shopProductToSociologyMarketDao.selectCount(new LambdaQueryWrapper<ShopProductToSociologyMarket>().eq(ShopProductToSociologyMarket::getProductId, Integer.valueOf(p)).eq(ShopProductToSociologyMarket::getSociologyMarketId, marketId));
Integer integer = shopProductToSociologyMarketDao.selectCount(new LambdaQueryWrapper<ShopProductToSociologyMarket>().eq(ShopProductToSociologyMarket::getProductId, Integer.valueOf(p)).eq(ShopProductToSociologyMarket::getSociologyMarketId, marketId)).intValue();
if(integer>0){
continue;
}
@@ -160,7 +160,7 @@ public class ShopProductServiceImpl extends ServiceImpl<ShopProductDao, ShopProd
@Override
public void bindProductAndPsycheLabel(String[] productIds, Integer labelId) {
for (String p : productIds){
Integer integer = shopProductToPsycheLabelDao.selectCount(new LambdaQueryWrapper<ShopProductToPsycheLabel>().eq(ShopProductToPsycheLabel::getProductId, Integer.valueOf(p)).eq(ShopProductToPsycheLabel::getPsycheLabelId, labelId));
Integer integer = shopProductToPsycheLabelDao.selectCount(new LambdaQueryWrapper<ShopProductToPsycheLabel>().eq(ShopProductToPsycheLabel::getProductId, Integer.valueOf(p)).eq(ShopProductToPsycheLabel::getPsycheLabelId, labelId)).intValue();
if(integer>0){
continue;
}
@@ -179,7 +179,7 @@ public class ShopProductServiceImpl extends ServiceImpl<ShopProductDao, ShopProd
@Override
public void bindProductAndPsycheMarket(String[] productId, int marketId) {
for (String p:productId){
Integer integer = shopProductToPsycheMarketDao.selectCount(new LambdaQueryWrapper<ShopProductToPsycheMarket>().eq(ShopProductToPsycheMarket::getProductId, Integer.valueOf(p)).eq(ShopProductToPsycheMarket::getPsycheMarketId, marketId));
Integer integer = shopProductToPsycheMarketDao.selectCount(new LambdaQueryWrapper<ShopProductToPsycheMarket>().eq(ShopProductToPsycheMarket::getProductId, Integer.valueOf(p)).eq(ShopProductToPsycheMarket::getPsycheMarketId, marketId)).intValue();
if(integer>0){
continue;
}
@@ -198,7 +198,7 @@ public class ShopProductServiceImpl extends ServiceImpl<ShopProductDao, ShopProd
@Override
public void bindProductAndMedicineLabel(String[] productId, int labelId) {
for (String p : productId){
Integer integer = shopProductToMedicineLabelDao.selectCount(new LambdaQueryWrapper<ShopProductToMedicineLabel>().eq(ShopProductToMedicineLabel::getProductId, Integer.valueOf(p)).eq(ShopProductToMedicineLabel::getMedicineLabelId, labelId));
Integer integer = shopProductToMedicineLabelDao.selectCount(new LambdaQueryWrapper<ShopProductToMedicineLabel>().eq(ShopProductToMedicineLabel::getProductId, Integer.valueOf(p)).eq(ShopProductToMedicineLabel::getMedicineLabelId, labelId)).intValue();
if(integer>0){
continue;
}
@@ -217,7 +217,7 @@ public class ShopProductServiceImpl extends ServiceImpl<ShopProductDao, ShopProd
@Override
public void bindProductAndMedicineMarket(String[] productId, int marketId) {
for (String p:productId){
Integer integer = shopProductToMedicineMarketDao.selectCount(new LambdaQueryWrapper<ShopProductToMedicineMarket>().eq(ShopProductToMedicineMarket::getProductId, Integer.valueOf(p)).eq(ShopProductToMedicineMarket::getMedicineMarketId, marketId));
Integer integer = shopProductToMedicineMarketDao.selectCount(new LambdaQueryWrapper<ShopProductToMedicineMarket>().eq(ShopProductToMedicineMarket::getProductId, Integer.valueOf(p)).eq(ShopProductToMedicineMarket::getMedicineMarketId, marketId)).intValue();
if(integer>0){
continue;
}
@@ -256,7 +256,7 @@ public class ShopProductServiceImpl extends ServiceImpl<ShopProductDao, ShopProd
@Override
public R bindProductAndBook(int productId, int bookId) {
Integer integer = shopProductBookDao.selectCount(new LambdaQueryWrapper<ShopProductBookEntity>().eq(ShopProductBookEntity::getProductId, productId).eq(ShopProductBookEntity::getBookId, bookId));
Integer integer = shopProductBookDao.selectCount(new LambdaQueryWrapper<ShopProductBookEntity>().eq(ShopProductBookEntity::getProductId, productId).eq(ShopProductBookEntity::getBookId, bookId)).intValue();
if(integer>0){
return R.error("重复绑定");
}
@@ -306,7 +306,7 @@ public class ShopProductServiceImpl extends ServiceImpl<ShopProductDao, ShopProd
@Override
public R bindProductAndCourse(ShopProductCourseEntity shopProductCourseEntity) {
Integer integer = shopProductCourseDao.selectCount(new LambdaQueryWrapper<ShopProductCourseEntity>().eq(ShopProductCourseEntity::getProductId, shopProductCourseEntity.getProductId()).eq(ShopProductCourseEntity::getCourseId, shopProductCourseEntity.getCourseId()));
Integer integer = shopProductCourseDao.selectCount(new LambdaQueryWrapper<ShopProductCourseEntity>().eq(ShopProductCourseEntity::getProductId, shopProductCourseEntity.getProductId()).eq(ShopProductCourseEntity::getCourseId, shopProductCourseEntity.getCourseId())).intValue();
if(integer>0){
return R.error("不可重复绑定");
}
@@ -329,7 +329,7 @@ public class ShopProductServiceImpl extends ServiceImpl<ShopProductDao, ShopProd
LambdaQueryWrapper<BuyOrder> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BuyOrder::getProductId,productId);
wrapper.in(BuyOrder::getOrderType,Arrays.asList(0,1,2));
Integer integer = buyOrderDao.selectCount(wrapper);
Integer integer = buyOrderDao.selectCount(wrapper).intValue();
if(integer>0){
return R.error(505,"删除失败,有人下单,且订单未完成");
}

View File

@@ -20,7 +20,7 @@ public class ShopStoreServiceImpl extends ServiceImpl<ShopStoreDao, ShopStore> i
@Override
public R delStore(int id) {
Integer integer = shopStoreToProductDao.selectCount(new LambdaQueryWrapper<ShopStoreToProductEntity>().eq(ShopStoreToProductEntity::getStoreId, id));
Integer integer = shopStoreToProductDao.selectCount(new LambdaQueryWrapper<ShopStoreToProductEntity>().eq(ShopStoreToProductEntity::getStoreId, id)).intValue();
if(integer>0){
return R.error("请先清空后,再操作");
}

View File

@@ -102,7 +102,7 @@ public class UserCourseBuyServiceImpl extends ServiceImpl<UserCourseBuyDao, User
for (String s : cata) {
int check = this.getBaseMapper().selectCount(new LambdaQueryWrapper<UserCourseBuyEntity>()
.eq(UserCourseBuyEntity::getCatalogueId, s)
.eq(UserCourseBuyEntity::getUserId, m.getId()));
.eq(UserCourseBuyEntity::getUserId, m.getId())).intValue();
if (check > 0) {
AddCoursesFrag addCoursesFrag = new AddCoursesFrag();
addCoursesFrag.setUserId(m.getId());

View File

@@ -119,7 +119,7 @@ public class CourseMedicalServiceImpl extends ServiceImpl<CourseMedicineDao, Cou
if (userVip==null){
Integer i = userCourseBuyDao.selectCount(new LambdaQueryWrapper<UserCourseBuyEntity>()
.eq(UserCourseBuyEntity::getCatalogueId, cc.getId())
.eq(UserCourseBuyEntity::getUserId, ShiroUtils.getUId()));
.eq(UserCourseBuyEntity::getUserId, ShiroUtils.getUId())).intValue();
cc.setIsBuy(i>0?1:0);
}else {
cc.setIsBuy(1);

View File

@@ -94,7 +94,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseDao, CourseEntity> impl
public R addUserCourseStudying(UserCourseStudying userCourseStudying) {
int isExist = studyingDao.selectCount(new LambdaQueryWrapper<UserCourseStudying>()
.eq(UserCourseStudying::getUserId,userCourseStudying.getUserId())
.eq(UserCourseStudying::getCourseId,userCourseStudying.getCourseId()));
.eq(UserCourseStudying::getCourseId,userCourseStudying.getCourseId())).intValue();
if (isExist>0){
return R.error("已存在");
}else {
@@ -209,7 +209,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseDao, CourseEntity> impl
for (CourseEntity co:courseEntities){
int i = studyingDao.selectCount(new LambdaQueryWrapper<UserCourseStudying>()
.eq(UserCourseStudying::getCourseId,co.getId())
.eq(UserCourseStudying::getUserId,ShiroUtils.getUId()));
.eq(UserCourseStudying::getUserId,ShiroUtils.getUId())).intValue();
co.setIsStudying(i>0?1:0);
MPJLambdaWrapper<CourseCatalogueEntity> catalogueWrapper = new MPJLambdaWrapper();
catalogueWrapper.eq(CourseCatalogueEntity::getCourseId, co.getId());
@@ -269,7 +269,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseDao, CourseEntity> impl
if (userVip == null) {
int ucb = userCourseBuyDao.selectCount(new LambdaQueryWrapper<UserCourseBuyEntity>()
.eq(UserCourseBuyEntity::getUserId,param.get("userId"))
.eq(UserCourseBuyEntity::getCatalogueId,c.get("catalogueId")));
.eq(UserCourseBuyEntity::getCatalogueId,c.get("catalogueId"))).intValue();
if (ucb == 0) {
res.add(c);
}

View File

@@ -33,8 +33,8 @@ public class VipBuyConfigServiceImpl extends ServiceImpl<VipBuyConfigDao, VipBuy
public R getVipProductForUser() {
int uid = ShiroUtils.getUId();
MyUserEntity userEntity = myUserDao.selectById(uid);
Integer chaoCount = userVipDao.selectCount(new LambdaQueryWrapper<UserVip>().eq(UserVip::getUserId, uid).eq(UserVip::getType, 1).gt(UserVip::getEndTime,new Date()).eq(UserVip::getState,0));
Integer medicalCount = userVipDao.selectCount(new LambdaQueryWrapper<UserVip>().eq(UserVip::getUserId, uid).eq(UserVip::getType, 2).gt(UserVip::getEndTime, new Date()).eq(UserVip::getState, 0));
Integer chaoCount = userVipDao.selectCount(new LambdaQueryWrapper<UserVip>().eq(UserVip::getUserId, uid).eq(UserVip::getType, 1).gt(UserVip::getEndTime,new Date()).eq(UserVip::getState,0)).intValue();
Integer medicalCount = userVipDao.selectCount(new LambdaQueryWrapper<UserVip>().eq(UserVip::getUserId, uid).eq(UserVip::getType, 2).gt(UserVip::getEndTime, new Date()).eq(UserVip::getState, 0)).intValue();
//获取超v列表
LambdaQueryWrapper<VipBuyConfigEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.in(VipBuyConfigEntity::getType,userEntity.getVip().equals("1")||userEntity.getVip().equals("3")? Collections.singletonList(1): Arrays.asList(1,2));

View File

@@ -80,7 +80,7 @@ public class CommonConsumer {
for (CourseCatalogueEntity catalog:catalogues){
int ucbCount = userCourseBuyDao.selectCount(new LambdaQueryWrapper<UserCourseBuyEntity>()
.eq(UserCourseBuyEntity::getUserId,user.getId())
.eq(UserCourseBuyEntity::getCatalogueId,catalog.getId()));
.eq(UserCourseBuyEntity::getCatalogueId,catalog.getId())).intValue();
if (ucbCount == 0){
Map<String,Object> map = new HashMap<>();
map.put("classId",classEntity.getId());

View File

@@ -16,8 +16,8 @@ import lombok.Data;
import org.hibernate.validator.constraints.Range;
import org.hibernate.validator.constraints.URL;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.io.Serializable;
/**

View File

@@ -3,20 +3,15 @@ package com.peanut.modules.oss.controller;
import com.peanut.common.utils.R;
import com.peanut.modules.oss.service.OssService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.UUID;
@Slf4j
@RestController
@RequestMapping("/oss/fileoss")
@CrossOrigin
@Api("oss")
public class OssController {
@Autowired
@@ -24,7 +19,6 @@ public class OssController {
//上传头像的方法
@PostMapping
@ApiOperation("上传")
public R uploadOssFile(MultipartFile file) {
//获取上传文件 MultipartFile
@@ -34,7 +28,6 @@ public class OssController {
}
@PostMapping("/uploadFileSchedule")
@ApiOperation("上传带进度条")
public R uploadFileSchedule(@RequestParam("file") MultipartFile file,@RequestParam("uid") String uid) {
String url = ossService.uploadFileSchedule(file,uid);
return R.ok().put("url",url);

View File

@@ -3,7 +3,7 @@ package com.peanut.modules.pay.IOSPay.model.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import javax.persistence.Column;
import jakarta.persistence.Column;
import java.io.Serializable;
@Data

View File

@@ -2,13 +2,6 @@ package com.peanut.modules.pay.IOSPay.model.entities;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.Value;
import org.joda.time.DateTime;
import javax.persistence.Column;
import javax.persistence.Id;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

View File

@@ -10,7 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.util.Map;
@@ -41,7 +41,6 @@ public class AliPayController {
@RequestMapping( "/notify")
public R notify_url(HttpServletRequest request) {
Map<String, String[]> parameterMap = request.getParameterMap();
String jsonStr = JSONObject.toJSONString(parameterMap);
String aliNotify = aliPayService.aliNotify(request);
return R.ok().put("aliNotify",aliNotify);
}

View File

@@ -3,8 +3,7 @@ package com.peanut.modules.pay.alipay.service;
import com.peanut.modules.pay.alipay.dto.AlipayDTO;
import com.peanut.modules.pay.alipay.dto.ReFundDTO;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.util.Map;

View File

@@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.common.utils.CopyUtils;
import com.peanut.common.utils.OrderUtils;
import com.peanut.common.utils.ShiroUtils;
import com.peanut.modules.book.service.BookBuyConfigService;
import com.peanut.modules.book.service.BuyOrderService;
import com.peanut.modules.book.service.MyUserService;
@@ -32,7 +31,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;

View File

@@ -1,150 +0,0 @@
package com.peanut.modules.pay.applePay.controller;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.peanut.common.utils.R;
import com.peanut.modules.pay.applePay.service.ApplePayService;
import com.peanut.modules.pay.applePay.utils.ApplePayUtil;
import com.peanut.modules.pay.applePay.utils.IPayNotifyPo;
import com.peanut.modules.pay.IOSPay.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Slf4j
@RestController
@Api(tags = {"苹果内购"})
@RequestMapping(value = "/apple")
public class ApplePayController {
@Autowired
ApplePayService applePayService;
@Autowired
ApplePayUtil applePayUtil;
/**
* @param :TransactionID订单号
* @param :receipt订单加密收据
* @Description: Ios客户端内购支付
*/
// @PostMapping 文档显示都是post请求
@RequestMapping("/applePay")
public R doIosRequest(@RequestParam("receipt") String receipt, @RequestParam("TransactionID") String TransactionID) {
String verifyResult = applePayUtil.buyAppVerify(receipt, 0);
//苹果服务器没有返回验证结果
if (verifyResult == null) {
return R.error(500,"服务器未接收到验证结果!");
// return Result.failed(ResultCode.APPLE_NULL);
} else {
//
// return applePayService.getAppPay(verifyResult, TransactionID);
return R.ok();
// return applePayService.doIosRequest(TransactionID,receipt,userId);
}
}
/**
* IOS支付成功后通过APP回调服务器
*
* @param iPayNotifyPo
* @return
*/
@ApiOperation("ios支付成功后验证结果")
@RequestMapping(value = "iPayNotify/", method = RequestMethod.POST)
@ResponseBody
public Result<Object> iPayNotify(@RequestBody IPayNotifyPo iPayNotifyPo) {
log.info("ios支付成功后验证结果[前端传递的ios支付参数:{}]", iPayNotifyPo.toString());
// System.out.println("支付");
String receipt = iPayNotifyPo.getTransactionReceipt();
// 拿到收据的MD5
String receiptMd5 = SecureUtil.md5(receipt);
// 查询数据库,看是否是己经验证过的该支付收据
// boolean existsIOSReceipt = paymentService.isExistsIOSReceipt(receiptMd5);
// if (existsIOSReceipt) {
// return Result.error("该充值已完成");
// }
// 1.先线上测试 发送平台验证
String verifyResult = ApplePayUtil.buyAppVerify(receipt, 0);
log.info("1苹果返回的参数:{}]", verifyResult);
if (verifyResult == null) {
// 苹果服务器没有返回验证结果
log.info("苹果服务器没有返回验证结果");
return Result.error("订单没有找到");
} else {
// 苹果验证有返回结果
JSONObject job = JSONUtil.parseObj(verifyResult);
log.info("2[苹果验证返回的json串:{}]", job.toString());
String states = job.getStr("status");
if ("21007".equals(states)) {
log.debug("是沙盒环境,应沙盒测试,否则执行下面");
// 是沙盒环境,应沙盒测试,否则执行下面
// 2.再沙盒测试 发送平台验证
verifyResult = ApplePayUtil.buyAppVerify(receipt, 0);
job = JSONUtil.parseObj(verifyResult);
log.debug("3沙盒环境验证返回的json字符串=" + job.toString());
states = job.getStr("status");
}
if ("0".equals(states)) { // 前端所提供的收据是有效的 验证成功
log.debug("前端所提供的收据是有效的 验证成功");
String r_receipt = job.getStr("receipt");
JSONObject returnJson = JSONUtil.parseObj(r_receipt);
String in_app = returnJson.getStr("in_app");
/**
* in_app说明
* 验证票据返回的receipt里面的in_app字段这个字段包含了所有你未完成交易的票据信息。也就是在上面说到的APP完成交易之后这个票据信息就会从in_app中消失。
* 如果APP不完成交易这个票据信息就会在in_app中一直保留。(这个情况可能仅限于你的商品类型为消耗型)
*
* 知道了事件的原委就很好优化解决了方案有2个
* 1.对票据返回的in_app数据全部进行处理没有充值的全部进行充值
* 2.仅对最新的充值信息进行处理(我们采取的方案)
*
* 因为采用一方案:
* 如果用户仅进行了一次充值,该充值未到账,他不再进行充值了,那么会无法导致。
* 如果他通过客服的途径已经进行了补充充值,那么他在下一次充值的时候依旧会把之前的产品票据带回,这时候有可能出现重复充值的情况
*
* 以上说明是我在网上找到的,可以查看原文
* https://www.cnblogs.com/widgetbox/p/8241333.html
*/
JSONArray jsonArray = JSONUtil.parseArray(in_app);
if (jsonArray.size() > 0) {
int index = 0;
JSONObject o = JSONUtil.parseObj(jsonArray.get(index));
String transaction_id = o.getStr("transaction_id"); // 订单号
String product_id = o.getStr("product_id"); // 产品id也就是支付金额
String purchase_date_ms = o.getStr("purchase_date_ms"); // 支付时间
//
// // 添加支付金额
// Result<Object> iosChargeSuccess = paymentService.iosChargeSuccess(transaction_id, product_id, purchase_date_ms, receiptMd5, iPayNotifyPo.getMoneyId(), iPayNotifyPo.getUserId());
// int i =0;
// int a = 0;
// if (iosChargeSuccess.getCode().equals(200)){
// i = paymentService.updateCurrentState(iPayNotifyPo.getPayId(),iPayNotifyPo.getUserId(),a);
// }else {
// a = 1;
// i = paymentService.updateCurrentState(iPayNotifyPo.getPayId(),iPayNotifyPo.getUserId(),a);
// }
//
// return iosChargeSuccess;
}
} else {
return Result.error("收到数据有误");
}
}
return Result.ok();
}
}

View File

@@ -1,134 +0,0 @@
package com.peanut.modules.pay.applePay.controller;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.RestController;
/**
* @author :
* @date :
* @Version: 1.0
* @Desc : 苹果支付 参考地址https://www.cnblogs.com/shoshana-kong/p/10991753.html
* sendHttpsCoon 方法里面包含了增加的业务逻辑
* 本类引入多种的Json序列化工具选择了Hutool
*/
@Slf4j
@RestController
@RequestMapping("iap")
public class IapController {
//购买凭证验证地址
private static final String certificateUrl = "https://buy.itunes.apple.com/verifyReceipt";
//测试的购买凭证验证地址
private static final String certificateUrlTest = "https://sandbox.itunes.apple.com/verifyReceipt";
/**
* 重写X509TrustManager
*/
private static TrustManager myX509TrustManager = new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
};
/**
* 接收iOS端发过来的购买凭证
* @param userId
* @param receipt
* @param chooseEnv
*/
@RequestMapping("/setIapCertificate")
public String setIapCertificate(String userId, String receiptData, boolean chooseEnv){
if(StringUtils.isEmpty(userId) || StringUtils.isEmpty(receiptData)){
return null;
}
String url = null;
url = chooseEnv == true? certificateUrl:certificateUrlTest;
final String certificateCode = receiptData;
if(StringUtils.isNotEmpty(certificateCode)){
return sendHttpsCoon(url, certificateCode);
}else{
return null;
}
}
/**
* 发送请求
* @param url
* @param strings
* @return
*/
private String sendHttpsCoon(String url, String code){
if(url.isEmpty()){
return null;
}
try {
//设置SSLContext
SSLContext ssl = SSLContext.getInstance("SSL");
ssl.init(null, new TrustManager[]{myX509TrustManager}, null);
//打开连接
HttpsURLConnection conn = (HttpsURLConnection) new URL(url).openConnection();
//设置套接工厂
conn.setSSLSocketFactory(ssl.getSocketFactory());
//加入数据
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-type","application/json");
JSONObject obj = new JSONObject();
obj.put("receipt-data", code);
BufferedOutputStream buffOutStr = new BufferedOutputStream(conn.getOutputStream());
buffOutStr.write(obj.toString().getBytes());
buffOutStr.flush();
buffOutStr.close();
//获取输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = null;
StringBuffer sb = new StringBuffer();
while((line = reader.readLine())!= null){
sb.append(line);
}
return sb.toString();
} catch (Exception e) {
return null;
}
}
}

View File

@@ -1,35 +0,0 @@
package com.peanut.modules.pay.applePay.service;
import com.peanut.modules.pay.IOSPay.Result;
import org.springframework.stereotype.Service;
@Service
public interface ApplePayService {
/**
* 看是否是己经验证过的该支付收据
* @param receiptMd5
* @return
*/
public boolean isExistsIOSReceipt(String receiptMd5);
int updateCurrentState(String payId, String userId, int a);
/**
* IOS支付
* @param transaction_id 订单号
* @param product_id 产品id也就是支付金额
* @param purchase_date_ms 支付时间
* @param receiptMd5 拿到收据的MD5
* @param moneyId 金额id
*/
Result<Object> iosChargeSuccess(String transaction_id, String product_id, String purchase_date_ms, String receiptMd5, String moneyId, String userId);
// R getAppPay(String verifyResult, String transactionID);
}

View File

@@ -1,161 +0,0 @@
package com.peanut.modules.pay.applePay.service.impl;
import com.peanut.common.utils.DateUtils;
import com.peanut.modules.book.service.*;
import com.peanut.modules.pay.IOSPay.Result;
import com.peanut.modules.pay.applePay.service.ApplePayService;
import com.peanut.modules.pay.applePay.utils.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
@Service("ApplePayService")
@Slf4j
@AllArgsConstructor
public class ApplePayServiceImpl implements ApplePayService {
// 日志记录系统支付模块记录日志信息输出到sys-pay
private static final Logger logger = LoggerFactory.getLogger("sys-pay");
@Autowired
private MyUserService userService;
@Autowired
private BuyOrderService buyOrderService;
@Autowired
private TransactionDetailsService transactionDetailsService;
@Autowired
private ApplePayUtil applePayUtil;
@Autowired
private BookBuyConfigService bookBuyConfigService;
@Autowired
private PayPaymentOrderService payPaymentOrderService;
@Autowired
public static final String TRADE_TYPE_APP = "APP";
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public boolean isExistsIOSReceipt(String receiptMd5) {
return false;
}
@Resource
private TsBillMapper tsBillMapper;
/**
* 支付成功之后将当前订单的状态改为1
*
* @param payId
* @param userId
* @param a
* @return
*/
@Override
public int updateCurrentState(String payId, String userId, int a) {
return 0;
}
/**
* IOS支付
* @param transaction_id 订单号
* @param product_id 产品id也就是支付金额
* @param purchase_date_ms 支付时间
* @param receiptMd5 拿到收据的MD5
* @param moneyId 金额id
*/
@Override
public Result<Object> iosChargeSuccess(String transaction_id, String product_id, String purchase_date_ms, String receiptMd5, String moneyId, String userId) {
/**
* IOS支付
* @param transaction_id 订单号
* @param product_id 产品id也就是支付金额
* @param purchase_date_ms 支付时间
* @param receiptMd5 拿到收据的MD5
* @param moneyId 金额id
*/
try {
List<Map<String, Object>> queryForList = jdbcTemplate.queryForList("SELECT id,showcoin_num,give_showcoin_num,rmb_price from tsm_payment_config_ios where product_id =? ",
moneyId);
if (queryForList.size() > 0) {
String bill_content = "充值";//账单产生方式
int bill_state = 1;// 充值
int current_state = 1;// 支付成功
int payment_method = 3;// IOS
String date = DateUtils.DATE_TIME_PATTERN;// 当前时间
BigDecimal amountofmoney = new BigDecimal(queryForList.get(0).get("rmb_price").toString());// 金额
String uuid = UUID.randomUUID().toString().replaceAll("-", "");
// 生成消费订单
//String sql = "insert into ts_bill (id,users_id,payment_config_id,bill_num,bill_content,bill_sumofmoney,bill_state,current_state,payment_method,receipt,createtdate) value(?,?,?,?,?,?,?,?,?,?,?);";
//jdbcTemplate.update(sql, uuid,userId,moneyId,transaction_id,bill_content,amountofmoney,bill_state,current_state,payment_method,receiptMd5,date);
String type = "1";// 加
long showcoin_num = Long.parseLong(queryForList.get(0).get("showcoin_num").toString()) + Long.parseLong(queryForList.get(0).get("give_showcoin_num").toString());
// 此操作为需求实际场景可根据用户产品需求更改
//commonServiceI.updShowcoinNum(type, userId, showcoin_num);
return Result.ok("支付成功");
} else {
return Result.error("操作异常,所选金额不存在");
}
} catch (Exception e) {
return Result.error("ios支付异常");
}
}
// @Override
// @Transactional
// public R getAppPay(String verifyResult, String transactionID) {
// log.info("##########################苹果支付验证!########################");
// JSONObject jsonObject = JSONObject.parseObject(verifyResult);
// String status = jsonObject.getString("status");
// //判断是否验证成功
// if ("0".equals(status)) {
// //app端所提供的收据是有效的,验证成功
// String receipt = jsonObject.getString("receipt");
// JSONObject returnJson = JSONObject.parseObject(receipt);
// String in_app = returnJson.getString("in_app");
// JSONObject in_appJson = JSONObject.parseObject(in_app.substring(1, in_app.length() - 1));
// String transactionId = in_appJson.getString("transaction_id");
// String in_app_ownership_type = in_appJson.getString("in_app_ownership_type");
// //如果验证后的订单号与app端传来的订单号一致并且状态为已支付状态则处理自己的业务
// if (transactionID.equals(transactionId) && "PURCHASED".equals(in_app_ownership_type)) {
// //===================处理自己的业务 ============================
// BuyOrder order = this.buyOrderService.getOne(new QueryWrapper<BuyOrder>().eq("order_sn", transactionId ));
// PayWechatOrderEntity wechat = new PayWechatOrderEntity();
//
//
// }
// return R.ok();
// }
// return R.error("苹果内购验证失败");
// }
}

View File

@@ -1,116 +0,0 @@
package com.peanut.modules.pay.applePay.utils;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
//购买所需参数类
@ApiModel(value = "支付数据字段对比")
@Data
@AllArgsConstructor //有参数的构造方法
@NoArgsConstructor //无参构造方法
public class AddIosOrderPM implements Serializable {
//
// /**
// * ios支付所需参数
// */
// private String receipt;
//
// /**
// * 用户id
// */
// private Integer userId;
//
/**
* 交易编号
* eg:1000000852134037 交易唯一标识符;
*/
private String transaction_id;
/**
* APP所有权类型 eg: PURCHASED为沙箱环境
* eg:PURCHASED
*/
private String in_app_ownership_type;
/**
* 原来的交易编号 原始购买标识符
* eg:1000000852108057
*/
private String original_transaction_id;
/**
* 数量
* eg:1 购买消耗品的数量
*/
private String quantity;
/**
* 唯一标识符
* eg:1e10a9ec617549f986765b8546eddd0a9f349f15
*/
private String unique_identifier;
/**
* item_id
* eg:1578853844
*/
private String item_id;
/**
* 处于介绍报价期
* eg:false
*/
private String is_in_intro_offer_period;
/**
* 购买日期
* eg:2021-08-02 03:57:56 America/Los_Angeles
*/
private String purchase_date_pst;
/**
* 原始购买日期 ms
* eg:1627900203000
*/
private String original_purchase_date_ms;
/**
* 原始购买日期
* eg:2021-08-02 03:30:03 America/Los_Angeles 太平洋时区
*/
private String original_purchase_date_pst;
/**
* 是试用期
* eg:false
*/
private String is_trial_period;
/**
* 原始购买日期
* eg:2021-08-02 10:30:03 Etc/GMT 原始购买时间 ISO 8601日期格式
*/
private String original_purchase_date;
/**
* 购买日期ms 时间日期
*/
private String purchase_date_ms;
/**
* 产品id 购买产品唯一标识符
* eg:2
*/
private String product_id;
private String bvrs;
/**
* 购买日期
* eg:2021-08-02 10:57:56 Etc/GMT 时间日期
*/
private String purchase_date;
private String bid;
/**
* 唯一供应商标识符
* eg:A1D7647F-019C-4D15-A23C-3A48CFBFF4E3
*/
private String unique_vendor_identifier;
}

View File

@@ -1,159 +0,0 @@
package com.peanut.modules.pay.applePay.utils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import sun.misc.BASE64Decoder;
import javax.net.ssl.*;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Locale;
@Component
public class ApplePayUtil {
private static class TrustAnyTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[]{};
}
}
private static class TrustAnyHostnameVerifier implements HostnameVerifier {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
}
private static String url_apple_pay = "https://buy.itunes.apple.com/verifyReceipt";
private static String test_url_apple_pay = "https://sandbox.itunes.apple.com/verifyReceipt";
/**
* 苹果服务器验证
*
* @param receipt 账单
* @return null 或返回结果
* @url 要验证的地址 沙盒 https://sandbox.itunes.apple.com/verifyReceipt
*/
public static String buyAppVerify(String receipt, int type) {
//环境判断 线上/开发环境用不同的请求链接
try {
String url = null;
if (type == 0) {
url = test_url_apple_pay; //沙盒环境,测试
} else {
url = url_apple_pay; //线上环境
}
//String url = EnvUtils.isOnline() ?url_verify : url_sandbox;
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom());
URL console = new URL(url);
HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
conn.setSSLSocketFactory(sc.getSocketFactory());
conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
conn.setRequestMethod("POST");
conn.setRequestProperty("content-type", "text/json");
conn.setRequestProperty("Proxy-Connection", "Keep-Alive");
conn.setDoInput(true);
conn.setDoOutput(true);
//r如果有错误就注释
conn.setConnectTimeout(3000);
BufferedOutputStream hurlBufOus = new BufferedOutputStream(conn.getOutputStream());
//拼成固定的格式传给平台
String str = String.format(Locale.CHINA, "{\"receipt-data\":\"" + receipt + "\"}");
// 直接将receipt当参数发到苹果验证就行不用拼格
String str1 = String.format(Locale.CHINA, receipt);
hurlBufOus.write(str.getBytes());
hurlBufOus.flush();
InputStream is = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
return sb.toString();
} catch (Exception ex) {
System.out.println("苹果服务器异常");
ex.printStackTrace();
}
return null;
}
//视情况而定苹果app进行支付然后收到苹果的收据一串很长的BASE64编码的字符串
/**
* 用BASE64加密
*
* @param str
* @return
*/
public static String getBASE64(String str) {
byte[] b = str.getBytes();
String s = null;
if (b != null) {
s = new sun.misc.BASE64Encoder().encode(b);
}
return s;
}
/**
* 解密BASE64字窜
* @param s
* @return
*/
public static String getFromBASE64(String s) {
byte[] b = null;
if (s != null) {
BASE64Decoder decoder = new BASE64Decoder();
try {
b = decoder.decodeBuffer(s);
return new String(b);
} catch (Exception e) {
e.printStackTrace();
}
}
return new String(b);
}
}

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