feat(memberCenter): 重构权益相关功能

master
yang 2025-04-11 14:59:43 +08:00
parent 502fcb3072
commit a74e6412e0
20 changed files with 333 additions and 129 deletions

View File

@ -3,26 +3,18 @@ package com.mcwl.web.controller.memberCenter;
import cn.hutool.core.bean.BeanUtil;
import com.mcwl.common.core.domain.R;
import com.mcwl.memberCenter.domain.Benefit;
import com.mcwl.memberCenter.domain.BenefitValue;
import com.mcwl.memberCenter.domain.dto.BenefitDto;
import com.mcwl.memberCenter.domain.dto.AddBenefitDto;
import com.mcwl.memberCenter.domain.dto.EditBenefitDto;
import com.mcwl.memberCenter.domain.vo.BenefitVo;
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
import com.mcwl.memberCenter.service.BenefitService;
import com.mcwl.memberCenter.service.BenefitValueService;
import com.mcwl.memberCenter.service.MemberBenefitService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/***
*
@ -35,7 +27,6 @@ public class BenefitController {
private final BenefitService benefitService;
private final BenefitValueService benefitValueService;
/**
*
@ -44,21 +35,8 @@ public class BenefitController {
@ApiOperation(value = "权益列表")
@GetMapping("list")
public R<List<BenefitVo>> list() {
List<Benefit> benefitList = benefitService.list();
Map<Long, Double> benefitValueMap = benefitValueService.list()
.stream()
.collect(Collectors.toMap(BenefitValue::getId, BenefitValue::getBenefitValue));
List<BenefitVo> benefitVoList = new ArrayList<>();
for (Benefit benefit : benefitList) {
BenefitVo benefitVo = BeanUtil.copyProperties(benefit, BenefitVo.class);
Double value = benefitValueMap.get(benefit.getBenefitDiscountId());
benefitVo.setBenefitType(benefit.getBenefitType().getValue());
benefitVo.setBenefitDiscount(value);
benefitVoList.add(benefitVo);
}
return R.ok(benefitVoList);
return R.ok(benefitService.benefitList());
}
/**
@ -67,53 +45,24 @@ public class BenefitController {
// @PreAuthorize("@ss.hasPermi('system:benefit:add')")
@ApiOperation(value = "添加权益")
@PostMapping("add")
@Transactional(rollbackFor = Exception.class)
public R<Object> add(@RequestBody @Valid BenefitDto benefitDto) {
Double value = benefitDto.getBenefitDiscount();
BenefitValue benefitValue = new BenefitValue();
benefitValue.setBenefitValue(value);
benefitValueService.save(benefitValue);
public R<Object> add(@RequestBody @Valid AddBenefitDto addBenefitDto) {
benefitDto.setId(null);
Benefit benefit = BeanUtil.copyProperties(benefitDto, Benefit.class);
benefit.setBenefitDiscountId(benefitValue.getId());
benefitService.save(benefit);
benefitService.addBenefit(addBenefitDto);
return R.ok();
}
/**
*
*/
// @PreAuthorize("@ss.hasPermi('system:benefit:query')")
@ApiOperation(value = "权益详情")
@GetMapping("detail")
public R<BenefitVo> detail(Long id) {
Benefit benefit = benefitService.getById(id);
BenefitVo benefitVo = BeanUtil.copyProperties(benefit, BenefitVo.class);
benefitVo.setBenefitType(benefit.getBenefitType().getValue());
BenefitValue benefitValue = benefitValueService.lambdaQuery().eq(BenefitValue::getId, benefit.getBenefitDiscountId()).one();
benefitVo.setBenefitDiscount(benefitValue.getBenefitValue());
return R.ok(benefitVo);
}
/**
*
*/
// @PreAuthorize("@ss.hasPermi('system:benefit:edit')")
@ApiOperation(value = "修改权益")
@PostMapping("update")
public R<Object> update(@RequestBody @Valid BenefitDto benefitDto) {
public R<Object> update(@RequestBody @Valid EditBenefitDto editBenefitDto) {
Benefit benefit = BeanUtil.copyProperties(benefitDto, Benefit.class);
Benefit benefit = BeanUtil.copyProperties(editBenefitDto, Benefit.class);
benefitService.updateById(benefit);
BenefitValue benefitValue = benefitValueService.lambdaQuery().eq(BenefitValue::getId, benefit.getBenefitDiscountId()).one();
benefitValue.setBenefitValue(benefitDto.getBenefitDiscount());
benefitValueService.updateById(benefitValue);
return R.ok();

View File

@ -0,0 +1,69 @@
package com.mcwl.web.controller.memberCenter;
import cn.hutool.core.bean.BeanUtil;
import com.mcwl.common.core.domain.R;
import com.mcwl.memberCenter.domain.Benefit;
import com.mcwl.memberCenter.domain.BenefitName;
import com.mcwl.memberCenter.domain.dto.AddBenefitDto;
import com.mcwl.memberCenter.domain.dto.AddBenefitNameDto;
import com.mcwl.memberCenter.domain.dto.EditBenefitDto;
import com.mcwl.memberCenter.domain.dto.EditBenefitNameDto;
import com.mcwl.memberCenter.domain.vo.BenefitVo;
import com.mcwl.memberCenter.service.BenefitNameService;
import com.mcwl.memberCenter.service.BenefitService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
/***
*
*/
@RestController
@RequestMapping("benefitName")
@RequiredArgsConstructor
@Api(tags = "会员中心")
public class BenefitNameController {
private final BenefitNameService benefitNameService;
/**
*
*/
@ApiOperation(value = "权益名称列表")
@GetMapping("list")
public R<List<BenefitName>> list() {
List<BenefitName> list = benefitNameService.list();
return R.ok(list);
}
@ApiOperation(value = "添加权益名称")
@PostMapping("add")
public R<Object> add(@RequestBody @Valid AddBenefitNameDto addBenefitDto) {
BenefitName benefitName = BeanUtil.toBean(addBenefitDto, BenefitName.class);
benefitNameService.save(benefitName);
return R.ok();
}
@ApiOperation(value = "修改权益名称")
@PostMapping("update")
public R<Object> update(@RequestBody @Valid EditBenefitNameDto editBenefitNameDto) {
BenefitName benefitName = BeanUtil.toBean(editBenefitNameDto, BenefitName.class);
benefitNameService.updateById(benefitName);
return R.ok();
}
@ApiOperation(value = "删除权益名称")
@GetMapping("delete")
public R<Object> delete(@Valid @NotNull(message = "id不能为空") Long id) {
benefitNameService.removeById(id);
return R.ok();
}
}

View File

@ -18,9 +18,9 @@ public class Benefit extends BaseEntity {
@TableId
private Long id;
/**
*
* Id
*/
private String benefitName;
private String benefitNameId;
/**
*
*/
@ -32,11 +32,11 @@ public class Benefit extends BaseEntity {
/**
*
*/
private Long benefitDiscountId;
private Double benefitDiscount;
/**
*
*
*/
private Integer benefitOrder;
private String benefitUnit;
}

View File

@ -8,23 +8,23 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("mem_benefit_value")
public class BenefitValue extends BaseEntity {
@TableName("mem_benefit_name")
public class BenefitName extends BaseEntity {
@TableId
private Long id;
/**
*
*
*/
private Double benefitValue;
private String benefitName;
/**
*
*
*/
private String benefitUnit;
private Integer benefitOrder;
}

View File

@ -1,13 +1,9 @@
package com.mcwl.memberCenter.domain.dto;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mcwl.common.core.domain.BaseEntity;
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@ -17,15 +13,13 @@ import javax.validation.constraints.NotNull;
*/
@Data
@ApiModel(description = "权益")
public class BenefitDto {
private Long id;
public class AddBenefitDto {
/**
*
*/
@ApiModelProperty(value = "权益名称", required = true)
@NotBlank(message = "权益名称不能为空")
private String benefitName;
@ApiModelProperty(value = "权益名称id", required = true)
@NotNull(message = "权益名称id不能为空")
private Long benefitNameId;
/**
*
*/
@ -44,10 +38,11 @@ public class BenefitDto {
@NotNull(message = "权益折扣不能为空")
private Double benefitDiscount;
/**
*
*
*/
@ApiModelProperty(value = "权益排序")
private Integer benefitOrder;
@NotBlank(message = "单位不能为空")
@ApiModelProperty(value = "单位")
private String benefitUnit;
}

View File

@ -0,0 +1,31 @@
package com.mcwl.memberCenter.domain.dto;
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
*
*/
@Data
@ApiModel(description = "权益名称")
public class AddBenefitNameDto {
/**
*
*/
@ApiModelProperty(value = "权益名称", required = true)
@NotNull(message = "权益名称不能为空")
private String benefitName;
/**
*
*/
@NotBlank(message = "排序不能为空")
@ApiModelProperty(value = "排序", required = true)
private Integer benefitOrder;
}

View File

@ -0,0 +1,48 @@
package com.mcwl.memberCenter.domain.dto;
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
*
*/
@Data
@ApiModel(description = "权益")
public class EditBenefitDto {
/**
* id
*/
@ApiModelProperty(value = "权益id", required = true)
@NotNull(message = "权益id不能为空")
private Long id;
/**
*
*/
@ApiModelProperty(value = "权益描述")
private String benefitDesc;
/**
*
*/
@ApiModelProperty(value = "权益类型", required = true)
@NotNull(message = "权益类型不能为空")
private MemberBenefitTypeEnum benefitType;
/**
*
*/
@ApiModelProperty(value = "权益折扣,当权益类型为折扣时,记录折扣具体数值", required = true)
@NotNull(message = "权益折扣不能为空")
private Double benefitDiscount;
/**
*
*/
@NotBlank(message = "单位不能为空")
@ApiModelProperty(value = "单位")
private String benefitUnit;
}

View File

@ -0,0 +1,33 @@
package com.mcwl.memberCenter.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
*
*/
@Data
@ApiModel(description = "权益名称")
public class EditBenefitNameDto {
@ApiModelProperty(value = "id", required = true)
@NotNull(message = "id不能为空")
private Long id;
/**
*
*/
@ApiModelProperty(value = "权益名称", required = true)
@NotNull(message = "权益名称不能为空")
private String benefitName;
/**
*
*/
@NotBlank(message = "排序不能为空")
@ApiModelProperty(value = "排序", required = true)
private Integer benefitOrder;
}

View File

@ -0,0 +1,37 @@
package com.mcwl.memberCenter.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* vo
*/
@Data
@ApiModel(value = "权益详情vo")
public class BenefitInfoVo {
private Long id;
/**
*
*/
@ApiModelProperty(value = "权益描述")
private String benefitDesc;
/**
*
*/
@ApiModelProperty(value = "权益类型")
private String benefitType;
/**
*
*/
@ApiModelProperty(value = "权益折扣,当权益类型为折扣时,记录折扣具体数值")
private Double benefitDiscount;
/**
*
*/
@ApiModelProperty(value = "单位")
private String benefitUnit;
}

View File

@ -4,36 +4,35 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mcwl.common.core.domain.BaseEntity;
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List;
/**
* vo
*/
@Data
@ApiModel(value = "权益列表")
public class BenefitVo {
private Long id;
/**
*
*/
@ApiModelProperty(value = "权益名称")
private String benefitName;
/**
*
*/
private String benefitDesc;
/**
*
*/
private String benefitType;
/**
*
*/
private Double benefitDiscount;
/**
*
*/
@ApiModelProperty(value = "权益排序")
private Integer benefitOrder;
@ApiModelProperty(value = "权益详情")
private List<BenefitInfoVo> benefitInfoList = new ArrayList<>();
}

View File

@ -2,7 +2,7 @@ package com.mcwl.memberCenter.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mcwl.memberCenter.domain.Benefit;
import com.mcwl.memberCenter.domain.BenefitValue;
import com.mcwl.memberCenter.domain.BenefitName;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -12,6 +12,6 @@ import java.util.List;
* Mapper
*/
@Mapper
public interface BenefitValueMapper extends BaseMapper<BenefitValue> {
public interface BenefitNameMapper extends BaseMapper<BenefitName> {
}

View File

@ -2,11 +2,11 @@ package com.mcwl.memberCenter.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.memberCenter.domain.Benefit;
import com.mcwl.memberCenter.domain.BenefitValue;
import com.mcwl.memberCenter.domain.BenefitName;
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
import java.util.List;
public interface BenefitValueService extends IService<BenefitValue> {
public interface BenefitNameService extends IService<BenefitName> {
}

View File

@ -2,6 +2,8 @@ package com.mcwl.memberCenter.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.memberCenter.domain.Benefit;
import com.mcwl.memberCenter.domain.dto.AddBenefitDto;
import com.mcwl.memberCenter.domain.vo.BenefitVo;
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
import java.util.List;
@ -17,4 +19,8 @@ public interface BenefitService extends IService<Benefit> {
List<Benefit> getNotBenefitList(Long memberLevelId);
Benefit getBenefitByType(Long memberLevelId, MemberBenefitTypeEnum memberBenefitTypeEnum);
void addBenefit(AddBenefitDto addBenefitDto);
List<BenefitVo> benefitList();
}

View File

@ -2,12 +2,12 @@ package com.mcwl.memberCenter.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.memberCenter.domain.Benefit;
import com.mcwl.memberCenter.domain.BenefitValue;
import com.mcwl.memberCenter.domain.BenefitName;
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
import com.mcwl.memberCenter.mapper.BenefitMapper;
import com.mcwl.memberCenter.mapper.BenefitValueMapper;
import com.mcwl.memberCenter.mapper.BenefitNameMapper;
import com.mcwl.memberCenter.service.BenefitNameService;
import com.mcwl.memberCenter.service.BenefitService;
import com.mcwl.memberCenter.service.BenefitValueService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@ -15,6 +15,8 @@ import java.util.List;
@Service
@RequiredArgsConstructor
public class BenefitValueServiceImpl extends ServiceImpl<BenefitValueMapper, BenefitValue> implements BenefitValueService {
public class BenefitNameServiceImpl extends ServiceImpl<BenefitNameMapper, BenefitName> implements BenefitNameService {
}

View File

@ -1,28 +1,29 @@
package com.mcwl.memberCenter.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.memberCenter.domain.Benefit;
import com.mcwl.memberCenter.domain.MemberBenefit;
import com.mcwl.memberCenter.domain.MemberLevel;
import com.mcwl.memberCenter.domain.vo.MemberBenefitVO;
import com.mcwl.memberCenter.domain.BenefitName;
import com.mcwl.memberCenter.domain.dto.AddBenefitDto;
import com.mcwl.memberCenter.domain.vo.BenefitInfoVo;
import com.mcwl.memberCenter.domain.vo.BenefitVo;
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
import com.mcwl.memberCenter.mapper.BenefitMapper;
import com.mcwl.memberCenter.mapper.MemberBenefitMapper;
import com.mcwl.memberCenter.service.BenefitNameService;
import com.mcwl.memberCenter.service.BenefitService;
import com.mcwl.memberCenter.service.MemberBenefitService;
import com.mcwl.memberCenter.service.MemberLevelService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Service
@RequiredArgsConstructor
public class BenefitServiceImpl extends ServiceImpl<BenefitMapper, Benefit> implements BenefitService {
private final BenefitNameService benefitNameService;
@Override
public List<Benefit> getBenefitList() {
return baseMapper.getBenefitList();
@ -42,4 +43,39 @@ public class BenefitServiceImpl extends ServiceImpl<BenefitMapper, Benefit> impl
public Benefit getBenefitByType(Long memberLevelId, MemberBenefitTypeEnum memberBenefitTypeEnum) {
return baseMapper.getBenefitByType(memberLevelId, memberBenefitTypeEnum.getValue());
}
@Override
public void addBenefit(AddBenefitDto addBenefitDto) {
Benefit benefit = BeanUtil.toBean(addBenefitDto, Benefit.class);
baseMapper.insert(benefit);
}
@Override
public List<BenefitVo> benefitList() {
List<BenefitVo> benefitVoList = new ArrayList<>();
List<BenefitName> benefitNameList = benefitNameService.list();
for (BenefitName benefitName : benefitNameList) {
BenefitVo benefitVo = BeanUtil.toBean(benefitName, BenefitVo.class);
List<BenefitInfoVo> benefitInfoVoList = new ArrayList<>();
List<Benefit> benefitList = baseMapper.selectList(new LambdaQueryWrapper<Benefit>()
.eq(Benefit::getBenefitNameId, benefitName.getId()));
for (Benefit benefit : benefitList) {
BenefitInfoVo benefitInfoVo1 = BeanUtil.copyProperties(benefit, BenefitInfoVo.class);
benefitInfoVo1.setBenefitType(benefit.getBenefitType().getValue());
benefitInfoVoList.add(benefitInfoVo1);
}
benefitVo.setBenefitInfoList(benefitInfoVoList);
benefitVoList.add(benefitVo);
}
return benefitVoList;
}
}

View File

@ -44,7 +44,7 @@ public class MemberBenefitServiceImpl extends ServiceImpl<MemberBenefitMapper, M
benefitList.addAll(notBenefitList);
// 排序
benefitList.sort(Comparator.comparingInt(Benefit::getBenefitOrder));
// benefitList.sort(Comparator.comparingInt(Benefit::getCreateTime));
memberBenefitVO.setMemberBenefitList(benefitList);
memberBenefitVOList.add(memberBenefitVO);

View File

@ -48,8 +48,6 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
private final BenefitService benefitService;
private final BenefitValueService benefitValueService;
private final RechargeRecordService rechargeRecordService;
private static final Map<Long, MemberLevel> memberLevelMap = new HashMap<>();
@ -110,8 +108,7 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
// 设置积分
Benefit benefit = benefitService.getBenefitByType(memberLevelId, MemberBenefitTypeEnum.POINTS);
if (Objects.nonNull(benefit)) {
BenefitValue benefitValue = benefitValueService.lambdaQuery().eq(BenefitValue::getId, benefit.getBenefitDiscountId()).one();
Double points = benefitValue.getBenefitValue();
Double points = benefit.getBenefitDiscount();
// 根据活动id查询活动类型如果为积分则积分加成
if (promotionId != null) {
Promotion promotion = promotionMapper.selectById(promotionId);

View File

@ -33,8 +33,6 @@ public class UserMemberTask {
private final BenefitService benefitService;
private final BenefitValueService benefitValueService;
private final PromotionService promotionService;
private final MemberPromotionService memberPromotionService;
@ -175,10 +173,6 @@ public class UserMemberTask {
*/
public Double getPointsByMemberLevelId(Long memberLevelId) {
Map<Long, Double> benefitValueMap = benefitValueService.list()
.stream()
.collect(Collectors.toMap(BenefitValue::getId, BenefitValue::getBenefitValue));
// 根据会员等级id获取会员权益
List<MemberBenefit> memberBenefitList = memberBenefitService.lambdaQuery()
.eq(MemberBenefit::getMemberLevelId, memberLevelId)
@ -195,7 +189,7 @@ public class UserMemberTask {
.list();
for (Benefit benefit : benefitList) {
if (benefit.getBenefitType().getValue().equals(MemberBenefitTypeEnum.POINTS.getValue())) {
return benefitValueMap.getOrDefault(benefit.getBenefitDiscountId(), 0.0);
return benefit.getBenefitDiscount();
}
}

View File

@ -5,33 +5,33 @@
<mapper namespace="com.mcwl.memberCenter.mapper.BenefitMapper">
<select id="getBenefitList" resultType="com.mcwl.memberCenter.domain.Benefit">
select id, benefit_name, benefit_desc, benefit_discount_id, benefit_order
select id, benefit_name_id, benefit_desc, benefit_type, benefit_discount, benefit_unit
from mem_benefit
where del_flag = '0'
order by benefit_order
order by create_time desc
</select>
<select id="getBenefitListByMemberLevelId" resultType="com.mcwl.memberCenter.domain.Benefit">
select b.id, benefit_name, benefit_desc, benefit_discount_id, benefit_order
select b.id, benefit_name_id, benefit_desc, benefit_type, benefit_discount, benefit_unit
from mem_benefit b
left join mem_member_benefit mb on b.id = mb.benefit_id
where mb.member_level_id = #{memberLevelId}
and b.del_flag = '0'
and mb.del_flag = '0'
order by b.benefit_order
order by b.create_time desc
</select>
<select id="getNotBenefitList" resultType="com.mcwl.memberCenter.domain.Benefit">
select benefit_name, benefit_desc, benefit_order
select b.id, benefit_name_id, benefit_desc, benefit_type, benefit_discount, benefit_unit
from mem_benefit b
where b.id not in (select mb.benefit_id
from mem_member_benefit mb
where mb.member_level_id = #{memberLevelId}
and mb.del_flag = '0')
and b.del_flag = '0'
order by b.benefit_order
order by b.create_time desc
</select>
<select id="getBenefitByType" resultType="com.mcwl.memberCenter.domain.Benefit">
select mb.id, benefit_name, benefit_desc, benefit_type, benefit_discount_id, benefit_order
select mb.id, benefit_name_id, benefit_desc, benefit_type, benefit_discount, benefit_unit
from mem_benefit mb
left join mem_member_benefit mmb on mb.id = mmb.benefit_id
where mb.del_flag = '0'

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mcwl.memberCenter.mapper.BenefitNameMapper">
</mapper>