From 52358cd76aee8d5f7edc54e177b6eab0d1f58533 Mon Sep 17 00:00:00 2001
From: zhujie <leon.zhu@cloudroam.com.cn>
Date: 星期五, 11 四月 2025 17:31:06 +0800
Subject: [PATCH] 邀请功能
---
src/main/java/com/mzl/flower/service/customer/CustomerCenterService.java | 21 ++++
src/main/java/com/mzl/flower/dto/request/customer/UpdateCustomerDTO.java | 7 +
src/main/java/com/mzl/flower/dto/request/UserPhoneLoginDTO.java | 3
src/main/java/com/mzl/flower/dto/response/customer/InviteRewardDTO.java | 12 ++
src/main/java/com/mzl/flower/service/customer/CustomerService.java | 21 ++++
src/main/java/com/mzl/flower/config/ResourceServerConfig.java | 1
src/main/java/com/mzl/flower/web/login/CustomerLoginController.java | 3
src/main/java/com/mzl/flower/dto/response/customer/InviteDTO.java | 12 ++
src/main/java/com/mzl/flower/mapper/customer/CustomerMapper.java | 11 ++
src/main/resources/mapper/customer/CustomerMapper.xml | 2
src/main/java/com/mzl/flower/entity/customer/Customer.java | 4
src/main/java/com/mzl/flower/service/system/UserService.java | 165 +++++++++++++++++++++-----------
src/main/java/com/mzl/flower/web/customer/CustomerCenterController.java | 6 +
13 files changed, 209 insertions(+), 59 deletions(-)
diff --git a/src/main/java/com/mzl/flower/config/ResourceServerConfig.java b/src/main/java/com/mzl/flower/config/ResourceServerConfig.java
index 0f1ae5f..dc560c6 100644
--- a/src/main/java/com/mzl/flower/config/ResourceServerConfig.java
+++ b/src/main/java/com/mzl/flower/config/ResourceServerConfig.java
@@ -65,6 +65,7 @@
.antMatchers("/api/v2/coupon/app/home/alert").permitAll()
.antMatchers("/v2/config-param/base/info").permitAll()
.antMatchers("/api/supplier/**").permitAll()
+ .antMatchers("/api/customer/center").permitAll()
.antMatchers("/api/**").authenticated();//配置访问控制,必须认证过后才可以访问
}
diff --git a/src/main/java/com/mzl/flower/dto/request/UserPhoneLoginDTO.java b/src/main/java/com/mzl/flower/dto/request/UserPhoneLoginDTO.java
index 9464958..e199a9d 100644
--- a/src/main/java/com/mzl/flower/dto/request/UserPhoneLoginDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/UserPhoneLoginDTO.java
@@ -12,6 +12,9 @@
@ApiModelProperty(value = "短信验证码")
private String smsCode;
+ @ApiModelProperty(value = "邀请码")
+ private String intevailCode;
+
@ApiModelProperty(value = "用户类型")
private String userType;
diff --git a/src/main/java/com/mzl/flower/dto/request/customer/UpdateCustomerDTO.java b/src/main/java/com/mzl/flower/dto/request/customer/UpdateCustomerDTO.java
index bc0509e..c537eaf 100644
--- a/src/main/java/com/mzl/flower/dto/request/customer/UpdateCustomerDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/customer/UpdateCustomerDTO.java
@@ -4,6 +4,7 @@
import lombok.Data;
import javax.validation.constraints.NotBlank;
+import java.time.LocalDateTime;
@Data
public class UpdateCustomerDTO {
@@ -41,6 +42,12 @@
@ApiModelProperty("是否会员")
private Boolean isMember;
+ @ApiModelProperty("会员到期时间")
+ private LocalDateTime memberOvertime;
+
+ @ApiModelProperty("注册邀请码")
+ private String regesterCode;
+
}
diff --git a/src/main/java/com/mzl/flower/dto/response/customer/InviteDTO.java b/src/main/java/com/mzl/flower/dto/response/customer/InviteDTO.java
new file mode 100644
index 0000000..b823e96
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/customer/InviteDTO.java
@@ -0,0 +1,12 @@
+package com.mzl.flower.dto.response.customer;
+
+import lombok.Data;
+
+@Data
+public class InviteDTO {
+
+ private String userId ;
+ private String userName ;
+
+ private String reward;
+}
\ No newline at end of file
diff --git a/src/main/java/com/mzl/flower/dto/response/customer/InviteRewardDTO.java b/src/main/java/com/mzl/flower/dto/response/customer/InviteRewardDTO.java
new file mode 100644
index 0000000..10f74cd
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/customer/InviteRewardDTO.java
@@ -0,0 +1,12 @@
+package com.mzl.flower.dto.response.customer;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class InviteRewardDTO {
+ private List<InviteDTO> successInvite;
+
+ private List<InviteDTO> myInvite;
+}
diff --git a/src/main/java/com/mzl/flower/entity/customer/Customer.java b/src/main/java/com/mzl/flower/entity/customer/Customer.java
index e59773e..1da4a4d 100644
--- a/src/main/java/com/mzl/flower/entity/customer/Customer.java
+++ b/src/main/java/com/mzl/flower/entity/customer/Customer.java
@@ -52,4 +52,8 @@
private LocalDateTime memberOvertime;
@ApiModelProperty("是否会员")
private Boolean isMember;
+ @ApiModelProperty("我的邀请码")
+ private String intervialcode;
+ @ApiModelProperty("注册邀请码")
+ private String reintervialcode;
}
diff --git a/src/main/java/com/mzl/flower/mapper/customer/CustomerMapper.java b/src/main/java/com/mzl/flower/mapper/customer/CustomerMapper.java
index c1f8002..2a1ee52 100644
--- a/src/main/java/com/mzl/flower/mapper/customer/CustomerMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/customer/CustomerMapper.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzl.flower.dto.request.customer.QueryCustomerDTO;
import com.mzl.flower.dto.response.customer.CustomerDTO;
+import com.mzl.flower.dto.response.customer.InviteDTO;
import com.mzl.flower.dto.response.supplier.SupplierDTO;
import com.mzl.flower.entity.customer.Customer;
import org.apache.ibatis.annotations.Param;
@@ -42,5 +43,15 @@
@Select("select * from t_customer_info where user_id = ( select id from t_user where tel =#{phone} and type = 'customer')")
CustomerDTO findCustomerByPhone(String phone);
+ @Select("select * from t_customer_info where intervialcode =#{code}")
+ Customer findCustomerByInvitationCode(@Param("code") String code);
+
+ @Select("select count(1) from t_customer_info where reintervialcode = #{code}")
+ Integer getInvitatCountByCode(@Param("code") String code);
+
+ @Select("select user_id as userId,name as userName,t1.reward from t_customer_info c" +
+ "inner join (select reintervialcode,count(DISTINCT id) as reward from t_customer_info where reintervialcode is not null and reintervialcode <> '' group by reintervialcode) t1 on c.intervialcode=t1.reintervialcode")
+ List<InviteDTO> getReward();
+
void checkVipExpireTime();
}
diff --git a/src/main/java/com/mzl/flower/service/customer/CustomerCenterService.java b/src/main/java/com/mzl/flower/service/customer/CustomerCenterService.java
index e161096..d53a2f0 100644
--- a/src/main/java/com/mzl/flower/service/customer/CustomerCenterService.java
+++ b/src/main/java/com/mzl/flower/service/customer/CustomerCenterService.java
@@ -1,16 +1,23 @@
package com.mzl.flower.service.customer;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.mzl.flower.config.security.SecurityUtils;
import com.mzl.flower.dto.response.customer.CustomerTjDTO;
+import com.mzl.flower.dto.response.customer.InviteDTO;
+import com.mzl.flower.dto.response.customer.InviteRewardDTO;
import com.mzl.flower.entity.customer.BrowseHistory;
import com.mzl.flower.entity.customer.Collect;
import com.mzl.flower.entity.customer.Follow;
import com.mzl.flower.mapper.customer.BrowseHistoryMapper;
import com.mzl.flower.mapper.customer.CollectMapper;
+import com.mzl.flower.mapper.customer.CustomerMapper;
import com.mzl.flower.mapper.customer.FollowMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
@Service
@Transactional
@@ -20,11 +27,13 @@
private final FollowMapper followMapper;
private final CollectMapper collectMapper;
private final BrowseHistoryMapper browseHistoryMapper;
+ private final CustomerMapper customerMapper;
- public CustomerCenterService(FollowMapper followMapper, CollectMapper collectMapper, BrowseHistoryMapper browseHistoryMapper) {
+ public CustomerCenterService(FollowMapper followMapper, CollectMapper collectMapper, BrowseHistoryMapper browseHistoryMapper, CustomerMapper customerMapper) {
this.followMapper = followMapper;
this.collectMapper = collectMapper;
this.browseHistoryMapper = browseHistoryMapper;
+ this.customerMapper = customerMapper;
}
@@ -35,4 +44,14 @@
dto.setBrowseNum(browseHistoryMapper.selectCount(new LambdaQueryWrapper<BrowseHistory>().eq(BrowseHistory::getUserId, userId)));
return dto;
}
+
+ //获取所有的邀请记录和当前登陆人的邀请记录
+ public InviteRewardDTO customerReward() {
+ InviteRewardDTO rewardto = new InviteRewardDTO();
+ List<InviteDTO> reward = customerMapper.getReward();
+ rewardto.setSuccessInvite(reward);
+ List<InviteDTO> myreward = reward.stream().filter(s->s!=null&&s.getUserId()== SecurityUtils.getUserId()).collect(Collectors.toList());;
+ rewardto.setMyInvite(myreward);
+ return rewardto;
+ }
}
diff --git a/src/main/java/com/mzl/flower/service/customer/CustomerService.java b/src/main/java/com/mzl/flower/service/customer/CustomerService.java
index 1331f6e..401be19 100644
--- a/src/main/java/com/mzl/flower/service/customer/CustomerService.java
+++ b/src/main/java/com/mzl/flower/service/customer/CustomerService.java
@@ -33,6 +33,7 @@
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
+import java.util.Random;
@Service
@Transactional
@@ -48,6 +49,10 @@
@Resource
private BaseService baseService;
+
+ private static final String CHARACTERS = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
+
+ private final Random random = new Random();
public CustomerService(CustomerMapper customerMapper, PartnerMapper partnerMapper) {
this.customerMapper = customerMapper;
@@ -88,6 +93,8 @@
customer.create(SecurityUtils.getUserId());
customer.setIsEnabled(true);
+ customer.setIntervialcode(generateCode());
+ customer.setReintervialcode(dto.getRegesterCode());
customer.setLevelId(Long.valueOf(Constants.DEFAULT_MEMBER_ID));
customerMapper.insert(customer);
} else {//重新修改
@@ -133,6 +140,11 @@
private boolean checkExist(String userId) {
return customerMapper.selectCount(new LambdaQueryWrapper<Customer>().eq(Customer::getUserId, userId)) > 0;
+ }
+
+ //验证邀请码是否有效
+ public boolean checkCode(String code) {
+ return customerMapper.findCustomerByInvitationCode(code) == null;
}
public Page<CustomerDTO> queryCustomer(QueryCustomerDTO dto, Page page) {
@@ -281,4 +293,13 @@
// 获取当天日期之前,且is_member=1的用户,设置为is_member=0并且将member_overtime设置为null
customerMapper.checkVipExpireTime();
}
+
+ //生成邀请码
+ private String generateCode() {
+ StringBuilder sb = new StringBuilder(4);
+ for (int i = 0; i < 4; i++) {
+ sb.append(CHARACTERS.charAt(random.nextInt(CHARACTERS.length())));
+ }
+ return sb.toString();
+ }
}
diff --git a/src/main/java/com/mzl/flower/service/system/UserService.java b/src/main/java/com/mzl/flower/service/system/UserService.java
index 3d25276..502000a 100644
--- a/src/main/java/com/mzl/flower/service/system/UserService.java
+++ b/src/main/java/com/mzl/flower/service/system/UserService.java
@@ -13,10 +13,13 @@
import com.mzl.flower.dto.request.customer.UpdateCustomerDTO;
import com.mzl.flower.dto.request.system.*;
import com.mzl.flower.dto.response.current.CurrentUserDTO;
+import com.mzl.flower.dto.response.customer.CustomerDTO;
import com.mzl.flower.dto.response.system.*;
+import com.mzl.flower.entity.customer.Customer;
import com.mzl.flower.entity.point.CustomerPoint;
import com.mzl.flower.entity.system.*;
import com.mzl.flower.enums.TrueOrFalseEnum;
+import com.mzl.flower.mapper.customer.CustomerMapper;
import com.mzl.flower.mapper.point.CustomerPointMapper;
import com.mzl.flower.mapper.system.*;
import com.mzl.flower.service.customer.CustomerService;
@@ -40,6 +43,7 @@
import org.springframework.util.ObjectUtils;
import javax.validation.constraints.NotBlank;
+import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -88,6 +92,10 @@
@Autowired
private CustomerPointMapper customerPointMapper;
+
+ @Autowired
+ private CustomerMapper customerMapper;
+
@Autowired
private StationService stationService;
@@ -95,14 +103,14 @@
RedissonClient redissonClient;
public User findUserByOpenId(String openId, String sessionKey, String unionId
- , String imgUrl, String nickname,String userType){
+ , String imgUrl, String nickname, String userType) {
List<String> userTypes = new ArrayList<>();
userTypes.add(userType);
- List<User> userList = userMapper.getByOpenID(openId,userTypes);
- if(CollectionUtils.isEmpty(userList)){
+ List<User> userList = userMapper.getByOpenID(openId, userTypes);
+ if (CollectionUtils.isEmpty(userList)) {
throw new ValidationException("请注册账号后至\"个人中心-绑定微信\"后再使用微信登录");
}
- User user=userList.get(0);
+ User user = userList.get(0);
// user.setNickName(nickname);
user.setNickName(user.getLoginName());
user.setPicture(imgUrl);
@@ -110,8 +118,8 @@
userMapper.updateById(user);
UserWechat wechat = wechatMapper.selectOne(new LambdaQueryWrapper<UserWechat>()
.eq(UserWechat::getOpenId, openId)
- .eq(UserWechat::getUserId,user.getId()));
- if(wechat == null){
+ .eq(UserWechat::getUserId, user.getId()));
+ if (wechat == null) {
throw new ValidationException("请至\"个人中心-绑定微信\"后再使用微信登录");
}
wechat.setOpenId(openId);
@@ -125,19 +133,19 @@
// 查看微信是否已经绑定过用户
User user = userMapper.selectById(userId);
- if(ObjectUtils.isEmpty(user)){
+ if (ObjectUtils.isEmpty(user)) {
throw new ValidationException("当前用户不存在");
}
- List<User> userList=wechatMapper.selectUserByOpenId(openId,user.getType());
- if(!CollectionUtils.isEmpty(userList)){
+ List<User> userList = wechatMapper.selectUserByOpenId(openId, user.getType());
+ if (!CollectionUtils.isEmpty(userList)) {
throw new ValidationException("该微信已绑定其他账号");
}
UserWechat wechat = wechatMapper.selectOne(new LambdaQueryWrapper<UserWechat>()
- .eq(UserWechat::getUserId,userId));
- if(wechat == null){
+ .eq(UserWechat::getUserId, userId));
+ if (wechat == null) {
wechat = new UserWechat();
wechat.setId(UUIDGenerator.getUUID());
wechat.setUserId(userId);
@@ -146,7 +154,7 @@
wechat.setSessionKey(sessionKey);
wechat.setRealName(dto.getRealName());
wechatMapper.insert(wechat);
- }else{
+ } else {
wechat.setOpenId(openId);
wechat.setUnionId(unionId);
wechat.setSessionKey(sessionKey);
@@ -158,10 +166,9 @@
}
-
- public User getUserByThirdId(String thirdId){
+ public User getUserByThirdId(String thirdId) {
User u = userMapper.selectOne(new QueryWrapper<User>().eq("third_id", thirdId));
- if(u == null){
+ if (u == null) {
throw new ValidationException("用户不存在");
}
@@ -175,7 +182,7 @@
//获取用户信息
User user = getUserById(userId);
- if(user == null){
+ if (user == null) {
throw new ValidationException("用户不存在");
}
result.setLoginName(user.getLoginName());
@@ -194,16 +201,16 @@
//根据用户角色获取用户菜单
List<MenuTreeDTO> menus = null;
- if(Constants.USER_TYPE.admin.name().equals(user.getType())){
+ if (Constants.USER_TYPE.admin.name().equals(user.getType())) {
if (roleIds.contains(Constants.ROLE_SYS_ADMIN)) {
menus = menuMapper.selectListOrderBySeq();
} else if (roleIds.size() > 0) {
menus = menuMapper.selectOperationList(roleIds);
}
- }else if(Constants.USER_TYPE.partner.name().equals(user.getType())){
+ } else if (Constants.USER_TYPE.partner.name().equals(user.getType())) {
menus = partnerMenuMapper.selectListOrderBySeq();
}
- if(menus != null) {
+ if (menus != null) {
for (MenuTreeDTO menu : menus) {
menu.setPath(menu.getMenuHref());
menu.setName(menu.getMenuName());
@@ -223,22 +230,22 @@
// result.setMenuList(menuList);
result.setId(userId);
- if(Constants.USER_TYPE.customer.name().equals(user.getType())){
+ if (Constants.USER_TYPE.customer.name().equals(user.getType())) {
result.setCustomerDTO(customerService.getCurrentCustomer());
//查询积分
CustomerPoint customerPoint = customerPointMapper.selectOne(new LambdaQueryWrapper<CustomerPoint>()
.eq(CustomerPoint::getUserId, userId));
- if(customerPoint == null){
+ if (customerPoint == null) {
result.setCurrentPoint(0);
- }else{
- Integer currentPoint =customerPoint.getTotalPoint()-customerPoint.getUsedPoint()-customerPoint.getExpiredPoint()-customerPoint.getDeductionPoint();
- result.setCurrentPoint(currentPoint>=0?currentPoint:0);
+ } else {
+ Integer currentPoint = customerPoint.getTotalPoint() - customerPoint.getUsedPoint() - customerPoint.getExpiredPoint() - customerPoint.getDeductionPoint();
+ result.setCurrentPoint(currentPoint >= 0 ? currentPoint : 0);
}
- }else if(Constants.USER_TYPE.supplier.name().equals(user.getType())){
+ } else if (Constants.USER_TYPE.supplier.name().equals(user.getType())) {
result.setSupplierDTO(supplierService.getCurrentSupplier());
- }else if(Constants.USER_TYPE.partner.name().equals(user.getType())){
+ } else if (Constants.USER_TYPE.partner.name().equals(user.getType())) {
result.setPartnerDTO(partnerService.getCurrentPartner());
- }else if (Constants.USER_TYPE.admin.name().equals(user.getType())){
+ } else if (Constants.USER_TYPE.admin.name().equals(user.getType())) {
result.setMainWarehouse(stationService.getMainWarehouse(user.getId()));
}
result.setBindWechat(wechatMapper.selectCount(new LambdaQueryWrapper<UserWechat>()
@@ -247,11 +254,11 @@
return result;
}
- public User getUserById(String id){
+ public User getUserById(String id) {
return userMapper.selectById(id);
}
- public User loginUser(String username){
+ public User loginUser(String username) {
return userMapper.loginUser(username);
}
@@ -259,7 +266,7 @@
return userMapper.getActiveUser(loginName, userTypes);
}
- public void updateUserInfo(UserInfoDTO dto){
+ public void updateUserInfo(UserInfoDTO dto) {
String id = SecurityUtils.getUserId();
User user = getUserById(id);
@@ -269,7 +276,7 @@
String tel = dto.getTel();
if (StringUtils.isEmpty(user.getTel()) || !user.getTel().equals(tel)) {
User u = findByLoginName(tel, userTypes);
- if(u != null){
+ if (u != null) {
throw new ValidationException("手机号已存在");
}
user.setTel(dto.getTel());
@@ -283,6 +290,7 @@
/**
* 新增用户
+ *
* @param dto
* @return
*/
@@ -293,13 +301,13 @@
String tel = dto.getTel();
User u = findByLoginName(tel, userTypes);
- if(u != null){
+ if (u != null) {
throw new ValidationException("手机号已存在");
}
String loginName = dto.getLoginName();
u = findByLoginName(loginName, userTypes);
- if(u != null){
+ if (u != null) {
throw new ValidationException("账号已存在");
}
@@ -316,7 +324,7 @@
addRole(dto.getRoleIds(), user.getId());
//添加或更新员工信息
- addEmployee(dto.getEmployeeDTO(),user.getId());
+ addEmployee(dto.getEmployeeDTO(), user.getId());
return user;
}
@@ -324,12 +332,12 @@
Employee employee = employeeMapper.selectOne(new LambdaQueryWrapper<Employee>().eq(Employee::getUserId, userId));
if (employee == null) {
employee = new Employee();
- BeanUtils.copyProperties(dto,employee);
+ BeanUtils.copyProperties(dto, employee);
employee.setUserId(userId);
employee.create(SecurityUtils.getUserId());
employeeMapper.insert(employee);
- }else {
- BeanUtils.copyProperties(dto,employee);
+ } else {
+ BeanUtils.copyProperties(dto, employee);
employee.setUserId(userId);
employee.update(SecurityUtils.getUserId());
employeeMapper.updateById(employee);
@@ -374,9 +382,9 @@
String roleDesc = userMapper.selectUserRoleDesc(id);
result.setRoleDesc(roleDesc);
Employee employee = employeeMapper.selectOne(new LambdaQueryWrapper<Employee>().eq(Employee::getUserId, id));
- if(employee!=null){
+ if (employee != null) {
EmployeeDTO employeeDTO = new EmployeeDTO();
- BeanUtils.copyProperties(employee,employeeDTO);
+ BeanUtils.copyProperties(employee, employeeDTO);
result.setEmployeeDTO(employeeDTO);
}
}
@@ -385,6 +393,7 @@
/**
* 更新用户
+ *
* @param dto
*/
public void updateUser(UpdateUserDTO dto) {
@@ -395,11 +404,11 @@
user.setPassword(passwordEncoder.encode(dto.getPassword()));
}
- BeanUtils.copyProperties(dto, user,"loginName", "tel", "password", "type");
+ BeanUtils.copyProperties(dto, user, "loginName", "tel", "password", "type");
user.update(SecurityUtils.getUserId());
userMapper.updateById(user);
- if(Constants.USER_TYPE.admin.name().equals(user.getType())) {
+ if (Constants.USER_TYPE.admin.name().equals(user.getType())) {
//删除用户的角色信息
userRoleMapper.delete(new QueryWrapper<UserRole>().eq("user_id", id));
//给用户添加角色
@@ -407,22 +416,22 @@
}
//添加或更新员工信息
- addEmployee(dto.getEmployeeDTO(),user.getId());
+ addEmployee(dto.getEmployeeDTO(), user.getId());
}
- private void checkAndSetUserLoginInfo(User user, String tel, String loginName){
+ private void checkAndSetUserLoginInfo(User user, String tel, String loginName) {
List<String> userTypes = new ArrayList<>();
userTypes.add(user.getType());
if (StringUtils.isEmpty(user.getTel()) || !user.getTel().equals(tel)) {
User u = findByLoginName(tel, userTypes);
- if(u != null){
+ if (u != null) {
throw new ValidationException("手机号已存在");
}
user.setTel(tel);
}
- if(StringUtils.isNotEmpty(loginName)) {
+ if (StringUtils.isNotEmpty(loginName)) {
if (StringUtils.isEmpty(user.getLoginName()) || !user.getLoginName().equals(loginName)) {
User u = findByLoginName(loginName, userTypes);
if (u != null) {
@@ -433,7 +442,7 @@
}
}
- public void deleteUser(String id){
+ public void deleteUser(String id) {
User user = getUserById(id);
user.setDeleted(true);
user.update(SecurityUtils.getUserId());
@@ -447,11 +456,11 @@
userMapper.updateById(user);
}
- public void changePassword(ChangePasswordDTO dto){
+ public void changePassword(ChangePasswordDTO dto) {
String userId = SecurityUtils.getUserId();
User user = getUserById(userId);
- if(StringUtils.isNotBlank(dto.getOldPassword())){
- if(!passwordEncoder.matches(dto.getOldPassword(), user.getPassword())){
+ if (StringUtils.isNotBlank(dto.getOldPassword())) {
+ if (!passwordEncoder.matches(dto.getOldPassword(), user.getPassword())) {
throw new ValidationException("原密码错误,无权修改");
}
}
@@ -461,7 +470,7 @@
userMapper.updateById(user);
}
- public void setUserStatus(String id, String status){
+ public void setUserStatus(String id, String status) {
User user = getUserById(id);
user.setStatus(status);
user.update(SecurityUtils.getUserId());
@@ -505,14 +514,15 @@
public List<User> getVipGradeUserList(String getVipGrade) {
- QueryWrapper<User> queryWrapper=new QueryWrapper<>();
+ QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(User::getDeleted, TrueOrFalseEnum.FALSE.isFlag())
- .eq(User::getVipGrade,getVipGrade);
+ .eq(User::getVipGrade, getVipGrade);
return userMapper.selectList(queryWrapper);
}
/**
* 查看微信是否已经存在用户
+ *
* @param openId
* @param sessionKey
* @param unionId
@@ -522,8 +532,8 @@
public User getExistUserByOpenId(String openId, String sessionKey, String unionId, String userType) {
List<String> userTypes = new ArrayList<>();
userTypes.add(userType);
- List<User> userList = userMapper.getByOpenID(openId,userTypes);
- if(!CollectionUtils.isEmpty(userList)){
+ List<User> userList = userMapper.getByOpenID(openId, userTypes);
+ if (!CollectionUtils.isEmpty(userList)) {
return userList.get(0);
}
return null;
@@ -531,11 +541,11 @@
public void registWxUser(CreateWechatUserDTO dto) {
String RETISTER_KEY = "%s_%s";
- RLock lock = redissonClient.getLock(String.format(RETISTER_KEY,dto.getPurePhoneNumber(),dto.getUserType()));
+ RLock lock = redissonClient.getLock(String.format(RETISTER_KEY, dto.getPurePhoneNumber(), dto.getUserType()));
try {
// 获取锁,最多等待 10 秒,锁自动释放时间 30 秒
if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
- try{
+ try {
// 其次查找当前loginName是prephonenume的,userType是customer的用户存在不存在
if (StringUtils.isEmpty(dto.getPurePhoneNumber()) && StringUtils.isEmpty(dto.getPhoneNumber())) {
throw new ValidationException("微信获取的电话号码为空!无法注册");
@@ -572,7 +582,7 @@
BindWechatDTO wechatDTO = new BindWechatDTO();
wechatDTO.setRealName(dto.getPurePhoneNumber());
bindWechat(user.getId(), dto.getOpenId(), dto.getUnionId(), dto.getSessionKey(), wechatDTO);
- }finally {
+ } finally {
lock.unlock();
}
}
@@ -605,6 +615,10 @@
userTypes.add(dto.getUserType());
User user = findByLoginName(dto.getUsername(), userTypes);
if (ObjectUtils.isEmpty(user)) {
+ //验证邀请码
+ if (StringUtils.isNotEmpty(dto.getIntevailCode()) && customerService.checkCode(dto.getIntevailCode())) {
+ throw new ValidationException("无效邀请码");
+ }
// 是新用户,需要注册
user = new User();
user.setId(UUIDGenerator.getUUID());
@@ -621,6 +635,12 @@
// 注册商户信息
UpdateCustomerDTO updateCustomerDTO = new UpdateCustomerDTO();
updateCustomerDTO.setUserId(user.getId());
+ updateCustomerDTO.setRegesterCode(dto.getIntevailCode());
+ //有效邀请码注册成功后赠送1天会员
+ if (!customerService.checkCode(dto.getIntevailCode())) {
+ updateCustomerDTO.setIsMember(true);
+ updateCustomerDTO.setMemberOvertime(LocalDateTime.now().plusDays(1));
+ }
if (StringUtils.isNotBlank(dto.getUsername())) {
updateCustomerDTO.setName("智信-" + dto.getUsername().substring(dto.getUsername().length() - 4));
@@ -628,6 +648,8 @@
updateCustomerDTO.setCover("https://hmy-flower.oss-cn-shanghai.aliyuncs.com/8f/8f205ea4618b4ce48d5bd204ae73f075tmp_f0c47a66148245dc17d74563c5939e764273ba583619664d.jpg");
customerService.addOrUpdateCustomer(updateCustomerDTO);
+ //邀请会员权益
+ intervialUser(dto.getIntevailCode());
return user;
}
} finally {
@@ -640,5 +662,34 @@
return null;
}
+ //邀请成功增加用户权益
+ private void intervialUser(String code) {
+ //按照该邀请码下已有邀请人数做相应的会员有效期增加
+ Integer InvitatCount = customerMapper.getInvitatCountByCode(code);
+ //根据邀请码查找对应的邀请人员
+ //1人-3天,3人-15天,5人-30天
+ Customer customerByCode = customerMapper.findCustomerByInvitationCode(code);
+ if (!ObjectUtils.isEmpty(customerByCode)) {
+ LocalDateTime memberOvertime = customerByCode.getMemberOvertime();
+ if (!customerByCode.getIsMember()) {
+ memberOvertime = LocalDateTime.now();
+ }
+ switch (InvitatCount) {
+ case 1:
+ memberOvertime = memberOvertime.plusDays(3);
+ break;
+ case 3:
+ memberOvertime = memberOvertime.plusDays(15);
+ break;
+ case 5:
+ memberOvertime = memberOvertime.plusDays(30);
+ break;
+ }
+ customerByCode.setIsMember(true);
+ customerByCode.setMemberOvertime(memberOvertime);
+ customerService.updateMemberInfo(customerByCode);
+ }
+ }
+
}
diff --git a/src/main/java/com/mzl/flower/web/customer/CustomerCenterController.java b/src/main/java/com/mzl/flower/web/customer/CustomerCenterController.java
index 54e5181..dbfdcd1 100644
--- a/src/main/java/com/mzl/flower/web/customer/CustomerCenterController.java
+++ b/src/main/java/com/mzl/flower/web/customer/CustomerCenterController.java
@@ -31,4 +31,10 @@
public ResponseEntity<ReturnDataDTO> customerCenterTj() {
return returnData(R.SUCCESS.getCode(),customerCenterService.customerCenterTj(SecurityUtils.getUserId()));
}
+
+ @GetMapping("/invitereward")
+ @ApiOperation(value = "邀请记录", notes = "邀请记录")
+ public ResponseEntity<ReturnDataDTO> customerReward() {
+ return returnData(R.SUCCESS.getCode(),customerCenterService.customerReward());
+ }
}
diff --git a/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java b/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java
index ee32007..29a6bce 100644
--- a/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java
+++ b/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java
@@ -72,6 +72,9 @@
@Autowired
private CustomerMapper customerMapper;
+ @Autowired
+ private CustomerService customerService;
+
@Autowired
private TokenStore tokenStore;
diff --git a/src/main/resources/mapper/customer/CustomerMapper.xml b/src/main/resources/mapper/customer/CustomerMapper.xml
index dbf189c..8e9c56e 100644
--- a/src/main/resources/mapper/customer/CustomerMapper.xml
+++ b/src/main/resources/mapper/customer/CustomerMapper.xml
@@ -7,7 +7,7 @@
<update id="checkVipExpireTime">
update t_customer_info c
set c.is_member = 0,c.member_overtime = NULL
- where c.member_overtime < now() and c.is_member = 1
+ where c.member_overtime < now() and c.is_member = 1
</update>
<select id="queryCustomer" resultType="com.mzl.flower.dto.response.customer.CustomerDTO">
SELECT
--
Gitblit v1.9.3