Master Data Server API 更新 Member 内置字段(Code、Name)

今天在用MDS API写程序的时候发现了一个很让人困扰的问题,在更新成员内置字段(如:代码、名称)的时候,最开始我打算采用如下代码来进行:

individualMember.MemberId = new MDService.MemberIdentifier() { Code = "要更新的值", Name = "要更新的值"};


我想一般正常人都会用这种方法吧,设置Member成员的Identifier,将它的内置字段Name重新赋值达到更新的效果,但是很遗憾的告诉你,这种方法是不行的!虽然你成功设置了这个Member的Identifier,但是提交更新后它却不更新,并且也没有出错,而且更遗憾的告诉你,研究了很久都不知道是为什么不行!

尝试了很多种方法,最后终于找到了一个偏方,能够成功更新内置字段Name,其代码如下:

individualMember.Attributes = new Collection<MDService.Attribute>() { new MDS.MDService.Attribute() { Identifier = new Identifier() { Name = "Name" }, Value = "要更新的值" } };

竟然是通过Member的属性来更新内置字段Name,在做更新之前,我跟踪了这个Member对象,看到它里面已经有了2个Attributes,这是理所当然的,这2个Attributes是我们在MDS UI里面设置的,但是我在其中并没有发现包含Name这个内置字段,奇迹发生了,用更新属性的方法竟然可以更新成功,不知道它是怎么从Attributes里面找到Name这个字段的,真是百思不得其解啊!~若有哪位大侠知道原因,烦劳在这里给扫扫盲哈!

success: msg => { document.getElementById('memberCardInput').value = '' if (msg.statusCode == 200) { this.currentMember = { id: msg.data.memberBalance.mobile, name: msg.data.memberBalance.memberName, points: msg.data.memberBalance.balance, } this.currentMember.items = msg.data.memberBalanceList.map(item => { return { id: item.mobile, name: item.memberName, points: item.memberBalance, isGift: false, }showMemberInfo() { if (this.currentMember) { const memberInfo = document.getElementById('memberInfo') memberInfo.style.display = 'block' memberInfo.querySelector('.member-name').textContent = this.currentMember.name memberInfo.querySelector( '.member-id' ).textContent = `卡号:${this.currentMember.id}` memberInfo.querySelector( '.member-points' ).textContent = `余额:${this.currentMember.points}` } } removeMember() { this.currentMember = null document.getElementById('memberInfo').style.display = 'none' } // 查询会员 QueryBuilder queryBuilder = new HibernateQueryBuilder(Member.class); queryBuilder.eq("mobile", cardNumber); queryBuilder.eq("memberState", ParameterConstants.STATE_NORMAL_INTEGER); List<Member> members = queryService.query(queryBuilder); if (members == null || members.isEmpty()) { objectNode.put("code", ERROR_CODE); objectNode.put("msg", "未找到该会员"); setJsonString(objectNode.toString()); return "json"; } Member memberBalance = members.get(0); MemberBalance points = memberBalance.getMemberBalance(); objectNode.put("code", SUCCESS_CODE); objectNode.put("msg", "查询成功"); objectNode.put("points", String.valueOf(points)); // 返回余额 objectNode.put("memberName", memberBalance.getMemberName()); objectNode.put("mobile", memberBalance.getMobile()); setJsonString(objectNode.toString()); return "json"; } 具体分析这两段代码能成功返回会员信息吗?具体怎么改动,前端代码不改动的情况下
11-08
// 会员管理 searchMember() { const cardNumber = document.getElementById('memberCardInput').value.trim() if (!cardNumber) return // 模拟会员查询 const member = { // id: cardNumber, // name: '张三', // phone: '138****1234', // points: 1250, // level: 'VIP' } $.ajax({ type: 'POST', async: false, url: '/card/search/member-balance-search/memberBalanceSearch.action', data: { mobile: cardNumber }, dataType: 'json', success: msg => { document.getElementById('memberCardInput').value = '' if (msg.statusCode == 200) { this.currentMember = { id: msg.data.memberBalance.mobile, name: msg.data.memberBalance.memberName, points: msg.data.memberBalance.balance, } this.currentMember.items = msg.data.memberBalanceList.map(item => { return { id: item.mobile, name: item.memberName, points: item.memberBalance, isGift: false, } }) this.showMemberInfo(this.currentMember) this.hideModal('memberModal') this.showNotification(`余额查询登录成功`, 'success') } else { this.showNotification('卡不存在', 'error') this.playPaymentSound("卡不存在") } }, error: msg => { this.showNotification('卡不存在', 'error') this.playPaymentSound("卡不存在") } }) } showMemberInfo() { if (this.currentMember) { const memberInfo = document.getElementById('memberInfo') memberInfo.style.display = 'block' memberInfo.querySelector('.member-name').textContent = this.currentMember.name memberInfo.querySelector( '.member-id' ).textContent = `卡号:${this.currentMember.id}` memberInfo.querySelector( '.member-points' ).textContent = `余额:${this.currentMember.points}` } } removeMember() { this.currentMember = null document.getElementById('memberInfo').style.display = 'none' } /* 会员余额查询 */ @Action(value = "memberBalanceSearch") public String memberBalanceSearch () { HttpServletRequest request = ServletActionContext.getRequest(); SystemUserWeb systemUserWeb = (SystemUserWeb) request.getSession().getAttribute(GlobalConstants.SESSION_USER_KEY); ObjectMapper objectMapper = new ObjectMapper(); ObjectNode responseNode = objectMapper.createObjectNode(); if (!StringUtils.hasText(cardNumber)) { responseNode.put("code", ERROR_CODE); responseNode.put("msg", "卡号不能为空"); setJsonString(responseNode.toString()); return "json"; } QueryBuilder queryBuilder = new HibernateQueryBuilder(Member.class); queryBuilder.eq("mobile", cardNumber); queryBuilder.eq("memberState", ParameterConstants.STATE_NORMAL_INTEGER); queryBuilder.isNull("masterId"); List<Member> members = queryService.query(queryBuilder); if (members.isEmpty()) { responseNode.put("statusCode", 404); responseNode.put("msg", "未找到该会员"); setJsonString(responseNode.toString()); return "json"; } Member mainMember = members.get(0); ObjectNode dataNode = objectMapper.createObjectNode(); ObjectNode memberNode = objectMapper.createObjectNode(); memberNode.put("cardNumber", mainMember.getMobile()); memberNode.put("memberName", mainMember.getMemberName()); memberNode.put("balance", mainMember.getMemberBalance().getBalance()); ArrayNode emptyList = objectMapper.createArrayNode(); dataNode.set("memberBalance", memberNode); dataNode.set("memberBalanceList", emptyList); responseNode.put("statusCode", 200); responseNode.put("msg", "查询成功"); responseNode.set("data", dataNode); setJsonString(responseNode.toString()); return "json"; }这是1会员信息查询的前后端,具体怎么实现前端获取会员信息的展示页面
11-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值