Commit 5190b971 authored by zhaobiyan's avatar zhaobiyan

Merge branch 'feature_member_score_zby' into feature_member_score

parents fe56588f 5b817148
......@@ -3,9 +3,9 @@ package cn.iocoder.yudao.module.member.controller.admin.level;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.member.service.level.MemberUserLevelConfigService;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelBaseRespVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelReqVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelUpdateVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelConfigBaseRespVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelConfigReqVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelConfigUpdateVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
......@@ -35,7 +35,7 @@ public class MemberUserLevelConfigController {
@PostMapping("/page")
@ApiOperation("列表")
public CommonResult<PageResult<MemberUserLevelBaseRespVO>> getLevelPage(@Valid @RequestBody MemberUserLevelReqVO query) {
public CommonResult<PageResult<MemberUserLevelConfigBaseRespVO>> getLevelPage(@Valid @RequestBody MemberUserLevelConfigReqVO query) {
return success(userLevelConfigService.getLevelPage(query));
}
......@@ -47,13 +47,13 @@ public class MemberUserLevelConfigController {
@PostMapping("/add")
@ApiOperation("新增")
public CommonResult<Boolean> add(@Valid @RequestBody MemberUserLevelUpdateVO query) {
public CommonResult<Boolean> add(@Valid @RequestBody MemberUserLevelConfigUpdateVO query) {
return success(userLevelConfigService.add(query));
}
@PostMapping("/update")
@ApiOperation("编辑")
public CommonResult<Boolean> update(@Valid @RequestBody MemberUserLevelUpdateVO query) {
public CommonResult<Boolean> update(@Valid @RequestBody MemberUserLevelConfigUpdateVO query) {
return success(userLevelConfigService.updateLevel(query));
}
}
......@@ -27,6 +27,7 @@ import cn.iocoder.yudao.module.member.dal.dataobject.userEnterpriseAuth.UserEnte
import cn.iocoder.yudao.module.member.dal.dataobject.userOperationLog.UserOperationLogDO;
import cn.iocoder.yudao.module.member.enums.ErrorCodeConstants;
import cn.iocoder.yudao.module.member.enums.UserAuditStatusEnum;
import cn.iocoder.yudao.module.member.service.level.MemberUserLevelConfigService;
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
import cn.iocoder.yudao.module.member.service.userCardAuth.UserCardAuthService;
import cn.iocoder.yudao.module.member.service.userEnterpriseAuth.UserEnterpriseAuthService;
......@@ -35,6 +36,8 @@ import cn.iocoder.yudao.module.member.vo.userCardAuth.UserCardAuthBackVO;
import cn.iocoder.yudao.module.member.vo.userCardAuth.UserCardAuthCreateReqVO;
import cn.iocoder.yudao.module.member.vo.userEnterpriseAuth.UserEnterpriseAuthBackVO;
import cn.iocoder.yudao.module.member.vo.userEnterpriseAuth.UserEnterpriseAuthCreateReqVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelConfigBaseRespVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserScoreLevelVO;
import cn.iocoder.yudao.module.member.vo.userOperationLog.UserOperationLogBackVO;
import com.alibaba.excel.util.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
......@@ -95,6 +98,9 @@ public class MemberUserController {
@Resource
private PasswordEncoder passwordEncoder;
@Resource
private MemberUserLevelConfigService memberUserLevelConfigService;
@GetMapping("/member-user-list")
@ApiOperation("获得会员帐号列表-下拉列表使用")
......@@ -136,6 +142,16 @@ public class MemberUserController {
if (passwordEncoder.matches("88888888", user.getPassword())) {
userBackVO.setIsSimplePassword(Boolean.TRUE);
}
MemberUserLevelConfigBaseRespVO userScoreLevelVO = memberUserLevelConfigService.getLevelByCount(user.getTotalScore());
MemberUserScoreLevelVO scoreLevelVO = MemberUserScoreLevelVO.builder().memberId(user.getId())
.memberCode(user.getMemberCode())
.holdScore(user.getHoldScore())
.expiredScore(user.getExpiredScore())
.usedScore(user.getUsedScore())
.levelIcon(userScoreLevelVO.getIcon())
.levelName(userScoreLevelVO.getName())
.build();
userBackVO.setUserScoreLevelInfo(scoreLevelVO);
userBackVO.setPassword(null);
userBackVO.setBackLetterImg(null);
return success(userBackVO);
......
package cn.iocoder.yudao.module.member.controller.admin.user.vo;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserScoreLevelVO;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
......@@ -233,4 +234,26 @@ public class UserBackVO {
@ApiModelProperty(value = "是否简单密码", example = "false")
private Boolean isSimplePassword = Boolean.FALSE;
/**
* 客户编码
*/
@ApiModelProperty(value = "客户编码")
private String customerCode;
/**
* 客户编码
*/
@ApiModelProperty(value = "客户id")
private Long customerId;
@ApiModelProperty(value = "会员编码")
private String memberCode;
@ApiModelProperty(value = "会员积分信息")
private MemberUserScoreLevelVO userScoreLevelInfo;
@ApiModelProperty(value = "会员国家中文")
private String countryTitleZh;
@ApiModelProperty(value = "会员国家英文")
private String countryTitleEn;
@ApiModelProperty(value = "会员城市中文")
private String cityTitleZh;
@ApiModelProperty(value = "会员国家英文")
private String cityTitleEn;
}
......@@ -31,5 +31,8 @@ public class UserQueryVO {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
@ApiModelProperty(value = "创建结束时间")
private Date endCreateTime;
@ApiModelProperty(value = "客户编码")
private String customerCode;
@ApiModelProperty(value = "会员编码")
private String memberCode;
}
......@@ -9,6 +9,7 @@ import lombok.*;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import java.util.Date;
import java.util.Optional;
/**
* 会员用户 DO
......@@ -237,4 +238,36 @@ public class MemberUserDO extends TenantBaseDO {
private String code;
private Integer holdScore;
private Integer usedScore;
private Integer expiredScore;
/**
* 客户编码
*/
@TableField(exist = false)
private String customerCode;
/**
* 客户编码
*/
@TableField(exist = false)
private Long customerId;
@TableField(exist = false)
private String memberCode;
@TableField(exist = false)
private String countryTitleZh;
@TableField(exist = false)
private String countryTitleEn;
@TableField(exist = false)
private String cityTitleZh;
@TableField(exist = false)
private String cityTitleEn;
public Integer getTotalScore() {
return Optional.ofNullable(holdScore).orElse(0)
+ Optional.ofNullable(usedScore).orElse(0)
+ Optional.ofNullable(expiredScore).orElse(0);
}
}
......@@ -161,12 +161,25 @@ public interface MemberUserMapper extends BaseMapperX<MemberUserDO> {
" uea.`create_time` as enterprise_audit_create_time,",
" uea.`audit_time` as enterprise_audit_time," ,
" uea.`audit_remark` as enterprise_audit_remark,",
" ifnull( mus.`hold_score`, 0) as hold_score",
" ec.id as customerId,",
" ec.number as customerCode,",
" u.code as memberCode,",
" er.title_zh as countryTitleZh,",
" er.title_en as countryTitleEn,",
" ert.title_zh as cityTitleZh,",
" ert.title_en as cityTitleEn,",
" ifnull( mus.`hold_score`, 0) as hold_score,",
" ifnull( mus.`used_score`, 0) as used_score,",
" ifnull( mus.`expired_score`, 0) as expired_score",
"from member_user u ",
"left join member_user_enterprise e on e.user_id = u.id and e.deleted = 0 ",
"left join member_user_card_auth uca on u.id = uca.user_id and uca.deleted = 0 " ,
"left join member_user_enterprise_auth uea on u.id = uea.user_id and uea.deleted = 0 ",
"left join member_user_score mus on u.id = mus.member_id and mus.deleted = 0 ",
"left join ecw_customer_contacts ecc on u.id = ecc.userid and ecc.is_default = 1 and ecc.deleted = 0",
"left join ecw_customer ec on ecc.customer_id = ec.id and ec.deleted = 0",
"left join ecw_region er on er.id = u.country",
"left join ecw_region ert on ert.id = u.city",
"where ",
"u.deleted = 0 ",
"AND u.id = #{id} ",
......
......@@ -3,9 +3,9 @@ package cn.iocoder.yudao.module.member.service.level;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.service.IService;
import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberUserLevelConfigDO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelBaseRespVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelReqVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelUpdateVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelConfigBaseRespVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelConfigReqVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelConfigUpdateVO;
import java.util.List;
......@@ -16,11 +16,13 @@ import java.util.List;
*/
public interface MemberUserLevelConfigService extends IService<MemberUserLevelConfigDO> {
PageResult<MemberUserLevelBaseRespVO> getLevelPage(MemberUserLevelReqVO query);
PageResult<MemberUserLevelConfigBaseRespVO> getLevelPage(MemberUserLevelConfigReqVO query);
Boolean delete(List<Long> ids);
Boolean add(MemberUserLevelUpdateVO query);
Boolean add(MemberUserLevelConfigUpdateVO query);
Boolean updateLevel(MemberUserLevelUpdateVO query);
Boolean updateLevel(MemberUserLevelConfigUpdateVO query);
MemberUserLevelConfigBaseRespVO getLevelByCount(Integer scoreCount);
}
......@@ -5,10 +5,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.service.AbstractService;
import cn.iocoder.yudao.module.member.dal.dataobject.level.MemberUserLevelConfigDO;
import cn.iocoder.yudao.module.member.dal.mysql.memberUserLevel.MemberUserLevelConfigMapper;
import cn.iocoder.yudao.module.member.vo.memberUserScore.MemberUserScoreBackVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelBaseRespVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelReqVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelUpdateVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelConfigBaseRespVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelConfigReqVO;
import cn.iocoder.yudao.module.member.vo.userLevel.MemberUserLevelConfigUpdateVO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
......@@ -17,11 +16,11 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.GET_LOCK_FAILED;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.LEVEL_BOUND_RANGE_CONFLICT;
import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.LEVEL_BOUND_RANGE_ERROR;
......@@ -42,14 +41,14 @@ public class MemberUserLevelConfigServiceImpl extends AbstractService<MemberUser
}
@Override
public PageResult<MemberUserLevelBaseRespVO> getLevelPage(MemberUserLevelReqVO query) {
public PageResult<MemberUserLevelConfigBaseRespVO> getLevelPage(MemberUserLevelConfigReqVO query) {
int start = (query.getPageNo() - 1) * query.getPageSize();
int size = query.getPageSize();
LambdaQueryWrapper<MemberUserLevelConfigDO> wrapper = Wrappers.lambdaQuery();
wrapper.eq(MemberUserLevelConfigDO::getDeleted, 0);
wrapper.last(String.format("limit %s, %s", start, size));
List<MemberUserLevelConfigDO> list = this.list(wrapper);
List<MemberUserLevelBaseRespVO> result = list.stream().map(i -> BeanUtil.copyProperties(i, MemberUserLevelBaseRespVO.class)).collect(Collectors.toList());
List<MemberUserLevelConfigBaseRespVO> result = list.stream().map(i -> BeanUtil.copyProperties(i, MemberUserLevelConfigBaseRespVO.class)).collect(Collectors.toList());
Long total = memberUserLevelConfigMapper.selectCount();
return new PageResult<>(result, total, query.getPageSize(), query.getPageNo(), (total + query.getPageSize() - 1) / query.getPageSize());
}
......@@ -66,13 +65,13 @@ public class MemberUserLevelConfigServiceImpl extends AbstractService<MemberUser
}
@Override
public Boolean add(MemberUserLevelUpdateVO query) {
public Boolean add(MemberUserLevelConfigUpdateVO query) {
validate(query);
MemberUserLevelConfigDO memberUserLevelConfigDO = BeanUtil.copyProperties(query, MemberUserLevelConfigDO.class);
return this.saveOrUpdate(memberUserLevelConfigDO);
}
private void validate(MemberUserLevelUpdateVO query) {
private void validate(MemberUserLevelConfigUpdateVO query) {
if (query.getLowerCount() > query.getUpperCount()) {
throw exception(LEVEL_BOUND_RANGE_ERROR);
}
......@@ -93,9 +92,20 @@ public class MemberUserLevelConfigServiceImpl extends AbstractService<MemberUser
}
@Override
public Boolean updateLevel(MemberUserLevelUpdateVO query) {
public Boolean updateLevel(MemberUserLevelConfigUpdateVO query) {
validate(query);
MemberUserLevelConfigDO memberUserLevelConfigDO = BeanUtil.copyProperties(query, MemberUserLevelConfigDO.class);
return this.saveOrUpdate(memberUserLevelConfigDO);
}
@Override
public MemberUserLevelConfigBaseRespVO getLevelByCount(Integer scoreCount) {
List<MemberUserLevelConfigDO> levelConfigList = this.list();
List<MemberUserLevelConfigDO> sortLevelConfig = levelConfigList.stream()
.sorted(Comparator.comparing(MemberUserLevelConfigDO::getLowerCount))
.collect(Collectors.toList());
MemberUserLevelConfigDO memberUserLevelConfigDO = sortLevelConfig.stream().filter(config -> config.getLowerCount() >= scoreCount && config.getUpperCount() <= scoreCount)
.findAny().orElse(sortLevelConfig.get(sortLevelConfig.size() - 1));
return BeanUtil.copyProperties(memberUserLevelConfigDO, MemberUserLevelConfigBaseRespVO.class);
}
}
......@@ -402,7 +402,12 @@ public class MemberUserServiceImpl implements MemberUserService {
if (query.getBeginCreateTime() != null && query.getEndCreateTime() != null) {
wrapper.between("create_time", query.getBeginCreateTime(), query.getEndCreateTime());
}
if (StringUtils.isNotBlank(query.getCustomerCode())) {
wrapper.like("customerCode", query.getCustomerCode());
}
if (StringUtils.isNotBlank(query.getMemberCode())) {
wrapper.like("code", query.getMemberCode());
}
//成交状态
Boolean isDeal = query.getIsDeal();
wrapper.apply(isDeal != null, "customer_status " + (Boolean.TRUE.equals(isDeal) ? " = 3 " : " != 3"), null);
......
......@@ -31,4 +31,6 @@ public class MemberUserScoreQueryVO extends PageParam {
private Date startTime;
@ApiModelProperty(value = "会员创建时间结束")
private Date endTime;
@ApiModelProperty(value = "会员id")
private Long memberId;
}
......@@ -29,4 +29,6 @@ public class MemberUserScoreLogQueryVO extends PageParam {
private Date startTime;
@ApiModelProperty(value = "结束时间")
private Date endTime;
@ApiModelProperty(value = "会员id")
private Long memberId;
}
......@@ -6,7 +6,7 @@ import lombok.Data;
@Data
@ApiModel("管理后台 - 会员等级查询返回 VO")
public class MemberUserLevelBaseRespVO {
public class MemberUserLevelConfigBaseRespVO {
@ApiModelProperty(value = "id")
private Long id;
/**
......
......@@ -10,7 +10,7 @@ import lombok.Data;
*/
@Data
@ApiModel("管理后台 - 会员等级配置查询 VO")
public class MemberUserLevelReqVO extends PageParam {
public class MemberUserLevelConfigReqVO extends PageParam {
@ApiModelProperty(value = "id")
private Long id;
}
......@@ -8,7 +8,7 @@ import javax.validation.constraints.NotNull;
@Data
@ApiModel("管理后台 - 会员等级编辑 VO")
public class MemberUserLevelUpdateVO {
public class MemberUserLevelConfigUpdateVO {
@ApiModelProperty(value = "id")
private Long id;
/**
......
package cn.iocoder.yudao.module.member.vo.userLevel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@ApiModel("管理后台 - 会员积分等级 VO")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MemberUserScoreLevelVO {
@ApiModelProperty(value = "会员id")
private Long memberId;
@ApiModelProperty(value = "会员编码")
private String memberCode;
@ApiModelProperty(value = "持有积分")
private Integer holdScore;
@ApiModelProperty(value = "已使用积分")
private Integer usedScore;
@ApiModelProperty(value = "过期积分")
private Integer expiredScore;
@ApiModelProperty(value = "会员等级名称")
private String levelName;
@ApiModelProperty(value = "会员等级图标")
private String levelIcon;
}
......@@ -24,10 +24,15 @@
uea.`create_time` as enterprise_audit_create_time,
uea.`audit_time` as enterprise_audit_time,
uea.`audit_remark` as enterprise_audit_remark
uea.`audit_remark` as enterprise_audit_remark,
ec.id as customerId,
ec.number as customerCode,
u.code as memberCode
from member_user u
left join member_user_card_auth uca on u.id = uca.user_id
left join member_user_enterprise_auth uea on u.id = uea.user_id
left join ecw_customer_contacts ecc on u.id = ecc.userid
left join ecw_customer ec on ec.id = ecc.customer_id
where 1 = 1
and uca.deleted = 0 or uca.deleted is null
</sql>
......
......@@ -68,5 +68,8 @@
and musl.score_count &lt; #{query.scoreCount}
</if>
</if>
<if test="query.memberId != null">
and musl.member_id = #{query.memberId}
</if>
</sql>
</mapper>
......@@ -32,4 +32,6 @@ public class RewardRedeemPageReqVO extends PageParam {
private Integer entrance;
@ApiModelProperty(value = "兑换网点")
private Integer nodeId;
@ApiModelProperty(value = "会员id")
private Long memberId;
}
......@@ -151,5 +151,8 @@
<if test="req.endTime != null ">
and err.create_time &lt;= #{req.endTime}
</if>
<if test="req.memberId != null">
and err.member_id = #{req.memberId}
</if>
</sql>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment