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

Commit 193b76f6 authored by 洪全海's avatar 洪全海

创建会员用用户

parent 8abaad3e
package com.liquidnet.service.adam.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 会员价格
*/
@ApiModel(value = "AdamMemberCodeParam", description = "添加编辑会员兑换码")
@Data
public class AdamMemberCodeParam implements Serializable {
private static final long serialVersionUID = 5940725094369061032L;
/**
* 会员类型ID
*/
@ApiModelProperty(position = 1, required = false, value = "会员类型ID")
private String memberId;
/**
* 会员价格ID
*/
@ApiModelProperty(position = 2, required = false, value = "会员价格ID")
private String memberPriceId;
/**
* 类型 0-用户购买兑换码 1-后台生成兑换码
*/
@ApiModelProperty(position = 3, required = true, value = "类型 0-用户购买兑换码 1-后台生成兑换码", example = "0")
private Integer type;
/**
* 购买会员码的用户id
*/
@ApiModelProperty(position = 4, required = false, value = "登录用户token,应该从token里拿", example = "0")
private String buyUid;
}
package com.liquidnet.service.adam.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "AdamUserMemberParam", description = "会员用户信息")
@Data
public class AdamUserMemberParam {
private static final long serialVersionUID = 5940725094369061032L;
@ApiModelProperty(position = 0, required = true, value = "用户id", example = "0")
private String uid;
@ApiModelProperty(position = 1, required = true, value = "会员类型id", example = "0")
private String memberId;
}
package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.liquidnet.service.adam.dto.AdamMemberCodeParam;
import com.liquidnet.service.adam.entity.AdamMemberCode;
import com.liquidnet.service.adam.util.MemberUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "AdamMemberCodeAdminVo", description = "会员码兑换")
@Data
public class AdamMemberCodeVo implements Serializable, Cloneable {
private static final long serialVersionUID = 5258094625450569125L;
@ApiModelProperty(position = 0, value = "会员码")
private String code;
@ApiModelProperty(position = 1, value = "会员类型id")
private String memberId;
@ApiModelProperty(position = 2, value = "会员价格id")
private String memberPriceId;
@ApiModelProperty(position = 3, value = "会员码类型0购买1后台生成")
private String type;
@ApiModelProperty(position = 4, value = "会员编号")
private String memberNo;
@ApiModelProperty(position = 5, value = "会员状态0-未使用 1-已使用 2-不可用")
private Integer state;
/**
* 购买会员码订单号
*/
@ApiModelProperty(position = 6, value = "购买会员码的订单编号")
private String buyOrderNo;
/**
* 购买会员码的用户id
*/
@ApiModelProperty(position = 7, value = "购买会员码的用户id")
private String buyUid;
/**
* 购买时间
*/
@ApiModelProperty(position = 8, value = "购买时间")
private String buyAt;
/**
* 使用会员码的订单号
*/
@ApiModelProperty(position = 9, value = "使用会员码的订单编号")
private String useOrderNo;
/**
* 使用会员码的用户ID
*/
@ApiModelProperty(position = 10, value = "使用会员码的用户id")
private String useUid;
/**
* 使用时间
*/
@ApiModelProperty(position = 1, value = "使用时间")
private String useAt;
private String createdAt;
private String updatedAt;
private static final AdamMemberCodeVo obj = new AdamMemberCodeVo();
public static AdamMemberCodeVo getNew() {
try {
return (AdamMemberCodeVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AdamMemberCodeVo();
}
/**
* 整合数据,适合插入数据库的数据(购买码)
* @param param
* @param state 0-购买 1-生成
* @return
*/
@JsonIgnore
public AdamMemberCode setCodeParam(AdamMemberCodeParam param, int state) {
int type = 0;
String memberNo = "";
String code = MemberUtil.getMemberCode(type);
AdamMemberCode adamMemberCode = new AdamMemberCode();
adamMemberCode.setType(type);
adamMemberCode.setCode(code);
adamMemberCode.setMemberId(param.getMemberId());
adamMemberCode.setMemberPriceId(param.getMemberPriceId());
adamMemberCode.setState(state);
adamMemberCode.setMemberNo(memberNo);
return adamMemberCode;
}
}
package com.liquidnet.service.adam.dto.vo;
import com.liquidnet.service.adam.entity.AdamUserMember;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.time.LocalDateTime;
@ApiModel(value = "AdamUserMemberVo", description = "会员用户信息")
public class AdamUserMemberVo implements Serializable, Cloneable {
private static final long serialVersionUID = 5258094625450569125L;
@ApiModelProperty(position = 0, value = "用户id", example = "0")
private String uid;
@ApiModelProperty(position = 1, value = "会员类型id", example = "0")
private String memberId;
@ApiModelProperty(position = 2, value = "会员号", example = "0")
private Integer memberNo;
@ApiModelProperty(position = 3, value = "用户会员状态", example = "1")
private Integer state;
@ApiModelProperty(position = 4, value = "会员过期时间")
private String expiryAt;
@ApiModelProperty(position = 5, value = "创建时间")
private String createdAt;
@ApiModelProperty(position = 6, value = "更新时间")
private String updatedAt;
private static final AdamUserMemberVo obj = new AdamUserMemberVo();
public static AdamUserMemberVo getNew() {
try {
return (AdamUserMemberVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AdamUserMemberVo();
}
}
package com.liquidnet.service.adam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.AdamMemberCodeParam;
import com.liquidnet.service.adam.entity.AdamMemberCode;
import java.util.List;
/**
* 会员码
*/
public interface IAdamMemberCodeService extends IService<AdamMemberCode> {
void add(AdamMemberCodeParam param);
}
package com.liquidnet.service.adam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.entity.AdamUserMember;
/**
* 会员用户信息
*/
public interface IAdamUserMemberService extends IService<AdamUserMember> {
void createUserMemberInfo(String memberId);
String getMaxMemberNo(String memberId);
}
package com.liquidnet.service.adam.service.admin;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.AdamMemberCodeParam;
import com.liquidnet.service.adam.entity.AdamMemberCode;
/**
* 后台使用的接口
*/
public interface IAdamMemberCodeAdminService extends IService<AdamMemberCode> {
/**
* 创建礼包码
* @param param
*/
void createGiftCode(AdamMemberCodeParam param);
}
package com.liquidnet.service.adam.util;
import com.liquidnet.commons.lang.util.MD5;
import java.nio.charset.StandardCharsets;
import java.util.Calendar;
import java.util.Random;
/**
* 会员码相关工具类
*/
public class MemberUtil {
/**
* 获取
*
* @return
*/
public static boolean getOneFromRepertory() {
return false;
}
public static String getMemberCode(Integer type) {
String code = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
Random rand = new Random();
String word = String.valueOf(code.charAt(rand.nextInt(code.length())));
Calendar calendar = Calendar.getInstance();
String month = String.valueOf(calendar.get(Calendar.MONTH - 1));
String day = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));
String time = String.valueOf(calendar.getTimeInMillis()).substring(5, 10);
String microTime = String.valueOf(calendar.getTimeInMillis() * 1000).substring(2, 5);
String sign = word.concat(month).concat(day).concat(time).concat(microTime);
sign = String.format(sign + "%02d", rand.nextInt(99));
sign = MD5.getStrMD5(sign);
String s = "0123456789ABCDEFGHIJKLMNOPQRSTUV";
char[] chars = sign.toCharArray();
String g = "";
char[] sChar = s.toCharArray();
for (int i = 0;i < 8;i++) {
int a = ord(chars[i]);
int f = ord(chars[i + 8]);
int index = (a ^ f) - a & 0x1F;
char sc = sChar[index];
g += sc;
}
String randomPre = String.valueOf(sChar[rand.nextInt(s.length())]);
if (1 == type) { // 赠送
g = "G".concat(randomPre).concat(g);
} else { // 购买
g = "B".concat(randomPre).concat(g);
}
return g;
}
public static int ord(String s){
return s.length() > 0 ? (s.getBytes(StandardCharsets.UTF_8)[0] & 0xff) : 0;
}
public static int ord (char c){
return 0 < 0x80 ? c : ord(Character.toString(c));
}
}
package com.liquidnet.service.adam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = false)
public class AdamMemberCode {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Integer mid;
/**
* 会员码
*/
private String code;
/**
* 类型 0-用户购买兑换码 1-后台生成兑换码
*/
private Integer type;
/**
* 会员类型id
*/
private String memberId;
/**
* 会员价格id
*/
private String memberPriceId;
/**
* 会员卡号
*/
private String memberNo;
/**
* 状态 0-未使用 1-已使用 2-已过期
*/
private Integer state;
/**
* 购买会员码订单号
*/
private String buyOrderNo;
/**
* 购买会员码的用户id
*/
private String buyUid;
/**
* 购买时间
*/
private LocalDateTime buyAt;
/**
* 使用会员码的订单号
*/
private String useOrderNo;
/**
* 使用会员码的用户ID
*/
private String useUid;
/**
* 使用时间
*/
private LocalDateTime useAt;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
}
...@@ -44,6 +44,4 @@ public class AdamUser implements Serializable { ...@@ -44,6 +44,4 @@ public class AdamUser implements Serializable {
private LocalDateTime closedAt; private LocalDateTime closedAt;
private String comment; private String comment;
} }
package com.liquidnet.service.adam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
@Data
@EqualsAndHashCode(callSuper = false)
public class AdamUserMember {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Integer mid;
private String uid;
private String memberId;
private Integer memberNo;
private Integer state;
private LocalDateTime expiryAt;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
}
package com.liquidnet.service.adam.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.adam.entity.AdamMemberCode;
public interface AdamMemberCodeMapper extends BaseMapper<AdamMemberCode> {
String getMaxMemberNo(String memberId);
}
\ No newline at end of file
package com.liquidnet.service.adam.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.adam.entity.AdamUserMember;
/**
* 会员用户表
*/
public interface AdamUserMemberMapper extends BaseMapper<AdamUserMember> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.adam.mapper.AdamUserMemberMapper">
<resultMap id="UserMemberResult" type="com.liquidnet.service.adam.entity.AdamUserMember">
<result column="member_id" property="memberId" />
<result column="uid" property="uid" />
<result column="member_no" property="memberNo" />
<result column="state" property="state" />
<result column="expiry_at" property="expiryAt" />
<result column="created_at" property="createdAt" />
<result column="updated_at" property="updatedAt" />
</resultMap>
<!-- sql -->
<sql id="Base_Column">
m.member_id,
m.uid,
m.member_no,
m.state,
m.expiry_at,
m.created_at,
m.updated_at
</sql>
<select id="getMaxMemberNo" parameterType="java.lang.String" resultMap="UserMemberResult">
SELECT
m.member_id,
m.uid,
m.member_no,
m.state,
m.expiry_at,
m.created_at,
m.updated_at
FROM adam_user_member as m
order by m.member_no desc
limit 0,1
</select>
</mapper>
...@@ -276,9 +276,10 @@ create table adam_user_member ...@@ -276,9 +276,10 @@ create table adam_user_member
( (
mid int unsigned auto_increment primary key, mid int unsigned auto_increment primary key,
uid varchar(64) not null, uid varchar(64) not null,
member_id varchar(255) commet '会员类型id',
member_no int unsigned not null, member_no int unsigned not null,
state tinyint comment '1-NORMAL,2-INVALID', state tinyint comment '1-NORMAL,2-INVALID',
expiry_at date comment '到期日期', expiry_at datetime comment '到期日期',
created_at datetime, created_at datetime,
updated_at datetime updated_at datetime
); );
...@@ -288,16 +289,19 @@ create table adam_member_code ...@@ -288,16 +289,19 @@ create table adam_member_code
( (
mid int unsigned auto_increment primary key, mid int unsigned auto_increment primary key,
code varchar(20) comment '会员码', code varchar(20) comment '会员码',
member_id int unsigned comment '会员ID', type int default 0 comment '0用户购买1提前制作',
member_id varchar(255) comment '会员ID',
member_price_id varchar(255) comment '会员价格ID',
member_no varchar(20) comment '预留会员号', member_no varchar(20) comment '预留会员号',
state tinyint comment '0-未用,1-已用,2-失效', state tinyint comment '0-未用,1-已用,2-失效',
created_at datetime, created_at datetime,
updated_at datetime, updated_at datetime,
start_at datetime, buy_order_no varchar(255) default null comment '购买会员码订单号',
end_at datetime, buy_uid varchar(255) default null comment '购买会员码用户id',
use_order_no varchar(64) comment '消费订单号', buy_at datetime default null comment '购买时间',
use_uid varchar(64) comment '消费用户ID', use_order_no varchar(64) default null comment '消费订单号',
use_at datetime use_uid varchar(64) default null comment '消费用户ID',
use_at datetime default null
); );
-- >>------------------------------------------------------------------------------------ -- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------ -- >>------------------------------------------------------------------------------------
......
...@@ -14,6 +14,10 @@ public class AdamRedisConst { ...@@ -14,6 +14,10 @@ public class AdamRedisConst {
public static final String INFO_MEMBERS_PRICE_INFO = ADAM.concat(":list:members:price:info:"); public static final String INFO_MEMBERS_PRICE_INFO = ADAM.concat(":list:members:price:info:");
public static final String INFO_MEMBERS_CODE_INFO = ADAM.concat(":list:members:code:info:");
public static final String MEMBER_MEMBER_NO_MAX_KEY = ADAM.concat(":members:member_no_max:");
// public static final String USER_CONFIRM_SMS_CODE_KEY = ADAM + ":user:sms_confirm:"; // public static final String USER_CONFIRM_SMS_CODE_KEY = ADAM + ":user:sms_confirm:";
// //
// public static final String USER_EMAIL_CONFIRM_KEY = ADAM + ":user:email:confirm:"; // public static final String USER_EMAIL_CONFIRM_KEY = ADAM + ":user:email:confirm:";
......
package com.liquidnet.service.adam.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
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.IAdamMemberCodeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
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.convert.MongoConverter;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Service
public class AdamMemberCodeServiceImpl extends ServiceImpl<AdamMemberCodeMapper, AdamMemberCode> implements IAdamMemberCodeService {
@Autowired
AdamMemberCodeMapper adamMemberCodeMapper;
@Autowired
MongoTemplate mongoTemplate;
@Autowired
MongoConverter mongoConverter;
@Autowired
RabbitTemplate rabbitTemplate;
@Autowired
RedisUtil redisUtil;
@Override
public void add(AdamMemberCodeParam param) {
AdamMemberCode adamMemberCode = (new AdamMemberCodeVo()).setCodeParam(param, 1);
// mysql
adamMemberCodeMapper.insert(adamMemberCode);
// mongo
AdamMemberCodeVo vo = new AdamMemberCodeVo();
BeanUtils.copyProperties(adamMemberCode, vo);
vo.setCreatedAt(DateUtil.format(adamMemberCode.getCreatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
vo.setUpdatedAt(DateUtil.format(adamMemberCode.getUpdatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
mongoTemplate.insert(Collections.singletonList(null), AdamMemberCodeVo.class.getSimpleName());
// redis
Map<String, Object> redisMap = new HashMap<>();
redisMap.put(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat(adamMemberCode.getMemberPriceId()), vo);
redisUtil.hmset(AdamRedisConst.INFO_MEMBERS_CODE_INFO.concat(adamMemberCode.getBuyUid()) , redisMap);
}
}
package com.liquidnet.service.adam.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.entity.AdamUserMember;
import com.liquidnet.service.adam.mapper.AdamMemberCodeMapper;
import com.liquidnet.service.adam.mapper.AdamUserMemberMapper;
import com.liquidnet.service.adam.service.IAdamUserMemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.stereotype.Service;
import java.util.regex.Pattern;
@Slf4j
@Service
public class AdamUserMemberServiceImpl extends ServiceImpl<AdamUserMemberMapper, AdamUserMember> implements IAdamUserMemberService {
@Autowired
AdamUserMemberMapper adamUserMemberMapper;
@Autowired
AdamMemberCodeMapper adamMemberCodeMapper;
@Autowired
MongoTemplate mongoTemplate;
@Autowired
MongoConverter mongoConverter;
@Autowired
RabbitTemplate rabbitTemplate;
@Autowired
RedisUtil redisUtil;
@Override
public void createUserMemberInfo(String memberId) {
// todo 创建用户
AdamUserMember userMember = new AdamUserMember();
adamUserMemberMapper.insert(userMember);
// 获取最大会员号
getMaxMemberNo(memberId);
}
@Override
public String getMaxMemberNo(String memberId) {
String memberNoMaxKey = AdamRedisConst.MEMBER_MEMBER_NO_MAX_KEY.concat(memberId);
Object maxNumber = redisUtil.get(memberNoMaxKey);
if (null !=maxNumber) {
maxNumber = maxNumber.toString();
String newNumber = String.valueOf(redisUtil.incr(memberNoMaxKey, 1));
Integer newNumberInt = newNumber.length() - 1;
String pattern = "/([\\d])\\1{" + newNumberInt + "}/";
if (Pattern.matches(pattern, newNumber)) {// 不能是完全相同的数字
newNumber = String.valueOf(redisUtil.incr(memberNoMaxKey, 1));
}
return newNumber;
} else {
maxNumber = adamMemberCodeMapper.getMaxMemberNo(memberId);// 1000
if (null != maxNumber) {
redisUtil.set(memberNoMaxKey, maxNumber);
redisUtil.incr(memberNoMaxKey, 1);
}
return redisUtil.get(memberNoMaxKey).toString();
}
}
}
package com.liquidnet.service.adam.service.impl.admin;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
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.admin.IAdamMemberCodeAdminService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMapper, AdamMemberCode> implements IAdamMemberCodeAdminService {
@Autowired
AdamMemberCodeMapper adamMemberCodeMapper;
@Autowired
MongoTemplate mongoTemplate;
@Autowired
MongoConverter mongoConverter;
@Autowired
RabbitTemplate rabbitTemplate;
@Autowired
RedisUtil redisUtil;
@Override
public void createGiftCode(AdamMemberCodeParam param) {
AdamMemberCode adamMemberCode = (new AdamMemberCodeVo()).setCodeParam(param, 0);
adamMemberCodeMapper.insert(adamMemberCode);
}
}
...@@ -25,6 +25,7 @@ import org.springframework.data.mongodb.core.query.Query; ...@@ -25,6 +25,7 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
@Slf4j @Slf4j
...@@ -66,6 +67,8 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad ...@@ -66,6 +67,8 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad
BeanUtils.copyProperties(info, adamMember); BeanUtils.copyProperties(info, adamMember);
adamMember.setMemberId(IDGenerator.nextSnowId().toString()); adamMember.setMemberId(IDGenerator.nextSnowId().toString());
adamMember.setStartNo(1000); adamMember.setStartNo(1000);
adamMember.setCreatedAt(LocalDateTime.now());
adamMember.setUpdatedAt(LocalDateTime.now());
adamMemberMapper.insert(adamMember); adamMemberMapper.insert(adamMember);
AdamMemberVo amv = new AdamMemberVo(); AdamMemberVo amv = new AdamMemberVo();
......
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