分账明细
This commit is contained in:
邱贞招 2024-12-03 17:25:18 +08:00
parent c6f3393772
commit 589537fc78
29 changed files with 892 additions and 69 deletions

View File

@ -17,6 +17,7 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils; 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.verify.vo.IDResponse;
import com.ruoyi.common.utils.wx.vo.PrepayResponseVO; import com.ruoyi.common.utils.wx.vo.PrepayResponseVO;
import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.framework.web.service.TokenService;
@ -826,23 +827,31 @@ public class AppVerifyController extends BaseController
} }
/** /**
* 根据token查询车辆列表 * 根据token查询车辆列表个人
*/ */
@GetMapping("/getDeviceListByToken") @GetMapping("/getDeviceListByToken")
public AjaxResult getDeviceListByToken() public AjaxResult getDeviceListByToken()
{ {
logger.info("【根据token查询车辆列表】"); logger.info("【根据token查询车辆列表个人");
// todo 如果是用户有订单则返回所有订单中的车辆 获取到用户类型如果是普通用户则查询订单来判断 ServiceUtil.assertion(!getUserType().equals(ServiceConstants.USER_TYPE_NORMAL), "您没有权限访问");
if(ServiceConstants.USER_TYPE_NORMAL.equals(getUserType())){
List<EDevice> devices = deviceService.getInProgressOrder(getUserId()); List<EDevice> devices = deviceService.getInProgressOrder(getUserId());
return success(devices); return success(devices);
}else{ }
/**
* 根据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(); EDeviceQuery deviceQuery = new EDeviceQuery();
deviceQuery.setUserId(getUserId()); deviceQuery.setUserId(getUserId());
List<EDevice> list = deviceService.selectEDeviceListWithIsolate(deviceQuery); deviceQuery.setKeywords(keywords);
List<EDeviceVO> list = deviceService.selectEDeviceListWithIsolate(deviceQuery);
return success(list); return success(list);
} }
}
/** /**
* 管理员提现 * 管理员提现
@ -877,10 +886,13 @@ public class AppVerifyController extends BaseController
* 根据token获取提现渠道的列表 * 根据token获取提现渠道的列表
*/ */
@GetMapping("/getUserWithdrawChannelList") @GetMapping("/getUserWithdrawChannelList")
public AjaxResult getUserWithdrawChannelList() public AjaxResult getUserWithdrawChannelList(Long userId)
{ {
logger.info("根据token获取提现渠道列表【userId="+getUserId()+""); if (userId == null) {
return AjaxResult.success(userWithdrawService.selectRlUserWithdrawListByUserId(getUserId())); 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)); 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));
}
/** /**
* 删除收费模板(逻辑删除) * 删除收费模板(逻辑删除)
*/ */

View File

@ -141,8 +141,12 @@ public class CaptchaController
sendSmsVo.setSignName(signName); sendSmsVo.setSignName(signName);
SendSmsResponse response = null; SendSmsResponse response = null;
log.info("向阿里云发送短信,请求,----------【{}】", JSON.toJSONString(sendSmsVo)); log.info("向阿里云发送短信,请求,----------【{}】", JSON.toJSONString(sendSmsVo));
// response = SendAliSmsUtil.sendVerifyCode(accessKeyId,accessKeySecret,sendSmsVo); try {
// log.info("发送阿里云短信成功,返回----------【{}】",JSON.toJSONString(response)); response = SendAliSmsUtil.sendVerifyCode(accessKeyId,accessKeySecret,sendSmsVo);
} catch (ClientException e) {
throw new RuntimeException(e);
}
log.info("发送阿里云短信成功,返回----------【{}】",JSON.toJSONString(response));
//把验证码答应存入缓存10分钟的时间 //把验证码答应存入缓存10分钟的时间
redisCache.setCacheObject(verifyKey, code, Constants.CODE_EXPIRATION, TimeUnit.MINUTES); redisCache.setCacheObject(verifyKey, code, Constants.CODE_EXPIRATION, TimeUnit.MINUTES);
//把信息封装返回 //把信息封装返回

View File

