liding
2025-05-09 cb635802bd0187fd2874c8ad3d6664d4c7aa8555
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
package com.ruoyi.basic.service.impl;
 
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
import com.ruoyi.basic.mapper.CustomerMapper;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.basic.service.ICustomerService;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.security.LoginUser;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
 
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
 
 
/**
 * 客户档案Service业务层处理
 *
 * @author ruoyi
 * @date 2025-05-07
 */
@Service
@AllArgsConstructor
@Slf4j
public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> implements ICustomerService {
    private CustomerMapper customerMapper;
 
    /**
     * 查询客户档案
     *
     * @param id 客户档案主键
     * @return 客户档案
     */
    @Override
    public Customer selectCustomerById(Long id) {
        return customerMapper.selectById(id);
    }
 
    /**
     * 查询客户档案列表
     *
     * @param customer 客户档案
     * @return 客户档案
     */
    @Override
    public List<Customer> selectCustomerList(Customer customer) {
        LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>();
 
        if (StringUtils.isNotBlank(customer.getCustomerName())) {
            queryWrapper.eq(Customer::getCustomerName, customer.getCustomerName());
        }
 
        List<Customer> customerList = customerMapper.selectList(queryWrapper);
 
        // 使用 Stream 修改每个 Customer 的 addressPhone 字段
        return customerList.stream().peek(c ->
                c.setAddressPhone(c.getCompanyAddress() + "( " + c.getCompanyPhone() + " )")
        ).collect(Collectors.toList());
    }
 
    /**
     * 新增客户档案
     *
     * @param customer 客户档案
     * @return 结果
     */
    @Override
    public int insertCustomer(Customer customer) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        Integer tenantId = loginUser.getTenantId();
        customer.setTenantId(Long.valueOf(tenantId));
        return customerMapper.insert(customer);
    }
 
    /**
     * 修改客户档案
     *
     * @param customer 客户档案
     * @return 结果
     */
    @Override
    public int updateCustomer(Customer customer) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        Integer tenantId = loginUser.getTenantId();
        customer.setTenantId(Long.valueOf(tenantId));
        return customerMapper.updateById(customer);
    }
 
    /**
     * 批量删除客户档案
     *
     * @param ids 需要删除的客户档案主键
     * @return 结果
     */
    @Override
    public int deleteCustomerByIds(Long[] ids) {
        List<Long> idList = Arrays.asList(ids);
        return customerMapper.deleteBatchIds(idList);
    }
 
    @Override
    public List<Customer> selectCustomerListByIds(Long[] ids) {
        LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.in(Customer::getId, Arrays.asList(ids));
        return customerMapper.selectList(queryWrapper);
    }
 
    @Override
    public List<Map<String, Object>> customerList(Customer customer) {
        LambdaQueryWrapper<Customer> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.select(Customer::getId, Customer::getCustomerName,Customer::getTaxpayerIdentificationNumber);
 
        // 获取原始查询结果
        List<Map<String, Object>> result = customerMapper.selectMaps(queryWrapper);
 
        // 将下划线命名转换为驼峰命名
        return result.stream().map(map -> map.entrySet().stream()
                .collect(Collectors.toMap(
                        entry -> underlineToCamel(entry.getKey()),
                        Map.Entry::getValue))
        ).collect(Collectors.toList());
    }
 
    /**
     * 下划线命名转驼峰命名
     */
    private String underlineToCamel(String param) {
        if (param == null || "".equals(param.trim())) {
            return "";
        }
        int len = param.length();
        StringBuilder sb = new StringBuilder(len);
        for (int i = 0; i < len; i++) {
            char c = param.charAt(i);
            if (c == '_') {
                if (++i < len) {
                    sb.append(Character.toUpperCase(param.charAt(i)));
                }
            } else {
                sb.append(Character.toLowerCase(c));
            }
        }
        return sb.toString();
    }
}