联调
This commit is contained in:
parent
79ed366be9
commit
10942e6f1d
|
@ -2,11 +2,14 @@ package com.ruoyi.web.controller.app;
|
|||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.entity.AsArticleClassify;
|
||||
import com.ruoyi.common.core.domain.entity.RlUser;
|
||||
import com.ruoyi.common.core.domain.entity.SysDictData;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.system.domain.EtArticle;
|
||||
import com.ruoyi.system.domain.RlFunction;
|
||||
import com.ruoyi.system.domain.agent.RlAgent;
|
||||
|
@ -66,6 +69,9 @@ public class AppController extends BaseController
|
|||
@Autowired
|
||||
private IRlArticleClassifyService asArticleClassifyService;
|
||||
|
||||
@Resource
|
||||
private IRlUserService userService;
|
||||
|
||||
/**
|
||||
* 查询城市列表
|
||||
*/
|
||||
|
@ -356,4 +362,16 @@ public class AppController extends BaseController
|
|||
return success(asArticleClassifies);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户类型
|
||||
*/
|
||||
@PostMapping("/changeUserType")
|
||||
public AjaxResult changeUserType(Long userId, String userType)
|
||||
{
|
||||
RlUser user = new RlUser();
|
||||
user.setUserId(userId);
|
||||
user.setUserType(userType);
|
||||
return toAjax(userService.updateUser(user));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.ruoyi.web.controller.appAgent;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
|
@ -11,6 +12,7 @@ import com.ruoyi.common.enums.BusinessType;
|
|||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.framework.web.service.SysLoginService;
|
||||
import com.ruoyi.system.domain.accessory.RlAccessory;
|
||||
import com.ruoyi.system.domain.agent.RlAgentVO;
|
||||
import com.ruoyi.system.domain.device.RlDeviceQuery;
|
||||
import com.ruoyi.system.domain.device.RlDeviceVO;
|
||||
import com.ruoyi.system.domain.model.RlModel;
|
||||
|
@ -98,7 +100,11 @@ public class AppAgentController extends BaseController
|
|||
@GetMapping("/orderList")
|
||||
public AjaxResult orderList(RlOrderQuery order)
|
||||
{
|
||||
order.setMerchantId(getUserId());
|
||||
RlAgentVO rlAgentVO = rlAgentService.selectRlAgentByUserId(getUserId());
|
||||
if(ObjectUtil.isNull(rlAgentVO)){
|
||||
throw new ServiceException("根据userid【"+getUserId()+"】代理商【"+rlAgentVO+"】不存在");
|
||||
}
|
||||
order.setAgentId(rlAgentVO.getAgentId());
|
||||
logger.info("订单列表请求:order=【"+JSON.toJSONString(order)+"】");
|
||||
authorityVerify();
|
||||
List<RlOrderVO> rlOrderVOS = orderService.selectRlOrderList(order);
|
||||
|
@ -136,6 +142,9 @@ public class AppAgentController extends BaseController
|
|||
private void addVerify(RlModelQuery model) {
|
||||
if(model.getAgentId() == null){
|
||||
RlUserExt rlUserExt = rlUserExtService.selectRlUserExtByUserId(getUserId());
|
||||
if(rlUserExt.getAgentId() == null){
|
||||
throw new ServiceException("用户【"+getUserId()+"】未绑定代理商");
|
||||
}
|
||||
model.setAgentId(rlUserExt.getAgentId());
|
||||
}
|
||||
if(StrUtil.isBlank(model.getModel())){
|
||||
|
|
|
@ -130,7 +130,7 @@ public class AppAdminController extends BaseController
|
|||
log.info("【微信登录/wxlogin】areaId参数:【mobileCode={}】", mobileCode);
|
||||
AjaxResult ajax = AjaxResult.success();
|
||||
// 生成令牌
|
||||
String token = loginService.wxloing(mobileCode,jsCode);
|
||||
String token = loginService.wxloing(mobileCode,jsCode,ServiceConstants.APPLET_TYPE_MERCHANT);
|
||||
ajax.put(Constants.TOKEN, token);
|
||||
return ajax;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.ruoyi.web.controller.system;
|
||||
|
||||
import com.ruoyi.common.constant.Constants;
|
||||
import com.ruoyi.common.constant.ServiceConstants;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.entity.RlUser;
|
||||
import com.ruoyi.common.core.domain.entity.SysMenu;
|
||||
|
@ -130,7 +131,7 @@ public class SysLoginController
|
|||
log.info("【微信登录/wxlogin】areaId参数:【mobileCode={}】", mobileCode);
|
||||
AjaxResult ajax = AjaxResult.success();
|
||||
// 生成令牌
|
||||
String token = loginService.wxloing(mobileCode,jsCode);
|
||||
String token = loginService.wxloing(mobileCode,jsCode, ServiceConstants.APPLET_TYPE_USER);
|
||||
ajax.put(Constants.TOKEN, token);
|
||||
return ajax;
|
||||
}
|
||||
|
|
|
@ -193,8 +193,12 @@ geo:
|
|||
# 高德地图key web服务 手续费
|
||||
key: 834f1f029671d84272554528311ff0f1
|
||||
wx:
|
||||
appid: wx21a50f113c30d41a
|
||||
appSecret: 58b0876e09e7783105b50336408cbd63
|
||||
# 用户端
|
||||
appid1: wx21a50f113c30d41a
|
||||
appSecret1: 58b0876e09e7783105b50336408cbd63
|
||||
# 商家端
|
||||
appid2: wxc89e4a21f3907a53
|
||||
appSecret2: de917328e1a0102749b3c87ecfc09942
|
||||
et:
|
||||
# 手续费 4/1000 千分之几
|
||||
handlingCharge: 5.4
|
||||
|
|
|
@ -518,6 +518,20 @@ public class ServiceConstants {
|
|||
|
||||
public static final String PROFITSHARING_TYPE_PLATFORM = "2";
|
||||
/**----------------------------分账类型start----------------------------*/
|
||||
/**----------------------------分账状态start----------------------------*/
|
||||
|
||||
/**
|
||||
* 分账状态: 0-未出账
|
||||
*/
|
||||
public static final String DIVIDEND_STATUS_NOT_SETTLED = "0";
|
||||
|
||||
/**
|
||||
* 分账状态: 1-已分成
|
||||
*/
|
||||
public static final String DIVIDEND_STATUS_SETTLED = "1";
|
||||
|
||||
/**----------------------------分账状态end----------------------------*/
|
||||
|
||||
|
||||
/**----------------------------退款类型start----------------------------*/
|
||||
/** 还车类型:1-正常还车;2-辅助还车
|
||||
|
@ -765,7 +779,7 @@ public class ServiceConstants {
|
|||
/**----------------------------用户类型start----------------------------*/
|
||||
|
||||
/**
|
||||
* 00 - 系统用户
|
||||
* 00 - 系统用户(未分配)
|
||||
*/
|
||||
public static final String USER_TYPE_SYSTEM = "00";
|
||||
|
||||
|
@ -789,6 +803,11 @@ public class ServiceConstants {
|
|||
*/
|
||||
public static final String USER_TYPE_DISPATCHER = "04";
|
||||
|
||||
/**
|
||||
* 09 - 超级管理员
|
||||
*/
|
||||
public static final String USER_TYPE_ADMIN = "09";
|
||||
|
||||
/**----------------------------用户类型end----------------------------*/
|
||||
|
||||
/**----------------------------订单操作类型start----------------------------*/
|
||||
|
@ -838,7 +857,22 @@ public class ServiceConstants {
|
|||
*/
|
||||
public static final String ORDER_OPERATION_DEDUCTION = "9";
|
||||
|
||||
/**----------------------------订单操作类型end----------------------------*/
|
||||
/**----------------------------订单操作类型end----------------------------*/
|
||||
|
||||
/**----------------------------小程序类型start----------------------------*/
|
||||
|
||||
/**
|
||||
* 小程序类型: 1-用户端
|
||||
*/
|
||||
public static final String APPLET_TYPE_USER = "1";
|
||||
|
||||
/**
|
||||
* 小程序类型: 2-商家端
|
||||
*/
|
||||
public static final String APPLET_TYPE_MERCHANT = "2";
|
||||
|
||||
/**----------------------------小程序类型end----------------------------*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -7,11 +7,14 @@ import cn.hutool.core.util.ObjectUtil;
|
|||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.ruoyi.common.constant.ServiceConstants;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.common.utils.http.HttpUtils;
|
||||
import com.ruoyi.common.utils.wx.AccessTokenUtil;
|
||||
import com.ruoyi.common.utils.wx.vo.WeChatMiniAuthorizeVo;
|
||||
import com.ruoyi.common.core.domain.entity.RlUser;
|
||||
import com.ruoyi.system.domain.userExt.RlUserExt;
|
||||
import com.ruoyi.system.service.IRlUserExtService;
|
||||
import com.ruoyi.system.service.IRlUserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
|
@ -67,14 +70,20 @@ public class SysLoginService
|
|||
@Autowired
|
||||
private ISysConfigService configService;
|
||||
|
||||
@Resource
|
||||
private IRlUserService eUserService;
|
||||
@Autowired
|
||||
private IRlUserExtService rlUserExtService;
|
||||
|
||||
@Value("${wx.appid}")
|
||||
private String appId;
|
||||
@Value("${wx.appid1}")
|
||||
private String appId1;
|
||||
|
||||
@Value("${wx.appSecret}")
|
||||
private String appSecret;
|
||||
@Value("${wx.appSecret1}")
|
||||
private String appSecret1;
|
||||
|
||||
@Value("${wx.appid2}")
|
||||
private String appId2;
|
||||
|
||||
@Value("${wx.appSecret2}")
|
||||
private String appSecret2;
|
||||
|
||||
@Value("${password}")
|
||||
private String password;
|
||||
|
@ -252,9 +261,18 @@ public class SysLoginService
|
|||
/**
|
||||
* 微信登录
|
||||
*/
|
||||
public String wxloing(String mobileCode,String jsCode) {
|
||||
public String wxloing(String mobileCode,String jsCode,String appletType) {
|
||||
String appId = null;
|
||||
String appSecret = null ;
|
||||
if(ServiceConstants.APPLET_TYPE_USER.equals(appletType)){
|
||||
appId = appId1;
|
||||
appSecret = appSecret1;
|
||||
}else{
|
||||
appId = appId2;
|
||||
appSecret = appSecret2;
|
||||
}
|
||||
//根据jsCode换取openid
|
||||
String openId = getOpenId(jsCode);
|
||||
String openId = getOpenId(jsCode,appId,appSecret);
|
||||
String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=";
|
||||
String phoneNumber = null;
|
||||
RlUser user = null;
|
||||
|
@ -275,7 +293,7 @@ public class SysLoginService
|
|||
throw new ServiceException("凭证无效");
|
||||
}
|
||||
phoneNumber = wxMaPhoneNumberInfo.getPhoneNumber();
|
||||
user = eUserService.selectUserByWxopenid(openId);
|
||||
user = userService.selectUserByWxopenid(openId);
|
||||
if(ObjectUtil.isEmpty(user)){
|
||||
RlUser asUser = new RlUser();
|
||||
asUser.setUserName(phoneNumber);
|
||||
|
@ -285,11 +303,17 @@ public class SysLoginService
|
|||
asUser.setPassword(SecurityUtils.encryptPassword(Constants.CUSTOM_LOGIN_WX));
|
||||
asUser.setCreateTime(DateUtils.getNowDate());
|
||||
asUser.setWxopenid(openId);
|
||||
asUser.setUserType(ServiceConstants.USER_TYPE_SYSTEM);
|
||||
log.info("【微信登录/wxlogin】用户不存在,自动注册用户:【{}】", JSON.toJSON(asUser));
|
||||
int i = eUserService.insertUser(asUser);
|
||||
|
||||
int i = userService.insertUser(asUser);
|
||||
if(i>0 && ServiceConstants.APPLET_TYPE_USER.equals(appletType)){
|
||||
/** 创建用户扩展表内容,默认的用户角色是00(未分配)*/
|
||||
int i1= insertUserExt(asUser);
|
||||
}
|
||||
user = asUser;
|
||||
}else{
|
||||
int i = eUserService.updateUser(user);
|
||||
int i = userService.updateUser(user);
|
||||
}
|
||||
Authentication authentication = null; // 用户验证
|
||||
try {
|
||||
|
@ -315,6 +339,13 @@ public class SysLoginService
|
|||
return tokenService.createToken(loginUser);
|
||||
}
|
||||
|
||||
private int insertUserExt(RlUser asUser) {
|
||||
RlUserExt rlUserExt = new RlUserExt();
|
||||
rlUserExt.setUserId(asUser.getUserId());
|
||||
rlUserExt.setExtId(asUser.getUserId());
|
||||
return rlUserExtService.insertRlUserExt(rlUserExt);
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录app登录信息
|
||||
*
|
||||
|
@ -326,7 +357,7 @@ public class SysLoginService
|
|||
rlUser.setUserId(userId);
|
||||
rlUser.setLoginIp(IpUtils.getIpAddr());
|
||||
rlUser.setLoginDate(DateUtils.getNowDate());
|
||||
eUserService.updateUserProfile(rlUser);
|
||||
userService.updateUserProfile(rlUser);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -369,7 +400,7 @@ public class SysLoginService
|
|||
return null;
|
||||
}
|
||||
|
||||
private String getOpenId(String jsCode) {
|
||||
private String getOpenId(String jsCode,String appId, String appSecret) {
|
||||
//根据jsCode换取openid
|
||||
String url = StrUtil.format("https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code", appId, appSecret, jsCode);
|
||||
String s = HttpUtils.sendGet(url);
|
||||
|
|
|
@ -46,9 +46,6 @@ public class UserDetailsServiceImpl implements UserDetailsService
|
|||
@Autowired
|
||||
private SysPermissionService permissionService;
|
||||
|
||||
@Value("${wx.appid}")
|
||||
private String appId;
|
||||
|
||||
@Override
|
||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
|
||||
{
|
||||
|
|
|
@ -58,4 +58,12 @@ public class RlDividendDetail extends BaseEntity
|
|||
@Excel(name = "分红比例")
|
||||
private BigDecimal dividendProportion;
|
||||
|
||||
/** 退款金额 */
|
||||
@Excel(name = "退款金额")
|
||||
private BigDecimal refundAmount;
|
||||
|
||||
/** 状态 */
|
||||
@Excel(name = "状态")
|
||||
private String status;
|
||||
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.ruoyi.system.domain.order;
|
|||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.system.domain.RlFunction;
|
||||
import com.ruoyi.system.domain.accessory.RlAccessoryVO;
|
||||
import com.ruoyi.system.domain.deliveryOrder.RlDeliveryOrder;
|
||||
import com.ruoyi.system.domain.dividendDetail.RlDividendDetailVO;
|
||||
import com.ruoyi.system.domain.orderOper.RlOrderOper;
|
||||
import com.ruoyi.system.domain.rule.RlFeeRule;
|
||||
|
@ -62,4 +63,9 @@ public class RlOrderVO extends RlOrder{
|
|||
|
||||
private BigDecimal refundableDeposit; // 押金
|
||||
|
||||
/** 配送单状态 */
|
||||
private String deliveryStatus;
|
||||
|
||||
/** 配送单对象 */
|
||||
private RlDeliveryOrder deliveryOrder;
|
||||
}
|
||||
|
|
|
@ -29,6 +29,14 @@ public interface RlAgentMapper
|
|||
*/
|
||||
public RlAgentVO selectRlAgentByCityId(Long cityId);
|
||||
|
||||
/**
|
||||
* 根据用户id查询代理商
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @return 代理商
|
||||
*/
|
||||
public RlAgentVO selectRlAgentByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 查询代理商列表
|
||||
*
|
||||
|
|
|
@ -99,7 +99,7 @@ public interface RlOrderMapper
|
|||
/**
|
||||
* 根据sn查询正在进行中的订单
|
||||
*/
|
||||
List<RlOrderVO> getInProgressOrder(@Param("sn") String sn, @Param("userId") Long userId);
|
||||
List<RlOrderVO> getInProgressOrder(String sn);
|
||||
|
||||
// /**
|
||||
// * 扫码绑定车辆
|
||||
|
|
|
@ -29,6 +29,14 @@ public interface IRlAgentService
|
|||
*/
|
||||
public RlAgentVO selectRlAgentByCityId(Long cityId);
|
||||
|
||||
/**
|
||||
* 根据用户id查询代理商
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @return 代理商
|
||||
*/
|
||||
public RlAgentVO selectRlAgentByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 查询代理商列表
|
||||
*
|
||||
|
|
|
@ -21,6 +21,14 @@ public interface IRlDeliveryOrderService
|
|||
*/
|
||||
public RlDeliveryOrder selectRlDeliveryOrderByDeliveryId(Long deliveryId);
|
||||
|
||||
/**
|
||||
* 查询配送工单
|
||||
*
|
||||
* @param orderNo 订单号
|
||||
* @return 配送工单
|
||||
*/
|
||||
public RlDeliveryOrder selectRlDeliveryOrderByOrderNo(String orderNo);
|
||||
|
||||
/**
|
||||
* 查询配送工单列表
|
||||
*
|
||||
|
|
|
@ -2,7 +2,9 @@ package com.ruoyi.system.service;
|
|||
|
||||
import com.ruoyi.system.domain.dividendDetail.RlDividendDetail;
|
||||
import com.ruoyi.system.domain.dividendDetail.RlDividendDetailVO;
|
||||
import com.ruoyi.system.domain.order.RlOrder;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -60,4 +62,31 @@ public interface IRlDividendDetailService
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteRlDividendDetailById(Long id);
|
||||
|
||||
/**
|
||||
* 记录分成比例
|
||||
*
|
||||
* @param originalOrder 原始订单对象
|
||||
* @param userType 用户类型:商户,代理商
|
||||
* @return 结果
|
||||
*/
|
||||
public int calculationDividend(RlOrder originalOrder,String userType);
|
||||
|
||||
/**
|
||||
* 计算分成金额
|
||||
*
|
||||
* @param rlDividendDetails 分成明细列表
|
||||
* @param totalDividendAmount 分账总金额
|
||||
* @return 结果
|
||||
*/
|
||||
public int calculationAmount(List<RlDividendDetailVO> rlDividendDetails, BigDecimal totalDividendAmount);
|
||||
|
||||
/**
|
||||
* 更新退款金额
|
||||
*
|
||||
* @param id 分成明细id
|
||||
* @param userRefundAmount 用户退款金额
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateRefundAmount(Long id, BigDecimal userRefundAmount);
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@ import cn.hutool.core.util.ObjectUtil;
|
|||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ruoyi.common.constant.Constants;
|
||||
import com.ruoyi.common.constant.ServiceConstants;
|
||||
import com.ruoyi.common.core.domain.entity.RlUser;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.pay.wx.domain.NotifyEventType;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
|
@ -13,9 +12,9 @@ import com.ruoyi.system.domain.EtCallbackLog;
|
|||
import com.ruoyi.system.domain.channel.ChannelVO;
|
||||
import com.ruoyi.system.domain.deliveryOrder.RlDeliveryOrder;
|
||||
import com.ruoyi.system.domain.dividendDetail.RlDividendDetail;
|
||||
import com.ruoyi.system.domain.dividendDetail.RlDividendDetailVO;
|
||||
import com.ruoyi.system.domain.order.RlOrder;
|
||||
import com.ruoyi.system.domain.refund.RlRefund;
|
||||
import com.ruoyi.system.domain.userExt.RlUserExt;
|
||||
import com.ruoyi.system.mapper.EtCallbackLogMapper;
|
||||
import com.ruoyi.system.service.*;
|
||||
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
|
||||
|
@ -36,7 +35,7 @@ import org.springframework.transaction.support.TransactionTemplate;
|
|||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
|
@ -85,6 +84,9 @@ public class CallbackServiceImpl implements CallbackService {
|
|||
@Resource
|
||||
private IRlAgentService agentService;
|
||||
|
||||
@Autowired
|
||||
private IRlOrderOperService orderOperService;
|
||||
|
||||
|
||||
/**
|
||||
* 微信支付回调
|
||||
|
@ -172,39 +174,45 @@ public class CallbackServiceImpl implements CallbackService {
|
|||
logger.error("【微信支付回调】更新订单信息失败");
|
||||
throw new ServiceException("【微信支付回调】更新订单信息失败");
|
||||
}
|
||||
/** 计算分成 所有合伙人的分成明细*/
|
||||
calculationDividend(originalOrder);
|
||||
/** 计算分成金额更新分成状态 */
|
||||
BigDecimal totalDividendAmount = originalOrder.getLeaseFee().add(originalOrder.getOverdueFee());
|
||||
RlDividendDetail rlDividendDetail = new RlDividendDetail();
|
||||
rlDividendDetail.setOrderNo(originalOrder.getOrderNo());
|
||||
List<RlDividendDetailVO> rlDividendDetailVOS = dividendDetailService.selectRlDividendDetailList(rlDividendDetail);
|
||||
dividendDetailService.calculationAmount(rlDividendDetailVOS,totalDividendAmount);
|
||||
|
||||
// 批量生成账变记录
|
||||
generateChangeBalance(rlDividendDetailVOS,originalOrder);
|
||||
|
||||
/** 记录订单履历 */
|
||||
if(orderOperService.recordOrderHistory(originalOrder.getOrderNo(),ServiceConstants.ORDER_OPERATION_PAY,
|
||||
originalOrder.getStatus(),updateOrder.getStatus(),BigDecimal.ZERO,originalOrder.getPayFee(),originalOrder.getUserId(),originalOrder.getPhone(),"订单支付:已支付 "+originalOrder.getPayFee()+"元")){
|
||||
throw new ServiceException("【订单履历-支付】更新订单信息失败");
|
||||
}
|
||||
logger.info("=================【微信支付回调】全部结束!!!!!==================");
|
||||
return Boolean.TRUE;
|
||||
});
|
||||
if(!execute)throw new ServiceException("微信支付回调失败");
|
||||
}
|
||||
|
||||
private void calculationDividend(RlOrder originalOrder) {
|
||||
RlUserExt rlUserExt = userExtService.selectRlUserExtByUserId(originalOrder.getMerchantId());
|
||||
RlUser rlUser = userService.selectUserById(rlUserExt.getUserId());
|
||||
RlDividendDetail rlDividendDetail = new RlDividendDetail();
|
||||
rlDividendDetail.setAgentId(originalOrder.getAgentId());
|
||||
rlDividendDetail.setPartnerId(rlUserExt.getUserId());
|
||||
rlDividendDetail.setOrderNo(originalOrder.getOrderNo());
|
||||
rlDividendDetail.setTotalAmount(originalOrder.getPayFee());
|
||||
BigDecimal needDividendAmount = originalOrder.getLeaseFee().add(originalOrder.getOverdueFee());//租赁费和逾期费进行分成
|
||||
logger.info("【微信支付回调】租赁费和逾期费进行分成============"+needDividendAmount);
|
||||
// 保留两位小数点
|
||||
BigDecimal dividendAmount = rlUserExt.getDividendProportion().multiply(needDividendAmount)
|
||||
.setScale(2, RoundingMode.HALF_UP);
|
||||
logger.info("【微信支付回调】计算出来的分成金额===分成人{}========="+needDividendAmount,rlUserExt.getUserId());
|
||||
rlDividendDetail.setDividendAmount(dividendAmount);
|
||||
rlDividendDetail.setDividendProportion(rlUserExt.getDividendProportion());
|
||||
rlDividendDetail.setCreateTime(DateUtils.getNowDate());
|
||||
rlDividendDetail.setPartnerName(rlUser.getUserName());
|
||||
rlDividendDetail.setPartnerPhone(rlUser.getPhonenumber());
|
||||
rlDividendDetail.setPartnerType(rlUser.getUserType());
|
||||
int i = dividendDetailService.insertRlDividendDetail(rlDividendDetail);
|
||||
if(i>0){
|
||||
logger.info("=================【微信支付回调】计算合作人分成成功==================");
|
||||
|
||||
private void generateChangeBalance(List<RlDividendDetailVO> rlDividendDetailVOS, RlOrder originalOrder) {
|
||||
for(RlDividendDetailVO dividendDetail:rlDividendDetailVOS){
|
||||
String busType;
|
||||
if(originalOrder.getType().equals(ServiceConstants.ORDER_TYPE_LEASE)){
|
||||
busType = ServiceConstants.RIDE_ORDER;
|
||||
}else{
|
||||
busType = ServiceConstants.RENEW_ORDER;
|
||||
}
|
||||
// 用户生成账变
|
||||
int i = changeBalanceService.generateChanggeBalance(originalOrder.getOrderNo(), originalOrder.getOutTradeNo(), ServiceConstants.FLOW_TYPE_INCOME,
|
||||
busType, dividendDetail.getDividendAmount(), dividendDetail.getPartnerId(), dividendDetail.getPartnerName(), dividendDetail.getPartnerPhone());
|
||||
if(i==0){
|
||||
throw new ServiceException("【微信支付回调】用户【"+dividendDetail.getPartnerName()+"】生成账变失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// private List<RlUserVO> getPartnerList(Long merchantId) {
|
||||
// RlUserQuery rlUserQuery = new RlUserQuery();
|
||||
|
|
|
@ -78,6 +78,14 @@ public class RlAgentServiceImpl implements IRlAgentService
|
|||
return rlAgentVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RlAgentVO selectRlAgentByUserId(Long userId) {
|
||||
RlAgentVO rlAgentVO = rlAgentMapper.selectRlAgentByUserId(userId);
|
||||
if(ObjectUtil.isNull(rlAgentVO)){
|
||||
throw new RuntimeException("代理商不存在");
|
||||
}
|
||||
return rlAgentVO;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -62,6 +62,17 @@ public class RlDeliveryOrderServiceImpl implements IRlDeliveryOrderService
|
|||
return rlDeliveryOrderMapper.selectRlDeliveryOrderByDeliveryId(deliveryId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据订单号查询配送工单
|
||||
*
|
||||
* @param orderNo 订单号
|
||||
* @return 配送工单
|
||||
*/
|
||||
@Override
|
||||
public RlDeliveryOrder selectRlDeliveryOrderByOrderNo(String orderNo) {
|
||||
return rlDeliveryOrderMapper.selectRlDeliveryOrderByOrderNo(orderNo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询配送工单列表
|
||||
*
|
||||
|
|
|
@ -118,6 +118,9 @@ public class RlDeviceServiceImpl extends ServiceImpl<RlDeviceMapper, RlDevice> i
|
|||
|
||||
@Autowired
|
||||
private IRlOnlineLogService eOnlineLogService;
|
||||
|
||||
@Autowired
|
||||
private IRlOrderOperService orderOperService;
|
||||
//
|
||||
// @Autowired
|
||||
// private IEtRefundService etRefundService;
|
||||
|
@ -1372,7 +1375,7 @@ public class RlDeviceServiceImpl extends ServiceImpl<RlDeviceMapper, RlDevice> i
|
|||
throw new ServiceException("远程关锁失败");
|
||||
}
|
||||
|
||||
/** 8.判断是否在店铺附近 先根据手机定位判断,再跟进车辆定位判断,如果两个都不在,则提示不在附近*/
|
||||
/** 2.1.判断是否在店铺附近 先根据手机定位判断,再跟进车辆定位判断,如果两个都不在,则提示不在附近*/
|
||||
boolean nearStore = isNearStore(orderQuery, device);
|
||||
if(!nearStore){
|
||||
throw new ServiceException("不在店铺附近,请前往店铺还车");
|
||||
|
@ -1410,6 +1413,11 @@ public class RlDeviceServiceImpl extends ServiceImpl<RlDeviceMapper, RlDevice> i
|
|||
if(i==0){
|
||||
throw new ServiceException("更新订单状态失败");
|
||||
}
|
||||
/** 7. 记录订单履历*/
|
||||
if(orderOperService.recordOrderHistory(orderNo,ServiceConstants.ORDER_OPERATION_RETURN_END,
|
||||
order.getStatus(),updateOrder.getStatus(),order.getPayFee(),order.getPayFee(),order.getUserId(),order.getPhone(),"已还车")){
|
||||
throw new ServiceException("【记录订单履历失败】");
|
||||
}
|
||||
log.info("还车成功");
|
||||
return Boolean.TRUE;
|
||||
}else{
|
||||
|
|
|
@ -1,13 +1,24 @@
|
|||
package com.ruoyi.system.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.ruoyi.common.constant.ServiceConstants;
|
||||
import com.ruoyi.common.core.domain.entity.RlUser;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.system.domain.agent.RlAgentVO;
|
||||
import com.ruoyi.system.domain.dividendDetail.RlDividendDetail;
|
||||
import com.ruoyi.system.domain.dividendDetail.RlDividendDetailVO;
|
||||
import com.ruoyi.system.domain.order.RlOrder;
|
||||
import com.ruoyi.system.domain.userExt.RlUserExt;
|
||||
import com.ruoyi.system.mapper.RlDividendDetailMapper;
|
||||
import com.ruoyi.system.service.IRlDividendDetailService;
|
||||
import com.ruoyi.system.service.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -16,12 +27,25 @@ import java.util.List;
|
|||
* @author qzz
|
||||
* @date 2024-10-10
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class RlDividendDetailServiceImpl implements IRlDividendDetailService
|
||||
{
|
||||
@Autowired
|
||||
@Resource
|
||||
private RlDividendDetailMapper rlDividendDetailMapper;
|
||||
|
||||
@Resource
|
||||
private IRlUserExtService userExtService;
|
||||
|
||||
@Autowired
|
||||
private IRlUserService userService;
|
||||
|
||||
@Autowired
|
||||
private IRlAgentService agentService;
|
||||
|
||||
@Autowired
|
||||
private IRlChangeBalanceService changeBalanceService;
|
||||
|
||||
/**
|
||||
* 查询分账明细
|
||||
*
|
||||
|
@ -94,4 +118,82 @@ public class RlDividendDetailServiceImpl implements IRlDividendDetailService
|
|||
{
|
||||
return rlDividendDetailMapper.deleteRlDividendDetailById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算分账金额
|
||||
* @param originalOrder
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public int calculationDividend(RlOrder originalOrder,String userType) {
|
||||
RlUserExt rlUserExt;
|
||||
RlUser rlUser ;
|
||||
if(userType.equals(ServiceConstants.USER_TYPE_MERCHANT)){
|
||||
rlUserExt = userExtService.selectRlUserExtByUserId(originalOrder.getMerchantId());
|
||||
rlUser = userService.selectUserById(rlUserExt.getUserId());
|
||||
}else if(userType.equals(ServiceConstants.USER_TYPE_AGENT)){
|
||||
RlAgentVO rlAgentVO = agentService.selectRlAgentByAgentId(originalOrder.getAgentId());
|
||||
rlUserExt = userExtService.selectRlUserExtByUserId(rlAgentVO.getUserid());
|
||||
rlUser = userService.selectUserById(rlUserExt.getUserId());
|
||||
}else{
|
||||
throw new ServiceException("用户类型有误");
|
||||
}
|
||||
RlDividendDetail rlDividendDetail = new RlDividendDetail();
|
||||
rlDividendDetail.setAgentId(originalOrder.getAgentId());
|
||||
rlDividendDetail.setPartnerId(rlUserExt.getUserId());
|
||||
rlDividendDetail.setOrderNo(originalOrder.getOrderNo());
|
||||
rlDividendDetail.setTotalAmount(originalOrder.getPayFee());
|
||||
rlDividendDetail.setDividendProportion(rlUserExt.getDividendProportion());
|
||||
rlDividendDetail.setCreateTime(DateUtils.getNowDate());
|
||||
rlDividendDetail.setPartnerName(rlUser.getUserName());
|
||||
rlDividendDetail.setPartnerPhone(rlUser.getPhonenumber());
|
||||
rlDividendDetail.setPartnerType(rlUser.getUserType());
|
||||
rlDividendDetail.setStatus(ServiceConstants.DIVIDEND_STATUS_NOT_SETTLED);
|
||||
int i = insertRlDividendDetail(rlDividendDetail);
|
||||
if(i>0){
|
||||
log.info("=================【微信支付回调】计算合作人分成成功==================");
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算分账金额
|
||||
* @param rlDividendDetails
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public int calculationAmount(List<RlDividendDetailVO> rlDividendDetails,BigDecimal totalDividendAmount) {
|
||||
log.info("【计算分账金额】计算分账金额开始============");
|
||||
for(RlDividendDetailVO dividendDetail:rlDividendDetails){
|
||||
log.info("【计算分账金额】租赁费和逾期费进行分成============"+totalDividendAmount);
|
||||
RlUserExt rlUserExt = userExtService.selectRlUserExtByUserId(dividendDetail.getPartnerId());
|
||||
if(ObjectUtil.isNull(rlUserExt)){
|
||||
throw new ServiceException("用户【"+dividendDetail.getPartnerName()+"】不存在");
|
||||
}
|
||||
// 保留两位小数点
|
||||
BigDecimal dividendAmount = rlUserExt.getDividendProportion().multiply(totalDividendAmount)
|
||||
.setScale(2, RoundingMode.HALF_UP);
|
||||
dividendDetail.setDividendAmount(dividendAmount);
|
||||
dividendDetail.setStatus(ServiceConstants.DIVIDEND_STATUS_SETTLED);
|
||||
updateRlDividendDetail(dividendDetail);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新退款金额
|
||||
*
|
||||
* @param id 分成明细id
|
||||
* @param userRefundAmount 用户退款金额
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateRefundAmount(Long id, BigDecimal userRefundAmount) {
|
||||
RlDividendDetail rlDividendDetail = new RlDividendDetail();
|
||||
rlDividendDetail.setRefundAmount(userRefundAmount);
|
||||
rlDividendDetail.setId(id);
|
||||
return rlDividendDetailMapper.updateRlDividendDetail(rlDividendDetail);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -108,7 +108,7 @@ public class RlOrderOperServiceImpl implements IRlOrderOperService
|
|||
rlOrderOper.setOperPhone(phone);
|
||||
rlOrderOper.setCreateTime(DateUtils.getNowDate());
|
||||
rlOrderOper.setDetails(detail);
|
||||
return false;
|
||||
return rlOrderOperMapper.insertRlOrderOper(rlOrderOper) > 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -15,6 +15,8 @@ import com.ruoyi.common.utils.wx.vo.PrepayResponseVO;
|
|||
import com.ruoyi.system.domain.RlFunction;
|
||||
import com.ruoyi.system.domain.accessory.RlAccessoryVO;
|
||||
import com.ruoyi.system.domain.agent.RlAgent;
|
||||
import com.ruoyi.system.domain.agent.RlAgentVO;
|
||||
import com.ruoyi.system.domain.deliveryOrder.RlDeliveryOrder;
|
||||
import com.ruoyi.system.domain.device.RlDevice;
|
||||
import com.ruoyi.system.domain.dividendDetail.RlDividendDetail;
|
||||
import com.ruoyi.system.domain.dividendDetail.RlDividendDetailVO;
|
||||
|
@ -113,6 +115,12 @@ public class RlOrderServiceImpl implements IRlOrderService
|
|||
@Autowired
|
||||
private IRlChangeBalanceService changeBalanceService;
|
||||
|
||||
@Resource
|
||||
private IRlDividendDetailService dividendDetailService;
|
||||
|
||||
@Autowired
|
||||
private IRlDeliveryOrderService deliveryOrderService;
|
||||
|
||||
/**
|
||||
* 查询订单
|
||||
*
|
||||
|
@ -191,6 +199,12 @@ public class RlOrderServiceImpl implements IRlOrderService
|
|||
List<RlDividendDetailVO> rlDividendDetails = rlDividendDetailService.selectRlDividendDetailList(rlDividendDetail);
|
||||
order.setRlDividendDetails(rlDividendDetails);
|
||||
|
||||
RlDeliveryOrder deliveryOrder = deliveryOrderService.selectRlDeliveryOrderByOrderNo(orderNo);
|
||||
if(ObjectUtil.isNotNull(deliveryOrder)){
|
||||
order.setDeliveryStatus(deliveryOrder.getStatus());
|
||||
order.setDeliveryOrder(deliveryOrder);
|
||||
}
|
||||
|
||||
/** 显示可退款金额 根据订单号查询可退款金额 refundableAmount*/
|
||||
getRefundable(orderNo, order);
|
||||
return order;
|
||||
|
@ -356,16 +370,26 @@ public class RlOrderServiceImpl implements IRlOrderService
|
|||
StoreVo storeVo = storeService.selectSmStoreById(order.getStoreId());
|
||||
if(ObjectUtil.isNotNull(storeVo)){
|
||||
order.setMerchantId(storeVo.getMerchantId());
|
||||
order.setReturnAddress(storeVo.getAddress());
|
||||
order.setReturnStoreId(storeVo.getStoreId());
|
||||
}
|
||||
|
||||
/** 计算价格 */
|
||||
onceMoreCalculatePrice(order);
|
||||
|
||||
order.setStatus(ServiceConstants.ORDER_STATUS_TO_BE_PAID);
|
||||
RlModelVO rlModelVO = modelService.selectEModelByModelId(order.getModelId());
|
||||
if(ObjectUtil.isNotNull(rlModelVO)){
|
||||
order.setModel(rlModelVO.getModel());
|
||||
}
|
||||
/** 记录分成比例,状态为未出账 */
|
||||
int i1 = dividendDetailService.calculationDividend(order,ServiceConstants.USER_TYPE_MERCHANT);
|
||||
if (i1 < 1) {
|
||||
throw new RuntimeException("记录商户分成失败");
|
||||
}
|
||||
int i2 = dividendDetailService.calculationDividend(order,ServiceConstants.USER_TYPE_AGENT);
|
||||
if (i2 < 1) {
|
||||
throw new RuntimeException("记录代理商分成失败");
|
||||
}
|
||||
int i = orderMapper.insertRlOrder(order);
|
||||
if (i < 1) {
|
||||
throw new RuntimeException("下单失败");
|
||||
|
@ -514,10 +538,12 @@ public class RlOrderServiceImpl implements IRlOrderService
|
|||
}
|
||||
RlOrder rlOrder = new RlOrder();
|
||||
rlOrder.setOrderNo(orderNo);
|
||||
rlOrder.setPaid(ServiceConstants.ORDER_PAY_STATUS_NON_PAYMENT);
|
||||
rlOrder.setStatus(ServiceConstants.ORDER_STATUS_CANCE);
|
||||
int i = orderMapper.updateRlOrderByOrderNo(rlOrder);
|
||||
if(i>0){
|
||||
/** 记录订单履历 */
|
||||
orderOperService.recordOrderHistory(orderNo,ServiceConstants.ORDER_OPERATION_USER_CANCEL,
|
||||
order.getStatus(),rlOrder.getStatus(),order.getPayFee(),order.getPayFee(),order.getUserId(),order.getPhone(),"取消订单");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -533,9 +559,9 @@ public class RlOrderServiceImpl implements IRlOrderService
|
|||
rlOrder.setDeductionAmount(money);
|
||||
int i = orderMapper.updateRlOrderByOrderNo(rlOrder);
|
||||
/** 记录订单履历 */
|
||||
RlOrderVO orde = orderMapper.selectRlOrderByOrderNo(orderNo);
|
||||
RlOrderVO order = orderMapper.selectRlOrderByOrderNo(orderNo);
|
||||
if(orderOperService.recordOrderHistory(orderNo,ServiceConstants.ORDER_OPERATION_DEDUCTION,
|
||||
orde.getStatus(),orde.getStatus(),orde.getPayFee(),orde.getPayFee(),orde.getUserId(),orde.getPhone(),"车损扣款:扣款金额:"+money+",实际押金退款:"+orde.getDeposit()+"-"+money)){
|
||||
order.getStatus(),order.getStatus(),order.getPayFee(),order.getPayFee(),order.getUserId(),order.getPhone(),"车损扣款:扣款金额:"+money+",实际押金退款:"+order.getDeposit()+"-"+money)){
|
||||
throw new ServiceException("【改价】更新订单信息失败");
|
||||
}
|
||||
return i>0;
|
||||
|
@ -563,6 +589,17 @@ public class RlOrderServiceImpl implements IRlOrderService
|
|||
if(!ServiceConstants.ORDER_STATUS_ORDER_END.equals(order.getStatus())){
|
||||
throw new ServiceException("订单状态异常,不能退款", HttpStatus.ERROR);
|
||||
}
|
||||
// /** 更新订单信息*/
|
||||
// RlOrder updateOrder = new RlOrder();
|
||||
// updateOrder.setOrderNo(orderNo);
|
||||
// updateOrder.setRefundAmount(remainingDeposit);
|
||||
// updateOrder.setStatus(ServiceConstants.ORDER_STATUS_REFUND);
|
||||
// int i = orderMapper.updateRlOrderByOrderNo(updateOrder);
|
||||
/** 记录订单履历*/
|
||||
if(orderOperService.recordOrderHistory(orderNo,ServiceConstants.ORDER_OPERATION_RETURN_END,
|
||||
order.getStatus(),order.getStatus(),order.getPayFee(),order.getPayFee(),order.getUserId(),order.getPhone(),"已退款:-"+remainingDeposit+"元")){
|
||||
throw new ServiceException("【记录订单履历失败】");
|
||||
}
|
||||
// 执行退还剩余押金操作
|
||||
wxPayService.refund(order, "审核后退押金",remainingDeposit,order.getOutTradeNo());
|
||||
return null;
|
||||
|
@ -610,6 +647,10 @@ public class RlOrderServiceImpl implements IRlOrderService
|
|||
refundDividendHandle(rlOrderVO, refundPercentage);
|
||||
/** 4.记录退款表 创建退款对象*/
|
||||
String outRefundNo = saveRefundObj(rlOrderVO, finalRefundAmount, dispatchFee, deliveryFee, leaseFee);
|
||||
if(orderOperService.recordOrderHistory(rlOrderVO.getOrderNo(),ServiceConstants.ORDER_OPERATION_REFUND,
|
||||
rlOrderVO.getStatus(),rlOrderVO.getStatus(),rlOrderVO.getPayFee(),rlOrderVO.getPayFee(),rlOrderVO.getUserId(),rlOrderVO.getPhone(),"已退款: "+finalRefundAmount+"元")){
|
||||
throw new ServiceException("【改价】更新订单信息失败");
|
||||
}
|
||||
/** 5. 发起退款 */
|
||||
wxPayService.refund(rlOrderVO, "商家退款金额", finalRefundAmount,outRefundNo);
|
||||
return Boolean.TRUE;
|
||||
|
@ -648,8 +689,9 @@ public class RlOrderServiceImpl implements IRlOrderService
|
|||
int i = changeBalanceService.generateChanggeBalance(rlOrderVO.getOrderNo(), rlOrderVO.getOutTradeNo(), ServiceConstants.FLOW_TYPE_DISBURSE,
|
||||
ServiceConstants.ORDER_REFUND, userRefundAmount, rlUserExt.getUserId(), user.getUserName(), user.getPhonenumber());
|
||||
if(i<=0)throw new ServiceException("用户【"+user.getPhonenumber()+"】新增账变失败");
|
||||
/** todo 4.3 分成比例? */
|
||||
|
||||
/** todo 4.3 更新分成表中的退款金额 */
|
||||
int i1 = rlDividendDetailService.updateRefundAmount(detail.getId(), userRefundAmount);
|
||||
if(i1<=0)throw new ServiceException("【退款】更新分成表中的退款金额失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -753,8 +795,7 @@ public class RlOrderServiceImpl implements IRlOrderService
|
|||
*/
|
||||
@Override
|
||||
public RlOrderVO getInProgressOrder(String sn) {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
List<RlOrderVO> orders = orderMapper.getInProgressOrder(sn,userId);
|
||||
List<RlOrderVO> orders = orderMapper.getInProgressOrder(sn);
|
||||
if(ObjectUtil.isNotNull(orders.size()) && orders.size() > 0){
|
||||
return orders.get(0);
|
||||
}
|
||||
|
|
|
@ -313,7 +313,6 @@ public class RlUserServiceImpl implements IRlUserService{
|
|||
@Transactional
|
||||
public int updateUser(RlUser user)
|
||||
{
|
||||
Long userId = user.getUserId();
|
||||
return rlUserMapper.updateUser(user);
|
||||
}
|
||||
|
||||
|
|
|
@ -72,10 +72,10 @@ public class WxPayService implements IWxPayService {
|
|||
|
||||
private static final String PREPAY_LOCK = "prepay:";
|
||||
|
||||
@Value("${wx.appid}")
|
||||
@Value("${wx.appid1}")
|
||||
private String appId;
|
||||
|
||||
@Value("${wx.appSecret}")
|
||||
@Value("${wx.appSecret1}")
|
||||
private String appSecret;
|
||||
|
||||
@Override
|
||||
|
|
|
@ -476,11 +476,14 @@ public class StoreServiceImpl implements RlStoreService
|
|||
|
||||
/**
|
||||
* 根据定位获取附近店铺列表
|
||||
* 车型为空的过滤
|
||||
* 距离太远的过滤
|
||||
*/
|
||||
@Override
|
||||
public List<StoreVo> getStoreListByLocation(StoreQuery query) {
|
||||
BigDecimal radiusFromQuery = query.getRadius();
|
||||
double radiusInMeters = (radiusFromQuery != null) ? radiusFromQuery.doubleValue() : Double.parseDouble(sysConfigService.selectConfigByKey("nearby.store")) * 1000;
|
||||
log.info("搜索附近【{}】米范围分润店铺", radiusInMeters);
|
||||
// 根据定位获取附近方圆X公里的店铺列表
|
||||
double userLon = Double.parseDouble(query.getPhoneLon());
|
||||
double userLat = Double.parseDouble(query.getPhoneLat());
|
||||
|
@ -490,6 +493,11 @@ public class StoreServiceImpl implements RlStoreService
|
|||
List<StoreVo> nearbyStores = allStores.stream()
|
||||
.map(store -> {
|
||||
List<RlModelVO> list = modelService.selectEModelListByStoreId(store.getStoreId());
|
||||
log.info("店铺【{}】的车型列表:{}", store.getStoreId(), list);
|
||||
// 如果 list 为空或为 null,直接返回 null
|
||||
if (list == null || list.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
store.setModels(list);
|
||||
/** 日均 */
|
||||
// 计算最低价格
|
||||
|
@ -512,6 +520,8 @@ public class StoreServiceImpl implements RlStoreService
|
|||
store.setDistance(formattedDistance); // 设置距离
|
||||
return store; // 返回更新后的 store
|
||||
})
|
||||
.filter(Objects::nonNull) // 过滤掉为 null 的 store 对象
|
||||
.filter(store -> store.getRentalCar() > 0) // 过滤掉租赁车辆数量为 0 的店铺
|
||||
.filter(store -> store.getDistance() <= radiusInMeters) // 过滤距离
|
||||
.sorted(Comparator.comparingDouble(StoreVo::getDistance)) // 根据距离排序
|
||||
.collect(Collectors.toList());
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
package com.ruoyi.system.task;
|
||||
|
||||
import com.ruoyi.common.constant.ServiceConstants;
|
||||
import com.ruoyi.common.exception.ServiceException;
|
||||
import com.ruoyi.system.domain.order.RlOrder;
|
||||
import com.ruoyi.system.domain.order.RlOrderQuery;
|
||||
import com.ruoyi.system.domain.order.RlOrderVO;
|
||||
import com.ruoyi.system.service.IRlOrderOperService;
|
||||
import com.ruoyi.system.service.IRlOrderService;
|
||||
import com.ruoyi.system.service.IWxPayService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -32,6 +34,9 @@ public class RlTask {
|
|||
@Resource
|
||||
private IRlOrderService orderService;
|
||||
|
||||
@Autowired
|
||||
private IRlOrderOperService orderOperService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
@ -60,7 +65,13 @@ public class RlTask {
|
|||
RlOrder rlOrder = new RlOrder();
|
||||
rlOrder.setOrderId(orderVO.getOrderId());
|
||||
rlOrder.setStatus(ServiceConstants.ORDER_STATUS_AUTO_CANCEL);
|
||||
orderService.updateRlOrder(rlOrder);
|
||||
int i = orderService.updateRlOrder(rlOrder);
|
||||
if(i>0){
|
||||
if(orderOperService.recordOrderHistory(orderVO.getOrderNo(),ServiceConstants.ORDER_OPERATION_SYSTEM_CANCEL,
|
||||
orderVO.getStatus(),rlOrder.getStatus(),orderVO.getPayFee(),orderVO.getPayFee(),orderVO.getUserId(),orderVO.getPhone(),"超时系统自动取消")){
|
||||
throw new ServiceException("【记录订单履历--超时系统自动取消失败】");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
log.info("-------------------【定时任务】处理过期订单---结束----------------");
|
||||
|
|
|
@ -36,6 +36,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
where a.city_id = #{cityId}
|
||||
</select>
|
||||
|
||||
<select id="selectRlAgentByUserId" parameterType="Long" resultMap="RlAgentResult">
|
||||
<include refid="selectRlAgentVo"/>
|
||||
where a.userid = #{userid}
|
||||
</select>
|
||||
|
||||
<insert id="insertRlAgent" parameterType="RlAgent" useGeneratedKeys="true" keyProperty="agentId">
|
||||
insert into rl_agent
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
|
|
@ -7,7 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<resultMap type="RlDividendDetailVO" id="RlDividendDetailResult" autoMapping="true" />
|
||||
|
||||
<sql id="selectRlDividendDetailVo">
|
||||
select dd.id, dd.agent_id, a.name agentName, dd.partner_id, dd.partner_name, dd.partner_phone, dd.partner_type, dd.order_no,
|
||||
select dd.id, dd.agent_id, a.name agentName, dd.partner_id, dd.partner_name, dd.partner_phone, dd.partner_type, dd.order_no,dd.status,dd.refund_amount,
|
||||
dd.total_amount, dd.dividend_amount, dd.dividend_proportion, dd.create_time from rl_dividend_detail dd
|
||||
left join rl_agent a on a.agent_id = dd.agent_id
|
||||
</sql>
|
||||
|
@ -45,6 +45,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="dividendAmount != null">dividend_amount,</if>
|
||||
<if test="dividendProportion != null">dividend_proportion,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="status != null">status,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="agentId != null">#{agentId},</if>
|
||||
|
@ -57,6 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="dividendAmount != null">#{dividendAmount},</if>
|
||||
<if test="dividendProportion != null">#{dividendProportion},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="status != null">#{status},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
@ -72,6 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="totalAmount != null">total_amount = #{totalAmount},</if>
|
||||
<if test="dividendAmount != null">dividend_amount = #{dividendAmount},</if>
|
||||
<if test="dividendProportion != null">dividend_proportion = #{dividendProportion},</if>
|
||||
<if test="refundAmount != null">refund_amount = #{refundAmount},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
|
|
|
@ -213,7 +213,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
<select id="getInProgressOrder" resultType="com.ruoyi.system.domain.order.RlOrderVO">
|
||||
<include refid="selectRlOrderDetail"/>
|
||||
where o.sn = #{sn} and o.status = 4 and o.user_id = #{userId}
|
||||
where o.sn = #{sn} and o.status = 4
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
|
@ -281,6 +281,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="returnAddress != null">return_address,</if>
|
||||
<if test="returnLon != null">return_lon,</if>
|
||||
<if test="returnLat != null">return_lat,</if>
|
||||
<if test="returnStoreId != null">return_store_id,</if>
|
||||
<if test="autoCancelTime != null">auto_cancel_time,</if>
|
||||
<if test="cost != null">cost,</if>
|
||||
</trim>
|
||||
|
@ -346,6 +347,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="returnAddress != null">#{returnAddress},</if>
|
||||
<if test="returnLon != null">#{returnLon},</if>
|
||||
<if test="returnLat != null">#{returnLat},</if>
|
||||
<if test="returnStoreId != null">#{returnStoreId},</if>
|
||||
<if test="autoCancelTime != null">#{autoCancelTime},</if>
|
||||
<if test="cost != null">#{cost},</if>
|
||||
</trim>
|
||||
|
|
Loading…
Reference in New Issue
Block a user