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

Commit 57d69834 authored by anjiabin's avatar anjiabin

新建merchant

parent 66cd5672
liquidnet:
system:
updating:
switch: false
info:
port: 9013
context: /candy
name: liquidnet-service-candy
logfile:
path: /data/logs
name: service-candy
config: classpath:logback-spring.xml
file-max-size: 200MB
pattern-file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level: debug
mysql:
database-name: dev_ln_scene
mongodb:
sslEnabled: false
database: dev_ln_scene
liquidnet:
system:
updating:
switch: false
info:
port: 9013
context: /adam
name: liquidnet-service-adam
logfile:
path: /data/logs
name: service-adam
config: classpath:logback-spring.xml
file-max-size: 200MB
level: debug
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
url-pay:
pay: ${liquidnet.service.adam.url-pay.pay}
check: ${liquidnet.service.adam.url-pay.check}
callback: ${liquidnet.service.adam.url-pay.callback}
reviewer:
app-login:
mobile: 13724286255
user-info: false
#以下为spring各环境个性配置
server:
port: ${liquidnet.info.port}
tomcat:
uri-encoding: UTF-8
maxThreads: 2000 #默认200
minSpareThreads: 2000 #默认10
maxConnections: 20000 #默认10000
acceptCount: 5000 #默认100
processorCache: -1 #默认200
servlet:
context-path: ${liquidnet.info.context}
# -----------------------------------------------------------
knife4j:
enable: true
production: ${liquidnet.knife4j.disable}
basic:
enable: true
username: ${liquidnet.security.username}
password: ${liquidnet.security.password}
# -----------------------------------------------------------
logging:
# config: ${liquidnet.logfile.config}
file:
name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}.log
max-size: ${liquidnet.logfile.file-max-size}
pattern:
file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %X{lnsTranceId} [%logger{96}:%line] - %msg%n'
console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %X{lnsTranceId} [%logger{96}:%line] - %msg%n'
rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level:
root: info
#以下是为指定包设置日志级别
com:
liquidnet: ${liquidnet.logfile.level}
# -----------------------------------------------------------
eureka:
# client:
# register-with-eureka: true
# fetch-registry: true
# serviceUrl:
# defaultZone: http://${liquidnet.security.username}:${liquidnet.security.password}@${liquidnet.eureka.host}/eureka-server/eureka
instance:
hostname: ${spring.cloud.client.ip-address}
lease-expiration-duration-in-seconds: 15 #服务过期时间配置,超过这个时间没有接收到心跳EurekaServer就会将这个实例剔除
lease-renewal-interval-in-seconds: 5 #服务刷新时间配置,每隔这个时间会主动心跳一次
prefer-ip-address: true
instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}}
# -----------------------------------------------------------
#actuator/info
info:
app:
name: ${liquidnet.info.name}
company:
name: lightnet.io
build:
groupId: '@project.groupId@'
artifactId: '@project.artifactId@'
version: '@project.version@'
# -----------------------------------------------------------
mybatis-plus:
mapper-locations: classpath:com.liquidnet.service.candy.mapper/*Mapper.xml
# -----------------------------------------------------------
spring:
application:
name: ${liquidnet.info.name}
servlet:
multipart:
max-file-size: 5MB
max-request-size: 10MB
profiles:
include: common-service #这里加载management相关公共配置
autoconfigure:
exclude:
- org.springframework.cloud.bus.BusAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
redis:
database: 15
dbs: ${liquidnet.redis.dbs}
port: ${liquidnet.redis.port}
host: ${liquidnet.redis.host}
password: ${liquidnet.redis.password}
lettuce:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
data:
mongodb:
uri: mongodb://${liquidnet.mongodb.user}:${liquidnet.mongodb.pwd}@${liquidnet.mongodb.host}/?authSource=admin&maxPoolSize=2000&waitQueueMultiple=100
sslEnabled: ${liquidnet.mongodb.sslEnabled}
database: ${liquidnet.mongodb.database}
# -----------------------------------------------------------
# -----------------------------------------------------------
global-auth:
exclude-url-pattern:
- ${liquidnet.info.context}/doc.html
- ${liquidnet.info.context}/webjars/**
- ${liquidnet.info.context}/swagger-resources/**
- ${liquidnet.info.context}/v2/api-docs*
- ${liquidnet.info.context}/candy-coupon/useBack
- ${liquidnet.info.context}/candy-coupon/useBackJxl
\ No newline at end of file
# create database if not exists ln_scene character set utf8mb4 collate utf8mb4_unicode_ci;
# use ln_scene;
# -- >>------------------------------------------------------------------------------------ |20210817会员与券改版
# 券发放管理
drop table if exists candy_mgt_coupon;
create table candy_mgt_coupon
(
mid bigint unsigned auto_increment primary key,
mcoupon_id varchar(64) not null,
coupon_id varchar(64) not null comment '~candy_coupon.coupon_id',
state tinyint comment '发放状态[0-未发放|1-已发放|2-无效|3-已取消|9-发放中|10-会员礼包初始模版]',
# bind_type smallint comment '领取方式[0-用户输入兑换|1-发放至用户]',
event_amt int comment '发放量',
event_type tinyint comment '发放类型[0-保留|1-会员|2-手机号|10-全体用户]',
event_limit text comment '`发放类型`为2-手机号时发放手机号以,分隔',
event_at datetime(3) comment '发放时间(立即-当前时间+3分钟|预约-点选时间)',
operator varchar(64) not null comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment text
) engine InnoDB comment '券发放管理';
create index idx_candy_mgt_coupon_id on candy_mgt_coupon (mcoupon_id);
# 券基础信息
drop table if exists candy_coupon;
create table candy_coupon
(
mid bigint unsigned auto_increment primary key,
coupon_id varchar(64) not null,
state tinyint comment '券状态[0-INIT|1-NORMAL|2-INVALID]',
title varchar(50) not null comment '券标题',
label varchar(50) comment '标注',
notice varchar(200) comment '注意/须知',
exclusive smallint comment '专享标识[0-常规|1-会员礼包]',
busi_type smallint comment '业务类别[0-全场|1-演出|2-商品|3-优先购]',
cou_type smallint comment '券类型[1-代金券|2-满减券|3-兑换券|4-折扣券|101-优先券]',
bind_type smallint comment '领取方式[0-用户输入兑换|1-发放至用户]',
discount decimal(8, 2) comment '折扣[8折即0.8]',
val_face decimal(8, 2) comment '面值',
val_over decimal(8, 2) comment '满减~满',
val_minus decimal(8, 2) comment '满减~减',
overlay tinyint default 0 comment '叠加限制[0-限制|1-叠加]',
overlay_level tinyint default 0 comment '#同类别券叠加适用',
validity int comment '有效期(单位天)',
redeem_validity int comment '兑换有效期(单位天)',
redeem_start datetime(3) comment '兑换开放时间',
redeem_stop datetime(3) comment '兑换停止时间',
effect_at datetime(3) comment '生效时间',
expire_at datetime(3) comment '过期时间',
operator varchar(64) not null comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment varchar(255)
) engine = InnoDB comment '券基础信息';
create unique index uidx_candy_coupon_id on candy_coupon (coupon_id);
# 券适用规则
drop table if exists candy_coupon_rule;
create table candy_coupon_rule
(
mid bigint unsigned auto_increment primary key,
crule_id varchar(64) not null,
coupon_id varchar(64) not null,
use_scope smallint comment '适用范围[100-全场|90-演出|80-商品]',
busi_name varchar(64) comment '适用名称',
busi_id varchar(64) comment '适用ID',
state tinyint comment '0-INIT,1-NORMAL,2-INVALID',
comment varchar(255)
) engine = InnoDB comment '券适用规则';
create unique index uidx_candy_coupon_rule_id on candy_coupon_rule (crule_id);
# 券码信息
drop table if exists candy_coupon_code;
create table candy_coupon_code
(
mid bigint unsigned auto_increment primary key,
ccode varchar(64) not null comment '券码',
coupon_id varchar(64) not null comment '~candy_coupon.coupon_id',
state tinyint comment '状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]',
ucoupon_id varchar(64) comment '~candy_user_coupon.ucoupon_id',
redeem_uid varchar(64) comment '兑换用户UID',
redeem_mobile varchar(64) comment '兑换用户手机号',
redeem_at datetime(3) comment '兑换时间',
redeem_start datetime(3) comment '兑换开放时间',
redeem_stop datetime(3) comment '兑换停止时间',
operator varchar(64) comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment varchar(255)
) engine = InnoDB comment '券码信息';
create unique index uidx_candy_coupon_code_id on candy_coupon_code (ccode, coupon_id);
# 用户券信息
drop table if exists candy_user_coupon;
create table candy_user_coupon
(
mid bigint unsigned auto_increment primary key,
ucoupon_id varchar(64) not null,
mcoupon_id varchar(64) comment '~candy_mgt_coupon.mcoupon_id',
uid varchar(64) not null comment '~adam_user.uid',
coupon_id varchar(64) not null comment '~candy_coupon.coupon_id',
state tinyint comment '用户券状态[1-可用|2-无效|3-已过期|5-已使用]',
ccode varchar(64) comment '券码~candy_coupon_code.ccode',
bind_at datetime(3) comment '激活时间',
dued_at datetime(3) comment '到期时间',
used_at datetime(3) comment '使用时间',
used_for varchar(255) comment '用于记录购买的内容',
operator varchar(64) comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment varchar(255)
) engine = InnoDB comment '用户券信息';
create unique index uidx_candy_user_coupon_id on candy_user_coupon (ucoupon_id);
create index idx_candy_ucoupon_uid_state on candy_user_coupon (uid, state);
# 公有券信息
drop table if exists candy_common_coupon;
create table candy_common_coupon
(
mid bigint unsigned auto_increment primary key,
ccoupon_id varchar(64) not null,
mcoupon_id varchar(64) not null comment '~candy_mgt_coupon.mcoupon_id',
coupon_id varchar(64) not null comment '~candy_coupon.coupon_id',
state tinyint comment '公有券状态[1-可用|2-无效|3-已过期]',
ranged tinyint comment '公有券范围(~candy_mgt_coupon.event_type)',
operator varchar(64) not null comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment varchar(255)
) engine = InnoDB comment '公有券信息';
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
\ No newline at end of file
-- 使用 --
XADD merchant:stream:rk.coupon.use * 0 0
XGROUP CREATE merchant:stream:rk.coupon.use group.coupon.use 0
-- 回退 --
XADD merchant:stream:rk.coupon.back * 0 0
XGROUP CREATE merchant:stream:rk.coupon.back group.coupon.back 0
-- 领取 --
XADD merchant:stream:rk.coupon.receive * 0 0
XGROUP CREATE merchant:stream:rk.coupon.receive group.coupon.receive 0
-- 票务订单回退 --
XADD merchant:stream:rk.coupon.order.back * 0 0
XGROUP CREATE merchant:stream:rk.coupon.order.back group.coupon.order.back 0
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-service-merchant</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-service-merchant-impl</artifactId>
<properties>
<bitwalker.version>1.19</bitwalker.version>
</properties>
<dependencies>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-swagger</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-web</artifactId>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-cache-redis</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-merchant-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-api-feign-platform</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.liquidnet.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.core.env.Environment;
import java.net.InetAddress;
import java.util.Arrays;
@Slf4j
@EnableFeignClients
@SpringBootApplication(scanBasePackages = {"com.liquidnet"})
public class ServiceCandyApplication implements CommandLineRunner {
@Autowired
private Environment environment;
public static void main(String[] args) {
SpringApplication.run(ServiceCandyApplication.class, args);
}
@Override
public void run(String... strings) {
try {
log.info("\n----------------------------------------------------------\n\t" +
"Application '{}' is running! Access URLs:\n\t" +
"Local: \t\thttp://127.0.0.1:{}\n\t" +
"External: \thttp://{}:{}{}/doc.html\n\t" +
"Profile(s): \t{}\n----------------------------------------------------------",
environment.getProperty("spring.application.name"),
environment.getProperty("server.port"),
InetAddress.getLocalHost().getHostAddress(),
environment.getProperty("server.port"),
environment.getProperty("server.servlet.context-path"),
Arrays.toString(environment.getActiveProfiles()));
} catch (Exception e) {
e.printStackTrace();
}
}
// @Bean
// MongoTransactionManager transactionManager(MongoDbFactory factory){
// return new MongoTransactionManager(factory);
// }
}
package com.liquidnet.service.merchant.config;
import com.liquidnet.common.web.config.WebMvcConfig;
import com.liquidnet.common.web.filter.GlobalAuthorityInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
@Configuration
public class CandyWebMvcConfig extends WebMvcConfig {
@Autowired
GlobalAuthorityInterceptor globalAuthorityInterceptor;
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(globalAuthorityInterceptor).addPathPatterns("/**");
super.addInterceptors(registry);
}
}
package com.liquidnet.service.merchant.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 券码信息 前端控制器
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
@RestController
@RequestMapping("/merchant-coupon-code")
public class CandyCouponCodeController {
}
package com.liquidnet.service.merchant.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 券适用规则 前端控制器
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
@RestController
@RequestMapping("/merchant-coupon-rule")
public class CandyCouponRuleController {
}
package com.liquidnet.service.merchant.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 券发放管理 前端控制器
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
@RestController
@RequestMapping("/merchant-mgt-coupon")
public class CandyMgtCouponController {
}
package com.liquidnet.service.merchant.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 用户券信息 前端控制器
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
@RestController
@RequestMapping("/merchant-user-coupon")
public class CandyUserCouponController {
}
package com.liquidnet.service.merchant.service.impl;
import com.liquidnet.service.merchant.service.ICandyCouponCodeService;
import org.springframework.stereotype.Service;
/**
* <p>
* 券码信息 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
@Service
public class CandyCouponCodeServiceImpl implements ICandyCouponCodeService {
}
package com.liquidnet.service.merchant.service.impl;
import com.liquidnet.service.merchant.service.ICandyCouponRuleService;
import org.springframework.stereotype.Service;
/**
* <p>
* 券适用规则 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
@Service
public class CandyCouponRuleServiceImpl implements ICandyCouponRuleService {
}
package com.liquidnet.service.merchant.service.impl;
import com.liquidnet.service.merchant.service.ICandyMgtCouponService;
import org.springframework.stereotype.Service;
/**
* <p>
* 券发放管理 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
@Service
public class CandyMgtCouponServiceImpl implements ICandyMgtCouponService {
}
package com.liquidnet.service.merchant.service.impl;
import com.liquidnet.service.merchant.service.ICandyUserCouponService;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户券信息 服务实现类
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
@Service
public class CandyUserCouponServiceImpl implements ICandyUserCouponService {
}
package com.liquidnet.service.merchant.util;
import com.liquidnet.service.merchant.dto.CandyCommonCouponBasicDto;
import com.liquidnet.service.merchant.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.merchant.vo.CandyCouponPreVo;
import com.liquidnet.service.merchant.vo.CandyCouponRulesVo;
import com.liquidnet.service.merchant.vo.CandyCouponVo;
import java.util.ArrayList;
public class ObjectUtil {
private static final ArrayList<CandyUserCouponBasicDto> candyUserCouponBasicDtoArrayList = new ArrayList<>();
private static final ArrayList<CandyCommonCouponBasicDto> candyCommonCouponBasicDtoArrayList = new ArrayList<>();
private static final ArrayList<CandyCouponVo> candyCouponVoArrayList = new ArrayList<>();
private static final ArrayList<CandyCouponPreVo> candyCouponPreVoArrayList = new ArrayList<>();
private static final ArrayList<CandyCouponRulesVo> candyCouponRulesVos = new ArrayList<>();
public static ArrayList<CandyUserCouponBasicDto> getCandyUserCouponBasicDtoArrayList() {
return (ArrayList<CandyUserCouponBasicDto>) candyUserCouponBasicDtoArrayList.clone();
}
public static ArrayList<CandyCommonCouponBasicDto> getCandyCommonCouponBasicDtoArrayList() {
return (ArrayList<CandyCommonCouponBasicDto>) candyCommonCouponBasicDtoArrayList.clone();
}
public static ArrayList<CandyCouponVo> getCandyCouponVoArrayList() {
return (ArrayList<CandyCouponVo>) candyCouponVoArrayList.clone();
}
public static ArrayList<CandyCouponPreVo> getCandyCouponPreVoArrayList() {
return (ArrayList<CandyCouponPreVo>) candyCouponPreVoArrayList.clone();
}
public static ArrayList<CandyCouponRulesVo> getCandyCouponRulesVos() {
return (ArrayList<CandyCouponRulesVo>) candyCouponRulesVos.clone();
}
}
package com.liquidnet.service.merchant.util;
import com.liquidnet.commons.lang.util.CollectionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.util.HashMap;
@Component
public class QueueUtils {
@Autowired
StringRedisTemplate stringRedisTemplate;
/**
* 发送消息 - REDIS
*
* @param streamKey Redis消费Key
* @param jsonMsg Json字符串
*/
public void sendMsgByRedis(String streamKey, String jsonMsg) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", jsonMsg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
}
}
package com.liquidnet.service.merchant.util;
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.base.ResponseDto;
import com.liquidnet.service.merchant.constant.CandyRedisConst;
import com.liquidnet.service.merchant.dto.CandyCommonCouponBasicDto;
import com.liquidnet.service.merchant.dto.CandyCouponCodeDto;
import com.liquidnet.service.merchant.dto.CandyCouponInfoDto;
import com.liquidnet.service.merchant.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.feign.platform.api.FeignPlatformCandyDemoteClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Component
@Slf4j
public class RedisDataUtils {
@Autowired
RedisUtil redisUtil;
@Autowired
FeignPlatformCandyDemoteClient feignPlatformCandyDemoteClient;
// 获取 CandyUserCouponBasicDto数组 根据用户id
public List<CandyUserCouponBasicDto> getCouponByUid(String uid, LocalDateTime userCreateTime) {
String redisKey = CandyRedisConst.BASIC_USER_COUPON.concat(uid);
String publicRedisKey = CandyRedisConst.BASIC_COMMON_COUPON;
Object obj = redisUtil.get(redisKey);
Object obj2 = redisUtil.get(publicRedisKey);
List<CandyUserCouponBasicDto> userDto;
List<CandyCommonCouponBasicDto> pubDto;
if (obj == null) {
//降级
// userDto = new ArrayList();
// ResponseDto<Object> responseDto = feignPlatformCandyDemoteClient.queryForUserCouponBasicDto(uid);
// if (responseDto.isSuccess()) {
// userDto = (List<CandyUserCouponBasicDto>) responseDto.getData();
// } else {
userDto = ObjectUtil.getCandyUserCouponBasicDtoArrayList();
// }
} else {
userDto = (List<CandyUserCouponBasicDto>) obj;
}
if (obj2 == null) {
//降级
// ResponseDto<Object> responseDto = feignPlatformCandyDemoteClient.queryForCommonCouponBasicDto(DateUtil.Formatter.yyyyMMddHHmmss.format(userCreateTime));
// if (responseDto.isSuccess()) {
// pubDto = (List<CandyCommonCouponBasicDto>) responseDto.getData();
// } else {
pubDto = ObjectUtil.getCandyCommonCouponBasicDtoArrayList();
// }
} else {
pubDto = (List<CandyCommonCouponBasicDto>) obj2;
}
boolean needSet = false;
if (userCreateTime == null) {
userCreateTime = LocalDateTime.MIN;
}
List<String> userIds = userDto.stream().map(CandyUserCouponBasicDto::getCcouponId).collect(Collectors.toList());
if (userIds!=null && userIds.size() > 0) {
for (CandyCommonCouponBasicDto item : pubDto) {
if (userIds.contains(item.getCcouponId()) || userCreateTime.isAfter(item.getCreatedAt())) {
continue;
} else {
CandyUserCouponBasicDto userCouponBasicDto = CandyUserCouponBasicDto.getNew().copyToRedisCommonBaseCoupon(IDGenerator.get32UUID(), uid, item);
userDto.add(userCouponBasicDto);
needSet = true;
}
}
}
if (needSet) {
setCouponByUid(uid, userDto);
}
return userDto;
}
// 覆盖 CandyUserCouponBasicDto数组 根据用户id
public void setCouponByUid(String uid, List<CandyUserCouponBasicDto> dtoList) {
String redisKey = CandyRedisConst.BASIC_USER_COUPON.concat(uid);
redisUtil.set(redisKey, dtoList);
}
// 添加 CandyUserCouponBasicDto数组 item
public void addCouponByUid(String uid, CandyUserCouponBasicDto dto, LocalDateTime userCreateTime) {
List<CandyUserCouponBasicDto> dtoList = getCouponByUid(uid, userCreateTime);
dtoList.add(dto);
setCouponByUid(uid, dtoList);
}
//获取 CandyCouponCodeDto 根据 ccode
public CandyCouponCodeDto getCouponByCode(String ccode) {
String redisKey = CandyRedisConst.BASIC_COUPON_CODE.concat(ccode);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
//降级
return null;
} else {
return (CandyCouponCodeDto) obj;
}
}
//删除 CandyCouponCodeDto 根据 ccode
public void delCouponByCode(String ccode) {
String redisKey = CandyRedisConst.BASIC_COUPON_CODE.concat(ccode);
redisUtil.del(redisKey);
}
//获取 CandyCouponInfoDto 根据 couponId
public CandyCouponInfoDto getCouponInfo(String couponId) {
String redisKey = CandyRedisConst.BASIC_COUPON_INFO.concat(couponId);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
//降级
return null;
} else {
return (CandyCouponInfoDto) obj;
}
}
}
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: dev
security:
username: user
password: user123
eureka:
host: 127.0.0.1:7001
# end-dev-这里是配置信息基本值
spring:
profiles:
include: service-merchant
# begin-prod-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: prod
security:
username: user
password: user123
eureka:
host: 172.17.207.189:7001
# end-prod-这里是配置信息基本值
spring:
profiles:
include: service-merchant
#eurekaServer配置
eureka:
client:
register-with-eureka: true
fetch-registry: true
serviceUrl:
defaultZone: http://${liquidnet.security.username}:${liquidnet.security.password}@${liquidnet.eureka.host}/eureka-server/eureka
#configServer配置
spring:
cloud:
config:
# uri: http://127.0.0.1:7002/support-config
profile: ${liquidnet.cloudConfig.profile}
name: ${spring.application.name} #默认为spring.application.name
discovery:
enabled: true
service-id: liquidnet-support-config
\ No newline at end of file
# begin-test-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: test
security:
username: user
password: user123
eureka:
#host: 172.17.207.177:7001
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-test-这里是配置信息基本值
spring:
profiles:
include: service-merchant
spring:
application:
name: liquidnet-service-merchant
profiles:
active: dev
\ No newline at end of file
40001=登录信息有误
40002=账号已在另一台设备登录
40003=登录已过期
# ------------------------ 4开头错误码作系统保留
10000=操作过于频繁,请稍后再试
10001=授权失败
10002=验证码发送失败
10003=请输入正确手机号
10004=请输入正确验证码
10005=手机号获取失败,请更换登录方式
10006=第三方账号未注册
10007=该第三方账号已经被其他用户绑定
10008=已经绑定过该类型的第三方账号
10009=手机号已经注册
10010=该手机号已被其它账号绑定
10011=性别标签无效
10012=音乐风格标签无效
10013=账号与密码不匹配
10014=
10015=入场人ID不能为空
10016=收货地址ID不能为空
10017=入场人不存在,请核实
10018=收货地址不存在,请核实
10019=入场人已存在,请核实
10101=姓名或身份证件号无效
10102=身份证号与姓名不符
10103=已超出姓名长度限制
10104=身份证号码不合规
10105=入场人不存在
10106=收获地址不存在
10107=港澳居民来往内地通行证号码不合规
10108=台湾居民来往大陆通行证号码不合规
10109=不支持中国大陆护照
10110=护照号码不合规
10111=军官证号不合规
10200=仅限从未购买过会员的用户使用
10201=会员卡信息有误,请核实
10202=会员卡价格有误,请核实
10203=支付信息有误,请联系客服
10204=微信支付OPENID必传
10205=支付宝支付回调URL必传
10206=苹果支付商品标识必传
10207=兑换码不存在,请核实
10208=兑换码已使用,请核实
10209=兑换码不可用,请核实
10210=创建订单失败,请联系客服
10211=订单不存在
10212=订单状态查询失败
10213=感谢您选择登登登。距您上一次离开不足一年,登登登还没准备好再次邀您加入。不如我们给彼此多一些时间,有缘再相见。
10214=兑换失败
10215=本次摩登天空会员购买名额已满
10216=
10301=
10401=
10500=
10501=会员订单回调处理失败,该订单不存在
10502=会员订单回调处理失败,该订单已处理
10503=会员订单回调处理失败,订单金额有误
10504=会员订单回调处理失败,会员价格信息不存在
10505=会员订单回调处理异常
# -- 使用券 --
candy_coupon.use=UPDATE candy_user_coupon SET state = 5 ,used_at = ? , used_for = ? WHERE uid = ? AND ucoupon_id = ?
#candy_coupon.use_insert=INSERT INTO candy_user_coupon (ucoupon_id , uid , state , coupon_id , used_at , used_for ) VALUE ( ? , ? , 3 , ? , ? ,? )
candy_coupon.use_insert=INSERT INTO candy_user_coupon (ucoupon_id , uid , state , coupon_id , bind_at, dued_at, used_at , used_for, created_at) VALUE ( ? , ? , 5 , ? , ? , ?, ?, ?, ?)
# -- 回退券 --
candy_coupon.back=UPDATE candy_user_coupon SET state = 1 WHERE uid = ? AND ucoupon_id = ?
# -- 领取券 --
candy_coupon.receive=INSERT INTO candy_user_coupon (ucoupon_id , uid , state , coupon_id , ccode , bind_at , created_at , dued_at) VALUE ( ? , ? , ? , ? , ? , ? , ? , ?)
candy_coupon_code.receive=UPDATE candy_coupon_code SET state=?,ucoupon_id=?,redeem_uid=?,redeem_mobile=?,redeem_at=?,updated_at=? WHERE coupon_id=? AND ccode=?
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-bus-service</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-service-merchant</artifactId>
<packaging>pom</packaging>
<modules>
<module>liquidnet-service-merchant-impl</module>
</modules>
</project>
\ No newline at end of file
......@@ -40,6 +40,7 @@
<module>liquidnet-service-sweet</module>
<module>liquidnet-service-chime</module>
<module>liquidnet-service-candy</module>
<module>liquidnet-service-merchant</module>
<!-- <module>liquidnet-service-example</module>-->
<!-- <module>liquidnet-service-sequence</module>-->
<!-- <module>liquidnet-service-account</module>-->
......
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