first commit

This commit is contained in:
Ray
2026-02-19 03:37:37 +08:00
commit ccfd8c79a4
2813 changed files with 453657 additions and 0 deletions

13
api/.gitignore vendored Executable file
View File

@@ -0,0 +1,13 @@
/target/
/.settings/
/classes/
.classpath
.project
.DS_Store
*.iml
.idea
.settings
*.class
*.jar
*.properties

427
api/pom.xml Executable file
View File

@@ -0,0 +1,427 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>project</groupId>
<artifactId>api</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>api Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<!-- jdk配置 -->
<jdk.version>1.8</jdk.version>
<jdk.encoding>UTF-8</jdk.encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>bom</artifactId>
<version>2.17.230</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
</dependency>
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.18</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.18</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.18</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.3.18</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.15.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.3.18</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.7.Final</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.12</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.80</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.web3j</groupId>
<artifactId>core</artifactId>
<version>4.9.0</version>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.2</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>2.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>2.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>5.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.8</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.5.0-b01</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>5.3.18</version>
</dependency>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
<dependency>
<groupId>com.vdurmont</groupId>
<artifactId>emoji-java</artifactId>
<version>5.1.1</version>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.8.2</version>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.9.3</version>
</dependency>
</dependencies>
<build>
<finalName>api</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<!-- 指定source和target的版本 -->
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<!-- model、quzi、comm文件夹与admin同级${project.basedir}获取的是admin的根路径包含pom.xml的路径 -->
<source>${project.basedir}/../comm/mall/src</source>
<source>${project.basedir}/../comm/Invest/src</source>
<source>${project.basedir}/../comm/RechargeBlockchain/src</source>
<source>${project.basedir}/../comm/Cms/src</source>
<source>${project.basedir}/../comm/Contract/src</source>
<source>${project.basedir}/../comm/DB/src</source>
<source>${project.basedir}/../comm/DDOS/src</source>
<source>${project.basedir}/../comm/Email/src</source>
<source>${project.basedir}/../comm/Exchange/src</source>
<source>${project.basedir}/../comm/Futures/src</source>
<source>${project.basedir}/../comm/Finance/src</source>
<source>${project.basedir}/../comm/FollowUp/src</source>
<source>${project.basedir}/../comm/Hobi/src</source>
<source>${project.basedir}/../comm/Item/src</source>
<source>${project.basedir}/../comm/Kernel/src</source>
<source>${project.basedir}/../comm/Log/src</source>
<source>${project.basedir}/../comm/Miner/src</source>
<source>${project.basedir}/../comm/OnlineChat/src</source>
<source>${project.basedir}/../comm/Party/src</source>
<source>${project.basedir}/../comm/Redis/src</source>
<source>${project.basedir}/../comm/Security/src</source>
<source>${project.basedir}/../comm/Smsbao/src</source>
<source>${project.basedir}/../comm/Smsmoduyun/src</source>
<source>${project.basedir}/../comm/Syspara/src</source>
<source>${project.basedir}/../comm/Tip/src</source>
<source>${project.basedir}/../comm/User/src</source>
<source>${project.basedir}/../comm/Wallet/src</source>
<source>${project.basedir}/../comm/News/src</source>
<source>${project.basedir}/../comm/Withdraw/src</source>
<source>${project.basedir}/../dapp/src</source>
<source>${project.basedir}/../model/src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,94 @@
package project.web.api.controller;
import java.io.IOException;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import kernel.exception.BusinessException;
import kernel.web.BaseAction;
import kernel.web.ResultObject;
import project.user.kyc.Kyc;
import project.user.kyc.KycService;
import project.wallet.AssetService;
/**
* 资产
*/
@RestController
@CrossOrigin
public class AssetsController extends BaseAction {
private Logger logger = LogManager.getLogger(AssetsController.class);
@Autowired
private AssetService assetService;
@Autowired
private KycService kycService;
private final String action = "/api/assets!";
/**
* 总账户资产 所有币种订单资产转换到Usdt余额
*/
@RequestMapping(action + "getAll.action")
public Object getAll() throws IOException {
Map<String, Object> data = new HashMap<String, Object>();
ResultObject resultObject = new ResultObject();
resultObject = this.readSecurityContextFromSession(resultObject);
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
try {
DecimalFormat df2 = new DecimalFormat("#.##");
// 向下取整
df2.setRoundingMode(RoundingMode.FLOOR);
String partyId = this.getLoginPartyId();
if ("".equals(partyId) || null == partyId) {
data.put("total", df2.format(0));
data.put("money_wallet", df2.format(0));
data.put("money_coin", df2.format(0));
data.put("money_all_coin", df2.format(0));
data.put("money_miner", df2.format(0));
data.put("money_finance", df2.format(0));
data.put("money_contract", df2.format(0));
data.put("money_contract_deposit", df2.format(0));
data.put("money_contract_profit", df2.format(0));
data.put("money_futures", df2.format(0));
data.put("money_futures_profit", df2.format(0));
} else {
data = this.assetService.getMoneyAll(partyId);
}
Kyc kyc = this.kycService.get(partyId);
data.put("status", kyc.getStatus());
resultObject.setData(data);
} catch (BusinessException e) {
resultObject.setCode("1");
resultObject.setMsg(e.getMessage());
} catch (Throwable t) {
resultObject.setCode("1");
resultObject.setMsg("程序错误");
logger.error("error:", t);
}
return resultObject;
}
}

View File

@@ -0,0 +1,86 @@
package project.web.api.controller;
import kernel.util.JsonUtils;
import org.springframework.expression.EvaluationContext;
import org.springframework.expression.Expression;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.SimpleEvaluationContext;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import project.mall.seller.dto.MallLevelCondExpr;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
public class Demo {
public static void main(String[] args) {
String fromTime = "2023-07-22 00:00:00";
fromTime = fromTime.replace("-", "").replace(":", "").replace("000000", "").replace(" ", "");
System.out.println("----> fromTime:" + fromTime);
String json = "{\"params\":[{\"code\":\"rechargeAmount\",\"title\":\"运行资金\",\"value\":5000},{\"code\":\"popularizeUserCount\",\"title\":\"分店数\",\"value\":3}],\"expression\":\"popularizeUserCount >= 3 || rechargeAmount >= 5000\"}";
MallLevelCondExpr cndObj = JsonUtils.json2Object(json, MallLevelCondExpr.class);
System.out.println("======> cndObj.param1:" + JsonUtils.getJsonString(cndObj.getParams().get(0)));
String expressionString = "#popularizeUserCount >= 3 || #rechargeAmount >= 5000";
SpelExpressionParser parser = new SpelExpressionParser();
EvaluationContext context = new StandardEvaluationContext();
Expression expression = parser.parseExpression(expressionString);
context.setVariable("popularizeUserCount", 2);
context.setVariable("rechargeAmount", 5001);
context.setVariable("rechargeAmount222", 5001);
boolean isOk = expression.getValue(context, Boolean.class);
System.out.println("=====> isok:" + isOk);
BigDecimal d = new BigDecimal("2.223");
System.out.println("----> d:" + d);
int type = 3;
switch (type) {
case 1:
System.out.println("type meet 1");
case 2:
System.out.println("type meet 2");
case 3:
System.out.println("type meet 3");
case 4:
System.out.println("type meet 4");
default:
System.out.println("type meet defaullt");
}
finallyLoopCheck(0);
}
private static void finallyLoopCheck(int count) {
if (count >= 10) {
return;
}
try {
System.out.println("-------> 开始......");
throw new RuntimeException("手抛异常");
} catch (Exception e) {
// 在 finally 打印之前打印
System.out.println("-------> error....");
// 在 finally 打印之后出现
e.printStackTrace();
} finally {
System.out.println("-------> finally....");
System.out.println("");
System.out.println("======================================");
try {
Thread.sleep(1000L);
} catch (Exception e) {
}
finallyLoopCheck(count + 1);
}
}
}

View File

@@ -0,0 +1,107 @@
package project.web.api.controller;
import kernel.util.JsonUtils;
import kernel.web.BaseAction;
import kernel.web.ResultObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.providers.encoding.PasswordEncoder;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import project.mall.goods.SellerGoodsService;
import project.mall.goods.dto.SellerTopNDto;
import project.mall.seller.dto.MallLevelCondExpr;
import project.onlinechat.OnlineChatUserMessageService;
import project.wallet.WalletLogService;
import security.SaltSigureUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 不方便测试的服务可以在此处统一调试
*
*/
@RestController
@CrossOrigin
public class DemoController extends BaseAction {
private Logger logger = LogManager.getLogger(DemoController.class);
@Autowired
protected OnlineChatUserMessageService onlineChatUserMessageService;
@Autowired
protected WalletLogService walletLogService;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private SellerGoodsService sellerGoodsService;
private final String action = "api/demo!";
public static void main(String[] args) {
String json = "{\"params\":[{\"code\":\"rechargeAmount\",\"title\":\"运行资金\",\"value\":5000},{\"code\":\"popularizeUserCount\",\"title\":\"分店数\",\"value\":3}],\"expression\":\"popularizeUserCount >= 3 || rechargeAmount >= 5000\"}";
MallLevelCondExpr cndObj = JsonUtils.json2Object(json, MallLevelCondExpr.class);
System.out.println("======> cndObj.param1:" + JsonUtils.getJsonString(cndObj.getParams().get(0)));
}
@GetMapping(action + "demo1.show")
public Object listNotificationTemplate(HttpServletRequest request) {
String buyerId = request.getParameter("buyerId");
String sellerId = request.getParameter("sellerId");
String userId = request.getParameter("userId");
String account = request.getParameter("account");
String password = request.getParameter("password");
String password_encoder1 = passwordEncoder.encodePassword(password, account);
String password_encoder2 = passwordEncoder.encodePassword(password, SaltSigureUtils.saltfigure);
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
// OnlineChatUserMessage lastImInfo = onlineChatUserMessageService.lastImMessage(buyerId, sellerId, false, 0L);
// logger.info("-----> lastImInfo:" + lastImInfo);
// List<Map<String, Object>> data = this.walletLogService.pagedQueryRecharge(1, 10, userId, "1").getElements();
// for (Map<String, Object> log : data) {
// if (null == log.get("coin") || !StringUtils.isNotEmpty(log.get("coin").toString())) {
// log.put("coin", Constants.WALLET);
// } else {
// log.put("coin", log.get("coin").toString().toUpperCase());
// }
// String state = log.get("state").toString();
// Object reviewTime = log.get("reviewTime");
// log.put("reviewTime", reviewTime);
// }
// resultObject.setData(data);
Map<String, Object> mockData = new HashMap<>();
resultObject.setData(mockData);
mockData.put("safePass1", password_encoder1);
mockData.put("safePass2", password_encoder2);
return resultObject;
}
@GetMapping(action + "demo2.show")
public Object demo2(HttpServletRequest request) {
ResultObject resultObject = new ResultObject();
String startTime = "2023-01-01 00:00:00";
String endTime = "2023-08-01 00:00:00";
List<SellerTopNDto> top10SellerList = sellerGoodsService.cacheTopNSellers(startTime, endTime, 10);
return resultObject;
}
}

View File

@@ -0,0 +1,94 @@
package project.web.api.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import kernel.exception.BusinessException;
import kernel.web.ResultObject;
import project.item.ItemService;
import project.item.model.Item;
import project.web.api.service.LocalSysparaService;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 币种
*
*/
@RestController
@CrossOrigin
public class ItemController {
private Logger logger = LogManager.getLogger(ItemController.class);
@Autowired
private ItemService itemService;
@Autowired
private LocalSysparaService localSysparaService;
/**
* 热门币种
*/
@RequestMapping("api/item!list.action")
public Object list(HttpServletRequest request) {
ResultObject resultObject = new ResultObject();
List<Map<String, String>> data = new ArrayList<>();
try {
// String market = request.getParameter("market");
String symbol = request.getParameter("symbol");
List<Item> list = itemService.cacheGetByMarket(symbol);
// 按id排序
Collections.sort(list, new Comparator<Item>() {
@Override
public int compare(Item arg0, Item arg1) {
return arg0.getId().toString().compareTo(arg1.getId().toString());
}
});
Map<String, Object> topPara = localSysparaService.find("index_top_symbols");
String symbols = topPara.get("index_top_symbols").toString();
List<String> symbolList = Arrays.asList(symbols.split(","));
for (int i = 0; i < list.size(); i++) {
Item item = list.get(i);
String isTop = "0";
if (symbolList.contains(item.getSymbol())) {
isTop = "1";
}
Map<String, String> map = new HashMap<>();
map.put("symbol", item.getSymbol());
map.put("symbolFullName", item.getSymbolFullName());
map.put("isTop", isTop);
data.add(map);
}
} catch (BusinessException e) {
resultObject.setCode("1");
resultObject.setMsg(e.getMessage());
} catch (Exception e) {
resultObject.setCode("1");
resultObject.setMsg("程序错误");
logger.error("error:", e.fillInStackTrace());
}
resultObject.setData(data);
return resultObject;
}
}

View File