@ -8,6 +8,7 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.device.EDevice; import com.ruoyi.system.domain.device.EDevice;
import com.ruoyi.system.domain.device.EDeviceQuery; import com.ruoyi.system.domain.device.EDeviceQuery;
import com.ruoyi.system.domain.device.EDeviceVO;
import com.ruoyi.system.service.IEDeviceService; import com.ruoyi.system.service.IEDeviceService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -37,7 +38,7 @@ public class EDeviceController extends BaseController
public TableDataInfo list(EDeviceQuery eDevice) public TableDataInfo list(EDeviceQuery eDevice)
{ {
startPage(); startPage();
List<EDevice> list = eDeviceService.selectEDeviceListWithIsolate(eDevice); List<EDeviceVO> list = eDeviceService.selectEDeviceListWithIsolate(eDevice);
return getDataTable(list); return getDataTable(list);
} }

View File

@ -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<RlDividendDetailVO> 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<RlDividendDetailVO> list = rlDividendDetailService.selectRlDividendDetailList(rlDividendDetail);
ExcelUtil<RlDividendDetailVO> util = new ExcelUtil<RlDividendDetailVO>(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));
}
}

View File

@ -28,6 +28,7 @@ public class SysRegisterController extends BaseController
@PostMapping("/register") @PostMapping("/register")
public AjaxResult register(@RequestBody RegisterBody user) public AjaxResult register(@RequestBody RegisterBody user)
{ {
logger.info("【注册用户】请求参数register user:{}", user);
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
{ {
return error("当前系统没有开启注册功能!"); return error("当前系统没有开启注册功能!");

View File

@ -64,7 +64,7 @@ spring:
devtools: devtools:
restart: restart:
# 热部署开关 # 热部署开关
enabled: true enabled: false
# redis 配置 # redis 配置
redis: redis:
# 地址 # 地址

View File

@ -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);
}
}

View File

@ -17,7 +17,7 @@ public class EUserVO extends EUser
private BigDecimal totalWithdrawAmount = new BigDecimal("0.00"); private BigDecimal totalWithdrawAmount = new BigDecimal("0.00");
/** 可提现金额 */ /** 可提现金额 */
private BigDecimal withdrawalAmount; private BigDecimal withdrawalAmount = new BigDecimal("0.00");
/** 最后账变描述 */ /** 最后账变描述 */
private String lastChangeBalanceDesc; private String lastChangeBalanceDesc;

View File

@ -45,6 +45,11 @@ public class LoginBody
*/ */
private String newPassword; private String newPassword;
/**
* openid
*/
private String openid;
} }

View File

@ -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);
}
}
}

View File

@ -14,7 +14,11 @@ import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.common.utils.wx.AccessTokenUtil; import com.ruoyi.common.utils.wx.AccessTokenUtil;
import com.ruoyi.common.utils.wx.vo.WeChatMiniAuthorizeVo; import com.ruoyi.common.utils.wx.vo.WeChatMiniAuthorizeVo;
import com.ruoyi.common.core.domain.entity.EUser; 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.IEUserService;
import com.ruoyi.system.service.IEUserWithdrawService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired; 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.framework.security.context.AuthenticationContextHolder;
import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;
import java.util.List;
/** /**
* 登录校验方法 * 登录校验方法
* *
@ -68,6 +74,12 @@ public class SysLoginService
@Resource @Resource
private IEUserService eUserService; private IEUserService eUserService;
@Autowired
private EChannelWithdrawService channelWithdrawService;
@Autowired
private IEUserWithdrawService userWithdrawService;
@Value("${wx.appid}") @Value("${wx.appid}")
private String appId; private String appId;
@ -285,6 +297,9 @@ public class SysLoginService
asUser.setWxopenid(openId); asUser.setWxopenid(openId);
log.info("【微信登录/wxlogin】用户不存在自动注册用户【{}】", JSON.toJSON(asUser)); log.info("【微信登录/wxlogin】用户不存在自动注册用户【{}】", JSON.toJSON(asUser));
int i = eUserService.insertUser(asUser); int i = eUserService.insertUser(asUser);
if(i>0){
userWithdrawalChannel(asUser.getUserId());
}
user = asUser; user = asUser;
}else{ }else{
int i = eUserService.updateUser(user); int i = eUserService.updateUser(user);
@ -313,6 +328,27 @@ public class SysLoginService
return tokenService.createToken(loginUser); return tokenService.createToken(loginUser);
} }
private void userWithdrawalChannel(Long userId) {
List<ChannelWithdrawVO> 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登录信息 * 记录app登录信息
* *
@ -389,10 +425,11 @@ public class SysLoginService
asUser.setLoginIp(IpUtils.getIpAddr()); asUser.setLoginIp(IpUtils.getIpAddr());
asUser.setLoginDate(DateUtils.getNowDate()); asUser.setLoginDate(DateUtils.getNowDate());
asUser.setCreateTime(DateUtils.getNowDate()); asUser.setCreateTime(DateUtils.getNowDate());
log.info("微信登录/wxlogin】用户不存在自动注册用户【{}】", JSON.toJSON(asUser)); log.info("验证码登录/appCodeLogin】用户不存在自动注册用户【{}】", JSON.toJSON(asUser));
int i = eUserService.insertUser(asUser); int i = eUserService.insertUser(asUser);
if(i>0){ if(i>0){
log.info("【微信登录/wxlogin】用户注册成功【{}】", JSON.toJSON(asUser)); log.info("【验证码登录/appCodeLogin】用户注册成功【{}】", JSON.toJSON(asUser));
userWithdrawalChannel(asUser.getUserId());
} }
user = asUser; user = asUser;
}else{ }else{

View File

@ -5,4 +5,7 @@ import lombok.Data;
@Data @Data
public class EDeviceQuery extends EDevice{ public class EDeviceQuery extends EDevice{
/** 关键字: 车牌号或sn */
private String keywords;
} }

