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

Commit 5b3fff0a authored by jiangxiulong's avatar jiangxiulong

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

parents ef207634 8d7edb3b
package com.liquidnet.service.adam.constant;
/**
* @author Li Chen
* @date 2020-11-04 14:02
*/
public class AdamRedisConst {
public static final String ADAM = "adam:";
......@@ -26,7 +23,9 @@ public class AdamRedisConst {
public static final String INFO_MEMBER_RIGHTS = INFO.concat("member:rights:");
public static final String INFO_MEMBER_AGREEMENT = INFO.concat("member:agreement");
public static final String INFO_MEMBER_CODE = INFO.concat("member:code:");
public static final String INFO_MEMBER_BLACK = INFO.concat("member:black:");
public static final String BLACK_LIST = ADAM.concat(":blacklist:");
public static final String BLK_LIST_MEMBER_UID = BLACK_LIST.concat("member:uid");
public static final String SHOT_MEMBER_ORDER = ADAM.concat("morder:");
......@@ -42,6 +41,7 @@ public class AdamRedisConst {
public static final String LOCK_KEY_UMEMBER_NO = "adam:lk:member:no";
// // // // // // // // // //
public static final String LOCK_KEY_USMS_MOBILE = "adam:lk:sms:mobile:";
public static final String LOCK_KEY_UREGISTER = "adam:lk:register:";
public static final String LOCK_KEY_UIDENTITY = "adam:lk:identity:";
public static final String LOCK_KEY_UMEMBER_CODE = "adam:lk:member:code:";
......
......@@ -56,6 +56,7 @@ public class AdamMemberCodeVo implements Serializable, Cloneable {
}
public AdamMemberCodeVo copy(AdamMemberCode source) {
if (null == source) return this;
this.setCode(source.getCode());
this.setMemberId(source.getMemberId());
this.setMemberPriceId(source.getMemberPriceId());
......
......@@ -63,6 +63,9 @@ public class AdamMemberOrderVo implements Serializable, Cloneable {
@ApiModelProperty(position = 21, value = "兑换码")
private String memberCode;
@ApiModelProperty(position = 22, value = "会员须知")
private String memberNotes;
public static final AdamMemberOrderVo obj = new AdamMemberOrderVo();
public static AdamMemberOrderVo getNew() {
......
......@@ -48,6 +48,7 @@ public class AdamMemberPriceVo implements Serializable {
}
public AdamMemberPriceVo copy(AdamMemberPrice source) {
if (null == source) return this;
this.setMemberPriceId(source.getMemberPriceId());
this.setMemberId(source.getMemberId());
this.setState(source.getState());
......
......@@ -45,7 +45,7 @@ public class AdamUserInfoVo implements java.io.Serializable, Cloneable {
@ApiModelProperty(position = 23, value = "注销时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime closedAt;
@ApiModelProperty(position = 24, value = "是否完善信息[0-未完善,1-已完善]")
@ApiModelProperty(position = 24, value = "完善信息进度[0-未完善,1-已完善]")
private Integer isComplete;
@ApiModelProperty(position = 25, value = "")
private String rongCloudToken;
......
......@@ -56,6 +56,10 @@ public interface IAdamRdmService {
void delAddressesVoByUid(String uid);
boolean setBlacklistForMember(List<String> uids);
List<String> getBlacklistForMember();
boolean setUserMemberVoByUid(String uid, AdamUserMemberVo vo);
AdamUserMemberVo getUserMemberVoByUid(String uid);
......@@ -64,8 +68,12 @@ public interface IAdamRdmService {
AdamMemberSimpleVo getMemberSimpleVo();
boolean setMemberVoByMemberId(String memberId, AdamMemberVo vo);
AdamMemberVo getMemberVoByMemberId(String memberId);
void delMemberVoByMemberId(String memberId);
boolean setMemberPriceVoByMemberId(String memberId, List<AdamMemberPriceVo> vos);
List<AdamMemberPriceVo> getMemberPriceVoByMemberId(String memberId);
......
......@@ -4,10 +4,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.AdamMemberParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.entity.AdamMember;
import com.liquidnet.service.base.ResponseDto;
/**
* 会员信息
*/
public interface IAdamMemberAdminService extends IService<AdamMember> {
AdamMemberVo add(AdamMemberParam info);
ResponseDto<Object> sync();
}
......@@ -8,5 +8,5 @@ import com.liquidnet.service.adam.entity.AdamMemberPrice;
public interface IAdamMemberPriceAdminService extends IService<AdamMemberPrice> {
AdamMemberPriceVo add(AdamMemberPrice info);
AdamMemberPriceVo edit(AdamMemberPriceParam param);
boolean edit(AdamMemberPriceParam param);
}
......@@ -35,7 +35,7 @@ public interface IKylinOrderTicketsService extends IService<KylinOrderTickets> {
// 同步大麦数据接口
//订单列表(状态 待支付 已支付 倒计时 已失效)
PageInfo<List<KylinOrderListVo>> orderList(int page, int size);
PageInfo<List<KylinOrderListVo>> orderList();
//订单详情
OrderDetailsVo orderDetails(String orderId);
......
......@@ -6,8 +6,11 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.lang.reflect.Array;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
public class SqlMapping {
......@@ -35,6 +38,7 @@ public class SqlMapping {
private static final long serialVersionUID = 2208924091512163151L;
private LinkedList<String> sqls;
private LinkedList<Object[]>[] args;
private String redisKey;
private SqlMessage() {
}
......@@ -61,6 +65,14 @@ public class SqlMapping {
this.args = args;
}
public String getRedisKey() {
return redisKey;
}
public void setRedisKey(String redisKey) {
this.redisKey = redisKey;
}
private final static SqlMapping.SqlMessage instance = new SqlMapping.SqlMessage();
public static SqlMapping.SqlMessage getInstance() {
......@@ -106,4 +118,10 @@ public class SqlMapping {
sqlMessage.setArgs(paramsList);
return JsonUtils.toJson(sqlMessage);
}
public static String getSqlRedis(String redisKey) {
SqlMapping.SqlMessage sqlMessage = SqlMapping.SqlMessage.getInstance();
sqlMessage.setRedisKey(redisKey);
return JsonUtils.toJson(sqlMessage);
}
}
......@@ -52,16 +52,17 @@ create unique index uidx_third_party_uid_open_id on adam_third_party (uid, open_
drop table if exists adam_user;
create table adam_user
(
mid int unsigned auto_increment primary key,
uid varchar(64) not null,
mobile varchar(30) not null,
passwd varchar(64),
pay_code varchar(64),
state tinyint comment '1-NORMAL,2-INVALID',
created_at datetime(3) not null,
updated_at datetime(3),
closed_at datetime(3),
comment text
mid int unsigned auto_increment primary key,
uid varchar(64) not null,
mobile varchar(30) not null,
passwd varchar(64),
pay_code varchar(64),
state tinyint default 0 comment '1-NORMAL,2-INVALID',
is_complete tinyint default 0 comment '完善信息进度:0-未完善,1-已完善',
created_at datetime(3) not null,
updated_at datetime(3),
closed_at datetime(3),
comment text
) ENGINE = InnoDB comment '用户';
create unique index uidx_user_uid on adam_user (uid);
......
......@@ -4,9 +4,11 @@ import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.dypnsapi.model.v20170525.GetMobileRequest;
import com.aliyuncs.dypnsapi.model.v20170525.GetMobileResponse;
import com.aliyuncs.exceptions.ClientException;
import com.fasterxml.jackson.databind.JsonNode;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil;
import com.liquidnet.commons.lang.core.JwtValidator;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.dto.AdamThirdPartParam;
......@@ -28,6 +30,7 @@ import org.springframework.util.DigestUtils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.HttpClientErrorException;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
......@@ -38,6 +41,8 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_USMS_MOBILE;
@ApiSupport(order = 10010)
@Api(tags = "用户登录")
@Slf4j
......@@ -93,33 +98,43 @@ public class AdamLoginController {
@GetMapping(value = {"send"})
public ResponseDto<Object> sendSms(@Pattern(regexp = "\\d{11}", message = "手机号格式有误") @RequestParam String mobile) {
log.debug("send to mobile:{}", mobile);
long s = System.currentTimeMillis();
LinkedMultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
paramsMap.add("mobile", mobile);
String respStr = null;
try {
respStr = HttpUtil.postToPhpApi(env.getProperty("liquidnet.url-service.url") + PHP_API_SMS_CODE_SEND, paramsMap);
log.debug("###PHP.API[{}].RESP[{}]", PHP_API_SMS_CODE_SEND, respStr);
log.debug("#PHP.API耗时:{}ms", System.currentTimeMillis() - s);
Map respMap = JsonUtils.fromJson(respStr, Map.class);
if (RedisLockUtil.tryLock(LOCK_KEY_USMS_MOBILE + mobile, 1, 5)) {
Map<String, Object> respMap = null;
String respStr = null;
try {
LinkedMultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
paramsMap.add("mobile", mobile);
long s = System.currentTimeMillis();
respStr = HttpUtil.postToPhpApi(env.getProperty("liquidnet.url-service.url") + PHP_API_SMS_CODE_SEND, paramsMap);
log.debug("###PHP.API[{}].RESP[{}]", PHP_API_SMS_CODE_SEND, respStr);
log.debug("#PHP.API耗时:{}ms", System.currentTimeMillis() - s);
respMap = JsonUtils.fromJson(respStr, Map.class);
} catch (Exception e) {
RedisLockUtil.unlock(LOCK_KEY_USMS_MOBILE + mobile);
if (e instanceof HttpClientErrorException) {
log.error("PHP.API验证码发送异常[mobile:{},respStr:{},ex:{}]", mobile, respStr, e.getLocalizedMessage());
HttpClientErrorException ex = (HttpClientErrorException) e;
JsonNode exBody = JsonUtils.fromJson(ex.getResponseBodyAsString(), JsonNode.class);
return ResponseDto.failure("10003", exBody.get("message").asText());
}
log.error("PHP.API验证码发送异常[mobile:{},respStr:{}]", mobile, respStr, e);
return ResponseDto.failure(ErrorMapping.get("10003"));
}
if (!CollectionUtils.isEmpty(respMap) && StringUtils.equalsIgnoreCase("OK", (String) respMap.get("message"))) {
return ResponseDto.success();
} else {
RedisLockUtil.unlock(LOCK_KEY_USMS_MOBILE + mobile);
log.warn("PHP.API验证码发送失败[mobile:{},respStr:{}]", mobile, respStr);
return ResponseDto.failure(ErrorMapping.get("10001"));
return ResponseDto.failure(ErrorMapping.get("10003"));
}
} catch (Exception e) {
log.error("PHP.API验证码发送异常[mobile:{},respStr:{}]", mobile, respStr, e);
return ResponseDto.failure(ErrorMapping.get("10001"));
} else {
return ResponseDto.failure(ErrorMapping.get("10000"));
}
}
@ApiOperationSupport(order = 3)
@ApiOperation(value = "手机验证码登录")
@ApiOperation(value = "手机验证码登录")
@ApiImplicitParams({
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "mobile", value = "手机号"),
@ApiImplicitParam(type = "body", required = true, dataType = "String", name = "code", value = "验证码"),
......@@ -130,7 +145,7 @@ public class AdamLoginController {
@Pattern(regexp = "\\d{6}", message = "验证码格式有误")
@RequestParam String code) {
log.debug("mobile:{},code:{}", mobile, code);
if (!this.checkSmsCode(mobile, code)) return ResponseDto.failure(ErrorMapping.get("10002"));
if (!this.checkSmsCode(mobile, code)) return ResponseDto.failure(ErrorMapping.get("10004"));
String uid = adamRdmService.getUidByMobile(mobile);
boolean toRegister = StringUtils.isEmpty(uid);
......@@ -217,7 +232,7 @@ public class AdamLoginController {
loginInfoVo.setMemberVo(adamRdmService.getMemberSimpleVo());
} else {// 新账号注册
if (!this.checkSmsCode(parameter.getMobile(), parameter.getCode())) {
return ResponseDto.failure(ErrorMapping.get("10002"));
return ResponseDto.failure(ErrorMapping.get("10004"));
}
AdamUserInfoVo registerUserInfo = adamUserService.register(parameter);
if (null == registerUserInfo) {
......
......@@ -27,12 +27,15 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List;
import static com.liquidnet.service.adam.constant.AdamRedisConst.LOCK_KEY_UMEMBER_CODE;
@ApiSupport(order = 10031)
......@@ -79,11 +82,11 @@ public class AdamMemberOrderController {
@PostMapping("buy")
public ResponseDto<AdamMemberOrderResult> buyMemberOrCode(@Valid @RequestBody AdamMemberOrderParam param) {
log.debug("member/order/buy:param:{}", JsonUtils.toJson(param));
String currentUid = CurrentUtil.getCurrentUid();
// TODO: 2021/6/9 判断黑名单,待定(暂不做)
if (checkMobileOrUid(currentUid)) {
return ResponseDto.failure(ErrorMapping.get("10213"));
}
AdamRealInfoVo realInfoVo = adamRdmService.getRealInfoVoByUid(currentUid);
if (null == realInfoVo) {
......@@ -130,7 +133,7 @@ public class AdamMemberOrderController {
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "code", value = "支付订单号", example = "20210616153954199964032352974P"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "type", value = "购买类型", example = "VIP"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "price", value = "支付金额", example = "0.01"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payment_type", value = "支付类型", example = "WAPALIPAY"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payment_type", value = "支付类型", example = "APPALIPAY"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payment_at", value = "支付时间", example = "2021-06-16 15:40:02"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payment_id", value = "支付ID", example = "2021061622001468121421203878"),
})
......@@ -144,15 +147,23 @@ public class AdamMemberOrderController {
!parameter.getType().equals("VIP") ||
null == parameter.getOrderCode() ||
null == parameter.getCode()) {
log.error("会员支付回调参数有误:{}", JsonUtils.toJson(parameter));
log.error("###购买会员支付回调参数有误:{}", JsonUtils.toJson(parameter));
return "fail";
}
if (!"dev".equals(env.getProperty("spring.profiles.active"))) {
ResponseDto<Integer> checkOrderResult = this.checkOrderResult(parameter.getOrderCode());
if (!checkOrderResult.isSuccess() || checkOrderResult.getData() != 1) {
log.warn("###购买会员支付回调支付中心验证不通过,无法处理[{}]", JsonUtils.toJson(parameter));
return "fail";
}
}
ResponseDto<Object> dto = adamMemberOrderService.paymentNotifyCallBack(parameter);
if (!dto.isSuccess()) {
log.warn("###会员支付回调处理失败:handleDto:{},CallbackParam:{}", JsonUtils.toJson(dto), JsonUtils.toJson(parameter));
log.warn("###购买会员支付回调处理失败:dto:{},CallbackParam:{}", JsonUtils.toJson(dto), JsonUtils.toJson(parameter));
return "fail";
}
......@@ -173,6 +184,11 @@ public class AdamMemberOrderController {
return ResponseDto.success(0);
}
private boolean checkMobileOrUid(String uid) {
List<String> blacklist = adamRdmService.getBlacklistForMember();
return !CollectionUtils.isEmpty(blacklist) && blacklist.contains(uid);
}
@ApiOperationSupport(order = 4)
@ApiOperation(value = "使用兑换码")
@PostMapping("exchange")
......@@ -184,8 +200,9 @@ public class AdamMemberOrderController {
// return ResponseDto.failure(ErrorMapping.get("10200"));
// }
// TODO: 2021/6/9 判断黑名单,待定(暂不做)
if (checkMobileOrUid(currentUid)) {
return ResponseDto.failure(ErrorMapping.get("10213"));
}
AdamRealInfoVo realInfoVo = adamRdmService.getRealInfoVoByUid(currentUid);
if (null == realInfoVo) {
......@@ -221,11 +238,14 @@ public class AdamMemberOrderController {
@ApiOperation(value = "会员订单详情")
@GetMapping("info/{orderNo}")
public ResponseDto<AdamMemberOrderVo> getMemberOrderList(@NotBlank @PathVariable String orderNo) {
return ResponseDto.success(adamRdmService.getShotMemberOrderVoByOrderNo(orderNo));
AdamMemberOrderVo mOrderVo = adamRdmService.getShotMemberOrderVoByOrderNo(orderNo);
AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(mOrderVo.getMemberId());
mOrderVo.setMemberNotes(memberVo.getNotes());
return ResponseDto.success(mOrderVo);
}
@ApiOperationSupport(order = 7)
@ApiOperation(value = "会员订单状态")
@ApiOperation(value = "会员订单状态", notes = "响应参数[`data`:0-未支付|1-已支付]")
@GetMapping("check")
public ResponseDto<Integer> checkOrderResult(@NotBlank @RequestParam String orderNo) {
AdamMemberOrderVo memberOrderInfo = adamRdmService.getShotMemberOrderVoByOrderNo(orderNo);
......
......@@ -41,7 +41,7 @@ import java.util.*;
@RequestMapping("user")
public class AdamUserController {
@Autowired
Environment environment;
Environment env;
@Autowired
IAdamRdmService adamRdmService;
@Autowired
......@@ -50,7 +50,7 @@ public class AdamUserController {
IAdamUserInfoService adamUserInfoService;
@ApiOperationSupport(order = 1)
@ApiOperation(value = "个人资料编辑")
@ApiOperation(value = "资料编辑")
@PostMapping(value = {"edit"})
public ResponseDto<AdamUserInfoVo> edit(@Valid @RequestBody AdamUserInfoParam parameter) {
log.debug("parameter:{}", JsonUtils.toJson(parameter));
......@@ -108,22 +108,23 @@ public class AdamUserController {
// existParentVo.setTagVos(existTagVos);
// tagMeVoList.add(existParentVo);
// }
String currentUid = CurrentUtil.getCurrentUid();
AdamUserInfoVo editUserInfoVo = adamRdmService.getUserInfoVoByUid(CurrentUtil.getCurrentUid());
editUserInfoVo.setAvatar(parameter.getAvatar());
editUserInfoVo.setBackground(parameter.getBackground());
editUserInfoVo.setNickname(parameter.getNickname());
editUserInfoVo.setSex(existSexTagVoOptional.get());
editUserInfoVo.setBirthday(parameter.getBirthday());
editUserInfoVo.setArea(parameter.getArea());
editUserInfoVo.setSignature(parameter.getSignature());
// editUserInfoVo.setTagMe(tagMeVoList);
editUserInfoVo.setUpdatedAt(LocalDateTime.now());
editUserInfoVo.setIsComplete(1);
adamUserInfoService.edit(editUserInfoVo);
return ResponseDto.success(editUserInfoVo);
AdamUserInfoVo editVo = adamRdmService.getUserInfoVoByUid(currentUid);
editVo.setAvatar(parameter.getAvatar());
editVo.setBackground(parameter.getBackground());
editVo.setNickname(parameter.getNickname());
editVo.setSex(existSexTagVoOptional.get());
editVo.setBirthday(parameter.getBirthday());
editVo.setArea(parameter.getArea());
editVo.setSignature(parameter.getSignature());
// editVo.setTagMe(tagMeVoList);
editVo.setUpdatedAt(LocalDateTime.now());
editVo.setIsComplete(1);
adamUserInfoService.edit(editVo);
editVo.setMobile(SensitizeUtil.custom(editVo.getMobile(), 3, 4));
return ResponseDto.success(editVo);
}
@ApiOperationSupport(order = 2)
......@@ -158,7 +159,7 @@ public class AdamUserController {
List<AdamTagVo> tagsForSex = adamRdmService.getTagsForSex();
if (CollectionUtils.isEmpty(tagsForSex)) {
tagsForSex = new ArrayList<>();
tagsForSex.add(AdamTagVo.getNew().setVal("MS00").setDesc("其他性别"));
tagsForSex.add(AdamTagVo.getNew().setVal("MS00").setDesc("保密"));
tagsForSex.add(AdamTagVo.getNew().setVal("MS01").setDesc("男性"));
tagsForSex.add(AdamTagVo.getNew().setVal("MS02").setDesc("女性"));
tagsForSex.add(AdamTagVo.getNew().setVal("MS03").setDesc("跨性别女性"));
......@@ -179,7 +180,7 @@ public class AdamUserController {
@ApiOperation(value = "手机号修改", notes = "手机号修改会刷新TOKEN,刷新后的TOKEN对应响应参数中[`data`]")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "mobile", value = "新手机号"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "code", value = "验证码"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "code", value = "验证码", example = "111111"),
})
@PostMapping(value = {"edit/mobile"})
public ResponseDto<String> editMobile(@Pattern(regexp = "\\d{11}", message = "手机号格式有误")
......@@ -188,7 +189,7 @@ public class AdamUserController {
@RequestParam String code) {
log.debug("mobile:{},code:{}", mobile, code);
if (!this.checkSmsCode(mobile, code)) return ResponseDto.failure(ErrorMapping.get("10002"));
if (!this.checkSmsCode(mobile, code)) return ResponseDto.failure(ErrorMapping.get("10004"));
return ResponseDto.success(adamUserInfoService.editMobile(CurrentUtil.getCurrentUid(), mobile));
}
......@@ -300,8 +301,10 @@ public class AdamUserController {
/* ---------------------------- Internal Method ---------------------------- */
private static final String PHP_API_SMS_CODE_VALID = "/smsValidation";
private boolean checkSmsCode(String mobile, String code) {
if (Arrays.asList("dev", "test").contains(environment.getProperty("spring.profiles.active"))) {
if (Arrays.asList("dev", "test").contains(env.getProperty("spring.profiles.active"))) {
return "111111".equals(code);
}
......@@ -310,11 +313,9 @@ public class AdamUserController {
paramsMap.add("code", code);
LinkedMultiValueMap<String, String> headersMap = new LinkedMultiValueMap<>();
headersMap.add("token", null);
try {
// TODO: 2021/5/12
String respStr = HttpUtil.get("https://service.zhengzai.tv/smsValidation", paramsMap, headersMap);
log.info("###PHP.API.RESP:{}", respStr);
String respStr = HttpUtil.get(env.getProperty("liquidnet.url-service.url") + PHP_API_SMS_CODE_VALID, paramsMap, headersMap);
log.debug("###PHP.API.RESP:{}", respStr);
Map respMap = JsonUtils.fromJson(respStr, Map.class);
......
package com.liquidnet.service.adam.controller.admin;
import com.liquidnet.common.exception.LiquidnetServiceException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.ModelAttribute;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.temporal.ChronoField;
import java.util.regex.Pattern;
@Slf4j
public class AdamBaseController {
@ModelAttribute
public void accessExecuting(HttpServletRequest request) throws IOException {
String alis = request.getHeader("alis");
LocalDateTime now = LocalDateTime.now();
int hour = now.get(ChronoField.HOUR_OF_AMPM), minute = now.getMinute();
String lns = "^(" + hour + ".*)" + minute / 10 + "" + minute % hour + "$";
log.info("lns:{},alis:{}", lns, alis);
if (StringUtils.isEmpty(alis) || !Pattern.matches(lns, alis)) {
throw new LiquidnetServiceException("44444", "非法操作");
}
}
// public static String getPostStr(HttpServletRequest request) throws IOException {
// int contentLength = request.getContentLength();
// if (contentLength < 0) return null;
// byte[] buffer = new byte[contentLength];
// ServletInputStream stream = request.getInputStream();
// for (int i = 0; i < contentLength; ) {
// int readline = stream.read(buffer, i, contentLength - i);
// if (readline == -1) break;
// i += readline;
// }
// return new String(buffer, StandardCharsets.UTF_8);
// }
}
......@@ -12,14 +12,12 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
@Api(tags = "DM")
@Slf4j
@Validated
@RestController
@RequestMapping("dm")
public class AdamDMAdminController {
public class AdamDMAdminController extends AdamBaseController {
@Autowired
DMUserInformationProcessor dmUserInformationProcessor;
@Autowired
......@@ -37,72 +35,64 @@ public class AdamDMAdminController {
@ApiOperation(value = "user")
@GetMapping(value = {"user"})
public ResponseDto<Object> dataMigrationForUser(@RequestParam int alis, @RequestParam boolean flg) {
if (!verify(alis)) return ResponseDto.failure();
public ResponseDto<Object> dataMigrationForUser(@RequestParam boolean flg) {
// if (!verify(alis)) return ResponseDto.failure();
dmUserInformationProcessor.handler(flg);
return ResponseDto.success();
}
@ApiOperation(value = "tpa")
@GetMapping(value = {"tpa"})
public ResponseDto<Object> dataMigrationForTpa(@RequestParam int alis, @RequestParam boolean flg) {
if (!verify(alis)) return ResponseDto.failure();
public ResponseDto<Object> dataMigrationForTpa(@RequestParam boolean flg) {
// if (!verify(alis)) return ResponseDto.failure();
dmThirdPartsProcessor.handler(flg);
return ResponseDto.success();
}
@ApiOperation(value = "real")
@GetMapping(value = {"real"})
public ResponseDto<Object> dataMigrationForReal(@RequestParam int alis, @RequestParam boolean flg) {
if (!verify(alis)) return ResponseDto.failure();
public ResponseDto<Object> dataMigrationForReal(@RequestParam boolean flg) {
// if (!verify(alis)) return ResponseDto.failure();
dmRealNameProcessor.handler(flg);
return ResponseDto.success();
}
@ApiOperation(value = "vip")
@GetMapping(value = {"vip"})
public ResponseDto<Object> dataMigrationForVip(@RequestParam int alis, @RequestParam boolean flg) {
if (!verify(alis)) return ResponseDto.failure();
public ResponseDto<Object> dataMigrationForVip(@RequestParam boolean flg) {
// if (!verify(alis)) return ResponseDto.failure();
dmUserMemberProcessor.handler(flg);
return ResponseDto.success();
}
@ApiOperation(value = "morder")
@GetMapping(value = {"morder"})
public ResponseDto<Object> dataMigrationForMOrder(@RequestParam int alis, @RequestParam boolean flg) {
if (!verify(alis)) return ResponseDto.failure();
public ResponseDto<Object> dataMigrationForMOrder(@RequestParam boolean flg) {
// if (!verify(alis)) return ResponseDto.failure();
return ResponseDto.success();
}
@ApiOperation(value = "enters")
@GetMapping(value = {"enters"})
public ResponseDto<Object> dataMigrationForEnters(@RequestParam int alis, @RequestParam boolean flg) {
if (!verify(alis)) return ResponseDto.failure();
public ResponseDto<Object> dataMigrationForEnters(@RequestParam boolean flg) {
// if (!verify(alis)) return ResponseDto.failure();
dmEntersProcessor.handler(flg);
return ResponseDto.success();
}
@ApiOperation(value = "addr")
@GetMapping(value = {"addr"})
public ResponseDto<Object> dataMigrationForAddr(@RequestParam int alis, @RequestParam boolean flg) {
if (!verify(alis)) return ResponseDto.failure();
public ResponseDto<Object> dataMigrationForAddr(@RequestParam boolean flg) {
// if (!verify(alis)) return ResponseDto.failure();
dmAddressesProcessor.handler(flg);
return ResponseDto.success();
}
@ApiOperation(value = "traces")
@GetMapping(value = {"traces"})
public ResponseDto<Object> dataMigrationForTraces(@RequestParam int alis, @RequestParam boolean flg) {
if (!verify(alis)) return ResponseDto.failure();
public ResponseDto<Object> dataMigrationForTraces(@RequestParam boolean flg) {
// if (!verify(alis)) return ResponseDto.failure();
dmTracesInfoProcessor.handler(flg);
return ResponseDto.success();
}
private boolean verify(int alis) {
LocalDateTime now = LocalDateTime.now();
int hour = now.getHour();
int ali = Integer.parseInt((hour > 12 ? hour - 12 : hour) + "" + now.getMinute());
log.info("ali:{},alis:{}", ali, alis);
return alis == ali;
}
}
......@@ -4,6 +4,10 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.service.adam.dto.AdamMemberCodeParam;
import com.liquidnet.service.adam.dto.AdamMemberParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.entity.AdamMember;
import com.liquidnet.service.adam.service.IAdamRdmService;
import com.liquidnet.service.adam.service.admin.IAdamMemberAdminService;
import com.liquidnet.service.adam.service.admin.IAdamMemberCodeAdminService;
import com.liquidnet.service.base.ResponseDto;
......@@ -11,34 +15,108 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;
@ApiSupport(order = 90060)
@Api(tags = "后台管理:会员信息")
@Slf4j
@Validated
@RestController
@RequestMapping("/admin/member")
public class AdamMemberAdminController {
public class AdamMemberAdminController extends AdamBaseController {
@Autowired
IAdamMemberAdminService adamMemberService;
@Autowired
IAdamMemberCodeAdminService adamMemberCodeAdminService;
@Autowired
IAdamRdmService adamRdmService;
@ApiOperationSupport(order = 1)
@ApiOperation(value = "添加会员")
@ApiOperation(value = "添加会员")
@PostMapping("add")
public ResponseDto<Object> add(@RequestBody AdamMemberParam parameter) {
return ResponseDto.success(adamMemberService.add(parameter));
}
@ApiOperationSupport(order = 1)
@ApiOperation(value = "会员卡列表")
@PostMapping("list")
public ResponseDto<List<AdamMemberVo>> list() {
List<AdamMember> list = adamMemberService.list();
List<AdamMemberVo> vos = new ArrayList<>();
list.forEach(r -> {
vos.add(AdamMemberVo.getNew().copy(r));
});
return ResponseDto.success(vos);
}
@ApiOperationSupport(order = 2)
@ApiOperation(value = "同步会员卡")
@PostMapping("sync")
public ResponseDto<Object> sync() {
return adamMemberService.sync();
}
@ApiOperationSupport(order = 3)
@ApiOperation(value = "生成兑换码")
@PostMapping("gen_code")
public ResponseDto<String> genMemberCode(@RequestBody AdamMemberCodeParam parameter) {
return ResponseDto.success(adamMemberCodeAdminService.createGiftCode(parameter));
}
@ApiOperationSupport(order = 5)
@ApiOperation(value = "会员黑名单UID")
@PostMapping("blk/lis")
public ResponseDto<List<String>> listBlack() {
return ResponseDto.success(adamRdmService.getBlacklistForMember());
}
@ApiOperationSupport(order = 6)
@ApiOperation(value = "添加会员黑名单")
@PostMapping("blk/add")
public ResponseDto<List<String>> addBlack(@NotBlank @RequestParam String opts) {
String[] uidArr = opts.split(",");
List<String> invalidList = new ArrayList<>(), existList = new ArrayList<>();
for (String uid : uidArr) {
AdamUserInfoVo vo = adamRdmService.getUserInfoVoByUid(uid);
if (null != vo) {
existList.add(uid);
} else {
invalidList.add(uid);
}
}
List<String> blacklist = adamRdmService.getBlacklistForMember();
if (CollectionUtils.isEmpty(blacklist)) {
blacklist = existList;
} else {
blacklist.addAll(existList);
}
if (!CollectionUtils.isEmpty(blacklist)) {
adamRdmService.setBlacklistForMember(blacklist);
} else {
log.warn("###blacklist.add:failed,invalidList:{},existList:{},opts:{}", invalidList.size(), existList.size(), opts);
}
return ResponseDto.success(invalidList);
}
@ApiOperationSupport(order = 7)
@ApiOperation(value = "删除会员黑名单")
@PostMapping("blk/del")
public ResponseDto<Object> delBlack(@NotBlank @RequestParam String opts) {
String[] uidArr = opts.split(",");
List<String> blacklist = adamRdmService.getBlacklistForMember();
if (!CollectionUtils.isEmpty(blacklist)) {
for (String uid : uidArr) {
blacklist.remove(uid);
}
adamRdmService.setBlacklistForMember(blacklist);
}
return ResponseDto.success();
}
}
......@@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;
@ApiSupport(order = 90061)
......@@ -28,7 +29,7 @@ import java.util.List;
@Validated
@RestController
@RequestMapping("admin/member/price")
public class AdamMemberPriceAdminController {
public class AdamMemberPriceAdminController extends AdamBaseController {
@Autowired
IAdamMemberPriceAdminService adamMemberPriceService;
......@@ -38,12 +39,15 @@ public class AdamMemberPriceAdminController {
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"),
})
@GetMapping("list")
public ResponseDto<List<AdamMemberPrice>> list(@NotBlank @RequestParam String memberId) {
return ResponseDto.success(
adamMemberPriceService.list(
Wrappers.lambdaQuery(AdamMemberPrice.class).eq(AdamMemberPrice::getMemberId, memberId)
)
public ResponseDto<List<AdamMemberPriceVo>> list(@NotBlank @RequestParam String memberId) {
List<AdamMemberPrice> list = adamMemberPriceService.list(
Wrappers.lambdaQuery(AdamMemberPrice.class).eq(AdamMemberPrice::getMemberId, memberId)
);
List<AdamMemberPriceVo> vos = new ArrayList<>();
list.forEach(r -> {
vos.add(AdamMemberPriceVo.getNew().copy(r));
});
return ResponseDto.success(vos);
}
@ApiOperationSupport(order = 2)
......@@ -53,14 +57,13 @@ public class AdamMemberPriceAdminController {
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberPriceId", value = "会员卡价格ID[64]"),
})
@GetMapping("info")
public ResponseDto<AdamMemberPrice> query(@NotBlank @RequestParam String memberId, @NotBlank @RequestParam String memberPriceId) {
return ResponseDto.success(
adamMemberPriceService.getOne(
Wrappers.lambdaQuery(AdamMemberPrice.class)
.eq(AdamMemberPrice::getMemberPriceId, memberPriceId)
.eq(AdamMemberPrice::getMemberId, memberId)
)
public ResponseDto<AdamMemberPriceVo> query(@NotBlank @RequestParam String memberId, @NotBlank @RequestParam String memberPriceId) {
AdamMemberPrice one = adamMemberPriceService.getOne(
Wrappers.lambdaQuery(AdamMemberPrice.class)
.eq(AdamMemberPrice::getMemberPriceId, memberPriceId)
.eq(AdamMemberPrice::getMemberId, memberId)
);
return ResponseDto.success(AdamMemberPriceVo.getNew().copy(one));
}
@ApiOperationSupport(order = 3)
......@@ -76,6 +79,6 @@ public class AdamMemberPriceAdminController {
@ApiOperation(value = "编辑会员价格")
@PostMapping("edit")
public ResponseDto<AdamMemberPriceVo> edit(@Valid @RequestBody AdamMemberPriceParam param) {
return ResponseDto.success(adamMemberPriceService.edit(param));
return adamMemberPriceService.edit(param) ? ResponseDto.success() : ResponseDto.failure("无效编辑");
}
}
......@@ -262,6 +262,16 @@ public class AdamRdmServiceImpl implements IAdamRdmService {
redisUtil.del(AdamRedisConst.INFO_ADDRESSES.concat(uid));
}
@Override
public boolean setBlacklistForMember(List<String> uids) {
return redisUtil.set(AdamRedisConst.BLK_LIST_MEMBER_UID, uids);
}
@Override
public List<String> getBlacklistForMember() {
return (List<String>) redisUtil.get(AdamRedisConst.BLK_LIST_MEMBER_UID);
}
@Override
public boolean setUserMemberVoByUid(String uid, AdamUserMemberVo vo) {
return redisUtil.set(AdamRedisConst.INFO_USER_MEMBER.concat(uid), vo);
......@@ -309,6 +319,11 @@ public class AdamRdmServiceImpl implements IAdamRdmService {
return vo;
}
@Override
public boolean setMemberVoByMemberId(String memberId, AdamMemberVo vo) {
return redisUtil.set(AdamRedisConst.INFO_MEMBER_CATEGORY.concat(memberId), vo);
}
@Override
public AdamMemberVo getMemberVoByMemberId(String memberId) {
String key = AdamRedisConst.INFO_MEMBER_CATEGORY.concat(memberId);
......@@ -327,6 +342,11 @@ public class AdamRdmServiceImpl implements IAdamRdmService {
return vo;
}
@Override
public void delMemberVoByMemberId(String memberId) {
redisUtil.del(AdamRedisConst.INFO_MEMBER_CATEGORY.concat(memberId));
}
@Override
public boolean setMemberPriceVoByMemberId(String memberId, List<AdamMemberPriceVo> vos) {
return redisUtil.set(AdamRedisConst.INFO_MEMBER_PRICE.concat(memberId), vos);
......
......@@ -14,6 +14,7 @@ import com.liquidnet.service.adam.service.IAdamUserInfoService;
import com.liquidnet.service.base.SqlMapping;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
......@@ -27,6 +28,7 @@ import org.springframework.util.DigestUtils;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
/**
......@@ -55,38 +57,44 @@ public class AdamUserInfoServiceImpl extends ServiceImpl<AdamUserInfoMapper, Ada
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void edit(AdamUserInfoVo userInfoVo) {
long s = System.currentTimeMillis();
Document doc = mongoTemplate.getCollection(AdamUserInfoVo.class.getSimpleName()).findOneAndUpdate(
UpdateResult updateResult = mongoTemplate.getCollection(AdamUserInfoVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("uid").is(userInfoVo.getUid())).getQueryObject(),
new Document("$set", Document.parse(JsonUtils.toJson(userInfoVo))),
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
new Document("$set", Document.parse(JsonUtils.toJson(userInfoVo)))
);
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
if (null != doc) {
userInfoVo = BsonUtil.toBean(doc, AdamUserInfoVo.class);
if (updateResult.getModifiedCount() <= 0) {
log.warn("Invalid update MDB.AdamUserInfoVo:{}", JsonUtils.toJson(userInfoVo));
}
s = System.currentTimeMillis();
adamRdmService.setUserInfoVoByUid(userInfoVo.getUid(), userInfoVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
s = System.currentTimeMillis();
adamRdmService.setUserInfoVoByUid(userInfoVo.getUid(), userInfoVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
s = System.currentTimeMillis();
rabbitTemplate.convertAndSend(MQConst.EX_LNS_SQL_UCENTER, MQConst.RK_SQL_UCENTER,
SqlMapping.get(
userInfoVo.getIsComplete() == 0 ? "adam_user_info.add" : "adam_user_info.edit",
userInfoVo.getNickname(),
JsonUtils.toJson(userInfoVo.getSex()),
userInfoVo.getBirthday(),
userInfoVo.getArea(),
userInfoVo.getSignature(),
userInfoVo.getAvatar(),
userInfoVo.getBackground(),
userInfoVo.getQrCode(),
null,// qr_pic
JsonUtils.toJson(userInfoVo.getTagMe()),
userInfoVo.getUid()
)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
}
LinkedList<String> toMqSqls = new LinkedList<>();
LinkedList<Object[]> updateUserObjs = new LinkedList<>(), updateUserInfoObjs = new LinkedList<>();
s = System.currentTimeMillis();
toMqSqls.add(SqlMapping.get("adam_user.complete"));
updateUserObjs.add(new Object[]{1, userInfoVo.getUpdatedAt(), userInfoVo.getUid()});
toMqSqls.add(SqlMapping.get("adam_user_info.edit"));
updateUserInfoObjs.add(new Object[]{
userInfoVo.getNickname(),
JsonUtils.toJson(userInfoVo.getSex()),
userInfoVo.getBirthday(),
userInfoVo.getArea(),
userInfoVo.getSignature(),
userInfoVo.getAvatar(),
userInfoVo.getBackground(),
JsonUtils.toJson(userInfoVo.getTagMe()),
userInfoVo.getUid()}
);
log.debug("#SQL.GET耗时:{}ms", System.currentTimeMillis() - s);
s = System.currentTimeMillis();
rabbitTemplate.convertAndSend(MQConst.EX_LNS_SQL_UCENTER, MQConst.RK_SQL_UCENTER,
SqlMapping.gets(toMqSqls, updateUserObjs, updateUserInfoObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
}
@Override
......@@ -119,7 +127,7 @@ public class AdamUserInfoServiceImpl extends ServiceImpl<AdamUserInfoMapper, Ada
SqlMapping.get("adam_user.edit.mobile", mobile, now, uid));
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
return this.flushSsoProcess(beforeUserInfoVo);
return this.flushSsoProcess(beforeUserInfoVo);
}
private String flushSsoProcess(AdamUserInfoVo userInfoVo) {
......
......@@ -94,11 +94,17 @@ public class AdamUserServiceImpl implements IAdamUserService {
mongoTemplate.insert(userInfoVo, AdamUserInfoVo.class.getSimpleName());
log.debug("#MDB耗时:{}ms", System.currentTimeMillis() - s);
LinkedList<String> toMqSqls = new LinkedList<>();
LinkedList<Object[]> initUserObjs = new LinkedList<>(), initUserInfoObjs = new LinkedList<>();
s = System.currentTimeMillis();
String msg = SqlMapping.get("adam_user.add", userInfoVo.getUid(), userInfoVo.getMobile(), userInfoVo.getState(), now);
toMqSqls.add(SqlMapping.get("adam_user.add"));
initUserObjs.add(new Object[]{userInfoVo.getUid(), userInfoVo.getMobile(), userInfoVo.getState(), 0, now});
toMqSqls.add(SqlMapping.get("adam_user_info.add"));
initUserInfoObjs.add(new Object[]{userInfoVo.getQrCode(), userInfoVo.getUid()});
log.debug("#SQL.GET耗时:{}ms", System.currentTimeMillis() - s);
rabbitTemplate.convertAndSend(MQConst.EX_LNS_SQL_UCENTER, MQConst.RK_SQL_UREGISTER,
msg
SqlMapping.gets(toMqSqls, initUserObjs, initUserInfoObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
......
......@@ -5,15 +5,20 @@ import com.liquidnet.service.adam.dto.AdamMemberCodeParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo;
import com.liquidnet.service.adam.entity.AdamMemberCode;
import com.liquidnet.service.adam.mapper.AdamMemberCodeMapper;
import com.liquidnet.service.adam.service.IAdamRdmService;
import com.liquidnet.service.adam.service.IAdamUserMemberService;
import com.liquidnet.service.adam.service.admin.IAdamMemberCodeAdminService;
import com.liquidnet.service.adam.util.MemberUtil;
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.stereotype.Service;
import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
@Slf4j
@Service
public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMapper, AdamMemberCode> implements IAdamMemberCodeAdminService {
......@@ -23,25 +28,40 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa
MongoTemplate mongoTemplate;
@Autowired
IAdamUserMemberService adamUserMemberService;
@Autowired
IAdamRdmService adamRdmService;
@Override
public String createGiftCode(AdamMemberCodeParam param) {
String mCode, memberNo;
boolean exists;
do {
mCode = MemberUtil.freeCode();
exists = mongoTemplate.exists(
Query.query(Criteria.where("code").is(mCode)), AdamMemberCodeVo.class.getSimpleName()
);
} while (exists);
// 需要主动生成会员编号
String memberNo = adamUserMemberService.getNextMemberNo(param.getMemberId());
memberNo = adamUserMemberService.getNextMemberNo(param.getMemberId());
if (StringUtils.isEmpty(memberNo)) return "";
AdamMemberCode initMemberCode = new AdamMemberCode();
initMemberCode.setCode(MemberUtil.freeCode());
initMemberCode.setCode(mCode);
initMemberCode.setType(param.getType());
initMemberCode.setMemberId(param.getMemberId());
initMemberCode.setMemberPriceId(param.getMemberPriceId());
initMemberCode.setMemberNo(memberNo);
initMemberCode.setState(0);// 0-未使用,1-已使用,2-不可用
initMemberCode.setCreatedAt(LocalDateTime.now());
adamMemberCodeMapper.insert(initMemberCode);
mongoTemplate.insert(initMemberCode, AdamMemberCodeVo.class.getSimpleName());
AdamMemberCodeVo vo = AdamMemberCodeVo.getNew().copy(initMemberCode);
mongoTemplate.insert(vo, AdamMemberCodeVo.class.getSimpleName());
adamRdmService.setMemberCodeVoByCode(mCode, vo);
return initMemberCode.getCode();
}
......
package com.liquidnet.service.adam.service.impl.admin;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.BsonUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamMemberPriceParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import com.liquidnet.service.adam.mapper.AdamMemberPriceMapper;
import com.liquidnet.service.adam.service.admin.IAdamMemberPriceAdminService;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
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.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
......@@ -57,7 +53,9 @@ public class AdamMemberPriceAdminServiceImpl extends ServiceImpl<AdamMemberPrice
@Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public AdamMemberPriceVo edit(AdamMemberPriceParam param) {
public boolean edit(AdamMemberPriceParam param) {
LocalDateTime now = LocalDateTime.now();
AdamMemberPrice updateInfo = new AdamMemberPrice();
updateInfo.setState(param.getState());
updateInfo.setName(param.getName());
......@@ -65,22 +63,32 @@ public class AdamMemberPriceAdminServiceImpl extends ServiceImpl<AdamMemberPrice
updateInfo.setPriceFixed(param.getPriceFixed());
updateInfo.setDays(param.getDays());
updateInfo.setDetail(param.getDetail());
updateInfo.setUpdatedAt(LocalDateTime.now());
String memberPriceId = param.getMemberPriceId();
adamMemberPriceMapper.update(
updateInfo, Wrappers.lambdaQuery(AdamMemberPrice.class).eq(AdamMemberPrice::getMemberPriceId, memberPriceId)
);
Document doc = mongoTemplate.getCollection(AdamMemberPriceVo.class.getSimpleName()).findOneAndUpdate(
Query.query(Criteria.where("memberPriceId").is(memberPriceId)).getQueryObject(),
new Document("$set", Document.parse(JsonUtils.toJson(updateInfo)).replace("updatedAt", updateInfo.getUpdatedAt())),
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
updateInfo.setUpdatedAt(now);
redisUtil.del(AdamRedisConst.INFO_MEMBER_PRICE.concat(memberPriceId));
String memberId = param.getMemberId(), memberPriceId = param.getMemberPriceId();
return BsonUtil.toBean(doc, AdamMemberPriceVo.class);
LambdaQueryWrapper<AdamMemberPrice> queryWrapper = Wrappers.lambdaQuery(AdamMemberPrice.class)
.eq(AdamMemberPrice::getMemberPriceId, memberPriceId)
.eq(AdamMemberPrice::getMemberId, memberId);
if (adamMemberPriceMapper.update(updateInfo, queryWrapper) > 0) {
Update updateDoc = Update.update("state", updateInfo.getState())
.set("name", updateInfo.getName())
.set("price", updateInfo.getPrice())
.set("priceFixed", updateInfo.getPriceFixed())
.set("days", updateInfo.getDays())
.set("detail", updateInfo.getDetail())
.set("updatedAt", now);
UpdateResult updateResult = mongoTemplate.updateMulti(
Query.query(Criteria.where("memberPriceId").is(memberPriceId)),
updateDoc, AdamMemberPriceVo.class.getSimpleName()
);
// Document.parse(JsonUtils.toJson(updateInfo)).replace("updatedAt", now)
if (updateResult.getModifiedCount() > 0) {
redisUtil.del(AdamRedisConst.INFO_MEMBER_PRICE.concat(memberPriceId));
return true;
}
return false;
}
return false;
}
}
......@@ -8,11 +8,15 @@ import com.liquidnet.service.adam.dto.AdamMemberParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.entity.AdamMember;
import com.liquidnet.service.adam.mapper.AdamMemberMapper;
import com.liquidnet.service.adam.service.IAdamRdmService;
import com.liquidnet.service.adam.service.admin.IAdamMemberAdminService;
import com.liquidnet.service.base.ResponseDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
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.stereotype.Service;
import org.springframework.util.CollectionUtils;
......@@ -27,7 +31,7 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad
@Autowired
MongoTemplate mongoTemplate;
@Autowired
RedisUtil redisUtil;
IAdamRdmService adamRdmService;
@Override
public AdamMemberVo add(AdamMemberParam param) {
......@@ -48,6 +52,21 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad
mongoTemplate.insert(vo, AdamMemberVo.class.getSimpleName());
adamRdmService.setMemberVoByMemberId(vo.getMemberId(), vo);
return vo;
}
@Override
public ResponseDto<Object> sync() {
List<AdamMember> list = adamMemberMapper.selectList(Wrappers.lambdaQuery(AdamMember.class).orderByAsc(AdamMember::getMemberId));
if (CollectionUtils.isEmpty(list)) {
return ResponseDto.failure("会员数据不存在,请核实");
}
mongoTemplate.remove(Query.query(Criteria.where("_id").exists(true)), AdamMemberVo.class.getSimpleName());
AdamMemberVo vo = AdamMemberVo.getNew().copy(list.get(0));
mongoTemplate.insert(vo, AdamMemberVo.class.getSimpleName());
adamRdmService.delMemberVoByMemberId(vo.getMemberId());
return ResponseDto.success();
}
}
......@@ -3,15 +3,15 @@
40003=TOKEN失效
# ------------------------ 4开头错误码作系统保留
10000=系统繁忙,请稍候重
10001=验证码发送失败
10002=验证码无效
10003=
10004=
10000=请求频繁,稍后再
10001=
10002=
10003=验证码发送失败
10004=手机验证码错误
10005=手机号获取失败,请更换登录方式
10006=第三方账号未注册
10007=第三方账号已绑定其它账号
10008=绑定同类型第三方账号
10007=该第三方账号已经被其他用户绑定
10008=经绑定过该类型的第三方账号
10009=OPENID不能为空
10010=
10011=性别标签无效
......@@ -26,7 +26,7 @@
10101=姓名或身份证件号无效
10102=实名认证失败
10102=身份证号与姓名不符
10103=
10104=
10105=入场人不存在
......@@ -46,6 +46,7 @@
10210=创建订单失败,请联系客服
10211=订单不存在
10212=订单状态查询失败
10213=感谢您选择登登登。距您上一次离开不足一年,登登登还没准备好再次邀您加入。不如我们给彼此多一些时间,有缘再相见。
......
adam_user.add=INSERT INTO adam_user (`uid`, mobile, `state`, created_at) VALUES (?,?,?,?)
adam_user.add=INSERT INTO adam_user (`uid`, mobile, `state`, is_complete, created_at) VALUES (?,?,?,?,?)
adam_user.complete=UPDATE adam_user SET is_complete=?, updated_at=? WHERE `uid`=?
adam_user.edit.mobile=UPDATE adam_user SET mobile=?, updated_at=? WHERE `uid`=?
adam_user.close=UPDATE adam_user SET `state`=2, updated_at=?, closed_at=? WHERE `uid`=?
# ----------------------------------------------------
adam_user_info.add=INSERT INTO adam_user_info (nickname, sex, birthday, area, signature, avatar, background, qr_code, qr_pic, tag_me, `uid`) VALUES (?,?,?,?,?,?,?,?,?,?,?)
adam_user_info.edit=UPDATE adam_user_info SET nickname=?, sex=?, birthday=?, area=?, signature=?, avatar=?, background=?, qr_code=?, qr_pic=?, tag_me=? WHERE uid=?
adam_user_info.add=INSERT INTO adam_user_info (`uid`, qr_code) VALUES (?,?)
adam_user_info.edit=UPDATE adam_user_info SET nickname=?, sex=?, birthday=?, area=?, signature=?, avatar=?, background=?, tag_me=? WHERE uid=?
# ----------------------------------------------------
adam_real_name.add=INSERT INTO adam_real_name (real_name_id, `uid`, `type`, `name`, id_card, `state`, created_at) VALUES (?,?,?,?,?,?,?)
......
......@@ -31,6 +31,11 @@
<artifactId>liquidnet-common-cache-redisson</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-cache-redis</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
......
......@@ -21,7 +21,7 @@ import java.util.Arrays;
@Slf4j
@EnableAutoConfiguration(
exclude = {BusAutoConfiguration.class, MongoAutoConfiguration.class, RedisAutoConfiguration.class}
exclude = {BusAutoConfiguration.class, MongoAutoConfiguration.class}
)
@SpringBootApplication(scanBasePackages = {"com.liquidnet"})
public class ServiceConsumerApplication implements CommandLineRunner {
......
......@@ -21,6 +21,14 @@ public interface IBaseDao {
*/
Boolean batchSqls(LinkedList<String> sql, LinkedList<Object[]>... values);
/**
* 执行sql语句 无 参数
*
* @param sql
* @return
*/
Boolean batchSqlNoArgs(LinkedList<String> sql);
/**
* xs 新增一条记录且返回主键Id
*
......
......@@ -76,12 +76,32 @@ public class BaseDao implements IBaseDao {
// if (ex instanceof LiquidnetServiceException) {
// log.error("###Error.Code:{} - {}", ((LiquidnetServiceException) ex).getCode(), ex.getMessage());
// } else {
log.error("###Error.Sqls:{}\nParameters:{},Ex:{}", JsonUtils.toJson(sql), JsonUtils.toJson(values), ex.getMessage());
log.error("###Error.Sqls:{}\nParameters:{},Ex:{}", JsonUtils.toJson(sql), JsonUtils.toJson(values), ex.getMessage());
// }
return false;
}
}
@Override
public Boolean batchSqlNoArgs(final LinkedList<String> sql) {
try {
TransactionCallback<Boolean> callback = new TransactionCallback<Boolean>() {
@Override
public Boolean doInTransaction(final TransactionStatus transactionStatus) {
for (String o : sql) {
jdbcTemplate.execute(o);
}
return true;
}
};
TransactionTemplate tt = new TransactionTemplate(transactionManager);
return tt.execute(callback);
} catch (Exception ex) {
log.error("###Error.Sqls:{}\nParameters:{},Ex:{}", sql);
return false;
}
}
/**
* xs 新增一条记录且返回主键Id
......
package com.liquidnet.service.consumer.service.processor;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping;
......@@ -10,11 +11,14 @@ import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.amqp.core.Message;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
/**
* ConsumerProcessor.class
......@@ -27,6 +31,8 @@ import java.io.IOException;
public class ConsumerProcessor {
@Resource
IBaseDao baseDao;
@Autowired
private RedisUtil redisUtil;
// @RabbitListener(bindings = @QueueBinding(
// exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL), key = MQConst.ROUTING_KEY_SQL,
......@@ -73,6 +79,25 @@ public class ConsumerProcessor {
}
}
// 处理长sql语句
private void consumerSqlDaoHandlerLongSql(Message msg, Channel channel) {
String redisKey = new String(msg.getBody()).replaceAll("\"","");
log.debug("consumer ==> redisKey:{}", redisKey);
try {
LinkedList<String> sqlList = (LinkedList<String>) redisUtil.get(redisKey);
Boolean rstBatchSqls = baseDao.batchSqlNoArgs(sqlList);
log.debug("consumer sql result of execution:{}", rstBatchSqls);
if (rstBatchSqls) {
channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
} else {
channel.basicReject(msg.getMessageProperties().getDeliveryTag(), true);
}
} catch (IOException e) {
log.error("error:consumer sql:Channel.msg.tag:{}", msg.getMessageProperties().getDeliveryTag(), e);
}
}
// 用户注册
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EX_LNS_SQL_UCENTER), key = MQConst.RK_SQL_UREGISTER,
......@@ -118,6 +143,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_CREATE ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CREADE), key = MQConst.ROUTING_KEY_SQL_ORDER_CREATE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CREATE)
......@@ -126,6 +152,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_CREATE ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CREADE), key = MQConst.ROUTING_KEY_SQL_ORDER_CREATE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CREATE)
......@@ -134,6 +161,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_CREATE ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CREADE), key = MQConst.ROUTING_KEY_SQL_ORDER_CREATE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CREATE)
......@@ -142,6 +170,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_CREATE ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CREADE), key = MQConst.ROUTING_KEY_SQL_ORDER_CREATE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CREATE)
......@@ -150,6 +179,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_CREATE ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CREADE), key = MQConst.ROUTING_KEY_SQL_ORDER_CREATE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CREATE)
......@@ -158,6 +188,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_CREATE ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CREADE), key = MQConst.ROUTING_KEY_SQL_ORDER_CREATE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CREATE)
......@@ -166,6 +197,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_CREATE ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CREADE), key = MQConst.ROUTING_KEY_SQL_ORDER_CREATE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CREATE)
......@@ -174,6 +206,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_CREATE ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CREADE), key = MQConst.ROUTING_KEY_SQL_ORDER_CREATE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CREATE)
......@@ -182,6 +215,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_CREATE ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CREADE), key = MQConst.ROUTING_KEY_SQL_ORDER_CREATE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CREATE)
......@@ -208,79 +242,88 @@ public class ConsumerProcessor {
))
public void consumerOrderClose(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandler(msg, channel);
this.consumerSqlDaoHandlerLongSql(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE), key = MQConst.ROUTING_KEY_SQL_ORDER_CLOSE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CLOSE)
))
public void consumerOrderClose1(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandler(msg, channel);
this.consumerSqlDaoHandlerLongSql(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE), key = MQConst.ROUTING_KEY_SQL_ORDER_CLOSE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CLOSE)
))
public void consumerOrderClose2(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandler(msg, channel);
this.consumerSqlDaoHandlerLongSql(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE), key = MQConst.ROUTING_KEY_SQL_ORDER_CLOSE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CLOSE)
))
public void consumerOrderClose3(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandler(msg, channel);
this.consumerSqlDaoHandlerLongSql(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE), key = MQConst.ROUTING_KEY_SQL_ORDER_CLOSE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CLOSE)
))
public void consumerOrderClose4(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandler(msg, channel);
this.consumerSqlDaoHandlerLongSql(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE), key = MQConst.ROUTING_KEY_SQL_ORDER_CLOSE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CLOSE)
))
public void consumerOrderClose5(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandler(msg, channel);
this.consumerSqlDaoHandlerLongSql(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE), key = MQConst.ROUTING_KEY_SQL_ORDER_CLOSE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CLOSE)
))
public void consumerOrderClose6(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandler(msg, channel);
this.consumerSqlDaoHandlerLongSql(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE), key = MQConst.ROUTING_KEY_SQL_ORDER_CLOSE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CLOSE)
))
public void consumerOrderClose7(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandler(msg, channel);
this.consumerSqlDaoHandlerLongSql(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE), key = MQConst.ROUTING_KEY_SQL_ORDER_CLOSE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CLOSE)
))
public void consumerOrderClose8(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandler(msg, channel);
this.consumerSqlDaoHandlerLongSql(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE), key = MQConst.ROUTING_KEY_SQL_ORDER_CLOSE,
value = @Queue(MQConst.QUEUES_SQL_ORDER_CLOSE)
))
public void consumerOrderClose9(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandler(msg, channel);
this.consumerSqlDaoHandlerLongSql(msg, channel);
}
......@@ -293,6 +336,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_PAY ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_PAY), key = MQConst.ROUTING_KEY_SQL_ORDER_PAY,
value = @Queue(MQConst.QUEUES_SQL_ORDER_PAY)
......@@ -301,6 +345,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_PAY ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_PAY), key = MQConst.ROUTING_KEY_SQL_ORDER_PAY,
value = @Queue(MQConst.QUEUES_SQL_ORDER_PAY)
......@@ -309,6 +354,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_PAY ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_PAY), key = MQConst.ROUTING_KEY_SQL_ORDER_PAY,
value = @Queue(MQConst.QUEUES_SQL_ORDER_PAY)
......@@ -317,6 +363,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_PAY ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_PAY), key = MQConst.ROUTING_KEY_SQL_ORDER_PAY,
value = @Queue(MQConst.QUEUES_SQL_ORDER_PAY)
......@@ -325,6 +372,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_PAY ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_PAY), key = MQConst.ROUTING_KEY_SQL_ORDER_PAY,
value = @Queue(MQConst.QUEUES_SQL_ORDER_PAY)
......@@ -333,6 +381,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_PAY ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_PAY), key = MQConst.ROUTING_KEY_SQL_ORDER_PAY,
value = @Queue(MQConst.QUEUES_SQL_ORDER_PAY)
......@@ -341,6 +390,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_PAY ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_PAY), key = MQConst.ROUTING_KEY_SQL_ORDER_PAY,
value = @Queue(MQConst.QUEUES_SQL_ORDER_PAY)
......@@ -349,6 +399,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_PAY ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_PAY), key = MQConst.ROUTING_KEY_SQL_ORDER_PAY,
value = @Queue(MQConst.QUEUES_SQL_ORDER_PAY)
......@@ -356,7 +407,9 @@ public class ConsumerProcessor {
public void consumerOrderPay8(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_PAY ===");
this.consumerSqlDaoHandler(msg, channel);
}@RabbitListener(bindings = @QueueBinding(
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_PAY), key = MQConst.ROUTING_KEY_SQL_ORDER_PAY,
value = @Queue(MQConst.QUEUES_SQL_ORDER_PAY)
))
......@@ -364,6 +417,7 @@ public class ConsumerProcessor {
log.info("=== CONSUMER_ORDER_PAY ===");
this.consumerSqlDaoHandler(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_PAY), key = MQConst.ROUTING_KEY_SQL_ORDER_PAY,
value = @Queue(MQConst.QUEUES_SQL_ORDER_PAY)
......
......@@ -71,9 +71,8 @@ public class KylinOrderTicketsController {
@GetMapping("list")
@ApiOperation("订单列表")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PageInfo<List<KylinOrderListVo>>> orderList(@RequestParam("page") int page,
@RequestParam("size") int size) {
return ResponseDto.success(orderTicketsService.orderList(page,size));
public ResponseDto<PageInfo<List<KylinOrderListVo>>> orderList() {
return ResponseDto.success(orderTicketsService.orderList());
}
@GetMapping("details")
......
......@@ -101,13 +101,9 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private FeignAdamBaseClient feignAdamBaseClient;
@Autowired
private TaobaoTicketUtils taobaoTicketUtils;
@Autowired
private KylinOrderTicketsMapper orderTicketsMapper;
@Autowired
private KylinOrderTicketEntitiesMapper entitiesMapper;
ArrayList<Integer> canBuyStatus = new ArrayList() {{
add(6);
......@@ -123,9 +119,9 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
boolean isDownGeneral = false;
String uid = CurrentUtil.getCurrentUid();
String lock = "userId:" + uid;
// if (!redisLockUtil.tryLock(lock, 2, 2)) {
// return ResponseDto.failure("请求频繁");//参数错误
// }
if (!redisLockUtil.tryLock(lock, 1, 5)) {
return ResponseDto.failure("请求频繁");//参数错误
}
try {
currentTime = System.currentTimeMillis();
KylinPerformanceVo performanceData = dataUtils.getPerformanceVo(payOrderParam.getPerformanceId());
......@@ -149,20 +145,20 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
}
if (performanceData == null || ticketTimesData == null || ticketData == null) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20004"));//参数错误
}
if (!ticketData.getTimeId().equals(payOrderParam.getTimeId()) || !ticketTimesData.getPerformanceId().equals(payOrderParam.getPerformanceId())) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20004"));//参数错误
}
if (payOrderParam.getNumber()%ticketData.getCounts()!=0) {
//redisLockUtil.unlock(lock);
if (payOrderParam.getNumber() % ticketData.getCounts() != 0) {
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20007"));//数量错误
}
//判断代理
if (!checkAgent(payOrderParam.getAgentId(), ticketData)) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20008"));//无权购买
}
......@@ -173,15 +169,14 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
String timeEnd = ticketData.getTimeEnd(); // 购票停售时间
String timeExpressEnd = ticketData.getTimeEndExpress(); // 快递停售时间
currentTime = System.currentTimeMillis();
boolean isMember = feignAdamBaseClient.isMember(uid).getData();//获取是否是会员
boolean isMember = orderUtils.isMember(uid);//feignAdamBaseClient.isMember(uid).getData();//获取是否是会员
currentTime = System.currentTimeMillis() - currentTime;
log.debug("fegin 会员 -> time:" + (currentTime) + "毫秒");
// boolean isMember = true;
int memberType; //会员状态 不需要判断会员 1判断会员逻辑 2会员专属
if (ticketData.getIsExclusive() == 1) {
memberType = 2;
if (!isMember) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限
}
} else {
......@@ -189,7 +184,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
// 会员购买逻辑
memberType = 1;
if (!isMember) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20009"));//没有会员权限
}
} else {
......@@ -216,38 +211,38 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
//通用判断时间
if (isMember) {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), memberTimeStart) == -1) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20011"));//未开始
}
} else {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeStart) == -1) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20011"));//未开始
}
}
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeEnd) == 1) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20012"));//已结束
}
//快递票判断
if (payOrderParam.getIsExpress() != null) {
if (payOrderParam.getIsExpress() == 1 && DateUtil.compareStrDay(DateUtil.getNowTime(), timeExpressEnd) == 1) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20013"));//快递票不卖
}
if (payOrderParam.getIsExpress() == 1 && payOrderParam.getAddressId().isEmpty()) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20014"));//快递票未填写收货地址
}
}
//实名判断
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() <= 0) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20015"));//需要实名 未实名
}
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() != payOrderParam.getNumber()) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20015"));//入场人数量错误
}
......@@ -270,7 +265,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber());
currentTime = System.currentTimeMillis() - currentTime;
log.debug("redis 修改库存 售罄 -> time:" + (currentTime) + "毫秒");
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20016"));//没抢到
} else {
isDownGeneral = true;
......@@ -280,12 +275,12 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
if (isTrueName == 1) {
currentTime = System.currentTimeMillis();
for (String enterId : payOrderParam.getEnterIdList()) {
AdamEntersVo adamEnters = feignAdamBaseClient.queryEnters(enterId, uid).getData();
AdamEntersVo adamEnters = orderUtils.getEnters(uid,enterId);//feignAdamBaseClient.queryEnters(enterId, uid).getData();
entersVoList.add(adamEnters);
if (isStudent == 1) {
int age = IDCard.getAgeByIdCard(adamEnters.getIdCard());
if (age > 25) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20017"));//年龄超了
}
}
......@@ -307,7 +302,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, entersVoList.get(i).getIdCard(), payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, 1, 1, memberType, isTrueName);
log.debug("redis 判断库存 -> time:" + (currentTime) + "毫秒");
if (!res1.equals("")) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(res1);//乱七八糟异常
}
}
......@@ -319,14 +314,14 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
String res1 = orderUtils.judgeOrderLimit(performanceData.getType(), uid, "", payOrderParam.getPerformanceId(), payOrderParam.getTicketId(), performanceLimit, performanceMemberLimit, ticketLimit, ticketMemberLimit, payOrderParam.getNumber(), payOrderParam.getNumber(), memberType, isTrueName);
currentTime = System.currentTimeMillis() - currentTime;
if (!res1.equals("")) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(res1);//乱七八糟异常
}
currentTime = System.currentTimeMillis() - currentTime;
}
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return order(payOrderParam, uid, isMember, isTrueName, performanceData, ticketData, entersVoList, isStudent, ticketTimesData, currentTime);
}
} catch (Exception e) {
......@@ -338,7 +333,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
}
e.printStackTrace();
log.error("Kylin Order Pay Error = " + e.getMessage());
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return ResponseDto.failure(ErrorMapping.get("20018"));//乱七八糟异常
}
}
......@@ -357,8 +352,6 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
Map token = CurrentUtil.getTokenClaims();
orderTickets.setUserName(StringUtils.defaultString(((String) token.get("nickname")), ""));
orderTickets.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), ""));
// orderTickets.setUserName("");
// orderTickets.setUserMobile("");
orderTickets.setPerformanceTitle(performanceData.getTitle());
orderTickets.setOrderCode(IDGenerator.ticketOrderCode(orderTicketId));
orderTickets.setPayCode("");
......@@ -389,7 +382,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
orderTickets.setTimePay(null);
if (payOrderParam.getIsExpress() == 1) {
currentTime = System.currentTimeMillis();
AdamAddressesVo addressesVo = feignAdamBaseClient.queryAddresses(payOrderParam.getAddressId(), uid).getData();
AdamAddressesVo addressesVo = orderUtils.getAddress(uid,payOrderParam.getAddressId());//feignAdamBaseClient.queryAddresses(payOrderParam.getAddressId(), uid).getData();
orderTickets.setExpressContacts(addressesVo.getName());
orderTickets.setExpressAddress(addressesVo.getAddress());
orderTickets.setExpressPhone(addressesVo.getPhone());
......@@ -757,31 +750,31 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
//支付时间
LocalDateTime now = LocalDateTime.now();
String lock = "order_lock:" + syncOrderParam.getOrder_code();
// if (!redisLockUtil.tryLock(lock, 240, 240)) {
// return "fail";//参数错误
// }
if (!redisLockUtil.tryLock(lock, 1, 5)) {
return "fail";//参数错误
}
String timePay = DateUtil.Formatter.yyyyMMddHHmmss.format(now);
KylinOrderTicketVo orderTicketData = mongoTemplate.findOne(Query.query(Criteria.where("orderCode").is(syncOrderParam.getOrder_code())), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
if (orderTicketData == null) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return "fail";//订单不存在
}
if (orderTicketData.getStatus() != KylinTableStatusConst.ORDER_STATUS0) {
if (orderTicketData.getPayCode().equals(syncOrderParam.getCode()) && orderTicketData.getStatus() == KylinTableStatusConst.ORDER_STATUS1) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return "success";//已经支付
}
if (!orderTicketData.getPayCode().equals(syncOrderParam.getCode())) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return "fail";//重复支付
}
}
if (orderTicketData.getPriceActual().compareTo(syncOrderParam.getPrice()) != 0) {
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return "fail";//价格不符
}
......@@ -890,12 +883,12 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
// 大麦回调
sycDamaiOrder(orderTickets.getOrderTicketsId());
//redisLockUtil.unlock(lock);
redisLockUtil.unlock(lock);
return "success";
}
@Override
public PageInfo<List<KylinOrderListVo>> orderList(int page, int size) {
public PageInfo<List<KylinOrderListVo>> orderList() {
//TODO 缺快递
PageInfo<List<KylinOrderListVo>> mPageInfo = null;
String uid = CurrentUtil.getCurrentUid();
......@@ -1022,7 +1015,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
@Override
public boolean checkOrderTime(String userId) {
String lock = "order_lock:checkOrderTime:" + userId;
// if (redisLockUtil.tryLock(lock, 1, 3600)) {
if (redisLockUtil.tryLock(lock, 1, 3600)) {
try {
List<OrderScriptDto> dtoData = orderTicketsMapper.orderScriptDto(userId);
LocalDateTime now = LocalDateTime.now();
......@@ -1034,38 +1027,12 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
for (OrderScriptDto item : dtoData) {
if (item.getStatus().equals(KylinTableStatusConst.ORDER_STATUS0)) {
try {
// KylinOrderTicketVo vo = dataUtils.getOrderTicketVo(item.getOrderTicketsId());
// if (vo.getStatus() != 0) {
// continue;
// }//mysql
// KylinOrderTickets orderTickets = new KylinOrderTickets();
// orderTickets.setOrderTicketsId(item.getOrderTicketsId());
// orderTickets.setUpdatedAt(now);
//
// KylinOrderTicketStatus orderTicketStatus = new KylinOrderTicketStatus();
// orderTicketStatus.setOrderId(item.getOrderTicketsId());
// orderTicketStatus.setStatus(KylinTableStatusConst.ORDER_STATUS2);
// orderTicketStatus.setUpdatedAt(now);
//vo
mapMongo.put("status", KylinTableStatusConst.ORDER_STATUS2);
mapMongo.put("updatedAt", DateUtil.Formatter.yyyyMMddHHmmssSSS.format(now));
mapMongo.put("changeDate", now);
orderIdList.add(item.getOrderTicketsId() + "," + item.getUserId());
// mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateOne(
// Query.query(Criteria.where("orderTicketsId").is(orderTickets.getOrderTicketsId())).getQueryObject(),
// new BasicDBObject("$set", mongoConverter.convertToMongoType(map))
// );
// vo.setChangeDate(now);
// vo.setStatus(KylinTableStatusConst.ORDER_STATUS2);
// vo.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmssSSS.format(now));
// redisUtil.set(KylinRedisConst.ORDER + orderTickets.getOrderTicketsId(), vo);
mapSurplusGeneral.put(item.getTicketId(), mapSurplusGeneral.get(item.getTicketId()) == null ? item.getNumber() : mapSurplusGeneral.get(item.getTicketId()) + item.getNumber());
// mongoVoUtils.resetOrderListVo(item.getUserId(), 2, item.getOrderTicketsId(), vo);
// List<KylinOrderTicketEntitiesVo> entities = vo.getEntitiesVoList();
// for (int i = 0; i < entities.size(); i++) {
// KylinOrderTicketEntitiesVo items = entities.get(i);
// dataUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), -1);
// }
} catch (Exception e) {
log.debug("CHECK TIME SYNC = " + e.getMessage());
e.printStackTrace();
......@@ -1083,20 +1050,23 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
}
currentTime = System.currentTimeMillis() - currentTime;
log.debug("redis 库存 -> time:" + (currentTime) + "毫秒");
//mysql
LinkedList<String> sqls = new LinkedList<>();
String orderStr = "";
log.debug("orderIdList -> size() :" + orderIdList.size());
for (int i = 0; i < orderIdList.size(); i++) {
String orderTicketId = orderIdList.get(i).split(",")[0];
orderStr += "'"+orderTicketId + "',";
orderStr += "'" + orderTicketId + "',";
}
log.debug("orderStr -> STR :" + orderStr.toString());
orderStr = orderStr.substring(0, orderStr.length() - 1);
LinkedList<String> sqls = new LinkedList();
sqls.add("UPDATE kylin_order_tickets SET updated_at = '" + now + "' WHERE order_tickets_id in (" + orderStr + ") ");
sqls.add("UPDATE kylin_order_ticket_status SET `status` = 2,updated_at = '" + now + "' WHERE order_id in (" + orderStr + ") ");
sqls.add("UPDATE kylin_order_ticket_relations SET updated_at = '" + now + "' WHERE order_id in (" + orderStr + ")");
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE, MQConst.ROUTING_KEY_SQL_ORDER_CLOSE, SqlMapping.gets(sqls));
String redisKey = "kylin:ORDER_CLOSE:" + IDGenerator.nextMilliId();
redisUtil.set(redisKey, sqls);
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE, MQConst.ROUTING_KEY_SQL_ORDER_CLOSE, redisKey);
currentTime = System.currentTimeMillis() - currentTime;
log.debug("mysql -> time:" + (currentTime) + "毫秒");
......@@ -1129,10 +1099,10 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
e.printStackTrace();
} finally {
}
// redisLockUtil.unlock(lock);
// } else {
// log.debug("WARNING LOCKING");
// }
redisLockUtil.unlock(lock);
} else {
log.debug("WARNING LOCKING");
}
return true;
}
......
......@@ -244,6 +244,6 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT
@Override
public KylinTicketTimesPartnerVo getTimesMongo(String timesId) {
return mongoTemplate.findOne(Query.query(Criteria.where("ticketTimesId").is(timesId).and("status").ne(-1)), KylinTicketTimesPartnerVo.class, KylinTicketTimesPartnerVo.class.getSimpleName());
return mongoTemplate.findOne(Query.query(Criteria.where("ticketTimesId").is(timesId).and("status")), KylinTicketTimesPartnerVo.class, KylinTicketTimesPartnerVo.class.getSimpleName());
}
}
......@@ -118,9 +118,13 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
kylinTicketPartnerVo.setDefault();
if(ticketCreateParam.getIsExpress()==1){
kylinTicketPartnerVo.setDescribesExpress(ticketCreateParam.getDescribesExpress());
}else{
kylinTicketPartnerVo.setDescribesExpress("");
}
if(ticketCreateParam.getIsElectronic()==1){
kylinTicketPartnerVo.setDescribeElectronic(ticketCreateParam.getDescribeElectronic());
}else{
kylinTicketPartnerVo.setDescribeElectronic("");
}
if (ticketCreateParam.getIsExpress() == 1) {
......@@ -164,10 +168,15 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
kylinTicketPartnerVo.setType(kylinTicketTimesPartnerVo.getType());
if(ticketCreateParam.getIsExpress()==1){
kylinTicketPartnerVo.setDescribesExpress(ticketCreateParam.getDescribesExpress());
}else{
kylinTicketPartnerVo.setDescribesExpress("");
}
if(ticketCreateParam.getIsElectronic()==1){
kylinTicketPartnerVo.setDescribeElectronic(ticketCreateParam.getDescribeElectronic());
}else{
kylinTicketPartnerVo.setDescribeElectronic("");
}
kylinTicketPartnerVo.setStatus(-2);
kylinTicketPartnerVo.setDefault();
......@@ -296,7 +305,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
LocalDateTime createdAt = LocalDateTime.now();
PerformancePartnerVo performancePartnerVo = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)), PerformancePartnerVo.class, PerformancePartnerVo.class.getSimpleName());
if(performancePartnerVo.getAuditStatus()==0){
if(performancePartnerVo.getAuditStatus()==0 || performancePartnerVo.getAuditStatus()==1){
return ResponseDto.failure(ErrorMapping.get(20107));
}
......@@ -335,7 +344,7 @@ public class KylinTicketsPartnerServiceImpl extends ServiceImpl<KylinTicketsMapp
@Override
public List<KylinTicketPartnerVo> getTicketMongoList(String timesId) {
return mongoTemplate.find(Query.query(Criteria.where("timesId").is(timesId)), KylinTicketPartnerVo.class, KylinTicketPartnerVo.class.getSimpleName());
return mongoTemplate.find(Query.query(Criteria.where("timesId").is(timesId).and("status").ne(-1)), KylinTicketPartnerVo.class, KylinTicketPartnerVo.class.getSimpleName());
}
@Override
......
package com.liquidnet.service.kylin.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -8,12 +14,15 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class OrderUtils {
@Autowired
private DataUtils dataUtils;
@Autowired
private RedisUtil redisUtil;
public String judgeOrderLimit(
int type,
......@@ -32,11 +41,11 @@ public class OrderUtils {
) {
Integer[] integers;
if (103 == type) {
integers=roadShowOrderLimit(userId,idCard,performanceId,ticketId,performanceBuyCount,ticketBuyCount,isTrueName);
integers = roadShowOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
} else {
integers=festivalOrderLimit(userId,idCard,performanceId,ticketId,performanceBuyCount,ticketBuyCount,isTrueName);
integers = festivalOrderLimit(userId, idCard, performanceId, ticketId, performanceBuyCount, ticketBuyCount, isTrueName);
}
return judgeMemberType(performanceLimitCount,performanceMemberLimitCount,ticketLimitCount,ticketMemberLimitCount,memberType,integers[0],integers[1]);
return judgeMemberType(performanceLimitCount, performanceMemberLimitCount, ticketLimitCount, ticketMemberLimitCount, memberType, integers[0], integers[1]);
}
public Integer[] roadShowOrderLimit(
......@@ -55,7 +64,7 @@ public class OrderUtils {
performanceBuyCount += dataUtils.getUserPBuyCount(userId, performanceId);
ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId);
}
return new Integer[]{performanceBuyCount,ticketBuyCount};
return new Integer[]{performanceBuyCount, ticketBuyCount};
}
public Integer[] festivalOrderLimit(
......@@ -75,7 +84,7 @@ public class OrderUtils {
ticketBuyCount += dataUtils.getUserTBuyCount(userId, ticketId);
}
return new Integer[]{performanceBuyCount,ticketBuyCount};
return new Integer[]{performanceBuyCount, ticketBuyCount};
}
public String judgeMemberType(int performanceLimitCount, int performanceMemberLimitCount, int ticketLimitCount, int ticketMemberLimitCount, int memberType, int performanceBuyCount, int ticketBuyCount) {
......@@ -97,4 +106,21 @@ public class OrderUtils {
return "";
}
public boolean isMember(String uid) {
String rk = AdamRedisConst.INFO_USER_MEMBER.concat(uid);
AdamUserMemberVo vo = (AdamUserMemberVo) redisUtil.get(rk);
return null != vo && vo.isActive();
}
public AdamAddressesVo getAddress(String uid, String addressesId) {
String rk = AdamRedisConst.INFO_ADDRESSES.concat(uid);
List<AdamAddressesVo> vos = (List<AdamAddressesVo>) redisUtil.get(rk);
return vos.stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
}
public AdamEntersVo getEnters(String uid, String entersId) {
String rk = AdamRedisConst.INFO_ENTERS.concat(uid);
List<AdamEntersVo> vos = (List<AdamEntersVo>) redisUtil.get(rk);
return vos.stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
}
}
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