更新java17,springboot3.3.9,maven3.9.10,
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -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地址
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
package com.peanut.common.validator.group;
|
||||
|
||||
import javax.validation.GroupSequence;
|
||||
import jakarta.validation.GroupSequence;
|
||||
|
||||
/**
|
||||
* 定义校验顺序,如果AddGroup组失败,则UpdateGroup组不会再校验
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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配置
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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")
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
@@ -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 {
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
@@ -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;//国际短信模版
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
// }
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
// }
|
||||
}
|
||||
@@ -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也能访问。。。");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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 + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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,"当前书籍已加入书架");
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<>();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<>();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -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()));
|
||||
|
||||
@@ -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("已有用户拥有优惠券");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<>();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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("学员打分未完成,请完成打分后结班");
|
||||
}
|
||||
|
||||
@@ -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>()
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,"删除失败,请先删除子项目后再尝试");
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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("不可重复绑定");
|
||||
}
|
||||
|
||||
@@ -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("不可重复绑定");
|
||||
}
|
||||
|
||||
@@ -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("不可重复绑定");
|
||||
}
|
||||
|
||||
@@ -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,"更新失败,请先把此项与课程的关联关系清空后才可把此标签变成普通标签");
|
||||
|
||||
@@ -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("已有人报名禁止删除");
|
||||
|
||||
@@ -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()));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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("删除失败,标签下存在证书");
|
||||
|
||||
@@ -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("已存在湖分记录");
|
||||
|
||||
@@ -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.*;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,快捷生成商品不可用");
|
||||
}
|
||||
|
||||
@@ -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,"更新失败,请先把此项与课程的关联关系清空后才可把此标签变成普通标签");
|
||||
}
|
||||
|
||||
@@ -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,"请先删除目录后再删除!");
|
||||
}
|
||||
|
||||
@@ -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,"删除失败,请先删除子项目后再尝试");
|
||||
}
|
||||
|
||||
@@ -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,"删除失败,有人下单,且订单未完成");
|
||||
}
|
||||
|
||||
@@ -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("请先清空后,再操作");
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
}
|
||||
@@ -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("苹果内购验证失败");
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -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
Reference in New Issue
Block a user