Commit b5966081 authored by wlx@33.cn's avatar wlx@33.cn

积分支付订单时,增加积分使用流水

parent 8d609c80
package com.fzm.mall.server.front.merchant.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fzm.mall.server.front.merchant.model.MerchantIntegral;
import org.apache.ibatis.annotations.Mapper;
/**
* @author wangp
* @date 2021/4/27 15:53
* @description Mapper 接口
* @since JDK 1.8
*/
@Mapper
public interface MerchantIntegralMapper extends BaseMapper<MerchantIntegral> {
}
package com.fzm.mall.server.front.merchant.model;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author wangp
* @date 2021/4/27 16:06
* @description 积分
* @since JDK 1.8
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("merchant_integral")
@ApiModel(value = "MerchantIntegral", description = "积分")
public class MerchantIntegral extends PlatformIntegral implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 平台积分
*/
public static final Integer MERCHAN_TINTEGRAL_TYPE_PLAT = 2;
/**
* 5;可用
*/
public static final Integer MERCHAN_TINTEGRAL_STATUS_EFFECTIVE = 5;
@ApiModelProperty(value = "自增主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty(value = "商户号")
private String merchantId;
@ApiModelProperty(value = "标识")
private String label;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "标志")
private String logo;
@ApiModelProperty(value = "发行量")
private BigDecimal issueNum;
@ApiModelProperty(value = "余额")
private BigDecimal balanceNum;
@ApiModelProperty(value = "TOKEN发行地址")
private String issueAddr;
@ApiModelProperty(value = "描述")
private String description;
@ApiModelProperty(value = "商户兑换比例基(分子)")
private Integer merchantRatio;
@ApiModelProperty(value = "平台兑换比例基(分母)")
private Integer baseRatio;
@ApiModelProperty(value = "类别(1.商户积分 2.平台积分)")
private Integer type;
@ApiModelProperty(value = "状态(0.删除 1.发行中 2.发行失败 3.待审核 4.审核失败 5.可用 6.禁用)")
private Integer status;
@ApiModelProperty(value = "审核失败原因")
private String failReason;
@ApiModelProperty(value = "发行错误信息")
private String errMsg;
@ApiModelProperty(value = "是否删除(0.否 1.是)")
@TableField("is_delete")
private Integer isDel;
@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Long createTime;
@ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateTime;
}
package com.fzm.mall.server.front.merchant.model;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* <p>
*
* </p>
*
* @author fzm
* @since 2021-05-08
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("platform_integral")
@ApiModel(value = "PlatformIntegral对象", description = "")
public class PlatformIntegral implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "自增主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty(value = "标识")
private String label;
@ApiModelProperty(value = "名称")
private String name;
@ApiModelProperty(value = "积分账户")
private String account;
@ApiModelProperty(value = "回收地址")
private String recoverAddr;
@ApiModelProperty(value = "账户私钥")
private String addrKey;
@ApiModelProperty(value = "积分价格")
private BigDecimal price;
@ApiModelProperty(value = "发行量")
private BigDecimal issueNum;
@ApiModelProperty(value = "余额")
private BigDecimal balanceNum;
@ApiModelProperty(value = "类别(1.平台积分 2.平台基础积分)")
private Integer type;
@ApiModelProperty(value = "状态(1.可用 2.禁用)")
private Integer status;
@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Long createTime;
@ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateTime;
public PlatformIntegral() {
}
public PlatformIntegral(String label, String name, BigDecimal price, BigDecimal issueNum, BigDecimal balanceNum, Integer type, Integer status) {
this.label = label;
this.name = name;
this.price = price;
this.issueNum = issueNum;
this.balanceNum = balanceNum;
this.type = type;
this.status = status;
}
}
......@@ -31,6 +31,11 @@ public class Pay implements Serializable {
*/
public static final Integer PAY_STATE_TO_PAY = 6;
/**
* 4:积分支付
*/
public static final Integer PAY_TYPE_INTEGRAL = 4;
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键自增编号")
......
......@@ -25,4 +25,6 @@ public interface IPayService extends IService<Pay> {
int payRest(String uid, PayRestVO pid);
String getGoodsName(Pay payId);
Pay readByOid(String oid);
}
......@@ -25,7 +25,9 @@ import com.fzm.mall.server.front.goods.model.*;
import com.fzm.mall.server.front.goods.model.vo.GoodsVo;
import com.fzm.mall.server.front.goods.model.vo.SkuVo;
import com.fzm.mall.server.front.goods.service.*;
import com.fzm.mall.server.front.merchant.mapper.MerchantIntegralMapper;
import com.fzm.mall.server.front.merchant.model.Merchant;
import com.fzm.mall.server.front.merchant.model.MerchantIntegral;
import com.fzm.mall.server.front.merchant.service.IMerchantService;
import com.fzm.mall.server.front.mq.MsgProducer;
import com.fzm.mall.server.front.order.mapper.OrderSkuMapper;
......@@ -105,7 +107,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
private final ISpuService ispuService;
private final IRedisService redisService;
private final IOrderBindBoxService orderBindBoxService;
private final MerchantIntegralMapper merchantIntegralMapper;
@Autowired
private ChainUtil chainUtil;
......@@ -719,6 +721,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
log.error("skuVo+++" + skuVo.toString());
//String hash = paraChainUtil.evmTransfer(, null, user.getAddress(), , orderDetail.getCoin());
//String replace = orderDetail.getCoin().replace(MALLGlobalConfig.GOODS_NFT_PREFIX,"");
saveOrderIntegralRecord(orderDetail.getOid());
int commodity = spuService.getCommodityBySkuId(orderDetail.getSkuId());
if (commodity == 1) {
//打币
......@@ -794,7 +798,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setCoin(coinName);
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
......@@ -838,7 +842,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setCoin(coinName);
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
......@@ -882,7 +886,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setCoin(o.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
......@@ -936,7 +940,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setCoin(coinName);
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
......@@ -1004,7 +1008,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setCoin(coinName);
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
......@@ -1075,7 +1079,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setCoin(coinName);
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
......@@ -1145,7 +1149,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
TranDto tranDto = new TranDto();
tranDto.setId(userAssetRecord.getId());
tranDto.setAmount(new BigDecimal(orderDetail.getNumber()));
//tranDto.setCoin(aLong.toString());
tranDto.setCoin(o.toString());
tranDto.setFromAddr(m.getNftAddr());
tranDto.setHash(hash);
tranDto.setToAddr(user.getAddress());
......@@ -1197,6 +1201,31 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
}
/**
* 用积分支付时,生成积分支付流水记录
* @param oid
*/
private void saveOrderIntegralRecord(String oid) {
Pay pay = payService.readByOid(oid);
if(pay.getPayType() != Pay.PAY_TYPE_INTEGRAL){
return;
}
/**
* 生成用户资产变更记录-支出
*/
QueryWrapper<MerchantIntegral> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("type", MerchantIntegral.MERCHAN_TINTEGRAL_TYPE_PLAT)
.eq("status", MerchantIntegral.MERCHAN_TINTEGRAL_STATUS_EFFECTIVE);
MerchantIntegral merchantIntegral = merchantIntegralMapper.selectOne(queryWrapper);
User user = userService.getByUid(pay.getUid());
String hash = chainUtil.tranToken(user.getAddress(), null, merchantIntegral.getIssueAddr(), pay.getPaidAmount(), merchantIntegral.getLabel());
UserAssetRecord record = new UserAssetRecord();
record.init(pay.getUid(), merchantIntegral.getLabel(), AssetRecordTypeEnum.INTEGRAL_DEDUCTION.getType(), pay.getPaidAmount(), 2,
"平台", hash, pay.getPayId());
userAssetRecordService.save(record);
}
@Override
@Transactional
public void close(Object oid) {
......
......@@ -276,4 +276,11 @@ public class PayServiceImpl extends ServiceImpl<PayMapper, Pay> implements IPayS
return sb.substring(0,sb.length()-1);
}
@Override
public Pay readByOid(String oid) {
QueryWrapper<Pay> queryWrapper = new QueryWrapper<>();
queryWrapper.like("oids_json", oid);
return getOne(queryWrapper);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fzm.mall.server.front.merchant.mapper.MerchantIntegralMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.fzm.mall.server.front.merchant.model.MerchantIntegral">
<id column="id" property="id"/>
<result column="merchant_id" property="merchantId"/>
<result column="label" property="label"/>
<result column="name" property="name"/>
<result column="logo" property="logo"/>
<result column="issue_num" property="issueNum"/>
<result column="balance_num" property="balanceNum"/>
<result column="issue_addr" property="issueAddr"/>
<result column="description" property="description"/>
<result column="type" property="type"/>
<result column="status" property="status"/>
<result column="fail_reason" property="failReason"/>
<result column="err_msg" property="errMsg"/>
<result column="is_delete" property="idDel"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment