Commit 7df40bfe by huluobin

邮件配置

parent 35262cd2
......@@ -38,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.security.InvalidParameterException;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
......@@ -80,7 +81,7 @@ public class MarketServiceImpl implements MarketService {
public void setUpInnerCoupon(SetUpInnerCouponCommand cmd) {
if (cmd.getOrderId() == null) {
throw new RRException();
throw new InvalidParameterException();
}
//将订单之前绑定的内部券设置为未使用
......@@ -123,7 +124,7 @@ public class MarketServiceImpl implements MarketService {
public void setUpOuterCoupon(SetUpOuterCouponCommand cmd) {
if (cmd.getOrderId() == null) {
throw new RRException();
throw new InvalidParameterException();
}
//删除订单的外部卡券关联
couponCustomerRelevanceService.remove(
......@@ -154,7 +155,7 @@ public class MarketServiceImpl implements MarketService {
public void setTimesCard(SetTimesCardCommand cmd) {
if (cmd.getOrderId() == null) {
throw new RRException();
throw new InvalidParameterException();
}
//删除订单已经绑定的次卡
List<TimesCardUsedRecord> removeTimesCardUsedRecordList = timesCardUsedRecordService.list(
......@@ -216,7 +217,7 @@ public class MarketServiceImpl implements MarketService {
.stream()
.filter(record -> record.getStatus().equals(TimesCardUsedRecord.STATUS_CHOSE))
.findAny()
.orElseThrow(RRException::new);
.orElseThrow(NullPointerException::new);
//更新次卡选择记录对应的订单
timesCardUsedRecord.setOrderId(cmd.getOrderId());
......
......@@ -83,7 +83,7 @@ public class MallOrderServiceImpl extends ServiceImpl<MallOrderMapper, MallOrder
.map(product -> {
//商品数量
Integer num = settleMallOrderItemQryList.stream().filter(var -> var.getProductId().intValue() == product.getId()).findAny().orElseThrow(RRException::new).getNum();
Integer num = settleMallOrderItemQryList.stream().filter(var -> var.getProductId().intValue() == product.getId()).findAny().orElseThrow(NullPointerException::new).getNum();
MallOrderDetailDTO mallOrderDetailDTO = MallOrderDetailDTO.builder()
.num(num)
.coverImages(product.getCoverImages())
......
......@@ -20,12 +20,12 @@ import com.gogirl.domain.user.customer.CustomerBalanceRecord;
import com.gogirl.domain.xcx.GogirlToken;
import com.gogirl.infrastructure.common.exception.RRException;
import com.gogirl.infrastructure.config.property.GogirlProperties;
import com.gogirl.infrastructure.service.wx.WxPayService;
import com.gogirl.infrastructure.mapper.market.discount.DiscountConfigMapper;
import com.gogirl.infrastructure.mapper.order.member.ChargeOrderMapper;
import com.gogirl.infrastructure.mapper.user.customer.CustomerBalanceMapper;
import com.gogirl.infrastructure.mapper.user.customer.CustomerBalanceRecordMapper;
import com.gogirl.infrastructure.mapper.user.customer.CustomerMapper;
import com.gogirl.infrastructure.service.wx.WxPayService;
import com.gogirl.infrastructure.util.SessionUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -63,7 +63,7 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg
public void notifyChargeOrder(WxPayOrderNotifyResult result) {
if (!result.getReturnCode().equals("SUCCESS") || !result.getResultCode().equals("SUCCESS")) {
throw new RRException();
throw new RRException("回调失败");
}
......@@ -74,7 +74,7 @@ public class ChargeOrderServiceImpl extends ServiceImpl<ChargeOrderMapper, Charg
DiscountConfig discountConfig = discountConfigMapper.selectList(new LambdaQueryWrapper<>())
.stream().filter(config -> config.getChargeAmount() <= result.getTotalFee())
.max(Comparator.comparing(DiscountConfig::getChargeAmount)).orElseThrow(RRException::new);
.max(Comparator.comparing(DiscountConfig::getChargeAmount)).orElseThrow(NullPointerException::new);
couponService.sendCoupon(discountConfig.getCouponId(), customer.getId());
......
......@@ -477,7 +477,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
List<TreeProgram> treePrograms = map.values().stream()
.map(list -> {
TreeProgram node = list.stream().findAny().orElseThrow(RRException::new);
TreeProgram node = list.stream().findAny().orElseThrow(NullPointerException::new);
TreeProgram cloneNode = new TreeProgram();
cloneNode.setStoreTechnicianDTO(CloneUtil.deepClone(node.getStoreTechnicianDTO()));
......@@ -1136,7 +1136,7 @@ public class ScheduleManageServiceImpl extends ServiceImpl<ScheduleManageMapper,
ScheduleServeCommand mainScheduleServeCommand = mainScheduleServeCommandList.stream()
.filter(var -> var.getServeId().equals(scheduleServeCommand.getMainServeId()))
.findAny()
.orElseThrow(RRException::new);
.orElseThrow(NullPointerException::new);
//设置辅助服务美甲师为主服务美甲师
scheduleServeCommand.setTechnicianId(mainScheduleServeCommand.getTechnicianId());
......
......@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gogirl.application.product.mall.MallShoppingCartCmdService;
import com.gogirl.assembler.MallShoppingCartAssembler;
import com.gogirl.domain.order.mall.MallShoppingCart;
import com.gogirl.infrastructure.common.exception.RRException;
import com.gogirl.infrastructure.mapper.order.mall.MallShoppingCartMapper;
import com.gogirl.shared.product.command.DecreaseCartCommand;
import com.gogirl.shared.product.command.MallShoppingCartCommand;
......@@ -13,6 +12,8 @@ import com.gogirl.shared.product.command.RemoveCartCommand;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.security.InvalidParameterException;
@Service
@AllArgsConstructor
public class MallShoppingCartCmdServiceImpl implements MallShoppingCartCmdService {
......@@ -49,7 +50,7 @@ public class MallShoppingCartCmdServiceImpl implements MallShoppingCartCmdServic
@Override
public void removeAllMallShoppingCart(RemoveAllCartCommand cmd) {
if (cmd.getCustomerId() == null) {
throw new RRException();
throw new InvalidParameterException();
}
mallShoppingCartMapper
.delete(new LambdaQueryWrapper<MallShoppingCart>().eq(MallShoppingCart::getCustomerId, cmd.getCustomerId()));
......
......@@ -11,7 +11,6 @@ import com.gogirl.domain.store.complaint.ComplaintDetailed;
import com.gogirl.domain.store.complaint.ComplaintDetailedTechnician;
import com.gogirl.domain.store.complaint.ComplaintMain;
import com.gogirl.domain.user.investigation.OrderQuestionOption;
import com.gogirl.infrastructure.common.exception.RRException;
import com.gogirl.infrastructure.common.util.ListUtil;
import com.gogirl.infrastructure.mapper.order.serve.OrderManageMapper;
import com.gogirl.infrastructure.mapper.order.serve.OrderServeMapper;
......@@ -54,7 +53,7 @@ public class ComplaintMainServiceImpl extends ServiceImpl<ComplaintMainMapper, C
if (ListUtil.isNotEmpty(list)) {
ComplaintMain complaintMain = new ComplaintMain();
OrderQuestionOption orderQuestionOption = list.stream().findAny().orElseThrow(RRException::new);
OrderQuestionOption orderQuestionOption = list.stream().findAny().orElseThrow(NullPointerException::new);
OrderManage orderManage = orderManageMapper.selectById(orderQuestionOption.getOrderId());
complaintMain.setOrderId(orderQuestionOption.getOrderId());
......
......@@ -32,10 +32,10 @@ public class StoreDataServiceImpl extends ServiceImpl<StoreDataMapper, StoreData
Integer departmentId = SessionUtils.getTechnicianToken().getDepartmentId();
//总订单业绩
//门店总订单业绩
List<StoreTradeAmount> storeTradeAmountList = storeDataMapper.storeTradeAmount(month, departmentId);
//总开卡业绩
//门店总开卡业绩
StoreTradeAmount storeTradeAmount = new StoreTradeAmount();
storeTradeAmount.setAmount(storeDataMapper.chargeAchieve(month, departmentId));
storeTradeAmount.setServeType("开卡");
......@@ -51,7 +51,7 @@ public class StoreDataServiceImpl extends ServiceImpl<StoreDataMapper, StoreData
storeData.setStoreTradeAmountList(storeTradeAmountList);
storeData.setStoreTechnicianAchieveList(storeTechnicianAchieveList);
//业绩排行
//个人业绩排行
List<StoreTechnicianTotalAchieve> storeTechnicianTotalAchieveList = storeTechnicianAchieveList.stream()
.collect(Collectors.groupingBy(StoreTechnicianAchieve::getTechnicianId))
.values().stream().map(list -> {
......@@ -68,7 +68,7 @@ public class StoreDataServiceImpl extends ServiceImpl<StoreDataMapper, StoreData
storeData.setStoreTechnicianTotalAchieveList(storeTechnicianTotalAchieveList);
//订单业绩排行
//个人订单业绩排行
List<StoreTechnicianTotalAchieve> storeTechnicianTotalOrderAchieveList = storeTechnicianAchieveList.stream()
.filter(storeTechnicianAchieve -> !storeTechnicianAchieve.getServeType().equals("开卡"))
.collect(Collectors.groupingBy(StoreTechnicianAchieve::getTechnicianId))
......@@ -87,7 +87,7 @@ public class StoreDataServiceImpl extends ServiceImpl<StoreDataMapper, StoreData
storeData.setStoreTechnicianTotalOrderAchieveList(storeTechnicianTotalOrderAchieveList);
//充值业绩排行
//个人充值业绩排行
List<StoreTechnicianTotalAchieve> storeTechnicianTotalChargeAchieveList = storeTechnicianAchieveList.stream()
.filter(storeTechnicianAchieve -> storeTechnicianAchieve.getServeType().equals("开卡"))
.collect(Collectors.groupingBy(StoreTechnicianAchieve::getTechnicianId))
......
......@@ -42,7 +42,7 @@ public class RRException extends RuntimeException implements Serializable {
*/
private Map<String, Object> errorMap = new HashMap<>();
public RRException() {
private RRException() {
this.code = 500;
this.message = "业务异常";
}
......
......@@ -2,14 +2,18 @@ package com.gogirl.infrastructure.common.exception;
import com.gogirl.infrastructure.common.base.JsonResult;
import com.gogirl.infrastructure.service.mail.MailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.Map;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Enumeration;
/**
* 统一异常处理器
......@@ -21,6 +25,12 @@ import java.util.Map;
@Slf4j
public class RRExceptionHandler {
@Value("${spring.profiles}")
private String profile;
@Resource
MailService mailService;
/**
* 自定义异常
*/
......@@ -41,7 +51,7 @@ public class RRExceptionHandler {
}
/**
* 通用异常
* 未捕获异常
*/
@ExceptionHandler(Exception.class)
public JsonResult<String> handleException(HttpServletRequest request,
......@@ -50,23 +60,46 @@ public class RRExceptionHandler {
result.setSuccess(false);
result.setCode(500);
result.setMessage(e.getMessage());
log.error("Params : {}", getParamString(request.getParameterMap()) + "\n");
log.error("URI : {}", request.getRequestURI() + "\n");
log.error(e.getMessage(), e);
this.log(e, request);
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
//发送邮件
mailService.sendSimpleMail("robbendev@qq.com", profile + "异常", sw.toString());
return result;
}
private String getParamString(Map<String, String[]> map) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String[]> e : map.entrySet()) {
sb.append(e.getKey()).append("=");
String[] value = e.getValue();
if (value != null && value.length == 1) {
sb.append(value[0]).append("\t");
private void log(Exception ex, HttpServletRequest request) {
log.error("************************异常开始*******************************");
log.error("请求地址:" + request.getRequestURL());
Enumeration<String> enumeration = request.getParameterNames();
log.error("请求参数");
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement();
log.error(name + "---" + request.getParameter(name));
}
if (ex instanceof RRException) {
if (((RRException) ex).getCode() == 500 && ex.getMessage().equals("业务异常")) {
this.logStackTrace(ex);
} else {
sb.append(Arrays.toString(value)).append("\t");
log.error(ex.getMessage());
}
} else {
this.logStackTrace(ex);
}
return sb.toString();
log.error("************************异常结束*******************************");
}
private void logStackTrace(Exception ex) {
for (StackTraceElement stackTraceElement : ex.getStackTrace()) {
log.error(stackTraceElement.toString());
}
}
}
......@@ -9,7 +9,7 @@ public interface MailService {
* @param subject
* @param content
*/
public void sendSimpleMail(String to, String subject, String content);
void sendSimpleMail(String to, String subject, String content);
/**
* 发送html格式的邮件
......@@ -18,7 +18,7 @@ public interface MailService {
* @param subject
* @param content
*/
public void sendHtmlMail(String to, String subject, String content);
void sendHtmlMail(String to, String subject, String content);
/**
* 发送带附件的邮件
......@@ -28,7 +28,7 @@ public interface MailService {
* @param content
* @param filePath
*/
public void sendAttachmentsMail(String to, String subject, String content, String filePath);
void sendAttachmentsMail(String to, String subject, String content, String filePath);
/**
* 发送嵌入静态资源(一般是图片)的邮件
......@@ -39,7 +39,7 @@ public interface MailService {
* @param rscPath 静态资源路径和文件名
* @param rscId 静态资源id
*/
public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId);
void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId);
}
......@@ -19,6 +19,7 @@ import java.io.File;
public class MailServiceImpl implements MailService {
@Resource
JavaMailSender sender;
@Value("${spring.mail.username}")
private String from;
......
......@@ -166,6 +166,7 @@
GROUP BY t1.serve_type, t1.technician_id, t1.department_id
</select>
<!--统计数据的-->
<select id="chargeAchieve" resultType="java.math.BigDecimal">
select (select sum(order_amount)
from customer_balance_record
......@@ -174,5 +175,4 @@
and (type = 1 or type = 2) / 100)
/ 100
</select>
</mapper>
\ No newline at end of file
......@@ -379,7 +379,7 @@ public class Test {
DiscountConfig discountConfig = discountConfigMapper.selectList(new LambdaQueryWrapper<>())
.stream().filter(config -> config.getChargeAmount() <= totalFee)
.max(Comparator.comparing(DiscountConfig::getChargeAmount)).orElseThrow(RRException::new);
.max(Comparator.comparing(DiscountConfig::getChargeAmount)).orElseThrow(NullPointerException::new);
couponService.sendCoupon(discountConfig.getCouponId(), customer.getId());
......
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