package com.sandu.ximon.admin.pay.wxpay;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.github.pagehelper.PageHelper;
|
import com.sandu.common.execption.BusinessException;
|
import com.sandu.common.object.BaseConditionVO;
|
import com.sandu.common.service.impl.BaseServiceImpl;
|
import com.sandu.ximon.admin.param.WxpayConfigParam;
|
import com.sandu.ximon.admin.security.SecurityUtils;
|
import com.sandu.ximon.admin.service.ClientService;
|
import com.sandu.ximon.admin.service.PoleService;
|
import com.sandu.ximon.admin.utils.SpringContextUtil;
|
import com.sandu.ximon.dao.domain.Pole;
|
import com.sandu.ximon.dao.domain.WxConfigEntity;
|
import com.sandu.ximon.dao.mapper.UsrWxPayConfigMapper;
|
import lombok.AllArgsConstructor;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.List;
|
|
/**
|
* @Author liuhaonan
|
* @Date 2022/3/18 14:37
|
* @Version 1.0
|
*/
|
@Service
|
@AllArgsConstructor
|
public class UsrWxPayConfigService extends BaseServiceImpl<UsrWxPayConfigMapper, WxConfigEntity> {
|
|
private final UsrWxPayConfigMapper wxPayConfigMapper;
|
private final ClientService clientService;
|
private final PoleService poleService;
|
|
public WxConfigEntity getConfigByPoleId(Long poleId) {
|
Pole pole = poleService.getById(poleId);
|
if (pole == null) {
|
throw new BusinessException("灯杆id错误或灯杆不存在");
|
}
|
WxConfigEntity config;
|
//未设置支付参数,则使用默认支付参数
|
config = getOne(Wrappers.lambdaQuery(WxConfigEntity.class).eq(WxConfigEntity::getClientId, pole.getClientId()).eq(WxConfigEntity::getState, 1));
|
if (config == null) {
|
throw new BusinessException("用户未配置支付配置,请配置后重试");
|
}
|
return config;
|
}
|
|
|
public static UsrWxPayConfigService getBean() {
|
return (UsrWxPayConfigService) SpringContextUtil.getBean("UsrWxPayConfigService");
|
}
|
|
|
public boolean addWxPayConfig(WxpayConfigParam configParam) {
|
WxConfigEntity config = new WxConfigEntity();
|
BeanUtil.copyProperties(configParam, config);
|
config.setAppid(configParam.getAppId());
|
config.setAppappid(configParam.getAppAppId());
|
if (SecurityUtils.getClientId() != null) {
|
if (clientService.findClientId()) {
|
config.setClientId(clientService.getClientId());
|
} else {
|
config.setClientId(SecurityUtils.getUserId());
|
}
|
config.setCreateUserId(SecurityUtils.getUserId());
|
} else {
|
config.setClientId(SecurityUtils.getUserId());
|
config.setCreateUserId(SecurityUtils.getUserId());
|
}
|
return save(config);
|
}
|
|
public boolean updateWxPayConfig(Long id, WxpayConfigParam configParam) {
|
WxConfigEntity byId = getById(id);
|
if (byId == null) {
|
throw new BusinessException("配置id错误或配置不存在");
|
}
|
WxConfigEntity config = new WxConfigEntity();
|
BeanUtil.copyProperties(configParam, config);
|
config.setAppid(configParam.getAppId());
|
config.setAppappid(configParam.getAppAppId());
|
config.setConfigId(id);
|
return updateById(config);
|
}
|
|
public boolean deleteWxPayConfig(Long id) {
|
WxConfigEntity byId = getById(id);
|
if (byId == null) {
|
throw new BusinessException("配置id错误或配置不存在");
|
}
|
return removeById(id);
|
}
|
|
|
public List<WxConfigEntity> configList(BaseConditionVO baseConditionVO, String keyword) {
|
LambdaQueryWrapper<WxConfigEntity> wrapper = new LambdaQueryWrapper<>();
|
System.out.println("----------------------------" + clientService.findClientId());
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
|
if (SecurityUtils.getClientId() != null) {
|
//客户
|
if (clientService.findClientId()) {
|
//二级客户
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
|
wrapper = Wrappers.lambdaQuery(WxConfigEntity.class).eq(WxConfigEntity::getCreateUserId, SecurityUtils.getUserId());
|
} else if (!clientService.findClientId()) {
|
//一级客户
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
|
wrapper = Wrappers.lambdaQuery(WxConfigEntity.class).eq(WxConfigEntity::getClientId, SecurityUtils.getUserId());
|
}
|
} else {
|
//管理
|
PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize());
|
wrapper = Wrappers.lambdaQuery(WxConfigEntity.class);
|
}
|
if (keyword != null && !keyword.isEmpty()) {
|
wrapper = wrapper.like(WxConfigEntity::getConfigId, keyword).or(
|
appid -> {
|
appid.like(WxConfigEntity::getAppid, keyword);
|
}
|
).or(
|
appappid -> {
|
appappid.like(WxConfigEntity::getAppappid, keyword);
|
}
|
).or(
|
mchId -> {
|
mchId.like(WxConfigEntity::getMchId, keyword);
|
}
|
).or(
|
privateKey -> {
|
privateKey.like(WxConfigEntity::getPrivateKey, keyword);
|
}
|
);
|
}
|
List<WxConfigEntity> list = list(wrapper);
|
list.forEach(
|
wxConfigEntity -> {
|
//设置支付参数中的appid和appappid mchId和privateKey中的部分替换为*
|
wxConfigEntity.setAppid(wxConfigEntity.getAppid().replaceAll("(?<=.{4}).*(?=.{4})", "*"));
|
wxConfigEntity.setAppappid(wxConfigEntity.getAppappid().replaceAll("(?<=.{4}).*(?=.{4})", "*"));
|
wxConfigEntity.setMchId(wxConfigEntity.getMchId().replaceAll("(?<=.{4}).*(?=.{4})", "*"));
|
wxConfigEntity.setPrivateKey(wxConfigEntity.getPrivateKey().replaceAll("(?<=.{4}).*(?=.{4})", "*"));
|
wxConfigEntity.setAppSecret(wxConfigEntity.getAppSecret().replaceAll("(?<=.{4}).*(?=.{4})", "*"));
|
}
|
);
|
return list;
|
}
|
|
/**
|
* 支付参数配置的停用/启用
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
public boolean updateState(Long id, Integer state) {
|
WxConfigEntity byId = getById(id);
|
if (byId == null) {
|
throw new BusinessException("配置id错误或配置不存在");
|
}
|
/**
|
* 获取当前用户所有的wx支付配置
|
*/
|
List<WxConfigEntity> configList;
|
if (SecurityUtils.getClientId() != null) {
|
//客户
|
configList = list(Wrappers.lambdaQuery(WxConfigEntity.class).eq(WxConfigEntity::getClientId, SecurityUtils.getUserId())
|
.or(
|
user -> {
|
user.eq(WxConfigEntity::getCreateUserId, SecurityUtils.getUserId());
|
}
|
));
|
} else {
|
//管理
|
configList = list(Wrappers.lambdaQuery(WxConfigEntity.class).eq(WxConfigEntity::getClientId, byId.getCreateUserId())
|
.or(
|
user -> {
|
user.eq(WxConfigEntity::getCreateUserId, SecurityUtils.getUserId());
|
}
|
));
|
}
|
if (configList.size() == 1 && state == 0) {
|
throw new BusinessException("当前用户只有一个支付配置,不能停用");
|
}
|
//设置当前用户所有的支付配置为停用
|
configList.forEach(
|
wxConfigEntity -> {
|
wxConfigEntity.setState(0);
|
}
|
);
|
boolean b = updateBatchById(configList);
|
if (!b) {
|
throw new BusinessException("更新失败");
|
}
|
|
WxConfigEntity config = new WxConfigEntity();
|
config.setConfigId(id);
|
config.setState(state);
|
return updateById(config);
|
}
|
|
}
|