Commit a927eafa authored by shiyu's avatar shiyu

签到3

parent d43d24fc
package com.wwdz.ch.db.dao.qiandao;
import com.wwdz.ch.db.domain.qiandao.QdUser;
import com.wwdz.ch.db.dto.request.qiandao.QdUserRequestDto;
import java.util.List;
public interface QdUserDao {
List<QdUser> findList(QdUserRequestDto dto);
QdUser getUserByUnionId(String unionId);
/**
* 通过手机号查询未删除的记录
*
* @param mobile
* @return
*/
QdUser queryByMobile(String mobile);
QdUser queryByOpenId(String openId);
/**
* 通过id查询未删除的记录
*
* @param id
* @return
*/
QdUser queryById(Long id);
/**
* 判断是否已存在相同昵称的记录
*
* @param userId
* @param nickname
* @return
*/
boolean isExistedByNickname(Long userId, String nickname);
/**
* 插入新记录
*
* @param user
* @return
*/
int insert(QdUser user);
/**
* 更新记录
*
* @param user
* @return
*/
int updateById(QdUser user);
/**
* 判断手机号是否已经存在
*
* @param beforeMobile
* @param afterMobile
* @return
*/
boolean isExistedByMobile(String beforeMobile, String afterMobile);
List<QdUser> queryAll();
List<QdUser> findByNickName(String name);
}
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.wwdz.ch.db.domain.qiandao;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import lombok.Data;
/**
* @author shiyu
* @date 2024/12/18
*/
@Data
public class QdUserSignInTask implements Serializable {
private Long id;
/**
* 用户id
*/
private Long userId;
/**
* 签到任务id
*/
private Long taskId;
/**
* 创建时间
*/
private Date createTimeTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 是否有效
*/
private Boolean isValid;
/**
* 状态
*/
private Integer state;
private static final long serialVersionUID = 1L;
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", userId=").append(userId);
sb.append(", taskId=").append(taskId);
sb.append(", createTimeTime=").append(createTimeTime);
sb.append(", updateTime=").append(updateTime);
sb.append(", isValid=").append(isValid);
sb.append(", state=").append(state);
sb.append(", serialVersionUID=").append(serialVersionUID);
sb.append("]");
return sb.toString();
}
@Override
public boolean equals(Object that) {
if (this == that) {
return true;
}
if (that == null) {
return false;
}
if (getClass() != that.getClass()) {
return false;
}
QdUserSignInTask other = (QdUserSignInTask) that;
return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
&& (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
&& (this.getTaskId() == null ? other.getTaskId() == null : this.getTaskId().equals(other.getTaskId()))
&& (this.getCreateTimeTime() == null ? other.getCreateTimeTime() == null : this.getCreateTimeTime().equals(other.getCreateTimeTime()))
&& (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))
&& (this.getIsValid() == null ? other.getIsValid() == null : this.getIsValid().equals(other.getIsValid()))
&& (this.getState() == null ? other.getState() == null : this.getState().equals(other.getState()));
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
result = prime * result + ((getTaskId() == null) ? 0 : getTaskId().hashCode());
result = prime * result + ((getCreateTimeTime() == null) ? 0 : getCreateTimeTime().hashCode());
result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());
result = prime * result + ((getIsValid() == null) ? 0 : getIsValid().hashCode());
result = prime * result + ((getState() == null) ? 0 : getState().hashCode());
return result;
}
/**
* This enum was generated by MyBatis Generator.
* This enum corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public enum Column {
id("id", "id", "BIGINT", false),
userId("user_id", "userId", "BIGINT", false),
taskId("task_id", "taskId", "BIGINT", false),
createTimeTime("create_time_time", "createTimeTime", "TIMESTAMP", false),
updateTime("update_time", "updateTime", "TIMESTAMP", false),
isValid("is_valid", "isValid", "BIT", false),
state("state", "state", "INTEGER", true);
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private static final String BEGINNING_DELIMITER = "`";
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private static final String ENDING_DELIMITER = "`";
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String column;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final boolean isColumnNameDelimited;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String javaProperty;
/**
* This field was generated by MyBatis Generator.
* This field corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
private final String jdbcType;
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String value() {
return this.column;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getValue() {
return this.column;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getJavaProperty() {
return this.javaProperty;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getJdbcType() {
return this.jdbcType;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {
this.column = column;
this.javaProperty = javaProperty;
this.jdbcType = jdbcType;
this.isColumnNameDelimited = isColumnNameDelimited;
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String desc() {
return this.getEscapedColumnName() + " DESC";
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String asc() {
return this.getEscapedColumnName() + " ASC";
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public static Column[] excludes(Column ... excludes) {
ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));
if (excludes != null && excludes.length > 0) {
columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));
}
return columns.toArray(new Column[]{});
}
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_task
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
public String getEscapedColumnName() {
if (this.isColumnNameDelimited) {
return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();
} else {
return this.column;
}
}
}
}
\ No newline at end of file
package com.wwdz.ch.db.dto.request.qiandao;
import com.wwdz.ch.db.dto.request.BaseRequestDto;
import com.xxdxxs.entity.Entity;
import lombok.Data;
import java.util.Date;
@Data
public class QdUserRequestDto extends BaseRequestDto implements Entity {
private Long id;
private Long userId;
/**
* 用户名称
*/
private String userName;
/**
* 用户密码
*/
private String password;
/**
* 性别:0 未知, 1男, 1 女
*/
private Integer gender;
/**
* 生日
*/
private String birthday;
/**
* 最近一次登录时间
*/
private Date lastLoginTime;
/**
* 最近一次登录IP地址
*/
private String lastLoginIp;
/**
* 用户层级
*/
private Byte level;
/**
* 用户昵称或网络名称
*/
private String nickName;
/**
* 用户手机号码
*/
private String mobile;
/**
* 用户头像图片
*/
private String avatar;
/**
* 用户简介
*/
private String profile;
/**
* 用户背景图片
*/
private String background;
/**
* 微信登录openid
*/
private String wxOpenid;
/**
* 微信登录unionid
*/
private String wxUnionid;
/**
* 0 可用, 1 禁用, 2 注销
*/
private Byte status;
/**
* 省
*/
private String province;
/**
* 市
*/
private String city;
/**
* 地区
*/
private String area;
/**
* 创建时间
*/
private Date addTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 逻辑删除
*/
private Boolean deleted;
/**
* 备注
*/
private String remark;
//验证码类型login登录update修改手机号
private String smsType;
// 验证码
private String smsCode;
// 修改前手机号
private String beforeMobile;
// 修改后手机号
private String afterMobile;
// 微信登录版本类型1新版本2旧版本
private Integer type;
// 获取手机号授权码
private String code;
// 登录后授权码
private String loginCode;
// 加密字符串
private String encryptedData;
// 解密用
private String iv;
}
package com.wwdz.ch.db.impl.qiandao;
import com.github.pagehelper.PageHelper;
import com.wwdz.ch.db.dao.qiandao.QdUserDao;
import com.wwdz.ch.db.domain.qiandao.QdUser;
import com.wwdz.ch.db.domain.qiandao.QdUserExample;
import com.wwdz.ch.db.dto.request.qiandao.QdUserRequestDto;
import com.wwdz.ch.db.mapper.qiandao.QdUserMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class QdUserDaoImpl implements QdUserDao {
@Autowired
private QdUserMapper qdUserMapper;
@Override
public int insert(QdUser user) {
QdUserExample example = new QdUserExample();
QdUserExample.Criteria criteria = example.createCriteria();
criteria.andWxOpenidEqualTo(user.getWxOpenid());
long count = qdUserMapper.countByExample(example);
if (count == 0) {
return qdUserMapper.insertSelective(user);
} else {
return qdUserMapper.updateByPrimaryKeySelective(user);
}
}
@Override
public List<QdUser> findList(QdUserRequestDto dto) {
QdUserExample example = new QdUserExample();
QdUserExample.Criteria criteria = example.createCriteria();
criteria.andDeletedEqualTo(false);
example.setOrderByClause("add_time desc");
PageHelper.startPage(dto.getPage(), dto.getLimit());
return qdUserMapper.selectByExample(example);
}
@Override
public QdUser getUserByUnionId(String unionId) {
QdUserExample example = new QdUserExample();
QdUserExample.Criteria criteria = example.createCriteria();
criteria.andWxUnionidEqualTo(unionId);
return qdUserMapper.selectOneByExample(example);
}
@Override
public QdUser queryByMobile(String mobile) {
QdUserExample example = new QdUserExample();
QdUserExample.Criteria criteria = example.createCriteria();
criteria.andMobileEqualTo(mobile);
criteria.andDeletedEqualTo(false);
return qdUserMapper.selectOneByExample(example);
}
@Override
public QdUser queryByOpenId(String openId) {
QdUserExample example = new QdUserExample();
QdUserExample.Criteria criteria = example.createCriteria();
criteria.andWxOpenidEqualTo(openId);
criteria.andDeletedEqualTo(false);
return qdUserMapper.selectOneByExample(example);
}
@Override
public QdUser queryById(Long id) {
return qdUserMapper.selectByPrimaryKey(id);
}
@Override
public boolean isExistedByNickname(Long userId, String nickname) {
QdUserExample example = new QdUserExample();
QdUserExample.Criteria criteria = example.createCriteria();
criteria.andIdNotEqualTo(userId).andNickNameEqualTo(nickname).andDeletedEqualTo(false);
return qdUserMapper.countByExample(example) > 0;
}
@Override
public int updateById(QdUser user) {
QdUserExample example = new QdUserExample();
QdUserExample.Criteria criteria = example.or();
criteria.andIdEqualTo(user.getId());
return qdUserMapper.updateByPrimaryKeySelective(user);
}
@Override
public boolean isExistedByMobile(String beforeMobile, String afterMobile) {
QdUserExample example = new QdUserExample();
QdUserExample.Criteria criteria = example.createCriteria();
if (StringUtils.isNotBlank(beforeMobile)) {
criteria.andMobileNotEqualTo(beforeMobile);
}
criteria.andMobileEqualTo(afterMobile);
criteria.andDeletedEqualTo(false);
return qdUserMapper.countByExample(example) > 0;
}
@Override
public List<QdUser> queryAll() {
QdUserExample example = new QdUserExample();
example.createCriteria().andDeletedEqualTo(false);
return qdUserMapper.selectByExample(example);
}
@Override
public List<QdUser> findByNickName(String name) {
QdUserExample example = new QdUserExample();
example.createCriteria().andNickNameLike("%" + name + "%");
return qdUserMapper.selectByExample(example);
}
}
...@@ -5,4 +5,6 @@ import org.springframework.stereotype.Repository; ...@@ -5,4 +5,6 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public class SignInTaskDaoImpl implements SignInTaskDao { public class SignInTaskDaoImpl implements SignInTaskDao {
} }
package com.wwdz.ch.db.mapper.qiandao;
import com.wwdz.ch.db.domain.qiandao.QdUser;
import com.wwdz.ch.db.domain.qiandao.QdUserExample;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface QdUserMapper {
long countByExample(QdUserExample example);
int deleteByExample(QdUserExample example);
int deleteByPrimaryKey(Long id);
int insert(QdUser record);
int insertSelective(QdUser record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
QdUser selectOneByExample(QdUserExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
QdUser selectOneByExampleSelective(@Param("example") QdUserExample example, @Param("selective") QdUser.Column ... selective);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
List<QdUser> selectByExampleSelective(@Param("example") QdUserExample example, @Param("selective") QdUser.Column ... selective);
List<QdUser> selectByExample(QdUserExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
QdUser selectByPrimaryKeySelective(@Param("id") Long id, @Param("selective") QdUser.Column ... selective);
QdUser selectByPrimaryKey(Long id);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
QdUser selectByPrimaryKeyWithLogicalDelete(@Param("id") Long id, @Param("andLogicalDeleted") boolean andLogicalDeleted);
int updateByExampleSelective(@Param("record") QdUser record, @Param("example") QdUserExample example);
int updateByExample(@Param("record") QdUser record, @Param("example") QdUserExample example);
int updateByPrimaryKeySelective(QdUser record);
int updateByPrimaryKey(QdUser record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
int logicalDeleteByExample(@Param("example") QdUserExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
int logicalDeleteByPrimaryKey(Long id);
}
\ No newline at end of file
package com.wwdz.ch.db.mapper.qiandao;
import com.wwdz.ch.db.domain.qiandao.QdUserSignIn;
import com.wwdz.ch.db.domain.qiandao.QdUserSignInExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface QdUserSignInMapper {
long countByExample(QdUserSignInExample example);
int deleteByExample(QdUserSignInExample example);
int deleteByPrimaryKey(Long id);
int insert(QdUserSignIn record);
int insertSelective(QdUserSignIn record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
QdUserSignIn selectOneByExample(QdUserSignInExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
QdUserSignIn selectOneByExampleSelective(@Param("example") QdUserSignInExample example, @Param("selective") QdUserSignIn.Column ... selective);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
List<QdUserSignIn> selectByExampleSelective(@Param("example") QdUserSignInExample example, @Param("selective") QdUserSignIn.Column ... selective);
List<QdUserSignIn> selectByExample(QdUserSignInExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
QdUserSignIn selectByPrimaryKeySelective(@Param("id") Long id, @Param("selective") QdUserSignIn.Column ... selective);
QdUserSignIn selectByPrimaryKey(Long id);
int updateByExampleSelective(@Param("record") QdUserSignIn record, @Param("example") QdUserSignInExample example);
int updateByExample(@Param("record") QdUserSignIn record, @Param("example") QdUserSignInExample example);
int updateByPrimaryKeySelective(QdUserSignIn record);
int updateByPrimaryKey(QdUserSignIn record);
}
\ No newline at end of file
package com.wwdz.ch.db.mapper.qiandao;
import com.wwdz.ch.db.domain.qiandao.QdUserSignInNote;
import com.wwdz.ch.db.domain.qiandao.QdUserSignInNoteExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface QdUserSignInNoteMapper {
long countByExample(QdUserSignInNoteExample example);
int deleteByExample(QdUserSignInNoteExample example);
int deleteByPrimaryKey(Long id);
int insert(QdUserSignInNote record);
int insertSelective(QdUserSignInNote record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_note
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
QdUserSignInNote selectOneByExample(QdUserSignInNoteExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_note
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
QdUserSignInNote selectOneByExampleSelective(@Param("example") QdUserSignInNoteExample example, @Param("selective") QdUserSignInNote.Column ... selective);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_note
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
List<QdUserSignInNote> selectByExampleSelective(@Param("example") QdUserSignInNoteExample example, @Param("selective") QdUserSignInNote.Column ... selective);
List<QdUserSignInNote> selectByExample(QdUserSignInNoteExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table qd_user_sign_in_note
*
* @mbg.generated
* @project https://github.com/itfsw/mybatis-generator-plugin
*/
QdUserSignInNote selectByPrimaryKeySelective(@Param("id") Long id, @Param("selective") QdUserSignInNote.Column ... selective);
QdUserSignInNote selectByPrimaryKey(Long id);
int updateByExampleSelective(@Param("record") QdUserSignInNote record, @Param("example") QdUserSignInNoteExample example);
int updateByExample(@Param("record") QdUserSignInNote record, @Param("example") QdUserSignInNoteExample example);
int updateByPrimaryKeySelective(QdUserSignInNote record);
int updateByPrimaryKey(QdUserSignInNote record);
}
\ No newline at end of file
...@@ -63,16 +63,16 @@ ...@@ -63,16 +63,16 @@
<!--生成Model类存放位置--> <!--生成Model类存放位置-->
<javaModelGenerator targetPackage="com.wwdz.ch.db.domain" targetProject="ch-dao/src/main/java"> <javaModelGenerator targetPackage="com.wwdz.ch.db.domain.qiandao" targetProject="ch-dao/src/main/java">
<property name="enableSubPackages" value="true"/> <property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/> <property name="trimStrings" value="true"/>
</javaModelGenerator> </javaModelGenerator>
<sqlMapGenerator targetPackage="com.wwdz.ch.db.mapper" targetProject="ch-dao/src/main/resources"/> <sqlMapGenerator targetPackage="com.wwdz.ch.db.mapper.qiandao" targetProject="ch-dao/src/main/resources"/>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.wwdz.ch.db.mapper" <javaClientGenerator type="XMLMAPPER" targetPackage="com.wwdz.ch.db.mapper.qiandao"
targetProject="ch-dao/src/main/java"/> targetProject="ch-dao/src/main/java"/>
<table tableName="user_sign_in" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true"> <table tableName="qd_user_sign_in_note" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true">
<generatedKey column="id" sqlStatement="Mysql" identity="true" /> <generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table> </table>
......
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