增加分润队列逻辑
This commit is contained in:
@@ -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服务器连接密码(默认为空)
|
||||||
|
|||||||
@@ -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 #配置日志生成路径
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -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">
|
||||||
|
|||||||
@@ -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 计算分成
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
Reference in New Issue
Block a user