增加分润队列逻辑

This commit is contained in:
2024-11-06 18:39:27 +08:00
parent af3950684a
commit aea65c9782
9 changed files with 507 additions and 167 deletions

View File

@@ -3,9 +3,9 @@ server:
spring: spring:
datasource: datasource:
url: jdbc:mysql://192.168.31.162:3306/hui-mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:mysql://8.137.112.156:3307/hui-mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
username: lion username: root
password: leeqiang password: 1m2y3s4q5l6
druid: druid:
initial-size: 5 #连接池初始化大小 initial-size: 5 #连接池初始化大小
min-idle: 10 #最小空闲连接数 min-idle: 10 #最小空闲连接数
@@ -17,7 +17,7 @@ spring:
login-password: druid login-password: druid
redis: redis:
host: 192.168.31.162 # Redis服务器地址 host: 192.168.10.107 # Redis服务器地址
database: 1 # Redis数据库索引默认为0 database: 1 # Redis数据库索引默认为0
port: 6379 # Redis服务器连接端口 port: 6379 # Redis服务器连接端口
password: leeqiang # Redis服务器连接密码默认为空 password: leeqiang # Redis服务器连接密码默认为空

View File

@@ -3,9 +3,9 @@ server:
spring: spring:
datasource: datasource:
url: jdbc:mysql://localhost:3306/ysr_mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:mysql://8.137.112.156:3307/hui-mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
username: root username: root
password: yusenrong@admin password: 1m2y3s4q5l6
druid: druid:
initial-size: 5 #连接池初始化大小 initial-size: 5 #连接池初始化大小
min-idle: 10 #最小空闲连接数 min-idle: 10 #最小空闲连接数
@@ -17,10 +17,10 @@ spring:
login-password: druid login-password: druid
redis: redis:
host: localhost # Redis服务器地址 host: redis.excn.vip # Redis服务器地址
database: 0 # Redis数据库索引默认为0 database: 0 # Redis数据库索引默认为0
port: 6379 # Redis服务器连接端口 port: 6380 # Redis服务器连接端口
password: redis # Redis服务器连接密码默认为空 password: ueredis # Redis服务器连接密码默认为空
jedis: jedis:
pool: pool:
max-active: 8 # 连接池最大连接数(使用负值表示没有限制) max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
@@ -30,7 +30,7 @@ spring:
timeout: 3000ms # 连接超时时间(毫秒) timeout: 3000ms # 连接超时时间(毫秒)
rabbitmq: rabbitmq:
host: localhost host: host.docker.internal
port: 5672 port: 5672
virtual-host: /mall virtual-host: /mall
username: mall username: mall
@@ -60,4 +60,4 @@ logging:
level: level:
root: info #日志配置DEBUG,INFO,WARN,ERROR root: info #日志配置DEBUG,INFO,WARN,ERROR
com.buy507.mall: debug com.buy507.mall: debug
path: /var/logs #配置日志生成路径 path: ./logs #配置日志生成路径

View File

@@ -6,15 +6,19 @@ package com.buy507.mall.model;
* *
*/ */
public enum MemberLevel { public enum MemberLevel {
/**普通用户**/
Member(0), //普通用户 Member(1),
Consumer(1), //vip会员 /**vip会员**/
Partner(2), //店长 Consumer(2),
Diamond(3), //代理 /**店长**/
OneDiamond(4), //总监 Partner(3),
TwoDiamond(5), //中级合作商 /**代理**/
ThreeDiamond(6), //高级合作商 Diamond(4),
FourDiamond(7); //特级合作商 /** 市代 **/
OneDiamond(5),
TwoDiamond(6), //中级合作商
ThreeDiamond(7), //高级合作商
FourDiamond(8); //特级合作商
private int value; private int value;

View File

@@ -88,6 +88,12 @@ public class UmsMember implements Serializable {
*/ */
private String realName; private String realName;
/**
* 真实姓名
*/
@ApiModelProperty(value = "排队状态:0->未排队1->排队中")
private Integer orderStatus;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public Long getId() { public Long getId() {
@@ -290,6 +296,14 @@ public class UmsMember implements Serializable {
this.realName = realName; this.realName = realName;
} }
public Integer getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(Integer orderStatus) {
this.orderStatus = orderStatus;
}
@Override @Override
public String toString() { public String toString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@@ -321,4 +335,6 @@ public class UmsMember implements Serializable {
sb.append("]"); sb.append("]");
return sb.toString(); return sb.toString();
} }
} }

View File

@@ -27,6 +27,7 @@
<result column="freeze" jdbcType="DECIMAL" property="freeze" /> <result column="freeze" jdbcType="DECIMAL" property="freeze" />
<result column="detail_address" jdbcType="VARCHAR" property="detailAddress" /> <result column="detail_address" jdbcType="VARCHAR" property="detailAddress" />
<result column="real_name" jdbcType="VARCHAR" property="realName" /> <result column="real_name" jdbcType="VARCHAR" property="realName" />
<result column="order_status" jdbcType="INTEGER" property="orderStatus" />
</resultMap> </resultMap>
<sql id="Example_Where_Clause"> <sql id="Example_Where_Clause">
<where> <where>
@@ -89,7 +90,7 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, member_level_id, member_level, username, password, nickname, phone, status, create_time, icon, id, member_level_id, member_level, username, password, nickname, phone, status, create_time, icon,
gender, birthday, city, job, personalized_signature, source_type, integration, growth, gender, birthday, city, job, personalized_signature, source_type, integration, growth,
luckey_count, history_integration, store_status, balance, freeze, detail_address, real_name luckey_count, history_integration, store_status, balance, freeze, detail_address, real_name,order_status
</sql> </sql>
<select id="selectByExample" parameterType="com.buy507.mall.model.UmsMemberExample" resultMap="BaseResultMap"> <select id="selectByExample" parameterType="com.buy507.mall.model.UmsMemberExample" resultMap="BaseResultMap">
select select
@@ -130,7 +131,7 @@
create_time, icon, gender, create_time, icon, gender,
birthday, city, job, personalized_signature, birthday, city, job, personalized_signature,
source_type, integration, growth, source_type, integration, growth,
luckey_count, history_integration, store_status, balance, freeze, detail_address, real_name) luckey_count, history_integration, store_status, balance, freeze, detail_address, real_name,order_status)
values (#{memberLevelId,jdbcType=BIGINT}, values (#{memberLevelId,jdbcType=BIGINT},
#{memberLevel,jdbcType=INTEGER, typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler}, #{memberLevel,jdbcType=INTEGER, typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler},
#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
@@ -140,7 +141,7 @@
#{sourceType,jdbcType=INTEGER}, #{integration,jdbcType=INTEGER}, #{growth,jdbcType=INTEGER}, #{sourceType,jdbcType=INTEGER}, #{integration,jdbcType=INTEGER}, #{growth,jdbcType=INTEGER},
#{luckeyCount,jdbcType=INTEGER}, #{historyIntegration,jdbcType=INTEGER}, #{luckeyCount,jdbcType=INTEGER}, #{historyIntegration,jdbcType=INTEGER},
#{storeStatus, jdbcType=INTEGER, typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler}, #{storeStatus, jdbcType=INTEGER, typeHandler=org.apache.ibatis.type.EnumOrdinalTypeHandler},
#{balance,jdbcType=DECIMAL}, #{freeze,jdbcType=DECIMAL}, #{detailAddress,jdbcType=VARCHAR}, #{realName,jdbcType=VARCHAR}) #{balance,jdbcType=DECIMAL}, #{freeze,jdbcType=DECIMAL}, #{detailAddress,jdbcType=VARCHAR}, #{realName,jdbcType=VARCHAR} #{orderStatus,jdbcType=INTEGER} )
</insert> </insert>
<insert id="insertSelective" parameterType="com.buy507.mall.model.UmsMember"> <insert id="insertSelective" parameterType="com.buy507.mall.model.UmsMember">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">
@@ -220,6 +221,9 @@
<if test="realName != null"> <if test="realName != null">
real_name, real_name,
</if> </if>
<if test="orderStatus != null">
order_status,
</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="memberLevelId != null"> <if test="memberLevelId != null">
@@ -294,6 +298,9 @@
<if test="realName != null"> <if test="realName != null">
#{real_name,jdbcType=VARCHAR}, #{real_name,jdbcType=VARCHAR},
</if> </if>
<if test="orderStatus != null">
#{order_status,jdbcType=INTEGER},
</if>
</trim> </trim>
</insert> </insert>
<select id="countByExample" parameterType="com.buy507.mall.model.UmsMemberExample" resultType="java.lang.Long"> <select id="countByExample" parameterType="com.buy507.mall.model.UmsMemberExample" resultType="java.lang.Long">
@@ -380,6 +387,9 @@
<if test="record.realName != null"> <if test="record.realName != null">
real_name = #{record.realName,jdbcType=VARCHAR}, real_name = #{record.realName,jdbcType=VARCHAR},
</if> </if>
<if test="record.orderStatus != null">
order_status = #{record.growth,jdbcType=INTEGER},
</if>
</set> </set>
<if test="_parameter != null"> <if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" /> <include refid="Update_By_Example_Where_Clause" />
@@ -411,7 +421,8 @@
balance = #{record.balance,jdbcType=DECIMAL}, balance = #{record.balance,jdbcType=DECIMAL},
freeze = #{record.freeze,jdbcType=DECIMAL}, freeze = #{record.freeze,jdbcType=DECIMAL},
detail_address = #{record.detailAddress,jdbcType=VARCHAR}, detail_address = #{record.detailAddress,jdbcType=VARCHAR},
real_name = #{record.realName,jdbcType=VARCHAR} real_name = #{record.realName,jdbcType=VARCHAR},
order_status = #{record.orderStatus,jdbcType=INTEGER}
<if test="_parameter != null"> <if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" /> <include refid="Update_By_Example_Where_Clause" />
</if> </if>
@@ -491,6 +502,9 @@
<if test="realName != null"> <if test="realName != null">
real_name = #{realName,jdbcType=VARCHAR}, real_name = #{realName,jdbcType=VARCHAR},
</if> </if>
<if test="orderStatus != null">
order_status = #{realName,jdbcType=INTEGER},
</if>
</set> </set>
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}
</update> </update>
@@ -520,6 +534,7 @@
freeze = #{freeze,jdbcType=DECIMAL}, freeze = #{freeze,jdbcType=DECIMAL},
detail_address = #{detailAddress,jdbcType=VARCHAR}, detail_address = #{detailAddress,jdbcType=VARCHAR},
real_name = #{realName,jdbcType=VARCHAR} real_name = #{realName,jdbcType=VARCHAR}
order_status = #{orderStatus,jdbcType=INTEGER},
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}
</update> </update>
<select id="selectPhoneExists" parameterType="java.lang.String" resultMap="BaseResultMap"> <select id="selectPhoneExists" parameterType="java.lang.String" resultMap="BaseResultMap">

