bug 3321\3292\3289\3305\3294

This commit is contained in:
13036795865 2025-06-17 10:27:24 +08:00
parent 15bab4fe0a
commit f3ce9cb56f
6 changed files with 84 additions and 43 deletions

View File

@ -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);
}
}

View File

@ -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

View File

@ -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_idusername)
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();
}
}

View File

@ -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);
}

View File

@ -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>

View File

@ -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}, '%')