@@ -0,0 +1,525 @@
package project.web.api.controller;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import kernel.web.BaseAction;
import kernel.web.ResultObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import project.Constants;
import project.RedisKeys;
import project.blockchain.RechargeBlockchain;
import project.blockchain.RechargeBlockchainService;
import project.mall.area.MallAddressAreaService;
import project.mall.area.model.MallCity;
import project.mall.area.model.MallCountry;
import project.mall.area.model.MallState;
import project.mall.goods.AdminMallGoodsService;
import project.mall.goods.GoodsStatisticsService;
import project.mall.goods.SellerGoodsService;
import project.mall.goods.model.SellerGoods;
import project.mall.goods.model.SystemGoods;
import project.mall.orders.GoodsOrdersService;
import project.mall.orders.model.MallOrdersPrize;
import project.mall.utils.MallPageInfo;
import project.party.PartyService;
import project.party.UserMetricsService;
import project.party.model.Party;
import project.party.model.UserMetrics;
import project.redis.RedisHandler;
import project.syspara.SysParaCode;
import project.syspara.Syspara;
import project.syspara.SysparaService;
import project.wallet.WalletLog;
import project.wallet.WalletLogService;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
* 专用于手动迁移历史数据的服务接口。
* 为方便统一管理,涉及表结构变更,或业务逻辑变更,需要迁移历史数据时,可以将相关接口统一放置此处。
*
*/
@RestController
@CrossOrigin
@Slf4j
public class ManualTransferController extends BaseAction {
private final String action = "api/transfer/";
@Autowired
private RechargeBlockchainService rechargeBlockchainService;
@Autowired
private UserMetricsService userMetricsService;
@Autowired
private PartyService partyService;
@Autowired
private WalletLogService walletLogService;
@Autowired
private AdminMallGoodsService adminMallGoodsService;
@Autowired
private SellerGoodsService sellerGoodsService;
@Autowired
private RedisHandler redisHandler;
@Autowired
private GoodsStatisticsService goodsStatisticsService;
@Autowired
private SysparaService sysparaService;
@Autowired
private MallAddressAreaService mallAddressAreaService;
@Autowired
private GoodsOrdersService goodsOrdersService;
private Map<String, SystemGoods> systemGoodsMap = new HashMap<>();
/**
* walletLog 表新增字段usde_amount, 填充该字段值.
*
* @param request
* @return
*/
@GetMapping(action + "walletlog/fillamount")
public Object fillWalletLogAmount(HttpServletRequest request) {
String selectedPartyIds = request.getParameter("partyIds");
log.info("===========> ManualTransferController fillWalletLogAmount selectedPartyIds:{}", selectedPartyIds);
ResultObject resultObject = new ResultObject();
List<WalletLog> allWalletLogList = walletLogService.getAll();
for (WalletLog oneWalletLog : allWalletLogList) {
oneWalletLog.setUsdtAmount(oneWalletLog.getAmount());
if (StrUtil.isBlank(oneWalletLog.getOrder_no())) {
//
} else {
RechargeBlockchain rechargeEntity = rechargeBlockchainService.findByOrderNo(oneWalletLog.getOrder_no());
if (rechargeEntity != null) {
// USDT 单位
oneWalletLog.setUsdtAmount(rechargeEntity.getAmount());
}
}
walletLogService.update(oneWalletLog);
}
return resultObject;
}
/**
* 迁移用户充值累计金额指标
*
* @param request
* @return
*/
@GetMapping(action + "usermetrics/rechargeMoneyAcc")
public Object transferRechargeMoneyAcc(HttpServletRequest request) {
String selectedPartyIds = request.getParameter("partyIds");
log.info("===========> ManualTransferController transferRechargeMoneyAcc selectedPartyIds:{}", selectedPartyIds);
ResultObject resultObject = new ResultObject();
List<Party> allPartyList = null;
if (StrUtil.isBlank(selectedPartyIds)) {
allPartyList = partyService.getAll();
} else {
allPartyList = new ArrayList<>();
String[] partyIdArr = selectedPartyIds.split(",");
for (String onePartyId : partyIdArr) {
if (StrUtil.isBlank(onePartyId)) {
continue;
}
Party oneParty = new Party();
oneParty.setId(onePartyId.trim());
allPartyList.add(oneParty);
}
}
for (Party oneParty : allPartyList) {
String currentPartyId = oneParty.getId().toString();
// double rechargeAmount = rechargeBlockchainService.computeRechargeAmount(currentPartyId);
double rechargeAmount = walletLogService.getComputeRechargeAmount(currentPartyId);
if (rechargeAmount == 0.00) {
continue;
}
Date now = new Date();
UserMetrics userMetrics = userMetricsService.getByPartyId(currentPartyId);
if (userMetrics == null) {
userMetrics = new UserMetrics();
//userMetrics.setId();
userMetrics.setAccountBalance(0.0D);
userMetrics.setMoneyRechargeAcc(0.0D);
userMetrics.setMoneyWithdrawAcc(0.0D);
userMetrics.setPartyId(currentPartyId);
userMetrics.setStatus(1);
userMetrics.setTotleIncome(0.0D);
userMetrics.setCreateTime(now);
userMetrics.setUpdateTime(now);
userMetrics = userMetricsService.save(userMetrics);
}
userMetrics.setMoneyRechargeAcc(rechargeAmount);
userMetricsService.update(userMetrics);
}
return resultObject;
}
/**
* 将折扣商品的截止日期加载到 redis 缓存.
*
* @param request
* @return
*/
@GetMapping(action + "goods/cacheSellerGoodsDiscountInfo")
public Object cacheSellerGoodsDiscountInfo(HttpServletRequest request) {
String sellerGoodsIds = request.getParameter("sellerGoodsIds");
log.info("===========> ManualTransferController cacheSellerGoodsDiscountInfo, sellerGoodsIds:{}", sellerGoodsIds);
ResultObject resultObject = new ResultObject();
List<SellerGoods> allSellerGoodsList = null;
if (StrUtil.isBlank(sellerGoodsIds)) {
allSellerGoodsList = sellerGoodsService.listDiscountSellerGoods(1, Integer.MAX_VALUE);
} else {
String[] goodsIdArr = sellerGoodsIds.split(",");
List<String> goodsIdList = new ArrayList<>();
for (String oneId : goodsIdArr) {
if (StrUtil.isBlank(oneId)) {
continue;
}
goodsIdList.add(oneId.trim());
}
allSellerGoodsList = sellerGoodsService.getSellerGoodsBatch(goodsIdList);
}
Date now = new Date();
for (SellerGoods oneGoods : allSellerGoodsList) {
if (oneGoods == null || oneGoods.getIsValid() == 0 || oneGoods.getIsShelf() == 0) {
redisHandler.zrem(RedisKeys.SELLER_GOODS_DISCOUNT_ENDTIME, oneGoods.getId().toString());
continue;
}
String currentGoodsId = oneGoods.getId().toString();
if (oneGoods.getDiscountRatio() == null) {
oneGoods.setDiscountRatio(0.0);
}
if (oneGoods.getDiscountRatio() > 0.0 && oneGoods.getDiscountRatio() < 1.0) {
Date discountStartTime = oneGoods.getDiscountStartTime();
Date discountEndTime = oneGoods.getDiscountEndTime();
// 简单粗暴地处理方式:直接相对于上一次状态有变更
redisHandler.zincrby(RedisKeys.SELLER_GOODS_DISCOUNT_STATE_CHANGED, 1, currentGoodsId);
if (discountEndTime != null && discountEndTime.after(now)) {
// 折扣时间未结束,此处先不管是否已开始折扣
redisHandler.zadd(RedisKeys.SELLER_GOODS_DISCOUNT_ENDTIME, discountEndTime.getTime(), currentGoodsId);
} else {
// 折扣活动已过期
redisHandler.zrem(RedisKeys.SELLER_GOODS_DISCOUNT_ENDTIME, currentGoodsId);
}
} else {
// 无效折扣比例
redisHandler.zrem(RedisKeys.SELLER_GOODS_DISCOUNT_ENDTIME, currentGoodsId);
}
}
return resultObject;
}
@GetMapping(action + "goods/refreshShowWeight2")
public Object refreshShowWeight2(HttpServletRequest request) {
String sellerGoodsIds = request.getParameter("sellerGoodsIds");
log.info("===========> ManualTransferController refreshShowWeight2, sellerGoodsIds:{}", sellerGoodsIds);
ResultObject resultObject = new ResultObject();
if (StrUtil.isNotBlank(sellerGoodsIds)) {
String[] goodsIdArr = sellerGoodsIds.split(",");
List<String> goodsIdList = new ArrayList<>();
for (String oneId : goodsIdArr) {
if (StrUtil.isBlank(oneId)) {
continue;
}
goodsIdList.add(oneId.trim());
}
goodsStatisticsService.updateRefreshSellerGoodsShowWeight(goodsIdList);
return resultObject;
}
int pageNum = 1;
int pageSize = 50;
List<SellerGoods> allSellerGoodsList = null;
while (true) {
allSellerGoodsList = sellerGoodsService.pagedAllSellerGoods(pageNum, pageSize);
pageNum++;
if (CollectionUtil.isEmpty(allSellerGoodsList)) {
break;
}
List<String> sellerGoodsIdList = new ArrayList<>();
for (SellerGoods oneGoods : allSellerGoodsList) {
if (oneGoods == null || oneGoods.getIsValid() == 0 || oneGoods.getIsShelf() == 0) {
continue;
}
String currentGoodsId = oneGoods.getId().toString();
sellerGoodsIdList.add(currentGoodsId);
}
goodsStatisticsService.updateRefreshSellerGoodsShowWeight(sellerGoodsIdList);
}
return resultObject;
}
/**
* 将折扣商品的截止日期加载到 redis 缓存.
*
* @param request
* @return
*/
@GetMapping(action + "goods/cacheSellerGoodsFirstDiscountTime")
public Object cacheSellerGoodsFirstDiscountTime(HttpServletRequest request) {
String sellerGoodsIds = request.getParameter("sellerGoodsIds");
log.info("===========> ManualTransferController cacheSellerGoodsFirstDiscountTime, sellerGoodsIds:{}", sellerGoodsIds);
ResultObject resultObject = new ResultObject();
Date now = new Date();
List<SellerGoods> allSellerGoodsList = null;
if (StrUtil.isBlank(sellerGoodsIds)) {
int newSellerGoodsDayLimit = 7;
Syspara newSellerGoodsDayLimitParam = sysparaService.find(SysParaCode.NEW_SELLER_GOODS_DAY_LIMIT.getCode());
if (newSellerGoodsDayLimitParam != null) {
String value = newSellerGoodsDayLimitParam.getValue().trim();
newSellerGoodsDayLimit = Integer.parseInt(value);
}
long limitTime = now.getTime() - (long)newSellerGoodsDayLimit * 24L * 3600L * 1000L;
allSellerGoodsList = sellerGoodsService.pagedNewSellerGoods(limitTime,1, Integer.MAX_VALUE);
} else {
String[] goodsIdArr = sellerGoodsIds.split(",");
List<String> goodsIdList = new ArrayList<>();
for (String oneId : goodsIdArr) {
if (StrUtil.isBlank(oneId)) {
continue;
}
goodsIdList.add(oneId.trim());
}
allSellerGoodsList = sellerGoodsService.getSellerGoodsBatch(goodsIdList);
}
for (SellerGoods oneGoods : allSellerGoodsList) {
String currentGoodsId = oneGoods.getId().toString();
redisHandler.zadd(RedisKeys.SELLER_GOODS_FIRST_SHELF_TIME, oneGoods.getFirstShelfTime(), currentGoodsId);
}
return resultObject;
}
@GetMapping(action + "goods/refreshCategory")
public Object refreshCategory(HttpServletRequest request) {
String systemGoodsIds = request.getParameter("systemGoodsIds");
String action = request.getParameter("action");
log.info("===========> ManualTransferController refreshCategory, systemGoodsIds:{}", systemGoodsIds);
ResultObject resultObject = new ResultObject();
if (StrUtil.isBlank(action)) {
action = "";
}
if (action.equalsIgnoreCase("clearCache")) {
this.systemGoodsMap.clear();
return resultObject;
}
List<SellerGoods> allSellerGoodsList = null;
if (StrUtil.isBlank(systemGoodsIds)) {
allSellerGoodsList = sellerGoodsService.pagedAllSellerGoods(1, Integer.MAX_VALUE);
} else {
String[] goodsIdArr = systemGoodsIds.split(",");
List<String> goodsIdList = new ArrayList<>();
for (String oneId : goodsIdArr) {
if (StrUtil.isBlank(oneId)) {
continue;
}
goodsIdList.add(oneId.trim());
}
allSellerGoodsList = sellerGoodsService.listBySystemGoodsIds(goodsIdList);
}
log.info("========> ManualTransferController refreshCategory 需要更新的商品记录数量为:{}", allSellerGoodsList.size());
for (SellerGoods oneGoods : allSellerGoodsList) {
String systemGoodsId = oneGoods.getGoodsId();
SystemGoods systemGoods = systemGoodsMap.get(systemGoodsId);
if (systemGoods == null) {
systemGoods = adminMallGoodsService.findById(systemGoodsId);
if (systemGoods == null) {
systemGoods = new SystemGoods();
}
systemGoodsMap.put(systemGoodsId, systemGoods);
}
if (systemGoods.getId() == null) {
log.error("========> ManualTransferController refreshCategory 当前店铺商品:{} 没有对应的平台商品记录", oneGoods.getId());
continue;
}
String categoryId = systemGoods.getCategoryId();
String secondaryCategoryId = systemGoods.getSecondaryCategoryId();
if (Objects.equals(oneGoods.getCategoryId(), categoryId)
&& Objects.equals(oneGoods.getSecondaryCategoryId(), secondaryCategoryId)) {
// 无需调整
continue;
}
oneGoods.setCategoryId(categoryId);
oneGoods.setSecondaryCategoryId(secondaryCategoryId);
sellerGoodsService.updateSellerGoods(oneGoods);
// 无需刷新店铺商品相关的缓存
}
return resultObject;
}
@GetMapping("/api/demo/listCountry")
public Object listCountry(HttpServletRequest request) {
ResultObject resultObject = new ResultObject();
List<MallCountry> allCountry = mallAddressAreaService.listAllCountry();
resultObject.setData(allCountry);
return resultObject;
}
@GetMapping("/api/demo/listState")
public Object listState(HttpServletRequest request) {
ResultObject resultObject = new ResultObject();
String countryId = request.getParameter("countryId");
List<MallState> stateList = mallAddressAreaService.listAllState(Long.parseLong(countryId));
resultObject.setData(stateList);
return resultObject;
}
@GetMapping("/api/demo/listCity")
public Object listCity(HttpServletRequest request) {
ResultObject resultObject = new ResultObject();
String stateId = request.getParameter("stateId");
List<MallCity> cityList = mallAddressAreaService.listAllCity(Long.parseLong(stateId));
resultObject.setData(cityList);
return resultObject;
}
@GetMapping(action + "order/fillFlag")
public Object fillOrderFlag(HttpServletRequest request) {
String orderIds = request.getParameter("orderIds");
log.info("===========> ManualTransferController fillOrderFlag, orderIds:{}", orderIds);
ResultObject resultObject = new ResultObject();
if (StrUtil.isBlank(orderIds)) {
int offset = 0;
int pageSize = 50;
int count = 0;
MallPageInfo pageInfo = goodsOrdersService.pagedListNoneFlagOrder(offset, pageSize);
int max = pageInfo.getTotalElements();
log.info("========> ManualTransferController fillOrderFlag 需要更新的商品记录数量为:{}", max);
while (count < max) {
List<MallOrdersPrize> pageList = pageInfo.getElements();
count += pageList.size();
goodsOrdersService.updateOrderFlag(pageList);
//refreshOrderFlag(pageList);
try {
Thread.sleep(50L);
} catch (Exception e) {
}
// 更新状态后,关系到查询条件的字段值发生了变更,需要重新从 0 开始查询
pageInfo = goodsOrdersService.pagedListNoneFlagOrder(offset, pageSize);
log.info("========> ManualTransferController fillOrderFlag 分页需要更新的商品记录数量为:{}, 剩余总量为:{}", pageInfo.getElements().size(), pageInfo.getTotalElements());
}
} else {
String[] orderIdArr = orderIds.split(",");
List<String> orderIdList = new ArrayList<>();
for (String oneId : orderIdArr) {
if (StrUtil.isBlank(oneId)) {
continue;
}
orderIdList.add(oneId.trim());
}
List<MallOrdersPrize> orderEntityList = goodsOrdersService.ListBatchOrder(orderIdList);
log.info("========> ManualTransferController fillOrderFlag 需要更新的商品记录数量为:{}", orderEntityList.size());
goodsOrdersService.updateOrderFlag(orderEntityList);
// refreshOrderFlag(orderEntityList);
}
return resultObject;
}
private void refreshOrderFlag(List<MallOrdersPrize> orderEntityList) {
for (MallOrdersPrize oneOrderEntity : orderEntityList) {
Party sellerParty = partyService.cachePartyBy(oneOrderEntity.getSellerId(), false);
Party buyerParty = partyService.cachePartyBy(oneOrderEntity.getPartyId(), false);
// 订单特殊标记1-买家是演示账号2-卖家是演示账号3-买家和卖家都是演示账号
oneOrderEntity.setFlag(0);
// 左侧为高位,右侧为低位
// 买家用户账号类型标记
int buyerFlag = 0B00;
// 卖家用户账号类型标记
int sellerFlag = 0B00;
if (sellerParty != null && sellerParty.getRolename().contains(Constants.SECURITY_ROLE_GUEST)) {
// 卖家是演示账号
sellerFlag = 0B10;
}
if (buyerParty != null && buyerParty.getRolename().contains(Constants.SECURITY_ROLE_GUEST)) {
// 买家是演示账号
buyerFlag = 0B01;
}
oneOrderEntity.setFlag(buyerFlag | sellerFlag);
goodsOrdersService.updateOrder(oneOrderEntity);
}
}
}

View File

@@ -0,0 +1,640 @@
package project.web.api.controller;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import kernel.web.BaseAction;
import kernel.web.Page;
import kernel.web.ResultObject;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import project.mall.notification.NotificationService;
import project.mall.notification.NotificationTemplateService;
import project.mall.notification.dto.NotificationDto;
import project.mall.notification.model.Notification;
import project.mall.notification.model.NotificationTemplate;
import project.mall.notification.utils.notify.client.CommonNotifyService;
import project.mall.notification.utils.notify.request.DefaultEmailNotifyRequest;
import project.mall.notification.utils.notify.request.DefaultNotifyRequest;
import project.mall.notification.utils.notify.request.DefaultSmsNotifyRequest;
import project.mall.seller.SellerService;
import project.party.PartyService;
import project.party.model.Party;
import project.party.recom.UserRecomService;
import project.syspara.SysparaService;
import project.user.UserDataService;
import util.DateUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
* 消息通知服务
*
*/
@RestController
@CrossOrigin
public class NotificationController extends BaseAction {
private Logger logger = LoggerFactory.getLogger(NotificationController.class);
@Autowired
protected UserRecomService userRecomService;
@Autowired
protected UserDataService userDataService;
@Autowired
protected PartyService partyService;
@Autowired
protected SysparaService sysparaService;
@Autowired
protected SellerService sellerService;
@Autowired
protected NotificationTemplateService notificationTemplateService;
@Autowired
protected NotificationService notificationService;
@Autowired
protected CommonNotifyService commonNotifyService;
private final String action = "api/notification!";
@GetMapping(action + "template.list")
public Object listNotificationTemplate(HttpServletRequest request) {
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String typeStr = request.getParameter("type");
String statusStr = request.getParameter("status");
String moduleStr = request.getParameter("module");
String language = request.getParameter("language");
int type = Integer.parseInt(typeStr);
int module = 0;
int status = 0;
if (moduleStr != null && !moduleStr.trim().isEmpty()) {
module = Integer.parseInt(moduleStr);
}
if (statusStr != null && !statusStr.trim().isEmpty()) {
status = Integer.parseInt(statusStr);
}
List<NotificationTemplate> templateEntityList = notificationTemplateService.listNotificationTemplate(type, module, language, status);
if (templateEntityList != null && templateEntityList.size() > 0) {
for (NotificationTemplate oneTemplate : templateEntityList) {
// 触发一下加载 varPlaceholders 值
oneTemplate.getVarPlaceholders();
}
}
resultObject.setData(templateEntityList);
return resultObject;
}
@PostMapping(action + "template.add")
public Object addNotificationTemplate(HttpServletRequest request) {
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String id = request.getParameter("id");
String title = request.getParameter("title");
String content = request.getParameter("content");
String typeStr = request.getParameter("type");
String bizType = request.getParameter("bizType");
String templateCode = request.getParameter("templateCode");
String statusStr = request.getParameter("status");
String moduleStr = request.getParameter("module");
String language = request.getParameter("language");
NotificationTemplate baseData = new NotificationTemplate();
baseData.setBizType(bizType);
baseData.setContent(content);
baseData.setLanguage(language);
int type = Integer.parseInt(typeStr);
baseData.setType(type);
if (type == 3) {
baseData.setPlatform("inbox");
}
int status = Integer.parseInt(statusStr.trim());
baseData.setStatus(status);
baseData.setId(id);
baseData.setTitle(title);
baseData.setTemplateCode(templateCode);
int module = Integer.parseInt(moduleStr.trim());
baseData.setModule(module);
baseData.setHandler("default");
NotificationTemplate templateEntity = commonNotifyService.saveNotifyTemplate(baseData);
resultObject.setData(templateEntity);
return resultObject;
}
@PostMapping(action + "template.update")
public Object updateNotificationTemplate(HttpServletRequest request) {
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String id = request.getParameter("id");
String title = request.getParameter("title");
String content = request.getParameter("content");
String bizType = request.getParameter("bizType");
String templateCode = request.getParameter("templateCode");
String statusStr = request.getParameter("status");
String moduleStr = request.getParameter("module");
String language = request.getParameter("language");
NotificationTemplate existEntity = notificationTemplateService.getById(id);
if (existEntity == null) {
resultObject.setCode("1");
resultObject.setMsg("消息模板:" + id + " 记录不存在");
return resultObject;
}
existEntity.setBizType(bizType);
existEntity.setContent(content);
existEntity.setLanguage(language);
int status = Integer.parseInt(statusStr.trim());
existEntity.setStatus(status);
existEntity.setTitle(title);
existEntity.setTemplateCode(templateCode);
int module = Integer.parseInt(moduleStr.trim());
existEntity.setModule(module);
existEntity.setHandler("default");
NotificationTemplate templateEntity = commonNotifyService.saveNotifyTemplate(existEntity);
resultObject.setData(templateEntity);
return resultObject;
}
@GetMapping(action + "template.detail")
public Object getTemplateDetail(HttpServletRequest request) {
// ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
// if (!"0".equals(resultObject.getCode())) {
// return resultObject;
// }
// String partyId = this.getLoginPartyId();
// Seller pl = sellerService.getSeller(partyId);
ResultObject resultObject = new ResultObject();
String id = request.getParameter("id");
NotificationTemplate existEntity = notificationTemplateService.getById(id);
if (existEntity == null) {
resultObject.setCode("1");
resultObject.setMsg("消息模板:" + id + " 记录不存在");
return resultObject;
}
// 将数据库中的占位符 json 值,构建 list 对象
existEntity.getVarPlaceholders();
resultObject.setData(existEntity);
return resultObject;
}
@PostMapping(action + "inbox.send")
public Object sendInboxNotify(HttpServletRequest request) {
String bizType = request.getParameter("bizType");
String targetUserIds = request.getParameter("targetUserIds");
String targetTopic = request.getParameter("targetTopic");
String language = request.getParameter("language");
language = "en_US";// TODO
String varInfo = request.getParameter("varInfo");
String customeTitle = request.getParameter("customeTitle");
String customeMessage = request.getParameter("customeMessage");
DefaultNotifyRequest notifyRequest = new DefaultNotifyRequest();
notifyRequest.setBizType(bizType);
notifyRequest.setFromUserId("0");
notifyRequest.setLanguageType(language);
notifyRequest.setTargetTopic("0");
notifyRequest.setCustomeTitle(customeTitle);
notifyRequest.setCustomeMessage(customeMessage);
if (targetTopic == null || targetTopic.trim().isEmpty()) {
notifyRequest.setTargetTopic("0");
} else {
notifyRequest.setTargetTopic(targetTopic.trim());
}
logger.info("---> sendInboxNotify 方法收到的消息变量信息为:{}", varInfo);
Map<String, Object> varMap = null;
if (varInfo != null && !varInfo.trim().isEmpty()) {
varMap = JSON.parseObject(varInfo, Map.class);
}
if (varMap != null && varMap.size() > 0) {
Set<Map.Entry<String, Object>> entrySets = varMap.entrySet();
for (Map.Entry<String, Object> oneEntry : entrySets) {
notifyRequest.setValue(oneEntry.getKey(), oneEntry.getValue());
}
}
if (targetUserIds == null || targetUserIds.trim().isEmpty()) {
notifyRequest.setTargetUserId("0");
// 广播消息
commonNotifyService.sendNotify(notifyRequest);
} else {
String[] multiUserIdArr = targetUserIds.split(",");
for (String targetUserId : multiUserIdArr) {
if (targetUserId.trim().isEmpty()) {
continue;
}
notifyRequest.setTargetUserId(targetUserId.trim());
// 针对具体用户的消息
commonNotifyService.sendNotify(notifyRequest);
}
}
ResultObject resultObject = new ResultObject();
return resultObject;
}
@PostMapping(action + "email.send")
public Object sendEmailNotify(HttpServletRequest request) {
String bizType = request.getParameter("bizType");
String targetUserIds = request.getParameter("targetUserIds");
String targetTopic = request.getParameter("targetTopic");
String language = request.getParameter("language");
language = "en_US";// TODO
String varInfo = request.getParameter("varInfo");
String customeTitle = request.getParameter("customeTitle");
String customeMessage = request.getParameter("customeMessage");
DefaultEmailNotifyRequest notifyRequest = new DefaultEmailNotifyRequest();
notifyRequest.setBizType(bizType);
notifyRequest.setFromUserId("0");
notifyRequest.setLanguageType(language);
notifyRequest.setTargetTopic("0");
notifyRequest.setCustomeTitle(customeTitle);
notifyRequest.setCustomeMessage(customeMessage);
if (targetTopic == null || targetTopic.trim().isEmpty()) {
notifyRequest.setTargetTopic("0");
} else {
notifyRequest.setTargetTopic(targetTopic.trim());
}
logger.info("---> sendInboxNotify 方法收到的消息变量信息为:{}", varInfo);
Map<String, Object> varMap = null;
if (varInfo != null && !varInfo.trim().isEmpty()) {
varMap = JSON.parseObject(varInfo, Map.class);
}
if (varMap != null && varMap.size() > 0) {
Set<Map.Entry<String, Object>> entrySets = varMap.entrySet();
for (Map.Entry<String, Object> oneEntry : entrySets) {
notifyRequest.setValue(oneEntry.getKey(), oneEntry.getValue());
}
}
if (targetUserIds == null || targetUserIds.trim().isEmpty()) {
notifyRequest.setTargetUserId("0");
// 广播消息
//commonNotifyService.sendNotify(notifyRequest);
throw new RuntimeException("暂不支持群发邮件!");
} else {
String[] multiUserIdArr = targetUserIds.split(",");
for (String targetUserId : multiUserIdArr) {
if (targetUserId.trim().isEmpty()) {
continue;
}
notifyRequest.setTargetUserId(targetUserId.trim());
Party partyEntity = partyService.cachePartyBy(targetUserId.trim(), true);
if (partyEntity == null) {
logger.error("---> sendEmailNotify 目标用户:" + targetUserId + " 对应的数据记录不存在,无法发送邮件提醒");
continue;
}
if (StringUtils.isBlank(partyEntity.getEmail())) {
logger.error("---> sendEmailNotify 目标用户:" + targetUserId + " 对应的邮件不存在,无法发送邮件提醒");
continue;
}
notifyRequest.setTargetEmail(partyEntity.getEmail());
// 针对具体用户的消息
commonNotifyService.sendNotify(notifyRequest);
}
}
ResultObject resultObject = new ResultObject();
return resultObject;
}
@PostMapping(action + "sms.send")
public Object sendSmsNotify(HttpServletRequest request) {
String bizType = request.getParameter("bizType");
String targetUserIds = request.getParameter("targetUserIds");
String targetTopic = request.getParameter("targetTopic");
String language = request.getParameter("language");
language = "en_US";// TODO
String varInfo = request.getParameter("varInfo");
String customeTitle = request.getParameter("customeTitle");
String customeMessage = request.getParameter("customeMessage");
DefaultSmsNotifyRequest notifyRequest = new DefaultSmsNotifyRequest();
notifyRequest.setBizType(bizType);
notifyRequest.setFromUserId("0");
notifyRequest.setLanguageType(language);
notifyRequest.setTargetTopic("0");
notifyRequest.setCustomeTitle(customeTitle);
notifyRequest.setCustomeMessage(customeMessage);
if (targetTopic == null || targetTopic.trim().isEmpty()) {
notifyRequest.setTargetTopic("0");
} else {
notifyRequest.setTargetTopic(targetTopic.trim());
}
logger.info("---> sendInboxNotify 方法收到的消息变量信息为:{}", varInfo);
Map<String, Object> varMap = null;
if (varInfo != null && !varInfo.trim().isEmpty()) {
varMap = JSON.parseObject(varInfo, Map.class);
}
if (varMap != null && varMap.size() > 0) {
Set<Map.Entry<String, Object>> entrySets = varMap.entrySet();
for (Map.Entry<String, Object> oneEntry : entrySets) {
notifyRequest.setValue(oneEntry.getKey(), oneEntry.getValue());
}
}
if (targetUserIds == null || targetUserIds.trim().isEmpty()) {
notifyRequest.setTargetUserId("0");
// 广播消息
//commonNotifyService.sendNotify(notifyRequest);
throw new RuntimeException("暂不支持群发短信!");
} else {
String[] multiUserIdArr = targetUserIds.split(",");
for (String targetUserId : multiUserIdArr) {
if (targetUserId.trim().isEmpty()) {
continue;
}
notifyRequest.setTargetUserId(targetUserId.trim());
Party partyEntity = partyService.cachePartyBy(targetUserId.trim(), true);
if (partyEntity == null) {
logger.error("---> sendSmsNotify 目标用户:" + targetUserId + " 对应的数据记录不存在,无法发送短信提醒");
continue;
}
if (StringUtils.isBlank(partyEntity.getPhone())) {
logger.error("---> sendSmsNotify 目标用户:" + targetUserId + " 对应的手机号码不存在,无法发送短信提醒");
continue;
}
// TODO
String mobileInfo = partyEntity.getPhone().trim();
notifyRequest.setMobileInfo(mobileInfo);
// 针对具体用户的消息
commonNotifyService.sendNotify(notifyRequest);
}
}
ResultObject resultObject = new ResultObject();
return resultObject;
}
/**
* 站内信分页查询
*
* @param request
* @return
*/
@GetMapping(action + "message.pagelist")
public Object pageListInboxNotify(HttpServletRequest request) {
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
// Seller pl = sellerService.getSeller(partyId);
String typeStr = request.getParameter("type");
String statusStr = request.getParameter("status");
String pageNumStr = request.getParameter("pageNum");
String pageSizeStr = request.getParameter("pageSize");
String moduleStr = request.getParameter("module");
String language = request.getParameter("language");
language = "en_US";// TODO
int type = 3;
int module = 0;
int status = 0;
int pageNum = -1;
int pageSize = 20;
try {
type = Integer.parseInt(typeStr);
if (moduleStr != null && !moduleStr.trim().isEmpty()) {
module = Integer.parseInt(moduleStr);
}
if (statusStr != null && !statusStr.trim().isEmpty()) {
status = Integer.parseInt(statusStr);
}
if (pageNumStr != null && !pageNumStr.trim().isEmpty()) {
pageNum = Integer.parseInt(pageNumStr);
}
if (pageSizeStr != null && !pageSizeStr.trim().isEmpty()) {
pageSize = Integer.parseInt(pageSizeStr);
}
} catch (Exception e) {
resultObject.setCode("1");
resultObject.setMsg("参数格式错误!");
return resultObject;
}
Page pageInfo = notificationService.pagedListUserNotification(pageNum, pageSize, partyId, type, module, null, language, status);
Page retData = new Page(pageInfo.getThisPageNumber(), pageInfo.getPageSize(), pageInfo.getTotalElements());
List recordList = pageInfo.getElements();
if (CollectionUtils.isNotEmpty(recordList)) {
List<NotificationDto> pageList = new ArrayList();
for (Object oneObj : recordList) {
Notification oneEntity = (Notification)oneObj;
NotificationDto dto = new NotificationDto();
pageList.add(dto);
BeanUtil.copyProperties(oneEntity, dto);
dto.setId(oneEntity.getId().toString());
dto.setSendTime(DateUtils.formatOfDateTime(oneEntity.getSendTime()));
dto.setReserveSendTime(DateUtils.formatOfDateTime(oneEntity.getReserveSendTime()));
}
retData.setElements(pageList);
}
resultObject.setData(retData);
return resultObject;
}
@GetMapping(action + "message.slidelist")
public Object slideListInboxNotify(HttpServletRequest request) {
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
String typeStr = request.getParameter("type");
String statusStr = request.getParameter("status");
String lastLocationStr = request.getParameter("lastLocation");
String pageSizeStr = request.getParameter("pageSize");
String moduleStr = request.getParameter("module");
String language = request.getParameter("language");
language = "en_US";// TODO
int type = 3;
int module = 0;
int status = 0;
int pageSize = 20;
long lastLocation = 0L;
try {
type = Integer.parseInt(typeStr);
if (moduleStr != null && !moduleStr.trim().isEmpty()) {
module = Integer.parseInt(moduleStr);
}
if (statusStr != null && !statusStr.trim().isEmpty()) {
status = Integer.parseInt(statusStr);
}
if (pageSizeStr != null && !pageSizeStr.trim().isEmpty()) {
pageSize = Integer.parseInt(pageSizeStr);
}
if (lastLocationStr != null && !lastLocationStr.trim().isEmpty()) {
lastLocation = Long.parseLong(lastLocationStr);
}
} catch (Exception e) {
resultObject.setCode("1");
resultObject.setMsg("参数格式错误!");
return resultObject;
}
List<Notification> list = notificationService.getSlideListUserNotification(lastLocation, pageSize, partyId, type, module, null, language, status);
if (CollectionUtils.isNotEmpty(list)) {
List<NotificationDto> pageList = new ArrayList();
for (Object oneObj : list) {
Notification oneEntity = (Notification)oneObj;
NotificationDto dto = new NotificationDto();
pageList.add(dto);
BeanUtil.copyProperties(oneEntity, dto);
dto.setId(oneEntity.getId().toString());
dto.setSendTime(DateUtils.formatOfDateTime(oneEntity.getSendTime()));
dto.setReserveSendTime(DateUtils.formatOfDateTime(oneEntity.getReserveSendTime()));
}
resultObject.setData(pageList);
}
return resultObject;
}
@PostMapping(action + "message.read")
public Object readNotify(HttpServletRequest request) {
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
String ids = request.getParameter("ids");
logger.info("---> NotificationController readNotify ids: {} ", ids);
if (StringUtils.isBlank(ids)) {
return resultObject;
}
try {
Set<String> idList = new HashSet<>();
String[] idArr = ids.split(",");
for (String oneId : idArr) {
if (StringUtils.isBlank(oneId)) {
continue;
}
idList.add(oneId.trim());
}
notificationService.updateBatchRead(idList, partyId);
return resultObject;
} catch (Exception e) {
logger.error("---> NotificationController readNotify 报错: ", e);
resultObject.setMsg("fail");
resultObject.setCode("1");
return resultObject;
}
}
@GetMapping(action + "count.unread")
public Object getUnReadCount(HttpServletRequest request) {
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
String typeStr = request.getParameter("type");
String moduleStr = request.getParameter("module");
String language = request.getParameter("language");
language = "en_US";// TODO
int type = Integer.parseInt(typeStr);
int module = 0;
if (moduleStr != null && !moduleStr.trim().isEmpty()) {
module = Integer.parseInt(moduleStr);
}
int count = notificationService.getUnReadCount(partyId, type, module, null, language);
Map<String, Integer> data = new HashMap();
data.put("count", count);
resultObject.setData(data);
return resultObject;
}
@GetMapping(action + "message.detail")
public Object getNotifyDetail(HttpServletRequest request) {
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = this.getLoginPartyId();
String id = request.getParameter("id");
Notification existEntity = notificationService.getById(id);
existEntity.getVarPlaceholders();
resultObject.setData(existEntity);
return resultObject;
}
/**
* 如果修改了消息模板的关键部分,忘了重新加载相关工具的缓存,可以执行该方法进行刷新
*
* @param request
* @return
*/
@GetMapping(action + "tool.refresh")
public Object refreshNotifyTool(HttpServletRequest request) {
ResultObject resultObject = readSecurityContextFromSession(new ResultObject());
// if (!"0".equals(resultObject.getCode())) {
// return resultObject;
// }
// String partyId = this.getLoginPartyId();
// Seller pl = sellerService.getSeller(partyId);
commonNotifyService.reloadSmsTemplate();
return resultObject;
}
}

