pom.xml
@@ -241,16 +241,16 @@ <artifactId>wx-java-mp-spring-boot-starter</artifactId> <version>4.1.0</version> </dependency> <dependency> <groupId>com.aliyuncs</groupId> <artifactId>core</artifactId> <version>1</version> </dependency> <dependency> <groupId>com.aliyuncs</groupId> <artifactId>dysmsapi</artifactId> <version>1</version> </dependency> <!-- <dependency>--> <!-- <groupId>com.aliyuncs</groupId>--> <!-- <artifactId>core</artifactId>--> <!-- <version>1</version>--> <!-- </dependency>--> <!-- <dependency>--> <!-- <groupId>com.aliyuncs</groupId>--> <!-- <artifactId>dysmsapi</artifactId>--> <!-- <version>1</version>--> <!-- </dependency>--> <dependency> <groupId>com.github.wechatpay-apiv3</groupId> src/main/java/com/mzl/flower/config/PyamentV3Configurer.java
@@ -21,7 +21,7 @@ /** 商户API私钥路径 */ //public static String privateKeyPath = "/opt/pay/wx/v3/apiclient_key.pem"; public static String privateKeyPath = "D://apiclient_key.pem"; public static String privateKeyPath = "D://Soft//apiclient_key.pem"; /** 商户证书序列号 */ public static String merchantSerialNumber = "37A08A552943EF34883614DBC8DE281598148757"; 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();//配置访问控制,必须认证过后才可以访问 } 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; 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; } 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; } 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; } 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; } 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(); } 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; } } 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(); } } src/main/java/com/mzl/flower/service/impl/sms/SmsTaskServiceImpl.java
@@ -5,7 +5,6 @@ import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import com.aliyun.oss.model.GetObjectRequest; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.databind.JsonNode; @@ -421,14 +420,14 @@ String templateCode = smsTemplateDO.getCode(); for (SmsTaskDetailDO detail : smsTaskDetailDOList) { try { SendSmsResponse sendSmsResponse = SmsUtil.sendSms(detail.getPhone(), templateCode, null); if("OK".equals(sendSmsResponse.getCode())){ detail.setResult(Constants.SMS_SEND_RESULT.success.name()); }else{ detail.setFailReason(sendSmsResponse.getMessage()); detail.setResult(Constants.SMS_SEND_RESULT.failure.name()); } detail.setResponseResult(sendSmsResponse.toString()); // SendSmsResponse sendSmsResponse = SmsUtil.sendSms(detail.getPhone(), templateCode, null); // if("OK".equals(sendSmsResponse.getCode())){ // detail.setResult(Constants.SMS_SEND_RESULT.success.name()); // }else{ // detail.setFailReason(sendSmsResponse.getMessage()); // detail.setResult(Constants.SMS_SEND_RESULT.failure.name()); // } // detail.setResponseResult(sendSmsResponse.toString()); } catch (Exception e) { detail.setResult(Constants.SMS_SEND_RESULT.failure.name()); System.err.println("Failed to send SMS to " + detail.getPhone() + ": " + e.getMessage()); 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); } } } src/main/java/com/mzl/flower/utils/SmsUtil.java
@@ -3,8 +3,6 @@ import com.alibaba.fastjson.JSON; import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; @@ -24,31 +22,5 @@ static final String keySecret = "BrY0BM4pvDXhVKOMLsXzgzlhVe1keQ"; static final String signName = "云南花满芫花卉"; public static SendSmsResponse sendSms(final String tel, final String templateCode, Object paramMap) throws ClientException { return sendSms(tel, templateCode, JSON.toJSONString(paramMap)); } public static SendSmsResponse sendSms(final String tel, final String templateCode, final String templateParam) throws ClientException { return sendSms(tel, templateCode, templateParam, null); } public static SendSmsResponse sendSms(final String tel, final String templateCode, final String templateParam, final String outId) throws ClientException { log.info("Send SMS [mobile no:" + tel + " templateCode:" + templateCode + " templateParam:" + templateParam + "]"); System.setProperty("sun.net.client.defaultConnectTimeout", connectTime); System.setProperty("sun.net.client.defaultReadTimeout", readTime); IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", keyId, keySecret); DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); IAcsClient acsClient = new DefaultAcsClient(profile); SendSmsRequest request = new SendSmsRequest(); request.setPhoneNumbers(tel); request.setSignName(signName); request.setTemplateCode(templateCode); request.setTemplateParam(templateParam); request.setOutId(outId); SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); log.info("Send SMS [mobile no:" + tel + " templateCode:" + templateCode + " templateParam:" + templateParam + "] result: " + sendSmsResponse.getCode() + " " + sendSmsResponse.getMessage()); return sendSmsResponse; } } 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()); } } 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;