zhujie
2025-04-11 52358cd76aee8d5f7edc54e177b6eab0d1f58533
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;
@@ -156,7 +164,6 @@
    }
    public User getUserByThirdId(String thirdId){
@@ -283,6 +290,7 @@
    /**
     * 新增用户
     *
     * @param dto
     * @return
     */
@@ -385,6 +393,7 @@
    /**
     * 更新用户
     *
     * @param dto
     */
    public void updateUser(UpdateUserDTO dto) {
@@ -513,6 +522,7 @@
    /**
     * 查看微信是否已经存在用户
     *
     * @param openId
     * @param sessionKey
     * @param unionId
@@ -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);
        }
    }
}