1,批量插入,获取sqlsession会话,进行与数据库交互
@Transactional(rollbackFor = Exception.class)
public int batchInsert(List<TransactionSeq> transactionSeqList) {
int result = 0;
try (SqlSession batchSqlSession = this.sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false)) {
TransactionSeqMapper batchMapper = batchSqlSession.getMapper(TransactionSeqMapper.class);
for (TransactionSeq transactionSeq : transactionSeqList) {
result += batchMapper.insertSelective(transactionSeq);
}
batchSqlSession.commit();
}
return result;
}
2,比较方式
if (StringUtils.isBlank(shareInfo.getShareUserId()) || Objects.equals(shareInfo.getShareUserId(), shareInfo.getUserId())) {
// 不存在分享人,或者分享人跟自己是同一人,不需要映射
return shareInfo.getUserId();
}
3,重要接口的实现类
package com.hupo.xiaoman.piggy.bank.ecomm.common.returns;
import com.hupo.service.spring.common.share.ShareInfo;
import com.hupo.xiaoman.piggy.bank.sdk.constants.OperationTypeEnum;
import com.hupo.xiaoman.piggy.bank.core.dao.model.PiggyAccount;
import com.hupo.xiaoman.piggy.bank.core.dao.model.TransactionSeq;
import com.hupo.xiaoman.piggy.bank.ecomm.common.dao.model.EcommOrders;
import com.hupo.xiaoman.piggy.bank.utils.ObjectMapperWrapper;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 用户会员的
*/
@Accessors(chain = true)
@Data
public class CommonReturnsStrategy implements ReturnsStrategy {
/**
* @param orders 订单信息
* @param shareInfo 推广渠道信息
* @param parentId 获客人信息
* @param helpUserId 获客人上一级信息(用于计算助力金)
* @param helpFromShareUserId 推广商品人上一级信息(用于计算助力金)
* @param helpFundRate 助力金比例
* @return
*/
private EcommOrders order;
private ShareInfo shareInfo;
private String parentId;
private String helpUserId;
private String helpFromShareUserId;
private BigDecimal helpFundRate;
/**
* 推广金系数
*/
private BigDecimal promotionRate;
/**
* 返利金系数
*/
private BigDecimal commissionRate;
/**
* 用来计算所有值的基数比例
*/
private BigDecimal discount;
private Map<String, PiggyAccount> userPiggyAccountMap;
4,现有插件实现Map操作
Map<String, Object> inputMap = Maps.newHashMap();
5,add方法
public void addAvalableBalance(BigDecimal balance) {
if (getBalance() != null) {
setBalance(getBalance().add(balance));
} else {
setBalance(balance);
}
}
4,通知状态码的枚举类Enum
public enum NotificationActionEnum {
BUY(0, "购买通知"),
PROMOTION(1, "推广通知"),
HELP(2, "助力通知"),
ORDER_STATUS_CHANGE(3, "订单变化通知"),
WITHDRAW(4, "提现通知"),
PROMOTION_INVITE_NEW_USER(5, "推广新人"),
REBATE_TO_ACCOUNT(6, "返佣到账"),
EXTRA_RETURN_AMOUNT(7, "超级返-超级额外返利"),
RETURN_EQUITY_TO_ACCOUNT(8, "超级返-超级返权益金返还"),
;
@Getter
private final int code;
@Getter
private final String name;
NotificationActionEnum(int code, String name) {
this.code = code;
this.name = name;
}
public static NotificationActionEnum byCode(int code) {
for (NotificationActionEnum action : NotificationActionEnum.values()) {
if (action.getCode() == code) {
return action;
}
}
throw new IllegalArgumentException("Invalid code " + code);
}
}
6,关于交易流程以及扑满猪用户个人账号之间的相关操作
交易流程过程中,会有金额的竖向。除此之外还有操作类型这个属性,而这个属性就是我们的交易流程的交易操作类型,其中他的取值一般就是超级返利交易类型,助力金交易操作类型,推广金操作交易类型。这个金额就是沟通Transcation以及piggyAccount两个表之间的桥接属性。交易流程的表里面的金额就是我们个人账户的在途猪油,先获取账号假如有流出账号那么就是流出账号,否则就去流入账号作为我们的账号Id。再创建在途猪油交易流程,假如为空那么就创建这个交易流程然后再返回true字段,否则就直接返回false。然后就是更新个人账号中的在途猪油了。其实就是前面交易流程中的金额。如果已经创建或者说插入了新的交易流程那么接下来就要更新扑满猪个人账号的在线猪油以及助力金和推广的金额,根据类型进行设置相关属性(推广金or助力金)。假如返回的值为false那么就会出现这种情况那就是说已经存在相关的交易流程这个交易流程已经存在了,那就直接设置他的在途猪油属性,然后就是直接更新操作。更新的时候这些油水都是在原来的基础之上进行增加的。将记录的属性值直接添加给新的账号的值就会生成一个具有完整的值得对像,也就是生成了一个完整的扑满猪个人账号表的基本信息,完整的行记录。