JiahengHe 2 жил өмнө
parent
commit
2c7160607d

+ 1 - 1
pom.xml

@@ -35,7 +35,7 @@
     <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
-      <version>8.0.12</version>
+      <version>5.1.34</version>
     </dependency>
 
     <dependency>

+ 1 - 4
src/main/java/common/all.sqlt

@@ -1,10 +1,7 @@
 #判断某实体是否存在
 #sql("hasRecord")
-select exists(
-   select 1 from #(_PARA_ARRAY_[0])
+   select count(1) from #(_PARA_ARRAY_[0])
    where id=CONCAT(#para(1),#para(2))
-   limit 1
-)
 #end
 
 #namespace("address")

+ 1 - 1
src/main/java/common/jfinal/AppConfig.java

@@ -43,7 +43,7 @@ public class AppConfig extends JFinalConfig {
 	public static DruidPlugin getDruidPlugin() {
 		loadConfig();
 
-		return new DruidPlugin(p.get("dbUrl"), p.get("dbUser"), p.get("dbPwd"));
+		return new DruidPlugin(p.get("dbUrl"), p.get("dbUser"), p.get("dbPwd"), "com.mysql.jdbc.Driver");
 	}
 
 	@Override

+ 3 - 3
src/main/java/common/model/base/BaseChain.java

@@ -93,8 +93,8 @@ public abstract class BaseChain<M extends BaseChain<M>> extends Model<M> impleme
 		return getLong("updateTimestamp");
 	}
 
-	public void setOther(java.lang.String remark) {
-		set("other", remark);
+	public void setOther(java.lang.String other) {
+		set("other", other);
 	}
 
 	public java.lang.String getOther() {
@@ -104,7 +104,7 @@ public abstract class BaseChain<M extends BaseChain<M>> extends Model<M> impleme
 	
 	public boolean save() {
 		set("appendTimestamp", System.currentTimeMillis());
-		
+
 		return super.save();
 	}
 	

+ 4 - 4
src/main/java/common/model/base/BaseHistoryTransfer.java

@@ -16,12 +16,12 @@ public abstract class BaseHistoryTransfer<M extends BaseHistoryTransfer<M>> exte
 		return getStr("id");
 	}
 
-	public void setHistoryId(java.lang.String historyId) {
-		set("historyId", historyId);
+	public void setMainId(java.lang.String mainId) {
+		set("mainId", mainId);
 	}
 	
-	public java.lang.String getHistoryId() {
-		return getStr("historyId");
+	public java.lang.String getMainId() {
+		return getStr("mainId");
 	}
 	public void setFrom(java.lang.String from) {
 		set("from", from);

+ 4 - 4
src/main/java/common/model/base/BasePendingTransfer.java

@@ -15,12 +15,12 @@ public abstract class BasePendingTransfer<M extends BasePendingTransfer<M>> exte
 	public java.lang.String getId() {
 		return getStr("id");
 	}
-	public void setPendingId(java.lang.String historyId) {
-		set("PendingId", historyId);
+	public void setMainId(java.lang.String mainId) {
+		set("mainId", mainId);
 	}
 
-	public java.lang.String getPendingId() {
-		return getStr("PendingId");
+	public java.lang.String getMainId() {
+		return getStr("mainId");
 	}
 	public void setFrom(java.lang.String from) {
 		set("from", from);

+ 9 - 3
src/main/java/common/utils/model/SaveUtil.java

@@ -14,9 +14,15 @@ public class SaveUtil {
 		if(!StringUtils.isEmpty(model.getStr("chainId")) && !StringUtils.isEmpty(model.getStr("hash"))){
 			model.set("id", model.getStr("chainId").concat(model.getStr("hash")));
 		}
-		Object[] values = CopyUtil.generateDuplicateObjects(model._getAttrValues());
-		
-		return Db.update(SqlUtil.generateReplaceSql(TableUtil.getTableName(model), model), values);
+//		Object[] values = CopyUtil.generateDuplicateObjects(model._getAttrValues());
+		// 是否存在
+		if (Db.template("hasRecord", TableUtil.getTableName(model), model.getStr("chainId"), model.getStr("hash")).queryInt() == 1){
+			model.update();
+			return UPDATE_CODE;
+		} else {
+			model.save();
+			return SAVE_CODE;
+		}
 	}
 	
 	public static int saveSuperAndSub(Model<?> superModel, Model<?> subModel) {

+ 5 - 5
src/main/java/modules/address/AddressController.java

@@ -41,13 +41,13 @@ public class AddressController extends MyController {
 	@EmptyInterface(keyArray = {"chainId", "hash"})
 	public void appendOrUpdate() {
 		Address address = getJsonModel(Address.class);
-		
-		int code = service.appendOrUpdate(address);
 
-		if (code == SaveUtil.SAVE_CODE) {
+		if (service.isAddressExist(address)) {
+			service.update(address);
 			renderJson(MyRet.ok("Save address successful.").setData(address));
-		} else if (code == SaveUtil.UPDATE_CODE) {
-			renderJson(MyRet.ok("Update address successful.").setData(address));
+		} else {
+			service.append(address);
+			renderJson(MyRet.ok("Append address ok.").setData(address));
 		}
 	}
 

+ 22 - 0
src/main/java/modules/address/factory/FactoryController.java

@@ -35,6 +35,28 @@ public class FactoryController extends MyController {
 		}
 	}
 
+	@EmptyInterface(keyArray = {"chainId", "hash"})
+	public void append() {
+		Factory factory = getJsonModel(Factory.class);
+		Address address = AddressFactory.parseAddress(factory);
+
+		if (service.isFactoryExists(factory)) {
+			renderJson(MyRet.fail("Save factory fail: [id, hash] has exists.").setData(factory));
+		} else {
+			service.append(factory, address);
+
+			renderJson(MyRet.ok("Append factory ok.").setData(factory));
+		}
+	}
+
+	@EmptyInterface(keyArray = {"chainId", "hash"})
+	public void update() {
+		Factory factory = getJsonModel(Factory.class);
+		service.update(factory);
+
+		renderJson(MyRet.ok("Update address ok.").setData(factory));
+	}
+
 
 	
 	@EmptyInterface(keyArray = {"chainId", "hash"})

+ 5 - 2
src/main/java/modules/address/factory/FactoryService.java

@@ -19,15 +19,18 @@ public class FactoryService {
 	
 	public boolean append(Factory factory, Address address) {
 		boolean isAddressExist = addressService.isAddressExist(address);
+		factory.setId(factory.getChainId() + factory.getHash());
 		return Db.tx(() -> {
-			if (!isAddressExist) addressService.append(address);
+			if (!isAddressExist)
+				addressService.append(address);
 			factory.save();
-			
+
 			return true;
 		});
 	}
 	
 	public boolean update(Factory factory) {
+		factory.setId(factory.getChainId() + factory.getHash());
 		return factory.update();
 	}
 	

+ 4 - 5
src/main/java/modules/address/lp/bal/BalLpController.java

@@ -38,12 +38,11 @@ public class BalLpController extends MyController {
 	public void append() {
 		BalLp balLp = getJsonModel(BalLp.class);
 		Address address = AddressFactory.parseAddress(balLp);
-
-		boolean code = service.append(balLp, address);
-		if (code) {
-			renderJson(MyRet.ok("Save bal lp successful.").setData(balLp));
-		} else {
+		if (service.isBalLpExists(balLp)) {
 			renderJson(MyRet.fail("Save bal lp fail.").setData(balLp));
+		} else {
+			service.append(balLp, address);
+			renderJson(MyRet.ok("Save bal lp successful.").setData(balLp));
 		}
 	}
 

+ 1 - 3
src/main/java/modules/address/lp/bal/BalLpService.java

@@ -25,9 +25,7 @@ public class BalLpService {
 		boolean isAddressExist = addressService.isAddressExist(address);
 		return Db.tx(() -> {
 			if (!isAddressExist) addressService.append(address);
-			balLp.save();
-
-			return true;
+			return balLp.save();
 		});
 	}
 

+ 2 - 0
src/main/java/modules/address/lp/v2/V2LpService.java

@@ -25,6 +25,7 @@ public class V2LpService {
 
 	public boolean append(V2Lp v2Lp, Address address) {
 		boolean isAddressExist = addressService.isAddressExist(address);
+		v2Lp.setId(v2Lp.getChainId()+v2Lp.getHash());
 		return Db.tx(() -> {
 			if (!isAddressExist) addressService.append(address);
 			v2Lp.save();
@@ -34,6 +35,7 @@ public class V2LpService {
 	}
 
 	public boolean update(V2Lp v2Lp) {
+		v2Lp.setId(v2Lp.getChainId()+v2Lp.getHash());
 		return v2Lp.update();
 	}
 

+ 2 - 0
src/main/java/modules/address/lp/v3/V3LpService.java

@@ -20,6 +20,7 @@ public class V3LpService {
 
 	public boolean append(V3Lp v3Lp, Address address) {
 		boolean isAddressExist = addressService.isAddressExist(address);
+		v3Lp.setId(v3Lp.getChainId()+v3Lp.getHash());
 		return Db.tx(() -> {
 			if (!isAddressExist) addressService.append(address);
 			v3Lp.save();
@@ -29,6 +30,7 @@ public class V3LpService {
 	}
 
 	public boolean update(V3Lp v3Lp) {
+		v3Lp.setId(v3Lp.getChainId()+v3Lp.getHash());
 		return v3Lp.update();
 	}
 

+ 25 - 0
src/main/java/modules/address/token/TokenController.java

@@ -6,6 +6,7 @@ import com.jfinal.plugin.activerecord.Record;
 import common.interceptor.empty.EmptyInterface;
 import common.model.Address;
 import common.model.Token;
+import common.model.V3Lp;
 import common.utils.http.MyController;
 import common.utils.http.MyPaginate;
 import common.utils.http.MyRet;
@@ -35,6 +36,30 @@ public class TokenController extends MyController {
 		}
 	}
 
+	@EmptyInterface(keyArray = {"chainId", "hash"})
+	public void append() {
+		Token token = getJsonModel(Token.class);
+		Address address = AddressFactory.parseAddress(token);
+
+		boolean code = service.append(token, address);
+		if (code) {
+			renderJson(MyRet.ok("Save v3 lp successful.").setData(token));
+		} else {
+			renderJson(MyRet.fail("Save v3 lp fail.").setData(address));
+		}
+	}
+
+	@EmptyInterface(keyArray = {"chainId", "hash"})
+	public void update() {
+		Token token = getJsonModel(Token.class);
+		boolean code = service.update(token);
+		if (code) {
+			renderJson(MyRet.ok("update v3 lp successful.").setData(token));
+		} else {
+			renderJson(MyRet.fail("update v3 lp fail.").setData(token));
+		}
+	}
+
 	@EmptyInterface(keyArray = {"chainId", "hash"})
 	public void findByChainIdAndHash() {
 		Token token = getJsonModel(Token.class);

+ 2 - 0
src/main/java/modules/address/token/TokenService.java

@@ -20,6 +20,7 @@ public class TokenService {
 
 	public boolean append(Token token, Address address) {
 		boolean isAddressExist = addressService.isAddressExist(address);
+		token.setId(token.getChainId()+token.getHash());
 		return Db.tx(() -> {
 			if (!isAddressExist) addressService.append(address);
 			token.save();
@@ -29,6 +30,7 @@ public class TokenService {
 	}
 
 	public boolean update(Token token) {
+		token.setId(token.getChainId()+token.getHash());
 		return token.update();
 	}
 

+ 5 - 4
src/main/java/modules/chain/ChainController.java

@@ -19,10 +19,12 @@ public class ChainController extends MyController {
 	@EmptyInterface(keyArray = "id")
 	public void appendOrUpdate() {
 		Chain chain = getJsonModel(Chain.class);
-		int code = service.appendOrUpdate(chain);
-		if (code == SaveUtil.SAVE_CODE) {
+
+		if (!service.isChainExists(chain)) {
+			chain.save();
 			renderJson(MyRet.ok("Save chain successful.").setData(chain));
-		} else if (code == SaveUtil.UPDATE_CODE) {
+		} else {
+			chain.update();
 			renderJson(MyRet.ok("Update chain successful.").setData(chain));
 		}
 	}
@@ -33,7 +35,6 @@ public class ChainController extends MyController {
 		
 		if (!service.isChainExists(chain)) {
 			chain.save();
-
 			renderJson(MyRet.ok("Save chain successful.").setData(chain));
 		} else {
 			renderJson(MyRet.ok("Save chain fail, id exists.").setData(chain));

+ 5 - 1
src/main/java/modules/tx/TxService.java

@@ -39,10 +39,12 @@ public class TxService {
 	static String[] TRANSFER_CONDITION_KEYS = {"from", "to", "token"};
 	
 	public boolean append(Tx tx) {
+		tx.setId(tx.getChainId() + tx.getHash());
 		return tx.save();
 	}
 
 	public boolean update(Tx tx) {
+		tx.setId(tx.getChainId() + tx.getHash());
 		return tx.update();
 	}
 
@@ -72,11 +74,13 @@ public class TxService {
 		Db.tx(() -> {
 			SaveUtil.saveOrUpdate(tx);
 			code.set(SaveUtil.saveOrUpdate(subModel));
+			return true;
+		});
 
+		Db.tx(()->{
 			if (transferList!=null && code.get() == SaveUtil.SAVE_CODE && transferList.size() > 0) {
 				return transferService.saveTransferList(transferList, tx.getChainId(), tx.getHash());
 			}
-
 			return true;
 		});
 

+ 2 - 4
src/main/java/modules/tx/transfer/TransferFactory.java

@@ -23,8 +23,7 @@ public class TransferFactory {
 		for (JSONObject transfer : transferList.toJavaList(JSONObject.class)) {
 			PendingTransfer pendingTransfer = FastJson.getJson().parse(transfer.toJSONString(), PendingTransfer.class);
 			pendingTransfer.setId(chainId + hash+index);
-			pendingTransfer.setPendingId(chainId+hash);
-			
+			pendingTransfer.setMainId(chainId+hash);
 			pendingTransferList.add(pendingTransfer);
 			index ++;
 		}
@@ -42,8 +41,7 @@ public class TransferFactory {
 		for (JSONObject transfer : transferList.toJavaList(JSONObject.class)) {
 			HistoryTransfer historyTransfer = FastJson.getJson().parse(transfer.toJSONString(), HistoryTransfer.class);
 			historyTransfer.setId(chainId + hash+index);
-			historyTransfer.setHistoryId(chainId+hash);
-
+			historyTransfer.setMainId(chainId+hash);
 			historyTransferList.add(historyTransfer);
 			index ++;
 		}

+ 3 - 2
src/main/java/modules/tx/transfer/TransferService.java

@@ -25,13 +25,14 @@ public class TransferService {
 	public boolean saveTransferList(List<? extends Model<?>> transferList, Integer chainId, String hash) {
 		int totalSize = transferList.size();
 		// 没有修改方法,只有写入方法,先删除再写入
-		Db.template("transfer.deleteByHashAndChainId", TableUtil.getTableName(transferList.get(0)),chainId, hash).delete();
+		Db.template("transfer.deleteByMainId", TableUtil.getTableName(transferList.get(0)),chainId+hash).delete();
 
 		return Arrays.stream(Db.batchSave(transferList, totalSize)).sum() == totalSize;
 	}
 	
 	public List<Record> findTransferByChainIdAndHash(String table, int chainId, String hash) {
-		List<Record> transferList = Db.template("transfer.findByChainIdAndHash", table, chainId, hash).find();
+		String mainId = chainId + hash;
+		List<Record> transferList = Db.template("transfer.findByChainIdAndHash", table, mainId).find();
 		
 		for (Record transfer : transferList) {
 			putTokenInfo(transfer, chainId, transfer.getStr("token"));

+ 3 - 4
src/main/java/modules/tx/transfer/transfer.sqlt

@@ -2,14 +2,13 @@
 #sql("findByChainIdAndHash")
 select tsf.amountStr, tsf.from, tsf.to, tsf.token
 from #(_PARA_ARRAY_[0]) tsf
-where tsf.chainId=#para(1) and tsf.hash=#para(2)
+where tsf.mainId = #para(1)
 #end
 
-#sql("deleteByHashAndChainId")
+#sql("deleteByMainId")
 DELETE
 FROM
 	#(_PARA_ARRAY_[0])
 WHERE
-	chainId = #para(1)
-	AND `hash` = #para(2)
+	mainId = #para(1)
 #end

+ 1 - 1
src/test/http/address/AddressTest.http

@@ -58,7 +58,7 @@ POST {{ baseUrl }}/address/findByChainId
 Content-Type: application/json
 
 {
-  "chainId": 56,
+  "chainId": 1,
   "auth": {
     "auth": "9d8b7074bf189dcad17189c8f264c0cb",
     "timestamp": "123123"

+ 1 - 1
src/test/http/address/BalLpTest.http

@@ -3,7 +3,7 @@ POST {{ baseUrl }}/bal-lp/appendOrUpdate
 Content-Type: application/json
 
 {
-  "chainId": 1,
+  "chainId": 12,
   "hash": "0x8A9009847570FdbCc676c7fD547aB26A358a5005",
   "router": "0x8A9009847570FdbCc676c7fD547aB26A358a5005",
   "factory": "0x8A9009847570FdbCc676c7fD547aB26A358a5005",