记得上下班打卡 | git大法好,push需谨慎

Commit f67f9ae3 authored by 洪全海's avatar 洪全海
parents 960d4d23 8d785617
......@@ -4,16 +4,20 @@ import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.Map;
@Data
@Component("jwtValidator")
@ConfigurationProperties(prefix = "jwt")
public class JwtValidator {
private String ssoRedisKey = "adam:identity:sso:";
private String secret;
// 分钟
private Long expireTtl;
private Long refreshTtl;
private Long blacklistGracePeriod;
......@@ -58,20 +62,4 @@ public class JwtValidator {
// 设置需要解析的token
.parseClaimsJws(token).getBody();
}
public void setSecret(String secret) {
this.secret = secret;
}
public void setExpireTtl(Long expireTtl) {
this.expireTtl = expireTtl;
}
public void setRefreshTtl(Long refreshTtl) {
this.refreshTtl = refreshTtl;
}
public void setBlacklistGracePeriod(Long blacklistGracePeriod) {
this.blacklistGracePeriod = blacklistGracePeriod;
}
}
package com.liquidnet.commons.lang.util;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import java.util.Map;
public class CurrentUtil {
public static final String uTag = "u-tag";
public static final String uToken = "u-token";
public static String getToken() {
String authToken = ServletUtils.getRequest().getHeader(uToken);
return StringUtils.isBlank(authToken) ? null : authToken.substring(7);
}
public static Map getTokenClaims() {
return JsonUtils.fromJson(ServletUtils.getRequest().getHeader(uTag), Map.class);
}
public static String getCurrentUid() {
Map tokenClaims = getTokenClaims();
// TODO: 2021/5/14 dev联调API未启用token默认使用1
return CollectionUtils.isEmpty(tokenClaims) ? "1" : (String) tokenClaims.get("uid");
}
}
package com.liquidnet.commons.lang.util;
import java.io.Serializable;
import java.util.LinkedList;
public class SqlMessage implements Cloneable, Serializable {
private static final long serialVersionUID = 2208924091512163151L;
private LinkedList<String> sqls;
private LinkedList<Object[]>[] args;
public SqlMessage() {
}
public SqlMessage(String json) {
SqlMessage sqlMessage = JsonUtils.fromJson(json, SqlMessage.class);
this.sqls = sqlMessage.getSqls();
this.args = sqlMessage.getArgs();
}
public LinkedList<String> getSqls() {
return sqls;
}
public void setSqls(LinkedList<String> sqls) {
this.sqls = sqls;
}
public LinkedList<Object[]>[] getArgs() {
return args;
}
public void setArgs(LinkedList<Object[]>[] args) {
this.args = args;
}
private final static SqlMessage instance = new SqlMessage();
public static SqlMessage getInstance() {
try {
return (SqlMessage) instance.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new SqlMessage();
}
}
\ No newline at end of file
......@@ -109,6 +109,21 @@ public final class RedisUtil {
}
/**
* 根据前缀模糊删除
*
* @param prefix Key前缀
*/
public void delKeysByPrefix(String prefix) {
if (null != prefix && prefix.trim().length() > 0) {
Set<String> keys = redisTemplate.keys(prefix.concat("*"));
if (!CollectionUtils.isEmpty(keys)) {
redisTemplate.delete(keys);
}
}
}
/**
......
/**
* $Id: PayException.java 6383 2016-04-23 03:23:29Z huangcheng $
* Copyright(C) 2014-2020 netease - easegame, All Rights Reserved.
*/
package com.liquidnet.common.exception;
import com.liquidnet.common.exception.constant.ErrorCode;
/**
*
* @author <a href="mailto:guoxinpeng@youxi.com">Huang Cheng</a>
* @version 1.0 2016年4月22日 下午6:20:42
*/
public class GlobalIdException extends LiquidnetServiceException {
/**
*
*/
private static final long serialVersionUID = 340630753524591474L;
public GlobalIdException() {
super(ErrorCode.GLOBALID_ERROR);
}
public GlobalIdException(String message) {
super(ErrorCode.GLOBALID_ERROR,message);
}
}
/**
* $Id$
* Copyright(C) 2015-2020 liquidnet - internet center, All Rights Reserved.
*/
package com.liquidnet.common.exception;
import com.liquidnet.common.exception.constant.ErrorCode;
/**
* 接口请求异常
* @author fengzheng
*/
public class InterfaceException extends LiquidnetServiceException {
private static final long serialVersionUID = -7974558728088507L;
public InterfaceException() {
super(ErrorCode.INTERFACE_ERROR);
}
}
......@@ -11,13 +11,15 @@ import com.liquidnet.common.exception.constant.ServiceErrorCode;
* @Copyright: LightNet @ Copyright (c) 2020
* @date 2020/9/21 10:37
*/
public class LiquidnetServiceException extends RuntimeException{
public class LiquidnetServiceException extends RuntimeException {
private ServiceErrorCode errorCode;
private String message;
private String url;
public LiquidnetServiceException(){}
public LiquidnetServiceException(ServiceErrorCode errorCode){
public LiquidnetServiceException() {
}
public LiquidnetServiceException(ServiceErrorCode errorCode) {
this.errorCode = errorCode;
}
......@@ -26,11 +28,12 @@ public class LiquidnetServiceException extends RuntimeException{
this.message = message;
}
public LiquidnetServiceException(ServiceErrorCode errorCode, String message){
public LiquidnetServiceException(ServiceErrorCode errorCode, String message) {
super(message);
this.errorCode = errorCode;
this.message = message;
}
public ServiceErrorCode errorCode() {
return errorCode;
}
......@@ -39,7 +42,7 @@ public class LiquidnetServiceException extends RuntimeException{
return message;
}
public LiquidnetServiceException(ServiceErrorCode errorCode, String message, String url){
public LiquidnetServiceException(ServiceErrorCode errorCode, String message, String url) {
super(message);
this.errorCode = errorCode;
this.message = message;
......
......@@ -38,35 +38,8 @@ public enum ErrorCode implements ServiceErrorCode {
ERROR_SYS_UP("-2",""),
REDIRECT("-1",""),
SUCCESS("0",""),
/**
* 服务器内部错误
*
* <b>code: 1</b>
*/
ERROR("1",""),
HTTP_FORBIDDEN("403", ""),
HTTP_RESOURCE_NOT_FOUND("404", ""),
/**
* 登录超时
*/
LOGIN_TIME_OUT("405","login timed out"),
HTTP_SYSTEM_ERROR("500", "system error"),
/**
* 非法参数
*/
ILLEGAL_ARGUMENT("400","非法参数"),
/**
* 接口异常
*/
INTERFACE_ERROR("7000",""),
GLOBALID_ERROR("7001","生成globalId 异常"),
RESPONSE_ERROE_UNKNOWN("ADAM0000001","System busy, please try again later"),
RESPONSE_ERROE_SYSTEM("ADAM0000002","System abnormal"),
RESPONSE_ERROE_BIZ("ADAM0000003","Processing failed"),
REQUEST_REPEATED_SUBMISSION("7001","Please do not submit again"),
HTTP_SYSTEM_ERROR("50000", "System busy, please try again later"),
;
......
......@@ -11,11 +11,12 @@ import java.util.List;
public class Error {
String message;
String code;
List<ErrorDetail> errors;
public Error(){
public Error() {
}
public Error(String code, String message){
public Error(String code, String message) {
this.code = code;
this.message = message;
}
......@@ -35,12 +36,4 @@ public class Error {
public void setCode(String code) {
this.code = code;
}
public List<ErrorDetail> getErrors() {
return errors;
}
public void setErrors(List<ErrorDetail> errors) {
this.errors = errors;
}
}
ADAM0010001=system error
ADAM0010002=param error
ADAM0010003=illegal param
ADAM0010004=Illegal operation
ADAM0010005=operation failed
ADAM0010006=Please do not submit again
ADAM0010007=Verification code expired
ADAM0010008=Verification code error
ADAM0010009=Verification code sent
ADAM0020001=password format invalid
ADAM0020002=email format invalid
ADAM0020003=company has been signed up
ADAM0020004=Email has been registered, please log in
ADAM0020005=The email has already been registered.
ADAM0020006=field 'First name' or 'Last name' lost
ADAM0020007=field 'Job title' lost
ADAM0020008=field 'email' lost
ADAM0020009=field 'password' lost
ADAM0020010=field 'company' lost
ADAM0020011=Invalid authentication address
ADAM0020012=The token is expired or broken
ADAM0020013=Email not registered yet
ADAM0020014=Email not activated
ADAM0020015=It has not passed the second verification of SMS
ADAM_USER_PW_0020016=wrong password
ADAM0020017=wrong verification code
ADAM0020018=Code is incorrect.
ADAM0020020=param error
ADAM0020021=phone number exist
ADAM0020022=illegal param
ADAM0020023=password reset reject
ADAM0020024=phone auth passed
ADAM0020025=!The email has already been registered in your company.
ADAM0020026=The mobile phone is not bound. The verification code cannot be received through the mobile phone number
ADAM0020027=You have attempted to log into your account 5 times.Your account will be locked today after 2 more failed attempts. Please be careful to key in the password.
ADAM0020028=Your account has been locked due to too many failed login attempts. You may try again tomorrow or reset your password via 'Forgot Password'.
ADAM0020029=Your account has been activated, please log in
ADAM0020030=Your account has been removed, please contact the company administrator
ADAM_COM_0030001=Company ID input error, please re-enter
ADAM_COM_0030002=Company account not activated
ADAM_COM_0030003=Currency input error, please re select
ADAM_COM_0030004=The first account opening currency can only be the currency of the selected country of registration
ADAM_COM_0030005=Company status error
ADAM_ACCOUNT_004001=account not exist
ADAM_ACCOUNT_004002=date illegal
ADAM_ACCOUNT_004003=wallet not exist
ADAM_ACCOUNT_004004=not sufficient funds
ADAM_WALLET_005001=Wallet not available
ADAM_WALLET_005002=Wallet cannot payout
ADAM_WALLET_005003=Insufficient wallet balance
ADAM_WALLET_005004=Wallet not exist
ADAM_WALLET_005005=Wallet name cannot be greater than 32 bits
ADAM_PAYOUT_006001=Payout doesn't exist
ADAM_PAYOUT_006002=execution date error
ADAM_PAYOUT_006003=The execution date has not arrived
ADAM_PAYOUT_006004=Currency error
ADAM_PAYOUT_006005=Ready to Process
ADAM_PAYOUT_006006=Payout currencycloud channel error
ADAM_PAYOUT_006007=Payout cannot be cancelled
ADAM_PAYOUT_006008=Payout cannot be edit
ADAM_PAYOUT_006009=Payout amount error
ADAM_PAYOUT_006010=Payout currency is inconsistent with beneficiary currency
ADAM_FUNDING_007001=Funding fin failed
ADAM_CONVERSION_008001=Conversion fixed side error
ADAM_CONVERSION_008002=Conversion transaction does not exist
ADAM_CONVERSION_008003=The available balance of your wallet is insufficient.
ADAM_CONVERSION_008004=The currency of from wallet is inconsistent with the currency of sell
ADAM_CONVERSION_008005=Buyer currency wallet creation failed
ADAM_CONVERSION_008006=Buyer currency wallet not selected
ADAM_TRANSACTION_008001=Invalid status, unable to notify fund account
ADAM_ADMINISTRATION_009001=Permission to save failed
ADAM_ADMINISTRATION_009002=The user is already activated and cannot be modified
ADAM_ADMINISTRATION_009003=The user has been removed, invalid operation
ADAM_ADMINISTRATION_009004=Invalid operation, personal operation is not allowed
ADAM_ADMINISTRATION_009005=Administrator permissions cannot be edited
ADAM_FEGIN_ACCOUNT_100001=Account system service exception
ADAM_FEGIN_BANK_CC_200001=Bank currencycloud system service exception
BANK_CC_001001=bank currencycloud error
......@@ -33,14 +33,14 @@ public class RestControllerAdviceHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public ResponseEntity serviceExceptionHandler(Exception rex, WebRequest request) {
logger.error("serviceExceptionHandler request : {} param:{}", request.getContextPath(), JSON.toJSONString(request.getParameterMap()));
if ( rex instanceof LiquidnetFeignException) {
logger.error("serviceExceptionHandler request:{},param:{}", request.getContextPath(), JSON.toJSONString(request.getParameterMap()));
if (rex instanceof LiquidnetFeignException) {
LiquidnetFeignException ygex = ((LiquidnetFeignException) rex);
String errorCode = ygex.errorCode().getCode();
String message = ygex.getMessage();
message = message == null ? ygex.errorCode().getMessage() : message;
logger.error("LiquidnetServiceException errorCode:{} error : {}", errorCode, ygex.getMessage());
return new ResponseEntity<Error>(new Error(errorCode,message), HttpStatus.EXPECTATION_FAILED);
return new ResponseEntity<Error>(new Error(errorCode, message), HttpStatus.OK);
}
if (rex instanceof LiquidnetServiceException) {
LiquidnetServiceException ygex = ((LiquidnetServiceException) rex);
......@@ -48,10 +48,10 @@ public class RestControllerAdviceHandler {
String message = ygex.getMessage();
message = message == null ? ygex.errorCode().getMessage() : message;
logger.error("LiquidnetServiceException errorCode:{} error : {}", errorCode, ygex.getMessage());
return new ResponseEntity<Error>(new Error(errorCode,message), HttpStatus.EXPECTATION_FAILED);
}else {
logger.error("serviceExceptionHandler : {}", rex);
return new ResponseEntity<Error>(new Error(ErrorCode.RESPONSE_ERROE_UNKNOWN.getCode(), ErrorCode.RESPONSE_ERROE_UNKNOWN.getMessage()), HttpStatus.EXPECTATION_FAILED);
return new ResponseEntity<Error>(new Error(errorCode, message), HttpStatus.OK);
} else {
logger.error("serviceExceptionHandler:{}", rex);
return new ResponseEntity<Error>(new Error(ErrorCode.HTTP_SYSTEM_ERROR.getCode(), ErrorCode.HTTP_SYSTEM_ERROR.getMessage()), HttpStatus.OK);
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-common-exception</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-common-exception-handler-web</artifactId>
<dependencies>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-service-base</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
/**
* $Id: PageControllerAdviceHandler.java 13332 2016-07-06 09:15:06Z anjiabin $
* Copyright(C) 2014-2020 easegame, All Rights Reserved.
*/
package com.liquidnet.common.exception;
import com.liquidnet.common.exception.annotation.PageErrorController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
/**
* Created by Administrator on 2017/6/17.
*/
@ControllerAdvice(annotations = PageErrorController.class)
public class PageControllerAdviceHandler {
private final Logger logger = LoggerFactory.getLogger(PageControllerAdviceHandler.class);
@ExceptionHandler
public String handleException(Model model, Exception exception) {
logger.error("PageController errer:{}", exception);
model.addAttribute("msg", exception.getMessage());
if (exception instanceof LiquidnetServiceException) {
LiquidnetServiceException ex = (LiquidnetServiceException) exception;
logger.error("PageController errorCode:{} errorMsg:{}", ex.errorCode(), ex.getMessage());
}
return "500";
}
}
/**
* $Id: RestControllerAdviceHandler.java 13331 2016-07-06 09:09:33Z anjiabin $
* Copyright(C) 2014-2020 easegame, All Rights Reserved.
*/
package com.liquidnet.common.exception;
import com.alibaba.fastjson.JSON;
import com.liquidnet.common.exception.entity.Error;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.constant.GlobalConstant;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.WebRequest;
/**
* Created by Administrator on 2017/6/17.
*/
@ControllerAdvice(annotations = RestController.class)
public class RestControllerAdviceHandler {
private final Logger logger = LoggerFactory.getLogger(RestControllerAdviceHandler.class);
@ExceptionHandler(value = Exception.class)
@ResponseBody
public ResponseEntity serviceExceptionHandler(Exception rex, WebRequest request) {
logger.error("serviceExceptionHandler request : {} param:{}", request.getContextPath(), JSON.toJSONString(request.getParameterMap()));
if ( rex instanceof LiquidnetFeignException) {
LiquidnetFeignException ygex = ((LiquidnetFeignException) rex);
String errorCode = ygex.errorCode().getCode();
String message = ygex.getMessage();
message = message == null ? ygex.errorCode().getMessage() : message;
logger.error("LiquidnetServiceException errorCode:{} error : {}", errorCode, ygex.getMessage());
return new ResponseEntity<Error>(new Error(errorCode,message), HttpStatus.OK);
}
if (rex instanceof LiquidnetServiceException) {
LiquidnetServiceException ygex = ((LiquidnetServiceException) rex);
String errorCode = ygex.errorCode().getCode();
String message = ygex.getMessage();
String url = ygex.getUrl();
if(StringUtils.isNoneEmpty(url)){
return new ResponseEntity<ResponseDto>(ResponseDto.failure(errorCode,message,url), HttpStatus.OK);
}
message = message == null ? ygex.errorCode().getMessage() : message;
logger.error("LiquidnetServiceException errorCode:{} error : {}", errorCode, ygex.getMessage());
return new ResponseEntity<Error>(new Error(errorCode,message), HttpStatus.OK);
} else {
logger.error("serviceExceptionHandler error : {}", rex);
return new ResponseEntity<Error>(new Error("-1", GlobalConstant.RESPONSE_ERROE_UNKNOWN), HttpStatus.OK);
}
}
}
......@@ -12,7 +12,6 @@
<packaging>pom</packaging>
<modules>
<module>liquidnet-common-exception-base</module>
<module>liquidnet-common-exception-handler-web</module>
<module>liquidnet-common-exception-handler-service</module>
</modules>
......
......@@ -41,7 +41,7 @@ public class BizExceptionFeignErrorDecoder implements feign.codec.ErrorDecoder {
}
} catch (IOException var4) {
var4.printStackTrace();
ex = new LiquidnetFeignException(ErrorCode.ERROR, ErrorCode.RESPONSE_ERROE_UNKNOWN.getMessage());
ex = new LiquidnetFeignException(ErrorCode.ERROR, ErrorCode.HTTP_SYSTEM_ERROR.getMessage());
}
return null != ex ? ex : feign.FeignException.errorStatus(methodKey, response);
}
......
......@@ -23,6 +23,12 @@
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-exception-handler-service</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-web</artifactId>
......
package com.liquidnet.service;
import com.alibaba.fastjson.JSON;
import com.liquidnet.service.constant.GlobalConstant;
import com.liquidnet.common.exception.constant.ErrorCode;
import com.liquidnet.common.exception.constant.ServiceErrorCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* REDIRECT(-1),
* SUCCESS(0),
* FAIL(1),
* UNAUTH(2),
*/
@ApiModel()
public class ResponseDto<T> implements Serializable {
private static final long serialVersionUID = 1585289779755226637L;
@ApiModelProperty(value = "错误码,0代表成功",position = -9998)
private String code;
@ApiModelProperty(value = "错误描述",position = -9997)
private String message;
@ApiModelProperty
private T data;
public boolean isSuccess() {
return this.code.equals(ErrorCode.SUCCESS.getCode());
}
public ResponseDto() {
}
public ResponseDto(String code) {
this.code = code;
}
public ResponseDto(String code, T data) {
this.code = code;
this.data = data;
}
public ResponseDto(String code, String message) {
this.code = code;
this.message = message;
}
public ResponseDto(String code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
public ResponseDto(ErrorCode errorCode) {
this.code = errorCode.getCode();
this.message = errorCode.getMessage();
}
public static<Object> ResponseDto<Object> success(Object data) {
return new ResponseDto<>(ErrorCode.SUCCESS.getCode(), data);
}
public static<Object> ResponseDto<Object> success() {
return new ResponseDto<>(ErrorCode.SUCCESS.getCode());
}
public static Builder newSuccessBuilder() {
return new Builder(ErrorCode.SUCCESS);
}
public static<Object> ResponseDto<Object> failure(String code, String message) {
return new ResponseDto<>(code, message);
}
public static<Object> ResponseDto<Object> failure(String code, String message, Object data) {
return new ResponseDto<>(code, message, data);
}
public static<Object> ResponseDto<Object> failure(String message) {
return new ResponseDto<>("1", message);
}
public static<Object> ResponseDto<Object> failure(ErrorCode errorCode) {
return new ResponseDto<>(errorCode);
}
/**
* 自定义异常信息
*
* @param errorCode
* @param message
* @return ResponseDto<?>
*/
public static<Object> ResponseDto<Object> failure(ServiceErrorCode errorCode, String message) {
return new ResponseDto<>(errorCode.getCode(), message);
}
public static<Object> ResponseDto<Object> failure(ServiceErrorCode errorCode, Object data) {
return new ResponseDto<>(errorCode.getCode(), errorCode.getMessage(), data);
}
public static<Object> ResponseDto<Object> failure(ServiceErrorCode errorCode) {
return new ResponseDto<>(errorCode.getCode(), errorCode.getMessage());
}
public static<Object> ResponseDto<Object> failure() {
return new ResponseDto<>(ErrorCode.ERROR.getCode(), ErrorCode.RESPONSE_ERROE_UNKNOWN.getMessage());
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
/**
* <p>Getter for the field <code>data</code>.</p>
*
* @return a T object.
*/
public T getData() {
return data;
}
/**
* <p>Setter for the field <code>data</code>.</p>
*
* @param data a T object.
*/
public void setData(T data) {
this.data = data;
}
public <T> T getParseData(Class<T> clazz) {
try {
if (getData() != null) {
return JSON.parseObject(JSON.toJSONString(getData()), clazz);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* <p>redirect.</p>
*
* @param path a {@link java.lang.String} object.
* @return a {@link ResponseDto} object.
*/
public static ResponseDto<Map<String, Object>> redirect(String path) {
return new Builder(ErrorCode.REDIRECT).put("url", path).build();
}
public static class Builder {
private final ResponseDto<Map<String, Object>> responseDto;
private final String code;
private final Map<String, Object> mapData;
public Builder(ErrorCode errorCode) {
responseDto = new ResponseDto<>();
this.code = errorCode.getCode();
this.mapData = new HashMap<>();
}
public Builder put(String key, Object value) {
mapData.put(key, value);
return this;
}
public ResponseDto<Map<String, Object>> build() {
responseDto.setCode(this.code);
responseDto.setData(this.mapData);
return responseDto;
}
}
}
package com.liquidnet.service.base;
import lombok.Data;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@Data
public class ErrorMapping {
static {
reload();
}
private static Properties errorsProperties;
public static void reload() {
errorsProperties = new Properties();
InputStream in = ErrorMapping.class.getClassLoader().getResourceAsStream("errors.properties");
try {
errorsProperties.load(new InputStreamReader(in, StandardCharsets.UTF_8));
System.out.printf("errorsProperties init count: %s\n", errorsProperties.size());
} catch (IOException e) {
e.printStackTrace();
}
}
public static ErrorMessage get(String code) {
String value = errorsProperties != null ? errorsProperties.getProperty(code) : "-";
return ErrorMessage.getInstance().setCode(code).setMessage(value);
}
public static class ErrorMessage implements Cloneable, Serializable {
private static final long serialVersionUID = 2208924091512163151L;
private String code;
private String message;
private ErrorMessage() {
}
public String getCode() {
return code;
}
public String getMessage() {
return message;
}
private final static ErrorMessage instance = new ErrorMessage();
public static ErrorMessage getInstance() {
try {
return (ErrorMessage) instance.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new ErrorMessage();
}
public ErrorMessage setCode(String code) {
this.code = code;
return this;
}
public ErrorMessage setMessage(String message) {
this.message = message;
return this;
}
}
}
......@@ -2,7 +2,7 @@
* $Id$
* Copyright(C) 2015-2020 kowlone - internet center, All Rights Reserved.
*/
package com.liquidnet.service;
package com.liquidnet.service.base;
import java.io.Serializable;
......
package com.liquidnet.service.base;
import com.liquidnet.commons.lang.util.JsonUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
/**
* REDIRECT(-1),
* SUCCESS(0),
* FAIL(1),
* UNAUTH(2),
*/
@ApiModel(value = "ResponseDto<T>", description = "响应参数")
public class ResponseDto<T> implements Serializable, Cloneable {
private static final long serialVersionUID = 8377276776600901982L;
@ApiModelProperty(value = "错误码,0代表成功", position = -9998)
private String code;
@ApiModelProperty(value = "错误描述", position = -9997)
private String message;
@ApiModelProperty
private T data;
public boolean isSuccess() {
return this.code.equals("0");
}
private ResponseDto() {
}
private ResponseDto(String code) {
this.code = code;
}
private ResponseDto(String code, T data) {
this.code = code;
this.data = data;
}
private ResponseDto(String code, String message) {
this.code = code;
this.message = message;
}
private ResponseDto(String code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
private ResponseDto(ErrorMapping.ErrorMessage errorMessage) {
this.code = errorMessage.getCode();
this.message = errorMessage.getMessage();
}
private ResponseDto(ErrorMapping.ErrorMessage errorMessage, T data) {
this.code = errorMessage.getCode();
this.message = errorMessage.getMessage();
this.data = data;
}
public String getCode() {
return code;
}
public String getMessage() {
return message;
}
/**
* <p>Getter for the field <code>data</code>.</p>
*
* @return a T object.
*/
public T getData() {
return data;
}
public static <Object> ResponseDto<Object> success() {
return new ResponseDto<>("0");
}
public static <Object> ResponseDto<Object> success(Object data) {
return new ResponseDto<>("0", data);
}
public static <Object> ResponseDto<Object> failure() {
return new ResponseDto<>("1", "系统繁忙,请稍后再试");
}
public static <Object> ResponseDto<Object> failure(String message) {
return new ResponseDto<>("1", message);
}
public static <Object> ResponseDto<Object> failure(String code, String message) {
return new ResponseDto<>(code, message);
}
public static <Object> ResponseDto<Object> failure(String code, String message, Object data) {
return new ResponseDto<>(code, message, data);
}
public static <Object> ResponseDto<Object> failure(ErrorMapping.ErrorMessage errorMessage) {
return new ResponseDto<>(errorMessage);
}
public static <Object> ResponseDto<Object> failure(ErrorMapping.ErrorMessage errorMessage, Object data) {
return new ResponseDto<>(errorMessage, data);
}
public <T> T getParseData(Class<T> clazz) {
try {
if (getData() != null) {
return JsonUtils.fromJson(JsonUtils.toJson(getData()), clazz);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
package com.liquidnet.commons.lang.util;
package com.liquidnet.service.base;
import com.liquidnet.commons.lang.util.JsonUtils;
import org.apache.logging.log4j.util.PropertiesUtil;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.net.URL;
import java.util.HashMap;
import java.util.LinkedList;
......@@ -13,7 +15,7 @@ import java.util.Properties;
public class SqlMapping {
private static final String sqlMapDir = "sqlmap";
private static Map<String, Object> sqlPropertiesMap = new HashMap<>();
private static Map<String, String> sqlPropertiesMap = new HashMap<>();
static {
try {
......@@ -40,29 +42,73 @@ public class SqlMapping {
}
}
public static Object get(String sql) {
public static String get(String sql) {
return sqlPropertiesMap.get(sql);
}
public static String get(String sql, Object... params) {
public static class SqlMessage implements Cloneable, Serializable {
private static final long serialVersionUID = 2208924091512163151L;
private LinkedList<String> sqls;
private LinkedList<Object[]>[] args;
private SqlMessage() {
}
public SqlMessage(String json) {
SqlMapping.SqlMessage sqlMessage = JsonUtils.fromJson(json, SqlMapping.SqlMessage.class);
this.sqls = sqlMessage.getSqls();
this.args = sqlMessage.getArgs();
}
public LinkedList<String> getSqls() {
return sqls;
}
public void setSqls(LinkedList<String> sqls) {
this.sqls = sqls;
}
public LinkedList<Object[]>[] getArgs() {
return args;
}
public void setArgs(LinkedList<Object[]>[] args) {
this.args = args;
}
private final static SqlMapping.SqlMessage instance = new SqlMapping.SqlMessage();
public static SqlMapping.SqlMessage getInstance() {
try {
return (SqlMapping.SqlMessage) instance.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new SqlMapping.SqlMessage();
}
}
/* ---------------------- ---------------------- ---------------------- */
public static String get(String sqlKey, Object... params) {
LinkedList<String> sqls = new LinkedList<>();
sqls.add(sqlPropertiesMap.get(sql).toString());
sqls.add(sqlPropertiesMap.get(sqlKey));
LinkedList<Object[]> paramsList = new LinkedList<>();
paramsList.add(params);
LinkedList<Object[]>[] args = new LinkedList[]{paramsList};
SqlMessage sqlMessage = SqlMessage.getInstance();
SqlMapping.SqlMessage sqlMessage = SqlMapping.SqlMessage.getInstance();
sqlMessage.setSqls(sqls);
sqlMessage.setArgs(args);
return JsonUtils.toJson(sqlMessage);
}
public static String get(String sql, LinkedList<Object[]> paramsList) {
public static String get(String sqlKey, LinkedList<Object[]> paramsList) {
LinkedList<String> sqls = new LinkedList<>();
sqls.add(sqlPropertiesMap.get(sql).toString());
sqls.add(sqlPropertiesMap.get(sqlKey));
LinkedList<Object[]>[] args = new LinkedList[]{paramsList};
SqlMessage sqlMessage = SqlMessage.getInstance();
SqlMapping.SqlMessage sqlMessage = SqlMapping.SqlMessage.getInstance();
sqlMessage.setSqls(sqls);
sqlMessage.setArgs(args);
return JsonUtils.toJson(sqlMessage);
......@@ -71,7 +117,7 @@ public class SqlMapping {
public static String get(LinkedList<String> sqls, LinkedList<Object[]> paramsList) {
LinkedList<Object[]>[] args = new LinkedList[]{paramsList};
SqlMessage sqlMessage = SqlMessage.getInstance();
SqlMapping.SqlMessage sqlMessage = SqlMapping.SqlMessage.getInstance();
sqlMessage.setSqls(sqls);
sqlMessage.setArgs(args);
return JsonUtils.toJson(sqlMessage);
......
......@@ -34,15 +34,15 @@
<modules>
<module>liquidnet-common-base</module>
<module>liquidnet-common-cache</module>
<module>liquidnet-common-service-base</module>
<module>liquidnet-common-exception</module>
<module>liquidnet-common-web</module>
<!-- <module>liquidnet-common-mybatis</module>-->
<module>liquidnet-common-mq</module>
<module>liquidnet-common-feign</module>
<module>liquidnet-common-swagger</module>
<module>liquidnet-common-sharding-jdbc</module>
<module>liquidnet-common-multidb</module>
<module>liquidnet-common-web</module>
<module>liquidnet-common-swagger</module>
<module>liquidnet-common-service-base</module>
<module>liquidnet-common-feign</module>
<!-- <module>liquidnet-common-mybatis</module>-->
</modules>
<dependencies>
......
......@@ -47,6 +47,10 @@ spring:
# destination: springCloudBus.${liquidnet.info.name}.port${liquidnet.info.port}
# trace:
# enabled: true
redis:
port: ${liquidnet.redis.port}
host: ${liquidnet.redis.host}
password: ${liquidnet.redis.password}
# -----------------------------------------------------------
eureka:
# client:
......@@ -92,6 +96,7 @@ global:
/adam/login/mobile,
/adam/login/tpa,
/adam/send
url-pattern: /kylin/*
# -----------------------------------------------------------
#解决错误 com.netflix.client.ClientException: Load balancer does not have available server for client:panfeng-item-service
#这样就可以即指定path与URL,又不破坏Zuul的Hystrix与Ribbon特性了。
......@@ -99,6 +104,8 @@ global:
ribbon:
eureka:
enabled: true # 为Ribbon禁用Eureka
ReadTimeout: 60000
SocketTimeout: 60000
#liquidnet-service-sequence:
# ribbon:
# listOfServers: 192.168.137.1:9001
......
package com.liquidnet.service.feign.adam.api;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.vo.AdamLoginInfoVo;
import feign.hystrix.FallbackFactory;
......
package com.liquidnet.service.adam.common;
import com.liquidnet.common.exception.properties.ErrorCodeProperties;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* @author AnJiabin <jiabin.an@lightnet.io>
* @version V1.0
* @Description: TODO
* @class: AdamErrorCode
* @Package com.liquidnet.service.adam.constant
* @Copyright: LightNet @ Copyright (c) 2020
* @date 2020/9/22 11:43
*/
public enum AdamErrorCode {
SUCCESS("0"),
ADAM001_SYSTEM_ERROR("ADAM0010001"),
ADAM001_PARAM_ERROR("ADAM0010002"),
ADAM001_ILLEGAL_PARAM("ADAM0010003"),
ADAM001_ILLEGAL_OPERATION("ADAM0010004"),
ADAM001_OPERATION_FAILED("ADAM0010005"),
ADAM001_REPEAT_SUBMIT("ADAM0010006"),
ADAM001_VERIFYCODE_EXPIRED("ADAM0010007"),
ADAM001_VERIFYCODE_ERROR("ADAM0010008"),
ADAM001_VERIFYCODE_SENT("ADAM0010009"),
PWD_FORMAT_INVALID("ADAM0020001"),
EMAIL_FORMAT_INVALID("ADAM0020002"),
COM_HAS_SIGNED("ADAM0020003"),
EMAIL_HAS_REGIS("ADAM0020004"),
EMAIL_HAS_REGIS_VER("ADAM0020005"),
NAME_LOST("ADAM0020006"),
JOB_TITLE_LOST("ADAM0020007"),
EMAIL_LOST("ADAM0020008"),
PASSWORD_LOST("ADAM0020009"),
COMPANY_LOST("ADAM0020010"),
INVALID_AUTH_ADDRESS("ADAM0020011"),
TOKEN_EXPIRED_OR_BROKEN("ADAM0020012"),
EMAIL_NOT_REGIS("ADAM0020013"),
EMAIL_NOT_ACTIVATED("ADAM0020014"),
VERIF_NOT_PASSED("ADAM0020015"),
ADAM_USER_PW_0020016("ADAM_USER_PW_0020016"),
ILLEGAL_VERIF_CODE("ADAM0020017"),
WRONG_VERIF_CODE("ADAM0020018"),
PARAM_ERROR("ADAM0020020"),
PHONE_NUMBER_EXIST("ADAM0020021"),
ILLEGAL_PARAM("ADAM0020022"),
PASSWORD_RESET_REJECT("ADAM0020023"),
PHONE_AUTH_PASSED("ADAM0020024"),
ADAM_USER_EMAIL_REGISTERED("ADAM0020025"),
ADAM_USER_PASSWORD_FORGET_PHONE("ADAM0020026"),
ADAM_USER_PASSWORD_ERROR_5("ADAM0020027"),
ADAM_USER_PASSWORD_ERROR_7("ADAM0020028"),
ADAM_USER_HAS_BEEN_ACTIVATED("ADAM0020029"),
ADAM_USER_HAS_BEEN_REMOVED("ADAM0020030"),
// Company
ADAM_COM_0030001("ADAM_COM_0030001"),
ADAM_COM_0030002("ADAM_COM_0030002"),
ADAM_COM_0030003("ADAM_COM_0030003"),
ADAM_COM_0030004("ADAM_COM_0030004"),
ADAM_COM_0030005("ADAM_COM_0030005"),
// Account
ADAM_ACCOUNT_004001("ADAM_ACCOUNT_004001"),
ADAM_ACCOUNT_004002("ADAM_ACCOUNT_004002"),
ADAM_ACCOUNT_004003("ADAM_ACCOUNT_004003"),
ADAM_ACCOUNT_004004("ADAM_ACCOUNT_004004"),
// Wallet
ADAM_WALLET_005001("ADAM_WALLET_005001"),
ADAM_WALLET_005002("ADAM_WALLET_005002"),
ADAM_WALLET_005003("ADAM_WALLET_005003"),
ADAM_WALLET_005004("ADAM_WALLET_005004"),
ADAM_WALLET_005005("ADAM_WALLET_005005"),
// Payout
ADAM_PAYOUT_006001("ADAM_PAYOUT_006001"),
ADAM_PAYOUT_006002("ADAM_PAYOUT_006002"),
ADAM_PAYOUT_006003("ADAM_PAYOUT_006003"),
ADAM_PAYOUT_006004("ADAM_PAYOUT_006004"),
ADAM_PAYOUT_006005("ADAM_PAYOUT_006005"),
ADAM_PAYOUT_006006("ADAM_PAYOUT_006006"),
ADAM_PAYOUT_006007("ADAM_PAYOUT_006007"),
ADAM_PAYOUT_006008("ADAM_PAYOUT_006008"),
ADAM_PAYOUT_006009("ADAM_PAYOUT_006009"),
ADAM_PAYOUT_006010("ADAM_PAYOUT_006010"),
// Funding
ADAM_FUNDING_007001("ADAM_FUNDING_007001"),
// Conversion
ADAM_CONVERSION_008001("ADAM_CONVERSION_008001"),
ADAM_CONVERSION_008002("ADAM_CONVERSION_008002"),
ADAM_CONVERSION_008003("ADAM_CONVERSION_008003"),
ADAM_CONVERSION_008004("ADAM_CONVERSION_008004"),
ADAM_CONVERSION_008005("ADAM_CONVERSION_008005"),
ADAM_CONVERSION_008006("ADAM_CONVERSION_008006"),
// Transaction
ADAM_TRANSACTION_008001("ADAM_TRANSACTION_008001"),
// Administration
ADAM_ADMINISTRATION_009001("ADAM_ADMINISTRATION_009001"),
ADAM_ADMINISTRATION_009002("ADAM_ADMINISTRATION_009002"),
ADAM_ADMINISTRATION_009003("ADAM_ADMINISTRATION_009003"),
ADAM_ADMINISTRATION_009004("ADAM_ADMINISTRATION_009004"),
ADAM_ADMINISTRATION_009005("ADAM_ADMINISTRATION_009005"),
// FEGIN Account
ADAM_FEGIN_ACCOUNT_100001("ADAM_FEGIN_ACCOUNT_100001"),
// FEGIN Bank cc
ADAM_FEGIN_BANK_CC_200001("ADAM_FEGIN_BANK_CC_200001"),
;
AdamErrorCode(String code) {
this.code = code;
}
private String code;
private static final Map<String, AdamErrorCode> valueMap;
static {
Map<String, AdamErrorCode> errorMap = new HashMap<>();
for (AdamErrorCode errorCode : AdamErrorCode.values()) {
errorMap.put(errorCode.code, errorCode);
}
valueMap = Collections.unmodifiableMap(errorMap);
}
public static AdamErrorCode getErrorCode(String code) {
return valueMap.get(code);
}
public String getCode() {
return this.code;
}
public String getVal() {
return ErrorCodeProperties.getValue(this.code);
}
}
......@@ -22,4 +22,6 @@ public class AdamThirdPartParam implements Serializable {
private String mobile;
@ApiModelProperty(position = 16, required = false, value = "验证码[新账号时必传]", example = "111111")
private String code;
@ApiModelProperty(position = 17, required = false, value = "强制绑定[第三方账号已绑定其他手机号时]", example = "false")
private Boolean force;
}
......@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@ApiModel(value = "ThirdPartInfoVo", description = "用户第三方信息")
@Data
public class AdamThirdPartInfoVo implements java.io.Serializable, Cloneable {
......@@ -20,6 +22,10 @@ public class AdamThirdPartInfoVo implements java.io.Serializable, Cloneable {
private String platform;
@ApiModelProperty(position = 16, value = "状态[1-绑定,2-解绑]")
private Integer state;
@ApiModelProperty(position = 17, value = "状态[1-绑定,2-解绑]")
private String createdAt;
@ApiModelProperty(position = 18, value = "状态[1-绑定,2-解绑]")
private String updatedAt;
private static final AdamThirdPartInfoVo obj = new AdamThirdPartInfoVo();
......
......@@ -32,9 +32,13 @@ public class AdamUserInfoVo implements java.io.Serializable, Cloneable {
private String tagMe;
@ApiModelProperty(position = 21, value = "注册时间")
private String createAt;
@ApiModelProperty(position = 22, value = "是否完善信息[0-未完善,1-已完善]")
@ApiModelProperty(position = 22, value = "最近一次更新时间")
private String updatedAt;
@ApiModelProperty(position = 23, value = "注销时间")
private String closedAt;
@ApiModelProperty(position = 24, value = "是否完善信息[0-未完善,1-已完善]")
private Integer isComplete;
// @ApiModelProperty(position = 23, value = "")
// @ApiModelProperty(position = 25, value = "")
// private String rongCloudToken;
private static final AdamUserInfoVo obj = new AdamUserInfoVo();
......
......@@ -2,6 +2,10 @@ package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.entity.AdamAddresses;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
......@@ -13,4 +17,15 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IAdamAddressesService extends IService<AdamAddresses> {
void add(AdamAddresses adamAddresses);
List<AdamAddresses> list(String uid);
AdamAddresses query(String uid, String addressesId);
void def(String uid, String addressesId);
void edit(AdamAddresses info);
void remove(String uid, String addressesId);
}
......@@ -14,12 +14,14 @@ import java.util.List;
* @since 2021-04-28
*/
public interface IAdamEntersService extends IService<AdamEnters> {
List<AdamEnters> list(String uid);
List<AdamEnters> queryByUid(String uid);
void add(AdamEnters info);
AdamEnters query(String uid, String entersId);
void def(String uid, String entersId);
void edit(AdamEnters info);
void remove(String uid, String entersId);
......
......@@ -15,4 +15,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
public interface IAdamUserInfoService extends IService<AdamUserInfo> {
void edit(AdamUserInfoVo userInfoVo);
void editMobile(String uid, String mobile);
}
package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.entity.AdamUser;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 用户 服务类
......@@ -32,8 +35,38 @@ public interface IAdamUserService extends IService<AdamUser> {
/**
* 第三方账号注册
*
* @param thirdPartParam
* @param param
* @return AdamUserInfoVo
*/
AdamUserInfoVo register(AdamThirdPartParam thirdPartParam);
AdamUserInfoVo register(AdamThirdPartParam param);
/**
* 第三方账号绑定(不存在已绑定账号)
*
* @param uid
* @param param
* @return List<AdamThirdPartInfoVo>
*/
List<AdamThirdPartInfoVo> bindTpa(String uid, AdamThirdPartParam param);
/**
* 第三方账号绑定(存在已绑定账号)
*
* @param bindUid
* @param unBindUid
* @param param
* @return
*/
List<AdamThirdPartInfoVo> bindTpaForce(String bindUid, String unBindUid, AdamThirdPartParam param);
/**
* 第三方账号解绑
*
* @param uid
* @param platform
* @return List<AdamThirdPartInfoVo>
*/
List<AdamThirdPartInfoVo> unBindTpa(String uid, String platform);
void close(String uid);
}
......@@ -279,7 +279,7 @@ create table adam_user_member
(
mid int unsigned auto_increment primary key,
uid varchar(64) not null,
member_id varchar(255) commet '会员类型id',
member_id varchar(255) comment '会员类型id',
member_no int unsigned not null,
state tinyint comment '1-NORMAL,2-INVALID',
expiry_at datetime comment '到期日期',
......
......@@ -6,7 +6,15 @@ package com.liquidnet.service.adam.constant;
public class AdamRedisConst {
public static final String ADAM = "adam";
public static final String INFO_IDENTITY = ADAM.concat(":identity");
public static final String INFO_IDENTITY_MOBILE = INFO_IDENTITY.concat(":mobile");
public static final String INFO_IDENTITY_THIRD_PARTY = INFO_IDENTITY.concat(":third_party");
public static final String INFO_USER = ADAM.concat(":list:users");
public static final String INFO_REAL_NAME = ADAM.concat(":list:real_name");
public static final String INFO_THIRD_PARTY = ADAM.concat(":list:third_party");
public static final String INFO_ENTERS = ADAM.concat(":list:enters:");
public static final String INFO_ADDRESSES = ADAM.concat(":list:addresses:");
public static final String INFO_MEMBERS = ADAM.concat(":list:members");
......@@ -18,12 +26,6 @@ public class AdamRedisConst {
public static final String MEMBER_MEMBER_NO_MAX_KEY = ADAM.concat(":members:member_no_max:");
public static final String INFO_IDENTITY = ADAM.concat(":identity");
public static final String INFO_IDENTITY_MOBILE = INFO_IDENTITY.concat(":mobile");
public static final String INFO_IDENTITY_THIRD_PARTY = INFO_IDENTITY.concat(":third_party");
public static final String INFO_USER = ADAM.concat(":list:users");
public static final String INFO_REAL_NAME = ADAM.concat(":list:real_name");
public static final String INFO_THIRD_PARTY = ADAM.concat(":list:third_party");
// public static final String USER_CONFIRM_SMS_CODE_KEY = ADAM + ":user:sms_confirm:";
//
......
package com.liquidnet.service.adam.constant;
import com.liquidnet.common.exception.constant.ErrorCode;
public class AdamUserConst {
public enum UserAuthTypeEnum {
......@@ -54,60 +52,4 @@ public class AdamUserConst {
return desc;
}
}
public enum UserLoginLogMsgTypeEnum{
LOGIN_SUCCESS(ErrorCode.SUCCESS.getCode(), "login success"),
LOGIN_FAIL(ErrorCode.ERROR.getCode(), "login fail"),
LOGIN_OUT_SUCCESS(ErrorCode.SUCCESS.getCode(), "login out success"),
LOGIN_OUT_FORCE_MSG_OTHER_SITE(ErrorCode.SUCCESS.getCode(), "force login out(other site)"),
LOGIN_OUT_FORCE_MSG_USER_FROZEN(ErrorCode.SUCCESS.getCode(), "force login out(user frozen)"),
LOGIN_OUT_FORCE_MSG_COM_FROZEN(ErrorCode.SUCCESS.getCode(), "force login out(company frozen)"),
LOGIN_OUT_FORCE_MSG_SYS_UPDATE(ErrorCode.SUCCESS.getCode(), "force login out(system update)"),
LOGIN_OUT_FORCE_MSG_LOGIN_TIMEOUT(ErrorCode.SUCCESS.getCode(), "force login out(login timeout)"),
LOGIN_OUT_FORCE_MSG_EMAIL_UPDATE(ErrorCode.SUCCESS.getCode(), "force login out(email update)"),
REGISTER_SUCCESS(ErrorCode.SUCCESS.getCode(), "Balances"),
REGISTER_FAIL(ErrorCode.ERROR.getCode(), "Transactions")
;
private String status;
private String desc;
UserLoginLogMsgTypeEnum(String status,String desc) {
this.status = status;
this.desc = desc;
}
public String getStatus() {
return status;
}
public String getDesc() {
return desc;
}
public static UserLoginLogMsgTypeEnum getEnumByName(String name){
UserLoginLogMsgTypeEnum[] enums = UserLoginLogMsgTypeEnum.values();
UserLoginLogMsgTypeEnum rsEnum = null;
for(UserLoginLogMsgTypeEnum r:enums){
if(r.name().equalsIgnoreCase(name)){
rsEnum = r;
}
}
return rsEnum;
}
public static String getDescByName(String name){
UserLoginLogMsgTypeEnum[] enums = UserLoginLogMsgTypeEnum.values();
String desc = "";
for(UserLoginLogMsgTypeEnum r:enums){
if(r.name().equalsIgnoreCase(name)){
desc = r.getDesc();
}
}
return desc;
}
}
}
......@@ -2,14 +2,24 @@ package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.entity.AdamAddresses;
import com.liquidnet.service.adam.entity.AdamEnters;
import com.liquidnet.service.adam.service.IAdamAddressesService;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.AdamAddressesParam;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
......@@ -27,16 +37,24 @@ import java.util.List;
@RestController
@RequestMapping("addr")
public class AdamAddressesController {
@Autowired
IAdamAddressesService adamAddressesService;
@ApiOperationSupport(order = 1)
@ApiOperation(value = "添加收获地址")
@PostMapping("add")
public ResponseDto<Object> add(@RequestBody AdamAddressesParam parameter) {
// TODO: 2021/4/28 数据校验、身份认证、获取登录UID
String uid = "1";
// TODO: 2021/4/28 数据校验
String currentUid = CurrentUtil.getCurrentUid();
// TODO: 2021/5/10
AdamAddresses adamAddresses = new AdamAddresses();
BeanUtils.copyProperties(parameter, adamAddresses);
adamAddresses.setUid(currentUid);
adamAddresses.setAddressesId(String.valueOf(IDGenerator.nextSnowId()));
adamAddresses.setCreatedAt(LocalDateTime.now());
adamAddresses.setState(1);
adamAddressesService.add(adamAddresses);
return ResponseDto.success();
}
......@@ -45,15 +63,12 @@ public class AdamAddressesController {
@ApiOperation(value = "收获地址列表")
@GetMapping("list")
public ResponseDto<List<AdamAddressesVo>> list() {
// TODO: 2021/4/29 获取登录UID
String uid = "1";
String currentUid = CurrentUtil.getCurrentUid();
List<AdamAddressesVo> voList = new ArrayList<>();
voList.add(AdamAddressesVo.getNew());
voList.add(AdamAddressesVo.getNew());
// TODO: 2021/5/10
adamAddressesService.list(currentUid).forEach(i -> {
voList.add(AdamAddressesVo.getNew().copy(i));
});
return ResponseDto.success(voList);
}
......@@ -62,12 +77,13 @@ public class AdamAddressesController {
@ApiOperation(value = "设置默认收货地址")
@PostMapping("def/{addrId}")
public ResponseDto<Object> def(@PathVariable String addrId) {
// TODO: 2021/4/28 数据校验、身份认证、获取登录UID
String uid = "1";
// TODO: 2021/5/10
String currentUid = CurrentUtil.getCurrentUid();
AdamAddresses addresses = adamAddressesService.query(currentUid, addrId);
if (null == addresses) return ResponseDto.failure(ErrorMapping.get("10106"));
if (!addresses.getIsDefault()) {
adamAddressesService.def(currentUid, addrId);
}
return ResponseDto.success();
}
......@@ -75,11 +91,16 @@ public class AdamAddressesController {
@ApiOperation(value = "编辑收获地址")
@PostMapping("edit")
public ResponseDto<Object> edit(@RequestBody AdamAddressesParam parameter) {
// TODO: 2021/4/28 校验、获取登录UID
String uid = "1";
// TODO: 2021/4/28 校验
String currentUid = CurrentUtil.getCurrentUid();
// TODO: 2021/5/11
AdamAddresses updateInfo = new AdamAddresses();
BeanUtils.copyProperties(parameter, updateInfo);
updateInfo.setUpdatedAt(LocalDateTime.now());
updateInfo.setUid(currentUid);
updateInfo.setState(1);
adamAddressesService.edit(updateInfo);
return ResponseDto.success();
}
......@@ -88,12 +109,13 @@ public class AdamAddressesController {
@ApiOperation(value = "删除收获地址")
@PostMapping("del/{addrId}")
public ResponseDto<Object> del(@PathVariable String addrId) {
// TODO: 2021/4/28 校验、获取登录UID
String uid = "1";
// TODO: 2021/5/11
String currentUid = CurrentUtil.getCurrentUid();
AdamAddresses addresses = adamAddressesService.query(currentUid, addrId);
if (null == addresses) return ResponseDto.failure(ErrorMapping.get("10106"));
adamAddressesService.remove(currentUid, addrId);
return ResponseDto.success();
}
}
......@@ -3,7 +3,7 @@ package com.liquidnet.service.adam.controller;
import com.github.pagehelper.PageInfo;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.AdamCollectParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
......
......@@ -2,8 +2,10 @@ package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.AdamEntersParam;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.entity.AdamEnters;
......@@ -40,13 +42,13 @@ public class AdamEntersController {
@ApiOperation(value = "添加入场人")
@PostMapping("add")
public ResponseDto<Object> add(@RequestBody AdamEntersParam parameter) {
// TODO: 2021/4/28 数据校验、身份认证、获取登录UID
String uid = "1";
// TODO: 2021/4/28 数据校验
String currentUid = CurrentUtil.getCurrentUid();
AdamEnters addInfo = new AdamEnters();
BeanUtils.copyProperties(parameter, addInfo);
addInfo.setUid(uid);
addInfo.setUid(currentUid);
addInfo.setEntersId(String.valueOf(IDGenerator.nextSnowId()));
addInfo.setCreatedAt(LocalDateTime.now());
addInfo.setState(1);
......@@ -60,12 +62,10 @@ public class AdamEntersController {
@ApiOperation(value = "入场人列表")
@GetMapping("list")
public ResponseDto<List<AdamEntersVo>> list() {
// TODO: 2021/4/29 获取登录UID
String uid = "1";
String currentUid = CurrentUtil.getCurrentUid();
List<AdamEntersVo> voList = new ArrayList<>();
adamEntersService.list(uid).forEach(i -> {
adamEntersService.queryByUid(currentUid).forEach(i -> {
voList.add(AdamEntersVo.getNew().copy(i));
});
......@@ -76,12 +76,13 @@ public class AdamEntersController {
@ApiOperation(value = "设置默认入场人")
@PostMapping("def/{entersId}")
public ResponseDto<Object> def(@PathVariable String entersId) {
// TODO: 2021/4/28 数据校验、身份认证、获取登录UID
String uid = "1";
// TODO: 2021/5/10
String currentUid = CurrentUtil.getCurrentUid();
AdamEnters enters = adamEntersService.query(currentUid, entersId);
if (null == enters) return ResponseDto.failure(ErrorMapping.get("10105"));
if (!enters.getIsDefault()) {
adamEntersService.def(currentUid, entersId);
}
return ResponseDto.success();
}
......@@ -89,13 +90,16 @@ public class AdamEntersController {
@ApiOperation(value = "编辑入场人")
@PostMapping("edit")
public ResponseDto<Object> edit(@RequestBody AdamEntersParam parameter) {
// TODO: 2021/4/28 校验、获取登录UID
String uid = "1";
// TODO: 2021/4/28 校验
String currentUid = CurrentUtil.getCurrentUid();
AdamEnters enters = adamEntersService.query(currentUid, parameter.getEntersId());
if (null == enters) return ResponseDto.failure(ErrorMapping.get("10105"));
AdamEnters updateInfo = new AdamEnters();
BeanUtils.copyProperties(parameter, updateInfo);
updateInfo.setUpdatedAt(LocalDateTime.now());
updateInfo.setUid(uid);
updateInfo.setUid(currentUid);
updateInfo.setState(1);
adamEntersService.edit(updateInfo);
......@@ -107,11 +111,12 @@ public class AdamEntersController {
@ApiOperation(value = "删除入场人")
@PostMapping("del/{entersId}")
public ResponseDto<Object> del(@PathVariable String entersId) {
// TODO: 2021/4/28 校验、获取登录UID
String uid = "1";
String currentUid = CurrentUtil.getCurrentUid();
adamEntersService.remove(uid, entersId);
AdamEnters enters = adamEntersService.query(currentUid, entersId);
if (null == enters) return ResponseDto.failure(ErrorMapping.get("10105"));
adamEntersService.remove(currentUid, entersId);
return ResponseDto.success();
}
......
......@@ -6,17 +6,19 @@ import com.aliyuncs.dypnsapi.model.v20170525.GetMobileResponse;
import com.aliyuncs.exceptions.ClientException;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.vo.AdamLoginInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.service.IAdamRealNameService;
import com.liquidnet.service.adam.service.IAdamThirdPartyService;
import com.liquidnet.service.adam.service.IAdamUserService;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
......@@ -25,9 +27,12 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.util.DigestUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
......@@ -43,6 +48,8 @@ public class AdamLoginController {
@Autowired
JwtValidator jwtValidator;
@Autowired
RedisUtil redisUtil;
@Autowired
DefaultAcsClient defaultAcsClient;
@Autowired
IAdamUserService adamUserService;
......@@ -89,7 +96,7 @@ public class AdamLoginController {
} catch (Exception e) {
log.error("验证码发送异常[mobile:{}]", mobile, e);
return ResponseDto.failure("验证码发送失败");
return ResponseDto.failure(ErrorMapping.get("10001"));
}
return ResponseDto.success();
}
......@@ -121,8 +128,7 @@ public class AdamLoginController {
Map<String, Object> claimsMap = new HashMap<>();
claimsMap.put("uid", userInfoVo.getUid());
loginInfoVo.setToken(jwtValidator.create(claimsMap));
loginInfoVo.setToken(this.ssoProcess(claimsMap));
return ResponseDto.success(loginInfoVo);
}
......@@ -153,35 +159,11 @@ public class AdamLoginController {
Map<String, Object> claimsMap = new HashMap<>();
claimsMap.put("uid", userInfoVo.getUid());
loginInfoVo.setToken(jwtValidator.create(claimsMap));
loginInfoVo.setToken(this.ssoProcess(claimsMap));
return ResponseDto.success(AdamLoginInfoVo.getNew());
}
// @ApiOperationSupport(order = 5)
// @ApiOperation(value = "第三方账号注册")
// @ApiImplicitParams({
// @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "openId", value = "第三方OPENID"),
// @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "nickname", value = "昵称"),
// @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "avatar", value = "头像"),
// @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "platform", value = "平台类型", allowableValues = "WEIBO,WECHAT,QQ"),
// @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mobile", value = "手机号"),
// @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "platform", value = "验证码"),
// })
// @PostMapping(value = {"tpa/reg"})
// public ResponseDto<AdamLoginInfoVo> loginByTpaRegister(@RequestParam String openId, @RequestParam String nickname,
// @RequestParam String avatar, @RequestParam String platform,
// @RequestParam String mobile, @RequestParam String code) {
// log.info("login by tpa openId:{},nickname:{},avatar:{},platform:{},mobile:{},code:{}",
// openId, nickname, avatar, platform, mobile, code);
//
// // TODO: 2021/5/10
//
//
// return ResponseDto.success(AdamLoginInfoVo.getNew());
// }
@ApiOperationSupport(order = 6)
@ApiOperationSupport(order = 5)
@ApiOperation(value = "第三方账号登录")
@PostMapping(value = {"login/tpa"})
public ResponseDto<AdamLoginInfoVo> loginByTpa(@RequestBody AdamThirdPartParam parameter) {
......@@ -190,25 +172,48 @@ public class AdamLoginController {
AdamLoginInfoVo loginInfoVo = AdamLoginInfoVo.getNew();
if (StringUtils.isEmpty(parameter.getMobile())) {
AdamThirdPartInfoVo thirdPartInfoVo = adamThirdPartyService.queryByOpenId(parameter.getOpenId(), parameter.getPlatform());
if (Objects.isNull(thirdPartInfoVo)) return ResponseDto.failure("第三方账号未注册");
String uid = adamUserService.queryUidByRedis(parameter.getOpenId(), parameter.getPlatform());
if (StringUtils.isEmpty(uid)) return ResponseDto.failure("第三方账号未注册");
loginInfoVo.setUserInfo(adamUserService.queryByUid(thirdPartInfoVo.getUid()));
loginInfoVo.setRealNameInfo(adamRealNameService.queryByUid(thirdPartInfoVo.getUid()));
loginInfoVo.setThirdPartInfo(adamThirdPartyService.queryByUid(thirdPartInfoVo.getUid()));
loginInfoVo.setUserInfo(adamUserService.queryByUid(uid));
loginInfoVo.setRealNameInfo(adamRealNameService.queryByUid(uid));
loginInfoVo.setThirdPartInfo(adamThirdPartyService.queryByUid(uid));
} else {// 新账号注册
if (!this.checkSmsCode(parameter.getMobile(), parameter.getCode())) return ResponseDto.failure("验证码无效");
loginInfoVo.setUserInfo(adamUserService.register(parameter));
loginInfoVo.setThirdPartInfo(adamThirdPartyService.queryByUid(loginInfoVo.getUserInfo().getUid()));
}
Map<String, Object> claimsMap = new HashMap<>();
claimsMap.put("uid", loginInfoVo.getUserInfo().getUid());
loginInfoVo.setToken(jwtValidator.create(claimsMap));
loginInfoVo.setToken(this.ssoProcess(claimsMap));
return ResponseDto.success(loginInfoVo);
}
@ApiOperationSupport(order = 6)
@ApiOperation(value = "登出")
@PostMapping(value = {"logout"})
public ResponseDto<Object> logout(HttpServletRequest request) {
String authorization = request.getHeader("authorization");
String ssoKey = jwtValidator.getSsoRedisKey().concat(
DigestUtils.md5DigestAsHex(authorization.substring(7).getBytes(StandardCharsets.UTF_8))
);
redisUtil.set(ssoKey, false);
return ResponseDto.success();
}
@ApiOperationSupport(order = 7)
@ApiOperation(value = "注销")
@PostMapping(value = {"close"})
public ResponseDto<Object> close(HttpServletRequest request) {
adamUserService.close(CurrentUtil.getCurrentUid());
return this.logout(request);
}
/* ---------------------------- Internal Method ---------------------------- */
private boolean checkSmsCode(String mobile, String code) {
......@@ -251,4 +256,16 @@ public class AdamLoginController {
}
return null;
}
private String ssoProcess(Map<String, Object> claimsMap) {
redisUtil.delKeysByPrefix(jwtValidator.getSsoRedisKey());
String token = jwtValidator.create(claimsMap);
String ssoKey = jwtValidator.getSsoRedisKey().concat(DigestUtils.md5DigestAsHex(token.getBytes(StandardCharsets.UTF_8)));
redisUtil.set(ssoKey, true, jwtValidator.getExpireTtl() * 60);
return token;
}
}
......@@ -2,7 +2,7 @@ package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.service.IAdamMemberService;
import io.swagger.annotations.Api;
......
......@@ -2,24 +2,32 @@ package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.AdamUserInfoParam;
import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.service.IAdamThirdPartyService;
import com.liquidnet.service.adam.service.IAdamUserInfoService;
import com.liquidnet.service.adam.service.IAdamUserService;
import com.liquidnet.service.base.ResponseDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@ApiSupport(order = 10020)
@Api(tags = "用户中心")
......@@ -27,25 +35,37 @@ import java.util.List;
@RestController
@RequestMapping("user")
public class AdamUserController {
@Autowired
Environment environment;
@Autowired
IAdamUserService adamUserService;
@Autowired
IAdamUserInfoService adamUserInfoService;
@Autowired
IAdamThirdPartyService adamThirdPartyService;
@ApiOperationSupport(order = 1)
@ApiOperation(value = "个人资料编辑")
@PostMapping(value = {"edit"})
public ResponseDto<AdamUserInfoVo> edit(@RequestBody AdamUserInfoParam adamUserInfoParam) {
public ResponseDto<AdamUserInfoVo> edit(@RequestBody AdamUserInfoParam parameter) {
// TODO: 2021/5/10
log.info("adamUserInfoParam:{}", JsonUtils.toJson(adamUserInfoParam));
String uid = "1";
AdamUserInfoVo userInfoVo = adamUserService.queryByUid(uid);
BeanUtils.copyProperties(adamUserInfoParam, userInfoVo);
adamUserInfoService.edit(userInfoVo);
return ResponseDto.success(userInfoVo);
log.info("parameter:{}", JsonUtils.toJson(parameter));
String currentUid = CurrentUtil.getCurrentUid();
AdamUserInfoVo editUserInfoVo = adamUserService.queryByUid(currentUid);
editUserInfoVo.setAvatar(parameter.getAvatar());
editUserInfoVo.setBackground(parameter.getBackground());
editUserInfoVo.setNickName(parameter.getNickName());
editUserInfoVo.setSex(parameter.getSex());
editUserInfoVo.setBirthday(parameter.getBirthday());
editUserInfoVo.setArea(parameter.getArea());
editUserInfoVo.setSignature(parameter.getSignature());
editUserInfoVo.setTagMe(parameter.getTagMe());
editUserInfoVo.setUpdatedAt(DateUtil.format(LocalDateTime.now(), DateUtil.Formatter.yyyyMMddHHmmss));
adamUserInfoService.edit(editUserInfoVo);
return ResponseDto.success(editUserInfoVo);
}
@ApiOperationSupport(order = 2)
......@@ -56,50 +76,55 @@ public class AdamUserController {
})
@PostMapping(value = {"edit/mobile"})
public ResponseDto<Object> editMobile(@RequestParam String mobile, @RequestParam String code) {
log.info("mobile:{},code:{}", mobile, code);
// TODO: 2021/5/10
log.info("mobile:{},code:{}", mobile, code);
if (!this.checkSmsCode(mobile, code)) return ResponseDto.failure("验证码无效");
return ResponseDto.success();
}
@ApiOperationSupport(order = 3)
@ApiOperation(value = "密码修改")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mobile", value = "手机号"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "password", value = "密码"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "code", value = "验证码"),
})
@PostMapping(value = {"edit/pwd"})
public ResponseDto<Object> editPwd(@RequestParam String mobile, @RequestParam String password, @RequestParam String code) {
log.info("mobile:{},password:{},code:{}", mobile, password, code);
// TODO: 2021/5/10
String uid = CurrentUtil.getCurrentUid();
adamUserInfoService.editMobile(uid, mobile);
return ResponseDto.success();
}
// @ApiOperationSupport(order = 3)
// @ApiOperation(value = "密码修改")
// @ApiImplicitParams({
// @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mobile", value = "手机号"),
// @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "password", value = "密码"),
// @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "code", value = "验证码"),
// })
// @PostMapping(value = {"edit/pwd"})
// public ResponseDto<Object> editPwd(@RequestParam String mobile, @RequestParam String password, @RequestParam String code) {
// log.info("mobile:{},password:{},code:{}", mobile, password, code);
//
// // TODO: 2021/5/10
//
//
// return ResponseDto.success();
// }
@ApiOperationSupport(order = 4)
@ApiOperation(value = "绑定第三方账号")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "openId", value = "第三方OPENID"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "nickName", value = "昵称"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "avatar", value = "头像"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "platform", value = "平台类型", allowableValues = "WEIBO,WECHAT,QQ"),
})
@PostMapping(value = {"tpa/bind"})
public ResponseDto<List<AdamThirdPartInfoVo>> bindTpa(@RequestParam String openId, @RequestParam String nickname,
@RequestParam String avatar, @RequestParam String platform) {
log.info("bind tpa openId:{}, nickname:{}, avatar: {}, platform:{}", openId, nickname, avatar, platform);
public ResponseDto<List<AdamThirdPartInfoVo>> bindTpa(@RequestBody AdamThirdPartParam parameter) {
// TODO: 2021/5/10
List<AdamThirdPartInfoVo> voList = new ArrayList<>();
voList.add(AdamThirdPartInfoVo.getNew());
log.info("login by tpa:{}", JsonUtils.toJson(parameter));
String currentUid = CurrentUtil.getCurrentUid();
return ResponseDto.success(voList);
String existUid = adamUserService.queryUidByRedis(parameter.getOpenId(), parameter.getPlatform());
if (StringUtils.isNotEmpty(existUid)) {
if (existUid.equals(currentUid)) {
return ResponseDto.success(adamThirdPartyService.queryByUid(currentUid));
}
Boolean force = parameter.getForce();
if (null != force && force) {// 强制解绑,并重新绑定当前账号
return ResponseDto.success(adamUserService.bindTpaForce(currentUid, existUid, parameter));
}
return ResponseDto.failure("第三方账号已绑定其它手机号");
}
return ResponseDto.success(adamUserService.bindTpa(currentUid, parameter));
}
@ApiOperationSupport(order = 5)
......@@ -109,13 +134,37 @@ public class AdamUserController {
})
@PostMapping(value = {"tpa/unbind/{platform}"})
public ResponseDto<List<AdamThirdPartInfoVo>> unbindTpa(@PathVariable String platform) {
log.info("unbind tpa.platform:{}", platform);
// TODO: 2021/5/10
List<AdamThirdPartInfoVo> voList = new ArrayList<>();
voList.add(AdamThirdPartInfoVo.getNew());
String currentUid = CurrentUtil.getCurrentUid();
log.info("unbind tpa.platform:{},uid:{}", platform, currentUid);
return ResponseDto.success(adamUserService.unBindTpa(currentUid, platform));
}
/* ---------------------------- Internal Method ---------------------------- */
private boolean checkSmsCode(String mobile, String code) {
if ("dev".equals(environment.getProperty("spring.profiles.active")) && "111111".equals(code)) {
return true;
}
return ResponseDto.success(voList);
LinkedMultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
paramsMap.add("mobile", mobile);
paramsMap.add("code", code);
LinkedMultiValueMap<String, String> headersMap = new LinkedMultiValueMap<>();
headersMap.add("token", null);
try {
// TODO: 2021/5/12
String respStr = HttpUtil.get("https://service.zhengzai.tv/smsValidation", paramsMap, headersMap);
log.info("###PHP.API.RESP:{}", respStr);
Map respMap = JsonUtils.fromJson(respStr, Map.class);
return StringUtils.equalsIgnoreCase("OK", (String) respMap.get("message"));
} catch (Exception e) {
log.error("验证码验证异常[mobile:{},code:{}]", mobile, code, e);
return false;
}
}
}
......@@ -2,7 +2,7 @@ package com.liquidnet.service.adam.controller.admin;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.AdamMemberParam;
import com.liquidnet.service.adam.entity.AdamMember;
import com.liquidnet.service.adam.service.admin.IAdamMemberAdminService;
......
......@@ -2,7 +2,7 @@ package com.liquidnet.service.adam.controller.admin;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.AdamMemberPriceParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
......
......@@ -7,6 +7,7 @@ import com.liquidnet.service.adam.entity.AdamThirdParty;
import com.liquidnet.service.adam.mapper.AdamThirdPartyMapper;
import com.liquidnet.service.adam.service.IAdamThirdPartyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
......@@ -32,24 +33,20 @@ public class AdamThirdPartyServiceImpl extends ServiceImpl<AdamThirdPartyMapper,
@Override
public List<AdamThirdPartInfoVo> queryByUid(String uid) {
List<AdamThirdPartInfoVo> thirdPartInfoVo = (List<AdamThirdPartInfoVo>) redisUtil.hget(AdamRedisConst.INFO_THIRD_PARTY, uid);
if (null == thirdPartInfoVo) {
thirdPartInfoVo = mongoTemplate.find(Query.query(Criteria.where("uid").is(uid).and("state").is(1)),
List<AdamThirdPartInfoVo> thirdPartInfoVos = (List<AdamThirdPartInfoVo>) redisUtil.hget(AdamRedisConst.INFO_THIRD_PARTY, uid);
if (null == thirdPartInfoVos) {
thirdPartInfoVos = mongoTemplate.find(Query.query(Criteria.where("uid").is(uid).and("state").is(1)),
AdamThirdPartInfoVo.class, AdamThirdPartInfoVo.class.getSimpleName());
redisUtil.hset(AdamRedisConst.INFO_THIRD_PARTY, uid, thirdPartInfoVo);
redisUtil.hset(AdamRedisConst.INFO_THIRD_PARTY, uid, thirdPartInfoVos);
}
return thirdPartInfoVo;
return thirdPartInfoVos;
}
@Override
public AdamThirdPartInfoVo queryByOpenId(String openId, String platform) {
AdamThirdPartInfoVo thirdPartInfoVo = (AdamThirdPartInfoVo) redisUtil.hget(AdamRedisConst.INFO_THIRD_PARTY.concat(platform), openId);
if (null == thirdPartInfoVo) {
thirdPartInfoVo = mongoTemplate.findOne(Query.query(Criteria.where("openId").is(openId)
return mongoTemplate.findOne(Query.query(Criteria.where("openId").is(openId)
.and("platform").is(platform).and("state").is(1)),
AdamThirdPartInfoVo.class, AdamThirdPartInfoVo.class.getSimpleName());
}
return thirdPartInfoVo;
}
}
......@@ -3,12 +3,13 @@ package com.liquidnet.service.adam.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.SqlMapping;
import com.liquidnet.commons.lang.util.BsonUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.entity.AdamUserInfo;
import com.liquidnet.service.adam.mapper.AdamUserInfoMapper;
import com.liquidnet.service.adam.service.IAdamUserInfoService;
import com.liquidnet.service.base.SqlMapping;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
......@@ -20,6 +21,8 @@ import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
......@@ -60,6 +63,7 @@ public class AdamUserInfoServiceImpl extends ServiceImpl<AdamUserInfoMapper, Ada
userInfoVo.getSignature(),
userInfoVo.getAvatar(),
userInfoVo.getBackground(),
// TODO: 2021/5/14 用户身份二维码
null, null,// qr_code, qr_pic
userInfoVo.getTagMe(),
userInfoVo.getUid()
......@@ -69,4 +73,22 @@ public class AdamUserInfoServiceImpl extends ServiceImpl<AdamUserInfoMapper, Ada
redisUtil.hset(AdamRedisConst.INFO_USER, userInfoVo.getUid(), userInfoVo);
}
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void editMobile(String uid, String mobile) {
AdamUserInfoVo updateInfoVo = AdamUserInfoVo.getNew();
updateInfoVo.setMobile(mobile);
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(updateInfoVo));
Document doc = mongoTemplate.getCollection(AdamUserInfoVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("uid").is(uid)).getQueryObject(),
object, new FindOneAndUpdateOptions().returnDocument(ReturnDocument.BEFORE)
);
AdamUserInfoVo beforeUserInfoVo = BsonUtil.toBean(doc, AdamUserInfoVo.class);
redisUtil.hdel(AdamRedisConst.INFO_IDENTITY_MOBILE, beforeUserInfoVo.getMobile());
redisUtil.hset(AdamRedisConst.INFO_IDENTITY_MOBILE, beforeUserInfoVo.getMobile(), uid);
beforeUserInfoVo.setMobile(mobile);
redisUtil.hset(AdamRedisConst.INFO_USER, uid, beforeUserInfoVo);
}
}
10001=验证码发送失败
10002=
10101=
10102=
10103=
10104=
10105=入场人不存在
10106=收获地址不存在
10201=
\ No newline at end of file
adam_addresses.add=张三
adam_addresses.edit=
adam_addresses.update.is_default=UPDATE ln_adam.adam_addresses set is_default=?, updated_at=? where addresses_id=?
adam_addresses.remove=UPDATE ln_adam.adam_addresses SET `state`=2, updated_at=?, deleted_at=? where addresses_id=?
\ No newline at end of file
adam_enters.add=INSERT INTO ln_adam.adam_enters (enters_id, `uid`, `type`,`name`, mobile, id_card, is_default, `state`, created_at, updated_at, deleted_at, `comment`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)
adam_enters.edit=UPDATE ln_adam.adam_enters SET `type`=?, `name`=?, mobile=?, id_card=?, is_default=?, `state`=?, updated_at=? where enters_id=?
adam_enters.update.is_default=UPDATE ln_adam.adam_enters set is_default=?, updated_at=? where enters_id=?
adam_enters.remove=UPDATE ln_adam.adam_enters SET `state`=?, updated_at=?, deleted_at=? where enters_id=?
\ No newline at end of file
adam_enters.remove=UPDATE ln_adam.adam_enters SET `state`=2, updated_at=?, deleted_at=? where enters_id=?
\ No newline at end of file
adam_user.add=insert into ln_adam.adam_user (`uid`, mobile, passwd, pay_code, `state`, created_at, updated_at, closed_at, `comment`) values (?,?,?,?,?,?,?,?,?)
\ No newline at end of file
adam_user.add=INSERT INTO ln_adam.adam_user (`uid`, mobile, passwd, pay_code, `state`, created_at, updated_at, closed_at, `comment`) VALUES (?,?,?,?,?,?,?,?,?)
adam_user.close=UPDATE ln_adam.adam_user SET `state`=2, updated_at=?, closed_at=? WHERE `uid`=?
\ No newline at end of file
......@@ -2,7 +2,7 @@ package com.liquidnet.service.consumer.service.processor;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.SqlMessage;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.consumer.service.IBaseDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
......@@ -34,7 +34,7 @@ public class ConsumerProcessor {
@RabbitListener(queues = MQConst.QUEUES_SQL_MAIN)
public void consumerSql(String msg) {
SqlMessage sqlMessage = JsonUtils.fromJson(msg, SqlMessage.class);
SqlMapping.SqlMessage sqlMessage = JsonUtils.fromJson(msg, SqlMapping.SqlMessage.class);
log.debug("consumer sql ==> Preparing:{}", JsonUtils.toJson(sqlMessage.getSqls()));
log.debug("consumer sql ==> Parameters:{}", JsonUtils.toJson(sqlMessage.getArgs()));
......
......@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
@Data
public class PerformanceAdminListParam {
......@@ -17,8 +18,10 @@ public class PerformanceAdminListParam {
@ApiModelProperty(value = "-2全部,0审核中,2审核拒绝", example = "0")
@NotNull(message = "不能为空")
private int auditStatus;
@ApiModelProperty(value = "停售时间", example = "2000-01-01 12:00:00")
private String stopSellTime;
@ApiModelProperty(value = "停售时间(天)-1全部", example = "-1")
private Long stopSellDay;
@ApiModelProperty(value = "停售时间", example = "2000-01-01 12:00:00",hidden = true)
private LocalDateTime stopSellTime;
@ApiModelProperty(value = "页数", example = "0")
@NotNull(message = "不能为空")
private int page;
......@@ -29,4 +32,9 @@ public class PerformanceAdminListParam {
private String orderItem;
@ApiModelProperty(value = "排序方式", hidden = true)
private String orderSc;
public void setStopSellDay(Long stopSellDay) {
LocalDateTime now = LocalDateTime.now();
this.stopSellTime = now.plusDays(-stopSellDay);
}
}
package com.liquidnet.service.kylin.dto.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel
@Data
public class PerformanceMemberAuditParam {
@ApiModelProperty(value = "演出id")
private String performancesId;
@ApiModelProperty(value = "演出名称")
private String title;
@ApiModelProperty(value = "是否会员")
private int isMember;
@ApiModelProperty(value = "是否专属")
private int isExclusive;
@ApiModelProperty(value = "0未提交 1待审核 2已拒绝 3已通过")
private int status;
@ApiModelProperty(value = "拒绝理由")
private int rejectTxt;
@ApiModelProperty("修改时间")
private String updatedAt;
@ApiModelProperty(value = "票种列表")
private List<TicketMemberAuditParam> ticketMemberAudit;
}
......@@ -23,8 +23,10 @@ public class PerformancePartnerListParam {
@ApiModelProperty(value = "排序类型 1创建时间倒序 2创建时间正序 3演出时间倒序 4演出时间正序", example = "0")
@NotNull(message = "不能为空")
private int orderType;
@ApiModelProperty(value = "停售时间", example = "2000-01-01 12:00:00")
private String stopSellTime;
@ApiModelProperty(value = "停售时间(单位天)", example = "-1全部")
private Long stopSellDay;
@ApiModelProperty(value = "停售时间(单位天 -1全部", example = "-1", hidden = true)
private LocalDateTime stopSellTime;
@ApiModelProperty(value = "页数", example = "0")
@NotNull(message = "不能为空")
private int page;
......@@ -58,4 +60,9 @@ public class PerformancePartnerListParam {
}
}
public void setStopSellDay(Long stopSellDay) {
LocalDateTime now = LocalDateTime.now();
this.stopSellTime = now.plusDays(-stopSellDay);
}
}
package com.liquidnet.service.kylin.dto.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@ApiModel
@Data
public class TicketMemberAuditParam {
@ApiModelProperty(value = "演出id")
private String ticketsId;
@ApiModelProperty(value = "演出名称")
private String title;
@ApiModelProperty(value = "会员优惠价格")
private BigDecimal priceDiscountMember;
@ApiModelProperty(value = "会员优惠时间段限购数量")
private int memberLimitCount;
@ApiModelProperty(value = "会员提前开售分钟")
private int advanceMinuteMember;
}
package com.liquidnet.service.kylin.dto.vo.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel
@Data
public class PerformanceMemberHistoryVo {
@ApiModelProperty(value = "0未提交 1待审核 2已拒绝 3已通过")
private int status;
@ApiModelProperty(value = "审核时间")
private String auditTime;
@ApiModelProperty(value = "拒绝理由")
private int rejectTxt;
}
......@@ -76,6 +76,9 @@ public class TicketPartnerVo implements Serializable {
@ApiModelProperty(value = "场次id")
private String timesId;
@ApiModelProperty(value = "是否开启缺票登记")
private int isLackRegister;
@ApiModelProperty(value = "剩余库存", example = "100")
private int surplusGeneral;
......
......@@ -7,6 +7,7 @@ import com.liquidnet.service.kylin.dao.PerformanceMemberAuditDao;
import com.liquidnet.service.kylin.dao.PerformanceRecommendAdminDao;
import com.liquidnet.service.kylin.dao.PerformanceTitleDao;
import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam;
import com.liquidnet.service.kylin.dto.param.PerformanceMemberAuditParam;
import com.liquidnet.service.kylin.dto.param.PerformanceRecommendAdminParam;
import com.liquidnet.service.kylin.dto.vo.partner.PerformanceMisVo;
import com.liquidnet.service.kylin.entity.KylinPerformances;
......@@ -83,17 +84,46 @@ public interface IKylinPerformancesAdminService extends IService<KylinPerformanc
/**
* 获取 演出会员信息(包含场次票)
* @param performanceId 演出id
* @return sql 数据
*/
PerformanceMemberAuditDao performanceMemberInfo(String performanceId);
//修改 演出会员信息(包含场次票)
/**
* 修改 演出会员信息(包含场次票)
* @param performanceMemberAuditParam 相关参数
* @return boolean
*/
boolean performanceMemberChange(PerformanceMemberAuditParam performanceMemberAuditParam);
//列表 待审核 演出会员信息
/**
* 列表 待审核 演出会员信息
* @param title 标题
* @return 演出名称 id
*/
PageInfo<PerformanceTitleDao> performanceMemberList(String title,int page,int size);
//详情 待审核 演出会员信息
/**
* 详情 待审核 演出会员信息
* @param performanceId 演出id
* @param status 状态
* @return sql 数据
*/
PerformanceMemberAuditDao performanceMemberAuditInfo(String performanceId,int status);
//审核 会员信息
//列表 演出会员审核记录
/**
* 审核演出会员相关信息
* @param performanceId 演出id
* @return boolean
*/
boolean performanceMemberAudit(String performanceId,int status,String rejectTxt);
/**
* 列表 演出会员审核记录
* @param performanceId 演出id
* @return 分页 vo 数据
*/
PageInfo<PerformanceMemberAuditParam> performanceAuditHistory(String performanceId);
}
......@@ -79,4 +79,20 @@ public interface IKylinTicketsPartnerService extends IService<KylinTickets> {
* @return vo
*/
TicketPartnerVo getTicketsMongo(String ticketsId);
/**
* 票上线
* @param ticketsId 票id
* @return boolean
*/
boolean onLine(String ticketsId);
/**
* 票下线
* @param ticketsId 票id
* @return boolean
*/
boolean outLine(String ticketsId);
//购票须知
}
......@@ -17,6 +17,8 @@ public class PerformanceMemberAuditDao {
private int isMember;
@ApiModelProperty(value = "是否专属")
private int isExclusive;
@ApiModelProperty(value = "是否已提交")
private int isSubmit;
@ApiModelProperty(value = "票种列表")
private List<TicketMemberAuditDao> ticketMemberAudit;
......
......@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@ApiModel
@Data
public class TicketMemberAuditDao {
......@@ -18,15 +20,15 @@ public class TicketMemberAuditDao {
@ApiModelProperty(value = "状态")
private int status;
@ApiModelProperty(value = "开售时间")
private int timeStart;
private String timeStart;
@ApiModelProperty(value = "原价")
private int price;
private BigDecimal price;
@ApiModelProperty(value = "会员优惠价格")
private int priceMember;
private BigDecimal priceDiscountMember;
@ApiModelProperty(value = "会员优惠时间段限购数量")
private int memberLimitCount;
@ApiModelProperty(value = "会员提前开售分钟")
private int timeStartMember;
private int advanceMinuteMember;
@ApiModelProperty(value = "是否会员")
private int isMember;
@ApiModelProperty(value = "是否专属")
......
......@@ -40,7 +40,8 @@
<result column="title" property="title"/>
</resultMap>
<resultMap id="PerformanceRecommendAdminDaoResult" type="com.liquidnet.service.kylin.dao.PerformanceRecommendAdminDao">
<resultMap id="PerformanceRecommendAdminDaoResult"
type="com.liquidnet.service.kylin.dao.PerformanceRecommendAdminDao">
<result column="performances_id" property="performancesId"/>
<result column="title" property="title"/>
<result column="time_start" property="timeStart"/>
......@@ -50,16 +51,16 @@
<resultMap id="ticketMemberAuditDaoResult" type="com.liquidnet.service.kylin.dao.TicketMemberAuditDao">
<result column="tickets_id" property="ticketsId"/>
<result column="t.title" property="title"/>
<result column="tt.use_start" property="useStart"/>
<result column="t.status" property="status"/>
<result column="t.time_start" property="timeStart"/>
<result column="t.price" property="price"/>
<result column="t.price_discount_member" property="priceMember"/>
<result column="advance_minute_member" property="timeStartMember"/>
<result column="t.limit_count_member" property="memberLimitCount"/>
<result column="t.is_member" property="isMember"/>
<result column="t.is_exclusive" property="isExclusive"/>
<result column="title" property="title"/>
<result column="use_start" property="useStart"/>
<result column="status" property="status"/>
<result column="time_start" property="timeStart"/>
<result column="price" property="price"/>
<result column="price_discount_member" property="priceDiscountMember"/>
<result column="advance_minute_member" property="advanceMinuteMember"/>
<result column="member_limit_count" property="memberLimitCount"/>
<result column="is_member" property="isMember"/>
<result column="is_exclusive" property="isExclusive"/>
</resultMap>
......@@ -112,8 +113,10 @@
) AS ot ON ot.performance_id = p.performances_id
<where>
<if test="title!=''">
AND title LIKE LIKE concat('%', #{title}, '%')
AND title LIKE concat('%', #{title}, '%')
</if>
<if test="status !='0'">
AND ps.STATUS = #{status}
<if test="status!='-2'">
AND ps.STATUS = #{status}
</if>
......@@ -123,9 +126,14 @@
<if test="timeStart!=''">
AND p.time_start BETWEEN #{timeStart} AND #{timeEnd}
</if>
<if test="stopSellTime!=''">
AND p.time_end LIKE concat('%', #{stopSellTime}, '%')
<if test="stopSellTime!=-1'">
AND p.time_end BETWEEN #{stopSellTime} AND NOW()
</if>
</if>
<if test="status=='0'">
AND ps.STATUS = #{status}
</if>
</where>
ORDER BY #{orderItem} #{orderSc}
</select>
......@@ -181,10 +189,10 @@
) AS ot ON ot.performance_id = p.performances_id
<where>
<if test="title!=''">
AND title LIKE LIKE concat('%', #{title}, '%')
AND title LIKE concat('%', #{title}, '%')
</if>
<if test="cityName!=''">
AND city_name LIKE LIKE concat('%', #{cityName}, '%')
AND city_name LIKE concat('%', #{cityName}, '%')
</if>
<if test="status!='-2'">
AND ps.STATUS = #{status}
......@@ -198,8 +206,8 @@
<if test="auditStatus=='-2'">
AND (ps.audit_status = 0 or ps.audit_status = 2)
</if>
<if test="stopSellTime!=''">
AND p.time_end LIKE concat('%', #{stopSellTime}, '%')
<if test="stopSellTime!=-1'">
AND p.time_end BETWEEN #{stopSellTime} AND NOW()
</if>
</where>
ORDER BY #{orderItem} #{orderSc}
......@@ -240,39 +248,45 @@
</select>
<!-- Mis根据演出id查询演出名称 -->
<select id="misPerformanceMemberInfo" resultMap="performanceTitleDaoResult">
SELECT
performances_id ,title
FROM
kylin_performances AS p
SELECT performances_id,
title
FROM kylin_performances AS p
LEFT JOIN kylin_performance_relations AS pr ON pr.performance_id = p.performances_id
WHERE performances_id = ${performancesId};
</select>
<!-- Mis根据演出id查询票种信息 -->
<select id="misTicketMemberInfo" resultMap="ticketMemberAuditDaoResult">
SELECT
tickets_id,t.title,tt.use_start,t.status,t.time_start,t.price,t.price_discount_member,advance_minute_member,t.limit_count_member,t.is_member,t.is_exclusive
FROM
kylin_ticket_time_relation AS ttr
SELECT tickets_id,
t.title,
use_start,
t.status,
time_start,
price,
price_discount_member,
advance_minute_member,
member_limit_count,
is_member,
is_exclusive
FROM kylin_ticket_time_relation AS ttr
LEFT JOIN kylin_ticket_times AS tt ON tt.ticket_times_id = ttr.times_id
LEFT JOIN(
SELECT
tickets_id ,
SELECT tickets_id,
tr.times_id as 'times_id',
title ,
status ,
time_start ,
price ,
advance_minute_member ,
price_discount_member ,
limit_count_member ,
is_member ,
title,
status,
t.time_start,
price,
advance_minute_member,
price_discount_member,
member_limit_count,
is_member,
is_exclusive
FROM
kylin_tickets AS t
FROM kylin_tickets AS t
LEFT JOIN kylin_ticket_status AS ts ON ts.ticket_id = t.tickets_id
LEFT JOIN kylin_ticket_relations AS tr ON tr.ticket_id = t.tickets_id
) as t on t.times_id = ttr.times_id where ttr.performance_id = ${performancesId};
) as t on t.times_id = ttr.times_id
where ttr.performance_id = ${performancesId};
</select>
</mapper>
package com.liquidnet.service.kylin.controller;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.FieldsVo;
import com.liquidnet.service.kylin.service.impl.FieldsServiceImpl;
import io.swagger.annotations.*;
......
package com.liquidnet.service.kylin.controller;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.BannersVo;
import com.liquidnet.service.kylin.service.impl.admin.KylinBannersServiceImpl;
import io.swagger.annotations.Api;
......
package com.liquidnet.service.kylin.controller;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.PerformanceVo;
import com.liquidnet.service.kylin.service.impl.KylinPerformancesServiceImpl;
import io.swagger.annotations.Api;
......@@ -9,13 +9,8 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -38,43 +33,43 @@ public class KylinPerformancesController {
@GetMapping("localList")
@ApiOperation("本地演出列表")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "sellTime", value = "开票时间 2021-01-01"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "days", value = "时间范围 几天 今天1 三天3。。。"),
@ApiImplicitParam(type = "query", dataType = "String", name = "timeStart", value = "演出开始时间 2021-01-01"),
@ApiImplicitParam(type = "query", dataType = "int", name = "days", value = "时间范围 几天 今天1 三天3。。。"),
@ApiImplicitParam(type = "query", dataType = "String", name = "title", value = "演出名称"),
@ApiImplicitParam(type = "query", dataType = "String", name = "cityName", value = "城市名称"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "type", value = "演出类型 1音乐节 2演唱会 3小型演出 4展览 6舞台剧"),
@ApiImplicitParam(type = "query", dataType = "int", name = "type", value = "演出类型 1音乐节 2演唱会 3小型演出 4展览 6舞台剧"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "isDiscount", value = "是否会员优惠 0 1"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "isAdvance", value = "是否优先 0 1"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "isExclusive", value = "是否会员专属 0 1"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "page", value = "页码"),
@ApiImplicitParam(type = "query", dataType = "Integer", name = "size", value = "每页数量"),
@ApiImplicitParam(type = "query", dataType = "int", name = "page", value = "页码"),
@ApiImplicitParam(type = "query", dataType = "int", name = "size", value = "每页数量"),
@ApiImplicitParam(type = "query", dataType = "String", name = "orderBy", value = "排序字段 时间sellTime"),
@ApiImplicitParam(type = "query", dataType = "String", name = "orderBy", value = "排序字段 时间timeStart"),
@ApiImplicitParam(type = "query", dataType = "String", name = "sort", value = "排序方式[DESC ASC]"),
})
public ResponseDto<HashMap<String, Object>> localList(
@RequestParam(defaultValue = "") String sellTime,
@RequestParam(defaultValue = "") Integer days,
@RequestParam(defaultValue = "") String timeStart,
@RequestParam(defaultValue = "0") int days,
@RequestParam(defaultValue = "") String title,
@RequestParam(defaultValue = "") String cityName,
@RequestParam(defaultValue = "") Integer type,
@RequestParam(defaultValue = "0") int type,
@RequestParam(defaultValue = "") Integer isDiscount,
@RequestParam(defaultValue = "") Integer isAdvance,
@RequestParam(defaultValue = "") Integer isExclusive,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size,
@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "10") int size,
// 排序
@RequestParam(defaultValue = "") String orderBy,
@RequestParam(defaultValue = "") String sort
) {
HashMap<String, Object> result = kylinPerformancesService.localList(
sellTime, days, title, cityName, type,
timeStart, days, title, cityName, type,
isDiscount, isAdvance, isExclusive,
page, size,
orderBy, sort
......@@ -97,11 +92,9 @@ public class KylinPerformancesController {
return ResponseDto.success(result);
}
@GetMapping("detail")
@GetMapping("{performancesId}")
@ApiOperation("演出详情")
public ResponseDto<HashMap<String, Object>> detail(
@RequestParam(value = "performancesId") String performancesId //演出id
) {
public ResponseDto<HashMap<String, Object>> detail(@PathVariable("performancesId") String performancesId) {
HashMap<String, Object> result = kylinPerformancesService.detail(performancesId);
if (result.size() > 0) {
return ResponseDto.success(result);
......
package com.liquidnet.service.kylin.controller.admin;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dao.FieldMisDetailsDao;
import com.liquidnet.service.kylin.dao.FieldMisListDao;
import com.liquidnet.service.kylin.dto.param.FieldsAuditParam;
......@@ -11,12 +11,9 @@ import com.liquidnet.service.kylin.dto.vo.FieldsVo;
import com.liquidnet.service.kylin.dto.vo.PagerVo;
import com.liquidnet.service.kylin.service.impl.admin.FieldsAdminServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
@Api
......
package com.liquidnet.service.kylin.controller.admin;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dao.BannerDetailsListDao;
import com.liquidnet.service.kylin.dto.param.BannersParam;
import com.liquidnet.service.kylin.dto.param.BannersSearchParam;
......
......@@ -2,12 +2,13 @@ package com.liquidnet.service.kylin.controller.admin;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dao.PerformanceAdminListDao;
import com.liquidnet.service.kylin.dao.PerformanceMemberAuditDao;
import com.liquidnet.service.kylin.dao.PerformanceRecommendAdminDao;
import com.liquidnet.service.kylin.dao.PerformanceTitleDao;
import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam;
import com.liquidnet.service.kylin.dto.param.PerformanceMemberAuditParam;
import com.liquidnet.service.kylin.dto.param.PerformanceRecommendAdminParam;
import com.liquidnet.service.kylin.dto.vo.partner.PerformanceMisVo;
import com.liquidnet.service.kylin.service.impl.admin.KylinPerformancesAdminServiceImpl;
......@@ -18,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
......@@ -134,10 +136,10 @@ public class KylinPerformancesAdminController {
}
}
@GetMapping(value = "performance/member")
@GetMapping(value = "performance/member/details")
@ApiOperation(value = "演出会员信息")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PerformanceMemberAuditDao> performanceMemberInfo(String performanceId) {
public ResponseDto<PerformanceMemberAuditDao> performanceMemberInfo(@RequestParam("performanceId") @NotNull String performanceId) {
PerformanceMemberAuditDao result = performancesAdminService.performanceMemberInfo(performanceId);
if (result != null) {
return ResponseDto.success(result);
......@@ -145,4 +147,69 @@ public class KylinPerformancesAdminController {
return ResponseDto.failure("获取失败");
}
}
@PutMapping(value = "performance/member/change")
@ApiOperation(value = "修改演出会员数据")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> performanceMemberChange(@RequestBody PerformanceMemberAuditParam performanceMemberAuditParam) {
boolean result = performancesAdminService.performanceMemberChange(performanceMemberAuditParam);
if (result) {
return ResponseDto.success("操作成功");
} else {
return ResponseDto.failure("操作失败");
}
}
@GetMapping(value = "performance/member/list")
@ApiOperation(value = "待审核会员演出列表")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PageInfo<PerformanceTitleDao>> performanceMemberList(@RequestParam("title") @NotNull String title,
@RequestParam("page") @NotNull int page,
@RequestParam("size") @NotNull int size) {
PageInfo<PerformanceTitleDao> result = performancesAdminService.performanceMemberList(title, page, size);
if (result != null) {
return ResponseDto.success(result);
} else {
return ResponseDto.failure("操作失败");
}
}
@GetMapping(value = "performance/member/details/audit")
@ApiOperation(value = "演出会员信息(根据status 1待审核 2已拒绝 3已通过)")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PerformanceMemberAuditDao> performanceMemberAuditInfo(@RequestParam("performanceId") @NotNull String performanceId,
@RequestParam(value = "status") @NotNull int status) {
PerformanceMemberAuditDao result = performancesAdminService.performanceMemberAuditInfo(performanceId, status);
if (result != null) {
return ResponseDto.success(result);
} else {
return ResponseDto.failure("获取失败");
}
}
@PostMapping(value = "performance/member/audit")
@ApiOperation(value = "审核演出会员信息")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> performanceMemberAudit(@RequestParam("performanceId") @NotNull String performanceId,
@RequestParam("status") @NotNull int status,
@RequestParam(value = "rejectTxt", required = false) String rejectTxt) {
boolean result = performancesAdminService.performanceMemberAudit(performanceId, status, rejectTxt);
if (result) {
return ResponseDto.success("操作成功");
} else {
return ResponseDto.failure("操作失败");
}
}
@PostMapping(value = "performance/member/history")
@ApiOperation(value = "会员审核记录")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PageInfo<PerformanceMemberAuditParam>> performanceAuditHistory(@RequestParam("performanceId") @NotNull String performanceId) {
PageInfo<PerformanceMemberAuditParam> result = performancesAdminService.performanceAuditHistory(performanceId);
if (result != null) {
return ResponseDto.success(result);
} else {
return ResponseDto.failure("操作失败");
}
}
}
......@@ -2,14 +2,10 @@ package com.liquidnet.service.kylin.controller.admin;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.kylin.dao.PerformanceAdminListDao;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dao.RoadShowAdminListDao;
import com.liquidnet.service.kylin.dto.param.CreateRoadShowParam;
import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam;
import com.liquidnet.service.kylin.dto.vo.admin.RoadShowAdminVo;
import com.liquidnet.service.kylin.service.impl.KylinRoadShowsServiceImpl;
import com.liquidnet.service.kylin.service.impl.admin.KylinPerformancesAdminServiceImpl;
import com.liquidnet.service.kylin.service.impl.admin.KylinRoadShowsAdminServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......
package com.liquidnet.service.kylin.controller.partner;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.FieldsVo;
import com.liquidnet.service.kylin.service.impl.admin.FieldsAdminServiceImpl;
import com.liquidnet.service.kylin.service.impl.partner.FieldsPartnerServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
......
package com.liquidnet.service.kylin.controller.partner;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.CreateTicketTimesParam;
import com.liquidnet.service.kylin.dto.vo.partner.TicketTimesPartnerVo;
import com.liquidnet.service.kylin.service.impl.partner.KylinTicketTimesPartnerServiceImpl;
......
package com.liquidnet.service.kylin.controller.partner;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.TicketCreateParam;
import com.liquidnet.service.kylin.dto.vo.partner.TicketPartnerVo;
import com.liquidnet.service.kylin.service.impl.partner.KylinTicketsPartnerServiceImpl;
......@@ -90,4 +90,28 @@ public class KylinTicketsPartnerController {
return ResponseDto.success(result);
}
}
@PostMapping(value = "/onLine")
@ApiOperation(value = "票上线")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> onLine(@RequestParam("ticketsId") String ticketsId) {
boolean result = ticketsPartnerService.onLine(ticketsId);
if (!result) {
return ResponseDto.failure("操作失败");
} else {
return ResponseDto.success("操作成功");
}
}
@PostMapping(value = "/outLine")
@ApiOperation(value = "票下线")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> outLine(@RequestParam("ticketsId") String ticketsId) {
boolean result = ticketsPartnerService.outLine(ticketsId);
if (!result) {
return ResponseDto.failure("操作失败");
} else {
return ResponseDto.success("操作成功");
}
}
}
package com.liquidnet.service.kylin.controller.partner;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dao.PerformancePartnerListDao;
import com.liquidnet.service.kylin.dto.param.*;
import com.liquidnet.service.kylin.dto.vo.partner.PerformancePartnerVo;
......
package com.liquidnet.service.kylin.service.impl;
import com.liquidnet.service.kylin.dto.vo.PerformanceVo;
import com.liquidnet.service.kylin.dto.vo.partner.TicketTimesPartnerVo;
import com.liquidnet.service.kylin.entity.KylinPerformances;
import com.liquidnet.service.kylin.mapper.KylinPerformancesMapper;
import com.liquidnet.service.kylin.service.IKylinPerformancesService;
......@@ -38,9 +39,9 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
private MongoTemplate mongoTemplate;
public HashMap<String, Object> localList(
String sellTime, Integer days, String title, String cityName, Integer type,
String timeStart, int days, String title, String cityName, int type,
Integer isDiscount, Integer isAdvance, Integer isExclusive,
Integer page, Integer size,
int page, int size,
String orderBy, String sort
) {
HashMap<String, Object> info = new HashMap<>();
......@@ -56,7 +57,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
sortName = Sort.by(Sort.Direction.ASC, orderBy);
}
} else {
sortName = Sort.by(Sort.Direction.ASC, "sellTime");
sortName = Sort.by(Sort.Direction.ASC, "timeStart");
}
Pageable pageable = PageRequest.of(page - 1, size, sortName);
......@@ -67,7 +68,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
if (!title.isEmpty()) {
queryObject.put("title", Pattern.compile(title, Pattern.CASE_INSENSITIVE));
}
if (type != null) {
if (type > 0) {
queryObject.put("type", type);
}
if (isExclusive != null) {
......@@ -81,22 +82,22 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
}
Query query = new BasicQuery(queryObject);
if (!sellTime.isEmpty()) {
String sellTimeEnd = sellTime + " 23:59:59";
query.addCriteria(Criteria.where("sellTime").gte(sellTime).lte(sellTimeEnd));
if (!timeStart.isEmpty()) {
String timeStartEnd = timeStart + " 23:59:59";
query.addCriteria(Criteria.where("timeStart").gte(timeStart).lte(timeStartEnd));
}
if (days != null) {
if (days > 0) {
LocalDateTime nowTime = LocalDateTime.now();
String nowTimeStr = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDateTime OtherTime = nowTime.plusDays(days);
String OtherTimeStr = OtherTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
query.addCriteria(Criteria.where("sellTime").gte(nowTimeStr).lte(OtherTimeStr));
query.addCriteria(Criteria.where("timeStart").gte(nowTimeStr).lte(OtherTimeStr));
}
// 固定查询条件
LocalDateTime nowTime = LocalDateTime.now();
String nowTimeStr = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
query.addCriteria(Criteria.where("stopSellTime").gte(nowTimeStr));
query.addCriteria(Criteria.where("timeEnd").gte(nowTimeStr));
query.addCriteria(Criteria.where("statusSell").is(1));
// 要查询的字段
......@@ -123,7 +124,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
Query query = new Query();
LocalDateTime nowTime = LocalDateTime.now();
String nowTimeStr = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
query.addCriteria(Criteria.where("stopSellTime").gte(nowTimeStr));
query.addCriteria(Criteria.where("timeEnd").gte(nowTimeStr));
query.addCriteria(Criteria.where("statusSell").is(1));
// 今天的
......@@ -131,19 +132,19 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
String toDayTimeStr = toDayTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDateTime toDayEndTime = toDayTime.plusDays(1);
String toDayEndTimeStr = toDayEndTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
query.addCriteria(Criteria.where("sellTime").gte(toDayTimeStr).lt(toDayEndTimeStr));
query.addCriteria(Criteria.where("timeStart").gte(toDayTimeStr).lt(toDayEndTimeStr));
List<PerformanceVo> toDayList = mongoTemplate.find(query, PerformanceVo.class, PerformanceVo.class.getSimpleName());
// 三天的
Query queryT = new Query();
LocalDateTime nowTimeT = LocalDateTime.now();
String nowTimeStrT = nowTimeT.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
queryT.addCriteria(Criteria.where("stopSellTime").gte(nowTimeStrT));
queryT.addCriteria(Criteria.where("timeEnd").gte(nowTimeStrT));
queryT.addCriteria(Criteria.where("statusSell").is(1));
LocalDateTime threeDaysLater = toDayTime.plusDays(3);
String threeDaysLaterStr = threeDaysLater.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
queryT.addCriteria(Criteria.where("sellTime").gte(toDayEndTimeStr).lt(threeDaysLaterStr));
queryT.addCriteria(Criteria.where("timeStart").gte(toDayEndTimeStr).lt(threeDaysLaterStr));
List<PerformanceVo> threeDaysList = mongoTemplate.find(queryT, PerformanceVo.class, PerformanceVo.class.getSimpleName());
HashMap<String, Object> info = new HashMap<>();
......@@ -157,7 +158,7 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
Query query = new Query();
LocalDateTime nowTime = LocalDateTime.now();
String nowTimeStr = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
query.addCriteria(Criteria.where("stopSellTime").gte(nowTimeStr));
query.addCriteria(Criteria.where("timeEnd").gte(nowTimeStr));
query.addCriteria(Criteria.where("statusSell").is(1));
// 推荐
query.addCriteria(Criteria.where("isRecommend").is(1));
......@@ -175,7 +176,14 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
PerformanceVo.class.getSimpleName()
);
info.put("info", performancesInfo);
List<TicketTimesPartnerVo> ticketTimesPartnerVo = mongoTemplate.find(
Query.query(Criteria.where("performancesId").is(performancesId)),
TicketTimesPartnerVo.class,
TicketTimesPartnerVo.class.getSimpleName()
);
info.put("performancesInfo", performancesInfo);
info.put("ticketTimesPartnerVo", ticketTimesPartnerVo);
return info;
}
......
......@@ -583,6 +583,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
redisUtil.hset(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVo.getTicketsId(), KylinRedisConst.SURPLUS_EXCHANGE, ticketInventoryDto.getSurplusExchange());
}
if (ticketVo.getIsMember() == 1) {
if (ticketVo.getMemberPrice().compareTo(ticketVo.getPrice()) != 0) {
isDiscount = 1;
}
......@@ -594,12 +595,16 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
if (ticketVo.getIsMember() == 1) {
isMember = 1;
}
if (ticketVo.getIsLackRegister() == 1) {
isLackRegister = 1;
}
if (ticketVo.getIsExclusive() == 1) {
isExclusive = 1;
}
}
if (ticketVo.getIsLackRegister() == 1) {
isLackRegister = 1;
}
if (price.subtract(ticketVo.getPrice()).compareTo(new BigDecimal("0.00")) < 0) {
price = ticketVo.getPrice();
}
......
......@@ -7,6 +7,8 @@ import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.param.TicketCreateParam;
import com.liquidnet.service.kylin.dto.vo.TicketVo;
import com.liquidnet.service.kylin.dto.vo.ignore.TicketIgnoreVo;
import com.liquidnet.service.kylin.dto.vo.partner.TicketTimesPartnerVo;
import com.liquidnet.service.kylin.dto.vo.partner.TicketPartnerVo;
import com.liquidnet.service.kylin.entity.*;
......@@ -284,4 +286,67 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
return mongoTemplate.findOne(Query.query(Criteria.where("ticketsId").is(ticketsId)), TicketPartnerVo.class, TicketPartnerVo.class.getSimpleName());
}
@Override
public boolean onLine(String ticketsId) {
LocalDateTime updatedAt = LocalDateTime.now();
KylinTicketStatus ticketStatus = ticketStatusMapper.selectOne(new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketsId));
if (ticketStatus.getStatus() >= 3 && ticketStatus.getStatus() != 4 && ticketStatus.getStatus() != 6) {//未提审||被拒绝
//mysql
KylinTicketStatus changeStatus = new KylinTicketStatus();
changeStatus.setUpdatedAt(updatedAt);
changeStatus.setStatus(6);
ticketStatusMapper.update(changeStatus, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketsId));
// mongo 操作
KylinTicketStatus ticketStatusMongo = ticketStatusMapper.selectOne(new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketsId).between("status", 1, 10).ne("status", 7));
KylinTicketRelations ticketRelation = ticketRelationsMapper.selectOne(new UpdateWrapper<KylinTicketRelations>().eq("ticket_id", ticketsId));
KylinTickets tickets = ticketsMapper.selectOne(
new UpdateWrapper<KylinTickets>().eq("tickets_id", ticketsId
)
);
TicketVo ticketVo = new TicketVo();
ticketVo.setTimeId(ticketRelation.getTimesId());
ticketVo.setTicket(tickets);
ticketVo.setTicketStatus(ticketStatusMongo);
boolean ticketExists =
mongoTemplate.exists(Query.query(Criteria.where("ticketsId").is(ticketVo.getTicketsId())), TicketVo.class, TicketVo.class.getSimpleName());
if (!ticketExists) {
mongoTemplate.insert(
ticketVo, TicketVo.class.getSimpleName()
);
}
//TODO 修改misVo
return true;
} else {
return false;
}
}
@Override
public boolean outLine(String ticketsId) {
LocalDateTime updatedAt = LocalDateTime.now();
KylinTicketStatus ticketStatus = ticketStatusMapper.selectOne(new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketsId));
if (ticketStatus.getStatus() >= 3 && ticketStatus.getStatus() != 4 && ticketStatus.getStatus() != 7) {//未提审||被拒绝
//mysql
KylinTicketStatus changeStatus = new KylinTicketStatus();
changeStatus.setUpdatedAt(updatedAt);
changeStatus.setStatus(7);
ticketStatusMapper.update(changeStatus, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketsId));
// mongo 操作
TicketVo ticketVoItem = mongoTemplate.findOne(Query.query(Criteria.where("ticketsId").is(ticketsId)), TicketVo.class, TicketVo.class.getSimpleName());
TicketIgnoreVo ticketIgnoreVo = new TicketIgnoreVo();
BeanUtils.copyProperties(ticketVoItem, ticketIgnoreVo);
mongoTemplate.remove(Query.query(Criteria.where("ticketsId").is(ticketVoItem.getTicketsId())), TicketIgnoreVo.class, TicketIgnoreVo.class.getSimpleName());
mongoTemplate.insert(ticketIgnoreVo, TicketIgnoreVo.class.getSimpleName());
mongoTemplate.remove(Query.query(Criteria.where("ticketsId").is(ticketVoItem.getTicketsId())), TicketVo.class, TicketVo.class.getSimpleName());
//TODO 删除misVo
return true;
} else {
return false;
}
}
}
......@@ -112,6 +112,17 @@ public class PerformanceVoTask {
int status8Count = 0;
//已结束次数
int status10Count = 0;
//缺票登记
int isLackRegister = 0;
//会员
int isMember = 0;
//专属
int isExclusive = 0;
//提前
int isAdvance = 0;
//优惠
int isDiscount = 0;
//演出数据
HashMap<String, Object> mapPerformance = new HashMap<>();
int appStatus = 6;
......@@ -164,10 +175,39 @@ public class PerformanceVoTask {
} else if (ticketCount == status10Count) {//全票结束 为结束
appStatus = 10;
}
if (ticketVoItem.getIsMember() == 1) {
if (ticketVoItem.getMemberPrice().compareTo(ticketVoItem.getPrice()) != 0) {
isDiscount = 1;
}
if (!ticketVoItem.getTimeStart().equalsIgnoreCase(ticketVoItem.getMemberTimeStart())) {
isAdvance = 1;
}
if (ticketVoItem.getIsMember() == 1) {
isMember = 1;
}
if (ticketVoItem.getIsExclusive() == 1) {
isExclusive = 1;
}
}
if (ticketVoItem.getIsLackRegister() == 1) {
isLackRegister = 1;
}
}
}
//修改演出状态
mapPerformance.put("appStatus", appStatus);
mapPerformance.put("isLackRegister", isLackRegister);
mapPerformance.put("isExclusive", isExclusive);
mapPerformance.put("isMember", isMember);
mapPerformance.put("isAdvance", isAdvance);
mapPerformance.put("isDiscount", isDiscount);
BasicDBObject objectPerformance = new BasicDBObject("$set", mongoConverter.convertToMongoType(mapPerformance));
mongoTemplate.getCollection(PerformanceVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("performancesId").is(performancesId)).getQueryObject(),
......@@ -176,6 +216,13 @@ public class PerformanceVoTask {
}
}
/**
* 根据票 判断 演出会员相关状态
* @param performanceId
*/
public void performanceVoMember(String performanceId){}
/**
* 生成 PerformanceCreatePartnerVo(用于审核第一次提交数据)
*
......
package com.liquidnet.support.config;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.config.server.EnableConfigServer;
......
......@@ -11,8 +11,8 @@ liquidnet:
path: ./logs
name: support-config
eureka:
# host: 127.0.0.1:7001
host: 172.17.205.50:7001
host: 127.0.0.1:7001
# host: 172.17.205.50:7001
rabbitmq:
host: 127.0.0.1
port: 5672
......
......@@ -37,6 +37,11 @@
<artifactId>liquidnet-common-service-base</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-cache-redis</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
......
package com.liquidnet.support.zuul.filter;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.support.zuul.util.PathMatchUtil;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import io.jsonwebtoken.Claims;
......@@ -12,6 +16,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.DigestUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
......@@ -22,10 +27,19 @@ import java.util.List;
@Component
public class GlobalAuthFilter extends ZuulFilter {
@Value("#{'${global.exclude.url}'.split(', ')}")
private List<String> excludeUrls;
private List<String> excludeUrl;
@Value("#{'${global.exclude.url-pattern}'.split(', ')}")
private List<String> excludeUrlPattern;
private static final String CONTENT_TYPE = "application/json;charset=utf-8";
private static final String AUTHORIZATION = "authorization";
private static final String TOKEN_ILLEGAL = "40001";
private static final String TOKEN_KICK = "40002";
private static final String TOKEN_EXPIRED = "40003";
@Autowired
JwtValidator jwtValidator;
@Autowired
RedisUtil redisUtil;
@Override
public String filterType() {
......@@ -41,55 +55,69 @@ public class GlobalAuthFilter extends ZuulFilter {
public boolean shouldFilter() {
RequestContext ctx = RequestContext.getCurrentContext();
String requestURI = ctx.getRequest().getRequestURI();
// return !excludeUrls.contains(requestURI);
if (excludeUrl.contains(requestURI)) {
return false;
}
for (String urlPattern : excludeUrlPattern) {
return !PathMatchUtil.isPathMatch(urlPattern, requestURI);
}
return true;
}
@Override
public Object run() {
RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest httpServletRequest = requestContext.getRequest();
String token = httpServletRequest.getHeader("authorization");
Claims claims;
String authorization = httpServletRequest.getHeader(AUTHORIZATION);
try {
log.info("token:{}", token);
if (StringUtils.isBlank(token)) {
requestContext.setSendZuulResponse(false);
ResponseDto<Object> responseDto = ResponseDto.failure("401", "非法TOKEN");
requestContext.setResponseBody(JsonUtils.toJson(responseDto));
HttpServletResponse response = requestContext.getResponse();
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
response.setContentType("application/json;charset=utf-8");
log.info("authorization:{}", authorization);
if (StringUtils.isBlank(authorization)) {
respHandler(requestContext, TOKEN_ILLEGAL);
} else {
token = token.replace("Bearer ", "");
String token = authorization.substring(7);
String ssoKey = jwtValidator.getSsoRedisKey().concat(DigestUtils.md5DigestAsHex(token.getBytes(StandardCharsets.UTF_8)));
if (redisUtil.hasKey(ssoKey)) {
if ((boolean) redisUtil.get(ssoKey)) {
// 解析没有异常则表示token验证通过,如有必要可根据自身需求增加验证逻辑
claims = jwtValidator.parse(token);
log.info("claims:{}", JsonUtils.toJson(claims));
// claims = jwtUtil.parseJwtToken(token);
// 对请求进行路由
Claims claims = jwtValidator.parse(token);
requestContext.setSendZuulResponse(true);
// 请求头加入uid,传给具体的微服务
requestContext.addZuulRequestHeader("uid", claims.get("uid").toString());
// requestContext.addZuulRequestHeader("uid", claims.get("uid").toString());
requestContext.addZuulRequestHeader(CurrentUtil.uTag, JsonUtils.toJson(claims));
requestContext.addZuulRequestHeader(CurrentUtil.uToken, token);
} else {
respHandler(requestContext, TOKEN_EXPIRED);
}
} else {
respHandler(requestContext, TOKEN_KICK);
}
}
} catch (ExpiredJwtException expiredJwtEx) {
log.error("TOKEN已过期:{}", token);
// 不对请求进行路由
requestContext.setSendZuulResponse(false);
ResponseDto<Object> responseDto = ResponseDto.failure("402", "TOKEN已过期");
requestContext.setResponseBody(JsonUtils.toJson(responseDto));
HttpServletResponse response = requestContext.getResponse();
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
response.setContentType("application/json;charset=utf-8");
log.error("TOKEN已过期:{}", authorization);
respHandler(requestContext, TOKEN_EXPIRED);
} catch (Exception ex) {
log.error("TOKEN验证失败:{}", token);
// 不对请求进行路由
log.error("TOKEN验证失败:{}", authorization);
respHandler(requestContext, TOKEN_ILLEGAL);
}
return null;
}
private void respHandler(RequestContext requestContext, String code) {
requestContext.setSendZuulResponse(false);
ResponseDto<Object> responseDto = ResponseDto.failure("401", "非法TOKEN");
ResponseDto<Object> responseDto = ResponseDto.failure(ErrorMapping.get(code));
requestContext.setResponseBody(JsonUtils.toJson(responseDto));
HttpServletResponse response = requestContext.getResponse();
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
response.setContentType("application/json;charset=utf-8");
}
return null;
response.setContentType(CONTENT_TYPE);
}
}
package com.liquidnet.support.zuul.filter;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.vo.AdamLoginInfoVo;
import com.liquidnet.service.feign.adam.api.FeignAdamLoginClient;
import com.liquidnet.support.zuul.util.PathMatchUtil;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import lombok.extern.slf4j.Slf4j;
......@@ -22,7 +21,7 @@ import java.util.stream.Collectors;
@Component
public class GlobalLoginFilter extends ZuulFilter {
@Value("#{'${global.login.url}'.split(', ')}")
private List<String> loginUrls;
private List<String> loginUrl;
@Autowired
FeignAdamLoginClient feignAdamLoginClient;
......@@ -40,13 +39,7 @@ public class GlobalLoginFilter extends ZuulFilter {
@Override
public boolean shouldFilter() {
RequestContext ctx = RequestContext.getCurrentContext();
String requestURI = ctx.getRequest().getRequestURI();
// for (String url : loginUrls) {
// if (PathMatchUtil.isPathMatch(url, requestURI)) {
// return true;
// }
// }
return false;
return loginUrl.contains(ctx.getRequest().getRequestURI());
}
@Override
......
......@@ -6,8 +6,8 @@ liquidnet:
username: user
password: user123
eureka:
#host: 127.0.0.1:7001
host: 172.17.205.50:7001
host: 127.0.0.1:7001
# host: 172.17.205.50:7001
# end-dev-这里是配置信息基本值
spring:
......
40001=非法TOKEN
40002=被踢下线喽
40003=TOKEN过期
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment