Merge branch 'dev-zza' into dev

This commit is contained in:
Lemon
2025-03-31 15:52:39 +08:00

View File

@@ -6,10 +6,12 @@ import com.jsowell.common.UserAgentUtils;
import com.jsowell.common.annotation.Anonymous;
import com.jsowell.common.core.controller.BaseController;
import com.jsowell.common.core.page.PageResponse;
import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.response.RestApiResponse;
import com.jsowell.common.util.StringUtils;
import com.jsowell.common.util.id.IdUtils;
import com.jsowell.pile.dto.*;
import com.jsowell.pile.service.PileBasicInfoService;
import com.jsowell.pile.service.PileFirmwareInfoService;
@@ -56,6 +58,9 @@ public class PersonPileController extends BaseController {
@Autowired
private PileFirmwareInfoService pileFirmwareInfoService;
@Autowired
private RedisCache redisCache;
/**
* 用户绑定个人桩
@@ -69,11 +74,18 @@ public class PersonPileController extends BaseController {
public RestApiResponse<?> pileMemberBinding(HttpServletRequest request, @RequestBody PileMemberBindingDTO dto) {
logger.info("绑定个人桩信息 params:{}", JSON.toJSONString(dto));
RestApiResponse<?> response = null;
String memberId = getMemberIdByAuthorization(request);
dto.setMemberId(memberId);
// 2025.03.29发现有同一人同时绑定两次桩,因此需要加锁
String lockKey = "bind_pile_" + dto.getPileSn() + memberId;
String uuid = IdUtils.fastUUID();
try {
String memberId = getMemberIdByAuthorization(request);
dto.setMemberId(memberId);
int i = pileService.pileMemberBinding(dto);
response = new RestApiResponse<>(i);
Boolean lockStatus = redisCache.lock(lockKey, uuid, 60);
if (lockStatus) {
int i = pileService.pileMemberBinding(dto);
response = new RestApiResponse<>(i);
}
} catch (BusinessException e) {
logger.error("绑定个人桩信息 error,", e);
response = new RestApiResponse<>(e.getCode(), e.getMessage());
@@ -81,6 +93,8 @@ public class PersonPileController extends BaseController {
logger.error("绑定个人桩信息 error,", exception);
response = new RestApiResponse<>(ReturnCodeEnum.CODE_BINDING_PERSONAL_PILE_ERROR);
}
// 解锁
redisCache.unLock(lockKey);
logger.info("绑定个人桩信息 result:{}", response);
return response;
}