记得上下班打卡 | 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.Claims;
import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date; import java.util.Date;
import java.util.Map; import java.util.Map;
//@Component @Component("jwtValidator")
public class JwtUtil { @ConfigurationProperties(prefix = "jwt")
/** public class JwtValidator {
* 过期时间15分钟 private String secret;
*/ private Long expireTtl;
private static final long EXPIRE_TIME = 15 * 60 * 1000; private Long refreshTtl;
/** private Long blacklistGracePeriod;
* token私钥 // private static final long EXPIRE_TIME = 15 * 60 * 1000;
*/ // private static final String TOKEN_SECRET = "qZHglvNP0n0aOOckHiQXq5JMD468J4eG";
private static final String TOKEN_SECRET = "DD5654D654DSD5S1D65S4D65S1D12354";
/** /**
* 用户登录成功后生成Jwt token * 用户登录成功后生成Jwt token
* 使用Hs256算法 * 使用Hs256算法
* *
* @param claims 保存在Payload(有效载荷)中的内容 * @param claimsMap 保存在Payload(有效载荷)中的内容
* @return token字符串 * @return token字符串
*/ */
public static String create(Map<String, Object> claims) { public String create(Map<String, Object> claimsMap) {
long nowMillis = System.currentTimeMillis(); long nowMillis = System.currentTimeMillis();
long expMillis = System.currentTimeMillis() + EXPIRE_TIME; long expMillis = System.currentTimeMillis() + expireTtl * 60000;
// 创建一个JwtBuilder,设置jwt的body // 创建一个JwtBuilder,设置jwt的body
JwtBuilder builder = Jwts.builder() JwtBuilder builder = Jwts.builder()
// 保存在Payload(有效载荷)中的内容, 自定义一些数据保存在这里 // 保存在Payload(有效载荷)中的内容, 自定义一些数据保存在这里
.setClaims(claims) .setClaims(claimsMap)
// iat: jwt的签发时间 // iat: jwt的签发时间
.setIssuedAt(new Date(nowMillis)) .setIssuedAt(new Date(nowMillis))
// 设置过期时间 // 设置过期时间
.setExpiration(new Date(expMillis)) .setExpiration(new Date(expMillis))
// 使用HS256算法和签名使用的秘钥生成密文 // 使用HS256算法和签名使用的秘钥生成密文
.signWith(SignatureAlgorithm.HS256, TOKEN_SECRET); .signWith(SignatureAlgorithm.HS256, secret);
return builder.compact(); return builder.compact();
} }
...@@ -49,12 +50,28 @@ public class JwtUtil { ...@@ -49,12 +50,28 @@ public class JwtUtil {
* @param token 令牌 * @param token 令牌
* @return * @return
*/ */
public static Claims parse(String token) { public Claims parse(String token) {
// 得到DefaultJwtParser // 得到DefaultJwtParser
return Jwts.parser() return Jwts.parser()
// 设置签名的秘钥 // 设置签名的秘钥
.setSigningKey(TOKEN_SECRET) .setSigningKey(secret)
// 设置需要解析的token // 设置需要解析的token
.parseClaimsJws(token).getBody(); .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; ...@@ -15,7 +15,7 @@ import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter; import org.springframework.web.filter.CorsFilter;
@Configuration //@Configuration
public class CorsConfig { public class CorsConfig {
private CorsConfiguration buildConfig() { private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration(); CorsConfiguration corsConfiguration = new CorsConfiguration();
......
...@@ -5,6 +5,11 @@ liquidnet: ...@@ -5,6 +5,11 @@ liquidnet:
security: security:
username: user username: user
password: user123 password: user123
jwt:
secret: qZHglvNP0n0aOOckHiQXq5JMD468J4eG
expire-ttl: 43200
refresh-ttl: 525600
blacklist_grace_period: 5
mysql: mysql:
urlHostAndPort: 39.106.122.201:3308 urlHostAndPort: 39.106.122.201:3308
username: testmall username: testmall
......
...@@ -6,3 +6,8 @@ spring: ...@@ -6,3 +6,8 @@ spring:
rabbitmq: rabbitmq:
ssl: ssl:
algorithm: TLSv1.2 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: ...@@ -20,6 +20,9 @@ liquidnet:
database-name: ln_adam database-name: ln_adam
mybatis-plus: mybatis-plus:
log-level: debug log-level: debug
aliyun:
accessKeyId:
accessSecret:
# conf: # conf:
# webUrl: ${liquidnet.service.adam.conf.webUrl} # webUrl: ${liquidnet.service.adam.conf.webUrl}
# user: # user:
......
...@@ -4,7 +4,7 @@ server: ...@@ -4,7 +4,7 @@ server:
uri-encoding: UTF-8 uri-encoding: UTF-8
servlet: servlet:
context-path: context-path:
# context-path: ${liquidnet.info.context} # context-path: ${liquidnet.info.context}
# server: # server:
# tomcat: # tomcat:
# accept-count: 500 # accept-count: 500
...@@ -37,7 +37,9 @@ spring: ...@@ -37,7 +37,9 @@ spring:
application: application:
name: ${liquidnet.info.name} name: ${liquidnet.info.name}
autoconfigure: autoconfigure:
exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration exclude:
- org.springframework.cloud.bus.BusAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
profiles: profiles:
include: common-service include: common-service
# cloud: # cloud:
...@@ -76,12 +78,20 @@ zuul: ...@@ -76,12 +78,20 @@ zuul:
# pre: # 类型 # pre: # 类型
# disable: true # disable: true
# ----------------------------------------------------------- # -----------------------------------------------------------
common: global:
login: login:
url: /adam/login url: /adam/login/sms,
exclude: /adam/login/mobile,
auth: /adam/login/tpa
url: /adam/login,/adam/v2/api-docs,/kylin/v2/api-docs 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 #解决错误 com.netflix.client.ClientException: Load balancer does not have available server for client:panfeng-item-service
#这样就可以即指定path与URL,又不破坏Zuul的Hystrix与Ribbon特性了。 #这样就可以即指定path与URL,又不破坏Zuul的Hystrix与Ribbon特性了。
......
package com.liquidnet.service.feign.adam.api; package com.liquidnet.service.feign.adam.api;
import com.liquidnet.service.ResponseDto; 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 feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
@Component @Component
@FeignClient(name = "liquidnet-service-adam", @FeignClient(name = "liquidnet-service-adam",
contextId = "sev-adam-auth", path = "", contextId = "", path = "",
fallback = FallbackFactory.Default.class) fallback = FallbackFactory.Default.class)
public interface FeignAdamAuthClient { public interface FeignAdamLoginClient {
@PostMapping(value = "login") @PostMapping(value = "login/sms")
ResponseDto<Object> loginByPwd(@RequestParam String mobile, @RequestParam String password); 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; ...@@ -8,8 +8,6 @@ import lombok.Data;
@Data @Data
public class AdamThirdPartInfoVo implements java.io.Serializable, Cloneable { public class AdamThirdPartInfoVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = -3239086191919676121L; private static final long serialVersionUID = -3239086191919676121L;
@ApiModelProperty(position = 10, value = "Third Party ID[64]")
private String thirdPartyId;
@ApiModelProperty(position = 11, value = "用户ID[64]") @ApiModelProperty(position = 11, value = "用户ID[64]")
private String uid; private String uid;
@ApiModelProperty(position = 12, value = "第三方ID[64]") @ApiModelProperty(position = 12, value = "第三方ID[64]")
...@@ -18,10 +16,10 @@ public class AdamThirdPartInfoVo implements java.io.Serializable, Cloneable { ...@@ -18,10 +16,10 @@ public class AdamThirdPartInfoVo implements java.io.Serializable, Cloneable {
private String nickname; private String nickname;
@ApiModelProperty(position = 14, value = "头像[255]") @ApiModelProperty(position = 14, value = "头像[255]")
private String avatar; private String avatar;
@ApiModelProperty(position = 14, value = "平台类型[20]") @ApiModelProperty(position = 15, value = "平台类型[20]")
private String platform; private String platform;
@ApiModelProperty(position = 14, value = "状态[1-绑定,2-解绑]") @ApiModelProperty(position = 16, value = "状态[1-绑定,2-解绑]")
private int state; private Integer state;
private static final AdamThirdPartInfoVo obj = new AdamThirdPartInfoVo(); private static final AdamThirdPartInfoVo obj = new AdamThirdPartInfoVo();
......
...@@ -10,26 +10,32 @@ public class AdamUserInfoVo implements java.io.Serializable, Cloneable { ...@@ -10,26 +10,32 @@ public class AdamUserInfoVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 8479869354894030303L; private static final long serialVersionUID = 8479869354894030303L;
@ApiModelProperty(position = 10, value = "用户ID[64]") @ApiModelProperty(position = 10, value = "用户ID[64]")
private String uid; private String uid;
@ApiModelProperty(position = 11, value = "昵称[32]") @ApiModelProperty(position = 11, value = "手机号[20]")
private String username; private String mobile;
@ApiModelProperty(position = 12, value = "性别[32]") @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; private String sex;
@ApiModelProperty(position = 13, value = "生日[YYYY-MM-DD]") @ApiModelProperty(position = 15, value = "生日[YYYY-MM-DD]")
private String birthday; private String birthday;
@ApiModelProperty(position = 14, value = "常住地/区域") @ApiModelProperty(position = 16, value = "常住地/区域")
private String area; private String area;
@ApiModelProperty(position = 15, value = "个性签名") @ApiModelProperty(position = 17, value = "个性签名")
private String signature; private String signature;
@ApiModelProperty(position = 16, value = "头像") @ApiModelProperty(position = 18, value = "头像")
private String avatar; private String avatar;
@ApiModelProperty(position = 17, value = "背景图") @ApiModelProperty(position = 19, value = "背景图")
private String background; private String background;
@ApiModelProperty(position = 18, value = "标签") @ApiModelProperty(position = 20, value = "标签")
private String tagMe; private String tagMe;
@ApiModelProperty(position = 19, value = "") @ApiModelProperty(position = 21, value = "注册时间")
private String rongCloudToken; private String createAt;
// @ApiModelProperty(position = 20, value = "隐私配置") @ApiModelProperty(position = 22, value = "是否完善信息[0-未完善,1-已完善]")
// private private Integer isComplete;
// @ApiModelProperty(position = 23, value = "")
// private String rongCloudToken;
private static final AdamUserInfoVo obj = new AdamUserInfoVo(); private static final AdamUserInfoVo obj = new AdamUserInfoVo();
......
package com.liquidnet.service.adam.service; package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.entity.AdamRealName; import com.liquidnet.service.adam.entity.AdamRealName;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
...@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface IAdamRealNameService extends IService<AdamRealName> { public interface IAdamRealNameService extends IService<AdamRealName> {
AdamRealInfoVo queryByUid(String uid);
} }
package com.liquidnet.service.adam.service; package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo;
import com.liquidnet.service.adam.entity.AdamThirdParty; import com.liquidnet.service.adam.entity.AdamThirdParty;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/** /**
* <p> * <p>
* 用户第三方账号信息 服务类 * 用户第三方账号信息 服务类
...@@ -13,4 +16,7 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -13,4 +16,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface IAdamThirdPartyService extends IService<AdamThirdParty> { public interface IAdamThirdPartyService extends IService<AdamThirdParty> {
List<AdamThirdPartInfoVo> queryByUid(String uid);
AdamThirdPartInfoVo queryByOpenId(String openId, String platform);
} }
package com.liquidnet.service.adam.service; package com.liquidnet.service.adam.service;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.entity.AdamUserInfo; import com.liquidnet.service.adam.entity.AdamUserInfo;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
* <p> * <p>
* 正在现场用户信息 服务类 * 用户信息 服务类
* </p> * </p>
* *
* @author liquidnet * @author liquidnet
...@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -13,4 +14,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface IAdamUserInfoService extends IService<AdamUserInfo> { public interface IAdamUserInfoService extends IService<AdamUserInfo> {
void edit(AdamUserInfoVo userInfoVo);
} }
package com.liquidnet.service.adam.service; 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.liquidnet.service.adam.entity.AdamUser;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
...@@ -13,4 +15,25 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -13,4 +15,25 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface IAdamUserService extends IService<AdamUser> { 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 ...@@ -55,7 +55,7 @@ create table adam_user
( (
mid int unsigned auto_increment primary key, mid int unsigned auto_increment primary key,
uid varchar(64) not null, uid varchar(64) not null,
mobile varchar(16) not null, mobile varchar(30) not null,
passwd varchar(64), passwd varchar(64),
pay_code varchar(64), pay_code varchar(64),
state tinyint comment '1-NORMAL,2-INVALID', state tinyint comment '1-NORMAL,2-INVALID',
...@@ -94,7 +94,7 @@ create table adam_real_name ...@@ -94,7 +94,7 @@ create table adam_real_name
real_name_id varchar(64) not null, real_name_id varchar(64) not null,
uid 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-军官证', 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 '证件号码', id_card varchar(50) not null comment '证件号码',
state tinyint not null comment '0-INIT,1-NORMAL,2-INVALID', state tinyint not null comment '0-INIT,1-NORMAL,2-INVALID',
created_at datetime not null, created_at datetime not null,
......
...@@ -35,6 +35,15 @@ ...@@ -35,6 +35,15 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId> <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency> </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> </dependencies>
<build> <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 { ...@@ -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 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_CONFIRM_SMS_CODE_KEY = ADAM + ":user:sms_confirm:";
// //
// public static final String USER_EMAIL_CONFIRM_KEY = ADAM + ":user:email:confirm:"; // public static final String USER_EMAIL_CONFIRM_KEY = ADAM + ":user:email:confirm:";
......
package com.liquidnet.service.adam.controller; package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.service.ResponseDto; import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.adam.dto.AdamAddressesParam; import com.liquidnet.service.adam.dto.AdamAddressesParam;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo; import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
...@@ -20,6 +21,7 @@ import java.util.List; ...@@ -20,6 +21,7 @@ import java.util.List;
* @author liquidnet * @author liquidnet
* @since 2021-05-10 * @since 2021-05-10
*/ */
@ApiSupport(order = 10060)
@Api(tags = "收获地址") @Api(tags = "收获地址")
@Slf4j @Slf4j
@RestController @RestController
......
...@@ -2,6 +2,7 @@ package com.liquidnet.service.adam.controller; ...@@ -2,6 +2,7 @@ package com.liquidnet.service.adam.controller;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.service.ResponseDto; import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.adam.dto.AdamCollectParam; import com.liquidnet.service.adam.dto.AdamCollectParam;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -19,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
* @author liquidnet * @author liquidnet
* @since 2021-05-10 * @since 2021-05-10
*/ */
@ApiSupport(order = 10050)
@Api(tags = "收藏") @Api(tags = "收藏")
@Slf4j @Slf4j
@RestController @RestController
......
package com.liquidnet.service.adam.controller; package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.ResponseDto; import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.adam.dto.AdamEntersParam; import com.liquidnet.service.adam.dto.AdamEntersParam;
...@@ -26,6 +27,7 @@ import java.util.List; ...@@ -26,6 +27,7 @@ import java.util.List;
* @author liquidnet * @author liquidnet
* @since 2021-04-28 * @since 2021-04-28
*/ */
@ApiSupport(order = 10040)
@Api(tags = "入场人") @Api(tags = "入场人")
@Slf4j @Slf4j
@RestController @RestController
......
package com.liquidnet.service.adam.controller; package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.service.ResponseDto; import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo; import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.service.IAdamMemberService; import com.liquidnet.service.adam.service.IAdamMemberService;
...@@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.GetMapping; ...@@ -12,6 +13,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ApiSupport(order = 10030)
@Api(tags = "会员信息") @Api(tags = "会员信息")
@Slf4j @Slf4j
@RestController @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; package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.ResponseDto; import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.adam.dto.AdamUserInfoParam; import com.liquidnet.service.adam.dto.AdamUserInfoParam;
import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo; import com.liquidnet.service.adam.dto.vo.AdamThirdPartInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo; 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.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ApiSupport(order = 10020)
@Api(tags = "用户中心") @Api(tags = "用户中心")
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("user") @RequestMapping("user")
public class AdamUserController { public class AdamUserController {
@Autowired
IAdamUserService adamUserService;
@Autowired
IAdamUserInfoService adamUserInfoService;
@ApiOperationSupport(order = 1) @ApiOperationSupport(order = 1)
@ApiOperation(value = "个人资料编辑") @ApiOperation(value = "个人资料编辑")
@PostMapping(value = {"edit"}) @PostMapping(value = {"edit"})
public ResponseDto<AdamUserInfoVo> edit(@RequestBody AdamUserInfoParam adamUserInfoParam) { public ResponseDto<AdamUserInfoVo> edit(@RequestBody AdamUserInfoParam adamUserInfoParam) {
// TODO: 2021/5/10
log.info("adamUserInfoParam:{}", JsonUtils.toJson(adamUserInfoParam)); 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) @ApiOperationSupport(order = 2)
......
...@@ -6,7 +6,6 @@ import com.liquidnet.common.mq.constant.MQConst; ...@@ -6,7 +6,6 @@ import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.BsonUtil; import com.liquidnet.commons.lang.util.BsonUtil;
import com.liquidnet.commons.lang.util.SqlMapping; import com.liquidnet.commons.lang.util.SqlMapping;
import com.liquidnet.service.adam.constant.AdamRedisConst; 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.entity.AdamEnters;
import com.liquidnet.service.adam.mapper.AdamEntersMapper; import com.liquidnet.service.adam.mapper.AdamEntersMapper;
import com.liquidnet.service.adam.service.IAdamEntersService; import com.liquidnet.service.adam.service.IAdamEntersService;
...@@ -72,32 +71,33 @@ public class AdamEntersServiceImpl extends ServiceImpl<AdamEntersMapper, AdamEnt ...@@ -72,32 +71,33 @@ public class AdamEntersServiceImpl extends ServiceImpl<AdamEntersMapper, AdamEnt
@Override @Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void add(AdamEnters info) { public void add(AdamEnters info) {
if (info.getIsDefault()) { // if (info.getIsDefault()) {
Set<Object> keys = (Set<Object>) redisUtil.hkeys(AdamRedisConst.INFO_ENTERS.concat(info.getUid())); // Set<Object> keys = (Set<Object>) redisUtil.hkeys(AdamRedisConst.INFO_ENTERS.concat(info.getUid()));
if (!CollectionUtils.isEmpty(keys)) { // if (!CollectionUtils.isEmpty(keys)) {
AdamEnters deaultEnters = new AdamEnters(); // AdamEnters deaultEnters = new AdamEnters();
deaultEnters.setIsDefault(false); // deaultEnters.setIsDefault(false);
deaultEnters.setUpdatedAt(info.getCreatedAt()); // deaultEnters.setUpdatedAt(info.getCreatedAt());
deaultEnters.setUid(info.getUid()); // deaultEnters.setUid(info.getUid());
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(deaultEnters)); // BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(deaultEnters));
Document doc = mongoTemplate.getCollection(AdamEnters.class.getSimpleName()).findOneAndUpdate( // Document doc = mongoTemplate.getCollection(AdamEnters.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("uid").is(deaultEnters.getUid()).and("isDefault").is(true)).getQueryObject(), // Query.query(Criteria.where("uid").is(deaultEnters.getUid()).and("isDefault").is(true)).getQueryObject(),
object, new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) // object, new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
); // );
//
if (null != doc) { // if (null != doc) {
List<Object> paramList = new ArrayList<>(); // List<Object> paramList = new ArrayList<>();
paramList.add(deaultEnters.getIsDefault()); // paramList.add(deaultEnters.getIsDefault());
paramList.add(deaultEnters.getUpdatedAt()); // paramList.add(deaultEnters.getUpdatedAt());
paramList.add(doc.get("uid")); // paramList.add(doc.get("uid"));
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL, // rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
SqlMapping.get("adam_enters.update.is_default", paramList.toArray())); // SqlMapping.get("adam_enters.update.is_default", paramList.toArray()));
//
AdamEnters enters = BsonUtil.toBean(doc, AdamEnters.class); // AdamEnters enters = BsonUtil.toBean(doc, AdamEnters.class);
redisUtil.hset(AdamRedisConst.INFO_ENTERS.concat(enters.getUid()), enters.getEntersId(), enters); // 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()); mongoTemplate.insert(Collections.singletonList(info), AdamEnters.class.getSimpleName());
......
package com.liquidnet.service.adam.service.impl; 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.entity.AdamRealName;
import com.liquidnet.service.adam.mapper.AdamRealNameMapper; import com.liquidnet.service.adam.mapper.AdamRealNameMapper;
import com.liquidnet.service.adam.service.IAdamRealNameService; 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; import org.springframework.stereotype.Service;
/** /**
...@@ -16,5 +23,20 @@ import org.springframework.stereotype.Service; ...@@ -16,5 +23,20 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class AdamRealNameServiceImpl extends ServiceImpl<AdamRealNameMapper, AdamRealName> implements IAdamRealNameService { 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; 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.entity.AdamThirdParty;
import com.liquidnet.service.adam.mapper.AdamThirdPartyMapper; import com.liquidnet.service.adam.mapper.AdamThirdPartyMapper;
import com.liquidnet.service.adam.service.IAdamThirdPartyService; import com.liquidnet.service.adam.service.IAdamThirdPartyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 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 org.springframework.stereotype.Service;
import java.util.List;
/** /**
* <p> * <p>
* 用户第三方账号信息 服务实现类 * 用户第三方账号信息 服务实现类
...@@ -16,5 +25,31 @@ import org.springframework.stereotype.Service; ...@@ -16,5 +25,31 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class AdamThirdPartyServiceImpl extends ServiceImpl<AdamThirdPartyMapper, AdamThirdParty> implements IAdamThirdPartyService { 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; 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.entity.AdamUserInfo;
import com.liquidnet.service.adam.mapper.AdamUserInfoMapper; import com.liquidnet.service.adam.mapper.AdamUserInfoMapper;
import com.liquidnet.service.adam.service.IAdamUserInfoService; 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 org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
/** /**
* <p> * <p>
* 正在现场用户信息 服务实现类 * 用户信息 服务实现类
* </p> * </p>
* *
* @author liquidnet * @author liquidnet
...@@ -16,5 +34,39 @@ import org.springframework.stereotype.Service; ...@@ -16,5 +34,39 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class AdamUserInfoServiceImpl extends ServiceImpl<AdamUserInfoMapper, AdamUserInfo> implements IAdamUserInfoService { 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; 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.entity.AdamUser;
import com.liquidnet.service.adam.mapper.AdamUserMapper; import com.liquidnet.service.adam.mapper.AdamUserMapper;
import com.liquidnet.service.adam.service.IAdamUserService; 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 org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Collection;
import java.util.Collections;
/** /**
* <p> * <p>
* 用户 服务实现类 * 用户 服务实现类
...@@ -16,5 +33,88 @@ import org.springframework.stereotype.Service; ...@@ -16,5 +33,88 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class AdamUserServiceImpl extends ServiceImpl<AdamUserMapper, AdamUser> implements IAdamUserService { 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 { ...@@ -60,11 +60,11 @@ public class BannersParam implements Serializable {
@ApiModelProperty(value = "备注", example = "这是一个演出推广的banner") @ApiModelProperty(value = "备注", example = "这是一个演出推广的banner")
private String remarks; private String remarks;
@ApiModelProperty(value = "展示的位置 多选 数组", example = "[\"1\", \"4\", \"3\"]") @ApiModelProperty(value = "展示的位置 多选 数组", example = "[\"1\", \"4\", \"3\", \"5\", \"6\", \"8\"]")
@NotEmpty(message = "请选择展示位置") @NotEmpty(message = "请选择展示位置")
private List positionList; private List positionList;
@ApiModelProperty(value = "推广省份 多选 数组", example = "[\"1\", \"4\", \"3\"]") @ApiModelProperty(value = "推广省份 多选 数组", example = "[\"1\", \"2\", \"5\"]")
// @NotEmpty(message = "请选择推广省份") // @NotEmpty(message = "请选择推广省份")
private List provincesList; private List provincesList;
......
...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; ...@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.liquidnet.commons.lang.util.IDGenerator; import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.kylin.entity.*; import com.liquidnet.service.kylin.entity.*;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -80,6 +81,10 @@ public class TicketCreateParam implements Serializable { ...@@ -80,6 +81,10 @@ public class TicketCreateParam implements Serializable {
@ApiModelProperty(value = "二维码显示时间", example = "2020-12-01T14:00:00") @ApiModelProperty(value = "二维码显示时间", example = "2020-12-01T14:00:00")
private LocalDateTime qrCodeShowTime; private LocalDateTime qrCodeShowTime;
@ApiModelProperty(value = "次数", example = "1")
@NotNull(message = "不能为空")
private int counts;
@ApiModelProperty(value = "是否开启缺票登记", example = "1") @ApiModelProperty(value = "是否开启缺票登记", example = "1")
@NotNull(message = "不能为空") @NotNull(message = "不能为空")
private int isLackRegister; private int isLackRegister;
...@@ -111,6 +116,7 @@ public class TicketCreateParam implements Serializable { ...@@ -111,6 +116,7 @@ public class TicketCreateParam implements Serializable {
kylinTicketStatus.setStatusExchange(7); kylinTicketStatus.setStatusExchange(7);
kylinTicketStatus.setSurplusExchange(this.totalExchange); kylinTicketStatus.setSurplusExchange(this.totalExchange);
kylinTicketStatus.setSurplusGeneral(this.totalGeneral); kylinTicketStatus.setSurplusGeneral(this.totalGeneral);
kylinTicketStatus.setCounts(this.counts);
if (createdAt != null) if (createdAt != null)
kylinTicketStatus.setCreatedAt(createdAt); kylinTicketStatus.setCreatedAt(createdAt);
if (updatedAt != null) if (updatedAt != null)
......
...@@ -29,7 +29,8 @@ public class BannersVo implements Serializable { ...@@ -29,7 +29,8 @@ public class BannersVo implements Serializable {
@ApiModelProperty(value = "封面图") @ApiModelProperty(value = "封面图")
private String coverImg; 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; private Integer targetType;
@ApiModelProperty(value = "跳转目标id或者url") @ApiModelProperty(value = "跳转目标id或者url")
......
...@@ -20,6 +20,8 @@ public class PerformanceVo { ...@@ -20,6 +20,8 @@ public class PerformanceVo {
private String performancesId; private String performancesId;
@ApiModelProperty(value = "演出名称") @ApiModelProperty(value = "演出名称")
private String title; private String title;
@ApiModelProperty(value = "演出图片")
private String imgPoster;
@ApiModelProperty(value = "演出类型 1音乐节 2演唱会 3小型演出 4展览 6舞台剧 101音乐节 102小型演出(livehouse演出) 103巡演") @ApiModelProperty(value = "演出类型 1音乐节 2演唱会 3小型演出 4展览 6舞台剧 101音乐节 102小型演出(livehouse演出) 103巡演")
private int type; private int type;
@ApiModelProperty(value = "演出开始时间") @ApiModelProperty(value = "演出开始时间")
...@@ -62,8 +64,18 @@ public class PerformanceVo { ...@@ -62,8 +64,18 @@ public class PerformanceVo {
private int isMember; private int isMember;
@ApiModelProperty(value = "是否开启缺票登记") @ApiModelProperty(value = "是否开启缺票登记")
private int isLackRegister; private int isLackRegister;
@ApiModelProperty(value = "是否实名")
private int isTrueName;
@ApiModelProperty(value = "限购张数")
private int limitCount;
@ApiModelProperty(value = "会员限购张数")
private Integer limitCountMember;
@ApiModelProperty(value = "是否专属") @ApiModelProperty(value = "是否专属")
private int isExclusive; private int isExclusive;
@ApiModelProperty(value = "是否优惠")
private int isDiscount;
@ApiModelProperty(value = "是否提前")
private int isAdvance;
@ApiModelProperty(value = "文案") @ApiModelProperty(value = "文案")
private String message; private String message;
...@@ -71,12 +83,13 @@ public class PerformanceVo { ...@@ -71,12 +83,13 @@ public class PerformanceVo {
public void setPerformance(KylinPerformances performance) { public void setPerformance(KylinPerformances performance) {
this.performancesId = performance.getPerformancesId(); this.performancesId = performance.getPerformancesId();
this.title = performance.getTitle(); this.title = performance.getTitle();
this.imgPoster = performance.getImgPoster();
this.timeStart = performance.getTimeStart().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); 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.timeEnd = performance.getTimeEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.type = performance.getType(); 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.isLackRegister = isLackRegister;
this.isMember = isMember; this.isMember = isMember;
this.isExclusive = isExclusive; this.isExclusive = isExclusive;
...@@ -84,14 +97,17 @@ public class PerformanceVo { ...@@ -84,14 +97,17 @@ public class PerformanceVo {
this.stopSellTime = stopSellTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); 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.sellTime = sellTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
this.appStatus = 9; this.appStatus = 9;
this.isDiscount = isDiscount;
this.isAdvance = isAdvance;
this.message = ""; this.message = "";
} }
public void setPerformanceStatus(KylinPerformanceStatus performanceStatus) { public void setPerformanceStatus(KylinPerformanceStatus performanceStatus) {
this.statusSell = performanceStatus.getStatusSell(); this.statusSell = performanceStatus.getStatusSell();
this.isRecommend = performanceStatus.getIsRecommend(); this.isRecommend = performanceStatus.getIsRecommend();
this.isTrueName = performanceStatus.getIsTrueName();
this.limitCount = performanceStatus.getLimitCount();
this.limitCountMember = performanceStatus.getLimitCountMember();
} }
//TODO 巡演 搭售 场地 //TODO 巡演 搭售 场地
......
...@@ -56,6 +56,8 @@ public class TicketVo { ...@@ -56,6 +56,8 @@ public class TicketVo {
private int isElectronic; private int isElectronic;
@ApiModelProperty(value = "是否快递票") @ApiModelProperty(value = "是否快递票")
private int isExpress; private int isExpress;
@ApiModelProperty(value = "可验证次数")
private Integer counts;
@ApiModelProperty(value = "状态") @ApiModelProperty(value = "状态")
private int status; private int status;
@ApiModelProperty(value = "兑换状态") @ApiModelProperty(value = "兑换状态")
...@@ -68,6 +70,8 @@ public class TicketVo { ...@@ -68,6 +70,8 @@ public class TicketVo {
private int isTrueName; private int isTrueName;
@ApiModelProperty(value = "限购张数") @ApiModelProperty(value = "限购张数")
private int limitCount; private int limitCount;
@ApiModelProperty(value = "会员限购张数")
private Integer limitCountMember;
@ApiModelProperty(value = "是否会员专属") @ApiModelProperty(value = "是否会员专属")
private int isExclusive; private int isExclusive;
@ApiModelProperty(value = "是否会员") @ApiModelProperty(value = "是否会员")
...@@ -104,6 +108,9 @@ public class TicketVo { ...@@ -104,6 +108,9 @@ public class TicketVo {
this.isElectronic = ticketStatus.getIsElectronic(); this.isElectronic = ticketStatus.getIsElectronic();
this.isExpress = ticketStatus.getIsExpress(); this.isExpress = ticketStatus.getIsExpress();
this.isStudent = ticketStatus.getIsStudent(); 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 { ...@@ -46,6 +46,9 @@ public class TicketPartnerVo implements Serializable {
@ApiModelProperty(value = "限购数量", example = "0") @ApiModelProperty(value = "限购数量", example = "0")
private int limitCount; private int limitCount;
@ApiModelProperty(value = "次数", example = "0")
private int counts;
@ApiModelProperty(value = "票种开售时间", example = "2020-12-01T12:00:00") @ApiModelProperty(value = "票种开售时间", example = "2020-12-01T12:00:00")
private String timeStart; private String timeStart;
......
...@@ -3,6 +3,7 @@ package com.liquidnet.service.kylin.service.admin; ...@@ -3,6 +3,7 @@ package com.liquidnet.service.kylin.service.admin;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.service.kylin.dao.PerformanceAdminListDao; 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.PerformanceRecommendAdminDao;
import com.liquidnet.service.kylin.dao.PerformanceTitleDao; import com.liquidnet.service.kylin.dao.PerformanceTitleDao;
import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam; import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam;
...@@ -22,23 +23,77 @@ import java.util.List; ...@@ -22,23 +23,77 @@ import java.util.List;
*/ */
public interface IKylinPerformancesAdminService extends IService<KylinPerformances> { public interface IKylinPerformancesAdminService extends IService<KylinPerformances> {
/**
* 获取演出详情
* @param performancesId 演出id
* @return PerformanceMisVo
*/
PerformanceMisVo performanceDetails(String performancesId); 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); boolean performanceAudit(String performancesId,int status ,String rejectTxt);
/**
* 获取 演出列表 (全量)
* @param performanceAdminListParam 列表搜索参数
* @return 分页 sql 数据
*/
PageInfo<PerformanceAdminListDao> getList(PerformanceAdminListParam performanceAdminListParam); PageInfo<PerformanceAdminListDao> getList(PerformanceAdminListParam performanceAdminListParam);
/**
* 根据巡演id 查询演出列表 简易
* @param roadShowId 巡演id
* @return 20个 sql 数据
*/
List<PerformanceTitleDao> getListByRoadShowId(String roadShowId); List<PerformanceTitleDao> getListByRoadShowId(String roadShowId);
/**
* 根据演出状态 查询演出列表 简易
* @param status 演出状态
* @return 20个 sql 数据
*/
List<PerformanceTitleDao> getListByStatus(String status); List<PerformanceTitleDao> getListByStatus(String status);
/**
* 修改演出的巡演关联
* @param performancesId 演出id
* @param roadShowId 巡演id
* @return boolean
*/
boolean changeRoadShowId(String performancesId,String roadShowId); boolean changeRoadShowId(String performancesId,String roadShowId);
/**
* 设置 演出推荐 关联
* @param performancesId 相关参数
* @return boolean
*/
boolean setRecommend(List<PerformanceRecommendAdminParam> performancesId); boolean setRecommend(List<PerformanceRecommendAdminParam> performancesId);
/**
* 查询 推荐演出列表
* @return 分页 sql 数据
*/
PageInfo<PerformanceRecommendAdminDao> listRecommend(); PageInfo<PerformanceRecommendAdminDao> listRecommend();
/**
* 获取 演出会员信息(包含场次票)
* @return sql 数据
*/
PerformanceMemberAuditDao performanceMemberInfo(String performanceId);
//修改 演出会员信息(包含场次票)
//列表 待审核 演出会员信息
//详情 待审核 演出会员信息
//审核 会员信息
//列表 演出会员审核记录
} }
...@@ -18,14 +18,42 @@ import com.liquidnet.service.kylin.entity.KylinRoadShows; ...@@ -18,14 +18,42 @@ import com.liquidnet.service.kylin.entity.KylinRoadShows;
*/ */
public interface IKylinRoadShowsAdminService extends IService<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); boolean updateRoadShow(CreateRoadShowParam createRoadShowParam);
/**
* 删除巡演 (修改巡演上下线关系)
* @param roadShowId 巡演id
* @param status 状态 0停用 1启用
* @return boolean
*/
boolean deleteRoadShow(String roadShowId, int status); boolean deleteRoadShow(String roadShowId, int status);
/**
* 巡演详情
* @param roadShowId 巡演id
* @return 巡演数据
*/
RoadShowAdminVo detailsRoadShow(String roadShowId); RoadShowAdminVo detailsRoadShow(String roadShowId);
/**
* 巡演列表
* @param title 巡演名称
* @param page 页数
* @param size 数量
* @return 分页 sql 数据
*/
PageInfo<RoadShowAdminListDao> listRoadShow(String title, int page, int size); PageInfo<RoadShowAdminListDao> listRoadShow(String title, int page, int size);
......
...@@ -20,28 +20,28 @@ public interface IKylinPerformancesPartnerService extends IService<KylinPerforma ...@@ -20,28 +20,28 @@ public interface IKylinPerformancesPartnerService extends IService<KylinPerforma
/** /**
* 演出第一步 * 演出第一步
* @param step1Param * @param step1Param 相关参数
* @return * @return 演出id
*/ */
String step1(PerformanceStep1Param step1Param); String step1(PerformanceStep1Param step1Param);
/** /**
* 创建演出第一步 * 创建演出第一步
* @param step1Param * @param step1Param 相关参数
* @return * @return 演出id
*/ */
String createStep1(PerformanceStep1Param step1Param); String createStep1(PerformanceStep1Param step1Param);
/** /**
* 修改演出第一步 * 修改演出第一步
* @param step1Param * @param step1Param 相关参数
* @return * @return 演出id
*/ */
String updateStep1(PerformanceStep1Param step1Param); String updateStep1(PerformanceStep1Param step1Param);
/** /**
* 获取演出第一步数据 * 获取演出第一步数据
* @param performancesId * @param performancesId 演出id
* @return * @return 演出对象
*/ */
PerformancePartnerVo getStep1(String performancesId); PerformancePartnerVo getStep1(String performancesId);
...@@ -62,36 +62,61 @@ public interface IKylinPerformancesPartnerService extends IService<KylinPerforma ...@@ -62,36 +62,61 @@ public interface IKylinPerformancesPartnerService extends IService<KylinPerforma
/** /**
* 演出第二步 * 演出第二步
* @param step2Param * @param step2Param 相关参数
* @return * @return boolean
*/ */
boolean step2(PerformanceStep2Param step2Param); boolean step2(PerformanceStep2Param step2Param);
/** /**
* 演出第二步创建 * 演出第二步创建
* @param step2Param * @param step2Param 相关参数
* @return * @return boolean
*/ */
boolean createStep2(PerformanceStep2Param step2Param); boolean createStep2(PerformanceStep2Param step2Param);
/** /**
* 演出第二步修改 * 演出第二步修改
* @param step2Param * @param step2Param 相关参数
* @return * @return boolean
*/ */
boolean updateStep2(PerformanceStep2Param step2Param); boolean updateStep2(PerformanceStep2Param step2Param);
/**
* 获取演出第二步数据
* @param performancesId 演出id
* @return 演出 第二步 数据
*/
PerformanceStep2Param getStep2(String performancesId); PerformanceStep2Param getStep2(String performancesId);
// PerformanceStep2Param getCreateStep2(String performancesId); // PerformanceStep2Param getCreateStep2(String performancesId);
// //
// PerformanceStep2Param getUpdateStep2(String performancesId); // PerformanceStep2Param getUpdateStep2(String performancesId);
/**
* 演出上线
* @param performancesId 演出id
* @return boolean
*/
boolean onLinePerformance(String performancesId); boolean onLinePerformance(String performancesId);
/**
* 演出下线
* @param performancesId 演出id
* @return boolean
*/
boolean outLinePerformance(String performancesId); boolean outLinePerformance(String performancesId);
/**
* 复制演出 (只有巡演类型)
* @param performancesId 演出id
* @return 演出id
*/
String copyPerformance(String performancesId); String copyPerformance(String performancesId);
/**
* 演出列表
* @param performancePartnerListParam 相关参数
* @return 分页 msql 数据
*/
PageInfo<PerformancePartnerListDao> getList(PerformancePartnerListParam performancePartnerListParam); PageInfo<PerformancePartnerListDao> getList(PerformancePartnerListParam performancePartnerListParam);
} }
...@@ -20,35 +20,50 @@ public interface IKylinTicketTimesPartnerService extends IService<KylinTicketTim ...@@ -20,35 +20,50 @@ public interface IKylinTicketTimesPartnerService extends IService<KylinTicketTim
/** /**
* 创建场次汇总 * 创建场次汇总
* @param createTicketTimesParam * @param createTicketTimesParam 相关参数
* @return * @return vo
*/ */
TicketTimesPartnerVo createTimesSummary(CreateTicketTimesParam createTicketTimesParam); TicketTimesPartnerVo createTimesSummary(CreateTicketTimesParam createTicketTimesParam);
/** /**
* 未通过审核创建场次 * 未通过审核创建场次
* @param createTicketTimesParam * @param createTicketTimesParam 相关参数
* @return * @return vo
*/ */
TicketTimesPartnerVo createTimes(CreateTicketTimesParam createTicketTimesParam); TicketTimesPartnerVo createTimes(CreateTicketTimesParam createTicketTimesParam);
/** /**
* 通过审核后创建场次 * 通过审核后创建场次
* @param createTicketTimesParam * @param createTicketTimesParam 相关参数
* @return * @return 相关参数
*/ */
TicketTimesPartnerVo addNewTimes(CreateTicketTimesParam createTicketTimesParam); TicketTimesPartnerVo addNewTimes(CreateTicketTimesParam createTicketTimesParam);
/** /**
* 删除 场次(只有未审核通过可删除) * 删除 场次(只有未审核通过可删除)
* @param ticketTimesId * @param ticketTimesId 场次id
* @return * @return boolean
*/ */
Boolean deleteTimes(String ticketTimesId); Boolean deleteTimes(String ticketTimesId);
/**
* 修改场次信息
* @param createTicketTimesParam 相关参数
* @return vo
*/
TicketTimesPartnerVo changeTimes(CreateTicketTimesParam createTicketTimesParam); TicketTimesPartnerVo changeTimes(CreateTicketTimesParam createTicketTimesParam);
/**
* 根据演出id 获取全部场次数据
* @param performancesId 演出id
* @return list<vo>
*/
List<TicketTimesPartnerVo> getTimesMongoList(String performancesId); List<TicketTimesPartnerVo> getTimesMongoList(String performancesId);
/**
* 根据场次id 获取场次信息
* @param timesId 场次id
* @return vo
*/
TicketTimesPartnerVo getTimesMongo(String timesId); TicketTimesPartnerVo getTimesMongo(String timesId);
} }
...@@ -19,39 +19,64 @@ public interface IKylinTicketsPartnerService extends IService<KylinTickets> { ...@@ -19,39 +19,64 @@ public interface IKylinTicketsPartnerService extends IService<KylinTickets> {
/** /**
* 创建票汇总 * 创建票汇总
* @param ticketCreateParam * @param ticketCreateParam 相关参数
* @return * @return vo
*/ */
TicketPartnerVo createTicketSummary(TicketCreateParam ticketCreateParam); TicketPartnerVo createTicketSummary(TicketCreateParam ticketCreateParam);
/** /**
* 未通过审核创建票 * 未通过审核创建票
* @param ticketCreateParam * @param ticketCreateParam 相关参数
* @return * @return vo
*/ */
TicketPartnerVo createTicket(TicketCreateParam ticketCreateParam); TicketPartnerVo createTicket(TicketCreateParam ticketCreateParam);
/** /**
* 通过审核后创建场次 * 通过审核后创建
* @param ticketCreateParam * @param ticketCreateParam 相关参数
* @return * @return vo
*/ */
TicketPartnerVo addNewTicket(TicketCreateParam ticketCreateParam); TicketPartnerVo addNewTicket(TicketCreateParam ticketCreateParam);
/**
* 修改票
* @param ticketCreateParam 相关参数
* @return vo
*/
TicketPartnerVo updateTicket(TicketCreateParam ticketCreateParam); TicketPartnerVo updateTicket(TicketCreateParam ticketCreateParam);
/** /**
* 删除 票(只有未审核通过可删除) * 删除 票(只有未审核通过可删除)
* @param ticketsId * @param ticketsId 票id
* @return * @return boolean
*/ */
boolean deleteTicket(String ticketsId); boolean deleteTicket(String ticketsId);
/**
* 复制票
* @param ticketsId 票id
* @return vo
*/
TicketPartnerVo copyTicket(String ticketsId); TicketPartnerVo copyTicket(String ticketsId);
/**
* 整个场次票 提交 审核
* @param timesId 场次id
* @return boolean
*/
boolean submitTicketByTimes(String timesId); boolean submitTicketByTimes(String timesId);
/**
* 从mongo 获取 当前场次所有 票
* @param timesId 场次id
* @return list<vo>
*/
List<TicketPartnerVo> getTicketMongoList(String timesId); List<TicketPartnerVo> getTicketMongoList(String timesId);
/**
* 从mongo 获取 当前票
* @param ticketsId 票id
* @return vo
*/
TicketPartnerVo getTicketsMongo(String ticketsId); 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 { ...@@ -74,6 +74,11 @@ public class KylinPerformanceStatus implements Serializable {
*/ */
private Integer limitCount; private Integer limitCount;
/**
* 会员限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)
*/
private Integer limitCountMember;
/** /**
* 推荐顺序 0不推荐 * 推荐顺序 0不推荐
*/ */
......
...@@ -119,6 +119,11 @@ public class KylinTicketStatus implements Serializable { ...@@ -119,6 +119,11 @@ public class KylinTicketStatus implements Serializable {
*/ */
private Integer limitCount; private Integer limitCount;
/**
* 会员限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)
*/
private Integer memberLimitCount;
/** /**
* 是否会员专属 0不是 1是 * 是否会员专属 0不是 1是
*/ */
......
...@@ -31,4 +31,10 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> { ...@@ -31,4 +31,10 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> {
//推荐列表 //推荐列表
List<PerformanceRecommendAdminDao> reCommendPerformanceList(); List<PerformanceRecommendAdminDao> reCommendPerformanceList();
//演出 会员演出相关信息
PerformanceTitleDao misPerformanceMemberInfo(String performancesId);
//演出 会员票相关信息
List<TicketMemberAuditDao> misTicketMemberInfo(String performancesId);
} }
...@@ -48,6 +48,21 @@ ...@@ -48,6 +48,21 @@
<result column="is_recommend" property="isRecommend"/> <result column="is_recommend" property="isRecommend"/>
</resultMap> </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 id="partnerPerformanceList" parameterType="java.util.Map" resultMap="partnerPerformanceListResult">
SELECT SELECT
...@@ -198,9 +213,9 @@ ...@@ -198,9 +213,9 @@
LEFT JOIN kylin_performance_relations AS pr ON pr.performance_id = p.performances_id 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) WHERE (ps.status = 3 or ps.status = 6 or ps.status = 7)
AND pr.road_show_id = ${roadShowId} AND pr.road_show_id = ${roadShowId}
LIMIT 20
</select> </select>
<!-- Mis 根据巡演查询演出列表 --> <!-- Mis 根据状态查询演出列表 -->
<select id="misTitleByStatusList" parameterType="java.lang.String" resultMap="performanceTitleDaoResult"> <select id="misTitleByStatusList" parameterType="java.lang.String" resultMap="performanceTitleDaoResult">
SELECT performances_id, SELECT performances_id,
title title
...@@ -208,6 +223,7 @@ ...@@ -208,6 +223,7 @@
LEFT JOIN kylin_performance_status AS ps ON ps.performance_id = p.performances_id 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 LEFT JOIN kylin_performance_relations AS pr ON pr.performance_id = p.performances_id
WHERE ps.status = ${roadShowId} WHERE ps.status = ${roadShowId}
LIMIT 20
</select> </select>
<!-- Mis演出推荐列表 --> <!-- Mis演出推荐列表 -->
<select id="reCommendPerformanceList" resultMap="PerformanceRecommendAdminDaoResult"> <select id="reCommendPerformanceList" resultMap="PerformanceRecommendAdminDaoResult">
...@@ -222,4 +238,41 @@ ...@@ -222,4 +238,41 @@
ORDER BY is_recommend DESC ORDER BY is_recommend DESC
</select> </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> </mapper>
...@@ -158,6 +158,7 @@ CREATE TABLE `kylin_performance_status` ...@@ -158,6 +158,7 @@ CREATE TABLE `kylin_performance_status`
`audit_status` tinyint NOT NULL DEFAULT -1 COMMENT '-1未提交审核,0提交审核,1审核通过,2审核拒绝', `audit_status` tinyint NOT NULL DEFAULT -1 COMMENT '-1未提交审核,0提交审核,1审核通过,2审核拒绝',
`is_true_name` tinyint NOT NULL DEFAULT 0 COMMENT '是否实名 0不需要 1需要', `is_true_name` tinyint NOT NULL DEFAULT 0 COMMENT '是否实名 0不需要 1需要',
`limit_count` int(11) NOT NULL DEFAULT 0 COMMENT '限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)', `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是', `is_recommend` tinyint(255) NOT NULL DEFAULT 0 COMMENT '是否推荐 0否 1是',
`created_at` datetime NULL DEFAULT NULL COMMENT '创建时间', `created_at` datetime NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT NULL COMMENT '修改时间', `updated_at` datetime NULL DEFAULT NULL COMMENT '修改时间',
...@@ -274,30 +275,31 @@ CREATE TABLE `kylin_tickets` ...@@ -274,30 +275,31 @@ CREATE TABLE `kylin_tickets`
drop TABLE if exists `kylin_ticket_status`; drop TABLE if exists `kylin_ticket_status`;
CREATE TABLE `kylin_ticket_status` CREATE TABLE `kylin_ticket_status`
( (
`mid` int(11) NOT NULL AUTO_INCREMENT, `mid` int(11) NOT NULL AUTO_INCREMENT,
`ticket_status_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'ticket_status_id', `ticket_status_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'ticket_status_id',
`ticket_id` varchar(255) NOT NULL DEFAULT '' COMMENT '票关联id', `ticket_id` varchar(255) NOT NULL DEFAULT '' COMMENT '票关联id',
`is_student` tinyint NOT NULL DEFAULT 0 COMMENT '是否学生票 0否 1是', `is_student` tinyint NOT NULL DEFAULT 0 COMMENT '是否学生票 0否 1是',
`is_electronic` 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是', `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已结束', `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 '可验证次数', `counts` int(11) NOT NULL DEFAULT 1 COMMENT '可验证次数',
`status_exchange` tinyint NOT NULL DEFAULT 0 COMMENT '兑换状态 6可兑换 7不可兑换', `status_exchange` tinyint NOT NULL DEFAULT 0 COMMENT '兑换状态 6可兑换 7不可兑换',
`is_show_code` tinyint NOT NULL DEFAULT 0 COMMENT '是否显示二维码 0否 1是', `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 '二维码显示时间', `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是', `is_lack_register` tinyint NOT NULL DEFAULT 0 COMMENT '是否开启缺票登记 0否 1是',
`total_general` int(11) NOT NULL DEFAULT 0 COMMENT '总库存', `total_general` int(11) NOT NULL DEFAULT 0 COMMENT '总库存',
`total_exchange` 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_general` int(11) NOT NULL DEFAULT 0 COMMENT '剩余库存',
`surplus_exchange` 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到付', `express_type` tinyint NOT NULL DEFAULT 1 COMMENT '1寄付 2到付',
`is_true_name` tinyint NOT NULL DEFAULT 0 COMMENT '是否实名 0不需要 1需要', `is_true_name` tinyint NOT NULL DEFAULT 0 COMMENT '是否实名 0不需要 1需要',
`limit_count` int(11) NOT NULL DEFAULT 0 COMMENT '限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)', `limit_count` int(11) NOT NULL DEFAULT 0 COMMENT '限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)',
`is_transfer` tinyint NOT NULL DEFAULT 0 COMMENT '是否开启转赠 0关闭 1开启', `member_limit_count` int(11) NOT NULL DEFAULT 0 COMMENT '会员限购张数 0无限 (开启实名 则实名限购 未开始为账号限购)',
`is_exclusive` tinyint NOT NULL DEFAULT 0 COMMENT '是否会员专属 0不是 1是', `is_transfer` tinyint NOT NULL DEFAULT 0 COMMENT '是否开启转赠 0关闭 1开启',
`is_member` tinyint NOT NULL DEFAULT 0 COMMENT '是否关联会员 0不是 1是', `is_exclusive` tinyint NOT NULL DEFAULT 0 COMMENT '是否会员专属 0不是 1是',
`created_at` datetime NULL DEFAULT NULL COMMENT '创建时间', `is_member` tinyint NOT NULL DEFAULT 0 COMMENT '是否关联会员 0不是 1是',
`updated_at` datetime NULL DEFAULT NULL COMMENT '修改时间', `created_at` datetime NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT NULL COMMENT '修改时间',
KEY `kylin_ticket_status_uid_index` (`ticket_status_id`), KEY `kylin_ticket_status_uid_index` (`ticket_status_id`),
PRIMARY KEY (`mid`) PRIMARY KEY (`mid`)
) ENGINE = InnoDB ) ENGINE = InnoDB
......
...@@ -2,18 +2,16 @@ package com.liquidnet.service.kylin.controller; ...@@ -2,18 +2,16 @@ package com.liquidnet.service.kylin.controller;
import com.liquidnet.service.ResponseDto; 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.BannersVo;
import com.liquidnet.service.kylin.dto.vo.PagerVo;
import com.liquidnet.service.kylin.service.impl.admin.KylinBannersServiceImpl; import com.liquidnet.service.kylin.service.impl.admin.KylinBannersServiceImpl;
import com.mongodb.client.AggregateIterable;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
...@@ -35,20 +33,18 @@ public class KylinBannersController { ...@@ -35,20 +33,18 @@ public class KylinBannersController {
@GetMapping("") @GetMapping("")
@ApiOperation("banner列表") @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( public ResponseDto<List<BannersVo>> blist(
@RequestParam(value = "position") String position, @RequestParam() String position,
@RequestParam(value = "provinceCode", defaultValue = "") String provinceCode @RequestParam(defaultValue = "") String provinceCode
) { ) {
BannersApiSearchParam bannersApiSearchParam = new BannersApiSearchParam(); List result = new ArrayList();
bannersApiSearchParam.setPosition(position); result = kylinBannersServiceImpl.blist(position, provinceCode);
bannersApiSearchParam.setProvinceCode(provinceCode);
List result = kylinBannersServiceImpl.blist(bannersApiSearchParam); return ResponseDto.success(result);
if (result.size() > 0) {
return ResponseDto.success(result);
} else {
return ResponseDto.failure("获取列表失败");
}
} }
} }
...@@ -5,6 +5,8 @@ import com.liquidnet.service.ResponseDto; ...@@ -5,6 +5,8 @@ import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.PerformanceVo; import com.liquidnet.service.kylin.dto.vo.PerformanceVo;
import com.liquidnet.service.kylin.service.impl.KylinPerformancesServiceImpl; import com.liquidnet.service.kylin.service.impl.KylinPerformancesServiceImpl;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -34,40 +37,72 @@ public class KylinPerformancesController { ...@@ -34,40 +37,72 @@ public class KylinPerformancesController {
@GetMapping("localList") @GetMapping("localList")
@ApiOperation("本地演出列表") @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( public ResponseDto<HashMap<String, Object>> localList(
@RequestParam(value = "sellTime", defaultValue = "") String sellTime, //开票时间 @RequestParam(defaultValue = "") String sellTime,
@RequestParam(value = "title", defaultValue = "") String title, //演出名称 @RequestParam(defaultValue = "") Integer days,
@RequestParam(value = "cityId", defaultValue = "") String cityId, //省份id @RequestParam(defaultValue = "") String title,
@RequestParam(value = "type", defaultValue = "") Integer type, //演出类型 @RequestParam(defaultValue = "") String cityName,
@RequestParam(value = "page", defaultValue = "1") Integer page, @RequestParam(defaultValue = "") Integer type,
@RequestParam(value = "size", defaultValue = "10") Integer size,
@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); HashMap<String, Object> result = kylinPerformancesService.localList(
if (result.size() > 0) { sellTime, days, title, cityName, type,
return ResponseDto.success(result); isDiscount, isAdvance, isExclusive,
} else { page, size,
return ResponseDto.failure("获取本地演出列表失败"); 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") @GetMapping("recommendList")
@ApiOperation("推荐演出列表") @ApiOperation("推荐演出列表")
public ResponseDto<List<PerformanceVo>> recommendList() { public ResponseDto<List<PerformanceVo>> recommendList() {
List<PerformanceVo> result = kylinPerformancesService.recommendList(); List<PerformanceVo> result = kylinPerformancesService.recommendList();
if (result.size() > 0) { return ResponseDto.success(result);
return ResponseDto.success(result);
} else {
return ResponseDto.failure("获取演出列表失败");
}
} }
@GetMapping("noticeList") @GetMapping("detail")
@ApiOperation("演出预告列表") @ApiOperation("演出详情")
public ResponseDto<List<PerformanceVo>> noticeList() { public ResponseDto<HashMap<String, Object>> detail(
List<PerformanceVo> result = kylinPerformancesService.noticeList(); @RequestParam(value = "performancesId") String performancesId //演出id
) {
HashMap<String, Object> result = kylinPerformancesService.detail(performancesId);
if (result.size() > 0) { if (result.size() > 0) {
return ResponseDto.success(result); return ResponseDto.success(result);
} else { } else {
......
...@@ -4,6 +4,7 @@ package com.liquidnet.service.kylin.controller.admin; ...@@ -4,6 +4,7 @@ package com.liquidnet.service.kylin.controller.admin;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.service.ResponseDto; import com.liquidnet.service.ResponseDto;
import com.liquidnet.service.kylin.dao.PerformanceAdminListDao; 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.PerformanceRecommendAdminDao;
import com.liquidnet.service.kylin.dao.PerformanceTitleDao; import com.liquidnet.service.kylin.dao.PerformanceTitleDao;
import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam; import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam;
...@@ -132,4 +133,16 @@ public class KylinPerformancesAdminController { ...@@ -132,4 +133,16 @@ public class KylinPerformancesAdminController {
return ResponseDto.failure("获取失败"); 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; ...@@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
...@@ -36,24 +37,28 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM ...@@ -36,24 +37,28 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
@Autowired @Autowired
private MongoTemplate mongoTemplate; private MongoTemplate mongoTemplate;
public HashMap<String, Object> localList(String sellTime, String title, String cityId, Integer type, Integer page, Integer size, Integer SortType) { public HashMap<String, Object> localList(
HashMap<String,Object> info = new HashMap<>(); 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; // 默认开票越早的在上面 Sort sortName = null; // 默认开票越早的在上面
if (SortType != null) { if (sort.equals("DESC")) {
switch (SortType) { if (!orderBy.isEmpty()) {
case 1: sortName = Sort.by(Sort.Direction.DESC, orderBy);
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;
} }
} 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); Pageable pageable = PageRequest.of(page - 1, size, sortName);
//条件 //条件
...@@ -62,18 +67,31 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM ...@@ -62,18 +67,31 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
if (!title.isEmpty()) { if (!title.isEmpty()) {
queryObject.put("title", Pattern.compile(title, Pattern.CASE_INSENSITIVE)); queryObject.put("title", Pattern.compile(title, Pattern.CASE_INSENSITIVE));
} }
if (!cityId.isEmpty()) {
queryObject.put("cityId", cityId);
}
if (type != null) { if (type != null) {
queryObject.put("type", type); 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); Query query = new BasicQuery(queryObject);
if (!sellTime.isEmpty()) { if (!sellTime.isEmpty()) {
String sellTimeEnd = sellTime + " 23:59:59"; String sellTimeEnd = sellTime + " 23:59:59";
query.addCriteria(Criteria.where("sellTime").gte(sellTime).lte(sellTimeEnd)); 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(); LocalDateTime nowTime = LocalDateTime.now();
...@@ -94,38 +112,72 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM ...@@ -94,38 +112,72 @@ public class KylinPerformancesServiceImpl extends ServiceImpl<KylinPerformancesM
List<PerformanceVo> list = mongoTemplate.find(query, PerformanceVo.class, PerformanceVo.class.getSimpleName()); List<PerformanceVo> list = mongoTemplate.find(query, PerformanceVo.class, PerformanceVo.class.getSimpleName());
// 组合数据 // 组合数据
info.put("total",count); info.put("total", count);
info.put("data", list); info.put("data", list);
return info; return info;
} }
public List<PerformanceVo> recommendList() { public HashMap<String, Object> noticeList() {
// 固定查询条件 // 固定条件
Query query = new Query();
LocalDateTime nowTime = LocalDateTime.now(); LocalDateTime nowTime = LocalDateTime.now();
String nowTimeStr = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); String nowTimeStr = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
Query query = Query.query( query.addCriteria(Criteria.where("stopSellTime").gte(nowTimeStr));
Criteria.where("stopSellTime").gte(nowTimeStr).and("statusSell").is(1) 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 nowTime = LocalDateTime.now();
LocalDateTime threeDaysLater = nowTime.plusDays(3); String nowTimeStr = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
String nowTimeStr = nowTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); query.addCriteria(Criteria.where("stopSellTime").gte(nowTimeStr));
String threeDaysLaterStr = threeDaysLater.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); query.addCriteria(Criteria.where("statusSell").is(1));
Query query = Query.query( // 推荐
Criteria.where("sellTime").gte(nowTimeStr).lt(threeDaysLaterStr).and("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; ...@@ -8,7 +8,6 @@ import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.BannerDetailsListDao; 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.BannersParam;
import com.liquidnet.service.kylin.dto.param.BannersSearchParam; import com.liquidnet.service.kylin.dto.param.BannersSearchParam;
import com.liquidnet.service.kylin.dto.vo.BannersVo; import com.liquidnet.service.kylin.dto.vo.BannersVo;
...@@ -246,7 +245,7 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl ...@@ -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 query = new Query();
query.addCriteria( query.addCriteria(
Criteria.where("isOnline").is(1).and("isDeleted").is(1) Criteria.where("isOnline").is(1).and("isDeleted").is(1)
...@@ -261,15 +260,15 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl ...@@ -261,15 +260,15 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
Criteria mergeCriteriaTime = new Criteria(); Criteria mergeCriteriaTime = new Criteria();
mergeCriteriaTime.orOperator(onlineTimeBetween, onlineTimeGt, onlineTimeLt, onlineTimeEmpty); mergeCriteriaTime.orOperator(onlineTimeBetween, onlineTimeGt, onlineTimeLt, onlineTimeEmpty);
if (!bannersApiSearchParam.getPosition().isEmpty()) { if (!position.isEmpty()) {
query.addCriteria( query.addCriteria(
Criteria.where("positionList").in(bannersApiSearchParam.getPosition()) Criteria.where("positionList").in(position)
); );
} }
Criteria mergeCriteriaPromotion = new Criteria(); Criteria mergeCriteriaPromotion = new Criteria();
if (!bannersApiSearchParam.getProvinceCode().isEmpty()) { if (!provinceCode.isEmpty()) {
Criteria promotionCity = Criteria.where("provincesList").in(bannersApiSearchParam.getProvinceCode()); Criteria promotionCity = Criteria.where("provincesList").in(provinceCode);
Criteria promotionAll = Criteria.where("promotionType").is(1); Criteria promotionAll = Criteria.where("promotionType").is(1);
mergeCriteriaPromotion.orOperator(promotionCity, promotionAll); mergeCriteriaPromotion.orOperator(promotionCity, promotionAll);
} }
......
...@@ -8,9 +8,7 @@ import com.liquidnet.common.cache.redis.util.RedisUtil; ...@@ -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.BeanUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.PerformanceAdminListDao; import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dao.PerformanceRecommendAdminDao;
import com.liquidnet.service.kylin.dao.PerformanceTitleDao;
import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam; import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam;
import com.liquidnet.service.kylin.dto.param.PerformanceRecommendAdminParam; import com.liquidnet.service.kylin.dto.param.PerformanceRecommendAdminParam;
import com.liquidnet.service.kylin.dto.vo.PerformanceVo; import com.liquidnet.service.kylin.dto.vo.PerformanceVo;
...@@ -96,29 +94,12 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -96,29 +94,12 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
@Override @Override
public PerformanceMisVo performanceDetails(String performancesId) { public PerformanceMisVo performanceDetails(String performancesId) {
PerformanceMisVo createMisVo = performanceUpdateDetails(performancesId);
if (createMisVo == null) {
createMisVo = performanceCreateDetails(performancesId);
}
log.info(" PERFORMANCE mis演出详情"); log.info(" PERFORMANCE mis演出详情");
return createMisVo; PerformanceMisVo createMisVo = mongoTemplate.findOne(
}
@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(
Query.query(Criteria.where("performancesId").is(performancesId)), Query.query(Criteria.where("performancesId").is(performancesId)),
PerformanceMisVo.class, PerformanceMisVo.class,
PerformanceMisVo.class.getSimpleName()); PerformanceMisVo.class.getSimpleName());
return createMisVo;
} }
@Override @Override
...@@ -316,4 +297,27 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -316,4 +297,27 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
} }
return pageInfoTmp; 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 ...@@ -388,7 +388,11 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
//修改 mysql 售卖时间 //修改 mysql 售卖时间
KylinTickets ticketSellTime = new KylinTickets(); KylinTickets ticketSellTime = new KylinTickets();
ticketSellTime.setTimeEnd(LocalDateTime.parse(ticketItem.getTimeEnd(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); 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())); ticketsMapper.update(ticketSellTime, new UpdateWrapper<KylinTickets>().eq("tickets_id", ticketItem.getTicketsId()));
//修改 mysql 购票限购 //修改 mysql 购票限购
ticketStatusMapper.update(inventory, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketItem.getTicketsId())); ticketStatusMapper.update(inventory, new UpdateWrapper<KylinTicketStatus>().eq("ticket_id", ticketItem.getTicketsId()));
...@@ -495,9 +499,9 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -495,9 +499,9 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
public boolean onLinePerformance(String performancesId) { public boolean onLinePerformance(String performancesId) {
try { try {
KylinPerformanceStatus performanceStatusData = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId)); KylinPerformanceStatus performanceStatusData = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
if (!(performanceStatusData.getStatus() == 3 || performanceStatusData.getStatus() == 7)) { // if (!(performanceStatusData.getStatus() == 3 || performanceStatusData.getStatus() == 7)) {
return false; // return false;
} // }
// mysql // mysql
LocalDateTime updatedAt = LocalDateTime.now(); LocalDateTime updatedAt = LocalDateTime.now();
KylinPerformanceStatus performanceStatusUpdate = new KylinPerformanceStatus(); KylinPerformanceStatus performanceStatusUpdate = new KylinPerformanceStatus();
...@@ -524,6 +528,8 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -524,6 +528,8 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
int isLackRegister = 0; int isLackRegister = 0;
int isMember = 0; int isMember = 0;
int isExclusive = 0; int isExclusive = 0;
int isAdvance = 0;
int isDiscount = 0;
BigDecimal price = new BigDecimal("0.00"); BigDecimal price = new BigDecimal("0.00");
...@@ -577,6 +583,14 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -577,6 +583,14 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
redisUtil.hset(KylinRedisConst.PERFORMANCES_INVENTORY + ticketVo.getTicketsId(), KylinRedisConst.SURPLUS_EXCHANGE, ticketInventoryDto.getSurplusExchange()); 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) { if (ticketVo.getIsMember() == 1) {
isMember = 1; isMember = 1;
} }
...@@ -605,7 +619,7 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -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); performanceVoData.setPerformanceRelations(performanceRelationsData);
boolean performanceExists = boolean performanceExists =
mongoTemplate.exists(Query.query(Criteria.where("performancesId").is(performanceVoData.getPerformancesId())), PerformanceVo.class, PerformanceVo.class.getSimpleName()); 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 ...@@ -74,20 +74,20 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
KylinTicketTimeRelation timesRelations = ticketTimeRelationMapper.selectOne( KylinTicketTimeRelation timesRelations = ticketTimeRelationMapper.selectOne(
new UpdateWrapper<KylinTicketTimeRelation>().eq("times_id", ticketCreateParam.getTimesId())); new UpdateWrapper<KylinTicketTimeRelation>().eq("times_id", ticketCreateParam.getTimesId()));
if(null != timesRelations) { if (null != timesRelations) {
KylinPerformanceStatus performanceStatus = performanceStatusMapper.selectOne( KylinPerformanceStatus performanceStatus = performanceStatusMapper.selectOne(
new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", timesRelations.getPerformanceId())); new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", timesRelations.getPerformanceId()));
if(null == performanceStatus ){ if (null == performanceStatus) {
ticketPartnerVo = createTicket(ticketCreateParam); ticketPartnerVo = createTicket(ticketCreateParam);
log.info(" PERFORMANCE 票 创建"); log.info(" PERFORMANCE 票 创建");
}else if (performanceStatus.getStatus() >= 3 && performanceStatus.getStatus() != 4) {//未被拒绝 且 通过审核的演出 } else if (performanceStatus.getStatus() >= 3 && performanceStatus.getStatus() != 4) {//未被拒绝 且 通过审核的演出
ticketPartnerVo = addNewTicket(ticketCreateParam); ticketPartnerVo = addNewTicket(ticketCreateParam);
log.info(" PERFORMANCE 票 添加"); log.info(" PERFORMANCE 票 添加");
} else { } else {
ticketPartnerVo = createTicket(ticketCreateParam); ticketPartnerVo = createTicket(ticketCreateParam);
log.info(" PERFORMANCE 票 创建"); log.info(" PERFORMANCE 票 创建");
} }
}else{ } else {
ticketPartnerVo = createTicket(ticketCreateParam); ticketPartnerVo = createTicket(ticketCreateParam);
log.info(" PERFORMANCE 票 创建"); log.info(" PERFORMANCE 票 创建");
} }
...@@ -107,7 +107,6 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -107,7 +107,6 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
BeanUtils.copyProperties(ticketCreateParam, ticketPartnerVo); BeanUtils.copyProperties(ticketCreateParam, ticketPartnerVo);
ticketPartnerVo.setTicketsId(ticketsId); ticketPartnerVo.setTicketsId(ticketsId);
ticketPartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); 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.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.setTimeEnd(ticketCreateParam.getTimeEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
...@@ -118,7 +117,14 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -118,7 +117,14 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
ticketPartnerVo.setStatus(0); ticketPartnerVo.setStatus(0);
ticketPartnerVo.setDefault(); 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 data = mongoTemplate.insert(
ticketPartnerVo, TicketPartnerVo.class.getSimpleName() ticketPartnerVo, TicketPartnerVo.class.getSimpleName()
); );
...@@ -139,7 +145,6 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -139,7 +145,6 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
BeanUtils.copyProperties(ticketCreateParam, ticketPartnerVo); BeanUtils.copyProperties(ticketCreateParam, ticketPartnerVo);
ticketPartnerVo.setTicketsId(ticketsId); ticketPartnerVo.setTicketsId(ticketsId);
ticketPartnerVo.setCreatedAt(createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); 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.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.setTimeEnd(ticketCreateParam.getTimeEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
...@@ -150,7 +155,14 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -150,7 +155,14 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
ticketPartnerVo.setStatus(-2); ticketPartnerVo.setStatus(-2);
ticketPartnerVo.setDefault(); 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 data = mongoTemplate.insert(
ticketPartnerVo, TicketPartnerVo.class.getSimpleName() ticketPartnerVo, TicketPartnerVo.class.getSimpleName()
); );
...@@ -167,13 +179,17 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp ...@@ -167,13 +179,17 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
TicketPartnerVo ticketPartnerVo = new TicketPartnerVo(); TicketPartnerVo ticketPartnerVo = new TicketPartnerVo();
BeanUtils.copyProperties(ticketCreateParam, ticketPartnerVo); BeanUtils.copyProperties(ticketCreateParam, ticketPartnerVo);
ticketPartnerVo.setUpdatedAt(updatedAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); 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.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.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.setTimesId(null);
ticketPartnerVo.setStatus(null); ticketPartnerVo.setStatus(null);
ticketPartnerVo.setDefault(); 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)); BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(ticketPartnerVo));
Document doc = mongoTemplate.getCollection(TicketPartnerVo.class.getSimpleName()).findOneAndUpdate( Document doc = mongoTemplate.getCollection(TicketPartnerVo.class.getSimpleName()).findOneAndUpdate(
......
...@@ -137,7 +137,7 @@ public class PerformanceVoTask { ...@@ -137,7 +137,7 @@ public class PerformanceVoTask {
status10Count += 1; status10Count += 1;
} else { } 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) { if (surplusGeneral > 0) {
status = 6; status = 6;
...@@ -274,14 +274,13 @@ public class PerformanceVoTask { ...@@ -274,14 +274,13 @@ public class PerformanceVoTask {
performanceMisVo.setSyncAgent(performanceStatus.getSyncAgent()); performanceMisVo.setSyncAgent(performanceStatus.getSyncAgent());
boolean exists = mongoTemplate.exists(Query.query(Criteria.where("performancesId").is(performancesId)), PerformanceMisVo.class, PerformanceMisVo.class.getSimpleName()); boolean exists = mongoTemplate.exists(Query.query(Criteria.where("performancesId").is(performancesId)), PerformanceMisVo.class, PerformanceMisVo.class.getSimpleName());
if (!exists) { if (!exists) {
mongoTemplate.insert( mongoTemplate.insert(
performanceMisVo, PerformanceMisVo.class.getSimpleName() performanceMisVo, PerformanceMisVo.class.getSimpleName()
); );
}else{ } else {
BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(performanceMisVo)); BasicDBObject object = new BasicDBObject("$set", mongoConverter.convertToMongoType(performanceMisVo));
mongoTemplate.getCollection(PerformanceMisVo.class.getSimpleName()).updateOne( mongoTemplate.getCollection(PerformanceMisVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("performancesId").is(performancesId)).getQueryObject(), Query.query(Criteria.where("performancesId").is(performancesId)).getQueryObject(),
...@@ -321,6 +320,8 @@ public class PerformanceVoTask { ...@@ -321,6 +320,8 @@ public class PerformanceVoTask {
performanceStatus.setAuditStatus(0); performanceStatus.setAuditStatus(0);
performanceStatus.setUpdatedAt(updatedAt); performanceStatus.setUpdatedAt(updatedAt);
performanceStatus.setLimitCountMember(1);
performanceRelations.setPerformanceId(performances.getPerformancesId()); performanceRelations.setPerformanceId(performances.getPerformancesId());
performanceRelations.setPerformanceRelationsId(IDGenerator.nextSnowId().toString()); performanceRelations.setPerformanceRelationsId(IDGenerator.nextSnowId().toString());
performanceRelations.setCreatedAt(performances.getCreatedAt()); performanceRelations.setCreatedAt(performances.getCreatedAt());
...@@ -388,6 +389,9 @@ public class PerformanceVoTask { ...@@ -388,6 +389,9 @@ public class PerformanceVoTask {
ticketStatus.setTicketId(tickets.getTicketsId()); ticketStatus.setTicketId(tickets.getTicketsId());
ticketStatus.setCounts(1); ticketStatus.setCounts(1);
ticketStatus.setIsMember(1); ticketStatus.setIsMember(1);
ticketStatus.setIsExclusive(0);
ticketStatus.setIsTrueName(performanceStatus.getIsTrueName());
ticketStatus.setMemberLimitCount(1);
ticketStatus.setStatusExchange(7); ticketStatus.setStatusExchange(7);
ticketStatus.setQrCodeShowTime(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ticketItem.getQrCodeShowTime()))); ticketStatus.setQrCodeShowTime(DateUtil.asLocalDateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ticketItem.getQrCodeShowTime())));
...@@ -405,7 +409,7 @@ public class PerformanceVoTask { ...@@ -405,7 +409,7 @@ public class PerformanceVoTask {
} }
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
} }
} }
...@@ -443,9 +447,9 @@ public class PerformanceVoTask { ...@@ -443,9 +447,9 @@ public class PerformanceVoTask {
performanceRelations.setCreatedAt(null); performanceRelations.setCreatedAt(null);
performanceRelations.setUpdatedAt(updatedAt); performanceRelations.setUpdatedAt(updatedAt);
performancesMapper.update(performances,new UpdateWrapper<KylinPerformances>().eq("performances_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())); performanceStatusMapper.update(performanceStatus, new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performances.getPerformancesId()));
performanceRelationsMapper.update(performanceRelations,new UpdateWrapper<KylinPerformanceRelations>().eq("performance_id",performances.getPerformancesId())); performanceRelationsMapper.update(performanceRelations, new UpdateWrapper<KylinPerformanceRelations>().eq("performance_id", performances.getPerformancesId()));
//场次数据 //场次数据
...@@ -468,13 +472,13 @@ public class PerformanceVoTask { ...@@ -468,13 +472,13 @@ public class PerformanceVoTask {
ticketTimeRelation.setCreatedAt(null); ticketTimeRelation.setCreatedAt(null);
ticketTimeRelation.setUpdatedAt(updatedAt); ticketTimeRelation.setUpdatedAt(updatedAt);
ticketTimesMapper.update(ticketTimes,new UpdateWrapper<KylinTicketTimes>().eq("ticket_times_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())); ticketTimeRelationMapper.update(ticketTimeRelation, new UpdateWrapper<KylinTicketTimeRelation>().eq("ticket_time_id", ticketTimes.getTicketTimesId()));
//修改票 //修改票
for (TicketPartnerVo ticketItem : ticketsPartnerService.getTicketMongoList(ticketTimeItem.getTicketTimesId())) { for (TicketPartnerVo ticketItem : ticketsPartnerService.getTicketMongoList(ticketTimeItem.getTicketTimesId())) {
TicketPartnerVo ticketPartnerVo; TicketPartnerVo ticketPartnerVo;
if(ticketItem.getStatus()!=7){ if (ticketItem.getStatus() != 7) {
BasicDBObject objectTicketVo = new BasicDBObject("$set", mongoConverter.convertToMongoType(map)); BasicDBObject objectTicketVo = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
Document docTicket = mongoTemplate.getCollection(TicketPartnerVo.class.getSimpleName()).findOneAndUpdate( Document docTicket = mongoTemplate.getCollection(TicketPartnerVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("ticketsId").is(ticketItem.getTicketsId())).getQueryObject(), Query.query(Criteria.where("ticketsId").is(ticketItem.getTicketsId())).getQueryObject(),
...@@ -482,7 +486,7 @@ public class PerformanceVoTask { ...@@ -482,7 +486,7 @@ public class PerformanceVoTask {
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER) new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
); );
ticketPartnerVo = JsonUtils.fromJson(docTicket.toJson(), TicketPartnerVo.class); ticketPartnerVo = JsonUtils.fromJson(docTicket.toJson(), TicketPartnerVo.class);
}else{ } else {
ticketPartnerVo = mongoTemplate.findOne( ticketPartnerVo = mongoTemplate.findOne(
Query.query(Criteria.where("ticketsId").is(ticketItem.getTicketsId())), Query.query(Criteria.where("ticketsId").is(ticketItem.getTicketsId())),
TicketPartnerVo.class, TicketPartnerVo.class,
...@@ -531,9 +535,9 @@ public class PerformanceVoTask { ...@@ -531,9 +535,9 @@ public class PerformanceVoTask {
ticketRelations.setCreatedAt(null); ticketRelations.setCreatedAt(null);
ticketRelations.setUpdatedAt(updatedAt); ticketRelations.setUpdatedAt(updatedAt);
ticketsMapper.update(tickets,new UpdateWrapper<KylinTickets>().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())); ticketStatusMapper.update(ticketStatus, new UpdateWrapper<KylinTicketStatus>().eq("tickets_id", tickets.getTicketsId()));
ticketRelationsMapper.update(ticketRelations,new UpdateWrapper<KylinTicketRelations>().eq("tickets_id",tickets.getTicketsId())); ticketRelationsMapper.update(ticketRelations, new UpdateWrapper<KylinTicketRelations>().eq("tickets_id", tickets.getTicketsId()));
} }
} }
} catch (Exception e) { } catch (Exception e) {
......
...@@ -233,6 +233,17 @@ ...@@ -233,6 +233,17 @@
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.3</version> <version>2.5.3</version>
</dependency> </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> </dependencies>
</dependencyManagement> </dependencyManagement>
......
...@@ -11,14 +11,16 @@ liquidnet: ...@@ -11,14 +11,16 @@ liquidnet:
path: ./logs path: ./logs
name: support-config name: support-config
eureka: eureka:
host: 127.0.0.1:7001 # host: 127.0.0.1:7001
host: 172.17.205.50:7001
rabbitmq: rabbitmq:
host: 127.0.0.1 host: 127.0.0.1
port: 5672 port: 5672
username: admin username: admin
password: admin password: admin
config: 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-这里是配置信息基本值 # end-dev-这里是配置信息基本值
spring: 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: ...@@ -6,7 +6,8 @@ liquidnet:
username: user username: user
password: user123 password: user123
eureka: eureka:
host: 127.0.0.1:7001 #host: 127.0.0.1:7001
host: 172.17.205.50:7001
# end-dev-这里是配置信息基本值 # end-dev-这里是配置信息基本值
spring: 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