记得上下班打卡 | git大法好,push需谨慎

Commit c2af85a1 authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/dev_redis_multidb' into dev_redis_multidb

parents 971fea8b 480f01d0
...@@ -13,6 +13,7 @@ import com.liquidnet.commons.lang.util.IDGenerator; ...@@ -13,6 +13,7 @@ import com.liquidnet.commons.lang.util.IDGenerator;
*/ */
public class ChimeConstant { public class ChimeConstant {
public static String USER_ID_PREFIX = "CHE"; public static String USER_ID_PREFIX = "CHE";
public static String LOG_ID_PREFIX = "LOG";
public static final String PREFIX = "chime:"; public static final String PREFIX = "chime:";
public static final String REDIS_CITY_NAME_ALLOW = PREFIX.concat("per:cityName:allow"); public static final String REDIS_CITY_NAME_ALLOW = PREFIX.concat("per:cityName:allow");
...@@ -22,4 +23,11 @@ public class ChimeConstant { ...@@ -22,4 +23,11 @@ public class ChimeConstant {
public static String getNewUserId(){ public static String getNewUserId(){
return USER_ID_PREFIX + IDGenerator.nextTimeId(); return USER_ID_PREFIX + IDGenerator.nextTimeId();
} }
public static String getLogMid(){
return LOG_ID_PREFIX + IDGenerator.nextTimeId();
}
public static final String LOG_USER_OPERATION_LIKE = "1";
public static final String LOG_USER_OPERATION_DISLIKE = "2";
} }
...@@ -25,4 +25,8 @@ public interface IChimeUserService { ...@@ -25,4 +25,8 @@ public interface IChimeUserService {
ChimeUserInfoDto getUserByUserId(String userId); ChimeUserInfoDto getUserByUserId(String userId);
boolean switchPerformanceId(String performanceId); boolean switchPerformanceId(String performanceId);
boolean userLikeOperation(String currentUserId,String targetUserId);
boolean userDisLikeOperation(String currentUserId,String targetUserId);
} }
...@@ -34,6 +34,10 @@ public class ChimeUserInfoVo { ...@@ -34,6 +34,10 @@ public class ChimeUserInfoVo {
private String createdAt; private String createdAt;
@ApiModelProperty(position = 15, value = "更新时间") @ApiModelProperty(position = 15, value = "更新时间")
private String updatedAt; private String updatedAt;
@ApiModelProperty(position = 10, value = "喜欢操作")
private long likeCount;
@ApiModelProperty(position = 11, value = "不喜欢操作")
private long disLikeCount;
private static final ChimeUserInfoVo obj = new ChimeUserInfoVo(); private static final ChimeUserInfoVo obj = new ChimeUserInfoVo();
public static ChimeUserInfoVo getNew() { public static ChimeUserInfoVo getNew() {
......
package com.liquidnet.service.chime.vo.mongo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: ChimeUserTagsMappingVo
* @Package com.liquidnet.service.chime.vo.mongo
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/3 16:50
*/
@ApiModel(value = "ChimeUserInfoVo", description = "社交用户信息")
@Data
public class ChimeUserOperLogVo {
private String mid;
private static final long serialVersionUID = 5325511589667456213L;
@ApiModelProperty(position = 0, value = "用户ID[64]")
private String currentUserId;
@ApiModelProperty(position = 1, value = "性别")
private String targetUserId;
@ApiModelProperty(position = 2, value = "操作类型")
private String opType;
@ApiModelProperty(position = 3, value = "创建时间")
private String createdAt;
private static final ChimeUserOperLogVo obj = new ChimeUserOperLogVo();
public static ChimeUserOperLogVo getNew() {
try {
return (ChimeUserOperLogVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new ChimeUserOperLogVo();
}
}
}
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-dev-这里是配置信息基本值 # end-dev-这里是配置信息基本值
spring: spring:
......
...@@ -113,8 +113,10 @@ ...@@ -113,8 +113,10 @@
function invalidHandler(ccode) { function invalidHandler(ccode) {
if (ccode !== null && ccode !== undefined) { if (ccode !== null && ccode !== undefined) {
$.modal.confirm("是否失效?", function() {
var data = {"couponId":couponId,"ccodes": ccode}; var data = {"couponId":couponId,"ccodes": ccode};
$.operate.submit('code/invalid', "post", "json", data); $.operate.submit('code/invalid', "post", "json", data);
});
} else { } else {
$.operate.batchProcessingForCouponCode(couponId, 1); $.operate.batchProcessingForCouponCode(couponId, 1);
} }
...@@ -123,7 +125,9 @@ ...@@ -123,7 +125,9 @@
function recoverHandler(ccode, ucouponId) { function recoverHandler(ccode, ucouponId) {
if (ccode !== null && ccode !== undefined && ucouponId !== null && ucouponId !== undefined) { if (ccode !== null && ccode !== undefined && ucouponId !== null && ucouponId !== undefined) {
var data = {"ucouponIds": ucouponId, "couponId": couponId, "ccodes": ccode}; var data = {"ucouponIds": ucouponId, "couponId": couponId, "ccodes": ccode};
$.modal.confirm("是否退回?", function() {
$.operate.submit('code/recover', "post", "json", data); $.operate.submit('code/recover', "post", "json", data);
});
} }
// else { // else {
// $.operate.batchProcessingForCouponCode(couponId, 2); // $.operate.batchProcessingForCouponCode(couponId, 2);
......
...@@ -3,6 +3,13 @@ ...@@ -3,6 +3,13 @@
<head> <head>
<th:block th:include="include :: header('选项卡 & 面板')"/> <th:block th:include="include :: header('选项卡 & 面板')"/>
</head> </head>
<style>
.img-details{
width: 30%;
height: 40%;
}
</style>
<body class="gray-bg"> <body class="gray-bg">
<div class="wrapper wrapper-content animated fadeIn"> <div class="wrapper wrapper-content animated fadeIn">
<div class="row"> <div class="row">
...@@ -57,12 +64,17 @@ ...@@ -57,12 +64,17 @@
th:object="${kylinPerformanceMisVo}"> th:object="${kylinPerformanceMisVo}">
<div> <div>
<p>演出封面:</p> <p>演出封面:</p>
<img name="img" th:src="*{imgPoster}"> <img class="img-details" name="img" th:src="*{imgPoster}" th:onclick="click_big([[*{imgPoster}]])">
</div> </div>
<div> <div>
<label>演出名称:</label> <label>演出名称:</label>
<span th:text="*{title}"></span> <span th:text="*{title}"></span>
</div> </div>
<div>
<label>是否实名:</label>
<span th:if="*{isTrueName==1}"></span>
<span th:if="*{isTrueName==0}"></span>
</div>
<div> <div>
<label>时间:</label> <label>时间:</label>
<span th:text="*{timeStart}"></span> <span th:text="*{timeStart}"></span>
...@@ -101,7 +113,7 @@ ...@@ -101,7 +113,7 @@
</div> </div>
<div> <div>
<p>演出批文:</p> <p>演出批文:</p>
<img name="img" th:src="*{approvalUrl}"> <img class="img-details" name="img" th:src="*{approvalUrl}" th:onclick="click_big([[*{approvalUrl}]])">
</div> </div>
<div class="ibox-content" id="eg"> <div class="ibox-content" id="eg">
...@@ -380,6 +392,27 @@ ...@@ -380,6 +392,27 @@
$("#tab-nav-1").bind("click", function () { $("#tab-nav-1").bind("click", function () {
$("#tab_iframe_1").attr("src", prefix + "/performanceStatic/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", "")); $("#tab_iframe_1").attr("src", prefix + "/performanceStatic/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", ""));
}); });
// 点击图片放大
function click_big(url){
var img_url = url
if(url.indexOf("x-oss-process") != "-1"){
img_url = url.split("?")[0]
}
var json = {
"data": [ //相册包含的图片,数组格式
{
"alt": "演出封面",
"src": img_url, //原图地址
}
]
};
layer.photos({
photos: json,
closeBtn: 1, //右上角按钮,可通过配置1和2来展示,如果不显示,则closeBtn: 0
anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数)
});
}
</script> </script>
</body> </body>
</html> </html>
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-dev-这里是配置信息基本值 # end-dev-这里是配置信息基本值
......
...@@ -139,4 +139,35 @@ public class MQConst { ...@@ -139,4 +139,35 @@ public class MQConst {
return desc; return desc;
} }
} }
public enum ChimeQueue {
USER_OPERATION_LIKE("chime:stream:rk.user.operation.like", "group.user.operation.like", "划卡操作-喜欢"),
USER_OPERATION_DISLIKE("chime:stream:rk.user.operation.dislike", "group.user.operation.dislike", "划卡操作-不喜欢");
private final String key;
private final String group;
private final String desc;
ChimeQueue(String key, String group, String desc) {
this.key = key;
this.group = group;
this.desc = desc;
}
public String getKey() {
return key;
}
public String getGroup() {
return group;
}
public String getDesc() {
return desc;
}
}
public static void main(String[] args) {
System.out.println(ChimeQueue.USER_OPERATION_LIKE.name());
}
} }
...@@ -66,11 +66,6 @@ liquidnet: ...@@ -66,11 +66,6 @@ liquidnet:
port: 27017 port: 27017
user: admin user: admin
pwd: S&y$6d*JwJ pwd: S&y$6d*JwJ
chime:
host: 39.106.122.201:27017
port: 27017
user: admin
pwd: S&y$6d*JwJ
service: service:
adam: adam:
url-pay: url-pay:
......
...@@ -52,25 +52,20 @@ liquidnet: ...@@ -52,25 +52,20 @@ liquidnet:
adam: adam:
database: 255 database: 255
dbs: 0,256 dbs: 0,256
host: r-2ze7002ckw5u75fguk.redis.rds.aliyuncs.com host: r-2ze3sf1ll8er966uuc.redis.rds.aliyuncs.com
port: 6380 port: 6380
password: PO@B!Iud32 password: Zhengzai@2021
candy: candy:
database: 255 database: 255
dbs: 0,256 dbs: 0,256
host: r-2ze7002ckw5u75fguk.redis.rds.aliyuncs.com host: r-2zem98z0tongsw3fpc.redis.rds.aliyuncs.com
port: 6380 port: 6380
password: PO@B!Iud32 password: Zhengzai@2021
mongodb: mongodb:
host: 172.17.205.50:27017 host: 172.17.205.50:27017
port: 27017 port: 27017
user: admin user: admin
pwd: S&y$6d*JwJ pwd: S&y$6d*JwJ
chime:
host: 172.17.205.50:27017
port: 27017
user: admin
pwd: S&y$6d*JwJ
service: service:
adam: adam:
url-pay: url-pay:
......
...@@ -75,7 +75,7 @@ spring: ...@@ -75,7 +75,7 @@ spring:
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
data: data:
mongodb: mongodb:
uri: mongodb://${liquidnet.mongodb.chime.user}:${liquidnet.mongodb.chime.pwd}@${liquidnet.mongodb.chime.host}/?authSource=admin&maxPoolSize=2000&waitQueueMultiple=100 uri: mongodb://${liquidnet.mongodb.user}:${liquidnet.mongodb.pwd}@${liquidnet.mongodb.host}/?authSource=admin&maxPoolSize=2000&waitQueueMultiple=100
sslEnabled: ${liquidnet.mongodb.sslEnabled} sslEnabled: ${liquidnet.mongodb.sslEnabled}
database: ${liquidnet.mongodb.database} database: ${liquidnet.mongodb.database}
# ----------------------------------------------------------- # -----------------------------------------------------------
...@@ -88,6 +88,9 @@ global-auth: ...@@ -88,6 +88,9 @@ global-auth:
- ${liquidnet.info.context}/swagger-resources/** - ${liquidnet.info.context}/swagger-resources/**
- ${liquidnet.info.context}/v2/api-docs* - ${liquidnet.info.context}/v2/api-docs*
- ${liquidnet.info.context}/user/register - ${liquidnet.info.context}/user/register
- ${liquidnet.info.context}/user/userLikeOperation
- ${liquidnet.info.context}/user/userDislikeOperation
- ${liquidnet.info.context}/performance/getUserListByCon
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
\ No newline at end of file
...@@ -18,5 +18,8 @@ liquidnet: ...@@ -18,5 +18,8 @@ liquidnet:
level-root: debug level-root: debug
mysql: mysql:
database-name: dev_ln_scene database-name: dev_ln_scene
mongodb:
sslEnabled: false
database: dev_ln_scene
#以下为spring各环境个性配置 #以下为spring各环境个性配置
\ No newline at end of file
...@@ -18,5 +18,8 @@ liquidnet: ...@@ -18,5 +18,8 @@ liquidnet:
level-root: debug level-root: debug
mysql: mysql:
database-name: test_ln_scene database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
#以下为spring各环境个性配置 #以下为spring各环境个性配置
...@@ -79,6 +79,11 @@ spring: ...@@ -79,6 +79,11 @@ spring:
maximum-pool-size: 16 maximum-pool-size: 16
minimum-idle: 8 minimum-idle: 8
connection-test-query: SELECT 1 connection-test-query: SELECT 1
data:
mongodb:
uri: mongodb://${liquidnet.mongodb.user}:${liquidnet.mongodb.pwd}@${liquidnet.mongodb.host}/?authSource=admin&maxPoolSize=2000&waitQueueMultiple=100
sslEnabled: ${liquidnet.mongodb.sslEnabled}
database: ${liquidnet.mongodb.database}
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
package com.liquidnet.service.feign.adam.api; package com.liquidnet.service.feign.adam.api;
import com.liquidnet.service.adam.dto.rsc.AdamChimeUinfoReq;
import com.liquidnet.service.adam.dto.rsc.AdamChimeUinfoDto; import com.liquidnet.service.adam.dto.rsc.AdamChimeUinfoDto;
import com.liquidnet.service.adam.dto.rsc.AdamChimeUinfoReq;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import feign.hystrix.FallbackFactory; import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.List;
...@@ -37,4 +38,7 @@ public interface FeignAdamBaseClient { ...@@ -37,4 +38,7 @@ public interface FeignAdamBaseClient {
@PostMapping("rsc/inquire/cuinfo") @PostMapping("rsc/inquire/cuinfo")
ResponseDto<List<AdamChimeUinfoDto>> queryForChimeUserInfo(@RequestBody AdamChimeUinfoReq req); ResponseDto<List<AdamChimeUinfoDto>> queryForChimeUserInfo(@RequestBody AdamChimeUinfoReq req);
@PostMapping("rsc/inquire/sendMsgToRedis")
ResponseDto<Boolean> sendMsgToRedis(@RequestParam("redisKey") String redisKey,@RequestParam("jsonParamStr") String jsonParamStr);
} }
...@@ -129,7 +129,7 @@ public class AdamLoginController { ...@@ -129,7 +129,7 @@ public class AdamLoginController {
} }
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid); AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
if (null == userInfoVo) { if (null == userInfoVo || userInfoVo.getState() == 2) {
log.warn("Cancelled mobile:{}", mobile); log.warn("Cancelled mobile:{}", mobile);
return ResponseDto.failure(ErrorMapping.get("10024")); return ResponseDto.failure(ErrorMapping.get("10024"));
} }
...@@ -169,7 +169,7 @@ public class AdamLoginController { ...@@ -169,7 +169,7 @@ public class AdamLoginController {
AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid); AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid);
if (!toRegister && null == userInfoVo) { if (!toRegister && (null == userInfoVo || userInfoVo.getState() == 2)) {
log.warn("Cancelled mobile:{}", mobile); log.warn("Cancelled mobile:{}", mobile);
return ResponseDto.failure(ErrorMapping.get("10024")); return ResponseDto.failure(ErrorMapping.get("10024"));
} }
...@@ -206,7 +206,7 @@ public class AdamLoginController { ...@@ -206,7 +206,7 @@ public class AdamLoginController {
AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid); AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid);
if (!toRegister && null == userInfoVo) { if (!toRegister && (null == userInfoVo || userInfoVo.getState() == 2)) {
log.warn("Cancelled mobile:{}", mobile); log.warn("Cancelled mobile:{}", mobile);
return ResponseDto.failure(ErrorMapping.get("10024")); return ResponseDto.failure(ErrorMapping.get("10024"));
} }
...@@ -257,6 +257,11 @@ public class AdamLoginController { ...@@ -257,6 +257,11 @@ public class AdamLoginController {
AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(wechatMobile) : adamRdmService.getUserInfoVoByUid(uid); AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(wechatMobile) : adamRdmService.getUserInfoVoByUid(uid);
if (!toRegister && (null == userInfoVo || userInfoVo.getState() == 2)) {
log.warn("Cancelled mobile:{}", wechatMobile);
return ResponseDto.failure(ErrorMapping.get("10024"));
}
// 根据skip值,设置IsComplete(考虑到已存在用户未完善信息的情况,这里只对返回数据单独设置IsComplete) // 根据skip值,设置IsComplete(考虑到已存在用户未完善信息的情况,这里只对返回数据单独设置IsComplete)
userInfoVo.setIsComplete(1); userInfoVo.setIsComplete(1);
...@@ -285,7 +290,7 @@ public class AdamLoginController { ...@@ -285,7 +290,7 @@ public class AdamLoginController {
if (StringUtils.isEmpty(uid)) return ResponseDto.failure(ErrorMapping.get("10006")); if (StringUtils.isEmpty(uid)) return ResponseDto.failure(ErrorMapping.get("10006"));
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid); AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
if (null == userInfoVo) { if (null == userInfoVo || userInfoVo.getState() == 2) {
log.warn("Cancelled openId:{}", parameter.getOpenId()); log.warn("Cancelled openId:{}", parameter.getOpenId());
return ResponseDto.failure(ErrorMapping.get("10024")); return ResponseDto.failure(ErrorMapping.get("10024"));
} }
......
...@@ -8,6 +8,7 @@ import com.liquidnet.service.adam.dto.vo.*; ...@@ -8,6 +8,7 @@ import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.adam.service.AdamRdmService; import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamUserService; import com.liquidnet.service.adam.service.IAdamUserService;
import com.liquidnet.service.adam.util.ObjectUtil; import com.liquidnet.service.adam.util.ObjectUtil;
import com.liquidnet.service.adam.util.QueueUtils;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.UserPathDto; import com.liquidnet.service.base.UserPathDto;
...@@ -39,6 +40,9 @@ public class AdamRscController { ...@@ -39,6 +40,9 @@ public class AdamRscController {
@Autowired @Autowired
IAdamUserService adamUserService; IAdamUserService adamUserService;
@Autowired
private QueueUtils queueUtils;
@ApiOperationSupport(order = 10) @ApiOperationSupport(order = 10)
@ApiOperation(value = "@API:手机号注册", notes = "用于小程序活动用户注册,不登录") @ApiOperation(value = "@API:手机号注册", notes = "用于小程序活动用户注册,不登录")
...@@ -114,4 +118,19 @@ public class AdamRscController { ...@@ -114,4 +118,19 @@ public class AdamRscController {
} }
return ResponseDto.success(list); return ResponseDto.success(list);
} }
@ApiOperationSupport(order = 40)
@ApiOperation(value = "@API:社交用户点击喜欢或不喜欢", notes = "发送点击事件计数")
@PostMapping("inquire/sendMsgToRedis")
public ResponseDto<Boolean> sendMsgToRedis(@RequestParam(required = true) String redisKey,@RequestParam(required = true) String jsonParamStr) {
if (null == redisKey || null == jsonParamStr || redisKey.isEmpty() || jsonParamStr.isEmpty()) {
return ResponseDto.failure();
}
try {
queueUtils.sendMsgByRedis(redisKey,jsonParamStr);
} catch (Exception e) {
log.error("@API:社交用户点击喜欢或不喜欢计数入队", e);
}
return ResponseDto.success(true);
}
} }
...@@ -183,6 +183,10 @@ public class AdamRdmService { ...@@ -183,6 +183,10 @@ public class AdamRdmService {
return vo; return vo;
} }
public void delRealInfoVoByUid(String uid) {
redisUtil.del(AdamRedisConst.INFO_REAL_NAME.concat(uid));
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 认证失败的<ID_TYPE+ID_NO, ID_NAME> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 认证失败的<ID_TYPE+ID_NO, ID_NAME> */
public boolean setCertificationJunk(int idType, String idNo, String idName) { public boolean setCertificationJunk(int idType, String idNo, String idName) {
...@@ -652,7 +656,7 @@ public class AdamRdmService { ...@@ -652,7 +656,7 @@ public class AdamRdmService {
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <ORDER_NO, MEMBER_ORDER_INFO> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <ORDER_NO, MEMBER_ORDER_INFO> */
public boolean setShotMemberOrderVoByOrderNo(String orderNo, AdamMemberOrderVo vo) { public boolean setShotMemberOrderVoByOrderNo(String orderNo, AdamMemberOrderVo vo) {
return redisUtil.set(AdamRedisConst.SHOT_MEMBER_ORDER + orderNo, vo); return redisUtil.set(AdamRedisConst.SHOT_MEMBER_ORDER + orderNo, vo, 604800);
} }
public AdamMemberOrderVo getShotMemberOrderVoByOrderNo(String orderNo) { public AdamMemberOrderVo getShotMemberOrderVoByOrderNo(String orderNo) {
......
...@@ -179,7 +179,7 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -179,7 +179,7 @@ public class AdamUserServiceImpl implements IAdamUserService {
AdamThirdPartInfoVo thirdPartVo = adamRdmService.getThirdPartVoByUidPlatform(uid, param.getPlatform()); AdamThirdPartInfoVo thirdPartVo = adamRdmService.getThirdPartVoByUidPlatform(uid, param.getPlatform());
if (null == thirdPartVo) {// 未绑定 if (null == thirdPartVo) {// 未绑定
userInfoVo = adamRdmService.getUserInfoVoByUid(uid); userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
if (null == userInfoVo) { if (null == userInfoVo || userInfoVo.getState() == 2) {
log.warn("Cancelled mobile:{}", param.getMobile()); log.warn("Cancelled mobile:{}", param.getMobile());
return ResponseDto.failure(ErrorMapping.get("10024")); return ResponseDto.failure(ErrorMapping.get("10024"));
} }
...@@ -301,86 +301,88 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -301,86 +301,88 @@ public class AdamUserServiceImpl implements IAdamUserService {
objsMobileLocate = CollectionUtil.linkedListObjectArr(); objsMobileLocate = CollectionUtil.linkedListObjectArr();
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
// AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(uid);
//
// adamRdmService.delUidByMobile(userInfoVo.getMobile());
// adamRdmService.delUserInfoVoByUid(uid);
// adamRdmService.delUserMemberVoByUid(uid);
// adamRdmService.delAddressesVoByUid(uid);
// adamRdmService.delEntersVoByUid(uid);
log.debug("##RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("##RDS耗时:{}ms", System.currentTimeMillis() - s);
/* ---------------------- 账号基础信息 */ /* ---------------------- 账号基础信息 */
AdamUserInfoVo userInfoVoByUid = adamRdmService.getUserInfoVoByUid(uid); // AdamUserInfoVo userInfoVoByUid = adamRdmService.getUserInfoVoByUid(uid);
if (null != userInfoVoByUid) { // if (null != userInfoVoByUid) {
userInfoVoByUid.setState(2); // userInfoVoByUid.setState(2);
userInfoVoByUid.setUpdatedAt(now); // userInfoVoByUid.setUpdatedAt(now);
userInfoVoByUid.setClosedAt(now); // userInfoVoByUid.setClosedAt(now);
adamRdmService.setUserInfoVoByUid(uid, userInfoVoByUid); // adamRdmService.setUserInfoVoByUid(uid, userInfoVoByUid);
} // }
adamRdmService.delUserInfoVoByUid(uid);
toMqSqls.add(SqlMapping.get("adam_user.close")); toMqSqls.add(SqlMapping.get("adam_user.close"));
objsUser.add(new Object[]{now, now, uid}); objsUser.add(new Object[]{now, now, uid});
/* ---------------------- 三方账号信息 */ /* ---------------------- 三方账号信息 */
List<AdamThirdPartInfoVo> thirdPartInfoVos = adamRdmService.getThirdPartVoListByUid(uid); List<AdamThirdPartInfoVo> thirdPartInfoVos = adamRdmService.getThirdPartVoListByUid(uid);
if (!CollectionUtils.isEmpty(thirdPartInfoVos)) { if (!CollectionUtils.isEmpty(thirdPartInfoVos)) {
adamRdmService.delThirdPartVoListByUid(uid);
thirdPartInfoVos.forEach(r -> { thirdPartInfoVos.forEach(r -> {
r.setState(2); // r.setState(2);
r.setUpdatedAt(now); // r.setUpdatedAt(now);
if (null != r) {
adamRdmService.delUidByPlatformOpenId(r.getPlatform(), r.getOpenId()); adamRdmService.delUidByPlatformOpenId(r.getPlatform(), r.getOpenId());
}
}); });
adamRdmService.setThirdPartVoListByUid(uid, thirdPartInfoVos); // adamRdmService.setThirdPartVoListByUid(uid, thirdPartInfoVos);
} }
toMqSqls.add(SqlMapping.get("adam_third_party.close")); toMqSqls.add(SqlMapping.get("adam_third_party.close"));
objsThirdPart.add(new Object[]{now, uid}); objsThirdPart.add(new Object[]{now, uid});
/* ---------------------- 用户会员信息 */ /* ---------------------- 用户会员信息 */
AdamUserMemberVo userMemberVoByUid = adamRdmService.getUserMemberVoByUid(uid); // AdamUserMemberVo userMemberVoByUid = adamRdmService.getUserMemberVoByUid(uid);
if (null != userMemberVoByUid) { // if (null != userMemberVoByUid) {
userMemberVoByUid.setState(2); // userMemberVoByUid.setState(2);
userMemberVoByUid.setUpdatedAt(now); // userMemberVoByUid.setUpdatedAt(now);
//
adamRdmService.setUserMemberVoByUid(uid, userMemberVoByUid); // adamRdmService.setUserMemberVoByUid(uid, userMemberVoByUid);
} // }
adamRdmService.delUserMemberVoByUid(uid);
adamRdmService.delMemberOrderVoByUid(uid);
toMqSqls.add(SqlMapping.get("adam_user_member.close")); toMqSqls.add(SqlMapping.get("adam_user_member.close"));
objsUserMember.add(new Object[]{now, uid}); objsUserMember.add(new Object[]{now, uid});
/* ---------------------- 用户实名信息 */ /* ---------------------- 用户实名信息 */
AdamRealInfoVo realInfoVoByUid = adamRdmService.getRealInfoVoByUid(uid); // AdamRealInfoVo realInfoVoByUid = adamRdmService.getRealInfoVoByUid(uid);
if (null != realInfoVoByUid) { // if (null != realInfoVoByUid) {
realInfoVoByUid.setState(2); // realInfoVoByUid.setState(2);
//
adamRdmService.setRealInfoVoByUid(uid, realInfoVoByUid); // adamRdmService.setRealInfoVoByUid(uid, realInfoVoByUid);
} // }
adamRdmService.delRealInfoVoByUid(uid);
toMqSqls.add(SqlMapping.get("adam_real_name.close")); toMqSqls.add(SqlMapping.get("adam_real_name.close"));
objsRealInfo.add(new Object[]{now, uid}); objsRealInfo.add(new Object[]{now, uid});
/* ---------------------- 收货地址信息 */ /* ---------------------- 收货地址信息 */
List<AdamAddressesVo> addressesVoByUid = adamRdmService.getAddressesVoByUid(uid); // List<AdamAddressesVo> addressesVoByUid = adamRdmService.getAddressesVoByUid(uid);
if (!CollectionUtils.isEmpty(addressesVoByUid)) { // if (!CollectionUtils.isEmpty(addressesVoByUid)) {
addressesVoByUid.forEach(r -> { // addressesVoByUid.forEach(r -> {
r.setState(2); // r.setState(2);
r.setUpdatedAt(now); // r.setUpdatedAt(now);
r.setDeletedAt(now); // r.setDeletedAt(now);
}); // });
//
adamRdmService.setAddressesVoByUid(uid, addressesVoByUid); // adamRdmService.setAddressesVoByUid(uid, addressesVoByUid);
} // }
adamRdmService.delAddressesVoByUid(uid);
toMqSqls.add(SqlMapping.get("adam_addresses.close")); toMqSqls.add(SqlMapping.get("adam_addresses.close"));
objsAddresses.add(new Object[]{now, now, uid}); objsAddresses.add(new Object[]{now, now, uid});
/* ---------------------- 入场人信息 */ /* ---------------------- 入场人信息 */
List<AdamEntersVo> entersVoByUid = adamRdmService.getEntersVoByUid(uid); // List<AdamEntersVo> entersVoByUid = adamRdmService.getEntersVoByUid(uid);
if (!CollectionUtils.isEmpty(entersVoByUid)) { // if (!CollectionUtils.isEmpty(entersVoByUid)) {
entersVoByUid.forEach(r -> { // entersVoByUid.forEach(r -> {
r.setState(2); // r.setState(2);
r.setUpdatedAt(now); // r.setUpdatedAt(now);
r.setDeletedAt(now); // r.setDeletedAt(now);
}); // });
//
adamRdmService.setEntersVoByUid(uid, entersVoByUid); // adamRdmService.setEntersVoByUid(uid, entersVoByUid);
} // }
adamRdmService.delEntersVoByUid(uid);
toMqSqls.add(SqlMapping.get("adam_enters.close")); toMqSqls.add(SqlMapping.get("adam_enters.close"));
objsEnters.add(new Object[]{now, now, uid}); objsEnters.add(new Object[]{now, now, uid});
......
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-test-这里是配置信息基本值 # end-test-这里是配置信息基本值
spring: spring:
......
...@@ -155,7 +155,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -155,7 +155,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
continue; continue;
} }
} }
if (baseVo.getCouType().equals(101)) { if (baseVo.getCouType().equals(101) || baseVo.getCouType().equals(3)) {
continue; continue;
} }
if (dtoItem.getExclusive().equals(1)) { //会员券 if (dtoItem.getExclusive().equals(1)) { //会员券
...@@ -186,7 +186,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -186,7 +186,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
int canUse = 0; int canUse = 0;
for (CandyUserCouponBasicDto dtoItem : dtoList) { for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getPerformanceCouponUserVo(dtoItem, priceTotal, performanceId, timeId, ticketId); CandyCouponVo baseVo = CouponBaseUtil.getPerformanceCouponUserVo(dtoItem, priceTotal, performanceId, timeId, ticketId);
if (baseVo.getCouType().equals(101) || baseVo.getBusiType() == 2) { if (baseVo.getCouType().equals(101) || baseVo.getCouType().equals(3) || baseVo.getBusiType() == 2) {
continue; continue;
} }
if (baseVo.getState().equals(1)) { //可用 if (baseVo.getState().equals(1)) { //可用
......
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-test-这里是配置信息基本值 # end-test-这里是配置信息基本值
spring: spring:
......
-- pay -- pay
XADD chime:stream: * 0 0 XADD chime:stream:rk.user.operation.like * 0 0
XGROUP CREATE dragon:stream:dragon-pay dragon-pay-group 0 XGROUP CREATE chime:stream:rk.user.operation.like group.user.operation.like 0
XADD chime:stream:rk.user.operation.dislike * 0 0
XGROUP CREATE chime:stream:rk.user.operation.dislike group.user.operation.dislike 0
-- delete -- delete
XGROUP DESTROY dragon:stream:dragon-pay dragon-pay-group 0 XGROUP DESTROY chime:stream:rk.user.operation.like group.user.operation.like 0
...@@ -91,4 +91,38 @@ public class ChimeUserController { ...@@ -91,4 +91,38 @@ public class ChimeUserController {
} }
return ResponseDto.success(userInfoDto); return ResponseDto.success(userInfoDto);
} }
@GetMapping("userLikeOperation")
@ApiOperation("划卡计数-喜欢")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "currentUserId", value = "当前登录用户ID", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "targetUserId", value = "目标用户ID", required = true)
})
public ResponseDto<ChimeUserInfoDto> userLikeOperation(
@RequestParam(defaultValue = "") String currentUserId,
@RequestParam(defaultValue = "") String targetUserId
) {
boolean result = chimeUserService.userLikeOperation(currentUserId,targetUserId);
if(!result){
ResponseDto.failure("用户划卡-喜欢-操作失败!currentUserId:{} targetUserId:{}",currentUserId,targetUserId);
}
return ResponseDto.success();
}
@GetMapping("userDislikeOperation")
@ApiOperation("划卡计数-不喜欢")
@ApiImplicitParams({
@ApiImplicitParam(type = "query", dataType = "String", name = "currentUserId", value = "当前登录用户ID", required = true),
@ApiImplicitParam(type = "query", dataType = "String", name = "targetUserId", value = "目标用户ID", required = true)
})
public ResponseDto<ChimeUserInfoDto> userDisLikeOperation(
@RequestParam(defaultValue = "") String currentUserId,
@RequestParam(defaultValue = "") String targetUserId
) {
boolean result = chimeUserService.userDisLikeOperation(currentUserId,targetUserId);
if(!result){
ResponseDto.failure("用户划卡-不喜欢-操作失败!currentUserId:{} targetUserId:{}",currentUserId,targetUserId);
}
return ResponseDto.success();
}
} }
...@@ -92,9 +92,16 @@ public class ChimePerformanceServiceImpl implements IChimePerformanceService { ...@@ -92,9 +92,16 @@ public class ChimePerformanceServiceImpl implements IChimePerformanceService {
Pageable pageable = PageRequest.of(pageNum, pageSize); // get 5 profiles on a page Pageable pageable = PageRequest.of(pageNum, pageSize); // get 5 profiles on a page
Query query = Query.query(criteria); Query query = Query.query(criteria);
query.with(pageable); query.with(pageable);
query.with(Sort.by( //根据集合中对象的某个字段排序 //多列排序
Sort.Order.desc("createdAt") List<Sort.Order> orderList = new ArrayList<Sort.Order>();
)); Sort.Order likeCountOrder = new Sort.Order(Sort.Direction.DESC, "likeCount");
Sort.Order disLikeCountOrder = new Sort.Order(Sort.Direction.ASC, "disLikeCount");
orderList.add(likeCountOrder);
orderList.add(disLikeCountOrder);
query.with(Sort.by(orderList));
// query.with(Sort.by( //根据集合中对象的某个字段排序
// Sort.Order.desc("createdAt")
// ));
startTime = System.currentTimeMillis(); startTime = System.currentTimeMillis();
List<ChimeUserInfoVo> chimeUserInfoVoList = mongoTemplate.find(query, ChimeUserInfoVo.class, ChimeUserInfoVo.class.getSimpleName()); List<ChimeUserInfoVo> chimeUserInfoVoList = mongoTemplate.find(query, ChimeUserInfoVo.class, ChimeUserInfoVo.class.getSimpleName());
......
package com.liquidnet.service.chime.service.impl; package com.liquidnet.service.chime.service.impl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.BeanUtil; import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.StringUtil; import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.adam.dto.rsc.AdamChimeUinfoDto; import com.liquidnet.service.adam.dto.rsc.AdamChimeUinfoDto;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.chime.biz.ChimeUserBiz; import com.liquidnet.service.chime.biz.ChimeUserBiz;
import com.liquidnet.service.chime.constant.ChimeConstant;
import com.liquidnet.service.chime.dto.ChimeUserInfoDto; import com.liquidnet.service.chime.dto.ChimeUserInfoDto;
import com.liquidnet.service.chime.dto.ChimeUserRegisterReqDto; import com.liquidnet.service.chime.dto.ChimeUserRegisterReqDto;
import com.liquidnet.service.chime.dto.ChimeUserTagDto; import com.liquidnet.service.chime.dto.ChimeUserTagDto;
import com.liquidnet.service.chime.dto.ChimeUserUpdateReqDto; import com.liquidnet.service.chime.dto.ChimeUserUpdateReqDto;
import com.liquidnet.service.chime.service.IChimeUserService; import com.liquidnet.service.chime.service.IChimeUserService;
import com.liquidnet.service.chime.utils.DataUtils; import com.liquidnet.service.chime.utils.DataUtils;
import com.liquidnet.service.chime.utils.QueueUtils;
import com.liquidnet.service.chime.vo.mongo.ChimeUserInfoVo; import com.liquidnet.service.chime.vo.mongo.ChimeUserInfoVo;
import com.liquidnet.service.chime.vo.mongo.ChimeUserOperLogVo;
import com.liquidnet.service.chime.vo.mongo.ChimeUserTagsMappingVo; import com.liquidnet.service.chime.vo.mongo.ChimeUserTagsMappingVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -38,7 +42,7 @@ public class ChimeUserServiceImpl implements IChimeUserService { ...@@ -38,7 +42,7 @@ public class ChimeUserServiceImpl implements IChimeUserService {
private DataUtils dataUtils; private DataUtils dataUtils;
@Autowired @Autowired
private RedisUtil redisUtil; private QueueUtils queueUtils;
@Autowired @Autowired
private ChimeUserBiz chimeUserBiz; private ChimeUserBiz chimeUserBiz;
...@@ -56,6 +60,8 @@ public class ChimeUserServiceImpl implements IChimeUserService { ...@@ -56,6 +60,8 @@ public class ChimeUserServiceImpl implements IChimeUserService {
chimeUserInfoVo.setUserTagsVoList(userTagList); chimeUserInfoVo.setUserTagsVoList(userTagList);
chimeUserInfoVo.setCreatedAt(LocalDateTime.now().toString()); chimeUserInfoVo.setCreatedAt(LocalDateTime.now().toString());
chimeUserInfoVo.setUpdatedAt(null); chimeUserInfoVo.setUpdatedAt(null);
chimeUserInfoVo.setLikeCount(0l);
chimeUserInfoVo.setDisLikeCount(0l);
//插入mongo //插入mongo
dataUtils.createChimeUser(chimeUserInfoVo); dataUtils.createChimeUser(chimeUserInfoVo);
} }
...@@ -135,4 +141,28 @@ public class ChimeUserServiceImpl implements IChimeUserService { ...@@ -135,4 +141,28 @@ public class ChimeUserServiceImpl implements IChimeUserService {
} }
return true; return true;
} }
@Override
public boolean userLikeOperation(String currentUserId, String targetUserId) {
ChimeUserOperLogVo chimeUserOperLogVo = ChimeUserOperLogVo.getNew();
chimeUserOperLogVo.setMid(ChimeConstant.getLogMid());
chimeUserOperLogVo.setCurrentUserId(currentUserId);
chimeUserOperLogVo.setTargetUserId(targetUserId);
chimeUserOperLogVo.setOpType(ChimeConstant.LOG_USER_OPERATION_LIKE);
chimeUserOperLogVo.setCreatedAt(LocalDateTime.now().toString());
queueUtils.sendMsgByRedis(MQConst.ChimeQueue.USER_OPERATION_LIKE.getKey(), JsonUtils.toJson(chimeUserOperLogVo));
return true;
}
@Override
public boolean userDisLikeOperation(String currentUserId, String targetUserId) {
ChimeUserOperLogVo chimeUserOperLogVo = ChimeUserOperLogVo.getNew();
chimeUserOperLogVo.setMid(ChimeConstant.getLogMid());
chimeUserOperLogVo.setCurrentUserId(currentUserId);
chimeUserOperLogVo.setTargetUserId(targetUserId);
chimeUserOperLogVo.setOpType(ChimeConstant.LOG_USER_OPERATION_DISLIKE);
chimeUserOperLogVo.setCreatedAt(LocalDateTime.now().toString());
queueUtils.sendMsgByRedis(MQConst.ChimeQueue.USER_OPERATION_DISLIKE.getKey(), JsonUtils.toJson(chimeUserOperLogVo));
return true;
}
} }
package com.liquidnet.service.chime.utils;
import com.liquidnet.service.feign.adam.api.FeignAdamBaseClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class QueueUtils {
// @Autowired
// private RabbitTemplate rabbitTemplate;
// @Autowired
// StringRedisTemplate stringRedisTemplate;
@Autowired
private FeignAdamBaseClient feignAdamBaseClient;
/**
* 发送消息 - RABBIT
*
* @param exchange 交换机
* @param routeKey 路径
* @param jsonMsg Json字符串
*/
// public void sendMsgByRabbit(String exchange, String routeKey, String jsonMsg) {
// rabbitTemplate.convertAndSend(exchange, routeKey, jsonMsg);
// }
/**
* 发送消息 - REDIS
*
* @param streamKey Redis消费Key
* @param jsonMsg Json字符串
*/
public void sendMsgByRedis(String streamKey, String jsonMsg) {
try {
feignAdamBaseClient.sendMsgToRedis(streamKey,jsonMsg);
} catch (Exception e) {
log.error("userOperation sendMsgByRedis error:{}",e);
log.error("userOperation sendMsgByRedis error msg",e.getMessage());
e.printStackTrace();
}
}
// public void sendMsgByRedis(String streamKey, String jsonMsg) {
// HashMap<String, String> map = CollectionUtil.mapStringString();
// map.put("message", jsonMsg);
// try {
// stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
// } catch (Exception e) {
// log.error("userLikeOperation error:{}",e);
// log.error("userLikeOperation error msg",e.getMessage());
// e.printStackTrace();
// }
// }
}
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-dev-这里是配置信息基本值 # end-dev-这里是配置信息基本值
spring: spring:
......
...@@ -21,6 +21,11 @@ ...@@ -21,6 +21,11 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-chime-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency> <dependency>
<groupId>com.liquidnet</groupId> <groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-cache-redis</artifactId> <artifactId>liquidnet-common-cache-redis</artifactId>
...@@ -31,6 +36,10 @@ ...@@ -31,6 +36,10 @@
<artifactId>liquidnet-common-sms</artifactId> <artifactId>liquidnet-common-sms</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
package com.liquidnet.service.consumer.adam.receiver;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.chime.vo.mongo.ChimeUserOperLogVo;
import com.liquidnet.service.consumer.adam.util.ChimeDataUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.stream.StreamListener;
import java.util.HashMap;
@Slf4j
public abstract class AbstractChimeRedisReceiver implements StreamListener<String, MapRecord<String, String, String>> {
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
private ChimeDataUtils chimeDataUtils;
@Override
public void onMessage(MapRecord<String, String, String> message) {
log.debug("CONSUMER SQL[streamKey:{},messageId:{},stream:{},body:{}]",
this.getRedisStreamKey(), message.getId(), message.getStream(), message.getValue());
boolean result = this.consumerMessageHandler(message.getValue().get("message"));
log.info("CONSUMER SQL RESULT:{} ==> MESSAGE_ID:{}", result, message.getId());
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
stringRedisTemplate.opsForStream().delete(this.getRedisStreamKey(), message.getId());
} catch (Exception e) {
log.error("#CONSUMER SQL RESULT:{} ==> DEL_REDIS_QUEUE_MSG_EXCEPTION[MESSAGE_ID:{},MSG:{}]", result, message.getId(), JsonUtils.toJson(message), e);
} finally {
try {
stringRedisTemplate.opsForStream().acknowledge(getRedisStreamGroup(), message);
} catch (Exception ignored) {
}
}
}
private boolean consumerMessageHandler(String msg) {
Boolean aBoolean = false;
try {
ChimeUserOperLogVo textMessage = JsonUtils.fromJson(msg, ChimeUserOperLogVo.class);
if (textMessage == null) {
aBoolean = true;
} else {
//执行计数
chimeDataUtils.updateChimeUser(textMessage);
//创建操作日志
chimeDataUtils.createUserOperLog(textMessage);
aBoolean = true;
log.info("consumerMessageHandler.msg===> ",msg);
}
} catch (Exception e) {
log.error("CONSUMER SQL FAIL ==> {}", e.getMessage(), e);
} finally {
if (!aBoolean) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", msg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(this.getRedisStreamKey()));
}
}
return aBoolean;
}
protected abstract String getRedisStreamKey();
protected abstract String getRedisStreamGroup();
}
package com.liquidnet.service.consumer.adam.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerChimeUserOperationDisLikeRdsReceiver extends AbstractChimeRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.ChimeQueue.USER_OPERATION_DISLIKE.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.ChimeQueue.USER_OPERATION_DISLIKE.getGroup();
}
}
package com.liquidnet.service.consumer.adam.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerChimeUserOperationLikeRdsReceiver extends AbstractChimeRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.ChimeQueue.USER_OPERATION_LIKE.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.ChimeQueue.USER_OPERATION_LIKE.getGroup();
}
}
package com.liquidnet.service.consumer.adam.util;
import com.liquidnet.service.chime.constant.ChimeConstant;
import com.liquidnet.service.chime.vo.mongo.ChimeUserInfoVo;
import com.liquidnet.service.chime.vo.mongo.ChimeUserOperLogVo;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class ChimeDataUtils {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 添加操作日志
* @param chimeUserOperLogVo
*/
public void createUserOperLog(ChimeUserOperLogVo chimeUserOperLogVo){
mongoTemplate.save(chimeUserOperLogVo,ChimeUserOperLogVo.class.getSimpleName());
}
/**
* 修改社交用户操作计数
* @param chimeUserOperLogVo
*/
public void updateChimeUser(ChimeUserOperLogVo chimeUserOperLogVo) {
ChimeUserInfoVo chimeUserInfoVo = this.getUserByUserId(chimeUserOperLogVo.getTargetUserId());
if(chimeUserInfoVo == null){
log.error("chimeUserInfoVo is null userId is not exist:");
return;
}
Query query = Query.query(Criteria.where("userId").is(chimeUserInfoVo.getUserId()));
Update update = new Update();
if(chimeUserOperLogVo.getOpType().equalsIgnoreCase(ChimeConstant.LOG_USER_OPERATION_LIKE)){
update.set("likeCount", chimeUserInfoVo.getLikeCount() + 1);
}else if(chimeUserOperLogVo.getOpType().equalsIgnoreCase(ChimeConstant.LOG_USER_OPERATION_DISLIKE)){
update.set("disLikeCount", chimeUserInfoVo.getDisLikeCount() + 1);
}
UpdateResult result = mongoTemplate.updateFirst(query,update,ChimeUserInfoVo.class,ChimeUserInfoVo.class.getSimpleName());
log.info("updateChimeUser result:{}",result.toString());
// Query query = Query.query(Criteria.where("userId").is(chimeUserInfoVo.getUserId()));
//// Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(chimeUserInfoVo)));
// Update update = Update.fromDocument(Document.parse(JsonUtils.toJson(chimeUserInfoVo)));
// if(chimeUserOperLogVo.getOpType().equalsIgnoreCase(ChimeConstant.LOG_USER_OPERATION_LIKE)){
// update.set("likeCount", chimeUserInfoVo.getLikeCount() + 1);
// }else if(chimeUserOperLogVo.getOpType().equalsIgnoreCase(ChimeConstant.LOG_USER_OPERATION_DISLIKE)){
// update.set("disLikeCount", chimeUserInfoVo.getDisLikeCount() + 1);
// }
// update.set("likeCount", 8);
// update.set("disLikeCount", 9);
// UpdateResult result = mongoTemplate.updateFirst(query,update,ChimeUserInfoVo.class,ChimeUserInfoVo.class.getSimpleName());
// log.info("updateChimeUser result:{}",result.toString());
}
/**
* 获取单个用户信息
* @param userId
* @return
*/
public ChimeUserInfoVo getUserByUserId(String userId){
Query query = Query.query(Criteria.where("userId").is(userId));
ChimeUserInfoVo chimeUserInfoVo = mongoTemplate.findOne(query,ChimeUserInfoVo.class,ChimeUserInfoVo.class.getSimpleName());
return chimeUserInfoVo;
}
}
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-test-这里是配置信息基本值 # end-test-这里是配置信息基本值
spring: spring:
......
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-test-这里是配置信息基本值 # end-test-这里是配置信息基本值
spring: spring:
......
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-test-这里是配置信息基本值 # end-test-这里是配置信息基本值
spring: spring:
......
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-test-这里是配置信息基本值 # end-test-这里是配置信息基本值
spring: spring:
......
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-dev-这里是配置信息基本值 # end-dev-这里是配置信息基本值
spring: spring:
......
...@@ -9,11 +9,9 @@ liquidnet: ...@@ -9,11 +9,9 @@ liquidnet:
#host: 172.17.207.177:7001,172.17.121.158:7001,172.17.121.157:7001 #host: 172.17.207.177:7001,172.17.121.158:7001,172.17.121.157:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-dev-这里是配置信息基本值 # end-dev-这里是配置信息基本值
spring: spring:
profiles: profiles:
include: service-example include: service-example
\ No newline at end of file
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-dev-这里是配置信息基本值 # end-dev-这里是配置信息基本值
......
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-dev-这里是配置信息基本值 # end-dev-这里是配置信息基本值
......
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-dev-这里是配置信息基本值 # end-dev-这里是配置信息基本值
......
...@@ -101,6 +101,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -101,6 +101,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
try { try {
if (payOrderParam.getVoucherType() != null && payOrderParam.getVoucherType().equals(3)) { if (payOrderParam.getVoucherType() != null && payOrderParam.getVoucherType().equals(3)) {
isPay = false; isPay = false;
if(payOrderParam.getNumber()>1){
return ResponseDto.failure("张数大于1不支持兑换");//参数错误
}
} }
KylinPerformanceVo performanceData = dataUtils.getPerformanceVo(payOrderParam.getPerformanceId()); KylinPerformanceVo performanceData = dataUtils.getPerformanceVo(payOrderParam.getPerformanceId());
KylinTicketTimesVo ticketTimesData = null; KylinTicketTimesVo ticketTimesData = null;
......
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-dev-这里是配置信息基本值 # end-dev-这里是配置信息基本值
......
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-test-这里是配置信息基本值 # end-test-这里是配置信息基本值
......
...@@ -441,6 +441,9 @@ CREATE TABLE `sweet_wechat_user` ...@@ -441,6 +441,9 @@ CREATE TABLE `sweet_wechat_user`
ROW_FORMAT = DYNAMIC COMMENT '正在现场服务号关注事件储存用户信息表'; ROW_FORMAT = DYNAMIC COMMENT '正在现场服务号关注事件储存用户信息表';
alter table sweet_wechat_user add type tinyint NOT NULL DEFAULT 1 COMMENT '服务类型 1正在 2摩登' after user_id; alter table sweet_wechat_user add type tinyint NOT NULL DEFAULT 1 COMMENT '服务类型 1正在 2摩登' after user_id;
alter table sweet_wechat_user add adam_user_id varchar(200) NOT NULL DEFAULT '' COMMENT 'adam用户id' after user_id;
alter table sweet_wechat_user add adam_phone varchar(200) NOT NULL DEFAULT '' COMMENT 'adam用户手机号' after adam_user_id;
-- 小程序登录记录用户解密后信息表 -- 小程序登录记录用户解密后信息表
drop TABLE if exists `sweet_applet_user`; drop TABLE if exists `sweet_applet_user`;
CREATE TABLE `sweet_applet_user` CREATE TABLE `sweet_applet_user`
......
...@@ -23,6 +23,7 @@ public class SweetConstant { ...@@ -23,6 +23,7 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO="sweet:wechatUser:unionId:"; public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO="sweet:wechatUser:unionId:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO_STR="sweet:wechatUser:unionIdStr:"; public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO_STR="sweet:wechatUser:unionIdStr:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID="sweet:wechatUser:openId:"; public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID="sweet:wechatUser:openId:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID_PHONE="sweet:wechatUser:phone:";
public final static String REDIS_KEY_SWEET_ANSWER_PHONE="sweet:answer:phone:"; public final static String REDIS_KEY_SWEET_ANSWER_PHONE="sweet:answer:phone:";
public final static String REDIS_KEY_SWEET_CITY_VOTE_STAT_LIST=":StatList"; public final static String REDIS_KEY_SWEET_CITY_VOTE_STAT_LIST=":StatList";
public final static String REDIS_KEY_SWEET_CITY_VOTE_CITY_CODE=":cityCode:"; public final static String REDIS_KEY_SWEET_CITY_VOTE_CITY_CODE=":cityCode:";
......
...@@ -7,12 +7,14 @@ import io.swagger.annotations.Api; ...@@ -7,12 +7,14 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid; import javax.validation.Valid;
@Api(tags = "服务号-模版消息") @Api(tags = "服务号-模版消息")
@Slf4j
@RestController @RestController
@RequestMapping("/wechatTemplate") @RequestMapping("/wechatTemplate")
public class SweetWechatTemplateController { public class SweetWechatTemplateController {
...@@ -52,12 +54,17 @@ public class SweetWechatTemplateController { ...@@ -52,12 +54,17 @@ public class SweetWechatTemplateController {
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "unionId", value = "微信unionId", required = true), @ApiImplicitParam(type = "form", dataType = "String", name = "unionId", value = "微信unionId", required = true),
@ApiImplicitParam(type = "form", dataType = "Integer", name = "type", value = "type 1正在 2摩登", required = false), @ApiImplicitParam(type = "form", dataType = "Integer", name = "type", value = "type 1正在 2摩登", required = false),
@ApiImplicitParam(type = "form", dataType = "String", name = "userId", value = "正在用户ID", required = false),
@ApiImplicitParam(type = "form", dataType = "String", name = "phone", value = "正在用户手机号", required = false),
}) })
public ResponseDto followStatus( public ResponseDto followStatus(
@RequestParam() String unionId, @RequestParam() String unionId,
@RequestParam(defaultValue = "1") Integer type @RequestParam(defaultValue = "1") Integer type,
@RequestParam(defaultValue = "") String userId,
@RequestParam(defaultValue = "") String phone
) { ) {
boolean status = sweetTemplateService.followStatus(unionId, type); log.info("followStatus参数 [unionId:{},type:{},userId:{},phone:{}]", unionId, type, userId, phone);
boolean status = sweetTemplateService.followStatus(unionId, type, userId, phone);
if (status) { if (status) {
return ResponseDto.success(1); return ResponseDto.success(1);
} else { } else {
......
...@@ -30,6 +30,16 @@ public class SweetWechatUser implements Serializable { ...@@ -30,6 +30,16 @@ public class SweetWechatUser implements Serializable {
*/ */
private String userId; private String userId;
/**
* adam_user_id
*/
private String adamUserId;
/**
* adam_phone
*/
private String adamPhone;
/** /**
* openId * openId
*/ */
......
...@@ -6,6 +6,7 @@ import com.liquidnet.commons.lang.util.CollectionUtil; ...@@ -6,6 +6,7 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil; import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
...@@ -31,6 +32,7 @@ import org.springframework.util.CollectionUtils; ...@@ -31,6 +32,7 @@ import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; import java.util.List;
/** /**
...@@ -259,7 +261,7 @@ public class SweetWechatTemplateServiceImpl { ...@@ -259,7 +261,7 @@ public class SweetWechatTemplateServiceImpl {
} }
} }
public boolean followStatus(String unionId, Integer type) { public boolean followStatus(String unionId, Integer type, String userId, String phone) {
SweetWechatUser sweetWechatUser = null; SweetWechatUser sweetWechatUser = null;
if (null == type || type <= 1) { if (null == type || type <= 1) {
sweetWechatUser = redisDataUtils.getSweetWechatUser(unionId); sweetWechatUser = redisDataUtils.getSweetWechatUser(unionId);
...@@ -268,6 +270,42 @@ public class SweetWechatTemplateServiceImpl { ...@@ -268,6 +270,42 @@ public class SweetWechatTemplateServiceImpl {
} }
if (null != sweetWechatUser && !sweetWechatUser.getUnionId().isEmpty()) { if (null != sweetWechatUser && !sweetWechatUser.getUnionId().isEmpty()) {
// 同步手机号
String oldAdamUserId = sweetWechatUser.getAdamUserId();
String oldAdamPhone = sweetWechatUser.getAdamPhone();
if (null == oldAdamUserId) {
oldAdamUserId = "";
}
if (null == oldAdamPhone) {
oldAdamPhone = "";
}
if ((!phone.isEmpty() || !userId.isEmpty()) && (oldAdamUserId.isEmpty() || oldAdamPhone.isEmpty())) {
if (phone.isEmpty()) {
phone = oldAdamPhone;
} else {
redisDataUtils.setUnionIdByPhone(phone, unionId);
}
if (userId.isEmpty()) {
userId = oldAdamUserId;
}
sweetWechatUser.setAdamPhone(phone);
sweetWechatUser.setAdamUserId(userId);
if (null == type || type <= 1) {
redisDataUtils.setSweetWechatUser(sweetWechatUser);
} else if (type == 2) {
redisDataUtils.setSweetWechatUserModernsky(sweetWechatUser);
}
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("sweet_user.update2"));
LocalDateTime now = LocalDateTime.now();
sqlsDataA.add(new Object[]{
userId, phone, now, unionId, type
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_USER_INSERT_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
}
return true; return true;
} else { } else {
return false; return false;
......
...@@ -338,6 +338,21 @@ public class RedisDataUtils { ...@@ -338,6 +338,21 @@ public class RedisDataUtils {
return (String) redisUtil.get(redisKey); return (String) redisUtil.get(redisKey);
} }
public String getUnionIdByPhone(String phone) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_UNIONID_PHONE.concat(phone);
Object obj = redisUtil.get(redisKey);
if (null == obj) {
return "";
} else {
return (String) redisUtil.get(redisKey);
}
}
public void setUnionIdByPhone(String phone, String unionId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_UNIONID_PHONE.concat(phone);
redisUtil.set(redisKey, unionId);
}
public SweetWechatUser getSweetWechatUser(String unionid) { public SweetWechatUser getSweetWechatUser(String unionid) {
if (unionid.isEmpty()) { if (unionid.isEmpty()) {
return null; return null;
......
...@@ -9,8 +9,8 @@ liquidnet: ...@@ -9,8 +9,8 @@ liquidnet:
#host: 172.17.207.177:7001 #host: 172.17.207.177:7001
instance: instance:
prefer-ip-address: true prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka #host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
host: 192.168.193.41:7001
# end-dev-这里是配置信息基本值 # end-dev-这里是配置信息基本值
......
...@@ -45,6 +45,7 @@ sweet_answer.insert=INSERT INTO sweet_answer (answer_id,phone,answer_json,img_ur ...@@ -45,6 +45,7 @@ sweet_answer.insert=INSERT INTO sweet_answer (answer_id,phone,answer_json,img_ur
# --------------------------关注/取消服务号的用户信息-------------------------- # --------------------------关注/取消服务号的用户信息--------------------------
sweet_user.insert=INSERT INTO sweet_wechat_user (user_id,type,openId,unionId,nickname,sexDesc,sex,headImgUrl,language,country,province,city,subscribeTime,subscribeScene) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?) sweet_user.insert=INSERT INTO sweet_wechat_user (user_id,type,openId,unionId,nickname,sexDesc,sex,headImgUrl,language,country,province,city,subscribeTime,subscribeScene) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
sweet_user.update=UPDATE sweet_wechat_user SET is_cancel = ?, updated_at = ? WHERE unionId = ? and type = ? sweet_user.update=UPDATE sweet_wechat_user SET is_cancel = ?, updated_at = ? WHERE unionId = ? and type = ?
sweet_user.update2=UPDATE sweet_wechat_user SET adam_user_id = ?, adam_phone = ?, updated_at = ? WHERE unionId = ? and type = ?
# --------------------------提醒记录-------------------------- # --------------------------提醒记录--------------------------
sweet_remind.insert=INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?) sweet_remind.insert=INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?)
# --------------------------小程序登录记录用户解密后信息-------------------------- # --------------------------小程序登录记录用户解密后信息--------------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment