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

Commit 1df37f40 authored by 洪全海's avatar 洪全海

Merge branch 'dev' of http://gitlab.zhengzai.tv/dongjingwei/liquidnet-bus-v1 into dev

# Conflicts:
#	liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamEntersServiceImpl.java
parent 7ce7bb56
package com.liquidnet.service.adam.dto.vo; package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
...@@ -9,6 +10,7 @@ import java.math.BigDecimal; ...@@ -9,6 +10,7 @@ import java.math.BigDecimal;
/** /**
* 会员价格 * 会员价格
*/ */
@ApiModel(value = "AdamMemberPriceVo", description = "会员价格")
@Data @Data
public class AdamMemberPriceVo implements Serializable { public class AdamMemberPriceVo implements Serializable {
...@@ -17,50 +19,60 @@ public class AdamMemberPriceVo implements Serializable { ...@@ -17,50 +19,60 @@ public class AdamMemberPriceVo implements Serializable {
/** /**
* 会员价格ID * 会员价格ID
*/ */
@ApiModelProperty(position = 1, value = "会员价格id")
private String memberPriceId; private String memberPriceId;
/** /**
* 会员类型ID * 会员类型ID
*/ */
@ApiModelProperty(position = 2, value = "会员类型id")
private String memberId; private String memberId;
/** /**
* 状态 0 不可用 1上线中 2已下线 * 状态 0 不可用 1上线中 2已下线
*/ */
@ApiModelProperty(position = 3, value = "价格状态")
private Integer status; private Integer status;
/** /**
* 会员包名称 * 价格包名称
*/ */
@ApiModelProperty(position = 4, value = "价格包名称")
private String name; private String name;
/** /**
* 原价 * 原价
*/ */
@ApiModelProperty(position = 5, value = "原价")
private BigDecimal price; private BigDecimal price;
/** /**
* 折扣价 * 折扣价
*/ */
@ApiModelProperty(position = 6, value = "折扣价")
private BigDecimal priceFixed; private BigDecimal priceFixed;
/** /**
* 会员包有效天数 * 会员包有效天数
*/ */
@ApiModelProperty(position = 7, value = "有效天数")
private Integer days; private Integer days;
/** /**
* 会员包须知 * 会员包须知
*/ */
@ApiModelProperty(position = 8, value = "须知")
private String detail; private String detail;
/** /**
* 创建时间 * 创建时间
*/ */
@ApiModelProperty(position = 9, value = "创建时间")
private String createdAt; private String createdAt;
/** /**
* 更新时间 * 更新时间
*/ */
@ApiModelProperty(position = 10, value = "更新时间")
private String updatedAt; private String updatedAt;
} }
...@@ -23,7 +23,7 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable { ...@@ -23,7 +23,7 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable {
/** /**
* 会员卡id * 会员卡id
*/ */
@ApiModelProperty(position = 0, required = false, value = "会员ID[50]", example = "62960077673504768") @ApiModelProperty(position = 0, required = false, value = "会员ID[50]")
private String memberId; private String memberId;
/** /**
......
...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; ...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.constant.AdamMemberConst; import com.liquidnet.service.adam.constant.AdamMemberConst;
import com.liquidnet.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.constant.AdamRedisConst;
...@@ -13,7 +14,6 @@ import com.liquidnet.service.adam.dto.AdamMemberOrderParam; ...@@ -13,7 +14,6 @@ import com.liquidnet.service.adam.dto.AdamMemberOrderParam;
import com.liquidnet.service.adam.dto.AdamMemberOrderResult; import com.liquidnet.service.adam.dto.AdamMemberOrderResult;
import com.liquidnet.service.adam.dto.vo.*; import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.adam.entity.AdamMemberOrder; import com.liquidnet.service.adam.entity.AdamMemberOrder;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import com.liquidnet.service.adam.mapper.AdamMemberOrderMapper; import com.liquidnet.service.adam.mapper.AdamMemberOrderMapper;
import com.liquidnet.service.adam.mapper.AdamMemberPriceMapper; import com.liquidnet.service.adam.mapper.AdamMemberPriceMapper;
import com.liquidnet.service.adam.service.IAdamMemberOrderService; import com.liquidnet.service.adam.service.IAdamMemberOrderService;
...@@ -21,6 +21,7 @@ import com.liquidnet.service.adam.service.IAdamMemberService; ...@@ -21,6 +21,7 @@ import com.liquidnet.service.adam.service.IAdamMemberService;
import com.liquidnet.service.adam.service.IAdamUserMemberService; import com.liquidnet.service.adam.service.IAdamUserMemberService;
import com.liquidnet.service.adam.service.admin.IAdamMemberPriceService; import com.liquidnet.service.adam.service.admin.IAdamMemberPriceService;
import com.liquidnet.service.adam.util.MemberUtil; import com.liquidnet.service.adam.util.MemberUtil;
import com.liquidnet.service.base.SqlMapping;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
...@@ -32,6 +33,7 @@ import org.springframework.data.mongodb.core.query.Query; ...@@ -32,6 +33,7 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
...@@ -87,8 +89,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -87,8 +89,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
@Override @Override
public AdamMemberOrderVo getMemberOrderInfo(String uid, String orderNo) { public AdamMemberOrderVo getMemberOrderInfo(String uid, String orderNo) {
AdamMemberOrderVo orderVo = null; AdamMemberOrderVo orderVo = (AdamMemberOrderVo) redisUtil.hget(AdamRedisConst.INFO_MEMBERS_ORDER_INFO.concat(uid), orderNo);
orderVo = (AdamMemberOrderVo) redisUtil.hget(AdamRedisConst.INFO_MEMBERS_ORDER_INFO.concat(uid), orderNo);
if (null == orderVo) { if (null == orderVo) {
orderVo = mongoTemplate.findOne(Query.query(Criteria.where("orderNo").is(orderNo)), orderVo = mongoTemplate.findOne(Query.query(Criteria.where("orderNo").is(orderNo)),
AdamMemberOrderVo.class, AdamMemberOrderVo.class.getSimpleName()); AdamMemberOrderVo.class, AdamMemberOrderVo.class.getSimpleName());
...@@ -97,7 +98,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -97,7 +98,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
} }
@Override @Override
public AdamMemberOrderResult buyMemberOrMemberCode(AdamMemberOrderParam param) throws Exception { public AdamMemberOrderResult buyMemberOrMemberCode(AdamMemberOrderParam param) {
String memberId = param.getMemberId(); String memberId = param.getMemberId();
String memberPriceId = param.getMemberPriceId(); String memberPriceId = param.getMemberPriceId();
AdamMemberOrderResult result = new AdamMemberOrderResult(); AdamMemberOrderResult result = new AdamMemberOrderResult();
...@@ -105,7 +106,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -105,7 +106,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
// 验证会员是否有效 // 验证会员是否有效
AdamMemberVo adamMemberVo = adamMemberService.queryMemberInfo(); AdamMemberVo adamMemberVo = adamMemberService.queryMemberInfo();
if (adamMemberVo.getMemberId() != memberId) { if (!adamMemberVo.getMemberId().equals(memberId)) {
result.setState(0); result.setState(0);
return result; return result;
} }
...@@ -123,8 +124,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -123,8 +124,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
result.setState(0); result.setState(0);
return result; return result;
} }
// 查询用户是否是会员 获取会员编号
AdamUserMemberVo userMemberInfo = adamUserMemberService.getUserMemberInfo(param.getUid());
AdamMemberPriceVo memberPrice = (AdamMemberPriceVo) redisUtil.hget(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat(memberId), memberPriceId); AdamMemberPriceVo memberPrice = (AdamMemberPriceVo) redisUtil.hget(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat(memberId), memberPriceId);
if (null == memberPrice) { if (null == memberPrice) {
...@@ -148,9 +147,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -148,9 +147,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
orderVo.setUid(param.getUid()); orderVo.setUid(param.getUid());
orderVo.setPrice(param.getPrice()); orderVo.setPrice(param.getPrice());
// todo 此处调用MQ通知mysql
// List<Object> mqList = new ArrayList<>();
mongoTemplate.insert(orderVo, AdamMemberOrderVo.class.getSimpleName()); mongoTemplate.insert(orderVo, AdamMemberOrderVo.class.getSimpleName());
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_ORDER_INFO.concat(param.getUid()), orderNo, orderVo); redisUtil.hset(AdamRedisConst.INFO_MEMBERS_ORDER_INFO.concat(param.getUid()), orderNo, orderVo);
...@@ -197,8 +193,8 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -197,8 +193,8 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
/** /**
* 使用会员码 * 使用会员码
* *
* @param param * @param param 兑换码相关参数
* @return * @return Object
*/ */
@Override @Override
public boolean useMemberCode(AdamMemberOrderCodeParam param) { public boolean useMemberCode(AdamMemberOrderCodeParam param) {
...@@ -229,7 +225,9 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -229,7 +225,9 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
String currentDateTime = DateUtil.getNowTime(); String currentDateTime = DateUtil.getNowTime();
AdamMemberOrderVo orderVo = new AdamMemberOrderVo(); AdamMemberOrderVo orderVo = new AdamMemberOrderVo();
orderVo.setOrderNo(IDGenerator.nextSnowId().toString().concat("V"));
orderVo.setMemberCode(code); orderVo.setMemberCode(code);
orderVo.setUid(uid);
orderVo.setMemberNo(memberCodeVo.getMemberNo()); orderVo.setMemberNo(memberCodeVo.getMemberNo());
orderVo.setMemberId(IDGenerator.nextSnowId().toString()); orderVo.setMemberId(IDGenerator.nextSnowId().toString());
orderVo.setMode(type); orderVo.setMode(type);
...@@ -239,6 +237,8 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -239,6 +237,8 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
orderVo.setCreatedAt(currentDateTime); orderVo.setCreatedAt(currentDateTime);
orderVo.setDays(priceVo.getDays()); orderVo.setDays(priceVo.getDays());
orderVo.setBirthday(DateUtil.format(param.getBirthday(), DateUtil.Formatter.yyyyMMddHHmmss)); orderVo.setBirthday(DateUtil.format(param.getBirthday(), DateUtil.Formatter.yyyyMMddHHmmss));
orderVo.setPayNo(memberCodeVo.getCode());
orderVo.setPrice(BigDecimal.valueOf(0));
if (AdamMemberConst.SUB_TYPE_USE_VIP_CODE == type) { //使用购买的会员码 if (AdamMemberConst.SUB_TYPE_USE_VIP_CODE == type) { //使用购买的会员码
orderVo.setPayChannel(AdamMemberConst.VIP_CODE); orderVo.setPayChannel(AdamMemberConst.VIP_CODE);
...@@ -273,7 +273,34 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -273,7 +273,34 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
mongoTemplate.getCollection(AdamMemberCodeVo.class.getSimpleName()) mongoTemplate.getCollection(AdamMemberCodeVo.class.getSimpleName())
.updateOne(Query.query(Criteria.where("code").is(memberCodeVo.getCode())).getQueryObject(), object); .updateOne(Query.query(Criteria.where("code").is(memberCodeVo.getCode())).getQueryObject(), object);
// todo MQ 统一通知队列插入数据库 // todo MQ 统一通知队列插入数据库
List<Object> mqList = new ArrayList<>();
/*
( `order_no`, `uid`, `mode`, `price`,
`price_paid`, `member_name`, `member_id`,
`member_price_id`, `days`, `state`, `member_no`,
`pay_channel`, `pay_no`, `birthday`, `payment_at`,
`created_at`, `updated_at`, `client_ip`, `source`, `version`)
*/
// mqList.add(orderVo.getOrderNo());
// mqList.add(orderVo.getUid());
// mqList.add(orderVo.getMode());
// mqList.add(orderVo.getPrice());
// mqList.add(BigDecimal.valueOf(0));
// mqList.add(orderVo.getMemberName());
// mqList.add(orderVo.getMemberId());
// mqList.add(orderVo.getMemberPriceId());
// mqList.add(orderVo.getDays());
// mqList.add(orderVo.getState());
// mqList.add(orderVo.getMemberNo());
// mqList.add(orderVo.getPayChannel());
// mqList.add(orderVo.getPayNo());
// mqList.add(orderVo.getBirthday());
// mqList.add(orderVo.getPaymentAt());
// mqList.add(orderVo.getCreatedAt());
// mqList.add(orderVo.getCreatedAt());
// mqList.add("ip");
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("adam_member_order.add", mqList.toArray()));
return true; return true;
} }
...@@ -282,7 +309,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -282,7 +309,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
* *
* @param payType 支付类型 * @param payType 支付类型
* @param payParam 支付参数 * @param payParam 支付参数
* @return * @return Map
*/ */
private Map<String, String> callPayServer(String payType, LinkedMultiValueMap<String, String> payParam) { private Map<String, String> callPayServer(String payType, LinkedMultiValueMap<String, String> payParam) {
String url = "http://testpay.zhengzai.tv"; String url = "http://testpay.zhengzai.tv";
...@@ -307,14 +334,13 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -307,14 +334,13 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
break; break;
} }
String json = HttpUtil.post(url, payParam); String json = HttpUtil.post(url, payParam);
HashMap<String, String> result = (HashMap<String, String>) JSONObject.parse(json); return (HashMap<String, String>) JSONObject.parse(json);
return result;
} }
@Override @Override
public boolean memberNotifyCallBack(AdamMemberOrderCallbackResult result) { public boolean memberNotifyCallBack(AdamMemberOrderCallbackResult result) {
if (1 != result.getStatus() || if (1 != result.getStatus() ||
result.getType() != AdamMemberConst.TYPE_VIP || !result.getType().equals(AdamMemberConst.TYPE_VIP) ||
null == result.getOrderCode() || null == result.getOrderCode() ||
null == result.getCode()) { null == result.getCode()) {
return false; return false;
...@@ -429,7 +455,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe ...@@ -429,7 +455,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
* @param orderCode 订单号 * @param orderCode 订单号
* @param type 会员码类型 * @param type 会员码类型
* @param currentDateTime 创建时间 * @param currentDateTime 创建时间
* @return * @return AdamMemberCodeVo
*/ */
private AdamMemberCodeVo getAdamMemberCodeVo(AdamMemberOrderVo orderVo, String orderCode, int type, String currentDateTime) { private AdamMemberCodeVo getAdamMemberCodeVo(AdamMemberOrderVo orderVo, String orderCode, int type, String currentDateTime) {
AdamMemberCodeVo codeVo = new AdamMemberCodeVo(); AdamMemberCodeVo codeVo = new AdamMemberCodeVo();
......
...@@ -65,12 +65,6 @@ public class AdamMemberServiceImpl extends ServiceImpl<AdamMemberMapper, AdamMem ...@@ -65,12 +65,6 @@ public class AdamMemberServiceImpl extends ServiceImpl<AdamMemberMapper, AdamMem
memberPrice.add(tempMemberPrice); memberPrice.add(tempMemberPrice);
} }
// Map<Object, Object> tempMemberPrice = redisUtil.hmget(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat( info.getMemberId()));
// Iterator<Object> iterator = tempMemberPrice.keySet().iterator();
// while (iterator.hasNext()) {
// AdamMemberPriceVo tempAmp = (AdamMemberPriceVo) tempMemberPrice.get(iterator.next());
// memberPrice.add(tempAmp);
// }
info.setAdamMemberPrice(memberPrice); info.setAdamMemberPrice(memberPrice);
if (1 == tag) { if (1 == tag) {
mongoTemplate.insert(info, AdamMemberVo.class.getSimpleName()); mongoTemplate.insert(info, AdamMemberVo.class.getSimpleName());
......
...@@ -74,7 +74,7 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad ...@@ -74,7 +74,7 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad
AdamMemberVo amv = new AdamMemberVo(); AdamMemberVo amv = new AdamMemberVo();
BeanUtils.copyProperties(adamMember, amv); BeanUtils.copyProperties(adamMember, amv);
List<AdamMemberPrice> adamMemberPrices = adamMemberPriceMapper.memberPriceList(info.getMemberId()); List<AdamMemberPrice> adamMemberPrices = adamMemberPriceMapper.memberPriceList(adamMember.getMemberId());
amv.setAdamMemberPrice((new AdamMemberVo()).setMemberPrice(adamMemberPrices)); amv.setAdamMemberPrice((new AdamMemberVo()).setMemberPrice(adamMemberPrices));
// 添加数据到 Mongo // 添加数据到 Mongo
...@@ -83,7 +83,7 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad ...@@ -83,7 +83,7 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL, // rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("adam_member.add", (new AdamMemberVo()).getMqList(adamMember).toArray())); // SqlMapping.get("adam_member.add", (new AdamMemberVo()).getMqList(adamMember).toArray()));
// todo 同步redis // todo 同步redis
redisUtil.set(AdamRedisConst.INFO_MEMBERS_INFO.concat(info.getMemberId()), amv); redisUtil.set(AdamRedisConst.INFO_MEMBERS_INFO.concat(adamMember.getMemberId()), amv);
} }
@Override @Override
...@@ -93,7 +93,6 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad ...@@ -93,7 +93,6 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad
mongoTemplate.getCollection(AdamMemberVo.class.getSimpleName()) mongoTemplate.getCollection(AdamMemberVo.class.getSimpleName())
.updateOne(Query.query(Criteria.where("mId").is(info.getMid())).getQueryObject(), object); .updateOne(Query.query(Criteria.where("mId").is(info.getMid())).getQueryObject(), object);
// todo 放入MQ
redisUtil.set(AdamRedisConst.INFO_MEMBERS_INFO.concat(info.getMid().toString()), info); redisUtil.set(AdamRedisConst.INFO_MEMBERS_INFO.concat(info.getMid().toString()), info);
} }
} }
adam_member.add=INSERT INTO `adam_member` ( `name`, `title`, `sub_title`, `icon`, `avatar`, `start_no`, `type`, `interests_detail`, `notes`, `is_notice`, `notice_info`, `notice_title`, `need_question`, `display_agreement`, `agreement`, `member_id`, `limitation`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); adam_member.add=INSERT INTO `adam_member` ( `name`, `title`, `sub_title`, `icon`, `avatar`, `start_no`, `type`, `interests_detail`, `notes`, `is_notice`, `notice_info`, `notice_title`, `need_question`, `display_agreement`, `agreement`, `member_id`, `limitation`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
adam_member_order.add=INSERT INTO `adam_member_order` ( `order_no`, `uid`, `mode`, `price`, `price_paid`, `member_name`, `member_id`, `member_price_id`, `days`, `state`, `member_no`, `pay_channel`, `pay_no`, `birthday`, `payment_at`, `created_at`, `updated_at`, `client_ip`, `source`, `version`) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
adam_user_member_add=
adam_user_member_update=
\ No newline at end of file
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