View File

@@ -56,37 +56,7 @@ public class MemberCommissionServiceImpl implements MemberCommissionService {
}); });
} }
/***
* 五联单排队分红逻辑
**/
private void orderQueueBusiness(OmsOrder order, UmsMember currentMember) {
//查看该订单所属上级是否开启了加速5连单
UmsMemberRelationTreeExample relationTreeExample = new UmsMemberRelationTreeExample();
relationTreeExample.createCriteria().andMemberIdEqualTo(currentMember.getId());
List<UmsMemberRelationTree> relationTreeList = umsMemberRelationTreeMapper.selectByExample(relationTreeExample);
if(!relationTreeList.isEmpty()){
//找到上级关系
UmsMemberRelationTree relationTree = relationTreeList.get(0);
//订单加入队列
UmsMemberOrderQueueExample orderQueueExample = new UmsMemberOrderQueueExample();
orderQueueExample.createCriteria()
.andQuitQueueMarkEqualTo(UmsMemberOrderQueue.QUEUE_STATUS_WAIT)
.andQueueTypeEqualTo(UmsMemberOrderQueue.QUEUE_TYPE_FAST)
.andMemberIdEqualTo(relationTree.getHigherLevelId());
List<UmsMemberOrderQueue> orderQueueList = umsMemberOrderQueueMapper.selectByExample(orderQueueExample);
//上级订单队列中是否有加速5联单
if(!orderQueueList.isEmpty()){
UmsMemberOrderQueue umoq = orderQueueList.get(0);
if(umoq.getRemainNumber() < 5){
//没有加速满5单
umoq.setRemainNumber(umoq.getRemainNumber()+1);
}
}
}
}
/** /**
* 普通排队队列 * 普通排队队列
@@ -145,6 +115,8 @@ public class MemberCommissionServiceImpl implements MemberCommissionService {
if(!treeList.isEmpty()){ if(!treeList.isEmpty()){
UmsMemberRelationTree treeMember = treeList.get(0); UmsMemberRelationTree treeMember = treeList.get(0);
UmsMember higherMember = memberMapper.selectByPrimaryKey(treeMember.getHigherLevelId()); UmsMember higherMember = memberMapper.selectByPrimaryKey(treeMember.getHigherLevelId());
//todo 计算分成
} }

View File

@@ -3,6 +3,7 @@ package com.buy507.mall.portal.service.impl;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URI; import java.net.URI;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@@ -22,6 +23,7 @@ import com.buy507.mall.mapper.*;
import com.buy507.mall.model.*; import com.buy507.mall.model.*;
import com.buy507.mall.portal.domain.*; import com.buy507.mall.portal.domain.*;
import com.buy507.mall.portal.service.*; import com.buy507.mall.portal.service.*;
import lombok.extern.java.Log;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@@ -1171,7 +1173,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
.andMemberIdEqualTo(relationTree.getHigherLevelId()); .andMemberIdEqualTo(relationTree.getHigherLevelId());
List<UmsMemberOrderQueue> upQueueList = umsMemberOrderQueueMapper.selectByExample(orderQueueExample); List<UmsMemberOrderQueue> upQueueList = umsMemberOrderQueueMapper.selectByExample(orderQueueExample);
//更新五连单中的上级订单,修改装备为继续排队数量减去1 //更新五连单中的上级订单,修改订单为继续排队数量减去1
if(!upQueueList.isEmpty()){ if(!upQueueList.isEmpty()){
UmsMemberOrderQueue upQueue = upQueueList.get(0); UmsMemberOrderQueue upQueue = upQueueList.get(0);
upQueue.setQuitQueueMark(UmsMemberOrderQueue.QUEUE_STATUS_WAIT); upQueue.setQuitQueueMark(UmsMemberOrderQueue.QUEUE_STATUS_WAIT);
@@ -1305,6 +1307,10 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
history.setNote("完成确认收货"); history.setNote("完成确认收货");
orderOperateHistoryMapper.insert(history); orderOperateHistoryMapper.insert(history);
//更新会员为队列中
currentMember.setOrderStatus(1);
memberMapper.updateByPrimaryKeySelective(currentMember);
/** /**
* 开始计算会员提成比例 * 开始计算会员提成比例
*/ */
@@ -1735,56 +1741,6 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
} }
@Value("${alipay.alipayPublicKey}")
private String alipayPublicKey;
@Value("${alipay.charset}")
private String charset;
@Value("${alipay.signType}")
private String signType;
@Value("${becomeVipAmount}")
private String becomeVipAmount;
@Override
public void alipayCallback(Map<String, String> params) {
LOGGER.info("============开始处理支付宝的支付异步通知 接收到参数 {}", JSONUtil.toJsonStr(params));
// 验证签名
boolean verifyResult;
try {
verifyResult = AlipaySignature.rsaCheckV1(params, alipayPublicKey, charset, signType);
if (verifyResult) {
// 签名验证通过
String tradeStatus = params.get("trade_status");
String outTradeNo = params.get("out_trade_no");
if ("TRADE_SUCCESS".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)) {
// 处理支付成功的业务逻辑
OmsOrderExample example = new OmsOrderExample();
example.createCriteria().andOrderSnEqualTo(outTradeNo);
List<OmsOrder> list = orderMapper.selectByExample(example);
if(list != null && list.size() > 0) {
OmsOrder order = list.get(0);
//订单状态0->待付款1->待发货2->已发货3->已完成4->已关闭5->无效订单
if (order != null && order.getStatus() == 0) {
// 更新订单状态
this.updateOderAndMemberInfo(order);
}
}
}
}
} catch (AlipayApiException e) {
e.printStackTrace();
}
}
/**
* 线程池处理逻辑
*/
@Override @Override
public CommonResult accelerateOrder(Long orderId) { public CommonResult accelerateOrder(Long orderId) {
OmsOrder order = orderMapper.selectByPrimaryKey(orderId); OmsOrder order = orderMapper.selectByPrimaryKey(orderId);
@@ -1812,16 +1768,66 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
moq.setQueueType(UmsMemberOrderQueue.QUEUE_TYPE_FAST); moq.setQueueType(UmsMemberOrderQueue.QUEUE_TYPE_FAST);
umsMemberOrderQueueMapper.updateByPrimaryKeySelective(moq); umsMemberOrderQueueMapper.updateByPrimaryKeySelective(moq);
} }
//五单加速单验证
this.fiveQuickQueueBusiness(currentMember);
}); });
} }
return CommonResult.success(null); return CommonResult.success(null);
} }
@Value("${alipay.alipayPublicKey}")
private String alipayPublicKey;
@Value("${alipay.charset}")
private String charset;
@Value("${alipay.signType}")
private String signType;
@Value("${becomeVipAmount}")
private String becomeVipAmount;
@Autowired
private UmsMemberLevelMapper umsMemberLevelMapper;
@Override
public void alipayCallback(Map<String, String> params) {
LOGGER.info("============开始处理支付宝的支付异步通知 接收到参数 {}", JSONUtil.toJsonStr(params));
// 验证签名
boolean verifyResult;
try {
verifyResult = AlipaySignature.rsaCheckV1(params, alipayPublicKey, charset, signType);
if (verifyResult) {
// 签名验证通过
String tradeStatus = params.get("trade_status");
String outTradeNo = params.get("out_trade_no");
if ("TRADE_SUCCESS".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)) {
// 处理支付成功的业务逻辑
OmsOrderExample example = new OmsOrderExample();
example.createCriteria().andOrderSnEqualTo(outTradeNo);
List<OmsOrder> list = orderMapper.selectByExample(example);
if(list != null && list.size() > 0) {
OmsOrder order = list.get(0);
//订单状态0->待付款1->待发货2->已发货3->已完成4->已关闭5->无效订单
if (order != null && order.getStatus() == 0) {
/**
* 线程池处理逻辑
*/
executorService.submit(()->{
// 更新订单状态及预计算分润
this.updateOderAndMemberInfo(order);
});
}
}
}
}
} catch (AlipayApiException e) {
e.printStackTrace();
}
}
private void updateOderAndMemberInfo(OmsOrder order) { private void updateOderAndMemberInfo(OmsOrder order) {
@@ -1838,54 +1844,90 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
order.setPaymentTime(date); order.setPaymentTime(date);
orderMapper.updateByPrimaryKey(order); orderMapper.updateByPrimaryKey(order);
//新增用户位普通用户订单支付成功后满一定金额成为vip普通会员
UmsMember member = memberMapper.selectByPrimaryKey(order.getMemberId()); UmsMember member = memberMapper.selectByPrimaryKey(order.getMemberId());
//普通用户 //找到上级会员
if(member.getMemberLevel().equals(MemberLevel.Member) ){ UmsMember higherLevelMember = this.findInOrderQueueMember(member.getId());;
/** /**
* 当前订单金额 大于等于 vip门槛金额 * 先验证该订单是否是五联单加速,如果不是则普通计算上级提成
*/ * 如果是提成,则全额给上级
if(order.getPayAmount().compareTo(new BigDecimal(becomeVipAmount)) >= 0 ){ */
member.setMemberLevel(MemberLevel.Consumer); boolean splitForFiveQueue = fiveQuickQueueBusiness(higherLevelMember);
memberMapper.updateByPrimaryKey(member);
//订单加入队列
UmsMemberOrderQueueExample example = new UmsMemberOrderQueueExample();
example.createCriteria().andQuitQueueMarkEqualTo(UmsMemberOrderQueue.QUEUE_STATUS_WAIT)
.andQueueTypeEqualTo(UmsMemberOrderQueue.QUEUE_TYPE_ORDINARY);
long allQueue = umsMemberOrderQueueMapper.countByExample(example);
UmsMemberOrderQueue record = new UmsMemberOrderQueue();
record.setOrderId(order.getId());
record.setMemberId(member.getId());
record.setOrderAmount(order.getPayAmount());
record.setQuitQueueMark(UmsMemberOrderQueue.QUEUE_STATUS_WAIT);
record.setQueueType(UmsMemberOrderQueue.QUEUE_TYPE_ORDINARY);
record.setQueueIndex(++allQueue);
umsMemberOrderQueueMapper.insert(record);
}
//未进行满5联单分润开始进行普通分润流程
if(!splitForFiveQueue && higherLevelMember != null){
//进行订单分润
this.splitProfitFroMember(member, higherLevelMember, order);
}
}
/**
* 为订单上级进行分润
* @param member
* @param higherLevelMember
* @param order
*/
private void splitProfitFroMember(UmsMember member, UmsMember higherLevelMember, OmsOrder order) {
//新订单及直属上级分润,返回的分润金额
BigDecimal revenueAmount = this.newMemberSplitProfit(member, higherLevelMember, order);
UmsMember moreHigherMember;
//如果上级是vip会员
if(higherLevelMember.getMemberLevel().equals(MemberLevel.Consumer)) {
moreHigherMember = this.findNextHigherLevelMemberByType(higherLevelMember.getId(), MemberLevel.Consumer);
}else {
moreHigherMember = this.findInOrderQueueMember(higherLevelMember.getId());
}
//没有上级退出分润
if(moreHigherMember == null){
return;
} }
//给三个级别代理分润
this.threeLevelSplitProfit(higherLevelMember, moreHigherMember, order, revenueAmount);
this.fourLevelSplitProfit(higherLevelMember, moreHigherMember, order, revenueAmount);
this.fiveLevelSplitProfit(higherLevelMember, moreHigherMember, order, revenueAmount);
}
/**
* 查询到下一个级别的上级会员
* @param id
* @param consumer
* @return
*/
private UmsMember findNextHigherLevelMemberByType(Long id, MemberLevel consumer) {
//找到上级
UmsMember moreHigherMember = this.findInOrderQueueMember(id);
if(moreHigherMember == null){
return null;
}else {
while (moreHigherMember.getMemberLevel().equals(consumer)){
moreHigherMember = this.findInOrderQueueMember(moreHigherMember.getId());
if(moreHigherMember == null){
return null;
}
}
}
return moreHigherMember;
} }
/*** /***
* 五联单排队分红逻辑,该订单支付后处理 * 五联单排队分红逻辑,该订单支付后处理
**/ **/
private void fiveQuickQueueBusiness(UmsMember currentMember) { private boolean fiveQuickQueueBusiness(UmsMember higherLevelMember) {
//分润标识
//查看该订单所属上级是否开启了加速5连单 boolean splitMark = false;
UmsMemberRelationTreeExample relationTreeExample = new UmsMemberRelationTreeExample(); if(higherLevelMember != null){
relationTreeExample.createCriteria().andMemberIdEqualTo(currentMember.getId());
List<UmsMemberRelationTree> relationTreeList = umsMemberRelationTreeMapper.selectByExample(relationTreeExample);
if(!relationTreeList.isEmpty()){
//找到上级关系
UmsMemberRelationTree relationTree = relationTreeList.get(0);
//订单加入队列 //订单加入队列
UmsMemberOrderQueueExample orderQueueExample = new UmsMemberOrderQueueExample(); UmsMemberOrderQueueExample orderQueueExample = new UmsMemberOrderQueueExample();
orderQueueExample.createCriteria() orderQueueExample.createCriteria()
.andQuitQueueMarkEqualTo(UmsMemberOrderQueue.QUEUE_STATUS_WAIT) .andQuitQueueMarkEqualTo(UmsMemberOrderQueue.QUEUE_STATUS_WAIT)
.andQueueTypeEqualTo(UmsMemberOrderQueue.QUEUE_TYPE_FAST) .andQueueTypeEqualTo(UmsMemberOrderQueue.QUEUE_TYPE_FAST)
.andMemberIdEqualTo(relationTree.getHigherLevelId()); .andMemberIdEqualTo(higherLevelMember.getId());
List<UmsMemberOrderQueue> orderQueueList = umsMemberOrderQueueMapper.selectByExample(orderQueueExample); List<UmsMemberOrderQueue> orderQueueList = umsMemberOrderQueueMapper.selectByExample(orderQueueExample);
//上级订单队列中是否有加速5联单 //上级订单队列中是否有加速5联单
@@ -1895,17 +1937,18 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
//没有加速满5单 //没有加速满5单
umoq.setRemainNumber(1 + umoq.getRemainNumber()); umoq.setRemainNumber(1 + umoq.getRemainNumber());
umsMemberOrderQueueMapper.updateByPrimaryKeySelective(umoq); umsMemberOrderQueueMapper.updateByPrimaryKeySelective(umoq);
}else { }else {
//设置本单待退出且5单满24小时未退款 //设置本单待退出且5单满24小时未退款
umoq.setQuitQueueMark(UmsMemberOrderQueue.QUEUE_PREPARE_QUIT); umoq.setQuitQueueMark(UmsMemberOrderQueue.QUEUE_PREPARE_QUIT);
//冻结上级会费的冻结金额 //冻结上级会费的冻结金额
UmsMember higherMember = memberMapper.selectByPrimaryKey(umoq.getMemberId());
//订单金额加入冻结余额 //订单金额加入冻结余额
BigDecimal freeze = higherMember.getFreeze(); BigDecimal freeze = higherLevelMember.getFreeze();
BigDecimal orderAmount = umoq.getOrderAmount(); BigDecimal orderAmount = umoq.getOrderAmount();
higherMember.setFreeze(freeze.add(orderAmount)); higherLevelMember.setFreeze(freeze.add(orderAmount));
//更新数据库 //更新数据库
memberMapper.updateByPrimaryKeySelective(higherMember); memberMapper.updateByPrimaryKeySelective(higherLevelMember);
umsMemberOrderQueueMapper.updateByPrimaryKeySelective(umoq); umsMemberOrderQueueMapper.updateByPrimaryKeySelective(umoq);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction(); UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
@@ -1916,12 +1959,302 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
accountTransaction.setTransactionState(UmsMemberAccountTransaction.TRANSACTION_STATE_NO); accountTransaction.setTransactionState(UmsMemberAccountTransaction.TRANSACTION_STATE_NO);
//24小时后到账 //24小时后到账
accountTransaction.setTransferPaymentTime(DateUtil.tomorrow()); accountTransaction.setTransferPaymentTime(DateUtil.tomorrow());
umsMemberAccountTransactionMapper.insert(accountTransaction); umsMemberAccountTransactionMapper.insert(accountTransaction);
splitMark = true;
}
}
}
return splitMark;
}
/**
* 会员分润
* @param currentMember
* @param higherLevelMember
* @param order
*/
private BigDecimal newMemberSplitProfit(UmsMember currentMember, UmsMember higherLevelMember, OmsOrder order){
/**
* 新增用户位普通用户订单支付成功后满一定金额成为vip普通会员
* 当前订单金额 大于等于 vip门槛金额
*/
if(currentMember.getMemberLevel().equals(MemberLevel.Member) &&
order.getPayAmount().compareTo(new BigDecimal(becomeVipAmount)) >= 0 ){
LOGGER.info("new order member {}" , JSONUtil.toJsonStr(currentMember));
currentMember.setMemberLevel(MemberLevel.Consumer);
memberMapper.updateByPrimaryKey(currentMember);
//订单加入队列
UmsMemberOrderQueueExample example = new UmsMemberOrderQueueExample();
example.createCriteria().andQuitQueueMarkEqualTo(UmsMemberOrderQueue.QUEUE_STATUS_WAIT)
.andQueueTypeEqualTo(UmsMemberOrderQueue.QUEUE_TYPE_ORDINARY);
long allQueue = umsMemberOrderQueueMapper.countByExample(example);
UmsMemberOrderQueue record = new UmsMemberOrderQueue();
record.setOrderId(order.getId());
record.setMemberId(currentMember.getId());
record.setOrderAmount(order.getPayAmount());
record.setQuitQueueMark(UmsMemberOrderQueue.QUEUE_STATUS_WAIT);
record.setQueueType(UmsMemberOrderQueue.QUEUE_TYPE_ORDINARY);
record.setQueueIndex(++allQueue);
umsMemberOrderQueueMapper.insert(record);
LOGGER.info("new Order Queue {}" , JSONUtil.toJsonStr(record));
}
UmsMemberLevel higherLevel = umsMemberLevelMapper.selectByPrimaryKey(higherLevelMember.getMemberLevelId());
//直推会员分润
String ratio = "0."+higherLevel.getCommissionRatio();
BigDecimal revenueAmount = order.getPayAmount().multiply(new BigDecimal(ratio)).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(10);
accountTransaction.setMemberId(higherLevelMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("直推会员分润");
accountTransaction.setTransactionState(UmsMemberAccountTransaction.TRANSACTION_STATE_NO);
accountTransaction.setRevenueAmount(revenueAmount);
//24小时后到账
accountTransaction.setTransferPaymentTime(DateUtil.tomorrow());
umsMemberAccountTransactionMapper.insert(accountTransaction);
LOGGER.info("new Account Transaction {}" , JSONUtil.toJsonStr(accountTransaction));
return revenueAmount;
}
/**
* 三级店长分润
* @param lowerMember
* @param higherMember
* @param order
*/
private void threeLevelSplitProfit(UmsMember lowerMember, UmsMember higherMember, OmsOrder order,
BigDecimal revenueAmount){
if(higherMember.getMemberLevel().equals(MemberLevel.Partner)){
//上下级关系
if(higherMember.getMemberLevel().getValue() > lowerMember.getMemberLevel().getValue()){
UmsMemberLevel lowerLevel = umsMemberLevelMapper.selectByPrimaryKey(lowerMember.getMemberLevelId());
UmsMemberLevel higherLevel = umsMemberLevelMapper.selectByPrimaryKey(higherMember.getMemberLevelId());
Integer profitRatio = 0;
if(higherLevel.getCommissionRatio() != null && lowerLevel.getCommissionRatio() != null){
profitRatio = higherLevel.getCommissionRatio() - lowerLevel.getCommissionRatio();
}
//查看上级的分润比例
BigDecimal tenPercent = order.getPayAmount().multiply(new BigDecimal("0."+profitRatio)).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(profitRatio);
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("三级店长上级分润");
accountTransaction.setTransactionState(UmsMemberAccountTransaction.TRANSACTION_STATE_NO);
accountTransaction.setRevenueAmount(tenPercent);
//24小时后到账
accountTransaction.setTransferPaymentTime(DateUtil.tomorrow());
umsMemberAccountTransactionMapper.insert(accountTransaction);
//查询上级
UmsMember next = this.findInOrderQueueMember(higherMember.getId());
if(next != null){
if (next.getMemberLevel().equals(higherMember.getMemberLevel())){
threeLevelSplitProfit(higherMember, next, order, revenueAmount);
}else {
fourLevelSplitProfit(higherMember, next, order, revenueAmount);
}
}
//平级关系
}else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){
BigDecimal tenPercent = revenueAmount.multiply(new BigDecimal("0.10")).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(10);
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("三级店长平级分润");
accountTransaction.setTransactionState(UmsMemberAccountTransaction.TRANSACTION_STATE_NO);
accountTransaction.setRevenueAmount(tenPercent);
//24小时后到账
accountTransaction.setTransferPaymentTime(DateUtil.tomorrow());
umsMemberAccountTransactionMapper.insert(accountTransaction);
UmsMember next = this.findNextHigherLevelMemberByType(higherMember.getId(), MemberLevel.Diamond);
if(next != null){
fourLevelSplitProfit(higherMember, next, order, revenueAmount);
} }
} }
} }
} }
/**
* 四级代理分润
* @param lowerMember
* @param higherMember
* @param order
*/
private void fourLevelSplitProfit(UmsMember lowerMember, UmsMember higherMember, OmsOrder order, BigDecimal revenueAmount){
if(higherMember.getMemberLevel().equals(MemberLevel.Diamond)){
//上下级关系
if(higherMember.getMemberLevel().getValue() > lowerMember.getMemberLevel().getValue()){
UmsMemberLevel lowerLevel = umsMemberLevelMapper.selectByPrimaryKey(lowerMember.getMemberLevelId());
UmsMemberLevel higherLevel = umsMemberLevelMapper.selectByPrimaryKey(higherMember.getMemberLevelId());
Integer profitRatio = 0;
if(higherLevel.getCommissionRatio() != null && lowerLevel.getCommissionRatio() != null){
profitRatio = higherLevel.getCommissionRatio() - lowerLevel.getCommissionRatio();
}
//查看上级的分润比例
BigDecimal tenPercent = order.getPayAmount().multiply(new BigDecimal("0."+profitRatio)).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(profitRatio);
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("四级代理分润");
accountTransaction.setTransactionState(UmsMemberAccountTransaction.TRANSACTION_STATE_NO);
accountTransaction.setRevenueAmount(tenPercent);
//24小时后到账
accountTransaction.setTransferPaymentTime(DateUtil.tomorrow());
umsMemberAccountTransactionMapper.insert(accountTransaction);
//查询上级
UmsMember next = this.findInOrderQueueMember(higherMember.getId());
if(next != null){
if (next.getMemberLevel().equals(higherMember.getMemberLevel())){
fourLevelSplitProfit(higherMember, next, order, revenueAmount);
}else {
fiveLevelSplitProfit(higherMember, next, order, revenueAmount);
}
}
//平级关系
}else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){
BigDecimal tenPercent = revenueAmount.multiply(new BigDecimal("0.10")).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(10);
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("三级店长平级分润");
accountTransaction.setTransactionState(UmsMemberAccountTransaction.TRANSACTION_STATE_NO);
accountTransaction.setRevenueAmount(tenPercent);
//24小时后到账
accountTransaction.setTransferPaymentTime(DateUtil.tomorrow());
umsMemberAccountTransactionMapper.insert(accountTransaction);
UmsMember next = this.findNextHigherLevelMemberByType(higherMember.getId(), MemberLevel.OneDiamond);
if(next != null){
fiveLevelSplitProfit(higherMember, next, order, revenueAmount);
}
}
}
}
/**
* 五级市代分润
* @param lowerMember
* @param higherMember
* @param order
*/
private void fiveLevelSplitProfit(UmsMember lowerMember, UmsMember higherMember, OmsOrder order, BigDecimal revenueAmount){
if(higherMember.getMemberLevel().equals(MemberLevel.OneDiamond)){
//上下级关系
if(higherMember.getMemberLevel().getValue() > lowerMember.getMemberLevel().getValue()){
UmsMemberLevel lowerLevel = umsMemberLevelMapper.selectByPrimaryKey(lowerMember.getMemberLevelId());
UmsMemberLevel higherLevel = umsMemberLevelMapper.selectByPrimaryKey(higherMember.getMemberLevelId());
Integer profitRatio = 0;
if(higherLevel.getCommissionRatio() != null && lowerLevel.getCommissionRatio() != null){
profitRatio = higherLevel.getCommissionRatio() - lowerLevel.getCommissionRatio();
}
//查看上级的分润比例
BigDecimal tenPercent = order.getPayAmount().multiply(new BigDecimal("0."+profitRatio)).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(profitRatio);
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("四级代理分润");
accountTransaction.setTransactionState(UmsMemberAccountTransaction.TRANSACTION_STATE_NO);
accountTransaction.setRevenueAmount(tenPercent);
//24小时后到账
accountTransaction.setTransferPaymentTime(DateUtil.tomorrow());
umsMemberAccountTransactionMapper.insert(accountTransaction);
//查询上级
UmsMember next = this.findInOrderQueueMember(higherMember.getId());
if(next != null && next.getMemberLevel().equals(higherMember.getMemberLevel())){
fiveLevelSplitProfit(higherMember, next, order, revenueAmount);
}
//平级关系
}else if(lowerMember.getMemberLevel().equals(lowerMember.getMemberLevel())){
BigDecimal tenPercent = revenueAmount.multiply(new BigDecimal("0.10")).setScale(2, RoundingMode.HALF_UP);
UmsMemberAccountTransaction accountTransaction = new UmsMemberAccountTransaction();
accountTransaction.setCommissionRatio(10);
accountTransaction.setMemberId(higherMember.getId());
accountTransaction.setOrderId(order.getId());
accountTransaction.setRemarks("三级店长平级分润");
accountTransaction.setTransactionState(UmsMemberAccountTransaction.TRANSACTION_STATE_NO);
accountTransaction.setRevenueAmount(tenPercent);
//24小时后到账
accountTransaction.setTransferPaymentTime(DateUtil.tomorrow());
umsMemberAccountTransactionMapper.insert(accountTransaction);
}
}
}
/**
* 寻找上级且在队列中,未在队列且返回null
*/
private UmsMember findInOrderQueueMember(Long id) {
UmsMemberRelationTree relationTree = this.getUpLevelRelationTreeById(id);
UmsMember higherMember = memberMapper.selectByPrimaryKey(relationTree.getMemberId());
if(higherMember == null){
return null;
}
if(higherMember.getOrderStatus() == 0){
UmsMember nextMember = this.findInOrderQueueMember(higherMember.getId());
if(nextMember != null){
return nextMember;
}
}else if(higherMember.getOrderStatus() == 1){
return higherMember;
}
return null;
}
private UmsMemberRelationTree getUpLevelRelationTreeById(Long id) {
UmsMemberRelationTree relationTree = null;
UmsMemberRelationTreeExample relationTreeExample = new UmsMemberRelationTreeExample();
relationTreeExample.createCriteria().andMemberIdEqualTo(id);
List<UmsMemberRelationTree> relationTreeList = umsMemberRelationTreeMapper.selectByExample(relationTreeExample);
if(!relationTreeList.isEmpty()) {
//找到上级关系
relationTree = relationTreeList.get(0);
}
return relationTree;
}
} }

