use of com.wayn.common.exception.BusinessException in project waynboot-mall by wayn111.
the class LoginService method login.
@SneakyThrows
public String login(String username, String password) {
// 用户验证
Authentication authentication;
try {
// 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
} catch (Exception e) {
if (e instanceof BadCredentialsException) {
throw new BadCredentialsException(e.getMessage(), e);
} else {
throw new BusinessException(e.getMessage());
}
}
LoginUserDetail principal = (LoginUserDetail) authentication.getPrincipal();
return tokenService.createToken(principal);
}
use of com.wayn.common.exception.BusinessException in project waynboot-mall by wayn111.
the class GoodsServiceImpl method syncGoods2Es.
/**
* 同步商品信息到es中
*
* @param goods 商品信息
*/
public boolean syncGoods2Es(Goods goods) throws IOException {
// 同步es
ElasticEntity elasticEntity = new ElasticEntity();
elasticEntity.setId(goods.getId().toString());
Map<String, Object> map = new HashMap<>();
map.put("id", goods.getId());
map.put("name", goods.getName());
map.put("countPrice", goods.getCounterPrice());
map.put("retailPrice", goods.getRetailPrice());
map.put("keyword", Objects.isNull(goods.getKeywords()) ? Collections.emptyList() : goods.getKeywords().split(","));
map.put("isOnSale", goods.getIsOnSale());
map.put("createTime", goods.getCreateTime());
elasticEntity.setData(map);
if (!elasticDocument.insertOrUpdateOne(SysConstants.ES_GOODS_INDEX, elasticEntity)) {
throw new BusinessException("商品同步es失败");
}
return true;
}
use of com.wayn.common.exception.BusinessException in project waynboot-mall by wayn111.
the class RoleServiceImpl method deleteRoleByIds.
@Override
public boolean deleteRoleByIds(List<Long> roleIds) {
for (Long roleId : roleIds) {
checkRoleAllowed(new Role(roleId));
Role role = getById(roleId);
long count = countUserRoleByRoleId(roleId);
if (count > 0) {
throw new BusinessException(String.format("%1$s已分配,不能删除", role.getRoleName()));
}
}
return removeByIds(roleIds);
}
use of com.wayn.common.exception.BusinessException in project waynboot-mall by wayn111.
the class FileUploadUtil method uploadFile.
/**
* @param fileBytes 文件base64编码后内容
* @param fileName 文件名称
* @param filePath 要保存的文件按目录
* @return 新文件名称
* @throws IOException 上传异常
*/
public static String uploadFile(byte[] fileBytes, String fileName, String filePath) throws IOException {
int fileNameLength = Objects.requireNonNull(fileName).length();
if (fileNameLength > 100) {
throw new BusinessException("文件名称过长");
}
String encodingFilename = FileUtils.encodingFilename(fileName);
String extension = FilenameUtils.getExtension(fileName);
fileName = genNewFilename(encodingFilename, extension);
File desc = new File(filePath, fileName);
if (!desc.getParentFile().exists()) {
desc.getParentFile().mkdirs();
}
if (!desc.exists()) {
desc.createNewFile();
}
IOUtils.write(fileBytes, new FileOutputStream(desc));
return fileName;
}
use of com.wayn.common.exception.BusinessException in project waynboot-mall by wayn111.
the class OrderServiceImpl method asyncSubmit.
@Override
public R asyncSubmit(OrderVO orderVO) {
OrderDTO orderDTO = new OrderDTO();
MyBeanUtil.copyProperties(orderVO, orderDTO);
Long userId = orderDTO.getUserId();
// 获取用户订单商品,为空默认取购物车已选中商品
List<Long> cartIdArr = orderDTO.getCartIdArr();
List<Cart> checkedGoodsList;
if (CollectionUtils.isEmpty(cartIdArr)) {
checkedGoodsList = iCartService.list(new QueryWrapper<Cart>().eq("checked", true).eq("user_id", userId));
} else {
checkedGoodsList = iCartService.listByIds(cartIdArr);
}
List<Long> goodsIds = checkedGoodsList.stream().map(Cart::getGoodsId).collect(Collectors.toList());
List<GoodsProduct> goodsProducts = iGoodsProductService.list(new QueryWrapper<GoodsProduct>().in("goods_id", goodsIds));
Map<Long, GoodsProduct> goodsIdMap = goodsProducts.stream().collect(Collectors.toMap(GoodsProduct::getId, goodsProduct -> goodsProduct));
// 商品货品数量减少
for (Cart checkGoods : checkedGoodsList) {
Long productId = checkGoods.getProductId();
Long goodsId = checkGoods.getGoodsId();
GoodsProduct product = goodsIdMap.get(productId);
int remainNumber = product.getNumber() - checkGoods.getNumber();
if (remainNumber < 0) {
Goods goods = iGoodsService.getById(goodsId);
String goodsName = goods.getName();
String[] specifications = product.getSpecifications();
throw new BusinessException(String.format("%s,%s 库存不足", goodsName, StringUtils.join(specifications, " ")));
}
if (!iGoodsProductService.reduceStock(productId, checkGoods.getNumber())) {
throw new BusinessException("商品货品库存减少失败");
}
}
// 商品费用
BigDecimal checkedGoodsPrice = new BigDecimal("0.00");
for (Cart checkGoods : checkedGoodsList) {
checkedGoodsPrice = checkedGoodsPrice.add(checkGoods.getPrice().multiply(new BigDecimal(checkGoods.getNumber())));
}
// 根据订单商品总价计算运费,满足条件(例如88元)则免运费,否则需要支付运费(例如8元);
BigDecimal freightPrice = new BigDecimal("0.00");
/*if (checkedGoodsPrice.compareTo(SystemConfig.getFreightLimit()) < 0) {
freightPrice = SystemConfig.getFreight();
}*/
// 可以使用的其他钱,例如用户积分
BigDecimal integralPrice = new BigDecimal("0.00");
// 优惠卷抵扣费用
BigDecimal couponPrice = new BigDecimal("0.00");
// 团购抵扣费用
BigDecimal grouponPrice = new BigDecimal("0.00");
// 订单费用
BigDecimal orderTotalPrice = checkedGoodsPrice.add(freightPrice).subtract(couponPrice).max(new BigDecimal("0.00"));
// 最终支付费用
BigDecimal actualPrice = orderTotalPrice.subtract(integralPrice);
String orderSn = OrderSnGenUtil.generateOrderSn(userId);
orderDTO.setOrderSn(orderSn);
// 异步下单
String uid = IdUtil.getUid();
System.out.println(uid);
CorrelationData correlationData = new CorrelationData(uid);
Map<String, Object> map = new HashMap<>();
map.put("order", orderDTO);
map.put("notifyUrl", WaynConfig.getMobileUrl() + "/message/order/submit");
try {
Message message = MessageBuilder.withBody(JSON.toJSONString(map).getBytes(Constants.UTF_ENCODING)).setContentType(MessageProperties.CONTENT_TYPE_TEXT_PLAIN).setDeliveryMode(MessageDeliveryMode.PERSISTENT).build();
rabbitTemplate.convertAndSend(SysConstants.ORDER_DIRECT_EXCHANGE, SysConstants.ORDER_DIRECT_ROUTING, message, correlationData);
} catch (UnsupportedEncodingException e) {
log.error(e.getMessage(), e);
}
return R.success().add("actualPrice", actualPrice).add("orderSn", orderSn);
}
Aggregations