积分全量/批量操作

master
382696293@qq.com 2 years ago
parent efdaa52eb8
commit 9009f8b72b

@ -4,7 +4,6 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import com.flossom.common.core.annotation.Excel;
import com.flossom.common.core.web.domain.BaseEntity;
import java.math.BigDecimal;
import java.util.Date;
/**
@ -43,7 +42,7 @@ public class WxUserMember extends BaseEntity {
*
*/
@Excel(name = "积分")
private BigDecimal credit;
private Integer credit;
/**
* openid
@ -199,11 +198,11 @@ public class WxUserMember extends BaseEntity {
return username;
}
public void setCredit(BigDecimal credit) {
public void setCredit(Integer credit) {
this.credit = credit;
}
public BigDecimal getCredit() {
public Integer getCredit() {
return credit;
}
@ -371,7 +370,7 @@ public class WxUserMember extends BaseEntity {
public WxUserMember() {
}
public WxUserMember(Long id, String nickname, String headimg, String username, BigDecimal credit, String openid, String unionid, Integer userType, Integer level, String mobile, String provinceId, String province, String cityId, String city, String areaId, String area, Date birthday, Integer clock, Integer activity, String wechat, Integer isAbutment, Integer isCompleteInformation, Integer devicesNum, Date loginTime, Integer status) {
public WxUserMember(Long id, String nickname, String headimg, String username, Integer credit, String openid, String unionid, Integer userType, Integer level, String mobile, String provinceId, String province, String cityId, String city, String areaId, String area, Date birthday, Integer clock, Integer activity, String wechat, Integer isAbutment, Integer isCompleteInformation, Integer devicesNum, Date loginTime, Integer status) {
this.id = id;
this.nickname = nickname;
this.headimg = headimg;

@ -0,0 +1,69 @@
package com.flossom.common.core.domain.req;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
*
*
* @author flossom
* @date 2023-12-14
*/
public class WxUserIntegralVm {
/**
* 1- 2-
*/
@NotBlank(message = "请选择积分操作类型")
private String source;
/**
*
*/
@NotNull(message = "积分变动值不能为空")
@Range(min = 0, max = 10000, message = "请正确输入积分变动值")
private Long floatScore;
/**
*
*/
@NotBlank(message = "请输入积分操作说明")
private String remarkContent;
public WxUserIntegralVm() {
}
public WxUserIntegralVm(String source, Long floatScore, String remarkContent) {
this.source = source;
this.floatScore = floatScore;
this.remarkContent = remarkContent;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public Long getFloatScore() {
return floatScore;
}
public void setFloatScore(Long floatScore) {
this.floatScore = floatScore;
}
public String getRemarkContent() {
return remarkContent;
}
public void setRemarkContent(String remarkContent) {
this.remarkContent = remarkContent;
}
}

@ -0,0 +1,37 @@
package com.flossom.common.core.enums;
import java.util.Arrays;
/**
*
*
* @author flossom
*/
public enum IntegralChangeTypeEnum {
INCREASE("1", "增加"), REDUCE("2", "减少");
private final String code;
private final String info;
IntegralChangeTypeEnum(String code, String info) {
this.code = code;
this.info = info;
}
public String getCode() {
return code;
}
public String getInfo() {
return info;
}
public static Boolean isIntegralChangType(String code) {
for (IntegralChangeTypeEnum typeEnum : IntegralChangeTypeEnum.values()) {
if (typeEnum.getCode().equals(code)) {
return true;
}
}
return false;
}
}

@ -3,7 +3,6 @@ package com.flossom.miniProgram.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.flossom.common.core.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date;
public class LoginUserVo {
@ -35,7 +34,7 @@ public class LoginUserVo {
*
*/
@Excel(name = "积分")
private BigDecimal credit;
private Integer credit;
/**
*
@ -92,7 +91,7 @@ public class LoginUserVo {
public LoginUserVo() {
}
public LoginUserVo(Long id, String nickname, String headimg, String username, BigDecimal credit, String mobile, String provinceId, String province, String cityId, String city, String areaId, String area, Date birthday, String token) {
public LoginUserVo(Long id, String nickname, String headimg, String username, Integer credit, String mobile, String provinceId, String province, String cityId, String city, String areaId, String area, Date birthday, String token) {
this.id = id;
this.nickname = nickname;
this.headimg = headimg;
@ -141,11 +140,11 @@ public class LoginUserVo {
this.username = username;
}
public BigDecimal getCredit() {
public Integer getCredit() {
return credit;
}
public void setCredit(BigDecimal credit) {
public void setCredit(Integer credit) {
this.credit = credit;
}

@ -4,8 +4,11 @@ import javax.servlet.http.HttpServletResponse;
import com.flossom.common.core.domain.R;
import com.flossom.common.core.domain.entity.WxUserMember;
import com.flossom.common.core.domain.req.WxUserIntegralVm;
import com.flossom.common.core.domain.req.WxUserMemberVm;
import com.flossom.common.core.enums.IntegralChangeTypeEnum;
import com.flossom.common.core.exception.ServiceException;
import com.flossom.common.core.utils.StringUtils;
import com.flossom.common.core.utils.poi.ExcelUtil;
import com.flossom.common.core.web.controller.BaseController;
import com.flossom.common.core.web.domain.AjaxResult;
@ -15,6 +18,7 @@ import com.flossom.common.log.enums.BusinessType;
import com.flossom.common.security.annotation.RequiresPermissions;
import com.flossom.system.service.IWxUserMemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -165,4 +169,36 @@ public class WxUserMemberController extends BaseController {
return R.ok();
}
/**
*
*/
@PostMapping("/batchChangIntegral")
public R batchChangIntegral(@Validated WxUserIntegralVm wxUserIntegralVm, @RequestParam(value = "userIdList") List<Long> userIdList) {
if (userIdList == null || userIdList.size() == 0
|| !IntegralChangeTypeEnum.isIntegralChangType(wxUserIntegralVm.getSource())) {
logger.error("积分操作类型选择有误");
throw new ServiceException("积分操作类型选择有误");
}
wxUserMemberService.batchChangIntegral(wxUserIntegralVm, userIdList);
return R.ok();
}
/**
*
*/
@PostMapping("/allChangIntegral")
public R allChangIntegral(@Validated WxUserIntegralVm wxUserIntegralVm, WxUserMemberVm wxUserMemberVm) {
if (IntegralChangeTypeEnum.isIntegralChangType(wxUserIntegralVm.getSource())) {
logger.error("积分操作类型选择有误");
throw new ServiceException("积分操作类型选择有误");
}
List<WxUserMember> list = wxUserMemberService.selectWxUserMemberList(wxUserMemberVm);
if (list != null && list.size() > 0) {
List<Long> collect = list.stream().map(wxUserMember -> wxUserMember.getId()).collect(Collectors.toList());
wxUserMemberService.batchChangIntegral(wxUserIntegralVm, collect);
}
return R.ok();
}
}

@ -2,6 +2,7 @@ package com.flossom.system.service;
import com.flossom.common.core.domain.entity.WxUserMember;
import com.flossom.common.core.domain.req.WxUserIntegralVm;
import com.flossom.common.core.domain.req.WxUserMemberVm;
import java.util.List;
@ -75,4 +76,6 @@ public interface IWxUserMemberService
void batchAddMiniProgramTag(List<Integer> tagId, List<Integer> userIds);
void batchDelMiniProgramTag(List<Integer> tagIdList, List<Integer> userIdList);
void batchChangIntegral(WxUserIntegralVm wxUserIntegralVm, List<Long> userIdList);
}

@ -5,17 +5,24 @@ import java.util.Iterator;
import java.util.List;
import com.flossom.common.core.domain.entity.SysTag;
import com.flossom.common.core.domain.entity.WxUserIntegralLog;
import com.flossom.common.core.domain.entity.WxUserMember;
import com.flossom.common.core.domain.entity.WxUserTag;
import com.flossom.common.core.domain.req.WxUserIntegralVm;
import com.flossom.common.core.domain.req.WxUserMemberVm;
import com.flossom.common.core.enums.IntegralChangeTypeEnum;
import com.flossom.common.core.enums.TagTypeStatus;
import com.flossom.common.core.mapper.SysTagMapper;
import com.flossom.common.core.mapper.WxUserIntegralLogMapper;
import com.flossom.common.core.mapper.WxUserMemberMapper;
import com.flossom.common.core.mapper.WxUserTagMapper;
import com.flossom.common.core.utils.DateUtils;
import com.flossom.common.security.utils.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.flossom.system.service.IWxUserMemberService;
import org.springframework.transaction.annotation.Transactional;
/**
* Service
@ -34,6 +41,9 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
@Autowired
private SysTagMapper sysTagMapper;
@Autowired
private WxUserIntegralLogMapper wxUserIntegralLogMapper;
/**
*
*
@ -156,6 +166,7 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
}
}
}
// TODO: 对接数赢:批量添加小程序标签
}
/**
@ -167,5 +178,47 @@ public class WxUserMemberServiceImpl implements IWxUserMemberService {
@Override
public void batchDelMiniProgramTag(List<Integer> tagIdList, List<Integer> userIdList) {
wxUserTagMapper.deleteBatch(tagIdList, userIdList);
// TODO: 对接数赢:批量删除小程序标签
}
/**
* /
*
* @param wxUserIntegralVm
* @param userIdList
*/
@Transactional
@Override
public void batchChangIntegral(WxUserIntegralVm wxUserIntegralVm, List<Long> userIdList) {
for (Long userId : userIdList) {
// 1、记录积分操作日志
WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberById(userId);
if (wxUserMember != null) {
WxUserIntegralLog wxUserIntegralLog = new WxUserIntegralLog();
wxUserIntegralLog.setUserId(userId);
wxUserIntegralLog.setUserName(wxUserMember.getNickname());
wxUserIntegralLog.setUserPhone(wxUserMember.getMobile());
BeanUtils.copyProperties(wxUserIntegralVm, wxUserIntegralLog);
wxUserIntegralLog.setCreateTime(DateUtils.getNowDate());
wxUserIntegralLog.setCreateBy(SecurityUtils.getUsername());
wxUserIntegralLogMapper.insertWxUserIntegralLog(wxUserIntegralLog);
}
// 2、变更总积分
WxUserMember changeUserMember = new WxUserMember();
if (wxUserIntegralVm.getSource().equals(IntegralChangeTypeEnum.INCREASE.getCode())) {
changeUserMember.setCredit(wxUserMember.getCredit() + wxUserIntegralVm.getFloatScore().intValue());
} else if (wxUserIntegralVm.getSource().equals(IntegralChangeTypeEnum.REDUCE.getCode())) {
if (wxUserMember.getCredit() < Integer.valueOf(wxUserIntegralVm.getSource())) {
changeUserMember.setCredit(0);
} else {
changeUserMember.setCredit(wxUserMember.getCredit() - wxUserIntegralVm.getFloatScore().intValue());
}
}
changeUserMember.setId(wxUserMember.getId());
changeUserMember.setUpdateTime(DateUtils.getNowDate());
changeUserMember.setUpdateBy(SecurityUtils.getUsername());
wxUserMemberMapper.updateWxUserMember(changeUserMember);
}
// TODO: 对接数赢:批量积分操作
}
}

Loading…
Cancel
Save