View File

@@ -0,0 +1,223 @@
package project.web.api.controller;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import kernel.exception.BusinessException;
import kernel.util.DateUtils;
import kernel.util.StringUtils;
import kernel.web.BaseAction;
import kernel.web.ResultObject;
import project.monitor.pledgegalaxy.PledgeGalaxyConfigService;
import project.party.PartyService;
import project.party.recom.UserRecomService;
import project.syspara.Syspara;
import project.syspara.SysparaService;
import project.user.ChildrenLever;
import project.user.UserData;
import project.user.UserDataService;
import util.DateUtil;
/**
* 我的推广
*
*/
//@RestController
//@CrossOrigin
public class PromoteController extends BaseAction {
private Logger logger = LogManager.getLogger(PromoteController.class);
@Autowired
protected UserRecomService userRecomService;
@Autowired
protected UserDataService userDataService;
@Autowired
protected PartyService partyService;
@Autowired
protected SysparaService sysparaService;
@Autowired
protected PledgeGalaxyConfigService pledgeGalaxyConfigService;
private final String action = "api/promote!";
@RequestMapping(action + "getPromote.action")
public Object getPromote(HttpServletRequest request) {
ResultObject resultObject = new ResultObject();
resultObject = readSecurityContextFromSession(resultObject);
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
// 层级 1为第一级 1,2,3,4总共4级代理
String level_temp = request.getParameter("level");
if (StringUtils.isNullOrEmpty(level_temp)
|| !StringUtils.isInteger(level_temp) || Integer.valueOf(level_temp) <= 0) {
throw new BusinessException("代理层级错误");
}
int level = Integer.valueOf(level_temp);
String page_no = request.getParameter("page_no");
if (StringUtils.isNullOrEmpty(page_no)
|| !StringUtils.isInteger(page_no) || Integer.valueOf(page_no) <= 0) {
page_no = "1";
}
int pageNo = Integer.valueOf(page_no);
String partyId = getLoginPartyId();
try {
Map<String, Object> data = new HashMap<String, Object>();
Map<String, Object> data_total = new HashMap<String, Object>();
List<Map<String, Object>> dataChilds = new ArrayList<Map<String, Object>>();
ChildrenLever childrenLever = userDataService.getCacheChildrenLever4(partyId);
data.put("children", childrenLever.getLever1().size() + childrenLever.getLever2().size()
+ childrenLever.getLever3().size() + childrenLever.getLever4().size());
data.put("level_1", childrenLever.getLever1().size());
data.put("level_2", childrenLever.getLever2().size());
data.put("level_3", childrenLever.getLever3().size());
data.put("level_4", childrenLever.getLever4().size());
data_total.put("total", data);
// 资金盘 定制化需求,后面盘口下架可以删
Syspara pledgeGalaxyOpen = sysparaService.find("pledge_galaxy_open");
if (null != pledgeGalaxyOpen && pledgeGalaxyOpen.getValue().equals("true")) {
dataChilds = this.userDataService.getChildrenLevelPaged(pageNo, 10, partyId, level);
Map<String, UserData> map = userDataService.cacheByPartyId(partyId);
double sum = 0;
if (null != map && map.size() > 0) {
for (UserData userData : map.values()) {
sum += userData.getGalaxy_income();
}
}
// 总绩效
data_total.put("profit_sum", sum);
}
Syspara projectType = sysparaService.find("project_type");
if (null == projectType || projectType.getValue().equals("EXCHANGE")) {
dataChilds = this.userDataService.getChildrenLevelPaged(pageNo, 10, partyId, level);
}
if (null != projectType && projectType.getValue().equals("DAPP_EXCHANGE_IOEAI")) {
int ioeAiLevel = pledgeGalaxyConfigService.getIoeAiLevel(partyId);
// -1 0 青铜级 1 白银级 2 黄金级 3 铂金级 4 钻石级
data_total.put("ioeAiLevel", ioeAiLevel);
}
// 加密用户名
handleChilds(dataChilds);
data_total.put("list", dataChilds);
resultObject.setData(data_total);
} catch (BusinessException e) {
resultObject.setCode("402");
resultObject.setMsg(e.getMessage());
} catch (Throwable e) {
resultObject.setCode("500");
resultObject.setMsg("程序错误");
logger.error("error:", e);
}
return resultObject;
}
/**
* 交易所-数据总览
*/
@RequestMapping(action + "getPromoteData.action")
public Object getPromoteData(HttpServletRequest request) {
ResultObject resultObject = new ResultObject();
resultObject = readSecurityContextFromSession(resultObject);
if (!"0".equals(resultObject.getCode())) {
return resultObject;
}
String partyId = getLoginPartyId();
Map<String, String> dataMap = new HashMap<>();
try {
Date date = new Date();
Date startTime = null;
Date endTime = null;
String type = request.getParameter("type");
if (type.equals("day")) {
startTime = DateUtils.getDayStart(DateUtils.addDate(date, 1));
endTime = DateUtils.getDayEnd(DateUtils.addDate(date, 1));
} else if (type.equals("week")) {
startTime = DateUtil.getFirstDateOfWeek(date);
endTime = DateUtil.getLastDateOfWeek(date);
} else if (type.equals("month")) {
startTime = DateUtil.getFirstDateOfMonth(date);
endTime = DateUtil.getLastDateOfMonth(date);
}
System.out.println("推广数据总览 开始时间" + startTime);
System.out.println("推广数据总览 结束时间" + endTime);
dataMap = userDataService.getPromoteData(partyId, dataMap, startTime, endTime);
Map<String, UserData> map = userDataService.cacheByPartyId(partyId);
double sum = 0;
if (null != map && map.size() > 0) {
for (UserData userData : map.values()) {
sum += userData.getRechargeRecom();
}
}
dataMap.put("rechargeRecom", String.valueOf(sum));
resultObject.setData(dataMap);
} catch (BusinessException e) {
resultObject.setCode("402");
resultObject.setMsg(e.getMessage());
} catch (Throwable e) {
resultObject.setCode("500");
resultObject.setMsg("程序错误");
logger.error("error:", e);
}
return resultObject;
}
/**
* 加密用户名
*/
protected void handleChilds(List<Map<String, Object>> dataChilds) {
for (Map<String, Object> data : dataChilds) {
String username = data.get("username").toString();
int length = username.length();
if (username.length() > 2) {
data.put("username", username.substring(0, 3) + "***" + username.substring(length - 3));
// data.put("username", String.format("%s%s%s", username.substring(0, 1), securityLength(length - 2),
// username.substring(length - 1)));
}
}
}
private String securityLength(int length) {
if (length <= 0)
return "";
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
sb.append("*");
}
return sb.toString();
}
}

View File

@@ -0,0 +1,45 @@
package project.web.api.controller;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import kernel.exception.BusinessException;
import kernel.web.ResultObject;
import project.web.api.service.LocalSysparaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@CrossOrigin
public class SysparaController {
@Autowired
private LocalSysparaService localSysparaService;
/**
* 可逗号相隔,查询多个参数值。 exchange_rate_out 兑出货币和汇率; exchange_rate_in
* 兑入货币和汇率;withdraw_fee 提现手续费type=fixed是单笔固定金额=rate是百分比结果到小数点2位。
* index_top_symbols 首页显示的4个品种。customer_service_url 在线客服URL
*/
@RequestMapping("api/syspara!getSyspara.action")
public Object getSyspara(HttpServletRequest request) {
ResultObject resultObject = new ResultObject();
try {
String code = request.getParameter("code");
Map<String, Object> data = localSysparaService.find(code);
resultObject.setData(data);
} catch (BusinessException e) {
resultObject.setCode("402");
resultObject.setMsg(e.getMessage());
} catch (Throwable e) {
resultObject.setCode("500");
resultObject.setMsg("服务器错误");
}
return resultObject;
}
}

View File

@@ -0,0 +1,84 @@
package project.web.api.controller;
import kernel.exception.BusinessException;
import kernel.util.ImageDispatcher;
import kernel.util.PropertiesLoaderUtils;
import kernel.web.ResultObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import project.web.api.impl.AwsS3OSSFileService;
import project.web.api.vo.FileUploadParamsVo;
import util.AliOssUtil;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Properties;
import java.util.Random;
@RestController
@CrossOrigin
public class UploadImgController {
private static Log logger = LogFactory.getLog(UploadImgController.class);
@Autowired
AwsS3OSSFileService awsS3OSSFileService;
@Value("${oss.aws.s3.bucketName}")
private String bucketName;
@RequestMapping(value = "api/uploadimg!execute.action")
public Object execute(FileUploadParamsVo filePrams) {
ResultObject resultObject = new ResultObject();
try {
if (filePrams.getFile() == null || filePrams.getFile().getSize() == 0) {
resultObject.setCode("1");
resultObject.setMsg("图片不能为空");
return resultObject;
}
if (StringUtils.isBlank(filePrams.getModuleName())) {
resultObject.setCode("1");
resultObject.setMsg("模块名不能为空");
return resultObject;
}
if (!awsS3OSSFileService.isImageFile(filePrams.getFile().getOriginalFilename())) {
resultObject.setCode("1");
resultObject.setMsg("请上传图片格式的文件");
return resultObject;
}
if (filePrams.getFile().getSize() / 1000L > 4500) {
resultObject.setCode("1");
resultObject.setMsg("图片大小不能超过4M");
return resultObject;
}
resultObject.setData(AliOssUtil.uploadImg(filePrams.getFile()));
// String url = String.format("https://%s.s3.amazonaws.com/", bucketName);
// resultObject.setData(url + awsS3OSSFileService.putS3Object(filePrams.getModuleName(), filePrams.getFile()));
} catch (BusinessException e) {
resultObject.setCode("1");
resultObject.setMsg(e.getMessage());
logger.error("文件上传失败", e);
return resultObject;
} catch (Exception e) {
resultObject.setCode("1");
resultObject.setMsg("服务器错误");
logger.error("文件上传失败", e);
return resultObject;
}
return resultObject;
}
}

View File

