Commit 2c023a99 2c023a991821f20483641f78cf83057dfa937f77 by xianghan

1.app账号登录时兼容海南app账号历史数据

1 parent 0ec7867b
Showing 38 changed files with 1874 additions and 4 deletions
......@@ -44,7 +44,7 @@ public class Member implements Serializable {
@Column(name = "code")
private String code;
/** 类型 1:大屏;2:小屏 */
/** 类型 1:大屏;2:小屏 3:app;*/
@Column(name = "`type`")
private Integer type;
......
package com.topdraw.business.module.user.app.domain;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;
/**
* @author XiangHan
* @date 2022-06-27
*/
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="uc_user_app")
public class UserAppIdManual implements Serializable {
// 第三方账号类型 3:微信;4:QQ;5:微博;6:苹果账号
@Transient
private Integer accountType;
// 第三方账号
@Transient
private String account;
// ID
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private Long id;
// 会员id
@Column(name = "member_id")
private Long memberId;
// 用户名(一般为手机号)
@Column(name = "username", nullable = false)
private String username;
// 密码
@Column(name = "password")
private String password;
// 类型 0:苹果;1:安卓;-1:未知
@Column(name = "type", nullable = false)
private Integer type;
// 状态 0:禁用;1:生效;-1:注销
@Column(name = "status", nullable = false)
private Integer status;
// 昵称
@Column(name = "nickname")
private String nickname;
// 头像地址
@Column(name = "headimgurl")
private String headimgurl;
// 邮箱
@Column(name = "email")
private String email;
// 手机号
@Column(name = "cellphone")
private String cellphone;
// 性别 0:女;1:男;-1:其他
@Column(name = "gender")
private Integer gender;
// 生日
@Column(name = "birthday")
private String birthday;
// 最近活跃时间
@Column(name = "last_active_time")
private Timestamp lastActiveTime;
// 注销时间
@Column(name = "delete_time")
private Timestamp deleteTime;
// 标签
@Column(name = "tags")
private String tags;
// 描述
@Column(name = "description")
private String description;
// 创建时间
@CreatedDate
@Column(name = "create_time")
private Timestamp createTime;
// 更新时间
@LastModifiedDate
@Column(name = "update_time")
private Timestamp updateTime;
public void copy(UserAppIdManual source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}
package com.topdraw.business.module.user.app.repository;
import com.topdraw.business.module.user.app.domain.UserApp;
import com.topdraw.business.module.user.app.domain.UserAppIdManual;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
......@@ -47,4 +48,12 @@ public interface UserAppRepository extends JpaRepository<UserApp, Long>, JpaSpec
@Query(value = "UPDATE `uc_user_app` SET `last_active_time` = now(), `nickname` = ?2, `headimgurl` = ?3 " +
" WHERE `username` = ?1 and `status` = 1 ", nativeQuery = true)
Integer updateAppLastActiveTimeAndNicknameAndHeadImg(String username, String nickname, String headimgurl);
@Modifying
@Query(value = "INSERT INTO `uc_user_app`(`id`, `member_id`, `username`, `password`, `type`, `status`, `nickname`, `headimgurl`, `email`, `cellphone`, `gender`, `birthday`, `last_active_time`, `delete_time`, `tags`, `description`, `create_time`, `update_time`) " +
" VALUES (:#{#resources.id}, :#{#resources.memberId}, :#{#resources.username}, :#{#resources.password}, :#{#resources.type}," +
" 1, :#{#resources.nickname}, :#{#resources.headimgurl}, :#{#resources.email}, :#{#resources.cellphone}, " +
" :#{#resources.gender}, NULL, now(), NULL, :#{#resources.tags}, " +
" :#{#resources.description}, :#{#resources.createTime}, now());", nativeQuery = true)
void saveByIdManual(@Param("resources") UserAppIdManual userAppIdManual);
}
......
......@@ -6,11 +6,12 @@ import com.topdraw.business.module.user.app.domain.UserAppBind;
import com.topdraw.business.module.user.app.service.UserAppBindService;
import com.topdraw.business.module.user.app.service.dto.UserAppBindDTO;
import com.topdraw.business.module.user.app.service.dto.UserAppDTO;
import com.topdraw.business.module.user.app.service.dto.UserAppSimpleDTO;
import com.topdraw.business.module.vis.hainan.qq.domain.VisUserQq;
import com.topdraw.business.module.vis.hainan.weibo.domain.VisUserWeibo;
import com.topdraw.business.module.vis.hainan.weixin.domain.VisUserWeixin;
import com.topdraw.common.ResultInfo;
import com.topdraw.annotation.Log;
import com.topdraw.business.module.user.app.service.UserAppService;
import com.topdraw.util.RegexUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -36,6 +37,61 @@ public class UserAppController {
private UserAppBindService userAppBindService;
@Log
@PostMapping(value = "/saveAppAndBindWeibo4Vis")
@ApiOperation("兼容海南app原微博数据")
@AnonymousAccess
public ResultInfo saveAppAndBindWeibo4Vis(@Validated @RequestBody VisUserWeibo resources) {
log.info("兼容海南app原weibo数据,参数 ==>> [saveAppAndBindWeibo4Vis#{}]", resources);
String userId = resources.getUserId();
if (StringUtils.isBlank(userId)) {
log.error("兼容海南app原weibo数据,参数错误,app账号不得为空,[saveAppAndBindWeibo4Vis#{}]", resources);
return ResultInfo.failure("修改app账号密码失败,参数错误,app账号不得为空");
}
return this.userAppService.saveAppAndBindWeibo4Vis(resources);
}
@Log
@PostMapping(value = "/saveAppAndBindQq4Vis")
@ApiOperation("兼容海南app原QQ数据")
@AnonymousAccess
public ResultInfo saveAppAndBindQq4Vis(@Validated @RequestBody VisUserQq resources) {
log.info("兼容海南app原QQ数据,参数 ==>> [saveAppAndBindQq4Vis#{}]", resources);
String openid = resources.getOpenid();
if (StringUtils.isBlank(openid)) {
log.error("兼容海南app原QQ数据,参数错误,app账号不得为空,[saveAppAndBindWeibo4Vis#{}]", resources);
return ResultInfo.failure("修改app账号密码失败,参数错误,无openid");
}
return this.userAppService.saveAppAndBindQq4Vis(resources);
}
@Log
@PostMapping(value = "/saveAppAndBindWeixin4Vis")
@ApiOperation("兼容海南app原微信数据")
@AnonymousAccess
public ResultInfo saveAppAndBindWeixin4Vis(@Validated @RequestBody VisUserWeixin resources) {
log.info("兼容海南app原weibo数据,参数 ==>> [saveAppAndBindWeixin4Vis#{}]", resources);
String openid = resources.getOpenid();
if (StringUtils.isBlank(openid)) {
log.error("兼容海南app原微信数据,参数错误,app账号不得为空,[saveAppAndBindWeixin4Vis#{}]", resources);
return ResultInfo.failure("兼容海南app原微信数据失败,参数错误,无openid");
}
String username = resources.getUsername();
if (StringUtils.isBlank(username)) {
log.error("兼容海南app原微信数据,参数错误,app账号不得为空,[saveAppAndBindWeixin4Vis#{}]", resources);
return ResultInfo.failure("兼容海南app原微信数据失败,参数错误,无username");
}
return this.userAppService.saveAppAndBindWeixin4Vis(resources);
}
@Log
@PostMapping(value = "/updateAppLastActiveTimeAndNicknameAndHeadImg")
@ApiOperation("修改app账号最后登录时间、昵称和头像")
@AnonymousAccess
......
......@@ -4,6 +4,10 @@ import com.topdraw.business.module.user.app.domain.UserApp;
import com.topdraw.business.module.user.app.domain.UserAppBind;
import com.topdraw.business.module.user.app.service.dto.UserAppDTO;
import com.topdraw.business.module.user.app.service.dto.UserAppSimpleDTO;
import com.topdraw.business.module.vis.hainan.qq.domain.VisUserQq;
import com.topdraw.business.module.vis.hainan.weibo.domain.VisUserWeibo;
import com.topdraw.business.module.vis.hainan.weixin.domain.VisUserWeixin;
import com.topdraw.common.ResultInfo;
/**
* @author XiangHan
......@@ -77,4 +81,10 @@ public interface UserAppService {
boolean updateAppLastActiveTimeAndNicknameAndHeadImg(UserApp resources);
ResultInfo saveAppAndBindWeibo4Vis(VisUserWeibo resources);
ResultInfo saveAppAndBindWeixin4Vis(VisUserWeixin resources);
ResultInfo saveAppAndBindQq4Vis(VisUserQq resources);
}
......
package com.topdraw.business.module.vis.hainan.app.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import javax.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="vis_user")
public class VisUser implements Serializable {
// ID
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
// 所有者ID
@Column(name = "person_id")
private Long personId;
// 平台
@Column(name = "platform")
private String platform;
// 平台账号
@Column(name = "platform_account")
private String platformAccount;
// 用户名
@Column(name = "username")
private String username;
// 密码
@Column(name = "password")
private String password;
// 积分
@Column(name = "points")
private Integer points;
// 昵称
@Column(name = "nickname")
private String nickname;
// 真实姓名
@Column(name = "realname")
private String realname;
// 头像
@Column(name = "image")
private String image;
// 电子邮件
@Column(name = "email")
private String email;
// 手机号
@Column(name = "cellphone")
private String cellphone;
// 0-女 1-男 2-其他
@Column(name = "gender")
private Integer gender;
// 生日
@Column(name = "birthday")
private Integer birthday;
// 登录天数(总天数)
@Column(name = "login_days")
private Integer loginDays;
// 连续天数
@Column(name = "continue_days")
private Integer continueDays;
// 活跃时间
@Column(name = "active_time")
private Timestamp activeTime;
// 标签
@Column(name = "tags")
private String tags;
// 登录类型:1-运营商隐式登录 2-手机验证登录 3-微信登录 4-QQ登录 5-微博登录 6-苹果登录
@Column(name = "login_type")
private Integer loginType;
// 用户绑定ID
@Column(name = "vis_user_id")
private Long visUserId;
// 微信绑定ID
@Column(name = "vis_user_weixin_id")
private Long visUserWeixinId;
// QQ绑定ID
@Column(name = "vis_user_qq_id")
private Long visUserQqId;
// 微博绑定ID
@Column(name = "vis_user_weibo_id")
private Long visUserWeiboId;
// 苹果绑定ID
@Column(name = "vis_user_apple_id")
private Long visUserAppleId;
// 状态:默认1-生效 2-失效
@Column(name = "status")
private Integer status;
// 创建时间
@CreatedDate
@Column(name = "create_time")
private Timestamp createTime;
// 更新时间
@LastModifiedDate
@Column(name = "update_time")
private Timestamp updateTime;
public void copy(VisUser source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}
package com.topdraw.business.module.vis.hainan.app.repository;
import com.topdraw.business.module.vis.hainan.app.domain.VisUser;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @author XiangHan
* @date 2022-07-14
*/
public interface VisUserRepository extends JpaRepository<VisUser, Long>, JpaSpecificationExecutor<VisUser> {
}
package com.topdraw.business.module.vis.hainan.app.service;
import com.topdraw.business.module.vis.hainan.app.domain.VisUser;
import com.topdraw.business.module.vis.hainan.app.service.dto.VisUserDTO;
/**
* @author XiangHan
* @date 2022-07-14
*/
public interface VisUserService {
/**
* 根据ID查询
* @param id ID
* @return UserDTO
*/
VisUserDTO findById(Long id);
void create(VisUser resources);
void update(VisUser resources);
void delete(Long id);
}
package com.topdraw.business.module.vis.hainan.app.service.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Data
public class VisUserDTO implements Serializable {
// ID
private Long id;
// 所有者ID
private Long personId;
// 平台
private String platform;
// 平台账号
private String platformAccount;
// 用户名
private String username;
// 密码
private String password;
// 积分
private Integer points;
// 昵称
private String nickname;
// 真实姓名
private String realname;
// 头像
private String image;
// 电子邮件
private String email;
// 手机号
private String cellphone;
// 0-女 1-男 2-其他
private Integer gender;
// 生日
private Integer birthday;
// 登录天数(总天数)
private Integer loginDays;
// 连续天数
private Integer continueDays;
// 活跃时间
private Timestamp activeTime;
// 标签
private String tags;
// 登录类型:1-运营商隐式登录 2-手机验证登录 3-微信登录 4-QQ登录 5-微博登录 6-苹果登录
private Integer loginType;
// 用户绑定ID
private Long visUserId;
// 微信绑定ID
private Long visUserWeixinId;
// QQ绑定ID
private Long visUserQqId;
// 微博绑定ID
private Long visUserWeiboId;
// 苹果绑定ID
private Long visUserAppleId;
// 状态:默认1-生效 2-失效
private Integer status;
// 创建时间
private Timestamp createTime;
// 更新时间
private Timestamp updateTime;
}
package com.topdraw.business.module.vis.hainan.app.service.impl;
import com.topdraw.business.module.vis.hainan.app.domain.VisUser;
import com.topdraw.business.module.vis.hainan.app.repository.VisUserRepository;
import com.topdraw.business.module.vis.hainan.app.service.VisUserService;
import com.topdraw.business.module.vis.hainan.app.service.dto.VisUserDTO;
import com.topdraw.business.module.vis.hainan.app.service.mapper.VisUserMapper;
import com.topdraw.utils.ValidationUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.util.Assert;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class VisUserServiceImpl implements VisUserService {
@Autowired
private VisUserRepository visUserRepository;
@Autowired
private VisUserMapper visUserMapper;
@Override
public VisUserDTO findById(Long id) {
VisUser visUser = visUserRepository.findById(id).orElseGet(VisUser::new);
ValidationUtil.isNull(visUser.getId(),"User","id",id);
return visUserMapper.toDto(visUser);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(VisUser resources) {
visUserRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(VisUser resources) {
VisUser User = visUserRepository.findById(resources.getId()).orElseGet(VisUser::new);
ValidationUtil.isNull( User.getId(),"User","id",resources.getId());
User.copy(resources);
visUserRepository.save(User);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
VisUser User = visUserRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", VisUser.class, id), 1));
visUserRepository.delete(User);
}
}
package com.topdraw.business.module.vis.hainan.app.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.module.vis.hainan.app.domain.VisUser;
import com.topdraw.business.module.vis.hainan.app.service.dto.VisUserDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface VisUserMapper extends BaseMapper<VisUserDTO, VisUser> {
}
package com.topdraw.business.module.vis.hainan.apple.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import javax.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="vis_user_apple")
public class VisUserApple implements Serializable {
// ID
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
// 所有者ID
@Column(name = "person_id")
private Long personId;
// 用户ID
@Column(name = "vis_user_id")
private Long visUserId;
// 苹果用户ID
@Column(name = "user")
private String user;
@Column(name = "identity_token")
private String identityToken;
@Column(name = "real_user_status")
private String realUserStatus;
@Column(name = "authorized_scopes")
private String authorizedScopes;
@Column(name = "authorization_code")
private String authorizationCode;
// 状态 0-失效 1-有效
@Column(name = "status")
private Integer status;
// 全名
@Column(name = "full_name")
private String fullName;
// E-main
@Column(name = "email")
private String email;
// 昵称
@Column(name = "nickname")
private String nickname;
// 性别
@Column(name = "sex")
private Integer sex;
// 国家
@Column(name = "country")
private String country;
// 省份
@Column(name = "province")
private String province;
// 城市
@Column(name = "city")
private String city;
// 头像地址
@Column(name = "icon")
private String icon;
// 描述
@Column(name = "description")
private String description;
// 创建时间
@CreatedDate
@Column(name = "create_time")
private Timestamp createTime;
// 更新时间
@LastModifiedDate
@Column(name = "update_time")
private Timestamp updateTime;
public void copy(VisUserApple source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}
package com.topdraw.business.module.vis.hainan.apple.repository;
import com.topdraw.business.module.vis.hainan.apple.domain.VisUserApple;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @author XiangHan
* @date 2022-07-14
*/
public interface VisUserAppleRepository extends JpaRepository<VisUserApple, Long>, JpaSpecificationExecutor<VisUserApple> {
}
package com.topdraw.business.module.vis.hainan.apple.service;
import com.topdraw.business.module.vis.hainan.apple.domain.VisUserApple;
import com.topdraw.business.module.vis.hainan.apple.service.dto.VisUserAppleDTO;
/**
* @author XiangHan
* @date 2022-07-14
*/
public interface VisUserAppleService {
/**
* 根据ID查询
* @param id ID
* @return VisUserAppleDTO
*/
VisUserAppleDTO findById(Long id);
void create(VisUserApple resources);
void update(VisUserApple resources);
void delete(Long id);
}
package com.topdraw.business.module.vis.hainan.apple.service.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Data
public class VisUserAppleDTO implements Serializable {
// ID
private Long id;
// 所有者ID
private Long personId;
// 用户ID
private Long visUserId;
// 苹果用户ID
private String user;
private String identityToken;
private String realUserStatus;
private String authorizedScopes;
private String authorizationCode;
// 状态 0-失效 1-有效
private Integer status;
// 全名
private String fullName;
// E-main
private String email;
// 昵称
private String nickname;
// 性别
private Integer sex;
// 国家
private String country;
// 省份
private String province;
// 城市
private String city;
// 头像地址
private String icon;
// 描述
private String description;
// 创建时间
private Timestamp createTime;
// 更新时间
private Timestamp updateTime;
}
package com.topdraw.business.module.vis.hainan.apple.service.dto;
import lombok.Data;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Data
public class VisUserAppleQueryCriteria{
}
package com.topdraw.business.module.vis.hainan.apple.service.impl;
import com.topdraw.business.module.vis.hainan.apple.domain.VisUserApple;
import com.topdraw.business.module.vis.hainan.apple.repository.VisUserAppleRepository;
import com.topdraw.business.module.vis.hainan.apple.service.VisUserAppleService;
import com.topdraw.business.module.vis.hainan.apple.service.dto.VisUserAppleDTO;
import com.topdraw.business.module.vis.hainan.apple.service.mapper.VisUserAppleMapper;
import com.topdraw.utils.ValidationUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.util.Assert;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class VisUserAppleServiceImpl implements VisUserAppleService {
@Autowired
private VisUserAppleRepository visUserAppleRepository;
@Autowired
private VisUserAppleMapper visUserAppleMapper;
@Override
public VisUserAppleDTO findById(Long id) {
VisUserApple visUserApple = visUserAppleRepository.findById(id).orElseGet(VisUserApple::new);
ValidationUtil.isNull(visUserApple.getId(),"VisUserApple","id",id);
return visUserAppleMapper.toDto(visUserApple);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(VisUserApple resources) {
visUserAppleRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(VisUserApple resources) {
VisUserApple visUserApple = visUserAppleRepository.findById(resources.getId()).orElseGet(VisUserApple::new);
ValidationUtil.isNull( visUserApple.getId(),"VisUserApple","id",resources.getId());
visUserApple.copy(resources);
visUserAppleRepository.save(visUserApple);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
VisUserApple visUserApple = visUserAppleRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", VisUserApple.class, id), 1));
visUserAppleRepository.delete(visUserApple);
}
}
package com.topdraw.business.module.vis.hainan.apple.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.module.vis.hainan.apple.domain.VisUserApple;
import com.topdraw.business.module.vis.hainan.apple.service.dto.VisUserAppleDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface VisUserAppleMapper extends BaseMapper<VisUserAppleDTO, VisUserApple> {
}
package com.topdraw.business.module.vis.hainan.qq.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import javax.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="vis_user_qq")
public class VisUserQq implements Serializable {
@Transient
private String username;
@Transient
private Integer type;
// ID
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
// 所有者ID
@Column(name = "person_id")
private Long personId;
// 用户ID
@Column(name = "vis_user_id")
private Long visUserId;
// QQunionid,针对开发者
@Column(name = "unionid")
private String unionid;
// QQappid
@Column(name = "app_id")
private String appId;
// QQopenid
@Column(name = "openid")
private String openid;
// QQuserid
@Column(name = "user_id")
private String userId;
// 状态 0-失效 1-有效
@Column(name = "status")
private Integer status;
// 昵称
@Column(name = "nickname")
private String nickname;
// 性别
@Column(name = "sex")
private Integer sex;
// 国家
@Column(name = "country")
private String country;
// 省份
@Column(name = "province")
private String province;
// 城市
@Column(name = "city")
private String city;
// 头像地址
@Column(name = "icon")
private String icon;
@Column(name = "pay_token")
private String payToken;
@Column(name = "secretType")
private String secretType;
@Column(name = "secret")
private String secret;
@Column(name = "pfkey")
private String pfkey;
@Column(name = "pf")
private String pf;
// access_token
@Column(name = "access_token")
private String accessToken;
// expires_in
@Column(name = "expires_in")
private Integer expiresIn;
// expires_time
@Column(name = "expires_time")
private Timestamp expiresTime;
// 描述
@Column(name = "description")
private String description;
// 创建时间
@CreatedDate
@Column(name = "create_time")
private Timestamp createTime;
// 更新时间
@LastModifiedDate
@Column(name = "update_time")
private Timestamp updateTime;
public void copy(VisUserQq source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}
package com.topdraw.business.module.vis.hainan.qq.repository;
import com.topdraw.business.module.vis.hainan.qq.domain.VisUserQq;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @author XiangHan
* @date 2022-07-14
*/
public interface VisUserQqRepository extends JpaRepository<VisUserQq, Long>, JpaSpecificationExecutor<VisUserQq> {
}
package com.topdraw.business.module.vis.hainan.qq.service;
import com.topdraw.business.module.vis.hainan.qq.domain.VisUserQq;
import com.topdraw.business.module.vis.hainan.qq.service.dto.VisUserQqDTO;
/**
* @author XiangHan
* @date 2022-07-14
*/
public interface VisUserQqService {
/**
* 根据ID查询
* @param id ID
* @return VisUserQqDTO
*/
VisUserQqDTO findById(Long id);
void create(VisUserQq resources);
void update(VisUserQq resources);
void delete(Long id);
VisUserQqDTO findByOpenid(String account);
}
package com.topdraw.business.module.vis.hainan.qq.service.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Data
public class VisUserQqDTO implements Serializable {
// ID
private Long id;
// 所有者ID
private Long personId;
// 用户ID
private Long visUserId;
// QQunionid,针对开发者
private String unionid;
// QQappid
private String appId;
// QQopenid
private String openid;
// QQuserid
private String userId;
// 状态 0-失效 1-有效
private Integer status;
// 昵称
private String nickname;
// 性别
private Integer sex;
// 国家
private String country;
// 省份
private String province;
// 城市
private String city;
// 头像地址
private String icon;
private String payToken;
private String secretType;
private String secret;
private String pfkey;
private String pf;
// access_token
private String accessToken;
// expires_in
private Integer expiresIn;
// expires_time
private Timestamp expiresTime;
// 描述
private String description;
// 创建时间
private Timestamp createTime;
// 更新时间
private Timestamp updateTime;
}
package com.topdraw.business.module.vis.hainan.qq.service.impl;
import com.topdraw.business.module.vis.hainan.qq.domain.VisUserQq;
import com.topdraw.business.module.vis.hainan.qq.repository.VisUserQqRepository;
import com.topdraw.business.module.vis.hainan.qq.service.VisUserQqService;
import com.topdraw.business.module.vis.hainan.qq.service.dto.VisUserQqDTO;
import com.topdraw.business.module.vis.hainan.qq.service.mapper.VisUserQqMapper;
import com.topdraw.utils.ValidationUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.util.Assert;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class VisUserQqServiceImpl implements VisUserQqService {
@Autowired
private VisUserQqRepository visUserQqRepository;
@Autowired
private VisUserQqMapper visUserQqMapper;
@Override
public VisUserQqDTO findById(Long id) {
VisUserQq visUserQq = visUserQqRepository.findById(id).orElseGet(VisUserQq::new);
ValidationUtil.isNull(visUserQq.getId(),"VisUserQq","id",id);
return visUserQqMapper.toDto(visUserQq);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(VisUserQq resources) {
visUserQqRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(VisUserQq resources) {
VisUserQq visUserQq = visUserQqRepository.findById(resources.getId()).orElseGet(VisUserQq::new);
ValidationUtil.isNull( visUserQq.getId(),"VisUserQq","id",resources.getId());
visUserQq.copy(resources);
visUserQqRepository.save(visUserQq);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
VisUserQq visUserQq = visUserQqRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", VisUserQq.class, id), 1));
visUserQqRepository.delete(visUserQq);
}
@Override
public VisUserQqDTO findByOpenid(String account) {
return null;
}
}
package com.topdraw.business.module.vis.hainan.qq.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.module.vis.hainan.qq.domain.VisUserQq;
import com.topdraw.business.module.vis.hainan.qq.service.dto.VisUserQqDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface VisUserQqMapper extends BaseMapper<VisUserQqDTO, VisUserQq> {
}
package com.topdraw.business.module.vis.hainan.weibo.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import javax.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="vis_user_weibo")
public class VisUserWeibo implements Serializable {
@Transient
private String username;
@Transient
private Integer type;
// ID
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
// 所有者ID
@Column(name = "person_id")
private Long personId;
// 用户ID
@Column(name = "vis_user_id")
private Long visUserId;
// 微博appid
@Column(name = "app_id")
private String appId;
// 微博用户ID
@Column(name = "user_id")
private String userId;
// 状态 0-失效 1-有效
@Column(name = "status")
private Integer status;
// 昵称
@Column(name = "nickname")
private String nickname;
// 性别
@Column(name = "sex")
private Integer sex;
// 国家
@Column(name = "country")
private String country;
// 省份
@Column(name = "province")
private String province;
// 城市
@Column(name = "city")
private String city;
// 头像地址
@Column(name = "icon")
private String icon;
// secretType
@Column(name = "secretType")
private String secretType;
// secret
@Column(name = "secret")
private String secret;
// snsregat
@Column(name = "snsregat")
private String snsregat;
// snsUserUrl
@Column(name = "snsUserUrl")
private String snsUserUrl;
// shareCount
@Column(name = "shareCount")
private String shareCount;
// followerCount
@Column(name = "followerCount")
private String followerCount;
// refresh_token
@Column(name = "refresh_token")
private String refreshToken;
// access_token
@Column(name = "access_token")
private String accessToken;
// expires_in
@Column(name = "expires_in")
private Long expiresIn;
// expires_time
@Column(name = "expires_time")
private Timestamp expiresTime;
// 描述
@Column(name = "description")
private String description;
// 创建时间
@CreatedDate
@Column(name = "create_time")
private Timestamp createTime;
// 更新时间
@LastModifiedDate
@Column(name = "update_time")
private Timestamp updateTime;
public void copy(VisUserWeibo source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}
package com.topdraw.business.module.vis.hainan.weibo.repository;
import com.topdraw.business.module.vis.hainan.weibo.domain.VisUserWeibo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* @author XiangHan
* @date 2022-07-14
*/
public interface VisUserWeiboRepository extends JpaRepository<VisUserWeibo, Long>, JpaSpecificationExecutor<VisUserWeibo> {
}
package com.topdraw.business.module.vis.hainan.weibo.service;
import com.topdraw.business.module.vis.hainan.weibo.domain.VisUserWeibo;
import com.topdraw.business.module.vis.hainan.weibo.service.dto.VisUserWeiboDTO;
/**
* @author XiangHan
* @date 2022-07-14
*/
public interface VisUserWeiboService {
/**
* 根据ID查询
* @param id ID
* @return VisUserWeiboDTO
*/
VisUserWeiboDTO findById(Long id);
void create(VisUserWeibo resources);
void update(VisUserWeibo resources);
void delete(Long id);
VisUserWeiboDTO findByUserid(String account);
}
package com.topdraw.business.module.vis.hainan.weibo.service.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Data
public class VisUserWeiboDTO implements Serializable {
// ID
private Long id;
// 所有者ID
private Long personId;
// 用户ID
private Long visUserId;
// 微博appid
private String appId;
// 微博用户ID
private String userId;
// 状态 0-失效 1-有效
private Integer status;
// 昵称
private String nickname;
// 性别
private Integer sex;
// 国家
private String country;
// 省份
private String province;
// 城市
private String city;
// 头像地址
private String icon;
// secretType
private String secretType;
// secret
private String secret;
// snsregat
private String snsregat;
// snsUserUrl
private String snsUserUrl;
// shareCount
private String shareCount;
// followerCount
private String followerCount;
// refresh_token
private String refreshToken;
// access_token
private String accessToken;
// expires_in
private Long expiresIn;
// expires_time
private Timestamp expiresTime;
// 描述
private String description;
// 创建时间
private Timestamp createTime;
// 更新时间
private Timestamp updateTime;
}
package com.topdraw.business.module.vis.hainan.weibo.service.impl;
import com.topdraw.business.module.vis.hainan.weibo.domain.VisUserWeibo;
import com.topdraw.business.module.vis.hainan.weibo.repository.VisUserWeiboRepository;
import com.topdraw.business.module.vis.hainan.weibo.service.VisUserWeiboService;
import com.topdraw.business.module.vis.hainan.weibo.service.dto.VisUserWeiboDTO;
import com.topdraw.business.module.vis.hainan.weibo.service.mapper.VisUserWeiboMapper;
import com.topdraw.utils.ValidationUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.util.Assert;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class VisUserWeiboServiceImpl implements VisUserWeiboService {
@Autowired
private VisUserWeiboRepository visUserWeiboRepository;
@Autowired
private VisUserWeiboMapper visUserWeiboMapper;
@Override
public VisUserWeiboDTO findById(Long id) {
VisUserWeibo visUserWeibo = visUserWeiboRepository.findById(id).orElseGet(VisUserWeibo::new);
ValidationUtil.isNull(visUserWeibo.getId(),"VisUserWeibo","id",id);
return visUserWeiboMapper.toDto(visUserWeibo);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(VisUserWeibo resources) {
visUserWeiboRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(VisUserWeibo resources) {
VisUserWeibo visUserWeibo = visUserWeiboRepository.findById(resources.getId()).orElseGet(VisUserWeibo::new);
ValidationUtil.isNull( visUserWeibo.getId(),"VisUserWeibo","id",resources.getId());
visUserWeibo.copy(resources);
visUserWeiboRepository.save(visUserWeibo);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
VisUserWeibo visUserWeibo = visUserWeiboRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", VisUserWeibo.class, id), 1));
visUserWeiboRepository.delete(visUserWeibo);
}
@Override
public VisUserWeiboDTO findByUserid(String account) {
return null;
}
}
package com.topdraw.business.module.vis.hainan.weibo.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.module.vis.hainan.weibo.domain.VisUserWeibo;
import com.topdraw.business.module.vis.hainan.weibo.service.dto.VisUserWeiboDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface VisUserWeiboMapper extends BaseMapper<VisUserWeiboDTO, VisUserWeibo> {
}
package com.topdraw.business.module.vis.hainan.weixin.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import javax.persistence.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
@Accessors(chain = true)
@Table(name="vis_user_weixin")
public class VisUserWeixin implements Serializable {
@Transient
private String username;
@Transient
private Integer type;
// ID
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
// 所有者ID
@Column(name = "person_id")
private Long personId;
// 用户ID
@Column(name = "vis_user_id")
private Long visUserId;
// 微信unionid,针对开发者
@Column(name = "unionid")
private String unionid;
// 微信appid
@Column(name = "appid")
private String appid;
// 微信appid
@Column(name = "app_id")
private String appId;
// 微信openid,针对微信app
@Column(name = "openid")
private String openid;
// 状态 0-失效 1-有效
@Column(name = "status")
private Integer status;
// 昵称
@Column(name = "nickname")
private String nickname;
// 性别
@Column(name = "sex")
private Integer sex;
// 国家
@Column(name = "country")
private String country;
// 省份
@Column(name = "province")
private String province;
// 城市
@Column(name = "city")
private String city;
// 头像地址
@Column(name = "headimgurl")
private String headimgurl;
// 特权信息
@Column(name = "privilege")
private String privilege;
// refresh_token
@Column(name = "refresh_token")
private String refreshToken;
// access_token
@Column(name = "access_token")
private String accessToken;
// expires_in
@Column(name = "expires_in")
private Integer expiresIn;
// expires_time
@Column(name = "expires_time")
private Timestamp expiresTime;
// 描述
@Column(name = "description")
private String description;
// 创建时间
@CreatedDate
@Column(name = "create_time")
private Timestamp createTime;
// 更新时间
@LastModifiedDate
@Column(name = "update_time")
private Timestamp updateTime;
public void copy(VisUserWeixin source){
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
}
}
package com.topdraw.business.module.vis.hainan.weixin.repository;
import com.topdraw.business.module.vis.hainan.weixin.domain.VisUserWeixin;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.Optional;
/**
* @author XiangHan
* @date 2022-07-14
*/
public interface VisUserWeixinRepository extends JpaRepository<VisUserWeixin, Long>, JpaSpecificationExecutor<VisUserWeixin> {
Optional<VisUserWeixin> findByOpenid(String account);
}
package com.topdraw.business.module.vis.hainan.weixin.service;
import com.topdraw.business.module.vis.hainan.weixin.domain.VisUserWeixin;
import com.topdraw.business.module.vis.hainan.weixin.service.dto.VisUserWeixinDTO;
/**
* @author XiangHan
* @date 2022-07-14
*/
public interface VisUserWeixinService {
/**
* 根据ID查询
* @param id ID
* @return VisUserWeixinDTO
*/
VisUserWeixinDTO findById(Long id);
void create(VisUserWeixin resources);
void update(VisUserWeixin resources);
void delete(Long id);
VisUserWeixinDTO findByOpenid(String account);
}
package com.topdraw.business.module.vis.hainan.weixin.service.dto;
import lombok.Data;
import java.sql.Timestamp;
import java.io.Serializable;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Data
public class VisUserWeixinDTO implements Serializable {
// ID
private Long id;
// 所有者ID
private Long personId;
// 用户ID
private Long visUserId;
// 微信unionid,针对开发者
private String unionid;
// 微信appid
private String appid;
// 微信appid
private String appId;
// 微信openid,针对微信app
private String openid;
// 状态 0-失效 1-有效
private Integer status;
// 昵称
private String nickname;
// 性别
private Integer sex;
// 国家
private String country;
// 省份
private String province;
// 城市
private String city;
// 头像地址
private String headimgurl;
// 特权信息
private String privilege;
// refresh_token
private String refreshToken;
// access_token
private String accessToken;
// expires_in
private Integer expiresIn;
// expires_time
private Timestamp expiresTime;
// 描述
private String description;
// 创建时间
private Timestamp createTime;
// 更新时间
private Timestamp updateTime;
}
package com.topdraw.business.module.vis.hainan.weixin.service.impl;
import com.topdraw.business.module.vis.hainan.weixin.domain.VisUserWeixin;
import com.topdraw.business.module.vis.hainan.weixin.repository.VisUserWeixinRepository;
import com.topdraw.business.module.vis.hainan.weixin.service.VisUserWeixinService;
import com.topdraw.business.module.vis.hainan.weixin.service.dto.VisUserWeixinDTO;
import com.topdraw.business.module.vis.hainan.weixin.service.mapper.VisUserWeixinMapper;
import com.topdraw.utils.ValidationUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.util.Assert;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class VisUserWeixinServiceImpl implements VisUserWeixinService {
@Autowired
private VisUserWeixinRepository visUserWeixinRepository;
@Autowired
private VisUserWeixinMapper visUserWeixinMapper;
@Override
public VisUserWeixinDTO findById(Long id) {
VisUserWeixin visUserWeixin = visUserWeixinRepository.findById(id).orElseGet(VisUserWeixin::new);
ValidationUtil.isNull(visUserWeixin.getId(),"VisUserWeixin","id",id);
return visUserWeixinMapper.toDto(visUserWeixin);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(VisUserWeixin resources) {
visUserWeixinRepository.save(resources);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(VisUserWeixin resources) {
VisUserWeixin visUserWeixin = visUserWeixinRepository.findById(resources.getId()).orElseGet(VisUserWeixin::new);
ValidationUtil.isNull( visUserWeixin.getId(),"VisUserWeixin","id",resources.getId());
visUserWeixin.copy(resources);
visUserWeixinRepository.save(visUserWeixin);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(Long id) {
Assert.notNull(id, "The given id must not be null!");
VisUserWeixin visUserWeixin = visUserWeixinRepository.findById(id).orElseThrow(
() -> new EmptyResultDataAccessException(String.format("No %s entity " + "with id %s " + "exists!", VisUserWeixin.class, id), 1));
visUserWeixinRepository.delete(visUserWeixin);
}
@Override
public VisUserWeixinDTO findByOpenid(String account) {
VisUserWeixin visUserWeixin = visUserWeixinRepository.findByOpenid(account).orElseGet(VisUserWeixin::new);
return visUserWeixinMapper.toDto(visUserWeixin);
}
}
package com.topdraw.business.module.vis.hainan.weixin.service.mapper;
import com.topdraw.base.BaseMapper;
import com.topdraw.business.module.vis.hainan.weixin.domain.VisUserWeixin;
import com.topdraw.business.module.vis.hainan.weixin.service.dto.VisUserWeixinDTO;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
/**
* @author XiangHan
* @date 2022-07-14
*/
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface VisUserWeixinMapper extends BaseMapper<VisUserWeixinDTO, VisUserWeixin> {
}
......@@ -5,7 +5,7 @@ spring:
# url: jdbc:log4jdbc:mysql://122.112.214.149:3306/tj_user_admin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
# username: root
# password: root
url: jdbc:log4jdbc:mysql://139.196.145.150:3306/ucs_admin_chongshu?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
url: jdbc:log4jdbc:mysql://139.196.145.150:3306/ucs_stage_admin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
username: root
password: Tjlh@2021
......