Commit e91db6f5 authored by hanfeng's avatar hanfeng

Merge branch 'base-modify' of http://10.5.52.3/youjj/cloud-platform into base-modify

# Conflicts:
#	xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
parents 4778f8f0 87a35978
...@@ -2,15 +2,15 @@ package com.github.wxiaoqi.security.admin.entity; ...@@ -2,15 +2,15 @@ package com.github.wxiaoqi.security.admin.entity;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*; import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
* 钱包提现表 * 钱包提现表
* *
* @author zjw * @author zjw
* @email 18178966185@163.com * @email 18178966185@163.com
* @date 2019-07-11 14:14:54 * @date 2019-07-11 14:14:54
...@@ -18,102 +18,100 @@ import lombok.Data; ...@@ -18,102 +18,100 @@ import lombok.Data;
@Data @Data
@Table(name = "my_wallet_cath") @Table(name = "my_wallet_cath")
public class MyWalletCath implements Serializable { public class MyWalletCath implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 主键ID * 主键ID
*/ */
@Id @Id
@GeneratedValue(generator = "JDBC") @GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键ID") @ApiModelProperty("主键ID")
private Long id; private Long id;
/** /**
* 用户iD * 用户iD
*/ */
@Column(name = "user_id") @Column(name = "user_id")
@ApiModelProperty(value = "用户iD") @ApiModelProperty(value = "用户iD")
private Integer userId; private Integer userId;
/** /**
* 提现类别,第三方提现类别(0-微信,1-支付宝,2-银行卡) * 提现类别,第三方提现类别(0-微信,1-支付宝,2-银行卡)
*/ */
@Column(name = "cath_type") @Column(name = "cath_type")
@ApiModelProperty(value = "提现类别,第三方提现类别(0-微信,1-支付宝,2-银行卡)") @ApiModelProperty(value = "提现类别,第三方提现类别(0-微信,1-支付宝,2-银行卡)")
private Integer cathType; private Integer cathType;
/**
* 商户订单号
*/
@Column(name = "account_number") @Column(name = "account_number")
@ApiModelProperty(value = "用户账号") @ApiModelProperty(value = "用户账号")
private String accountNumber; private String accountNumber;
/** /**
* 第三方订单号:如微信,支付宝,银行卡等 * 第三方订单号:如微信,支付宝,银行卡等
*/ */
@Column(name = "cono") @Column(name = "cono")
@ApiModelProperty(value = "第三方订单号:如微信,支付宝,银行卡等") @ApiModelProperty(value = "第三方订单号:如微信,支付宝,银行卡等")
private String cono; private String cono;
/** /**
* 提现金额 * 提现金额
*/ */
@Column(name = "balance") @Column(name = "balance")
@ApiModelProperty(value = "当前钱包余额") @ApiModelProperty(value = "当前钱包余额")
private BigDecimal balance; private BigDecimal balance;
/** /**
* 提现金额 * 提现金额
*/ */
@Column(name = "amount") @Column(name = "amount")
@ApiModelProperty(value = "提现金额") @ApiModelProperty(value = "提现金额")
private BigDecimal amount; private BigDecimal amount;
/** /**
* 到账金额 * 到账金额
*/ */
@Column(name = "real_amount") @Column(name = "real_amount")
@ApiModelProperty(value = "到账金额") @ApiModelProperty(value = "到账金额")
private BigDecimal realAmount; private BigDecimal realAmount;
/** /**
* 手续费 * 手续费
*/ */
@Column(name = "commission") @Column(name = "commission")
@ApiModelProperty(value = "手续费") @ApiModelProperty(value = "手续费")
private BigDecimal commission; private BigDecimal commission;
/** /**
* 订单状态:0-未提现,待审核,1-已审核 * 订单状态:0-未提现,待审核,1-已审核
*/ */
@Column(name = "stauts") @Column(name = "stauts")
@ApiModelProperty(value = "订单状态:0-未提现,待审核,1-已审核") @ApiModelProperty(value = "订单状态:0-未提现,待审核,1-已审核")
private Integer stauts; private Integer stauts;
/** /**
* 提现日期 * 提现日期
*/ */
@Column(name = "crt_time") @Column(name = "crt_time")
@ApiModelProperty(value = "提现日期", hidden = true ) @ApiModelProperty(value = "提现日期", hidden = true)
private Long crtTime; private Long crtTime;
/** /**
* 审核日期 * 审核日期
*/ */
@Column(name = "finish_time") @Column(name = "finish_time")
@ApiModelProperty(value = "审核日期") @ApiModelProperty(value = "审核日期")
private Long finishTime; private Long finishTime;
/** /**
* 操作者ID * 操作者ID
*/ */
@Column(name = "upd_user") @Column(name = "upd_user")
@ApiModelProperty(value = "操作者ID") @ApiModelProperty(value = "操作者ID")
private String updUser; private String updUser;
} }
...@@ -29,4 +29,7 @@ public class WalletCathDetailVo { ...@@ -29,4 +29,7 @@ public class WalletCathDetailVo {
*/ */
@ApiModelProperty(value = "审核日期") @ApiModelProperty(value = "审核日期")
private Long finishTime; private Long finishTime;
@ApiModelProperty(value = "帐号")
private String accountNumber;
} }
...@@ -189,13 +189,13 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> { ...@@ -189,13 +189,13 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> {
myWallet.setUserId(userId); myWallet.setUserId(userId);
myWallet = selectOne(myWallet); myWallet = selectOne(myWallet);
if (myWallet==null){ if (myWallet==null){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "钱包不存在"); return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "钱包不存在");
} }
if (amount.compareTo(myWallet.getBalance())>0){ if (amount.compareTo(myWallet.getBalance())>0){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "提现金额不能大于钱包金额"); return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "提现金额不能大于钱包金额");
} }
if (StringUtils.isNotBlank(password)&&!encoder.matches(password,myWallet.getPayPassword())){ if (StringUtils.isNotBlank(password)&&!encoder.matches(password,myWallet.getPayPassword())){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "支付密码错误"); return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "支付密码错误");
} }
WithDrawRuleVo ruleVo=configFeign.getWithDrawRule(); WithDrawRuleVo ruleVo=configFeign.getWithDrawRule();
BigDecimal proceduReates=BigDecimal.ZERO; BigDecimal proceduReates=BigDecimal.ZERO;
...@@ -214,7 +214,7 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> { ...@@ -214,7 +214,7 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> {
//每日次数 //每日次数
Integer maxNumberOfDay=ruleVo.getMaxNumberOfDay()==null?0:ruleVo.getMaxNumberOfDay(); Integer maxNumberOfDay=ruleVo.getMaxNumberOfDay()==null?0:ruleVo.getMaxNumberOfDay();
//查询当日次数和金额 //查询当日次数和金额
sumDto=myWalletCathBiz.sumCathAmount(1); sumDto=myWalletCathBiz.sumCathAmount(userId,1);
BigDecimal ramount=amount.add(sumDto.getSumAmount()); BigDecimal ramount=amount.add(sumDto.getSumAmount());
if (amountOfDay.compareTo(BigDecimal.ZERO)>0&&ramount.compareTo(amountOfDay)>0){ if (amountOfDay.compareTo(BigDecimal.ZERO)>0&&ramount.compareTo(amountOfDay)>0){
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "提现金额超过日额度"+amountOfDay+"元"); return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "提现金额超过日额度"+amountOfDay+"元");
...@@ -230,7 +230,7 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> { ...@@ -230,7 +230,7 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> {
Integer maxNumberOfMonth=ruleVo.getMaxNumberOfMonth(); Integer maxNumberOfMonth=ruleVo.getMaxNumberOfMonth();
//查询当月次数和金额 //查询当月次数和金额
sumDto=myWalletCathBiz.sumCathAmount(2); sumDto=myWalletCathBiz.sumCathAmount(userId,2);
BigDecimal yamount=amount.add(sumDto.getSumAmount()); BigDecimal yamount=amount.add(sumDto.getSumAmount());
if (amountOfMonth.compareTo(BigDecimal.ZERO)>0&&yamount.compareTo(amountOfMonth)>0){ if (amountOfMonth.compareTo(BigDecimal.ZERO)>0&&yamount.compareTo(amountOfMonth)>0){
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "提现金额超过月额度"+amountOfMonth+"元"); return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "提现金额超过月额度"+amountOfMonth+"元");
...@@ -270,16 +270,17 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> { ...@@ -270,16 +270,17 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> {
if (restResponse.getStatus()!=ResultCode.SUCCESS_CODE){ if (restResponse.getStatus()!=ResultCode.SUCCESS_CODE){
return restResponse; return restResponse;
} }
WalletCathSumDto sumDto=JSONUtil.toBean( restResponse.getData().toString(),WalletCathSumDto.class); String data=JSONObject.toJSONString(restResponse.getData());
WalletCathSumDto sumDto=JSONUtil.toBean( data,WalletCathSumDto.class);
if (sumDto==null){ if (sumDto==null){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数不能为空"); return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数不能为空");
} }
BigDecimal commission=amount.divide(sumDto.getProceduReates()).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP); BigDecimal commission=amount.multiply(sumDto.getProceduReates()).divide(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
BigDecimal balnece=sumDto.getBalance(); BigDecimal balnece=sumDto.getBalance();
//到账金额 //到账金额
BigDecimal realAmount=balnece.subtract(commission); BigDecimal realAmount=amount;
if (amount.compareTo(realAmount)>0){ if (amount.compareTo(realAmount)>0){
realAmount=amount; realAmount=balnece.subtract(commission);
} }
log.info("-----提现申请-----proceduReates==="+sumDto.getProceduReates()+"----commission===="+commission+"---realAmount==="+realAmount); log.info("-----提现申请-----proceduReates==="+sumDto.getProceduReates()+"----commission===="+commission+"---realAmount==="+realAmount);
//添加账号 //添加账号
......
...@@ -12,7 +12,6 @@ import com.github.wxiaoqi.security.admin.vo.WalletCathPageVo; ...@@ -12,7 +12,6 @@ import com.github.wxiaoqi.security.admin.vo.WalletCathPageVo;
import com.github.wxiaoqi.security.admin.vo.WalletCathVo; import com.github.wxiaoqi.security.admin.vo.WalletCathVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Maps;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -40,7 +39,9 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> { ...@@ -40,7 +39,9 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> {
Example example = new Example(MyWalletCath.class); Example example = new Example(MyWalletCath.class);
Example.Criteria criteria = example.createCriteria(); Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("stauts", state); if (Objects.nonNull(state)) {
criteria.andEqualTo("stauts", state);
}
criteria.andEqualTo("userId", userId); criteria.andEqualTo("userId", userId);
example.setOrderByClause("crt_time DESC"); example.setOrderByClause("crt_time DESC");
PageDataVO<MyWalletCath> walletCathPage = PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.selectByExample(example)); PageDataVO<MyWalletCath> walletCathPage = PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.selectByExample(example));
...@@ -122,7 +123,7 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> { ...@@ -122,7 +123,7 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> {
return userIdAndPersonalConsumptionMap; return userIdAndPersonalConsumptionMap;
} }
public WalletCathSumDto sumCathAmount(Integer type){ public WalletCathSumDto sumCathAmount(Integer userId,Integer type){
return mapper.sumCathAmount(type); return mapper.sumCathAmount(userId,type);
} }
} }
package com.github.wxiaoqi.security.admin.config;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* xxl-job config
*
* @author xuxueli 2017-04-28
*/
@Slf4j
@Configuration
public class XxlJobConfig {
@Value("${xxl.job.admin.addresses}")
private String adminAddresses;
@Value("${xxl.job.executor.appname}")
private String appName;
@Value("${xxl.job.executor.ip}")
private String ip;
@Value("${xxl.job.executor.port}")
private int port;
@Value("${xxl.job.accessToken}")
private String accessToken;
@Value("${xxl.job.executor.logpath}")
private String logPath;
@Value("${xxl.job.executor.logretentiondays}")
private int logRetentionDays;
@Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobSpringExecutor xxlJobExecutor() {
log.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppName(appName);
xxlJobSpringExecutor.setIp(ip);
xxlJobSpringExecutor.setPort(port);
xxlJobSpringExecutor.setAccessToken(accessToken);
xxlJobSpringExecutor.setLogPath(logPath);
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor;
}
/**
* 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
*
* 1、引入依赖:
* <dependency>
* <groupId>org.springframework.cloud</groupId>
* <artifactId>spring-cloud-commons</artifactId>
* <version>${version}</version>
* </dependency>
*
* 2、配置文件,或者容器启动变量
* spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
*
* 3、获取IP
* String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
*/
}
\ No newline at end of file
package com.github.wxiaoqi.security.admin.jobhandler;
import com.github.wxiaoqi.security.common.util.IntervalUtil;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.contant.enumerate.RefundStatusEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.order.entity.OrderViolation;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import com.xxl.job.core.log.XxlJobLogger;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
/**
* 跨平台Http任务
*
* @author xuxueli 2018-09-16 03:48:34
*/
@JobHandler(value = "walletHandler")
@Component
@Slf4j
public class RentDepositJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String var1) throws Exception {
try {
ReturnT returnT = new ReturnT(){{
setCode(100);
setMsg("成功");
}};
return returnT;
} catch (Exception e) {
XxlJobLogger.log(e);
return FAIL;
} finally {
;
}
}
}
\ No newline at end of file
...@@ -29,5 +29,5 @@ public interface MyWalletCathMapper extends Mapper<MyWalletCath> { ...@@ -29,5 +29,5 @@ public interface MyWalletCathMapper extends Mapper<MyWalletCath> {
* @param type 1-日;2-月 * @param type 1-日;2-月
* @return * @return
*/ */
WalletCathSumDto sumCathAmount(@Param("type") int type); WalletCathSumDto sumCathAmount(@Param("userId") Integer userId,@Param("type") int type);
} }
...@@ -105,6 +105,7 @@ public class MyWalletController { ...@@ -105,6 +105,7 @@ public class MyWalletController {
public ObjectRestResponse applyCath(@RequestBody ApplyCathVo applyCathVo, HttpServletRequest request){ public ObjectRestResponse applyCath(@RequestBody ApplyCathVo applyCathVo, HttpServletRequest request){
try { try {
Integer userId=Integer.parseInt(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId()); Integer userId=Integer.parseInt(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId());
applyCathVo.setUserId(userId);
return myWalletBiz.applyCath(applyCathVo); return myWalletBiz.applyCath(applyCathVo);
}catch (Exception e) { }catch (Exception e) {
throw new BaseException(e); throw new BaseException(e);
......
...@@ -35,7 +35,7 @@ public class WalletCathController { ...@@ -35,7 +35,7 @@ public class WalletCathController {
@ApiOperation("提现记录列表") @ApiOperation("提现记录列表")
@GetMapping("/page") @GetMapping("/page")
public ObjectRestResponse<WalletCathPageVo> findWatchCatchByWithdrawalState(@RequestParam("state") Integer state, public ObjectRestResponse<WalletCathPageVo> findWatchCatchByWithdrawalState(@RequestParam(value = "state",required = false) Integer state,
@RequestParam("pageNo") Integer pageNo, @RequestParam("pageNo") Integer pageNo,
@RequestParam("pageSize") Integer pageSize, @RequestParam("pageSize") Integer pageSize,
HttpServletRequest request) { HttpServletRequest request) {
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<select id="sumCathAmount" resultType="com.github.wxiaoqi.security.admin.dto.WalletCathSumDto"> <select id="sumCathAmount" resultType="com.github.wxiaoqi.security.admin.dto.WalletCathSumDto">
select IFNULL(SUM(amount),0) as sumAmount,COUNT(*) as `number` from my_wallet_cath select IFNULL(SUM(amount),0) as sumAmount,COUNT(*) as `number` from my_wallet_cath
<where> <where>
user_id=#{userId} and stauts in(0,1)
<choose> <choose>
<when test="type ==1 "> <when test="type ==1 ">
AND date_format(from_unixtime(crt_time/1000),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d') AND date_format(from_unixtime(crt_time/1000),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')
......
...@@ -39,12 +39,13 @@ public class CofigBiz extends BaseBiz<CofigMapper,Cofig> { ...@@ -39,12 +39,13 @@ public class CofigBiz extends BaseBiz<CofigMapper,Cofig> {
* @param cofig * @param cofig
* @return * @return
*/ */
@CacheClear(pre = "app:withdrawrule:",key = "{1.type}") @CacheClear(pre = "app:withdrawrule{1.type}")
public int updateConfig(Cofig cofig) { public int updateConfig(Cofig cofig) {
EntityUtils.setUpdatedInfo(cofig); EntityUtils.setUpdatedInfo(cofig);
return mapper.updateByPrimaryKeySelective(cofig); return mapper.updateByPrimaryKeySelective(cofig);
} }
@Cache(key = "app:withdrawrule:88")
public WithDrawRuleVo getWithDrawRule(){ public WithDrawRuleVo getWithDrawRule(){
WithDrawRuleVo withDrawRuleVo = new WithDrawRuleVo(); WithDrawRuleVo withDrawRuleVo = new WithDrawRuleVo();
Example example = new Example(Cofig.class); Example example = new Example(Cofig.class);
......
...@@ -20,7 +20,7 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; ...@@ -20,7 +20,7 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
public class RedisConfiguration { public class RedisConfiguration {
@Bean @Bean
public RedisTemplate<String, Object> customRedisTemplate(RedisConnectionFactory factory) { public RedisTemplate<String, Object> configRedisTemplate(RedisConnectionFactory factory) {
RedisTemplate redisTemplate = new RedisTemplate(); RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(factory); redisTemplate.setConnectionFactory(factory);
RedisSerializer<String> stringSerializer = new StringRedisSerializer(); RedisSerializer<String> stringSerializer = new StringRedisSerializer();
......
...@@ -44,4 +44,12 @@ public class CofigController extends BaseController<CofigBiz,Cofig> { ...@@ -44,4 +44,12 @@ public class CofigController extends BaseController<CofigBiz,Cofig> {
public WithDrawRuleVo getWithDrawRule(){ public WithDrawRuleVo getWithDrawRule(){
return baseBiz.getWithDrawRule(); return baseBiz.getWithDrawRule();
} }
@GetMapping("/app/unauth/wallet_rule")
@IgnoreUserToken
public ObjectRestResponse getWalletRule(){
return ObjectRestResponse.succ(baseBiz.getWithDrawRule());
}
} }
\ No newline at end of file
...@@ -135,6 +135,13 @@ ...@@ -135,6 +135,13 @@
<artifactId>spring-boot-starter-data-mongodb</artifactId> <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency> </dependency>
<!-- 分布式锁 -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.11.0</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
...@@ -85,5 +85,12 @@ ...@@ -85,5 +85,12 @@
<artifactId>beetl</artifactId> <artifactId>beetl</artifactId>
<version>2.9.3</version> <version>2.9.3</version>
</dependency> </dependency>
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
...@@ -77,12 +77,24 @@ public class OrderRefund implements Serializable { ...@@ -77,12 +77,24 @@ public class OrderRefund implements Serializable {
@ApiModelProperty(value = "退款说明") @ApiModelProperty(value = "退款说明")
private String refundDesc; private String refundDesc;
/** /**
* 创建时间 * 创建时间
*/ */
@Column(name = "crt_time") @Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true ) @ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime; private Long crtTime;
/**
* 创建时间
*/
@Column(name = "original_refund_amount")
@ApiModelProperty(value = "原来要退款的金额", hidden = true )
private BigDecimal originalRefundAmount;
/**
* 创建时间
*/
@Column(name = "deduct_amount")
@ApiModelProperty(value = "扣除的金额", hidden = true )
private BigDecimal deductAmount;
} }
...@@ -26,13 +26,6 @@ ...@@ -26,13 +26,6 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- xxl-job-core -->
<dependency>
<groupId>com.xuxueli</groupId>
<artifactId>xxl-job-core</artifactId>
<version>2.0.2</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId> <artifactId>spring-boot-starter-amqp</artifactId>
......
...@@ -335,18 +335,20 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -335,18 +335,20 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
private void rentRefundProcess(BaseOrder baseOrder, BigDecimal depositAmount, Long timeLag, String dicParentKey) { private void rentRefundProcess(BaseOrder baseOrder, BigDecimal depositAmount, Long timeLag, String dicParentKey) {
//计算退款金额 //计算退款金额
// 1、押金 + 租金(规则扣除) // 1、押金 + 租金(规则扣除)
//BigDecimal refundGoodsAmount = baseOrder.getGoodsAmount(); BigDecimal originalRefundAmount = BigDecimal.ZERO.add(baseOrder.getGoodsAmount().subtract(baseOrder.getCouponAmount()));
StringBuilder refundDescBuilder = new StringBuilder("取消订单退款:"); StringBuilder refundDescBuilder = new StringBuilder("取消订单退款:");
if(null == depositAmount) { if(null == depositAmount) {
depositAmount = BigDecimal.ZERO; depositAmount = BigDecimal.ZERO;
} }
//商品价格 - 优惠券减免的价格 //商品价格 - 优惠券减免的价格
BigDecimal refundGoodsAmount = calculateRefund(baseOrder.getGoodsAmount().subtract(baseOrder.getCouponAmount()), timeLag, dicParentKey, refundDescBuilder); BigDecimal refundGoodsAmount = calculateRefund(originalRefundAmount, timeLag, dicParentKey, refundDescBuilder);
//退款金额 //退款金额
BigDecimal refundAmount = depositAmount.add(refundGoodsAmount); BigDecimal refundAmount = depositAmount.add(refundGoodsAmount);
originalRefundAmount = depositAmount.add(originalRefundAmount);
//退款子流程: 订单基础,退款描述,退款金额 //退款子流程: 订单基础,退款描述,退款金额
refundSubProcess(baseOrder, refundDescBuilder.toString(), refundAmount, RefundTypeEnum.ORDER_FUND.getCode(), RefundStatusEnum.ALL.getCode()); refundSubProcess(baseOrder, refundDescBuilder.toString(), originalRefundAmount, refundAmount, RefundTypeEnum.ORDER_FUND.getCode(), RefundStatusEnum.ALL.getCode());
} }
public BigDecimal calculateRefund(BigDecimal goodsAmount, Long timeLag, String dicParentKey, StringBuilder refundDescBuilder) { public BigDecimal calculateRefund(BigDecimal goodsAmount, Long timeLag, String dicParentKey, StringBuilder refundDescBuilder) {
...@@ -390,7 +392,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -390,7 +392,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
* @param refundType * @param refundType
* @param refundStatus * @param refundStatus
*/ */
public void refundSubProcess(BaseOrder baseOrder, String refundDesc, BigDecimal refundAmount, Integer refundType, Integer refundStatus) { public void refundSubProcess(BaseOrder baseOrder, String refundDesc, BigDecimal originalRefundAmount, BigDecimal refundAmount, Integer refundType, Integer refundStatus) {
String refundTradeNo = null; String refundTradeNo = null;
//0 小于 退款金额 //0 小于 退款金额
if(BigDecimal.ZERO.compareTo(refundAmount) < 0) { if(BigDecimal.ZERO.compareTo(refundAmount) < 0) {
...@@ -404,7 +406,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -404,7 +406,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
} }
//记录订单退款记录 //记录订单退款记录
Integer flag = addOrderRefund(baseOrder.getId(), refundDesc, refundAmount, refundTradeNo, refundType); Integer flag = addOrderRefund(baseOrder.getId(), refundDesc, originalRefundAmount, refundAmount, refundTradeNo, refundType);
//更新订单的退款状态和退款时间 //更新订单的退款状态和退款时间
if(SYS_TRUE.equals(flag) && null != refundStatus) { if(SYS_TRUE.equals(flag) && null != refundStatus) {
...@@ -424,7 +426,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -424,7 +426,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
* @param refundAmount * @param refundAmount
* @param refundTradeNo * @param refundTradeNo
*/ */
private Integer addOrderRefund(Integer orderId, String refundDesc, BigDecimal refundAmount, String refundTradeNo, Integer refundType) { private Integer addOrderRefund(Integer orderId, String refundDesc, BigDecimal originalRefundAmount, BigDecimal refundAmount, String refundTradeNo, Integer refundType) {
//如果返回的流水为空,则当做失败 //如果返回的流水为空,则当做失败
Integer refundStatus = SYS_TRUE; Integer refundStatus = SYS_TRUE;
if(StrUtil.isBlank(refundTradeNo)) { if(StrUtil.isBlank(refundTradeNo)) {
...@@ -438,6 +440,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -438,6 +440,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
setTradeNo(refundTradeNo); setTradeNo(refundTradeNo);
setRefundType(RefundTypeEnum.ORDER_FUND.getCode()); setRefundType(RefundTypeEnum.ORDER_FUND.getCode());
}}; }};
orderRefund.setOriginalRefundAmount(originalRefundAmount);
orderRefund.setDeductAmount(originalRefundAmount.subtract(refundAmount));
orderRefund.setRefundAmount(refundAmount); orderRefund.setRefundAmount(refundAmount);
orderRefund.setRefundDesc(refundDesc); orderRefund.setRefundDesc(refundDesc);
orderRefund.setRefundStatus(refundStatus); orderRefund.setRefundStatus(refundStatus);
...@@ -625,5 +629,4 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -625,5 +629,4 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
// DailyOrderStatistics dailyOrderStatistics= mapper.getTotalOrder(); // DailyOrderStatistics dailyOrderStatistics= mapper.getTotalOrder();
// } // }
} }
\ No newline at end of file
...@@ -56,19 +56,20 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> { ...@@ -56,19 +56,20 @@ public class OrderRefundBiz extends BaseBiz<OrderRefundMapper,OrderRefund> {
}}); }});
//还车扣除款 剩余的 钱,再减去违章预备金 //还车扣除款 剩余的 钱,再减去违章预备金
BigDecimal refundAmont = crosstown.getRestDeposit().subtract(illegalReserve); BigDecimal refundAmont = crosstown.getRestDeposit().subtract(illegalReserve);
BigDecimal originalRefundAmount = crosstown.getRestDeposit().add(crosstown.getDeductionCost()).subtract(illegalReserve);
List<DedDetailDTO> dddList = JSONUtil.toBean(crosstown.getDedDetail(), List.class); List<DedDetailDTO> dddList = JSONUtil.toBean(crosstown.getDedDetail(), List.class);
String refundDesc = "退还押金:"+ refundAmont.toString()+ "(已扣除 违章预备金:"+ illegalReserve.toString(); String refundDesc = "退还押金:"+ refundAmont.toString()+ "(已扣除 违章预备金:"+ illegalReserve.toString();
for(DedDetailDTO ddd : dddList) { for(DedDetailDTO ddd : dddList) {
refundDesc += ", "+ ddd.getDeductions()+ ":"+ ddd.getCost(); refundDesc += ", "+ ddd.getDeductions()+ ":"+ ddd.getCost();
} }
refundDesc += ")"; refundDesc += ")";
refundTrigger(orderMQDTO, orderMQDTO.getOrderRentVehicleDetail(), illegalReserve, refundAmont, refundDesc, RefundStatusEnum.RESIDUE_ILLEGAL.getCode()); refundTrigger(orderMQDTO, orderMQDTO.getOrderRentVehicleDetail(), illegalReserve, originalRefundAmount, refundAmont, refundDesc, RefundStatusEnum.RESIDUE_ILLEGAL.getCode());
} }
} }
public void refundTrigger(BaseOrder baseOrder, OrderRentVehicleDetail orvd, BigDecimal residueAmount, BigDecimal refundAmont, String refundDesc, Integer refundStatus) { public void refundTrigger(BaseOrder baseOrder, OrderRentVehicleDetail orvd, BigDecimal residueAmount, BigDecimal originalRefundAmount, BigDecimal refundAmont, String refundDesc, Integer refundStatus) {
//退款子流程: 订单基础,退款描述,退款金额 //退款子流程: 订单基础,退款描述,退款金额
baseOrderBiz.refundSubProcess(baseOrder, refundDesc, refundAmont, RefundTypeEnum.DEPOSIT.getCode(), refundStatus); baseOrderBiz.refundSubProcess(baseOrder, refundDesc, originalRefundAmount, refundAmont, RefundTypeEnum.DEPOSIT.getCode(), refundStatus);
//设置剩余没有返还的钱 //设置剩余没有返还的钱
orderRentVehicleBiz.updateSelectiveById(new OrderRentVehicleDetail(){{ orderRentVehicleBiz.updateSelectiveById(new OrderRentVehicleDetail(){{
setId(orvd.getId()); setId(orvd.getId());
......
...@@ -88,11 +88,8 @@ public class RentDepositJobHandler extends IJobHandler { ...@@ -88,11 +88,8 @@ public class RentDepositJobHandler extends IJobHandler {
//还车扣除款 剩余的 钱,再减去违章预备金 //还车扣除款 剩余的 钱,再减去违章预备金
BigDecimal refundAmont = orvd.getReturnPayResidue().subtract(orderViolation.getPrice()); BigDecimal refundAmont = orvd.getReturnPayResidue().subtract(orderViolation.getPrice());
String refundDesc = "退还押金:"+ refundAmont.toString()+ "(已扣除 违章扣款:"+ refundAmont.toString(); String refundDesc = "退还押金:"+ refundAmont.toString()+ "(已扣除 违章扣款:"+ refundAmont.toString();
// for(DedDetailDTO ddd : dddList) {
// refundDesc += ", "+ ddd.getDeductions()+ ":"+ ddd.getCost();
// }
refundDesc += ")"; refundDesc += ")";
orderRefundBiz.refundTrigger(baseOrder, orvd, refundAmont, refundAmont, refundDesc, RefundStatusEnum.REFUND_DEPOSIT.getCode()); orderRefundBiz.refundTrigger(baseOrder, orvd, BigDecimal.ZERO, orvd.getReturnPayResidue(), refundAmont, refundDesc, RefundStatusEnum.REFUND_DEPOSIT.getCode());
} }
} }
......
...@@ -220,18 +220,18 @@ ...@@ -220,18 +220,18 @@
</select> </select>
<select id="getTotalOrder" resultType="com.xxfc.platform.order.entity.DailyOrderStatistics"> <!-- <select id="getTotalOrder" resultType="com.xxfc.platform.order.entity.DailyOrderStatistics">-->
select <!-- select-->
date_format(refund_time,'%Y-%c-%d') as oneDay, <!-- date_format(refund_time,'%Y-%c-%d') as oneDay,-->
sum(1) as totalOrders, <!-- sum(1) as totalOrders,-->
sum(refund_time)as actualTotalIncome <!-- sum(refund_time)as actualTotalIncome-->
from <!-- from-->
base_order <!-- base_order-->
where <!-- where-->
date(refund_time)=date(now())-1 <!-- date(refund_time)=date(now())-1-->
group by <!-- group by-->
date_format(refund_time,'%d') <!-- date_format(refund_time,'%d')-->
</select> <!-- </select>-->
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment