| | |
| | | export const developmentLoginBypassEnabled: boolean = false |
| | | |
| | | // 后台提供合法域名后仅在此处填写,业务页面不得硬编码域名。 |
| | | const developmentBaseUrl = 'http://192.168.110.13:8080' |
| | | const developmentBaseUrl = 'http://192.168.110.8:8080' |
| | | const stagingBaseUrl = '' |
| | | const productionBaseUrl = '' |
| | | |
| | |
| | | if (name == 'appCompletedOrders') return '/api/app/completed-orders/' |
| | | if (name == 'appCancelledOrders') return '/api/app/cancelled-orders/' |
| | | if (name == 'appProcessingApplications') return '/api/app/processing-applications/' |
| | | if (name == 'appFamilyCards') return '/api/app/family-cards' |
| | | if (name == 'appFamilyCards') return '/api/app/family-cards/applications' |
| | | if (name == 'appFreeBenefits') return '/api/app/free-benefits' |
| | | if (name == 'appAgreements') return '/api/app/agreements/' |
| | | if (name == 'appUploadImage') return '/api/app/uploads/images' |
| | |
| | | |
| | | <script setup lang="uts"> |
| | | import { apiEnvironment } from '../../config/api.uts' |
| | | import { createFamilyCardApplication } from '../../services/portal.uts' |
| | | import { createFamilyCardApplication, getTalentCardProfile } from '../../services/portal.uts' |
| | | import { safeBack } from '../../utils/navigation.uts' |
| | | const goBack = () => safeBack('/pages/family-card/family-card') |
| | | |
| | | const navTop = ref(28) |
| | | const navHeight = ref(32) |
| | |
| | | const relationIndex = ref(0) |
| | | const form = ref({ name: '', idCard: '', phone: '', relation: '配偶' }) |
| | | const talentId = ref('') |
| | | const talentCardId = ref('') |
| | | |
| | | onLoad((options: any) => { |
| | | // #ifdef MP-WEIXIN |
| | |
| | | navRight.value = systemInfo.windowWidth - capsule.right |
| | | // #endif |
| | | talentId.value = options != null && options['talentId'] != null ? options['talentId'] as string : (apiEnvironment == 'development' ? '2' : '') |
| | | resolveTalentCardId() |
| | | }) |
| | | |
| | | const goBack = () => safeBack('/pages/family-card/family-card') |
| | | const resolveTalentCardId = () => { |
| | | if (talentId.value == '') return |
| | | getTalentCardProfile(talentId.value, (data: any) => { |
| | | const card = data != null ? data.card : null |
| | | talentCardId.value = card != null && card.id != null ? '' + card.id : '' |
| | | }, () => {}) |
| | | } |
| | | const changeRelation = (event: any) => { |
| | | const selectedIndex = parseInt(event.detail.value as string) |
| | | relationIndex.value = selectedIndex |
| | |
| | | uni.showToast({ title: '请填写正确的手机号', icon: 'none' }) |
| | | return |
| | | } |
| | | if (talentCardId.value == '') { |
| | | isSubmitting.value = false |
| | | uni.showToast({ title: '未获取到主卡信息,请返回重试', icon: 'none' }) |
| | | return |
| | | } |
| | | isSubmitting.value = true |
| | | createFamilyCardApplication({ talentId: Number(talentId.value), name: form.value.name.trim(), idCard: form.value.idCard.trim(), mobile: form.value.phone.trim(), relationship: form.value.relation }, (data: any) => { |
| | | createFamilyCardApplication(talentCardId.value, form.value.name.trim(), form.value.idCard.trim(), form.value.phone.trim(), form.value.relation, (data: any) => { |
| | | uni.setStorageSync('familyCardApplicationResult', { |
| | | name: data.name || '', |
| | | relationship: data.relationship || '', |
| | | applicationNo: data.applicationNo || '', |
| | | estimatedProcessingTime: data.estimatedProcessingTime || '资料已提交,请耐心等待审核。' |
| | | name: form.value.name.trim(), |
| | | relationship: form.value.relation, |
| | | applicationNo: '', |
| | | estimatedProcessingTime: '资料已提交,请耐心等待审核。' |
| | | }) |
| | | uni.redirectTo({ url: '/pages/family-card-success/family-card-success' }) |
| | | }, (error) => { |
| | |
| | | |
| | | <script setup lang="uts"> |
| | | import { apiEnvironment } from '../../config/api.uts' |
| | | import { getFamilyCards } from '../../services/portal.uts' |
| | | import { getFamilyCards, getTalentCardProfile } from '../../services/portal.uts' |
| | | import { safeBack } from '../../utils/navigation.uts' |
| | | |
| | | const navTop = ref(28) |
| | |
| | | const loading = ref(true) |
| | | const loadError = ref(false) |
| | | const talentId = ref('') |
| | | const talentCardId = ref('') |
| | | const canUnbind = ref(false) |
| | | |
| | | onLoad((options: any) => { |
| | |
| | | navRight.value = systemInfo.windowWidth - capsule.right |
| | | // #endif |
| | | talentId.value = options != null && options['talentId'] != null ? options['talentId'] as string : (apiEnvironment == 'development' ? '2' : '') |
| | | loadFamilyCards() |
| | | resolveTalentCardId() |
| | | }) |
| | | onShow(() => { |
| | | if (talentId.value != '') loadFamilyCards() |
| | | if (talentCardId.value != '') loadFamilyCards() |
| | | }) |
| | | |
| | | const goBack = () => safeBack('/pages/profile/profile') |
| | | const loadFamilyCards = () => { |
| | | |
| | | const resolveTalentCardId = () => { |
| | | if (talentId.value == '') { loading.value = false; loadError.value = true; return } |
| | | getTalentCardProfile(talentId.value, (data: any) => { |
| | | const card = data != null ? data.card : null |
| | | talentCardId.value = card != null && card.id != null ? '' + card.id : '' |
| | | if (talentCardId.value == '') { loading.value = false; loadError.value = true; return } |
| | | loadFamilyCards() |
| | | }, () => { loading.value = false; loadError.value = true }) |
| | | } |
| | | const loadFamilyCards = () => { |
| | | if (talentCardId.value == '') { loading.value = false; loadError.value = true; return } |
| | | loading.value = true |
| | | loadError.value = false |
| | | getFamilyCards(talentId.value, (data: any) => { familyMembers.value = data as any[]; canUnbind.value = familyMembers.value.some((item: any) => item.canUnbind === true); loading.value = false }, () => { loading.value = false; loadError.value = true }) |
| | | getFamilyCards(talentCardId.value, (data: any) => { |
| | | const items = (data as any[]) || [] |
| | | familyMembers.value = items.map((item: any) => ({ |
| | | id: item.id, |
| | | name: item.dependentName != null ? item.dependentName : '', |
| | | initial: item.dependentName != null && item.dependentName.length > 0 ? item.dependentName.substring(0, 1) : '', |
| | | relationship: item.relation != null ? item.relation : '', |
| | | mobile: item.dependentMobile != null ? item.dependentMobile : '', |
| | | statusText: item.statusText != null ? item.statusText : '', |
| | | status: item.status, |
| | | canUnbind: item.status === 1 |
| | | })) |
| | | canUnbind.value = familyMembers.value.some((item: any) => item.canUnbind === true) |
| | | loading.value = false |
| | | }, () => { loading.value = false; loadError.value = true }) |
| | | } |
| | | const addApplication = () => uni.navigateTo({ url: '/pages/family-card-apply/family-card-apply?talentId=' + encodeURIComponent(talentId.value) }) |
| | | const unbindFamily = () => { |
| | |
| | | export const getCompletedOrder = (orderNo: string, talentId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appCompletedOrders') + encodeURIComponent(orderNo), method: 'GET', skipAuth: true, data: { talentId: talentId } }, onSuccess, onError) |
| | | export const getCancelledOrder = (orderNo: string, talentId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appCancelledOrders') + encodeURIComponent(orderNo), method: 'GET', skipAuth: true, data: { talentId: talentId } }, onSuccess, onError) |
| | | export const getProcessingApplication = (applicationNo: string, talentId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appProcessingApplications') + encodeURIComponent(applicationNo), method: 'GET', skipAuth: true, data: { talentId: talentId } }, onSuccess, onError) |
| | | export const getFamilyCards = (talentId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appFamilyCards'), method: 'GET', skipAuth: true, data: { talentId: talentId } }, onSuccess, onError) |
| | | export const getFamilyCards = (talentCardId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appFamilyCards'), method: 'GET', skipAuth: true, data: { talentCardId: Number(talentCardId) } }, onSuccess, onError) |
| | | export const getFreeBenefit = (talentId: string, merchantId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appFreeBenefits'), method: 'GET', skipAuth: true, data: { talentId: talentId, merchantId: merchantId } }, onSuccess, onError) |
| | | export const issueFreeBenefitCode = (talentId: string, merchantId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appFreeBenefits') + '/dynamic-code', method: 'POST', skipAuth: true, data: { talentId: Number(talentId), merchantId: Number(merchantId) } }, onSuccess, onError) |
| | | export const createFamilyCardApplication = (payload: any, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appFamilyCards') + '/applications', method: 'POST', skipAuth: true, data: payload, idempotencyKey: 'family-card-apply-' + Date.now() }, onSuccess, onError) |
| | | export const unbindFamilyCard = (applicationId: string, talentId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appFamilyCards') + '/' + encodeURIComponent(applicationId) + '/unbind', method: 'POST', skipAuth: true, data: { talentId: Number(talentId) }, idempotencyKey: 'family-card-unbind-' + applicationId }, onSuccess, onError) |
| | | export const unbindFamilyCards = (applicationIds: string[], talentId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appFamilyCards') + '/unbind', method: 'POST', skipAuth: true, data: { talentId: Number(talentId), applicationIds: applicationIds.map((id: string) => Number(id)) }, idempotencyKey: 'family-card-unbind-' + applicationIds.join('-') }, onSuccess, onError) |
| | | export const createFamilyCardApplication = (talentCardId: string, dependentName: string, dependentIdCardNo: string, dependentMobile: string, relation: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appFamilyCards'), method: 'POST', skipAuth: true, data: { talentCardId: Number(talentCardId), dependentName: dependentName, dependentIdCardNo: dependentIdCardNo, dependentMobile: dependentMobile, relation: relation }, idempotencyKey: 'family-card-apply-' + talentCardId + '-' + Date.now() }, onSuccess, onError) |
| | | export const unbindFamilyCard = (applicationId: string, talentCardId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appFamilyCards') + '/' + encodeURIComponent(applicationId) + '/unbind', method: 'POST', skipAuth: true, data: { talentCardId: Number(talentCardId) }, idempotencyKey: 'family-card-unbind-' + applicationId }, onSuccess, onError) |
| | | export const unbindFamilyCards = (applicationIds: string[], talentCardId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => { |
| | | let index = 0 |
| | | const runNext = (): void => { |
| | | if (index >= applicationIds.length) { onSuccess(null); return } |
| | | const id = applicationIds[index] |
| | | index = index + 1 |
| | | unbindFamilyCard(id, talentCardId, () => runNext(), onError) |
| | | } |
| | | runNext() |
| | | return () => {} |
| | | } |
| | | export const issueOrderVerificationCode = (orderNo: string, talentId: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appPendingUseOrders') + encodeURIComponent(orderNo) + '/verification-code', method: 'POST', skipAuth: true, data: { talentId: Number(talentId) } }, onSuccess, onError) |
| | | export const refundPendingUseOrder = (orderNo: string, talentId: string, reason: string, onSuccess: (data: any) => void, onError: (error: HttpError) => void): (() => void) => request<any>({ path: getApiEndpoint('appPendingUseOrders') + encodeURIComponent(orderNo) + '/refund', method: 'POST', skipAuth: true, data: { talentId: Number(talentId), reason: reason }, idempotencyKey: 'refund-' + orderNo }, onSuccess, onError) |
| | |
| | | import com.talentcard.server.request.DependentCardApplyRequest; |
| | | import com.talentcard.server.request.DependentCardUnbindRequest; |
| | | import com.talentcard.server.response.DependentCardApplyItemResponse; |
| | | import com.talentcard.server.service.DependentCardApplyService; |
| | | |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.responses.ApiResponses; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | |
| | | |
| | | @Tag(name = "家属附属卡申请", description = "小程序家属附属卡申请、查询与解绑") |
| | | @RestController |
| | | @RequestMapping("/api/app/dependent-card-applies") |
| | | @RequestMapping("/api/app/family-cards/applications") |
| | | public class DependentCardApplyController { |
| | | |
| | | private final DependentCardApplyService service; |
| | | private final FamilyCardPortalService service; |
| | | |
| | | public DependentCardApplyController(DependentCardApplyService service) { |
| | | public DependentCardApplyController(FamilyCardPortalService service) { |
| | | this.service = service; |
| | | } |
| | | |
| | |
| | | public ApiResponse<Void> submit( |
| | | @Valid @RequestBody DependentCardApplyRequest request |
| | | ) { |
| | | service.submit(request); |
| | | service.createByTalentCardId(request); |
| | | return ApiResponse.success(); |
| | | } |
| | | |
| | |
| | | public ApiResponse<List<DependentCardApplyItemResponse>> list( |
| | | @RequestParam Long talentCardId |
| | | ) { |
| | | return ApiResponse.success(service.list(talentCardId)); |
| | | return ApiResponse.success(service.listByTalentCardId(talentCardId)); |
| | | } |
| | | |
| | | @Operation(summary = "解绑家属附属卡", description = "仅已通过审核的家属附属卡可以解绑") |
| | |
| | | @PathVariable Long id, |
| | | @Valid @RequestBody DependentCardUnbindRequest request |
| | | ) { |
| | | return ApiResponse.success(service.unbind(id, request)); |
| | | return ApiResponse.success(service.unbindByTalentCardId(id, request)); |
| | | } |
| | | } |
| | |
| | | private final FamilyCardPortalService service; |
| | | public FamilyCardPortalController(FamilyCardPortalService service) { this.service = service; } |
| | | @GetMapping public ApiResponse<List<Map<String, Object>>> list(@RequestParam Long talentId) { return ApiResponse.success(service.list(talentId)); } |
| | | @PostMapping("/applications") public ApiResponse<Map<String, Object>> create(@Valid @RequestBody FamilyCardApplicationRequest request) { return ApiResponse.success(service.create(request)); } |
| | | @PostMapping("/unbind") public ApiResponse<Map<String, Object>> unbindMany(@Valid @RequestBody FamilyCardBatchUnbindRequest request) { return ApiResponse.success(service.unbindMany(request)); } |
| | | @PostMapping("/{applicationId}/unbind") public ApiResponse<Map<String, Object>> unbind(@PathVariable Long applicationId, @Valid @RequestBody FamilyCardUnbindRequest request) { return ApiResponse.success(service.unbind(applicationId, request)); } |
| | | } |
| | |
| | | |
| | | import com.talentcard.server.business.BusinessIdGenerator; |
| | | import com.talentcard.server.business.DatabaseRows; |
| | | import com.talentcard.server.request.DependentCardApplyRequest; |
| | | import com.talentcard.server.request.DependentCardUnbindRequest; |
| | | import com.talentcard.server.common.BusinessException; |
| | | import com.talentcard.server.response.DependentCardApplyItemResponse; |
| | | import com.talentcard.server.common.ErrorCode; |
| | | import org.springframework.jdbc.core.JdbcTemplate; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | """, talentId).stream().map(DatabaseRows::normalize).map(this::view).toList(); |
| | | } |
| | | |
| | | @Transactional(readOnly = true) |
| | | public List<DependentCardApplyItemResponse> listByTalentCardId(Long talentCardId) { |
| | | Long talentId = talentIdByCardId(talentCardId); |
| | | return jdbc.queryForList(""" |
| | | select f.id, f.family_name, f.family_mobile, f.relationship, f.status |
| | | from family_card_application f |
| | | where f.deleted = 0 and f.talent_id = ? and f.status <> '\u5df2\u89e3\u7ed1' |
| | | order by f.apply_time desc, f.id desc |
| | | """, talentId).stream().map(DatabaseRows::normalize).map(this::dependentCardItem).toList(); |
| | | } |
| | | |
| | | @Transactional |
| | | public void createByTalentCardId(DependentCardApplyRequest request) { |
| | | Long talentId = talentIdByCardId(request.talentCardId()); |
| | | create(new FamilyCardApplicationRequest( |
| | | talentId, request.dependentName(), request.dependentIdCardNo(), |
| | | request.dependentMobile(), request.relation() |
| | | )); |
| | | } |
| | | |
| | | @Transactional |
| | | public DependentCardApplyItemResponse unbindByTalentCardId(Long id, DependentCardUnbindRequest request) { |
| | | Long talentId = talentIdByCardId(request.talentCardId()); |
| | | unbind(id, new FamilyCardUnbindRequest(talentId)); |
| | | List<Map<String, Object>> rows = jdbc.queryForList(""" |
| | | select f.id, f.family_name, f.family_mobile, f.relationship, f.status |
| | | from family_card_application f |
| | | where f.id = ? and f.talent_id = ? and f.deleted = 0 |
| | | limit 1 |
| | | """, id, talentId).stream().map(DatabaseRows::normalize).toList(); |
| | | if (rows.isEmpty()) throw new BusinessException(ErrorCode.NOT_FOUND, "\u5bb6\u5c5e\u5361\u7533\u8bf7\u4e0d\u5b58\u5728"); |
| | | return dependentCardItem(rows.get(0)); |
| | | } |
| | | @Transactional |
| | | public Map<String, Object> create(FamilyCardApplicationRequest request) { |
| | | Map<String, Object> owner = ownerCard(request.talentId()); |
| | | if (!"卓越人才卡".equals(string(owner.get("cardLevel")))) throw new BusinessException(ErrorCode.CONFLICT, "家庭附属卡仅向卓越人才卡用户开放"); |
| | | if (number(owner.get("isFamilyCardEnabled")) == null || number(owner.get("isFamilyCardEnabled")) != 1 || number(owner.get("familyCardLimit")) == null || number(owner.get("familyCardLimit")) < 1) throw new BusinessException(ErrorCode.CONFLICT, "当前人才卡暂未开通家庭附属卡申请"); |
| | | if (!List.of("配偶", "父母", "子女", "其他").contains(request.relationship().trim())) throw new BusinessException(ErrorCode.BAD_REQUEST, "不支持的家属关系"); |
| | | if (!validIdCard(request.idCard().trim())) throw new BusinessException(ErrorCode.BAD_REQUEST, "身份证号格式不正确"); |
| | | Integer occupied = jdbc.queryForObject("select count(*) from family_card_application where deleted = 0 and talent_id = ? and status in ('待审核', '已通过')", Integer.class, request.talentId()); |
| | | if (occupied != null && occupied >= number(owner.get("familyCardLimit"))) throw new BusinessException(ErrorCode.CONFLICT, "家庭附属卡申请数量已达上限"); |
| | | Integer submitted = jdbc.queryForObject("select count(*) from family_card_application where deleted = 0 and talent_id = ? and status in ('\u5f85\u5ba1\u6838', '\u5df2\u901a\u8fc7', '\u5df2\u9a73\u56de')", Integer.class, request.talentId()); |
| | | if (submitted != null && submitted >= 3) throw new BusinessException(ErrorCode.CONFLICT, "\u540c\u4e00\u5f20\u4e3b\u5361\u6700\u591a\u63d0\u4ea43\u4e2a\u5bb6\u5c5e\u9644\u5c5e\u5361\u7533\u8bf7"); |
| | | Integer occupied = jdbc.queryForObject("select count(*) from family_card_application where deleted = 0 and talent_id = ? and status in ('\u5f85\u5ba1\u6838', '\u5df2\u901a\u8fc7')", Integer.class, request.talentId()); |
| | | if (occupied != null && occupied >= 2) throw new BusinessException(ErrorCode.CONFLICT, "\u8be5\u4e3b\u5361\u5bb6\u5c5e\u9644\u5c5e\u5361\u540d\u989d\u5df2\u6ee1\uff0c\u6700\u591a\u7ed1\u5b9a2\u4e2a"); |
| | | Integer duplicate = jdbc.queryForObject(""" |
| | | select count(*) from family_card_application |
| | | where deleted = 0 and talent_id = ? and id_card_no = ? and status in ('待审核', '已通过') |
| | |
| | | return Map.of("applicationIds", applicationIds, "unbound", true); |
| | | } |
| | | |
| | | private Long talentIdByCardId(Long talentCardId) { |
| | | if (talentCardId == null || talentCardId <= 0) throw new BusinessException(ErrorCode.NOT_FOUND, "\u4e3b\u5361\u4e0d\u5b58\u5728\u6216\u5df2\u5931\u6548"); |
| | | List<Map<String, Object>> rows = jdbc.queryForList(""" |
| | | select talent_id from talent_card |
| | | where id = ? and deleted = 0 and card_type = 'PERSONAL' and status = 1 |
| | | limit 1 |
| | | """, talentCardId).stream().map(DatabaseRows::normalize).toList(); |
| | | if (rows.isEmpty()) throw new BusinessException(ErrorCode.NOT_FOUND, "\u4e3b\u5361\u4e0d\u5b58\u5728\u6216\u5df2\u5931\u6548"); |
| | | return number(rows.get(0).get("talentId")); |
| | | } |
| | | |
| | | private DependentCardApplyItemResponse dependentCardItem(Map<String, Object> row) { |
| | | Integer status = switch (string(row.get("status"))) { |
| | | case "\u5f85\u5ba1\u6838" -> 0; |
| | | case "\u5df2\u901a\u8fc7" -> 1; |
| | | case "\u5df2\u9a73\u56de" -> 2; |
| | | case "\u5df2\u89e3\u7ed1" -> 3; |
| | | default -> -1; |
| | | }; |
| | | String statusText = switch (status) { |
| | | case 0 -> "\u5f85\u5ba1\u6838"; |
| | | case 1 -> "\u5df2\u901a\u8fc7"; |
| | | case 2 -> "\u5df2\u9a73\u56de"; |
| | | case 3 -> "\u5df2\u89e3\u7ed1"; |
| | | default -> "\u672a\u77e5"; |
| | | }; |
| | | return new DependentCardApplyItemResponse( |
| | | number(row.get("id")), string(row.get("familyName")), |
| | | maskMobile(string(row.get("familyMobile"))), status, statusText, |
| | | string(row.get("relationship")) |
| | | ); |
| | | } |
| | | private Map<String, Object> ownerCard(Long talentId) { |
| | | List<Map<String, Object>> rows = jdbc.queryForList(""" |
| | | select c.card_no, c.card_level, c.is_family_card_enabled, c.family_card_limit, u.name as talent_name, u.mobile as talent_mobile |
| | |
| | | if (!ELITE_CARD_LEVEL.equals(card.getCardLevel())) { |
| | | throw new BusinessException(ErrorCode.INTERNAL_ERROR, "仅卓越人才卡可申请家属附属卡"); |
| | | } |
| | | if (!Integer.valueOf(1).equals(card.getIsFamilyCardEnabled())) { |
| | | throw new BusinessException(ErrorCode.INTERNAL_ERROR, "该主卡未开通家属附属卡申请权限"); |
| | | } |
| | | Integer configuredLimit = card.getFamilyCardLimit(); |
| | | if (configuredLimit == null || configuredLimit <= 0) { |
| | | throw new BusinessException(ErrorCode.INTERNAL_ERROR, "该主卡未配置家属附属卡名额"); |
| | | } |
| | | return Math.min(configuredLimit, MAX_FAMILY_CARD_COUNT); |
| | | // if (!Integer.valueOf(1).equals(card.getIsFamilyCardEnabled())) { |
| | | // throw new BusinessException(ErrorCode.INTERNAL_ERROR, "该主卡未开通家属附属卡申请权限"); |
| | | // } |
| | | // Integer configuredLimit = card.getFamilyCardLimit(); |
| | | // if (configuredLimit == null || configuredLimit <= 0) { |
| | | // throw new BusinessException(ErrorCode.INTERNAL_ERROR, "该主卡未配置家属附属卡名额"); |
| | | // } |
| | | return Math.min(2, MAX_FAMILY_CARD_COUNT); |
| | | } |
| | | |
| | | private void recordStatus( |