diff --git a/eride-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java b/eride-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java index 8512042..fece2b9 100644 --- a/eride-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java +++ b/eride-admin/src/main/java/com/ruoyi/web/controller/app/AppVerifyController.java @@ -17,6 +17,7 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.ServiceUtil; import com.ruoyi.common.utils.verify.vo.IDResponse; import com.ruoyi.common.utils.wx.vo.PrepayResponseVO; import com.ruoyi.framework.web.service.TokenService; @@ -826,22 +827,30 @@ public class AppVerifyController extends BaseController } /** - * 根据token查询车辆列表 + * 根据token查询车辆列表(个人) */ @GetMapping("/getDeviceListByToken") public AjaxResult getDeviceListByToken() { - logger.info("【根据token查询车辆列表】"); - // todo 如果是用户有订单,则返回所有订单中的车辆 获取到用户类型,如果是普通用户,则查询订单来判断 - if(ServiceConstants.USER_TYPE_NORMAL.equals(getUserType())){ - List devices = deviceService.getInProgressOrder(getUserId()); - return success(devices); - }else{ - EDeviceQuery deviceQuery = new EDeviceQuery(); - deviceQuery.setUserId(getUserId()); - List list = deviceService.selectEDeviceListWithIsolate(deviceQuery); - return success(list); - } + logger.info("【根据token查询车辆列表(个人)】"); + ServiceUtil.assertion(!getUserType().equals(ServiceConstants.USER_TYPE_NORMAL), "您没有权限访问"); + List devices = deviceService.getInProgressOrder(getUserId()); + return success(devices); + } + + /** + * 根据token查询车辆列表(商家) + */ + @GetMapping("/getDeviceListByMerchantToken") + public AjaxResult getDeviceListByMerchantToken(String keywords) + { + logger.info("【根据token查询车辆列表(商家)】:keywords= {}", keywords); + ServiceUtil.assertion(!getUserType().equals(ServiceConstants.USER_TYPE_MERCHANT), "您没有权限访问"); + EDeviceQuery deviceQuery = new EDeviceQuery(); + deviceQuery.setUserId(getUserId()); + deviceQuery.setKeywords(keywords); + List list = deviceService.selectEDeviceListWithIsolate(deviceQuery); + return success(list); } /** @@ -877,10 +886,13 @@ public class AppVerifyController extends BaseController * 根据token获取提现渠道的列表 */ @GetMapping("/getUserWithdrawChannelList") - public AjaxResult getUserWithdrawChannelList() + public AjaxResult getUserWithdrawChannelList(Long userId) { - logger.info("根据token获取提现渠道列表:【userId="+getUserId()+"】"); - return AjaxResult.success(userWithdrawService.selectRlUserWithdrawListByUserId(getUserId())); + if (userId == null) { + userId = getUserId(); + } + logger.info("根据token获取提现渠道列表:【userId={}】", userId); + return AjaxResult.success(userWithdrawService.selectRlUserWithdrawListByUserId(userId)); } /** @@ -937,6 +949,16 @@ public class AppVerifyController extends BaseController return toAjax(feeRuleService.updateRlFeeRule(rlFeeRule)); } + /** + * 获取收费模板详细信息 + */ + @GetMapping(value = "/rule/{ruleId}") + public AjaxResult getInfo(@PathVariable("ruleId") Long ruleId) + { + logger.info("获取收费模板详细信息:【ruleId={}】", ruleId); + return success(feeRuleService.selectRlFeeRuleByRuleId(ruleId)); + } + /** * 删除收费模板(逻辑删除) */ diff --git a/eride-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java b/eride-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java index 848cf08..812c432 100644 --- a/eride-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java +++ b/eride-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java @@ -141,8 +141,12 @@ public class CaptchaController sendSmsVo.setSignName(signName); SendSmsResponse response = null; log.info("向阿里云发送短信,请求,----------【{}】", JSON.toJSONString(sendSmsVo)); -// response = SendAliSmsUtil.sendVerifyCode(accessKeyId,accessKeySecret,sendSmsVo); -// log.info("发送阿里云短信成功,返回----------【{}】",JSON.toJSONString(response)); + try { + response = SendAliSmsUtil.sendVerifyCode(accessKeyId,accessKeySecret,sendSmsVo); + } catch (ClientException e) { + throw new RuntimeException(e); + } + log.info("发送阿里云短信成功,返回----------【{}】",JSON.toJSONString(response)); //把验证码答应存入缓存,10分钟的时间 redisCache.setCacheObject(verifyKey, code, Constants.CODE_EXPIRATION, TimeUnit.MINUTES); //把信息封装返回 diff --git a/eride-admin/src/main/java/com/ruoyi/web/controller/system/EDeviceController.java b/eride-admin/src/main/java/com/ruoyi/web/controller/system/EDeviceController.java index 0c74b1c..606ca53 100644 --- a/eride-admin/src/main/java/com/ruoyi/web/controller/system/EDeviceController.java +++ b/eride-admin/src/main/java/com/ruoyi/web/controller/system/EDeviceController.java @@ -8,6 +8,7 @@ import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.system.domain.device.EDevice; import com.ruoyi.system.domain.device.EDeviceQuery; +import com.ruoyi.system.domain.device.EDeviceVO; import com.ruoyi.system.service.IEDeviceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -37,7 +38,7 @@ public class EDeviceController extends BaseController public TableDataInfo list(EDeviceQuery eDevice) { startPage(); - List list = eDeviceService.selectEDeviceListWithIsolate(eDevice); + List list = eDeviceService.selectEDeviceListWithIsolate(eDevice); return getDataTable(list); } diff --git a/eride-admin/src/main/java/com/ruoyi/web/controller/system/RlDividendDetailController.java b/eride-admin/src/main/java/com/ruoyi/web/controller/system/RlDividendDetailController.java new file mode 100644 index 0000000..af30f40 --- /dev/null +++ b/eride-admin/src/main/java/com/ruoyi/web/controller/system/RlDividendDetailController.java @@ -0,0 +1,100 @@ +package com.ruoyi.web.controller.system; + +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.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.system.domain.dividendDetail.RlDividendDetail; +import com.ruoyi.system.domain.dividendDetail.RlDividendDetailQuery; +import com.ruoyi.system.domain.dividendDetail.RlDividendDetailVO; +import com.ruoyi.system.service.IRlDividendDetailService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 分账明细Controller + * + * @author qzz + * @date 2024-10-10 + */ +@RestController +@RequestMapping("/system/detail") +public class RlDividendDetailController extends BaseController +{ + @Resource + private IRlDividendDetailService rlDividendDetailService; + + /** + * 查询分账明细列表 + */ + @PreAuthorize("@ss.hasPermi('system:detail:list')") + @GetMapping("/list") + public TableDataInfo list(RlDividendDetailQuery rlDividendDetail) + { + startPage(); + List list = rlDividendDetailService.selectRlDividendDetailList(rlDividendDetail); + return getDataTable(list); + } + + /** + * 导出分账明细列表 + */ + @PreAuthorize("@ss.hasPermi('system:detail:export')") + @Log(title = "分账明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, RlDividendDetailQuery rlDividendDetail) + { + List list = rlDividendDetailService.selectRlDividendDetailList(rlDividendDetail); + ExcelUtil util = new ExcelUtil(RlDividendDetailVO.class); + util.exportExcel(response, list, "分账明细数据"); + } + + /** + * 获取分账明细详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:detail:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) + { + return success(rlDividendDetailService.selectRlDividendDetailById(id)); + } + + /** + * 新增分账明细 + */ + @PreAuthorize("@ss.hasPermi('system:detail:add')") + @Log(title = "分账明细", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody RlDividendDetail rlDividendDetail) + { + return toAjax(rlDividendDetailService.insertRlDividendDetail(rlDividendDetail)); + } + + /** + * 修改分账明细 + */ + @PreAuthorize("@ss.hasPermi('system:detail:edit')") + @Log(title = "分账明细", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody RlDividendDetail rlDividendDetail) + { + return toAjax(rlDividendDetailService.updateRlDividendDetail(rlDividendDetail)); + } + + /** + * 删除分账明细 + */ + @PreAuthorize("@ss.hasPermi('system:detail:remove')") + @Log(title = "分账明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) + { + return toAjax(rlDividendDetailService.deleteRlDividendDetailByIds(ids)); + } +} diff --git a/eride-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java b/eride-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java index 9a33bab..61abbfa 100644 --- a/eride-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java +++ b/eride-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java @@ -28,6 +28,7 @@ public class SysRegisterController extends BaseController @PostMapping("/register") public AjaxResult register(@RequestBody RegisterBody user) { + logger.info("【注册用户】请求参数register user:{}", user); if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) { return error("当前系统没有开启注册功能!"); diff --git a/eride-admin/src/main/resources/application.yml b/eride-admin/src/main/resources/application.yml index c9c88c7..b700352 100644 --- a/eride-admin/src/main/resources/application.yml +++ b/eride-admin/src/main/resources/application.yml @@ -64,7 +64,7 @@ spring: devtools: restart: # 热部署开关 - enabled: true + enabled: false # redis 配置 redis: # 地址 diff --git a/eride-common/src/main/java/com/ruoyi/common/core/domain/ValidateResult.java b/eride-common/src/main/java/com/ruoyi/common/core/domain/ValidateResult.java new file mode 100644 index 0000000..713b7d7 --- /dev/null +++ b/eride-common/src/main/java/com/ruoyi/common/core/domain/ValidateResult.java @@ -0,0 +1,41 @@ +package com.ruoyi.common.core.domain; + +import lombok.Data; + +/** + * 业务校验结果 + * @author wjh + * 2024/4/16 + */ +@Data +public class ValidateResult { + + private int code; + private String msg; + + public boolean isSuccess() { + return this.code == 200; + } + + public boolean isError() { + return !isSuccess(); + } + + private ValidateResult(int code, String msg) { + this.code = code; + this.msg = msg; + } + + public static ValidateResult success() { + return new ValidateResult(200, "success"); + } + + public static ValidateResult error(String msg) { + return new ValidateResult(500, msg); + } + + public static ValidateResult error(int code, String msg) { + return new ValidateResult(code, msg); + } + +} diff --git a/eride-common/src/main/java/com/ruoyi/common/core/domain/entity/EUserVO.java b/eride-common/src/main/java/com/ruoyi/common/core/domain/entity/EUserVO.java index 4feb1f3..8ccc210 100644 --- a/eride-common/src/main/java/com/ruoyi/common/core/domain/entity/EUserVO.java +++ b/eride-common/src/main/java/com/ruoyi/common/core/domain/entity/EUserVO.java @@ -17,7 +17,7 @@ public class EUserVO extends EUser private BigDecimal totalWithdrawAmount = new BigDecimal("0.00"); /** 可提现金额 */ - private BigDecimal withdrawalAmount; + private BigDecimal withdrawalAmount = new BigDecimal("0.00"); /** 最后账变描述 */ private String lastChangeBalanceDesc; diff --git a/eride-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/eride-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java index 1779135..ca8f30d 100644 --- a/eride-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java +++ b/eride-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java @@ -45,6 +45,11 @@ public class LoginBody */ private String newPassword; + /** + * openid + */ + private String openid; + } diff --git a/eride-common/src/main/java/com/ruoyi/common/utils/ServiceUtil.java b/eride-common/src/main/java/com/ruoyi/common/utils/ServiceUtil.java new file mode 100644 index 0000000..87fb1cb --- /dev/null +++ b/eride-common/src/main/java/com/ruoyi/common/utils/ServiceUtil.java @@ -0,0 +1,43 @@ +package com.ruoyi.common.utils; + +import com.ruoyi.common.core.domain.ValidateResult; +import com.ruoyi.common.exception.ServiceException; + +/** + * @author 辉 + * 2024/3/4 + */ +public class ServiceUtil { + + /** + * 判断是否满足条件,满足则抛出异常 + * @param flag 条件 + * @param msg 异常说明 + */ + public static void assertion(boolean flag, String msg) { + assertion(flag, msg, 500); + } + + /** + * 判断是否满足条件,满足则抛出异常 + * @param flag 条件 + * @param msg 异常说明 + * @param code 业务代码 + */ + public static void assertion(boolean flag, String msg, int code) { + if (flag) { + throw new ServiceException(msg, code); + } + } + + public static void assertion(ValidateResult result) { + if (result.isError()) { + throw new ServiceException(result.getMsg(), result.getCode()); + } + } + public static void assertion(boolean flag, String format, Object ...args) { + if (flag) { + throw new ServiceException(String.format(format, args), 500); + } + } +} diff --git a/eride-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/eride-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index 4a7030b..a232850 100644 --- a/eride-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/eride-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -14,7 +14,11 @@ 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.EUser; +import com.ruoyi.system.domain.channelWithdraw.ChannelWithdrawVO; +import com.ruoyi.system.domain.userWithdraw.EUserWithdraw; +import com.ruoyi.system.service.EChannelWithdrawService; import com.ruoyi.system.service.IEUserService; +import com.ruoyi.system.service.IEUserWithdrawService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -44,6 +48,8 @@ import com.ruoyi.framework.manager.factory.AsyncFactory; import com.ruoyi.framework.security.context.AuthenticationContextHolder; import com.ruoyi.system.service.ISysConfigService; +import java.util.List; + /** * 登录校验方法 * @@ -68,6 +74,12 @@ public class SysLoginService @Resource private IEUserService eUserService; + @Autowired + private EChannelWithdrawService channelWithdrawService; + + @Autowired + private IEUserWithdrawService userWithdrawService; + @Value("${wx.appid}") private String appId; @@ -285,6 +297,9 @@ public class SysLoginService asUser.setWxopenid(openId); log.info("【微信登录/wxlogin】用户不存在,自动注册用户:【{}】", JSON.toJSON(asUser)); int i = eUserService.insertUser(asUser); + if(i>0){ + userWithdrawalChannel(asUser.getUserId()); + } user = asUser; }else{ int i = eUserService.updateUser(user); @@ -313,6 +328,27 @@ public class SysLoginService return tokenService.createToken(loginUser); } + private void userWithdrawalChannel(Long userId) { + List channelWithdrawVOS = channelWithdrawService.selectAllChannelWithdrawList(); + for (ChannelWithdrawVO channelWithdrawVO : channelWithdrawVOS) { + EUserWithdraw rlUserWithdraw = new EUserWithdraw(); + rlUserWithdraw.setHandlingChargeType(channelWithdrawVO.getHandlingChargeType()); + rlUserWithdraw.setWithdrawHandlingCharge(channelWithdrawVO.getWithdrawHandlingCharge()); + rlUserWithdraw.setUserId(userId); + rlUserWithdraw.setChannelId(channelWithdrawVO.getChannelId()); + rlUserWithdraw.setIsOpen(true); + rlUserWithdraw.setMaxAmount(channelWithdrawVO.getMaxAmount()); + rlUserWithdraw.setMinAmount(channelWithdrawVO.getMinAmount()); + rlUserWithdraw.setName(channelWithdrawVO.getName()); + rlUserWithdraw.setPicture(channelWithdrawVO.getPicture()); + rlUserWithdraw.setIsNeedCode(channelWithdrawVO.getIsNeedCode()); + int i = userWithdrawService.insertRlUserWithdraw(rlUserWithdraw); + if(i>0){ + log.info("【微信登录/wxlogin】用户【{}】创建用户提现渠道【{}】", userId, JSON.toJSON(rlUserWithdraw)); + } + } + } + /** * 记录app登录信息 * @@ -389,10 +425,11 @@ public class SysLoginService asUser.setLoginIp(IpUtils.getIpAddr()); asUser.setLoginDate(DateUtils.getNowDate()); asUser.setCreateTime(DateUtils.getNowDate()); - log.info("【微信登录/wxlogin】用户不存在,自动注册用户:【{}】", JSON.toJSON(asUser)); + log.info("【验证码登录/appCodeLogin】用户不存在,自动注册用户:【{}】", JSON.toJSON(asUser)); int i = eUserService.insertUser(asUser); if(i>0){ - log.info("【微信登录/wxlogin】用户注册成功:【{}】", JSON.toJSON(asUser)); + log.info("【验证码登录/appCodeLogin】用户注册成功:【{}】", JSON.toJSON(asUser)); + userWithdrawalChannel(asUser.getUserId()); } user = asUser; }else{ diff --git a/eride-system/src/main/java/com/ruoyi/system/domain/device/EDeviceQuery.java b/eride-system/src/main/java/com/ruoyi/system/domain/device/EDeviceQuery.java index cbd3235..808bd40 100644 --- a/eride-system/src/main/java/com/ruoyi/system/domain/device/EDeviceQuery.java +++ b/eride-system/src/main/java/com/ruoyi/system/domain/device/EDeviceQuery.java @@ -5,4 +5,7 @@ import lombok.Data; @Data public class EDeviceQuery extends EDevice{ + /** 关键字: 车牌号或sn */ + private String keywords; + } diff --git a/eride-system/src/main/java/com/ruoyi/system/domain/device/EDeviceVO.java b/eride-system/src/main/java/com/ruoyi/system/domain/device/EDeviceVO.java index 736d765..fcc6235 100644 --- a/eride-system/src/main/java/com/ruoyi/system/domain/device/EDeviceVO.java +++ b/eride-system/src/main/java/com/ruoyi/system/domain/device/EDeviceVO.java @@ -32,4 +32,7 @@ public class EDeviceVO extends EDevice{ @Excel(name = "功能列表") private List functionList; + @Excel(name = "正在进行中的订单号") + private String inProgressOrderNo; + } diff --git a/eride-system/src/main/java/com/ruoyi/system/domain/dividendDetail/RlDividendDetail.java b/eride-system/src/main/java/com/ruoyi/system/domain/dividendDetail/RlDividendDetail.java new file mode 100644 index 0000000..38d8393 --- /dev/null +++ b/eride-system/src/main/java/com/ruoyi/system/domain/dividendDetail/RlDividendDetail.java @@ -0,0 +1,67 @@ +package com.ruoyi.system.domain.dividendDetail; + +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 分账明细对象 rl_dividend_detail + * + * @author qzz + * @date 2024-10-10 + */ +@Data +public class RlDividendDetail extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long id; + + /** 代理商 */ + @Excel(name = "代理商") + private Long agentId; + + /** 合伙人 */ + @Excel(name = "合伙人") + private Long partnerId; + + /** 合伙名称 */ + @Excel(name = "合伙人名称") + private String partnerName; + + /** 合伙名称 */ + @Excel(name = "合伙人名称") + private String partnerPhone; + + /** 合伙人类型 00系统用户,01普通用户,02代理商,03商户,04调度员) */ + @Excel(name = "合伙人类型 00系统用户,01普通用户,02代理商,03商户,04调度员)") + private String partnerType; + + /** 订单号 */ + @Excel(name = "订单号") + private String orderNo; + + /** 订单总金额 */ + @Excel(name = "订单总金额") + private BigDecimal totalAmount; + + /** 分账金额 */ + @Excel(name = "分账金额") + private BigDecimal dividendAmount; + + /** 分红比例 */ + @Excel(name = "分红比例") + private BigDecimal dividendProportion; + + /** 退款金额 */ + @Excel(name = "退款金额") + private BigDecimal refundAmount; + + /** 状态 */ + @Excel(name = "状态") + private String status; + +} diff --git a/eride-system/src/main/java/com/ruoyi/system/domain/dividendDetail/RlDividendDetailQuery.java b/eride-system/src/main/java/com/ruoyi/system/domain/dividendDetail/RlDividendDetailQuery.java new file mode 100644 index 0000000..44e2bb7 --- /dev/null +++ b/eride-system/src/main/java/com/ruoyi/system/domain/dividendDetail/RlDividendDetailQuery.java @@ -0,0 +1,10 @@ +package com.ruoyi.system.domain.dividendDetail; + +import lombok.Data; + +@Data +public class RlDividendDetailQuery extends RlDividendDetail{ + + /** 代理商名称 */ + private String agentName; +} diff --git a/eride-system/src/main/java/com/ruoyi/system/domain/dividendDetail/RlDividendDetailVO.java b/eride-system/src/main/java/com/ruoyi/system/domain/dividendDetail/RlDividendDetailVO.java new file mode 100644 index 0000000..1a56768 --- /dev/null +++ b/eride-system/src/main/java/com/ruoyi/system/domain/dividendDetail/RlDividendDetailVO.java @@ -0,0 +1,11 @@ +package com.ruoyi.system.domain.dividendDetail; + +import lombok.Data; + +@Data +public class RlDividendDetailVO extends RlDividendDetail{ + + /** 代理名称 */ + private String agentName; + +} diff --git a/eride-system/src/main/java/com/ruoyi/system/domain/rule/EFeeRule.java b/eride-system/src/main/java/com/ruoyi/system/domain/rule/EFeeRule.java index 63b3611..1ebae53 100644 --- a/eride-system/src/main/java/com/ruoyi/system/domain/rule/EFeeRule.java +++ b/eride-system/src/main/java/com/ruoyi/system/domain/rule/EFeeRule.java @@ -46,4 +46,7 @@ public class EFeeRule extends BaseEntity /** 删除标志(0代表存在 2代表删除) */ private String delFlag; + + /** 商户id */ + private Long merchantId; } diff --git a/eride-system/src/main/java/com/ruoyi/system/mapper/EDeviceMapper.java b/eride-system/src/main/java/com/ruoyi/system/mapper/EDeviceMapper.java index 7d70463..6950aaa 100644 --- a/eride-system/src/main/java/com/ruoyi/system/mapper/EDeviceMapper.java +++ b/eride-system/src/main/java/com/ruoyi/system/mapper/EDeviceMapper.java @@ -55,7 +55,7 @@ public interface EDeviceMapper extends BaseMapper * @param EDevice 设备 * @return 设备集合 */ - public List selectEDeviceListWithIsolate(EDevice EDevice); + public List selectEDeviceListWithIsolate(EDevice EDevice); /** * 新增设备 @@ -175,4 +175,12 @@ public interface EDeviceMapper extends BaseMapper * @return 结果 */ List getInProgressOrder(Long userId); + + /** + * 根据sn查询正在进行的车辆列表 + * + * @param sn sn + * @return 结果 + */ + String getInProgressOrderBySn(String sn); } diff --git a/eride-system/src/main/java/com/ruoyi/system/mapper/RlDividendDetailMapper.java b/eride-system/src/main/java/com/ruoyi/system/mapper/RlDividendDetailMapper.java new file mode 100644 index 0000000..01c932f --- /dev/null +++ b/eride-system/src/main/java/com/ruoyi/system/mapper/RlDividendDetailMapper.java @@ -0,0 +1,71 @@ +package com.ruoyi.system.mapper; + +import com.ruoyi.system.domain.dividendDetail.RlDividendDetail; +import com.ruoyi.system.domain.dividendDetail.RlDividendDetailQuery; +import com.ruoyi.system.domain.dividendDetail.RlDividendDetailVO; + +import java.util.List; + +/** + * 分账明细Mapper接口 + * + * @author qzz + * @date 2024-10-10 + */ +public interface RlDividendDetailMapper +{ + /** + * 查询分账明细 + * + * @param id 分账明细主键 + * @return 分账明细 + */ + public RlDividendDetail selectRlDividendDetailById(Long id); + + /** + * 查询分账明细列表 + * + * @param rlDividendDetail 分账明细 + * @return 分账明细集合 + */ + public List selectRlDividendDetailList(RlDividendDetailQuery rlDividendDetail); + + /** + * 新增分账明细 + * + * @param rlDividendDetail 分账明细 + * @return 结果 + */ + public int insertRlDividendDetail(RlDividendDetail rlDividendDetail); + + /** + * 修改分账明细 + * + * @param rlDividendDetail 分账明细 + * @return 结果 + */ + public int updateRlDividendDetail(RlDividendDetail rlDividendDetail); + + /** + * 删除分账明细 + * + * @param id 分账明细主键 + * @return 结果 + */ + public int deleteRlDividendDetailById(Long id); + + /** + * 批量删除分账明细 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteRlDividendDetailByIds(Long[] ids); + + /** + * 根据订单号查询分账明细列表 + * @param orderNo + * @return + */ + List selectRlDividendDetailListByOrderNo(String orderNo); +} diff --git a/eride-system/src/main/java/com/ruoyi/system/service/IEDeviceService.java b/eride-system/src/main/java/com/ruoyi/system/service/IEDeviceService.java index fe1bb22..f3ac2c9 100644 --- a/eride-system/src/main/java/com/ruoyi/system/service/IEDeviceService.java +++ b/eride-system/src/main/java/com/ruoyi/system/service/IEDeviceService.java @@ -68,7 +68,7 @@ public interface IEDeviceService extends IService * @param device 设备 * @return 设备集合 */ - public List selectEDeviceListWithIsolate(EDeviceQuery device); + public List selectEDeviceListWithIsolate(EDeviceQuery device); /** * 新增设备 diff --git a/eride-system/src/main/java/com/ruoyi/system/service/IRlDividendDetailService.java b/eride-system/src/main/java/com/ruoyi/system/service/IRlDividendDetailService.java new file mode 100644 index 0000000..5590911 --- /dev/null +++ b/eride-system/src/main/java/com/ruoyi/system/service/IRlDividendDetailService.java @@ -0,0 +1,99 @@ +package com.ruoyi.system.service; + +import com.ruoyi.system.domain.dividendDetail.RlDividendDetail; +import com.ruoyi.system.domain.dividendDetail.RlDividendDetailQuery; +import com.ruoyi.system.domain.dividendDetail.RlDividendDetailVO; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 分账明细Service接口 + * + * @author qzz + * @date 2024-10-10 + */ +public interface IRlDividendDetailService +{ + /** + * 查询分账明细 + * + * @param id 分账明细主键 + * @return 分账明细 + */ + public RlDividendDetail selectRlDividendDetailById(Long id); + + /** + * 查询分账明细列表 + * + * @param rlDividendDetail 分账明细 + * @return 分账明细集合 + */ + public List selectRlDividendDetailList(RlDividendDetailQuery rlDividendDetail); + + /** + * 根据订单号查询分账明细列表 + * @param orderNo 订单号 + * @return 分账明细集合 + */ + public List selectRlDividendDetailListByOrderNo(String orderNo); + + /** + * 新增分账明细 + * + * @param rlDividendDetail 分账明细 + * @return 结果 + */ + public int insertRlDividendDetail(RlDividendDetail rlDividendDetail); + + /** + * 修改分账明细 + * + * @param rlDividendDetail 分账明细 + * @return 结果 + */ + public int updateRlDividendDetail(RlDividendDetail rlDividendDetail); + + /** + * 批量删除分账明细 + * + * @param ids 需要删除的分账明细主键集合 + * @return 结果 + */ + public int deleteRlDividendDetailByIds(Long[] ids); + + /** + * 删除分账明细信息 + * + * @param id 分账明细主键 + * @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 rlDividendDetails, BigDecimal totalDividendAmount); + + /** + * 更新退款金额 + * + * @param id 分成明细id + * @param userRefundAmount 用户退款金额 + * @return 结果 + */ + public int updateRefundAmount(Long id, BigDecimal userRefundAmount); +} diff --git a/eride-system/src/main/java/com/ruoyi/system/service/impl/EDeviceServiceImpl.java b/eride-system/src/main/java/com/ruoyi/system/service/impl/EDeviceServiceImpl.java index e74d5ea..fe46f71 100644 --- a/eride-system/src/main/java/com/ruoyi/system/service/impl/EDeviceServiceImpl.java +++ b/eride-system/src/main/java/com/ruoyi/system/service/impl/EDeviceServiceImpl.java @@ -72,6 +72,8 @@ public class EDeviceServiceImpl extends ServiceImpl impl @Autowired private IEOrderOperService orderOperService; + + // // @Autowired // private IEtFeeRuleService etFeeRuleService; @@ -247,48 +249,17 @@ public class EDeviceServiceImpl extends ServiceImpl impl */ @Override @DataScope(merchantAlias = "m", userAlias = "u") - public List selectEDeviceListWithIsolate(EDeviceQuery asDevice) + public List selectEDeviceListWithIsolate(EDeviceQuery asDevice) { if(ServiceConstants.VEHICLE_STATUS_NOT_BAND.equals(asDevice.getStatus())){ asDevice.setUnBand("1"); asDevice.setStatus(null); } - List asDevices = deviceMapper.selectEDeviceListWithIsolate(asDevice); -// for (EDevice asDevice1:asDevices){ -// Long areaId = asDevice1.getAreaId(); -// if (ObjectUtil.isNotNull(areaId) && areaId!=0){ -// EtOperatingArea etOperatingArea = etOperatingAreaService.selectEtOperatingAreaByAreaId(areaId); -// asDevice1.setAreaName(etOperatingArea.getAreaName()); -// } -// Long modelId = asDevice1.getModelId(); -// if (ObjectUtil.isNotNull(modelId)){ -// EtModel model = etModelService.selectEtModelByModelId(modelId); -// if(ObjectUtil.isNotNull(model)){ -// asDevice1.setModel(model.getModel()); -// } -// } -// String status = asDevice1.getStatus(); -// if(ObjectUtil.isNotNull(status)){ -// String typeName = sysDictDataService.selectDictLabel("as_device_status", status); -// asDevice1.setStatusStr(typeName); -// if(status.equals(ServiceConstants.VEHICLE_STATUS_NOT_BAND) && ObjectUtil.isNotNull(asDevice1.getAreaId())){ -// asDevice1.setStatus(ServiceConstants.VEHICLE_STATUS_NOT_LISTING); -// int i = deviceMapper.updateAsDevice(asDevice1); -// } -// } -// if(ObjectUtil.isNull(asDevice1.getAreaId())){ -// asDevice1.setStatus(ServiceConstants.VEHICLE_STATUS_NOT_BAND); -// int i = deviceMapper.updateAsDevice(asDevice1); -// } -// if(ObjectUtil.isNotNull(areaId) && areaId!=0){ -// SysDept sysDept = wxPayService.getDeptObjByAreaId(areaId); -// //https://dianche.chuantewulian.cn?sn=https://dche.ccttiot.com?sn=3000900 -// asDevice1.setQrText(sysDept.getDomain()+"?sn="+asDevice1.getSn()); -// asDevice1.setDeptName(sysDept.getDeptName()); -// }else{ -// asDevice1.setQrText(""); -// } -// } + List asDevices = deviceMapper.selectEDeviceListWithIsolate(asDevice); + for (EDeviceVO asDevice1:asDevices){ + String orderNo = deviceMapper.getInProgressOrderBySn(asDevice1.getSn()); + asDevice1.setInProgressOrderNo(orderNo); + } return asDevices; } diff --git a/eride-system/src/main/java/com/ruoyi/system/service/impl/EOrderServiceImpl.java b/eride-system/src/main/java/com/ruoyi/system/service/impl/EOrderServiceImpl.java index 904076d..40b0459 100644 --- a/eride-system/src/main/java/com/ruoyi/system/service/impl/EOrderServiceImpl.java +++ b/eride-system/src/main/java/com/ruoyi/system/service/impl/EOrderServiceImpl.java @@ -356,8 +356,7 @@ public class EOrderServiceImpl implements IEOrderService @Override public PrepayResponseVO createOrder(EOrderQuery order, Long userId) { String orderNo = IdUtils.getOrderNo("zl"); - PrepayResponseVO responseVO = getPrepayResponseVO(order,orderNo,ServiceConstants.ORDER_TYPE_LEASE,userId); - return responseVO; + return getPrepayResponseVO(order,orderNo,ServiceConstants.ORDER_TYPE_LEASE,userId); } /** @@ -386,7 +385,6 @@ public class EOrderServiceImpl implements IEOrderService EFeeRule feeRule = feeRuleService.selectRlFeeRuleByRuleId(order.getRuleId()); setFeeRule(type,order, feeRule); /** 解析地址 analyzeAddress */ -// analyzeAddress(order); order.setCreateTime(DateUtils.getNowDate()); order.setOrderNo(orderNo); order.setPaid(ServiceConstants.ORDER_PAY_STATUS_NON_PAYMENT); diff --git a/eride-system/src/main/java/com/ruoyi/system/service/impl/EUserServiceImpl.java b/eride-system/src/main/java/com/ruoyi/system/service/impl/EUserServiceImpl.java index f2ab17c..dcadcb0 100644 --- a/eride-system/src/main/java/com/ruoyi/system/service/impl/EUserServiceImpl.java +++ b/eride-system/src/main/java/com/ruoyi/system/service/impl/EUserServiceImpl.java @@ -9,6 +9,7 @@ import com.ruoyi.common.core.domain.entity.EUserVO; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.ServiceUtil; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.uuid.IdUtils; @@ -858,6 +859,8 @@ public class EUserServiceImpl implements IEUserService{ String orderNo = IdUtils.getOrderNo("tx"); /** 1. 获取当前用户*/ EUser user = userMapper.selectUserById(SecurityUtils.getUserId()); + ServiceUtil.assertion(user.getBalance().subtract(withdraw.getAmount()).compareTo(BigDecimal.ZERO)< 0, "用户余额不足,不能提现"); + log.info("【管理员提现】查询用户对象:{}", user); Boolean execute = transactionTemplate.execute(e -> { /** 2. 记录提现记录*/ withdrawalRecord(withdraw, orderNo, user); diff --git a/eride-system/src/main/java/com/ruoyi/system/service/impl/RlDividendDetailServiceImpl.java b/eride-system/src/main/java/com/ruoyi/system/service/impl/RlDividendDetailServiceImpl.java new file mode 100644 index 0000000..002c657 --- /dev/null +++ b/eride-system/src/main/java/com/ruoyi/system/service/impl/RlDividendDetailServiceImpl.java @@ -0,0 +1,206 @@ +package com.ruoyi.system.service.impl; + +import com.ruoyi.common.annotation.DataScope; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.system.domain.dividendDetail.RlDividendDetail; +import com.ruoyi.system.domain.dividendDetail.RlDividendDetailQuery; +import com.ruoyi.system.domain.dividendDetail.RlDividendDetailVO; +import com.ruoyi.system.mapper.RlDividendDetailMapper; +import com.ruoyi.system.service.IRlDividendDetailService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + +/** + * 分账明细Service业务层处理 + * + * @author qzz + * @date 2024-10-10 + */ +@Slf4j +@Service +public class RlDividendDetailServiceImpl implements IRlDividendDetailService +{ + @Resource + private RlDividendDetailMapper rlDividendDetailMapper; + +// @Resource +// private IRlUserExtService userExtService; +// +// @Autowired +// private IRlUserService userService; +// +// @Autowired +// private IRlAgentService agentService; +// +// @Autowired +// private IRlChangeBalanceService changeBalanceService; + + /** + * 查询分账明细 + * + * @param id 分账明细主键 + * @return 分账明细 + */ + @Override + public RlDividendDetail selectRlDividendDetailById(Long id) + { + return rlDividendDetailMapper.selectRlDividendDetailById(id); + } + + /** + * 查询分账明细列表 + * + * @param rlDividendDetail 分账明细 + * @return 分账明细 + */ + @Override +// @DataScope(agentAlias = "a",userAlias = "u") + public List selectRlDividendDetailList(RlDividendDetailQuery rlDividendDetail) + { + return rlDividendDetailMapper.selectRlDividendDetailList(rlDividendDetail); + } + + /** + * 根据订单号查询分账明细列表 + * @param orderNo + * @return + */ + @Override + public List selectRlDividendDetailListByOrderNo(String orderNo) { + return rlDividendDetailMapper.selectRlDividendDetailListByOrderNo(orderNo); + } + + /** + * 新增分账明细 + * + * @param rlDividendDetail 分账明细 + * @return 结果 + */ + @Override + public int insertRlDividendDetail(RlDividendDetail rlDividendDetail) + { + rlDividendDetail.setCreateTime(DateUtils.getNowDate()); + return rlDividendDetailMapper.insertRlDividendDetail(rlDividendDetail); + } + + /** + * 修改分账明细 + * + * @param rlDividendDetail 分账明细 + * @return 结果 + */ + @Override + public int updateRlDividendDetail(RlDividendDetail rlDividendDetail) + { + return rlDividendDetailMapper.updateRlDividendDetail(rlDividendDetail); + } + + /** + * 批量删除分账明细 + * + * @param ids 需要删除的分账明细主键 + * @return 结果 + */ + @Override + public int deleteRlDividendDetailByIds(Long[] ids) + { + return rlDividendDetailMapper.deleteRlDividendDetailByIds(ids); + } + + /** + * 删除分账明细信息 + * + * @param id 分账明细主键 + * @return 结果 + */ + @Override + public int deleteRlDividendDetailById(Long id) + { + return rlDividendDetailMapper.deleteRlDividendDetailById(id); + } + +// /** +// * 计算分账金额 +// * @param originalOrder +// * @return +// */ +// @Override +// public int calculationDividend(RlOrder originalOrder,String userType) { +// RlUserExt rlUserExt; +// RlUser rlUser ; +// RlDividendDetail rlDividendDetail = new RlDividendDetail(); +// 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()); +// rlDividendDetail.setDividendProportion(rlAgentVO.getDividendProportion()); +// }else{ +// throw new ServiceException("用户类型有误"); +// } +// rlDividendDetail.setAgentId(originalOrder.getAgentId()); +// rlDividendDetail.setPartnerId(rlUserExt.getUserId()); +// rlDividendDetail.setOrderNo(originalOrder.getOrderNo()); +// rlDividendDetail.setTotalAmount(originalOrder.getPayFee()); +// 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 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()+"】不存在"); +// } +// if(rlUserExt.getDividendProportion().compareTo(BigDecimal.ZERO)==0 || ObjectUtil.isNull(rlUserExt.getDividendProportion())){ +// 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); + } + + +} diff --git a/eride-system/src/main/resources/mapper/system/EDeviceMapper.xml b/eride-system/src/main/resources/mapper/system/EDeviceMapper.xml index e69a96d..e3ec994 100644 --- a/eride-system/src/main/resources/mapper/system/EDeviceMapper.xml +++ b/eride-system/src/main/resources/mapper/system/EDeviceMapper.xml @@ -34,12 +34,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/eride-system/src/main/resources/mapper/system/EFeeRuleMapper.xml b/eride-system/src/main/resources/mapper/system/EFeeRuleMapper.xml index 00589f2..1e60c22 100644 --- a/eride-system/src/main/resources/mapper/system/EFeeRuleMapper.xml +++ b/eride-system/src/main/resources/mapper/system/EFeeRuleMapper.xml @@ -37,8 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" diff --git a/eride-system/src/main/resources/mapper/system/EUserMapper.xml b/eride-system/src/main/resources/mapper/system/EUserMapper.xml index d3b26aa..56d0fd7 100644 --- a/eride-system/src/main/resources/mapper/system/EUserMapper.xml +++ b/eride-system/src/main/resources/mapper/system/EUserMapper.xml @@ -194,7 +194,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" @@ -293,7 +293,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - update e_user_ext set balance = balance + #{changeAmount} where user_id = #{userId} + update e_user set balance = balance + #{changeAmount} where user_id = #{userId} diff --git a/eride-system/src/main/resources/mapper/system/RlDividendDetailMapper.xml b/eride-system/src/main/resources/mapper/system/RlDividendDetailMapper.xml new file mode 100644 index 0000000..7bfa2f8 --- /dev/null +++ b/eride-system/src/main/resources/mapper/system/RlDividendDetailMapper.xml @@ -0,0 +1,103 @@ + + + + + + + + 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 + left join rl_user u on u.user_id = dd.partner_id + + + + + + + + + + insert into rl_dividend_detail + + agent_id, + partner_id, + partner_name, + partner_phone, + partner_type, + order_no, + total_amount, + dividend_amount, + dividend_proportion, + create_time, + status, + + + #{agentId}, + #{partnerId}, + #{partnerName}, + #{partnerPhone}, + #{partnerType}, + #{orderNo}, + #{totalAmount}, + #{dividendAmount}, + #{dividendProportion}, + #{createTime}, + #{status}, + + + + + update rl_dividend_detail + + agent_id = #{agentId}, + partner_id = #{partnerId}, + partner_name = #{partnerName}, + partner_phone = #{partnerPhone}, + partner_type = #{partnerType}, + order_no = #{orderNo}, + total_amount = #{totalAmount}, + dividend_amount = #{dividendAmount}, + dividend_proportion = #{dividendProportion}, + refund_amount = #{refundAmount}, + create_time = #{createTime}, + status = #{status}, + + where id = #{id} + + + + delete from rl_dividend_detail where id = #{id} + + + + delete from rl_dividend_detail where id in + + #{id} + + +