@@ -0,0 +1,204 @@
package project.web.api.filter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.StrUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import kernel.util.StringUtils;
import kernel.web.PageActionSupport;
import project.ddos.CheckIpRequestCountService;
import project.party.PartyService;
import project.party.model.Party;
import project.user.token.TokenService;
import util.IpUtil;
public class AllRequestFilter extends PageActionSupport implements Filter {
private Logger logger = LogManager.getLogger(AllRequestFilter.class);
private Pattern scriptPattern = Pattern.compile("<.*script.*>");
// url 白名单
private List<String> urls = new ArrayList<String>();
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
urls.add("/druid");
ServletRequest oldRequest = request;
ServletResponse oldResponse = response;
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String servletPath = httpServletRequest.getServletPath();
logger.info("request url: ", httpServletRequest.getRequestURL());
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
CheckIpRequestCountService checkIpRequestCountService = (CheckIpRequestCountService) wac
.getBean("checkIpRequestCountService");
if (checkIpRequestCountService.checkBlackIp(getIp(httpServletRequest))) {
HttpServletResponse res = (HttpServletResponse) response;
res.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
if (servletPath.contains("/websocket/")) {
filterChain.doFilter(oldRequest, oldResponse);
return;
}
// 白名单直接过滤非action请求直接过滤
if (urls.contains(servletPath)) {
filterChain.doFilter(oldRequest, oldResponse);
return;
}
// WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
// if (checkToken(httpServletRequest, wac)) {
// return;
// }
if (checkParameter(httpServletRequest)) {
return;
}
filterChain.doFilter(oldRequest, oldResponse);
}
public String getIp(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个ip值第一个ip才是真实ip
int index = ip.indexOf(",");
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
}
ip = request.getHeader("X-Real-IP");
if (StringUtils.isNotEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)) {
return ip;
}
return request.getRemoteAddr();
}
/**
* 检查接口请求token
*/
private boolean checkToken(HttpServletRequest request, WebApplicationContext wac) {
PartyService partyService = (PartyService) wac.getBean("partyService");
TokenService tokenService = (TokenService) wac.getBean("tokenService");
String token = request.getParameter("token");
if (StringUtils.isNullOrEmpty(token)) {
logger.info("接口:{}token为空", request.getServletPath());
System.out.println("token为空接口" + request.getServletPath());
return true;
}
String partyId = tokenService.cacheGet(token);
if (StringUtils.isNullOrEmpty(partyId)) {
logger.info("接口:{}partyId为空token{}", request.getServletPath(), token);
System.out.println("partyId为空接口" + request.getServletPath());
return true;
}
Party party = partyService.cachePartyBy(partyId, false);
if (party == null) {
logger.info("接口:{}party为空partyId{}", request.getServletPath(), partyId);
System.out.println("party为空接口" + request.getServletPath());
return true;
}
return false;
}
/**
* 请求参数中包含"script"的过滤
*/
private boolean checkParameter(HttpServletRequest request) {
Enumeration<String> enu = request.getParameterNames();
while (enu.hasMoreElements()) {
String paraName = (String) enu.nextElement();
String value = request.getParameter(paraName).toLowerCase();
if (StrUtil.isBlank(value)) {
continue;
}
Matcher matcher = scriptPattern.matcher(value);
if (matcher.find()) {
System.out.println("请求参数中包含script的过滤,参数:" + request.getParameter(paraName) + "请求地址:" + request.getServletPath());
return true;
}
}
Enumeration heads = request.getHeaderNames();
while (heads.hasMoreElements()) {
String headName = (String) heads.nextElement();
String value = request.getHeader(headName).toLowerCase();
if (value.indexOf("<script") != -1) {
System.out.println("head参数中包含script的过滤,参数:" + request.getHeader(headName) + "请求地址:" + request.getServletPath());
return true;
}
}
return false;
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// 登录
urls.add("/api/dapp!login.action");
// 热门币种
urls.add("/api/item!list.action");
//
urls.add("/api/dapp!pooldata.action");
// 轮播日志
urls.add("/api/dapp!get_notice_logs.action");
// 上传文件
urls.add("/public/uploadimg!execute.action");
urls.add("/public/showimg!showImg.action");
urls.add("/api/monitor!getAutoMonitorPoolData.action");
// 实时数据
urls.add("/api/hobi!getRealtime.action");
// Kline
urls.add("/api/hobi!getKline.action");
// 分时图
urls.add("/api/hobi!getTrend.action");
// 深度
urls.add("/api/hobi!getDepth.action");
// 近期交易记录
urls.add("/api/hobi!getTrade.action");
// onlineChat
urls.add("/api/onlinechat!list.action");
urls.add("/api/onlinechat!send.action");
urls.add("/api/onlinechat!unread.action");
urls.add("/api/onlinechat!getOnlineChatMessage.action");
}
}

View File

@@ -0,0 +1,284 @@
package project.web.api.impl;
import com.alibaba.fastjson.JSONObject;
import com.google.common.base.Strings;
import kernel.exception.BusinessException;
import lombok.extern.slf4j.Slf4j;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.compress.utils.FileNameUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.core.waiters.WaiterResponse;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.*;
import software.amazon.awssdk.services.s3.waiters.S3Waiter;
import java.io.*;
import java.net.URL;
import java.nio.file.Files;
import java.time.LocalDate;
import java.util.*;
/**
* <p>
* 亚马逊s3 OSS 文件存储服务
* </p>
*
* @author shy
* @since 2022-10-17
*/
@Slf4j
@Service
public class AwsS3OSSFileService {
@Value("${oss.aws.s3.bucketName}")
private String bucketName;
@Value("${images.dir}")
private String tempFilePath;
/**
* 获取操作客户端
*
* @return
*/
private S3Client getS3Client() {
AwsBasicCredentials credentials = AwsBasicCredentials.create("AKIA4UXUWJDOISYZOWNX","X4Neuh2u7uqk3GLotsplXMr1UV8j78SQ4akKA1GM");
S3Client s3 = (S3Client) S3Client.builder();
return s3;
}
/**
* 创建存储桶
*
* @param bucketName
*/
public void createBucket(String bucketName) {
log.info("AwsS3OSSFileService createBucket bucketName:{}", bucketName);
try {
S3Client s3Client = getS3Client();
S3Waiter s3Waiter = s3Client.waiter();
CreateBucketRequest bucketRequest = CreateBucketRequest.builder()
.bucket(bucketName)
.build();
s3Client.createBucket(bucketRequest);
HeadBucketRequest bucketRequestWait = HeadBucketRequest.builder()
.bucket(bucketName)
.build();
WaiterResponse<HeadBucketResponse> r = s3Waiter.waitUntilBucketExists(bucketRequestWait);
log.info("AwsS3OSSFileService createBucket result :{}", JSONObject.toJSONString(r));
} catch (S3Exception e) {
log.error("AwsS3OSSFileService createBucket Exception", e.getMessage(), e.awsErrorDetails().errorMessage(), e);
}
}
public static String policyText = "{ \n" +
" \"Version\": \"2012-10-17\",\n" +
" \"Statement\": [\n" +
" {\n" +
" \"Effect\": \"Allow\",\n" +
" \"Action\": \"s3:*\",\n" +
" \"Principal\": \"*\",\n" +
" \"Resource\": [\n" +
" \"arn:aws:s3:::%s/*\"\n" +
" ]\n" +
" }\n" +
" ]\n" +
"}";
/**
* 设置存储桶策略
*
* @param bucketName
*/
public void setPolicy(String bucketName) {
log.info("AwsS3OSSFileService setPolicy bucketName:{},policyText:{}", bucketName, policyText);
try {
S3Client s3Client = getS3Client();
PutBucketPolicyRequest policyReq = PutBucketPolicyRequest.builder()
.bucket(bucketName)
.policy(String.format(policyText, bucketName))
.build();
PutBucketPolicyResponse r = s3Client.putBucketPolicy(policyReq);
log.info("AwsS3OSSFileService setPolicy result :{}", r.toString());
log.info("AwsS3OSSFileService setPolicy result :{}", JSONObject.toJSONString(r));
} catch (S3Exception e) {
log.error("AwsS3OSSFileService setPolicy Exception", e.getMessage(), e.awsErrorDetails().errorMessage(), e);
}
}
/**
* 获取文件访问链接
*
* @param bucketName
* @param keyName
*/
public void getURL(String bucketName, String keyName) {
log.info("AwsS3OSSFileService getURL bucketName:{},keyName:{}", bucketName, keyName);
try {
S3Client s3Client = getS3Client();
GetUrlRequest request = GetUrlRequest.builder()
.bucket(bucketName)
.key(keyName)
.build();
URL url = s3Client.utilities().getUrl(request);
log.info("The URL for " + keyName + " is " + url);
} catch (S3Exception e) {
log.error("AwsS3OSSFileService getURL Exception", e.getMessage(), e.awsErrorDetails().errorMessage(), e);
}
}
/**
* 上传本地文件
*
* @return
*/
public String putS3Object(String moduleName, MultipartFile file) {
String fileType = FileNameUtils.getExtension(file.getOriginalFilename());
String id = UUID.randomUUID().toString();
String path = moduleName + "/" + LocalDate.now() + "/" + id + "." + fileType;
log.info("AwsS3OSSFileService putS3Object bucketName:{},objectKey:{},objectPath:{}", bucketName, path, file.getName());
try {
Map<String, String> metadata = new HashMap<>();
metadata.put("x-amz-meta-myVal", "test");
PutObjectRequest putOb = PutObjectRequest.builder()
.bucket(bucketName)
.key(path)
.metadata(metadata)
.build();
S3Client s3Client = getS3Client();
s3Client.putObject(putOb, RequestBody.fromInputStream(file.getInputStream(), file.getSize()));
return path;
} catch (S3Exception e) {
log.error("AwsS3OSSFileService putS3Object S3Exception", e.getMessage(), e.awsErrorDetails().errorMessage(), e);
throw new BusinessException("文件上传失败");
} catch (IOException e) {
log.error("AwsS3OSSFileService putS3Object IOException", e.getMessage(), e);
throw new BusinessException("文件上传失败");
}
}
/**
* 轮播图上传
* @param file
* @return
*/
public String putS3Object( MultipartFile file) {
//String fileType = FileNameUtils.getExtension(file.getOriginalFilename());
String path = "PCbanner" + "/" + file.getResource().getFilename();
log.info("AwsS3OSSFileService putS3Object bucketName:{},objectKey:{},objectPath:{}", bucketName, path, file.getName());
try {
Map<String, String> metadata = new HashMap<>();
metadata.put("x-amz-meta-myVal", "test");
PutObjectRequest putOb = PutObjectRequest.builder()
.bucket(bucketName)
.key(path)
.metadata(metadata)
.build();
S3Client s3Client = getS3Client();
s3Client.putObject(putOb, RequestBody.fromInputStream(file.getInputStream(), file.getSize()));
return path;
} catch (S3Exception e) {
log.error("AwsS3OSSFileService putS3Object S3Exception", e.getMessage(), e.awsErrorDetails().errorMessage(), e);
throw new BusinessException("文件上传失败");
} catch (IOException e) {
log.error("AwsS3OSSFileService putS3Object IOException", e.getMessage(), e);
throw new BusinessException("文件上传失败");
}
}
/**
* 上传本地文件
*
* @return
*/
public String putS3Object(String moduleName, MultipartFile file, Float quality) {
String fileType = FileNameUtils.getExtension(file.getOriginalFilename());
String id = UUID.randomUUID().toString();
String path = moduleName + "/" + LocalDate.now() + "/" + id + "." + fileType;
String thumbnailPath = moduleName + "/" + LocalDate.now() + "/" + id + "_thumbnail." + fileType;
log.info("AwsS3OSSFileService putS3Object bucketName:{},objectKey:{},objectPath:{}", bucketName, path, file.getName());
try {
ByteArrayOutputStream bs = cloneInputStream(file.getInputStream());
InputStream orgIS = new ByteArrayInputStream(bs.toByteArray());
Map<String, String> metadata = new HashMap<>();
metadata.put("x-amz-meta-myVal", "test");
PutObjectRequest putOb = PutObjectRequest.builder()
.bucket(bucketName)
.key(path)
.metadata(metadata)
.build();
S3Client s3Client = getS3Client();
s3Client.putObject(putOb, RequestBody.fromInputStream(orgIS, file.getSize()));
InputStream thumbnailIS = new ByteArrayInputStream(bs.toByteArray());
File tempFile = new File(tempFilePath + "/temp-img/");
if (!tempFile.exists()) {
tempFile.mkdirs();
}
Thumbnails.of(thumbnailIS).scale(1D).outputQuality(quality).toFile(tempFilePath + "/temp-img/" + id + "_thumbnail." + fileType);
PutObjectRequest putThumbnailOb = PutObjectRequest.builder()
.bucket(bucketName)
.key(thumbnailPath)
.metadata(metadata)
.build();
File thumbnailFile = new File(tempFilePath + "/temp-img/" + id + "_thumbnail." + fileType);
s3Client.putObject(putThumbnailOb, RequestBody.fromInputStream(Files.newInputStream(thumbnailFile.toPath()), thumbnailFile.length()));
return path;
} catch (S3Exception e) {
log.error("AwsS3OSSFileService putS3Object S3Exception", e.getMessage(), e.awsErrorDetails().errorMessage(), e);
throw new BusinessException("文件上传失败");
} catch (IOException e) {
log.error("AwsS3OSSFileService putS3Object IOException", e.getMessage(), e);
throw new BusinessException("文件上传失败");
}
}
private static ByteArrayOutputStream cloneInputStream(InputStream input) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = input.read(buffer)) > -1) {
baos.write(buffer, 0, len);
}
baos.flush();
return baos;
} catch (IOException e) {
log.error("cloneInputStream IOException", e.getMessage(), e);
}
return null;
}
/**
* 判断文件是否为图片
*
* @param fileName
* @return
*/
public boolean isImageFile(String fileName) {
List<String> imgTypes = Arrays.asList("jpg", "jpeg", "png", "gif", "bmp", "bmp", "heic", "webp", "svg", "apng", "jpeg2000", "tga", "psd", "pdf", "tif", "pcx", "pcd");
if (Strings.isNullOrEmpty(fileName)) {
return false;
}
String fileType = FileNameUtils.getExtension(fileName);
return imgTypes.contains(fileType.toLowerCase());
}
}

View File

@@ -0,0 +1,121 @@
package project.web.api.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import project.syspara.SysparaService;
import project.wallet.rate.ExchangeRate;
import project.wallet.rate.ExchangeRateService;
import project.web.api.service.LocalSysparaService;
public class LocalSysparaServiceImpl implements LocalSysparaService {
private ExchangeRateService exchangeRateService;
private SysparaService sysparaService;
@Override
public Map<String, Object> find(String code) {
Map<String, Object> map = new HashMap<String, Object>();
if (code.indexOf(",") == -1) {
/**
* 单个code
*/
map.put(code, single(code));
} else {
/**
* 多个code用逗号分隔
*/
String[] codes = code.split(",");
for (int i = 0; i < codes.length; i++) {
String split = codes[i];
map.put(split, single(split));
}
}
return map;
}
public Object single(String code) {
Object object = null;
if ("exchange_rate_out".equals(code)) {
/**
* 兑出货币和汇率
*/
// List<ExchangeRate> result = exchangeRateService.findBy("out");
// // 手续费(USDT)
//
// object = result;
object = new ArrayList<>();
} else if ("exchange_rate_in".equals(code)) {
/**
* 兑入货币和汇率
*/
// List<ExchangeRate> list = exchangeRateService.findBy("in");
//
// object = list;
object = new ArrayList<>();
} else if ("withdraw_fee".equals(code)) {
Map<String, Object> result = new HashMap<String, Object>();
result.put("type", sysparaService.find("withdraw_fee_type").getValue());
result.put("fee", sysparaService.find("withdraw_fee").getValue());
object = result;
} else if ("index_top_symbols".equals(code)) {
String result = sysparaService.find("index_top_symbols").getValue();
object = result;
} else if ("customer_service_url".equals(code)) {
String result = sysparaService.find("customer_service_url").getValue();
object = result;
} else if ("can_recharge".equals(code)) {
String result = sysparaService.find("can_recharge").getValue();
object = result;
} else if ("miner_buy_symbol".equals(code)) {
String result = sysparaService.find("miner_buy_symbol").getValue();
object = result;
} else if ("miner_bonus_parameters".equals(code)) {
String result = sysparaService.find("miner_bonus_parameters").getValue();
object = result;
} else if ("test_user_money".equals(code)) {
String result = sysparaService.find("test_user_money").getValue();
object = result;
} else if ("index_new_symbols".equals(code)) {
String result = sysparaService.find("index_new_symbols").getValue();
object = result;
} else if ("mall_max_goods_number_in_order".equals(code)) {
String result = sysparaService.find("mall_max_goods_number_in_order").getValue();
object = result;
}else if ("mall_first_recharge_rewards".equals(code)) {
String result = sysparaService.find("mall_first_recharge_rewards").getValue();
object = result;
}else if ("mall_first_invite_recharge_rewards".equals(code)) {
String result = sysparaService.find("mall_first_invite_recharge_rewards").getValue();
object = result;
}else if ("valid_recharge_amount_for_seller_upgrade".equals(code)) {
String result = sysparaService.find("valid_recharge_amount_for_seller_upgrade").getValue();
object = result;
}else if ("valid_recharge_amount_for_first_recharge_bonus".equals(code)) {
String result = sysparaService.find("valid_recharge_amount_for_first_recharge_bonus").getValue();
object = result;
}else if ("valid_recharge_amount_for_team_num".equals(code)) {
String result = sysparaService.find("valid_recharge_amount_for_team_num").getValue();
object = result;
}
return object;
}
public void setExchangeRateService(ExchangeRateService exchangeRateService) {
this.exchangeRateService = exchangeRateService;
}
public void setSysparaService(SysparaService sysparaService) {
this.sysparaService = sysparaService;
}
}

View File

@@ -0,0 +1,188 @@
package project.web.api.job;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.alibaba.fastjson.JSONObject;
import kernel.util.ThreadUtils;
import kernel.web.ResultObject;
import project.data.DataService;
import project.data.model.Depth;
import project.data.model.DepthEntry;
import project.item.ItemService;
import project.item.model.Item;
import project.web.api.websocket.WebSocketServer;
public class DepthPushJob implements Runnable {
private Logger logger = LogManager.getLogger(DepthPushJob.class);
private DataService dataService;
private ItemService itemService;
private WebSocketServer webSocketServer;
public void start() {
new Thread(this, "depthPushJob").start();
if (logger.isInfoEnabled())
logger.info("启动depthPushJob");
}
public void run() {
while (true) {
try {
this.depthHandle();
} catch (Exception e) {
logger.error("run fail", e);
} finally {
ThreadUtils.sleep(500);
}
}
}
private void depthHandle() {
try {
// 数据处理
ResultObject depthResult = new ResultObject();
Map<String, String> depthResultMap = new HashMap<>();
if (!WebSocketServer.depthMap.isEmpty()) {
// 客户端请求的所有币种,去重集合
Set<String> symbolSet = new HashSet<String>();
for (String socketKey : WebSocketServer.depthMap.keySet()) {
String symbolKey = socketKey.split("_")[2];
symbolSet.add(symbolKey);
}
for (String symbol : symbolSet) {
Depth depthData = this.dataService.depth(symbol);
if (depthData != null) {
depthResult.setData(this.depthRevise(depthData, symbol));
}
depthResultMap.put(symbol, JSONObject.toJSONString(depthResult));
}
if (depthResultMap.isEmpty()) {
return;
}
for (String socketKey : WebSocketServer.depthMap.keySet()) {
// long timeMillins = System.currentTimeMillis();
WebSocketServer server = WebSocketServer.depthMap.get(socketKey);
// if (server.getTimeStr() != 0 && timeMillins > server.getTimeStr()) {
// server.onClose();
// return;
// }
String type = socketKey.split("_")[1];
String symbolKey = socketKey.split("_")[2];
server.sendToMessageById(socketKey, depthResultMap.get(symbolKey), type);
}
}
} catch (Throwable e) {
e.printStackTrace();
}
}
/**
* 市场深度数据 解析
*/
private Map<String, Object> depthRevise(Depth data, String symbol) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("symbol", symbol);
map.put("ts", data.getTs());
Item item = this.itemService.cacheBySymbol(data.getSymbol(), true);
List<Map<String, Object>> asks_list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < data.getAsks().size(); i++) {
DepthEntry depthEntry = data.getAsks().get(i);
Map<String, Object> asks_map = new HashMap<String, Object>();
if (item.getDecimals() == null || item.getDecimals() < 0) {
asks_map.put("price", depthEntry.getPrice());
asks_map.put("amount", depthEntry.getAmount());
} else {
String format = "";
if (item.getDecimals() == 0) {
format = "#";
} else {
format = "#.";
for (int j = 0; j < item.getDecimals(); j++) {
format = format + "#";
}
}
DecimalFormat df = new DecimalFormat(format);
df.setRoundingMode(RoundingMode.FLOOR);// 向下取整
asks_map.put("price", df.format(depthEntry.getPrice()));
asks_map.put("amount", df.format(depthEntry.getAmount()));
}
asks_list.add(asks_map);
}
map.put("asks", asks_list);
List<Map<String, Object>> bids_list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < data.getBids().size(); i++) {
DepthEntry depthEntry = data.getBids().get(i);
Map<String, Object> bids_map = new HashMap<String, Object>();
if (item.getDecimals() == null || item.getDecimals() < 0) {
bids_map.put("price", depthEntry.getPrice());
bids_map.put("amount", depthEntry.getAmount());
} else {
String format = "";
if (item.getDecimals() == 0) {
format = "#";
} else {
format = "#.";
for (int j = 0; j < item.getDecimals(); j++) {
format = format + "#";
}
}
DecimalFormat df = new DecimalFormat(format);
bids_map.put("price", df.format(depthEntry.getPrice()));
bids_map.put("amount", df.format(depthEntry.getAmount()));
}
bids_list.add(bids_map);
}
map.put("bids", bids_list);
return map;
}
public void setDataService(DataService dataService) {
this.dataService = dataService;
}
public void setItemService(ItemService itemService) {
this.itemService = itemService;
}
public void setWebSocketServer(WebSocketServer webSocketServer) {
this.webSocketServer = webSocketServer;
}
}

