bug 3321\3292\3289\3305\3294
This commit is contained in:
parent
15bab4fe0a
commit
f3ce9cb56f
|
@ -106,4 +106,10 @@ public class BlockChainController extends BaseController {
|
|||
return blockChainService.getUserTokenByProjectId(type,userName,tokenName);
|
||||
}
|
||||
|
||||
@ApiOperation("获取用户对应的所有项目token")
|
||||
@GetMapping("/getUserAllProjectToken")
|
||||
public AjaxResult getUserAllProjectToken (String userName) {
|
||||
return blockChainService.getUserAllProjectToken(userName);
|
||||
}
|
||||
|
||||
}
|
|
@ -10,6 +10,7 @@ public class TokenListVo {
|
|||
|
||||
private Long id; // 项目ID
|
||||
private String name; // 项目名称
|
||||
private String userId;//用户id
|
||||
private Long totalToken; // 项目总Token
|
||||
private String createBy; // 创建人
|
||||
private Long issueToken;//issueToken
|
||||
|
|
|
@ -68,16 +68,39 @@ public class BlockChainService {
|
|||
if(param != null) {
|
||||
Long issueTokenSum = projectResourceLibraryMapper.sumProjectIssueToken(v.getId());
|
||||
v.setIssueToken(issueTokenSum);
|
||||
long totalToken = Long.parseLong(param.getString("total_supply"));
|
||||
long totalToken = Long.parseLong(param.getString("total_supply"));//总token
|
||||
v.setTotalToken(totalToken);
|
||||
long applyToken = Long.parseLong(param.getString("cur_supply"));
|
||||
//根据创建人login,获取对应的用户id
|
||||
String userName = v.getUserId();
|
||||
//根据创建人、项目Id,获取创建人拥有token
|
||||
String tokenName = param.getString("token_name");
|
||||
Long applyToken= getUserBlanaceProjectId("userSingleInfo",userName,tokenName);
|
||||
v.setApplyToken(applyToken);
|
||||
v.setCurrentToken(totalToken - issueTokenSum-v.getApplyToken());
|
||||
v.setCurrentToken(totalToken - applyToken);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public Long getUserBlanaceProjectId(String type,String userName,String tokenName) {
|
||||
JSONObject params = new JSONObject();
|
||||
if(type.equals(USER_SINGLE_INFO)){
|
||||
params.put(REQUEST_TYPE, USER_SINGLE_REPO);
|
||||
params.put("token_name", tokenName);
|
||||
params.put("username", userName);
|
||||
}else if(type.equals(USER_ALL_INFO)){
|
||||
params.put(REQUEST_TYPE, USER_ALL_REPOS);
|
||||
params.put("username", userName);
|
||||
}
|
||||
Map<String, String> p = convertParams(params);
|
||||
params = JSONObject.from(p);
|
||||
JSONObject rsp = queryFiscobcos(params);
|
||||
if (rsp != null) {
|
||||
return Long.parseLong(rsp.getString("balance"));
|
||||
}
|
||||
return -1L;
|
||||
}
|
||||
|
||||
private JSONObject queryProjectInfo(TokenListVo v) {
|
||||
JSONObject param = new JSONObject();
|
||||
param.put(REQUEST_TYPE, QUERY_REPO);
|
||||
|
@ -140,23 +163,27 @@ public class BlockChainService {
|
|||
}
|
||||
|
||||
public AjaxResult projectTokenDistribute(InLinkProjectVo vo) {
|
||||
validTokenCount(vo.getProjectId(), vo.getAmount());
|
||||
//根据项目ID,获取用户ID
|
||||
//根据项目id获取项目创建人
|
||||
String userId = projectResourceLibraryMapper.getProjectUserIdById(vo.getProjectId());
|
||||
validTokenCount(vo.getProjectId(), vo.getAmount(),userId);
|
||||
JSONObject params = new JSONObject();
|
||||
params.put(REQUEST_TYPE, ADD_USER_BALANCE);
|
||||
params.put(REQUEST_TYPE, TRANSFER_AMOUNT);
|
||||
params.put("token_name", vo.getProjectId());
|
||||
params.put("amount", vo.getAmount());
|
||||
params.put("username", vo.getUserId());
|
||||
params.put("payee", vo.getUserId());
|
||||
params.put("payer", userId);
|
||||
JSONObject rsp = queryFiscobcos(params);
|
||||
if (rsp != null) {
|
||||
String txHash = rsp.getString(TX_HASH);
|
||||
// insert to db 4、将3入链成功的数据存入表 :用户/项目转账信息记录表 (type:project、 payer_id:username)
|
||||
if (StringUtils.isNotEmpty(txHash)) {
|
||||
UserProjectTransferRecords records = new UserProjectTransferRecords();
|
||||
records.setPayerId(String.valueOf(SecurityUtils.getGitlinkUserId()));
|
||||
records.setPayeeId(vo.getUserId());
|
||||
records.setPayerId(params.getString("payer"));
|
||||
records.setPayeeId(params.getString("payee"));
|
||||
records.setProjectId(vo.getProjectId());
|
||||
records.setToken(BigDecimal.valueOf(vo.getAmount()));
|
||||
records.setType("project");
|
||||
records.setType("projectApply");//项目分配
|
||||
records.setCreateTime(DateUtils.getNowDate());
|
||||
records.setTxHash(txHash);
|
||||
records.setCreateBy(SecurityUtils.getUsername());
|
||||
|
@ -168,21 +195,6 @@ public class BlockChainService {
|
|||
}
|
||||
|
||||
public AjaxResult userCreate(UserCreateVo userCreateVo) {
|
||||
JSONObject params = JSONObject.from(userCreateVo);
|
||||
UserProjectTransferRecords records = new UserProjectTransferRecords();
|
||||
records.setPayerId(params.getString("payer"));
|
||||
records.setPayeeId(params.getString("payee"));
|
||||
records.setProjectId(params.getString("token_name"));
|
||||
records.setToken(params.getBigDecimal("amount"));
|
||||
records.setType("userTransfer");//用户转账
|
||||
records.setReserve1(userCreateVo.getTypeId());
|
||||
records.setCreateTime(DateUtils.getNowDate());
|
||||
records.setCreateBy(SecurityUtils.getUsername());
|
||||
userProjectTransferRecordsMapper.insertUserProjectTransferRecords(records);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
public AjaxResult userCreateTmp(UserCreateVo userCreateVo) {
|
||||
//转账人token充足
|
||||
validUserTokenCount(userCreateVo);
|
||||
//进行转账
|
||||
|
@ -230,20 +242,20 @@ public class BlockChainService {
|
|||
}
|
||||
|
||||
//判断项目剩余token是否还支持分配
|
||||
private void validTokenCount(String tokenName, Long amount) {
|
||||
private void validTokenCount(String tokenName, Long amount,String userName) {
|
||||
TokenListVo v = new TokenListVo();
|
||||
if(StringUtils.isEmpty(tokenName)) {
|
||||
throw new ServiceException("项目ID不能为空");
|
||||
}
|
||||
v.setId(Long.parseLong(Optional.ofNullable(tokenName).orElse("-1")));
|
||||
JSONObject c = queryProjectInfo(v);
|
||||
if(c != null) {
|
||||
Long issueTokenSum = projectResourceLibraryMapper.sumProjectIssueToken(v.getId());
|
||||
v.setIssueToken(issueTokenSum);
|
||||
long totalToken = Long.parseLong(c.getString("total_supply"));
|
||||
v.setTotalToken(totalToken);
|
||||
long applyToken = Long.parseLong(c.getString("cur_supply"));
|
||||
long curToken = totalToken - issueTokenSum-applyToken;
|
||||
if (curToken < amount) {
|
||||
throw new ServiceException("token数量不足");
|
||||
}
|
||||
Long issueTokenSum = projectResourceLibraryMapper.sumProjectIssueToken(v.getId());
|
||||
v.setIssueToken(issueTokenSum);
|
||||
//根据创建人、项目Id,获取创建人拥有token
|
||||
Long applyToken= getUserBlanaceProjectId("userSingleInfo",userName,tokenName);
|
||||
v.setApplyToken(applyToken);
|
||||
long curToken = applyToken - issueTokenSum;
|
||||
if (curToken < amount) {
|
||||
throw new ServiceException("token数量不足");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -376,7 +388,7 @@ public class BlockChainService {
|
|||
public List<Map<String, Object>> prDataList(BlockchainListQueryVo queryVo) {
|
||||
return inBlockchainDataMapper.prDataList(queryVo);
|
||||
}
|
||||
|
||||
//产权转让
|
||||
public List<Map> userDataList(BlockchainListQueryVo queryVo) {
|
||||
Long gitlinkUserId = SecurityUtils.getGitlinkUserId();
|
||||
Map<String, Object> stringObjectMap = Optional.ofNullable(talentReferralMapper.selectUsersById(gitlinkUserId)).orElse(new HashMap<>());
|
||||
|
@ -514,4 +526,18 @@ public class BlockChainService {
|
|||
}
|
||||
return AjaxResult.error();
|
||||
}
|
||||
|
||||
//
|
||||
public AjaxResult getUserAllProjectToken(String userName) {
|
||||
JSONObject params = new JSONObject();
|
||||
params.put(REQUEST_TYPE, USER_ALL_REPOS);
|
||||
params.put("username", userName);
|
||||
Map<String, String> p = convertParams(params);
|
||||
params = JSONObject.from(p);
|
||||
JSONObject rsp = queryFiscobcos(params);
|
||||
if (rsp != null) {
|
||||
return AjaxResult.success(rsp);
|
||||
}
|
||||
return AjaxResult.error();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -64,4 +64,6 @@ public interface ProjectResourceLibraryMapper {
|
|||
Map<String, Object> selectPrInfo(@Param("prId") String prId);
|
||||
|
||||
Map<String, Object> selectIssueInfo(@Param("issueId") String issueId);
|
||||
|
||||
String getProjectUserIdById(@Param("tokenName")String tokenName);
|
||||
}
|
||||
|
|
|
@ -370,18 +370,18 @@
|
|||
</select>
|
||||
|
||||
<select id="selectProjectInfos" resultType="com.microservices.dms.achievementLibrary.domain.TokenListVo">
|
||||
select p.id, p.name, created_on createdOn, r.identifier repositoryName, r.id as repositoryId,
|
||||
select p.id, p.name, created_on createdOn, r.identifier repositoryName, r.id as repositoryId,p.user_id as "userId",
|
||||
(select IFNULL(users.nickname,login) from users where id = p.user_id) as createBy
|
||||
from projects p
|
||||
join repositories r on p.id = r.project_id
|
||||
where p.use_blockchain = 1
|
||||
<if test="name != null and name != ''">and name like concat('%', #{name}, '%')</if>
|
||||
<if test="name != null and name != ''">and p.name like concat('%', #{name}, '%')</if>
|
||||
</select>
|
||||
|
||||
<select id="sumProjectIssueToken" resultType="java.lang.Long">
|
||||
select IFNULL(sum(i.blockchain_token_num),0)
|
||||
from issues i
|
||||
inner join projects p on i.project_id = p.id
|
||||
inner join projects p on i.project_id = p.id
|
||||
where p.id=#{id}
|
||||
</select>
|
||||
|
||||
|
@ -448,4 +448,10 @@
|
|||
where p.use_blockchain='1' and i.id = #{issueId}
|
||||
</select>
|
||||
|
||||
<select id="getProjectUserIdById" resultType="String">
|
||||
select u.id from projects p
|
||||
inner join users u on p.user_id=u.id
|
||||
where p.id = #{tokenName}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
|
@ -54,9 +54,9 @@
|
|||
</select>
|
||||
|
||||
<select id="userDataList" resultType="java.util.Map">
|
||||
select * from ( select p.name projectName,payer_id,payee_id,uptr.token,uptr.tx_hash,
|
||||
(select IFNULL(nickname,login) from users where id = uptr.payer_id) as "payerName" ,
|
||||
(select IFNULL(nickname,login) from users where id = uptr.payee_id) as "payeeName"
|
||||
select * from ( select p.name projectName,payer_id,payee_id,uptr.token,uptr.tx_hash,uptr.type,
|
||||
(select IFNULL(lastname,login) from users where id = uptr.payer_id) as "payerName" ,
|
||||
(select IFNULL(lastname,login) from users where id = uptr.payee_id) as "payeeName"
|
||||
from user_project_transfer_records uptr join projects p on uptr.project_id = p.id)tmp
|
||||
<where>
|
||||
<if test="projectName != null and projectName != ''">and tmp.projectName like concat('%', #{projectName}, '%')
|
||||
|
|
Loading…
Reference in New Issue