View File

@ -32,4 +32,7 @@ public class EDeviceVO extends EDevice{
@Excel(name = "功能列表") @Excel(name = "功能列表")
private List<EFunction> functionList; private List<EFunction> functionList;
@Excel(name = "正在进行中的订单号")
private String inProgressOrderNo;
} }

View File

@ -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;
}

View File

@ -0,0 +1,10 @@
package com.ruoyi.system.domain.dividendDetail;
import lombok.Data;
@Data
public class RlDividendDetailQuery extends RlDividendDetail{
/** 代理商名称 */
private String agentName;
}

View File

@ -0,0 +1,11 @@
package com.ruoyi.system.domain.dividendDetail;
import lombok.Data;
@Data
public class RlDividendDetailVO extends RlDividendDetail{
/** 代理名称 */
private String agentName;
}

View File

@ -46,4 +46,7 @@ public class EFeeRule extends BaseEntity
/** 删除标志0代表存在 2代表删除 */ /** 删除标志0代表存在 2代表删除 */
private String delFlag; private String delFlag;
/** 商户id */
private Long merchantId;
} }

View File

@ -55,7 +55,7 @@ public interface EDeviceMapper extends BaseMapper<EDevice>
* @param EDevice 设备 * @param EDevice 设备
* @return 设备集合 * @return 设备集合
*/ */
public List<EDevice> selectEDeviceListWithIsolate(EDevice EDevice); public List<EDeviceVO> selectEDeviceListWithIsolate(EDevice EDevice);
/** /**
* 新增设备 * 新增设备
@ -175,4 +175,12 @@ public interface EDeviceMapper extends BaseMapper<EDevice>
* @return 结果 * @return 结果
*/ */
List<EDevice> getInProgressOrder(Long userId); List<EDevice> getInProgressOrder(Long userId);
/**
* 根据sn查询正在进行的车辆列表
*
* @param sn sn
* @return 结果
*/
String getInProgressOrderBySn(String sn);
} }

View File

@ -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<RlDividendDetailVO> 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<RlDividendDetailVO> selectRlDividendDetailListByOrderNo(String orderNo);
}

View File

@ -68,7 +68,7 @@ public interface IEDeviceService extends IService<EDevice>
* @param device 设备 * @param device 设备
* @return 设备集合 * @return 设备集合
*/ */
public List<EDevice> selectEDeviceListWithIsolate(EDeviceQuery device); public List<EDeviceVO> selectEDeviceListWithIsolate(EDeviceQuery device);
/** /**
* 新增设备 * 新增设备

View File

@ -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<RlDividendDetailVO> selectRlDividendDetailList(RlDividendDetailQuery rlDividendDetail);
/**
* 根据订单号查询分账明细列表
* @param orderNo 订单号
* @return 分账明细集合
*/
public List<RlDividendDetailVO> 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<RlDividendDetailVO> rlDividendDetails, BigDecimal totalDividendAmount);
/**
* 更新退款金额
*
* @param id 分成明细id
* @param userRefundAmount 用户退款金额
* @return 结果
*/
public int updateRefundAmount(Long id, BigDecimal userRefundAmount);
}