View File

@@ -3,9 +3,9 @@ server:
spring: spring:
datasource: datasource:
url: jdbc:mysql://192.168.10.107:3306/hui-mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:mysql://8.137.112.156:3307/hui-mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
username: lion username: root
password: leeqiang password: 1m2y3s4q5l6
druid: druid:
initial-size: 5 #连接池初始化大小 initial-size: 5 #连接池初始化大小
min-idle: 10 #最小空闲连接数 min-idle: 10 #最小空闲连接数
@@ -79,13 +79,13 @@ logging:
alipay: alipay:
appId: 9021000141666104 appId: 9021000141666104
appPrivateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCPp50bwLpQ5ofFcUztw46BTcc1lOGKoyuOtI+biJmgNfysl0nqeDYEriPTZo0pe7gwujrwNSMBKvmKLQ+awQSM7XEQfDj7oGNp1yw5EFjT62tFlIoi7bMueRUZnxQRTkZhNobj6+BfOeMMg0HURVE1VinUr4UVjO7IIODLCkYDURNMfSr3f4paO0odPCRSw47+b6euuzoszd81nfZUa7f6NPBaf6iAn6i2aSPTASlfAW/TZ9IHmVd13tI3pWSpsaMu0KcKZIfTz+l/VazHWQBLACzOF0LJ+eSjsj8aNGOp9Jo82zh+GddK94fElqCjoFQySeYjQ6OErGLsz1Pm6CJhAgMBAAECggEAK+p+0hQqIT9IdGi9rtYgw5DGfK/l/18AmuDCIjcxV9QJSa36b86OHQIre54XO35SAbt89yAXcmzz2nUKFzI4tOiFrxd6yBnxKlMYdt1zel227o+JZ0Ipi+SCOdHy7ZNzWpazyAu9DP+CVLnvrvf96oNLyHRcCAmMmevLLOcYHjz+d56pTS/JblPQWz/WRPkqSJt2FcMKQCbGNhthjHFf+EFF/OGVGTSpS8AW6gytUR/k713UBrrY9eYAsZ+ZA/wAsECQCvRnoxO7zy+7rTlVT+I6kJu+BfUuTgx2FOO4gjQa8ICZI/ncpW+7X7DLhcNA6Yh20T4sY8AlMU3tIoyuQQKBgQDJbzva1J3MpTwUo1FtkWrrne8X58lqKOo7T7+J2xvif3sFd9/nu/R2FX9QoJuxIgHGsl0AA5wsaEReUFf00m542zLQAfOWmPtCQ0D5zzE6MBr2BwUvNHdw0UlYzFqfq0xfty27fwIv3rI60cJ0GnxIrBB9/BaGPX6i7Pv3nXy2iQKBgQC2kY8KWMOT8r+EMs6Lm4tf+lKauYbGLIjZuAcjP1p8NO6B1psTnwQfrI/JBipXxdgwlNyfytYPTah5m2zWDfaUkcbNIu+wXUZCvVUgLi3ZYj0hlOOOzXkYiRg7k9yirzXxjdk3yRGJ0DZqxCMcizNrsQmM1B8nMcg4N+e48bQXGQKBgHzzeBCFZSFFuiAfMuqhks53WJHeoQ0uNiX2kRzlgsWcSGaa9pRb/gelzCTqi8l0C+ACUjgpBR5yyz4p3nWqdwaXCk0HeN+JJAr1hv+u651pq7/DmQ6wIAsmd7YShYCYFLcm/MJaxbOGE87ywQmeSEwYF97emeZJjR1pnd76nRrpAoGABzqeQlefbuVGxhJI8Wg4TZWY3b2I46HxzUUnKzMf/xkNdKCtxUofnK11iA0xcgZIeCv8zGr4rORzTlVkKtmksN9Q0uCWQxJ+bLgYfcy2TgxAxWqi1A24xMrw5bMGIn7zkNwABOB2TFGtRe78QO4WHCaHbUcc8K1c8zTrfPw9GEkCgYB+mMZXsFe8KDOsy+fRdnB2KN+FlZIKKP2ehTGZnj9JENIR6A8//MgC4astniIy/K2JY6EsvPpHzT9nSK0uQBFSIXFgXm4qnVLXATZskKu8mvQgcYcvXKZHdQHNzvn+J53xfxnAcqXtcMPzvLzCoTMcbjKJ8YC0bBr0eNonb4ea5g== appPrivateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCqDUlsRnQwOspHo2wKVIsXNBa7BJbhPkE0Nf4xYJuz41X3I/cNYUmK4PFVbDM65Zu9U3Dmp6DEgwCDiR/mY59szsAMifBtBsYYg2uUV6CYZoFAg4JKs+NWAXUkBqDn53PlLMjhZ0MHeSihTBqvQBTTm/1oQFAC1CuUfiAUTThJmXb4ZtT9CPRNRbxRwwc8e1TI7i0kU59MKJVH5q+WDKDQxJi3QKdT6S0KRQBn+W64dBj/MKRiAoi1v0/eCdlTxBt+u32h4sxvfZHYnWeAg2LdKO3T/Zq7jLiyOHl5STzz66Iw3Jpxmx1dprSTRdcDZiL1r4PGir+Btj8PKGN0K24LAgMBAAECggEAPtTv9yDFF3jxeqzIY7y/M9CcQXe9o/YTs43roST4AuyRu+I/C2OR/82DfjOfbjieZcLp6V+wiEt7Kh7FeaP/qP1venKRMkeZdD9Cxanm/ciKI2M0BhQXgJTDSo9kbqtXaCs3Agnce2tp9sce6Pf9ef6eECILLjBk9dXwVm/9xzthrjq8vzkmyLrJcrwVrp3X0zR1hbJJduC/RsUlV9rdMPx7jUxbmM3cRvEuG/zjZECgE5zrEuKoWNa/fV+X4Ao11WEzUmjXnJ6D9C2P1m5oU5bWFKfOV4mmG/bgpqPEB53L+553TlEiSwfYJSCWFyOxxqQo0MZrWW0HNQ5bgArYWQKBgQDYhska+wUhRwUlQzgzEsiDd2z+PjPvPXIMGJCKczWd1kfzO1xQWtI3vVu91JQrgTXfCx88b/Vv0buxli06C/YRSiUC7Qo+RDaRhmFihGVlbQwUNT7XXOm4WJYGf7W3Ykh5pQOQ/9XQfUa3X8WAo1mMqXx4C4hwUOxgal9HnoVYpwKBgQDJDYxQmGQ9keQrCZ7mh4+2zatWI/CmwJ2gcBBr+pGw2LPOIq0Xf0u+PmbP5mKt0msJlYtN1bidPxHFSjqi0L4WjsxIfmYKJvEGJk1xIB9mDCnmPOG5g1JPMHet1Ygz4soey2bULLMOpe6Es8jI5MAsgtYB+92SCelV8oaa79/H/QKBgQCwlSOXHFYvsGKy4+IGTPA3vwKlSYdDOaIz2SivsItuYF2nMKb1ZUwBZy1VX/NCk4qijsh3mnrYKXxftLDHoQ+ZRBVxEG2FIE48WhI7rOugTtFF/bJ1InH9BEm9nRNOLhobEocZDnuKH1C3paRFZ3JVc7dtk0I/Ds/nRXjUyKPJCwKBgQCoNyasFCTigtslyyHg/ZEXwNLW+rERw9zebITA41/cWCNwmAC8xSvpW6qHzdnIV2JpHW71S5jwL+G9cRLIQOCaXRW8nczgN563p3pp6Rd8OTchRNUTczV9vi6UCjGwP9Mems5JPbD+04RSEV4v/3xugXVvKX1D//jziTxoC8TvPQKBgDsYbBYdQFUorIvzLIZVI4a+AON1s0FfVayOl8LZzZRH5v7DCD82rxAQkbb3YfcXTdDtdZd+CiKDsxsIupBMkBHqdwLzJtVXhj49sqkRgYfS8lwO7+MRps9PhmH+HC32CkTRmE0Oti7cSNziV8464L5tWAC+UEm2MB/MNrnF6qQT
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6dBwV5KsJHqqvxh29bkGxEW8eIb8WJx6Ax5NuERvbM5BcTKEe/yse/mCR5OEZSWSNnxa3SQCql50xcxt0cfSe/QcmXP+Mi6sY07LO2/tK+N8PhYWzKunnq+KbanQ+R0wGw4oVl02g/vXx097aWiDZdLcHu8No78b6VIy79EsqThbiQuqJdmFkXfrePzKxNbIrAr4ENZJVcmp2+/LU7LrdAqgnlzyx4Ya0begj7d/MPz+weteSmoyBeAH2xzPiKpdOtR5HdKyaaTIRBGyr+BTYMdyeZYrGtB7HNPv2ydAHJwiQj88dDCCGhCRyDLpLdF15xZGLxTq8FlqKzfzut/UowIDAQAB alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqg1JbEZ0MDrKR6NsClSLFzQWuwSW4T5BNDX+MWCbs+NV9yP3DWFJiuDxVWwzOuWbvVNw5qegxIMAg4kf5mOfbM7ADInwbQbGGINrlFegmGaBQIOCSrPjVgF1JAag5+dz5SzI4WdDB3kooUwar0AU05v9aEBQAtQrlH4gFE04SZl2+GbU/Qj0TUW8UcMHPHtUyO4tJFOfTCiVR+avlgyg0MSYt0CnU+ktCkUAZ/luuHQY/zCkYgKItb9P3gnZU8Qbfrt9oeLMb32R2J1ngINi3Sjt0/2au4y4sjh5eUk88+uiMNyacZsdXaa0k0XXA2Yi9a+Dxoq/gbY/DyhjdCtuCwIDAQAB
serverUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do serverUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
format: json format: json
charset: UTF-8 charset: UTF-8
signType: RSA2 signType: RSA2
payCallBackUrl: https://yusenrong.507buy.com/member/order/alipay/callback payCallBackUrl: https://csj-meeting-room.excn.vip/api/member/order/alipay/callback
# 成为vip金额 # 成为vip金额
becomeVipAmount: 899 becomeVipAmount: 899

