app/src/main/java/com/ks/app/controller/admin/UserAdminController.java
@@ -1,19 +1,8 @@ package com.ks.app.controller.admin; import javax.servlet.http.HttpServletRequest; import com.ks.app.pojo.VO.PageEntity; import com.ks.app.pojo.VO.Result; import com.ks.lijin.pojo.DO.LiJinProvider; import com.ks.lijin.service.LiJinProviderService; import net.sf.json.JSONObject; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @Controller app/src/main/java/com/ks/app/controller/admin/lijin/LiJinProviderLinkAdminController.java
@@ -6,10 +6,8 @@ import com.ks.app.pojo.VO.PageEntity; import com.ks.app.pojo.VO.Result; import com.ks.app.util.ResultUtils; import com.ks.lijin.pojo.DO.LiJinProvider; import com.ks.lijin.pojo.DO.LiJinProviderLink; import com.ks.lijin.service.LiJinProviderLinkService; import net.sf.json.JSONObject; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; app/src/main/java/com/ks/app/controller/admin/vip/VipCenterAdminController.java
@@ -1,18 +1,13 @@ package com.ks.app.controller.admin.vip; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.ks.app.pojo.DTO.OptionDTO; import com.ks.app.pojo.VO.PageEntity; import com.ks.app.pojo.VO.Result; import com.ks.app.util.ResultUtils; import com.ks.vip.exception.VipCenterException; import com.ks.vip.pojo.DO.VipCenter; import com.ks.vip.pojo.DO.VipGrade; import com.ks.vip.pojo.Enums.VIPEnum; import com.ks.vip.pojo.VO.VipCenterVO; import com.ks.vip.service.VipCenterService; import com.ks.vip.service.VipCenterService; import com.ks.vip.service.VipGradeService; import org.apache.dubbo.config.annotation.Reference; app/src/main/java/com/ks/app/controller/admin/vip/VipGradeAdminController.java
@@ -7,10 +7,8 @@ import com.ks.app.pojo.VO.PageEntity; import com.ks.app.pojo.VO.Result; import com.ks.app.util.ResultUtils; import com.ks.vip.pojo.DO.VipCombo; import com.ks.vip.pojo.DO.VipGrade; import com.ks.vip.pojo.Enums.VIPEnum; import com.ks.vip.service.VipComboService; import com.ks.vip.service.VipGradeService; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Controller; app/src/main/java/com/ks/app/controller/admin/vip/VipGradePotenceAdminController.java
@@ -1,18 +1,15 @@ package com.ks.app.controller.admin.vip; import com.alibaba.dubbo.config.annotation.Reference; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.ks.app.pojo.VO.PageEntity; import com.ks.app.pojo.VO.Result; import com.ks.app.util.ResultUtils; import com.ks.vip.exception.VipGradePotenceException; import com.ks.vip.pojo.DO.VipCenter; import com.ks.vip.pojo.DO.VipGrade; import com.ks.vip.pojo.DO.VipGradePotence; import com.ks.vip.service.VipGradePotenceService; import com.ks.vip.service.VipGradeService; import org.apache.dubbo.config.annotation.Reference; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; app/src/main/java/com/ks/app/service/impl/AdminUserServiceImpl.java
@@ -1,10 +1,9 @@ package com.ks.app.service.impl; import org.apache.dubbo.config.annotation.Service; import com.ks.app.mapper.AdminUserMapper; import com.ks.app.pojo.DO.AdminUser; import com.ks.app.service.AdminUserService; import org.apache.dubbo.config.annotation.Service; import javax.annotation.Resource; app/src/main/resources/application-test.yml
New file @@ -0,0 +1,103 @@ server: port: 8088 tomcat: uri-encoding: UTF-8 spring: main: allow-bean-definition-overriding: true http: encoding: force: true charset: UTF-8 enabled: true data: mongodb: username: admin password: admin #172.16.16.44 #193.112.35.168 host: 118.195.138.153 port: 27017 database: lijin authentication-database: admin datasource: #gz-cdb-r13d0yi9.sql.tencentcdb.com:62929 #172.16.16.17:3306 url: jdbc:mysql://gz-cdb-r13d0yi9.sql.tencentcdb.com:62929/ec_tejia?&useTimezone=true&serverTimezone=GMT%2B8 username: root password: Yeshi2016@ driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 8 min-idle: 1 max-active: 20 max-wait: 60000 time-between-eviction-runsMillis: 60000 min-evictable-idle-timeMillis: 300000 validation-query: select 'x' FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false pool-prepared-statements: true max-open-prepared-statements: 20 max-pool-prepared-statement-per-connection-size: 20 filters: stat connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 use-global-data-source-stat: true mybatis: mapper-locations : classpath:mapper/*.xml type-aliases-package: com.ks.goldcorn.pojo.DO configuration: log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl redis: #172.16.16.3 #193.112.34.40 host: 118.195.138.153 port: 6379 password: 123456 timeout: 5000 jedis: pool: max-wait: 10000 max-idle: 200 max-total: 1024 database: 4 dubbo: application: name: lijin-provider registry: protocol: zookeeper address: zookeeper://193.112.35.168:2181 # address: zookeeper://118.195.138.153:2181 client: curator protocol: name: dubbo port: 20901 scan: base-packages: com.ks.lijin.service.remote provider: timeout: 10000 xxl: job: accessToken: executor: appname: demo ip: logpath: /data/applogs/xxl-job/jobhandler logretentiondays: -1 port: 9999 admin: addresses: http://localhost:8081/xxl-job-admin logging: level: com: ks: lucky: mapper: debug org.springframework.data.mongodb.core: DEBUG facade-lijin/src/main/java/com/ks/lijin/pojo/DO/LiJinDangerGoods.java
@@ -84,4 +84,28 @@ public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } public String getTradeId() { return tradeId; } public void setTradeId(String tradeId) { this.tradeId = tradeId; } public String getOrderNo() { return orderNo; } public void setOrderNo(String orderNo) { this.orderNo = orderNo; } public Date getOrderPayTime() { return orderPayTime; } public void setOrderPayTime(Date orderPayTime) { this.orderPayTime = orderPayTime; } } facade-lijin/src/main/java/com/ks/lijin/pojo/DO/LiJinDangerSeller.java
New file @@ -0,0 +1,71 @@ package com.ks.lijin.pojo.DO; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.io.Serializable; import java.util.Date; @Document(collection = "dangerSeller") public class LiJinDangerSeller implements Serializable { @Id private String id; private Integer goodsType; private String sellerId; private String sellerName; private Date createTime; private Date updateTime; public static String createId(Integer goodsType, String sellerId) { return goodsType + "#" + sellerId; } public String getId() { return id; } public void setId(String id) { this.id = id; } public Integer getGoodsType() { return goodsType; } public void setGoodsType(Integer goodsType) { this.goodsType = goodsType; } public String getSellerId() { return sellerId; } public void setSellerId(String sellerId) { this.sellerId = sellerId; } public String getSellerName() { return sellerName; } public void setSellerName(String sellerName) { this.sellerName = sellerName; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } } facade-vip/src/main/java/com/ks/vip/pojo/DO/UserLijinRecord.java
@@ -1,6 +1,7 @@ package com.ks.vip.pojo.DO; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.index.Indexed; import org.springframework.data.mongodb.core.mapping.Document; import org.yeshi.utils.generater.mybatis.Column; import org.yeshi.utils.generater.mybatis.Table; @@ -31,15 +32,19 @@ @Id private String id; @Indexed private String uid; private BigDecimal money; @Indexed private Integer type; /** * 分类 */ @Indexed private String category; private String title; private String identifyCode; @Indexed private Date createTime; private Date updateTime; facade-vip/src/main/java/com/ks/vip/pojo/Enums/VIPEnum.java
@@ -7,7 +7,8 @@ public enum VIPEnum { silver("白银"), platinum("铂金"); platinum("铂金"), diamond("钻石"); private final String desc; pom.xml
@@ -30,6 +30,7 @@ <curator.version>2.8.0</curator.version> <zookeeper.version>3.4.6</zookeeper.version> <mongo.driver.version>3.12.0</mongo.driver.version> <kafka.client.version>0.10.1.1</kafka.client.version> </properties> <repositories> @@ -38,6 +39,7 @@ <name>nexus</name> <url>http://193.112.35.168:8081/nexus/content/groups/public/</url> </repository> </repositories> <dependencies> @@ -47,15 +49,15 @@ </dependency> <!--<dependency>--> <!--<groupId>org.freemarker</groupId>--> <!--<artifactId>freemarker</artifactId>--> <!--<version>2.3.23</version>--> <!--<groupId>org.freemarker</groupId>--> <!--<artifactId>freemarker</artifactId>--> <!--<version>2.3.23</version>--> <!--</dependency>--> <dependency> <groupId>com.yeshi</groupId> <artifactId>utils</artifactId> <version>0.0.8</version> <version>0.0.9</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> @@ -250,6 +252,40 @@ </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>${kafka.client.version}</version> <scope>compile</scope> <exclusions> <exclusion> <artifactId>slf4j-api</artifactId> <groupId>org.slf4j</groupId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <version>${kafka.client.version}</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> service-lijin/src/main/java/com/ks/lijin/LiJinApplication.java
@@ -1,6 +1,6 @@ package com.ks.lijin; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; import org.mybatis.spring.annotation.MapperScan; import org.slf4j.Logger; import org.slf4j.LoggerFactory; service-lijin/src/main/java/com/ks/lijin/config/RedisConfig.java
@@ -3,7 +3,6 @@ import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; @@ -13,10 +12,33 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import org.yeshi.utils.StringUtil; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; @Configuration public class RedisConfig { @Value("${spring.redis.host}") private String addr; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.timeout}") private String timeout; @Value("${spring.redis.password}") private String auth; @Value("${spring.redis.database}") private int database; @Value("${spring.redis.jedis.pool.max-total}") private int maxTotal; @Value("${spring.redis.jedis.pool.max-idle}") private int maxIdle; @Value("${spring.redis.jedis.pool.test_on_borrow}") private boolean testOnBorrow; Logger log = LoggerFactory.getLogger(RedisConfig.class); @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); @@ -38,4 +60,14 @@ template.afterPropertiesSet(); return template; } @Bean public JedisPool jedisPool() { JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(maxTotal); poolConfig.setMaxIdle(maxIdle); poolConfig.setTestOnBorrow(testOnBorrow); return new JedisPool(poolConfig, addr, port, Integer.parseInt(timeout.replace("ms", "").trim()), auth, database); } } service-lijin/src/main/java/com/ks/lijin/controller/TestController.java
@@ -1,6 +1,5 @@ package com.ks.lijin.controller; import com.ks.lijin.exception.LiJinException; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -20,12 +19,15 @@ @RequestMapping("redis") public String testRedis(String uid) throws Exception { String key = "createtblijin-" + uid; if (redisTemplate.opsForValue().setIfAbsent(key, "1", 120, TimeUnit.SECONDS)) { return "锁定成功"; } else { throw new LiJinException(LiJinException.CODE_SERVER_BUSY, "服务器繁忙,请稍后再试"); try { if (redisTemplate.opsForValue().setIfAbsent(key, "1", 120, TimeUnit.SECONDS)) { return "锁定成功"; } else { return "服务器繁忙,请稍后再试"; } } finally { redisTemplate.delete(key); } } } service-lijin/src/main/java/com/ks/lijin/dao/LijinDangerSellerDao.java
New file @@ -0,0 +1,21 @@ package com.ks.lijin.dao; import com.ks.lib.common.dao.MongodbBaseDao; import com.ks.lijin.pojo.DO.LiJinDangerGoods; import com.ks.lijin.pojo.DO.LiJinDangerSeller; import com.ks.lijin.query.BaseDaoQuery; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Repository; import java.util.ArrayList; import java.util.List; @Repository public class LijinDangerSellerDao extends MongodbBaseDao<LiJinDangerSeller> { public static class DaoQuery extends BaseDaoQuery { } } service-lijin/src/main/java/com/ks/lijin/mapper/LiJinExpendRecordMapper.java
@@ -42,7 +42,7 @@ * @param maxCreateTime * @return */ LiJinExpendRecord getMaxMoneyRecord(@Param("goodsId") String goodsId, @Param("minCreatetime") Date minCreatetime, @Param("maxCreateTime") Date maxCreateTime); LiJinExpendRecord getMaxMoneyRecord(@Param("goodsId") String goodsId, @Param("minCreatetime") Date minCreatetime, @Param("maxCreatetime") Date maxCreateTime); /** service-lijin/src/main/java/com/ks/lijin/service/manager/LiJinProviderTaoKeAccountManager.java
@@ -6,6 +6,8 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.TimeUtil; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import javax.annotation.Resource; import java.math.BigDecimal; @@ -20,6 +22,9 @@ @Resource private RedisTemplate redisTemplate; @Resource private JedisPool jedisPool; /** @@ -42,7 +47,14 @@ //获取账号当日的商品数量 long goodsNum = redisTemplate.opsForSet().size(goodsKey); //获取账号当日的资金消耗 Long todayMoney = Long.parseLong(redisTemplate.opsForValue().get(accountMoneyKey) + ""); Long todayMoney = null; Jedis jedis = jedisPool.getResource(); try { todayMoney = Long.parseLong(jedis.get(accountMoneyKey) + ""); } finally { jedis.close(); } //同步到数据库 LiJinProviderTaoKeAccount account = liJinProviderAccountMapper.selectByPrimaryKeyForUpdate(accountId); service-lijin/src/main/java/com/ks/lijin/service/manager/LijinDangerSellerManager.java
New file @@ -0,0 +1,94 @@ package com.ks.lijin.service.manager; import com.ks.lijin.dao.LijinDangerGoodsDao; import com.ks.lijin.dao.LijinDangerSellerDao; import com.ks.lijin.mapper.LiJinExpendRecordMapper; import com.ks.lijin.pojo.DO.LiJinDangerGoods; import com.ks.lijin.pojo.DO.LiJinDangerSeller; import com.ks.lijin.pojo.DO.LiJinExpendRecord; import com.ks.lijin.pojo.DO.TaoBaoOrderRecord; import com.ks.lijin.util.Constant; import com.ks.lijin.utils.taobao.TaoBaoOrderUtil; import com.ks.lijin.utils.taobao.TaoKeApiUtil; import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; import org.springframework.stereotype.Component; import org.yeshi.utils.TimeUtil; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; import java.util.List; @Component public class LijinDangerSellerManager { @Resource private LijinDangerSellerDao lijinDangerSellerDao; @Resource private LiJinExpendRecordMapper liJinExpendRecordMapper; /** * 处理订单 * * @param record * @throws Exception */ public void processOrder(TaoBaoOrderRecord record) throws Exception { if (record == null) { throw new Exception("订单为空"); } if (record.getTb_paid_time() == null) { throw new Exception("订单未付款"); } //查询是否在危险商家中 TaoBaoGoodsBrief goods = TaoKeApiUtil.getSimpleGoodsInfo(record.getItem_id()); LiJinDangerSeller dangerSeller = lijinDangerSellerDao.get(LiJinDangerSeller.createId(1, goods.getSellerId() + "")); if (dangerSeller != null) { throw new Exception("已加入危险商家记录"); } //判断是否 Date maxCreateTime = record.getTb_paid_time(); Date minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(maxCreateTime.getTime(), "yyyyMMdd"), "yyyyMMdd")); LiJinExpendRecord expendRecord = liJinExpendRecordMapper.getMaxMoneyRecord(record.getItem_id() + "", minCreateTime, maxCreateTime); //判断是否触发机制 if (expendRecord == null) { throw new Exception("礼金创建记录不存在"); } BigDecimal money = expendRecord.getMoney(); BigDecimal commission = TaoBaoOrderUtil.getCommission(record); if (commission == null) { throw new Exception("订单未处于付款/结算状态"); } //礼金大于佣金的87%表示出错 if (money.compareTo(commission.multiply(new BigDecimal("0.87"))) >= 0) { //危险报警 LiJinDangerSeller seller = new LiJinDangerSeller(); seller.setCreateTime(new Date()); seller.setSellerId(goods.getSellerId() + ""); seller.setSellerName(goods.getShopTitle()); seller.setGoodsType(1); seller.setId(LiJinDangerSeller.createId(1, seller.getSellerId())); lijinDangerSellerDao.save(seller); } } /** * 是否是危险商品 * * @param sellerId * @param goodsType * @return */ public boolean isDangerous(String sellerId, int goodsType) { String id = LiJinDangerSeller.createId(goodsType, sellerId); return lijinDangerSellerDao.get(id) != null; } } service-lijin/src/main/java/com/ks/lijin/service/manager/LijinOrderManager.java
@@ -8,7 +8,6 @@ import com.ks.lijin.pojo.DO.TaoBaoOrderRecord; import com.ks.lijin.pojo.DTO.taobao.TaoKeAppInfo; import com.ks.lijin.pojo.DTO.taobao.TaoLiJinReportDTO; import com.ks.lijin.service.LiJinProviderAccountService; import com.ks.lijin.utils.taobao.TaoKeApiUtil; import com.ks.vip.exception.LijinBalanceException; import com.ks.vip.pojo.DO.UserLijinRecord; @@ -40,6 +39,9 @@ @Resource private LiJinProviderAccountMapper liJinProviderAccountMapper; @Resource private LijinDangerSellerManager lijinDangerSellerManager; @Reference(version = "1.0", check = false) private LijinBalanceService lijinBalanceService; @@ -68,6 +70,12 @@ } catch (Exception e) { e.printStackTrace(); } try { lijinDangerSellerManager.processOrder(taoBaoOrderRecord); } catch (Exception e) { e.printStackTrace(); } } service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinExpendRecordServiceImpl.java
@@ -1,12 +1,12 @@ package com.ks.lijin.service.remote; import org.apache.dubbo.config.annotation.Service; import com.ks.lijin.mapper.LiJinExpendRecordMapper; import com.ks.lijin.pojo.DO.LiJinExpendRecord; import com.ks.lijin.query.ExpendRecordQuery; import com.ks.lijin.service.LiJinExpendRecordService; import com.ks.lijin.service.LiJinProviderAccountService; import com.ks.lijin.service.LiJinProviderNoticeService; import org.apache.dubbo.config.annotation.Service; import org.springframework.core.task.TaskExecutor; import javax.annotation.Resource; service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinGoofsDepotFirstOrderServiceImpl.java
@@ -1,14 +1,10 @@ package com.ks.lijin.service.remote; import com.ks.lijin.mapper.LiJinGoofsDepotFirstOrderMapper; import com.ks.lijin.mapper.LiJinProviderMapper; import com.ks.lijin.pojo.DO.LiJinGoofsDepotFirstOrder; import com.ks.lijin.pojo.DO.LiJinProvider; import com.ks.lijin.query.GoofsDepotFirstOrderQuery; import com.ks.lijin.query.ProviderQuery; import com.ks.lijin.service.LiJinGoofsDepotFirstOrderService; import com.ks.lijin.service.LiJinProviderService; import org.apache.dubbo.config.annotation.Service; import com.ks.lijin.mapper.LiJinGoofsDepotFirstOrderMapper; import com.ks.lijin.pojo.DO.LiJinGoofsDepotFirstOrder; import com.ks.lijin.query.GoofsDepotFirstOrderQuery; import com.ks.lijin.service.LiJinGoofsDepotFirstOrderService; import javax.annotation.Resource; import java.util.Date; service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinLinkServiceImpl.java
@@ -1,8 +1,8 @@ package com.ks.lijin.service.remote; import org.apache.dubbo.config.annotation.Service; import com.ks.lijin.pojo.DO.LiJinProviderLink; import com.ks.lijin.service.LiJinLinkService; import org.apache.dubbo.config.annotation.Service; import java.util.ArrayList; import java.util.List; service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinProviderAccountServiceImpl.java
@@ -1,10 +1,10 @@ package com.ks.lijin.service.remote; import org.apache.dubbo.config.annotation.Service; import com.ks.lijin.mapper.LiJinProviderAccountMapper; import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; import com.ks.lijin.query.ProviderAccountQuery; import com.ks.lijin.service.LiJinProviderAccountService; import org.apache.dubbo.config.annotation.Service; import javax.annotation.Resource; import java.util.Arrays; service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinProviderLinkServiceImpl.java
@@ -1,17 +1,12 @@ package com.ks.lijin.service.remote; import com.alibaba.dubbo.config.annotation.Service; import com.ks.lijin.mapper.LiJinProviderLinkMapper; import com.ks.lijin.mapper.LiJinProviderMapper; import com.ks.lijin.pojo.DO.LiJinProvider; import com.ks.lijin.pojo.DO.LiJinProviderLink; import com.ks.lijin.query.ProviderLinkQuery; import com.ks.lijin.query.ProviderQuery; import com.ks.lijin.service.LiJinProviderLinkService; import com.ks.lijin.service.LiJinProviderService; import org.apache.dubbo.config.annotation.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; @Service(version = "1.0") service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinProviderNoticeServiceImpl.java
@@ -1,13 +1,9 @@ package com.ks.lijin.service.remote; import com.ks.lijin.mapper.LiJinProviderMapper; import com.ks.lijin.mapper.LiJinProviderNoticeMapper; import com.ks.lijin.pojo.DO.LiJinProvider; import com.ks.lijin.pojo.DO.LiJinProviderNotice; import com.ks.lijin.query.ProviderNoticeQuery; import com.ks.lijin.query.ProviderQuery; import com.ks.lijin.service.LiJinProviderNoticeService; import com.ks.lijin.service.LiJinProviderService; import org.apache.dubbo.config.annotation.Service; import javax.annotation.Resource; service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinProviderServiceImpl.java
@@ -1,13 +1,12 @@ package com.ks.lijin.service.remote; import com.alibaba.dubbo.config.annotation.Service; import com.ks.lijin.mapper.LiJinProviderMapper; import com.ks.lijin.pojo.DO.LiJinProvider; import com.ks.lijin.query.ProviderQuery; import com.ks.lijin.service.LiJinProviderService; import org.apache.dubbo.config.annotation.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; @Service(version = "1.0") service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java
@@ -1,10 +1,11 @@ package com.ks.lijin.service.remote; import com.ks.lijin.exception.*; import com.ks.lijin.mapper.LiJinExpendRecordMapper; import com.ks.lijin.pojo.DO.LiJinExpendRecord; import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; import com.ks.lijin.pojo.DO.LiJinProviderNotice; import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount; import com.ks.lijin.pojo.DTO.LiJinCreateParam; import com.ks.lijin.pojo.DTO.MoneyInfo; import com.ks.lijin.pojo.DTO.TaoLijinCreateResultDTO; @@ -15,10 +16,7 @@ import com.ks.lijin.service.LiJinProviderAccountService; import com.ks.lijin.service.LiJinProviderNoticeService; import com.ks.lijin.service.LijinCreateService; import com.ks.lijin.service.manager.LiJinProviderTaoKeAccountManager; import com.ks.lijin.service.manager.LijinConfigManager; import com.ks.lijin.service.manager.LijinDangerGoodsManager; import com.ks.lijin.service.manager.LijinGoodsManager; import com.ks.lijin.service.manager.*; import com.ks.lijin.util.Constant; import com.ks.lijin.utils.taobao.TaoBaoUtil; import com.ks.lijin.utils.taobao.TaoKeApiUtil; @@ -37,10 +35,11 @@ import org.slf4j.LoggerFactory; import org.springframework.core.task.TaskExecutor; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.MoneyBigDecimalUtil; import org.yeshi.utils.StringUtil; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import javax.annotation.Resource; import java.math.BigDecimal; @@ -88,7 +87,7 @@ private LiJinProviderTaoKeAccountManager liJinProviderTaoKeAccountManager; @Resource private StringRedisTemplate redisTemplate; private RedisTemplate redisTemplate; @Resource private LijinGoodsManager lijinGoodsManager; @@ -97,7 +96,13 @@ private LijinDangerGoodsManager lijinDangerGoodsManager; @Resource private LijinDangerSellerManager lijinDangerSellerManager; @Resource private LijinConfigManager lijinConfigManager; @Resource private JedisPool jedisPool; @Override public List<MoneyInfo> getMoneyInfo(String uid, List<TaoBaoGoodsBrief> goodsBriefList) { @@ -350,7 +355,6 @@ throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_NOT_SUPPORT, "该商品暂无法创建礼金"); } // 获取用户等级 VIPEnum vipRank = vipCenterService.getVIPEnumByUid(uid); if (vipRank == null) { @@ -372,6 +376,11 @@ throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_OFFLINE, "商品下线"); } dangerous = lijinDangerSellerManager.isDangerous(goods.getSellerId() + "", 1); if (dangerous) { throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_NOT_SUPPORT, "该店铺商品暂无法创建礼金"); } // 创建的淘礼金-金额 BigDecimal lijinAmount = getTBLijinAmount(goods, vipRank); @@ -388,29 +397,38 @@ //用户创建淘礼金为单线程操作 String key = "createtblijin-" + uid; if (redisTemplate.opsForValue().setIfAbsent(key, "1", 120, TimeUnit.SECONDS)) { Date now = new Date(); try { TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(auctionId, lijinAmount, params); if (taoLiJinDTO == null) { throw new LiJinException(1, "淘宝API推广红包创建失败"); Jedis jedis = jedisPool.getResource(); try { if (jedis.setnx(key, "1") > 0) { jedis.expire(key, 120); logger.error("淘礼金创建,用户锁定成功 key:{}", key); Date now = new Date(); try { TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(auctionId, lijinAmount, params); if (taoLiJinDTO == null) { throw new LiJinException(1, "淘宝API推广红包创建失败"); } logger.info("淘礼金创建成功"); //添加账号的 return addCreateSuccessRecord(uid, auctionId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO); } catch (LiJinGoodsException e) { if (e.getCode() == LiJinGoodsException.CODE_GOODS_CREATED_FULL) { lijinGoodsManager.createdFullToday(auctionId, now); } jedis.del(key); logger.info("淘礼金创建,删除锁定成功1 key:{}", key); throw e; } finally { jedis.del(key); logger.info("淘礼金创建,删除锁定成功2 key:{}", key); } //添加账号的 return addCreateSuccessRecord(uid, auctionId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO); } catch (LiJinGoodsException e) { if (e.getCode() == LiJinGoodsException.CODE_GOODS_CREATED_FULL) { lijinGoodsManager.createdFullToday(auctionId, now); } redisTemplate.delete(key); logger.info("淘礼金创建,删除锁定成功1 key:{}",key); throw e; } finally { redisTemplate.delete(key); logger.info("淘礼金创建,删除锁定成功2 key:{}",key); } else { logger.error("淘礼金创建,用户锁定失败 key:{}", key); throw new LiJinException(LiJinException.CODE_SERVER_BUSY, "服务器繁忙,请稍后再试"); } } else { logger.error("淘礼金创建,用户锁定失败 key:{}",key); throw new LiJinException(LiJinException.CODE_SERVER_BUSY, "服务器繁忙,请稍后再试"); } finally { jedis.close(); } } @@ -439,13 +457,18 @@ record.setSendUrl(taoLiJinDTO.getTaoLiJin().getSendUrl()); record.setCreateTime(new Date()); liJinExpendRecordMapper.insertSelective(record); logger.info("添加到创建记录成功"); //添加 liJinProviderTaoKeAccountManager.createLijinSuccess(taoLiJinDTO.getAccount().getId(), goodsId, lijinAmount.multiply(new BigDecimal(num)), now); logger.info("执行淘礼金创建成功事件成功"); //礼金余额扣除 try { lijinBalanceService.consumeLijin(uid, lijinAmount, "购物抵现", UserLijinRecord.Category.createGoodsLijin.name(), record.getId() + ""); logger.info("扣除账户余额成功"); } catch (LijinBalanceException e) { e.printStackTrace(); logger.info("扣除账户余额失败:{}", e.getMessage()); } return record; @@ -468,6 +491,7 @@ if (listAccount == null || listAccount.size() == 0) { throw new LiJinException(1, "没有可用的供应商账号"); } logger.info("获取供应商淘礼金账号成功"); // 遍历账号 用可使用账号 for (LiJinProviderTaoKeAccount account : listAccount) { @@ -478,6 +502,7 @@ //创建礼金 return new TaoLijinCreateResultDTO(account, executeTaoLiJinAPI(goodsId, lijinAmount, params)); } catch (LiJinAccountException e) {// 账号问题 logger.info("获取供应商淘礼账号出错:{}", e.getMessage()); //更新账号的错误信息 LiJinProviderTaoKeAccount update = new LiJinProviderTaoKeAccount(); update.setId(account.getId()); service-lijin/src/main/resources/application-pro.yml
@@ -60,11 +60,12 @@ min-idle: 8 jedis: pool: max-active: 1024 max-total: 1024 max-wait: 10000ms max-idle: 200 time-between-eviction-runs: 60000ms min-idle: 8 test_on_borrow: true mybatis: @@ -79,8 +80,8 @@ name: lijin-provider registry: protocol: zookeeper # address: tsfconsul://127.0.0.1:8500 address: zookeeper://172.16.16.46:2181 # address: zookeeper://118.195.138.153:2181 client: curator protocol: name: dubbo @@ -88,7 +89,7 @@ scan: base-packages: com.ks.lijin.service.remote provider: timeout: 10000 timeout: 30000 # host: 193.112.35.168 xxl: job: @@ -107,4 +108,23 @@ ks: lijin: mapper: debug org.springframework.data.mongodb.core: DEBUG org.springframework.data.mongodb.core: DEBUG log: config: kafka: isSend: true # kafka的地址,使用时必须配置 bootstrapServers: 172.16.16.38:9092 # 日志发往的topic,使用时必须配置 topic: log_service_lijin_info # 批量上传数目,达到该数目后发送 batchSize: 5 # 间隔时间后发送,即使未达到批量上传最大数,间隔时间到了也会发送,单位为毫秒 lingerMs: 1000 # 数据压缩类型 compressionType: gzip # 重试次数 retries: 3 #最大消息大小,此处设为5M maxRequestSize: 5242880 service-lijin/src/main/resources/application-test.yml
@@ -46,44 +46,50 @@ filters: stat connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 use-global-data-source-stat: true redis: #172.16.16.3 #193.112.34.40 host: 193.112.35.168 port: 6380 password: crs-43yhgz0i:Yeshi2016@ timeout: 5000ms lettuce: pool: max-active: 1024 max-wait: 10000ms max-idle: 200 time-between-eviction-runs: 60000ms min-idle: 8 jedis: pool: max-wait: 10000ms max-idle: 200 max-total: 1024 test_on_borrow: true database: 4 mybatis: mapper-locations : classpath:mapper/*.xml type-aliases-package: com.ks.goldcorn.pojo.DO configuration: log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl redis: #172.16.16.3 #193.112.34.40 host: 118.195.138.153 port: 6379 password: 123456 timeout: 5000 lettuce: pool: max-active: 1024 max-wait: 10000ms max-idle: 200 time-between-eviction-runs: 60000ms min-idle: 8 jedis: pool: max-wait: 10000 max-idle: 200 max-total: 1024 database: 4 dubbo: application: name: lijin-provider registry: protocol: zookeeper address: zookeeper://193.112.35.168:2181 address: zookeeper://193.112.35.168:2182 # address: zookeeper://118.195.138.153:2181 client: curator protocol: name: dubbo port: 20902 host: 192.168.3.122 scan: base-packages: com.ks.lijin.service.remote provider: @@ -106,4 +112,24 @@ ks: lijin: mapper: debug org.springframework.data.mongodb.core: DEBUG org.springframework.data.mongodb.core: DEBUG log: config: kafka: isSend: true # kafka的地址,使用时必须配置 bootstrapServers: 172.16.16.38:9092 # 日志发往的topic,使用时必须配置 topic: log_service_lijin_info # 批量上传数目,达到该数目后发送 batchSize: 5 # 间隔时间后发送,即使未达到批量上传最大数,间隔时间到了也会发送,单位为毫秒 lingerMs: 1000 # 数据压缩类型 compressionType: gzip # 重试次数 retries: 3 #最大消息大小,此处设为5M maxRequestSize: 5242880 service-lijin/src/main/resources/logback.xml
@@ -70,6 +70,27 @@ </encoder> </appender> <appender name="KAFKA" class="org.yeshi.utils.log.KafkaAppender" > <!-- encoder必须配置, 日志格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--<pattern>--> <!--%red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %green([%thread]) %boldMagenta(%logger{10}) - %cyan(%msg%n)--> <!--</pattern>--> <!--为了便于分析将日志数据转为json格式--> <pattern>${log.pattern}</pattern> <!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 --> <charset>UTF-8</charset> </encoder> <bootstrapServers>${bootstrapServers}</bootstrapServers> <topic>${topic}</topic> <batchSize>${batchSize}</batchSize> <lingerMs>${lingerMs}</lingerMs> <compressionType>${compressionType}</compressionType> <retries>${retries}</retries> <maxRequestSize>${maxRequestSize}</maxRequestSize> <isSend>${isSend}</isSend> </appender> <!--name表示为哪一个logger指定层级和输出的方式 additivity表示叠加祖先的输出方式(默认为true,会叠加),所以com.lxc.o2o以及其子类都会输出在控制台中,因为这个logger继承了root中的appender level表示级别大于等于${log.level}的信息才会输出,输出方式为配置的appender, @@ -86,7 +107,7 @@ <!--<logger name="activityJoinLogger" level="INFO" additivity="true">--> <!--<appender-ref ref="activityJoinAppender"></appender-ref>--> <!--</logger>--> <logger name="org.springframework.data.redis.core" level="INFO" additivity="false"> <logger name="org.springframework.data.redis.core" level="DEBUG" additivity="true"> <appender-ref ref="redisAppender"></appender-ref> </logger> @@ -94,6 +115,7 @@ <!--在控制台中输出所在层级对应level(以及大于level)的日志信息,因为这里并没有设置LevelFilter--> <appender-ref ref="STDOUT"></appender-ref> <appender-ref ref="infoAppender"></appender-ref> <appender-ref ref="KAFKA"></appender-ref> <appender-ref ref="errorAppender"></appender-ref> </root> </configuration> service-lijin/src/test/java/com/ks/LuckyTest.java
@@ -11,6 +11,8 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.test.context.ContextConfiguration; import org.yeshi.utils.TimeUtil; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import javax.annotation.Resource; import java.util.*; @@ -30,10 +32,21 @@ @Resource private LiJinProviderAccountService liJinProviderAccountService; @Resource private JedisPool jedisPool; @Test public void test() { String key = "createtblijin-tejia-6872490"; System.out.println(redisTemplate.opsForValue().setIfAbsent(key, "1", 120, TimeUnit.SECONDS)); Jedis jedis = jedisPool.getResource(); try { System.out.println(jedis.setnx(key, "1")); jedis.expire(key, 120); } finally { jedis.close(); } } @Test service-vip/src/main/java/com/ks/vip/service/remote/LijinBalanceServiceImpl.java
@@ -7,6 +7,8 @@ import com.ks.vip.pojo.DO.UserLijinRecord; import com.ks.vip.service.LijinBalanceService; import org.apache.dubbo.config.annotation.Service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.TimeUtil; @@ -18,6 +20,8 @@ @Service(version = "1.0") public class LijinBalanceServiceImpl implements LijinBalanceService { Logger logger = LoggerFactory.getLogger(LijinBalanceService.class); @Resource private LijinBalanceMapper lijinBalanceMapper; @@ -76,10 +80,13 @@ userLijinRecordDao.save(record); } @Transactional(rollbackFor = Exception.class) @Override public void consumeLijin(String uid, BigDecimal money, String title, String category, String identifyCode) throws LijinBalanceException { logger.info("开始扣除礼金"); //添加记录 LijinBalance lijinBalance = lijinBalanceMapper.selectByPrimaryKeyForUpdate(uid); logger.info("用户礼金锁定成功"); if (lijinBalance == null) { throw new LijinBalanceException(LijinBalanceException.CODE_NOT_INIT, "余额未初始化"); } @@ -94,6 +101,7 @@ update.setBalance(lijinBalance.getBalance().subtract(money)); update.setUpdateTime(new Date()); lijinBalanceMapper.updateByPrimaryKeySelective(update); logger.info("减余额成功"); //增加记录 UserLijinRecord record = new UserLijinRecord(); record.setMoney(money); @@ -105,7 +113,7 @@ record.setCreateTime(new Date()); record.setIdentifyCode(identifyCode); userLijinRecordDao.save(record); logger.info("增加记录成功"); } @Override service-vip/src/main/java/com/ks/vip/service/remote/LijinRecordServiceImpl.java
@@ -1,14 +1,13 @@ package com.ks.vip.service.remote; import com.alibaba.dubbo.config.annotation.Service; import com.ks.vip.dao.UserLijinRecordDao; import com.ks.vip.pojo.DO.UserLijinRecord; import com.ks.vip.service.LijinRecordService; import org.apache.dubbo.config.annotation.Service; import org.springframework.data.domain.Sort; import javax.annotation.Resource; import java.util.Arrays; import java.util.Collections; import java.util.List; @Service(version = "1.0") service-vip/src/main/java/com/ks/vip/service/remote/VipCenterRecordServiceImpl.java
@@ -1,13 +1,12 @@ package com.ks.vip.service.remote; import org.apache.dubbo.config.annotation.Service; import com.ks.vip.mapper.VipCenterRecordMapper; import com.ks.vip.mapper.VipOrderMapper; import com.ks.vip.pojo.DO.VipCenter; import com.ks.vip.pojo.DO.VipCenterRecord; import com.ks.vip.pojo.DO.VipOrder; import com.ks.vip.service.VipCenterRecordService; import org.apache.dubbo.config.annotation.Service; import javax.annotation.Resource; import java.util.ArrayList; service-vip/src/main/java/com/ks/vip/service/remote/VipCenterServiceImpl.java
@@ -1,18 +1,21 @@ package com.ks.vip.service.remote; import org.apache.dubbo.config.annotation.Service; import com.ks.vip.exception.VipCenterException; import com.ks.vip.mapper.VipCenterMapper; import com.ks.vip.mapper.VipCenterRecordMapper; import com.ks.vip.mapper.VipComboMapper; import com.ks.vip.pojo.DO.*; import com.ks.vip.pojo.DO.VipCenter; import com.ks.vip.pojo.DO.VipCenterRecord; import com.ks.vip.pojo.DO.VipGrade; import com.ks.vip.pojo.DO.VipGradePotence; import com.ks.vip.pojo.Enums.VIPEnum; import com.ks.vip.query.VipCenterQuery; import com.ks.vip.query.VipComboQuery; import com.ks.vip.service.*; import org.apache.dubbo.config.annotation.Service; import com.ks.vip.service.VipCenterRecordService; import com.ks.vip.service.VipCenterService; import com.ks.vip.service.VipGradePotenceService; import com.ks.vip.service.VipGradeService; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.DateUtil; import org.yeshi.utils.StringUtil; import javax.annotation.Resource; service-vip/src/main/java/com/ks/vip/service/remote/VipComboServiceImpl.java
@@ -1,6 +1,7 @@ package com.ks.vip.service.remote; import org.apache.dubbo.config.annotation.Service; import com.ks.vip.mapper.VipComboMapper; import com.ks.vip.pojo.DO.VipCombo; import com.ks.vip.pojo.DO.VipGrade; @@ -8,7 +9,6 @@ import com.ks.vip.query.VipComboQuery; import com.ks.vip.service.VipComboService; import com.ks.vip.service.VipGradeService; import org.apache.dubbo.config.annotation.Service; import javax.annotation.Resource; import java.util.List; service-vip/src/main/java/com/ks/vip/service/remote/VipGradePotenceServiceImpl.java
@@ -1,17 +1,15 @@ package com.ks.vip.service.remote; import org.apache.dubbo.config.annotation.Service; import com.ks.vip.exception.VipGradePotenceException; import com.ks.vip.mapper.VipGradePotenceMapper; import com.ks.vip.mapper.VipGradePotenceMapper; import com.ks.vip.pojo.DO.VipGrade; import com.ks.vip.pojo.DO.VipGradePotence; import com.ks.vip.pojo.Enums.VIPEnum; import com.ks.vip.query.VipGradePotenceQuery; import com.ks.vip.service.VipGradePotenceService; import com.ks.vip.service.VipGradePotenceService; import com.ks.vip.service.VipGradeService; import org.apache.dubbo.config.annotation.Service; import javax.annotation.Resource; import java.util.Date; service-vip/src/main/java/com/ks/vip/service/remote/VipGradeServiceImpl.java
@@ -1,12 +1,12 @@ package com.ks.vip.service.remote; import org.apache.dubbo.config.annotation.Service; import com.ks.vip.mapper.VipGradeMapper; import com.ks.vip.pojo.DO.VipGrade; import com.ks.vip.pojo.Enums.VIPEnum; import com.ks.vip.query.VipGradeQuery; import com.ks.vip.service.VipGradeService; import org.apache.dubbo.config.annotation.Service; import javax.annotation.Resource; import java.util.List; service-vip/src/main/java/com/ks/vip/service/remote/VipOrderPayServiceImpl.java
@@ -1,5 +1,6 @@ package com.ks.vip.service.remote; import org.apache.dubbo.config.annotation.Service; import com.alipay.api.AlipayApiException; import com.alipay.api.response.AlipayTradeQueryResponse; import com.ks.vip.exception.OrderPayException; @@ -16,7 +17,6 @@ import com.ks.vip.service.VipOrederPayService; import com.ks.vip.util.Constant; import com.ks.vip.util.PayUtil; import org.apache.dubbo.config.annotation.Service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.transaction.annotation.Transactional; service-vip/src/main/java/com/ks/vip/service/remote/VipOrderServiceImpl.java
@@ -1,25 +1,20 @@ package com.ks.vip.service.remote; import org.apache.dubbo.config.annotation.Service; import com.ks.vip.exception.VipOrderException; import com.ks.vip.mapper.VipOrderMapper; import com.ks.vip.pojo.DO.VipCenter; import com.ks.vip.pojo.DO.VipCombo; import com.ks.vip.pojo.DO.VipOrder; import com.ks.vip.pojo.DTO.VipOrderDTO; import com.ks.vip.pojo.Enums.OrderTypeEnum; import com.ks.vip.query.VipOrderQuery; import com.ks.vip.service.VipCenterService; import com.ks.vip.service.VipComboService; import com.ks.vip.service.VipGradeService; import com.ks.vip.service.VipOrederService; import org.apache.dubbo.config.annotation.Service; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.DateUtil; import org.yeshi.utils.StringUtil; import org.yeshi.utils.TimeUtil; import javax.annotation.Resource; import java.text.ParseException; import java.util.Date; import java.util.List; service-vip/src/main/resources/application-pro.yml
@@ -78,6 +78,9 @@ registry: protocol: zookeeper address: zookeeper://172.16.16.46:2181 # protocol: tsfconsul # address: tsfconsul://127.0.0.1:8500 client: curator protocol: name: dubbo @@ -104,4 +107,22 @@ ks: vip: mapper: debug org.springframework.data.mongodb.core: DEBUG org.springframework.data.mongodb.core: DEBUG log: config: kafka: isSend: true # kafka的地址,使用时必须配置 bootstrapServers: 172.16.16.38:9092 # 日志发往的topic,使用时必须配置 topic: log_service_vip_info # 批量上传数目,达到该数目后发送 batchSize: 5 # 间隔时间后发送,即使未达到批量上传最大数,间隔时间到了也会发送,单位为毫秒 lingerMs: 1000 # 数据压缩类型 compressionType: gzip # 重试次数 retries: 3 #最大消息大小,此处设为5M maxRequestSize: 5242880 service-vip/src/main/resources/application-test.yml
@@ -13,13 +13,13 @@ enabled: true data: mongodb: username: admin password: admin username: yeshi password: Yeshi2016@ #172.16.16.44 #193.112.35.168 host: 118.195.138.153 port: 27017 database: lijin host: 193.112.35.168 port: 27016 database: tejia-vip authentication-database: admin datasource: #gz-cdb-r13d0yi9.sql.tencentcdb.com:62929 @@ -72,11 +72,12 @@ name: lijin-provider registry: protocol: zookeeper address: zookeeper://193.112.35.168:2181 address: zookeeper://193.112.35.168:2182 client: curator protocol: name: dubbo port: 20903 host: 192.168.3.122 scan: base-packages: com.ks.vip.service.remote provider: @@ -99,4 +100,24 @@ ks: vip: mapper: debug org.springframework.data.mongodb.core: DEBUG org.springframework.data.mongodb.core: DEBUG # config: classpath:logback.xml log: config: kafka: isSend: true # kafka的地址,使用时必须配置 bootstrapServers: 134.175.68.214:9092 # 日志发往的topic,使用时必须配置 topic: log_service_vip_info # 批量上传数目,达到该数目后发送 batchSize: 5 # 间隔时间后发送,即使未达到批量上传最大数,间隔时间到了也会发送,单位为毫秒 lingerMs: 1000 # 数据压缩类型 compressionType: gzip # 重试次数 retries: 3 #最大消息大小,此处设为5M maxRequestSize: 5242880 service-vip/src/main/resources/logback.xml
@@ -84,6 +84,45 @@ </encoder> </appender> <!-- 读取配置文件中kafka的信息 --> <springProperty scope="context" name="isSend" source="log.config.kafka.isSend" defalutValue="false"/> <springProperty scope="context" name="bootstrapServers" source="log.config.kafka.bootstrapServers" defalutValue="localhost:9092"/> <springProperty scope="context" name="topic" source="log.config.kafka.topic" defalutValue="springbootLoggerInfo"/> <springProperty scope="context" name="batchSize" source="log.config.kafka.batchSize" defalutValue="1"/> <springProperty scope="context" name="lingerMs" source="log.config.kafka.lingerMs" defalutValue="1000"/> <springProperty scope="context" name="compressionType" source="log.config.kafka.compressionType" defalutValue="gzip"/> <springProperty scope="context" name="retries" source="log.config.kafka.retries" defalutValue="3"/> <springProperty scope="context" name="maxRequestSize" source="log.config.kafka.maxRequestSize" defalutValue="5242880"/> <appender name="KAFKA" class="org.yeshi.utils.log.KafkaAppender" > <!-- encoder必须配置, 日志格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--<pattern>--> <!--%red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %highlight(%-5level) %green([%thread]) %boldMagenta(%logger{10}) - %cyan(%msg%n)--> <!--</pattern>--> <!--为了便于分析将日志数据转为json格式--> <pattern>${log.pattern}</pattern> <!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 --> <charset>UTF-8</charset> </encoder> <bootstrapServers>${bootstrapServers}</bootstrapServers> <topic>${topic}</topic> <batchSize>${batchSize}</batchSize> <lingerMs>${lingerMs}</lingerMs> <compressionType>${compressionType}</compressionType> <retries>${retries}</retries> <maxRequestSize>${maxRequestSize}</maxRequestSize> <isSend>${isSend}</isSend> </appender> <!--name表示为哪一个logger指定层级和输出的方式 additivity表示叠加祖先的输出方式(默认为true,会叠加),所以com.lxc.o2o以及其子类都会输出在控制台中,因为这个logger继承了root中的appender level表示级别大于等于${log.level}的信息才会输出,输出方式为配置的appender, service-vip/src/main/resources/mapper/LijinBalanceMapper.xml
@@ -11,11 +11,11 @@ <sql id="Base_Column_List">id,balance,create_time,update_time</sql> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String">select <include refid="Base_Column_List"/> from lijin_balance where id = #{id,jdbcType=BIGINT} from lijin_balance where id = #{id,jdbcType=VARCHAR} </select> <select id="selectByPrimaryKeyForUpdate" resultMap="BaseResultMap" parameterType="java.lang.String">select <include refid="Base_Column_List"/> from lijin_balance where id = #{id,jdbcType=BIGINT} for update from lijin_balance where id = #{id,jdbcType=VARCHAR} for update </select> <sql id="listWhereSQL"> @@ -41,7 +41,7 @@ <include refid="listWhereSQL"/> </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from lijin_balance where id = #{id,jdbcType=BIGINT}</delete> parameterType="java.lang.Long">delete from lijin_balance where id = #{id,jdbcType=VARCHAR}</delete> <insert id="insert" parameterType="com.ks.vip.pojo.DO.LijinBalance" useGeneratedKeys="true" keyProperty="id">insert into lijin_balance (id,balance,create_time,update_time) values (#{id,jdbcType=VARCHAR},#{balance,jdbcType=DECIMAL},#{createTime,jdbcType=TIMESTAMP},#{updateTime,jdbcType=TIMESTAMP})</insert> <insert id="insertSelective" parameterType="com.ks.vip.pojo.DO.LijinBalance" useGeneratedKeys="true"