Commit 7becfd9a by kaevom

Merge remote-tracking branch 'origin/master'

parents ffecb09f 7b72bd30
package com.yongqi.web.controller.system;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.context.SaHolder;
import com.yongqi.common.constant.Constants;
import com.yongqi.common.core.domain.R;
import com.yongqi.common.core.domain.entity.SysMenu;
......@@ -9,8 +8,8 @@ import com.yongqi.common.core.domain.entity.SysUser;
import com.yongqi.common.core.domain.model.LoginBody;
import com.yongqi.common.core.domain.model.LoginUser;
import com.yongqi.common.core.domain.model.SmsLoginBody;
import com.yongqi.common.core.domain.model.XcxLoginUser;
import com.yongqi.common.helper.LoginHelper;
import com.yongqi.common.utils.StringUtils;
import com.yongqi.system.domain.vo.RouterVo;
import com.yongqi.system.service.ISysMenuService;
import com.yongqi.system.service.ISysUserService;
......@@ -119,11 +118,16 @@ public class SysLoginController {
* @return 用户信息
*/
@GetMapping("getInfo")
public R<Map<String, Object>> getInfo() {
public R<Map<String, Object>> getInfo(@RequestParam(value = "adminTag", required = false) String adminTag) {
LoginUser loginUser = LoginHelper.getLoginUser();
DbWxUserVo user = wxUserService.queryById(loginUser.getUserId());
Map<String, Object> ajax = new HashMap<>();
if (StringUtils.isEmpty(adminTag)) {
DbWxUserVo user = wxUserService.queryById(loginUser.getUserId());
ajax.put("user", user);
} else {
SysUser user = userService.selectUserById(loginUser.getUserId());
ajax.put("user", user);
}
ajax.put("roles", loginUser.getRolePermission());
ajax.put("permissions", loginUser.getMenuPermission());
return R.ok(ajax);
......
......@@ -175,8 +175,7 @@ wx:
mchKey: fdfgg56hdfgh52sdf35dfgscfg84wsed #微信支付商户密钥
subAppId: #服务商模式下的子商户公众账号ID
subMchId: #服务商模式下的子商户号
#keyPath: C:\\ProgramData\\certKey\xinrenli\\apiclient_cert:p12 # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
keyPath: /opt/xinrenli/cert/
keyPath: /opt/xinrenli/cert/apiclient_cert.p12 #C:\\ProgramData\\certKey\xinrenli\\apiclient_cert.p12 # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
notifyUrl: http://xinrenli.nyinhong.com/api/xinrenli/order/notify # 微信支付回调接口
refundNotifyUrl: http://xinrenli.nyinhong.com/api/xinrenli/order/refundNotify # 微信t退款回调接口
# mp:
......
--- # server 配置
server:
port: 9300
port: 9302
servlet:
context-path: /xxl-job-admin
spring:
......
package com.yongqi.xinrenli.controller;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.yongqi.common.annotation.RepeatSubmit;
import com.yongqi.common.annotation.Log;
import com.yongqi.common.annotation.RepeatSubmit;
import com.yongqi.common.core.controller.BaseController;
import com.yongqi.common.core.domain.PageQuery;
import com.yongqi.common.core.domain.R;
import com.yongqi.common.core.page.TableDataInfo;
import com.yongqi.common.core.validate.AddGroup;
import com.yongqi.common.core.validate.EditGroup;
import com.yongqi.common.enums.BusinessType;
import com.yongqi.common.utils.poi.ExcelUtil;
import com.yongqi.xinrenli.domain.vo.DbFileVo;
import com.yongqi.xinrenli.domain.bo.DbFileBo;
import com.yongqi.xinrenli.domain.vo.DbFileVo;
import com.yongqi.xinrenli.service.IDbFileService;
import com.yongqi.common.core.page.TableDataInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.File;
import java.io.IOException;
import java.util.*;
/**
* 文件
*
......@@ -120,11 +118,11 @@ public class DbFileController extends BaseController {
* @return
*/
@SaCheckPermission("xinrenli:file:upload")
@Log(title = "文件", businessType = BusinessType.DELETE)
@Log(title = "上传文件", businessType = BusinessType.OTHER)
@PostMapping("/upload")
public R upload(MultipartFile file, HttpServletRequest req) {
if(!file.isEmpty()){
//String uploadPath = "C:\\uploadFile";
// String uploadPath = "C:\\uploadFile";
// 如果目录不存在则创建
File uploadDir = new File(uploadPath);
if (!uploadDir.exists()) {
......@@ -133,9 +131,9 @@ public class DbFileController extends BaseController {
String OriginalFilename = file.getOriginalFilename();//获取原文件名
String suffixName = OriginalFilename.substring(OriginalFilename.lastIndexOf("."));//获取文件后缀名
//重新随机生成名字
String filename = UUID.randomUUID().toString() +suffixName;
File localFile = new File(uploadPath+filename);
String url = "http://xinrenli.nyinhong.com/image/"+filename;
String filename = UUID.randomUUID().toString() + suffixName;
File localFile = new File(uploadPath + filename);
String url = "http://xinrenli.nyinhong.com/image/" + filename;
try {
file.transferTo(localFile); //把上传的文件保存至本地
/**
......
package com.yongqi.xinrenli.controller;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.yongqi.common.core.domain.model.LoginUser;
import com.yongqi.common.helper.LoginHelper;
import com.yongqi.common.utils.ip.AddressUtils;
import com.yongqi.xinrenli.domain.DbOrder;
import com.yongqi.xinrenli.domain.bo.DbOrderEditBo;
import com.yongqi.xinrenli.domain.vo.ReportFormsVo;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.aspectj.weaver.ast.Var;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.yongqi.common.annotation.RepeatSubmit;
import com.yongqi.common.annotation.Log;
import com.yongqi.common.annotation.RepeatSubmit;
import com.yongqi.common.core.controller.BaseController;
import com.yongqi.common.core.domain.PageQuery;
import com.yongqi.common.core.domain.R;
import com.yongqi.common.core.domain.model.LoginUser;
import com.yongqi.common.core.page.TableDataInfo;
import com.yongqi.common.core.validate.AddGroup;
import com.yongqi.common.core.validate.EditGroup;
import com.yongqi.common.enums.BusinessType;
import com.yongqi.common.helper.LoginHelper;
import com.yongqi.common.utils.ip.AddressUtils;
import com.yongqi.common.utils.poi.ExcelUtil;
import com.yongqi.xinrenli.domain.vo.DbOrderVo;
import com.yongqi.xinrenli.domain.bo.DbOrderBo;
import com.yongqi.xinrenli.domain.bo.DbOrderEditBo;
import com.yongqi.xinrenli.domain.vo.DbOrderVo;
import com.yongqi.xinrenli.domain.vo.ReportFormsVo;
import com.yongqi.xinrenli.service.IDbOrderService;
import com.yongqi.common.core.page.TableDataInfo;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* 订单
......@@ -60,6 +55,7 @@ public class DbOrderController extends BaseController {
public TableDataInfo<DbOrderVo> list(DbOrderBo bo, PageQuery pageQuery) {
return iDbOrderService.homeList(bo, pageQuery);
}
/**
* 查询订单列表
*/
......@@ -70,6 +66,7 @@ public class DbOrderController extends BaseController {
bo.setUserId(loginUser.getUserId());
return iDbOrderService.homeList(bo, pageQuery);
}
/**
@SaCheckPermission("xinrenli:order:listUser")
@GetMapping("/listUser")
......@@ -180,19 +177,20 @@ public class DbOrderController extends BaseController {
*
* @param orderId 订单id
* @param couponId 优惠券id
* @param discountId 折扣id
* @param request
* @return
*/
@SaCheckPermission("xinrenli:order:pay")
@Log(title = "下单", businessType = BusinessType.OTHER)
@GetMapping("/orderPay")
public R orderPay(@NotNull(message = "主键不能为空") @RequestParam("orderId") Long orderId
,Long couponId
,Long discountId
public R orderPay(@NotNull(message = "订单id不能为空") @RequestParam("orderId") Long orderId
, @RequestParam(value = "couponId", required = false) Long couponId
, @RequestParam(value = "discountId", required = false) Long discountId
, HttpServletRequest request) {
LoginUser loginUser = LoginHelper.getLoginUser();
String ipAddr = AddressUtils.getIpAddr(request);
return iDbOrderService.orderPay(orderId, couponId,discountId, loginUser, ipAddr);
return iDbOrderService.orderPay(orderId, couponId, discountId, loginUser, ipAddr);
}
/**
......
package com.yongqi.xinrenli.domain.bo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yongqi.common.core.domain.BaseEntity;
import com.yongqi.common.core.validate.AddGroup;
import com.yongqi.common.core.validate.EditGroup;
import com.yongqi.xinrenli.domain.vo.DbFileVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.yongqi.common.core.domain.BaseEntity;
/**
* 订单业务对象 db_order
*
......
......@@ -2,7 +2,10 @@ package com.yongqi.xinrenli.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
import com.github.binarywang.wxpay.bean.notify.WxPayRefundNotifyResult;
......@@ -12,29 +15,26 @@ import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
import com.github.binarywang.wxpay.constant.WxPayConstants;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import com.yongqi.common.core.domain.PageQuery;
import com.yongqi.common.core.domain.R;
import com.yongqi.common.core.domain.model.LoginUser;
import com.yongqi.common.utils.StringUtils;
import com.yongqi.common.core.page.TableDataInfo;
import com.yongqi.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yongqi.common.utils.StringUtils;
import com.yongqi.common.utils.redis.CodeUtils;
import com.yongqi.xinrenli.domain.*;
import com.yongqi.xinrenli.domain.bo.DbOrderBo;
import com.yongqi.xinrenli.domain.bo.DbOrderEditBo;
import com.yongqi.xinrenli.domain.vo.*;
import com.yongqi.xinrenli.enums.DeleteStatusEnum;
import com.yongqi.xinrenli.enums.FileEnumServiceType;
import com.yongqi.xinrenli.enums.OrderStatusEnum;
import com.yongqi.xinrenli.mapper.*;
import com.yongqi.xinrenli.service.IDbOrderService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.yongqi.xinrenli.domain.bo.DbOrderBo;
import com.yongqi.xinrenli.service.IDbOrderService;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
......@@ -67,6 +67,7 @@ public class DbOrderServiceImpl implements IDbOrderService {
@Value("${wx.pay.refundNotifyUrl}")
private String refundNotifyUrl;
private final DbWxUserMapper wxUserMapper;
/**
* 查询订单
*/
......@@ -307,7 +308,7 @@ public class DbOrderServiceImpl implements IDbOrderService {
lqw.gt(bo.getActualAmount() != null, DbOrder::getActualAmount, bo.getActualAmount());
lqw.eq(bo.getUserId() != null, DbOrder::getUserId, bo.getUserId());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), DbOrder::getTitle, bo.getTitle());
lqw.eq(StringUtils.isNotBlank(bo.getLinkman()), DbOrder::getLinkman, bo.getLinkman());
lqw.like(StringUtils.isNotBlank(bo.getLinkman()), DbOrder::getLinkman, bo.getLinkman());
lqw.eq(StringUtils.isNotBlank(bo.getPhone()), DbOrder::getPhone, bo.getPhone());
lqw.eq(bo.getRepairTime() != null, DbOrder::getRepairTime, bo.getRepairTime());
lqw.eq(StringUtils.isNotBlank(bo.getRepairAddress()), DbOrder::getRepairAddress, bo.getRepairAddress());
......@@ -367,17 +368,16 @@ public class DbOrderServiceImpl implements IDbOrderService {
*/
@Override
@Transactional
public R orderPay(Long orderId, Long couponId,Long discountId, LoginUser loginUser, String ipAddr) {
public R orderPay(Long orderId, Long couponId, Long discountId, LoginUser loginUser, String ipAddr) {
// 1.根据订单id获取订单信息
DbOrder dbOrder = this.baseMapper.selectById(orderId);
//支付金额
BigDecimal payAmount = dbOrder.getActualAmount();
// 2.根据卡券id获取卡券信息
if (ObjectUtils.isNotEmpty(couponId)) {
DbCoupon dbCoupon = couponMapper.selectById(couponId);
//3.根据打折id获取打折信息
DbUserDiscount discount = discountMapper.selectById(discountId);
if (ObjectUtils.isNotEmpty(dbCoupon)) {
// 4.计算应支付金额
if(ObjectUtils.isNotEmpty(dbCoupon)){
if (dbCoupon.getMinUsed().compareTo(dbOrder.getActualAmount()) > 0) {
throw new RuntimeException("未达到此优惠券的最低消费金额");
}
......@@ -396,8 +396,13 @@ public class DbOrderServiceImpl implements IDbOrderService {
}
payAmount = dbOrder.getActualAmount().subtract(dbCoupon.getFullSubtraction());
}
if(ObjectUtils.isNotEmpty(discount)){
if(!discount.getUserId().equals(loginUser.getUserId())){
}
//3.根据打折id获取打折信息
if (ObjectUtils.isNotEmpty(discountId)) {
DbUserDiscount discount = discountMapper.selectById(discountId);
if (ObjectUtils.isNotEmpty(discount)) {
// 4.计算应支付金额
if (!discount.getUserId().equals(loginUser.getUserId())) {
log.error("该用户没有此折扣:userId:{},couponId:{}", loginUser.getUserId(), discountId);
return R.fail("没有此折扣");
}
......@@ -407,7 +412,7 @@ public class DbOrderServiceImpl implements IDbOrderService {
}
payAmount = payAmount.multiply(discount.getDiscountRatio());
}
}
dbOrder.setPayAmount(payAmount);
dbOrder.setUseCouponId(couponId);
dbOrder.setUseDiscountId(discountId);
......@@ -475,7 +480,7 @@ public class DbOrderServiceImpl implements IDbOrderService {
dbOrder.setWxOrderNo(notifyResult.getTransactionId());
baseMapper.updateById(dbOrder);
// 2.修改用户优惠券使用状态
if(ObjectUtils.isNotEmpty(dbOrder.getUseCouponId())){
if (ObjectUtils.isNotEmpty(dbOrder.getUseCouponId())) {
DbUserCoupon userCoupon = userCouponMapper.selectOne(Wrappers.<DbUserCoupon>lambdaQuery()
.eq(DbUserCoupon::getCouponId, dbOrder.getUseCouponId())
.eq(DbUserCoupon::getUserId, dbOrder.getUserId()));
......@@ -491,9 +496,9 @@ public class DbOrderServiceImpl implements IDbOrderService {
userCouponMapper.updateById(userCoupon);
}
// 1.根据卡券id获取卡券信息
if(ObjectUtils.isNotEmpty(dbOrder.getUseDiscountId())){
if (ObjectUtils.isNotEmpty(dbOrder.getUseDiscountId())) {
DbUserDiscount discount = discountMapper.selectById(dbOrder.getUseDiscountId());
if(!discount.getUserId().equals(dbOrder.getUserId())){
if (!discount.getUserId().equals(dbOrder.getUserId())) {
log.error("该用户没有此折扣:userId:{},couponId:{}", dbOrder.getUserId(), dbOrder.getUseDiscountId());
return WxPayNotifyResponse.fail("没有此折扣");
}
......@@ -585,6 +590,7 @@ public class DbOrderServiceImpl implements IDbOrderService {
public ReportFormsVo reportForms() {
return baseMapper.reportForms();
}
@Override
public ReportFormsVo reportFormsExl() {
return baseMapper.reportFormsExl();
......
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