View File

@@ -3,9 +3,9 @@ server:
spring: spring:
datasource: datasource:
url: jdbc:mysql://localhost:3306/ysr_mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai url: jdbc:mysql://8.137.112.156:3307/hui-mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
username: root username: root
password: yusenrong@admin password: 1m2y3s4q5l6
druid: druid:
initial-size: 5 #连接池初始化大小 initial-size: 5 #连接池初始化大小
min-idle: 10 #最小空闲连接数 min-idle: 10 #最小空闲连接数
@@ -18,15 +18,15 @@ spring:
data: data:
mongodb: mongodb:
host: localhost host: host.docker.internal
port: 27017 port: 27017
database: mall-port database: mall-port
redis: redis:
host: localhost # Redis服务器地址 host: redis.excn.vip # Redis服务器地址
database: 0 # Redis数据库索引默认为0 database: 0 # Redis数据库索引默认为0
port: 6379 # Redis服务器连接端口 port: 6380 # Redis服务器连接端口
password: redis # Redis服务器连接密码默认为空 password: ueredis # Redis服务器连接密码默认为空
jedis: jedis:
pool: pool:
max-active: 8 # 连接池最大连接数(使用负值表示没有限制) max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
@@ -36,7 +36,7 @@ spring:
timeout: 3000ms # 连接超时时间(毫秒) timeout: 3000ms # 连接超时时间(毫秒)
rabbitmq: rabbitmq:
host: localhost host: host.docker.internal
port: 5672 port: 5672
virtual-host: /mall virtual-host: /mall
username: mall username: mall
@@ -78,14 +78,14 @@ logging:
path: /var/logs path: /var/logs
alipay: alipay:
appId: your_app_id appId: 9021000141666104
appPrivateKey: your_app_private_key appPrivateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCqDUlsRnQwOspHo2wKVIsXNBa7BJbhPkE0Nf4xYJuz41X3I/cNYUmK4PFVbDM65Zu9U3Dmp6DEgwCDiR/mY59szsAMifBtBsYYg2uUV6CYZoFAg4JKs+NWAXUkBqDn53PlLMjhZ0MHeSihTBqvQBTTm/1oQFAC1CuUfiAUTThJmXb4ZtT9CPRNRbxRwwc8e1TI7i0kU59MKJVH5q+WDKDQxJi3QKdT6S0KRQBn+W64dBj/MKRiAoi1v0/eCdlTxBt+u32h4sxvfZHYnWeAg2LdKO3T/Zq7jLiyOHl5STzz66Iw3Jpxmx1dprSTRdcDZiL1r4PGir+Btj8PKGN0K24LAgMBAAECggEAPtTv9yDFF3jxeqzIY7y/M9CcQXe9o/YTs43roST4AuyRu+I/C2OR/82DfjOfbjieZcLp6V+wiEt7Kh7FeaP/qP1venKRMkeZdD9Cxanm/ciKI2M0BhQXgJTDSo9kbqtXaCs3Agnce2tp9sce6Pf9ef6eECILLjBk9dXwVm/9xzthrjq8vzkmyLrJcrwVrp3X0zR1hbJJduC/RsUlV9rdMPx7jUxbmM3cRvEuG/zjZECgE5zrEuKoWNa/fV+X4Ao11WEzUmjXnJ6D9C2P1m5oU5bWFKfOV4mmG/bgpqPEB53L+553TlEiSwfYJSCWFyOxxqQo0MZrWW0HNQ5bgArYWQKBgQDYhska+wUhRwUlQzgzEsiDd2z+PjPvPXIMGJCKczWd1kfzO1xQWtI3vVu91JQrgTXfCx88b/Vv0buxli06C/YRSiUC7Qo+RDaRhmFihGVlbQwUNT7XXOm4WJYGf7W3Ykh5pQOQ/9XQfUa3X8WAo1mMqXx4C4hwUOxgal9HnoVYpwKBgQDJDYxQmGQ9keQrCZ7mh4+2zatWI/CmwJ2gcBBr+pGw2LPOIq0Xf0u+PmbP5mKt0msJlYtN1bidPxHFSjqi0L4WjsxIfmYKJvEGJk1xIB9mDCnmPOG5g1JPMHet1Ygz4soey2bULLMOpe6Es8jI5MAsgtYB+92SCelV8oaa79/H/QKBgQCwlSOXHFYvsGKy4+IGTPA3vwKlSYdDOaIz2SivsItuYF2nMKb1ZUwBZy1VX/NCk4qijsh3mnrYKXxftLDHoQ+ZRBVxEG2FIE48WhI7rOugTtFF/bJ1InH9BEm9nRNOLhobEocZDnuKH1C3paRFZ3JVc7dtk0I/Ds/nRXjUyKPJCwKBgQCoNyasFCTigtslyyHg/ZEXwNLW+rERw9zebITA41/cWCNwmAC8xSvpW6qHzdnIV2JpHW71S5jwL+G9cRLIQOCaXRW8nczgN563p3pp6Rd8OTchRNUTczV9vi6UCjGwP9Mems5JPbD+04RSEV4v/3xugXVvKX1D//jziTxoC8TvPQKBgDsYbBYdQFUorIvzLIZVI4a+AON1s0FfVayOl8LZzZRH5v7DCD82rxAQkbb3YfcXTdDtdZd+CiKDsxsIupBMkBHqdwLzJtVXhj49sqkRgYfS8lwO7+MRps9PhmH+HC32CkTRmE0Oti7cSNziV8464L5tWAC+UEm2MB/MNrnF6qQT
alipayPublicKey: your_alipay_public_key alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqg1JbEZ0MDrKR6NsClSLFzQWuwSW4T5BNDX+MWCbs+NV9yP3DWFJiuDxVWwzOuWbvVNw5qegxIMAg4kf5mOfbM7ADInwbQbGGINrlFegmGaBQIOCSrPjVgF1JAag5+dz5SzI4WdDB3kooUwar0AU05v9aEBQAtQrlH4gFE04SZl2+GbU/Qj0TUW8UcMHPHtUyO4tJFOfTCiVR+avlgyg0MSYt0CnU+ktCkUAZ/luuHQY/zCkYgKItb9P3gnZU8Qbfrt9oeLMb32R2J1ngINi3Sjt0/2au4y4sjh5eUk88+uiMNyacZsdXaa0k0XXA2Yi9a+Dxoq/gbY/DyhjdCtuCwIDAQAB
serverUrl: https://openapi.alipay.com/gateway.do serverUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
format: json format: json
charset: UTF-8 charset: UTF-8
signType: RSA2 signType: RSA2
payCallBackUrl: https://yusenrong.507buy.com/member/order/alipay/callback payCallBackUrl: https://csj-meeting-room.excn.vip/api/member/order/alipay/callback
# 成为vip金额 # 成为vip金额
becomeVipAmount: 899 becomeVipAmount: 899