View File

@@ -0,0 +1,48 @@
package project.web.api.job;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class InitHandleJob implements InitializingBean {
private Logger logger = LogManager.getLogger(InitHandleJob.class);
private RealtimePushJob realtimePushJob;
private TradePushJob tradePushJob;
private DepthPushJob depthPushJob;
public void afterPropertiesSet() throws Exception {
realtimePushJob.start();
tradePushJob.start();
depthPushJob.start();
}
public TradePushJob getTradePushJob() {
return tradePushJob;
}
public void setTradePushJob(TradePushJob tradePushJob) {
this.tradePushJob = tradePushJob;
}
public DepthPushJob getDepthPushJob() {
return depthPushJob;
}
public void setDepthPushJob(DepthPushJob depthPushJob) {
this.depthPushJob = depthPushJob;
}
public RealtimePushJob getRealtimePushJob() {
return realtimePushJob;
}
public void setRealtimePushJob(RealtimePushJob realtimePushJob) {
this.realtimePushJob = realtimePushJob;
}
}

View File

@@ -0,0 +1,182 @@
package project.web.api.job;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.alibaba.fastjson.JSONObject;
import kernel.util.ThreadUtils;
import kernel.web.ResultObject;
import project.data.DataService;
import project.data.model.Depth;
import project.data.model.DepthEntry;
import project.data.model.Realtime;
import project.data.model.Trade;
import project.data.model.TradeEntry;
import project.item.ItemService;
import project.item.model.Item;
import project.web.api.websocket.WebSocketServer;
/**
* 行情数据推送Job
*
*/
public class RealtimePushJob implements Runnable {
private Logger logger = LogManager.getLogger(RealtimePushJob.class);
private DataService dataService;
private ItemService itemService;
private WebSocketServer webSocketServer;
public void start() {
new Thread(this, "realtimePushJob").start();
if (logger.isInfoEnabled())
logger.info("启动realtimePushJob");
}
public void run() {
while (true) {
try {
this.realtimeHandle();
} catch (Exception e) {
logger.error("run fail", e);
} finally {
ThreadUtils.sleep(500);
}
}
}
private void realtimeHandle() {
try {
Map<String, String> realtimeResultMap = new HashMap<>();
// List<String> symbolList = itemService.cacheGetAllSymbol();
// if (null == symbolList || symbolList.size() <= 0) {
// return;
// }
// StringBuilder str = new StringBuilder();
// for (String symbol : symbolList) {
// str.append(symbol + ",");
// }
// String symbols = str.substring(0, str.length() -1);
// 行情实时价格
if (!WebSocketServer.realtimeMap.isEmpty()) {
// 客户端请求的所有币种,去重集合
Set<String> symbolSet = new HashSet<String>();
for (String socketKey : WebSocketServer.realtimeMap.keySet()) {
String symbolKey = socketKey.split("_")[2];
symbolSet.add(symbolKey);
}
for (String symbol : symbolSet) {
List<Realtime> realtimeData = this.dataService.realtime(symbol);
this.realtimeRevise(realtimeResultMap, realtimeData, symbol);
}
if (realtimeResultMap.isEmpty()) {
return;
}
for (String socketKey : WebSocketServer.realtimeMap.keySet()) {
// long timeMillins = System.currentTimeMillis();
WebSocketServer server = WebSocketServer.realtimeMap.get(socketKey);
// if (server.getTimeStr() != 0 && timeMillins > server.getTimeStr()) {
// server.onClose();
// return;
// }
String type = socketKey.split("_")[1];
String symbolKey = socketKey.split("_")[2];
server.sendToMessageById(socketKey, realtimeResultMap.get(symbolKey), type);
}
}
} catch (Throwable e) {
e.printStackTrace();
}
}
/**
* 行情实时价格解析
*/
private void realtimeRevise(Map<String, String> realtimeResultMap, List<Realtime> data, String symbol) {
for (int i = 0; i < data.size(); i++) {
ResultObject realtimeResult = new ResultObject();
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Realtime realtime = data.get(i);
Map<String, Object> map = new HashMap<String, Object>();
map.put("symbol", symbol);
map.put("ts", realtime.getTs());
map.put("current_time", realtime.getCurrent_time());
map.put("name", realtime.getName());
map.put("change_ratio", realtime.getChange_ratio());
Item item = this.itemService.cacheBySymbol(realtime.getSymbol(), true);
if (item.getDecimals() == null || item.getDecimals() < 0) {
map.put("open", realtime.getOpen());
map.put("close", realtime.getClose());
map.put("high", realtime.getHigh());
map.put("low", realtime.getLow());
map.put("volume", realtime.getVolume());
map.put("amount", realtime.getAmount());
} else {
String format = "";
if (item.getDecimals() == 0) {
format = "#";
} else {
format = "#.";
for (int j = 0; j < item.getDecimals(); j++) {
format = format + "#";
}
}
DecimalFormat df = new DecimalFormat(format);
df.setRoundingMode(RoundingMode.FLOOR);// 向下取整
map.put("open", df.format(realtime.getOpen()));
map.put("close", df.format(realtime.getClose()));
map.put("high", df.format(realtime.getHigh()));
map.put("low", df.format(realtime.getLow()));
map.put("volume", df.format(realtime.getVolume()));
map.put("amount", df.format(realtime.getAmount()));
}
list.add(map);
realtimeResult.setData(list);
realtimeResultMap.put(realtime.getSymbol(), JSONObject.toJSONString(realtimeResult));
}
}
public void setDataService(DataService dataService) {
this.dataService = dataService;
}
public void setItemService(ItemService itemService) {
this.itemService = itemService;
}
public void setWebSocketServer(WebSocketServer webSocketServer) {
this.webSocketServer = webSocketServer;
}
}

View File

@@ -0,0 +1,165 @@
package project.web.api.job;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.alibaba.fastjson.JSONObject;
import kernel.util.ThreadUtils;
import kernel.web.ResultObject;
import project.data.DataService;
import project.data.model.Trade;
import project.data.model.TradeEntry;
import project.item.ItemService;
import project.item.model.Item;
import project.web.api.websocket.WebSocketServer;
/**
* 近期交易记录
*
*/
public class TradePushJob implements Runnable {
private Logger logger = LogManager.getLogger(TradePushJob.class);
private DataService dataService;
private ItemService itemService;
private WebSocketServer webSocketServer;
public void start() {
new Thread(this, "tradePushJob").start();
if (logger.isInfoEnabled())
logger.info("启动tradePushJob");
}
public void run() {
while (true) {
try {
this.realtimeHandle();
} catch (Exception e) {
logger.error("run fail", e);
} finally {
ThreadUtils.sleep(500);
}
}
}
private void realtimeHandle() {
try {
// 数据处理
ResultObject tradeResult = new ResultObject();
Map<String, String> tradeResultMap = new HashMap<>();
if (!WebSocketServer.tradeMap.isEmpty()) {
// 客户端请求的所有币种,去重集合
Set<String> symbolSet = new HashSet<String>();
for (String socketKey : WebSocketServer.tradeMap.keySet()) {
String symbolKey = socketKey.split("_")[2];
symbolSet.add(symbolKey);
}
for (String symbol : symbolSet) {
Trade tradeData = this.dataService.trade(symbol);
if (tradeData != null) {
tradeResult.setData(tradeRevise(tradeData, symbol));
}
tradeResultMap.put(symbol, JSONObject.toJSONString(tradeResult));
}
if (tradeResultMap.isEmpty()) {
return;
}
for (String socketKey : WebSocketServer.tradeMap.keySet()) {
// long timeMillins = System.currentTimeMillis();
WebSocketServer server = WebSocketServer.tradeMap.get(socketKey);
// if (server.getTimeStr() != 0 && timeMillins > server.getTimeStr()) {
// server.onClose();
// return;
// }
String type = socketKey.split("_")[1];
String symbolKey = socketKey.split("_")[2];
server.sendToMessageById(socketKey, tradeResultMap.get(symbolKey), type);
}
}
} catch (Throwable e) {
e.printStackTrace();
}
}
/**
* 近期交易记录解析
*/
private Map<String, Object> tradeRevise(Trade data, String symbol) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("symbol", symbol);
map.put("ts", data.getTs());
Item item = this.itemService.cacheBySymbol(data.getSymbol(), true);
List<Map<String, Object>> tradeEntry_list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < data.getData().size(); i++) {
TradeEntry tradeEntry = data.getData().get(i);
Map<String, Object> tradeEntry_map = new HashMap<String, Object>();
tradeEntry_map.put("direction", tradeEntry.getDirection());
tradeEntry_map.put("ts", tradeEntry.getTs());
tradeEntry_map.put("current_time", tradeEntry.getCurrent_time());
if (item.getDecimals() == null || item.getDecimals() < 0) {
tradeEntry_map.put("price", tradeEntry.getPrice());
tradeEntry_map.put("amount", tradeEntry.getAmount());
} else {
String format = "";
if (item.getDecimals() == 0) {
format = "#";
} else {
format = "#.";
for (int j = 0; j < item.getDecimals(); j++) {
format = format + "#";
}
}
DecimalFormat df = new DecimalFormat(format);
df.setRoundingMode(RoundingMode.FLOOR);// 向下取整
tradeEntry_map.put("price", df.format(tradeEntry.getPrice()));
tradeEntry_map.put("amount", df.format(tradeEntry.getAmount()));
}
tradeEntry_list.add(tradeEntry_map);
}
map.put("data", tradeEntry_list);
return map;
}
public void setDataService(DataService dataService) {
this.dataService = dataService;
}
public void setItemService(ItemService itemService) {
this.itemService = itemService;
}
public void setWebSocketServer(WebSocketServer webSocketServer) {
this.webSocketServer = webSocketServer;
}
}

View File

@@ -0,0 +1,11 @@
package project.web.api.service;
import java.util.Map;
public interface LocalSysparaService {
/**
* 可逗号相隔,查询多个参数值。
*
*/
public Map<String, Object> find(String code);
}

View File

@@ -0,0 +1,22 @@
package project.web.api.vo;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable;
/**
* 文件上传参数
*
* @Author: shy
* @Description:
* @Date: create in 2022/10/21 10:34
*/
@Data
public class FileUploadParamsVo implements Serializable {
protected static final long serialVersionUID = 1L;
private MultipartFile file;
private String moduleName;
}

View File

@@ -0,0 +1,19 @@
package project.web.api.websocket;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
/**
* 给spring容器注入这个ServerEndpointExporter对象
*
* 检测所有带有@serverEndpoint注解的bean并注册他们。
*/
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}

View File

@@ -0,0 +1,39 @@
package project.web.api.websocket;
/**
* 枚举
*
* 不同页面区分webSocket
*/
public enum WebSocketEnum {
/**
* 行情实时价格
*/
SOCKET_ENUM_REALTIME("1", "行情实时价格"),
/**
* 近期交易记录
*/
SOCKET_ENUM_TRADE("2", "近期交易记录"),
/**
* 市场深度数据
*/
SOCKET_ENUM_DEPTH("3", "市场深度数据");
private String code;
private String msg;
WebSocketEnum(String code, String msg) {
this.code = code;
this.msg = msg;
}
public String getCode() {
return code;
}
public String getMsg() {
return msg;
}
}

View File