View File

@ -72,6 +72,8 @@ public class EDeviceServiceImpl extends ServiceImpl<EDeviceMapper, EDevice> impl
@Autowired @Autowired
private IEOrderOperService orderOperService; private IEOrderOperService orderOperService;
// //
// @Autowired // @Autowired
// private IEtFeeRuleService etFeeRuleService; // private IEtFeeRuleService etFeeRuleService;
@ -247,48 +249,17 @@ public class EDeviceServiceImpl extends ServiceImpl<EDeviceMapper, EDevice> impl
*/ */
@Override @Override
@DataScope(merchantAlias = "m", userAlias = "u") @DataScope(merchantAlias = "m", userAlias = "u")
public List<EDevice> selectEDeviceListWithIsolate(EDeviceQuery asDevice) public List<EDeviceVO> selectEDeviceListWithIsolate(EDeviceQuery asDevice)
{ {
if(ServiceConstants.VEHICLE_STATUS_NOT_BAND.equals(asDevice.getStatus())){ if(ServiceConstants.VEHICLE_STATUS_NOT_BAND.equals(asDevice.getStatus())){
asDevice.setUnBand("1"); asDevice.setUnBand("1");
asDevice.setStatus(null); asDevice.setStatus(null);
} }
List<EDevice> asDevices = deviceMapper.selectEDeviceListWithIsolate(asDevice); List<EDeviceVO> asDevices = deviceMapper.selectEDeviceListWithIsolate(asDevice);
// for (EDevice asDevice1:asDevices){ for (EDeviceVO asDevice1:asDevices){
// Long areaId = asDevice1.getAreaId(); String orderNo = deviceMapper.getInProgressOrderBySn(asDevice1.getSn());
// if (ObjectUtil.isNotNull(areaId) && areaId!=0){ asDevice1.setInProgressOrderNo(orderNo);
// 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("");
// }
// }
return asDevices; return asDevices;
} }

View File

@ -356,8 +356,7 @@ public class EOrderServiceImpl implements IEOrderService
@Override @Override
public PrepayResponseVO createOrder(EOrderQuery order, Long userId) { public PrepayResponseVO createOrder(EOrderQuery order, Long userId) {
String orderNo = IdUtils.getOrderNo("zl"); String orderNo = IdUtils.getOrderNo("zl");
PrepayResponseVO responseVO = getPrepayResponseVO(order,orderNo,ServiceConstants.ORDER_TYPE_LEASE,userId); return getPrepayResponseVO(order,orderNo,ServiceConstants.ORDER_TYPE_LEASE,userId);
return responseVO;
} }
/** /**
@ -386,7 +385,6 @@ public class EOrderServiceImpl implements IEOrderService
EFeeRule feeRule = feeRuleService.selectRlFeeRuleByRuleId(order.getRuleId()); EFeeRule feeRule = feeRuleService.selectRlFeeRuleByRuleId(order.getRuleId());
setFeeRule(type,order, feeRule); setFeeRule(type,order, feeRule);
/** 解析地址 analyzeAddress */ /** 解析地址 analyzeAddress */
// analyzeAddress(order);
order.setCreateTime(DateUtils.getNowDate()); order.setCreateTime(DateUtils.getNowDate());
order.setOrderNo(orderNo); order.setOrderNo(orderNo);
order.setPaid(ServiceConstants.ORDER_PAY_STATUS_NON_PAYMENT); order.setPaid(ServiceConstants.ORDER_PAY_STATUS_NON_PAYMENT);

View File

