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

Commit 58911f7d authored by 洪全海's avatar 洪全海
parents dd303720 32d2f2a3
package com.liquidnet.commons.lang.util;
package com.liquidnet.commons.lang.core;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.Map;
//@Component
public class JwtUtil {
/**
* 过期时间15分钟
*/
private static final long EXPIRE_TIME = 15 * 60 * 1000;
/**
* token私钥
*/
private static final String TOKEN_SECRET = "DD5654D654DSD5S1D65S4D65S1D12354";
@Component("jwtValidator")
@ConfigurationProperties(prefix = "jwt")
public class JwtValidator {
private String secret;
private Long expireTtl;
private Long refreshTtl;
private Long blacklistGracePeriod;
// private static final long EXPIRE_TIME = 15 * 60 * 1000;
// private static final String TOKEN_SECRET = "qZHglvNP0n0aOOckHiQXq5JMD468J4eG";
/**
* 用户登录成功后生成Jwt token
* 使用Hs256算法
*
* @param claims 保存在Payload(有效载荷)中的内容
* @param claimsMap 保存在Payload(有效载荷)中的内容
* @return token字符串
*/
public static String create(Map<String, Object> claims) {
public String create(Map<String, Object> claimsMap) {
long nowMillis = System.currentTimeMillis();
long expMillis = System.currentTimeMillis() + EXPIRE_TIME;
long expMillis = System.currentTimeMillis() + expireTtl * 60000;
// 创建一个JwtBuilder,设置jwt的body
JwtBuilder builder = Jwts.builder()
// 保存在Payload(有效载荷)中的内容, 自定义一些数据保存在这里
.setClaims(claims)
.setClaims(claimsMap)
// iat: jwt的签发时间
.setIssuedAt(new Date(nowMillis))
// 设置过期时间
.setExpiration(new Date(expMillis))
// 使用HS256算法和签名使用的秘钥生成密文
.signWith(SignatureAlgorithm.HS256, TOKEN_SECRET);
.signWith(SignatureAlgorithm.HS256, secret);
return builder.compact();
}
......@@ -49,12 +50,28 @@ public class JwtUtil {
* @param token 令牌
* @return
*/
public static Claims parse(String token) {
public Claims parse(String token) {
// 得到DefaultJwtParser
return Jwts.parser()
// 设置签名的秘钥
.setSigningKey(TOKEN_SECRET)
.setSigningKey(secret)
// 设置需要解析的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;
}
}
......@@ -15,7 +15,7 @@ import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
//@Configuration
public class CorsConfig {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
......
......@@ -5,6 +5,11 @@ liquidnet:
security:
username: user
password: user123
jwt:
secret: qZHglvNP0n0aOOckHiQXq5JMD468J4eG
expire-ttl: 43200
refresh-ttl: 525600
blacklist_grace_period: 5
mysql:
urlHostAndPort: 39.106.122.201:3308
username: testmall
......
......@@ -6,3 +6,8 @@ spring:
rabbitmq:
ssl:
algorithm: TLSv1.2
jwt:
secret: ${liquidnet.jwt.secret}
expire-ttl: ${liquidnet.jwt.expire-ttl}
refresh-ttl: ${liquidnet.jwt.refresh-ttl}
blacklist_grace_period: ${liquidnet.jwt.blacklist_grace_period}
\ No newline at end of file
......@@ -20,6 +20,9 @@ liquidnet:
database-name: ln_adam
mybatis-plus:
log-level: debug
aliyun:
accessKeyId:
accessSecret:
# conf:
# webUrl: ${liquidnet.service.adam.conf.webUrl}
# user:
......
......@@ -4,7 +4,7 @@ server:
uri-encoding: UTF-8
servlet:
context-path:
# context-path: ${liquidnet.info.context}
# context-path: ${liquidnet.info.context}
# server:
# tomcat:
# accept-count: 500
......@@ -37,7 +37,9 @@ spring:
application:
name: ${liquidnet.info.name}
autoconfigure:
exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
exclude:
- org.springframework.cloud.bus.BusAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
profiles:
include: common-service
# cloud:
......@@ -76,12 +78,20 @@ zuul:
# pre: # 类型
# disable: true
# -----------------------------------------------------------
common:
global:
login:
url: /adam/login
exclude:
auth:
url: /adam/login,/adam/v2/api-docs,/kylin/v2/api-docs
url: /adam/login/sms,
/adam/login/mobile,
/adam/login/tpa
exclude:
url: /adam/v2/api-docs,
/adam/v2/api-docs-ext,
/kylin/v2/api-docs,
/kylin/v2/api-docs-ext,
/adam/login/sms,
/adam/login/mobile,
/adam/login/tpa,
/adam/send
# -----------------------------------------------------------
#解决错误 com.netflix.client.ClientException: Load balancer does not have available server for client:panfeng-item-service
#这样就可以即指定path与URL,又不破坏Zuul的Hystrix与Ribbon特性了。
......
package com.liquidnet.service.feign.adam.api;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.vo.AdamLoginInfoVo;
import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@Component
@FeignClient(name = "liquidnet-service-adam",
contextId = "sev-adam-auth", path = "",
contextId = "", path = "",
fallback = FallbackFactory.Default.class)
public interface FeignAdamAuthClient {
public interface FeignAdamLoginClient {
@PostMapping(value = "login")
ResponseDto<Object> loginByPwd(@RequestParam String mobile, @RequestParam String password);
@PostMapping(value = "login/sms")
ResponseDto<AdamLoginInfoVo> loginBySms(@RequestParam String mobile, @RequestParam String code);
@PostMapping(value = {"login/mobile"})
ResponseDto<AdamLoginInfoVo> loginByMobile(@RequestParam String accessToken);
@PostMapping(value = {"login/tpa"})
ResponseDto<AdamLoginInfoVo> loginByTpa(@RequestBody AdamThirdPartParam parameter);
}
package com.liquidnet.service.adam.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "AdamThirdPartParam", description = "第三方账号登录注册入参")
@Data
public class AdamThirdPartParam implements Serializable {
private static final long serialVersionUID = 675588088506034208L;
@ApiModelProperty(position = 11, required = true, value = "第三方OPENID[64]")
private String openId;
@ApiModelProperty(position = 12, required = true, value = "昵称[64]", example = "Swagger")
private String nickName;
@ApiModelProperty(position = 13, required = true, value = "头像[255]", example = "http://pic.zhengzai.tv/default/avatar.png")
private String avatar;
@ApiModelProperty(position = 14, required = true, value = "平台类型[255]", allowableValues = "WEIBO,WECHAT,QQ")
private String platform;
@ApiModelProperty(position = 15, required = false, value = "手机号[新账号时必传]", example = "13111111111")
private String mobile;
@ApiModelProperty(position = 16, required = false, value = "验证码[新账号时必传]", example = "111111")
private String code;
}
package com.liquidnet.service.adam.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "AdamLoginInfoVo", description = "登录成功响应数据")
@Data
public class AdamLoginInfoVo implements Serializable, Cloneable {
private static final long serialVersionUID = 4209754800686327524L;
@ApiModelProperty(position = 11, value = "TOKEN")
private String token;
@ApiModelProperty(position = 12, value = "用户信息")
private AdamUserInfoVo userInfo;
@ApiModelProperty(position = 13, value = "实名信息")
private AdamRealInfoVo realNameInfo;
@ApiModelProperty(position = 14, value = "用户第三方账号信息")
private List<AdamThirdPartInfoVo> thirdPartInfo;
@ApiModelProperty(position = 15, value = "会员信息 -> 待定")
private Object memberInfo;
private static final AdamLoginInfoVo obj = new AdamLoginInfoVo();
public static AdamLoginInfoVo getNew() {
try {
return (AdamLoginInfoVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AdamLoginInfoVo();
}
}
package com.liquidnet.service.adam.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "AdamRealInfoVo", description = "实名信息")
@Data
public class AdamRealInfoVo implements Serializable, Cloneable {
private static final long serialVersionUID = -3469256375584132928L;
@ApiModelProperty(position = 11, value = "姓名[30]")
private String name;
@ApiModelProperty(position = 12, value = "证件号[50]")
private String idCard;
@ApiModelProperty(position = 13, value = "状态:1-正常")
private String state;
private static final AdamRealInfoVo obj = new AdamRealInfoVo();
public static AdamRealInfoVo getNew() {
try {
return (AdamRealInfoVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AdamRealInfoVo();
}
}
......@@ -8,8 +8,6 @@ import lombok.Data;
@Data
public class AdamThirdPartInfoVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = -3239086191919676121L;
@ApiModelProperty(position = 10, value = "Third Party ID[64]")
private String thirdPartyId;
@ApiModelProperty(position = 11, value = "用户ID[64]")
private String uid;
@ApiModelProperty(position = 12, value = "第三方ID[64]")
......@@ -18,10 +16,10 @@ public class AdamThirdPartInfoVo implements java.io.Serializable, Cloneable {
private String nickname;
@ApiModelProperty(position = 14, value = "头像[255]")
private String avatar;
@ApiModelProperty(position = 14, value = "平台类型[20]")
@ApiModelProperty(position = 15, value = "平台类型[20]")
private String platform;
@ApiModelProperty(position = 14, value = "状态[1-绑定,2-解绑]")
private int state;
@ApiModelProperty(position = 16, value = "状态[1-绑定,2-解绑]")
private Integer state;
private static final AdamThirdPartInfoVo obj = new AdamThirdPartInfoVo();
......
......@@ -10,26 +10,32 @@ public class AdamUserInfoVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 8479869354894030303L;
@ApiModelProperty(position = 10, value = "用户ID[64]")
private String uid;
@ApiModelProperty(position = 11, value = "昵称[32]")
private String username;
@ApiModelProperty(position = 12, value = "性别[32]")
@ApiModelProperty(position = 11, value = "手机号[20]")
private String mobile;
@ApiModelProperty(position = 12, value = "昵称[32]")
private String nickName;
@ApiModelProperty(position = 13, value = "状态[1-正常,2-注销]")
private Integer state;
@ApiModelProperty(position = 14, value = "性别[32]")
private String sex;
@ApiModelProperty(position = 13, value = "生日[YYYY-MM-DD]")
@ApiModelProperty(position = 15, value = "生日[YYYY-MM-DD]")
private String birthday;
@ApiModelProperty(position = 14, value = "常住地/区域")
@ApiModelProperty(position = 16, value = "常住地/区域")
private String area;
@ApiModelProperty(position = 15, value = "个性签名")
@ApiModelProperty(position = 17, value = "个性签名")
private String signature;
@ApiModelProperty(position = 16, value = "头像")
@ApiModelProperty(position = 18, value = "头像")
private String avatar;
@ApiModelProperty(position = 17, value = "背景图")
@ApiModelProperty(position = 19, value = "背景图")
private String background;
@ApiModelProperty(position = 18, value = "标签")
@ApiModelProperty(position = 20, value = "标签")
private String tagMe;
@ApiModelProperty(position = 19, value = "")
private String rongCloudToken;
// @ApiModelProperty(position = 20, value = "隐私配置")
// private
@ApiModelProperty(position = 21, value = "注册时间")
private String createAt;
@ApiModelProperty(position = 22, value = "是否完善信息[0-未完善,1-已完善]")
private Integer isComplete;
// @ApiModelProperty(position = 23, value = "")
// private String rongCloudToken;
private static final AdamUserInfoVo obj = new AdamUserInfoVo();
......
package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.entity.AdamRealName;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IAdamRealNameService extends IService<AdamRealName> {
AdamRealInfoVo queryByUid(String uid);
}
package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo;
import com.liquidnet.service.adam.entity.AdamThirdParty;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* <p>
* 用户第三方账号信息 服务类
......@@ -13,4 +16,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IAdamThirdPartyService extends IService<AdamThirdParty> {
List<AdamThirdPartInfoVo> queryByUid(String uid);
AdamThirdPartInfoVo queryByOpenId(String openId, String platform);
}
package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.entity.AdamUserInfo;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 正在现场用户信息 服务类
* 用户信息 服务类
* </p>
*
* @author liquidnet
......@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IAdamUserInfoService extends IService<AdamUserInfo> {
void edit(AdamUserInfoVo userInfoVo);
}
package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.AdamThirdPartParam;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.entity.AdamUser;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -13,4 +15,25 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IAdamUserService extends IService<AdamUser> {
String queryUidByRedis(String mobile);
String queryUidByRedis(String openId, String platform);
AdamUserInfoVo queryByUid(String uid);
/**
* 手机号注册
*
* @param mobile
* @return AdamUserInfoVo
*/
AdamUserInfoVo register(String mobile);
/**
* 第三方账号注册
*
* @param thirdPartParam
* @return AdamUserInfoVo
*/
AdamUserInfoVo register(AdamThirdPartParam thirdPartParam);
}
......@@ -55,7 +55,7 @@ create table adam_user
(
mid int unsigned auto_increment primary key,
uid varchar(64) not null,
mobile varchar(16) not null,
mobile varchar(30) not null,
passwd varchar(64),
pay_code varchar(64),
state tinyint comment '1-NORMAL,2-INVALID',
......@@ -94,7 +94,7 @@ create table adam_real_name
real_name_id varchar(64) not null,
uid varchar(64) not null,
type enum ('1','2','3','4','5') not null default '1' comment '1-大陆身份证,2-港澳通行证,3-台胞证,4-护照,5-军官证',
name varchar(20) not null comment '真实姓名',
name varchar(30) not null comment '真实姓名',
id_card varchar(50) not null comment '证件号码',
state tinyint not null comment '0-INIT,1-NORMAL,2-INVALID',
created_at datetime not null,
......
......@@ -35,6 +35,15 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dypnsapi</artifactId>
</dependency>
</dependencies>
<build>
......
package com.liquidnet.service.adam.config;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AliyunDypnsConfigure {
@Value("${liquidnet.aliyun.accessKeyId}")
private String accessKeyId;
@Value("${liquidnet.aliyun.accessSecret}")
private String accessSecret;
@Bean
public DefaultAcsClient initAcsClient() {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessSecret);
return new DefaultAcsClient(profile);
}
}
......@@ -18,6 +18,13 @@ 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:";
//
// public static final String USER_EMAIL_CONFIRM_KEY = ADAM + ":user:email:confirm:";
......
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.adam.dto.AdamAddressesParam;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
......@@ -20,6 +21,7 @@ import java.util.List;
* @author liquidnet
* @since 2021-05-10
*/
@ApiSupport(order = 10060)
@Api(tags = "收获地址")
@Slf4j
@RestController
......
......@@ -2,6 +2,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.adam.dto.AdamCollectParam;
import io.swagger.annotations.Api;
......@@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
* @author liquidnet
* @since 2021-05-10
*/
@ApiSupport(order = 10050)
@Api(tags = "收藏")
@Slf4j
@RestController
......
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.IDGenerator;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.adam.dto.AdamEntersParam;
......@@ -26,6 +27,7 @@ import java.util.List;
* @author liquidnet
* @since 2021-04-28
*/
@ApiSupport(order = 10040)
@Api(tags = "入场人")
@Slf4j
@RestController
......
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.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.service.IAdamMemberService;
......@@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@ApiSupport(order = 10030)
@Api(tags = "会员信息")
@Slf4j
@RestController
......
package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.liquidnet.commons.lang.util.JwtUtil;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
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.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
@Api(tags = "用户登录")
@Slf4j
@RestController
@RequestMapping("login")
public class AdamUserAuthController {
@ApiOperationSupport(order = 1)
@ApiOperation(value = "手机号密码登录")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "mobile", value = "手机号"),
@ApiImplicitParam(type = "form", dataType = "String", name = "password", value = "密码"),
})
@PostMapping(value = {""})
public ResponseDto<Object> loginByPwd(@RequestParam String mobile, @RequestParam String password) {
log.info("mobile:{},pwd:{}", mobile, password);
Map<String, Object> claimsMap = new HashMap<>(), rstMap = new HashMap<>();
claimsMap.put("username", "zhanggb");
claimsMap.put("uid", "2021");
String token = JwtUtil.create(claimsMap);
log.info("token:{}", token);
rstMap.put("token", token);
rstMap.put("userInfo", AdamUserInfoVo.getNew());
rstMap.put("thiredPartInfo", AdamThirdPartInfoVo.getNew());
// TODO: 2021/5/10 会员信息
rstMap.put("cardsInfo", null);
return ResponseDto.success(rstMap);
}
@ApiOperationSupport(order = 2)
@ApiOperation(value = "发送验证码")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mobile", value = "手机号"),
})
@GetMapping(value = {"send/{mobile}"})
public ResponseDto<Object> sendSms(@PathVariable String mobile) {
log.info("send to mobile:{}", mobile);
// TODO: 2021/5/10
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 = "code", value = "验证码"),
})
@PostMapping(value = {"sms"})
public ResponseDto<Object> loginBySms(@RequestParam String mobile, @RequestParam String code) {
log.info("mobile:{},pwd:{}", mobile, code);
Map<String, Object> claimsMap = new HashMap<>(), rstMap = new HashMap<>();
claimsMap.put("username", "zhanggb");
claimsMap.put("uid", "2021");
String token = JwtUtil.create(claimsMap);
log.info("token:{}", token);
rstMap.put("token", token);
rstMap.put("userInfo", AdamUserInfoVo.getNew());
rstMap.put("thiredPartInfo", AdamThirdPartInfoVo.getNew());
// TODO: 2021/5/10 会员信息
rstMap.put("cardsInfo", null);
return ResponseDto.success(token);
}
@ApiOperationSupport(order = 4)
@ApiOperation(value = "手机号一键登录")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "accessToken", value = "访问令牌"),
})
@PostMapping(value = {"tpa/mobile"})
public ResponseDto<Object> loginByTpaMobile(@RequestParam String accessToken) {
log.info("login by mobile access token:{}", accessToken);
// TODO: 2021/5/10
Map<String, Object> claimsMap = new HashMap<>(), rstMap = new HashMap<>();
claimsMap.put("username", "zhanggb");
claimsMap.put("uid", "2021");
String token = JwtUtil.create(claimsMap);
log.info("token:{}", token);
rstMap.put("token", token);
rstMap.put("userInfo", AdamUserInfoVo.getNew());
rstMap.put("thiredPartInfo", AdamThirdPartInfoVo.getNew());
// TODO: 2021/5/10 会员信息
rstMap.put("cardsInfo", null);
return ResponseDto.success(rstMap);
}
@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"),
})
@PostMapping(value = {"tpa"})
public ResponseDto<Object> loginByTpa(@RequestParam String openId, @RequestParam String nickname,
@RequestParam String avatar, @RequestParam String platform) {
log.info("login by tpa openId:{}, nickname:{}, avatar: {}, platform:{}", openId, nickname, avatar, platform);
// TODO: 2021/5/10
Map<String, Object> claimsMap = new HashMap<>(), rstMap = new HashMap<>();
claimsMap.put("username", "zhanggb");
claimsMap.put("uid", "2021");
String token = JwtUtil.create(claimsMap);
log.info("token:{}", token);
rstMap.put("token", token);
rstMap.put("userInfo", AdamUserInfoVo.getNew());
rstMap.put("thiredPartInfo", AdamThirdPartInfoVo.getNew());
// TODO: 2021/5/10 会员信息
rstMap.put("cardsInfo", null);
return ResponseDto.success(rstMap);
}
@ApiOperationSupport(order = 6)
@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<Object> 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
Map<String, Object> claimsMap = new HashMap<>(), rstMap = new HashMap<>();
claimsMap.put("username", "zhanggb");
claimsMap.put("uid", "2021");
String token = JwtUtil.create(claimsMap);
log.info("token:{}", token);
rstMap.put("token", token);
rstMap.put("userInfo", AdamUserInfoVo.getNew());
rstMap.put("thiredPartInfo", AdamThirdPartInfoVo.getNew());
// TODO: 2021/5/10 会员信息
rstMap.put("cardsInfo", null);
return ResponseDto.success(rstMap);
}
}
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.JsonUtils;
import com.liquidnet.service.ResponseDto;
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.IAdamUserInfoService;
import com.liquidnet.service.adam.service.IAdamUserService;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@ApiSupport(order = 10020)
@Api(tags = "用户中心")
@Slf4j
@RestController
@RequestMapping("user")
public class AdamUserController {
@Autowired
IAdamUserService adamUserService;
@Autowired
IAdamUserInfoService adamUserInfoService;
@ApiOperationSupport(order = 1)
@ApiOperation(value = "个人资料编辑")
@PostMapping(value = {"edit"})
public ResponseDto<AdamUserInfoVo> edit(@RequestBody AdamUserInfoParam adamUserInfoParam) {
// TODO: 2021/5/10
log.info("adamUserInfoParam:{}", JsonUtils.toJson(adamUserInfoParam));
String uid = "1";
// TODO: 2021/5/10
AdamUserInfoVo userInfoVo = adamUserService.queryByUid(uid);
BeanUtils.copyProperties(adamUserInfoParam, userInfoVo);
adamUserInfoService.edit(userInfoVo);
return ResponseDto.success(AdamUserInfoVo.getNew());
return ResponseDto.success(userInfoVo);
}
@ApiOperationSupport(order = 2)
......
......@@ -6,7 +6,6 @@ import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.BsonUtil;
import com.liquidnet.commons.lang.util.SqlMapping;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.entity.AdamEnters;
import com.liquidnet.service.adam.mapper.AdamEntersMapper;
import com.liquidnet.service.adam.service.IAdamEntersService;
......@@ -72,32 +71,33 @@ public class AdamEntersServiceImpl extends ServiceImpl<AdamEntersMapper, AdamEnt
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void add(AdamEnters info) {
if (info.getIsDefault()) {
Set<Object> keys = (Set<Object>) redisUtil.hkeys(AdamRedisConst.INFO_ENTERS.concat(info.getUid()));
if (!CollectionUtils.isEmpty(keys)) {
AdamEnters deaultEnters = new AdamEnters();
deaultEnters.setIsDefault(false);
deaultEnters.setUpdatedAt(info.getCreatedAt());
deaultEnters.setUid(info.getUid());
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(deaultEnters));
Document doc = mongoTemplate.getCollection(AdamEnters.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("uid").is(deaultEnters.getUid()).and("isDefault").is(true)).getQueryObject(),
object, new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
if (null != doc) {
List<Object> paramList = new ArrayList<>();
paramList.add(deaultEnters.getIsDefault());
paramList.add(deaultEnters.getUpdatedAt());
paramList.add(doc.get("uid"));
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
SqlMapping.get("adam_enters.update.is_default", paramList.toArray()));
AdamEnters enters = BsonUtil.toBean(doc, AdamEnters.class);
redisUtil.hset(AdamRedisConst.INFO_ENTERS.concat(enters.getUid()), enters.getEntersId(), enters);
}
}
}
// if (info.getIsDefault()) {
// Set<Object> keys = (Set<Object>) redisUtil.hkeys(AdamRedisConst.INFO_ENTERS.concat(info.getUid()));
// if (!CollectionUtils.isEmpty(keys)) {
// AdamEnters deaultEnters = new AdamEnters();
// deaultEnters.setIsDefault(false);
// deaultEnters.setUpdatedAt(info.getCreatedAt());
// deaultEnters.setUid(info.getUid());
// BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(deaultEnters));
// Document doc = mongoTemplate.getCollection(AdamEnters.class.getSimpleName()).findOneAndUpdate(
// Query.query(Criteria.where("uid").is(deaultEnters.getUid()).and("isDefault").is(true)).getQueryObject(),
// object, new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
// );
//
// if (null != doc) {
// List<Object> paramList = new ArrayList<>();
// paramList.add(deaultEnters.getIsDefault());
// paramList.add(deaultEnters.getUpdatedAt());
// paramList.add(doc.get("uid"));
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("adam_enters.update.is_default", paramList.toArray()));
//
// AdamEnters enters = BsonUtil.toBean(doc, AdamEnters.class);
// redisUtil.hset(AdamRedisConst.INFO_ENTERS.concat(enters.getUid()), enters.getEntersId(), enters);
// }
// }
// }
info.setIsDefault(CollectionUtils.isEmpty(this.list(info.getUid())));
mongoTemplate.insert(Collections.singletonList(info), AdamEnters.class.getSimpleName());
......
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.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.entity.AdamRealName;
import com.liquidnet.service.adam.mapper.AdamRealNameMapper;
import com.liquidnet.service.adam.service.IAdamRealNameService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
/**
......@@ -16,5 +23,20 @@ import org.springframework.stereotype.Service;
*/
@Service
public class AdamRealNameServiceImpl extends ServiceImpl<AdamRealNameMapper, AdamRealName> implements IAdamRealNameService {
@Autowired
MongoTemplate mongoTemplate;
@Autowired
RedisUtil redisUtil;
@Override
public AdamRealInfoVo queryByUid(String uid) {
AdamRealInfoVo realInfoVo = (AdamRealInfoVo) redisUtil.hget(AdamRedisConst.INFO_REAL_NAME, uid);
if (null == realInfoVo) {
realInfoVo = mongoTemplate.findOne(Query.query(Criteria.where("uid").is(uid).and("state").is(1)),
AdamRealInfoVo.class, AdamRealInfoVo.class.getSimpleName());
redisUtil.hset(AdamRedisConst.INFO_REAL_NAME, uid, realInfoVo);
}
return realInfoVo;
}
}
package com.liquidnet.service.adam.service.impl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 用户第三方账号信息 服务实现类
......@@ -16,5 +25,31 @@ import org.springframework.stereotype.Service;
*/
@Service
public class AdamThirdPartyServiceImpl extends ServiceImpl<AdamThirdPartyMapper, AdamThirdParty> implements IAdamThirdPartyService {
@Autowired
MongoTemplate mongoTemplate;
@Autowired
RedisUtil redisUtil;
@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)),
AdamThirdPartInfoVo.class, AdamThirdPartInfoVo.class.getSimpleName());
redisUtil.hset(AdamRedisConst.INFO_THIRD_PARTY, uid, thirdPartInfoVo);
}
return thirdPartInfoVo;
}
@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)
.and("platform").is(platform).and("state").is(1)),
AdamThirdPartInfoVo.class, AdamThirdPartInfoVo.class.getSimpleName());
}
return thirdPartInfoVo;
}
}
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.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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
import org.bson.Document;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
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 java.util.Arrays;
import java.util.List;
/**
* <p>
* 正在现场用户信息 服务实现类
* 用户信息 服务实现类
* </p>
*
* @author liquidnet
......@@ -16,5 +34,39 @@ import org.springframework.stereotype.Service;
*/
@Service
public class AdamUserInfoServiceImpl extends ServiceImpl<AdamUserInfoMapper, AdamUserInfo> implements IAdamUserInfoService {
@Autowired
MongoConverter mongoConverter;
@Autowired
MongoTemplate mongoTemplate;
@Autowired
RabbitTemplate rabbitTemplate;
@Autowired
RedisUtil redisUtil;
@Override
public void edit(AdamUserInfoVo userInfoVo) {
boolean isNotComplete = userInfoVo.getIsComplete() == 0;
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(userInfoVo));
Document doc = mongoTemplate.getCollection(AdamUserInfoVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("uid").is(userInfoVo.getUid())).getQueryObject(),
object, new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
List<Object> paramList = Arrays.asList(
userInfoVo.getNickName(),
userInfoVo.getSex(),
userInfoVo.getBirthday(),
userInfoVo.getArea(),
userInfoVo.getSignature(),
userInfoVo.getAvatar(),
userInfoVo.getBackground(),
null, null,// qr_code, qr_pic
userInfoVo.getTagMe(),
userInfoVo.getUid()
);
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
SqlMapping.get(isNotComplete ? "adam_user_info.add" : "adam_user_info.edit", paramList.toArray()));
redisUtil.hset(AdamRedisConst.INFO_USER, userInfoVo.getUid(), userInfoVo);
}
}
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.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.adam.constant.AdamRedisConst;
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.liquidnet.service.adam.mapper.AdamUserMapper;
import com.liquidnet.service.adam.service.IAdamUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.Collections;
/**
* <p>
* 用户 服务实现类
......@@ -16,5 +33,88 @@ import org.springframework.stereotype.Service;
*/
@Service
public class AdamUserServiceImpl extends ServiceImpl<AdamUserMapper, AdamUser> implements IAdamUserService {
@Autowired
MongoTemplate mongoTemplate;
@Autowired
RabbitTemplate rabbitTemplate;
@Autowired
RedisUtil redisUtil;
@Override
public AdamUserInfoVo queryByUid(String uid) {
AdamUserInfoVo userInfoVo = (AdamUserInfoVo) redisUtil.hget(AdamRedisConst.INFO_USER, uid);
if (null == userInfoVo) {
userInfoVo = mongoTemplate.findOne(Query.query(Criteria.where("uid").is(uid).and("state").is(1)),
AdamUserInfoVo.class, AdamUserInfoVo.class.getSimpleName());
redisUtil.hset(AdamRedisConst.INFO_USER, uid, userInfoVo);
}
return userInfoVo;
}
@Override
public String queryUidByRedis(String mobile) {
return (String) redisUtil.hget(AdamRedisConst.INFO_IDENTITY_MOBILE, mobile);
// AdamUserInfoVo userInfoVo;
// if (null == (userInfoVo = (AdamUserInfoVo) redisUtil.hget(AdamRedisConst.INFO_MOBILES, mobile))) {
// userInfoVo = mongoTemplate.findOne(Query.query(Criteria.where("mobile").is(mobile).and("state").is(1)),
// AdamUserInfoVo.class, AdamUserInfoVo.class.getSimpleName());
//
// redisUtil.hset(AdamRedisConst.INFO_MOBILES, mobile, userInfoVo);
// }
// return userInfoVo;
}
@Override
public String queryUidByRedis(String openId, String platform) {
return (String) redisUtil.hget(AdamRedisConst.INFO_IDENTITY_THIRD_PARTY, platform.concat(openId));
}
@Override
public AdamUserInfoVo register(String mobile) {
AdamUserInfoVo userInfoVo = AdamUserInfoVo.getNew();
userInfoVo.setMobile(mobile);
userInfoVo.setUid(IDGenerator.nextSnowId() + "");
userInfoVo.setIsComplete(0);
userInfoVo.setState(1);
userInfoVo.setCreateAt(DateUtil.format(LocalDateTime.now(), DateUtil.Formatter.yyyyMMddHHmmss));
// boolean hset = redisUtil.hset(AdamRedisConst.INFO_MOBILES, userInfoVo.getMobile(), userInfoVo);
Collection<AdamUserInfoVo> vos = mongoTemplate.insert(Collections.singletonList(userInfoVo), AdamUserInfoVo.class.getSimpleName());
redisUtil.hset(AdamRedisConst.INFO_IDENTITY_MOBILE, mobile, userInfoVo.getUid());
return userInfoVo;
}
@Override
public AdamUserInfoVo register(AdamThirdPartParam thirdPartParam) {
LocalDateTime now = LocalDateTime.now();
AdamUserInfoVo userInfoVo = AdamUserInfoVo.getNew();
userInfoVo.setMobile(thirdPartParam.getMobile());
userInfoVo.setUid(IDGenerator.nextSnowId() + "");
userInfoVo.setCreateAt(DateUtil.format(now, DateUtil.Formatter.yyyyMMddHHmmss));
AdamThirdPartInfoVo thirdPartInfoVo = AdamThirdPartInfoVo.getNew();
BeanUtils.copyProperties(thirdPartParam, thirdPartInfoVo);
thirdPartInfoVo.setUid(userInfoVo.getUid());
thirdPartInfoVo.setState(1);// 1-绑定
// boolean userInfoSetRst = redisUtil.hset(AdamRedisConst.INFO_MOBILES, thirdPartParam.getMobile(), userInfoVo);
// boolean thirdPartSetRst = redisUtil.hset(AdamRedisConst.INFO_THIRD_PARTY.concat(thirdPartInfoVo.getPlatform()), thirdPartInfoVo.getOpenId(), thirdPartInfoVo);
Collection<AdamUserInfoVo> userInfoVos = mongoTemplate.insert(Collections.singletonList(userInfoVo), AdamUserInfoVo.class);
Collection<AdamThirdPartInfoVo> thirdPartInfoVos = mongoTemplate.insert(Collections.singletonList(thirdPartInfoVo), AdamThirdPartInfoVo.class);
redisUtil.hset(AdamRedisConst.INFO_IDENTITY_THIRD_PARTY, thirdPartParam.getPlatform().concat(thirdPartParam.getOpenId()), userInfoVo.getUid());
// List<Object> paramList = Arrays.asList();
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("adam_user.add", paramList.toArray()));
return userInfoVo;
}
}
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_third_party.add=insert into ln_adam.adam_third_party (`uid`, open_id, avatar, nick_name, platform, `state`, created_at, updated_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 (?,?,?,?,?,?,?,?,?)
\ No newline at end of file
adam_user_info.add=insert into adam_user_info (nick_name, sex, birthday, area, signature, avatar, background, qr_code, qr_pic, tag_me, `uid`) VALUES (?,?,?,?,?,?,?,?,?,?,?)
adam_user_info.edit=UPDATE ln_adam.adam_user_info SET nick_name=?, sex=?, birthday=?, area=?, signature=?, avatar=?, background=?, qr_code=?, qr_pic=?, tag_me=? WHERE uid=?
\ No newline at end of file
adam_enters.add=INSERT INTO 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 adam_enters SET `type`=?, `name`=?, mobile=?, id_card=?, is_default=?, `state`=?, updated_at=? where enters_id=?
adam_enters.update.is_default=UPDATE adam_enters set is_default=?, updated_at=? where enters_id=?
adam_enters.remove=UPDATE adam_enters SET `state`=?, updated_at=?, deleted_at=? where enters_id=?
\ No newline at end of file
package com.liquidnet.service.kylin.dto.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 轮播图 banner 搜索 需要的参数 前端api
* </p>
* @author jiangxiulong
* @since 2021-05-10 11:19 上午
*/
@Data
public class BannersApiSearchParam implements Serializable {
@ApiModelProperty(value = "展示的位置", example = "11")
private String position;
@ApiModelProperty(value = "当前用户省份code", example = "4")
private String provinceCode;
}
......@@ -60,11 +60,11 @@ public class BannersParam implements Serializable {
@ApiModelProperty(value = "备注", example = "这是一个演出推广的banner")
private String remarks;
@ApiModelProperty(value = "展示的位置 多选 数组", example = "[\"1\", \"4\", \"3\"]")
@ApiModelProperty(value = "展示的位置 多选 数组", example = "[\"1\", \"4\", \"3\", \"5\", \"6\", \"8\"]")
@NotEmpty(message = "请选择展示位置")
private List positionList;
@ApiModelProperty(value = "推广省份 多选 数组", example = "[\"1\", \"4\", \"3\"]")
@ApiModelProperty(value = "推广省份 多选 数组", example = "[\"1\", \"2\", \"5\"]")
// @NotEmpty(message = "请选择推广省份")
private List provincesList;
......
......@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.kylin.entity.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import org.springframework.beans.BeanUtils;
......@@ -80,6 +81,10 @@ public class TicketCreateParam implements Serializable {
@ApiModelProperty(value = "二维码显示时间", example = "2020-12-01T14:00:00")
private LocalDateTime qrCodeShowTime;
@ApiModelProperty(value = "次数", example = "1")
@NotNull(message = "不能为空")
private int counts;
@ApiModelProperty(value = "是否开启缺票登记", example = "1")
@NotNull(message = "不能为空")
private int isLackRegister;
......@@ -111,6 +116,7 @@ public class TicketCreateParam implements Serializable {
kylinTicketStatus.setStatusExchange(7);
kylinTicketStatus.setSurplusExchange(this.totalExchange);
kylinTicketStatus.setSurplusGeneral(this.totalGeneral);
kylinTicketStatus.setCounts(this.counts);
if (createdAt != null)
kylinTicketStatus.setCreatedAt(createdAt);
if (updatedAt != null)
......
......@@ -29,7 +29,8 @@ public class BannersVo implements Serializable {
@ApiModelProperty(value = "封面图")
private String coverImg;
@ApiModelProperty(value = "跳转类型")
@ApiModelProperty(value = "跳转类型 0: 1PGC点播 2 PGC直播 5场地 6票务 7商品 8巡演 12活动跳转-可分享 100活动跳转 13积分商品" +
"14商品集合 20音乐人 21歌曲 22专辑 23视频播单 24音乐人集合 26摩登会员 201youngBlood报名跳转 0不跳转")
private Integer targetType;
@ApiModelProperty(value = "跳转目标id或者url")
......
......@@ -20,6 +20,8 @@ public class PerformanceVo {
private String performancesId;
@ApiModelProperty(value = "演出名称")
private String title;
@ApiModelProperty(value = "演出图片")
private String imgPoster;
@ApiModelProperty(value = "演出类型 1音乐节 2演唱会 3小型演出 4展览 6舞台剧 101音乐节 102小型演出(livehouse演出) 103巡演")
private int type;
@ApiModelProperty(value = "演出开始时间")
......@@ -62,8 +64,18 @@ public class PerformanceVo {
private int isMember;
@ApiModelProperty(value = "是否开启缺票登记")
private int isLackRegister;
@ApiModelProperty(value = "是否实名")
private int isTrueName;
@ApiModelProperty(value = "限购张数")
private int limitCount;
@ApiModelProperty(value = "会员限购张数")
private Integer limitCountMember;
@ApiModelProperty(value = "是否专属")
private int isExclusive;
@ApiModelProperty(value = "是否优惠")
private int isDiscount;
@ApiModelProperty(value = "是否提前")
private int isAdvance;
@ApiModelProperty(value = "文案")
private String message;
......@@ -71,12 +83,13 @@ public class PerformanceVo {
public void setPerformance(KylinPerformances performance) {
this.performancesId = performance.getPerformancesId();
this.title = performance.getTitle();
this.imgPoster = performance.getImgPoster();
this.timeStart = performance.getTimeStart().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.timeEnd = performance.getTimeEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.type = performance.getType();
}
public void setTimePriceVipAndLack(int isLackRegister, int isMember, int isExclusive, BigDecimal price, LocalDateTime stopSellTime, LocalDateTime sellTime) {
public void setTimePriceVipAndLack(int isLackRegister, int isMember, int isExclusive, BigDecimal price, LocalDateTime stopSellTime, LocalDateTime sellTime,int isAdvance,int isDiscount) {
this.isLackRegister = isLackRegister;
this.isMember = isMember;
this.isExclusive = isExclusive;
......@@ -84,14 +97,17 @@ public class PerformanceVo {
this.stopSellTime = stopSellTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.sellTime = sellTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.appStatus = 9;
this.isDiscount = isDiscount;
this.isAdvance = isAdvance;
this.message = "";
}
public void setPerformanceStatus(KylinPerformanceStatus performanceStatus) {
this.statusSell = performanceStatus.getStatusSell();
this.isRecommend = performanceStatus.getIsRecommend();
this.isTrueName = performanceStatus.getIsTrueName();
this.limitCount = performanceStatus.getLimitCount();
this.limitCountMember = performanceStatus.getLimitCountMember();
}
//TODO 巡演 搭售 场地
......
......@@ -56,6 +56,8 @@ public class TicketVo {
private int isElectronic;
@ApiModelProperty(value = "是否快递票")
private int isExpress;
@ApiModelProperty(value = "可验证次数")
private Integer counts;
@ApiModelProperty(value = "状态")
private int status;
@ApiModelProperty(value = "兑换状态")
......@@ -68,6 +70,8 @@ public class TicketVo {
private int isTrueName;
@ApiModelProperty(value = "限购张数")
private int limitCount;
@ApiModelProperty(value = "会员限购张数")
private Integer limitCountMember;
@ApiModelProperty(value = "是否会员专属")
private int isExclusive;
@ApiModelProperty(value = "是否会员")
......@@ -104,6 +108,9 @@ public class TicketVo {
this.isElectronic = ticketStatus.getIsElectronic();
this.isExpress = ticketStatus.getIsExpress();
this.isStudent = ticketStatus.getIsStudent();
this.limitCountMember = ticketStatus.getMemberLimitCount();
this.limitCount = ticketStatus.getLimitCount();
this.counts = ticketStatus.getCounts();
}
}
......@@ -46,6 +46,9 @@ public class TicketPartnerVo implements Serializable {
@ApiModelProperty(value = "限购数量", example = "0")
private int limitCount;
@ApiModelProperty(value = "次数", example = "0")
private int counts;
@ApiModelProperty(value = "票种开售时间", example = "2020-12-01T12:00:00")
private String timeStart;
......
......@@ -3,6 +3,7 @@ package com.liquidnet.service.kylin.service.admin;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
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;
......@@ -22,23 +23,77 @@ import java.util.List;
*/
public interface IKylinPerformancesAdminService extends IService<KylinPerformances> {
/**
* 获取演出详情
* @param performancesId 演出id
* @return PerformanceMisVo
*/
PerformanceMisVo performanceDetails(String performancesId);
PerformanceMisVo performanceCreateDetails(String performancesId);
PerformanceMisVo performanceUpdateDetails(String performancesId);
/**
* 演出审核
* @param performancesId 演出id
* @param status 审核状态 3通过 4拒绝
* @param rejectTxt 拒绝理由 如果 status == 4 必填
* @return boolean
*/
boolean performanceAudit(String performancesId,int status ,String rejectTxt);
/**
* 获取 演出列表 (全量)
* @param performanceAdminListParam 列表搜索参数
* @return 分页 sql 数据
*/
PageInfo<PerformanceAdminListDao> getList(PerformanceAdminListParam performanceAdminListParam);
/**
* 根据巡演id 查询演出列表 简易
* @param roadShowId 巡演id
* @return 20个 sql 数据
*/
List<PerformanceTitleDao> getListByRoadShowId(String roadShowId);
/**
* 根据演出状态 查询演出列表 简易
* @param status 演出状态
* @return 20个 sql 数据
*/
List<PerformanceTitleDao> getListByStatus(String status);
/**
* 修改演出的巡演关联
* @param performancesId 演出id
* @param roadShowId 巡演id
* @return boolean
*/
boolean changeRoadShowId(String performancesId,String roadShowId);
/**
* 设置 演出推荐 关联
* @param performancesId 相关参数
* @return boolean
*/
boolean setRecommend(List<PerformanceRecommendAdminParam> performancesId);
/**
* 查询 推荐演出列表
* @return 分页 sql 数据
*/
PageInfo<PerformanceRecommendAdminDao> listRecommend();
/**
* 获取 演出会员信息(包含场次票)
* @return sql 数据
*/
PerformanceMemberAuditDao performanceMemberInfo(String performanceId);
//修改 演出会员信息(包含场次票)
//列表 待审核 演出会员信息
//详情 待审核 演出会员信息
//审核 会员信息
//列表 演出会员审核记录
}
......@@ -18,14 +18,42 @@ import com.liquidnet.service.kylin.entity.KylinRoadShows;
*/
public interface IKylinRoadShowsAdminService extends IService<KylinRoadShows> {
String createRoadShow(CreateRoadShowParam createRoadShowParam);
/**
* 创建巡演
* @param createRoadShowParam 创建巡演参数
* @return 巡演id
*/
String createRoadShow(CreateRoadShowParam createRoadShowParam);
/**
* 修改巡演
* @param createRoadShowParam 修改巡演参数
* @return 巡演id
*/
boolean updateRoadShow(CreateRoadShowParam createRoadShowParam);
/**
* 删除巡演 (修改巡演上下线关系)
* @param roadShowId 巡演id
* @param status 状态 0停用 1启用
* @return boolean
*/
boolean deleteRoadShow(String roadShowId, int status);
/**
* 巡演详情
* @param roadShowId 巡演id
* @return 巡演数据
*/
RoadShowAdminVo detailsRoadShow(String roadShowId);
/**
* 巡演列表
* @param title 巡演名称
* @param page 页数
* @param size 数量
* @return 分页 sql 数据
*/
PageInfo<RoadShowAdminListDao> listRoadShow(String title, int page, int size);
......
......@@ -20,28 +20,28 @@ public interface IKylinPerformancesPartnerService extends IService<KylinPerforma
/**
* 演出第一步
* @param step1Param
* @return
* @param step1Param 相关参数
* @return 演出id
*/
String step1(PerformanceStep1Param step1Param);
/**
* 创建演出第一步
* @param step1Param
* @return
* @param step1Param 相关参数
* @return 演出id
*/
String createStep1(PerformanceStep1Param step1Param);
/**
* 修改演出第一步
* @param step1Param
* @return
* @param step1Param 相关参数
* @return 演出id
*/
String updateStep1(PerformanceStep1Param step1Param);
/**
* 获取演出第一步数据
* @param performancesId
* @return
* @param performancesId 演出id
* @return 演出对象
*/
PerformancePartnerVo getStep1(String performancesId);
......@@ -62,36 +62,61 @@ public interface IKylinPerformancesPartnerService extends IService<KylinPerforma
/**
* 演出第二步
* @param step2Param
* @return
* @param step2Param 相关参数
* @return boolean
*/
boolean step2(PerformanceStep2Param step2Param);
/**
* 演出第二步创建
* @param step2Param
* @return
* @param step2Param 相关参数
* @return boolean
*/
boolean createStep2(PerformanceStep2Param step2Param);
/**
* 演出第二步修改
* @param step2Param
* @return
* @param step2Param 相关参数
* @return boolean
*/
boolean updateStep2(PerformanceStep2Param step2Param);
/**
* 获取演出第二步数据
* @param performancesId 演出id
* @return 演出 第二步 数据
*/
PerformanceStep2Param getStep2(String performancesId);
// PerformanceStep2Param getCreateStep2(String performancesId);
//
// PerformanceStep2Param getUpdateStep2(String performancesId);
/**
* 演出上线
* @param performancesId 演出id
* @return boolean
*/
boolean onLinePerformance(String performancesId);
/**
* 演出下线
* @param performancesId 演出id
* @return boolean
*/
boolean outLinePerformance(String performancesId);
/**
* 复制演出 (只有巡演类型)
* @param performancesId 演出id
* @return 演出id
*/
String copyPerformance(String performancesId);
/**
* 演出列表
* @param performancePartnerListParam 相关参数
* @return 分页 msql 数据
*/
PageInfo<PerformancePartnerListDao> getList(PerformancePartnerListParam performancePartnerListParam);
}
......@@ -20,35 +20,50 @@ public interface IKylinTicketTimesPartnerService extends IService<KylinTicketTim
/**
* 创建场次汇总
* @param createTicketTimesParam
* @return
* @param createTicketTimesParam 相关参数
* @return vo
*/
TicketTimesPartnerVo createTimesSummary(CreateTicketTimesParam createTicketTimesParam);
/**
* 未通过审核创建场次
* @param createTicketTimesParam
* @return
* @param createTicketTimesParam 相关参数
* @return vo
*/
TicketTimesPartnerVo createTimes(CreateTicketTimesParam createTicketTimesParam);
/**
* 通过审核后创建场次
* @param createTicketTimesParam
* @return
* @param createTicketTimesParam 相关参数
* @return 相关参数
*/
TicketTimesPartnerVo addNewTimes(CreateTicketTimesParam createTicketTimesParam);
/**
* 删除 场次(只有未审核通过可删除)
* @param ticketTimesId
* @return
* @param ticketTimesId 场次id
* @return boolean
*/
Boolean deleteTimes(String ticketTimesId);
/**
* 修改场次信息
* @param createTicketTimesParam 相关参数
* @return vo
*/
TicketTimesPartnerVo changeTimes(CreateTicketTimesParam createTicketTimesParam);
/**
* 根据演出id 获取全部场次数据
* @param performancesId 演出id
* @return list<vo>
*/
List<TicketTimesPartnerVo> getTimesMongoList(String performancesId);
/**
* 根据场次id 获取场次信息
* @param timesId 场次id
* @return vo
*/
TicketTimesPartnerVo getTimesMongo(String timesId);
}
......@@ -19,39 +19,64 @@ public interface IKylinTicketsPartnerService extends IService<KylinTickets> {
/**
* 创建票汇总
* @param ticketCreateParam
* @return
* @param ticketCreateParam 相关参数
* @return vo
*/
TicketPartnerVo createTicketSummary(TicketCreateParam ticketCreateParam);
/**
* 未通过审核创建票
* @param ticketCreateParam
* @return
* @param ticketCreateParam 相关参数
* @return vo
*/
TicketPartnerVo createTicket(TicketCreateParam ticketCreateParam);
/**
* 通过审核后创建场次
* @param ticketCreateParam
* @return
* 通过审核后创建
* @param ticketCreateParam 相关参数
* @return vo
*/
TicketPartnerVo addNewTicket(TicketCreateParam ticketCreateParam);
/**
* 修改票
* @param ticketCreateParam 相关参数
* @return vo
*/
TicketPartnerVo updateTicket(TicketCreateParam ticketCreateParam);
/**
* 删除 票(只有未审核通过可删除)
* @param ticketsId
* @return
* @param ticketsId 票id
* @return boolean
*/
boolean deleteTicket(String ticketsId);
/**
* 复制票
* @param ticketsId 票id
* @return vo
*/
TicketPartnerVo copyTicket(String ticketsId);
/**
* 整个场次票 提交 审核
* @param timesId 场次id
* @return boolean
*/
boolean submitTicketByTimes(String timesId);
/**
* 从mongo 获取 当前场次所有 票
* @param timesId 场次id
* @return list<vo>
*/
List<TicketPartnerVo> getTicketMongoList(String timesId);
/**
* 从mongo 获取 当前票
* @param ticketsId 票id
* @return vo
*/
TicketPartnerVo getTicketsMongo(String ticketsId);
}
package com.liquidnet.service.kylin.dao;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel
@Data
public class PerformanceMemberAuditDao {
@ApiModelProperty(value = "演出id")
private String performancesId;
@ApiModelProperty(value = "演出名称")
private String title;
@ApiModelProperty(value = "是否会员")
private int isMember;
@ApiModelProperty(value = "是否专属")
private int isExclusive;
@ApiModelProperty(value = "票种列表")
private List<TicketMemberAuditDao> ticketMemberAudit;
}
package com.liquidnet.service.kylin.dao;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel
@Data
public class TicketMemberAuditDao {
@ApiModelProperty(value = "演出id")
private String ticketsId;
@ApiModelProperty(value = "演出名称")
private String title;
@ApiModelProperty(value = "适用时间开始")
private String useStart;
// @ApiModelProperty(value = "使用时间结束")
// private String useEnd;
@ApiModelProperty(value = "状态")
private int status;
@ApiModelProperty(value = "开售时间")
private int timeStart;
@ApiModelProperty(value = "原价")
private int price;
@ApiModelProperty(value = "会员优惠价格")
private int priceMember;
@ApiModelProperty(value = "会员优惠时间段限购数量")
private int memberLimitCount;
@ApiModelProperty(value = "会员提前开售分钟")
private int timeStartMember;
@ApiModelProperty(value = "是否会员")
private int isMember;
@ApiModelProperty(value = "是否专属")
private int isExclusive;
}
......@@ -74,6 +74,11 @@ public class KylinPerformanceStatus implements Serializable {
*/
private Integer limitCount;
/**
* 会员限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)
*/
private Integer limitCountMember;
/**
* 推荐顺序 0不推荐
*/
......
......@@ -119,6 +119,11 @@ public class KylinTicketStatus implements Serializable {
*/
private Integer limitCount;
/**
* 会员限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)
*/
private Integer memberLimitCount;
/**
* 是否会员专属 0不是 1是
*/
......
......@@ -31,4 +31,10 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> {
//推荐列表
List<PerformanceRecommendAdminDao> reCommendPerformanceList();
//演出 会员演出相关信息
PerformanceTitleDao misPerformanceMemberInfo(String performancesId);
//演出 会员票相关信息
List<TicketMemberAuditDao> misTicketMemberInfo(String performancesId);
}
......@@ -48,6 +48,21 @@
<result column="is_recommend" property="isRecommend"/>
</resultMap>
<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"/>
</resultMap>
<!-- 第三方演出列表 (不包含退票信息) -->
<select id="partnerPerformanceList" parameterType="java.util.Map" resultMap="partnerPerformanceListResult">
SELECT
......@@ -198,9 +213,9 @@
LEFT JOIN kylin_performance_relations AS pr ON pr.performance_id = p.performances_id
WHERE (ps.status = 3 or ps.status = 6 or ps.status = 7)
AND pr.road_show_id = ${roadShowId}
LIMIT 20
</select>
<!-- Mis 根据巡演查询演出列表 -->
<!-- Mis 根据状态查询演出列表 -->
<select id="misTitleByStatusList" parameterType="java.lang.String" resultMap="performanceTitleDaoResult">
SELECT performances_id,
title
......@@ -208,6 +223,7 @@
LEFT JOIN kylin_performance_status AS ps ON ps.performance_id = p.performances_id
LEFT JOIN kylin_performance_relations AS pr ON pr.performance_id = p.performances_id
WHERE ps.status = ${roadShowId}
LIMIT 20
</select>
<!-- Mis演出推荐列表 -->
<select id="reCommendPerformanceList" resultMap="PerformanceRecommendAdminDaoResult">
......@@ -222,4 +238,41 @@
ORDER BY is_recommend DESC
</select>
<!-- Mis根据演出id查询演出名称 -->
<select id="misPerformanceMemberInfo" resultMap="performanceTitleDaoResult">
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
LEFT JOIN kylin_ticket_times AS tt ON tt.ticket_times_id = ttr.times_id
LEFT JOIN(
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 ,
is_exclusive
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};
</select>
</mapper>
......@@ -158,6 +158,7 @@ CREATE TABLE `kylin_performance_status`
`audit_status` tinyint NOT NULL DEFAULT -1 COMMENT '-1未提交审核,0提交审核,1审核通过,2审核拒绝',
`is_true_name` tinyint NOT NULL DEFAULT 0 COMMENT '是否实名 0不需要 1需要',
`limit_count` int(11) NOT NULL DEFAULT 0 COMMENT '限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)',
`limit_count_member` int(11) NOT NULL DEFAULT 0 COMMENT '会员限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)',
`is_recommend` tinyint(255) NOT NULL DEFAULT 0 COMMENT '是否推荐 0否 1是',
`created_at` datetime NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT NULL COMMENT '修改时间',
......@@ -274,30 +275,31 @@ CREATE TABLE `kylin_tickets`
drop TABLE if exists `kylin_ticket_status`;
CREATE TABLE `kylin_ticket_status`
(
`mid` int(11) NOT NULL AUTO_INCREMENT,
`ticket_status_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'ticket_status_id',
`ticket_id` varchar(255) NOT NULL DEFAULT '' COMMENT '票关联id',
`is_student` tinyint NOT NULL DEFAULT 0 COMMENT '是否学生票 0否 1是',
`is_electronic` tinyint NOT NULL DEFAULT 0 COMMENT '是否电子票 0否 1是',
`is_express` tinyint NOT NULL DEFAULT 0 COMMENT '是否快递票 0否 1是',
`status` tinyint NOT NULL DEFAULT 0 COMMENT '票状态 -2新建 -1删除;0未提交;1审核中;2审核中(自动在售);3审核通过;4审核未通过;6在售;7停售;8售罄;9未开始;10已结束',
`counts` int(11) NOT NULL DEFAULT 1 COMMENT '可验证次数',
`status_exchange` tinyint NOT NULL DEFAULT 0 COMMENT '兑换状态 6可兑换 7不可兑换',
`is_show_code` tinyint NOT NULL DEFAULT 0 COMMENT '是否显示二维码 0否 1是',
`qr_code_show_time` datetime NOT NULL DEFAULT '2030-01-01 12:00:00' COMMENT '二维码显示时间',
`is_lack_register` tinyint NOT NULL DEFAULT 0 COMMENT '是否开启缺票登记 0否 1是',
`total_general` int(11) NOT NULL DEFAULT 0 COMMENT '总库存',
`total_exchange` int(11) NOT NULL DEFAULT 0 COMMENT '总兑换库存',
`surplus_general` int(11) NOT NULL DEFAULT 0 COMMENT '剩余库存',
`surplus_exchange` int(11) NOT NULL DEFAULT 0 COMMENT '剩余兑换库存',
`express_type` tinyint NOT NULL DEFAULT 1 COMMENT '1寄付 2到付',
`is_true_name` tinyint NOT NULL DEFAULT 0 COMMENT '是否实名 0不需要 1需要',
`limit_count` int(11) NOT NULL DEFAULT 0 COMMENT '限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)',
`is_transfer` tinyint NOT NULL DEFAULT 0 COMMENT '是否开启转赠 0关闭 1开启',
`is_exclusive` tinyint NOT NULL DEFAULT 0 COMMENT '是否会员专属 0不是 1是',
`is_member` tinyint NOT NULL DEFAULT 0 COMMENT '是否关联会员 0不是 1是',
`created_at` datetime NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT NULL COMMENT '修改时间',
`mid` int(11) NOT NULL AUTO_INCREMENT,
`ticket_status_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'ticket_status_id',
`ticket_id` varchar(255) NOT NULL DEFAULT '' COMMENT '票关联id',
`is_student` tinyint NOT NULL DEFAULT 0 COMMENT '是否学生票 0否 1是',
`is_electronic` tinyint NOT NULL DEFAULT 0 COMMENT '是否电子票 0否 1是',
`is_express` tinyint NOT NULL DEFAULT 0 COMMENT '是否快递票 0否 1是',
`status` tinyint NOT NULL DEFAULT 0 COMMENT '票状态 -2新建 -1删除;0未提交;1审核中;2审核中(自动在售);3审核通过;4审核未通过;6在售;7停售;8售罄;9未开始;10已结束',
`counts` int(11) NOT NULL DEFAULT 1 COMMENT '可验证次数',
`status_exchange` tinyint NOT NULL DEFAULT 0 COMMENT '兑换状态 6可兑换 7不可兑换',
`is_show_code` tinyint NOT NULL DEFAULT 0 COMMENT '是否显示二维码 0否 1是',
`qr_code_show_time` datetime NOT NULL DEFAULT '2030-01-01 12:00:00' COMMENT '二维码显示时间',
`is_lack_register` tinyint NOT NULL DEFAULT 0 COMMENT '是否开启缺票登记 0否 1是',
`total_general` int(11) NOT NULL DEFAULT 0 COMMENT '总库存',
`total_exchange` int(11) NOT NULL DEFAULT 0 COMMENT '总兑换库存',
`surplus_general` int(11) NOT NULL DEFAULT 0 COMMENT '剩余库存',
`surplus_exchange` int(11) NOT NULL DEFAULT 0 COMMENT '剩余兑换库存',
`express_type` tinyint NOT NULL DEFAULT 1 COMMENT '1寄付 2到付',
`is_true_name` tinyint NOT NULL DEFAULT 0 COMMENT '是否实名 0不需要 1需要',
`limit_count` int(11) NOT NULL DEFAULT 0 COMMENT '限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)',
`member_limit_count` int(11) NOT NULL DEFAULT 0 COMMENT '会员限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)',
`is_transfer` tinyint NOT NULL DEFAULT 0 COMMENT '是否开启转赠 0关闭 1开启',
`is_exclusive` tinyint NOT NULL DEFAULT 0 COMMENT '是否会员专属 0不是 1是',
`is_member` tinyint NOT NULL DEFAULT 0 COMMENT '是否关联会员 0不是 1是',
`created_at` datetime NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT NULL COMMENT '修改时间',
KEY `kylin_ticket_status_uid_index` (`ticket_status_id`),
PRIMARY KEY (`mid`)
) ENGINE = InnoDB
......
......@@ -2,18 +2,16 @@ package com.liquidnet.service.kylin.controller;
import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.kylin.dao.BannerDetailsListDao;
import com.liquidnet.service.kylin.dto.param.BannersApiSearchParam;
import com.liquidnet.service.kylin.dto.param.BannersSearchParam;
import com.liquidnet.service.kylin.dto.vo.BannersVo;
import com.liquidnet.service.kylin.dto.vo.PagerVo;
import com.liquidnet.service.kylin.service.impl.admin.KylinBannersServiceImpl;
import com.mongodb.client.AggregateIterable;
import io.swagger.annotations.Api;
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.*;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -35,20 +33,18 @@ public class KylinBannersController {
@GetMapping("")
@ApiOperation("banner列表")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "position", value = "展示位置 1首页 3周边 4演出 5积分商城 6YB 8视频", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "provinceCode", value = "城市code"),
})
public ResponseDto<List<BannersVo>> blist(
@RequestParam(value = "position") String position,
@RequestParam(value = "provinceCode", defaultValue = "") String provinceCode
@RequestParam() String position,
@RequestParam(defaultValue = "") String provinceCode
) {
BannersApiSearchParam bannersApiSearchParam = new BannersApiSearchParam();
bannersApiSearchParam.setPosition(position);
bannersApiSearchParam.setProvinceCode(provinceCode);
List result = kylinBannersServiceImpl.blist(bannersApiSearchParam);
if (result.size() > 0) {
return ResponseDto.success(result);
} else {
return ResponseDto.failure("获取列表失败");
}
List result = new ArrayList();
result = kylinBannersServiceImpl.blist(position, provinceCode);
return ResponseDto.success(result);
}
}
......@@ -5,6 +5,8 @@ import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.PerformanceVo;
import com.liquidnet.service.kylin.service.impl.KylinPerformancesServiceImpl;
import io.swagger.annotations.Api;
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;
......@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
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;
......@@ -34,40 +37,72 @@ 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 = "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 = "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 = "String", name = "orderBy", value = "排序字段 时间sellTime"),
@ApiImplicitParam(type = "query", dataType = "String", name = "sort", value = "排序方式[DESC ASC]"),
})
public ResponseDto<HashMap<String, Object>> localList(
@RequestParam(value = "sellTime", defaultValue = "") String sellTime, //开票时间
@RequestParam(value = "title", defaultValue = "") String title, //演出名称
@RequestParam(value = "cityId", defaultValue = "") String cityId, //省份id
@RequestParam(value = "type", defaultValue = "") Integer type, //演出类型
@RequestParam(value = "page", defaultValue = "1") Integer page,
@RequestParam(value = "size", defaultValue = "10") Integer size,
@RequestParam(defaultValue = "") String sellTime,
@RequestParam(defaultValue = "") Integer days,
@RequestParam(defaultValue = "") String title,
@RequestParam(defaultValue = "") String cityName,
@RequestParam(defaultValue = "") Integer type,
@RequestParam(defaultValue = "") Integer isDiscount,
@RequestParam(defaultValue = "") Integer isAdvance,
@RequestParam(defaultValue = "") Integer isExclusive,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer size,
// 排序
@RequestParam(value = "SortType", defaultValue = "1") Integer SortType // 1时间正序 2时间倒序
@RequestParam(defaultValue = "") String orderBy,
@RequestParam(defaultValue = "") String sort
) {
HashMap<String, Object> result = kylinPerformancesService.localList(sellTime, title, cityId, type, page, size, SortType);
if (result.size() > 0) {
return ResponseDto.success(result);
} else {
return ResponseDto.failure("获取本地演出列表失败");
}
HashMap<String, Object> result = kylinPerformancesService.localList(
sellTime, days, title, cityName, type,
isDiscount, isAdvance, isExclusive,
page, size,
orderBy, sort
);
return ResponseDto.success(result);
}
@GetMapping("noticeList")
@ApiOperation("演出预告列表")
public ResponseDto<HashMap<String, Object>> noticeList() {
HashMap<String, Object> result = kylinPerformancesService.noticeList();
return ResponseDto.success(result);
}
@GetMapping("recommendList")
@ApiOperation("推荐演出列表")
public ResponseDto<List<PerformanceVo>> recommendList() {
List<PerformanceVo> result = kylinPerformancesService.recommendList();
if (result.size() > 0) {
return ResponseDto.success(result);
} else {
return ResponseDto.failure("获取演出列表失败");
}
return ResponseDto.success(result);
}
@GetMapping("noticeList")
@ApiOperation("演出预告列表")
public ResponseDto<List<PerformanceVo>> noticeList() {
List<PerformanceVo> result = kylinPerformancesService.noticeList();
@GetMapping("detail")
@ApiOperation("演出详情")
public ResponseDto<HashMap<String, Object>> detail(
@RequestParam(value = "performancesId") String performancesId //演出id
) {
HashMap<String, Object> result = kylinPerformancesService.detail(performancesId);
if (result.size() > 0) {
return ResponseDto.success(result);
} else {
......
......@@ -4,6 +4,7 @@ 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.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;
......@@ -132,4 +133,16 @@ public class KylinPerformancesAdminController {
return ResponseDto.failure("获取失败");
}
}
@GetMapping(value = "performance/member")
@ApiOperation(value = "演出会员信息")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PerformanceMemberAuditDao> performanceMemberInfo(String performanceId) {
PerformanceMemberAuditDao result = performancesAdminService.performanceMemberInfo(performanceId);
if (result != null) {
return ResponseDto.success(result);
} else {
return ResponseDto.failure("获取失败");
}
}
}
......@@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Pattern;
......@@ -36,24 +37,28 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
@Autowired
private MongoTemplate mongoTemplate;
public HashMap<String, Object> localList(String sellTime, String title, String cityId, Integer type, Integer page, Integer size, Integer SortType) {
HashMap<String,Object> info = new HashMap<>();
public HashMap<String, Object> localList(
String sellTime, Integer days, String title, String cityName, Integer type,
Integer isDiscount, Integer isAdvance, Integer isExclusive,
Integer page, Integer size,
String orderBy, String sort
) {
HashMap<String, Object> info = new HashMap<>();
// 排序 分页
Sort sortName = null; // 默认开票越早的在上面
if (SortType != null) {
switch (SortType) {
case 1:
sortName = Sort.by(Sort.Direction.ASC, "sellTime");
break;
case 2:
sortName = Sort.by(Sort.Direction.DESC, "sellTime");
break;
default:
sortName = Sort.by(Sort.Direction.ASC, "sellTime");
break;
if (sort.equals("DESC")) {
if (!orderBy.isEmpty()) {
sortName = Sort.by(Sort.Direction.DESC, orderBy);
}
} else if (sort.equals("ASC")) {
if (!orderBy.isEmpty()) {
sortName = Sort.by(Sort.Direction.ASC, orderBy);
}
} else {
sortName = Sort.by(Sort.Direction.ASC, "sellTime");
}
Pageable pageable = PageRequest.of(page - 1, size, sortName);
//条件
......@@ -62,18 +67,31 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
if (!title.isEmpty()) {
queryObject.put("title", Pattern.compile(title, Pattern.CASE_INSENSITIVE));
}
if (!cityId.isEmpty()) {
queryObject.put("cityId", cityId);
}
if (type != null) {
queryObject.put("type", type);
}
if (isExclusive != null) {
queryObject.put("isExclusive", isExclusive);
}
if (isDiscount != null) {
queryObject.put("isDiscount", isDiscount);
}
if (isAdvance != null) {
queryObject.put("isAdvance", isAdvance);
}
Query query = new BasicQuery(queryObject);
if (!sellTime.isEmpty()) {
String sellTimeEnd = sellTime + " 23:59:59";
query.addCriteria(Criteria.where("sellTime").gte(sellTime).lte(sellTimeEnd));
}
if (days != null) {
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));
}
// 固定查询条件
LocalDateTime nowTime = LocalDateTime.now();
......@@ -94,38 +112,72 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
List<PerformanceVo> list = mongoTemplate.find(query, PerformanceVo.class, PerformanceVo.class.getSimpleName());
// 组合数据
info.put("total",count);
info.put("total", count);
info.put("data", list);
return info;
}
public List<PerformanceVo> recommendList() {
// 固定查询条件
public HashMap<String, Object> noticeList() {
// 固定条件
Query query = new Query();
LocalDateTime nowTime = LocalDateTime.now();
String nowTimeStr = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
Query query = Query.query(
Criteria.where("stopSellTime").gte(nowTimeStr).and("statusSell").is(1)
);
query.addCriteria(Criteria.where("stopSellTime").gte(nowTimeStr));
query.addCriteria(Criteria.where("statusSell").is(1));
List<PerformanceVo> list = mongoTemplate.find(query, PerformanceVo.class, PerformanceVo.class.getSimpleName());
// 今天的
LocalDateTime toDayTime = LocalDateTime.now();
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));
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("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));
List<PerformanceVo> threeDaysList = mongoTemplate.find(queryT, PerformanceVo.class, PerformanceVo.class.getSimpleName());
return list;
HashMap<String, Object> info = new HashMap<>();
info.put("toDayList", toDayList);
info.put("threeDaysList", threeDaysList);
return info;
}
public List<PerformanceVo> noticeList() {
// 固定查询条件
public List<PerformanceVo> recommendList() {
// 固定条件
Query query = new Query();
LocalDateTime nowTime = LocalDateTime.now();
LocalDateTime threeDaysLater = nowTime.plusDays(3);
String nowTimeStr = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String threeDaysLaterStr = threeDaysLater.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
Query query = Query.query(
Criteria.where("sellTime").gte(nowTimeStr).lt(threeDaysLaterStr).and("statusSell").is(1)
String nowTimeStr = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
query.addCriteria(Criteria.where("stopSellTime").gte(nowTimeStr));
query.addCriteria(Criteria.where("statusSell").is(1));
// 推荐
query.addCriteria(Criteria.where("isRecommend").is(1));
List<PerformanceVo> recommendList = mongoTemplate.find(query, PerformanceVo.class, PerformanceVo.class.getSimpleName());
return recommendList;
}
public HashMap<String, Object> detail(String performancesId) {
HashMap<String, Object> info = new HashMap<>();
PerformanceVo performancesInfo = mongoTemplate.findOne(
Query.query(Criteria.where("performancesId").is(performancesId)),
PerformanceVo.class,
PerformanceVo.class.getSimpleName()
);
List<PerformanceVo> list = mongoTemplate.find(query, PerformanceVo.class, PerformanceVo.class.getSimpleName());
info.put("info", performancesInfo);
return list;
return info;
}
}
......@@ -8,7 +8,6 @@ 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.dao.BannerDetailsListDao;
import com.liquidnet.service.kylin.dto.param.BannersApiSearchParam;
import com.liquidnet.service.kylin.dto.param.BannersParam;
import com.liquidnet.service.kylin.dto.param.BannersSearchParam;
import com.liquidnet.service.kylin.dto.vo.BannersVo;
......@@ -246,7 +245,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
}
}
public List blist(BannersApiSearchParam bannersApiSearchParam) {
public List blist(String position, String provinceCode) {
Query query = new Query();
query.addCriteria(
Criteria.where("isOnline").is(1).and("isDeleted").is(1)
......@@ -261,15 +260,15 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
Criteria mergeCriteriaTime = new Criteria();
mergeCriteriaTime.orOperator(onlineTimeBetween, onlineTimeGt, onlineTimeLt, onlineTimeEmpty);
if (!bannersApiSearchParam.getPosition().isEmpty()) {
if (!position.isEmpty()) {
query.addCriteria(
Criteria.where("positionList").in(bannersApiSearchParam.getPosition())
Criteria.where("positionList").in(position)
);
}
Criteria mergeCriteriaPromotion = new Criteria();
if (!bannersApiSearchParam.getProvinceCode().isEmpty()) {
Criteria promotionCity = Criteria.where("provincesList").in(bannersApiSearchParam.getProvinceCode());
if (!provinceCode.isEmpty()) {
Criteria promotionCity = Criteria.where("provincesList").in(provinceCode);
Criteria promotionAll = Criteria.where("promotionType").is(1);
mergeCriteriaPromotion.orOperator(promotionCity, promotionAll);
}
......
......@@ -8,9 +8,7 @@ import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.PerformanceAdminListDao;
import com.liquidnet.service.kylin.dao.PerformanceRecommendAdminDao;
import com.liquidnet.service.kylin.dao.PerformanceTitleDao;
import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam;
import com.liquidnet.service.kylin.dto.param.PerformanceRecommendAdminParam;
import com.liquidnet.service.kylin.dto.vo.PerformanceVo;
......@@ -96,29 +94,12 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
@Override
public PerformanceMisVo performanceDetails(String performancesId) {
PerformanceMisVo createMisVo = performanceUpdateDetails(performancesId);
if (createMisVo == null) {
createMisVo = performanceCreateDetails(performancesId);
}
log.info(" PERFORMANCE mis演出详情");
return createMisVo;
}
@Override
public PerformanceMisVo performanceCreateDetails(String performancesId) {
return mongoTemplate.findOne(
Query.query(Criteria.where("performancesId").is(performancesId)),
PerformanceMisVo.class,
PerformanceMisVo.class.getSimpleName()
);
}
@Override
public PerformanceMisVo performanceUpdateDetails(String performancesId) {
return mongoTemplate.findOne(
PerformanceMisVo createMisVo = mongoTemplate.findOne(
Query.query(Criteria.where("performancesId").is(performancesId)),
PerformanceMisVo.class,
PerformanceMisVo.class.getSimpleName());
return createMisVo;
}
@Override
......@@ -316,4 +297,27 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
}
return pageInfoTmp;
}
@Override
public PerformanceMemberAuditDao performanceMemberInfo(String performanceId) {
PerformanceMemberAuditDao performanceMemberAuditDao = new PerformanceMemberAuditDao();
PerformanceTitleDao data = performancesMapper.misPerformanceMemberInfo(performanceId);
List<TicketMemberAuditDao> ticketData = performancesMapper.misTicketMemberInfo(performanceId);
performanceMemberAuditDao.setPerformancesId(data.getPerformancesId());
performanceMemberAuditDao.setTitle(data.getTitle());
performanceMemberAuditDao.setIsExclusive(0);
performanceMemberAuditDao.setIsMember(0);
performanceMemberAuditDao.setTicketMemberAudit(ticketData);
for (TicketMemberAuditDao item : ticketData) {
if (item.getIsMember() == 1) {
performanceMemberAuditDao.setIsMember(1);
}
if (item.getIsExclusive() == 1) {
performanceMemberAuditDao.setIsExclusive(1);
}
}
return performanceMemberAuditDao;
}
}
......@@ -388,7 +388,11 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
//修改 mysql 售卖时间
KylinTickets ticketSellTime = new KylinTickets();
ticketSellTime.setTimeEnd(LocalDateTime.parse(ticketItem.getTimeEnd(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketSellTime.setTimeEnd(LocalDateTime.parse(ticketItem.getTimeStart(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketSellTime.setTimeStart(LocalDateTime.parse(ticketItem.getTimeStart(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketSellTime.setAdvanceMinuteMember(null);
//修改 价格
ticketSellTime.setPrice(ticketItem.getPrice());
ticketSellTime.setPriceDiscountMember(null);
ticketsMapper.update(ticketSellTime, new UpdateWrapper<KylinTickets>().eq("tickets_id", ticketItem.getTicketsId()));
//修改 mysql 购票限购
ticketStatusMapper.update(inventory, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketItem.getTicketsId()));
......@@ -495,9 +499,9 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
public boolean onLinePerformance(String performancesId) {
try {
KylinPerformanceStatus performanceStatusData = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
if (!(performanceStatusData.getStatus() == 3 || performanceStatusData.getStatus() == 7)) {
return false;
}
// if (!(performanceStatusData.getStatus() == 3 || performanceStatusData.getStatus() == 7)) {
// return false;
// }
// mysql
LocalDateTime updatedAt = LocalDateTime.now();
KylinPerformanceStatus performanceStatusUpdate = new KylinPerformanceStatus();
......@@ -524,6 +528,8 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
int isLackRegister = 0;
int isMember = 0;
int isExclusive = 0;
int isAdvance = 0;
int isDiscount = 0;
BigDecimal price = new BigDecimal("0.00");
......@@ -577,6 +583,14 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
redisUtil.hset(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVo.getTicketsId(), KylinRedisConst.SURPLUS_EXCHANGE, ticketInventoryDto.getSurplusExchange());
}
if (ticketVo.getMemberPrice().compareTo(ticketVo.getPrice()) != 0) {
isDiscount = 1;
}
if (!ticketVo.getTimeStart().equalsIgnoreCase(ticketVo.getMemberTimeStart())) {
isAdvance = 1;
}
if (ticketVo.getIsMember() == 1) {
isMember = 1;
}
......@@ -605,7 +619,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
}
}
performanceVoData.setTimePriceVipAndLack(isLackRegister, isMember, isExclusive, price, stopSellTime, sellTime);
performanceVoData.setTimePriceVipAndLack(isLackRegister, isMember, isExclusive, price, stopSellTime, sellTime, isAdvance, isDiscount);
performanceVoData.setPerformanceRelations(performanceRelationsData);
boolean performanceExists =
mongoTemplate.exists(Query.query(Criteria.where("performancesId").is(performanceVoData.getPerformancesId())), PerformanceVo.class, PerformanceVo.class.getSimpleName());
......
......@@ -74,20 +74,20 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
KylinTicketTimeRelation timesRelations = ticketTimeRelationMapper.selectOne(
new UpdateWrapper<KylinTicketTimeRelation>().eq("times_id", ticketCreateParam.getTimesId()));
if(null != timesRelations) {
if (null != timesRelations) {
KylinPerformanceStatus performanceStatus = performanceStatusMapper.selectOne(
new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", timesRelations.getPerformanceId()));
if(null == performanceStatus ){
if (null == performanceStatus) {
ticketPartnerVo = createTicket(ticketCreateParam);
log.info(" PERFORMANCE 票 创建");
}else if (performanceStatus.getStatus() >= 3 && performanceStatus.getStatus() != 4) {//未被拒绝 且 通过审核的演出
} else if (performanceStatus.getStatus() >= 3 && performanceStatus.getStatus() != 4) {//未被拒绝 且 通过审核的演出
ticketPartnerVo = addNewTicket(ticketCreateParam);
log.info(" PERFORMANCE 票 添加");
} else {
ticketPartnerVo = createTicket(ticketCreateParam);
log.info(" PERFORMANCE 票 创建");
}
}else{
} else {
ticketPartnerVo = createTicket(ticketCreateParam);
log.info(" PERFORMANCE 票 创建");
}
......@@ -107,7 +107,6 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
BeanUtils.copyProperties(ticketCreateParam, ticketPartnerVo);
ticketPartnerVo.setTicketsId(ticketsId);
ticketPartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketPartnerVo.setTimeEndExpress(ticketCreateParam.getTimeEndExpress().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketPartnerVo.setTimeStart(ticketCreateParam.getTimeStart().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketPartnerVo.setTimeEnd(ticketCreateParam.getTimeEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
......@@ -118,7 +117,14 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
ticketPartnerVo.setStatus(0);
ticketPartnerVo.setDefault();
ticketPartnerVo.setQrCodeShowTime(ticketCreateParam.getQrCodeShowTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
if (ticketCreateParam.getIsExpress() == 1) {
ticketPartnerVo.setTimeEndExpress(ticketCreateParam.getTimeEndExpress().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
if (ticketCreateParam.getIsShowCode() == 1) {
ticketPartnerVo.setQrCodeShowTime(ticketCreateParam.getQrCodeShowTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
TicketPartnerVo data = mongoTemplate.insert(
ticketPartnerVo, TicketPartnerVo.class.getSimpleName()
);
......@@ -139,7 +145,6 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
BeanUtils.copyProperties(ticketCreateParam, ticketPartnerVo);
ticketPartnerVo.setTicketsId(ticketsId);
ticketPartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketPartnerVo.setTimeEndExpress(ticketCreateParam.getTimeEndExpress().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketPartnerVo.setTimeStart(ticketCreateParam.getTimeStart().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketPartnerVo.setTimeEnd(ticketCreateParam.getTimeEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
......@@ -150,7 +155,14 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
ticketPartnerVo.setStatus(-2);
ticketPartnerVo.setDefault();
ticketPartnerVo.setQrCodeShowTime(ticketCreateParam.getQrCodeShowTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
if (ticketCreateParam.getIsExpress() == 1) {
ticketPartnerVo.setTimeEndExpress(ticketCreateParam.getTimeEndExpress().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
if (ticketCreateParam.getIsShowCode() == 1) {
ticketPartnerVo.setQrCodeShowTime(ticketCreateParam.getQrCodeShowTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
TicketPartnerVo data = mongoTemplate.insert(
ticketPartnerVo, TicketPartnerVo.class.getSimpleName()
);
......@@ -167,13 +179,17 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
TicketPartnerVo ticketPartnerVo = new TicketPartnerVo();
BeanUtils.copyProperties(ticketCreateParam, ticketPartnerVo);
ticketPartnerVo.setUpdatedAt(updatedAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketPartnerVo.setTimeEndExpress(ticketCreateParam.getTimeEndExpress().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketPartnerVo.setTimeStart(ticketCreateParam.getTimeStart().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketPartnerVo.setTimeEnd(ticketCreateParam.getTimeEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketPartnerVo.setQrCodeShowTime(ticketCreateParam.getQrCodeShowTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
ticketPartnerVo.setTimesId(null);
ticketPartnerVo.setStatus(null);
ticketPartnerVo.setDefault();
if (ticketCreateParam.getIsExpress() == 1) {
ticketPartnerVo.setTimeEndExpress(ticketCreateParam.getTimeEndExpress().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
if (ticketCreateParam.getIsShowCode() == 1) {
ticketPartnerVo.setQrCodeShowTime(ticketCreateParam.getQrCodeShowTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(ticketPartnerVo));
Document doc = mongoTemplate.getCollection(TicketPartnerVo.class.getSimpleName()).findOneAndUpdate(
......
......@@ -137,7 +137,7 @@ public class PerformanceVoTask {
status10Count += 1;
} else {
//库存判断
int surplusGeneral = (int) redisUtil.hget(KylinRedisConst.PERFORMANCES_INVENTORY+ticketVoItem.getTicketsId(), KylinRedisConst.SURPLUS_GENERAL);
int surplusGeneral = (int) redisUtil.hget(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVoItem.getTicketsId(), KylinRedisConst.SURPLUS_GENERAL);
if (surplusGeneral > 0) {
status = 6;
......@@ -274,14 +274,13 @@ public class PerformanceVoTask {
performanceMisVo.setSyncAgent(performanceStatus.getSyncAgent());
boolean exists = mongoTemplate.exists(Query.query(Criteria.where("performancesId").is(performancesId)), PerformanceMisVo.class, PerformanceMisVo.class.getSimpleName());
if (!exists) {
mongoTemplate.insert(
performanceMisVo, PerformanceMisVo.class.getSimpleName()
);
}else{
} else {
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(performanceMisVo));
mongoTemplate.getCollection(PerformanceMisVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("performancesId").is(performancesId)).getQueryObject(),
......@@ -321,6 +320,8 @@ public class PerformanceVoTask {
performanceStatus.setAuditStatus(0);
performanceStatus.setUpdatedAt(updatedAt);
performanceStatus.setLimitCountMember(1);
performanceRelations.setPerformanceId(performances.getPerformancesId());
performanceRelations.setPerformanceRelationsId(IDGenerator.nextSnowId().toString());
performanceRelations.setCreatedAt(performances.getCreatedAt());
......@@ -388,6 +389,9 @@ public class PerformanceVoTask {
ticketStatus.setTicketId(tickets.getTicketsId());
ticketStatus.setCounts(1);
ticketStatus.setIsMember(1);
ticketStatus.setIsExclusive(0);
ticketStatus.setIsTrueName(performanceStatus.getIsTrueName());
ticketStatus.setMemberLimitCount(1);
ticketStatus.setStatusExchange(7);
ticketStatus.setQrCodeShowTime(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ticketItem.getQrCodeShowTime())));
......@@ -405,7 +409,7 @@ public class PerformanceVoTask {
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
......@@ -443,9 +447,9 @@ public class PerformanceVoTask {
performanceRelations.setCreatedAt(null);
performanceRelations.setUpdatedAt(updatedAt);
performancesMapper.update(performances,new UpdateWrapper<KylinPerformances>().eq("performances_id",performances.getPerformancesId()));
performanceStatusMapper.update(performanceStatus,new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id",performances.getPerformancesId()));
performanceRelationsMapper.update(performanceRelations,new UpdateWrapper<KylinPerformanceRelations>().eq("performance_id",performances.getPerformancesId()));
performancesMapper.update(performances, new UpdateWrapper<KylinPerformances>().eq("performances_id", performances.getPerformancesId()));
performanceStatusMapper.update(performanceStatus, new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performances.getPerformancesId()));
performanceRelationsMapper.update(performanceRelations, new UpdateWrapper<KylinPerformanceRelations>().eq("performance_id", performances.getPerformancesId()));
//场次数据
......@@ -468,13 +472,13 @@ public class PerformanceVoTask {
ticketTimeRelation.setCreatedAt(null);
ticketTimeRelation.setUpdatedAt(updatedAt);
ticketTimesMapper.update(ticketTimes,new UpdateWrapper<KylinTicketTimes>().eq("ticket_times_id",ticketTimes.getTicketTimesId()));
ticketTimeRelationMapper.update(ticketTimeRelation,new UpdateWrapper<KylinTicketTimeRelation>().eq("ticket_time_id",ticketTimes.getTicketTimesId()));
ticketTimesMapper.update(ticketTimes, new UpdateWrapper<KylinTicketTimes>().eq("ticket_times_id", ticketTimes.getTicketTimesId()));
ticketTimeRelationMapper.update(ticketTimeRelation, new UpdateWrapper<KylinTicketTimeRelation>().eq("ticket_time_id", ticketTimes.getTicketTimesId()));
//修改票
for (TicketPartnerVo ticketItem : ticketsPartnerService.getTicketMongoList(ticketTimeItem.getTicketTimesId())) {
TicketPartnerVo ticketPartnerVo;
if(ticketItem.getStatus()!=7){
if (ticketItem.getStatus() != 7) {
BasicDBObject objectTicketVo = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
Document docTicket = mongoTemplate.getCollection(TicketPartnerVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("ticketsId").is(ticketItem.getTicketsId())).getQueryObject(),
......@@ -482,7 +486,7 @@ public class PerformanceVoTask {
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
ticketPartnerVo = JsonUtils.fromJson(docTicket.toJson(), TicketPartnerVo.class);
}else{
} else {
ticketPartnerVo = mongoTemplate.findOne(
Query.query(Criteria.where("ticketsId").is(ticketItem.getTicketsId())),
TicketPartnerVo.class,
......@@ -531,9 +535,9 @@ public class PerformanceVoTask {
ticketRelations.setCreatedAt(null);
ticketRelations.setUpdatedAt(updatedAt);
ticketsMapper.update(tickets,new UpdateWrapper<KylinTickets>().eq("tickets_id",tickets.getTicketsId()));
ticketStatusMapper.update(ticketStatus,new UpdateWrapper<KylinTicketStatus>().eq("tickets_id",tickets.getTicketsId()));
ticketRelationsMapper.update(ticketRelations,new UpdateWrapper<KylinTicketRelations>().eq("tickets_id",tickets.getTicketsId()));
ticketsMapper.update(tickets, new UpdateWrapper<KylinTickets>().eq("tickets_id", tickets.getTicketsId()));
ticketStatusMapper.update(ticketStatus, new UpdateWrapper<KylinTicketStatus>().eq("tickets_id", tickets.getTicketsId()));
ticketRelationsMapper.update(ticketRelations, new UpdateWrapper<KylinTicketRelations>().eq("tickets_id", tickets.getTicketsId()));
}
}
} catch (Exception e) {
......
......@@ -233,6 +233,17 @@
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dypnsapi</artifactId>
<version>1.1.3</version>
</dependency>
</dependencies>
</dependencyManagement>
......
......@@ -11,14 +11,16 @@ liquidnet:
path: ./logs
name: support-config
eureka:
host: 127.0.0.1:7001
# host: 127.0.0.1:7001
host: 172.17.205.50:7001
rabbitmq:
host: 127.0.0.1
port: 5672
username: admin
password: admin
config:
location: /Users/color/company_project/java/liquidnet-bus-v1-1/liquidnet-bus-config/liquidnet-config
# location: /Users/color/company_project/java/liquidnet-bus-v1-1/liquidnet-bus-config/liquidnet-config
location: /app/support-config
# end-dev-这里是配置信息基本值
spring:
......
package com.liquidnet.support.zuul.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class CorsConfig {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 可以自行筛选
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
}
package com.liquidnet.support.zuul.filter;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.service.ResponseDto;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import lombok.extern.slf4j.Slf4j;
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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.nio.charset.StandardCharsets;
import java.util.List;
@Slf4j
@Component
public class GlobalAuthFilter extends ZuulFilter {
@Value("#{'${global.exclude.url}'.split(', ')}")
private List<String> excludeUrls;
@Autowired
JwtValidator jwtValidator;
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 2;
}
@Override
public boolean shouldFilter() {
RequestContext ctx = RequestContext.getCurrentContext();
String requestURI = ctx.getRequest().getRequestURI();
// return !excludeUrls.contains(requestURI);
return false;
}
@Override
public Object run() {
RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest httpServletRequest = requestContext.getRequest();
String token = httpServletRequest.getHeader("authorization");
Claims claims;
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");
} else {
token = token.replace("Bearer ", "");
// 解析没有异常则表示token验证通过,如有必要可根据自身需求增加验证逻辑
claims = jwtValidator.parse(token);
log.info("claims:{}", JsonUtils.toJson(claims));
// claims = jwtUtil.parseJwtToken(token);
// 对请求进行路由
requestContext.setSendZuulResponse(true);
// 请求头加入uid,传给具体的微服务
requestContext.addZuulRequestHeader("uid", claims.get("uid").toString());
}
} 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");
} catch (Exception ex) {
log.error("TOKEN验证失败:{}", 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");
}
return null;
}
}
package com.liquidnet.support.zuul.filter;
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.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;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Component
public class GlobalLoginFilter extends ZuulFilter {
@Value("#{'${global.login.url}'.split(', ')}")
private List<String> loginUrls;
@Autowired
FeignAdamLoginClient feignAdamLoginClient;
@Override
public String filterType() {
return "pre";
}
@Override
public int filterOrder() {
return 1;
}
@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;
}
@Override
public Object run() {
RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest servletRequest = requestContext.getRequest();
// String token = servletRequest.getHeader("authorization");
// if (StringUtils.isNotBlank(token)) {
// requestContext.addZuulResponseHeader("authorization", token);
// }
ResponseDto<AdamLoginInfoVo> responseDto = null;
switch (servletRequest.getRequestURI()) {
case "/adam/login/sms":
responseDto = feignAdamLoginClient.loginBySms(servletRequest.getParameter("mobile"), servletRequest.getParameter("code"));
break;
case "/adam/login/mobile":
responseDto = feignAdamLoginClient.loginByMobile(servletRequest.getParameter("accessToken"));
break;
case "/adam/login/tpa":
String body = null;
try {
body = servletRequest.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
} catch (IOException e) {
log.error("reader request body exception", e);
}
responseDto = feignAdamLoginClient.loginByTpa(JsonUtils.fromJson(body, AdamThirdPartParam.class));
break;
default:
log.warn("###无效的登录链接:{}", servletRequest.getRequestURI());
break;
}
log.debug("login request result:{}", JsonUtils.toJson(responseDto));
return null;
}
}
......@@ -6,7 +6,8 @@ liquidnet:
username: user
password: user123
eureka:
host: 127.0.0.1:7001
#host: 127.0.0.1:7001
host: 172.17.205.50:7001
# end-dev-这里是配置信息基本值
spring:
......
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