Commit 9650c58a authored by libin's avatar libin

Merge remote-tracking branch 'origin/base-modify' into base-modify

parents a682f847 2c2693f0
package com.github.wxiaoqi.security.admin.dto;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/17 20:22
*/
@Data
public class WalletCathSumDto {
//总金额
private BigDecimal sumAmount;
//总次数
private Integer number;
//用户余额
private BigDecimal balance;
//费率
private BigDecimal proceduReates;
//钱包id
private Integer walletId;
}
...@@ -33,7 +33,7 @@ public class MyWalletCath implements Serializable { ...@@ -33,7 +33,7 @@ public class MyWalletCath implements Serializable {
*/ */
@Column(name = "user_id") @Column(name = "user_id")
@ApiModelProperty(value = "用户iD") @ApiModelProperty(value = "用户iD")
private String userId; private Integer userId;
/** /**
* 提现类别,第三方提现类别(0-微信,1-支付宝,2-银行卡) * 提现类别,第三方提现类别(0-微信,1-支付宝,2-银行卡)
...@@ -45,9 +45,9 @@ public class MyWalletCath implements Serializable { ...@@ -45,9 +45,9 @@ public class MyWalletCath implements Serializable {
/** /**
* 商户订单号 * 商户订单号
*/ */
@Column(name = "orderno") @Column(name = "account_number")
@ApiModelProperty(value = "商户订单号") @ApiModelProperty(value = "用户账号")
private String orderno; private String accountNumber;
/** /**
* 第三方订单号:如微信,支付宝,银行卡等 * 第三方订单号:如微信,支付宝,银行卡等
...@@ -56,6 +56,15 @@ public class MyWalletCath implements Serializable { ...@@ -56,6 +56,15 @@ public class MyWalletCath implements Serializable {
@ApiModelProperty(value = "第三方订单号:如微信,支付宝,银行卡等") @ApiModelProperty(value = "第三方订单号:如微信,支付宝,银行卡等")
private String cono; private String cono;
/**
* 提现金额
*/
@Column(name = "balance")
@ApiModelProperty(value = "当前钱包余额")
private BigDecimal balance;
/** /**
* 提现金额 * 提现金额
*/ */
...@@ -64,6 +73,21 @@ public class MyWalletCath implements Serializable { ...@@ -64,6 +73,21 @@ public class MyWalletCath implements Serializable {
private BigDecimal amount; private BigDecimal amount;
/** /**
* 到账金额
*/
@Column(name = "real_amount")
@ApiModelProperty(value = "到账金额")
private BigDecimal realAmount;
/**
* 手续费
*/
@Column(name = "commission")
@ApiModelProperty(value = "手续费")
private BigDecimal commission;
/**
* 订单状态:0-未提现,待审核,1-已审核 * 订单状态:0-未提现,待审核,1-已审核
*/ */
@Column(name = "stauts") @Column(name = "stauts")
...@@ -87,9 +111,9 @@ public class MyWalletCath implements Serializable { ...@@ -87,9 +111,9 @@ public class MyWalletCath implements Serializable {
/** /**
* 操作者ID * 操作者ID
*/ */
@Column(name = "oper_user") @Column(name = "upd_user")
@ApiModelProperty(value = "操作者ID") @ApiModelProperty(value = "操作者ID")
private String operUser; private String updUser;
} }
package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/12 9:20
*/
@Data
public class ApplyCathVo {
/**
* 用户ID
*/
@ApiModelProperty("用户ID")
private Integer userId;
/**
* 提现金额
*/
@ApiModelProperty(value = "提现金额")
private BigDecimal amount;
/**
* 支付密码
*/
@ApiModelProperty(value = "支付密码")
private String password;
/**
* 支付账号
*/
@ApiModelProperty(value = "支付账号")
private String accountNumber;
/**
* 支付类型
*/
@ApiModelProperty(value = "支付类型")
private Integer cathType;
}
...@@ -46,6 +46,11 @@ ...@@ -46,6 +46,11 @@
<artifactId>xx-im-api</artifactId> <artifactId>xx-im-api</artifactId>
<version>2.0-SNAPSHOT</version> <version>2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency>
<groupId>com.xxfc.platform</groupId>
<artifactId>xx-app-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency> <dependency>
<groupId>com.xxfc.platform</groupId> <groupId>com.xxfc.platform</groupId>
<artifactId>xx-activity-api</artifactId> <artifactId>xx-activity-api</artifactId>
......
package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.entity.AppUserAlipay;
import com.github.wxiaoqi.security.admin.entity.AppUserRelationTemp;
import com.github.wxiaoqi.security.admin.mapper.AppUserAlipayMapper;
import com.github.wxiaoqi.security.admin.mapper.AppUserRelationTempMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.List;
/**
* 支付宝账号表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-07-03 16:36:44
*/
@Service
public class AppUserAlipayBiz extends BaseBiz<AppUserAlipayMapper, AppUserAlipay> {
//添加支付宝账号
public void addAlipay(Integer userId,String txAlipay){
AppUserAlipay appUserAlipay=new AppUserAlipay();
appUserAlipay.setTxAlipay(txAlipay);
appUserAlipay.setUserId(userId);
appUserAlipay.setIsDel(0);
AppUserAlipay appUserAlipay1=selectOne(appUserAlipay);
if (appUserAlipay1==null){
appUserAlipay.setIsDefault(1);
insertSelective(appUserAlipay);
}else {
appUserAlipay1.setIsDefault(1);
updateSelectiveById(appUserAlipay1);
}
}
//获取支付宝列表
public List<AppUserAlipay> getListByUserId(Integer userId){
Example example=new Example(AppUserAlipay.class);
example.createCriteria().andEqualTo("userId",userId).andEqualTo("isDel",0);
example.setOrderByClause("is_default desc");
return selectByExample(example);
}
}
\ No newline at end of file
package com.github.wxiaoqi.security.admin.biz; package com.github.wxiaoqi.security.admin.biz;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.admin.dto.WalletCathSumDto;
import com.github.wxiaoqi.security.admin.dto.WalletFindDTO; import com.github.wxiaoqi.security.admin.dto.WalletFindDTO;
import com.github.wxiaoqi.security.admin.dto.WalletListDTO; import com.github.wxiaoqi.security.admin.dto.WalletListDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserAlipay;
import com.github.wxiaoqi.security.admin.entity.MyWallet; import com.github.wxiaoqi.security.admin.entity.MyWallet;
import com.github.wxiaoqi.security.admin.entity.MyWalletCath;
import com.github.wxiaoqi.security.admin.entity.MyWalletDetail;
import com.github.wxiaoqi.security.admin.mapper.MyWalletMapper; import com.github.wxiaoqi.security.admin.mapper.MyWalletMapper;
import com.github.wxiaoqi.security.admin.rpc.service.AppPermissionService;
import com.github.wxiaoqi.security.admin.vo.AppletWalletVo; import com.github.wxiaoqi.security.admin.vo.AppletWalletVo;
import com.github.wxiaoqi.security.admin.vo.ApplyCathVo;
import com.github.wxiaoqi.security.admin.vo.WalletPageVo; import com.github.wxiaoqi.security.admin.vo.WalletPageVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.constant.UserConstant;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.feign.ActivityFeign; import com.xxfc.platform.app.entity.vo.WithDrawRuleVo;
import com.xxfc.platform.app.feign.ConfigFeign;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -29,6 +45,7 @@ import java.util.stream.Collectors; ...@@ -29,6 +45,7 @@ import java.util.stream.Collectors;
*/ */
@Transactional @Transactional
@Service @Service
@Slf4j
public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> { public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> {
@Autowired @Autowired
...@@ -37,6 +54,21 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> { ...@@ -37,6 +54,21 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> {
@Autowired @Autowired
private MyWalletCathBiz myWalletCathBiz; private MyWalletCathBiz myWalletCathBiz;
@Autowired
private AppPermissionService permissionService;
@Autowired
private RedisTemplate userRedisTemplate;
@Autowired
private ConfigFeign configFeign;
@Autowired
private AppUserAlipayBiz alipayBiz;
private BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(12);
public AppletWalletVo findMyWallet(Integer userId) { public AppletWalletVo findMyWallet(Integer userId) {
...@@ -97,4 +129,227 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> { ...@@ -97,4 +129,227 @@ public class MyWalletBiz extends BaseBiz<MyWalletMapper, MyWallet> {
walletPageVo.setData(walletPageVos); walletPageVo.setData(walletPageVos);
return walletPageVo; return walletPageVo;
} }
//检查手机号码是否正确
public ObjectRestResponse checkCode(String phone,String mobilecod){
boolean flag=false;
String key=permissionService.checkCodeByUsername(phone,mobilecod);
if (StringUtils.isNotBlank(key)){
flag=true;
}
return ObjectRestResponse.succ(flag);
}
//设置密码type 1-设置密码;2-设置密码
public ObjectRestResponse setPwd(Integer userId,String phone,String mobilecod,String password,Integer type){
if (StringUtils.isBlank(phone)||StringUtils.isBlank(mobilecod)||StringUtils.isBlank(password)){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数为空");
}
String key=permissionService.checkCodeByUsername(phone,mobilecod);
if (StringUtils.isBlank(key)){
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, "验证码错误");
}
userRedisTemplate.delete(key);
MyWallet myWallet=new MyWallet();
myWallet.setUserId(userId);
myWallet = selectOne(myWallet);
if (myWallet==null){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "钱包不存在");
}
if(type==1||StringUtils.isNotBlank(myWallet.getPayPassword())){
return ObjectRestResponse.createFailedResult(ResultCode.EXIST_CODE, "密码已存在");
}
password=new BCryptPasswordEncoder(UserConstant.PW_ENCORDER_SALT).encode(password);
myWallet.setPayPassword(password);
updateSelectiveById(myWallet);
return ObjectRestResponse.succ();
}
//检查用户是否设置过密码
public ObjectRestResponse checkSetPwd(Integer userId){
MyWallet myWallet=new MyWallet();
myWallet.setUserId(userId);
myWallet = selectOne(myWallet);
if (myWallet==null){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "钱包不存在");
}
boolean flag=false;
if(StringUtils.isNotBlank(myWallet.getPayPassword())){
flag=true;
}
return ObjectRestResponse.succ(flag);
}
//检查提成下一步操作
public ObjectRestResponse checkAmount(Integer userId,BigDecimal amount,String password){
if (amount.compareTo(BigDecimal.ZERO)<1){
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "提现金额不能小于0");
}
MyWallet myWallet=new MyWallet();
myWallet.setUserId(userId);
myWallet = selectOne(myWallet);
if (myWallet==null){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "钱包不存在");
}
if (amount.compareTo(myWallet.getBalance())>0){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "提现金额不能大于钱包金额");
}
if (StringUtils.isNotBlank(password)&&!encoder.matches(password,myWallet.getPayPassword())){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "支付密码错误");
}
WithDrawRuleVo ruleVo=configFeign.getWithDrawRule();
BigDecimal proceduReates=BigDecimal.ZERO;
WalletCathSumDto sumDto=new WalletCathSumDto();
if (ruleVo!=null){
proceduReates=ruleVo.getProceduReates();
//提现次数
Integer number=1;
//最小金额
BigDecimal mimAmount=ruleVo.getMinAmount();
if (mimAmount.compareTo(BigDecimal.ZERO)>0&&amount.compareTo(mimAmount)<0){
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "提现金额不能小于"+mimAmount+"元");
}
//日额度
BigDecimal amountOfDay=ruleVo.getAmountOfDay();
//每日次数
Integer maxNumberOfDay=ruleVo.getMaxNumberOfDay()==null?0:ruleVo.getMaxNumberOfDay();
//查询当日次数和金额
sumDto=myWalletCathBiz.sumCathAmount(1);
BigDecimal ramount=amount.add(sumDto.getSumAmount());
if (amountOfDay.compareTo(BigDecimal.ZERO)>0&&ramount.compareTo(amountOfDay)>0){
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "提现金额超过日额度"+amountOfDay+"元");
}
number+=sumDto.getNumber();
if (maxNumberOfDay>0&&number>maxNumberOfDay){
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "提现当日次数超过"+maxNumberOfDay+"次");
}
number=1;
//月额度
BigDecimal amountOfMonth=ruleVo.getAmountOfMonth();
//月次数
Integer maxNumberOfMonth=ruleVo.getMaxNumberOfMonth();
//查询当月次数和金额
sumDto=myWalletCathBiz.sumCathAmount(2);
BigDecimal yamount=amount.add(sumDto.getSumAmount());
if (amountOfMonth.compareTo(BigDecimal.ZERO)>0&&yamount.compareTo(amountOfMonth)>0){
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "提现金额超过月额度"+amountOfMonth+"元");
}
number+=sumDto.getNumber();
if (maxNumberOfMonth>0&&number>maxNumberOfMonth){
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "提现当月次数超过"+maxNumberOfMonth+"次");
}
}
sumDto.setBalance(myWallet.getBalance());
sumDto.setProceduReates(proceduReates);
sumDto.setWalletId(myWallet.getId());
return ObjectRestResponse.succ(sumDto);
}
//返回提现规则
public ObjectRestResponse getCathRule(){
return ObjectRestResponse.succ(configFeign.getWithDrawRule());
}
//提现申请
public ObjectRestResponse applyCath(ApplyCathVo applyCathVo){
if (applyCathVo==null){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数不能为空");
}
Integer userId=applyCathVo.getUserId();
BigDecimal amount=applyCathVo.getAmount();
String password=applyCathVo.getPassword();
String accountNumber=applyCathVo.getAccountNumber();
Integer cathType=applyCathVo.getCathType()==null?1:applyCathVo.getCathType();
if (StringUtils.isBlank(password)||amount.compareTo(BigDecimal.ZERO)<1){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数不能为空");
}
ObjectRestResponse restResponse=checkAmount(userId,amount,password);
if (restResponse.getStatus()!=ResultCode.SUCCESS_CODE){
return restResponse;
}
WalletCathSumDto sumDto=JSONUtil.toBean( restResponse.getData().toString(),WalletCathSumDto.class);
if (sumDto==null){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数不能为空");
}
BigDecimal commission=amount.divide(sumDto.getProceduReates()).multiply(new BigDecimal("100")).setScale(2, RoundingMode.HALF_UP);
BigDecimal balnece=sumDto.getBalance();
//到账金额
BigDecimal realAmount=balnece.subtract(commission);
if (amount.compareTo(realAmount)>0){
realAmount=amount;
}
log.info("-----提现申请-----proceduReates==="+sumDto.getProceduReates()+"----commission===="+commission+"---realAmount==="+realAmount);
//添加账号
alipayBiz.addAlipay(userId,accountNumber);
MyWalletCath walletCath=new MyWalletCath();
walletCath.setUserId(userId);
walletCath.setBalance(balnece);
walletCath.setCathType(cathType);
walletCath.setAccountNumber(accountNumber);
walletCath.setAmount(amount);
walletCath.setCommission(commission);
walletCath.setRealAmount(realAmount);
myWalletCathBiz.insertSelective(walletCath);
//提现金额
BigDecimal withdrawals=realAmount.add(commission);
balnece=balnece.subtract(withdrawals).setScale(2, RoundingMode.HALF_UP);
log.info("------钱包----withdrawals==="+withdrawals+"----balnece===="+balnece);
MyWallet myWallet=new MyWallet();
myWallet.setId(sumDto.getWalletId());
myWallet.setUserId(userId);
myWallet.setBalance(balnece);
myWallet.setWithdrawals(withdrawals);
mapper.updMyWater(myWallet);
return ObjectRestResponse.succ();
}
//提现审核
public ObjectRestResponse verifyCath(Integer cathId,String cono){
if (StringUtils.isBlank(cono)||cathId==null||cathId==0){
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数不能为空");
}
MyWalletCath cath=myWalletCathBiz.selectById(cathId);
if (cath==null){
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, "提现记录不存在");
}
cath.setStauts(1);
cath.setCono(cono);
cath.setFinishTime(System.currentTimeMillis());
int num=myWalletCathBiz.updateSelectiveByIdRe(cath);
if (num>0){
Integer userId=cath.getUserId();
MyWallet wallet=new MyWallet();
wallet.setUserId(userId);
wallet=selectOne(wallet);
if (wallet!=null){
BigDecimal balance=cath.getBalance();
BigDecimal realAmount=cath.getRealAmount();
BigDecimal commission=cath.getCommission();
MyWalletDetail detail=new MyWalletDetail();
detail.setUserId(userId);
detail.setItype(1);
detail.setCono(cathId);
detail.setBalance(balance);
detail.setAmount(realAmount);
detail.setSource(10);
myWalletDetailBiz.insertSelective(detail);
detail.setId(null);
detail.setSource(13);
balance=balance.subtract(realAmount).setScale(2, RoundingMode.HALF_UP);
detail.setBalance(balance);
detail.setAmount(commission);
myWalletDetailBiz.insertSelective(detail);
}
}
return ObjectRestResponse.succ();
}
} }
...@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.admin.biz; ...@@ -3,6 +3,7 @@ package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.dto.PersonalConsumptionDTO; import com.github.wxiaoqi.security.admin.dto.PersonalConsumptionDTO;
import com.github.wxiaoqi.security.admin.dto.WalletCathFindDTO; import com.github.wxiaoqi.security.admin.dto.WalletCathFindDTO;
import com.github.wxiaoqi.security.admin.dto.WalletCathListDTO; import com.github.wxiaoqi.security.admin.dto.WalletCathListDTO;
import com.github.wxiaoqi.security.admin.dto.WalletCathSumDto;
import com.github.wxiaoqi.security.admin.entity.MyWalletCath; import com.github.wxiaoqi.security.admin.entity.MyWalletCath;
import com.github.wxiaoqi.security.admin.mapper.MyWalletCathMapper; import com.github.wxiaoqi.security.admin.mapper.MyWalletCathMapper;
import com.github.wxiaoqi.security.admin.vo.WalletCathAdminVo; import com.github.wxiaoqi.security.admin.vo.WalletCathAdminVo;
...@@ -120,4 +121,8 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> { ...@@ -120,4 +121,8 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> {
Map<Integer, BigDecimal> userIdAndPersonalConsumptionMap = personalConsumptions.stream().collect(Collectors.toMap(PersonalConsumptionDTO::getUserId, PersonalConsumptionDTO::getTotalConsumption)); Map<Integer, BigDecimal> userIdAndPersonalConsumptionMap = personalConsumptions.stream().collect(Collectors.toMap(PersonalConsumptionDTO::getUserId, PersonalConsumptionDTO::getTotalConsumption));
return userIdAndPersonalConsumptionMap; return userIdAndPersonalConsumptionMap;
} }
public WalletCathSumDto sumCathAmount(Integer type){
return mapper.sumCathAmount(type);
}
} }
package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.entity.AppUserAlipay;
import tk.mybatis.mapper.common.Mapper;
/**
* 钱包提现表
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-11 14:14:54
*/
public interface AppUserAlipayMapper extends Mapper<AppUserAlipay> {
}
...@@ -2,10 +2,10 @@ package com.github.wxiaoqi.security.admin.mapper; ...@@ -2,10 +2,10 @@ package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.dto.PersonalConsumptionDTO; import com.github.wxiaoqi.security.admin.dto.PersonalConsumptionDTO;
import com.github.wxiaoqi.security.admin.dto.WalletCathListDTO; import com.github.wxiaoqi.security.admin.dto.WalletCathListDTO;
import com.github.wxiaoqi.security.admin.dto.WalletCathSumDto;
import com.github.wxiaoqi.security.admin.entity.MyWalletCath; import com.github.wxiaoqi.security.admin.entity.MyWalletCath;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List; import java.util.List;
/** /**
...@@ -22,4 +22,12 @@ public interface MyWalletCathMapper extends Mapper<MyWalletCath> { ...@@ -22,4 +22,12 @@ public interface MyWalletCathMapper extends Mapper<MyWalletCath> {
@Param("state") Integer state); @Param("state") Integer state);
List<PersonalConsumptionDTO> findUserWithDrawingByUserIds(@Param("userIds") List<Integer> userIds); List<PersonalConsumptionDTO> findUserWithDrawingByUserIds(@Param("userIds") List<Integer> userIds);
/**
* 计算提现的金额
* @param type 1-日;2-月
* @return
*/
WalletCathSumDto sumCathAmount(@Param("type") int type);
} }
...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.rest; ...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz; import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO; import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserManage; import com.github.wxiaoqi.security.admin.entity.AppUserManage;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember; import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
...@@ -33,13 +34,13 @@ public class BaseUserMemberController extends BaseController<BaseUserMemberBiz, ...@@ -33,13 +34,13 @@ public class BaseUserMemberController extends BaseController<BaseUserMemberBiz,
/** /**
* 设置用户会员 * 设置用户会员
* @param baseUserMemberVO * @param userMemberDTO
* @return * @return
*/ */
@PutMapping("/setUserMember") @PutMapping("/setUserMember")
public ObjectRestResponse UpdateUserMember(@RequestBody BaseUserMemberVO baseUserMemberVO) public ObjectRestResponse UpdateUserMember(@RequestBody UserMemberDTO userMemberDTO)
throws InvocationTargetException, IllegalAccessException { throws Exception {
baseBiz.UpdateUserMember(baseUserMemberVO); baseBiz.updUserMemberByUserId(userMemberDTO);
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
} }
package com.github.wxiaoqi.security.admin.rest; package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.AppUserAlipayBiz;
import com.github.wxiaoqi.security.admin.biz.MyWalletBiz; import com.github.wxiaoqi.security.admin.biz.MyWalletBiz;
import com.github.wxiaoqi.security.admin.vo.AppletWalletVo; import com.github.wxiaoqi.security.admin.vo.AppletWalletVo;
import com.github.wxiaoqi.security.admin.vo.ApplyCathVo;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig; import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil; import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo; import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
/** /**
* @author libin * @author libin
...@@ -34,6 +35,10 @@ public class MyWalletController { ...@@ -34,6 +35,10 @@ public class MyWalletController {
@Autowired @Autowired
private MyWalletBiz myWalletBiz; private MyWalletBiz myWalletBiz;
@Autowired
private AppUserAlipayBiz alipayBiz;
@GetMapping @GetMapping
public ObjectRestResponse<AppletWalletVo> findMyWallet(HttpServletRequest request){ public ObjectRestResponse<AppletWalletVo> findMyWallet(HttpServletRequest request){
try { try {
...@@ -46,4 +51,96 @@ public class MyWalletController { ...@@ -46,4 +51,96 @@ public class MyWalletController {
} }
@GetMapping
@ApiOperation("检查验证码")
public ObjectRestResponse checkCode(
@RequestParam(value = "phone",defaultValue = "")String phone,
@RequestParam(value = "mobilecode",defaultValue = "")String mobilecod
){
return myWalletBiz.checkCode(phone,mobilecod);
}
@PostMapping("/setPwd")
@ApiOperation("设置密码")
public ObjectRestResponse setPwd(
@RequestParam(value = "phone",defaultValue = "")String phone,
@RequestParam(value = "mobilecode",defaultValue = "")String mobilecod,
@RequestParam(value = "password",defaultValue = "")String password,
@RequestParam(value = "type",defaultValue = "1")Integer type,
HttpServletRequest request){
try {
Integer userId=Integer.parseInt(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId());
return myWalletBiz.setPwd(userId,phone,mobilecod,password,type);
}catch (Exception e) {
throw new BaseException(e);
}
}
@GetMapping("/checkSetPwd")
@ApiOperation("检查用户是否设置过支付密码")
public ObjectRestResponse checkSetPwd(HttpServletRequest request){
try {
Integer userId=Integer.parseInt(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId());
return myWalletBiz.checkSetPwd(userId);
}catch (Exception e) {
throw new BaseException(e);
}
}
@GetMapping("/checkAmount")
@ApiOperation("检查提成下一步操作")
public ObjectRestResponse checkAmount(
@RequestParam(value = "amount",defaultValue = "0.00") BigDecimal amount,
HttpServletRequest request){
try {
Integer userId=Integer.parseInt(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId());
return myWalletBiz.checkAmount(userId,amount,null);
}catch (Exception e) {
throw new BaseException(e);
}
}
@PostMapping("/applyCath")
@ApiOperation("提现申请")
public ObjectRestResponse applyCath(@RequestBody ApplyCathVo applyCathVo, HttpServletRequest request){
try {
Integer userId=Integer.parseInt(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId());
return myWalletBiz.applyCath(applyCathVo);
}catch (Exception e) {
throw new BaseException(e);
}
}
@PostMapping("/verifyCath")
@ApiOperation("提现审核")
public ObjectRestResponse verifyCath(
@RequestParam(value = "cathId",defaultValue = "0") Integer cathId,
@RequestParam(value = "cono",defaultValue = "") String cono){
try {
return myWalletBiz.verifyCath(cathId,cono);
}catch (Exception e) {
throw new BaseException(e);
}
}
@GetMapping("/txAlipayList")
@ApiOperation("获取支付账号列表")
public ObjectRestResponse txAlipayList(HttpServletRequest request){
try {
Integer userId=Integer.parseInt(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId());
return ObjectRestResponse.succ(alipayBiz.getListByUserId(userId)) ;
}catch (Exception e) {
throw new BaseException(e);
}
}
} }
...@@ -205,6 +205,23 @@ public class AppPermissionService { ...@@ -205,6 +205,23 @@ public class AppPermissionService {
return JsonResultUtil.createSuccessResultWithObj(result); return JsonResultUtil.createSuccessResultWithObj(result);
} }
//检查验证码是否正确
public String checkCodeByUsername(String username,String mobilecode){
// 判断参数和验证码
if (StringUtils.isBlank(username) || StringUtils.isBlank(mobilecode)) {
log.info("---参数为空------");
return null;
}
String redisLockKey = RedisKey.CONSTANT_CODE_PREFIX + username + mobilecode;
String mobilecodeRedis = userRedisTemplate.opsForValue().get(redisLockKey) == null ? "" : userRedisTemplate.opsForValue().get(redisLockKey).toString();
log.error("checkCodeByUsername接口,获取redis中的验证码:" + mobilecodeRedis);
if (StringUtils.isBlank(mobilecodeRedis)) {
log.info("---验证码错误------username==="+username);
return null;
}
return redisLockKey;
}
/** /**
* 注册用户 * 注册用户
* *
......
...@@ -34,4 +34,21 @@ ...@@ -34,4 +34,21 @@
</foreach> </foreach>
GROUP BY `user_id` GROUP BY `user_id`
</select> </select>
<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
<where>
<choose>
<when test="type ==1 ">
AND date_format(from_unixtime(crt_time/1000),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')
</when >
<when test="type==2 ">
AND date_format(from_unixtime(crt_time/1000),'%Y-%m') = date_format(now(),'%Y-%m')
</when >
<otherwise>
</otherwise>
</choose>
</where>
</select>
</mapper> </mapper>
\ No newline at end of file
package com.xxfc.platform.activity.constant;
public enum IntegralRulePeriod {
DAY(0, "天"),
WEEK(1, "周"),
MONTH(2, "月"),
QUARTER(3,"季度"),
YEAR(4,"年");
Integer code;
String msg;
IntegralRulePeriod(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
...@@ -58,6 +58,7 @@ public class ActivityPopup { ...@@ -58,6 +58,7 @@ public class ActivityPopup {
@Column(name = "is_del") @Column(name = "is_del")
private Integer isDel; private Integer isDel;
@Column(name = "time_type")
private Integer timeType;
} }
package com.xxfc.platform.activity.entity; package com.xxfc.platform.activity.entity;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date; import java.util.Date;
import javax.persistence.*; import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -29,14 +30,14 @@ public class HomeActivities implements Serializable { ...@@ -29,14 +30,14 @@ public class HomeActivities implements Serializable {
*/ */
@Column(name = "crt_time") @Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true ) @ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime; private BigInteger crtTime;
/** /**
* 更新时间 * 更新时间
*/ */
@Column(name = "upd_time") @Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true ) @ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime; private BigInteger updTime;
/** /**
* 活动名称 * 活动名称
...@@ -50,14 +51,14 @@ public class HomeActivities implements Serializable { ...@@ -50,14 +51,14 @@ public class HomeActivities implements Serializable {
*/ */
@Column(name = "start_time") @Column(name = "start_time")
@ApiModelProperty(value = "活动开始时间") @ApiModelProperty(value = "活动开始时间")
private Long startTime; private BigInteger startTime;
/** /**
* 精彩活动结束时间 * 精彩活动结束时间
*/ */
@Column(name = "end_time") @Column(name = "end_time")
@ApiModelProperty(value = "活动结束时间") @ApiModelProperty(value = "活动结束时间")
private Long endTime; private BigInteger endTime;
/** /**
...@@ -99,4 +100,11 @@ public class HomeActivities implements Serializable { ...@@ -99,4 +100,11 @@ public class HomeActivities implements Serializable {
@ApiModelProperty(value = "是否删除") @ApiModelProperty(value = "是否删除")
private Integer isDel; private Integer isDel;
/**
* 有效期限:0-永久 ,1-有期限
*/
@Column(name = "time_type")
private Integer timeType;
} }
...@@ -138,6 +138,6 @@ public class IntegralRule{ ...@@ -138,6 +138,6 @@ public class IntegralRule{
private String btnWord; private String btnWord;
@Transient @Transient
private Boolean integralStatus; private Boolean integralStatus = false;
} }
\ No newline at end of file
package com.xxfc.platform.activity.entity;
import lombok.Data;
import javax.persistence.*;
@Table(name = "integral_user_status")
@Data
public class IntegralUserStatus {
@Id
private Integer id;
@Column(name = "integral_rule_code")
private String integralRuleCode;
@Column(name = "user_id")
private Integer userId;
private Boolean integralStatus;
private Long crtTime;
private Long updTime;
}
\ No newline at end of file
...@@ -3,8 +3,6 @@ package com.xxfc.platform.activity.vo; ...@@ -3,8 +3,6 @@ package com.xxfc.platform.activity.vo;
import com.github.wxiaoqi.security.common.vo.PageParam; import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
@Data @Data
public class IntegralRuleDto extends PageParam { public class IntegralRuleDto extends PageParam {
/** /**
...@@ -13,4 +11,7 @@ public class IntegralRuleDto extends PageParam { ...@@ -13,4 +11,7 @@ public class IntegralRuleDto extends PageParam {
Integer id; Integer id;
String code; String code;
Integer userId;
} }
...@@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -14,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls; import tk.mybatis.mapper.weekend.WeekendSqls;
import javax.swing.plaf.synth.SynthEditorPaneUI;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
...@@ -23,10 +24,11 @@ import java.util.stream.Collectors; ...@@ -23,10 +24,11 @@ import java.util.stream.Collectors;
/** /**
* 活动弹窗biz * 活动弹窗biz
*
* @author Administrator * @author Administrator
*/ */
@Service @Service
public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup> { public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper, ActivityPopup> {
@Value("${activity.popup.loginTypes}") @Value("${activity.popup.loginTypes}")
private String loginTypes; private String loginTypes;
...@@ -38,36 +40,35 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup> ...@@ -38,36 +40,35 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup>
/** /**
* 获取活动弹窗,根据是否登录 * 获取活动弹窗,根据是否登录
*
* @param userInfo * @param userInfo
* @return * @return
*/ */
public List<ActivityPopup> getActivityPopup(AppUserDTO userInfo) { public List<ActivityPopup> getActivityPopup(AppUserDTO userInfo) {
if (userInfo!=null){ if (userInfo != null) {
List<ActivityPopup> activityPopups = getActivityPopupByTypes(loginTypes); List<ActivityPopup> activityPopups = getActivityPopupByTypes(loginTypes);
if (activityPopups==null||activityPopups.size()==0) { if (activityPopups == null || activityPopups.size() == 0) {
return activityPopups; return activityPopups;
} }
List<Integer> collect = activityPopups.parallelStream().map(ActivityPopup::getId).collect(Collectors.toList()); List<Integer> collect = activityPopups.parallelStream().map(ActivityPopup::getId).collect(Collectors.toList());
Example exaple= Example.builder(ActivityPopupUser.class) Example exaple = Example.builder(ActivityPopupUser.class)
.where(WeekendSqls.<ActivityPopupUser>custom() .where(WeekendSqls.<ActivityPopupUser>custom()
.andEqualTo(ActivityPopupUser::getUserId,userInfo.getUserid()) .andEqualTo(ActivityPopupUser::getUserId, userInfo.getUserid())
.andIn(ActivityPopupUser::getPopupId,collect) .andIn(ActivityPopupUser::getPopupId, collect)
).build(); ).build();
List<ActivityPopupUser> activityPopupUsers = activityPopupUserBiz.selectByExample(exaple); List<ActivityPopupUser> activityPopupUsers = activityPopupUserBiz.selectByExample(exaple);
if (activityPopupUsers==null||activityPopupUsers.size()==0) { if (activityPopupUsers == null || activityPopupUsers.size() == 0) {
return activityPopups; return activityPopups;
} }
Set<Integer> popupIdSet = activityPopupUsers.parallelStream().map(ActivityPopupUser::getPopupId).collect(Collectors.toSet()); Set<Integer> popupIdSet = activityPopupUsers.parallelStream().map(ActivityPopupUser::getPopupId).collect(Collectors.toSet());
List<ActivityPopup> result= new ArrayList<>(); List<ActivityPopup> result = new ArrayList<>();
for (ActivityPopup activityPopup : activityPopups) { for (ActivityPopup activityPopup : activityPopups) {
if (popupIdSet.add(activityPopup.getId())){ if (popupIdSet.add(activityPopup.getId())) {
result.add(activityPopup); result.add(activityPopup);
} }
} }
return result; return result;
}else { } else {
return getActivityPopupByTypes(notLoginTypes); return getActivityPopupByTypes(notLoginTypes);
...@@ -77,41 +78,57 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup> ...@@ -77,41 +78,57 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup>
/** /**
* 根据不同的用户,可查询寻的类型.得到对应的弹窗 * 根据不同的用户,可查询寻的类型.得到对应的弹窗
*
* @param Types * @param Types
* @return * @return
*/ */
private List<ActivityPopup> getActivityPopupByTypes(String Types) { private List<ActivityPopup> getActivityPopupByTypes(String Types) {
long timeMillis = System.currentTimeMillis();
//获取有期限的弹窗timeType=1
Example exa = Example.builder(ActivityPopup.class) Example exa = Example.builder(ActivityPopup.class)
.where( .where(
WeekendSqls.<ActivityPopup>custom() WeekendSqls.<ActivityPopup>custom()
.andGreaterThanOrEqualTo(ActivityPopup::getEndTime, BigInteger.valueOf(System.currentTimeMillis())) .andEqualTo(ActivityPopup::getTimeType, 1)
.andLessThanOrEqualTo(ActivityPopup::getStartTime, BigInteger.valueOf(System.currentTimeMillis())) .andGreaterThanOrEqualTo(ActivityPopup::getEndTime, BigInteger.valueOf(timeMillis))
.andLessThanOrEqualTo(ActivityPopup::getStartTime, BigInteger.valueOf(timeMillis))
.andIn(ActivityPopup::getType, Arrays.asList(Types.split(","))) .andIn(ActivityPopup::getType, Arrays.asList(Types.split(",")))
.andEqualTo(ActivityPopup::getStatus, 1) .andEqualTo(ActivityPopup::getStatus, 1)
.andEqualTo(ActivityPopup::getIsDel,0) .andEqualTo(ActivityPopup::getIsDel, 0)
).orderByAsc("sort").build(); ).orderByAsc("sort").build();
List<ActivityPopup> activityPopups = mapper.selectByExample(exa); List<ActivityPopup> activityPopups = mapper.selectByExample(exa);
long l = System.currentTimeMillis();
return activityPopups ; //获取永久的弹窗timeType=0
Example permanentExa = Example.builder(ActivityPopup.class)
.where(
WeekendSqls.<ActivityPopup>custom()
.andEqualTo(ActivityPopup::getTimeType, 0)
.andIn(ActivityPopup::getType, Arrays.asList(Types.split(",")))
.andEqualTo(ActivityPopup::getStatus, 1)
.andEqualTo(ActivityPopup::getIsDel, 0)
).orderByAsc("sort").build();
List<ActivityPopup> permanentActivityPopups = mapper.selectByExample(permanentExa);
activityPopups.addAll(permanentActivityPopups);
return activityPopups;
} }
/** /**
* 判断是否重复弹窗 * 判断是否重复弹窗
*
* @param userInfo * @param userInfo
* @param id * @param id
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void setActivityPopup(AppUserDTO userInfo,Integer id){ public void setActivityPopup(AppUserDTO userInfo, Integer id) {
if (userInfo!=null) { if (userInfo != null) {
Example exa=Example.builder(ActivityPopupUser.class).where( Example exa = Example.builder(ActivityPopupUser.class).where(
WeekendSqls.<ActivityPopupUser>custom() WeekendSqls.<ActivityPopupUser>custom()
.andEqualTo(ActivityPopupUser::getPopupId,id) .andEqualTo(ActivityPopupUser::getPopupId, id)
.andEqualTo(ActivityPopupUser::getUserId,userInfo.getUserid()) .andEqualTo(ActivityPopupUser::getUserId, userInfo.getUserid())
).build(); ).build();
List<ActivityPopupUser> activityPopupUsers = activityPopupUserBiz.selectByExample(exa); List<ActivityPopupUser> activityPopupUsers = activityPopupUserBiz.selectByExample(exa);
if (activityPopupUsers==null||activityPopupUsers.size()==0) { if (activityPopupUsers == null || activityPopupUsers.size() == 0) {
ActivityPopupUser activityPopupUser = new ActivityPopupUser(); ActivityPopupUser activityPopupUser = new ActivityPopupUser();
activityPopupUser.setPopupId(id); activityPopupUser.setPopupId(id);
activityPopupUser.setUserId(userInfo.getUserid()); activityPopupUser.setUserId(userInfo.getUserid());
...@@ -126,11 +143,25 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup> ...@@ -126,11 +143,25 @@ public class ActivityPopupBiz extends BaseBiz<ActivityPopupMapper,ActivityPopup>
public void deleteOne(Integer id) { public void deleteOne(Integer id) {
ActivityPopup activityPopup = selectById(id); ActivityPopup activityPopup = selectById(id);
if (activityPopup.getStatus()==1) { if (activityPopup.getStatus() == 1) {
throw new BaseException("Please take it off the shelves first"); throw new BaseException("Please take it off the shelves first");
}else{ } else {
activityPopup.setIsDel(1); activityPopup.setIsDel(1);
} }
updateById(activityPopup); updateById(activityPopup);
} }
@Override
public int updateSelectiveByIdRe(ActivityPopup activityPopup) {
activityPopup.setUpdTime(BigInteger.valueOf(System.currentTimeMillis()));
return mapper.updateByPrimaryKeySelective(activityPopup);
}
@Override
public int insertSelectiveRe(ActivityPopup activityPopup) {
activityPopup.setCrtTime(BigInteger.valueOf(System.currentTimeMillis()));
activityPopup.setSort(0);
activityPopup.setTimeType(0);
return mapper.insertSelective(activityPopup);
}
} }
...@@ -14,6 +14,7 @@ import org.springframework.stereotype.Service; ...@@ -14,6 +14,7 @@ import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls; import tk.mybatis.mapper.weekend.WeekendSqls;
import java.math.BigInteger;
import java.util.List; import java.util.List;
/** /**
* @author Administrator * @author Administrator
...@@ -23,12 +24,22 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit ...@@ -23,12 +24,22 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit
public List<HomeActivities> activities () { public List<HomeActivities> activities () {
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
Example exa=Example.builder(HomeActivities.class).where(WeekendSqls.<HomeActivities>custom() Example exa=Example.builder(HomeActivities.class).where(WeekendSqls.<HomeActivities>custom()
.andEqualTo(HomeActivities::getTimeType,1)
.andGreaterThanOrEqualTo(HomeActivities::getEndTime,currentTime) .andGreaterThanOrEqualTo(HomeActivities::getEndTime,currentTime)
.andLessThanOrEqualTo(HomeActivities::getStartTime,currentTime) .andLessThanOrEqualTo(HomeActivities::getStartTime,currentTime)
.andEqualTo(HomeActivities::getStatus,1) .andEqualTo(HomeActivities::getStatus,1)
.andEqualTo(HomeActivities::getIsDel,0) .andEqualTo(HomeActivities::getIsDel,0)
).orderByAsc("sort").build(); ).orderByAsc("sort").build();
List<HomeActivities> activityLists = selectByExample(exa); List<HomeActivities> activityLists = selectByExample(exa);
Example permanentExa=Example.builder(HomeActivities.class).where(WeekendSqls.<HomeActivities>custom()
.andEqualTo(HomeActivities::getTimeType,0)
.andEqualTo(HomeActivities::getStatus,1)
.andEqualTo(HomeActivities::getIsDel,0)
).orderByAsc("sort").build();
List<HomeActivities> permanentActivityLists = selectByExample(permanentExa);
activityLists.addAll(permanentActivityLists);
return activityLists; return activityLists;
} }
...@@ -36,10 +47,11 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit ...@@ -36,10 +47,11 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit
public PageInfo<HomeActivities> getPage (ActivitiesQuery query) { public PageInfo<HomeActivities> getPage (ActivitiesQuery query) {
Example exa =new Example(HomeActivities.class); Example exa =new Example(HomeActivities.class);
Example.Criteria criteria = exa.createCriteria();
if (StringUtils.isNotBlank(query.getActivitiesName())){ if (StringUtils.isNotBlank(query.getActivitiesName())){
exa.createCriteria().andLike("name","%"+query.getActivitiesName()+"%"); criteria.andLike("name","%"+query.getActivitiesName()+"%");
} }
exa.createCriteria().andEqualTo("isDel",0); criteria.andEqualTo("isDel",0);
exa.orderBy("sort").asc(); exa.orderBy("sort").asc();
PageHelper.startPage(query.getPage(),query.getLimit()); PageHelper.startPage(query.getPage(),query.getLimit());
List<HomeActivities> activityLists = selectByExample(exa); List<HomeActivities> activityLists = selectByExample(exa);
...@@ -56,4 +68,19 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit ...@@ -56,4 +68,19 @@ public class HomeActivitiesBiz extends BaseBiz<HomeActivitiesMapper, HomeActivit
updateById(homeActivities); updateById(homeActivities);
} }
@Override
public int updateSelectiveByIdRe(HomeActivities activityPopup) {
activityPopup.setUpdTime(BigInteger.valueOf(System.currentTimeMillis()));
return mapper.updateByPrimaryKeySelective(activityPopup);
}
@Override
public int insertSelectiveRe(HomeActivities activityPopup) {
activityPopup.setCrtTime(BigInteger.valueOf(System.currentTimeMillis()));
activityPopup.setSort(0);
activityPopup.setTimeType(0);
return mapper.insertSelective(activityPopup);
}
} }
...@@ -97,9 +97,6 @@ public class IntegralRuleBiz extends BaseBiz<IntegralRuleMapper, IntegralRule> { ...@@ -97,9 +97,6 @@ public class IntegralRuleBiz extends BaseBiz<IntegralRuleMapper, IntegralRule> {
Query query = new Query(integralRule); Query query = new Query(integralRule);
PageDataVO<IntegralRule> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.selectAllByParam(integralRule)); PageDataVO<IntegralRule> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.selectAllByParam(integralRule));
//添加个人积分状态 //添加个人积分状态
for(IntegralRule value : pageDataVO.getData()) {
value.setIntegralStatus(getIntegralStatus(appUserDTO, value));
}
return ObjectRestResponse.succ(pageDataVO); return ObjectRestResponse.succ(pageDataVO);
} }
......
...@@ -7,11 +7,14 @@ import com.github.wxiaoqi.security.common.constant.RestCode; ...@@ -7,11 +7,14 @@ import com.github.wxiaoqi.security.common.constant.RestCode;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.Query; import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.constant.IntegralRulePeriod;
import com.xxfc.platform.activity.entity.IntegralRule; import com.xxfc.platform.activity.entity.IntegralRule;
import com.xxfc.platform.activity.entity.IntegralUserRecord; import com.xxfc.platform.activity.entity.IntegralUserRecord;
import com.xxfc.platform.activity.entity.IntegralUserStatus;
import com.xxfc.platform.activity.entity.IntegralUserTotal; import com.xxfc.platform.activity.entity.IntegralUserTotal;
import com.xxfc.platform.activity.mapper.IntegralUserRecordMapper; import com.xxfc.platform.activity.mapper.IntegralUserRecordMapper;
import com.xxfc.platform.activity.user.UserInfoBiz; import com.xxfc.platform.activity.user.UserInfoBiz;
import com.xxfc.platform.activity.util.IntegralToolsUtils;
import com.xxfc.platform.activity.vo.IntegralRuleDto; import com.xxfc.platform.activity.vo.IntegralRuleDto;
import com.xxfc.platform.activity.vo.IntegralUserRecordDto; import com.xxfc.platform.activity.vo.IntegralUserRecordDto;
import com.xxfc.platform.activity.vo.IntegralUserTotalDto; import com.xxfc.platform.activity.vo.IntegralUserTotalDto;
...@@ -37,6 +40,9 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int ...@@ -37,6 +40,9 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int
@Autowired @Autowired
IntegralRuleBiz integralRuleBiz; IntegralRuleBiz integralRuleBiz;
@Autowired
IntegralUserStatusBiz integralUserStatusBiz;
/** /**
* 添加用户积分记录 * 添加用户积分记录
* *
...@@ -49,15 +55,15 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int ...@@ -49,15 +55,15 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int
return ObjectRestResponse.paramIsEmpty(); return ObjectRestResponse.paramIsEmpty();
} }
//如果参数没有积分,说明是消息队列过来的参数,需要查询规则表获取积分数 //如果参数没有积分,说明是消息队列过来的参数,需要查询规则表获取积分数
if (integralUserRecord.getPoint() == null) {
IntegralRuleDto integralRule = new IntegralRuleDto(); IntegralRuleDto integralRule = new IntegralRuleDto();
integralRule.setCode(integralUserRecord.getIntegralRuleCode()); integralRule.setCode(integralUserRecord.getIntegralRuleCode());
ObjectRestResponse<IntegralRule> ruleObjectRestResponse = integralRuleBiz.getOne(integralRule); ObjectRestResponse<IntegralRule> ruleObjectRestResponse = integralRuleBiz.getOne(integralRule);
if (ruleObjectRestResponse.getData() == null) { if (ruleObjectRestResponse.getData() == null) {
return ObjectRestResponse.createFailedResult(1202, "积分规则不存在"); return ObjectRestResponse.createFailedResult(1202, "积分规则不存在");
} }
Integer point = 0;
IntegralRule oldValue = ruleObjectRestResponse.getData(); IntegralRule oldValue = ruleObjectRestResponse.getData();
if (integralUserRecord.getPoint() == null) {
Integer point = 0;
if(oldValue.getPoint() == 0) {//没有基础分需要计算分数 if(oldValue.getPoint() == 0) {//没有基础分需要计算分数
//Integer amount = Integer.parseInt(new BigDecimal(integralUserRecord.getAmount()).divide(new BigDecimal("100"), 0, BigDecimal.ROUND_DOWN).toString()); //Integer amount = Integer.parseInt(new BigDecimal(integralUserRecord.getAmount()).divide(new BigDecimal("100"), 0, BigDecimal.ROUND_DOWN).toString());
Integer amount = Integer.parseInt(integralUserRecord.getAmount()); Integer amount = Integer.parseInt(integralUserRecord.getAmount());
...@@ -95,6 +101,9 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int ...@@ -95,6 +101,9 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int
} }
} }
insertSelective(integralUserRecord.getIntegralUserRecord()); insertSelective(integralUserRecord.getIntegralUserRecord());
if(oldValue != null) {
getUserRecordStatus(integralUserRecord, oldValue.getPeriod(), oldValue.getNumber());
}
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
...@@ -149,4 +158,32 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int ...@@ -149,4 +158,32 @@ public class IntegralUserRecordBiz extends BaseBiz<IntegralUserRecordMapper, Int
List<IntegralUserRecord> integralUserRecordList = mapper.selectByUserAndTime(integralUserRecordDto); List<IntegralUserRecord> integralUserRecordList = mapper.selectByUserAndTime(integralUserRecordDto);
return ObjectRestResponse.succ(integralUserRecordList); return ObjectRestResponse.succ(integralUserRecordList);
} }
/**
* //判断用户获取积分是否达标
* @param integralUserRecordDto 积分记录实体
* @param period 周期
* number 周期内可获得积分的次数
*/
public void getUserRecordStatus(IntegralUserRecordDto integralUserRecordDto, Integer period, Integer number) {
IntegralUserStatus integralUserStatus = new IntegralUserStatus();
integralUserStatus.setUserId(integralUserRecordDto.getUserId());
integralUserStatus.setIntegralRuleCode(integralUserRecordDto.getIntegralRuleCode());
if(period == IntegralRulePeriod.DAY.getCode()) {//按天
integralUserRecordDto.setStartTime(IntegralToolsUtils.getDayStart());
integralUserRecordDto.setEndTime(IntegralToolsUtils.getDayStart() + 24 * 60 * 60 * 1000);
Integer count = mapper.countByUserAndCode(integralUserRecordDto);
integralUserStatus.setIntegralStatus(count == number);
} else {
integralUserRecordDto.setStartTime(null);
Integer count = mapper.countByUserAndCode(integralUserRecordDto);
integralUserStatus.setIntegralStatus(count == number);
}
integralUserStatusBiz.save(integralUserStatus);
}
} }
package com.xxfc.platform.activity.biz;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.activity.entity.IntegralUserStatus;
import com.xxfc.platform.activity.mapper.IntegralUserStatusMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class IntegralUserStatusBiz extends BaseBiz<IntegralUserStatusMapper, IntegralUserStatus> {
public ObjectRestResponse save(IntegralUserStatus integralUserStatus) {
if(integralUserStatus != null) {
IntegralUserStatus oldValue = mapper.selectByUserAndCode(integralUserStatus);
if(oldValue != null) {
BeanUtil.copyProperties(integralUserStatus, oldValue, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
updateSelectiveById(oldValue);
}
insertSelective(integralUserStatus);
}
return ObjectRestResponse.succ();
}
public IntegralUserStatus selectByUserAndCode(String code, Integer userId) {
if(!StringUtils.isAllBlank(code, userId + "")) {
IntegralUserStatus integralUserStatus = new IntegralUserStatus();
integralUserStatus.setIntegralRuleCode(code);
integralUserStatus.setUserId(userId);
return mapper.selectByUserAndCode(integralUserStatus);
}
return null;
}
}
...@@ -12,4 +12,6 @@ public interface IntegralUserRecordMapper extends Mapper<IntegralUserRecord> { ...@@ -12,4 +12,6 @@ public interface IntegralUserRecordMapper extends Mapper<IntegralUserRecord> {
List<IntegralUserRecord> selectByUserAndTime(IntegralUserRecordDto integralUserRecordDto); List<IntegralUserRecord> selectByUserAndTime(IntegralUserRecordDto integralUserRecordDto);
Integer countByUserAndCode(IntegralUserRecordDto integralUserRecordDto);
} }
\ No newline at end of file
package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.entity.IntegralUserStatus;
import tk.mybatis.mapper.common.Mapper;
public interface IntegralUserStatusMapper extends Mapper<IntegralUserStatus> {
IntegralUserStatus selectByUserAndCode(IntegralUserStatus integralUserStatus);
}
\ No newline at end of file
...@@ -3,8 +3,11 @@ package com.xxfc.platform.activity.rest; ...@@ -3,8 +3,11 @@ package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityListBiz; import com.xxfc.platform.activity.biz.ActivityListBiz;
import com.xxfc.platform.activity.biz.HomeActivitiesBiz;
import com.xxfc.platform.activity.entity.ActivityList; import com.xxfc.platform.activity.entity.ActivityList;
import com.xxfc.platform.activity.entity.ActivityManagement; import com.xxfc.platform.activity.entity.ActivityManagement;
import com.xxfc.platform.activity.entity.HomeActivities;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -16,6 +19,9 @@ import java.util.List; ...@@ -16,6 +19,9 @@ import java.util.List;
@RestController @RestController
@RequestMapping("activityList") @RequestMapping("activityList")
public class ActivityListController extends BaseController<ActivityListBiz,ActivityList> { public class ActivityListController extends BaseController<ActivityListBiz,ActivityList> {
@Autowired
private HomeActivitiesBiz homeActivitiesBiz;
/** /**
* 精彩活动列表 * 精彩活动列表
* @return * @return
...@@ -23,8 +29,9 @@ public class ActivityListController extends BaseController<ActivityListBiz,Activ ...@@ -23,8 +29,9 @@ public class ActivityListController extends BaseController<ActivityListBiz,Activ
* @throws IllegalAccessException * @throws IllegalAccessException
*/ */
@GetMapping("/app/unauth/activity/findAll") @GetMapping("/app/unauth/activity/findAll")
public ObjectRestResponse<List<ActivityList>> appFindAll() throws InvocationTargetException, IllegalAccessException { public ObjectRestResponse<List<HomeActivities>> appFindAll() throws InvocationTargetException, IllegalAccessException {
List<ActivityList> list= baseBiz.activities(); List<HomeActivities> activities = homeActivitiesBiz.activities();
return ObjectRestResponse.succ(list); // List<ActivityList> list= baseBiz.activities();
return ObjectRestResponse.succ(activities);
} }
} }
\ No newline at end of file
...@@ -7,6 +7,7 @@ import com.github.wxiaoqi.security.common.rest.BaseController; ...@@ -7,6 +7,7 @@ import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.ActivityPopupBiz; import com.xxfc.platform.activity.biz.ActivityPopupBiz;
import com.xxfc.platform.activity.entity.ActivityPopup; import com.xxfc.platform.activity.entity.ActivityPopup;
import com.xxfc.platform.activity.vo.PopupQuery; import com.xxfc.platform.activity.vo.PopupQuery;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -45,11 +46,12 @@ public class ActivityPopupManageController extends BaseController<ActivityPopupB ...@@ -45,11 +46,12 @@ public class ActivityPopupManageController extends BaseController<ActivityPopupB
* @param id * @param id
* @return * @return
*/ */
@PostMapping(value = "/manage/getOne/{id}") @GetMapping(value = "/manage/getOne/{id}")
public ObjectRestResponse<ActivityPopup> getOne(@PathVariable Integer id) { public ObjectRestResponse<ActivityPopup> getOne(@PathVariable Integer id) {
Example exa=new Example(ActivityPopup.class); Example exa=new Example(ActivityPopup.class);
exa.createCriteria().andEqualTo("isDel",0); Example.Criteria criteria = exa.createCriteria();
exa.createCriteria().andEqualTo("id",id); criteria.andEqualTo("isDel",0);
criteria.andEqualTo("id",id);
List<ActivityPopup> activityPopups = baseBiz.selectByExample(exa); List<ActivityPopup> activityPopups = baseBiz.selectByExample(exa);
if (activityPopups==null||activityPopups.size()==0) { if (activityPopups==null||activityPopups.size()==0) {
return ObjectRestResponse.succ(new ActivityPopup()); return ObjectRestResponse.succ(new ActivityPopup());
...@@ -71,4 +73,18 @@ public class ActivityPopupManageController extends BaseController<ActivityPopupB ...@@ -71,4 +73,18 @@ public class ActivityPopupManageController extends BaseController<ActivityPopupB
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
// /**
// * 添加
// * @param activityPopup
// * @return
// */
// @ApiOperation("保存")
// @PutMapping(value = "save")
// @ResponseBody
// public ObjectRestResponse<ActivityPopup> save(@RequestBody ActivityPopup activityPopup){
// baseBiz.save(activityPopup);
// return new ObjectRestResponse<ActivityPopup>();
// }
} }
...@@ -28,7 +28,7 @@ public class HomeActivitiesController extends BaseController<HomeActivitiesBiz, ...@@ -28,7 +28,7 @@ public class HomeActivitiesController extends BaseController<HomeActivitiesBiz,
* @throws IllegalAccessException * @throws IllegalAccessException
*/ */
@GetMapping("/app/unauth/activity/findAll") @GetMapping("/app/unauth/activity/findAll")
public ObjectRestResponse<List<HomeActivities>> appFindAll() throws InvocationTargetException, IllegalAccessException { public ObjectRestResponse<List<HomeActivities>> appFindAll() {
List<HomeActivities> list= baseBiz.activities(); List<HomeActivities> list= baseBiz.activities();
return ObjectRestResponse.succ(list); return ObjectRestResponse.succ(list);
} }
...@@ -49,7 +49,7 @@ public class HomeActivitiesController extends BaseController<HomeActivitiesBiz, ...@@ -49,7 +49,7 @@ public class HomeActivitiesController extends BaseController<HomeActivitiesBiz,
* @param id * @param id
* @return * @return
*/ */
@PostMapping(value = "/manage/activity/getOne/{id}") @GetMapping(value = "/manage/activity/getOne/{id}")
public ObjectRestResponse<HomeActivities> getOne(@PathVariable Integer id) { public ObjectRestResponse<HomeActivities> getOne(@PathVariable Integer id) {
Example exa=new Example(HomeActivities.class); Example exa=new Example(HomeActivities.class);
Example.Criteria criteria = exa.createCriteria(); Example.Criteria criteria = exa.createCriteria();
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
</plugin> </plugin>
<jdbcConnection driverClass="com.mysql.jdbc.Driver" <jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/vehicle?useUnicode=true&amp;characterEncoding=UTF8" connectionURL="jdbc:mysql://10.5.52.4:3307/xxfc_activity?useUnicode=true&amp;characterEncoding=UTF8"
userId="root" userId="root"
password="xx2019fc"> password="sslcloud123*()">
</jdbcConnection> </jdbcConnection>
<javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/> <javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/>
...@@ -26,18 +26,6 @@ ...@@ -26,18 +26,6 @@
<javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}" <javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}"
type="XMLMAPPER"/> type="XMLMAPPER"/>
<table tableName="integral_user_status" domainObjectName="IntegralUserStatus"></table>
<!-- <table tableName="vehicle" domainObjectName="Vehicle">-->
<!-- </table>-->
<!-- <table tableName="vehicle_book_info" domainObjectName="VehicleBookInfo">-->
<!-- </table>-->
<!-- <table tableName="vehicle_book_record" domainObjectName="VehicleBookRecord">-->
<!-- </table>-->
<!-- <table tableName="branch_company" domainObjectName="BranchCompany">-->
<!-- </table>-->
<!-- <table tableName="branch_company_stock_info" domainObjectName="BranchCompanyStockInfo"></table>-->
<!-- <table tableName="branch_company_stock_apply_info" domainObjectName="BranchCompanyStockApplyInfo"></table>-->
<table tableName="vehicle_upkeep_item" domainObjectName="VehicleUpkeepItem"></table>
<table tableName="vehicle_upkeep_log" domainObjectName="VehicleUpkeepLog"></table>
</context> </context>
</generatorConfiguration> </generatorConfiguration>
\ No newline at end of file
...@@ -31,17 +31,21 @@ ...@@ -31,17 +31,21 @@
<select id="selectAllByParam" resultType="com.xxfc.platform.activity.entity.IntegralRule" parameterType="com.xxfc.platform.activity.vo.IntegralRuleDto"> <select id="selectAllByParam" resultType="com.xxfc.platform.activity.entity.IntegralRule" parameterType="com.xxfc.platform.activity.vo.IntegralRuleDto">
select * from integral_rule select i1.*, i2.integral_status from integral_rule i1
left join integral_user_status i2 on i1.code = i2.integral_rule_code
<where> <where>
<if test="id != null"> <if test="id != null">
and id = #{id} and i1.id = #{id}
</if>
<if test="userId != null">
and i2.user_id = #{userId}
</if> </if>
<if test="code != null"> <if test="code != null">
and code = #{code} and i1.code = #{code}
</if> </if>
and isdel = 0 and status = 1 and i1.isdel = 0 and status = 1
</where> </where>
order by order_id DESC ,crt_time DESC order by i1.order_id DESC ,i1.crt_time DESC
</select> </select>
</mapper> </mapper>
\ No newline at end of file
...@@ -29,4 +29,13 @@ ...@@ -29,4 +29,13 @@
select * from integral_user_record select * from integral_user_record
where user_id = #{userId} and crt_time between #{startTime} and #{endTime} and integral_rule_code = #{integralRuleCode} where user_id = #{userId} and crt_time between #{startTime} and #{endTime} and integral_rule_code = #{integralRuleCode}
</select> </select>
<select id="countByUserAndCode" resultType="java.lang.Integer" parameterType="com.xxfc.platform.activity.vo.IntegralUserRecordDto">
select count(*) from integral_user_record
where user_id = #{userId} and integral_rule_code = #{integralRuleCode}
<if test="startTime != null">
and crt_time between #{startTime} and #{endTime}
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
<?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.xxfc.platform.activity.mapper.IntegralUserStatusMapper" >
<resultMap id="BaseResultMap" type="com.xxfc.platform.activity.entity.IntegralUserStatus" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="integral_rule_code" property="integralRuleCode" jdbcType="VARCHAR" />
<result column="user_id" property="userId" jdbcType="INTEGER" />
<result column="integral_status" property="integralStatus" jdbcType="BIT" />
</resultMap>
<select id="selectByUserAndCode" resultType="com.xxfc.platform.activity.entity.IntegralUserStatus" parameterType="com.xxfc.platform.activity.entity.IntegralUserStatus">
select * from integral_user_status
where integral_rule_code = #{integralRuleCode} and user_id = #{userId}
</select>
</mapper>
\ No newline at end of file
...@@ -112,7 +112,7 @@ public class AppVersionBiz extends BaseBiz<AppVersionMapper,AppVersion> { ...@@ -112,7 +112,7 @@ public class AppVersionBiz extends BaseBiz<AppVersionMapper,AppVersion> {
String realFileRelPath = dirPathToday + "/"+fileName; String realFileRelPath = dirPathToday + "/"+fileName;
String filePath = uploadPath + realFileRelPath; String filePath = uploadPath + realFileRelPath;
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(filePath)); FileUtils.copyInputStreamToFile(file.getInputStream(), new File(filePath));
realFileRelPath=Dev_url+realFileRelPath; // filePath=Dev_url+filePath;
return ObjectRestResponse.succ(filePath); return ObjectRestResponse.succ(filePath);
} }
......
...@@ -12,7 +12,6 @@ import com.xxfc.platform.im.dto.PraiseVo; ...@@ -12,7 +12,6 @@ import com.xxfc.platform.im.dto.PraiseVo;
import com.xxfc.platform.im.model.Comment; import com.xxfc.platform.im.model.Comment;
import com.xxfc.platform.im.model.Msg; import com.xxfc.platform.im.model.Msg;
import com.xxfc.platform.im.model.Praise; import com.xxfc.platform.im.model.Praise;
import com.xxfc.platform.im.utils.AddressUtils;
import com.xxfc.platform.im.vo.MsgVo; import com.xxfc.platform.im.vo.MsgVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
...@@ -190,8 +189,8 @@ public class MsgBiz { ...@@ -190,8 +189,8 @@ public class MsgBiz {
msgVo.setNickname(imiVo.getNickname()); msgVo.setNickname(imiVo.getNickname());
msgVo.setPicUrl(imiVo.getHeadimgurl()); msgVo.setPicUrl(imiVo.getHeadimgurl());
} }
String address = AddressUtils.getMapaddress(msg.getLatitude().toString(), msg.getLongitude().toString()); //String address = AddressUtils.getMapaddress(msg.getLatitude().toString(), msg.getLongitude().toString());
msgVo.setAddress(address); msgVo.setAddress(msg.getLocation());
msgVo.setMsgId(msg.getId().toString()); msgVo.setMsgId(msg.getId().toString());
msgVoList.add(msgVo); msgVoList.add(msgVo);
} }
......
...@@ -22,7 +22,7 @@ public class ImCommentController { ...@@ -22,7 +22,7 @@ public class ImCommentController {
return imCommentBiz.add(imComment); return imCommentBiz.add(imComment);
} }
@DeleteMapping(value = "/delete") @PostMapping(value = "/delete")
@ApiOperation(value = "删除评论") @ApiOperation(value = "删除评论")
public ObjectRestResponse deleteById(ImComment imComment) { public ObjectRestResponse deleteById(ImComment imComment) {
return imCommentBiz.deleteById(imComment); return imCommentBiz.deleteById(imComment);
......
...@@ -22,7 +22,7 @@ public class ImPraiseController { ...@@ -22,7 +22,7 @@ public class ImPraiseController {
return imPraiseBiz.add(imPraise); return imPraiseBiz.add(imPraise);
} }
@DeleteMapping(value = "/delete") @PostMapping(value = "/delete")
@ApiOperation(value = "取消点赞") @ApiOperation(value = "取消点赞")
public ObjectRestResponse deleteById(ImPraiseDto imPraiseDto) { public ObjectRestResponse deleteById(ImPraiseDto imPraiseDto) {
return imPraiseBiz.deleteById(imPraiseDto); return imPraiseBiz.deleteById(imPraiseDto);
......
package com.xxfc.platform.order.entity; package com.xxfc.platform.order.entity;
import java.io.Serializable; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
/** /**
* 旅游订单详情 * 旅游订单详情
...@@ -241,4 +243,7 @@ public class OrderTourDetail implements Serializable { ...@@ -241,4 +243,7 @@ public class OrderTourDetail implements Serializable {
@Column(name = "is_outside") @Column(name = "is_outside")
@ApiModelProperty(value = "是否省外 1--省外;0--省内") @ApiModelProperty(value = "是否省外 1--省外;0--省内")
private Integer isOutside; private Integer isOutside;
@Transient
private List<AppUserVo> userVoList;
} }
package com.xxfc.platform.order.pojo.pay;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class NotifyUrlDTO {
public static final int TYPE_APP = 1;
public static final int TYPE_WX = 2;
//订单号
@ApiModelProperty(value = "订单号")
private String orderNo;
//订单号
@ApiModelProperty(value = "支付订单(流水)号")
private String tradeNo;
//支付类型
@ApiModelProperty(value = "支付类型")
private Integer type;
}
\ No newline at end of file
...@@ -6,6 +6,7 @@ import cn.hutool.json.JSONUtil; ...@@ -6,6 +6,7 @@ import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO; import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
...@@ -36,7 +37,6 @@ import lombok.extern.slf4j.Slf4j; ...@@ -36,7 +37,6 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.jexl2.MapContext; import org.apache.commons.jexl2.MapContext;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -137,11 +137,12 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -137,11 +137,12 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
* @return * @return
*/ */
public ObjectRestResponse getOrderDetail(String no) { public ObjectRestResponse getOrderDetail(String no) {
OrderPageVO orderPageVo = mapper.getOrderDetail(no); OrderPageVO orderPageVo = mapper.getOrderDetail(no);
if(orderPageVo == null) { if(orderPageVo == null) {
return ObjectRestResponse.createDefaultFail(); return ObjectRestResponse.createFailedResult(3501, "订单不存在");
} }
if(orderPageVo.getOrderRentVehicleDetail() != null) {
if(orderPageVo.getStatus() == 4) { //未交车 if(orderPageVo.getStatus() == 4) { //未交车
List<VehicleUserLicense> vehicleUserLicenses = Lists.newArrayList(); List<VehicleUserLicense> vehicleUserLicenses = Lists.newArrayList();
...@@ -189,10 +190,25 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -189,10 +190,25 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
} }
orderPageVo.setOrderVehicleCrosstownDto(orderVehicleCrosstownDto); orderPageVo.setOrderVehicleCrosstownDto(orderVehicleCrosstownDto);
} }
RestResponse<Vehicle> restResponse = vehicleFeign.findById(orderPageVo.getOrderRentVehicleDetail().getVehicleId()); RestResponse<Vehicle> restResponse = vehicleFeign.findById(orderPageVo.getOrderRentVehicleDetail().getVehicleId());
if(restResponse.getData() != null) { if(restResponse.getData() != null) {
orderPageVo.setVehicalNumberPlat(restResponse.getData().getNumberPlate()); orderPageVo.setVehicalNumberPlat(restResponse.getData().getNumberPlate());
} }
} else if(orderPageVo.getOrderTourDetail() != null) {
List<Integer> ids = Lists.newArrayList();
if(orderPageVo.getOrderTourDetail().getTourUserIds().contains(",")) {
String[] strings = orderPageVo.getOrderTourDetail().getTourUserIds().split(",");
for (int i = 0; i < strings.length; i++) {
ids.add(Integer.parseInt(StringUtils.isNotBlank(strings[i])? strings[i] : "0"));
}
} else {
ids.add(Integer.parseInt(orderPageVo.getOrderTourDetail().getTourUserIds()));
}
List<AppUserVo> list = userFeign.getByUserIds(ids).getData();
orderPageVo.getOrderTourDetail().setUserVoList(list);
}
return ObjectRestResponse.succ(orderPageVo); return ObjectRestResponse.succ(orderPageVo);
} }
...@@ -375,13 +391,17 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -375,13 +391,17 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
* @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 refundAmount, Integer refundType, Integer refundStatus) {
String refundTradeNo = null;
//0 小于 退款金额
if(BigDecimal.ZERO.compareTo(refundAmount) < 0) {
OrderRefundVo orv = new OrderRefundVo(){{ OrderRefundVo orv = new OrderRefundVo(){{
setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue()); setAmount(baseOrder.getRealAmount().multiply(new BigDecimal("100")).intValue());
setOrderNo(baseOrder.getNo()); setOrderNo(baseOrder.getNo());
}}; }};
orv.setRefundDesc(refundDesc+ refundAmount.toString()); orv.setRefundDesc(refundDesc+ refundAmount.toString());
orv.setRefundAmount(refundAmount.multiply(new BigDecimal("100")).intValue()); orv.setRefundAmount(refundAmount.multiply(new BigDecimal("100")).intValue());
String refundTradeNo = thirdFeign.refund(orv).getData(); refundTradeNo = thirdFeign.refund(orv).getData();
}
//记录订单退款记录 //记录订单退款记录
Integer flag = addOrderRefund(baseOrder.getId(), refundDesc, refundAmount, refundTradeNo, refundType); Integer flag = addOrderRefund(baseOrder.getId(), refundDesc, refundAmount, refundTradeNo, refundType);
......
...@@ -28,6 +28,7 @@ import com.xxfc.platform.order.entity.BaseOrder; ...@@ -28,6 +28,7 @@ import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderUserLicense; import com.xxfc.platform.order.entity.OrderUserLicense;
import com.xxfc.platform.order.mqhandler.RabbitProduct; import com.xxfc.platform.order.mqhandler.RabbitProduct;
import com.xxfc.platform.order.pojo.order.*; import com.xxfc.platform.order.pojo.order.*;
import com.xxfc.platform.order.pojo.pay.NotifyUrlDTO;
import com.xxfc.platform.order.pojo.pay.OrderPayDTO; import com.xxfc.platform.order.pojo.pay.OrderPayDTO;
import com.xxfc.platform.universal.constant.DictionaryKey; import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.entity.Dictionary; import com.xxfc.platform.universal.entity.Dictionary;
...@@ -470,19 +471,4 @@ public class BaseOrderController extends CommonBaseController implements UserRes ...@@ -470,19 +471,4 @@ public class BaseOrderController extends CommonBaseController implements UserRes
@ApiModelProperty("每页限制") @ApiModelProperty("每页限制")
Integer limit; Integer limit;
} }
@Data
public class NotifyUrlDTO {
//订单号
@ApiModelProperty(value = "订单号")
private String orderNo;
//订单号
@ApiModelProperty(value = "支付订单(流水)号")
private String tradeNo;
//支付类型
@ApiModelProperty(value = "支付类型")
private Integer type;
}
} }
...@@ -14,6 +14,7 @@ import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum; ...@@ -14,6 +14,7 @@ import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder; import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.inter.OrderDetail; import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.mqhandler.RabbitProduct; import com.xxfc.platform.order.mqhandler.RabbitProduct;
import com.xxfc.platform.order.pojo.pay.NotifyUrlDTO;
import com.xxfc.platform.order.pojo.price.OrderPriceVO; import com.xxfc.platform.order.pojo.price.OrderPriceVO;
import com.xxfc.platform.universal.entity.Dictionary; import com.xxfc.platform.universal.entity.Dictionary;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -120,13 +121,13 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or ...@@ -120,13 +121,13 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
} }
//判断是否价格为0 //判断是否价格为0
// BigDecimal realAmount = detail.getOrder().getRealAmount(); BigDecimal realAmount = detail.getOrder().getRealAmount();
// if(BigDecimal.ZERO.compareTo(realAmount) > 0) { if(BigDecimal.ZERO.compareTo(realAmount) > 0) {
// throw new BaseException(ResultCode.FAILED_CODE); throw new BaseException(ResultCode.FAILED_CODE);
// }else if(BigDecimal.ZERO.compareTo(realAmount) = 0) { }else if(BigDecimal.ZERO.compareTo(realAmount) == 0) {
// //直接支付 //直接支付
// baseOrderBiz.payNotifyHandle(); baseOrderBiz.payNotifyHandle(detail.getOrder().getNo(), null, detail.getOrderOrigin());
// } }
} }
/** /**
* 计算价格 * 计算价格
......
...@@ -46,6 +46,11 @@ public class RedisKey { ...@@ -46,6 +46,11 @@ public class RedisKey {
*/ */
public static final String BRANCH_COMPANY_CACHE_ALL = BRANCH_COMPANY_CACHE + ":all"; public static final String BRANCH_COMPANY_CACHE_ALL = BRANCH_COMPANY_CACHE + ":all";
/**
* 子公司列表缓存key前缀
*/
public static final String BRANCH_COMPANY_CACHE_DETAIL = "cache:CompanyDetail";
/** /**
* 车型分类列表缓存key前缀 * 车型分类列表缓存key前缀
*/ */
......
...@@ -187,4 +187,9 @@ public class VehicleBookRecord { ...@@ -187,4 +187,9 @@ public class VehicleBookRecord {
@Transient @Transient
private List<String> endHourList; private List<String> endHourList;
@Transient
private String startHour;
@Transient
private String endHour;
} }
\ No newline at end of file
...@@ -24,6 +24,11 @@ public class VehicleWarningMsg { ...@@ -24,6 +24,11 @@ public class VehicleWarningMsg {
*/ */
public Integer type; public Integer type;
/**
* 颜色预警:1、红色预警,2、蓝色预警、3、黄色预警
*/
private Integer colorType;
/** /**
* 消息类型,详见VehicleMsgStatus * 消息类型,详见VehicleMsgStatus
*/ */
......
...@@ -4,7 +4,9 @@ import com.xxfc.platform.vehicle.entity.VehicleBookHourInfo; ...@@ -4,7 +4,9 @@ import com.xxfc.platform.vehicle.entity.VehicleBookHourInfo;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord; import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class VehicleBookRecordDateVo extends VehicleBookRecord { public class VehicleBookRecordVo extends VehicleBookRecord {
VehicleBookHourInfo vehicleBookHourInfo; List<VehicleBookHourInfo> vehicleBookHourInfo;
} }
...@@ -67,6 +67,10 @@ public class VehicleWarningMsgQueryVo{ ...@@ -67,6 +67,10 @@ public class VehicleWarningMsgQueryVo{
private Date createTime; private Date createTime;
private Date updateTime; private Date updateTime;
/**
* 颜色预警:1、红色预警,2、蓝色预警、3、黄色预警
*/
private Integer colorType;
VehicleWarningRule vehicleWarningRule; VehicleWarningRule vehicleWarningRule;
} }
...@@ -83,6 +83,7 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany ...@@ -83,6 +83,7 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany
* @param id * @param id
* @return * @return
*/ */
@Cache(key= RedisKey.BRANCH_COMPANY_CACHE)
public CompanyDetail getDetailById(Integer id) { public CompanyDetail getDetailById(Integer id) {
BranchCompany branchCompany = this.getById(id); BranchCompany branchCompany = this.getById(id);
CompanyDetail detail = null; CompanyDetail detail = null;
......
...@@ -1157,46 +1157,32 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> { ...@@ -1157,46 +1157,32 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> {
public PageDataVO<VehicleAndModelInfoVo> getAllVehicle(VehiclePlanDto vehiclePlanDto) { public PageDataVO<VehicleAndModelInfoVo> getAllVehicle(VehiclePlanDto vehiclePlanDto) {
Query query = new Query(vehiclePlanDto); Query query = new Query(vehiclePlanDto);
PageDataVO<VehicleAndModelInfoVo> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getAllVehicle(query.getSuper())); PageDataVO<VehicleAndModelInfoVo> pageDataVO = PageDataVO.pageInfo(query, () -> mapper.getAllVehicle(query.getSuper()));
for(VehicleAndModelInfoVo vehicleAndModelInfoVo : pageDataVO.getData()) { // for(VehicleAndModelInfoVo vehicleAndModelInfoVo : pageDataVO.getData()) {
//获取时间 // //获取时间
if(vehicleAndModelInfoVo.getVehicleBookRecord() != null) { // if(vehicleAndModelInfoVo.getVehicleBookRecord() != null) {
for(VehicleBookRecord vehicleBookRecord : vehicleAndModelInfoVo.getVehicleBookRecord()) { // for(VehicleBookRecord vehicleBookRecord : vehicleAndModelInfoVo.getVehicleBookRecord()) {
VehicleBookHourInfoDto vehicleBookHourInfoDto = new VehicleBookHourInfoDto(); // VehicleBookHourInfoDto vehicleBookHourInfoDto = new VehicleBookHourInfoDto();
vehicleBookHourInfoDto.setVehicleId(vehicleBookRecord.getVehicleId()); // vehicleBookHourInfoDto.setVehicleId(vehicleBookRecord.getVehicleId());
vehicleBookHourInfoDto.setBookRecordId(vehicleBookRecord.getId()); // vehicleBookHourInfoDto.setBookRecordId(vehicleBookRecord.getId());
vehicleBookHourInfoDto.setYearMonthDay(new DateTime(vehicleBookRecord.getBookStartDate()).toString(DEFAULT_DATE_TIME_FORMATTER)); // vehicleBookHourInfoDto.setYearMonthDay(new DateTime(vehicleBookRecord.getBookStartDate()).toString(DEFAULT_DATE_TIME_FORMATTER));
VehicleBookHourInfo startVehicleBookHourInfo = vehicleBookHourInfoBiz.selectByVehicleAndId(vehicleBookHourInfoDto); // VehicleBookHourInfo startVehicleBookHourInfo = vehicleBookHourInfoBiz.selectByVehicleAndId(vehicleBookHourInfoDto);
vehicleBookHourInfoDto.setYearMonthDay(new DateTime(vehicleBookRecord.getBookEndDate()).toString(DEFAULT_DATE_TIME_FORMATTER)); // vehicleBookHourInfoDto.setYearMonthDay(new DateTime(vehicleBookRecord.getBookEndDate()).toString(DEFAULT_DATE_TIME_FORMATTER));
VehicleBookHourInfo endVehicleBookHourInfo = vehicleBookHourInfoBiz.selectByVehicleAndId(vehicleBookHourInfoDto); // VehicleBookHourInfo endVehicleBookHourInfo = vehicleBookHourInfoBiz.selectByVehicleAndId(vehicleBookHourInfoDto);
if(startVehicleBookHourInfo != null ) { // if(startVehicleBookHourInfo != null ) {
String result = Integer.toBinaryString(startVehicleBookHourInfo.getBookedHour()); // String result = Integer.toBinaryString(startVehicleBookHourInfo.getBookedHour());
if(StringUtils.isNotBlank(result)) { // if(StringUtils.isNotBlank(result)) {
vehicleBookRecord.setStartHourList(getHourList(result)); // vehicleBookRecord.setStartHour(result);
} // }
} // }
if(endVehicleBookHourInfo != null ) { // if(endVehicleBookHourInfo != null ) {
String result = Integer.toBinaryString(endVehicleBookHourInfo.getBookedHour()); // String result = Integer.toBinaryString(endVehicleBookHourInfo.getBookedHour());
if(StringUtils.isNotBlank(result)) { // if(StringUtils.isNotBlank(result)) {
vehicleBookRecord.setEndHourList(getHourList(result)); // vehicleBookRecord.setEndHour(result);
} // }
} // }
} // }
} // }
// }
CompanyDetail partCompany = branchCompanyBiz.getDetailById(vehicleAndModelInfoVo.getParkBranchCompanyId());
if(partCompany != null) {
vehicleAndModelInfoVo.setParkCompanyName(partCompany.getName());
}
CompanyDetail subCompany = branchCompanyBiz.getDetailById(vehicleAndModelInfoVo.getSubordinateBranch());
if(subCompany != null) {
vehicleAndModelInfoVo.setSubordinateBranchName(subCompany.getName());
}
CompanyDetail disCompany = branchCompanyBiz.getDetailById(vehicleAndModelInfoVo.getExpectDestinationBranchCompanyId());
if(disCompany != null) {
vehicleAndModelInfoVo.setDestinationBranchCompanyName(disCompany.getName());
}
}
return pageDataVO; return pageDataVO;
} }
......
package com.xxfc.platform.vehicle.biz; package com.xxfc.platform.vehicle.biz;
import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
...@@ -26,6 +28,7 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V ...@@ -26,6 +28,7 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd"); public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd");
public static Map<String, Integer> getPredictableHours(String bookStartdate, String bookEndDate) { public static Map<String, Integer> getPredictableHours(String bookStartdate, String bookEndDate) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = null; Date startDate = null;
...@@ -77,11 +80,18 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V ...@@ -77,11 +80,18 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V
return mapper.selectByVehicleAndDate(vehicleBookHourInfoDto); return mapper.selectByVehicleAndDate(vehicleBookHourInfoDto);
} }
@Cache(key = "vehicle.hourInfo")
public VehicleBookHourInfo selectByVehicleAndId(VehicleBookHourInfoDto vehicleBookHourInfoDto) { public VehicleBookHourInfo selectByVehicleAndId(VehicleBookHourInfoDto vehicleBookHourInfoDto) {
return mapper.selectByVehicleAndId(vehicleBookHourInfoDto); return mapper.selectByVehicleAndId(vehicleBookHourInfoDto);
} }
@Cache(key = "vehicle.hourInfo")
public List<VehicleBookHourInfo> getAll() {
return mapper.selectAll();
}
@Transactional @Transactional
@CacheClear(key = "vehicle.hourInfo")
public ObjectRestResponse save(VehicleBookHourInfoDto vehicleBookHourInfoDto) { public ObjectRestResponse save(VehicleBookHourInfoDto vehicleBookHourInfoDto) {
if(vehicleBookHourInfoDto == null) { if(vehicleBookHourInfoDto == null) {
return ObjectRestResponse.createFailedResult(502, "参数为空"); return ObjectRestResponse.createFailedResult(502, "参数为空");
...@@ -111,6 +121,7 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V ...@@ -111,6 +121,7 @@ public class VehicleBookHourInfoBiz extends BaseBiz<VehicleBookHourInfoMapper, V
* @return * @return
*/ */
@Transactional @Transactional
@CacheClear(key = "vehicle.hourInfo")
public ObjectRestResponse delete(String vehicleId, List<String> dateList) { public ObjectRestResponse delete(String vehicleId, List<String> dateList) {
if(StringUtils.isBlank(vehicleId) || dateList.size() <= 0) { if(StringUtils.isBlank(vehicleId) || dateList.size() <= 0) {
return ObjectRestResponse.createFailedResult(502, "删除信息车辆Id为空"); return ObjectRestResponse.createFailedResult(502, "删除信息车辆Id为空");
......
...@@ -13,4 +13,6 @@ public interface VehicleBookHourInfoMapper extends Mapper<VehicleBookHourInfo> { ...@@ -13,4 +13,6 @@ public interface VehicleBookHourInfoMapper extends Mapper<VehicleBookHourInfo> {
List<VehicleBookHourInfo> selectByVehicleAndDateList(Map<String, Object> param); List<VehicleBookHourInfo> selectByVehicleAndDateList(Map<String, Object> param);
VehicleBookHourInfo selectByVehicleAndId(VehicleBookHourInfoDto vehicleBookHourInfoDto); VehicleBookHourInfo selectByVehicleAndId(VehicleBookHourInfoDto vehicleBookHourInfoDto);
List<VehicleBookHourInfo> selectByBookRecordId(Integer bookVehicleId);
} }
\ No newline at end of file
...@@ -26,7 +26,7 @@ public class VehicleActiveController { ...@@ -26,7 +26,7 @@ public class VehicleActiveController {
* *
* @return * @return
*/ */
@PostMapping("departure") @PostMapping("/departure")
public RestResponse departure(@RequestBody VehicleDepartureVo departureVo) { public RestResponse departure(@RequestBody VehicleDepartureVo departureVo) {
if (departureVo == null || departureVo.getVehicleId() == null if (departureVo == null || departureVo.getVehicleId() == null
|| departureVo.getMileage() == null || departureVo.getDepartureBranchCompanyId() == null || departureVo.getMileage() == null || departureVo.getDepartureBranchCompanyId() == null
......
...@@ -125,7 +125,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata ...@@ -125,7 +125,7 @@ public class VehicleCataController extends VehicleBaseController<VehiclePlatCata
* @return * @return
*/ */
@PostMapping("/add/updateAndAdd") @PostMapping("/add/updateAndAdd")
public ObjectRestResponse updateAndAdd(@RequestBody Cascade<VehiclePlatCata> cas){ public ObjectRestResponse save(@RequestBody Cascade<VehiclePlatCata> cas){
return baseBiz.updateAndAdd(cas); return baseBiz.updateAndAdd(cas);
} }
......
...@@ -422,19 +422,46 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -422,19 +422,46 @@ public class VehicleController extends BaseController<VehicleBiz> {
@IgnoreClientToken @IgnoreClientToken
@IgnoreUserToken @IgnoreUserToken
public ObjectRestResponse<Map<String, Object>> getVehiclePlanList(VehiclePlanDto vehiclePlanDto) { public ObjectRestResponse<Map<String, Object>> getVehiclePlanList(VehiclePlanDto vehiclePlanDto) {
//获取列表
PageDataVO<VehicleAndModelInfoVo> pageDataVO = baseBiz.getAllVehicle(vehiclePlanDto);
//获取警告信息
List<VehicleWarningMsgQueryVo> vehicleWarningMsgs = vehicleWarningMsgBiz.getAllByParam(vehiclePlanDto);
//获取统计信息 //获取统计信息
List<VehicleCountVo> vehicleCountVos = baseBiz.countVehicleByParam(vehiclePlanDto); List<VehicleCountVo> vehicleCountVos = baseBiz.countVehicleByParam(vehiclePlanDto);
//获取列表
Map<String, Object> map = Maps.newHashMap();
map.put("vehicleWarningMsgs",vehicleWarningMsgs);
map.put("vehicleAndModelInfoVo",pageDataVO);
map.put("vehicleCountVos",vehicleCountVos);
return ObjectRestResponse.succ(map);
}
@RequestMapping(value = "/app/unauth/getVehicleWarningMsg", method = RequestMethod.GET)
@ApiOperation(value = "获取排车车辆警告信息")
@IgnoreClientToken
@IgnoreUserToken
public ObjectRestResponse<Map<String, Object>> getVehicleWarningMsg(VehiclePlanDto vehiclePlanDto) {
//获取警告信息 //获取警告信息
List<VehicleWarningMsgQueryVo> vehicleWarningMsgs = vehicleWarningMsgBiz.getAllByParam(vehiclePlanDto); List<VehicleWarningMsgQueryVo> vehicleWarningMsgs = vehicleWarningMsgBiz.getAllByParam(vehiclePlanDto);
//获取列表 //获取列表
PageDataVO<VehicleAndModelInfoVo> pageDataVO = baseBiz.getAllVehicle(vehiclePlanDto);
Map<String, Object> map = Maps.newHashMap(); Map<String, Object> map = Maps.newHashMap();
map.put("vehicleCountVos",vehicleCountVos);
map.put("vehicleWarningMsgs",vehicleWarningMsgs); map.put("vehicleWarningMsgs",vehicleWarningMsgs);
map.put("vehicleAndModelInfoVo",pageDataVO);
return ObjectRestResponse.succ(map); return ObjectRestResponse.succ(map);
} }
@RequestMapping(value = "/app/unauth/getVehicleTotalMsg", method = RequestMethod.GET)
@ApiOperation(value = "获取排车车辆统计信息")
@IgnoreClientToken
@IgnoreUserToken
public ObjectRestResponse<Map<String, Object>> getVehicleTotalMsg(VehiclePlanDto vehiclePlanDto) {
//获取统计信息
List<VehicleCountVo> vehicleCountVos = baseBiz.countVehicleByParam(vehiclePlanDto);
//获取列表
Map<String, Object> map = Maps.newHashMap();
map.put("vehicleCountVos",vehicleCountVos);
return ObjectRestResponse.succ(map);
}
/** /**
* 保存 * 保存
......
...@@ -9,14 +9,14 @@ ...@@ -9,14 +9,14 @@
<property name="path" value="logs"></property> <property name="path" value="logs"></property>
<property name="maxHistory" value="30"/> <property name="maxHistory" value="30"/>
<property name="maxFileSize" value="50MB"/> <property name="maxFileSize" value="50MB"/>
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>debug</level>
</filter>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</pattern> <charset>UTF-8</charset> <!-- 设置字符集 -->
</encoder> </encoder>
</appender> </appender>
...@@ -32,8 +32,7 @@ ...@@ -32,8 +32,7 @@
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</pattern>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level> <level>DEBUG</level>
...@@ -54,8 +53,7 @@ ...@@ -54,8 +53,7 @@
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</pattern>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level> <level>INFO</level>
...@@ -76,8 +74,7 @@ ...@@ -76,8 +74,7 @@
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</pattern>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level> <level>WARN</level>
...@@ -99,8 +96,7 @@ ...@@ -99,8 +96,7 @@
</timeBasedFileNamingAndTriggeringPolicy> </timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
</pattern>
</encoder> </encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level> <level>ERROR</level>
......
...@@ -21,6 +21,10 @@ ...@@ -21,6 +21,10 @@
select * from vehicle_book_hour_info select * from vehicle_book_hour_info
where vehicle_id = #{vehicleId} and book_record_id = #{bookRecordId} and year_month_day = #{yearMonthDay} where vehicle_id = #{vehicleId} and book_record_id = #{bookRecordId} and year_month_day = #{yearMonthDay}
</select> </select>
<select id="selectByBookRecordId" parameterType="java.lang.Integer" resultType="com.xxfc.platform.vehicle.entity.VehicleBookHourInfo">
select * from vehicle_book_hour_info
where book_record_id = #{bookRecordId}
</select>
<select id="selectByVehicleAndDateList" parameterType="java.util.Map" resultType="com.xxfc.platform.vehicle.entity.VehicleBookHourInfo"> <select id="selectByVehicleAndDateList" parameterType="java.util.Map" resultType="com.xxfc.platform.vehicle.entity.VehicleBookHourInfo">
select * from vehicle_book_hour_info select * from vehicle_book_hour_info
where vehicle_id = #{vehicleId} and year_month_day in where vehicle_id = #{vehicleId} and year_month_day in
......
...@@ -6,6 +6,10 @@ ...@@ -6,6 +6,10 @@
<association property="vehicle" column="vehicle_id" select="com.xxfc.platform.vehicle.mapper.VehicleMapper.selectById" /> <association property="vehicle" column="vehicle_id" select="com.xxfc.platform.vehicle.mapper.VehicleMapper.selectById" />
</resultMap> </resultMap>
<resultMap id="getVehicleHourMap" type="com.xxfc.platform.vehicle.pojo.VehicleBookRecordVo">
<association property="vehicleBookHourInfo" column="id" select="com.xxfc.platform.vehicle.mapper.VehicleBookHourInfoMapper.selectByBookRecordId" />
</resultMap>
<update id="changeRecordStatus" parameterType="java.util.Map"> <update id="changeRecordStatus" parameterType="java.util.Map">
update vehicle_book_record set update vehicle_book_record set
<if test="reviewerApply != null "> <if test="reviewerApply != null ">
...@@ -119,7 +123,8 @@ ...@@ -119,7 +123,8 @@
mileage_lift, mileage_lift,
mileage_ret, mileage_ret,
have_violation, have_violation,
ret_remark ret_remark,
order_no
) )
values( values(
#{id}, #{id},
...@@ -151,7 +156,8 @@ ...@@ -151,7 +156,8 @@
#{mileageLift}, #{mileageLift},
#{mileageRet}, #{mileageRet},
#{haveViolation}, #{haveViolation},
#{retRemark} #{retRemark},
#{orderNo}
); );
</insert> </insert>
...@@ -188,7 +194,8 @@ ...@@ -188,7 +194,8 @@
mileage_lift, mileage_lift,
mileage_ret, mileage_ret,
have_violation, have_violation,
ret_remark ret_remark,
order_no
from from
vehicle_book_record vehicle_book_record
where where
...@@ -233,6 +240,7 @@ ...@@ -233,6 +240,7 @@
vbr.mileage_ret, vbr.mileage_ret,
vbr.have_violation, vbr.have_violation,
vbr.ret_remark, vbr.ret_remark,
vbr.order_no,
v.`code` as vehicleCode, v.`code` as vehicleCode,
v.number_plate as numberPlate, v.number_plate as numberPlate,
v.subordinate_branch, v.subordinate_branch,
...@@ -324,48 +332,17 @@ ...@@ -324,48 +332,17 @@
vbr.mileage_lift, vbr.mileage_lift,
vbr.mileage_ret, vbr.mileage_ret,
vbr.have_violation, vbr.have_violation,
vbr.ret_remark vbr.ret_remark,
vbr.order_no
from ${tbName} vbr from ${tbName} vbr
where id = #{id} where id = #{id}
</select> </select>
<select id="getByVehicleId" parameterType="java.lang.String" resultType="com.xxfc.platform.vehicle.entity.VehicleBookRecord" > <select id="getByVehicleId" parameterType="java.lang.String" resultType="com.xxfc.platform.vehicle.entity.VehicleBookRecord" >
select SELECT v1.*, conv(v2.booked_hour,10,2) startHour,conv(v3.booked_hour,10,2) endHour from vehicle_book_record v1
vbr.`id`, LEFT JOIN vehicle_book_hour_info v2 on v2.book_record_id = v1.id and YEAR(v2.year_month_day) = YEAR(v1.book_start_date) AND MONTH(v2.year_month_day) = MONTH(v1.book_start_date) AND DAY(v2.year_month_day) =DAY(v1.book_start_date)
vbr.`vehicle_id`, LEFT JOIN vehicle_book_hour_info v3 on v3.book_record_id = v1.id and YEAR(v3.year_month_day) = YEAR(v1.book_end_date) AND MONTH(v3.year_month_day) = MONTH(v1.book_end_date) AND DAY(v3.year_month_day) =DAY(v1.book_end_date)
vbr.`status`, where v1.vehicle_id = #{vehicleId}
vbr.`book_type`,
vbr.`book_user`,
vbr.`book_user_name`,
vbr.`contact_info`,
vbr.`book_start_date`,
vbr.`book_end_date`,
vbr.`lift_location`,
vbr.`lift_addr`,
vbr.`remark`,
vbr.`create_time`,
vbr.`update_time`,
vbr.`destination`,
vbr.`reviewer_apply`,
vbr.`reviewer_name_apply`,
vbr.`reviewer_return`,
vbr.`reviewer_name_return`,
vbr.`reviewer_cancel`,
vbr.`reviewer_name_cancel`,
vbr.`actual_start_date`,
vbr.`actual_end_date`,
vbr.`reviewer_lift`,
vbr.`reviewer_name_lift`,
vbr.lift_company,
vbr.lift_remark,
vbr.ret_company,
vbr.mileage_lift,
vbr.mileage_ret,
vbr.have_violation,
vbr.ret_remark
from vehicle_book_record vbr
where vehicle_id = #{vehicleId}
</select> </select>
<select id="getByParam" parameterType="java.util.Map" resultMap="getVehicleMap"> <select id="getByParam" parameterType="java.util.Map" resultMap="getVehicleMap">
select v1.* from vehicle_book_record v1 select v1.* from vehicle_book_record v1
...@@ -421,6 +398,7 @@ ...@@ -421,6 +398,7 @@
`ret_remark` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '还车备注', `ret_remark` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '还车备注',
`reviewer_lift` int(10) NULL DEFAULT NULL COMMENT '提车审核人', `reviewer_lift` int(10) NULL DEFAULT NULL COMMENT '提车审核人',
`reviewer_name_lift` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提车审核人姓名', `reviewer_name_lift` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '提车审核人姓名',
`order_no` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '订单号',
`mileage_lift` int(10) NULL DEFAULT NULL COMMENT '提车里程数', `mileage_lift` int(10) NULL DEFAULT NULL COMMENT '提车里程数',
`mileage_ret` int(10) NULL DEFAULT NULL COMMENT '还车里程数', `mileage_ret` int(10) NULL DEFAULT NULL COMMENT '还车里程数',
`have_violation` tinyint(4) NULL DEFAULT NULL COMMENT '是否违章', `have_violation` tinyint(4) NULL DEFAULT NULL COMMENT '是否违章',
......
...@@ -421,10 +421,12 @@ ...@@ -421,10 +421,12 @@
</if> </if>
</select> </select>
<select id="getAllVehicle" parameterType="java.util.Map" resultMap="searchModel"> <select id="getAllVehicle" parameterType="java.util.Map" resultMap="searchModel">
select * select v1.*, bc2.name subordinateBranchName, bc3.name parkCompanyName, bc4.name destinationBranchCompanyName
from vehicle v1 from vehicle v1
-- 所属分公司 -- 所属分公司
LEFT JOIN branch_company bc2 ON v1.subordinate_branch = bc2.id LEFT JOIN branch_company bc2 ON v1.subordinate_branch = bc2.id
LEFT JOIN branch_company bc3 ON v1.park_branch_company_id = bc3.id
LEFT JOIN branch_company bc4 ON v1.expect_destination_branch_company_id = bc4.id
<where> <where>
<if test="startTime != null"> <if test="startTime != null">
and v1.create_time between #{startTime} and #{endTime} and v1.create_time between #{startTime} and #{endTime}
......
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