From b2f8320707dc72b2429bfb4fe0b317c11b1e5b7f Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期四, 29 十月 2026 16:34:45 +0800
Subject: [PATCH] change
---
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java | 100 ++++++++++++++++++++++++++++++++++---------------
1 files changed, 69 insertions(+), 31 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
index 0b0c6cd..ce90a16 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -33,6 +33,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -70,6 +71,8 @@
private CustomerReturnVisitService customerReturnVisitService;
@Autowired
private CustomerUserService customerUserService;
+ @Autowired
+ private JdbcTemplate jdbcTemplate;
/**
* 鏌ヨ瀹㈡埛妗f
@@ -92,6 +95,13 @@
public CustomerVo selectCustomerDetailById(Long id) {
CustomerVo customerVo = new CustomerVo();
BeanUtils.copyProperties(this.getById(id), customerVo);
+
+ // 鍥炴樉缁戝畾鐨勭櫥褰曡处鍙�
+ CustomerUser binding = customerUserService.getOne(new LambdaQueryWrapper<CustomerUser>()
+ .eq(CustomerUser::getCustomerId, id).last("limit 1"), false);
+ if (binding != null) {
+ customerVo.setBindUserId(binding.getUserId());
+ }
// 鏌ヨ璺熻繘璁板綍
List<CustomerFollowUp> followUpList = customerFollowUpService.list(
@@ -129,7 +139,8 @@
@Override
public IPage<CustomerVo> selectCustomerList(Page<CustomerDto> page, CustomerDto customer) {
LoginUser loginUser = SecurityUtils.getLoginUser();
- Long loginUserId = loginUser.getUserId();
+ // 瓒呯骇绠$悊鍛樹笉鍙楀鎴烽鐢�/鍏变韩鑼冨洿闄愬埗锛屽彲鏌ョ湅鍏ㄩ儴瀹㈡埛
+ Long loginUserId = isSuperAdmin(loginUser) ? null : loginUser.getUserId();
IPage<CustomerVo> customerPage = customerMapper.listPage(page, customer, loginUserId);
List<CustomerVo> records = customerPage.getRecords();
@@ -195,11 +206,14 @@
* @return 缁撴灉
*/
@Override
+ @Transactional(rollbackFor = Exception.class)
public int insertCustomer(Customer customer) {
LoginUser loginUser = SecurityUtils.getLoginUser();
Long tenantId = loginUser.getTenantId();
customer.setTenantId(tenantId);
- return customerMapper.insert(customer);
+ int rows = customerMapper.insert(customer);
+ saveCustomerBinding(customer.getId(), customer.getBindUserId());
+ return rows;
}
/**
@@ -209,12 +223,38 @@
* @return 缁撴灉
*/
@Override
+ @Transactional(rollbackFor = Exception.class)
public int updateCustomer(Customer customer) {
LoginUser loginUser = SecurityUtils.getLoginUser();
Long tenantId = loginUser.getTenantId();
- validateCustomerEditPermission(customer.getId());
customer.setTenantId(tenantId);
- return customerMapper.updateById(customer);
+ int rows = customerMapper.updateById(customer);
+ saveCustomerBinding(customer.getId(), customer.getBindUserId());
+ return rows;
+ }
+
+ /**
+ * 淇濆瓨瀹㈡埛涓庣櫥褰曡处鍙风殑涓�瀵逛竴缁戝畾鍏崇郴
+ */
+ private void saveCustomerBinding(Long customerId, Long bindUserId) {
+ if (customerId == null) {
+ return;
+ }
+ customerUserService.remove(new LambdaQueryWrapper<CustomerUser>()
+ .eq(CustomerUser::getCustomerId, customerId));
+ if (bindUserId == null) {
+ return;
+ }
+ // 涓�涓櫥褰曡处鍙峰彧鑳界粦瀹氫竴涓鎴�
+ customerUserService.remove(new LambdaQueryWrapper<CustomerUser>()
+ .eq(CustomerUser::getUserId, bindUserId));
+ CustomerUser binding = new CustomerUser();
+ binding.setCustomerId(customerId);
+ binding.setUserId(bindUserId);
+ customerUserService.save(binding);
+ // 缁戝畾璐﹀彿鑷姩鎺堜簣鈥滃鎴封�濊鑹诧紝浣垮叾鐧诲綍鍚庡彧鑳借闂鎴烽棬鎴�
+ jdbcTemplate.update("INSERT IGNORE INTO sys_user_role (user_id, role_id) "
+ + "SELECT ?, role_id FROM sys_role WHERE role_key = 'customer' AND del_flag = '0'", bindUserId);
}
/**
@@ -280,8 +320,14 @@
@Override
public List<CustomerVo> selectCustomerLists(CustomerDto customer) {
LoginUser loginUser = SecurityUtils.getLoginUser();
- Long loginUserId = loginUser.getUserId();
+ // 瓒呯骇绠$悊鍛樹笉鍙楀鎴烽鐢�/鍏变韩鑼冨洿闄愬埗锛屽彲瀵煎嚭鍏ㄩ儴瀹㈡埛
+ Long loginUserId = isSuperAdmin(loginUser) ? null : loginUser.getUserId();
return customerMapper.list(customer, loginUserId);
+ }
+
+ /** 瓒呯骇绠$悊鍛橈細涓嶅彈瀹㈡埛棰嗙敤/鍏变韩鑼冨洿闄愬埗 */
+ private boolean isSuperAdmin(LoginUser loginUser) {
+ return loginUser != null && loginUser.getUser() != null && loginUser.getUser().isAdmin();
}
@Override
@@ -310,18 +356,26 @@
@Override
public List<Map<String, Object>> customerList(Customer customer) {
- LambdaQueryWrapper<Customer> queryWrapper = Wrappers.lambdaQuery();
- queryWrapper.select(Customer::getId, Customer::getCustomerName, Customer::getTaxpayerIdentificationNumber);
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ Long loginUserId = loginUser.getUserId();
+ CustomerDto query = new CustomerDto();
+ if (customer != null) {
+ BeanUtils.copyProperties(customer, query);
+ }
- // 鑾峰彇鍘熷鏌ヨ缁撴灉
- List<Map<String, Object>> result = customerMapper.selectMaps(queryWrapper);
+ // 澶嶇敤瀹㈡埛鍒楄〃鐨勫彲瑙佹�ц鍒欙紝閬垮厤鎶婂埆浜虹殑绉佹捣瀹㈡埛鏆撮湶缁欏綋鍓嶈处鍙�
+ List<CustomerVo> visibleCustomers = customerMapper.list(query, loginUserId);
+ if (CollectionUtils.isEmpty(visibleCustomers)) {
+ return Collections.emptyList();
+ }
- // 灏嗕笅鍒掔嚎鍛藉悕杞崲涓洪┘宄板懡鍚�
- return result.stream().map(map -> map.entrySet().stream()
- .collect(Collectors.toMap(
- entry -> underlineToCamel(entry.getKey()),
- Map.Entry::getValue))
- ).collect(Collectors.toList());
+ return visibleCustomers.stream().map(item -> {
+ Map<String, Object> map = new LinkedHashMap<>();
+ map.put("id", item.getId());
+ map.put("customerName", item.getCustomerName());
+ map.put("taxpayerIdentificationNumber", item.getTaxpayerIdentificationNumber());
+ return map;
+ }).collect(Collectors.toList());
}
// 鍒嗛厤鍏捣瀹㈡埛缁欑娴�
@@ -403,22 +457,6 @@
customer.setType(1);
customer.setIsAssigned(0);
return this.updateById(customer);
- }
-
- private void validateCustomerEditPermission(Long customerId) {
- Customer customer = customerMapper.selectById(customerId);
- if (customer == null) {
- throw new RuntimeException("瀹㈡埛妗f涓嶅瓨鍦�");
- }
- if (!hasSalesModuleReference(customerId)) {
- return;
- }
- if (Objects.equals(customer.getType(), 0)) {
- throw new RuntimeException("宸茶閿�鍞ā鍧楀紩鐢ㄧ殑绉佹捣瀹㈡埛涓嶈兘缂栬緫");
- }
- if (Objects.equals(customer.getType(), 1) && Objects.equals(customer.getIsAssigned(), 1)) {
- throw new RuntimeException("宸查鐢ㄥ苟涓旇閿�鍞ā鍧楀紩鐢ㄧ殑鍏捣瀹㈡埛涓嶈兘缂栬緫");
- }
}
private void validatePublicSeaRecyclePermission(Long customerId) {
--
Gitblit v1.9.3