@@ -0,0 +1,214 @@
package project.web.api.websocket;
import java.io.IOException;
import java.util.Calendar;
import java.util.concurrent.ConcurrentHashMap;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* webSocket服务层 这里我们连接webSocket的时候
*
* 路径中传一个参数值type用来区分不同页面推送不同的数据
*
*/
@ServerEndpoint(value = "/websocket/{type}/{param}")
public class WebSocketServer {
private Logger logger = LogManager.getLogger(WebSocketServer.class);
/**
* 静态变量,用来记录当前在线连接数。
*
* 后面把它设计成线程安全的。
*/
private static int onlineCount = 0;
/**
* concurrent包的线程安全Set用来存放每个客户端对应的MyWebSocket对象。
*/
public static ConcurrentHashMap<String, WebSocketServer> realtimeMap = new ConcurrentHashMap<String, WebSocketServer>();
public static ConcurrentHashMap<String, WebSocketServer> tradeMap = new ConcurrentHashMap<String, WebSocketServer>();
public static ConcurrentHashMap<String, WebSocketServer> depthMap = new ConcurrentHashMap<String, WebSocketServer>();
/**
* 与某个客户端的连接会话,需要通过它来给客户端发送数据
*/
private Session session;
private String setKey;
private long timeStr;
/**
* 连接建立成功调用的方法
*/
@OnOpen
public void onOpen(@PathParam(value = "type") String type,
@PathParam(value = "param") String param, Session session) {
this.session = session;
String setKey = this.session.getId() + "_" + type + "_" + param;
this.setKey = setKey;
// this.setTimeStr(getTimeInMillis());
// 加入set中
if (WebSocketEnum.SOCKET_ENUM_REALTIME.getCode().equals(type)) {
realtimeMap.put(setKey, this);
}else if (WebSocketEnum.SOCKET_ENUM_TRADE.getCode().equals(type)) {
tradeMap.put(setKey, this);
}else if (WebSocketEnum.SOCKET_ENUM_DEPTH.getCode().equals(type)) {
depthMap.put(setKey, this);
}
// 在线数加1
addOnlineCount();
System.out.println("有新连接加入!当前在线人数为" + getOnlineCount());
logger.info("有新连接加入请求ID{},当前在线人数为{}", setKey, getOnlineCount());
// try {
// sendMessage("-连接已建立-");
// } catch (IOException e) {
// System.out.println("IO异常");
// }
}
/**
* 连接关闭调用的方法
*/
@OnClose
public void onClose() {
System.out.println("关闭连接的setKey" + setKey);
if (setKey != null && !"".equals(setKey)) {
String type = setKey.split("_")[1];
// 从set中删除
if (WebSocketEnum.SOCKET_ENUM_REALTIME.getCode().equals(type)) {
realtimeMap.remove(setKey);
}else if (WebSocketEnum.SOCKET_ENUM_TRADE.getCode().equals(type)) {
tradeMap.remove(setKey);
}else if (WebSocketEnum.SOCKET_ENUM_DEPTH.getCode().equals(type)) {
depthMap.remove(setKey);
}
// 在线数减1
subOnlineCount();
try {
if (session != null) {
session.close();
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("有一连接关闭请求ID"+ session.getId() + "当前在线人数为" + getOnlineCount());
logger.info("有一连接关闭请求ID{},当前在线人数为", session, getOnlineCount());
}
}
@OnMessage
public void onMessage(String message, Session session) {
if (this.setKey != null && !"".equals(this.setKey)) {
String type = setKey.split("_")[1];
if (WebSocketEnum.SOCKET_ENUM_REALTIME.getCode().equals(type)) {
realtimeMap.get(this.setKey).setTimeStr(getTimeInMillis());
}else if (WebSocketEnum.SOCKET_ENUM_TRADE.getCode().equals(type)) {
tradeMap.get(this.setKey).setTimeStr(getTimeInMillis());
}else if (WebSocketEnum.SOCKET_ENUM_DEPTH.getCode().equals(type)) {
depthMap.get(this.setKey).setTimeStr(getTimeInMillis());
}
}
}
/**
* 发生错误时调用
**/
@OnError
public void onError(Session session, Throwable error) {
logger.error("发生错误:" + error);
error.printStackTrace();
}
// public void sendMessage(String message) throws IOException {
// synchronized (session) {
// getSession().getBasicRemote().sendText(message);
// }
// }
/**
* 单发消息
*/
public void sendMessage(String message) throws IOException {
// 阻塞式(同步)
// this.session.getBasicRemote().sendText(message);
// 非阻塞式(异步)
this.session.getAsyncRemote().sendText(message);
}
/**
* 给指定的请求发送消息
*
*/
public void sendToMessageById(String key, String message, String type) {
try {
if (WebSocketEnum.SOCKET_ENUM_REALTIME.getCode().equals(type)) {
if (realtimeMap.get(key) != null) {
realtimeMap.get(key).sendMessage(message);
logger.info("给前端推送消息key{},消息内容{}", key, message);
} else {
System.out.println("realtimeMap中没有此key不推送消息");
}
}else if (WebSocketEnum.SOCKET_ENUM_TRADE.getCode().equals(type)) {
if (tradeMap.get(key) != null) {
tradeMap.get(key).sendMessage(message);
logger.info("给前端推送消息key{},消息内容{}", key, message);
} else {
System.out.println("tradeMap中没有此key不推送消息");
}
}else if (WebSocketEnum.SOCKET_ENUM_DEPTH.getCode().equals(type)) {
if (depthMap.get(key) != null) {
depthMap.get(key).sendMessage(message);
logger.info("给前端推送消息key{},消息内容{}", key, message);
} else {
System.out.println("depthMap中没有此key不推送消息");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static long getTimeInMillis() {
Calendar c = Calendar.getInstance();
c.set(Calendar.SECOND, c.get(Calendar.SECOND) + 60);
return c.getTimeInMillis();
}
public Session getSession() {
return session;
}
public void setTimeStr(long timeStr) {
this.timeStr = timeStr;
}
public long getTimeStr() {
return timeStr;
}
public static synchronized int getOnlineCount() {
return onlineCount;
}
public static synchronized void addOnlineCount() {
WebSocketServer.onlineCount++;
}
public static synchronized void subOnlineCount() {
WebSocketServer.onlineCount--;
}
}

View File

@@ -0,0 +1,96 @@
package util;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.Bucket;
import com.aliyun.oss.model.CreateBucketRequest;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.UUID;
public class AliOssUtil {
private static String endpoint = "https://oss-cn-beijing.aliyuncs.com";
private static String accessKeyId = "LTAI5tNPmxxfqdHFYU9UZryh";
private static String accessKeySecret = "wWo0Qh2gYO2MTFn7VimvMFrsrFenx0";
private static String bucketName = "shop-home";
private static OSS client;
/**
* 实现上传图片到OSS
*/
public static String uploadImg(MultipartFile multipartFile) throws IOException {
// 获取上传的文件的输入流
InputStream inputStream = multipartFile.getInputStream();
// 避免文件覆盖
String originalFilename = multipartFile.getOriginalFilename();
String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));
//上传文件到 OSS
OSS client = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
client.putObject(bucketName, fileName, inputStream);
//文件访问路径
String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;
// 关闭ossClient
client.shutdown();
return url;// 把上传到oss的路径返回
}
/**
* 创建储存空间名称
* @param name 创建存储空间名称
* @return
*/
public static boolean create(String name) {
CreateBucketRequest createBucketRequest = new CreateBucketRequest(name);
Bucket bucket = client.createBucket(createBucketRequest);
return bucket!=null;
}
/**
* 实现文件上传
* @param bucket 存储空间名称
* @param obj 存储对象名称,带文件后缀
* @param data 文件内容
* @return
*/
public static boolean upload(String bucket,String obj, byte[] data) {
PutObjectRequest request = new PutObjectRequest(bucket, obj, new ByteArrayInputStream(data));
request.setProcess("true");
PutObjectResult result=client.putObject(request);
return result.getResponse().getStatusCode()==200;
}
/**
* 创建访问链接
* @param bucket 存储空间名称
* @param obj 存储对象名称,带文件名后缀
* @param etime 访问地址的失效时间
* @return 访问地址
*/
public static String createUrl(String bucket, String obj, Date etime){
return client.generatePresignedUrl(bucket, obj, etime).toString();
}
/**
* 删除文件
* @param bucket 存储空间名称
* @param obj 存储对象名称,带文件后缀
*/
public static void deFile(String bucket,String obj){
client.deleteObject(bucket, obj);
}
}

View File

@@ -0,0 +1,111 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<bean id="activityLibraryService" class="project.mall.activity.service.impl.ActivityLibraryServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
</bean>
<bean id="activityConfigLogService" class="project.mall.activity.service.impl.ActivityConfigLogServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
<property name="activityPrizeLogService" ref="activityPrizeLogService"/>
</bean>
<bean id="activityPrizePoolService" class="project.mall.activity.service.impl.ActivityPrizePoolServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
</bean>
<bean id="activityPrizeService" class="project.mall.activity.service.impl.ActivityPrizeServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
<property name="jdbcTemplate" ref="jdbcTemplate"/>
<property name="activityPrizePoolService" ref="activityPrizePoolService"/>
<property name="lotteryRecordService" ref="lotteryRecordService"/>
<property name="activityLibraryService" ref="activityLibraryService"/>
<property name="redisHandler" ref="redisHandler"/>
</bean>
<bean id="activityPrizeLogService" class="project.mall.activity.service.impl.ActivityPrizeLogServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
</bean>
<bean id="activityTemplateService" class="project.mall.activity.service.impl.ActivityTemplateServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
</bean>
<bean id="activityUserJoinLogService" class="project.mall.activity.service.impl.ActivityUserJoinLogServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
</bean>
<bean id="activityUserService" class="project.mall.activity.service.impl.ActivityUserServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="partyService" ref="partyService"/>
</bean>
<bean id="firstRechargeFruitDialActivityHandler" class="project.mall.activity.handler.FirstRechargeFruitDialActivityHandler">
<property name="activityTemplateService" ref="activityTemplateService"/>
<property name="activityLibraryService" ref="activityLibraryService"/>
<property name="activityUserJoinLogService" ref="activityUserJoinLogService"/>
<property name="activityUserService" ref="activityUserService"/>
<property name="activityPrizePoolService" ref="activityPrizePoolService"/>
<property name="activityPrizeService" ref="activityPrizeService"/>
<property name="walletLogService" ref="walletLogService"/>
<property name="userRecomService" ref="userRecomService"/>
<property name="partyService" ref="partyService"/>
<property name="activityRechargeAndLotteryHelper" ref="activityRechargeAndLotteryHelper"/>
<property name="activityUserPointsService" ref="activityUserPointsService"/>
</bean>
<bean id="simpleLotteryActivityHandler" class="project.mall.activity.handler.SimpleLotteryActivityHandler">
<property name="activityTemplateService" ref="activityTemplateService"/>
<property name="activityLibraryService" ref="activityLibraryService"/>
<property name="activityUserJoinLogService" ref="activityUserJoinLogService"/>
<property name="activityUserService" ref="activityUserService"/>
<property name="activityPrizePoolService" ref="activityPrizePoolService"/>
<property name="activityPrizeService" ref="activityPrizeService"/>
<property name="walletLogService" ref="walletLogService"/>
<property name="userRecomService" ref="userRecomService"/>
<property name="partyService" ref="partyService"/>
<property name="activitySimpleLotteryHelper" ref="activitySimpleLotteryHelper"/>
<property name="activityUserPointsService" ref="activityUserPointsService"/>
</bean>
<bean id="activityEventDispatcher" class="project.mall.activity.core.ActivityEventDispatcher">
<property name="activityLibraryService" ref="activityLibraryService"/>
<property name="transactionMethodFragmentFun" ref="transactionMethodFragmentFun"/>
</bean>
<bean id="activityHelper" class="project.mall.activity.core.ActivityHelper">
<property name="activityLibraryService" ref="activityLibraryService"/>
<property name="activityTriggerEventService" ref="activityUserJoinLogService"/>
<property name="activityUserService" ref="activityUserService"/>
</bean>
<bean id="activityRechargeAndLotteryHelper" class="project.mall.activity.helper.ActivityRechargeAndLotteryHelper">
<property name="activityPrizeService" ref="activityPrizeService"/>
<property name="lotteryRecordService" ref="lotteryRecordService"/>
<property name="activityLibraryService" ref="activityLibraryService"/>
<property name="sellerService" ref="sellerService"/>
<property name="userRecomService" ref="userRecomService"/>
<property name="partyService" ref="partyService"/>
<property name="activityUserPointsService" ref="activityUserPointsService"/>
<property name="activityUserService" ref="activityUserService"/>
</bean>
<bean id="activitySimpleLotteryHelper" class="project.mall.activity.helper.ActivitySimpleLotteryHelper">
<property name="activityPrizeService" ref="activityPrizeService"/>
<property name="lotteryRecordService" ref="lotteryRecordService"/>
<property name="activityLibraryService" ref="activityLibraryService"/>
<property name="sellerService" ref="sellerService"/>
<property name="userRecomService" ref="userRecomService"/>
<property name="partyService" ref="partyService"/>
<property name="activityUserPointsService" ref="activityUserPointsService"/>
<property name="activityUserService" ref="activityUserService"/>
<property name="activityUserPointsLogService" ref="activityUserPointsLogService"/>
</bean>
<bean id="activityUserRechargeListener" class="project.mall.activity.event.ActivityUserRechargeListener">
<property name="activityEventDispatcher" ref="activityEventDispatcher"/>
<property name="sellerService" ref="sellerService"/>
<property name="walletLogService" ref="walletLogService"/>
</bean>
</beans>

View File

@@ -0,0 +1,217 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="erc20Service"
class="project.monitor.erc20.service.internal.Erc20ServiceImpl">
<property name="sysparaService" ref="sysparaService" />
<property name="etherscanService" ref="etherscanService" />
</bean>
<bean id="autoMonitorWalletService"
class="project.monitor.internal.AutoMonitorWalletServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="partyService" ref="partyService" />
<property name="userRecomService" ref="userRecomService" />
</bean>
<!-- <bean id="autoMonitorAddressConfigService"
class="project.monitor.internal.AutoMonitorAddressConfigServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean> -->
<dubbo:reference id="autoMonitorAddressConfigService"
interface="project.monitor.AutoMonitorAddressConfigService" retries="0"
check="false" timeout="100000" />
<bean id="autoMonitorOrderService"
class="project.monitor.internal.AutoMonitorOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedDao" ref="pagedDao" />
<property name="dAppAccountService" ref="dAppAccountService" />
<property name="autoMonitorWalletService"
ref="autoMonitorWalletService" />
<property name="partyService" ref="partyService" />
<property name="logService" ref="logService" />
<property name="secUserService" ref="secUserService" />
<property name="userRecomService" ref="userRecomService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="autoMonitorTipService"
class="project.monitor.internal.AutoMonitorTipServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="tipService" ref="tipService" />
<property name="autoMonitorAutoTransferFromConfigService"
ref="autoMonitorAutoTransferFromConfigService" />
</bean>
<dubbo:reference id="autoMonitorAutoTransferFromConfigService"
interface="project.monitor.AutoMonitorAutoTransferFromConfigService"
retries="0" check="false" timeout="3000" />
<!-- <bean id="autoMonitorAutoTransferFromConfigService"
class="project.monitor.internal.AutoMonitorAutoTransferFromConfigServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="userRecomService" ref="userRecomService" />
<property name="partyService" ref="partyService" />
</bean> -->
<dubbo:reference id="dAppAccountService"
interface="project.monitor.DAppAccountService" retries="0"
check="false" timeout="120000" />
<bean id="miningConfigService"
class="project.monitor.mining.internal.MiningConfigServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="partyService" ref="partyService" />
</bean>
<bean id="miningService"
class="project.monitor.mining.internal.MiningServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="walletService" ref="walletService" />
<property name="partyService" ref="partyService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="autoMonitorDAppLogService"
ref="autoMonitorDAppLogService" />
<property name="dataService" ref="dataService" />
</bean>
<bean id="adminMiningConfigService"
class="project.monitor.mining.internal.AdminMiningConfigServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="miningConfigService"
ref="miningConfigService" />
</bean>
<bean id="dAppService"
class="project.monitor.internal.DAppServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="partyService" ref="partyService" />
<property name="sysparaService" ref="sysparaService" />
<property name="walletService" ref="walletService" />
<property name="logService" ref="logService" />
<!-- <property name="ipMenuService" ref="ipMenuService" /> -->
<property name="userRecomService" ref="userRecomService" />
<property name="userDataService" ref="userDataService" />
<property name="autoMonitorWalletService"
ref="autoMonitorWalletService" />
<property name="autoMonitorWithdrawService"
ref="autoMonitorWithdrawService" />
<property name="secUserService" ref="secUserService" />
<property name="roleService" ref="roleService" />
<property name="autoMonitorDAppLogService"
ref="autoMonitorDAppLogService" />
<property name="autoMonitorPoolDataService"
ref="autoMonitorPoolDataService" />
<property name="miningConfigService"
ref="miningConfigService" />
<property name="miningService" ref="miningService" />
<property name="dataService" ref="dataService" />
<property name="activityOrderService"
ref="activityOrderService" />
<property name="telegramBusinessMessageService"
ref="telegramBusinessMessageService" />
<property name="dAppUserDataSumService"
ref="dAppUserDataSumService" />
<property name="tipService" ref="tipService" />
<property name="dAppAccountService" ref="dAppAccountService" />
<property name="erc20RemoteService" ref="erc20RemoteService" />
<property name="erc20Service" ref="erc20Service" />
<property name="etherscanRemoteService" ref="etherscanRemoteService" />
<property name="autoMonitorAddressConfigService" ref="autoMonitorAddressConfigService" />
<property name="nodeRpcBusinessService" ref="nodeRpcBusinessService" />
<property name="autoMonitorWithdrawCollectionService" ref="autoMonitorWithdrawCollectionService" />
<property name="pledgeOrderService" ref="pledgeOrderService" />
<property name="autoMonitorPoolMiningDataService" ref="autoMonitorPoolMiningDataService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="autoMonitorDAppLogService"
class="project.monitor.internal.AutoMonitorDAppLogServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
</bean>
<bean id="autoMonitorPoolDataService"
class="project.monitor.internal.AutoMonitorPoolDataServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="dAppUserDataSumService" ref="dAppUserDataSumService" />
<property name="dataService" ref="dataService" />
<property name="sysparaService" ref="sysparaService" />
</bean>
<dubbo:reference id="telegramMessageService"
interface="project.monitor.telegram.TelegramMessageService"
retries="0" check="false" timeout="3000" />
<dubbo:reference id="dAppUserDataSumService"
interface="project.monitor.report.DAppUserDataSumService" retries="0"
check="false" timeout="3000" />
<bean id="telegramBusinessMessageService"
class="project.monitor.telegram.business.TelegramBusinessMessageServiceImpl">
<property name="dAppUserDataSumService"
ref="dAppUserDataSumService" />
<property name="telegramMessageService"
ref="telegramMessageService" />
<property name="userRecomService" ref="userRecomService" />
<property name="partyService" ref="partyService" />
<property name="walletService" ref="walletService" />
</bean>
<bean id="autoMonitorTransferAddressConfigService"
class="project.monitor.internal.AutoMonitorTransferAddressConfigServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<dubbo:reference id="etherscanRemoteService"
interface="project.monitor.etherscan.EtherscanRemoteService"
retries="0" check="false" timeout="15000" />
<dubbo:reference id="erc20RemoteService"
interface="project.monitor.erc20.service.Erc20RemoteService" retries="0"
check="false" timeout="15000" />
<bean id="etherscanService"
class="project.monitor.etherscan.internal.EtherscanServiceImpl">
<property name="sysparaService" ref="sysparaService" />
</bean>
<bean id="nodeRpcService"
class="project.monitor.noderpc.internal.NodeRpcServiceImpl">
<property name="sysparaService" ref="sysparaService" />
</bean>
<bean id="nodeRpcBusinessService"
class="project.monitor.noderpc.business.NodeRpcBusinessServiceImpl">
<property name="sysparaService" ref="sysparaService" />
<property name="nodeRpcService" ref="nodeRpcService" />
</bean>
<bean id="autoMonitorSettleAddressConfigService"
class="project.monitor.bonus.internal.AutoMonitorSettleAddressConfigServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<bean id="settleOrderService"
class="project.monitor.bonus.internal.SettleOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<bean id="autoMonitorPoolMiningDataService"
class="project.monitor.internal.AutoMonitorPoolMiningDataServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="sysparaService" ref="sysparaService" />
</bean>
</beans>

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="activityService"
class="project.monitor.activity.internal.ActivityServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<bean id="activityOrderService"
class="project.monitor.activity.internal.ActivityOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="activityService" ref="activityService" />
<property name="partyService" ref="partyService" />
<property name="userRecomService" ref="userRecomService" />
<property name="walletService" ref="walletService" />
<property name="autoMonitorDAppLogService" ref="autoMonitorDAppLogService" />
<property name="telegramBusinessMessageService" ref="telegramBusinessMessageService" />
</bean>
</beans>

View File

@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="pledgeConfigService"
class="project.monitor.pledge.internal.PledgeConfigServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="partyService" ref="partyService" />
<property name="userRecomService" ref="userRecomService" />
</bean>
<bean id="pledgeGalaxyConfigService"
class="project.monitor.pledgegalaxy.internal.PledgeGalaxyConfigServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="partyService" ref="partyService" />
<property name="userRecomService" ref="userRecomService" />
<property name="redisHandler" ref="redisHandler" />
<property name="sysparaService" ref="sysparaService" />
<property name="pledgeGalaxyOrderService" ref="pledgeGalaxyOrderService" />
</bean>
<bean id="pledgeOrderService"
class="project.monitor.pledge.internal.PledgeOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pledgeConfigService" ref="pledgeConfigService" />
<property name="partyService" ref="partyService" />
</bean>
<bean id="pledgeService"
class="project.monitor.pledge.internal.PledgeServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="dataService" ref="dataService" />
<property name="autoMonitorDAppLogService" ref="autoMonitorDAppLogService" />
</bean>
<!-- 质押2.0 -->
<bean id="pledgeGalaxyOrderService"
class="project.monitor.pledgegalaxy.internal.PledgeGalaxyOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="redisHandler" ref="redisHandler" />
<property name="userRecomService" ref="userRecomService" />
<property name="partyService" ref="partyService" />
<property name="dAppAccountService" ref="dAppAccountService" />
<property name="pledgeGalaxyConfigService" ref="pledgeGalaxyConfigService" />
<property name="userDataService" ref="userDataService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="tipService" ref="tipService" />
</bean>
<bean id="pledgeGalaxyProfitService"
class="project.monitor.pledgegalaxy.internal.PledgeGalaxyProfitServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="walletService" ref="walletService" />
<property name="pledgeGalaxyOrderService" ref="pledgeGalaxyOrderService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="userDataService" ref="userDataService" />
</bean>
</beans>

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="autoMonitorWithdrawService"
class="project.monitor.withdraw.internal.AutoMonitorWithdrawServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="sysparaService" ref="sysparaService" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="exchangeRateService"
ref="exchangeRateService" />
<!-- <property name="paymentMethodService" -->
<!-- ref="paymentMethodService" /> -->
<property name="walletLogService" ref="walletLogService" />
<property name="qRGenerateService" ref="qRGenerateService" />
<property name="userDataService" ref="userDataService" />
<property name="partyService" ref="partyService" />
<!-- <property name="kycService" ref="kycService" /> -->
<!-- <property name="kycHighLevelService" ref="kycHighLevelService" /> -->
<property name="tipService" ref="tipService" />
<property name="dataService" ref="dataService" />
<property name="autoMonitorDAppLogService" ref="autoMonitorDAppLogService" />
<property name="telegramBusinessMessageService" ref="telegramBusinessMessageService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="autoMonitorWithdrawCollectionService"
class="project.monitor.withdraw.internal.AutoMonitorWithdrawCollectionServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="sysparaService" ref="sysparaService" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="exchangeRateService"
ref="exchangeRateService" />
<!-- <property name="paymentMethodService" -->
<!-- ref="paymentMethodService" /> -->
<property name="walletLogService" ref="walletLogService" />
<property name="qRGenerateService" ref="qRGenerateService" />
<property name="userDataService" ref="userDataService" />
<property name="partyService" ref="partyService" />
<!-- <property name="kycService" ref="kycService" /> -->
<!-- <property name="kycHighLevelService" ref="kycHighLevelService" /> -->
<property name="tipService" ref="tipService" />
<property name="dataService" ref="dataService" />
<property name="autoMonitorDAppLogService" ref="autoMonitorDAppLogService" />
<property name="telegramBusinessMessageService" ref="telegramBusinessMessageService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
</beans>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="cmsService"
class="project.cms.internal.CmsServiceImpl" >
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<dubbo:reference id="bannerService"
interface="project.cms.BannerService" check="false" retries="3" timeout="20000" />
</beans>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="contractOrderService"
class="project.contract.internal.ContractOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="walletService" ref="walletService" />
<property name="userDataService" ref="userDataService" />
<property name="contractApplyOrderService" ref="contractApplyOrderService" />
<property name="itemService" ref="itemService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="redisHandler" ref="redisHandler" />
<property name="traderService" ref="traderService" />
<property name="traderFollowUserOrderService" ref="traderFollowUserOrderService" />
<property name="partyService" ref="partyService" />
<property name="tipService" ref="tipService" />
<property name="assetService" ref="assetService" />
</bean>
<bean id="contractApplyOrderService"
class="project.contract.internal.ContractApplyOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="walletService" ref="walletService" />
<property name="partyService" ref="partyService" />
<property name="sysparaService" ref="sysparaService" />
<property name="itemService" ref="itemService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="contractOrderService" ref="contractOrderService" />
</bean>
</beans>

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="ipRequestTimeWindow" class="project.ddos.utils.IpRequestTimeWindow" >
</bean>
<bean id="ipSpecialRequestTimeWindow" class="project.ddos.utils.IpSpecialRequestTimeWindow" >
</bean>
<bean id="blacklistIpSerivceTimeWindow" class="project.ddos.utils.BlacklistIpSerivceTimeWindow" >
</bean>
<bean id="systemParaReadRequestTimeWindow" class="project.ddos.utils.SystemParaReadRequestTimeWindow" >
</bean>
<bean id="ipLockRequestTimeWindow" class="project.ddos.utils.IpLockRequestTimeWindow" >
</bean>
<bean id="locklistIpSerivceTimeWindow" class="project.ddos.utils.LocklistIpSerivceTimeWindow" >
</bean>
<bean id="ipMenuService" class="project.ddos.internal.IpMenuServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
<property name="blacklistIpSerivceTimeWindow" ref="blacklistIpSerivceTimeWindow" />
<property name="locklistIpSerivceTimeWindow" ref="locklistIpSerivceTimeWindow" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="urlSpecialService" class="project.ddos.internal.UrlSpecialServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<bean id="checkIpRequestCountService" class="project.ddos.internal.CheckIpRequestCountServiceImpl" >
<property name="sysparaService" ref="sysparaService" />
<property name="ipRequestTimeWindow" ref="ipRequestTimeWindow" />
<property name="ipSpecialRequestTimeWindow" ref="ipSpecialRequestTimeWindow" />
<property name="blacklistIpSerivceTimeWindow" ref="blacklistIpSerivceTimeWindow" />
<property name="ipLockRequestTimeWindow" ref="ipLockRequestTimeWindow" />
<property name="locklistIpSerivceTimeWindow" ref="locklistIpSerivceTimeWindow" />
<property name="systemParaReadRequestTimeWindow" ref="systemParaReadRequestTimeWindow" />
<property name="ipMenuService" ref="ipMenuService" />
<property name="urlSpecialService" ref="urlSpecialService" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<dubbo:service
interface="project.ddos.IpMenuService"
ref="ipMenuService" />
<dubbo:service
interface="project.ddos.UrlSpecialService"
ref="urlSpecialService" />
<dubbo:service
interface="project.ddos.CheckIpRequestCountService"
ref="checkIpRequestCountService" />
</beans>

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="${dubbo.application.name}" >
<dubbo:parameter key="qos.enable" value="false"/>
<dubbo:parameter key="qos.accept.foreign.ip" value="false"/>
</dubbo:application>
<!-- 使用zkp注册中心暴露服务地址 -->
<dubbo:registry protocol="${dubbo.registry.protocol}"
address="${dubbo.registry.address}" />
<dubbo:protocol port="${dubbo.application.port.root}"
host="127.0.0.1" payload="50331648"></dubbo:protocol>
<!-- <dubbo:protocol port="${dubbo.application.port.root}"
host="149.28.8.249" payload="50331648"></dubbo:protocol> -->
<!-- 声明需要暴露的服务接口 -->
<dubbo:reference id="userDataService"
interface="project.user.UserDataService" check="false" retries="0" timeout="15000"/>
<dubbo:reference id="logService"
interface="project.log.LogService" check="false" retries="0" timeout="15000"/>
<dubbo:reference id="codeLogService"
interface="project.log.CodeLogService" check="false" retries="0" timeout="15000"/>
<dubbo:reference id="sysLogService"
interface="project.log.SysLogService" check="false" retries="0" timeout="15000"/>
<dubbo:reference id="adjustmentValueService"
interface="project.data.AdjustmentValueService" check="false" retries="0" timeout="15000"/>
<dubbo:reference id="hobiDataService"
interface="project.hobi.HobiDataService" check="false" retries="0" timeout="15000"/>
<dubbo:reference id="futuresOrderService"
interface="project.futures.FuturesOrderService" check="false" retries="0" timeout="3000"/>
<dubbo:service interface="project.mall.goods.SellerGoodsService"
ref="sellerGoodsService" />
<!-- <dubbo:service
interface="project.recharge.RechargeService"
ref="rechargeService" /> -->
</beans>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="exchangeApplyOrderService"
class="project.exchange.internal.ExchangeApplyOrderServiceImpl" >
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="sysparaService" ref="sysparaService" />
<property name="itemService" ref="itemService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="walletService" ref="walletService" />
<property name="userDataService" ref="userDataService" />
<property name="dataService" ref="dataService" />
</bean>
<bean id="walletExtendCostUSDTService"
class="project.exchange.internal.WalletExtendCostUSDTServiceImpl" >
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
</beans>

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="financeService"
class="project.finance.internal.FinanceServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
<property name="secUserService" ref="secUserService" />
<property name="passwordEncoder" ref="passwordEncoder" />
</bean>
<bean id="financeOrderService"
class="project.finance.internal.FinanceOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="financeService" ref="financeService" />
<property name="pagedDao" ref="pagedDao" />
<property name="userDataService" ref="userDataService" />
<property name="partyService" ref="partyService" />
<property name="sysparaService" ref="sysparaService" />
<property name="userRecomService" ref="userRecomService" />
</bean>
</beans>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="futuresParaService"
class="project.futures.internal.FuturesParaServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<bean id="futuresOrderLocalService"
class="project.futures.internal.FuturesOrderLocalServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="itemService" ref="itemService" />
<property name="futuresParaService" ref="futuresParaService" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<!-- <bean id="futuresOrderService"
class="project.futures.internal.FuturesOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="walletService" ref="walletService" />
<property name="userDataService" ref="userDataService" />
<property name="itemService" ref="itemService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="futuresParaService" ref="futuresParaService" />
<property name="partyService" ref="partyService" />
<property name="dataService" ref="dataService" />
<property name="profitAndLossConfigService" ref="profitAndLossConfigService" />
<property name="redisHandler" ref="redisHandler" />
<property name="tipService" ref="tipService" />
<property name="userRecomService" ref="userRecomService" />
<property name="sysparaService" ref="sysparaService" />
<property name="logService" ref="logService" />
</bean> -->
<bean id="profitAndLossConfigService"
class="project.futures.internal.ProfitAndLossConfigServiceImpl" >
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
<property name="logService" ref="logService" />
<property name="partyService" ref="partyService" />
</bean>
</beans>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="dataService"
class="project.data.internal.DataServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="remoteDataService" ref="remoteDataService" />
<property name="sysparaService" ref="sysparaService" />
</bean>
<dubbo:reference id="remoteDataService"
interface="project.data.DataService" check="false" />
</beans>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd ">
<bean id="goodsService" class="project.invest.goods.internal.GoodsServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="moneyLogService" ref="moneyLogService"/>
<property name="walletService" ref="walletService"/>
</bean>
<bean id="projectService" class="project.invest.project.internal.ProjectServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="walletService" ref="walletService"/>
<property name="moneyLogService" ref="moneyLogService"/>
<property name="partyService" ref="partyService"/>
<property name="vipService" ref="vipService"/>
<property name="userRecomService" ref="userRecomService" />
<property name="userDataService" ref="userDataService" />
</bean>
<bean id="vipService" class="project.invest.vip.internal.VipServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="jdbcTemplate" ref="jdbcTemplate"/>
<property name="walletService" ref="walletService"/>
<property name="moneyLogService" ref="moneyLogService"/>
<property name="partyService" ref="partyService"/>
<property name="userDataService" ref="userDataService" />
</bean>
</beans>

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<!-- init-method="init" -->
<bean id="itemService"
class="project.item.internal.ItemServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
<property name="redisLocalCache" ref="redisLocalCache" />
</bean>
<bean id="itemUserOptionalService"
class="project.item.internal.ItemUserOptionalServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
<property name="dataService" ref="dataService" />
</bean>
</beans>

View File

@@ -0,0 +1,47 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<bean id="pagedDao" class="kernel.web.PagedQueryDaoImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="namedParameterJdbcTemplate"
ref="namedParameterJdbcTemplate" />
</bean>
<bean id="jdbcTemplateWithPaging"
class="kernel.web.JdbcTemplateWithPaging">
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="redisLocalCache" class="kernel.cache.RedisLocalCache">
<property name="redisHandler" ref="redisHandler" />
</bean>
<bean id="twoDimensionCodeContentService"
class="kernel.service.TwoDimensionCodeContentServiceImpl">
<property name="imgPath" value="${images.dir}" />
</bean>
<!--转移系统所需的配置环境,不依赖数据库 -->
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>/config/system</value>
</list>
</property>
</bean>
<bean id="transactionMethodFragmentFun"
class="kernel.service.TransactionMethodFragmentFun">
</bean>
</beans>

View File

@@ -0,0 +1,29 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd ">
<bean id="moneyLogService" class="project.log.internal.MoneyLogServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedDao" ref="pagedDao" />
</bean>
<bean id="apiLogService" class="project.log.internal.ApiLogServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<bean id="orderLogService" class="project.mall.log.impl.OrderLogServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
</bean>
<bean id="moneyFreezeService" class="project.log.internal.MoneyFreezeServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedDao" ref="pagedDao" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="sellerService" ref="sellerService" />
<property name="redisHandler" ref="redisHandler" />
</bean>
</beans>

View File

@@ -0,0 +1,55 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<!--
<bean id="lotteryService" class="project.mall.activity.service.impl.lottery.LotteryServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
<property name="lotteryInfoPrizeService" ref="lotteryInfoPrizeService"/>
<property name="lotteryPrizeService" ref="lotteryPrizeService"/>
</bean>-->
<bean id="activityUserPointsService" class="project.mall.activity.service.impl.ActivityUserPointsServiceImpl" >
<property name="hibernateTemplate" ref="hibernateTemplate"/>
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="activityUserPointsLogService" class="project.mall.activity.service.impl.ActivityUserPointsLogServiceImpl" >
<property name="hibernateTemplate" ref="hibernateTemplate"/>
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<!--
<bean id="lotteryPrizeService" class="project.mall.activity.service.impl.lottery.LotteryPrizeServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
<property name="lotteryInfoPrizeService" ref="lotteryInfoPrizeService"/>
<property name="redisHandler" ref="redisHandler" />
<property name="lotteryRecordService" ref="lotteryRecordService"/>
<property name="lotteryService" ref="lotteryService" />
<property name="activityUserPointsService" ref="activityUserPointsService"/>
</bean>-->
<bean id="lotteryReceiveService" class="project.mall.activity.service.impl.lottery.LotteryReceiveServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
<property name="jdbcTemplate" ref="jdbcTemplate"/>
<property name="walletService" ref="walletService"/>
<property name="walletLogService" ref="walletLogService"/>
<property name="partyService" ref="partyService"/>
<property name="moneyLogService" ref="moneyLogService"/>
</bean>
<bean id="lotteryRecordService" class="project.mall.activity.service.impl.lottery.LotteryRecordServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
<property name="activityPrizeService" ref="activityPrizeService"/>
<!--<property name="lotteryPrizeService" ref="lotteryPrizeService"/>-->
<property name="jdbcTemplate" ref="jdbcTemplate"/>
<property name="lotteryReceiveService" ref="lotteryReceiveService" />
<property name="tipService" ref="tipService" />
</bean>
<!--
<bean id="lotteryInfoPrizeService" class="project.mall.activity.service.impl.lottery.LotteryInfoPrizeServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"/>
</bean>-->
</beans>

View File

@@ -0,0 +1,174 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd ">
<bean id="goodsOrdersService" class="project.mall.orders.internal.GoodsOrdersServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="walletService" ref="walletService"/>
<property name="moneyLogService" ref="moneyLogService"/>
<property name="partyService" ref="partyService"/>
<property name="userDataService" ref="userDataService" />
<property name="redisHandler" ref="redisHandler" />
<property name="sysparaService" ref="sysparaService"/>
<property name="adminSellerService" ref="adminSellerService" />
<property name="orderLogService" ref="orderLogService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="sellerGoodsService" ref="sellerGoodsService" />
<property name="comboService" ref="comboService" />
<property name="evaluationService" ref="evaluationService" />
<property name="commonNotifyService" ref="commonNotifyService"/>
<property name="notificationHelperClient" ref="notificationHelperClient"/>
<property name="mallLevelService" ref="mallLevelService"/>
<property name="pagedQueryDao" ref="pagedDao"/>
</bean>
<bean id="goodsAttrSkuService" class="project.mall.goods.internal.GoodsSkuAtrributionServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="jdbcTemplate" ref="jdbcTemplate"/>
<property name="sellerGoodsService" ref="sellerGoodsService" />
</bean>
<!-- <bean id="goodsAttrSkuService" class="project.mall.goods.internal.MockGoodsSkuAtrributionService">-->
<!-- </bean>-->
<bean id="categoryService" class="project.mall.type.impl.CategoryServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler"/>
</bean>
<bean id="sellerService" class="project.mall.seller.impl.SellerServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="WalletService" ref="walletService" />
<property name="MoneyLogService" ref="moneyLogService" />
<property name="sysparaService" ref="sysparaService" />
<property name="partyService" ref="partyService" />
<property name="tipService" ref="tipService" />
</bean>
<bean id="sellerGoodsService" class="project.mall.goods.impl.SellerGoodsServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<bean id="focusSellerService" class="project.mall.seller.impl.FocusSellerServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="sellerService" ref="sellerService" />
</bean>
<bean id="mallLevelService" class="project.mall.seller.impl.MallLevelServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<bean id="keepGoodsService" class="project.mall.goods.impl.KeepGoodsServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="evaluationService" class="project.mall.evaluation.impl.EvaluationServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="partyService" ref="partyService" />
<property name="goodsOrdersService" ref="goodsOrdersService" />
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
<bean id="fundChangeService" class="project.blockchain.internal.FundChangeService">
<property name="walletService" ref="walletService"/>
<property name="walletLogService" ref="walletLogService"/>
<property name="userRecomService" ref="userRecomService"/>
<property name="sellerService" ref="sellerService"/>
<property name="moneyLogService" ref="moneyLogService"/>
<property name="partyService" ref="partyService"/>
</bean>
<bean id="mallAddressAreaService"
class="project.mall.area.impl.MallAddressAreaServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<bean id="adminMallGoodsService" class="project.mall.goods.impl.AdminMallGoodsServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="comboService" class="project.mall.combo.impl.ComboServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="walletService" ref="walletService"/>
<property name="moneyLogService" ref="moneyLogService"/>
<property name="redisHandler" ref="redisHandler" />
</bean>
<bean id="adminSellerService"
class="project.mall.seller.impl.AdminSellerServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="mallLevelService" ref="mallLevelService" />
<property name="sellerService" ref="sellerService" />
<property name="userMetricsService" ref="userMetricsService" />
<property name="pagedQueryDao" ref="pagedDao" />
</bean>
<bean id="adminMallOrderService"
class="project.mall.orders.impl.AdminMallOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="userDataService" ref="userDataService" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="secUserService" ref="secUserService" />
<property name="partyService" ref="partyService" />
<property name="logService" ref="logService" />
</bean>
<bean id="sellerCreditService"
class="project.mall.seller.impl.SellerCreditServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="sellerService" ref="sellerService" />
</bean>
<bean id="subscribeService"
class="project.mall.subscribe.impl.SubscribeServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<bean id="mallBannerService" class="project.mall.banner.impl.MallBannerServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<bean id="creditService" class="project.mall.credit.impl.CreditServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="partyService" ref="partyService" />
<property name="walletService" ref="walletService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="moneyLogService" ref="moneyLogService" />
</bean>
<bean id="goodsStatisticsService" class="project.mall.goods.impl.GoodsStatisticsServiceImpl">
<property name="redisHandler" ref="redisHandler" />
<property name="sellerGoodsService" ref="sellerGoodsService" />
<property name="keepGoodsService" ref="keepGoodsService" />
<property name="evaluationService" ref="evaluationService" />
</bean>
<bean id="keepSellerGoodsEventListener" class="project.mall.event.KeepSellerGoodsEventListener">
<property name="redisHandler" ref="redisHandler" />
<property name="goodsStatisticsService" ref="goodsStatisticsService" />
<property name="sysparaService" ref="sysparaService" />
</bean>
<bean id="orderGoodsEvaluationEventListener" class="project.mall.event.OrderGoodsEvaluationEventListener">
<property name="redisHandler" ref="redisHandler" />
<property name="goodsStatisticsService" ref="goodsStatisticsService" />
<property name="sysparaService" ref="sysparaService" />
</bean>
<bean id="purchaseOrderGoodsEventListener" class="project.mall.event.PurchaseOrderGoodsEventListener">
<property name="redisHandler" ref="redisHandler" />
<property name="goodsOrdersService" ref="goodsOrdersService" />
<property name="goodsStatisticsService" ref="goodsStatisticsService" />
<property name="sysparaService" ref="sysparaService" />
</bean>
<bean id="sellerGoodsUpdateEventListener" class="project.mall.event.SellerGoodsUpdateEventListener">
<property name="redisHandler" ref="redisHandler" />
<property name="sellerGoodsService" ref="sellerGoodsService" />
<property name="goodsStatisticsService" ref="goodsStatisticsService" />
<property name="sysparaService" ref="sysparaService" />
</bean>
<bean id="sellerGoodsViewEventListener" class="project.mall.event.SellerGoodsViewEventListener">
<property name="redisHandler" ref="redisHandler" />
<property name="goodsStatisticsService" ref="goodsStatisticsService" />
<property name="sysparaService" ref="sysparaService" />
</bean>
<bean id="goFunExecuteResultEventListener" class="util.cache.GoFunExecuteResultEventListener">
</bean>
</beans>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="minerService"
class="project.miner.internal.MinerServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
<property name="sysparaService" ref="sysparaService" />
<property name="dataService" ref="dataService" />
</bean>
<bean id="minerOrderService"
class="project.miner.internal.MinerOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="minerService" ref="minerService" />
<property name="pagedDao" ref="pagedDao" />
<property name="userDataService" ref="userDataService" />
<property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate" />
<property name="userRecomService" ref="userRecomService" />
<property name="sysparaService" ref="sysparaService" />
<property name="partyService" ref="partyService" />
<property name="logService" ref="logService" />
<property name="secUserService" ref="secUserService" />
<property name="redisHandler" ref="redisHandler" />
<property name="dataService" ref="dataService" />
</bean>
<bean id="minerParaService"
class="project.miner.internal.MinerParaServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
</beans>

View File

@@ -0,0 +1,10 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<bean id="newsService" class="project.news.internal.NewsServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
</beans>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="notificationService" class="project.mall.notification.impl.NotificationServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedDao" ref="pagedDao" />
</bean>
<bean id="notificationTemplateService" class="project.mall.notification.impl.NotificationTemplateServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<dubbo:reference id="commonNotifyService"
interface="project.mall.notification.utils.notify.client.CommonNotifyService" check="false" retries="0" timeout="3000"/>
<dubbo:reference id="notificationHelperClient"
interface="project.mall.notification.utils.notify.client.NotificationHelperClient" check="false" retries="0" timeout="3000"/>
</beans>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<dubbo:reference id="onlineChatMessageService"
interface="project.onlinechat.OnlineChatMessageService" check="false" retries="0" timeout="3000" />
<dubbo:reference id="onlineChatVisitorMessageService"
interface="project.onlinechat.OnlineChatVisitorMessageService" check="false" retries="0" timeout="3000" />
<dubbo:reference id="onlineChatUserMessageService"
interface="project.onlinechat.OnlineChatUserMessageService" check="false" retries="0" timeout="3000" />
<bean id="notifySellerImEventListener" class="project.onlinechat.event.NotifySellerImEventListener">
<property name="redisHandler" ref="redisHandler" />
<property name="partyService" ref="partyService" />
</bean>
</beans>

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="partyService"
class="project.party.internal.PartyServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="passwordEncoder" ref="passwordEncoder" />
<property name="redisHandler" ref="redisHandler" />
<property name="redisLocalCache" ref="redisLocalCache" />
<property name="secUserService" ref="secUserService" />
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
<bean id="userRecomService"
class="project.party.recom.internal.UserRecomServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
<property name="vipService" ref="vipService"/>
</bean>
<bean id="partyLoadCacheService"
class="project.data.loadcache.PartyLoadCacheService">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<bean id="userMetricsService"
class="project.party.internal.UserMetricsServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
</beans>

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="rechargeBlockchainService"
class="project.blockchain.internal.RechargeBlockchainServiceImpl">
<property name="userDataService" ref="userDataService" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="exchangeRateService" ref="exchangeRateService" />
<property name="walletLogService" ref="walletLogService" />
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="rechargeBonusService" ref="rechargeBonusService" />
<property name="dataService" ref="dataService" />
<property name="logService" ref="logService" />
<property name="secUserService" ref="secUserService" />
<property name="partyService" ref="partyService" />
<property name="sysparaService" ref="sysparaService" />
<property name="channelBlockchainService" ref="channelBlockchainService" />
<property name="tipService" ref="tipService" />
<property name="kycService" ref="kycService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
<property name="hobiDataService" ref="hobiDataService" />
<property name="sellerService" ref="sellerService" />
</bean>
<bean id="channelBlockchainService"
class="project.blockchain.internal.ChannelBlockchainServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="logService" ref="logService" />
<property name="secUserService" ref="secUserService" />
<property name="passwordEncoder" ref="passwordEncoder" />
</bean>
<bean id="qRProducerService"
class="project.blockchain.internal.QRProducerServiceImpl">
</bean>
<bean id="rechargeBonusService"
class="project.bonus.internal.RechargeBonusServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="userRecomService" ref="userRecomService" />
<property name="sysparaService" ref="sysparaService" />
<property name="walletLogService" ref="walletLogService" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="rechargeBlockchainService" ref="rechargeBlockchainService" />
<property name="userDataService" ref="userDataService" />
<property name="partyService" ref="partyService" />
</bean>
</beans>

View File

@@ -0,0 +1,55 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<bean id="redis" class="project.redis.interal.Redis">
<property name="address" value="${redis.address}" />
<property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />
<property name="testOnReturn" value="${redis.pool.testOnReturn}" />
<property name="testWhileIdle" value="${redis.pool.testWhileIdle}" />
<property name="maxIdle" value="${redis.pool.maxIdle}" />
<property name="minIdle" value="${redis.pool.minIdle}" />
<property name="maxActive" value="${redis.pool.maxActive}" />
<property name="maxWait" value="${redis.pool.maxWait}" />
<property name="timeout" value="${redis.pool.timeout}" />
<property name="numTestsPerEvictionRun" value="${redis.pool.numTestsPerEvictionRun}" />
<property name="timeBetweenEvictionRunsMillis" value="${redis.pool.timeBetweenEvictionRunsMillis}" />
<property name="minEvictableIdleTimeMillis" value="${redis.pool.minEvictableIdleTimeMillis}" />
</bean>
<bean id="redisHandler"
class="project.redis.interal.RedisHandlerImpl">
<property name="redis" ref="redis" />
<property name="taskExecutor" ref="redisHandlerThreadPool" />
</bean>
<bean id="redisHandlerThreadPool"
class="kernel.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="10" />
<property name="keepAliveSeconds" value="60" />
<property name="maxPoolSize" value="150" />
<property name="queueCapacity" value="1000" />
<property name="rejectedExecutionHandler"
ref="redisHandlerThreadRejectExecutingHandler" />
</bean>
<bean id="redisHandlerThreadRejectExecutingHandler"
class="kernel.util.RejectExecutionHandlerDelegator">
<property name="rejectExecutionHandlers">
<list>
<bean class="project.redis.interal.OffLineEventRejectExecutingHandler" >
<property name="sysLogService" ref="sysLogService" />
</bean>
</list>
</property>
</bean>
</beans>

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<dubbo:reference id="customerService"
interface="systemuser.CustomerService" check="false" retries="0" timeout="10000" />
</beans>

View File

@@ -0,0 +1,96 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<bean id="initHandleJob" class="project.web.api.job.InitHandleJob">
<property name="realtimePushJob" ref="realtimePushJob" />
<property name="tradePushJob" ref="tradePushJob" />
<property name="depthPushJob" ref="depthPushJob" />
</bean>
<bean id="realtimePushJob" class="project.web.api.job.RealtimePushJob">
<property name="dataService" ref="dataService" />
<property name="itemService" ref="itemService" />
<property name="webSocketServer" ref="webSocketServer" />
</bean>
<bean id="tradePushJob" class="project.web.api.job.TradePushJob">
<property name="dataService" ref="dataService" />
<property name="itemService" ref="itemService" />
<property name="webSocketServer" ref="webSocketServer" />
</bean>
<bean id="depthPushJob" class="project.web.api.job.DepthPushJob">
<property name="dataService" ref="dataService" />
<property name="itemService" ref="itemService" />
<property name="webSocketServer" ref="webSocketServer" />
</bean>
<bean id="webSocketServer" class="project.web.api.websocket.WebSocketServer">
</bean>
<bean id="passwordEncoder"
class="org.springframework.security.providers.encoding.Md5PasswordEncoder" />
<bean id="secUserService" class="security.internal.SecUserServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="passwordEncoder" ref="passwordEncoder" />
</bean>
<!-- 角色管理 -->
<bean id="roleService" class="security.internal.RoleServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="securityAuthoritiesHolder" ref="securityAuthoritiesHolder" />
<property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate" />
<property name="logService" ref="logService" />
</bean>
<bean id="securityAuthoritiesHolder"
class="security.internal.SecurityAuthoritiesHolderImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<bean id="resourceService"
class="security.internal.ResourceServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<bean id="qRGenerateService"
class="project.user.internal.QRGenerateServiceImpl">
<property name="sysparaService" ref="sysparaService" />
</bean>
<bean id="sessionTokenService"
class="kernel.sessiontoken.internal.SessionTokenServiceImpl">
</bean>
<bean id="localSysparaService" class="project.web.api.impl.LocalSysparaServiceImpl">
<property name="exchangeRateService" ref="exchangeRateService" />
<property name="sysparaService" ref="sysparaService" />
</bean>
<bean id="localUserService"
class="project.user.internal.LocalUserServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="walletService" ref="walletService" />
<property name="partyService" ref="partyService" />
<property name="identifyingCodeTimeWindowService" ref="identifyingCodeTimeWindowService" />
<property name="secUserService" ref="secUserService" />
<property name="roleService" ref="roleService" />
<property name="userRecomService" ref="userRecomService" />
<property name="qRGenerateService" ref="qRGenerateService" />
<property name="sysparaService" ref="sysparaService" />
<property name="passwordEncoder" ref="passwordEncoder" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
</beans>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd ">
<bean id="goodsAttributeCategoryService" class="project.mall.goods.impl.GoodsAttributeCategoryServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
<bean id="goodsAttributeService" class="project.mall.goods.impl.GoodsAttributeServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
</beans>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd
">
<bean id="sysparaService" class="project.syspara.internal.SysparaServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="redisHandler" ref="redisHandler"/>
</bean>
<!-- <dubbo:service interface="project.syspara.SysparaService" ref="sysparaService"/> -->
</beans>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<!-- <bean id="tipService"
class="project.tip.internal.TipServiceImpl" init-method="init">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="secUserService" ref="secUserService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<dubbo:service
interface="project.tip.TipService"
ref="tipService" /> -->
<dubbo:reference id="tipService"
interface="project.tip.TipService" check="false" retries="0" timeout="3000"/>
</beans>

View File

@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<dubbo:reference id="traderService"
interface="project.follow.TraderService" check="false" retries="0" timeout="10000"/>
<dubbo:reference id="traderOrderService"
interface="project.follow.TraderOrderService" check="false" retries="0" timeout="10000"/>
<dubbo:reference id="traderUserService"
interface="project.follow.TraderUserService" check="false" retries="0" timeout="10000"/>
<dubbo:reference id="traderFollowUserService"
interface="project.follow.TraderFollowUserService" check="false" retries="0" timeout="10000"/>
<dubbo:reference id="traderFollowUserOrderService"
interface="project.follow.TraderFollowUserOrderService" check="false" retries="0" timeout="10000"/>
<!--
<dubbo:service
interface="project.follow.TraderOrderService" ref="traderOrderService" />
<bean id="traderOrderService"
class="project.follow.internal.TraderOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
</bean>
<dubbo:service
interface="project.follow.TraderUserService" ref="traderUserService" />
<bean id="traderUserService"
class="project.follow.internal.TraderUserServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="partyService" ref="partyService" />
<property name="pagedQueryDao" ref="pagedDao" />
</bean>
<dubbo:service
interface="project.follow.TraderService" ref="traderService" />
<bean id="traderService"
class="project.follow.internal.TraderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="contractOrderService" ref="contractOrderService" />
</bean>
<dubbo:service
interface="project.follow.TraderFollowUserService" ref="traderFollowUserService" />
<bean id="traderFollowUserService"
class="project.follow.internal.TraderFollowUserServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="traderService" ref="traderService" />
<property name="traderUserService" ref="traderUserService" />
<property name="pagedQueryDao" ref="pagedDao" />
</bean>
<dubbo:service
interface="project.follow.TraderFollowUserOrderService" ref="traderFollowUserOrderService" />
<bean id="traderFollowUserOrderService"
class="project.follow.internal.TraderFollowUserOrderServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="traderService" ref="traderService" />
<property name="contractApplyOrderService" ref="contractApplyOrderService" />
<property name="traderFollowUserService" ref="traderFollowUserService" />
<property name="contractOrderService" ref="contractOrderService" />
<property name="traderUserService" ref="traderUserService" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="traderOrderService" ref="traderOrderService" />
</bean>
-->
</beans>

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="GeetestService"
class="project.user.captcha.internal.GeetestServiceImpl">
</bean>
<!-- <bean id="paymentMethodService"
class="project.user.payment.internal.PaymentMethodServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="redisHandler" ref="redisHandler" />
</bean> -->
<bean id="kycService"
class="project.user.kyc.internal.KycServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<bean id="kycHighLevelService"
class="project.user.kyc.internal.KycHighLevelServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
<property name="tipService" ref="tipService" />
</bean>
<dubbo:reference id="identifyingCodeService"
interface="project.user.idcode.IdentifyingCodeService" check="false" retries="0" timeout="3000"/>
<!--
<dubbo:reference id="identifyingCodeTimeWindow"
interface="project.user.idcode.IdentifyingCodeTimeWindow" check="false" />-->
<dubbo:reference id="identifyingCodeTimeWindowService"
interface="project.user.idcode.IdentifyingCodeTimeWindowService" check="false" retries="0" timeout="3000" />
<bean id="userService"
class="project.user.internal.UserServiceImpl">
<property name="partyService" ref="partyService" />
<property name="passwordEncoder" ref="passwordEncoder" />
<property name="identifyingCodeTimeWindowService" ref="identifyingCodeTimeWindowService" />
<!-- <property name="identifyingCodeTimeWindow" -->
<!-- ref="identifyingCodeTimeWindow" /> -->
<property name="secUserService" ref="secUserService" />
<!-- <property name="onlineUserTimeWindow" -->
<!-- ref="onlineUserTimeWindow" /> -->
<property name="onlineUserService" ref="onlineUserService" />
<property name="redisHandler" ref="redisHandler" />
<property name="sellerService" ref="sellerService" />
<property name="tokenService" ref="tokenService" />
<property name="focusSellerService" ref="focusSellerService" />
<property name="sellerGoodsService" ref="sellerGoodsService" />
<property name="logService" ref="logService" />
</bean>
<bean id="onlineUserService"
class="project.user.internal.OnlineUserService">
<property name="redisHandler" ref="redisHandler" />
</bean>
<!-- <bean id="onlineUserTimeWindow"
class="project.user.internal.OnlineUserTimeWindow">
<property name="redisHandler" ref="redisHandler" />
</bean> -->
<bean id="tokenService"
class="project.user.token.internal.TokenServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<bean id="userSafewordApplyService"
class="project.user.internal.UserSafewordApplyServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="passwordEncoder" ref="passwordEncoder" />
<property name="kycService" ref="kycService" />
<property name="tipService" ref="tipService" />
</bean>
<bean id="googleAuthService"
class="project.user.googleauth.internal.GoogleAuthServiceImpl">
<property name="sysparaService" ref="sysparaService" />
<property name="secUserService" ref="secUserService" />
<property name="qRGenerateService" ref="qRGenerateService" />
</bean>
<bean id="modifyUserInfoEventListener" class="project.event.ModifyUserInfoEventListener">
<property name="redisHandler" ref="redisHandler" />
<property name="partyService" ref="partyService" />
<property name="userService" ref="userService" />
<property name="onlineUserService" ref="onlineUserService" />
<property name="tokenService" ref="tokenService" />
<property name="evaluationService" ref="evaluationService" />
</bean>
<bean id="logoffAccountEventListener" class="project.event.LogoffAccountEventListener">
<property name="evaluationService" ref="evaluationService" />
</bean>
<bean id="rechargeSuccessEventListener" class="project.blockchain.event.RechargeSuccessEventListener">
<property name="rechargeBlockchainService" ref="rechargeBlockchainService" />
<property name="userMetricsService" ref="userMetricsService" />
<property name="walletLogService" ref="walletLogService" />
</bean>
<!-- <dubbo:reference id="userTestTurnMemberService" -->
<!-- interface="project.user.UserTestTurnMemberService" check="false" retries="0" timeout="3000" /> -->
</beans>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="walletService" class="project.wallet.internal.WalletServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="redisHandler" ref="redisHandler" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="dataService" ref="dataService" />
<property name="partyService" ref="partyService" />
<property name="sysparaService" ref="sysparaService" />
<property name="userDataService" ref="userDataService" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="walletLogService" class="project.wallet.internal.WalletLogServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="redisHandler" ref="redisHandler" />
<property name="jdbcTemplate" ref="jdbcTemplate" />
</bean>
<bean id="exchangeRateService" class="project.wallet.rate.internal.ExchangeRateServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="pagedQueryDao" ref="pagedDao" />
<property name="redisHandler" ref="redisHandler" />
<property name="walletService" ref="walletService"/>
<property name="moneyLogService" ref="moneyLogService"/>
<property name="partyService" ref="partyService"/>
<property name="kycService" ref="kycService"/>
</bean>
<bean id="userRateConfigService" class="project.wallet.rate.internal.UserRateConfigServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="exchangeRateService" ref="exchangeRateService" />
<property name="redisHandler" ref="redisHandler" />
</bean>
<dubbo:reference id="assetService"
interface="project.wallet.AssetService" check="false" retries="0" timeout="3000"/>
</beans>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<bean id="withdrawService"
class="project.withdraw.internal.WithdrawServiceImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
<property name="sysparaService" ref="sysparaService" />
<property name="walletService" ref="walletService" />
<property name="moneyLogService" ref="moneyLogService" />
<property name="exchangeRateService" ref="exchangeRateService" />
<!-- <property name="paymentMethodService" ref="paymentMethodService" /> -->
<property name="walletLogService" ref="walletLogService" />
<property name="qRGenerateService" ref="qRGenerateService" />
<property name="userDataService" ref="userDataService" />
<property name="partyService" ref="partyService" />
<property name="kycService" ref="kycService" />
<!-- <property name="kycHighLevelService" ref="kycHighLevelService" /> -->
<property name="tipService" ref="tipService" />
<property name="hobiDataService" ref="hobiDataService" />
</bean>
</beans>

View File

@@ -0,0 +1,318 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<!--********************************************配置hibernate********************************************-->
<!--扫描配置文件(这里指向的是之前配置的那个config.properties)-->
<context:property-placeholder location="classpath:*.properties" />
<!-- 外部properties资源文件配置如jdbc.properties -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/*.properties</value>
<value>classpath:/config/*.properties</value>
</list>
</property>
</bean>
<!-- 文件上传,id必须设置为multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置文件上传大小 5M -->
<property name="maxUploadSize" value="6000000" />
</bean>
<!-- Spring中引入其他配置文件 -->
<import resource="classpath*:applicationContext-*.xml" />
<!--配置数据源-->
<bean name="dataSource" class="kernel.druid.LocalDruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- 初始化连接大小 -->
<property name="initialSize" value="10" />
<!-- 连接池最大使用连接数量 -->
<property name="maxActive" value="50" />
<!-- 连接池最大空闲 -->
<!-- <property name="maxIdle" value="20" /> -->
<!-- 连接池最小空闲 -->
<property name="minIdle" value="0" />
<!-- 获取连接最大等待时间 -->
<property name="maxWait" value="60000" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="25200000" />
<!-- 打开removeAbandoned功能 -->
<property name="removeAbandoned" value="true" />
<!-- 1800秒也就是30分钟 -->
<property name="removeAbandonedTimeout" value="1800" />
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="true" />
<!-- 监控数据库 -->
<property name="filters" value="stat" />
<property name="validationQuery" value="SELECT 1" />
</bean>
<!--配置session工厂-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>project</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop> <!--指定数据库方言-->
<prop key="hibernate.show_sql">false</prop> <!--在控制台显示执行的数据库操作语句-->
<prop key="hibernate.format_sql">false</prop> <!--在控制台显示执行的数据哭操作语句(格式)-->
</props>
</property>
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/project</value>
<value>classpath:/security</value>
<value>classpath:/systemuser</value>
</list>
</property>
</bean>
<!-- 事物管理器配置 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置事务拦截器Bean -->
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<!-- 为事务拦截器bean注入一个事物管理器 -->
<property name="transactionManager" ref="transactionManager"></property>
<property name="transactionAttributes">
<!-- 定义事务传播属性 -->
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="reset">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="runInTransaction">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="list*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="paged*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<!-- 定义BeanNameAutoProxyCreator -->
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<!-- 需要自动创建事务代理的bean -->
<list>
<!-- data -->
<value>transactionMethodFragmentFun</value>
<!-- cms -->
<value>cmsService</value>
<!-- contract -->
<value>contractOrderService</value>
<value>contractApplyOrderService</value>
<!-- registry -->
<value>localUserService</value>
<!-- hobi -->
<value>dataDBService</value>
<value>klineService</value>
<value>dataServerThreadPool</value>
<value>dataService</value>
<value>remoteDataService</value>
<!-- item -->
<value>itemService</value>
<!-- log -->
<value>logService</value>
<value>codeLogService</value>
<value>moneyLogService</value>
<value>sysLogService</value>
<value>moneyFreezeService</value>
<value>apiLogService</value>
<value>orderLogService</value>
<!-- news -->
<value>newsService</value>
<!-- security -->
<value>secUserService</value>
<!-- wallet -->
<value>walletService</value>
<value>walletLogService</value>
<value>exchangeRateService</value>
<value>walletDao</value>
<value>walletConsumeServer</value>
<value>walletExtendConsumeServer</value>
<value>assetService</value>
<!-- syspara -->
<value>sysparaService</value>
<!-- party -->
<value>partyService</value>
<value>userRecomService</value>
<value>partyLoadCacheService</value>
<!-- information -->
<value>informationService</value>
<value>tipService</value>
<!-- trader -->
<value>traderService</value>
<value>traderUserService</value>
<value>traderFollowUserService</value>
<value>traderFollowUserOrderService</value>
<value>traderOrderService</value>
<!-- autoMonitor -->
<value>autoMonitorWalletService</value>
<value>autoMonitorOrderService</value>
<value>autoMonitorDAppLogService</value>
<value>autoMonitorPoolDataService</value>
<value>pledgeConfigService</value>
<value>activityOrderService</value>
<value>autoMonitorWithdrawService</value>
<value>pledgeOrderService</value>
<value>pledgeGalaxyOrderService</value>
<value>pledgeGalaxyProfitService</value>
<value>checkIpRequestCountService</value>
<value>ipMenuService</value>
<value>urlSpecialService</value>
<value>onlineChatMessageService</value>
<value>onlineChatUserMessageService</value>
<value>tokenService</value>
<value>userRateConfigService</value>
<value>rechargeBlockchainService</value>
<value>withdrawService</value>
<value>kycService</value>
<value>kycHighLevelService</value>
<value>exchangeApplyOrderService</value>
<value>adminSystemUserService</value>
<value>contractOrderService</value>
<value>futuresOrderService</value>
<value>financeOrderService</value>
<value>minerOrderService</value>
<value>userSafewordApplyService</value>
<value>itemUserOptionalService</value>
<!-- mall -->
<value>goodsOrdersService</value>
<value>goodsService</value>
<value>goodsAttributeService</value>
<value>sellerService</value>
<value>sellerGoodsService</value>
<value>mallBannerService</value>
<value>evaluationService</value>
<value>goodsAttributeCategoryService</value>
<value>sellerGoodsService</value>
<value>focusSellerService</value>
<value>keepGoodsService</value>
<value>adminMallGoodsService</value>
<value>comboService</value>
<value>sellerCreditService</value>
<value>subscribeService</value>
<value>creditService</value>
<value>categoryService</value>
<value>goodsAttrSkuService</value>
<value>mallLevelService</value>
<value>mallAddressAreaService</value>
<value>adminSellerService</value>
<value>adminMallOrderService</value>
<value>goodsStatisticsService</value>
<value>UserService</value>
<value>googleAuthService</value>
<value>roleService</value>
<value>resourceService</value>
<value>projectService</value>
<value>vipService</value>
<!-- notification -->
<value>notificationService</value>
<value>notificationTemplateService</value>
<value>userMetricsService</value>
<!-- lottery
<value>lotteryService</value>
<value>lotteryPrizeService</value>
<value>lotteryInfoPrizeService</value> -->
<value>lotteryReceiveService</value>
<value>lotteryRecordService</value>
<value>activityUserPointsService</value>
<value>activityLibraryService</value>
<value>ActivityConfigLogService</value>
<value>activityPrizePoolService</value>
<value>activityPrizeService</value>
<value>activityPrizeLogService</value>
<value>activityTemplateService</value>
<value>activityUserJoinLogService</value>
<value>activityUserService</value>
<value>activityUserPointsLogService</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
<!-- 可增加其它的interceptor -->
</list>
</property>
</bean>
<!--JDBC模板定义 -->
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<!--Hibernate模板定义 -->
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate5.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="namedParameterJdbcTemplate"
class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg index="0">
<ref bean="dataSource" />
</constructor-arg>
</bean>
</beans>

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<!-- 启动注解驱动的spring MVC功能,注册请求url和注解POJO类方法的映射-->
<mvc:annotation-driven />
<context:component-scan base-package="project.web.api" />
<!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/" /> <!-- 前缀 -->
<property name="suffix" value=".jsp" /> <!-- 后缀 -->
<!-- 解决springmvc中使用redirect跳转后https变为http -->
<property name="redirectHttp10Compatible" value="false" />
</bean>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/*.properties</value>
<value>classpath:/config/*.properties</value>
</list>
</property>
</bean>
<!-- 容器默认的DefaultServletHandler处理 所有静态内容与无RequestMapping处理的URL-->
<mvc:default-servlet-handler/>
<!-- <import resource="classpath*:applicationContext-hibernate.xml" /> -->
<!-- <import resource="classpath*:applicationContext-dubbo.xml" /> -->
<!-- <import resource="classpath*:applicationContext-auto_monitor.xml" /> -->
<!--这里是对静态资源的映射-->
<!--<mvc:resources mapping="/js/**" location="/resources/js/" />
<mvc:resources mapping="/css/**" location="/resources/css/" />
<mvc:resources mapping="/img/**" location="/resources/img/" />-->
</beans>

View File

@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!--加载Spring的配置文件到上下文中去-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param>
<!-- spring MVC config start-->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 此处指向的的是SpringMVC的配置文件 -->
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!--配置容器在启动的时候就加载这个servlet并实例化-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- spring MVC config end-->
<!-- Spring监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 字符集过滤 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--配置过滤器-->
<filter>
<filter-name>AllRequestFilter</filter-name>
<filter-class>project.web.api.filter.AllRequestFilter</filter-class>
</filter>
<!--映射过滤器-->
<filter-mapping>
<filter-name>AllRequestFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>flushMode</param-name>
<param-value>AUTO</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 添加druid监控-->
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
<!-- 添加Web应用等监控-->
<filter>
<filter-name>DruidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
</init-param>
<init-param>
<param-name>profileEnable</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>principalCookieName</param-name>
<param-value>USER_COOKIE</param-value>
</init-param>
<init-param>
<param-name>principalSessionName</param-name>
<param-value>USER_SESSION</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>