package com.sinata.modular.member.service.impl;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.sinata.common.enums.EnumUserBankDetailDoneType;
|
import com.sinata.common.enums.EnumUserBankDetailType;
|
import com.sinata.core.shiro.ShiroKit;
|
import com.sinata.modular.member.dao.MemUserMapper;
|
import com.sinata.modular.member.model.MemUser;
|
import com.sinata.modular.member.model.MemUserBankDetail;
|
import com.sinata.modular.member.service.IMemUserBankDetailService;
|
import com.sinata.modular.member.service.IMemUserService;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.StringUtils;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.time.LocalDateTime;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 会员用户信息 服务实现类
|
* </p>
|
*
|
* @author goku
|
* @since 2023-03-23
|
*/
|
@Service
|
public class MemUserServiceImpl extends ServiceImpl<MemUserMapper, MemUser> implements IMemUserService {
|
|
@Resource
|
private IMemUserBankDetailService memoryUserBankDetailService;
|
|
@Override
|
public List<Map<String, Object>> getMapList(Wrapper wrapper) {
|
boolean admin = ShiroKit.isAdmin();
|
if (admin) {
|
return baseMapper.getMapList(wrapper);
|
} else {
|
return baseMapper.getMapListAuth(wrapper);
|
}
|
}
|
|
@Override
|
public List<Map<String, Object>> getMapList(Page<Map<String, Object>> page, Wrapper wrapper) {
|
boolean admin = ShiroKit.isAdmin();
|
if (admin) {
|
return baseMapper.getMapList(page, wrapper);
|
} else {
|
return baseMapper.getMapListAuth(page, wrapper);
|
}
|
}
|
|
@Override
|
public Object[] getIdArrayByUser(String showId, String phone, String nickName) {
|
// 设置查询条件
|
Wrapper<MemUser> wrapper = new EntityWrapper<MemUser>().setSqlSelect("id");
|
if (!StringUtils.isEmpty(showId)) {
|
wrapper.like("show_id", showId);
|
}
|
if (!StringUtils.isEmpty(phone)) {
|
wrapper.like("phone", phone);
|
}
|
if (!StringUtils.isEmpty(nickName)) {
|
wrapper.like("nick_name", nickName);
|
}
|
|
// 查询用户列表
|
List<MemUser> userList = baseMapper.selectList(wrapper);
|
|
// 封装用户ID
|
Object[] idArray = new Integer[]{0};
|
if (userList != null && userList.size() > 0) {
|
idArray = userList.stream().map(o -> o.getId()).collect(Collectors.toList()).toArray();
|
}
|
return idArray;
|
}
|
|
@Override
|
public void wrapperMapUser(List<Map<String, Object>> list, String userKey) {
|
// 用户ID串
|
Object[] userIds = list.stream().map(o -> o.get(userKey)).collect(Collectors.toList()).toArray();
|
// 用户列表
|
List<MemUser> userList = baseMapper.selectList(
|
new EntityWrapper<MemUser>()
|
.setSqlSelect("id, show_id showId, phone, nick_name nickName")
|
.in("id", userIds)
|
);
|
|
// 封装数据
|
for (Map<String, Object> map : list) {
|
for (MemUser u : userList) {
|
if (u.getId().toString().equals(map.get(userKey) + "")) {
|
map.put(userKey + "_showId", u.getShowId());
|
map.put(userKey + "_phone", u.getPhone());
|
map.put(userKey + "_nickName", u.getNickName());
|
}
|
}
|
}
|
}
|
|
@Override
|
public List<MemUser> getUserListByGrade(Integer memberGradeId) {
|
return this.selectList(
|
new EntityWrapper<MemUser>()
|
.setSqlSelect("id, show_id, nick_name, real_name, member_grade_id")
|
.eq("member_grade_id", memberGradeId)
|
);
|
}
|
|
@Override
|
@Transactional
|
public void subIntegralCancelOrder(String orderNo) {
|
MemUserBankDetail bankDetail = memoryUserBankDetailService.selectOne(
|
new EntityWrapper<MemUserBankDetail>()
|
.eq("order_no", orderNo)
|
.last("LIMIT 1")
|
);
|
|
if (bankDetail != null) {
|
// 计算增加积分
|
BigDecimal subIntegral = bankDetail.getAmount().multiply(BigDecimal.valueOf(-1));
|
if (subIntegral.compareTo(BigDecimal.ZERO) <= 0) {
|
// 获取用户信息
|
MemUser user = this.selectById(bankDetail.getUserId());
|
if (user != null) {
|
BigDecimal oldAmount = user.getIntegral();
|
// 增加积分
|
user.setIntegral(user.getIntegral().add(subIntegral));
|
this.updateById(user);
|
|
// 添加账户明细记录
|
bankDetail
|
.setId(null)
|
.setType(EnumUserBankDetailType.INTEGRAL.index)
|
.setDoneType(EnumUserBankDetailDoneType.SUB_INTEGRAL_CANCEL_ORDER.index)
|
.setMark(EnumUserBankDetailDoneType.SUB_INTEGRAL_CANCEL_ORDER.mark)
|
.setAmount(subIntegral)
|
.setOldAmount(oldAmount)
|
.setCreateTime(LocalDateTime.now())
|
.insert();
|
}
|
}
|
}
|
}
|
|
}
|