@ -9,6 +9,7 @@ import com.ruoyi.common.core.domain.entity.EUserVO;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.ServiceUtil;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.common.utils.uuid.IdUtils;
@ -858,6 +859,8 @@ public class EUserServiceImpl implements IEUserService{
String orderNo = IdUtils.getOrderNo("tx"); String orderNo = IdUtils.getOrderNo("tx");
/** 1. 获取当前用户*/ /** 1. 获取当前用户*/
EUser user = userMapper.selectUserById(SecurityUtils.getUserId()); 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 -> { Boolean execute = transactionTemplate.execute(e -> {
/** 2. 记录提现记录*/ /** 2. 记录提现记录*/
withdrawalRecord(withdraw, orderNo, user); withdrawalRecord(withdraw, orderNo, user);

View File

@ -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<RlDividendDetailVO> selectRlDividendDetailList(RlDividendDetailQuery rlDividendDetail)
{
return rlDividendDetailMapper.selectRlDividendDetailList(rlDividendDetail);
}
/**
* 根据订单号查询分账明细列表
* @param orderNo
* @return
*/
@Override
public List<RlDividendDetailVO> 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<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()+"】不存在");
// }
// 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);
}
}

View File

@ -34,12 +34,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectEDeviceListWithIsolate" parameterType="EDevice" resultMap="EDeviceResult"> <select id="selectEDeviceListWithIsolate" parameterType="EDevice" resultMap="EDeviceResult">
select de.device_id, de.picture, de.device_name, de.mac, de.sn, de.model_id, de.hardware_version_id, de.vehicle_num, select de.device_id, de.picture, de.device_name, de.mac, de.sn, de.model_id, de.hardware_version_id, de.vehicle_num,
de.activation_time, de.online_status, de.create_by, de.create_time, de.update_by,de.user_id,de.is_default, de.activation_time, de.online_status, de.create_by, de.create_time, de.update_by,de.user_id,de.is_default,mo.model,
de.update_time, de.last_time, de.last_location_time, de.gps, de.remark, de.status, de.lock_status, de.location, de.update_time, de.last_time, de.last_location_time, de.gps, de.remark, de.status, de.lock_status, de.location,
de.remaining_power, de.voltage, de.version, de.qrcode, de.longitude, de.latitude, de.signal_strength, de.satellites, de.quality from e_device de de.remaining_power, de.voltage, de.version, de.qrcode, de.longitude, de.latitude, de.signal_strength, de.satellites, de.quality from e_device de
left join e_hardware_version hv on hv.id = de.hardware_version_id left join e_hardware_version hv on hv.id = de.hardware_version_id
left join e_user u on u.user_id = de.user_id left join e_user u on u.user_id = de.user_id
left join e_user m on m.user_id = de.user_id left join e_user m on m.user_id = de.user_id
left join e_model mo on mo.model_id = de.model_id
where 1 = 1 where 1 = 1
<if test="deviceName != null and deviceName != ''"> and de.device_name like concat('%', #{deviceName}, '%')</if> <if test="deviceName != null and deviceName != ''"> and de.device_name like concat('%', #{deviceName}, '%')</if>
<if test="mac != null and mac != ''"> and de.mac like concat('%', #{mac}, '%')</if> <if test="mac != null and mac != ''"> and de.mac like concat('%', #{mac}, '%')</if>
@ -50,6 +51,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="modelId != null and modelId != ''"> and de.model_id = #{modelId}</if> <if test="modelId != null and modelId != ''"> and de.model_id = #{modelId}</if>
<if test="onlineStatus != null and onlineStatus != ''"> and de.online_status = #{onlineStatus}</if> <if test="onlineStatus != null and onlineStatus != ''"> and de.online_status = #{onlineStatus}</if>
<if test="version != null and version != ''"> and de.version = #{version}</if> <if test="version != null and version != ''"> and de.version = #{version}</if>
<if test="keywords != null and keywords != ''">
AND (de.sn LIKE CONCAT('%', #{keywords}, '%') OR de.vehicle_num LIKE CONCAT('%', #{keywords}, '%'))
</if>
<if test="hardwareVersion != null and hardwareVersion != ''"> and hv.version like concat('%', #{hardwareVersion}, '%') </if> <if test="hardwareVersion != null and hardwareVersion != ''"> and hv.version like concat('%', #{hardwareVersion}, '%') </if>
<choose> <choose>
<when test="status == '34'"> <when test="status == '34'">
@ -408,4 +412,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if> </if>
order by create_time desc order by create_time desc
</select> </select>
<select id="getInProgressOrderBySn" resultType="String">
select
o.order_no from e_order o
where o.status = 4
<if test="sn != null and sn != ''">
and o.sn = #{sn}
</if>
order by create_time desc
</select>
</mapper> </mapper>

View File

@ -37,8 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectRlFeeRuleLongListByModelId" resultType="java.lang.Long"> <select id="selectRlFeeRuleLongListByModelId" resultType="java.lang.Long">
select r.rule_id from e_fee_rule r select mr.rule_id from e_model_rule mr
left join e_model_rule mr on mr.rule_id = r.rule_id
where mr.model_id = #{modelId} where mr.model_id = #{modelId}
</select> </select>

View File

@ -194,7 +194,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectUserBalanceById" resultType="java.math.BigDecimal"> <select id="selectUserBalanceById" resultType="java.math.BigDecimal">
select balance from e_user_ext select balance from e_user
where user_id = #{userId} where user_id = #{userId}
</select> </select>
@ -293,7 +293,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update> </update>
<update id="changeBalance"> <update id="changeBalance">
update e_user_ext set balance = balance + #{changeAmount} where user_id = #{userId} update e_user set balance = balance + #{changeAmount} where user_id = #{userId}
</update> </update>
<delete id="deleteUserById" parameterType="Long"> <delete id="deleteUserById" parameterType="Long">

View File

@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.RlDividendDetailMapper">
<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,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
</sql>
<select id="selectRlDividendDetailList" parameterType="RlDividendDetailQuery" resultMap="RlDividendDetailResult">
<include refid="selectRlDividendDetailVo"/>
where 1=1
<if test="agentId != null "> and dd.agent_id = #{agentId}</if>
<if test="agentName != null "> and a.name like concat('%', #{agentName}, '%')</if>
<if test="partnerId != null "> and dd.partner_id = #{partnerId}</if>
<if test="partnerName != null "> and dd.partner_name like concat('%', #{partnerName}, '%')</if>
<if test="partnerPhone != null "> and dd.partner_phone like concat('%', #{partnerPhone}, '%')</if>
<if test="partnerType != null "> and dd.partner_type = #{partnerType}</if>
<if test="orderNo != null and orderNo != ''"> and dd.order_no like concat('%', #{orderNo}, '%')</if>
<if test="totalAmount != null "> and dd.total_amount = #{totalAmount}</if>
<if test="dividendAmount != null "> and dd.dividend_amount = #{dividendAmount}</if>
<if test="dividendProportion != null "> and dd.dividend_proportion = #{dividendProportion}</if>
${params.dataScope}
order by dd.create_time desc
</select>
<select id="selectRlDividendDetailById" parameterType="Long" resultMap="RlDividendDetailResult">
<include refid="selectRlDividendDetailVo"/>
where id = #{id}
</select>
<select id="selectRlDividendDetailListByOrderNo" parameterType="String"
resultMap="RlDividendDetailResult">
<include refid="selectRlDividendDetailVo"/>
where dd.order_no = #{orderNo}
</select>
<insert id="insertRlDividendDetail" parameterType="RlDividendDetail" useGeneratedKeys="true" keyProperty="id">
insert into rl_dividend_detail
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="agentId != null">agent_id,</if>
<if test="partnerId != null">partner_id,</if>
<if test="partnerName != null">partner_name,</if>
<if test="partnerPhone != null">partner_phone,</if>
<if test="partnerType != null">partner_type,</if>
<if test="orderNo != null and orderNo != ''">order_no,</if>
<if test="totalAmount != null">total_amount,</if>
<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>
<if test="partnerId != null">#{partnerId},</if>
<if test="partnerName != null">#{partnerName},</if>
<if test="partnerPhone != null">#{partnerPhone},</if>
<if test="partnerType != null">#{partnerType},</if>
<if test="orderNo != null and orderNo != ''">#{orderNo},</if>
<if test="totalAmount != null">#{totalAmount},</if>
<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>
<update id="updateRlDividendDetail" parameterType="RlDividendDetail">
update rl_dividend_detail
<trim prefix="SET" suffixOverrides=",">
<if test="agentId != null">agent_id = #{agentId},</if>
<if test="partnerId != null">partner_id = #{partnerId},</if>
<if test="partnerName != null">partner_name = #{partnerName},</if>
<if test="partnerPhone != null">partner_phone = #{partnerPhone},</if>
<if test="partnerType != null">partner_type = #{partnerType},</if>
<if test="orderNo != null and orderNo != ''">order_no = #{orderNo},</if>
<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>
<if test="status != null">status = #{status},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteRlDividendDetailById" parameterType="Long">
delete from rl_dividend_detail where id = #{id}
</delete>
<delete id="deleteRlDividendDetailByIds" parameterType="String">
delete from rl_dividend_detail where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>